BAB II DASAR TEORI. 2.1 Kompilator

Ukuran: px
Mulai penontonan dengan halaman:

Download "BAB II DASAR TEORI. 2.1 Kompilator"

Transkripsi

1 BAB II DASAR TEORI Bab ini berisi penjelasan tentang beberapa teori dasar yang digunakan selama pelaksanaan Tugas Akhir. Pembahasan dilakukan terhadap kompilator, lexical analyzer, parser, code generator dan pembahasan singkat perbandingan bahasa C dan Pascal. 2.1 Kompilator Kompilator adalah suatu program atau sekelompok program yang menerjemahkan kode dalam satu bahasa ke bahasa lainnya, pada umumnya adalah dari bahasa komputer tingkat tinggi diterjemahkan ke bahasa rakitan (assembly) [HOL92], kode dalam bahasa rakitan ini kemudian diproses oleh program lain yang disebut assembler, yang menerjemahkannya menjadi kode bahasa mesin. Meski demikian, adapula kompilator yang menerjemahkan kode dari bahasa tingkat tinggi langsung ke bahasa mesin (biner). Kompilator adalah program yang rumit dan kompleks, karena terdiri dari banyak upa bagian dan proses. Masing-masing bagian dan proses ini disebut phases (fase), yang saling berkomunikasi satu sama lain, lewat temprorary file (berkas sementara). Kompilator pada umumnya memiliki empat fase, sebagaimana ditampilkan pada gambar II-1, yaitu : fase 1 (preprocessing), fase 2 (penganalisis leksikal, penganalisis sintaks, table simbol, pembangkitan kode/code generation), fase 3 (optimasi kode) dan fase 4 (back end) [HOL92]. Meski demikian, terdapat banyak sekali variasi pada pembagian fase ini. Ada kompilator yang tidak mempunyai preprocessor, sebagian yang lain langsung menerjemahkan kode bahasa rakitan pada fase 2, lainnya lagi tidak memiliki fase 4, dll. 16

2 17 Gambar II-1 Alur kerja kompilator empat fase [HOL92] Fase 1 adalah preprocessing, berkaitan dengan membuang bagian-bagian yang tidak diperlukan dalam proses kompilasi, seperti komentar dalam kode, pengaturan eksekusi kompilator lewat line-control atau compiler directive, dll. Fase 2 adalah inti dari kompilator, karena didalamnya proses penerjemahan kode dilakukan. Proses utama dalam tugas akhir ini juga berkaitan erat dengan fase 2. Karena itu, penjelasan tentang fase 2 perlu dijabarkan secara lebih detil pada upa bab berikutnya. Fase 3 adalah optimasi, bertujuan meningkatkan kualitas

3 18 kode yang dihasilkan, kualitas dalam hal ini bisa berarti kecepatan eksekusi, manajemen memori, ukuran berkas keluaran, dll. Fase 4 (back end) adalah penerjemahan menjadi kode bahasa rakitan atau langsung menjadi bahasa mesin biner oleh program lain yang disebut assembler. 2.2 Penganalisis Leksikal / Lexical Analyzer Penganalisis leksikal berfungsi memisahkan kode menjadi bagian-bagian yang bermakna dalam bahasa yang diolah kompilator, bagian-bagian ini disebut token. penganalisis leksikal bekerja langsung mengambil data dari berkas / stream, lalu memecahnya menjadi token-token. Misal, penganalisis leksikal bahasa C, akan mengambil token dari suatu berkas kode sumber berupa 'while', 'do', 'int', '_var', '<', '<=', dll. Token adalah rangkaian karakter yang membentuk simbol yang bermakna dalam suatu bahasa. Penganalisis leksikal bekerja bersama dengan penganalisis sintaks sebagai subrutin yang dipanggil oleh penganalisis sintaks. [AHO77] 2.3 Penganalisis Sintaks / Grammar Penganalisis sintaks berfungsi memeriksa apakah kode sumber sesuai dengan tata bahasa yang digunakan. Misal: dalam bahasa C, token 'int' harus diikuti oleh suatu identifier pada kasus deklarasi identifier. int john; int doe; maka grammar yang dipakai oleh penganalisis sintaks adalah <deklarasi-variabel> ::= <tipe-variabel> <identifier> ';' (*) penganalisis sintaks berusaha mencocokkan <tipe-variabel> dengan token 'int' dan <identifier> dengan 'john' serta 'doe'. Notasi yang dipakai pada aturan (*) untuk menyatakan grammar seperti diatas disebut notasi BNF (Backus Naur Form), dan item yang dikurung dengan tanda < > disebut meta-variabel. Tiap kali penganalisis sintaks berusaha mencocokkan meta-variabel, penganalisis sintaks memanggil rutin penganalisis leksikal yang

4 19 akan mengembalikan token yang didapat dari input stream. Token ini kemudian dicocokkan apakah sesuai dengan aturan (*). Jika sesuai maka, penganalisis sintaks akan melakukan pemrosesan lebih lanjut sesuai dengan algoritma parsing yang dipakai. Jika tidak sesuai, penganalisis sintaks akan berusaha mencari aturan lain yang memungkinkan keadaan proses parsing saat ini cocok, dengan cara berkonsultasi menggunakan tabel parsing. Ada dua macam tipe algoritma parsing yaitu : top-down dan bottom-up. Pendekatan top-down bekerja dengan menurunkan meta-variabel pada tiap aturan dalam grammar hingga ke level token. Sedangkan pendekatan bottom-up bekerja sebaliknya, dengan mereduksi token menjadi aturan-aturan dalam grammar, hingga ke accepting state Bottom-up Parser Parser yang dihasilkan oleh yacc /bison termasuk jenis bottom-up parser, yaitu parser yang bekerja menggunakan push-down automaton untuk membangun pohon parsing dari bawah ke atas ( dari token direduksi menjadi rule ). Proses parsing dimulai dari simpul pohon paling bawah ( daun ), dan ketika telah cukup mengumpulkan sejumlah simpul lain dalam satu level (maksudnya mencocoki satu aturan parsing yang ada dalam grammar), simpul-simpul ini kemudian disatukan dengan membuat satu simpul pada satu level diatasnya ( simpul akar / root ). Proses ini dinamakan sebagai reduksi. Karena parser bottom-up adalah push-down automaton maka parser ini membutuhkan tabel state, yang menentukan arah proses berikutnya, dari suatu state. Dan juga membutuhkan suatu stack, untuk mencatat state saat ini berada. Dari sudut pandang stack, algoritma parsing bottom-up adalah sebagai berikut : a. Jika puncak stack saat ini, mencocoki item bagian sebelah kanan suatu aturan produksi pada grammar, maka puncak stack ini harus di-pop, dan diganti ( push ) dengan item di sebelah kirinya ( proses reduksi ). b. Jika tidak, lakukan push simbol yang saat ini dibaca oleh scanner ke stack, dan lakukan proses advance ( pembacaan token berikutnya pada stream oleh scanner ). Proses ini disebut shift. c. Jika proses sebelumnya adalah proses reduksi yang menghasilkan goal symbol (

5 20 simbol akhir yang diterima sebagai accepting state ), maka proses parsing telah selesai. Namun jika tidak, kembali ke langkah a. [HOL92] Top-down parser Prinsip kerja dari top-down parser berkebalikan dengan bottom-up parser. Pada parser tipe ini, aturan produksi pada grammar direduksi menjadi token, untuk kemudian dicocokkan dengan masukan. Dibandingkan dengan bottom-up parser, parser tipe ini kurang dalam segi performansi [HOL92]. Sebagaimana bottom-up parser, top-down parser menggunakan stack untuk operasinya, hanya saja parser tipe ini menggunakan metode rekursif dalam menurunkan grammar-nya. Top-down parser menggunakan prinsip recursive-descent parsing. 2.4 Pembangkitan Kode Proses pembangkitan kode dilakukan dengan menelusuri pohon sintaks hasil proses parsing. Pada bottom-up penganalisis sintaks, pembangkitan kode dilakukan dalam bentuk syntax directed translation, sebelum proses reduksi dilakukan. Hasil keluaran dari tahapan ini sangat bervariasi, bergantung dari kompilator. Beberapa kompilator multi fase menghasilkan intermediate language, sedangkan jenis lainnya langsung memproduksi kode biner. Misal, kompilator mengevaluasi ekspresi : * 3 + 4, asumsi grammar yang digunakan menganggap precedence dari operator kali '*' lebih tinggi dari operator tambah '+'. Maka pohon parsing-nya adalah sebagai berikut : <+, t0> <+, t0> <4, t1> <1, t0> <*, t1> <2, t1> <3, t2> Gambar II-2 Pohon Parsing

6 21 (ket : t0,t1 & t2 adalah variabel temporer yang disediakan kompilator, pada kompilator yang sebenarnya variabel temporer ini menyatakan register mesin atau runtime stack) Maka kompilator akan menghasilkan kode intermediate language sebagai berikut : t0 = 1 t1 = 2 t2 = 3 t1 *= t2 t0 += t1 t1 = 4 t0 += t1 Ada dua masalah utama yang harus diatasi saat pembangunan modul pembangkit kode: 1. mekanisme untuk mengalokasikan variabel temporer / sementara 2. menentukan nama dari variabel temporer yang menangani nilai suatu ekspresi yang telah dievaluasi sebagian, pada satu waktu tertentu. [HOL92] 2.5 Tabel Simbol Tabel simbol berfungsi menyimpan nama simbol (baik itu variabel, konstanta, prosedur atau fungsi) yang dipakai dalam program, serta menyimpan informasi penting menyangkut simbol tersebut, seperti tipe (untuk variabel), nomor baris tempat simbol dideklarasikan, dll. [AHO77] Tabel simbol dipakai oleh komponen lain pada fase 2, misal oleh penganalisis sintaks atau lexical analyzer. Setiap kali penganalisis sintaks atau lexical analyzer menjumpai simbol, pengecekan dilakukan di tabel simbol, untuk mengecek apakah simbol telah dideklarasikan sebelumnya, apa tipe/jenisnya, dll. Dengan demikian, tabel simbol berfungsi sebagai database yang menyimpan informasi semua simbol yang muncul dalam kode program. Karena itu, tabel simbol sangat penting. Karakteristik tabel simbol yang harus dipenuhi dalam implementasinya adalah A. cepat (semua data dimuat ke memori, bukan didalam berkas)

7 22 B. mudah digunakan, dikembangkan dan didaur ulang C. fleksibel D. entri data yang duplikat harus dapat ditangani E. mampu menghapus data-data yang tidak dipakai dengan cepat [HOL92] Ada beberapa alternatif implementasi tabel simbol, yaitu : 1. Stack : pencarian simbol bersifat linear dan tidak efisien, ukuran stack juga harus diketahui saat waktu kompilasi. 2. Pohon/Tree : pencarian bersifat linear dan penanganan collision (deklarasi simbol yang sama namun dalam scope yang berbeda) menjadi sulit. 3. Hash based : pencarian bersifat logaritmik dan hemat ruang memori. [HOL92] Berikut beberapa item yang biasanya disimpan di dalam tabel simbol : 1. Nama identifier 2. Object time address : menunjukkan lokasi relatif variabel pada saat runtime. 3. tipe identifier 4. dimensi (pada referensi ke senarai) atau jumlah parameter untuk prosedur 5. nomor baris tempat variabel dideklarasikan 6. nomor baris tempat variabel digunakan [NAT07] Misal : kode dibawah ini akan menghasilkan tabel simbol yang ditampilkan tabel II-1. Tabel simbol ini dihasilkan dengan menggunakan kakas dari sistem UNIX yaitu nm. int i; char c; void foo( ); int bar( ); Tabel II-1 Contoh Tabel Simbol Run time address tipe nama simbol nomor baris tempat dideklarasikan T bar C c T foo C i 1

8 C dan Pascal C dan Pascal seringkali dibandingkan, mungkin karena berbagai latar belakang yang sama antara keduanya (waktu pertama muncul yang hampir bersamaan, tujuan dan pengaruh yang sama, serta sudut pandang dan pendekatan filosofis yang hampir sama). C dan Pascal samasama menjadi penerus dari seri bahasa ALGOL. [WIK07] C didesain sebagai bahasa aras rendah, bahasa yang didesain sebagai antar muka dengan sistem. Sedangkan Pascal memiliki latar belakang akademik dan pendidikan. Namun perbedaan paling mencolok antara keduanya adalah dalam masalah alokasi memori untuk senarai dinamis. C memungkinkan pengguna untuk mengalokasikan ruang memori sebagai senarai secara bebas, sedangkan Pascal tidak demikian. Tabel II-2 menampilkan beberapa poin perbandingan C dan Pascal, yang diambil dari [WIK07] Tabel II-2 Perbandingan C dan Pascal C Pascal Case sensitive tidak case sensitive sebelum else boleh ada ; tidak boleh ada ; sebelum else komentar : /* blok */ atau // blok atau * blok * fungsi dibatasi oleh dan dibatasi oleh begin dan end definisi fungsi dibatasi sintaksis kontek definisi diawali procedure atau function definisi tipe diawali typedef diawali type deklarasi senarai menggunakan [ ] menggunakan kata kunci array dalam fungsi, deklarasi variabel adalah deklarasi variabel sebelum badan fungsi. sebelum statement deklarasi tanpa tipe dianggap integer setiap deklarasi harus punya tipe karakter dianggap sebagai integer karakter adalah karakter, bukan integer tidak mendukung tipe range mendukung range boolean dinyatakan sebagai 0 atau bukan 0 dinyatakan dalam true / false konversi yang luwes antara integer dan float konversi harus memakai fungsi indeks senarai dari 0 s/d N-1 indeks diset lewat subrange senarai adalah pointer yang konstan senarai berbeda dengan pointer string dianggap sebagai senarai karakter string adalah tipe khusus pointer dapat menunjuk ke fungsi atau obyek program lain pointer tidak dapat menunjuk ke obyek program seperti fungsi atau variabel global ada lima belas tingkatan precedence empat tingkat precedence assignment =, tes equality == assignment :=, equality =

9 Struktur program Struktur program dalam bahasa C terdiri dari satu blok prosedur utama yang disebut main( ), diikuti blok program yang diawali dan diakhiri. Bagian lain hanyalah bersifat pendukung. Pada Pascal, program terdiri dari kata kunci program diikuti nama program, lalu dilanjutkan dengan blok utama yang dimulai dari begin dan diakhiri end. Perbandingan struktur program antara C dan Pascal ditampilkan pada tabel II-3. Tabel II-3 Pebandingan Struktur Program disini dideklarasikan variable, konstanta, fungsi dan identifier lainnya. Dan juga directive seperti include, dan line-control serta preprocessor lainnya. main() // kode program program abc; disini dideklarasikan variable, konstanta, fungsi dan identifier lainnya. Directive untuk include seperti pada C, digantikan oleh use, namun ini bukan fitur dari Pascal standar. Begin kode program end. Program dalam bahasa C terdiri dari paling tidak satu fungsi utama yang dieksekusi, yaitu fungsi main(). Fungsi terdiri dari deklarasi nama fungsi dan badan fungsi. Badan fungsi berisi rangkaian statement yang dilingkupi oleh tanda dan. Pada Pascal, fungsi main identik dengan blok program utama, seperti yang diilustrasikan diatas. Kode program C dan Pascal terdiri dari serangkaian statement, yang selalu diakhiri tanda ; untuk memisahkan statement satu dengan lainnya. Satu atau lebih statement dapat digabung menjadi satu buah blok, yang dalam bahasa C dibatasi oleh tanda dan, sedangkan dalam Pascal, blok dibatasi oleh begin dan end Tipe String Tipe String pada bahasa C sering disebut sebagai character string atau string constants yang diekspresikan sebagai rangkaian karakter dilingkupi oleh tanda petik ganda. Dalam terminologi C, dikenal istilah escape sequence yaitu rangkaian karakter \ yang diterjemahkan sebagai nilai karakter khusus. Misal \n adalah escape sequence newline, diterjemahkan oleh fungsi input output sebagai karakter ganti baris. Contoh escape sequence newline pada string

10 25 adalah hello \n world, yang jika dicetak ke output standar adalah hello world Pada Pascal string diapit oleh tanda (petik tunggal). Perbandingan penggunaan string pada C dan Pascal dapat dilihat pada tabel II-4. Tabel II-4 String pada C dan Pascal char *s; C var s : string; Pascal s = helloworld ; s := helloworld ; Komentar Komentar dibutuhkan untuk menjelaskan kode sumber program sehingga lebih mudah dibaca dan dimengerti. Komentar dalam C diawali dengan /* dan diakhiri dengan */, semua karakter diantara keduanya diabaikan dari proses pengolahan oleh kompilator. Pada Pascal, komentar diapit oleh tanda dan Deklarasi misal Deklarasi suatu variabel pada C terdiri dari nama tipe diikuti serangkaian nama variabel, int i; float h; Deklarasi pada C dilakukan pada awal blok program. int memiliki lebar 16-bit sedangkan float 32-bit. Selain int dan float, C menyediakan beberapa tipe dasar lain, yaitu : char short long double character-1 byte short integer long integer double-precision floating point Pada Pascal, deklarasi variabel diawali menggunakan kata kunci var dan juga dilakukan di awal blok program. Tabel II-5 menampilkan perbandingan deklarasi variabel antara C dan

11 26 Pascal. Tabel II-5 Deklarasi Variabel int x, y; main() int z; f ( ) int a; Deklarasi pada C Deklarasi pada Pascal program decl; var x, y, z : integer; function f( ):integer; var a : integer; begin end; begin end Operator Assignment Proses assignment dalam C menggunakan tanda = sama dengan. Ekspresi disebelah kanan tanda = memberikan nilai hasil evaluasi ekspresi, sedangkan simbol disebelah kiri tanda = menampung nilai hasil evaluasi. lower = 0; upper = 300; Sedangkan pada Pascal, assignment dilakukan menggunakan tanda := lower := 0; upper := 300; Standar Input Output Bahasa C tidak memiliki sistem input dan output yang built-in, namun lebih disediakan dalam bentuk pustaka standar, berbeda dengan Pascal yang telah menyediakan fungsi IO secara built-in sebagai bagian dari kompilator. Fungsi untuk menulis ke standar output pada C adalah printf, yang menuliskan data ke standar output dengan format tertentu. Pada Pascal, fungsi cetak ke layar adalah write. Untuk fungsi membaca input, C memiliki banyak varian fungsi / pustaka standar. Misal getc, scanf, fscanf, sscanf, vscanf dan vsscanf. Pada Pascal standar, input umumnya cukup ditangani dengan fungsi read. Perbandingan fungsi input dan output antara C dan Pascal dapat dilihat pada tabel II-6.

12 27 Tabel II-6 Input dan Output C Pascal printf( data1=%d data2=%f,i, h ); write( data1=, i, data2=, h ); c = getch( ); readln( c ); Statement for for digunakan sebagai salah satu looping dari tiga jenis looping di C. for memiliki tiga upabagian ( di luar badan pengulangan ) yang semuanya bersifat optional; bagian pertama untuk inisialisasi, bagian kedua untuk evaluasi apakah looping diteruskan atau tidak, dan bagian ketiga untuk stepping. for harus diikuti oleh badan pengulangan berupa paling tidak satu statement atau satu blok. for pada Pascal memiliki format yang berbeda dengan C, karena menggunakan keyword bantu lain yaitu to atau downto dan do. Perbandingan pengulangan for antara C dan Pascal dapat dilihat pada Tabel II-7. Tabel II-7 Pengulangan for C for( f = 0 ; f < 300 ; f = f + 1 ) // kode diulang tiga ratus kali Pascal for f = 1 to 300 do begin kode diulang tiga ratus kali end; for f = 300 downto 1 do begin kode diulang tiga ratus kali end; Macro Bahasa C menyediakan fasilitas macro sebagai bagian dari preprocessor ( program yang dipanggil kompilator C untuk memproses semua bagian kode yang diawali tanda # ). Semua macro pada kode akan diganti dengan kode asli pada saat pemrosesan awal oleh preprocessor. Macro pada C menggunakan preprocessor define, diikuti nama macro lalu spasi atau tab dan terakhir diikuti kode pengganti. Bahasa Pascal tidak menyediakan fasilitas macro.

13 28 Perbandingan kode sebelum dan setelah preprocessing ( pemrosesan kode oleh preprocessor ) dapat dilihat pada tabel II-8. Tabel II-8 Efek preprocessing sebelum preprocessing #define LOWER 0 #define UPPER 300 #define STEP 10 main() for ( f = LOWER ; f < UPPER ; f = f + STEP ) ; setelah preprocessing main() for( f = 0 ; f < 300 ;f = f + 10 ) ; Senarai Senarai adalah serangkaian obyek yang memiliki tipe sama, yang terurut kontigu di memori. Senarai diakses dengan menggunakan indeks yang berupa integer (pada bahasa C elemen senarai dimulai dari nol, sedangkan pada Pascal elemen diakses tergantung bagaimana senarai dideklarasikan). Senarai dideklarasikan secara konstan ( jumlah elemennya tetap, tidak dapat diubah-ubah ). Pada bahasa C, senarai dideklarasikan dengan menggunakan tanda siku [ ] pada akhir nama identifier. Sedangkan pada Pascal, senarai dideklarasikan dengan kata kunci array. Perbandingan senarai antara C dan Pascal dapat dilihat Tabel II-9. Tabel II-9 Penggunaan Senarai pada C dan Pascal C int a[ 10 ]; // array integer dengan 10 elemen. a[ 0 ] = 1; // elemen pertama a[ 9 ] = 2; // elemen terakhir Pascal var a :array [ ] of integer; b :array [ ] of integer; a[ 1 ] : = 3; a[ 10 ] := 4; b[-1] := 5; b[ 8 ] := 6;

14 Subrutin Subrutin adalah bagian dari program yang merepresentasikan sejumlah operasi yang sering dilakukan selama program dieksekusi, sehingga daripada ditulis berulang-ulang, akan lebih efisien ditulis sebagai suatu subrutin. Biasanya, subrutin menerima parameter input saat dipanggil, dan mengembalikan nilai sebagai hasil operasi eksekusi badan subrutin. Pada C, subrutin dikenal sebagai function, sedangkan pada Pascal ada dua jenis subrutin, yaitu procedure dan function (procedure tidak mengembalikan nilai). Berikut adalah format subrutin pada C tipe-kembalian nama-fungsi( deklarasi parameter, jika ada ) deklarasi statement Perbandingan subrutin antara C dan Pascal dapat dilihat pada tabel II-10. Tabel II-10 Subrutin pada C dan Pascal int twice( int i ) return i * 2; C Pascal function twice( i : integer ) : integer; begin twice := i * 2; end; 2.7 Kakas Parser Generator dan Scanner Generator Sebagaimana dijelaskan diawal, dua dari komponen kompilator adalah parser dan scanner. Seringkali, proses pembuatan scanner dan parser menjadi rumit dan berisiko terhadap munculnya error. Pada parser, kesalahan seringkali berasal dari desain grammar dari perancang bahasa, misal kesalahan penanganan rekursif, kesalahan penanganan konflik antara reduce dan shift, kesalahan pemilihan operator precedence, dll. Sedangkan pada scanner, kesalahan biasanya muncul dari sistem IO dan buffering. Salah satu solusi untuk permasalahan ini diawali oleh para ilmuwan peneliti dari AT & T Bell Laboratory, yaitu dengan membuat program yang menghasilkan parser dan scanner, secara otomatis. Dasar pemikirian dari scanner generator diusulkan oleh Ken Thompson, yang terkenal sebagai prinsip Thompson Construction. Ide dasarnya adalah mengubah ekspresi reguler menjadi

15 30 NFA ( Nondeterministic Finite Automata ), selanjutnya NFA digunakan oleh scanner generator untuk menerjemahkan input string, apakah sesuai dengan pola ekspresi reguler atau tidak. Pada beberapa kasus, NFA dapat diubah menjadi DFA ( Deterministic Finite Automata ). Scanner generator mengimplementasikan scanner yang dihasilkan sebagai mesin otomata dalam struktur data berupa tabel. Semakin banyak pola input string yang harus dikenali oleh scanner, makin besar ukuran tabel. Optimasi yang dilakukan adalah melakukan minimasi ukuran tabel dengan beberapa metode yang sudah dikenal baik, misal dengan menghapus baris atau kolom yang redundan atau melakukan kompresi tabel. [HOL92] Sedangkan parser generator, ide utamanya adalah membuat parser secara otomatis dari spesifikasi grammar yang diberikan kepada program. Karena setiap parser LALR membutuhkan state tabel, parser generator harus menyediakan state table ke dalam parser yang dihasilkan. Dalam proses men-generate parser, parser generator juga membangun tabel simbol internal, yang diperlukan untuk menyimpan data-data tentang grammar dan simbol non-terminal. [HOL92] Setelah state table selesai dibuat sesuai dengan spesifikasi grammar, parser generator akan mengenali sejumlah masalah yang mungkin muncul, biasanya berkaitan dengan spesifikasi grammar yang ambigu. Pada tahap ini, grammar yang diberikan kepada parser generator harus menyediakan operator precedence atau mekanisme lain yang memungkinkan masalah ambiguitas dapat diatasi. Parser generator juga menyediakan fasilitas error recovery, yaitu kemampuan untuk sejauh mana kesalahan gramatikal pada kode sumber yang di-parsing dapat diatasi, dan memberikan pesan error yang cukup informatif kepada user tentang kesalahan gramatikal apa yang terjadi.

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL

PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL PENGEMBANGAN PROTOTIPE APLIKASI KONVERSI KODE DARI BAHASA C KE PASCAL LAPORAN TUGAS AKHIR Disusun Sebagai Syarat Kelulusan Tingkat Sarjana oleh : Ipam Fuaddina Adam / 13502079 PROGRAM STUDI TEKNIK INFORMATIKA

Lebih terperinci

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK

ANALISIS DAN PERANCANGAN PERANGKAT LUNAK BAB IV ANALISIS DAN PERANCANGAN PERANGKAT LUNAK Bab ini membahas analisis perancangan perangkat lunak (diberi nama c2p) dari segi struktur data dan analisis aliran data. Hal-hal yang dibahas diantaranya

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

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu: SINTAKS Bahasa mesin adalah bentuk terendah komputer. Kita dapat berhubungan langsung dengan bagian-bagian yang ada di dalam komputer seperti bits, register. Bahasa mesin terdiri dari bit-bit 0 dan 1.

Lebih terperinci

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu:

SINTAKS. Sintaks dari bahasa pemrograman di defenisikan dengan 2 kumpulan aturan, yaitu: SINTAKS Bahasa mesin adalah bentuk terendah komputer. Kita dapat berhubungan langsung dengan bagian-bagian yang ada di dalam komputer seperti bits, register. Bahasa mesin terdiri dari bit-bit 0 dan 1.

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

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

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

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

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

BAB I PENDAHULUAN. 1.1 Latar Belakang

BAB I PENDAHULUAN. 1.1 Latar Belakang BAB I PENDAHULUAN 1.1 Latar Belakang Proses konversi kode sumber suatu aplikasi/program ke bahasa lain sering kali dilakukan oleh pelaku industri perangkat lunak, karena satu dan lain hal (misal : integrasi

Lebih terperinci

ALGORITMA PEMROGRAMAN 1C SINTAKS

ALGORITMA PEMROGRAMAN 1C SINTAKS ALGORITMA PEMROGRAMAN 1C SINTAKS Indah Wahyuni PENDAHULUAN Bahasa mesin adalah bentuk terendah komputer. Kita dapat berhubungan langsung dengan bagianbagian yang ada didalam komputer seperti bits, register.

Lebih terperinci

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

TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1 1. PENDAHULUAN TEKNIK KOMPILASI Tony Darmanto,ST / Smt V S1 TI / STMIK WIDYA DHARMA/ Hal 1 Arti Kata Teknik Kompilasi Teknik adalah suatu Metode atau Cara Kompilasi adalah suatu Proses mengabungkan serta

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

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

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

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

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

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma

MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER. Jurusan Sistem Komputer S1 Universitas Gunadarma MK. PEMROGRAMAN SISTEM Semester/SKS : 6/3 COMPILER Jurusan Sistem Komputer S1 Universitas Gunadarma Aspek Kompilasi Programmer dengan High Level Languange (HLL) vs. Komputer dengan Machine Language Untuk

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

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu : 1 Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu : Contoh Program : { int x; float y; char z; double w; clrscr(); /* untuk membersihkan layar */ x = 10; /* variable

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

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

Pengenalan Bahasa C week 1

Pengenalan Bahasa C week 1 Desain dan Analisis Algoritma Pengenalan Bahasa C week 1 I Ketut Resika Arthana, S.T., M.Kom resika.arthana@gmail.com http://www.rey1024.com Perkenalan I Ketut Resika Arthana, M.Kom Resika Rey resika.arthana@gmail.com

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

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom

Syntax, Semantic & Grammar. Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom Syntax, Semantic & Grammar Konsep Bahasa Pemrograman Materi 3 Yudianto Sujana, M.Kom Definisi Bahasa pemrograman merupakan notasi formal Mempunyai 2 komponen utama Syntax dan Semantic Syntax: Kumpulan

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

Aplikasi Translator Kode Dari Bahasa C ke Pascal

Aplikasi Translator Kode Dari Bahasa C ke Pascal Aplikasi Translator Kode Dari Bahasa C ke Pascal Ipam Fuaddina Adam Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jl. Ganesha 10, Bandung, Indonesia adam.first84@gmail.com Abstraksi

Lebih terperinci

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs

Teknik Kompiler 5. oleh: antonius rachmat c, s.kom, m.cs Teknik Kompiler 5 oleh: antonius rachmat c, s.kom, m.cs TATA BAHASA Tata bahasa / Grammar dalam OTOMATA adalah kumpulan dari himpunan variabel (non-terminal), simbol-simbol awal dan terminal yang dibatasi

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

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2 VARIABEL, TIPE DATA DAN EKSPRESI Bab 2 2.1 IDENTIFIER Indentifier adalah nama yang diberikan untuk nama objek, nama fungsi, nama variable, dll ( sifatnya case sensitive ). Identifier pada C++ terdiri dari

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

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

Modul 1 Dasar Dasar Bahasa Pemrograman C

Modul 1 Dasar Dasar Bahasa Pemrograman C Modul 1 Dasar Dasar Bahasa Pemrograman C 1. C dan Pengolahan Sinyal Digital C adalah bahasa pemrograman tingkat tinggi. Sebab bahasa pemrogramannya menggunakan keyword dan syntax yang mudah dimengerti

Lebih terperinci

elemen Dasar Bahasa Pemrograman C

elemen Dasar Bahasa Pemrograman C Elemen-elemen elemen Dasar Bahasa Pemrograman C Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN - 2008 Identifier : Elemen Dasar C Nama pengenal (identifier) adalah nama-nama yang ditentukan

Lebih terperinci

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo

Teknik Kompilasi II TEKNIK KOMPILASI. Ernastuti & Sulistyo P 1/52. Ernastuti & Sulistyo TEKNIK KOMPILASI P 1/52 MATERI Teknik Kompilasi II 2/52 Pendahuluan Tujuan Pembelajaran : 1. Mahasiswa memahami cara kerja serta proses yang terjadi pada sebuah Compiler 2. Mahasiswa memahami konsep pembuatan

Lebih terperinci

Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom

Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom Tujuan Pembelajaran Mahasiswa dapat memahami konsep dasar pemrograman dengan bahasa C++ Mahasiswa dapat membuat aplikasi sederhana menggunakan bahasa C++,

Lebih terperinci

Tipe Data dan Operator

Tipe Data dan Operator Tipe Data dan Operator Dasar Algoritma dan Pemrogrman Eka Maulana, ST, MT, MEng. Klasifikasi Tipe Data 1 Tipe Data Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam

Lebih terperinci

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama). PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C++ 6.0 STRUKTUR BAHASA C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama). Setiap program akan dieksekusi dimulai dari statement

Lebih terperinci

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA Kata-Kata Cadangan Kata-kata cadangan (reserved words) adalah kata-kata yang sudah didefinisikan oleh Pascal yang mempunyai maksud tertentu. Kata-kata

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

ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom dahlia.widhyaestoeti@gmail.com dahlia74march.wordpress.com Struktur program dalam C++ C sebagai bahasa pendahulunya C++ C merupakan termasuk bahasa pemrograman

Lebih terperinci

dilakukan oleh bahasa mesin dapat dilakukan oleh C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C dalam pemakainnya memerlukan

dilakukan oleh bahasa mesin dapat dilakukan oleh C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C dalam pemakainnya memerlukan I. PENDAHULUAN Perkembangan bahasa C erat kaitannya dengan perkembangan sistem operasi UNIX, dimana keduanya dikembangkan di AT&T Bell Lab (USA). Pertama kali bahasa C diimplementasikan pada komputer DEC

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

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom Teknik Kompiler 12 oleh: antonius rachmat c, s.kom Code Generator Source code Front End Intermedate Code Code Optimizer Intermedate Code Code Generator Target Program Symbol Table Code Generation Persyaratan

Lebih terperinci

Elemen Bahasa Pemrograman. Aditya Rizki Yudiantika, M.Eng.

Elemen Bahasa Pemrograman. Aditya Rizki Yudiantika, M.Eng. Elemen Bahasa Pemrograman Aditya Rizki Yudiantika, M.Eng. Algoritma dan Struktur Data (SI063) Ganjil 2017/2018 Outline Pengenalan bahasa C++ Struktur penulisan kode dan elemen Tipe data Konstanta Operator

Lebih terperinci

Struktur Program Bahasa C

Struktur Program Bahasa C Struktur Program Bahasa C Struktur Program Bahasa C /* Komentar */ main( ) { statemen-statemen; } fungsi_tambahan( ) { statemen-statemen } program utama fungsi tambahan yang dapat dipanggil oleh program

Lebih terperinci

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3

Proses Kompilasi. Otomata dan Pengantar Kompulasi Pertemuan 3 Proses Kompilasi Otomata dan Pengantar Kompulasi Pertemuan 3 Bahasa Pemrograman Bahasa pemrograman adalah bahasa yang menjadi sarana manusia untuk berkomunikasi dengan komputer. Pikiran manusia yang tidak

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

Teknik Pemrograman Terstruktur 1 PENGENALAN BAHASA C

Teknik Pemrograman Terstruktur 1 PENGENALAN BAHASA C 1 PENGENALAN BAHASA C Paradigma Pemrograman Pemrograman Deklaratif/Fungsional Persoalan diselesaikan dengan mengekspresikan logika persoalan Pemrograman Prosedural/Terstruktur Persoalan diselesaikan dengan

Lebih terperinci

Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom Sebuah kompilator akan sering menemui program yang mengandung kesalahan. Oleh karena itu, kompilator harus memiliki strategi yang dapat dilakukan untuk menangani

Lebih terperinci

SMA SANTO PAULUS PONTIANAK

SMA SANTO PAULUS PONTIANAK SMA SANTO PAULUS PONTIANAK Konsep Dasar Pemrograman Pascal Kelas X Semester 2 Pengayaan Teknologi Informasi dan Komunikasi Oleh : Vianney Alexius, mtb TIK-vianney.mtb 2012 Algoritma Serangkaian langkah

Lebih terperinci

TEORI BAHASA DAN AUTOMATA

TEORI BAHASA DAN AUTOMATA MODUL I TEORI BAHASA DAN AUTOMATA Tujuan : Mahasiswa memahami pengertian dan kedudukan Teori Bahasa dan Otomata (TBO) pada ilmu komputer Definisi dan Pengertian Teori Bahasa dan Otomata Teori bahasa dan

Lebih terperinci

VARIABEL & TIPE DATA PEMROGRAMAN C++

VARIABEL & TIPE DATA PEMROGRAMAN C++ VARIABEL & TIPE DATA PEMROGRAMAN C++ ruliriki@gmail.com VARIABEL Suatu nama yang menyatakan tempat dalam memori komputer Menyimpan nilai yang dapat diubah VARIABEL Pengenal (identifier) yang digunakan

Lebih terperinci

BAB 1 KONSEP DASAR BAHASA C

BAB 1 KONSEP DASAR BAHASA C BAB 1 KONSEP DASAR BAHASA C 1. Sejarah dan Standar C Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin Richard pada tahun 1967. Bahasa ini memberikan ide kepada Ken Thompson yang kemudian

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

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

21/11/2016. Pohon Sintaks. Syntax?? Proses Penurunan. Analisis Syntax (Parser) Metode Parsing ANALISIS SINTAKS TEKNIK KOMPILASI

21/11/2016. Pohon Sintaks. Syntax?? Proses Penurunan. Analisis Syntax (Parser) Metode Parsing ANALISIS SINTAKS TEKNIK KOMPILASI Pohon Sintaks TEKNIK KOMPILASI ANALISIS SINTAKS SHINTA P. SARI Jurusan Informatika Fasilkom Universitas Indo Global Mandiri Berupa pohon penurunan yang menggambarkan bagaimana memperoleh suatu string dengan

Lebih terperinci

TEKNIK KOMPILASI. Firrar Utdirartatmo

TEKNIK KOMPILASI. Firrar Utdirartatmo TEKNIK KOMPILASI TEKNIK KOMPILASI Firrar Utdirartatmo Kata Pengantar Penulis memberanikan diri untuk menyusun buku ini karena melihat kenyataan bahwa teknik kompilasi merupakan mata kuliah yang diajarkan

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

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

BAB VI CARA PENANGANAN KESALAHAN

BAB VI CARA PENANGANAN KESALAHAN BAB 6 CARA PENANGANAN KESALAHAN 55 BAB VI CARA PENANGANAN KESALAHAN TUJUAN PRAKTIKUM 1. Mengetahui jenis - jenis kesalahan yang biasa terjadi 2. Memahami cara cara penanganan kesalahan 3. Mengerti bagaimana

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

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

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

Komentar, Identifier, Konstanta dan Variabel

Komentar, Identifier, Konstanta dan Variabel PEMROGRAMAN BERORIENTASI OBJEK Komentar, Identifier, Konstanta dan Variabel Budhi Irawan, S.Si, M.T KOMENTAR PROGRAM Dalam proses pengembangan sebuah program, pasti akan disibukan dengan penulisan kode-kode

Lebih terperinci

Keg. Pembelajaran 2 : Mengenal Bahasa C++

Keg. Pembelajaran 2 : Mengenal Bahasa C++ Keg. Pembelajaran 2 : Mengenal Bahasa C++ 1. Tujuan Kegiatan Pembelajaran Setelah mempelajari materi kegiatan pembelajaran ini mahasiswa akan dapat : 1) Mengenal secara baik sintak-sintak dalam bahasa

Lebih terperinci

Pengantar dalam Bahasa Pemrograman Turbo Pascal

Pengantar dalam Bahasa Pemrograman Turbo Pascal Pengantar dalam Bahasa Pemrograman Turbo Pascal Penulis: William www.etersoul.com Computer Club of Bunda Hati Kudus SMA Bunda Hati Kudus Pengantar Bahasa Pemrograman Pascal Page 1 / 11 License Agreements

Lebih terperinci

Teknik Kompilasi. Notasi Bahasa

Teknik Kompilasi. Notasi Bahasa Teknik Kompilasi Notasi Bahasa TATA BAHASA Tata bahasa / Grammar dalam OTOMATA adalah kumpulan dari himpunan variabel (non-terminal), simbol-simbol awal dan terminal yang dibatasi oleh aturan-aturan produksi.

Lebih terperinci

Komponen sebuah Kompilator

Komponen sebuah Kompilator Komponen sebuah Kompilator Program Subjek Program Objek ANALISIS SINTESIS Penganalisis Leksikal (Scanner) Penganalisis Sintaks (Parser) Penganalisis Semantik Pembentuk Kode Pengoptimal Kode TABEL 1 Scanning

Lebih terperinci

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008

TEKNIK KOMPILASI. Dosen : Dwi Retno Wahyuningsih, S. Kom. Jurusan : Teknik Informatika Semester Genap 2007/2008 TEKNIK KOMPILASI Dosen : Dwi Retno Wahyuningsih, S. Kom Jurusan : Semester Genap 2007/2008 SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER (STMIK) DARMAJAYA BANDAR LAMPUNG 2008 GARIS-GARIS BESAR PROGRAM

Lebih terperinci

ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom

ANALISIS SEMANTIK. Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom ANALISIS SEMANTIK Teknik Kompilasi Dosen: Utami Dewi W.,S.Kom Pengertian (1) Suatu compiler selain harus memeriksa leksikal dan sintaks juga harus memeriksa semantik dari program sumber tersebut. Dalam

Lebih terperinci

MODUL DUA VARIABEL DAN TIPE VARIABEL

MODUL DUA VARIABEL DAN TIPE VARIABEL MODUL DUA VARIABEL DAN TIPE VARIABEL Tujuan : Mahasiswa memahami tentang operator dan penggunaannya dalam bahasa pemrograman java, mengetahui macam-macam kategori operator dan mengetahui perbedaan operator

Lebih terperinci

Review: Algoritme dan Program 12/29/2011. Algoritme dan Pemrograman. Review: Bagaimana memecahkan masalah dengan komputer?????

Review: Algoritme dan Program 12/29/2011. Algoritme dan Pemrograman. Review: Bagaimana memecahkan masalah dengan komputer????? Algoritme dan Pemrograman Kuliah #3 Implementasi algoritme Struktur program C Elemen program * * * * Masalah Review: Bagaimana memecahkan masalah dengan komputer????? Logika Berpikir Logika Pemrograman

Lebih terperinci

UNIVERSITAS GUNADARMA

UNIVERSITAS GUNADARMA UNIVERSITAS GUNADARMA SK No. 92 / Dikti / Kep /1996 Fakultas Ilmu Komputer, Teknologi Industri, Ekonomi,Teknik Sipil & Perencanaan, Psikologi, Sastra Program Diploma (D3) Manajemen Informatika, Teknik

Lebih terperinci

Tipe Data, Variabel, Input/Output

Tipe Data, Variabel, Input/Output Tipe Data, Variabel, Input/Output Pendahuluan Untuk membuat program dengan bahasa pemrograman C harus memperhatikan struktur dasarnya. Strukturnya diawali dengan bagian preprocessor directive yang biasanya

Lebih terperinci

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK

TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK TEKNIK KOMPILASI PERTEMUAN Ke 4 dan 5 Abdul Muis Mappalotteng ANALISIS SEMANTIK Analisis Semantik adalah proses setelah melewati proses scanning dan parsing. Pada tahap ini dilakukan pengecekan pada struktur

Lebih terperinci

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS 29 BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS Dengan menggunakan Visual Basic 6.0 aplikasi perangkat ajar pengelolaan dan perhitungan ekspresi matematika yang akan dibangun dalam penelitian

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

Desain dan Analisis Algoritma. Pengenalan Bahasa C. I Ketut Resika Arthana, S.T., M.Kom.

Desain dan Analisis Algoritma. Pengenalan Bahasa C. I Ketut Resika Arthana, S.T., M.Kom. Desain dan Analisis Algoritma Pengenalan Bahasa C I Ketut Resika Arthana, S.T., M.Kom resika.arthana@gmail.com http://www.rey1024.com Intro Sadarilah Kawan, Pemrograman Itu Indah Bahasa Pemrograman mudah

Lebih terperinci

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN

PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN PERTEMUAN 2 KONSEP DASAR PEMROGRAMAN I. Algoritma Pemrograman Yang Baik Ciri-ciri algoritma pemrograman yang baik adalah: 1. Memiliki logika perhitungan/metode yang tepat dalam memecahkan masalah 2. Menghasilkan

Lebih terperinci

BAB I SEKILAS TENTANG C

BAB I SEKILAS TENTANG C BAB I SEKILAS TENTANG C Tujuan : 1. Menjelaskan sejarah dan ruang lingkup pemakaian bahasa C 2. Menjelaskan kelebihan dan kekurangan bahasa C 3. Menjelaskan proses kompilasi dan linking program C 4. Menjelaskan

Lebih terperinci

Pemrograman Dasar C. Minggu 2

Pemrograman Dasar C. Minggu 2 Pemrograman Dasar C Minggu 2 Topik Bahasan Stdio library Output dalam C: printf Input dalam C: scanf Escape sequence Assignment Statement Operator Arithmatika Urutan dan Asosiasi Input dan Output dalam

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 dan Variabel

Tipe Data dan Variabel Tipe Data dan Variabel L/O/G/O Agus Priyanto Introduction Sejarah C Bahasa C merupakan bahasa pemrograman yang di ciptakan oleh Dennis Ricthie yang berasal dari perkembangan bahasa BCPL (Basic Combined

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

9/9/2011 ILKOM IPB 1 ALGORITME DAN PEMROGRAMAN. Review: Algoritme dan Program. Bahasa tingkat rendah (low level language)

9/9/2011 ILKOM IPB 1 ALGORITME DAN PEMROGRAMAN. Review: Algoritme dan Program. Bahasa tingkat rendah (low level language) * * * * Masalah Review: Bagaimana memecahkan masalah dengan komputer????? ALGORITME DAN PEMROGRAMAN Kuliah #3 Implementasi algoritme Struktur program C Elemen program Logika Berpikir Implementasi Algortime

Lebih terperinci

Algoritme dan Pemrograman

Algoritme dan Pemrograman Kuliah #2 Struktur program C Tipe data Input / Output Algoritme dan Pemrograman Beberapa Catatan Lakukan KRS B jika: Belum mendaftar di KRS A Mendaftar di KRS A, tapi nama tidak muncul di absen Pindah

Lebih terperinci

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini: PENGENALAN BAHASA C A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini: Kebanyakan pemrogram jarang memberikan keterangan/

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

Dasar Pemrograman Mikrokontroler dengan Bahasa C

Dasar Pemrograman Mikrokontroler dengan Bahasa C Dasar Pemrograman Mikrokontroler dengan Bahasa C Pokok Bahasan: 1. Penggunaan Fungsi (Using Functions) 2. Penanaman bahasa rakitan di dalam Program 'C' Tujuan Belajar: Setelah mempelajari dalam bab ini,

Lebih terperinci

KU-1072 PENGENALAN TEKNOLOGI INFORMASI B (PTI B)

KU-1072 PENGENALAN TEKNOLOGI INFORMASI B (PTI B) KU-1072 PENGENALAN TEKNOLOGI INFORMASI B (PTI B) 2008 MATERI I PENGENALAN BAHASA C++ Materi Praktikum Durasi TIU/TIK Referensi Pengenalan Bahasa C++ 180 menit 1. Pendahuluan 2. Instruksi Output Sederhana

Lebih terperinci

Kesalahan Program dapat berupa

Kesalahan Program dapat berupa Error Handling Program Penanganan Reaksi Compiler Pada kesalahan Error Recovery Error repair Program Program dapat berupa leksikal Sintaks Semantics 1 Error Handling - Program Program dapat berupa leksikal

Lebih terperinci

Kuliah III - Dasar Pemrograman

Kuliah III - Dasar Pemrograman 17 September 2013 Kuliah III - Dasar Pemrograman Struktur program dalam bahasa C Kompilasi Variabel Statement : Deklarasi & Assignment statement, Inisialisasi Masukan dan Keluaran Contoh 1. assign.c /*

Lebih terperinci

P3 Pengantar Pemrograman C

P3 Pengantar Pemrograman C P3 Pengantar Pemrograman C A. Sidiq Purnomo Prodi Teknik Informatika & Prodi Sistem Informasi Universitas Mercu Buana Yogyakarta Tujuan Mahasiswa dapat mengetahui dan memahami sejarah bahasa C, struktur

Lebih terperinci

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I

TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I TEORI BAHASA & OTOMATA (PENGENALAN KOMPILASI) PERTEMUAN VI Y A N I S U G I Y A N I MATERI PERTEMUAN V & VI PENGENALAN KOMPILASI - BAHASA PEMROGRAMAN - TRANSLATOR - MODEL KOMPILATOR - ANALISIS LEKSIKAL

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

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa.

SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa. SEMANTIK Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa. Semantik mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut. Semantik suatu bahasa membutuhkan

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

Identifier dan Tipe Data

Identifier dan Tipe Data Identifier dan Tipe Data Identifier Identifier atau pengenal merupakan nama yang biasa digunakan untuk : - Variable - Konstanta bernama - Fungsi - Dll Aturan yang berlaku bagi suatu pengenal secara umum

Lebih terperinci