LA Ke-1

Anda mungkin juga menyukai

Anda di halaman 1dari 40

LAPORAN AKHIR PRAKTIKUM

MATA PRAKTIKUM : TEKNIK KOMPILASI

MATERI PRAKTIKUM : PROCEDURE

PRAKTIKUM KE : 1

TANGGAL : 15 SEPTEMBER 2008

NAMA : NIDYA PERMATA SARI

NPM : 50405517

KELAS : 4IA15

KETUA ASISTEN :

NAMA ASISTEN :

PARAF :

JUMLAH LEMBAR : 39 LEMBAR

LABORATORIUM INFORMATIKA
UNIVERSITAS GUNADARMA
2008
1. Listing Program

Gambar 1.1 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Gambar 1.2 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Nidya Permata Sari 1 50405517


Gambar 1.3 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Gambar1.4 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Nidya Permata Sari 2 50405517


Gambar 1.5 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Gambar 1.6 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Nidya Permata Sari 3 50405517


Gambar 1.7 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Gambar 1.8 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Nidya Permata Sari 4 50405517


Gambar 1.9 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Gambar 1.10 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Nidya Permata Sari 5 50405517


Gambar 1.11 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Nidya Permata Sari 6 50405517


2. Pembahasan Materi Procedure dalam Bahasa Pascal

A. Konsep pemrograman prosedural


Ketika program yang dibuat sudah terlalu panjang ratusan bahkan puluhan ribu
baris, sehingga kita mengalami kesulitan untuk memahami jalannya program secara
keseluruhan, maka ada baiknya bila program tersebut dipecah menjadi beberapa bagian
yang biasanya disebut modul, subprogram atau subrutin. Konsep semacam ini biasa
disebut dengan pemrograman prosedural. Dalam tulisan ini selanjutnya akan digunakan
kata modul supaya lebih ringkas. Turbo Pascal yang digunakan pada percobaan ini
adalah versi 7.0, bila anda menggunakan Turbo Pascal 7.1 maka prosesnya tidak jauh
berbeda.
Memecah program menjadi modul-modul tentunya akan lebih memudahkan
dalam mencari kesalahan, memperbaiki serta membuat dokumentasinya. Pembuatan
modul di Turbo Pascal dibagi dua jenis yaitu : Prosedur dan Fungsi. Prosedur atau
Fungsi adalah suatu modul program yang terpisah dari program utama, diletakan dalam
blok tersendiri yang berfungsi sebagai bagian dari program. Setiap prosedur diawali
dengan kata cadangan (reserver word) Procedure, sedangkan Fungsi diawali dengan
kata cadangan Function.
Prosedur atau Fungsi banyak digunakan pada program terstruktur, karena :
1. Merupakan penerapan konsep modular, yaitu memecah program menjadi modul
modul atau subprogram-subprogam yang lebih sederhana.
2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja
dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

B. Penulisan Prosedur (Procedure)


Prosedur memiliki struktur yang sama dengan struktur program, yaitu terdiri dari
nama prosedur, deklarasi-deklarasi dan bagian deskripsi (statement atau aksi di dalam
prosedur). Semua deklarasi di dalam prosedur bersifat lokal sehingga hanya bisa
digunakan oleh prosedur itu saja, sedangkan deklarasi di dalam program utama bersifat
global sehingga dapat dikenali di seluruh bagian program. Struktur umum prosedur
adalah sebagai berikut :

Nidya Permata Sari 7 50405517


Procedure Nama_Prosedur (param_formal1:tipe_param1,…);
var
{bagian deklarasi prosedur, sifatnya lokal}
begin
statement-1;
statement-2;
…………
Statement-n;
end;

Gambar 2.1 Cara Penulisan Prosedur di dalam Turbo Pascal

Gambar 2.1 Cara Penulisan Prosedur di dalam Turbo Pascal

Struktur blok program utama beserta prosedur, adalah sebagai berikut :

Program judul_program;
var
{bagian deklarasi prosedur, sifatnya global}

Procedure Nama_Prosedur;
{Jika prosedur tidak memiliki parameter, tanda kurung tidak disertakan}
var
{bagian deklarasi prosedur, sifatnya lokal}
begin
statement-1;
statement-2;
…………
Statement-n;
end;

{program utama}
begin
Nama_Prosedur;
end.

Gambar 2.2 Struktur blok program beserta prosedur tanpa parameter

Ketika kita membuat suatu program tanpa prosedur maka seluruh statement
yang terdapat di dalam program utama akan dieksekusi secara beruntun (sequential) dari
atas ke bawah, sedangkan bila menggunakan prosedur, maka program utama hanya akan
mengeksekusi prosedur-prosedur yang dipanggil, bila prosedur tersebut dipanggil di
dalam program utama, jadi bila untuk sementara kita tidak membutuhkannya, maka cara
mudah yang dapat kita lakukan yaitu tidak usah menghapusnya tetapi cukup dengan tidak
memanggilnya di dalam blok program utama.

Nidya Permata Sari 8 50405517


Procedure Prosedur1;
{program utama} begin
2 statement-1;
begin 3 statement-2;
statement-1; ...
1
statement-2; Statement-n;
Prosedur1; end;
4
statement-3;
statement-4; 5
statement-5; 6
Procedure Prosedur2;
Prosedur2; begin
Statement-6; 7 statement-1;
9
statement-n; statement-2;
end. 8 ...
Statement-n;
end;

Gambar 2.3 Arah eksekusi program utama ketika terdapat prosedur, maka akan memanggil prosedur dan
melakasanakan statement yang terdapat di dalam prosedur

C. Parameter
Secara sederhana parameter merupakan variabel yang dituliskan di dalam kurung
setelah nama prosedur atau fungsi. Dalam pembuatan program biasanya diperlukan
pertukaran informasi antara prosedur atau fungsi, serta pada blok progam utama dimana
nama prosedur atau fungsi tersebut dipanggil.
Berdasarkan penulisannya terdapat 2 jenis parameter, yaitu : parameter formal
(formal parameter) dan parameter aktual (actual parameter). Parameter formal adalah
parameter yang disertakan/dituliskan pada saat pendefinisian prosedur/fungsi itu sendiri.
Sedangkan parameter aktual adalah parameter yang disertakan pada saat pemanggilan
prosedur/fungsi tersebut di blok program utama.

Nidya Permata Sari 9 50405517


Berdasarkan tujuannya terdapat 3 jenis parameter formal :
1. Parameter masukan (input parameter), yaitu : parameter yang nilainya berfungsi
sebagai masukan untuk prosedur/fungsi, jenis parameter ini kadang disebut juga
parameter nilai (value parameter atau parameter by value).
2. Parameter keluaran (output parameter), yaitu : parameter yang berfungsi untuk
menampung keluaran yang dihasilkan oleh prosedur.
3. Parameter masukan/keluaran (input/output parameter) adalah parameter yang
berfungsi sebagai “pintu” masuk dan keluar bagi prosedur tersebut. Parameter
keluaran (output parameter) dan parameter masukan/keluaran (input/output parameter)
kadang disebut parameter acuan (reference parameter atau paramater by reference).

D. Passing Parameter
Proses pengiriman data dari parameter aktual ke parameter formal disebut dengan
transfer parameter (passing parameter). Nama Parameter aktual dan parameter formal
boleh berbeda, tetapi harus memiliki tipe data yang sama selain itu juga jumlah parameter
aktual dan parameter formal harus sama. Di Turbo Pascal, parameter dapat
dikirim/ditransfer secara nilai (by value) atau secara acuan (by reference).

E. Pengiriman parameter secara nilai (by value)


Jika parameter dikirim secara nilai (by value), maka parameter formal yang
terletak di dalam pendefinisan prosedur akan berisi nilai yang dikirimkan dari parameter
aktual, yang kemudian bersifat lokal di prosedur tersebut. Bila nilai parameter formal di
dalam prosedur tersebut berubah, maka tidak akan mempengaruhi nilai parameter aktual
(nilai parameter aktual tetap). Pengiriman parameter secara nilai (by value) biasanya
terjadi pada jenis parameter masukan (input parameter).

F. Pengiriman parameter secara acuan (by reference)


Bila parameter dikirimkan secara acuan (by refence), maka perubahan-perubahan
yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai parameter
aktual di blok program utama. Jenis parameter ini dideklarasikan di dalam prosedur
dengan menggunakan kata cadangan var.

Nidya Permata Sari 10 50405517


Pengiriman parameter secara acuan (by refence) biasanya terjadi pada jenis
parameter keluaran (output parameter) dan parameter masukan/keluaran (input/output
parameter). Pengiriman parameter secara acuan (by reference) mempunyai karakteristik
sebagai berikut :
1. Pada saat pengiriman nilai, yang dikirim dari parameter aktual di blok program utama
ke parameter formal di prosedur adalah alamat letak dari nilai datanya bukan.
2. Prosedur/Fungsi yang menerima nilai ini akan menggunakan alamat memori yang
sama dengan nilai aslinya yang digunakan oleh bagian program yang memanggil
fungsi/prosedur tersebut di blok program utama.

Karena menggunakan alamat memori yang sama, maka perubahan nilai di


prosedur/fungsi akan merubah nilai asli di bagian program yang memanggil
prosedur/fungsi tersebut.

Nidya Permata Sari 11 50405517


3. Output Program

Gambar 3.1 Tampilan output program setelah di running

Gambar 3.2 Tampilan output program setelah di running

Nidya Permata Sari 12 50405517


Gambar 3.3 Tampilan output program setelah di running

Gambar 3.4 Tampilan output program setelah di running

Nidya Permata Sari 13 50405517


Gambar 3.5 Tampilan output program setelah di running

Gambar 3.6 Tampilan output program setelah di running

Nidya Permata Sari 14 50405517


Gambar 3.7 Tampilan output program setelah di running

Gambar 3.8 Tampilan output program setelah di running

Nidya Permata Sari 15 50405517


Gambar 3.9 Tampilan output program setelah di running

Gambar 3.10 Tampilan output program setelah di running

Nidya Permata Sari 16 50405517


Gambar 3.11 Tampilan output program setelah di running

Gambar 3.12 Tampilan output program setelah di running

Nidya Permata Sari 17 50405517


Gambar 3.13 Tampilan output program setelah di running

Gambar 3.14 Tampilan output program setelah di running

Nidya Permata Sari 18 50405517


Gambar 3.15 Tampilan output program setelah di running

Gambar 3.16 Tampilan output program setelah di running

Nidya Permata Sari 19 50405517


4. Pembahasan Logika Program

Gambar 4.1 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Baris pertama pada program dimulai uses crt; yang berfungsi untuk mengenali sintaks
dalam bahasa pascal seperti textcolor , textbackground, sound dan lain lain. Juga
memberikan informasi bahwa program tersebut menggunakan unti crt.

Pada baris ketiga kita membuat objek dengan nama berkas. Kemudian membuat 6
procedure dengan nama rekam, baca, tambah, potong, ganti dan warna.

Selanjutnya adalah langkah pendeklarasian variabel yang terdiri dari FileInt, data, n, i,
x, j, F, st, ch, i2 dan n2.

Type Range Format


Shortint -128 ... 127 Signed 8 - bit
Integer - 32768 ... 32767 Signed 16 - bit
Longint -2147483648 ... 2147483647 Signed 32 - bit
Byte 0 ... 255 Unsigned 8 - bit
Word 0 ... 65535 Unsigned 16 - bit

Tabel 4.1 Tipe Data pada Bahasa Pascal

Nidya Permata Sari 20 50405517


ch : array[1..27] of char; Pada contoh Array dengan nama ch telah dideklarasikan
dengan tipe char, dengan jumlah elemen maksimum 27 elemen.

Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen
yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen
type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen
dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses
dengan menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana
seperti byte, word, integer, real, bolean, char, string dan tipe data scalar atau subrange.

Gambar 4.2 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Sekarang kita membuat/men-deklarasikan sebuah procedure dengan memanggil


objek berkas dengan nama procedure rekam. Pertama adalah memulai sintaks dengan
begin dan diakhiri dengan end; clrscr; digunakan untuk membersihkan layar, clrscr
artinya clear screen. Fungsi dari writeln adalah untuk menampilkan output : *** Rekam
Data ***, bisa juga digunakan untuk pindah baris baru. Fungsi sintaks assign adalah
untuk menghubungkan file(DATA.DAT) dengan variabel(FileInt). Setelah file
DATA.DAT di panggil kemudian di tulis ulang record datanya dengan menggunakan
sintaks rewrite.

Nidya Permata Sari 21 50405517


Fungsi sintaks write adalah untuk menampilkan informasi ke monitor bahwa anda
diminta untuk memasukkan data/record pada posisi kursor ada di sebelah kanan. Yang
akan tercetak adalah Jumlah komponen data : . Setelah data/record di masukkan,
kemudian disimpan di dalam variable n yang bertipe data integer dengan sintaks readln.

Setelah data di masukkan dan di simpan, lalu lakukan looping/perulangan dengan


menggunakan for sebanyak n data/record yang dimasukkan, kemudian cetak data ke i
yang mana nilai awal variable i adalah 1.

Setelah dicetak kemudian dibaca sekaligus disimpan dalam variable data dengan
sintaks read. Kemudian memanggil file DATA.DAT yang telah disimpan dalam file
FileInt yang selanjutnya di tulis kedalam variable data dengan sintaks write.

Setelah di panggil, di simpan, di baca dan ditulis … langkah selanjutnya adalah


melakukan pemutusan/menutup file DATA.DAT dengan sintaks close. Kemudian cetak
Selesai, tekan ENTER.

Nidya Permata Sari 22 50405517


Gambar 4.3 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Sekarang kita membuat/men-deklarasikan sebuah procedure dengan memanggil


objek berkas dengan nama procedure baca. Pertama adalah memulai sintaks dengan
begin dan diakhiri dengan end; clrscr; digunakan untuk membersihkan layar, clrscr
artinya clear screen. Fungsi dari writeln adalah untuk menampilkan output : *** Baca
Data ***, bisa juga digunakan untuk pindah baris baru. Fungsi sintaks assign adalah
untuk menghubungkan file(DATA.DAT) dengan variabel(FileInt). Fungsi sintaks reset
adalah untuk membuka file DATA.DAT (Jika file sudah ada).

Kemudian lakukan looping/perulangan data/record yang telah disimpan kedalam


variabel data menggunakan while. Fungsi sintaks eof adalah untuk menge-tes apakah
sebuah file berada di akhir dan mengembalikan nilai hasil tes tersebut. Jika benar maka
nilai akan di kembalikan, jika tidak maka nilai salah yang akan di kembalikan.

Setelah di panggil, di buka kembali, di baca dan ditulis … langkah selanjutnya


adalah melakukan pemutusan/menutup file DATA.DAT dengan sintaks close. Kemudian
cetak Selesai, tekan ENTER.

Nidya Permata Sari 23 50405517


Gambar 4.4 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Sekarang kita membuat/men-deklarasikan sebuah procedure dengan memanggil


objek berkas dengan nama procedure tambah. Pertama adalah memulai sintaks dengan
begin dan diakhiri dengan end; clrscr; digunakan untuk membersihkan layar, clrscr
artinya clear screen. Fungsi dari writeln adalah untuk menampilkan output : ***
Tambah Data ***, bisa juga digunakan untuk pindah baris baru. Fungsi sintaks assign
adalah untuk menghubungkan file(DATA.DAT) dengan variabel(FileInt). Fungsi sintaks
reset adalah untuk membuka file DATA.DAT (Jika file sudah ada). Fungsi sintaks seek
adalah untuk menggeser pointer. Untuk mendapatkan jumlah data selanjutnya maka
lakukan penambahan 1 terhadap jumlah total data dari variabel FileInt. Dimana data
yang dimasukkan akan disimpan kedalam variabel data.

Setelah disimpan datanya, kemudian di tulis dan di simpan kembali kedalam


variabel FileInt.

Setelah itu … langkah selanjutnya adalah melakukan pemutusan/menutup file


DATA.DAT dengan sintaks close, untuk memastikan file tersimpan dengan sempurna.
Kemudian cetak Selesai, tekan ENTER.

Nidya Permata Sari 24 50405517


Gambar 4.5 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Sekarang kita membuat/men-deklarasikan sebuah procedure dengan memanggil


objek berkas dengan nama procedure potong. Pertama adalah memulai sintaks dengan
begin dan diakhiri dengan end; clrscr; digunakan untuk membersihkan layar, clrscr
artinya clear screen. Fungsi dari writeln adalah untuk menampilkan output : *** Potong
Data ***, bisa juga digunakan untuk pindah baris baru. Fungsi sintaks assign adalah
untuk menghubungkan file(DATA.DAT) dengan variabel(FileInt). Fungsi sintaks reset
adalah untuk membuka file DATA.DAT (Jika file sudah ada) terhadap variabel FileInt.

Setelah itu kita diminta untuk memotong data dari komponen keberapa ? setelah
kita memasukkan komponen yang akan kita potong/hapus, maka data/record akan
disimpan kedalam variabel x yang bertipe data integer. Fungsi sintaks seek adalah untuk
menggeser pointer terhadap variabel x ke variabel FileInt. Kemudia data dalam variabel
FileInt kita potong dengan sintaks truncate.

Setelah itu … langkah selanjutnya adalah melakukan pemutusan/menutup file


DATA.DAT dengan sintaks close, untuk memastikan file tersimpan dengan sempurna.
Kemudian cetak Selesai, tekan ENTER.

Nidya Permata Sari 25 50405517


Gambar 4.6 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Sekarang kita membuat/men-deklarasikan sebuah procedure dengan memanggil


objek berkas dengan nama procedure ganti. Pertama adalah memulai sintaks dengan
begin dan diakhiri dengan end; clrscr; digunakan untuk membersihkan layar, clrscr
artinya clear screen. Fungsi dari writeln adalah untuk menampilkan output : *** Ganti
Data ***, bisa juga digunakan untuk pindah baris baru. Fungsi sintaks assign adalah
untuk menghubungkan file(DATA.DAT) dengan variabel(FileInt). Fungsi sintaks reset
adalah untuk membuka file DATA.DAT (Jika file sudah ada) terhadap variabel FileInt.

Kemudian kita diminta memasukkan data komponen keberapa yang akan diganti/diubah,
setelah itu data yang ingin kita ganti di simpan kedalam variabel j, kemudian membuka
pointer kembali dengan sintaks seek terhadap variabel FileInt. Dimana data komponen
yang ingin diganti dikurangi 1. Setelah itu diganti menjadi data/record apa. Kemudian
data/record yang baru disimpan kedalam variebel data. Setelah data simpan kemudian
ditulis dan disimpan kedalam variabel FileInt.

Setelah itu … langkah selanjutnya adalah melakukan pemutusan/menutup file


DATA.DAT dengan sintaks close, untuk memastikan file tersimpan dengan sempurna.
Kemudian cetak Selesai, tekan ENTER.

Nidya Permata Sari 26 50405517


Gambar 4.7 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Sekarang kita membuat/men-deklarasikan sebuah procedure dengan memanggil


objek berkas dengan nama procedure warna. Pertama adalah memulai sintaks dengan
begin dan diakhiri dengan end; clrscr; digunakan untuk membersihkan layar, clrscr
artinya clear screen. Kemudian kita diminta memasukkan banyak huruf yang akan
diwarnai, maksimal adalah 27. Kemudian banyak huruf yang akan diwarnai di simpan
kedalam varibel n2, kemudian cetak output Huruf ==>.

Lakukan looping untuk nilai awal variable i2 sebesar 1 sebanyak nilai variable
n2(variable banyak huruf yang akan diwarnai). Sintaks readkey; berfungsi untuk
pembacaan sebuah karakter dari keyboard. Tipe data yang dihasilkan adalah char.
Sehingga tipe data untuk variablel ch adalah char.

ch[i2] artinya untuk variable ch2 array ke - … ? kemudian cetak nilai array. Jika
nilai variable i2 lebih kecil dari nilai variable n2 cetak -. Fungsi sintaks assign adalah
untuk menghubungkan file(stand.txt) dengan variabel F yang bertipe data text. Fungsi
sintaks reset adalah untuk membuka file stand.txt (Jika file sudah ada) terhadap variabel
F.

Nidya Permata Sari 27 50405517


Lakukan looping/perulangan dengan while dimana nilai variabel i2 = 1 sampai
jumlah banyak huruf yang dimasukkan (variabel n2), didalam looping ini terdapat
kondisi if jika variabel st sama dengan nilai array variabel i2 dari variabel ch, lakukan
pewarnaan textcolor(i2+9). i2+9 artinya warna di random/diacak.

Jika variabel st TIDAK SAMA DENGAN nilai array variabel i2 dari variabel ch,
maka warna tulisan putih. Sintaks delay berfungsi untuk menghentikan sejenak proses
program. Diprogram ini saya kurangi nilai delaynya dari 500 menjadi 50, agar animasi
jalannya tulisan lebih cepat dibanding diberi delay 500.

Gambar 4.8 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Setelah itu … langkah selanjutnya adalah melakukan pemutusan/menutup file


DATA.DAT dengan sintaks close, untuk memastikan file tersimpan dengan sempurna.
Untuk pembacaan sebuah karakter dari keyboard. Tipe data yang dihasilkan adalah char.
Sintaks: readkey;

Nidya Permata Sari 28 50405517


Gambar 4.9 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Selanjutnya saya membuat 2 variabel global yaitu oberkas dan pil, bersifat global
sehingga dapat dikenali baik di program utama maupun didalam masing-masing
procedure.

Varibel oberkas berisi objek yang telah dibuat di awal-awal program, yaitu
dengan nama berkas. Untuk variabel pil bertipe data char.

Kemudian lakukan looping/perulangan dengan repeat … until. Repeat – Until


digunakan untuk mengulang statement-statemen atau blok statement sampai (Until)
kondisi yang diseleksi di Until tidak terpenuhi. Untuk kondisi variable pil sampai 7
pilihan.

clrscr; digunakan untuk membersihkan layar, clrscr artinya clear screen. Dari
Gambar 4.9 jelas akan tercetak output yang berada diantara tanda kutip buka dan kutip
tutup (’ … ’);

Untuk menempatkan posisi kursor pada layar. Sintaks: gotoxy(18,11);


Keterangan : 18 = sumbu X (posisi horisontal) dan 11 = sumbu Y (posisi vertikal).

Nidya Permata Sari 29 50405517


Gambar 4.10 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Setelah kita memilih Menu Yang Tersedia dari 1 sampai 7, maka akan disimpan
dalam variable pil.

Struktur Case – Of mempunyai suatu ungkapan logika yang disebut dengan


selector dan sejumlah statemen yang diawali dengan suatu label permasalahan (case
label) yang mempunyai tipe sama dengan selector. Statement yang mempunyai case label
yang bernilai sama dengan case label yang bernilai sama dengan nilai selector akan
diproses sedang statemen yang lainya tidak. Daftar Case label dapat berupa konstanta,
range dari konstanta yang bukan bertipe real.

Bentuk struktur dari Case - Of:


Case Variabel Kondisi Of
Case – Label 1; Statement 1;
Case – Label 2; Statement 2;
……
……
Case – Label n ; Statement n ;
End ; { end dari case }

Nidya Permata Sari 30 50405517


Gambar 4.11 Tampilan di Editor Turbo Pascal 7, Program Menu menggunakan Procedure

Jika yang dipilih 1, maka angka 1 akan di simpan dalam variable pil, kemudian
akan di seleksi, jika nilai variable pil sama dengan 1 maka jalankan Procedure
berkas.rekam

Jika yang dipilih 2, maka angka 2 akan di simpan dalam variable pil, kemudian
akan di seleksi, jika nilai variable pil sama dengan 2 maka jalankan Procedure
berkas.baca






Dan seterusnya sampai kondisi until nya terpenuhi yakni maksimal pil ke 7. end.
Menunjukkan program telah selesai.

Nidya Permata Sari 31 50405517


5. Pembahasan Materi Analisa Leksikal

Dalam kaitan ini aliran karakter yang membentuk program sumber dibaca dari
kiri ke kanan dan dikelompokkan dalam apa yang disebut token yaitu barisan dari
karakter yang dalam suatu kesatuan mempunyai suatu arti tersendiri. Analisa ini
melakukan penerjemahan masukan menjadi bentuk yang lebih berguna untuk tahap-tahap
kompilasi berikutnya.
Analisa Leksikal merupakan antarmuka antara kode program sumber dan analisa
sintaktik (parser). Scanner melakukan pemeriksaan karakter per karakter pada teks
masukan, memecah sumber program menjadi bagian-bagian disebut Token. Analisa
Leksikal mengerjakan pengelompokkan urutan-urutan karakter ke dalam komponen
pokok: identifier, delimeter, simbol-simbol operator, angka, keyword, noise word, blank,
komentar, dan seterusnya menghasilkan suatu Token Leksikal yang akan digunakan pada
Analisa Sintaktik. Model dasar untuk membentuk suatu Analisa Leksikal adalah Finite-
State Automata.
Dua aspek penting pembuatan Analisa Leksikal adalah :
- Menentukan token-token bahasa.
- Mengenali token-token bahasa dari program sumber.
Token-token dihasilkan dengan cara memisahkan program sumber tersebut
dilewatkan ke parser. Analisa Leksikal harus mengirim token ke parser. Untuk mengirim
token, scanner harus mengisolasi barisan karakter pada teks sumber yang merupakan 1
token valid. Scanner juga menyingkirkan informasi seperti komentar, blank, batas-batas
baris dan lain-lain yang tidak penting (tidak mempunyai arti) bagi parsing dan Code
Generator.
Scanner juga harus dapat mengidentifikasi token secara lengkap dan membedakan
keyword dan identifier. Untuk itu scanner memerlukan tabel simbol. Scanner
memasukkan identifier ke tabel simbol, memasukkan konstanta literal dan numerik ke
tabel simbol sendiri setelah konversi menjadi bentuk internal.

Nidya Permata Sari 32 50405517


Analisa Leksikal merupakan komponen kompilasi independen yang
berkomunikasi dengan parser lewat antarmuka yang terdefinisi bagus dan sederhana
sehingga pemeliharaan analisa leksikal menjadi lebih mudah dimana perubahan-
perubahan terhadap analisa leksikal tidak berdampak pada pengubahan kompilator secara
keseluruhan. Agar dapat memperoleh fitur ini, maka antarmuka harus tidak berubah.
Kebanyakan kode yang menyusun analisa leksikal adalah sama untuk seluruh kompilator,
tidak peduli bahasa.
Pada analisa leksikal yang dituntun tabel (table-driven lexical analyzer), maka
satu-satunya yang berubah adalah tabel itu sendiri. Kadang diperlukan interaksi analisa
leksikal dan analisa sintaktik yang lebih kompleks. Sehingga analisa leksikal harus dapat
menganggap string sebagai token bertipe, bukan identifier. Untuk itu perlu komunikasi
tingkat lebih tinggi yang biasanya dilakukan suatu struktur data dipakai bersama seperti
tabel simbol.
Analisa Sintaktik dapat memasukkan string ke tabel simbol, mengidentifikasi
sebagai Type atau typedef, sehingga analisa leksikal dapat memeriksa tabel simbol untuk
menentukan apakah lexeme adalah tipe token atau identifier.

Tugas – tugas analisa leksikal antara lain :


a. Melakukan pembacaan kode sumber dengan merunut karakter demi karakter.
b. Mengenali besaran leksik (identifier, keywords, dan konstanta).
c. Mentransformasi menjadi sebuah token dan menentukan jenis tokennya.
d. Mengirimkan token.
e. Membuang atau mengabaikan white-space dan komentar dalam program.
f. Menangani kesalahan.
g. Menangani tabel simbol.

Nidya Permata Sari 33 50405517


Tahap Pelaksanaan Analisa Leksikal :
- Pada single one pass
Terjadi interaksi antara scanner dan parser. Scanner dipanggil saat parser
memerlukan token berikutnya. Pendekatan ini lebih baik karena bentuk internal
program sumber yang lengkap tidak perlu dibangun dan disimpan di memori
sebelum parsing dimulai.

Gambar 5.1. Skema Single One Pass


- Pada separate pass / multi pass
Scanner memproses secara terpisah, dilakukan sebelum parsing. Hasil scanner
disimpan dalam file. Dari file tersebut, parsing melakukan kegiatannya. Scanner
mengirim nilai-nilai integer yang mempresentasikan bentuk internal token, bukan
nilai-nilai string. Keunggulan cara ini adalah ukurannya kecil dan tetap. Parser
sangat lebih efisien bekerja dengan nilai integer yang mempresentasikan simbol
daripada string nyata dengan panjang variabel.

Gambar 5.2. Skema Separate Pass

Nidya Permata Sari 34 50405517


Implementasi Analisa Leksikal :
a. Pengenalan Token
- Scanner harus dapat mengenali token
- Terlebih dahulu dideskripsikan token-token yang harus dikenali
b. Pendeskripsian Token
- Menggunakan reguler grammar. Menspesifikasikan aturan-aturan pembangkit
token-token dengan kelemahan reguler grammar menspesifikasikan token
berbentuk pembangkit, sedang scanner perlu bentuk pengenalan.
- Menggunakan ekspresi grammar. Menspesifikasikan token-token dengan
ekspresi reguler.
- Model matematis yang dapat memodelkan pengenalan adalah finite-state
acceptor (FSA) atau finite automata.
c. Implementasi Analisa Leksikal sebagai Finite Automata
Pada pemodelan analisa leksikal sebagai pengenal yang menerapkan finite
automata, analisa leksikal tidak cuma hanya melakukan mengatakan YA atau
TIDAK. Dengan demikian selain pengenal, maka analisa leksikal juga melakukan
aksi-aksi tambahan yang diasosiasikan dengan string yangsedang diolah. Analisa
leksikal dapat dibangun dengan menumpangkan pada konsep pengenal yang
berupa finite automata dengan cara menspesifikasikan rutin-rutin (aksi-aksi)
tertentu terhadap string yang sedang dikenali.
d. Penanganan Kesalahan di Analisa Leksikal
Hanya sedikit kesalahan yang diidentifikasi di analisa leksikal secara mandiri
karena analisa leksikal benar-benar merupakan pandangan sangat lokal terhadap
program sumber. Bila ditemui situasi dimana analisa leksikal tidak mampu
melanjutkan proses karena tidak ada pola token yang cocok, maka terdapat
beragam alternatif pemulihan, yaitu:
- "Panic mode" dengan menghapus karakter-karakter berikutnya sampai analisa
leksikal menemukan token yang terdefinisi bagus
- Menyisipkan karakter yang hilang
- Mengganti karakter yang salah dengan karakter yang benar
- Mentransposisikan 2 karakter yang bersebelahan.

Nidya Permata Sari 35 50405517


Salah satu cara untuk menemukan kesalahan-kesalahan di program adalah
menghitung jumlah transformasi kesalahan minimum yang diperlukan untuk
mentransformasikan program yang salah menjadi program yag secara sintaks
benar.

Nidya Permata Sari 36 50405517


6. Listing Program Implementasi Analisa Leksikal

Gambar 6.1 Setelah File LEKS_4.PAS di running

Gambar 6.2 Setelah File LEKS_4.PAS di running

Nidya Permata Sari 37 50405517


7. Logika Program

Algoritma Polindrom :
1.deklarasikan kal[], i, balik[], x
2.input kal[]
3.hitung panjang kal[] masukkan dalam x
4.looping dengan awalan 1,diakhiri pada x+1, dengan pengendali looping i++
5.masukkan kal[i-1] dalam balik[x-1]
6.cetak balik
7.apakah balik[]=kal[]
8.jika ya cetak polindrom, jika tidak cetak tidak polindrom

Gambar 7.1 Flowchart Program Polindrom

Nidya Permata Sari 38 50405517


8. Output Program

Gambar 8.1 Output Kata Yang Dimasukkan Tidak Polindrom

Gambar 8.2 Output Kata Yang Dimasukkan Termasuk Polindrom

Nidya Permata Sari 39 50405517

Anda mungkin juga menyukai