BAB III PERANCANGAN. Karakter-karakter yang diijinkan dipakai dalam bahasa DOGI adalah

Ukuran: px
Mulai penontonan dengan halaman:

Download "BAB III PERANCANGAN. Karakter-karakter yang diijinkan dipakai dalam bahasa DOGI adalah"

Transkripsi

1 BAB III PERANCANGAN 3.1 Spesifikasi bahasa DOGI Token Karakter-karakter yang diijinkan dipakai dalam bahasa DOGI adalah sembarang karakter selain karakter kontrol, dalam set karakter ASCII. DOGI tidak mendukung penggunaan karakter-karakter unicode. Carriage return, line feed, dan tab dianggap sebagai white space. Frasa sembarang karakter yang digunakan selanjutnya akan selalu berarti sembarang karakter dalam set karakter yang diijinkan bahasa DOGI. A. Kata kunci Kata-kata kunci yang digunakan oleh DOGI adalah: package imports exports class access interface method property hidden 40

2 41 visible get set new kill begin end B. Pengenal (identifier) Pengenal (identifier) dalam bahasa DOGI dimulai dengan huruf atau garis bawah Setiap karakter selanjutnya bisa merupakan salah satu dari huruf, maupun angka, tidak dibatasi panjangnya. Pengenal dalam bahasa DOGI tidak membedakan huruf besar maupun kecil (bersifat case-insensitive). Contoh nama-nama pengenal: dogi anjing bopi@home C. Literal Literal merepresentasikan data. Bahasa DOGI mengenal tujuh macam literal, yaitu null, integer, floating-point, string, boolean, array dan code. Null Literal null tidak merepresentasikan data secara konkret. Null digunakan untuk menandai bahwa suatu nama tidak mereferensikan objek apa pun, walaupun itu

3 42 berarti nama tersebut mereferensikan sebuah objek yaitu objek null sendiri. Null merupakan instansiasi dari kelas void. Dituliskan sebagai #null. Integer Literal integer merupakan representasi dari bilangan bulat. Literal integer sendiri terdiri dari dua macam representasi, yaitu desimal dan heksadesimal. Literal desimal terdiri dari barisan angka-angka yang panjangnya tidak dibatasi (walaupun aturan semantik akan membatasi nilainya, yang tergantung pada arsitektur komputer saat ini). Literal heksadesimal diawali dengan 0x, dilanjutkan dengan barisan angka maupun salah satu huruf a sampai f tanpa dibedakan huruf besar maupun kecil. Literal integer merupakan instansiasi dari kelas int. Graf sintaks untuk digit desimal, digit heksadesimal, dan literal integer dapat dilihat pada Gambar 3.1, Gambar 3.2, dan Gambar 3.3. digit Gambar 3.1 Graf sintaks untuk digit

4 43 hexdigi t digit A B C D E F Gambar 3.2 Graf sintaks untuk digit heksadesimal integer digit 0 x hexdigit Contoh-contoh literal integer: Gambar 3.3 Graf sintaks untuk literal integer x42AB38C 0x32cFf Floating-point Literal floating-point merupakan representasi dari bilangan real, dan instansiasi dari kelas real. Literal floating-point terdiri dari beberapa bagian, yaitu bagian integer, titik desimal, bagian pecahan dan eksponen. Pembentukan literal floating-point yang valid adalah Bagian integer dan bagian pecahan terdiri dari satu atau lebih angka.

5 44 Eksponen diawali huruf E atau e, diikuti langsung dengan angka-angka, atau bisa juga dengan plus atau minus, diikuti angka-angka. Bagian integer diikuti langsung dengan eksponen, atau Bagian integer diikuti dengan titik desimal, bagian pecahan, dan bisa diikuti oleh eksponen maupun tidak. Graf sintaks untuk literal floating-point dapat dilihat pada Gambar 3.4. Floating-point digit. digit E digit + - Gambar 3.4 Graf sintaks untuk literal floating-point Contoh-contoh literal floating-point: e e e+2 String Literal string adalah barisan sembarang karakter (kecuali tanda kutip ganda), di antara dua tanda kutip ganda ( ). Backslash (\) digunakan sebagai karakter escape, untuk menyatakan karakter kontrol ataupun karakter lainnya. Literal string merupakan instansiasi dari kelas string. Graf sintaks untuk karakter tunggal, karakter, dan string dapat dilihat pada Gambar 3.5, Gambar 3.6, Gambar 3.7, sedangkan daftar karakter escape dapat dilihat pada Tabel 3.1.

6 45 \b Backspace \t Tabulasi \n line feed \f Form feed \r carriage return \ kutip ganda \\ Backslash \m## mengulang karakter sebelumnya sebanyak ## \u#### karakter unicode nomor #### \0x## karakter ASCII nomor ## Contoh-contoh literal string: Tabel 3.1 Karakter-karakter escape yang berlaku Aku gigi mulut rumahku \ Aku gigi mulut rumahku\ adalah string Aku\ngigi\nmulut\nrumahku\0x0D

7 46 singlechar! A... Z... a... z... ~ Gambar 3.5 Graf sintaks untuk karakter tunggal Char \ u hexdigit hexdigit hexdigit hexdigit 0 x hexdigit hexdigit m singlechar singlechar Gambar 3.6 Graf sintaks untuk karakter String char Gambar 3.7 Graf sintaks untuk literal string Boolean Literal boolean hanya ada dua, yaitu #true dan #false. Sesuai namanya, #true menunjukkan nilai benar, dan #false menunjukkan nilai salah. Kedua

8 47 literal ini merupakan instansiasi dari kelas bool. Pemberian tanda # mempermudah pembedaan dari nama objek. Array Literal array merepresentasikan array, dan merupakan instansiasi dari kelas array. Literal array dituliskan sebagai daftar yang dipisahkan tanda koma, dan dituliskan di antara tanda kurung kurawal. Graf sintaks untuk array dapat dilihat pada Gambar 3.8. array { expr }, Contoh-contoh literal array: Gambar 3.8 Graf sintaks untuk literal array { 5, 2, 9, 4, 3, 2 } { console.writeln(3), Count()+2, 2+4*con_9, #false } { [ 5-f ], #true, { 5, 4, { 3, 2 }, 4 }, abcde } Code Dalam bahasa DOGI terdapat tambahan literal yang lain, yaitu kode (code). Sifatnya seperti block pada SmallTalk. Literal kode yang dituliskan dalam sebuah metoda tidak akan dieksekusi, melainkan dianggap sebagai objek instansiasi dari kelas code. Penulisannya selalu berada di antara kata begin..end untuk kode dengan nol atau lebih statement, dan di antara [.. ] untuk kode dengan nol atau satu statement. Kode tidak secara otomatis dieksekusi. Graf sintaks untuk kode dapat dilihat pada Gambar 3.9.

9 48 code begin exprlist end [ expr ] exprlist expr ; Gambar 3.9 Graf sintaks untuk literal code Contoh-contoh berikut adalah literal code: begin dogi makan; end begin out.write( Guk! ); end D. Pemisah Pemisah (separator) digunakan untuk memisahkan token-token. Daftar lengkap pemisah yang digunakan dapat dilihat pada Tabel 3.2 berikut. ( Berpasangan dengan ), digunakan untuk mengawali daftar parameter sebuah metoda, atau untuk memberikan presedensi bagi ekspresi ) Merupakan penutup bagi ( { Berpasangan dengan }, digunakan untuk mengawali suatu literal array } Merupakan penutup bagi { [ Berpasangan dengan ], digunakan untuk indexer (dicadangkan), maupun code dengan satu ekspresi ] Merupakan penutup bagi [ (dicadangkan) < Berpasangan dengan >, digunakan untuk mendaftar objek-objek lokal

10 49 dalam sebuah method. < juga digunakan sebagai operator. > Merupakan penutup bagi <, juga digunakan sebagai operator. ; Digunakan untuk memisahkan bagian-bagian dalam program DOGI, Pemisah dalam daftar. Titik desimal, juga digunakan sebagai qualifier bagi objek E. Operator Tabel 3.2 Pemisah dalam bahasa DOGI Operator adalah metoda. Operator tidak mendapat perlakuan khusus seperti pada bahasa-bahasa pemrograman lainnya. Operator hanyalah metoda yang diberi nama dengan simbol-simbol tertentu. Operator dibentuk dari satu atau sepasang simbol-simbol berikut dan masing-masing tidak didefinisikan. = < > + - * /! & % ^ :? \ Pasangan operator /* dan */ tidak dapat dipakai karena sudah dipakai sebagai tanda awal dan akhir komentar. Contoh operator: + = += <<

11 50 F. White space Karakter-karakter yang termasuk white space adalah spasi, tabulasi, new line, carriage return, dan line feed. Karakter-karakter tersebut diabaikan dalam proses kompilasi. G. Komentar Komentar dalam DOGI sama dengan yang dipakai pada bahasa C++. Ada dua jenis komentar, yaitu komentar satu baris, dan komentar bersarang (nested comment). Komentar satu baris diawali dengan tanda //, dan karakter-karakter berikutnya merupakan komentar sampai baris tersebut berakhir. Komentar bersarang diawali tanda /* dan diakhiri dengan */, tidak harus dituliskan dalam baris yang sama. Graf sintaks untuk komentar dapat dilihat pada Gambar comment /* any character */ // singlechar Gambar 3.10 Graf sintaks untuk komentar Contoh komentar bersarang: /* Komentar komentar komentar komentar komentar komentar komentar komentar komentar komentar komentar komentar */ Contoh komentar satu baris: // Komentar satu baris

12 Struktur program Suatu program dalam bahasa DOGI dibentuk oleh daftar kelas, antarmuka kelas, dan antarmuka. Masing-masing deklarasi dipisahkan oleh tanda titik koma (;). Deklarasi-deklarasi tersebut disatukan dalam package, yang dituliskan dalam sebuah file kode sumber. Sebuah file kode sumber DOGI dapat memiliki lebih dari sebuah package. Graf sintaks untuk kode sumber dalam bahasa DOGI dapat dilihat pada Gambar source package ; Package Gambar 3.11 Graf sintaks untuk file program dalam bahasa DOGI Package adalah satuan paling kecil yang dapat dikompilasi secara mandiri. Sebuah package berisi daftar kelas, antarmuka kelas, dan antarmuka. Dituliskan dengan bentuk: package <nama_package> begin <daftar_deklarasi> end; Sebuah package dapat mengimpor antarmuka-antarmuka kelas dari package lain dengan menuliskan dalam daftar deklarasi: imports <nama_package>. <nama_simbol> {, <nama_package>. <nama_simbol> } ; Penulisan <nama_package>.* akan mengimpor semua nama yang diekspor oleh package yang dimaksud. Simbol-simbol yang dapat diimpor haruslah telah diekspor pada package yang bersangkutan, dengan menyebutkan:

13 52 exports <nama_simbol> {, <nama_simbol> } ; Hanya antarmuka kelas (ditandai dengan kata kunci access) dan antarmuka (interface) yang dapat diekspor dan diimpor oleh sebuah package. Package tanpa nama adalah package yang tidak dapat diimpor oleh kelas manapun. Package tanpa nama adalah untuk package yang berisi program siap eksekusi, sehingga tidak perlu diimpor oleh kelas manapun. Kompiler DOGI untuk saat ini hanya mendukung satu package dalam sebuah file. Graf sintaks untuk package dapat dilihat pada Gambar packageheader package packagename package packageheader begin packageitems end packageitems packageitem ; packageitem imports exports class access interface Gambar 3.12 Graf sintaks untuk package

14 Kelas A. Deklarasi kelas Sebuah kelas dideklarasikan menggunakan kata kunci class, diikuti nama kelas induk, diikuti nama kelas yang akan dibuat. Bagian ini dinamakan class declaration header, dan sudah cukup untuk mendeklarasikan sebuah kelas. class <nama_akses> <nama_kelas> [ ( [ <nama_interface> {, <nama_interface> }] ) ] Kelas yang dihasilkan dengan cara ini akan memiliki sifat sama persis dengan kelas induknya, yang memiliki visibilitas <nama_akses>. Modifikasi terhadap anggota-anggota kelas dapat dituliskan setelah declaration header, diawali kata begin dan diakhiri kata end. <class_header> begin <daftar_anggota_kelas> end; Graf sintaks untuk kelas dapat dilihat pada Gambar Contoh deklarasi kelas: class binatang anjing // anggota-anggota kelas di sini end;

15 54 class classheader begin classmember ; end classheader class baseaccessname classname ( interfacelist ) interfacelist interfacename, classmember method field property B. Anggota-anggota kelas Gambar 3.13 Graf sintaks untuk class Sebuah kelas memiliki lima macam anggota (class member) yaitu: Field, Metoda (method), Konstruktor, yaitu metoda khusus yang bertugas untuk menciptakan instance. Destruktor, yaitu metoda khusus untuk menghapus instance yang sudah dibuat. Properti, yaitu antarmuka terhadap field/metoda dengan memperlakukannya sebagai nama objek. Setiap deklarasi anggota kelas dipisahkan dengan tanda titik koma (;).

16 55 C. Field Field dideklarasikan dengan bentuk umum [ field ] <nama_kelas> [*] <nama_field> {, [*] <nama_field> } Penggunaan kata kunci field adalah optional. Tanda * dipakai sebagai tanda bahwa field yang bersangkutan tidak secara otomatis dialokasikan (dengan memanggil metoda new dari field yang bersangkutan), melainkan menunjuk pada #null. Graf sintaksnya seperti pada Gambar field field accessname * fieldname, Gambar 3.14 Graf sintaks untuk field Contoh: int umur; anjing * dogi; field kucing si_manis, * si_putih; D. Metoda Deklarasi metoda memiliki dua bagian, yaitu method signature dan kode. Method signature berupa nama kelas, diikuti nama metoda, diikuti daftar parameter yang dituliskan di antara tanda kurung. <nama_kelas_hasil> <nama_metoda> ( [ <nama_kelas_parameter> <nama_parameter>, ] )

17 56 Deklarasinya berupa kata kunci method diikuti method signature. Jika diikuti dengan kode program, artinya metoda tersebut langsung diimplementasikan dalam kode-kode di dalamnya. Jika tidak, metoda tersebut dianggap sebagai metoda abstrak dan tidak boleh dipanggil sebelum diimplementasikan dalam kelas turunannya. Kode program dituliskan di antara kata kunci begin dan end seperti pada bahasa Pascal. Objek-objek lokal dapat dituliskan di antara signature dan kodenya, diapit tanda < dan >. method <method_signature> [ < <nama_kelas> <nama_objek_lokal>, > ] begin <kode> end; Selain dengan cara menuliskan barisan kode-kodenya, DOGI memiliki alternatif penulisan definisi metoda dengan menuliskan ekspresinya secara langsung, jika kode hanya terdiri dari sebuah ekspresi saja. method <method_signature> [ < <nama_kelas> <nama_objek_lokal>, > ] = <ekspresi> ; Dengan menambahkan titik pada nama metoda, metoda tersebut akan dianggap sebagai class method atau static method, yaitu metoda yang dikaitkan dengan nama kelas. Class method tidak dapat mengakses field yang dideklarasikan dalam kelas yang bersangkutan. Graf sintaks untuk metoda dapat dilihat pada Gambar 3.15.

18 57 method method methodsignature < locallist > begin exprlist end = expr methodsignature accessname methodname ( declarglist )..new kill ( ) declarglist accessname argname, locallist accessname localname, ; Gambar 3.15 Graf sintaks untuk metoda Contoh: method int jumlah (int a, int b) < int hasil > begin hasil = a + b; return (hasil); end; method real kuadrat (int x) = x * x; int.tipedata(); // ini class method

19 58 E. Konstruktor Konstruktor adalah metoda khusus, berguna untuk menginstansiasikan sebuah kelas. Karena konstruktor adalah class method, maka nama konstruktor harus diawali titik. Konstruktor diijinkan untuk lebih dari satu dalam satu kelas, dibedakan berdasarkan signature-nya. Untuk field yang dialokasikan secara otomatis (tidak diberi tanda *), konstruktor akan mengalokasikan field tersebut dengan konstruktor.new() yang terdapat pada field tersebut. Graf sintaks untuk konstruktor dapat dilihat pada Gambar method.new ( [ <nama_kelas_parameter> <nama_parameter>, ] ) Contoh: method.new () begin end; method.new (int A) begin end; F. Destruktor Berbeda dengan konstruktor, destruktor hanya diijinkan satu untuk setiap kelas, dan tidak menggunakan parameter. Destruktor digunakan untuk menghapus objek. Karena destruktor bukanlah class method, maka penamaannya tidak diawali tanda titik. Graf sintaks untuk destruktor dapat dilihat pada Gambar 3.15.

20 59 method kill ( ) Contoh: method kill() begin end; G. Properti Properti sebenarnya adalah penyingkatan dari penggunaan dua buah metoda yang berlaku sebagai getter (pengambil nilai) dan setter (pengeset nilai), disingkat penulisannya menjadi sebuah nama yang diperlakukan sebagai objek tunggal. Properti dapat dideklarasikan menggunakan salah satu dari penulisan ini: property <nama_akses> <nama_properti> = <nama_field> property <nama_akses> <nama_properti> [ get begin <definisi_get> end ] [ set begin <definisi_set> end] property <nama_akses> <nama_properti> [ get = <definisi_get> ] [ set = <definisi_set> ] Graf sintaks untuk properti dapat dilihat pada Gambar Contoh: property int Count=fCount; property TColor Color get = fcolor set begin fcolor = Color; return (fcolor); end;

21 60 property property propertysignature getter setter setter getter = fieldname propertysignature accessname propertyname getter get propertydef setter set propertydef propertydef < locallist > begin exprlist end = expr Gambar 3.16 Graf sintaks untuk properti H. Akses (access) atau antarmuka kelas (class interface) Antarmuka kelas (class interface) atau disebut akses merupakan hal yang tidak terdapat dalam bahasa pemrograman OOP lainnya. Antarmuka kelas secara esensial merupakan visibilitas dari anggota-anggota kelas. Setiap anggota kelas yang didaftar dalam deklarasi class secara default memiliki visibilitas private, atau tidak dapat diakses oleh objek lain maupun kelas turunannya. Setiap anggota kelas yang didaftar dalam antarmuka kelas secara default memiliki visibilitas public. Visibilitas public juga dapat diperoleh dengan memberi awalan visible. Jika diberi awalan hidden, artinya anggota kelas yang

22 61 bersangkutan memiliki visibilitas protected. Selain yang didaftar dalam antarmuka kelas, anggota kelas bersifat private. Anggota-anggota yang dapat didaftar dalam antarmuka kelas hanya metoda dan properti saja (termasuk konstruktor dan destruktor). Field tidak dapat, untuk menjaga objek dari perubahan-perubahan yang tak terkendali. Setiap anggota yang hendak di-publish didaftarkan signature-nya tepat seperti yang telah didaftarkan di deklarasi kelasnya. Hanya saja tidak ada ketentuan bahwa nama parameter harus sama persis dengan yang telah dituliskan dalam deklarasi kelas. Antarmuka kelas atau akses dituliskan dengan header: access <nama_kelas> [ <nama_antarmuka_kelas> ] Sebuah kelas dapat memiliki lebih dari satu antarmuka. Jika nama antarmuka kelas tidak disebutkan, atau bahkan antarmuka untuk sebuah kelas tidak dibuat, dianggap antarmuka untuk kelas tersebut sama dengan nama kelasnya. Untuk setiap kelas selalu terdapat satu antarmuka yang namanya sama dengan nama kelasnya. Untuk menurunkan sebuah kelas dari kelas lain, harus menyebutkan nama antarmukanya, dan bukan nama kelasnya. Anggota-anggota base class yang dapat diakses hanyalah yang disebutkan dalam antarmuka base class yang dipakai. Dengan demikian suatu kelas dapat memiliki banyak muka untuk berhubungan dengan kelas lainnya. Hal ini berguna salah satunya untuk menghemat jumlah kelas yang harus dibuat. Dalam VCL Delphi, untuk setiap komponen kontrol biasanya terdapat

23 62 komponen abstraknya. Misalnya terdapat komponen TListView turunan TCustomListView, yang pada deklarasinya hanya mengubah visibilitas anggota-anggota TCustomListView yang protected menjadi published. Dengan antarmuka kelas, tidak perlu dilakukan hal seperti itu. Cukup dibuat dua buah antarmuka untuk TCustomListView, yaitu TCustomListView dengan semua anggotanya hidden, dan TListView dengan semua anggotanya visible. Penggunaan kata access dan bukan interface di sini dimaksudkan untuk mencadangkan dukungan abstraksi dengan interface. Bentuk umum deklarasi antarmuka kelas adalah: access <nama_kelas> [ <nama_antarmuka_kelas> ] begin <daftar_anggota> end; Graf sintaks untuk antarmuka kelas atau akses dapat dilihat pada Gambar access accessheader begin accessmember ; end accessheader access classname accessname accessmember hiddenmember visiblemember hiddenmember hidden propertysignature methodsignature visiblemember visible propertysignature methodsignature Gambar 3.17 Graf sintaks untuk antarmuka kelas

24 63 Contoh: class TWinControl TCustomListView property Items ; property ViewStyle ; end; access TCustomListView hidden Items; hidden ViewStyle; end; access TCustomListView TListView Items; ViewStyle; end; access TCustomListView TfixedStyleListView visible Items; hidden ViewStyle; end; Ekspresi Walaupun DOGI, seperti halnya bahasa pemrograman OOP lainnya, masih menggunakan gaya imperatif, namun cara penulisan kode programnya dibuat sedemikian rupa sehingga dapat mudah dipahami. Setiap statement dalam DOGI merupakan sebuah ekspresi. Sebuah ekspresi merupakan operasi yang dilakukan terhadap sebuah objek, dengan mengirimkan pesan melalui metoda yang dimiliki objek tersebut. Satuan terkecil dari ekspresi hanya ada dua macam, yaitu objek dan metoda.

25 64 Suatu objek tunggal adalah elemen terkecil sebuah ekspresi. Objek tersebut dapat berupa objek dengan nama atau literal integer, floating-point, boolean, string, null, code atau array. Graf sintaks objek tunggal dapat dilihat pada Gambar Suatu term adalah bagian dari ekspresi yang dapat berupa objek, ekspresi lain di antara tanda kurung, properti dan pengiriman pesan. Berikut ini adalah kemungkinan bentuk-bentuk term. Graf sintaks untuk term dapat dilihat pada pada Gambar <objek_tunggal> ( <ekspresi> ) <term_lain>.<properti> <pengiriman_pesan> Pengiriman pesan dapat berbentuk satu dari: <term> [ <daftar_ekspresi> ] <term>. <metoda> ( <daftar_ekspresi> ) <metoda> ( <daftar_ekspresi> ). <metoda> ( <daftar_ekspresi> ) <operator> <objek_tunggal> Sebuah ekspresi dapat berupa sebuah term maupun pengiriman pesan ekspresi kepada sebuah term. Graf sintaks untuk ekspresi dapat dilihat pada Gambar <term> <metoda> <ekspresi_lain> <term> expr term method \ term Gambar 3.18 Graf sintaks untuk ekspresi

26 65 term sendmsg singleobject ( expr ) term property sendmsg term [ arglist ] term. method ( arglist ). method operator term ( arglist ) Gambar 3.19 Graf sintaks untuk term singleobject objectname classname array code integer float string boolean null Gambar 3.20 Graf sintaks untuk objek Contoh-contoh ekspresi: dogi.duduk().salam(); console << Hello + + world! ; e = (29 * 94)+(24-3*c); if (a>b) then begin put() end else [ 4 ]; Package System Package System berisi kelas-kelas dasar yang dipakai oleh DOGI. Package System tidak perlu diimpor secara eksplisit karena otomatis akan dipakai oleh kompiler DOGI. Setiap kelas dalam System memiliki dua buah antarmuka, yang

27 66 berbeda dengan Antarmuka yang diberi semua method dan propertinya bersifat hidden. Sebagai contoh, antarmuka void menunjuk pada kelas yang sama, berbeda dalam hal setiap hidden dan ada anggota void yang bersifat visible. Selanjutnya hanya akan dibahas antarmuka yang bersifat visible. A. Kelas void Kelas void merupakan kelas induk dari semua kelas yang dibuat dalam program DOGI (seperi object dalam Java dan C#). Dinamakan void, dan bukan object, setidaknya dengan alasan-alasan berikut: Pada C, C++ dan Java void adalah tipe data yang tidak mengandung apaapa. Perlakuan khusus terhadap void pada Java sepertinya tidak fair, karena sudah terdapat pembedaan kelas dengan tipe data, ditambah satu lagi tipe data void hanya untuk menunjukkan bahwa sebuah metoda tidak mengembalikan nilai. Karena itu dalam DOGI void dibuat sebagai kelas. Dan karena sifatnya yang tidak mengandung apa-apa, maka dibuatlah void sebagai kelas induk dari semuanya. Semua metoda dalam DOGI mengembalikan nilai. Jika tidak dituliskan secara eksplisit, nilai yang dikembalikan adalah #null. Istilah object lebih bersifat konkret. Sedangkan kelas merupakan abstraksi. Dengan demikian, istilah object seharusnya lebih tepat digunakan sebagai nama instance, daripada nama kelas.

28 67 Berdasarkan filosofi creatio ex nihilo, atau Allah menciptakan segala sesuatu dari tidak ada menjadi ada. Demikian juga setiap kelas diturunkan dari ketiadaan void. Konstruktor Kelas void memiliki hanya satu konstruktor, yang dipanggil tanpa parameter. Tugasnya adalah menciptakan sebuah objek dari kelas yang memanggilnya. Destruktor Destruktor kelas void bertugas untuk menghapus objek yang telah dibuat menggunakan konstruktor. Destruktor hanya akan menghapus objek yang bersangkutan jika reference count dari objek tersebut telah mencapai nol. Dengan kata lain, tidak ada lagi nama yang menunjuk objek tersebut. Metoda-metoda kelas void Metoda-metoda dalam kelas void diperlihatkan dalam Tabel 3.3. void self() void base() int refcount() int addref() int release() void = (void) void assign(void) void assignto(void) void applyto(void, int) void.refto(void) void.->(void) mengacu pada instance yang sedang aktif, dengan akses kepada metoda-metoda kelas aktif mengacu pada instance yang sedang aktif, dengan akses kepada metoda-metoda kelas induk mengembalikan jumlah reference count menambah reference count mengurangi reference count sama dengan assign(void) mengkopi objek lain menyediakan layanan jika objek lain berusaha mengkopi objek yang bersangkutan menyediakan layanan jika objek lain berusaha melakukan operasi terhadap objek yang bersangkutan mereferensikan nama pada suatu objek sama dengan refto(void)

29 68 array : (void) void.return(void) _if.if(bool) _loop while(code cond) _loop loop(int n) _loop for(int i, int a, int b) _loop foreach(void x, array A) menyediakan operasi bagi bentuk kondisi?a:b seperti pada bahasa C mengembalikan alur program pada metoda pemanggil, dan mengembalikan suatu objek menguji suatu kondisi, digunakan untuk seleksi perulangan dengan kondisi cond perulangan sebanyak nilai tertentu perulangan dengan counter i, dari nilai a hingga b perulangan dengan membaca array A dari awal hingga akhir array Tabel 3.3 Daftar metoda yang terdapat dalam kelas void B. Kelas data Kelas data dimaksudkan untuk menjadi kelas induk dari semua kelas yang bertugas menangani data atau bertindak sebagai tipe data. Kelas ini adalah turunan langsung dari void. C. Kelas number Kelas number dimaksudkan sebagai kelas induk dari kelas-kelas yang menangani bilangan, seperti int dan real. D. Kelas int Kelas int merupakan kelas yang bertugas menangani bilangan-bilangan integer. Literal integer merupakan instansiasi dari kelas int. Kelas ini merupakan turunan langsung dari number. Metoda-metoda kelas int diperlihatkan pada Tabel 3.4. int + () int - () int + (int) real + (real) int (int) mengembalikan nilai tanpa perubahan mengembalikan nilai negatifnya menjumlahkan dengan bilangan integer menjumlahkan dengan bilangan real mengurangkan dengan bilangan integer

30 69 real (real) int * (int) real * (real) real / (int) real / (real) bool == (int) bool!= (int) bool > (int) bool < (int) bool >= (int) bool <= (int) mengurangkan dengan bilangan real mengalikan dengan bilangan integer mengalikan dengan bilangan real membagi dengan bilangan integer membagi dengan bilangan real menguji kesamaan dengan integer lain menguji ketaksamaan dengan integer lain menguji apakah lebih besar dari integer lain menguji apakah lebih kecil integer lain menguji apakah lebih besar atau sama dengan integer lain menguji apakah lebih kecil atau sama dengan integer lain Tabel 3.4 Daftar metoda yang terdapat dalam kelas int E. Kelas bool Kelas bool adalah turunan dari data. Kelas ini berkaitan dengan literal boolean pada bahasa DOGI. Metoda-metoda kelas bool diperlihatkan pada Tabel 3.5. bool! () bool & (bool) bool (bool) bool == (bool) bool!= (bool) void? (void o) void? (array a) mengembalikan negasi dari objek yang bersangkutan melakukan operasi konjungsi terhadap boolean lain melakukan operasi disjungsi terhadap boolean lain menguji kesamaan dengan boolean lain menguji ketaksamaan dengan boolean lain mengembalikan o jika objek bernilai benar, dan #null jika salah mengembalikan elemen pertama dari a jika kondisi benar, dan elemen kedua dari a jika kondisi salah Tabel 3.5 Daftar metoda yang terdapat dalam kelas bool F. Kelas real Kelas real digunakan untuk bilangan real, merupakan turunan dari kelas number.

31 70 Metoda-metoda kelas real diperlihatkan pada Tabel 3.6. real + () real - () real + (int) real + (real) real (int) real (real) real * (int) real * (real) real / (int) real / (real) bool == (real) bool!= (real) bool > (real) bool < (real) bool >= (real) bool <= (real) mengembalikan nilai tanpa perubahan mengembalikan nilai negatifnya menjumlahkan dengan bilangan real menjumlahkan dengan bilangan real mengurangkan dengan bilangan real mengurangkan dengan bilangan real mengalikan dengan bilangan real mengalikan dengan bilangan real membagi dengan bilangan real membagi dengan bilangan real menguji kesamaan dengan real lain menguji ketaksamaan dengan real lain menguji apakah lebih besar dari real lain menguji apakah lebih kecil real lain menguji apakah lebih besar atau sama dengan real lain menguji apakah lebih kecil atau sama dengan real lain G. Kelas string Tabel 3.6 Daftar metoda yang terdapat dalam kelas real Kelas string merupakan turunan dari kelas data yang bertugas menangani data string. Metoda-metoda kelas string diperlihatkan pada tabel Tabel 3.8Tabel 3.7. int length() string + (string) bool == (string) bool!= (string) mengembalikan panjang string menggabungkan dengan string lain menguji kesamaan dengan string lain menguji ketaksamaan dengan string lain H. Kelas array Tabel 3.7 Daftar metoda yang terdapat dalam kelas string array. Kelas array merupakan turunan dari data yang berguna untuk menciptakan

32 71 Metoda-metoda kelas array diperlihatkan pada tabel Tabel 3.8. int count() int setcount(int) void item(int i) void setitem(int i, void object) mengembalikan banyaknya elemen array menentukan banyaknya elemen array mengembalikan elemen ke i mengganti elemen ke i dengan object Tabel 3.8 Daftar metoda yang terdapat dalam kelas array I. Kelas code Kelas code juga adalah turunan dari kelas data, ialah kelas yang menginstansiasikan semua kode yang ditulis dalam blok [.. ] untuk kode yang hanya terdiri dari sebuah ekspresi, atau ditulis dalam blok begin..end untuk kode yang terdiri dari nol atau lebih ekspresi. Metoda-metoda kelas code diperlihatkan pada Tabel 3.9. code exec() void value() array else(code) mengeksekusi kode mengembalikan hasil eksekusi kode membentuk array yang terdiri dari dua elemen bertipe code, untuk digunakan dalam struktur seleksi menggunakan if. J. Kelas control Tabel 3.9 Daftar metoda yang terdapat dalam kelas code Kelas control menurunkan kelas-kelas yang berguna dalam pembentukan struktur kontrol. Kelas control adalah turunan langsung dari kelas void. K. Kelas _if Kelas _if merupakan kelas turunan control yang bertugas untuk menangani struktur seleksi dengan menggunakan metoda if.

33 72 Kelas _if hanya memiliki sebuah metoda, yaitu then dalam dua bentuk, seperti diperlihatkan dalam Tabel bool.then (code c) bool.then (array a) jika bernilai benar, kerjakan c jika bernilai benar, kerjakan elemen pertama dari a, dan jika tidak, kerjakan elemen kedua dari a. L. Kelas _loop Tabel 3.10 Daftar metoda yang terdapat dalam kelas _if Kelas _loop merupakan kelas turunan control yang bertugas menangani struktur perulangan menggunakan metoda loop. Metoda-metoda kelas _loop diperlihatkan dalam Tabel int.do(code) melakukan perulangan terhadap kode yang diberikan, dan mengembalikan jumlah perulangan yang telah dilakukan M. Kelas console Tabel 3.11 Daftar metoda yang terdapat dalam kelas _loop Kelas console adalah turunan dari kelas void, ialah kelas yang bertugas untuk menangani input/output. Metoda-metoda kelas console diperlihatkan dalam Tabel void.<< (void) void.>> (string) void.>> (int) void.>> (real) void.>> (bool) void.writeln (void) void.readln (string) void.readln (int) void.readln (real) void.readln (bool) menuliskan suatu objek pada console membaca suatu string dari console membaca suatu integer dari console membaca suatu real dari console membaca suatu boolean dari console menuliskan suatu objek pada console (+newline) membaca suatu string dari console (+newline) membaca suatu integer dari console (+newline) membaca suatu real dari console (+newline) membaca suatu boolean dari console (+newline) Tabel 3.12 Daftar metoda yang terdapat dalam kelas console

34 Perancangan kompiler DOGI Seperti telah disebutkan pada 1.2, untuk penyederhanaan perancangan kompiler, maka kompiler DOGI disatukan dengan eksekutornya (virtual machine). Kedua modul ini disatukan menjadi sebuah program. Untuk selanjutnya frasa program DOGI menunjuk pada program yang akan dibuat sebagai gabungan kompiler DOGI dan virtual machine. Program DOGI dibuat seluruhnya dengan C++, dengan bantuan program Flex untuk membuat scanner, serta Bison untuk membuat parser. Program DOGI versi Windows dikompilasi menggunakan Borland C for Win32. Kompilasi dengan Minimalist GNU for Win32 versi juga berhasil dilakukan. Untuk versi Linux dikompilasi menggunakan GNU C++ Compiler Spesifikasi rancangan Spesifikasi komputer yang digunakan dalam pembuatan dan pengujian program DOGI adalah: Prosesor Pentium III 733 MHz RAM 320MB 2 Hard Disk berukuran 80GB dan 40GB 2 Sistem operasi: a. Windows XP Professional Edition b. Linux dengan paket distribusi Mandrake 9.1 Program DOGI belum diuji dengan komputer dengan spesifikasi yang lain.

35 Antarmuka pemakai Program DOGI dijalankan dari command-line interpreter, dengan menuliskan: dogi { [<opsi>] } [<file_kode_sumber>] Opsi yang disediakan adalah seperti diperlihatkan pada Tabel 3.13 (caseinsensitive). Jika kode sumber mengandung kesalahan, akan ditampilkan posisi dan jenis kesalahan yang terjadi. -i menampilkan setiap instruksi yang sedang dieksekusi -s menampilkan state pada setiap eksekusi instruksi -e menampilkan isi stack pada setiap eksekusi instruksi -d gabungan dari -i, -s, dan -e -v menampilkan daftar isi package dalam file -x<accessname> membuat dan mengeksekusi instance dari akses bernama <accessname> Scanner Tabel 3.13 Daftar opsi yang tersedia dalam program DOGI Kode sumber scanner DOGI (dogi.lpp) dikompilasi dengan Flex untuk menghasilkan dogi.yy.cpp yang merupakan program dalam bahasa C++. Selanjutnya, dogi.yy.cpp dikompilasi menggunakan kompiler C++. Kode sumber scanner DOGI dapat dilihat pada Lampiran B Parser Kode sumber parser DOGI (dogi.ypp) dikompilasi dengan Bison untuk menghasilkan dogi.tab.hpp dan dogi.tab.cpp yang merupakan program dalam bahasa C++, untuk dikompilasi kembali dengan kompiler C++.

36 75 Kode sumber parser DOGI dapat dilihat pada Lampiran B, dan tata bahasanya dalam format BNF dapat dilihat pada Lampiran A. Dituliskan dalam format BNF dan bukan EBNF karena Bison hanya dapat mengenali BNF Aturan semantik tata bahasa DOGI Tidak setiap aturan semantik produksi tata bahasa DOGI akan dibahas di sini. Hanya definisi metoda dan ekspresi yang akan dibahas, karena merupakan bagian yang berhubungan erat dengan pembentukan kode antara. Setiap aturan semantik dideskripsikan dalam bentuk pseudocode. A. Definisi metoda dalam kelas Produksi methodcode = expr methodcode = for index=number of arguments downto 1 do put POPA argument index endfor if (method is not class method) put POPCTX endif put KEEP expr put RET Produksi methodcode begin exprlist end methodcode begin for index=number of arguments downto 1 do put POPA argument index endfor

37 76 if (method is not class method) put POPCTX endif put KEEP exprlist end put PUSHN put RET B. Ekspresi Baik expr, term, object, sendmsg maupun literal memiliki atributatribut sebagai berikut: class untuk menyatakan tipe yang dikembalikan oleh nonterminalnonterminal tersebut. instance untuk menyatakan apakah nonterminal adalah kelas atau instance. Sedangkan method memiliki atribut instruction yang adalah instruksi yang diwakili oleh metoda yang bersangkutan secara langsung. Produksi expr expr nextexprlist expr expr put FLUSH nextexprlist Produksi expr term methodname expr if (term.class has method w/signature methodname(expr)) then if (term.instance = true) then

38 77 if (method is instruction) then put method.instruction else put CALL( term.class, index of method in term.class) endif else if (method is class method) then if (method is instruction) then put method.instruction else put CALL( term.class, index of method in term.class) endif else Error Message: Not class method. endif endif else Error Message: method not found. Endif Produksi object objectname if (objectname in locallist) then put PUSHL (index of objectname in locallist) object.class=class of objectname object.instance=true elseif (objectname in arglist) then put PUSHA (index of objectname in arglist) object.class=class of objectname object.instance=true

39 78 elseif (objectname in fieldlist) then put PUSHO (index of objectname in fieldlist) object.class=class of objectname object.instance=true elseif (objectname is classname) then object.class=class of objectname object.instance=false else Error Message: objectname undeclared. Endif Produksi object integer put PUSHI integer.value Produksi object floatingpoint put PUSHF floatingpoint.value Produksi object boolean put PUSHB boolean.value Produksi object string put PUSHS string.value Produksi object code put PUSHC code.address

40 79 Produksi sendmsg term. methodname (sendarglist) if (term.class has method w/signature methodname(sendarglist)) then if (term.instance = true) then if (method is instruction) then put method.instruction else put CALL( term.class, index of method in term.class) endif else if (method is class method) then if (method is instruction) then put method.instruction else endif put CALL( term.class, index of method in term.class) else Error Message: Not class method. endif endif else Error Message: method not found. Endif Produksi sendmsg methodname (sendarglist) dan sendmsg. methodname (sendarglist) if (current.class has method w/signature methodname(sendarglist)) then

41 80 if (method is not class method) then put SELF endif if (method is instruction) then put method.instruction else put CALL( current.class, index of method in current.class) endif else Error Message: method not found. Endif Produksi sendmsg operatorname object if (object.class has method w/signature operatorname()) then if (method is instruction) then put method.instruction else put CALL( object.class, index of method in object.class) endif else Error Message: method not found. Endif C. Literal code Produksi code begin exprlist end code begin

42 81 push current address to address stack put PUSHC (current address+4) put JMP (-1) exprlist end put FLUSH put PUSHN put RETC addr = pop address stack replace code at addr+3 with current address Produksi code [ expr ] code begin push current address to address stack put PUSHC (current address+4) put JMP (-1) exprlist end put RETC addr = pop address stack replace code at addr+3 with current address 3.3 Perancangan DOGIVM (DOGI Virtual Machine) Instruksi-instruksi dasar DOGIVM Instruksi-instruksi yang terdapat pada DOGIVM diperlihatkan pada Tabel Panjang instruksi menyatakan panjang instruksi dalam satuan doubleword (32 bit), jumlah pop menyatakan banyaknya anggota stack yang diambil oleh instruksi tersebut, dan return menyatakan banyaknya objek yang didorong oleh instruksi tersebut ke dalam stack.

43 82 instruksi panjang (double word) jumlah pop return deskripsi NOP 1 tidak ada operasi PUSH o 2 1 dorong objek o ke dalam stack PUSHL l 2 1 dorong objek lokal l ke dalam stack PUSHA a 2 1 dorong objek argumen a ke dalam stack PUSHI i 2 1 dorong objek integer bernilai i ke dalam stack PUSHF f 2 1 dorong objek real bernilai f ke dalam stack PUSHB b 2 1 dorong objek boolean bernilai b ke dalam stack PUSHS s 2 1 dorong objek string bernilai s ke dalam stack PUSHC a 2 1 dorong objek code yang menunjuk alamat a ke dalam stack PUSHN 1 1 dorong objek null ke dalam stack POP o 2 1 ambil objek dari stack dan asosiasikan ke objek o POPL l 2 1 ambil objek dari stack dan asosiasikan ke objek lokal l POPA a 2 1 ambil objek dari stack dan asosiasikan ke objek argumen a POPCTX 1 1 ambil objek dari stack dan asosiasikan ke objek konteks JMP a 2 lompat ke alamat a IFENTRY buat suatu instance _if berdasarkan kondisi yang diberikan objek pada puncak stack IFT jalankan kode pada puncak stack jika benar IFTE pilih kode yang akan dijalankan dari array pada puncak stack LOOP 1 1 buat suatu instance _loop LOOPW buat suatu instance _loop berdasarkan yang diberikan objek pada puncak stack LOOPI buat suatu instance _loop berdasarkan jumlah yang diberikan objek pada puncak stack LOOPA buat suatu instance _loop berdasarkan array yang diberikan objek pada puncak stack, dan objek di bawahnya untuk menampung elemen array LOOPF buat suatu instance _loop berdasarkan batas yang diberikan objek pada puncak stack dan objek di bawahnya LOOPDO eksekusi kode yang ada pada puncak stack CALL c m 3 memanggil metoda m dari kelas c CALLC a 2 mengeksekusi kode pada alamat a NEW c m 3 1 membuat instance dari kelas c dengan konstruktor m KILL mendealokasikan objek pada puncak stack RET 1 kembali pada alamat pemanggil (CALL) RETC 1 kembail pada alamat pemanggil (CALLC) ENDX 1 menandai akhir dari kode END 1 menandai akhir dari kode KEEP 1 1 menandai stack dengan pembatas FLUSH 1 * menghapus isi stack dari puncak hingga pembatas yang dibuat dengan KEEP DISCONST mengembalikan #true jika objek pada puncak stack dibuat dari literal ADD mengembalikan hasil penjumlahan dari dua objek

44 pada puncak stack SUB mengembalikan hasil pengurangan dari dua objek pada puncak stack MUL mengembalikan hasil perkalian dari dua objek pada puncak stack DIV mengembalikan hasil pembagian dari dua objek pada puncak stack NEG mengembalikan negasi dari objek pada puncak stack (bilangan) POS tidak ada operasi AND mengembalikan hasil operasi and dari dua objek pada puncak stack OR mengembalikan hasil operasi or dari dua objek pada puncak stack NOT mengembalikan negasi dari objek pada puncak stack (boolean) ASSIGN mengkopi dua objek pada puncak stack REFTO mereferensikan nama objek pada objek lain ADDREF menambah reference count RELEASE mengurangi reference count REFCOUNT mengembalikan reference count BASE mendorong instance ke dalam stack SELF mendorong instance ke dalam stack ALTER mendorong array berisi dua objek pada puncak stack CMPE membandingkan dua objek pada puncak stack, dan mengembalikan #true jika keduanya sama, dan #false jika sebaliknya CMPNE membandingkan dua objek pada puncak stack, dan mengembalikan #true jika keduanya tidak sama, dan #false jika sebaliknya CMPG membandingkan dua objek pada puncak stack, dan mengembalikan #true jika nilai objek pertama > nilai objek kedua, dan #false jika sebaliknya CMPL membandingkan dua objek pada puncak stack, dan mengembalikan #true jika nilai objek pertama < nilai objek kedua, dan #false jika sebaliknya CMPGE membandingkan dua objek pada puncak stack, dan mengembalikan #true jika nilai objek pertama nilai objek kedua, dan #false jika sebaliknya CMPLE membandingkan dua objek pada puncak stack, dan mengembalikan #true jika nilai objek pertama nilai objek kedua, dan #false jika sebaliknya SLEN mengembalikan panjang string pada puncak stack ARRSCNT mengeset jumlah elemen array pada puncak stack ARRGCNT mengembalikan jumlah elemen array pada puncak stack ARRSITEM mengeset elemen array pada puncak stack ARRGITEM mengembalikan elemen array pada puncak stack CONOUT mencetak representasi dari objek pada puncak stack CONIN membaca representasi objek dari console dan mendorongnya ke dalam stack CONOUTN mencetak representasi dari objek pada puncak stack (+newline) 83

45 84 CONINN membaca representasi objek dari console dan mendorongnya ke dalam stack CDEXEC mengeksekusi kode yang terdapat pada puncak stack CDVAL mengembalikan nilai yang dihasilkan oleh kode CDELSE membentuk array berisi dua objek pada puncak stack CDQT mengembalikan objek pada puncak stack jika bernilai benar CDQTE mengembalikan objek pertama pada array pada puncak stack jika bernilai benar Siklus eksekusi instruksi Tabel 3.14 Daftar instruksi DOGIVM Siklus eksekusi kode antara DOGI diperlihatkan dalam Gambar Instruksi CALL Dorong state konteks ke dalam state stack Kosongkan state konteks, Set posisi pada state konteks pada alamat metoda Instruksi RET Pop state konteks dari state stack State Suatu state dalam DOGIVM terdiri dari: Sebuah daftar semua objek yang diinstansiasikan sejak program berjalan, Sebuah state konteks yaitu informasi mengenai posisi eksekusi, instance yang sedang aktif, semua field yang terdapat pada instance tersebut, argumen-argumen metoda yang sedang dieksekusi, dan objek-objek lokal metoda tersebut,

46 85 Sebuah state stack yang menyimpan state konteks ketika ada pemanggilan suatu metoda, Sebuah stack evaluasi, yang berisi objek-objek untuk digunakan dalam evaluasi, dan objek hasil evaluasi suatu ekspresi.

47 86 start Reset posisi & kosongkan stack Ambil instruksi Tidak Eksekusi instruksi Majukan posisi pembacaan Stack kosong? Ya selesai Gambar 3.21 Siklus fetch-execute DOGIVM

BAB IV HASIL PENELITIAN DAN PENERAPAN

BAB IV HASIL PENELITIAN DAN PENERAPAN 87 BAB IV HASIL PENELITIAN DAN PENERAPAN 4.1 Karakteristik bahasa pemrograman DOGI Berikut ini akan dijabarkan karakteristik-karakteristik bahasa pemrograman DOGI yang mempengaruhi readability, writability

Lebih terperinci

UNIVERSITAS BINA NUSANTARA. Program Ganda Teknik Informatika Matematika Skripsi Sarjana Program Ganda Semester Genap 2003/2004

UNIVERSITAS BINA NUSANTARA. Program Ganda Teknik Informatika Matematika Skripsi Sarjana Program Ganda Semester Genap 2003/2004 UNIVERSITAS BINA NUSANTARA Program Ganda Teknik Informatika Matematika Skripsi Sarjana Program Ganda Semester Genap 2003/2004 PERANCANGAN BAHASA PEMROGRAMAN BERORIENTASI OBJEK DOGI Ari Prasetyo NIM: 0992980032

Lebih terperinci

BAB I PENDAHULUAN. Sebesta (2002) memaparkan kriteria evaluasi terhadap sebuah bahasa

BAB I PENDAHULUAN. Sebesta (2002) memaparkan kriteria evaluasi terhadap sebuah bahasa BAB I PENDAHULUAN 1.1 Latar Belakang Masalah Sebesta (2002) memaparkan kriteria evaluasi terhadap sebuah bahasa pemrograman, yaitu readability, writability, dan reliability. Sebesta juga mendaftar karakteristik-karakteristik

Lebih terperinci

SUMBER BELAJAR PENUNJANG PLPG

SUMBER BELAJAR PENUNJANG PLPG SUMBER BELAJAR PENUNJANG PLPG 2017 [TIK] BAB VIII PEMROGRAMAN BERORIENTASI OBJEK [Alfa Faridh Suni] KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL GURU DAN TENAGA KEPENDIDIKAN 2017 BAB VIII

Lebih terperinci

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita PEMROGRAMAN JAVA Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita Education is not the filling of a pail, but the lighting of a fire. (William

Lebih terperinci

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA 1 BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA IDENTIFIER Identifier adalah suatu tanda yang mewakili nama-nama variabel, method, class, dsb. Ingat : Bahasa

Lebih terperinci

Dasar Pemrograman Java

Dasar Pemrograman Java Dasar Pemrograman Java Tessy Badriyah, SKom. MT. http://lecturer.eepis-its.edu/~tessy Tujuan Pembelajaran Penggunaan Komentar dalam program Memahami perbedaan identifier yang valid dan yang tidak valid

Lebih terperinci

BAB II VARIABEL DAN TIPE DATA

BAB II VARIABEL DAN TIPE DATA BAB II VARIABEL DAN TIPE DATA Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai bahasa pemrograman dengan

Lebih terperinci

Elemen Dasar Dalam Bahasa Java

Elemen Dasar Dalam Bahasa Java Elemen Dasar Dalam Bahasa Java 1. Kata Kunci Kata kunci adalah kata-kata yang didefenisikan oleh compiler dan memiliki arti dan tujuan spesifik. Java tidak mengizinkan kata-kata tersebut dipakai sebagai

Lebih terperinci

2 TIPE DATA DAN VARIABEL

2 TIPE DATA DAN VARIABEL BAB 2 TIPE DATA DAN VARIABEL Kompetensi Dasar dan Indikator : Setelah mengikuti materi kuliah ini mahasiswa mampu menggunakan tipe data dan variable yang ada dalam Java, dengan indikator mahasiswa mampu:

Lebih terperinci

JAVA BASIC PROGRAMMING Joobshet

JAVA BASIC PROGRAMMING Joobshet JAVA BASIC PROGRAMMING Joobshet 1. KOMPETENSI Mahasiswa dapat memahami jenis jenis tipe data Mahasiswa dapat memahami jenis jenis variable Mahasiswa dapat memahami jenis jenis seleksi kondisi Mahasiswa

Lebih terperinci

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

TIPE DATA, VARIABLE, dan OPERATOR DELPHI TIPE DATA, VARIABLE, dan OPERATOR DELPHI A. TIPE DATA Delphi merupakan bahasa pemrograman tingkat tinggi yang mendukung perancangan terstruktur dan berorientasi Object. Bahasa pemrograman ini berdasarkan

Lebih terperinci

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR BAB 3 TYPE DATA, VARIABLE DAN OPERATOR Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai bahasa pemrograman

Lebih terperinci

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR 1 PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR Siti Mukaromah, S.Kom TEKNIK PENYAJIAN ALGORITMA Teknik Tulisan Structure English Pseudocode Teknik Gambar Structure Chart HIPO Flowchart 2 PSEUDOCODE Kode

Lebih terperinci

OPERATOR-OPERATOR DALAM JAVA

OPERATOR-OPERATOR DALAM JAVA OPERATOR-OPERATOR DALAM JAVA Obyektif : 1. Memahami tentang operator-operator (aritmatic, logical, relational, assigment, bitwise) 2. Dapat membuat program sederhana dengan menggunakan operatoroperator

Lebih terperinci

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA Asep Herman Suyanto info@bambutechno.com http://www.bambutechno.com Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai

Lebih terperinci

Badiyanto, S.Kom., M.Kom. PBO java

Badiyanto, S.Kom., M.Kom. PBO java Badiyanto, S.Kom., M.Kom PBO java Apa yang Disebut Java? Bahasa pemrograman berorientasi objek murni yang dibuat berdasarkan kemampuankemampuan terbaik bahasa pemrograman objek sebelumnya (C++, Ada, Simula).

Lebih terperinci

Bahasa Pemrograman Java. Yudi Adha. ST. MMSI

Bahasa Pemrograman Java. Yudi Adha. ST. MMSI Bahasa Pemrograman Java Yudi Adha. ST. MMSI Tujuan Pada bagian ini, kita akan mendiskusikan mengenai bagian dasar pemrograman Java. Kita akan memulai dengan mencoba menjelaskan bagian dasar dari program

Lebih terperinci

Pengenalan Pascal/DevPascal

Pengenalan Pascal/DevPascal Materi 1 Pengenalan Pascal/DevPascal Turbo Pascal adalah Compiler bahasa pemrograman Pascal. Untuk memulai menjalankan Pascal: Cari Folder Pascal ada di C:\TP\BIN\TPX.EXE Jalankan File TPX tersebut Dev

Lebih terperinci

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words Comments Comments digunakan untuk memberikan keterangan/penjelasan suatu baris program. Comments tidak akan dikompilasi oleh compiler. Lambang untuk comments : - double slash ( // ) untuk memberikan penjelasan

Lebih terperinci

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom BAB III DASAR-DASAR PEMROGRAMAN Tipe Data Data adalah sekumpulan kejadian/fakta yang dipresentasikan dengan huruf, angka,

Lebih terperinci

BAHASA PEMROGRAMAN C

BAHASA PEMROGRAMAN C BAHASA PEMROGRAMAN C A. Pengenalan Bahasa C diciptakan oleh Dennis Ritchie tahun 1972 di Bell Laboratories. Kelebihan Bahasa C: - Bahasa C tersedia hampir di semua jenis computer. - Kode bahasa C sifatnya

Lebih terperinci

Aplikasi Rekursif dalam Analisis Sintaks Program

Aplikasi Rekursif dalam Analisis Sintaks Program Aplikasi Rekursif dalam Analisis Sintaks Program Albertus Kelvin / 13514100 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132,

Lebih terperinci

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO Ramos Somya Identifier Merupakan nama yang digunakan untuk menamai class, variabel, method dan interface. Aturan: - Tidak ada batasan

Lebih terperinci

BEKERJA DENGAN JAVA CLASS LIBRARY

BEKERJA DENGAN JAVA CLASS LIBRARY MK. Pemrograman Berorientasi Objek BEKERJA DENGAN JAVA CLASS LIBRARY (CLASS-METHOD-OBJECT) KARMILASARI ANALOGI OBJEK DALAM DUNIA NYATA Objek di dunia nyata = Objek dalam perangkat lunak Atribut di dunia

Lebih terperinci

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN I. Elemen-Elemen Dalam Bahasa Pemrograman Berikut adalah elemen-elemen pada bahasa pemrograman: Berikut adalah element-element pada bahasa pemrograman: 1. Aturan

Lebih terperinci

PHP mendukung komentar yang digunakan pada C, C++ dan Shell Unix. Sebagai contoh:

PHP mendukung komentar yang digunakan pada C, C++ dan Shell Unix. Sebagai contoh: Perintah Dasar Tag PHP Ketika PHP membaca suatu file, proses akan berlangsung hingga ditemukan tag khusus yang berfungsi sebagai tanda dimulainya interpretasi teks tersebut sebagai kode PHP. PHP akan menjalankan

Lebih terperinci

PEMAHAMAN DASAR DASAR JAVA

PEMAHAMAN DASAR DASAR JAVA MODUL 1 PEMAHAMAN DASAR DASAR JAVA A. PENGANTAR JAVA Java Standard Development Kit (JDK/SDK) merupakan alat-alat utama bagi programmer untuk membuat dan menjalankan java. Development Kit dapat didownload

Lebih terperinci

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal

Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis. Menggunakan simbol persegi panjang untuk non terminal Diagram Syntax Alat bantu (tools) dalam pembuatan parser/ analisis sintaksis Menggunakan simbol persegi panjang untuk non terminal Lingkaran untuk simbol terminal Misalnya E T T+E T-E E T + - BNF:

Lebih terperinci

Bahasa C-M6 By Jamilah, Skom 1

Bahasa C-M6 By Jamilah, Skom 1 BAB 1 KONSEP DASAR BAHASA C 1.1 SEJARAH DAN STANDAR C Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin Richard pada tahun 1967. Bahasa ini memberkan ide kepada ken thompson yang kemudian

Lebih terperinci

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method Pemrograman Lanjut Instance Variable Access Modifier Set dan Get Method PTIIK - 2014 Objectives Mampu mendeklarasikan class dan menggunakannya untuk membuat object. Mampu mendeklarasikan methods dalam

Lebih terperinci

MODUL 6 PERULANGAN. A. String. 1. Instansiasi dan Inisialisasi. M0601xxyyy.jar

MODUL 6 PERULANGAN. A. String. 1. Instansiasi dan Inisialisasi. M0601xxyyy.jar MODUL 6 PERULANGAN Topik-topik yang dibahas pada modul ini adalah mengenai kelas String, kelas Random, dan konsep perulangan. Pertanyaan-pertanyaan yang dijawab dalam bentuk teks harus Anda kumpulkan dengan

Lebih terperinci

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi. Tabel Informasi Tabel informasi atau tabel simbol berguna untuk mempermudah pada saat pembuatan dan implementasi dari analisa semantik (semantic analyzer). Pada proses translasi, tabel informasi dapat

Lebih terperinci

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar Bahasa Pemrograman Pascal Page 1 / 11 Pengenalan Pascal Pascal merupakan salah satu bahasa pemrograman tingkat tinggi. Pemrograman

Lebih terperinci

MODUL II. OBJECK, PROPERTY, METHOD dan EVENT

MODUL II. OBJECK, PROPERTY, METHOD dan EVENT MODUL II OBJECK, PROPERTY, METHOD dan EVENT Dalam bahasa pemrograman berbasis obyek OOP, kita harus memahami istilah Object, Property, Method, dan Event sebagai berikut. 1) Object Komponen dalam sebuah

Lebih terperinci

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16 Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 16 4. ANALISIS LEKSIKAL Struktur Kompiler Analisis Leksikal Apa itu? Masukan bagi sebuah compiler/interpreter adalah program sumber yang strukturnya

Lebih terperinci

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++ I.PENDAHULUAN 1. 1. ALGORITMA Algoritma adalah urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu untuk memecahkan suatu masalah dalam rentang waktu tertentu. Setiap aksi harus dapat dikerjakan

Lebih terperinci

Perjalanan sebuah intruksi

Perjalanan sebuah intruksi Perjalanan sebuah intruksi Source Program X = Y + X Analisis Leksikal Token-token Id1:=Id2+Id1 Id1 := Id2 + Id1 Analisis Sintaksis Code Generator dan Analisis sematiks LDA A ADD Y STO X

Lebih terperinci

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN Obektif: Praktikan mengetahui arra, percabangan, dan perulangan pada Java. Praktikan mengetahui bentuk umum

Lebih terperinci

Modul PVB-POLINEMA V1.0

Modul PVB-POLINEMA V1.0 BAB V TIPE DATA, VARIABEL DAN KONSTANTA MATERI 1. Tipe Data 2. Variabel 3. Konstanta STANDAR KOMPETENSI 1. Mampu memahami konteks pemakaian variabel dan konstanta 2. Mampu membuat variabel dengan tipe

Lebih terperinci

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti KONSTANTA Menghitung besaran-besaran fisis dalam bidang fisika memerlukan suatu konstantakonstanta. Bahasa C dan C++ menyediakan tipe data tambahan sehingga variabel yang kita gunakan merupakan konstanta

Lebih terperinci

PENGENALAN JAVA (2)

PENGENALAN JAVA (2) PENGENALAN JAVA (2) http://www.brigidaarie.com Sub Pokok Bahasan Tipe data Variabel Reader input Java output Formating output in java Pengelompokan tipe data dalam Java Integer Byte Short Int Long Floating

Lebih terperinci

Chapter 1 KONSEP DASAR C

Chapter 1 KONSEP DASAR C Chapter 1 KONSEP DASAR C Sejarah Dan Standar C Akar dari bahasa C adalah BCPL (dikembangkan oleh Martin Richard tahun 1967). Kemudian Tahun 1970, Ken Thompson mengembangkan bahasa tersebut yang di kenal

Lebih terperinci

TUGAS MATA KULIAH TEKNIK KOMPILASI

TUGAS MATA KULIAH TEKNIK KOMPILASI TUGAS MATA KULIAH TEKNIK KOMPILASI TEKNIK OPTIMASI DAN TABEL INFORMASI DOSEN : HARUN MUKHTAR,M.KOM Nama : Walter Sitio NIM : 080403019 Jurusan : Teknik Infomatika UNIVERSITAS MUHAMMAHDIYAH RIAU Teknik

Lebih terperinci

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1 MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1 Disusun oleh : Tim Asisten JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA YOGYAKARTA 2011 0 A. Pengantar

Lebih terperinci

MODUL 3 Tipe Data, Variabel Dan Konstanta Pada Php

MODUL 3 Tipe Data, Variabel Dan Konstanta Pada Php MODUL 3 Tipe Data, Variabel Dan Konstanta Pada Php 2.1 Tujuan 1. Mengenalkan kepada siswa tentang tipe data dan variabel 2. Siswa dapat membuat aplikasi sederhana dengan menggunakan tipe data dan variabel

Lebih terperinci

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id 1 MODUL PEMOGRAMAN WEB II Oleh: CHALIFA CHAZAR 2 MODUL 3 Tipe Data, Variable, dan Konstanta Tujuan: Mahasiswa mengenal tipe data dan mendeklarasikan variable di dalam pemrograman PHP sebagai pondasi dalam

Lebih terperinci

JAVA. Sekilas tentang java : FITUR JAVA :

JAVA. Sekilas tentang java : FITUR JAVA : JAVA Sekilas tentang java : Java diciptakan oleh suatu tim yang dipimpin oleh Patrick Naughton dan james gosling dalam suatu proyek dari sun Microsystem. Tujuan adalah untuk menghasilkan bahasa komputer

Lebih terperinci

PENGENALAN C++ Bab 1

PENGENALAN C++ Bab 1 PENGENALAN C++ Bab 1 1.1 SEJARAH C++ Bahasa C++ diciptakan oleh Bjarne Stroustrup di AT&T Bell Laboratories awal tahun 1980-an berdasarkan C ANSI (American National Standard Institute). Pertama kali, prototype

Lebih terperinci

BAB VII DASAR-DASAR PHP

BAB VII DASAR-DASAR PHP BAB VII DASAR-DASAR PHP A. KOMPETENSI DASAR Memahami struktur dasar dokumen PHP. Mampu membuat dokumen PHP yang baik dan benar. Mampu memanfaatkan elemen-elemen dasar untuk mengolah dan menampilkan informasi.

Lebih terperinci

PEMROGRAMAN BERORIENTASI OBJEK

PEMROGRAMAN BERORIENTASI OBJEK MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK NINF615 SEMESTER GASAL 2016/2017 PROGRAM STUDI S1 TEKNIK INFORMATIKA MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK DISUSUN OLEH: Tim Asisten Praktikum Jurusan

Lebih terperinci

ilmu bahasa pemrograman ilmu c++ Copyright izie ilmu c++

ilmu bahasa pemrograman ilmu c++ Copyright izie  ilmu c++ ilmu c++ Tutorial ini untuk siapa saja, walaupun anda belum pernah melakukan pemrograman, atau jika andapun berpengalaman dalam pemrograman dengan bahasa pemrograman lain tapi ingin mempelajari bahasa

Lebih terperinci

Dasar-dasar Pemrograman JAVA

Dasar-dasar Pemrograman JAVA MK. Pemrograman Berorientasi Objek Dasar-dasar Pemrograman JAVA KARMILASARI Hardware dan Software yang Dibutuhkan untuk membuat Program dalam Bahasa JAVA 2 Komputer dengan spesifikasi minimal : Processor

Lebih terperinci

PERTEMUAN II Tipe Data, Variabel, Konstanta, Operator

PERTEMUAN II Tipe Data, Variabel, Konstanta, Operator PERTEMUAN II Tipe Data, Variabel, Konstanta, Operator 1. Tipe Data Dasar 2. Pengertian Variabel 3. Pengertian Konstanta 4. Operator Penugasan 5. Operator Operasi Bit 6. Operator Logika Pertemuan II ELEMEN

Lebih terperinci

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN PERTEMUAN 2 ALGORITMA & PEMROGRAMAN POKOK BAHASAN 1. Pendahuluan 2. Tahapan Pembangunan Program 3. Pengenalan Algoritma 4. Cara Menyajikan Algoritma 5. Data Program 6. Elemen-Elemen Program PENDAHULUAN

Lebih terperinci

PHP (HYPERTEXT PREPROCESSOR)

PHP (HYPERTEXT PREPROCESSOR) LAPORAN PRAKTIKUM MODUL 4 PEMROGRAMAN WEB PHP (HYPERTEXT PREPROCESSOR) Disusun Oleh: Deny Kurniawan Novianto (130533608222) PTI OFF B UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PROGRAM

Lebih terperinci

Notasi Algoritma Separator Special Character Kesalahan pada program Yoannita

Notasi Algoritma Separator Special Character Kesalahan pada program Yoannita DASAR PEMROGRAMAN Notasi Algoritma Separator Special Character Kesalahan pada program Yoannita Algoritma Program mengandung suatu algoritma (method yang digunakan untuk menyelesaikan suatu permasalahan)

Lebih terperinci

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java Pemrograman Berorientasi Obyek Dasar Pemrograman Java 1 Materi Pokok Membedakan antara valid dan invalid identifiers. Mengetahui Java technology keywords. Mengetahui 8 tipe data primitif. Mendefinisikan

Lebih terperinci

BAB 3 STRUKTURE PROGRAM JAVA

BAB 3 STRUKTURE PROGRAM JAVA BAB 3 STRUKTURE PROGRAM JAVA 3.1 Tujuan Pada akhir pembahasan, diharapkan Mahasiswa dapat : Mengidentifikasi bagian dasar dari program Java Membedakan mana yang termasuk ke dalam Java literals, tipe data

Lebih terperinci

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009 SOAL C++ 1. Penulisan Preprocessor yang benar di awali dengan tanda pound atau tanda : a. # c. @ b. & d. = 2. Contoh penulisan file header yang benar yaitu : a. &include c. =include

Lebih terperinci

Bahasa Pemrograman 2.

Bahasa Pemrograman 2. Bahasa Pemrograman 2 Pengenalan JAVA 1 anton@ukdw.ac.id Instalasi JDK Download JDK for free Instalasi biasa Set PATH dan JAVA_HOME set PATH=%PATH%; set JAVA_HOME=

Lebih terperinci

Modul Praktikum Bahasa Pemrograman 1

Modul Praktikum Bahasa Pemrograman 1 Modul Praktikum Tahun Ajaran 2009/2010 Revisi : Eko Andriyanto Wicaksono, S.Kom Materi 6 Array Pengenalan Array Pada Bab sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam

Lebih terperinci

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program. Class & Objek Pengenalan OOP Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program. Object tersebut dikarakterisasi oleh property dan behavior. Pengenalan

Lebih terperinci

BAB 4 PENGENALAN BAHASA C

BAB 4 PENGENALAN BAHASA C Bab 4 Pengenalan Bahasa C 35 BAB 4 PENGENALAN BAHASA C TUJUAN PRAKTIKUM 1. Mengetahui sejarah perkembangan bahasa C. 2. Mengerti struktur program bahasa C. 3. Mengerti konsep tipe data, variabel, & operator

Lebih terperinci

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular

Hirarki Comsky. Unrestricted. Context Sensitive Context free Regular Hirarki Comsky Unrestricted Context Sensitive Context free Regular Contoh Tata Bahasa Sederhana BEGIN END ;

Lebih terperinci

DASAR PEMOGRAMAN JAVA

DASAR PEMOGRAMAN JAVA DASAR PEMOGRAMAN JAVA Pertemuan ke-2 Oleh: Winda Aprianti Tipe Data Bilangan Karakter Kata atau Kalimat Boolean Literal merepresentasikan nilai suatu tipe, dimana tipe itu sendiri menjelaskan bagaimana

Lebih terperinci

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C 1. Pendahuluan Lingkungan Turbo C++ 4.5 Turbo C++ 4.5 adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C++ 4.5. 1 2 3 4 1 : Menu Utama

Lebih terperinci

TYPE DATA, VARIABEL DAN ARRAY

TYPE DATA, VARIABEL DAN ARRAY TYPE DATA, VARIABEL DAN ARRAY 2.1. Pengelompokan Tipe Data Dalam Java a. Integer merupakan Represntasi dari bilangan bulat, contohnya -5, 0, 1, 2, 3, dans ebagainya. Integer terdiri dari byte, short, int

Lebih terperinci

Notasi Algoritma Separator Special Character. Dasar Pemrograman. Yoannita, S.Kom.

Notasi Algoritma Separator Special Character. Dasar Pemrograman. Yoannita, S.Kom. Notasi Algoritma Separator Special Character Dasar Pemrograman. Algoritma Algoritma adalah: penyusunaan aspek proses logika dari suatu pemecahan masalah tanpa melihat karakteristik bahasa pemrograman yang

Lebih terperinci

>>> type ("5") <'type string'> >>> a= Belajar Python >>> type a <'type string'> AP2B Dini Triasanti Struktur Pemrograman Python (Bagian 2)

>>> type (5) <'type string'> >>> a= Belajar Python >>> type a <'type string'> AP2B Dini Triasanti Struktur Pemrograman Python (Bagian 2) Struktur Pemrograman Python (Bagian 2) 1. Nilai dan Tipe data Sebuah nilai adalah hal yang paling mendasar seperti sebuah huruf atau sebuah angka yang akan di manipulasi oleh program. Nilai 2 (hasil ini

Lebih terperinci

Module 3. Variabel dan Tipe Data

Module 3. Variabel dan Tipe Data Module 3 Variabel dan Tipe Data 4.1 Identifier Identifier adalah suatu nama yang diciptakan oleh pemrogram untuk mengidentifikasi variabel, fungsi, dan class. Aturan penamaan identifier adalah sebagai

Lebih terperinci

ELEMEN DASAR C++ C++ mempunyai cara untuk menyatakan karakter-karakter yang tidak mempunyai kode tombol (seperti karakter tombol) misalnya \n.

ELEMEN DASAR C++ C++ mempunyai cara untuk menyatakan karakter-karakter yang tidak mempunyai kode tombol (seperti karakter tombol) misalnya \n. 1 ELEMEN DASAR C++ HIMPUNAN KARAKTER Himpunan karakter pada C++ terdiri huruf, digit maupun simbol-simbol lainnya (termasuk spasi dan karakter kontrol). Huruf, contoh : A s/d Z dan a s/d z Digit, contoh

Lebih terperinci

Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel Chapter 5 Pointer dan References Agenda Pada chapter ini kita akan membahas beberapa topik yang berhubungan dengan pointer dan reference yaitu: Penggunaan Pointer. Pointer dan Array. Mengalokasikan memory

Lebih terperinci

Struktur Bahasa C dan C++

Struktur Bahasa C dan C++ Elemen Program Struktur Bahasa C dan C++ Bahasa C merupakan bahasa pendahulu dari bahasa C++. Pencipta C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. C adalah bahasa pemrograman

Lebih terperinci

UNIVERSITAS SAM RATULANGI MANADO FAKULTAS TEKNIK, JURUSAN TEKNIK ELEKTRO Program Studi S-1 Teknik Informatika. Data & Ekspresi

UNIVERSITAS SAM RATULANGI MANADO FAKULTAS TEKNIK, JURUSAN TEKNIK ELEKTRO Program Studi S-1 Teknik Informatika. Data & Ekspresi UNIVERSITAS SAM RATULANGI MANADO FAKULTAS TEKNIK, JURUSAN TEKNIK ELEKTRO Program Studi S-1 Teknik Informatika Data & Ekspresi Mata Kuliah: Algoritma & Logika Informatika (IFC3504) Alwin M. Sambul, S.T.,

Lebih terperinci

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR Setelah selesai pembahasan pada bab ini, diharapkan Anda dapat : Mengenal dan dapat menggunakan tipe data Mengenal dan menggunakan variable Mengenal dan menggunakan

Lebih terperinci

Achmad Solichin.

Achmad Solichin. Pemrograman Bahasa C dengan Turbo C Sh-001@plasa.com Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),

Lebih terperinci

Pemrograman Lanjut. Class, dan Instance Variable. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

Pemrograman Lanjut. Class, dan Instance Variable. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut Pemrograman Lanjut Class, dan Instance Variable Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut Objectives Mampu mendeklarasikan class dan menggunakannya untuk membuat object. Mampu mendeklarasikan

Lebih terperinci

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA Tim Pengajar KU1102 - Institut Teknologi Sumatera Data Data adalah sesuatu yang belum mempunyai arti bagi penerimanya dan masih memerlukan adanya suatu

Lebih terperinci

Modul Praktikum 3 Pemograman Berorientasi Objek

Modul Praktikum 3 Pemograman Berorientasi Objek Modul Praktikum 3 Pemograman Berorientasi Objek 1. Judul : Kontrol Keputusan dan Pengulangan 2. Tujuan Percobaan : Diakhir praktikum, mahasiswa diharapkan mampu : Menggunakan struktur kontrol keputusan

Lebih terperinci

Algoritma Pemrograman

Algoritma Pemrograman Algoritma Pemrograman Pertemuan Ke-2 (Teks Algoritma) Noor Ifada noor.ifada@if.trunojoyo.ac.id S1 Teknik Informatika-Unijoyo 1 Sub Pokok Bahasan Pendahuluan Judul Algoritma Deklarasi Deskripsi Translasi

Lebih terperinci

Bab 2. Dasar-Dasar Pemrograman C

Bab 2. Dasar-Dasar Pemrograman C Bab 2. Dasar-Dasar Pemrograman C Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 Overview Tipe Data Standar (Standart Data Type) Aturan Pendefinisian Identifier Variabel Mendeklarasikan

Lebih terperinci

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2 VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI Tujuan Pembelajaran 1. Siswa mampu memahami penulisan Tipe data, variabel dan konstanta dalam pascal 2. Siswa mampu menerapkan penggunaan Tipe data,

Lebih terperinci

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04) TIPE DATA PADA JAVA Pertemuan (K-04/L-04) Alangkah baiknya kita mempelajari terlebih dahulu tentang apa itu tipe data dan mengenal ada berapa tipe data yang digunakan dalam Bahasa Pemrograman Java. Sudah

Lebih terperinci

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom DASAR PEMROGRAMAN PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom https://www.facebook.com/groups/dasarpemrogramanc TUJUAN Mengenal sejarah, struktur, sintaks

Lebih terperinci

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai 5 buah nilai dengan tipe yang sama dapat saja disimpan dalam 5 buah variabel, tetapi bagaimana dengan 100 nilai? Disimpan dengan 100 variabel?

Lebih terperinci

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello { Sekarang, kita akan mencoba untuk menganalisa program Java pertama : /** * My first j ava program */ public static void main(string[] args) //menampilkan string Hello world pada layar System. out. println("hello

Lebih terperinci

Pengantar Common Gateway Interface (CGI) dan Perl. - Konsep CGI dan Perl - Lingkungan variabel di Perl - Metode POST dan GET

Pengantar Common Gateway Interface (CGI) dan Perl. - Konsep CGI dan Perl - Lingkungan variabel di Perl - Metode POST dan GET Pengantar Common Gateway Interface (CGI) dan Perl - Konsep CGI dan Perl - Lingkungan variabel di Perl - Metode POST dan GET 1 Konsep CGI dan Perl Definisi CGI adalah suatu bentuk komunikasi dimana client

Lebih terperinci

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom Objek Data, Variabel, dan Konstanta Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom Pengantar Penyimpanan data di komputer (memori, register, dan lainnya) Organisasi yang sederhana Barisan bit

Lebih terperinci

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA

PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA PENGANTAR KOMPUTER & SOFTWARE I REPRESENTASI DATA Tim Pengajar KU1102 - Institut Teknologi Sumatera Data Data adalah sesuatu yang belum mempunyai arti bagi penerimanya dan masih memerlukan adanya suatu

Lebih terperinci

MATA KULIAH : LOGIKA DAN ALGORITMA KONSEP DASAR ALGORITMA

MATA KULIAH : LOGIKA DAN ALGORITMA KONSEP DASAR ALGORITMA MATA KULIAH : LOGIKA DAN ALGORITMA PERTEMUAN 3 KONSEP DASAR ALGORITMA CREATED BY: AYU ANGGRIANI H 092904010 PTIK A 2009 1 PRODI PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER JURUSAN PENDIDIKAN TEKNIK ELEKTRO

Lebih terperinci

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs. Sejarah C Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs. Pengembangan dari bahasa BCPL(Martin Richard, 1967) dan bahasa B (Ken Thompson, 1970) Dibantu Brian W. Kernighan, Ritchie menulis buku

Lebih terperinci

Universitas Komputer Indonesia. Pemrograman dengan C++ Builder 2004 Taryana S.

Universitas Komputer Indonesia. Pemrograman dengan C++ Builder 2004 Taryana S. 3.1. Statement Aspek awal yang perlu anda ketahui dalam bahasa pemograman adalah Reserved Word dan statement. Reserved word harus kita kenal bahkan harus dihapalkan, layaknya menghapal kata-kata baru apabila

Lebih terperinci

3.1 Contoh Program Java Sederhana

3.1 Contoh Program Java Sederhana SINTAKS BAHASA DAN TIPE DATA 3.1 Contoh Program Java Sederhana Setelah Anda mendapatkan gambaran yang cukup mengenai dasardasar OOP, kini saatnya kita memasuki dunia Java yang sebenarnya. Berikut ini contoh

Lebih terperinci

TIPE DATA, VARIABEL DATA DAN OPERATOR

TIPE DATA, VARIABEL DATA DAN OPERATOR TIPE DATA, VARIABEL DATA DAN OPERATOR A. TIPE DATA PRIMITIF Bahasa pemrograman java mendefinisikan delapan tipe data primitif. Tipe-tipe data tersebut diantaranya adalah boolean (untuk bentuk logika),

Lebih terperinci

Obyektif : KONTROL ALUR PROGRAM

Obyektif : KONTROL ALUR PROGRAM KONTROL ALUR PROGRAM Obyektif : 1. Mengetahui dan memahami tentang percabangan (seleksi) 2. Mengetahui dan memahami tentang perulangan (iterasi) 3. Dapat membuat program tentang control alur program PERCABANGAN

Lebih terperinci

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM 1. Praktikan memahami perbedaan objek dan class pada Java. 2. Praktikan memahami konsep berorientasi objek. 3. Praktikan dapat membuat program sederhana dengan

Lebih terperinci

BAB II SINTAKS 2.1. SINTAKS

BAB II SINTAKS 2.1. SINTAKS BAB II SINTAKS 2.1. SINTAKS merupakan kumpulan aturan yang mendefinisikan suatu bentuk bahasa. mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar. Kata

Lebih terperinci

Pemrograman Berorientasi. Class dan Obyek 2

Pemrograman Berorientasi. Class dan Obyek 2 Pemrograman Berorientasi Obyek Class dan Obyek 2 anton@ukdw.ac.id Method main pada Java public static void main(string[] args) Merupakan bagian yang dieksekusi oleh program Java Sifat: public, static,

Lebih terperinci

SILABUS MATA KULIAH PEMROGRAMAN JAVA

SILABUS MATA KULIAH PEMROGRAMAN JAVA A. IDENTITAS MATA KULIAH Program Studi : Teknik Informatika Mata Kuliah : Pemrograman Java Kode : SP331 Bobot : 4 (empat) sks Kelas : MI Semester : 4 (empat) Mata kuliah prasyarat : Tidak ada Deskripsi

Lebih terperinci