Anda di halaman 1dari 69

Bahasa Pemrograman Pascal

Teknologi Digital
Komputer yang kita gunakan sekarang ini dibangun berdasarkan teknologi digital. Disebut digital karena semua proses yang dilakukan oleh komputer pada dasarnya hanyalah memproses data yang berupa 0 dan 1. Dari sinilah kata digital berasal, karena data yang digunakan oleh komputer berdasarkan bilangan berbasis 2 atau disebut bilangan biner yang hanya single digit. Di kehidupan manusia basis bilangan yang digunakan adalah bilangan basis 10 atau decimal yaitu bilangan mulai 0 s/d 9. Untuk komputer basis bilangan yang digunakan pada dasarnya adalah basis 2 (biner), tetapi basis 10, basis 8(octal) dan basis 16(heksadesimal) juga digunakan untuk memudahkan manusia. Basis 8 adalah Basis 16 menggunakan bilangan 0 s/d F yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Nilai suatu bilangan sebenarnya merupakan penjumlahan dari perkalian nilai absolute dengan nilai basis pangkat posisi digitnya contoh untuk decimal atau basis 10 yaitu 100, 101,102 dst. Demikian juga biner 20,21,22, dst, heksadesimal 160,161,162 dst. Biner Posisi Digit 1 2 3 4 5 Dst. 2 =1 21=2 22=4 23=8 24=16
0

Desimal Nilai Posisi Digit 1 2 3 4 5 10 =1 101=10 102=100 103=1000


0

Heksadesimal Posisi Digit 1 2 3 4 160 =1 161=16 162=256 163=4096 164=65536 Nilai

Nilai

104=10000 5

Contoh :

234 desimal : 2 x 102 + 3 x 101 + 4 x100 = 200 + 30 + 4 =234 Nilai Absolute Nilai Posisi

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

Konversi Bilangan Setiap basis bilangan bisa saling dikonversikan satu sama lain. Berikut ini adalah konversi dari 4 basis bilangan tersebut. DEC 0 1 2 3 4 5 6 7 8 9 OCT 0 1 2 3 4 5 6 7 10 11 HEX 0 1 2 3 4 5 6 7 8 9 BIN 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 DEC 10 11 12 13 14 15 16 17 18 Dst OCT 12 13 14 15 16 17 20 21 22 HEX A B C D E F 10 11 12 BIN 1010 1011 1100 1101 1110 1111 10000 10001 10010

Salah satu cara yangdigunakan adalah metode sisa (remainder method), dimana bilangan yang akan dikonversi di bagi dengan basis bilangan konversi kemudian diambil sisanya sampai tidak dapat dibagi lagi. Desimal ke Biner Contoh : Bilang 148 akan di konversi ke bilangan biner

148 : 2 = 74 74 37 18 9 4 2 1 : 2 = 37 : 2 = 18 :2 = 9 :2 = 4 :2 = 2 :2 = 1 :2 = 0

sisa 0 sisa 0 sisa 1 sisa 0 sisa 1 sisa 0 sisa 0 sisa 1 1 0 0 1 0 1 0 0

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

Desimal ke Octal Contoh : Bilang 216 akan di konversi ke bilangan octal

216 : 8 = 27 27 3 :8 = 3 :8 = 0

sisa 0 sisa 3 sisa 3

3 3 0
Desimal Ke Heksadesimal Contoh : Bilang 305 akan di konversi ke bilangan heksadesimal

305 : 16 = 19 19 1 : 16 = 1 : 16 = 0

sisa 1 sisa 3 sisa 1

1 3 1
Bilangan Biner Seperti yang sudah dijelaskan sebelumnya bahwa Nilai suatu bilangan sebenarnya merupan perkalian dari nilai absolute dengan nilai basis pangkat posisi digitnya. Untuk bilangan biner nilai posisinya bisa dijabarkan seperti ini : Dst .. 210 29 28 27 26 25 24 23 22 21 20 4 2 1

1024 512 256 128 64 32 16 8

Dari nilai posisi tersebut bisa dimengerti bahwa bilangan octal pada dasarnya adalah bilangan yang bisa diterjemahkan ke dalam 3 digit atau 3 bit biner karena maksimal bilangan octal adalah 7 (4+2+1) sedangkan bilangan heksa adalah bilangan yang bisa diterjemahkan ke dalam 4 digit atau 4 bit biner karena maksimal bilangan heksa adalah 15 (8+4+2+1). Contoh :

138 = 001 1

011 3

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

Contoh :

4F16 = 0100 4

1111 F

Konversi ke Desimal, Oktal dan Heksadesimal Konversi antar bilangan decimal, octal dan heksa bisa juga dilakukan dengan mengkonversi terlebih dahulu ke biner. Contoh :

35610 = 1011001002 = 0010 1100 0100 = 2C416 2 C 4 = 101 100 100 = 5448 5 4 4

Operasi Bilangan Operasi bilangan dalam dunia komputer bisa berupa operasi aritmatika bisa juga operasi logika. Operesai baik biner, oktal, desimal dan heksadesimal dilakukan dengan cara yang sama. Contoh : Penjumlahan Bilangan Biner : 0+ 1 = 1 0 dengan carry 1 10 karena bilangan terbesar biner adalah 1. 1 + 1 = 10 10011 100100 ------------+ 110111 Bilangan Oktal : 2 + 3 =5 7 + 1 = 10 137 426 -------+ 565 Dst..sama untuk bilangan desimal dan heksadesimal karena digit terbesar adalah 7.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

Perkalian Perkalian bilangan biner menganut prinsip yang sama dengan basis bilangan yang lain. Contoh : 0x0=0 0x1=0 1x0=0 1x1=1 Operasi Logika Operasi logika dalam dunia digital hanya bisa dilakukan pada bilangan biner. Bilangan desimal, oktal dan heksa harus dirubah terlebih dahulu ke dalam biner sebelum dilakukan operasi logika. Operator yang berlaku pada operasi logika antara lain AND, OR, XOR (Exclusive OR), SHR (Shift Right/Geser Kanan) & SHL (Shift Left/Geser Kiri) Berikut ini Tabel Kebenaran dari operasi-operasi logika : A 0 0 1 1 B 0 1 0 1 AND 0 0 0 1 A 0 0 1 1 B 0 1 0 1 OR 0 1 1 1

110 010 ------x 000 110 000 ----------+ 01100

A 0 0 1 1

B 0 1 0 1

XOR 0 1 1 0

A 0 1

NOT 1 0

Operasi SHR & SHL Untuk operasi geser kiri maupun kanan. Digit biner terlebih dahulu digeser sesuai dengan jumlah pergeserannya. Kemudian digit yang ditinggalkan diganti dengan 0. Contoh : 1810 SHL 2 2148 SHR 3 dirubah ke biner dirubah ke biner 10010 SHL 2 01000 SHR 3 000001000010 001000010100

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

Satuan Data Data biner tidak bisa dioolah secara mandiri. Data tersebut harus berkaitan dengan data yang lain sehingga membentuk sebuah informasi atau instruksi. Komputer mengenali data terkecil 1 digit biner yang disebut bit yaitu kependekan dari binary digit. Bit-bit tersebut dikelompokkan menjadi byte yang berisi 8 bit. Satuan byte ini nanti yang akan merepresentasikan setiap karakter/huruf dan angka bagi komputer. ASCII ASCII adalah kependekan dari American National Standard Code for Information Interchange. ASCII membuat penomoran karaktrer/huruf, angka dan tanda baca. Misalnya huruf a kode ASCIInya adalah 65. Setiap 1 karakter ASCII menempati 1 byte memori. Sehingga kalimat `Aku Orang Indonesia (tanpa petik) dihitung 19 byte. Untuk melihat kode ASCII bisa menggunakan Character Map pada Windows.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

KONSEP PEMROGRAMAN KOMPUTER Terminologi


Algoritma adalah urutan langkah--angkah sistematis yang terkait pada pemecahan suatu masalah; didalamnya bisa terdapat sejumlah variabel, perintah, ekspresi & assignment, struktur kendali aliran (control flow) dari algoritma, serta definisi fungsi/prosedur. Pseudocode adalah suatu cara penulisan algoritma agar ide dan logika dari algoritma dapat disampaikan/diekspersikan. Program komputer atau kita singkat dengan kata program (istilah lainnya code) adalah susunan perintah-perintah dan operasi-operasi yang mengimplementasikan algoritma tertentu disertai yang ditulis dalam bahasa pemrograman tertentu. Bahasa pemrograman adalah bahasa yang di dalamnya terdapat aturan penulisan program. Bahasa Pascal adalah salah satu bahasa pemrograman, dan saat ini terdapat sejumlah versi dari bahasa Pascal diantaranya: Ansi Pascal, Turbo Pascal, Free Pascal, dlsb. Pesudocode Pascal adalah pseudocode yang menggunakan (mengadopsi) beberapa notasi Bahasa Pascal berikut struktur penulisan programnya. Komputer merupakan benda yang bodoh yang hanya bisa menjalankan instruksi dalam bahasa mesin, bukan bahasa manusia. Komputer yang pertama diprogram langsung dengan menuliskan bahasa mesin ke dalam komputer, seiring berlalunya waktu, hal itu dirasakan tidak efisien sehingga diciptakanlah bahasa assembly, berupa kata-kata singkat yang lebih mudah diingat dibanding dengan kode yang harus dimasukkan langsung. Bahasa assembly sebenarnya tidak jauh dari bahasa mesin namun sudah cukup untuk membantu programmer menulis program dengan lebih mudah. Bahasa assembly ini disebut sebagai bahasa tingkat rendah. Pada tahun enampuluhan, para ahli mulai banyak membuat bahasa yang lebih mudah dimengerti oleh manusia, bahasa tersebut disebut sebagai bahasa tingkat tinggi. Ada banyak bahasa yang diciptakan, bahkan sangat banyak, namun sedikit yang bertahan hingga saat ini. Tapi semua bahasa

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

tersebut memiliki kesamaan yaitu bahwa mereka tidak bisa langsung dimengerti oleh computer sehingga perlu diterjemahkan ke dalam bahasa mesin. Penerjemahan dapat dilakukan dengan menggunakan program (yang pada awalnya dulu ditulis dengan bahasa assembly) yang bisa berupa sebuah interpreter atau sebuah kompilator (atau gabungan dari keduanya). Program penerjemah tersebut akan memeriksa sintaks (format penulisan) apakah benar atau tidak, lalu menerjemahkan program tersebut ke dalam bahasa mesin. Interpreter Interpreter adalah suatu program komputer yang mampu menerjemahkan program dari bahasa tingkat tinggi yang dimengerti oleh manusia dan langsung menjalankan program tersebut. Kerja interpreter seperti penerjemah untuk turis yang langsung menerjemahkan kalimat demi kalimat yang dikatakan oleh sang turis. Setiap kali kita membutuhkan program tersebut, maka interpreter akan bekerja menerjemahkan program dari bahasa tingkat tinggi ke bahasa mesin untuk dieksekusi. Jadi siklus kerja ketika kita membuat program dengan interpreter adalah: tulis/edit program, eksekusi. Kompilator Kompilator adalah suatu program komputer yang membaca seluruh program dari bahasa tingkat tinggi yang dimengerti oleh manusia dan kemudian menerjemahkan keseluruhan program tersebut dalam bahasa mesin. Program yang sudah diterjemahkan tersebut akhirnya akan dijalankan oleh komputer. Kerja kompilator seperti penerjemah buku yang akan menerjemahkan seluruh buku sekaligus, sehingga setiap orang bisa mengerti makna buku dalam bentuk terjemahannya. Kompilator hanya perlu bekerja sekali saja menerjemahkan bahasa tingkat tinggi ke bahasa mesin, dan jika kita membutuhkan kembali program tersebut, kita hanya perlu menjalankannya, kompilator tidak perlu bekerja lagi. Jadi siklus kerja jika kita memakai kompilator adalah: tulis/edit program, kompilasi, eksekusi.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

Kompilator vs Interpreter Apakah suatu bahasa diinterpretasi atau dikompilasi bergantung pada ketersediaan interpreter atau kompilator untuk bahasa tersebut. Sebagai contoh, kita tidak dapat mengatakan bahwa bahasa BASIC adalah bahasa yang diinterpretasi, karena ada juga kompilator untuk bahasa BASIC. Interpreter dan kompilator masing-masing memiliki keuntungan dan kerugian. Kelebihan interpreter adalah Pengembangan program lebih cepat, tidak perlu melakukan kompilasi yang mungkin butuh waktu lama, namun kerugiannya setiap kali program perlu dijalankan, interpreter harus bekerja lagi, sehingga kecepatan eksekusi program menjadi kurang jika dibanding dengan kompilator. Sebaliknya penggunaan kompilator memungkinkan kita membentuk program yang dapat langsung dijalankan dengan cepat (karena sudah dalam bahasa mesin), namun dibutuhkan waktu yang relative lama dalam pengembangan programnya. Kompilator + Interpreter Meskipun tidak terlalu penting dalam pembahasan buku ini, namun perlu diketahui bahwa ada bahasa yang dikompilasi namun tidak ke dalam bahasa mesin (ke bahasa antara), lalu diinterpretasi oleh suatu interpreter untuk menjalankannya. Sebagian pekerjaan interpreter (memvalidasi program) sudah dilakukan oleh kompilator, sehingga interpreter hanya perlu mengeksekusi program saja. Contoh bahasa yang menggunakan pendekatan ini adalah: Java, C#, dan VB.NET Debugger Kesalahan pertama yang ditemukan pada salah satu komputer pertama (yang saat itu masih sangat besar) adalah karena adanya serangga/kutu (bug) yang menyebabkan komputer tidak bekerja. Sejak saat itu semua kesalahan, baik di bidang hardware maupun software komputer disebut dengan bug (istilah ini lebih umum di bidang software dibanding hardware). Proses untuk menemukan kesalahan program disebut juga dengan proses pencarian bug (istilah proses ini adalah debug). Dalam pencarian kesalahan ini terkadang diperlukan program pembantu yang dinamakan debugger. Program ini akan membantu

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

Bahasa Pemrograman Pascal

programmer untuk melihat bagaimana eksekusi program dilakukan oleh komputer, dan melihat kesalahan yang mungkin ada ketika program sedang berjalan. Editor, Kompilator, dan IDE Untuk memasukkan program ke dalam komputer, kita perlu tools yang dinamakan editor. Editor adalah program yang mampu menerima teks dari manusia, dan menyimpannya ke dalam bentuk digital yang dimengerti komputer. Editor juga memungkinkan kita melakukan koreksi terhadap pengetikan yang kita lakukan (menghapus teks, menyalin teks, dan lain-lain). Untuk menjalankan program yang sudah kita ketikkan, kita akan membutuhkan kompilator atau interpreter. Pada bahasa Pascal, kompilator lebih umum dipakai. Perlu diperhatikan bahwa editor dan kompilator adalah dua program yang terpisah dan berbeda. Sebuah IDE (Integrated Development Environment) adalah program yang

menggabungkan fungsi editor dan kompilator (serta terkadang debugger) dalam satu paket. IDE saat ini semakin populer, bahkan banyak orang yang menyangka bahwa IDE sama dengan Kompilator. Sebuah IDE mungkin saja sekaligus memiliki fungsi kompilator, tapi tidak selalu demikian, terkadang IDE hanya menyediakan fungsi editor, dan akan memanggil kompilator yang sesungguhnya ketika kita akan mengkompilasi program. Aneka Implementasi Kompilator Pascal Sama seperti mobil, yang memiliki fungsi yang sama namun memiliki banyak merk, saat ini ada banyak merk kompilator. Setiap kompilator ini memiliki fungsi yang sama namun memiliki perbedaan dalam hal detailnya. Perbedaan kompilator ini ada karena beberapa hal: Perbedaan sistem operasi menyebabkan sifat kompilator berbeda Kurang detailnya standar bahasa Pascal menyebabkan interpretasi yang berbeda terhadap standar Pascal. Masing-masing pembuat kompilator menambahkan fitur di luar standar Pascal untukmempermudah pembuat program Secara umum, semua fitur standar bahasa

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

10

Bahasa Pemrograman Pascal

Pascal akan didukung oleh aneka kompilator yang ada saat ini. Jika Anda terkadang menemukan ada program yang tidak berjalan di suatu sistem operasi atau di suatu kompilator tertentu, maka Anda perlu memeriksa apakah program yang Anda buat memenuhi standar Pascal.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

11

Bahasa Pemrograman Pascal

BAHASA PASCAL
Sejarah perkembangan Pascal dimulai pada tahun 1960, yaitu ketika bahasa pemrograman ALGOL 60 digunakan sebagai algorithmic language yang digunakan untuk memecahkan masalah sehari-hari dengan menggunakan komputer. Nama Pascal sendiri diambil dari nama seorang ahli matematika dan ilmu pengetahuan bangsa Perancis, yaitu Blaise Pascal (1623-1662). Niklaus Wirth dari Sekolah Teknik Tinggi Zurich - Swiss, menjadi terkenal sebagai perancang bahasa Pascal, compiler pertama yang dilaksanakan pada tahun 1970, kemudian direvisi pada tahun 1973 bersama K. Jensen. Kemudian pada tahun 1983 bahasa Pascal dapat dibakukan secara resmi dengan adanya Pascal Standard dari ISO. Keunggulan bahasa Pascal adalah keteraturan dalam pembuatan program dan kelengkapan struktur data. Contoh program dalam bahasa Pascal:
PROGRAM CariMin; {Mencari Bilangan terkecil dari dua buah bilangan} VAR x,y,min:integer; BEGIN WRITE(Bilangan pertama : );READLN(x); WRITE(Bilangan kedua : );READLN(y); IF x>y THEN Min:=y ELSE Min:=x; WRITE(Bilangan terkecil : ,min); END.

Sebelum membahas dengan detail tentang bahasa Pascal, perlu diketahui terlebih dulu struktur program dalam bahasa Pascal. Bentuk ini harus dipenuhi agar program dapat dikompilasi oleh compiler. Struktur Bahasa Pascal Bentuk umum bahasa Pascal adalah sebagai berikut: PROGRAM CONST VAR TYPE LABEL FUNCTION nama(file1,file2,file3); deklarasikonstanta; deklarasivariabel; deklarasitype; deklarasilabel; deklarasifungsi;

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

12

Bahasa Pemrograman Pascal

PROCEDURE deklarasiprosedur; BEGIN statement1; statement2; statement3; ... END. Program Pascal terdiri dari 3 bagian pokok, yaitu: Nama Program Nama program adalah hanya sekedar menuliskan judul dari program, tidak mempunyai arti apa-apa dalam proses kompilasi. Judul program dapat diikuti oleh file-file data yang berhubungan dengan program tersebut.Pada Turbo Pascal, dapat ditambahkan klausa uses yang menunjukkan bahwa program menggunakan unit. Deklarasi Bagian ini berisi deklarasi pengenal maupun data yang dipergunakan di dalam program. Walaupun tampaknya membuang-buang waktu dan tidak berguna, namun sesungguhnya merupakan bagian terpenting dari rangka penyusunan sebuah program yang terstruktur. Struktur program sangat penting dalam pembuatan program yang panjang, karena bagian ini akan mengingatkan programmer tentang variabel, tipe data, konstanta, fungsi, prosedur yang digunakan dalam program. Selain itu, orang lain yang membaca program akan lebih dapat mengerti jalannya program dengan deklarasi ini. Program utama Program utama berisi statement. Tentang statement akan dibahas pada bab selanjutnya. Deklarasi program Bagian deklarasi ada 6 macam, yaitu: 1. Deklarasi CONST Deklarasi ini gunanya untuk mendeklarasikan nama konstanta tertentu. Nama konstanta adalah merupakan suatu pengenal (identifier) yang nilainya tidak dapat berubah dalam program. Contoh: CONST Pi=3.14 Titikkoma=;

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

13

Bahasa Pemrograman Pascal

2. Deklarasi VAR Deklarasi ini gunanya adalah untuk menyatakan variabel yang digunakan dalam program. Variabel adalah suatu pengenal (identifier) yang nilainya dapat berubah. Contoh: VAR Nilai : Integer; Begin Write(Masukkan Nilai :);Readln(Nilai); If Nilai<55 Then Write(Anda Tidak Lulus) Write(Selamat! Anda Lulus); End. 3. Deklarasi TYPE Deklarasi type dipergunakan untuk menyusun suatu bentuk tipe data yang baru sebagai hasil penggabungan dari tipe-tipe yang sudah ada. Contoh: TYPE Hari=(Minggu,Senin, Selasa, Rabu, Kamis, Sabtu); VAR HariKerja:Hari; BEGIN HariKerja:=Minggu; If Harikerja=Senin Then Write(Mulai Kerja); END. 4. Deklarasi LABEL Deklarasi label menjelaskan adanya label atau tujuan yang bisa melompatkan jalannya program dengan statement goto. 5. Deklarasi FUNCTION Function adalah bagian dari program yang melakukan tugas tertentu dan menghasilkan suatu nilai. Sintaks penulisan: function namafunction:tipehasil; Atau function namafunction(daftarparameter):tipehasil; Jumat, Else

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

14

Bahasa Pemrograman Pascal

Contoh fungsi untuk mendapatkan nilai perpangkatan dari suatu bilangan. Dalam Pascal tidak dikenal fungsi untuk pangkat. Function Pangkat(top,number:integer) : real; begin Pangkat := Trunc(Exp(number*Ln(top))); end;

begin writeln(Pangkat(4,3)); {Menghitung 4^3} end. 6. Deklarasi PROCEDURE Procedure adalah bagian dari program yang melakukan aksi tertentu, seringkali aksi tersebut dilakukan berdasarkan parameter. Sintaks penulisan: procedure namafunction; Atau procedure namafunction(daftarparameter); Contoh: procedure WrStr(X, Y: integer; S: string); var SaveX, SaveY: Integer; begin SaveX := WhereX; SaveY := WhereY; GotoXY(X, Y); Write(S); GotoXY(SaveX, SaveY); end; begin WrStr(10,20,This is text); end. Aturan penulisan program Pascal Suatu bahasa pemrograman selalu mempunyai aturan penulisan program. Hal ini menunjukkan konsistensi kompiler dalam melakukan proses kompilasi. Aturan pada program Pascal adalah sebagai berikut: Program pascal dapat ditulis pada kolom berapa saja dan diakhiri pada kolom berapa saja. Antar statement / perintah dipisahkan dengan tanda ; (titik koma)

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

15

Bahasa Pemrograman Pascal

Akhir dari sebuah program Pascal ditandai dengan tanda . (titik) setelah perintah END. Semua statement / perintah setelah END. tidak akan dianggap sebagai perintah. Spasi antar pengenal (identifier) diabaikan. Baris komentar diletakkan di antara tanda (* dan *) atau { dan }. Baris komentar tidak akan dieksekusi oleh komputer. Baris komentar biasanya dipergunakan untuk memberikan penjelasan-penjelasan guna memperjelas pengertian variabel atau tipe atau perintah dalam sebuah program. Simbol (Symbols) Pascal mengenal simbol-simbol yang dapat digunakan dalam program, yaitu: huruf digit digit heksadesimal Karakter khusus Pasangan karakter Pascal. Kata tercadang (Reserved Words) Kata tercadang adalah bagian dari bahasa Pascal dan tidak dapat dipakai untuk kegunaan lain dalam program (tidak dapat didefinisikan ulang). Kata tercadang ini tidaklah case sensitive, artinya for akan sama dengan FOR. Berikut adalah perbandingan kata tercadang dalam Turbo Pascal dan free pascal: Free Pascal A B C D E F G Absolute, and, array,asm Begin,break Case,const,constructor,continue Destructor,div,do,downto,dispose Else,end,exit File,for,function,false goto Turbo Pascal Absolute, and, array,asm Begin,break Case,const,constructor,continue Destructor,div,do,downto,dispose Else,end File,for,function Goto : A..Z , a..z : 0..9 : 0..9, A..F, a..f :+-*/=<>[].,():^@{}$# : <= >= := (* *)

Selain dari karakter-karakter di atas, adalah karakter yang tidak dikenali oleh bahasa

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

16

Bahasa Pemrograman Pascal

I L M N O P R S T U V

If,implementation,in,inherited,inline,interf ace label mod Nil,not,new Object,on,of,operator,or Packed,procedure,program Record,repeat Self,set,shl,shr,string Then,to,type,true Unit,until,uses var

If,implementation,in,inherited,inline,interf ace label Mod Nil,not Object,on,of,operator,or Packed,procedure,program Record,repeat Self,set,shl,shr,string Then,to,type Unit,until,uses Var While,with xor

W While,with X xor

Pengenal (Identifier) Identifier adalah nama yang diberikan untuk elemen -elemen dalam Pascal. Misalnya nama prosedur, nama tipe, nama fungsi, nama variabel dan nama label. Identifier ini harus dideklarasikan terlebih dulu agar dapat dikenali. Syarat-syarat penamaan sebuah identifier adalah: 1. Dapat sepanjang apapun, namun Turbo Pascal akan mengambil 63 karakter pertama dari nama identifier 2. HARUS diawali dengan huruf atau underscore (_) 3. Karakter ke dua dan selanjutnya dapat berupa huruf, angka, atau underscore 4. Tidak boleh ada 2 identifier yang sama dalam satu program 5. Tidak boleh berupa reserved word . Reserved Word adalah kata yang telah dikenal oleh Pascal yang telah mempunyai kegunaan tertentu. Contoh penulisan identifier yang benar: coba1 jari_jari programcoba_coba integer

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

17

Bahasa Pemrograman Pascal

Contoh penulisan identifier yang salah: coba 1 (mengandung spasi) jari-jari (mengandung karakter -) 2b (diawali dengan angka) to (reserved word) Contoh penggunaan identifier: program coba1; var a,b:byte; type c=word; begin a:=127; b:=76; Write(a,b); end. Pada program di atas, terdapat 4 buah indentifier, yaitu coba1, a, b dan c. Coba1 digunakan sebagai identifier nama program, a dan b digunakan sebagai identifier dari deklarasi var dan c sebagai indentifier nama type. Angka (Numbers) Ada 2 macam penulisan angka dalam bilangan bulat yang dikenal dalam Pascal. Normal, dalam format desimal (basis 10). Heksadesimal (basis 16), penulisan angka dalam format heksadesimal harus didahului oleh tanda $. Misalnya $FF berarti 255 desimal. Free Pascal menambahkan 2 format penulisan lagi, yaitu: Oktal (basis 8), penulisan angka dalam format oktal harus didahului oleh tanda &. Misalnya 15 desimal mempunyai nilai yang sama dengan &17. Biner (basis 2), penulisan angka dalam format biner harus didahului oleh tanda %. Misalnya 15 desimal mempunyai nilai yang sama dengan %1111. Tipe (Type) Tipe data yang dikenal oleh Pascal dapat diklasifikasikan menjadi: tipe sederhana, tipe string, tipe terstruktur dan tipe data pointer. Ada tipe yang sudah didefinisikan (built-in)

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

18

Bahasa Pemrograman Pascal

sehingga compiler langsung mengenalinya tanpa perlu dideklarasikan. Tapi ada tipe yang harus dideklarasikan terlebih dulu (user-defined types). Berikut ini adalah taksonomi dari tipe data yang ada di Turbo Pascal Sederhana Ordinal Integer / bilangan bulat (dibagi lagi menjadi : Byte, Shortint, Word, Integer, Longint) Real String Terstruktur Set Array Record File Pointer Free Pascal melakukan beberapa perubahan untuk taksonomi tipe data ini, yaitu: Tipe dasar / tipe sederhana (Based Types) Tipe ordinal (ordinal types) Tipe real (real types) Tipe karakter (Character Types) Karakter (Char) Untai (Strings) Untai pendek (Short strings) Ansistrings Konstanta string (Constant string) Pchar Null terminated string
Tipe terstruktur (Structured types)

Character Boolean Enumerated Subrange

Array Record

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

19

Bahasa Pemrograman Pascal

Set File Pointer Deklarasi Forward Tipe Prosedur Penjelasan Tipe data pada Free Pascal Tipe Dasar / Sederhana (Based Types or Simple Types). Tipe dasar mendefinisikan suatu nilai yang berurutan. Ada 2 kelas dari tipe sederhana ini yaitu: Tipe Ordinal (Ordinal type) Pada tipe ordinal, Free Pascal telah mendefinisikan 14 predefined type, yaitu : bilangan bulat, boolean, char. Artinya pembuat program tidak perlu mendefinisikan tipe untuk tipe-tipe data di atas. Sedangkan untuk user defined type pada tipe ordinal ada 2 macam, yaitu : tipe enumerasi (enumerated types) dan tipe subjangkauan (subrange types). Tipe Ordinal dapat dioperasikan dengan fungsi/prosedur berikut: ORD (fungsi) PRED (fungsi) SUCC (fungsi) HIGH (fungsi) LOW (fungsi) INC (prosedur) DEC (prosedur) Tipe Enumerasi (Enumerated) Tipe Enumerasi mendefinisikan nilai yang berurutan ke suatu elemen dalam suatu daftar identifier. Elemen pertama mempunyai nilai 0, yang kedua mempunyai nilai 1 dan seterusnya.

Format penulisan: type identifier=(identifier_1,identifier_2,...,identifier_n) Contoh tipe enumerasi yang benar:

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

20

Bahasa Pemrograman Pascal

type kartu=(club, heart, diamond, spade); musik=(jazz, blues, country, pop); Untuk mengetahui urutan suatu nilai dari tipe enumerasi ini dengan menggunakan fungsi ord, untuk mengetahui nilai sebelumnya menggunakan fungsi pred dan untuk mengetahui nilai sesudahnya digunakan fungsi succ. Contoh penggunaan tipe enumerasi dalam program: var model:(small,medium,large); begin model:=medium; writeln(ord(model)); {berapa urutan dari model?} model:=pred(model); {apa nilai dari model?} model:=succ(succ(model)); {apa nilai dari model?} end.

Pada Free Pascal tipe enumerasi dapat dibuat dengan model bahasa C, yaitu: Type EnumType = (satu, dua, tiga, empatpuluh:= 40,empatsatu); Hasilnya, ordinal dari empatpuluh adalah 40, bukan 3 seperti pada tipe enumerasi biasa dan ordinal dari empatsatu adalah 41. Namun harap diperhatikan bahwa fungsi Pred dan Succ tidak dapat digunakan untuk tipe enumerasi seperti di atas. Compiler akan menganggap salah untuk tipe enumerasi berikut: Type EnumType = (satu,dua, tiga, empatpuluh := 40,tigapuluh=30); Contoh penggunaan tipe enumerasi yang benar: var MyCard: (Club, Diamond, Heart, Spade); var Card1, Card2: (Club, Diamond, Heart, Spade); type Suit = (Club, Diamond, Heart, Spade); var Card1: Suit; Card2: Suit;

Contoh penggunaan tipe enumerasi yang salah: var Card1: (Club, Diamond, Heart, Spade); var Card2: (Club, Diamond, Heart, Spade); Tipe Subjangkauan (Subrange) Tipe subjangkauan mendefinisikan suatu elemen dari nilai terkecil sampai nilai terbesar.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

21

Bahasa Pemrograman Pascal

Format penulisan : type identifier=nilai1..nilai2; nilai1 dan nilai2 haruslah merupakan merupakan nilai dari tipe ordinal yang sama. Pada suatu tipe subjangkauan, juga dapat digunakan fungsi-fungsi ord, pred dan succ. Fungsi-fungsi tersebut masih tetap mengacu pada tipe enumerasi asalnya. Contoh dalam program: var nilai:a..e; begin nilai:=a; writeln(ord(nilai)); {brp yg dihasilkan, mengapa?} writeln(pred(nilai)); {mengapa diperbolehkan?} end. Tipe Boolean (Boolean) Boolean adalah suatu tipe data yang hanya memiliki nilai true (benar) dan false (salah). Tipe Boolean sangat diperlukan dalam kondisi perulangan dan kondisional (menggunakan if). Ekspresi yang menghasilkan boolean bisa berupa ekspresi dengan tipe-tipe yang terdiri dari tipe boolean, bisa juga berupa ekspresi dari tipe lain. Dalam Free Pascal mendukung tipe Bytebool, WordBool dan LongBool. Contoh ekspresi yang menghasilkan boolean adalah 6 > 5, karena bilangan 6 memang lebih besar dari 5 maka nilai ekspresi tersebut adalah true, sedangkan 6 < 2 adalah ekspresi yang nilainya false. Operasi-operasi yang dapat dilakukan pada tipe boolean adalah (diurutkan berdasarkan hirarki teratas sampai terendah): NOT, AND, OR, XOR NOT akan menghasilkan nilai boolean kebalikan dari nilai yang diberikan AND akan menghasilkan true jika kedua operandnya bernilai true OR akan menghasilkan true jika salah satu operandnya bernilai true XOR akan menghasilkan true jika operandnya memiliki nilai boolean yang berbeda

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

22

Bahasa Pemrograman Pascal

Dalam Pascal, dan berbagai bahasa umumnya nilai true lebih besar dari nilai false (true > false adalah true). Karena masih merupakan tipe ordinal, maka nilainya dapat diketahui urutannya dengan menggunakan fungsi ord. ORD(FALSE) = 0 ORD(TRUE) = 1 Representasi Boolean dalam komputer Nilai boolean disimpan sebagai angka 0 untuk false dan bukan nol untuk true. Dalam bahasa Pascal, boolean tidak bisa dioperasikan sebagai integer, namun dalam bahasa lain (C misalnya), boolean dan integer adalah dua nilai yang bisa dipertukarkan. Operasi Boolean pada Bilangan Integer Bilangan integer dapat dioperasikan dengan operator boolean, proses operasi dilakukan dengan melihat representasi bit pada bilangan integer, dan melakukan operasi boolean yang bersesuaian terhadap bit tersebut (bit 1 dianggap true, dan 0 dianggap false). Contoh: 1 or 2 = 3 representasi biner untuk 1 desimal adalah (kita ambil 8 bit) 00000001, sedangkan representasi biner untuk 2 desimal adalah 00000010, maka jika kita or -kan masingmasing bit, hasilnya adalah 00000011, yang artinya 3 desimal. Contoh dalam program: Contoh 1 : Var X:boolean; A:byte; Begin A:=0; If a>100 then x:=true else x:=false; End. Contoh 2 : var Ok:boolean; a,b:byte; Begin
a:=10; b:=20; Ok:=a=b; End. {False karena a <> b}

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

23

Bahasa Pemrograman Pascal

Pada Free Pascal, ekspresi boolean akan dievaluasi sedemikian sehingga pada saat hasilnya telah diketahui maka ekspresi selanjutnya tidak akan dievaluasi. Contoh berikut akan menyebabkan fungsi FUNC (fungsi yang menghasilkan nilai boolean) tidak dijalankan. ... b:=false; a:=b and FUNC; ... Karena b bernilai false, maka a pasti akan bernilai false, sehingga FUNC tidak pernah dievaluasi. Tipe Bilangan Bulat (Integer) Integer adalah suatu tipe bilangan bulat (negatif, positif, dan nol). Integer dipakai dalam kebanyakan operasi matematika dan loop, bahkan beberapa prosesor tidak memiliki kemampuan perhitungan bilangan real sehingga semua perhitungan numerik dilakukan dengan integer. Tipe Integer secara standard akan diarahkan pada tipe smallint, sedangkan tipe cardinal selalu diarahkan pada tipe longword. Tipe bilangan bulat ini dapat disebut sebagai predefined type, atau dapat juga dimasukkan dalam tipe subjangakauan. Representasi integer dalam komputer Integer memiliki representasi yang sederhana dalam komputer. Komputer memandang integer sebagai nilai dari serangkaian bilangan biner. Namun komputer tidak memproses satu bit demi satu bit, tapi per blok bit yang umumnya terdiri dari 8 bit (dikenal sebagai 1 byte atau binary eight). Ada beberapa tipe integer, tipe integer paling sederhana adalah byte yaitu integer 8 bit yang unsigned (tidak bisa menyimpan nilai negatif, atau hanya bisa menampung tipe bilangan asli/natural), dan pasangannya yaitu tipe shortint yang tipe integer 8 bit yang bertanda (signed atau bilangan bulat). Bilangan integer 8 bit artinya diperlukan memori sebesar 8 bit untuk menyimpan tipe tersebut, nilai yang bisa disimpan adalah 0000 0000 sampai dengan 1111 1111. Jika dipandang sebagai tipe unsigned, maka nilai desimal untuk 8 bit tersebut adalah 0 sampai dengan 255. Untuk bisa menyimpan nilai negatif dalam biner biasanya digunakan representasi yang disebut sebagai komplemen 2.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

24

Bahasa Pemrograman Pascal

Komplemen 2 adalah kebalikan dari representasi desimal ditambah dengan 1. Untuk menyimpan -5 desimal misalnya, kita cari representasi untuk 5 yaitu 0000 0101, kita balik (not-kan) menjadi 1111 1010, dan kita tambahkan 1 menjadi 11111011, sehingga representasi -5 dalam biner adalah 11111011. Untuk menyimpan bilangan positif 5, tetap digunakan 0000 0101. Dengan cara komplemen 2 maka nilai yang bisa ditampung dalam 8 bit adalah dari -128 sampai dengan 127 Tipe integer lain adalah integer yang berupa tipe integer 32 bit (atau 16 bit pada Pascal di DOS), dan long yang berupa tipe integer 64 bit. Perbedaan dari masing-masing tipe tersebut adalah kemampuannya dalam jangkauan angka yang bisa disimpan.

Ada 10 tipe bilangan bulat, yaitu: Tipe Byte Shortint Smallint Word Integer 0 .. 255 -128 .. 127 -32768 .. 32767 0 .. 65535 Range (Jangkauan) 1 Byte 1 Byte 2 Byte 2 Byte Ukuran

Masuk dalam smallint, longint dan 2,4,8 Byte Int64

Cardinal

Masuk dalam word, longword, dan 2,4,8 Byte qword

Longint Longword Int64 QWord

-2147483648 .. 2147483647 0 .. 4294967295 -9223372036854775808 .. 9223372036854775807 0 .. 18446744073709551615

4 Byte 4 Byte 8 Byte 8 Byte

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

25

Bahasa Pemrograman Pascal

Urutan Operator (Precedence of operator) Integer Operasi-operasi yang dapat dilakukan pada tipe bilangan bulat adalah (diurutkan berdasarkan hirarki teratas sampai terendah): @, NOT *, /, div, mod, and, shl, shr +, , or, xor =, <>, <, >, <=, >=, in Ekspresi 2*4+5*2 akan menghasilkan 18 karena operasi perkalian dilakukan lebih dahulu jika dibandingkan dengan pejumlahan. Dalam hal ini dikatakan bahwa precedence kali lebih tinggi dari bagi. Umumnya precedence of operator untuk integer di aneka bahasa adalah sama. Operator + * / DIV MOD Proses Penjumlahan Pengurangan Perkalian Pembagian Pembagian Bulat Sisa Bagi Tipe Operand Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat Tipe Hasil Bilangan Bulat Bilangan Bulat Bilangan Bulat Real Bilangan Bulat Bilangan Bulat

Evaluasilah ekspresi di bawah ini, tentukan apakah ekspresi tersebut benar atau salah, jika benar berapa nilai akhirnya, jika salah tentukan alasannya!

3 + 5 * 2 6 or 2 and 5 div 2 4 mod not 6 5 >= 6 10 and 3 = 0

13 5 div 2 = 2 2 and 2 = 2 6 or 2= 6 not 6 = 1 4 mod 1 =0 false 10 and 3 =2 2<>0 false

(10 and 5 = 0) or (4 * 1 = 4) 10 and 5 = 0 4=4 true var x:boolean; a,b:byte;


UPT SMU Negeri 1 Pasuruan Kelas X Semester I

0=0 true true or true = TRUE

26

Bahasa Pemrograman Pascal

begin a:=10; x:=true; if (a>=0) and x then write(a); end. begin a:=4; b:=a and 4; x:=true; if b and x then write(a); end. begin if b=4 and a=1 then write(a); end. Tipe Real Real adalah tipe yang dapat menampung bilangan real. Tipe ini bisa menampung bilangan dengan suatu nilai di belakang koma dengan presisi tertentu (lihat bagian representasi real). Representasi Real dalam komputer Ada banyak representasi real dalam komputer, namun umumnya real direpresentasikan dalam bentuk: A * 2+/- b Misalnya nilai 0.5 akan direpresentasikan sebagai 1 * 2-1 ( = 0.5). Perhatikan bahwa tidak semua nilai bisa direpresentasikan dengan tepat dengan cara ini, nilai 1/3 misalnya tidak bisa dinyatakan dengan tepat dalam bentuk perkalian tersebut. Baik nilai A maupun nilai B memiliki presisi integer yang terbatas. Ada 6 model tipe real, masing-masing mempunyai jangkauan, ketepatan angka dan ukuran. Type Jangkauan Digit Ukuran

Real Single Double

2,9.10-39 .. 1,7.1038 1,5.10-45 .. 3,4.1038 5,0.10-324 .. 1,7.10308

11-12 7-8 15-16

6 byte 4 byte 8 byte

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

27

Bahasa Pemrograman Pascal

Extended Comp

3,4.10-4932 .. 1,1.104932 -2.1063+1 .. 2.1063-1

19-20 19-20

10 byte 8 byte

Operasi Terhadap Real Operasi yang bisa dilakukan terhadap real meliputi: tambah, kali, minus (sama seperti integer), dan pembagian (memakai simbol / yang menghasilkan bilangan real). Operator + * / Proses Penjumlahan Pengurangan Perkalian Pembagian Tipe Operand Real Real Real Real Tipe Hasil Real Real Real Real

Operasi perbandingan selain = (sama dengan) dan tidak sama dengan (<><) bisa dilakukan terhadap real (>, <, >=, <=, <>). Operasi sama dengan dan tidak sama dengan sebenarnya bisa dilakukan (tidak dibatasi oleh bahasa Pascal), namun dalam kasus tertentu hasilnya mungkin tidak sesuai dengan yang diharapkan. Cara yang benar untuk membandingkan 2 buah real adalah dengan menetapkan nilai epsilon yang kecil yang dipakai untuk membandingkan: if (a b < epsilon) then begin writeln(A sama dengan B); end else begin writeln(A tidak sama dengan B); end;

Kompatibilitas Tipe Sebuah variabel bertipe string tentu tidak bisa dijumlahkan dengan variabel bertipe integer, karena tipe string tidak kompatibel dengan tipe integer. Kedua tipe itu sangat berbeda, sehingga masalah kompatibilitas tipe itu sudah jelas. Namun dalam kasus tertentu, kompatibilitas tipe mungkin tidak terlalu jelas dan harus diperhatikan dengan baik. Contohnya, variabel bertipe real tidak bisa langsung diassign pada variabel bertipe integer, karena variabel bertipe real mungkin mengandung pecahan, tapi hal yang sebaliknya bisa dilakukan.
UPT SMU Negeri 1 Pasuruan Kelas X Semester I

28

Bahasa Pemrograman Pascal

Variabel bertipe real dengan presisi yang tinggi (misalnya double di Pascal) tidak bisa diassign pada variabel bertipe real dengan presisi yang lebih rendah (tipe real biasa di Pascal), karena presisinya bisa hilang. Permasalahan menjadi lebih kompleks pada ekspresi yang melibatkan banyak variabel dengan berbagai jenis tipe. Contohnya dalam ekspresi ini: a : integer; b : integer; d : integer; c : real; begin a :=1; b :=2; c :=a/b; d :=a/b; end. Ekspresi a/b akan menghasilkan tipe real, sehingga instruksi terakhir adalah salah dan tidak bisa dikompilasi (tipe di ruas kanan tidak sama dengan tipe di ruas kiri). Konversi Antar Tipe Sederhana Suatu tipe dapat dikonversi ke tipe lain meskipun biasanya konversi ini tidak sempurna. Contoh konversi tipe adalah: konversi dari tipe dengan presisi yang lebih tinggi ke yang lebih rendah (integer ke byte misalnya, konversi dari tipe bertanda ke tidak bertanda, konversi dari string ke integer, konversi dari real ke integer. Sebagian proses konversi dapat dilakukan melalui proses yang disebut dengan casting. Casting merupakan proses konversi sederhana yang hanya melakukan perubahan representasi internal tanpa kehilangan makna. Contohnya casting bisa dilakukan untuk mengubah sebuah shortint menjadi byte, atau byte menjadi integer, namun sebuah bilangan real tidak bisa dicast menjadi sebuah integer. Cara melakukan casting adalah dengan memberikan ekspresi yang akan dicasting di dalam nama tipe tujuan casting: var a:byte;

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

29

Bahasa Pemrograman Pascal

b:real; begin a := 3 div 2; writeln(integer(a)); b := real(a); writeln(real(b)); writeln(real(1/2)); end. Konversi a ke real bisa dilakukan karena bilangan integer pasti bisa dikonversi ke real. Konversi integer(b) akan menghasilkan error karena dalam konversi real ke integer ada beberapa hal yang bisa dilakukan, apakah akan dibulatkan ke atas, atau dibulatkan ke bawah, atau semua angka di belakang koma akan dihilangkan. Konversi dari tipe yang lebih presisi lebih tinggi, atau yang memiliki range yang lebih besar ke tipe yang presisi atau range yang lebih kecil akan memiliki hasil yang tidak terdefinisi dalam kasus tertentu. Misalnya i adalah sebuah integer, dan b adalah sebuah byte, konversi dari i ke b (integer ke byte) akan menghasilkan hasil yang benar jika i memiliki nilai antara 0 sampai 255, jika i memiliki nilai di luar itu maka nilai b tidak bisa diprediksi. Konversi tipe dengan fungsi Konversi tipe yang melibatkan tipe yang berbeda jauh dapat dipandang sebagai konversi tipe yang tidak sederhana. Konversi ini melibatkan penggunaan fungsi khusus yang menjadi bagian dari bahasa, atau fungsi tambahan pendukung bahasa tersebut. Contoh fungsi yang adalah ceil untuk membulatkan bilangan ke atas (6.7 menjadi 7), floor untuk membulatkan bilangan real ke bawah (6.7 menjadi 6), dan round untuk membulatkan bilangan real ke nilai yang terdekat (6.7 menjadi 7). Fungsi atau prosedur konversi juga tersedia untuk mengubah integer/real menjadi string dan sebaliknya. Dalam kasus konversi string ke numerik, ada kemungkinan bahwa string tidak mengandung karakter angka, tapi karakter lain sehingga konversi gagal. Fungsi konversi yang disebutkan bukan merupakan standar Pascal, sehingga perlu dikonsultasikan pada dokumentasi kompilator yang dipakai. Sebuah tipe real adalah anggota bilangan real, yang dinyatakan dalam notasi floating point.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

30

Bahasa Pemrograman Pascal

Tipe Karakter (Character) Merupakan suatu tipe data untuk menyimpan karakter ASCII. Ditulis dengan menggunakan tanda petik atau diawali dengan #. Satu karakter adalah satu huruf, atau satu angka, atau simbol. Sebuah variabel bertipe karakter hanya boleh diisi dengan satu simbol saja, seperti ini: var c:char; begin c:= 'A'; { c berisi huruf A } end. Representasi karakter dalam komputer Dalam bahasa Pascal standar. Sebuah karakter adalah sebuah bilangan integer 8 bit yang memiliki nilai dari 0 sampai 255. Setiap nilai ini dipetakan dalam suatu simbol, misalnya nilai 65 berkaitan dengan simbol A, 66 dengan simbol B, dan seterusnya. Pemetaan ini tergantung pada encoding yang dipakai (dan encoding ini bergantung pada wilayah atau bahasa tertentu), karakter 0-127 memiliki pemetaan standar yang disebut dan biasanya disebut dengan karakter ASCII (American Standard Code For Information Interchange), sedangkan sisanya bergantung pada encoding yang dipakai (misalnya orang Perancis memetakan menjadi beraneka huruf yang memiliki accent, orang Rusia memetakan dalam alfabet mereka). Karena masih masuk dalam tipe ordinal maka dapat dioperasikan dengan menggunakan fungsi ord (untuk mengetahui urutannya), fungsi succ, fungsi pred, prosedur inc, prosedur dec. Dalam Pascal, ada fungsi ord (ordinal) yang bisa memetakan dari karakter menjadi nilainya, dan fungsi chr (character) yang melakukan proses kebalikannya. Contoh pemakaian ord: writeln(ord('A')); writeln(chr(65)); writeln(#65); akan mencetak angka 65 akan mencetak huruf A.

akan mencetak huruf A.

Operasi Terhadap char Sebuah tipe karakter tidak bisa dioperasikan, tidak bisa dijumlahkan ataupun dikurangkan. Tipe char hanya bisa dioperasikan jika dikonversi menjadi integer dengan ord. Sebuah tipe char bisa digabungkan pada sebuah tipe string.
UPT SMU Negeri 1 Pasuruan Kelas X Semester I

31

Bahasa Pemrograman Pascal

Sebuah karakter bisa dibandingkan dengan karakter lain, hasil perbandingan adalah perbandingan nilai ordinal karakter tersebut. Operasi perbandingan yang bisa dilakukan sama dengan yang bisa dilakukan dengan integer. Contoh: 'A' < 'B', karena ordinal 'A' adalah kurang dari 'B', namun 'b' > 'A', karena ordinal 'b' (b kecil) lebih dari ordina 'A' (A kapital). Tipe Untai (String) Tipe string adalah tipe yang diisi rangkaian karakter. Format penulisan: type identifier=string[panjang]; Bila panjang tidak didefinisikan, maka Pascal menganggap panjangnya adalah 255 karakter (panjang maksimum).Contoh penggunaan dalam program type str80=string[80]; {bisa dideklarasikan dalam tipe terlebih dulu} var a:str80; b:string[10]; {atau langsung dalam variabel} const Heading: string[7] = 'Section'; NewLine: string[2] = #13#10; TrueStr: string[5] = 'Yes'; FalseStr: string[5] = 'No'; Fungsi standard dari Length adalah untuk mencari panjang dari string. Perbandingan antar string didefinisikan dengan melihat urutan karakter di dalamnya. Misalnya AB lebih besar dari A; sehingga AB>A menghasilkan TRUE. String kosong (panjangnya 0) adalah string yang mempunyai urutan terendah. String dapat dicari urutannya seperti halnya Array. Jika S adalah sebuah variabel string dan I adalah sebuah ekspresi numerik yang menghasilkan bilangan bulat, maka S[I] akan menghasilkan karakter dari S yang ke i. Statement MyString[2]:=A akan mengisikan karakter ke-2 dari MyString dengan karakter A. Contoh berikut adalah untuk membalik sebuah string.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

32

Bahasa Pemrograman Pascal

var Begin

MyString,StringTemp : String; A,B: Integer; MyString:=Belajar Pascal; A := Length(MyString); B := 0; while A > 0 do begin B:= B+1; StringTemp[B]:= MyString[I]; A := A - 1; end; Write(StringTemp); {Program akan mencetak lascaP rajaleB}

end; Tipe Untai Pendek (Short String) Deklarasi String akan mendeklarasikan sebagai shortstring apabila: Opsi dimatikan {$H-}, maka deklarasi string akan selalu shortstring Opsi dinyalakan {$H+} dan diberikan panjang tertentu, maka deklarasi tersebut adalah shortstring. Predefined type untuk shortstring adalah: ShortString = String[255];

Tipe Ansistrings Format penulisan: type identifier=ansistring; Tipe ansistring adalah tipe string dengan panjang tanpa batas. Dalam proses kompilasi, ansistring diperlakukan sebagai pointer. Jika string adalah kosong (), maka pointer akan menunjuk pada NIL. Jika ada isinya, pointer akan menunjuk suatu alamat pada heap memory. Ketika tipe ansistring dideklarasikan, Free Pascal hanya mengalokasikan alamat untuk pointernya saja. Pointer ini pasti berisi NIL, sehingga isi mula-mula dari variabel ansistring pasti kosong (tidak mempunyai nilai apa-apa) Tipe PChar Format penulisan: type

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

33

Bahasa Pemrograman Pascal

identifier=PChar; Pchar adalah variabel berjenis pointer yang mengarah ke sebuah array dengan tipe Char, yang diakhiri dengan karakter 0 (#0). Dengan tipe Pchar, dimungkinkan adanya operasi tambahan pada tipe ini. Perhatikan cara pemakaian PChar pada program di bawah ini: program one; var p : PChar; begin P := 'This is a null-terminated string.'; WriteLn (P); end. Akan sama dengan: program two; const P : PChar = 'This is a null-terminated string.' begin WriteLn (P); end. Mungkin juga nilai sebuah string diberikan pada Pchar, caranya: Program three; Var S : String[30]; P : PChar; begin S := 'This is a null-terminated string.'#0; P := @S[1]; WriteLn (P); end.

Tipe Terstruktur (Structured Type) Tipe terstruktur dalam pascal adalah tipe yang dapat menampung lebih dari 1 nilai. Free Pascal mendefinisikan beberapa tipe terstruktur ini, yaitu: Tipe Array Tipe array adalah suatu tipe yang dapat menampung beberapa nilai dengan tipe yang sama dalam bentuk satu dimensi atau multidimensi. Tiap nilai dalam array dapat diacu dengan nama array dan indeksnya yang diletakkan dalam kurung. Format penulisan:

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

34

Bahasa Pemrograman Pascal

type identifier=array[tipe_indeks] of tipe_data Tipe_indeks adalah suatu tipe data ordinal (apa itu tipe data ordinal? Terdiri dari apa saja tipe data ordinal?) Tipe_data mendefinisikan bahwa array tersebut untuk menampung nilai dengan tipe data apa saja. Contoh dalam program: type a=array[boolean] of byte; c=5..10; b=array[1..10,c] of real; {termasuk tipe data apa c?} var nilai_a:a; nilai_b:b; begin nilai_a[true]:=10; nilai_b[1,5]:=10.4; end. Dalam contoh di atas, tipe_indeks apa yang digunakan? Berapa byte-kah yang digunakan program di atas untuk mendeklarasikan variabel dalam tipe tersebut? Tipe Himpunan (Set) Himpunan adalah kumpulan dari beberapa nilai yang bertipe ordinal. Dalam sebuah himpunan, nilai-nilai di dalamnya akan otomatis terurut dari elemen yang paling kecil hingga yang paling besar. Dan tidak ada 2 nilai yang sama dalam sebuah himpunan. Format penulisan: type identifier=set of ordinal_type; Contoh dalam program: type TIntSet = set of 1..250; var Set1, Set2: TIntSet; begin Set1 := [1, 3, 5, 7, 9]; Set2 := [2, 4, 6, 8, 10] End. Operasi-operasi yang dapat diberlakukan pada tipe data set:

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

35

Bahasa Pemrograman Pascal

Operation union difference intersection subset superset equality inequality membership

Operand set set set set set set set ordinal, set

Result type set set set Boolean Boolean Boolean Boolean Boolean

Example Set1 + Set2 S-T S*T Q <= MySet S1 >= S2 S2 = MySet MySet <> S1 A in Set1

Evaluasilah ekspresi di bawah ini. Tentukan nilai akhir untuk ekspresi tersebut. Var A,B:set of char Begin A:=[A..E]; B:=[D..H]; End. A+B AB BA A*B A in B A in B A <= B

Tipe Record Sebuah record dapat terdiri dari sejumlah komponen (atau field), yang masing-masing field dapat mempunyai tipe yang berbeda-beda. Format penulisan: Type identifier = record fieldList1: type1; ... fieldListn: typen; end;

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

36

Bahasa Pemrograman Pascal

Contoh penulisan sebuah record: Type Point = Record X,Y,Z : Real; end; RPoint = Record Case Boolean of False : (X,Y,Z : Real); True : (R,theta,phi : Real); end; BetterRPoint = Record Case UsePolar : Boolean of False : (X,Y,Z : Real); True : (R,theta,phi : Real); end; TDateRec = record Year: Integer; Month: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec); Day: 1..31; end; var Record1, Record2: TDateRec; Deklarasi variabel di atas (Record1 dan Record2) mempunyai tipe data yang sama. Untuk mengakses nilai untuk tiap field dalam sebuah record, menggunakan format: Namarecord.namafield

Contoh: Record1.Year := 1904; Record1.Month := Jun; Record1.Day := 16; Atau dapat juga dengan menggunakan statement With. with Record1 do begin Year := 1904; Month := Jun; Day := 16; end; Untuk tipe data record yang sama, dapat berlaku statement: Record2 := Record1;

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

37

Bahasa Pemrograman Pascal

Tipe File File adalah sekumpulan elemen (data). Sintaks penulisan untuk tipe data file: type fileTypeName = file of type di mana fileTypeName is sembarang nama identifier dan tipe adalah fixed-size type. Contoh: type PhoneEntry = record FirstName, LastName: string[20]; PhoneNumber: string[15]; Listed: Boolean; end; PhoneList = file of PhoneEntry; Var Filephone: PhoneList; Deklarasi di atas, mendeklarasikan file bertipe record. Deklarasi di atas, dapat juga secara langsung dituliskan: var List1: file of PhoneEntry;

Tipe data file dapat juga berupa file tidak bertipe. Format penulisan: Var MyFile : File; Tipe Pointer Pointer adalah sebuah variabel yang berisi alamat memori dan bukan berisi data numerik atau string seperti halnya variabel biasa. Format penulisan: type pointerTypeName = ^type

Contoh dalam program: var X, Y: Integer; // X and Y are Integer variables P: ^Integer; // P points to an Integer begin X := 17; // assign a value to X P := @X; // assign the address of X to P Y := P^; // dereference P; assign the result to Y end;

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

38

Bahasa Pemrograman Pascal

Tipe prosedural (Procedural Types) Tipe prosedural pada Free Pascal berbeda dengan Turbo Pascal walaupun secara konsep sama. Berikut adalah contoh pemakaian dalam program: Type TOneArg = Procedure (Var X : integer); TNoArg = Function : Real; var proc : TOneArg; func : TNoArg;

Pengubah (Variable) Variabel adalah penampung nilai yang nilai di dalamnya dapat berubah pada saat runtime. Variabel harus mempunyai tipe data tertentu, sehingga compiler dapat memperlakukan data yang ditampung dengan semestinya. Deklarasi untuk variabel terdiri dari 2 bagian, yaitu nama variabel dan tipe datanya, yang dipisahkan dengan semicolon (:). Cara mendeklarasikan variabel adalah: Var Identifierlist : type;

Identifierlist merupakan kumpulan identifier yang dipisahkan dengan tanda koma dan type adalah sembarang tipe data. Contoh pendeklarasian variabel yang benar: Var Var Var a:byte; a,b:byte; X, Y, Z: Double; I, J, K: Integer; Digit: 0..9; Okay: Boolean; Contoh pendeklarasian variabel yang salah: Var a,b; Var a:8; Konstanta (Constant) Konstanta berisi suatu nilai yang tidak dapat dirubah. Pemberian nilai untuk konstanta ini pada saat konstanta dideklarasikan.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

39

Bahasa Pemrograman Pascal

Contoh deklarasi konstanta Const Pi = 3.14159; Answer = 342; ProductName = 'Delphi'; MaxData = 1024 * 64 - 16; NumChars = Ord('Z') - Ord('A') + 1; Message = 'Hello world...'; Konstanta seperti di atas disebut sebagai konstanta tak bertipe. Sedangkan konstanta yang bertipe mempunyai sifat seperti variabel. Untuk konstanta bertipe deklarasinya: const identifier: type = value

Mendeklarasikan konstanta bertipe untuk ARRAY: const Digits: array[0..9] of Char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'); Factorial: array[1..7] of Integer = (1, 2, 6, 24, 120, 720, 5040); Mendeklarasikan konstanta bertipe untuk RECORD type Point = record X, Y: Real; end; Vector = array[0..1] of Point; Month = (Jan, Feb, Mar, Apr, May, Jun, Jly, Aug, Sep, Oct, Nov, Dec); Date = record D: 1..31; M: Month; Y: 1900..1999; end; const Origin: Point = (X: 0.0; Y: 0.0); Line: Vector = ((X: -3.1; Y: 1.5), (X: 5.8; Y: 3.0)); SomeDay: Date = (D: 2; M: Dec; Y: 1960); Mendeklarasikan konstanta bertipe untuk SET type Digits = set of 0..9; Letters = set of 'A'..'Z'; const EvenDigits: Digits = [0, 2, 4, 6, 8]; Vowels: Letters = ['A', 'E', 'I', 'O', 'U', 'Y'];

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

40

Bahasa Pemrograman Pascal

HexDigits: set of '0'..'z' = ['0'..'9', 'A'..'F', 'a'...f']; Mendeklarasikan konstanta bertipe untuk tipe data sederhana const Maximum: Integer = 9999; Factor: Real = -0.1; Breakchar: Char = #3; Mendeklarasikan konstanta bertipe untuk tipe data string const Heading: string[7] = 'Section'; NewLine: string[2] = #13#10; TrueStr: string[5] = 'Yes'; FalseStr: string[5] = 'No';

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

41

Bahasa Pemrograman Pascal

OPERASI DI PASCAL
Operasi Aritmatika Operasi Aritmatika adalah operasi untuk melaksanakan suatu proses perhitungan. Hasil dari operasi ini diberikan pada variabel yang dapat menampung nilai numerik. Yang perlu diperhatikan dalam operator aritmatika adalah: Tipe bilangan bulat dapat diberikan kepada tipe real, tapi tidak berlaku sebaliknya. Contoh: Var A:real; L:Longint; begin A := L; {statement yang benar} L := A; {statement yang salah} End. Tidak boleh ada dua atau lebih operator yang berurutan dalam sebuah ekspresi aritmatika. Contoh: Var A:real; L:Longint; Begin A := A + 1; {statement yang benar} A := L++; {statement yang salah} End. Operasi Logika Operasi logika menggunakan sistem bilangan biner untuk perhitungannya. Ada 6 buah operator logika yang dikenal Pascal, yaitu:

Operator NOT AND OR XOR SHL SHR

Operasi Ingkaran Bit Logika AND bit Logika OR bit Logika XOR bit Geser Bit Ke Kiri Geser Bit ke Kanan

Tipe Operand Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat

Tipe Hasil Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat Bilangan Bulat

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

42

Bahasa Pemrograman Pascal

Operasi Boolean Operasi boolean menggunakan operand yang bertipe boolean serta hasil boolean untuk operasinya. Ada 4 operator boolean yang dikenal Pascal, yaitu NOT, AND, OR, XOR. Operasi String Operasi string pada Pascal hanya mengenal sebuah operator yaitu operator + atau penggabungan antar string. Operasi himpunan Pada operasi himpunan selalu menggunakan tipe data himpunan (set) untuk operator maupun operannya. Ada 3 macam operator pada operasi himpunan, yaitu: Operatoar + * Union Selisih Interseksi Operasi

Hasil dari operasi-operasi himpunan berdasarkan aturan sebagai berikut: Nilai ordinal C ada di A+B hanya jika C ada di A atau B Nilai ordinal C ada di A-B hanya jika C terdapat di A dan bukan di B Nilai ordinal C ada di A*B hanya jika C terdapat baik di A maupun B Operasi Relasi Operasi ini digunakan untuk melakukan perbandingan dan menghasilkan boolean (true atau false) yang menunjukkan perbandingan tersebut bernilai benar atau salah. Operator = <> < > <= >= <= Operasi Sama dengan Tidak Sama dengan Lebih Kecil Lebih Besar Lebih Kecil sama dengan Lebih Besar sama dengan Subset dari Tipe Operan Tipe sederhana,pointer,himpunan & string Tipe sederhana,pointer,himpunan & string Tipe sederhana,pointer,himpunan & string Tipe sederhana,pointer,himpunan & string Tipe sederhana,pointer,himpunan & string Tipe sederhana,pointer,himpunan & string Himpunan Tipe Hasil Boolean Boolean Boolean Boolean Boolean Boolean Boolean

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

43

Bahasa Pemrograman Pascal

>= In

Superset dari Anggota dari

Himpunan Operan kiri : sembarang tipe ordinal Operan Kanan : Himpunan

Boolean Boolean

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

44

Bahasa Pemrograman Pascal

STATEMENT
Statement adalah perintah yang dikenal oleh Pascal. Dalam bahasa Pascal terdapat 11 statement, artinya SEMUA program dalam Pascal hanya menggunakan kombinasi dari ke-11 statement ini saja. Statement-statement yang dikenal Pascal adalah : Assignment (pemberian nilai) Compound (penggabungan) Conditional (Seleksi Kondisi) IF THEN ELSE CASE OF Looping (Perulangan) FOR TO DO REPEAT UNTIL WHILE DO WITH Sub Program Procedure Function Goto Inline

Statement GOTO adalah statement yang jarang digunakan karena dianggap sebagai statement yang tidak sesuai dengan konsep pemrograman terstruktur. Sedangkan statement inline adalah statement untuk menjalankan instruksi bahasa mesin dan tidak digunakan dalam TOKI ataupun IOI. 1. Assignment (Pemberian nilai) Statement Assignment digunakan untuk memberikan nilai pada sebuah variabel. Sintaks penulisan: Variabel := nilai

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

45

Bahasa Pemrograman Pascal

Contoh 1: var a,b:byte; begin a:=10; a:=a*4; if a>5 then b:=40; end. Contoh 2: var a,b:byte; begin a:=0; a:=a+4; end. Ada berapa assignment statement dari contoh di atas? Catatan untuk FreePascal Assignment Hasil A += b Menambah b ke a, hasil disimpan di a. A -= b Mengurangi b dari a, hasil disimpan di a. A *= b Mengalikan a dengan b, hasil disimpan di a. A /= b Membagi a terhadap b, hasil disimpan di a. 2. Compound Statement Digunakan untuk menggabungkan beberapa statement. Dalam teks lain disebutkan: Compound statements are a group of statements, separated by semicolons, that are surrounded by the keywords Begin and End. The Last statement doesn't need to be followed by a semicolon, although it is allowed. Sintaks Penulisan: begin statement; statement; statement end Contoh: if a>5 then begin
UPT SMU Negeri 1 Pasuruan Kelas X Semester I

46

Bahasa Pemrograman Pascal

a:=a*4; b:=a-4 end; Ada berapa statement assignment pada potongan program di atas? Ada berapa statement pada potongan program di atas? Mana yang disebut compound statement? Conditional (Seleksi Kondisi) Instruksi (kalimat) kondisional adalah instruksi yang dilakukan berdasarkan kondisi boolean tertentu. Instruksi ini adalah instruksi yang sangat penting, yang memungkinkan komputer untuk bias berpikir dengan mengambil aksi berdasarkan kondisi boolean tertentu. IF THEN ELSE Statement Merupakan perintah percabangan yang akan menjalankan statement sesuai dengan kondisi yang ada. Ada 2 macam sintaks penulisan IF THEN ELSE: IF kondisi THEN statement Dan IF kondisi THEN statement ELSE statement Contoh IF THEN Var a,b : Integer; Begin Write(Masukkan Berat Anda:);Readln(a); Write(Masukkan Tinggi Anda:);Readln(b); If (b - 110 )<a then Write(Sudah Waktunya Diet); End. IF THEN ELSE Var a : Integer; Begin Write(Masukkan Angka:);Readln(a); If (a mod 2)=0 then Write(Angka ,a,adalah genap) Else Write (Angka ,a,adalah ganjil); End.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

47

Bahasa Pemrograman Pascal

CASE - OF Statement Statement case digunakan untuk perintah bercabang dengan banyak kondisi. Terdiri dari ekspresi (atau biasa disebut dengan selector) dan serangkaian statement. Sintaks penulisan: case expression of case: statement; ... case: statement; end Atau: case expression of case: statement; ... case: statement; else statement end Catatan: Jika pada sebuah kondisi dapat terdiri dari banyak range, maka dapat kondisi-kondisi yang ada dapat dipisahkan dengan koma. Contoh: Var Ch : Char; Begin case Ch of 'A'..'Z', 'a'..'z': WriteLn('Letter'); '0'..'9': WriteLn('Digit'); '+', '-', '*', '/': WriteLn('Operator'); else WriteLn('Special character'); end; End. PENGULANGAN (Looping) Pengulangan adalah suatu cara untuk mengulangi eksekusi blok instruksi sampai suatu kondisi tertentu dipenuhi. FOR TO / DOWNTO DO Statement

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

48

Bahasa Pemrograman Pascal

Digunakan untuk mengulang statement. Termasuk pengulangan paling sederhana. Bertujuan untuk mengulang perintah sebanyak N kali. Sintaks penulisan FOR variabel := awal TO akhir DO statement Atau FOR variabel := akhir DOWNTO awal DO statement

Catatan: Statement akan diulang sebanyak akhir-awal+1. Selama perulangan, nilai variabel akan bernilai dari awal sampai akhir Contoh: var a,b:byte; begin for a:=1 to 5 do write(a); end. Output dari program di atas adalah : 12345 var a,b:byte; begin b:=0 for a:=1 to 5 do begin b:=b+a write(b); end; end. Output dari program di atas adalah : 1361015 var a,b:byte; begin for a:=5 downto 1 do write(a*2); end. Output dari program di atas adalah : 108642

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

49

Bahasa Pemrograman Pascal

Repeat Until Statement Perintah yang ada di dalam statement repeat until akan diulang sehingga kondisi boolean pada until bernilai true. Sintaks penulisan: repeat statement; statement; ... statement until expression Contoh: Var Ch: Char; begin repeat Ch := GetChar until Ch <> ' '; end. Program di atas akan menunggu sampai ditekan spasi. GetChar adalah procedure untuk mengambil karakter yang dimasukkan lewat keyboard. Var I : Integer; begin repeat Write('Enter value: '); ReadLn(I); until (I >= 0) and (I <= '9'); end.

While Do Statement Statement while terdiri terdiri dari sebuah ekspresi boolean yang mengontrol eksekusi dari sebuah statement. Sintaks Penulisan: While expression do statement; Atau While expression do Begin Statement; Statement; ... End.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

50

Bahasa Pemrograman Pascal

Contoh: Var Ch : Char; begin while Ch <>I do begin Ch := GetChar; end; end. Program di ats akan terus dijalankan sampai ditekan tombol I. Statement WITH Statement with digunakan untuk mereferensi field pada sebuah record. Sintaks Penulisan: with var, var, ... var do statement Contoh: with Date[I] do begin month := 1; year := year + 1; end; Ekivalen dengan perintah: Date[I].month := 1; Date[I].year := Date[I].year + 1; Sub Program Konsep subprogram atau modul merupakan konsep yang sangat bermanfaat dalam penyusunan sebuah program yang besar. Subprogram atau modul berkembang sejalan dengan teknik pemrograman terstruktur, yaitu membagi masalah yang besar menjadi masalah-masalah kecil yang diselesaikan dalam sebuah subprogram. Jika subprogram telah benar untuk memecahkan masalah-masalah kecil, maka diharapkan dalam penyusunan program yang besar, program dapat lebih disederhanakan sehingga memudahkan memecahkan masalah utama. Dalam Pascal ada 2 macam subprogram, yaitu prosedur (procedure) dan fungsi (function). Bentuk umum penulisan prosedur atau fungsi dalam Pascal adalah: PROGRAM nama(file1,file2,file3); CONST deklarasikonstanta; VAR deklarasivariabel;

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

51

Bahasa Pemrograman Pascal

TYPE deklarasitype; LABEL deklarasilabel; FUNCTION deklarasifungsi; PROCEDURE deklarasiprosedur; PROCEDURE lain1; BEGIN statement1; statement2; ... END; FUNCTION lain2:tipedata; BEGIN statement1; statement2; ... lain2:=nilai; END; BEGIN statement1; statement2; statement3; ... END. Procedure Prosedur mempunyai struktur yang sama dengan struktur program, yaitu terdiri dari nama prosedur, deklarasi-deklarasi dan bagian utama dari prosedur itu sendiri. Di dalam prosedur tersebut, dimungkinkan ada prosedur lagi yang strukturnya sama. Bentuk prosedur dalam prosedur tersebut disebut dengan prosedur tersarang (nested procedure). Struktur penulisan prosedur adalah sebagai berikut: PROCEDURE namaprocedure(daftarparameterformal); {bagian deklarasi} BEGIN Statement1; Statement2; Statement3; ... END; Daftar parameter formal dan tanda kurung (setelah namaprocedure) bersifat opsional. Artinya bisa digunakan, bisa juga tidak.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

52

Bahasa Pemrograman Pascal

Variabel dalam Procedure Di dalam setiap prosedur boleh ada deklarasi variabel, setiap prosedur boleh memiliki parameter. Variabel-variabel di dalam prosedur ini boleh memiliki nama yang sama. Nama variabel dalam sebuah prosedur hanya berlaku untuk prosedur tersebut, atau secara formal: scope variabel pada sebuah prosedur hanya pada prosedur tersebut. Beberapa aturan: Nama parameter dan variabel dalam prosedur (disebut variabel lokal) tidak boleh sama Jika ada nama variabel global yang sama dengan variabel lokal atau nama variabel parameter, maka yang akan diakses adalah variabel lokal atau parameter Jika tidak ada nama variabel lokal yang sama dengan global, maka variabel global yang akan diakses Parameter Parameter formal pada procedure terdiri dari 2 macam cara pemanggilannya, yaitu: Parameter nilai (parameter by value) Parameter referensi (parameter by reference) Parameter Nilai : USES crt; Var NilaiIQ : Integer; PROCEDURE IQ(x:integer;); BEGIN Case x of 90 .. 120 : Writeln(IQ ,x, 121 .. 140 : Writeln(IQ ,x, 141 .. 200 : Writeln(IQ ,x, Else Writeln(IQ ,x, = END; BEGIN Clrscr; NilaiIQ:=95; IQ(125); IQ(NilaiIQ); Readln END.

= Normal); = Cerdas); = Jenius) Jongkok);

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

53

Bahasa Pemrograman Pascal

Program di atas menjelaskan pemanggilan parameter nilai. Di mana cara melewatkan nilainya boleh menggunakan variable dalam hal ini NilaiIQ atau menggunakan nilainya langsung yaitu 115. Parameter Referensi VAR x,y:string; PROCEDURE ganti(var a,b:string); Var c:string; BEGIN c:=a; a:=b; b:=c; END; BEGIN x:=cowok; y:=cewek; ganti(x,y); write(x, ,y); {sekarang x=cewek, y=cowok} END. Setelah prosedur dijalankan maka x akan bernilai cewek sedangkan y akan bernilai cowok. Contoh di atas menjelaskan pemanggilan prosedur menggunakan parameter referensi. Perhatikan kata kunci var sebelum parameter a,b. Parameter dari prosedur di atas dilewatkan berdasarkan referensi variable. Dalam artian setelah prosedur dijalankan variable yang dilewatkan akan berubah sesuai dengan perintah dalam prosedur. Prosedur di atas tidak dapat diberi parameter nilai misalnya ganti(pria,wanita). Program akan memberi peringatan error karena parametere yang dilewatkan harus berupa variable. Function Sebenarnya, secara prinsip fungsi sama seperti prosedur (sama-sama merupakan subprogram). Perbedaan fungsi dan prosedur adalah fungsi dapat langsung memberikan nilai kembali sedangkan pada procedure harus menggunakan parameter perubah agar dapat mengembalikan suatu nilai. Bentuk umum suatu fungsi dalam Pascal adalah sebagai berikut:

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

54

Bahasa Pemrograman Pascal

FUNCTION namafungsi(daftarparameterformal):tipedata; {bagian deklarasi} BEGIN Statement1; Statement2; Statement3; ... namafungsi:=nilai; END; Dalam fungsi, semua parameter sebaiknya merupakan parameter nilai walaupun diperbolehkan menggunakan parameter referensi. Contoh : Var modal,persen : real; Function untung(modal,persen:real):real; Begin Untung:=modal * persen/100; End; {Program Utama} Begin Write(Modal :);Readln(modal); Write(Persen Profit :);Readln(persen); Write(Laba : ,Untung(modal,persen); End.

Rekursi Proses rekursi adalah suatu proses di mana sebuah subprogram dapat memanggil dirinya sendiri. Penggunaan rekursi ini akan sangat membantu pemecahan-pemecahan soal yang tidak dapat diselesaikan dengan menggunakan teknik iterasi biasa. Karena rekursi merupakan pemanggilan dirinya sendiri (procedure atau fungsi), maka dalam rekursi tersebut haruslah ada yang namanya proses terminasi/point sentinel (kapan berhenti memanggil dirinya sendiri), ini menghindari proses rekursi yang tak terdefinisikan (terus menerus memanggil dirinya sendiri). Proses terminasi ini biasanya berupa kondisi. Perhatikan program di bawah ini: Var Nilai : Byte;

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

55

Bahasa Pemrograman Pascal

FUNCTION Faktorial(n:int64):int64; BEGIN IF n=1 THEN Faktorial:=1; ELSE Faktorial:=Faktorial(n-1)*n; END; BEGIN Nilai:=4; writeln(Faktorial ,Nilai, = ,Faktorial(Nilai)); END. Cara kerja rekursi adalah secara terbalik/mundur sehingga terbentur dengan proses terminasi atau point sentinel. Setelah terbentur dengan point sentinel, maka proses akan berjalan maju dengan membawa proses perhitungan pada saat proses terbentur dengan point sentinel tadi. Pada proses di atas, point sentinel adalah pada saat n=1. Selama n tidak sama dengan 1, maka function jumlah akan terus menerus dipanggil sampai terbentur dengan point sentinel (yaitu n=1). Maka proses yang terjadi dari program di atas adalah : Langkah 1 2 3 4 Fungsi Faktorial(4) Faktorial(3) Faktorial(2) Faktorial(1) Hasil Faktorial(3)*4 Faktorial(2)*3 Faktorial(1)*2 1 Hasil Akhir 24 6 2 1

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

56

Bahasa Pemrograman Pascal

Standard Input / Output


Sebuah program komputer, selalu bekerja dengan 3 tahap, yaitu: 1. Tahap 1 : MASUKAN 2. Tahap II : PROSES 3. Tahap III : KELUARAN Contoh: Program untuk menghitung nilai dua bilangan bulat A dan B, maka: - masukan : A dan B - proses : C=A + B - keluaran : C Dalam bahasa Pascal: var a,b,c:word; begin write(Nilai A : );readln(a); {masukan} write(Nilai B: );readln(b); {masukan} c:=a+b; {proses} write(Hasil penFaktorialan A+B : ,c) {keluaran} end. Standard Masukan Standard masukan pada Pascal adalah keyboard. Artinya semua masukan dimasukkan lewat keyboard. Standard output pada Pascal adalah monitor. Artinya semua output ditampilkan pada layar monitor. Misalkan diminta untuk membuat program yang mencari nilai terbesar dari 1.000 buah data. Untuk program tersebut, entry data satu persatu melalui keyboard menjadi cara yang tidak efisien, karena setiap kali program di-RUN, akan meminta 1.000 masukan. Untuk itu, standard input dapat dialihkan ke sebuah file teks. Artinya, input tidak lagi dimasukkan dari keyboard, melainkan lewat sebuah file teks. Nantinya file teks inilah yang dibaca setiap kali program di-RUN (sehingga user tidak perlu menginput lagi). Pada Pascal, untuk merubah standard input ke file teks adalah dengan perintah: Assign(input,namafile); Reset(input);

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

57

Bahasa Pemrograman Pascal

Namafile pada perintah assign berupa string yang menunjukkan nama file untuk file yang hendak dibaca. Setelah kedua perintah tersebut, semua perintah READLN, langsung akan membaca dari namafile. Standard Keluaran Standard keluaran pada Pascal adalah layar monitor. Namun layar monitor hanya dapat menampilkan maksimal 25 baris dan 80 karakter tiap barisnya. Jika diminta untuk membuat program yang dapat menampilkan output lebih dari 25 baris, maka layar monitor tidak lagi dapat menjadi standard output yang baik. Untuk merubah standard output pada Pascal: Assign(output,namafile); Rewrite(output);

Namafile berupa string yang menunjukkan nama file yang hendak dibuat / ditulis. Setelah kedua perintah tersebut, hasil output (dari perintah write), akan ditulis pada namafile. Cara lain untuk merubah standard input atau output adalah dengan mendeklarasikan sebuah variable bertipe text. Contoh: Var finput, foutput:text; Begin assign(finput,Input.in); reset(finput); readln(finput,a,b,c); close(input) {... proses ...} assign(foutput,output.out); rewrite(foutput); write(foutput,something); close(foutput); End.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

58

Bahasa Pemrograman Pascal

Perlu diperhatikan agar seperlunya saja membuka file. Jika file tersebut sudah tidak diperlukan lagi, maka sebaiknya diberikan perintah close(f). Begitu juga untuk membuat file, jika output belum siap ditulis karena masih dalam proses, sebaiknya file tersebut tidak di-rewrite terlebih dulu.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

59

Bahasa Pemrograman Pascal

FREE PASCAL
Free Pascal adalah compiler untuk bahasa Pascal. Free Pascal ini didistribusikan secara gratis di bawah lisensi GNU Public. Versi terakhir Free Pascal dapat di download di: http://www.freepascal.org/. Free Pascal tersedia untuk berbagai macam prosesor, yaitu Intel x86, Motorola 680x0 (untuk versi 1.0 saja) dan PowerPC (mulai versi 1.9.2). Selain itu juga mendukung berbagai sistem operasi, yaitu: Linux, FreeBSD, NetBSD, MacOSX, DOS, Win32, OS/2, BeOS, SunOS (Solaris), QNX dan Classic Amiga. IDE (Integrated Developing Environment) IDE menyediakan user interface yang nyaman untuk penulisan program, proses kompilasi serta debugging. IDE Free Pascal adalah aplikasi mode teks yang sama untuk setiap sistem operasi. Dimodelkan mirip dengan IDE di Turbo Pascal versi 7.0. Saat ini IDE Free Pascal ada untuk sistem operasi DOS, Windows, dan Linux. Untuk menjalankan IDE Free Pascal, jalankan file FP.EXE pada direktori instalasi Free Pascal misalnya C:\FP\BIN\GO32V2 (DOS) atau C:\FP\BIN\WIN32 (Windows).

Gambar 4. Tampilan awal IDE Free Pascal Pada bagian paling atas disebut dengan menu bar dan bagian bawah disebut status bar. Area di antaranya disebut dekstop.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

60

Bahasa Pemrograman Pascal

Status bar menunjukkan shortcut keyboard yang akan sering digunakan dan memungkinkan dijalankan dengan mengkliknya. Untuk keluar dari IDE ini, dapat memilih menu File Exit atau dengan menggunakan shortcut kombinasi tombol Alt-X. Catatan: Jika file FP.ANS ditemukan pada current directory (directory / folder tempat IDE dijalankan), maka tampilan desktop akan diambil dari file tersebut. File ini berisi perintah penggambaran untuk layar dalam standard ANSI. Pengeditan pada IDE Pengeditan teks pada IDE sama seperti pada editor lain. Insert Mode Secara standard, mode pengeditan pada IDE Free Pascal adalah insert mode. Artinya semua teks yang diketikkan akan diletakkan di samping teks yang ada setelah posisi kursor. Pada Overwrite mode, teks yang diketikkan akan menimpa teks yang ada. Untuk mengubah dari insert mode ke overwrite mode atau sebaliknya, tekan Ins atau Ctrl-V. Blok Teks dapat diblok dengan 3 cara. 1. Menggunakan mouse dengan melakukan drag pada teks yang hendak diblok 2. Menggunakan keyboard dengan menekan Ctrl-K B sebagai awal teks yang hendak diblok dan Ctrl-K K sebagai akhir dari blok. 3. Menggunakan keyboard dengan menahan tombol Shitf, lalu mengarahkan kursor (dengan tombol panah) ke akhir dari blok. 4. Ctrl K L untuk memilih satu baris 5. Ctrl K T untuk memilih satu kata Perintah-perintah yang berlaku saat ada pengeblokan adalah: 1. Menggerakkan blok ke lokasi kursor (Ctrl K V) 2. Salin blok ke lokasi kursor (Ctrl K C) 3. Hapus blok (Ctrl K Y) 4. Tulis blok ke file (Ctrl K W) 5. Membaca isi file (Ctrl K R) 6. Meng-indentasi (maju) blok (Ctrl K I) 7. Meng-unindentasi (mundur) blok (Ctrl K U) 8. Mencetak blok (Ctrl K P)

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

61

Bahasa Pemrograman Pascal

Bookmark (menandai) Untuk menandai suatu posisi, Free Pascal dapat memberikan tanda hinggak 9 bookmarks dalam sebuah file. Untuk menandai suatu posisi, dengan menggunakan Ctrl K | [1-9], sedangkan untuk menuju ke tanda tersebut menggunakan Ctrl Q | [1-9] Syntax Highlight IDE Free Pascal mampu memberikan Syntax highlight (warna yang berbeda untuk tiaptiap sintaks). Syntax highlight ini dapat diatur di menu Options Environment Colors. Pada kotak dialog color, grup syntax harus dipilih terlebih dulu. Yang dapat diubah syntax highlight adalah: Whitespace, warna teks yang kosong / spasi antar kata. Comments, komentar dalam Free Pascal Reserved Word, kata-kata yang dikenal oleh Free Pascal Strings, ekspresi untuk string Numbers, angka dalam notasi desimal Hex Number, angka dalam notasi heksa desimal Assembler, blok untuk bahasa Assembler Symbol, simbol-simbol yang dikenali Directive, compiler directive Tabs, karakter tab Code Completion Code completion artinya editor akan memberikan kemungkinan perintah yang akan diketik untuk dilengkapi. Ini dilakukan dengan melakukan pengecekan teks yang diketikkan, lalu editor akan memberikan daftar kata kunci yang mungkin dimaksud oleh user. Tekan Enter untuk menerima daftar kata kunci tersebut.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

62

Bahasa Pemrograman Pascal

Code completion dapat diatur di kotak dialog Code Completion lewat Options Environment Codecompletion. Daftar kata kunci dapat dikelola di sini.

Gambar 5. Kotak dialog untuk mengelola kata kunci Code Templates Code Templates adalah sebuah cara untuk memasukkan kode-kode perintah secara sekaligus. Setiap code templates diidentifikasi dengan nama yang unik. Nama untuk code templates dapat diasosiasikan dengan kode-kode perintah. Misalnya nama forto dapat diasosiasikan dengan kode-kode perintah berikut: FOR TO Begin End Code templates dapat dimasukkan dengan mengetikkan namanya, lalu menekan Ctrl-J ketika kursor berada di posisi nama template. Code templates ini dapat diatur di menu Options Environment Codetemplates.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

63

Bahasa Pemrograman Pascal

Gambar 6. Kotak dialog untuk mengatur code templates Menjalankan Program Program yang telah dikompilasi dapat dijalankan langsung lewat IDE, yaitu dengan : Pilih menu Run Run atau Tekan Ctrl F9 Bila ada parameter yang perlu diberikan untuk program, dapat ditambahkan pada Run Parameter seperti pada gambar 7.

Gambar 7. Kotak dialog untuk menambahkan parameter Saat program di-run, akan terus berjalan hingga: 1. Program berhenti dengan normal 2. Terjadi error 3. Karena ada breakpoint dalam program atau

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

64

Bahasa Pemrograman Pascal

4. Program di reset oleh user. Alternatif terakhir hanya mungkin terjadi apabila program dikompilasi dengan debug information Untuk menjalankan program hingga baris tertentu, dapat dilakukan dengan: Pilih Run Goto Cursor atau Tekan F4 pada posisi yang diinginkan

Ini juga dapat ilakukan hanya apabila program dikompilasi dengan debug information. Program dapat dijalankan dengan mengeksekusi baris demi baris. Tekan F8 untuk menjalankan sebuah perintah. Penekanan F8 secara berturut-turut akan menjalankan program baris demi baris. Jika diinginkan agar eksekusi masuk dalam subrutin, maka dapat dilakukan dengan menekan F7. Saat masuk dalam sebuah subrutin, pilih Run Until return untuk menjalankan program hingga akhir subrutin tersebut. Jika program memang harus dihentikan sebelum berhenti dengan normal, maka dapat melakukan: Pilih Run Program reset atau Tekan Ctrl F2

Program akan segera berhenti. Namun perlu diingat bahwa file-file yang terbuka (oleh perintah assign, reset) tidak secara otomatis tertutup. Debug Program Dengan melakukan debugging program dapat dimungkinkan: Menjalankan program baris demi baris Menjalankan program hingga baris tertentu (breakpoint) Melihat isi dari variabel memori sementara program berjalan

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

65

Bahasa Pemrograman Pascal

Breakpoint akan mengakibatkan program berhenti pada baris di mana breakpoint

diset/ditentukan. Pada saat ini, proses dikembalikan pada IDE dan dimungkinkan untuk dijalankan kembali. Untuk melakukan set menentukan breakpoint, pada baris yang diinginkan pilih menu Debug Breakpoint atau dengan menekan Ctrl F8. Untuk menghapus breakpoint, dapat dengan menekan kembali Ctrl F8.

Gambar 8. Tampilan breakpoint Fasilitas Watch adalah fasilitas untuk melihat isi variabel memori pada saat program dihentikan (oleh breakpoint). Watch ditampilkan di window ba ru dengan memilih menu Debug Add Watch atau dengan menekan Ctrl F7. Gambar 9 menunjukkan kotak dialog untuk watch.

Gambar 9. Kotak dialog watch.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

66

Bahasa Pemrograman Pascal

Setelah memasukkan nilai pada kotak dialog watch, tekan Enter. Akan muncul window baru, yaitu window watch (gambar 10).

Gambar 10. Window watch Untuk berpindah antar window (dari watch ke window program atau sebaliknya, dapat menggunakan tombol F6 atau Shift-F6). Sedangkan untuk mengatur window, gunakan menu Window Cascade.

Free Pascal vs Turbo Pascal Berikut adalah hal-hal yang diizinkan di Turbo Pascal namun tidak berlaku di Free ascal, yaitu: 1. Duplikasi label untuk case tidak diizinkan. Ini merupakan bug pada Turbo Pascal, dan Free Pascal masih tetap mempertahankan. 2. Parameter list yang dideklarasikan pada function atau procedure sebelumnya, harus benar-benar persis untuk function atau procedure yang sesungguhnya. 3. Variabel Mem, MemW, MemL dan Port tidak berlaku lagi di Free Pascal. 4. PROTECTED, PUBLIC, PUBLISHED, TRY, FINALLY, EXCEPT, RAISE merupakan kata-kata tercadang (reserved word ) 5. Kata tercadang FAR dan NEAR tidak lagi berlaku lagi, karena Free Pascal adalah compiler 32 bit 6. INTERRUPT hanya berlaku untuk mode DOS 7. File yang dibuka dengan perintah rewrite hanya dapat ditulisi saja, tidak dapat dibaca. Untuk dapat membaca, maka harus diberikan perintah reset.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

67

Bahasa Pemrograman Pascal

Berikut adalah tambahan Free Pascal dibandingkan Turbo Pascal: Ada lebih banyak reserved word. Function dapat mengembalikan tipe kompleks seperti record dan array Function dapat dihandle dalam function itu sendiri, contoh: function a : longint; begin a:=12; while a>4 do begin {...} end; end; Contoh di atas dapat dijalankan dalam Turbo Pascal, namun compiler mengasumsikan bahwa perintah while a>4 do adalah pemanggilan fungsi secara rekursif (pada Turbo Pascal). Untuk Free Pascal, pemanggilan rekursif pada kasus di atas adalah dengan menambahkan () (kurung bukantutup) pada a. function a : longint; begin a:=12; { pemanggilan secara rekursif } if a()>4 then begin {...} end; end; 4. Pemanggilan EXIT dapat dengan memberikan nilai kembali function a : longint; begin a:=12; if a>4 then begin exit(a*67); {function menghasilkan a*67 } end; end; 5. Free Pascal mendukung adanya fungsi yang overloading . Artinya kita bisa mendefinisikan nama fungsi yang sama dengan parameter yang berbeda, contoh: procedure DoSomething (a : longint);

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

68

Bahasa Pemrograman Pascal

begin {...} end; procedure DoSomething (a : real); begin {...} end; 6. Mendukung nama file panjang. Mulai Windows 95, nama file dapat sepanjang 255 karakter. Free Pascal dapat mendukung penyimpanan dengan nama file panjang.

UPT SMU Negeri 1 Pasuruan Kelas X Semester I

69

Anda mungkin juga menyukai