modul pemrograman pascal toki smansasoo

42
TOKI Smansasoo Goes to OSN 2009 Tim Olimpiade Komputer SMAN 1 Sooko | 1 MODUL 01 DASAR PEMROGRAMAN PASCAL 1.1 Pengenalan : menulis, menyimpan, run, compile. Run adalah menjalankan program yang diketik pada jendela editor. Compile adalah mengubah bahasa pemrograman tingkat tinggi yang telah diketik ke bahasa mesin dan menyimpannya ke disk dalam bentuk executetable program. 1. Tulis potongan program dibawah 2. Simpan ke dalam file sooko1.pas 3. Compile program ini. 4. Jalankan menu run 5. Jalankan menu debug user screen untuk melihat hasilnya 1.2 Kerangka Program Pascal Program Pascal merupakan kumpulan fungsi, prosedur, dan variable. Sebuah fungsi merupakan sekumpulan baris program yang mengerjakan tugas tertentu dan mengembalikan hasilnya. Sebuah fungsi terdiri dari sebuah nama fungsi, daftar variable, satu blok kode yang membentuk fungsi tersebut. Sebuah blok dimulai dari kata “begin”, diikuti dengan beberapa statement dan diakhiri dengan kata “end”. PROGRAM namaProgram (File List); CONST { deklarasi Constanta } TYPE { deklarasi Type } VAR { deklarasi Variable} BEGIN { Statement yang akan dijalankan } END. { File : first .pas} Program kesan; Begin Writeln(‘Tim olimpiade komputer’); End.

Upload: indahshafira

Post on 07-Dec-2014

669 views

Category:

Technology


11 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 1

MODUL 01 DASAR PEMROGRAMAN PASCAL

1.1 Pengenalan : menulis, menyimpan, run, compile. Run adalah menjalankan program yang diketik pada

jendela editor. Compile adalah mengubah bahasa pemrograman tingkat tinggi yang telah diketik ke bahasa mesin dan menyimpannya ke disk dalam bentuk executetable program. 1. Tulis potongan program dibawah

2. Simpan ke dalam file sooko1.pas 3. Compile program ini. 4. Jalankan menu run 5. Jalankan menu debug user screen untuk melihat

hasilnya

1.2 Kerangka Program Pascal Program Pascal merupakan kumpulan fungsi, prosedur,

dan variable. Sebuah fungsi merupakan sekumpulan baris program yang mengerjakan tugas tertentu dan mengembalikan hasilnya. Sebuah fungsi terdiri dari sebuah nama fungsi, daftar variable, satu blok kode yang membentuk fungsi tersebut. Sebuah blok dimulai dari kata “begin”, diikuti dengan beberapa statement dan diakhiri dengan kata “end”. PROGRAM namaProgram (File List); CONST { deklarasi Constanta } TYPE { deklarasi Type } VAR { deklarasi Variable} BEGIN { Statement yang akan dijalankan } END.

{ File : first .pas} Program kesan; Begin Writeln(‘Tim olimpiade komputer’); End.

Page 2: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

2 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

1.3 Tanda – tanda baca dalam pascal Berikut beberapa tanda baca yang ada dalam bahasa pascal berikut fungsinya :

Tanda Baca Kegunaan . Akhir dari program utama : Deklarasi tipe konstanta, variable dan fungsi ; Akhir dari suatu perintah = Inisialisasi Konstanta .. Menyatakan range dalam array , Pemisah antara nama – nama variabel ^ Tanda control atau tanda penunjuk (pointer)

contoh:

Program contoh2 ; Uses crt; Const Pi=3.14; Function luas_lingkaran (r : integer): real; Begin Luas_lingkaran:=pi*r*r; End; Var hasil : real ; data_nilai1,data_nilai2 : array [1..44] of integer; p: ^real; begin

clrscr; hasil := luas_lingkaran(5); p^:=hasil; writeln(^G,’luas lingkaran dengan r = 5 adalah ‘,hasil); readln;

end.

Program contoh ; Uses crt; Function tambah (x,y: integer): integer; Begin Tambah:=x+y; End; Var hasil : integer ; begin clrscr; hasil := tambah(5,5); writeln(‘5+5 = ’,hasil); readln; end.

Page 3: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 3

1.4 Pengenal (identifier) Syarat-syarat penamaan sebuah identifier adalah : a. Dapat sepanjang apapun b. Harus diawali dengan huruf atau underscore(_) c. Karakter ke dua dan selanjutnya dapat berupa huruf, angka

, atau underscore d. Tidak boleh ada 2 identifier dalam satu program e. 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

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 …… End.

Pada program diatas, terdapat 4 buah identifier, yaitu coba1 sebagai nama program, a,b digunakan sebagai identifier dari deklarasi var, dan c sebagai identifier nama type.

Page 4: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

4 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

1.5 Reserved word

1.6 Tipe Data

Tipe data menyatakan pola penyajian data dalam computer: karakter, bilangan, string, record. Dalam Pascal tipe data digolongkan menjadi 4 yaitu tipe data standart, tipe data di definisikan oleh pemakai, tipe data terstruktur dan tipe data penunjuk. Tabel dibawah menampilkan beberapa tipe data standart dan domainnya yang dikenal dalam pascal.

Nama Tipe byte Jangkauan Bilangan Byte 1 0..255 Char 1 -128… 127

Integer 2 -32768..32767 Word 2 0..65535

LongInt 4 -2147483648….2147483647 Real 4 Le-38 … le+ 38

String N+1 Boolean 1 0…1

Page 5: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 5

1.7 Variable

Variabel adalah penampung data yang isinya dapat diubah-ubah di dalam program. Data yang dapat disimpan adalah data sesuai dengan tipenya.

Nama variabel terdiri dari huruf, angka dan garis bawah, dan hanya dapat didahului oleh huruf atau garis bawah dengan ketentuan : a. Nama variabel tidak dapat disela dengan spasi b. Tidak dapat menggunakan reserved words c. Huruf besar dan huruf kecil sama saja d. Panjang variabel yang dianggap/ dikenal hanya 63

karakter pertama Deklarasi Variable Sebelum bisa digunakan maka variable harus dideklarasikan terlebih dahulu. Pendeklarasian berarti memesan ruang di memori dan menyatakan tipe data yang bisa disimpannya. Bentuk umum Var Daftar_variabel : tipe_data; Contoh Var Incl, bill : integer,

Page 6: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

6 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

Flagl : char, Nama : array[1..10] of char, Pemberian (assignment) nilai ke variable Pemberian nilai hanya bisa dilakukan setelah sebuah variabel dideklarasikan. Bentuk umum Variable := nilai; Contoh Incl := 0; Bill := 10;

1.8 Konstanta Konstanta berbeda dengan variable, dimana isi dari konstanta tidak bisa diubah dengan cara pemberian (assignment) nilai. Bentuk umum Const Variable=nilai Contoh Const Pi = 3,14; Chl = ’A’;

1.9 Menampilkan Data dengan write dan writeln Fungsi write digunakan untuk mencetak data ke layar

tanpa berganti baris setelahnya Fungsi writeln digunakan untuk mencetak data ke layar

dengan berganti baris setelahnya String yang dicetak bisa ditambahi karakter khusus

(escape sequence) yang didahului dengan tanda “#” misalnya Baris baru (#10), Bel (#7).

Mencetak dengan menggunakan format Untuk mencetak pada posisi x, y layar, digunakan

perintah GOTO baru setelah itu digunakan perintah write. Untuk dapat menggunakan perintah ini program harus melibatkan unit standar Crt

Untuk mengeset warna teks dan background teks digunakan perintah text color dan text background

Page 7: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 7

1.10 Menerima masukan dengan read dan readln Prosedur read dapat digunakan untuk menerima masukan dari keyboard. Tiap-tiap data yang dimasukkan harus sesuai dengan tipe variabelnya. Prosedur readln untuk memasukkan data perbaris, artinya setelah di tekan maka akan ganti baris, sedangkan prosedur read tidak Bentuk Umum Read (nama_variabel); Contoh Read (bil1); Readln (bil1); Contoh :

/* File : write.pas */ Program masukan ; Uses crt; Var Bil1 : integer; Real1 : real ; ch1 : char ; begin

write(‘Masukkan bilangan bulat : ’); read(bil1); writeln(‘Bilangan yang dimasukkan adalah’, bil1); writeln(‘Masukkan bilangan real : ’); read(real1); writeln(‘Bilangan yang dimasukkan adalah’,real1:8:3); writeln(‘Masukkan satu karakter : ’); read(ch1); writeln(‘Karakter yang dmasukkan adalah ’,ch1:3);

end.

Page 8: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

8 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

1.11 Tentang daftar shortcut pada Free Pascal

Page 9: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 9

MODUL 02 OPERATOR

Operator merupakan suatu simbol yang digunakan untuk operator dan manipulasi data dalam. Dalam bahasa Pascal Operator dikelompokkan dalam 9 kategori. 2.1 Operator Assignment

Merupakan operator yang berfungsi untuk memberikan suatu nilai ke sebuah variabel. Bentuk umum Variabel := 50,75;

2.2 Operator Binary Merupakan Operator yang berfungsi untuk mengoperasikan dua operand. Operand dapat berupa konstanta ataupun variabel. Digunakan untuk operasi aritmatika.

Tabel 2.1 Operator Binary Operator Operasi Tipe operand Tipe hasil

+ Penambahan Integer, real Integer, Real

- Pengurangan Integer, Real Integer, Real

* Perkalian Integer, Real Real, Real

/ Pembagian Integer, Real Real, Real

DIV Pembagian, bulat

Integer Integer

MOD Sisa Integer Integer

contoh 1:

{File : opr_binary.pas} Program binary; begin writeln(‘ 5 + 3 = ’,5+3); writeln(‘ 3 – 5 = ’,3-5); writeln(‘ 5 * 3 = ’,5*3); writeln(‘ 5 / 3 = ’,5/3); writeln(‘ 5 div 3 = ’,5 div 3); writeln(‘ 5 mod 3 = ’,5 mod 3); end.

Page 10: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

10 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

Contoh2 Soal OSP 2008

2.3 Operator Unary Disebut operator unary karena operator ini hanya menggunakan sebuah operand saja. Operator ini dapat berupa unary plus dan unary minus. Unary plus untuk menunjukkan tanda positif pada suatu bilangan dan unary minus untuk menunjukkan tada negatif. Misal : -25 not 1 +25 not 12 Not(true)

2.4 Operator Bit.

Merupakan opetrator yang berfungsi untuk operasi bit per bit pada nilai integer.

Tabel 2.2 Operasi Bit Operator Operasi Tipe Operand Hasil operasi NOT Negasi Integer Integer AND And Integer Integer OR Or Integer Integer XOR Xor Integer Integer Shl Shift left Integer Integer Shr Shift right Integer Integer

Contoh 2:

Page 11: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 11

Contoh 3;

2.5 Operator Relasi Merupakan operator yang berfungsi untuk membandingkan

hubungan antara dua buah operand dan akan didapatkan hasil tipe boolean, yaitu true atau false.

Tabel 2.3 Operator Relasi Operator Operasi Operator Operasi < Lebih kecil >= Lebih besar atau

sama dengan. <= Lebih kecil atau

sama dengan = Sama dengan

> Lebih besar <> Tidak sama dengan

IN Seleksi dari angka himpunan

{File : opr_bit.pas} Program opr_bit; Begin

writeln(‘not 0 =’,not 0); writeln(‘not 1 =’,not 1); writeln(‘1 or 2 =’,1 or 2); writeln(‘1 and 2 =’,1 and 2); writeln(‘1 shr 2 =’,1 sh1 2);

end.

{File : decbiner.pas} Program dec_biner; Var dec : integer; Begin

writeln(‘Masukkan angka Integer : ’); readln(dec); writeln(‘’); writeln(‘Nilai binernya : ’); writeln(dec shr 7 and 1); writeln(dec shr 6 and 1); writeln(dec shr 5 and 1); writeln(dec shr 4 and 1); writeln(dec shr 3 and 1); writeln(dec shr 2 and 1); writeln(dec shr 1 and 1); writeln(dec shr 0 and 1); readln;

End.

Page 12: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

12 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

2.6 Operator Logika Terdapat 4 buah operator logika, yaitu Not, And, Or, Xor. Bentuk

operator ini sama dengan operator bit. Namun pengunaannya lain. Operator ini bekerja dengan nilai-nilai logika yaitu true dan false.

Tabel 2.4 Kebenaran operasi AND dan OR

Operator AND Kondisi 1 Kondisi 2 Hasil Salah Salah Salah Salah Benar Salah Benar Salah Salah Benar Benar Benar

Operator OR Kondisi 1 Kondisi 2 Hasil Salah Salah Salah Salah Benar Benar Benar Benar Benar Benar Benar Benar

Operator XOR Kondisi 1 Kondisi 2 Hasil Salah Salah Salah Salah Benar Benar Benar Benar Benar Benar Benar Salah

2.7 Operator Alamat Turbo Pascal memberikan dua buah operator khusus yang

berhubungan dengan alamat di memori. Tabel 2.5 Operator alamat.

Operator Keterangan @ Alamat dari operator akan menghasilkan alamat

dari suatu variabel ^ Akan memberikan nilai dari alamat yang

ditunjukkan suatu variabel pointer. Penjelasan lebih lanjut akan dibahas pada bab 8.

Page 13: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 13

2.8 Operator Set Merupakan operator yang digunakan untuk operasi himpunan.

Tabel 2.6 Operator set Operator Operasi + Union - Perbedaan Himpunan * Perkalian Himpunan

2.9 Operator String

Merupakan operator yang digunakan untuk operasi string. String1+String2;

{ File : opt_str.pas} Program opt_str; Uses crt; Var Nama1, Nama2, Nama3 : String[15]; Begin Clrscr; Nama1 :=’Budi ‘; Nama2 :=’Santosa ‘; Nama3 := Nama1+Nama2; Writeln (Nama3); Readkey; End.

Page 14: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

14 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

Page 15: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 15

MODUL 03 STRUKTUR KONTROL PEMILIHAN

3.1 Pernyataan if dengan satu aksi

Gambar 3.1 Flowchart pernyataan if dengan satu aksi

Pada model pernyataan pada gambar 3.1, sebuah aksi akan dikerjakan jika syarat bernilai benar. Bentuk umum :

If (syarat) then aksi1;

Aksi bisa terdiri dari satu baris pernyataan atau berupa sekumpulan (blog) baris pertanyaan. LATIHAN 1

{File : ifl.pas} Program ifl; Uses crt; Var a : Integer; Begin Writeln(‘Contoh if satu kasus’); Write(‘Ketikkan suatu nilai integer :’); Readln (a) ; If (a>0) then Begin Writeln (‘Nilai ‘,a,’ adalah nilai positif’); End; Readkey; End.

Kode 3.1 program ifl.

Page 16: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

16 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

3.2 Pernyataan if dengan dua aksi Uraian Pada model pernyataan gambar 3.2, aksi1 akan dikerjakan jika syarat bernilai benar, sedangkan jika salah maka aksi2 yang dikerjakan. Bentuk umum : If (syarat) then Aksi1 Else Aksi2;

Gambar 3.2 Flowchart pertanyan if dengan dua aksi.

LATIHAN2

{ File : if2.pas} Program if2; Uses crt; Var a : Integer; Begin Writeln (‘Contoh if dua kasus ‘); Write (‘Ketikkan suatu nilai positif’); Readln (a); If (a>0) then Begin Writeln (‘Nilai ‘,a,’ adalah nilai positif’); End Else Begin Writeln (‘Nilai ‘,a,’ adalah nilai negatif’); End; Readkey; End.

Page 17: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 17

3.3 Pernyataan if dengan lebih dari dua aksi Uraian Karena pilihan aksi yang dikerjakan lebih dari dua, maka dapat dibuat model bertingkat/ bersarang/ nested. Gambar 3.3 Flowchart pertanyan if dengan lebih dari dua aksi.

LATIHAN 3 {File : if3.pas} Program if3; Uses crt; Var a : Integer; Begin Writeln ‘Contoh if dua kasus ‘); Write (‘Ketikkan suatu nilai integer :’); Readln(a); If (a>0) then Begin Writeln (‘Nilai ‘,a,’ adalah nilai positif’); End Else If(a=0) then Begin Writeln(‘nilai ‘,a,’ adalah nol’); End Else Begin Writeln(‘Nilai ‘,a,’ adalah nilai negatif’); End; Readkey; End. Kode 3.3 Program if3

Page 18: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

18 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

3.4 Pernyataan case Tangga if-else-if dapat digunakan menguji beberapa

syarat tetapi sulit digunakan pernyataan case of, sebuah variabel dapat secara berturut-turut diuji oleh daftar konstanta (bilangan bulat atau karakter). Jika sesuai dengan sebuah konstanta, maka dikerjakan sesuai dengan pernyataan yang mengikuti konstanta tersebut.

Pernyataan setelah else akan dikerjakan bila tidak ada konstanta yang tidak sesuai. Else bersifat optional, bila tidak ada else maka tidak ada yang dikerjakan. Ada beberapa hal yang perlu diperhatikan : a. Case of hanya dapat memeriksa sebuah konstanta

atau range dari konstanta yang bukan bertipe real. Sedang if dapat memeriksa syarat-syarat lain(<,<,<>,dsb).

b. Tidak ada dua konstanta yang sama dalam sebuah case

LATIHAN 4

{File : case – of.pas} Pogram caseof; Var cc:char; Begin

Writeln(‘ketikkan sebuah huruf, akhiri dengan Enter : ‘) Read(cc); Case cc of ‘0’..’9’ : writeln (‘yang anda ketik adalah angka ‘);

‘a’,’e’,’I’,’u’,’o’ : writeln(‘yang anda ketik adalah huruf vokal’);

‘b’..’d’,’f’..’h’,’j’..’n’,’p’..’t’,’v’..’z’ :writeln (‘ yang anda ketik adalah huruf konsonan’);

Else writeln (‘yang anda ketik adalah karakter’); End; Readln;

End.

Page 19: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 19

MODUL 04 STRUKTUR KONTROL PENGULANGAN Struktur kontrol pengulangan dalam bahasa pemrograman

dikenal dengan loop. Pengulangan dilakukan terus menerus sampai dipenuhi suatu keadaan tertentu. Dalam pascal dikenal tiga jenis pengulangan dan peryataan yang digunakan adalah :

• for • while-do • repeat-until

4.1 Pengulangan dengan for

Perulangan for dapat berbentuk perulangan positif, negatif, dan bersarang. Pada perulangan for diperlukan sebuah variable kontrol, nilai awal untuk inisialisasi, sehingga perulangan bisa dilakukan dan nilai akhir untuk kondisi mengakhiri perulangan.

Bentuk Menaik : for variable-kontrol:=nilai-awal to nilai-akhir do pernyataan;

Bentuk Menurun : for variable-kontrol:=nilai-awal downto nilai-akhir do pernyataan ;

Bentuk loop dalam loop : for variable-kontrol1:=nilai-awal1 to nilai-

akhir1 do for variable-kontrol2:=nilai-awal2 to

nilai- akhir2 do pernyataan ;

LATIHAN 1

Kode 4.1 Program Writefor

{File : writefor.pas} Program Writefor; Var i, N: Integer; Begin Writeln(‘Baca N, print 1 s/d N’); Write(‘N=’); Read(N); for i:=1 to N do Writeln(i); Writeln(‘Akhir Program’); Readln; End.

Page 20: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

20 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

LATIHAN 2

Kode 4.2 Program ForNaik LATIHAN 3

Kode 4.3 Program ForTurun LATIHAN 4

Kode 4.4 Program ForChr LATIHAN 5

Kode 4.5 Program forenum

{File : fornaik.pas} Program ForNaik; Var i, awal,akhir: Integer; Begin awal:=1;

akhir:=5; for i:=awal to akhir do

Writeln(i); read(i); End.

Program ForTurun; Var i, bawah,atas: Integer; Begin bawah:=1;

atas:=5; for i:=atas to bawah do

Writeln(i); read(i); End.

Program ForChr; Uses crt; Var ch:char; Begin

for ch:=’a’ to ‘z’ do Writeln(ch);

ReadKey; End.

Program Forenum; Uses crt; Type Namahari=(senin,selasa,rabu,kamis,jumat,sabtu); Var Hari : NamaHari; Begin

for Hari:=senin to sabtu do Begin Writeln(‘PASCAL’);

End; Readln;

End.

Page 21: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 21

LATIHAN 6

Kode 4.6 Program ForByte LATIHAN 7

Kode 4.7 Program srgloop

4.2 Pengulangan dengan while-do Pada pengulangan jenis ini, pengecekan syarat dilakukan

diawal. Pengulangan dengan while-do ini digunakan untuk melakukan proses perulangan suatu pernyataan terus-menerus selama kondisi ungkapan logika pada syarat masih bernilai logika benar. Bentuk Umum :

while syarat do perintah;

{File : over.pas} Var

x : byte; j : Integer;

Begin J:=265;

for x:=0 to j do {nilai batas yang diberikan melibihi jaringan bilangan}

Writeln(x); Readln; End.

{File : srgloop.pas} Program srgloop; Uses crt; Var

i, j : integer; Begin

clrscr; Writeln(‘Contoh loop dalam loop’);

For i:=1 to 3 do begin for j:=1 to 3 do Write{‘*’}; Writeln(‘ ’); End; End.

Page 22: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

22 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

LATIHAN 8

Kode 4.8 Program while LATIHAN 9

Kode 4.9 Program Priwhile 4.3 Pengulangan dengan repeat-until

Berbeda dengan dua jenis perulangan sebelumnya, syarat perulangan pada Repeat...Until dicek pada akhir perulangan. Repeat...Until digunakan untuk mengulang statemen-statemen sampai (until) kondisi yang diseleksi di Until terpenuhi. Bentuk Umum :

repeat perintah; ... until syarat;

{File : while.pas} Program while; Uses crt; Var

i: Integer; Begin

clrscr; i:=1; while i<=5 do begin

Writeln(i); i:=i+1; end;

ReadKey; End;

{File : priwhile.pas} Program priwhile; Var

N, i : Integer; Begin Writeln(‘Nilai N =’); Read(N); i:=1; while i<=N do

begin writeln(i); i:=i+1; end;

ReadKey; End;

Page 23: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 23

LATIHAN 10

Kode 4.10 Program repeat until

LATIHAN 11

Kode 4.11 Program whiledo LATIHAN 12

Kode 4.12 Program repForv

{File : repeatUn.pas} Program RepeatUntil Var

i : integer; Begin

clrscr; i:=0;

Repeat writeln(i); i:=i+1; until i=5; End.

{File : whiledo.pas} Program whiledo; Uses crt; Var

nama : String[20]; Begin

clrscr; Write(‘Ketik nama siswa( X=selesai ):’); Readln(nama); While (nama[1]<>’X’) do Begin

write(‘Ketik nama siswa ( X=selesai ): ’); readln (nama);

End; End.

{File : RepForv.pas} Program RepForv; Uses crt; Var x : byte; Begin Repeat x:=x+1; Write(x,’ ‘); If keypressed then break; {keluar paksa dari loop tanpa peduli syarat} Until x>=256; End.

Page 24: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

24 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

LATIHAN 13 Soal OSP 2008

LATIHAN 13 Soal OSP 2008 (kombinasi while do – for)

Page 25: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 25

MODUL 05 ARRAY

5.1 Array Satu Dimensi Array adalah deretan variabel yang berjenis sama dan mempunyai nama yang sama. Pada bahasa Pascal, array mempunyai lokasi yang bersebelahan, alamat terkecil menunjukkan elemen pertama dan alamat terbesar menunjuk pada elemen terakhir Bentuk umum : Nama_array:array [ukuran] of tipe

Tipe = menyatakan tipe data dasar Ukuran = menyatakan banyaknya elemen pada array Contoh : Nilai : array[1..10] of Integer;

LATIHAN 1

{File : tabel.pas} Program tabel; Uses crt; Var I,N : Integer; Tab : array[1..10] of Integer; Begin Clrscr; N:=5; Writeln (‘Isi dan print tabel’); For i:=0 to N do Begin Tab[i] := i; End; For i:=0 to N do Begin Writeln(‘Tabel[‘,1,’]=’,tab[i]; End; Readkey; End.

Page 26: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

26 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

LATIHAN 2

5.2 Array Multi Dimensi Dalam bahasa pascal kita dapat membuat array

hingga beberapa dimensi, misalnya array dua dimensi yang pada dasarnya adalah sebuah daftar yang terdiri array-array satu dimensi. Bentuk umum nama array : array[ukuran1] of array [ukuran2] of tipe; nama_array : array[ukuran1, ukuranN] of tipe; tipe = menyatakan tipe data dasar ukuran1 = menyatakn banyaknya element pada array pada dimensi ke-1 ukuranN = menyatakn banyaknya element pada array pada dimensi ke-N

{File : tab_rata.pas} Program rata; Uses crt; Conts MAKS_TES : 5; Var i : Integer; nilai_total, rata-rata : Real; nilai_test : array[1..MAKS_TES] of Real; Begin {Pemasukan nilai}; Writeln (‘Pemasukan 5 buah nilai pada tabel’); For i:=1 to MAKS_TES do Begin Write(‘Nilai tes ke ‘,I,’ : ‘); Readln(nilai_test[i]); End; nilai_total:=0; for i:=1 to MAKS_TES do Begin Nilai_total:=nilai_total+nilai_test[i]; End; {menghitung nilai rata-rata} Rata-rata := total nilai/MAKS_TES; Writeln (‘Nilai rata-rata : ‘,rata_rata:3:2); Readkey; End.

Page 27: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 27

LATIHAN3

5.3 Inisialisasi Array Inisialisasi array dapat dilakukan pada saat

pendeklarasiannya. Pada array multidimensi, inisialisasi dimulai dari dimensi yang paling besar. Untuk setiap dimensi dimulai dari indeks yang paling paling kecil . Pada pascal cara proses inisialisasi diletakkan pada bagian deklarasi konstanta. Const I :array[1..10] of Integer = (12,45,67,34,2,5,60,8,19,21); Matrix :array[1..3,1..4] of Integer = (42,47,63,45,6,43,62,8,19,21);

{File : matrik.pas} Program matrik; Uses crt; Var I,j : Integer; B : array[1..3,1..5] of Integer; Begin clrscr; writeln(‘memasukkan data matrik 3x3 ‘); for I := 1 to 3 do for j:=1 to 3 do begin gotoxy(10+4*I,3+j*2);readln(b[I,j]); end; gotoxy (2,14);textColor(3);write(‘Data matrik yang diinputkan adalah : ‘); textcolor(6); for i:=1 to 3 do for j:=1 to 3 do Begin Gotoxy(10+4*I,15+2*j);write(b[I,j]); End; Readkey; End.

Page 28: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

28 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

Page 29: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 29

MODUL 06 PROCEDURE DAN FUNCTION

6.1 Procedure Procedure merupakan blok baris perintah sebagai sebagai satu kesatuan yang mengerjakan tugas khusus Keuntungan menggunakan procedure : 1. Program menjadi terstruktur 2. Dapat mengurangi pengulangan kode Procedure dipanggil dan digunakan di dalam blok baris perintah yang lainnya dengan menyebutkan judul procedurnya. Procedure dapat menerima nilai dari luar ataupun mengirimkan nilai keluar yang dilewatkan melalui parameter. Terkait dengan procedure, dikenal dua macam variabel yaitu : 1. Variabel loKal : variabel yang dideklarasikan di dalam

procedure, variabel ini tidak dikenal di luar procedure 2. Variabel global : Variabel yang dideklarasikan di luar

semua procedure, sehingga akan dikenal di seluruh bagian program.

Bentuk umum Procedure nama_procedure(deklarasi parameter); Begin …………………… End;

Dalam pascal ada dua jenis pengiriman parameter: 1. Pengiriman parameter secara nilai (by value)

Bila parameter dikirim secara nilai, parameter formal, maka perubahan-perubahan yang terjadi pada nilai parameter formal di procedure tidak akan mempengaruhi nilai parameter nyata

2. Pengiriman parameter secara acuan (by reference) Bila parameter dikirim secara nilai, parameter formal, maka perubahan-perubahan yang terjadi pada nilai

Page 30: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

30 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

parameter formal di procedure akan mempengaruhi nilai parameter nyata

LATIHAN 1

6.2 Function Function mirip dengan procedure, bedanya function

harus mengembalikan suatu nilai. Nilai yang dikembalikan terdapat pada nama function. Bentuk umum Nama function(deklarasi parameter):tipe data; Begin ……………nama function:=nilai; End;

{File : procedur.pas} Program procedur; Uses crt; Var a : Integer; {parameter by value} Procedure ubah1(x:integer); Begin writeln(‘parameter by value‘); writeln(‘Nilai akan diubah menjadi 5‘); x:=5; end; {parameter by reference} Procedure ubah2(var x:integer); Begin Writeln(‘parameter by reference’); Writeln(‘Nilai akan diubah menjadi 5’); x:=5; end; begin clrscr; a:=10; writeln(‘Nilai sebelum diubah adalah ‘, a); ubah1 (a); writeln(‘nilai setelah diubah adalah ‘,a); ubah2(a); writeln(‘nilai setelah diubah adalah ‘,a); readln; end.

Page 31: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 31

LATIHAN 2

LATIHAN 3 SOAL OSP 2008

{File : fungsi1.pas} Program fungsi1; Uses crt; Var a, b, c : Integer; {funsi memakai parameter by value} Function tambah(a,b:integer): Integer; Begin Tambah:=a+b; end; Begin Clrscr; Write(‘A = ‘); Readln (a); Write (‘B = ‘); Readln (b); c:=jumlah(a,b); writeln (‘Jumlah tersebut adalah : ‘,c); readln; end.

Page 32: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

32 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

Page 33: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 33

MODUL 07 STRING

7.1 Pendeklarasian String String merupaka salah satu type data bentukan untuk

menyatakan data teks kalimat atau serangkaian karakter. Pada bahasa Pascal panjang maksimum string yang diijinkan adalah 255 karakter.

Bentuk Umum. Nama_variable : string[panjang string]; Nama_variabel : string;

Bila tidak di sebutkan panjang string maka secara default panjangnya adalah 255. Contoh

Nama : String[15];

Mendeklarasikan variabel string nama dengan panjang karakter 15. 7.2 Memasukkan Data String dengan read/readln

Pemasukkan data string ke dalam suatu variabel bisa dilakukkan dengan memakai read ataupun readln. Fungsi read/readln akan membaca seluruh karakter yang akan diketik sampai tombol enter ditekan. Dalam hal ini tidak ada pengecekan terhadap batas array. Panjang string dikurangi ukuran array ditambah karakter NULL.

Bentuk umum. read(nama_array); readln(nama_array);

7.3 Inisialisasi String Inisialisasi string bisa dilakuan dengan assignment karakter

per karakter ataupun tidak. Bentuk Umum

nama_variabel[]=data_string;

Contoh Const :

Nama1:String = {‘T’,’U’,’R’,’B’,’ ’,’C’,’\0’}; Nama2:String = ‘Tim Olimpiade Komputer’;

Page 34: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

34 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

7.4 Menampilkan Isi Variabel String Ke Layar Untuk menampilkan isi variabel string, pernyataan yang

dapat digunakan perintah write atau writeln. Bentuk Umum

Writeln(var_string); Write(var_string);

7.5 Mengakses Elemen String

Variabel string merupakan bentuk khusus dari array bertipe char, oleh karena itu elemen dari variabel string dapat diakses seperti pengaksesan elemen array.

{File : str.pas} Program str; Uses crt; Var kompiler : string; Procedure bentuk1; Begin

kompiler=’Bentuk 1’; write(kompiler); end;

end; pocedure bentuk2; begin

kompiler=’Bentuk 2’; writeln(kompiler);

end; begin

bentuk1(); bentuk2(); readln;

end.

{File : hitkar.pas} Program hitkar; Const maks=256; Var teks : string(maks); Jumkar i: Integer; Begin

Writeln(‘Masukkan suatu kalimat : ’); Readln(teks); Jumkar := 0; For i:=0 to maks do

If teks[i]=’a’ then Jumkar:=jumkar+1;

Writeln(‘jumlaah karakter a = ’,jumkar); end;

Page 35: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 35

7.6 Beberapa Fungsi Mengenai String Pascal menyediakan fungsi untuk memanipulasi string,

diantaranya: Tabel 7.1 Fungsi manipulasi string

Fungsi/ procedure

Bentuk pemakaian Kegunaan

Insert Insert( sumber : String , tujuan : String , Indeks : Integer)

Menyisipi string mulai pada posisi indek dengan string sumber.

Str Str(x:width:decimal, s:string) Mengubah Nilai numerik (x) menjadi string (s)

Val Val(NilaiString,NilaiNumerik, PosisiSalah)

Mengkonversi NilaiString menjadi nilai Numerik posisiSalah bernilai nol bila tidak terjadi kesalahan dalam proses konversi.

Copy Str1:=Copy(str2,index,count) Menyalin karakter sejumlah count mulai posisi index.

Concat Str:=concat(s1,s1,...,sn) Merangkai beberapa string, sama dengan operator string ‘+’

Pos Index:=pos(substr,string) Mencari posisi dari suatu substring dalam string

Length Panj:=length(str) Menghitung panjang atau jumlah karakter dalam string.

contoh :

var s : string; begin s := 'TOKI'; insert('KI', s, 2); writeln(s); end.

var s : string; begin s:='TOKI GO GET GOLD!'; delete(s, 1, length(s)-12); writeln(s): end.

Var A,B: String; C: String[10]; Begin A:='TOKI MEMANG'; B:='HEBAT'; C:=A+B; if (Pos(B)>0) Then Begin Writeln('A'); end else Writeln('B'); end.

Page 36: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

36 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

7.7 String Sebagai Parameter Fungsi String sebagai parameter fungsi pada dasarnya sama

dengan array sebagai parameter fungsi, karena string dapat dianggap array dari karakter.

{File : kiri.pas} Program kiri; Var kalimat : string;

I, panj : Integer; Procedure strkiri(strin:string;n : Integer:var strhasil:string); Var i:Integer; Begin

Strhasil1:=copy(strin,1,n) End; Begin

Panj:=length(); For i=0 to panj do Begin

Strkiri(kalimat, panj-1, hasil); End;

End.

Page 37: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 37

MODUL 08 RECORD

Merupakan tipe data terstruktur, dimana beberapa variabel dengan tipe data berbeda dapat dikumpulkan bersama dan mengacu pada suatu nama yang sama

Record dipakai untuk menyatakan informasi yang berhubungan

Variabel-variabel yang membentuk sebuah record dinamakan field, record di dalam Pascal sama dengan struktur pada C

Bentuk umum Type Nama_record = Record Tipe_data variabel : tipe – data; . . . Tipe_data variabel N : tipe – data; End; Contoh

Variabel siswa1, siswa2, adalah variabel record yang bertipe dt_siswa. 8.1 Operasi Terhadap Field Record

Field Record dapat dapat ditunjuk dengan memakai operator titik. Misalnya, variabel siswa1 bertipe record seperti contoh di atas, maka mengisi nilai dengan 72.5 dilakukan dengan : Siswa1.nilai := 72.5;

Mencetak isi dari elemen nama Writeln (‘Nama siswa adalah ‘, siswa1.nama);

Memberi nilai data alamat Read (siswa1.alamat);

Type dt_siswa = Record { deklarasi tipe data record } nrp : string [7]; nama : string [20]; alamat : string [40] nilai : real; end; Var Siswa1,siswa2 : dt_siswa; { deklarasi variabel record siswa }

Page 38: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

38 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

LATIHAN 1

8.2 Inisialisasi Record Cara menginisialisasi record sama dengan variabel-

variabel lain. Inisialisasi dapat dilakukan tersendiri atau bersama-sama dengan pendefinisian format record.

{ file : record.pas} Program record; Uses crt; Type dt_siswa = record nrp : string [7]; nama : string [20]; alamat : string [40]; nilai : real; end; Var Siswa1 : dt_siswa; Function index ( nilai : real ) : Char; Begin If (nilai>=90) then Index := ‘A’ Else if nilai>=75 then Index := ‘B’ Else if nilai >=60 then Index := ‘C’ Else if nilai >= 50 then Index := ‘D’ Else Index := ‘E’; End; Begin Clrscr; Write (‘masukkan NRP : ‘); Readln(siswa1.nrp); Write(‘Masukkan Nama : ‘); Readln(siswa1.nama); Write(‘Masukkan Alamat : ‘); Readln(siswa1.alamat); Write(‘Masukkan Nilai : ‘); Readln(siswa1.nilai); Clrscr; Writeln(‘Data yang anda masukkan :’); Writeln(‘NRP : ‘,siswa1.nrp); Writeln(‘Nama : ‘,siswa1.nama); Writeln(‘Alamat : ‘,siswa1.alamat); Writeln(‘Nilai : ‘,siswa1.nilai:3:2); Writeln(‘Index nilai yang diperoleh ‘, index(siswa1.nilai)); Readkey; End.

Page 39: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 39

MODUL 09 OPERASI FILE Untuk dapat diolah lebih lanjut, maka data perlu disimpan dalam sebuah file. Sebuah file terdiri dari kumpulan record yang mempunyai tipe yang sama. Operasi terhadap file umumnya terdiri dari:

1. Operasi untuk membuka dan mencipta file. 2. Melakukan proses terhadap file. 3. Menutup file.

9.1 Membuka dan Menciptakan File Sebelum sebuah file dapat diakses, maka file harus dibuka terlebih dahulu. Berikut adalah langkah-langkah yang harus dilakukan ketika membuka file:

1. Mendeklarasikan variabel bertipe file yang menunjuk ke file. Var File_variabel : file of tipe_file;

2. Menghubungkan variabel ke file. Assign(file_variabel, nama_file);

3. Membuka/menciptakan file. Ada beberapa perintah dalam pascal untuk membuka file, yaitu: a. Membuka file untuk pembacaan.

Reset (file_variabel);

b. Membuka file untuk penambahan. Append(file_variabel);

c. Menciptakan file Rewrite(file_variabel);

Catatan : jika file yang diciptakan sudah ada, maka akan menghapus file tersebut dan mencipatakan yang baru dan masih kosong.

Page 40: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

40 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o

9.2 Melakukan proses terhadap file Setelah file dapat dibuka atau diciptakan, dapat dilakukan pemrosesan data dari file, yaitu :

1. Membaca isi file. Read(file_variabel, variabel_data); Readln(file_variabel, variabel_data);

2. Menulis ke file. Write(file_variabel, variabel_data); Writeln(file_variabel, variabel_data);

9.3 Menutup file Setelah file selesai diproses, maka file perlu ditutup.

Close(variabel_file);

Variabel_file adalah variabel yang menunjuk ke file. 9.4 File Biner dan File Teks 1. File dapat dibedakan menjadi dua jenis yaitu biner dan teks. File

biner menyimpan data dalam bentuk biner. Sedangkan file teks menyimpan data dalam bentuk karakter. Data integer 255 dalam file biner akan selalu memerlukan dua byte memory. Disimpan dalam bentuk 11111111. Sedangkan dalam file teks data 255 akan disimpan sebagai karakter 2,5,5.

2. Mode pengaktifan seperti dijelaskan pada modul 13.1 perlu ditambahi t untuk file teks, dan b untuk file biner. Misalnya mode w menjadi wt untuk membuat file teks, atau wb untuk membuat file biner.

9.5 Memakai feof() Fungsi ini dipakai untuk memdeteksi akhir file saat membaca data.

Function eof(Fvariabel_file):bool;

Hasilnya akan true jika akhir file sudah tercapai.

Page 41: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o | 41

Kode 9.1 Program Ptr.

Kode 9.2 Pogram Tulis

{File : baca.pas} Program baca; Uses crt; Var

F : text; s : string;

begin clrscr; write(‘masukkan nama file yang akan dibaca : ’); readln(s); assign(F,s); reset(F); while not EOF(F) do begin

readln(F,s); writeln(s);

end; close(F);

end

{File : tulis.pas} Program tulis; Uses crt; Var

F : text; s : string;

Begin clrscr; write(‘Inputkan nama file yang akan di buat’); readln(s); assign(F,s); rewrite(F); writeln(‘Tulis kalimat diikuti dengan enter.’); writeln(‘Untuk keluar : Inputkan baris kosong.’); repeat

readln(s); if s=’’then break; writeln(F,s);

until true; close(F);

end.

Page 42: Modul pemrograman pascal toki smansasoo

TOKI Smansasoo Goes to OSN 2009

42 | T i m O l i m p i a d e K o m p u t e r S M A N 1 S o o k o