modul pascal

92
MODUL PASCAL CEMPAKA 1. LAT-1 SOURCE CODE : uses crt; begin clrscr; gotoxy(5,5); write('Belajar membuat Program Pascal'); Gotoxy(5,6); write('------------------------------'); Gotoxy(5,8); write('Saya belajar pascal'); readkey; end. KETERANGAN: USES CRT : Perintah untuk menggunakan unit CRT untuk Layar,keyboard,dan suara. BEGIN : Untuk mengawali sebuah program utama dan sub- program. CLRSCR : Membersihkan layar END. : Berfungsi untuk mengakhiri program utama. GOTOXY(x,y) : Untuk menempatkan kursor pada (kolom ke x, baris ke y); Jumlah kolom dan baris pada layar normal adalah 80 kolom dan 25 baris Posisi x,y=1,1 Posisi x,y=80,1 Posisi x,y=80,25 Posisi x,y=1,25

Upload: rocky-simon-hia

Post on 04-Aug-2015

161 views

Category:

Documents


4 download

DESCRIPTION

Modul mengenai Pascal untuk persiapan pascal olimpiade TIK, OSN, maupun internasional

TRANSCRIPT

Page 1: Modul Pascal

MODUL PASCALCEMPAKA

1. LAT-1

SOURCE CODE :

uses crt;

begin clrscr; gotoxy(5,5); write('Belajar membuat Program Pascal'); Gotoxy(5,6); write('------------------------------'); Gotoxy(5,8); write('Saya belajar pascal'); readkey;end.

KETERANGAN:

USES CRT : Perintah untuk menggunakan unit CRT untuk Layar,keyboard,dan suara.BEGIN : Untuk mengawali sebuah program utama dan sub-program.CLRSCR : Membersihkan layar END. : Berfungsi untuk mengakhiri program utama.GOTOXY(x,y) : Untuk menempatkan kursor pada (kolom ke x, baris ke y);

Jumlah kolom dan baris pada layar normal adalah 80 kolom dan 25 baris

Posisi x,y=1,1 Posisi x,y=80,1

Posisi x,y=80,25Posisi x,y=1,25

LAYAR OUTPUT

Page 2: Modul Pascal

Contoh: gotoxy(5,2) : maka kursor akan ditempatkan pada koordinat(5,2) pada layar.

gotoxy(5,2); write(‘saya belajar pascal’); mencetak tulisan saya belajar pascal dimulai dari koordinat(5,2).

WRITE :

Contoh : write(‘belajar membuat program pascal‘);Dengan perintah write, kalimat ‘belajar membuat program pascal’ akan ditayangkan di layar monitor, pada posisi kursor sebelum perintah dijalankan, setelah perintahdijalankan, kursor pindah ke ujung kalimat belajar membuat program pascal.

READKEY: adalah fungsi untuk mengembalikan nilai char. Akan tetapi jika ditulis readkey; berarti menunggu inputan dari keyboard, agar layar output tidak menutup langsung saat program dijalankan.

OUTPUT :

Page 3: Modul Pascal

2. LAT-2.

SOURCE CODE :

uses crt;var a:string;begin clrscr; gotoxy(5,5); write('Belajar Membuat Variabel'); gotoxy(5,6); writeln('------------------------'); gotoxy(5,8); a:='saya belajar pascal'; write(a); readkey;end.

KETERANGAN

VARIABEL : Variabel adalah elemen dari algoritma untuk menyimpan suatu harga tertentu pada suatu saat dan pada saat lain harga dalam variable itu bisa diubah ke harga lain sesuai kebutuhan.VAR : syntax untuk mendeklarasikan nama variabel serta tipe data yang akan digunakan.Ada banyak tipe data dalam pascal.salah satunya tipe data sederhana yang berisi:

real (bilangan real) integer(bilangan bulat) byte (bil bulat) shortint (bil bulat) longint (bil bulat) boolean(hanya bernilai true/false) string(dapat berisi kata, kalimat atau huruf) char(hanya huruf saja)

Page 4: Modul Pascal

Cara mendeklarasikan variable :

VAR [NAMA_VARIABEL] : [TIPE DATANYA] ;

Contoh : VAR A : string ; {huruf besar dan kecil dianggap sama} nilai: Boolean ;Angka,hitung : integer ; {jika ada 2 variabel dengan tipe sama};

Suatu variabel dituliskan dengan suatu nama secara unik(tidak boleh sama dengan yg lain) dan nama variable dapat terbentuk dengan karakter alfanumeris (hanya huruf dan angka) dan karakter pertama harus alfabet.Var cukup ditulis sekali saja. Penulisan tipe data boleh disamping atau dibawah var, tidak boleh di atas var.

• a:=’saya belajar pascal’

• Tanda ( := ) berarti memasukkan kalimat ‘saya belajar pascal’ ke variable a.• Tulisan ‘saya belajar pascal’ harus diapit tanda( ‘ ‘) karena a bertipe string.• Write(a); pada program di atas berarti : menampilkan nilai a yang telah berisi

kalimat. Tidak perlu memakai tanda (‘ ‘) lagi, untuk mencetak isi variable.

OUTPUT :

Page 5: Modul Pascal

3. LAT-3

uses crt;var a:string;begin clrscr; gotoxy(5,5); write('Belajar Menggabung Variabel dengan Cetak Biasa'); gotoxy(5,6); writeln('----------------------------------------------'); gotoxy(3,8); a:='kami belajar pascal'; write('setiap hari ',a); readkey;end.

Pada program di atas, untuk menyambung suatu kata/kalimat dengan variable a,Gunakan tanda ,(koma).

• Write(‘setiap hari’,a);• Write(‘setiap hari’,a,’dengan rajin’);• Akan menampilkan: setiap hari kami belajar pascal dengan rajin.

Page 6: Modul Pascal

4. LAT-4

uses crt;var a,b,c,d,e:string;begin clrscr; gotoxy(10,5); write ('Biodata Siswa dengan Variabel'); gotoxy(10,6); Writeln ('-----------------------------'); a:='Nama : Andi Garcia '; b:='Tpt/tgl lahir : Pekanbaru/1 Januari 1990'; c:='Sekolah : SMU 1'; d:='Alamat : Jl.A.Yani no.99'; e:='Cita-cita : Programmer'; writeln(a); writeln(b); writeln(c); writeln(d); writeln(e); readkey;end.

WRITELN : Sama seperti WRITE akan tetapi kursor pindah ke baris berikutnya setelah writeln dijalankan.

• Writeln(a);• Mencetak isi a, lalu kursor pindah ke baris berikutnya• Writeln(b);• Mencetak isi b, lalu kursor pindah ke baris berikutnya. dan seterusnya.

Page 7: Modul Pascal

5. LAT-5

uses crt;var a,b:string;

begin clrscr; gotoxy(5,5); write('Latihan Pascal dengan Readln'); gotoxy(5,6); write('----------------------------'); gotoxy(5,8); write('Lengkapi data dibawah ini'); gotoxy(5,9); write('Masukkan nama :'); readln(a); gotoxy(5,10); write('Masukkan Umur :'); readln(b); gotoxy(5,12); write('Saya yang bernama ',a,' umur saya ',b,' th'); readkey;

end.

Seperti dijelaskan diatas, pemrograman dengan cara langsung menyerahkan data kepadavariabel dengan statemen assignment ( := ), ternyata kurang memuaskan. Maka diperlukan statemen input yaitu suatu perintah untuk membaca data dari luar, dalam hal ini melalui keyboard. Dalam bahasa Pascal perintah ini dilaksanakan dengan statement :

readln(a);artinya : masukkan data dari keyboard ke variable a

READ atau READLN memiliki fungsi yang sama untuk variabel bukan string, pada variabel string, read hanya membaca 1 kata sedangkan readln bisa membaca 1 kalimat.

Variable yang digunakan yaitu a dan b harus ditulis bagian VAR Write(‘saya yang bernama’,a,’umur saya’,b,’th’);

Akan menampilkan kembali isi variable a dan variable b. a dan b tidak perlu diapit tanda (‘ ‘). Dan untuk menyambung dengan kata lain gunakan tanda( , ) koma.

Page 8: Modul Pascal

OUTPUT :

Page 9: Modul Pascal

6. LAT-6

uses crt;

var a,b,c,d,e:string;

begin clrscr; gotoxy(5,2); write('Latihan Membuat Biodata dengan Readln'); gotoxy(5,3); write('-------------------------------------'); gotoxy(5,6); write('Masukkan Nama : '); readln(a); gotoxy(5,7); write('Masukkan Alamat : '); readln(b); gotoxy(5,8); write('Masukkan Umur : '); readln(c); gotoxy(5,9); write('Masukkan Sekolah : '); readln(d); gotoxy(5,10); write('Masukkan Kelas : '); readln(e); gotoxy(5,13); Write('Saya yang bernama ',a,’beralamat di ’,b,' dan berumur ',c,' bersekolah di ',d,' kelas ',e); readkey;

end.

readln(a);artinya : masukkan data dari keyboard ke variable a

READ atau READLN memiliki fungsi yang sama untuk variabel bukan string, pada variabel string, read hanya membaca 1 kata sedangkan readln bisa membaca 1 kalimat.

Variable a,b,c,d,e harus ditulis di atas (di bagian var). Write(‘saya yang bernama’,a,’ dan berumur ’,c,’bersekolah di ’,d,’kelas’,e);

Akan menampilkan kembali isi variable a,c,d,e nama variabel tidak perlu diapit tanda (‘ ‘). Dan untuk menyambung dengan kata lain gunakan tanda( , ) koma.

Page 10: Modul Pascal

7. LAT-7

uses crt;

var a,b,c:integer;

begin clrscr; gotoxy(5,2); write('Membuat Operasi Matematika dengan Pascal'); gotoxy(5,3); write('----------------------------------------'); gotoxy(5,5); write('Masukkan nilai A = '); readln(a); gotoxy(5,6); write('Masukkan nilai B = '); readln(b);

c:=a+b; gotoxy(5,8); write('A + B = ',c);

c:=a-b; gotoxy(5,9); write('A - B = ',c);

c:=a*b; gotoxy(5,10); write('A * B = ',c);

c:=a div b; gotoxy(5,11); write('A div B = ',c);

c:=a mod b; gotoxy(5,12); write('A mod B = ',c);

readkey;

end.

Page 11: Modul Pascal

Program di atas bermaksud untuk membentuk operasi aritmatika (tambah,kurang,kali,bagi, dan mod) dari dua variable lalu memasukkan hasilnya ke variable yang lain :

Variable dideklarasikan dahulu di atas yaitu a,b,c yang bertipe integerPenulisan : a,b,c :integer

Write(‘masukkan nilai A :’);Readln(a);Berarti : mencetak tulisan : masukkan nilai a dan readln a menunggu masukan dari keyboard lalu menyimpannya di variable a.begitu juga dengan variable b.

Setelah data a dan b dimasukkan, maka kita bisa membentuk operasi c:=a+b; berarti, menambahkan a dan b lalu menyimpan hasilnya di variable c. write(‘A + B =’, c); akan menampilkan isi variable c saat itu. c tidak perlu memakai tanda (‘ ‘)

karena c adalah variable. Untuk menyambungnya dengan kata lain gunakan tanda koma ( ,)

c:=a-b; berarti, mengurangkan a dan b lalu menyimpan hasilnya di variable c c:=a*b; pada pascal tanda kali (x) menjadi tanda ( *) pada keyboard(shift+8). Jadi

bukan tanda (x) yang dipakai dalam pascal. c:=a div b; div diatas berarti membagi a dengan b. kita tidak menggunakan tanda ( / )

karena itu hanya untuk tipe bilangan real, sedangkan c bertipe integer (bil bulat).

c:= a mod b Mod adalah sisa hasil pembagian dari a dan b. sisa itu disimpan di c.

Page 12: Modul Pascal

8. LAT-8

uses crt;

var a:integer;

begin clrscr; gotoxy(5,3); write('Membuat Program Pilihan dengan If'); gotoxy(5,4); write('---------------------------------'); gotoxy(5,6); write('Masukkan nilai rata-rata rapor = '); readln(a);

gotoxy(5,8); if a>=85 then

begin writeln('Grade A, Bagus sekali!'); gotoxy(5,9); write('Pertahankan !'); end

else if a>= 75 then write('Grade B, Bagus ')

else if a>=65 then write('Grade C, Cukup')

else if a>=50 then write('Grade D, kurang')

else

begin writeln('Grade E,Parah!!!'); gotoxy(5,9);write('Rajin-rajin belajar!'); end;

readkey;end.

Page 13: Modul Pascal

Pada program di atas terdapat struktur pemilihan IF… ELSE. Jika suatu kondisi terpenuhi maka statement akan dijalankan dan yang lain akan dilewatkan.

Pada contoh di atas : if a>=85 then writeln(‘Grade A, bagus sekali !’);

Yang disebut statement adalah : writeln(‘Grade A, bagus sekali!’); Yang disebut kondisi adalah a>=85,(ekspresi Boolean) hanya bernilai

TRUE atau FALSE. Jika TRUE, maka statement dijalankan dan jika FALSE, statement dilewatkan.

Jadi yang sebenarnya dibutuhkan adalah kondisi TRUE atau FALSE untuk menjalankan statement

Struktur IF DAN ELSE :

If <ekspresi boolean>then begin <statemen-pertama>; . . . ; <statemen-kelima> end else if <ekspresi boolean> then <statement-pertama>else if <ekspresi boolean> then <statement-pertama>else begin <statemen-pertama>; . . . ; <statemen-kesepuluh> end;

Memakai begin dan end karena if dan else akan menjalankan banyak statement (lebih dari satu statement)

Else yang terakhir tidak perlu memakai ekspresi Boolean karena sudah otomatis akan dijalankan jika tidak ada kondisi yang memenuhi.

If <ekspresi boolean> then <statemen1> else <statemen2>;

Tidak perlu memakai begin dan end karena masing-masing if dan else hanya menjalankan satu statement.

Page 14: Modul Pascal

Ekspresi Boolean else yang paling akhir pastilah (a<50). Sehingga, jika dimasukkan nilai 20, kondisi akan bernilai benar, lalu statement dijalankan. Sehingga muncul Grade E,Parah!! Rajin-rajin belajar!

Statement akan dijalankan jika a>=85 dan ternyata masukan dari keyboard adalah 100.Yang berarti benar bahwa 100>=85. Lalu muncul Grade A, bagus sekali! Pertahankan! Grade E diatas tidak muncul lagi, karena kondisi tidak memenuhi.

Page 15: Modul Pascal

9. LAT-9

uses crt;var a,b,d:integer; c:string;

begin clrscr; gotoxy(5,2); write('Program Kalkulator Sederhana'); gotoxy(5,3); write('----------------------------'); gotoxy(5,5); write('Masukkan nilai Pertama = '); readln(a); gotoxy(5,6); write('Masukkan nilai kedua = '); readln(b); gotoxy(5,8); write('Pilih operasi matematika yang di inginkan (+/-/*/div/mod) = '); readln(c); gotoxy(5,10); if c='+' then begin d:=a+b; write(d); end else if c='-' then begin d:=a-b; write(d); end else if c='*' then begin d:=a*b; write(d); end else if c='div' then begin d:=a div b; write(d); end else if c='mod' then begin d:=a mod b; write(d); end else write('pilih salah satu operasi matematika nya');

readkey;end.

Page 16: Modul Pascal

Program bertujuan untuk meniru fungsi kalkulator. Untuk memilih operasi matematika digunakan fungsi IF dan ELSE..,Jadi hasil perhitungan sesuai dengan operator yang diinginkan. Contoh : jika operator yang dipilih adalah ( * ) maka 2x5= 10.

Ada 4 variabel yaitu : a untuk nilai pertama bertipe integer b untuk nilai kedua bertipe integer d untuk menampung hasil operasi a dan b. bertipe integer c untuk menampung operasi matematika yang diinginkan. Sehingga harus bertipe

String Selanjutnya untuk mencocokkan c dengan salah satu operasi yang disediakan

caranya : If c= ‘*’ then d:=a*b; Tanda ‘*’ harus disertakan untuk menunjukkan * dalam string. Jika benar, c berisi tanda (*), maka lakukan a*b dan hasilnya masukkan ke d Lalu tampilkan hasilnya (d). Jika operasi tidak ada yang cocok, maka akan keluar tulisan peringatan…

Page 17: Modul Pascal

10. LAT-10

uses crt;var ulang:integer;

begin clrscr; gotoxy(8,1); write('Program Perulangan dengan For'); gotoxy(8,2); write('-----------------------------');

ulang:=0;

for ulang :=0 to 10 do begin gotoxy(9+ulang,4); delay(100); write(ulang); end; readkey;end.

Page 18: Modul Pascal

LOOPING(Perulangan)

Konstruksi FOR-DO

Konstruksi ini digunakan bila banyaknya pengulangan telah diketahui sebelumnya,pada program di atas 11 kali. Sintaks dari pengulangan for-do adalah :

For <variabel identifier> := <ekspresi awal> to/downto <ekspresi akhir>Do <statemen> ;

Pada program di atas:

Ulang adalah nama variable yang bertipe integer ekspresi awalnya diberi nilai 0. Ekspresi akhir diberi nilai 10. Karena statement lebih dari satu gunakan begin setelah do dan tutup dengan end; Karena 0 tidak lebih dari 10 maka jalankan statement yang pertama kali yaitu

mencetak nilai ulang itu sendiri yaitu (0). DELAY berguna untuk menunda. Delay(100) berarti menunda penulisan sebesar 100 ms. Setelah menjalankan semua statement nilai ulang akan menaik menjadi 0+1=1 Karena 1 belum melebihi 10(ekspresi akhir), maka statement dijalankan kembali,

yaitu mencetak nilai ulang saat itu (01) Setelah menjalankan semua statement nilai ulang akan menaik menjadi 1+1=2 Karena 2 belum melebihi 10(ekspresi akhir), maka statement dijalankan kembali,

yaitu mencetak nilai ulang saat itu (012) Begitu seterusnya sampai nilai ulang saat itu melebihi 10 (ekspresi akhir) lalu

program keluar dari perulangan.dan menghasilkan(012345678910).

Page 19: Modul Pascal

11. LAT-11

uses crt;var awal, akhir,i:integer;

begin clrscr; gotoxy(8,1); write('Program Perulangan For dengan Variabel'); gotoxy(8,2); write('--------------------------------------'); gotoxy(8,4); write('Masukkan nilai Awal = '); readln(awal); gotoxy(8,5); write('Masukkan nilai Akhir = '); readln(akhir);

for i:= awal to akhir do begin gotoxy(8,7+i); delay(100); write(i); end; readkey;end.

Page 20: Modul Pascal

Keterangan :

Program di atas menggunakan 3 variable : Variable i sebagai pencacah/penghitung Variable awal sebagai nilai awal i. Dan variable akhir sebagai nilai akhir i.

Adapun nilai awal dan nilai akhir ditentukan melalui keyboard. Dengan cara : Write(‘nilai awal’);Readln(awal);

Artinya, input dari keyboard akan dimasukkan ke variable awal, begitu juga dengan nilai akhir. Setelah nilai awal dan akhir dimasukkan,

For i:= awal to akhir do

nilai awal=5 dan nilai akhir=10. Kata yang bercetak tebal bermaksud, nilai di dalam variable awal dimasukkan ke i. sehingga nilai i saat itu adalah 5. Kemudian mencetak nilai i. setelah itu nilai i naik menjadi 6:=5+1 yaitu 6. looping lagi,hingga nilai i menjadi 7:=6+1 dan cetak i.looping lagi dan cetak nilai i hingga nilai i=10.(menyamai nilai akhir).

Kesimpulan nya, harga i lah yang berubah-ubah dan kemudian dicetak. Sedangkan harga variable awal dan akhir tetap 5 dan 10.

Page 21: Modul Pascal

12. LAT-12

uses crt;var ulang:integer;

begin clrscr; gotoxy(8,1); write('Program Perulangan dengan For Downto'); gotoxy(8,2); write('------------------------------------');

for ulang := 15 downto 5 do begin gotoxy(9,ulang); delay(100); write(ulang); end; readkey;end.

Page 22: Modul Pascal

Konstruksi FOR-DOWNTO

Perulangan for dengan downto, berarti mengurangkan variable ulang di atas dengan 1 .setiap kali menjalankan statement.

For ulang:= 15 downto 5 do

Jika menggunakan downto maka:Nilai awal (15) mesti lebih besar atau sama dengan nilai akhir (5). Agar perulangan bisa berjalan minimal sekali. Pada saat tampil, akan mencetak harga 15 dahulu, kemudian terjadi pengurangan dengan 1 (14:=15-1) dan cetak 14 dan seterusnya sampai 5.

Page 23: Modul Pascal

13. LAT-13

uses crt;var i,awal, akhir:integer;

begin clrscr; gotoxy(8,1); write('Program Perulangan For Downto dengan Variabel'); gotoxy(8,2); write('---------------------------------------------'); gotoxy(8,3); write('Masukkan nilai awal = '); readln(awal); gotoxy(8,4); write('Masukkan nilai akhir = '); readln(akhir);

for i:= awal downto akhir do begin gotoxy(9,i); delay(100); write(i); end; readkey;

end.

Page 24: Modul Pascal

Keterangan :

Program di atas menggunakan 3 variable : Variable i sebagai pencacah/penghitung Variable awal sebagai nilai awal i. Dan variable akhir sebagai nilai akhir i.

Adapun nilai awal dan nilai akhir ditentukan melalui keyboard. Dengan cara : Write(‘nilai awal’);Readln(awal);

Artinya, input dari keyboard akan dimasukkan ke variable awal, begitu juga dengan nilai akhir. Setelah nilai awal dan akhir dimasukkan,

For i:= awal downto akhir do

nilai awal=10 dan nilai akhir=7. Kata yang bercetak tebal bermaksud, nilai di dalam variable awal dimasukkan ke i. sehingga nilai i saat itu adalah 10. Kemudian mencetak nilai i. setelah itu nilai i turun menjadi 9:=10-1 yaitu 9. looping lagi,hingga nilai i menjadi 8:=9-1 dan cetak i.looping lagi dan cetak nilai i hingga nilai i=7.(menyamai nilai akhir).

Kesimpulan nya, harga i lah yang berubah-ubah dan kemudian dicetak. Sedangkan harga variable awal dan akhir tetap 10 dan 7.

Page 25: Modul Pascal

14. LAT-14

uses crt;varbaris,kolom,jumbaris:integer;

beginclrscr;

writeln('masukkan jumlah baris'); readln(jumbaris);

for baris:= 1 to jumbaris do begin

for kolom:= 1 to baris do write('*');

writeln; end;

readkey;end.

Page 26: Modul Pascal

NESTED FOR(FOR BERSARANG)

Struktur segitiga di atas, dicetak dengan memakai 2 buah for. Dimana for yang satu di dalam for yang lain.

Variable jumbaris untuk menampung berapa banyak jumlah baris yang diinginkan, dalam hal ini mengacu kepada tinggi segitiga.

Variable baris dan kolom hanya berfungsi sebagai pencacah looping

for baris:= 1 to jumbaris do begin for kolom:= 1 to baris do write('*'); writeln; end;

Yang berwarna merah adalah statement milik for paling luar. Yang berwarna biru adalah statement milik for yang di dalam.

Mulai dari for merah, Saat nilai baris=1, selanjutnya masuk ke for yang biru, saat nilai kolom=1, cetak (‘*’) lalu menaikkan nilai kolom menjadi 2. Ternyata 2 melebihi 1(nilai baris).maka program keluar dari looping biru dan menjalankan statement merah yaitu writeln; yang berfungsi untuk memindahkan kursor ke baris berikutnya. Kemudian menaikkan nilai baris menjadi 2. Saat nilai baris=2, selanjutnya masuk ke for yang biru, nilai kolom mulai dari 1 lagi. Cetak (‘*’) sebanyak 2 kali, lalu keluar dari looping biru. Begitu seterusnya hingga looping berhenti dan membentuk struktur segitiga seperti di atas.

Page 27: Modul Pascal

15. LAT-15

varpencacah,batas:integer;beginclrscr;batas:=10; pencacah:=1; writeln(‘pencacahan menaik’); while(pencacah<=batas) do begin writeln(pencacah); pencacah:=pencacah+1; end; writeln; pencacah:=1; writeln(‘pencacahan menurun’); while(batas>=pencacah) do begin writeln(batas); batas:=batas-1; end;readkey;end.

Page 28: Modul Pascal

KONSTRUKSI WHILE-DO

Bila jumlah pengulangan belum diketahui sebelumnya, maka konstruksi FOR-DO tidak dapat digunakan, sebagai pilihan dapat digunakan WHILE-DO.Penulisannya :

While <ekspresi boolean> DoBegin<statemen1>;<statemen2>;. . .<statemenN>;End;

Statemen dalam while akan dilakukan selama kondisi memiliki nilai true, dan statemen mungkin tidak dilakukan sama sekali jika di awal loop kondisi sudah bernilai false. Hal yang perlu diperhatikan dalam loop ini adalah kepastian bahwa loop akan berhenti (bahwa suatu saat kondisi akan bernilai false).

Pencacahan menaik :

Variable yang digunakan adalah pencacah dan batas Pencacah diberi nilai awal 1 Dan batas sebagai harga yang harus dicapai nilai awal diberi nilai 10 Dengan menulis :

while(pencacah<=batas) do begin writeln(pencacah); pencacah:=pencacah+1; end;

Kondisi bernilai true karena pencacah saat itu berharga 1 dan batas 10. Selanjutnya jalankan statement writeln (pencacah); untuk mencetak nilai

pencacah saat itu yaitu 1. Kemudian pencacah:=pencacah+1; menaikkan nilai pencacah menjadi

2:=1+1. Yaitu 2. Kemudian kembali ke kondisi untuk mengecek apakah pencacah masih

kecil dari batas, jika true maka cetak pencacah dan naikkan nilainya, hingga kondisi bernilai false(lebih dari 10) looping berhenti.

Pencacahan menurun :

Pada pencacahan menurun, kondisi berubah menjadi :

Page 29: Modul Pascal

while(batas>=pencacah) do begin

Batas bernilai 10 dan pencacah bernilai 1. Jika kondisi benar, maka cetak batas. Lalu turunkan nilai batas :

batas:=batas-1;9:=10-1;8:= 9-1;

Periksa lagi kondisi,jika true maka cetak lagi nilai batas Sampai kondisi bernilai false yaitu batas=0. Looping berhenti.

Page 30: Modul Pascal

16. LAT-16

uses crt;

varbaris,kolom,jumbar:integer;

beginclrscr;

writeln('Program segitiga dengan while');writeln('-----------------------------');writeln;

write('masukkan jumlah baris ');readln(jumbar); {memasukkan input ke variabel jumbar}

baris:=1; {memberi nilai awal baris} while(baris<= jumbar) do begin kolom:=1; {memberi nilai awal kolom} while(kolom<=baris) do begin write('*'); kolom:=kolom+1; {menaikkan nilai kolom} end; writeln; baris:=baris+1; {menaikkan nilai baris} end;

readkey;

end.

Page 31: Modul Pascal

ALGORITMA Program di atas mencetak segitiga dengan 2 WHILE(NESTED-WHILE) dan menggunakan 3 variabel, yaitu :

Baris, diberi nilai awal 1 Kolom, diberi nilai awal 1 Jumbar sebagai jumlah baris, dalam hal ini tinggi segitiga yaitu 7. Ditentukan

melalui masukan dari keyboard, caranya :

write('masukkan jumlah baris ');readln(jumbar);

Selanjutnya, masuk ke bagian perulangan.

baris:=1; {memberi nilai awal baris} while(baris<= jumbar) do begin kolom:=1; {memberi nilai awal kolom} while(kolom<=baris) do begin write('*'); kolom:=kolom+1; {menaikkan nilai kolom} end; writeln; baris:=baris+1; {menaikkan nilai baris} end;

Tulisan yang warna merah untuk while yang di luar Tulisan yang biru untuk while yang di dalam Pada while yang merah, saat baris=1, cek kondisi apakah baris kecil sama dengan jumbar Jika true, maka masuk ke daerah biru, nilai kolom=1. Lalu cek kondisi apakah kolom kecil sama dengan baris Jika true maka cetak(*) Lalu naikkan nilai kolom menjadi 2:=1+1 Cek lagi kondisi pada while biru. Ternyata kolom telah melebihi baris, sehingga kondisi bernilai false

Page 32: Modul Pascal

Keluar dari loop biru, dan masuk ke loop merah Program akan menjumpai writeln; yang berarti memindahkan kursor ke baris brkutnya Lalu naikkan nilai baris menjadi 2:=1+1 Cek kondisi lagi pada while merah, ternyata baris kecil dari jumbar,sehingga true Masuk ke loop biru, dengan nilai kolom kembali 1 Cek kondisi lagi, jika true cetak (*) dan naikkan nilai kolom Begitu seterusnya hingga kondisi looping biru dan merah bernilai false. Looping berhenti

Page 33: Modul Pascal

17. LAT-17

uses crt;

varbaris,kolom,jumbar:integer;

begin

clrscr;write('jumlah baris');readln(jumbar);

baris:=1;while baris<=jumbar do begin {menulis * yang pertama kali}write('*':jumbar+1-baris);

{menulis * yang selanjutnya} kolom:=2; while kolom<=(2*baris-1) do begin write('*'); kolom:=kolom+1; {menaikkan nilai kolom} end;

writeln; baris:=baris+1; {menaikkan nilai baris} end;

readkey; end.

Page 34: Modul Pascal

Program di atas menggunakan 3 variabel :

Baris, diberi nilai awal 1 Kolom, diberi nilai awal 2 Jumbar =8 , nilai nya ditentukan melalui keyboard. Dalam hal ini jumbar adalah

tinggi segitiga Selanjutnya, masuk ke bagian loop

Sub-program 1 (pink):

baris:=1;while baris<=jumbar do begin {menulis * yang pertama kali}write('*':jumbar+1-baris);

Cek kondisi apakah baris kecil sama dengan jumbar, jika true maka Write(‘*’:jumbar+1-baris) sama dengan write(‘*’:8+1-1) Sama dengan write(‘*’:8), artinya menempatkan kursor pada kolom ke 8, lalu

mencetak (*). Bintang yang dicetak adalah yang bewarna merah paling atas. Kemudian ke sub-program 2 (kuning)

kolom:=2; while kolom<=(2*baris-1) do begin write('*'); kolom:=kolom+1; {menaikkan nilai kolom} end; writeln; baris:=baris+1; {menaikkan nilai baris} end;

Page 35: Modul Pascal

kolom bernilai 2, cek kondisi apakah kolom(2) kecil sama dengan(2*baris-1) atau(2*1-1)=1 ternyata false, program tidak mencetak apa-apa dan keluar dari loop, ke sub-

program 1(kuning). berjumpa dengan writeln; untuk menempatkan kursor ke baris berikutnya lalu naikkan nilai baris menjadi 2. Cek kondisi baris dan jumbar, jika true maka cetak(*) pada kolom ke 7. Bintang

pada baris kedua yang berwarna merah adalah hasilnya. Kemudian masuk ke sub-program 2(kuning) Nilai kolom kembali menjadi 2. Cek kondisi apakah kolom kecil sama dengan(2*baris-1) atau(2*2-1)=3 Ternyata true, maka cetak(*). Hasilnya bintang pada baris kedua yang bewarna

kuning. Naikkan nilai kolom, cek lagi kondisi,jika true cetak(*). Hasilnya bintang pada

baris kedua yang bewarna kuning. Begitu seterusnya hingga kondisi tidak memenuhi. Looping berhenti, terbentuklah struktur segitiga seperti di atas.

Page 36: Modul Pascal

18. LAT-18

uses crt;

var

pencacah:integer;begin

writeln('Program Perulangan dengan Repeat-Until');writeln('--------------------------------------');writeln;

writeln('pencacahan menaik');pencacah:=1;

repeat

writeln(pencacah); pencacah:=pencacah+1;until(pencacah>5);

writeln; pencacah:=5;

writeln('pencacahan menurun');

repeat

writeln(pencacah); pencacah:=pencacah-1; until(pencacah<1);readkey;end.

Page 37: Modul Pascal

KONSTRUKSI REPEAT-UNTIL

Program di atas mencetak angka dengan perulangan repeat-until

Sintaks konstruksi REPEAT-UNTIL :Repeat <statemen> until <ekspresi Boolean(kondisi)> atau

Repeat<statemen1>;<statemen2>;. . .<satemenN>;

Until <ekspresi Boolean(kondisi)>;

Statemen atau kelompok statemen akan diulang selama ekspresi boolean bernilai False, jadi salah satu statemen didalam loop harus dapat mengubah ekspresi boolean menjadi True,sehingga dapat menghentikan pengulangan pada waktunya.

Perbedaan diantara konstruksi WHILE-DO dan REPEAT-UNTIL adalah :Pada konstruksi While-Do, statemen atau kelompok statemen mungkin tidak akanpernah dilaksanakan, bila nilai ekspresi boolean bernilai false. Pada konstruksi Repeat-Until, statemen atau kelompok statemen pasti dikerjakan paling sedikit satu kali.

Pada pencacahan menaik : Variabel pencacah diberi nilai awal 1 Masuk kedalam loop repeat-until dan mencetak nilai pencacah saat itu Naikkan nilai pencacah>>2:=1+1; Until(pencacah>5)>>Cek kondisi apakah pencacah bernilai 6, ternyata false

lanjutkan looping hingga kondisi true, dan looping berhenti.

Page 38: Modul Pascal

Pencacahan menurun : Variable pencacah diberi nilai awal 5 Masuk kedalam loop repeat-until dan mencetak nilai pencacah saat itu. Turunkan nilai pencacah>>4:=5-1; Until(pencacah<1)>> cek kondisi apakah pencacah bernilai 0, ternyata false

Lanjutkan looping hingga kondisi true, dan looping berhenti.

Page 39: Modul Pascal

19. LAT-19

uses crt;

varcelcius,reamor,farenheit:real;

beginclrscr;

writeln('celcius':12,'reamor':12,'farenheit':12);writeln('--------------------------------------');

celcius:=0;

repeat reamor:=4/5*celcius; farenheit:=9/5*celcius+32; writeln(celcius:12:2,reamor:12:2,farenheit:12:2); celcius:=celcius+0.5;

until celcius>10;

writeln('---------------------------------------');

readkey; end.

Page 40: Modul Pascal

Untuk mengatur jarak antara tulisan gunakan :

writeln('celcius':12,'reamor':12,'farenheit':12);

artinya, menempatkan huruf s pada celcius dimulai dari kolom 12, selanjutnya huruf u pada kolom 11 terus mundur sampai c, sehingga terlihat seperti rata kanan. Jika disambung dengan ‘reamor’:12. Penghitungan kolom dimulai dari kolom sesudah huruf s pada celcius.

Variable yang dgiunakan ada 3 yaitu : Celcius diberi nilai awal 0 Sedangkan reamor dan farenheit bergantung pada harga celcius saat itu. Reamor=4/5*celcius Farenheit=9/5*celcius+32 Selanjutnya masuk kebagian repeat, sehingga harga reamor dan farenheit

terisi. Untuk mencetak nya, gunakan : untuk tipe real

writeln(celcius:12:2,reamor:12:2,farenheit:12:2);

karena celcius,reamor,farenheit adalah bilangan tipe real, perlu penyesuaian untuk mencetaknya, yaitu dengan menambahkan :2 setelah 12. Artinya, hanya menampilkan 2 desimal.

Selanjutnya program terus looping hingga nilai celcius > 10. Looping berhenti.

Page 41: Modul Pascal

20. LAT-20

uses crt;

var i : integer;beginclrscr;

writeln('Penggunaan Break');for i:= 1 to 20 do begin write(i, ' '); if (i=10) then break; {jika nilai i=10, hentikan perulangan} end; writeln;

writeln('Penggunaan Continue');for i:= 1 to 20 do begin if (i mod 2=1) then continue {jika i bilangan ganjil, lanjutkan perulangan} else write(i,' '); {jika i genap, cetak i}end;

readkey;end.

Page 42: Modul Pascal

Penggunaan break dan continue adalah salah satu cara untuk mengendalikan alur looping.

Gunakan Break: jika ingin keluar dari looping jika kondisi masih terpenuhi Gunakan Continue: untuk kembali ke looping.

Pada contoh break di atas, Nilai i masih memenuhi kondisi, masuk ke looping Tetapi karena ada if(i=10) then break; Yang menyatakan bahwa jika nilai i saat itu 10, keluar dari perulangan Jadi yang di cetak hanya angka 1 – 10, walaupun perulangannya ada 20 kali

Pada contoh continue di atas, Nilai i masih memenuhi kondisi, masuk ke looping Selanjutnya ada penyeleksian kondisi If (i mod 2=1) then continue; else write(i); Yang berarti jika sisa bagi i dengan 2 adalah 1 lanjutkan perulangan Jika tidak cetak nilai i saat itu Sehingga yang tampil adalah bilangan genap, Karena setiap kali i bernilai ganjil hasil bagi adalah 1, statement continue akan dijalankan Yaitu kembali ke looping dan tidak mencetak apa-apa.

Page 43: Modul Pascal

21. LAT-21

uses crt;

constjumlah_elemen=5;

typenamamusik=array[1..jumlah_elemen]of string[7];vardafmusik:namamusik;posisi: integer;

beginclrscr;gotoxy(10,1);writeln('PROGRAM MENGISI DAN MENCETAK ARRAY ');gotoxy(10,2);writeln('----------------------------------------------------------------- ');

dafmusik[1]:='JAZZ';dafmusik[2]:='ROCK';dafmusik[3]:='KERONCONG';dafmusik[4]:='DANGDUT';dafmusik[5]:='REGGAE';

for posisi:= 1 to jumlah_elemen do writeln(dafmusik[posisi]); readkey; end.

Page 44: Modul Pascal

ARRAY

Apa itu array ? aray adalah tipe data terstruktur yang berguna untuk menyimpan sekumpulan data yang bertipe sama. Bagian yang menyusun array biasa dinamakan elemen array. Masing-masing elemen dapat diakses tersendiri,melalui indeks array.

Begitu kita menulis :typenamamusik=array[1..jumlah_elemen]of string[15];vardafmusik:namamusik;

akan tercipta 5 (dari jumlah elemen)buah petak kosong :

Elemen –elemen array

1 2 3 4 5

1,2,3,4,5 : dinamakan INDEKS ARRAY

String [15] berarti : kotak-kotak diatas hanya bisa menampung data bertipe string sepanjang 15 karakter. Karakter itu bisa berupa huruf,angka atau simbol. Tapi apabila kita menulis String; saja maka secara default dapat menampung [255] karakter.

Cara pendeklarasian array ada 2: Seperti program diatas( dafmusik:namamusik) Atau yang lebih mudah dafmusik : array[1..5]of string[15] ;

Tidak perlu memakai type dan const. Secara umum nama_Array : array[ jumlah_elemen ]of tipe_Data

Kotak-kotak di atas belum diisi apa-apa, cara mengisinya :

dafmusik[1]:='JAZZ';dafmusik[2]:='ROCK';

dafmusik[1]:=’JAZZ’ artinya : indeks ke 1 pada array dafmusik diisi dengan string ‘JAZZ’. Begitu juga dengan ‘ROCK ‘.setelah array diisi,kemudian dicetak.

Page 45: Modul Pascal

Cara mencetak array (dengan looping):

for posisi:= 1 to jumlah_elemen do writeln(dafmusik[posisi]);

hasil tampilan :

JAZZROCKKERONCO DANGDUT REGGAE

Kenapa yang tampil KERONCO ? padahal kita tadi menulis KERONCONG. Hal ini karena string yang dibuat hanya dapat menampung maksimal 7 karakter(string [7]).sedangkan KERONCONG mempunyai 9 karakter.

Page 46: Modul Pascal

22. LAT-22

uses crt;

vardafangka:array[1..5] of integer;posisi,max:integer;

beginclrscr;gotoxy(10,1);writeln('PROGRAM MENCARI BILANGAN MAKSIMUM DALAM ARRAY ');gotoxy(10,2);writeln('----------------------------------------------------------------- ');

max:=0;

for posisi:= 1 to 5 do begin write('masukkan angka : '); readln(dafangka[posisi]); end;

for posisi:=1 to 5 do begin if max<dafangka[posisi] then max:=dafangka[posisi]; end;

writeln('nilai maksimum dari array adalah ',max);

readkey; end.

Page 47: Modul Pascal

Program di atas, bertujuan untuk mencari bilangan maksimum di antara elemen array.

ALGORITMA

Menggunakan 3 variable : Dafangka:array[1..5]of integer;menampung data inputan. Posisisebagai indeks array. Maxsebagai pembanding untuk mencari nilai maksimum.

Sub-Code :for posisi:= 1 to 5 do begin write('masukkan angka : ');

readln(dafangka[posisi]); end;

Menggunakan looping untuk memasukkan nilai ke array ‘dafangka’ melalui keyboard.Variable posisi selalu berubah nilainya dari 1-5, sehingga setiap input dimasukkan ke posisi yang berbeda.

Sub-Code:for posisi:=1 to 5 do begin

if max<dafangka[posisi] then max:=dafangka[posisi]; end;

Menggunakan looping untuk mencari nilai maksimum, alur algoritma sbb:

Saat posisi =1, lakukan… If max < dafangka[posisi] then max:=dafangka[posisi]; Perlu diperhatikan!

Page 48: Modul Pascal

Max saat itu = 0 (karena diberi nilai awal=0) dan dafangka [ 1 ]= 5; Jadi, jika 0 < 5 maka max:= dafangka[1] Nilai dafangka[1]=5 dimasukkan ke max, Jadi max sekarang,bernilai 5.

Lanjutkan looping, nilai posisi bertambah, posisi=2.

Saat posisi=2,lakukan.. If max < dafangka[posisi] then max:=dafangka[posisi]; Perlu diperhatikan! Max saat itu = 5 dan dafangka [ 2 ]= 10; Jadi, jika 5 < 10 maka max:= dafangka[2] Nilai dafangka[2]=10 dimasukkan ke max, Jadi max sekarang,bernilai 10. Nilai max, terus berubah ke nilai paling tinggi di aray. Setelah looping berhenti, nilai maksimum telah didapat, lalu cetak.

Page 49: Modul Pascal

23. LAT-23

uses crt;

vardata:array[1..10] of integer;jumdata,posisi,total:integer;hasil:real;

beginclrscr;

gotoxy(10,1); write('PROGRAM MENCARI RATA-RATA DALAM SUATU ARRAY' );gotoxy(10,2); writeln('===========================================' );

write('Masukkan jumlah data (tidak boleh lebih dari 10) : ');readln(jumdata);

for posisi:= 1 to jumdata do begin write('DATA KE ',posisi,':'); readln(data[posisi]); end;

for posisi:= 1 to jumdata do begin total:=total+data[posisi]; end;

hasil:=total/jumdata;

writeln; writeln('RATA-RATA = ',hasil:2:2);

readkey; end.

Page 50: Modul Pascal

Program ini bertujuan untuk mencari rata-rata dalam suatu array. Variable yang digunakan ada 5 :

data:array[1..10] of integer; jumdata :integer; untuk menyatakan banyak data yang diinput. posisi :integer; menentukan posisi array. total:integer; memberikan total data yang diinput hasil:real; hasil rata-rata yaitu(total/jumdata).

ALGORITMA :1. Input kan dahulu jumlah datanya melalui keyboard :write('Masukkan jumlah data (tidak boleh lebih dari 10) : ');readln(jumdata);2. Input data nya satu persatu :for posisi:= 1 to jumdata do beginwrite('DATA KE ',posisi,':');readln(data[posisi]);end;3. Setelah data diinputkan, carilah total data :for posisi:= 1 to jumdata do begin

total:=total+data[posisi]; end;

4. Setelah didapat total data, bagilah total dengan jumlah data lalu simpan di variable hasil :hasil:=total/jumdata;

5. Kemudian Cetak hasilnyawriteln('RATA-RATA = ',hasil:2:2);karena hasil bertipe real, mencetaknya menggunakan hasil:2:2, agar yang diambil hanya dua desimal.

Page 51: Modul Pascal

24. LAT-24

Program Polindrom;Uses crt;

VarKata,dibalik:string;i,pjgkata:integer;

Beginclrscr;

Writeln('Program Polindrom');Writeln('=================');Writeln;

Write('Masukkan Kata: ');Readln(kata);

Writeln;pjgkata:=length(kata);

For i:= pjgkata downto 1 dodibalik:=dibalik+kata[i];

Writeln('Asal: ',kata,' Dibalik: ',dibalik);

Writeln;

if (kata=dibalik) thenWriteln('Kata Tersebut Termasuk Polindrom!')elseWriteln('Kata Tersebut Tidak Termasuk Polindrom!');

readkey;end.

Program di atas bertujuan untuk menentukan suatu kata/kalimat polindrom atau bukan. Suatu kata dikatakan polindrom jika kata tersebut sama, jika dibaca dari depan maupun belakang. Contoh: KATAK adalah polindrom karena ketika dibalik KATAK. KASAR bukan polindrom karena ketika dibalik RASAK,tidak sama dengan kata asal.

Page 52: Modul Pascal
Page 53: Modul Pascal

ALGORITMA

Variable yang digunakan :

Kata :string; menampung inputan kata Asal:string;menampung kata asal dibalik:string; menampung kata yang telah dibalik i:integersebagai indeks dan pencacah loop pjgkata:integer;menampung panjang string

1. Pertama, inputkan dahulu kata yang akan dicek polindromnya.lalu simpan divariable kata.Write('Masukkan Kata: ');Readln(kata);

2. Kemudian, dapatkan panjang string kata denganpjgkata:=length(kata);

3. Lakukan loop, untuk mengisi nilai variable dibalik.Variable dibalik ini nantinya akan dibandingkan dengan variable kata.nilai awal dibalik adalah:’’(whitespace).

For i:= pjgkata downto 1 dodibalik:=dibalik+kata[i];

Disini kita menemukan array. Pada dasarnya String adalah array dari char.sehingga kata[1] mengacu kepada, huruf ke-1(S) dari SARAS. Kata[2] mengacu kepada huruf ke-2(A) dari SARAS dan seterusnya.karena loop dimulai dari i=5, maka kata[5]=S. nilai dibalik=S. loop ke-2, kata[4]=A.nilai dibalik=SA.loop ke-3,kata[3]=R.nilai dibalik=SAR. Dan seterusnya, sehingga menghasilkan kata yang telah dibalik.

4. Setelah didapat kata yang telah dibalik, kemudian bandingkan dengan kata asalnya, jika sama, maka polindrom, jika tidak, bukan polindrom.

if (kata=dibalik) thenWriteln('Kata Tersebut Termasuk Polindrom!')elseWriteln('Kata Tersebut Tidak Termasuk Polindrom!');

Page 54: Modul Pascal

25. LAT-25

uses crt;

varkunci:array[1..10]of char=('b','a','c','a','c','a','c','a','b','a');jawaban:array[1..10]of char;benar,salah,nilai:integer;i :integer;

beginclrscr;

gotoxy(10,1);writeln('PROGRAM MENCOCOKKAN KUNCI JAWABAN' );gotoxy(10,2);writeln('=======================================' );gotoxy(1,4);

for i:= 1 to 10 do beginwrite('Masukkan jawaban soal no ',i,':');readln(jawaban[i]);

if(jawaban[i]=kunci[i]) then inc(benar) else inc(salah);

end;

writeln;writeln('Jumlah benar adalah : ',benar);writeln('Jumlah salah adalah : ' ,salah);

nilai:=benar*10;

writeln('Total nilai adalah : ',nilai);

if(nilai<= 60) then writeln('Nilai kamu rendah, belajar keras!')else if(nilai>60) and (nilai<=80) then writeln('Nilai kamu cukup bagus, tingkatkan lagi!')else writeln('Nilai kamu tinggi, pertahankan!');

readkey;end.

Page 55: Modul Pascal

Program di atas bertujuan untuk mencocokkan jawaban yang diinput melalui keyboard dengan kunci jawaban yang telah ditulis sebelumnya. Jawaban adalah karakter alphabet : a,b,c.

ALGORITMA :

1. Variabel yang digunakan ada 6 :

kunci:array[1..10]of char=('b','a','c','a','c','a','c','a','b','a');array untuk menyimpan kunci jawaban.

jawaban:array[1..10]of char; array untuk menyimpan jawaban benar:integer; menghitung skor benar salah:integer; menghitung skor salah nilai:integer; menghitung total nilai i :integer;sebagai pencacah sekaligus indeks acuan.

Pertama-tama inputkan dulu jawaban melaui keyboard, lalu simpan pada array jawaban, kemudian cek kesamaannya dengan kunci jawaban dengan menyamakan elemen array-nya pada indeks yang sama(if(jawaban[i]=kunci[i]),jika jawaban sama,maka skor benar dinaikkan sebesar 1(then inc(benar)),jika skor salah dinaikkan sebesar 1 (else inc(salah)).setelah loop berakhir, cetak skor benar dan salah.

for i:= 1 to 10 do beginwrite('Masukkan jawaban soal no ',i,':');readln(jawaban[i]);

if(jawaban[i]=kunci[i]) then inc(benar) else inc(salah);

Page 56: Modul Pascal

end;

2. Setelah didapat jumlah skor benar, maka dapat dicari nilainya. nilai adalah jumlah benar dikali 10,kemudian cetak nilainya.

nilai:=benar*10;

3. Kemudian, jika nilai yang didapat lebih kecil atau samadengan 60, maka cetak tulisan ‘Nilai kamu rendah,belajar keras!’, jika diatas 60 atau kecil samadengan 80,maka cetak tulisan ‘Nilai kamu cukup bagus, tingkatkan lagi!’. Selain itu cetak tulisan’Nilai kamu tinggi, pertahankan!’

if(total<= 60) then writeln('Nilai kamu rendah, belajar keras!')else if(total>60) and (total<=80) then writeln('Nilai kamu cukup bagus, tingkatkan lagi!')else writeln('Nilai kamu tinggi, pertahankan!');

Page 57: Modul Pascal

26. LAT-26

uses crt;

varfibo:array[1..maxint] of longint;i,batas: integer;

begin clrscr;

gotoxy(15,1); writeln('PROGRAM MENAMPILKAN DERET FIBONACCI ');gotoxy(15,2); writeln('=================================== ');gotoxy(1,4); write('Masukkan jumlah suku deret fibonacci : '); readln(batas);

fibo[1]:=1; fibo[2]:=1;

for i:= 3 to batas do fibo[i]:=fibo[i-1]+fibo[i-2];

for i:=1 to batas do write(fibo[i],' ');

readkey; end.

Page 58: Modul Pascal

Deret Fibonacci adalah : Suatu deret bilangan, dimana bilangan yang terbentuk adalah dari jumlah dua bilangan sebelumnya. Deret Fibonacci diawali dengan 1 dilanjutkan dengan 1,kemudian 2 adalah hasil penjumlahan 1+1, kemudian 3, hasil penjumlah 1+2 dan seterusnya.

Variable yang digunakan :

fibo:array[1..maxint] of longint;array untuk menampung bilangan fibonacci sebanyak nilai maximum dari tipe data integer(maxint).i:integer;sebagai pencacah loop dan indeks.batas: integer; menentukan banyak suku yang ditampilkan

ALGORITMA :

1. Isi nilai indeks ke-1 dan ke-2 dengan angka1.fibo[1]:=1;fibo[2]:=1;

2. Kemudian dengan loop, isi nilai elemen selanjutnya dengan pertambahan dari 2 nilai sebelumnya.for i:= 3 to batas do //loop dimulai dari 3 karena elemen 1 dan 2 sudah diisi diatas

fibo[i]:=fibo[i-1]+fibo[i-2];3. Setelah semua elemen terisi, kemudian cetak hasilnya.

for i:=1 to batas do write(fibo[i],' ');

Page 59: Modul Pascal

27. LAT-27

uses crt;

var

matriks1:array[1..3,1..3] of integer;matriks2:array[1..3,1..3] of integer;hasil:array[1..3,1..3]of integer;i,k:integer;

beginclrscr;

writeln('PROGRAM MENJUMLAHKAN DUA MATRIKS');writeln('======================================');

writeln('MATRIKS A ');for i:= 1 to 3 do begin for k:= 1 to 3 do begin read(matriks1[i,k]); end; readln; end;

writeln('MATRIKS B ');for i:= 1 to 3 do begin for k:= 1 to 3 do begin read(matriks2[i,k]); end; readln; end;

writeln('MATRIKS HASIL ');for i:= 1 to 3 do begin for k:= 1 to 3 do begin hasil[i,k]:=matriks1[i,k]+matriks2[i,k]; write(hasil[i,k],' '); end; writeln; end;

readkey;end.

Page 60: Modul Pascal

ARRAY 2 DIMENSI :

Array dua dimensi adalah : array yang memiliki dua buah subskrip yaitu baris dan kolom. Atau dapat dikatakan sebuah array yang memiliki array lagi didalamnya. Akan tetapi, untuk memudahkan, kita gunakan konsep baris dan kolom. Gabungan baris dan kolom membentuk indeksnya :

Bentuk umum pendeklarasian array dua dimensi:

nama_array : array [1..banyak_baris,1..banyak_kolom] of type_data;

atau

nama_array : array [1..banyak_baris] of [1..banyak_kolom] of type_data;

untuk mengakses array berdimensi dua :

nama_array[indeks_baris,indeks_kolom]

ALGORITMA :

Program di atas bertujuan untuk menjumlahkan 2 buah matriks berukuran 3x3(3 baris dan 3 kolom), matriks A dan matriks B yang isi matriksnya diinputkan melalui keyboard.

KOLOMBARIS 1,1 1,2 1,3

2,1 2,2 2,33,1 3,2 3,3

Page 61: Modul Pascal

1. Variable yang digunakan ada 5 :

matriks1:array[1..3,1..3] of integer; untuk menampung nilai matriksA matriks2:array[1..3,1..3] of integer; untuk menampung nilai matriksB hasil:array[1..3,1..3]of integer; untuk menampung hasil penjumlahan

matriks A dan B i:integer;sebagai pengontrol indeks baris. k:integer;sebagai pengontrol indeks kolom.

2. sebelum menambahkan, isi terlebih dahulu nilai matriks A melalui keyboard

writeln('MATRIKS A ');for i:= 1 to 3 do beginfor k:= 1 to 3 do beginread(matriks1[i,k]);end;readln; end;

3. kemudian, isilah nilai matriks B melalui keyboard :

writeln('MATRIKS B ');for i:= 1 to 3 do beginfor k:= 1 to 3 do beginread(matriks2[i,k]);

end; readln; end;

4. setelah kedua matriks terisi, barulah kita dapat menjumlahkan keduanya. Pada penjumlahan matriks memiliki aturan, hanya indeks-indeks yang sama saja yang dijumlahkan. Contoh : indeks[1,1] matriks1 harus dijumlahkan dengan indeks[1,1] matriks2 dan indeks[1,2] matriks1 harus dijumlahkan indeks [1,2] matriks2.

5. Menjumlahkan indeks[1,1] matriks1 dengan indeks[1,2] matriks2 adalah kesalahan dalam penjumlahan matriks.

6. Hasil penjumlahan masing-masing indeks matriks tersebut disimpan ke dalam indeks matriks hasil, setelah itu nilainya langsung dicetak.

writeln('MATRIKS HASIL ');for i:= 1 to 3 do begin

for k:= 1 to 3 do begin hasil[i,j]:=matriks1[i,k]+matriks2[i,k];

write(hasil[i,k],' ');

Page 62: Modul Pascal

end; writeln; end28. LAT-28

uses crt;var matriksa:array[1..3,1..3]of integer; matriksb:array[1..3,1..3]of integer; hasil:array[1..3,1..3]of integer; baris,kolom,k:integer;

beginclrscr;gotoxy(10,1);writeln('PROGRAM PERKALIAN MATRIKS');gotoxy(10,2);writeln('=========================');gotoxy(1,4);writeln('INPUT ELEMEN MATRIKS A : '); for baris:= 1 to 3 do begin for kolom:=1 to 3 do read(matriksa[baris,kolom]); readln; end;

writeln;writeln('INPUT ELEMEN MATRIKS B : '); for baris:= 1 to 3 do begin for kolom:=1 to 3 do read(matriksb[baris,kolom]); readln; end;

writeln;writeln('MATRIKS HASIL : '); for baris:= 1 to 3 do begin for kolom:=1 to 3 do begin hasil[baris,kolom]:=0; for k:=1 to 3 do

hasil[baris,kolom]:= hasil[baris,kolom]+matriksa[baris,k]*matriksb[k,kolom]; write(hasil[baris,kolom]:5) ; end; writeln; end;

readkey;end.

Page 63: Modul Pascal

Variable yang digunakan :

1. matriksa:array[1..3,1..3]of integer;menampung array matriks A2. matriksb:array[1..3,1..3]of integer; menampung array matriks B3. hasil:array[1..3,1..3]of integer;menampung matriks hasil4. baris;sebagai indeks baris dan pencacah loop5. kolom;sebagai indeks kolom dan pencacah loop6. k:integer;sebagai indeks sementara

ALGORITMA :

1. Pertama-tama inputkan dahulu elemen-elemen matriks Awriteln('INPUT ELEMEN MATRIKS A : ');for baris:= 1 to 2 do begin

for kolom:=1 to 2 do read(matriksa[baris,kolom]); readln; end;

2. Kemudian inputkan elemen-elemen matriks Bwriteln('INPUT ELEMEN MATRIKS B : ');

for baris:= 1 to 2 do begin for kolom:=1 to 2 do read(matriksb[baris,kolom]); readln; end;

3. Pada perkalian matriks, indeks : hasil[1,1]=matriksa[1,1]*matriksb[1,1]+matriksa[1,2]*matriksb[2,1];hasil[1,2]=matriksa[1,1]*matriksb[1,2]+matriksa[1,2]*matriksb[2,2];

hasil[2,1]=matriksa[2,1]*matriksb[1,1]+matriksa[2,2]*matriksb[2,1];hasil[2,2]=matriksa[2,1]*matriksb[1,2]+matriksa[2,2]*matriksb[2,2];

writeln('MATRIKS HASIL : '); for baris:= 1 to 2 do begin for kolom:=1 to 2 do begin

hasil[baris,kolom]:=0; // hasil harus di nol kan lagi setiap berganti kolom.

for k:=1 to 2 do //loop untuk mendapatkan nilai hasil

hasil[baris,kolom]:=hasil[baris,kolom]+matriksa[baris,k]*matriksb[k,kolom]; write(hasil[baris,kolom]:5) ; //setelah nilai hasil didapat langsung dicetak. end;

Page 64: Modul Pascal

writeln; end;29. LAT-29

uses crt;

varbaris,kolom,level:integer;data:array [1..100,1..100] of integer;

beginclrscr;writeln ('PROGRAM MEMBUAT SEGITIGA PASCAL ');writeln ('====================================');

write('masukkan jumlah level : '); readln(level);

for baris:= 1 to level do begin for kolom:= 1 to baris do begin

if kolom=1 then data[baris,kolom]:=1 else if kolom=baris then data[baris,kolom]:=1 else data[baris,kolom]:=data[baris-1,kolom-1]+data[baris-1,kolom];

end; end;

for baris:=1 to level do begin

for kolom:= 1 to baris do write(data[baris,kolom]:3); writeln; end;

readkey;end.

Page 65: Modul Pascal

PROGRAM SEGITIGA PASCAL MENGGUNAKAN 4 VARIABLE :

1. baris sebagai pengontrol loop 1,sekaligus sebagai indeks array 2. kolom sebagai pengontrol loop 2,sekaligus sebagai indeks array3. level menentukan level atau tinggi segitiga pascal4. data:array [1..100,1..100] of integer; array bertipe integer untuk

menyimpan angka-angka nya.

ALGORITMA :1. Inputkan jumlah level melalui keyboard, simpan di var level :

write('masukkan jumlah level : '); readln(level);

2. Gunakan looping untuk menyimpan angka-angka dalam array data for baris:= 1 to level do begin for kolom:= 1 to baris do begin

if kolom=1 then data[baris,kolom]:=1 else if kolom=baris then data[baris,kolom]:=1 else data[baris,kolom]:=data[baris-1,kolom-1]+data[baris-1,kolom];

end; end;

Karena sifat segitiga pascal, bagian paling kiri dan paling kanan menyimpan angka 1 maka setiap elemen array kolom 1 diberi nilai 1. dan setiap kali nilai baris=kolom, nilai elemen array-nya diberi angka 1. Selain itu, nilai elemen array didapat dari penjumlahan elemen array sebelumnya.

Page 66: Modul Pascal

3. Setelah nilai elemen array diisi, kemudian cetak dengan menggunakan looping :

for baris:=1 to level do begin

for kolom:= 1 to baris do write(data[baris,kolom]:3); writeln; end;

angka-angka akan dicetak dengan bentuk segitiga siku-siku, bukan segitiga sama sisi. write(data[baris,kolom]:3); tanda :3 disamping, untuk mencetak angka dimulai dari kolom ke-3.sehingga terlihat lebih rapi. Bisakah kamu membuatnya dengan bentuk segitiga sama sisi?

Page 67: Modul Pascal

30. LAT-30

uses crt;constbatas=10;vardata: array[1..batas] of integer;i,j,temp: integer;

beginclrscr;gotoxy(15,1);writeln('PROGRAM MENGURUTKAN BILANGAN DARI KECIL KE BESAR ');gotoxy(15,2);writeln('==============================================');

gotoxy(1,4);writeln('MASUKKAN ',batas,' DATA SECARA ACAK! ');for i:=1 to batas doread(data[i]);writeln;

for i:= 1 to batas-1 dobegin

for j:= i+1 to batas do beginif data[i]>data[j] then begin temp:= data[i]; data[i]:=data[j]; data[j]:=temp;

end; end;

end;

gotoxy(1,7);writeln('HASIL SETELAH DIURUTKAN');

for i:= 1 to batas dowrite(data[i],' ');readkey;end.

Page 68: Modul Pascal

Program ini bertujuan untuk mengurutkan bilangan yang diinput secara acak menjadi terurut menaik(dari kecil ke besar). Const batas;sebagai constanta, apabila kita ingin jumlah data lebih banyak,atau lebih sedikit tinggal mengubah nilai batasnya.

Variable yang digunakan :data: array[1..batas] of integer; untuk menampung data inputan.i:integer; sebagai pencacah loop dan indeks.j:integer; sebagai penacah loop dan indeks.temp: integer;sebagai variable temporary untuk pertukaran.

ALGORITMA :

1. Inputkanlah isi array datagotoxy(1,4);writeln('MASUKKAN ',batas,' DATA SECARA ACAK! ');for i:=1 to 10 doread(data[i]);

2. Dengan menggunakan algoritma BUBBLE-SORT, data[i]dibandingkan dengan data[i+1],yaitu data sesudahnya. Jika lebih besar maka akan ditukarkan dengan data di kanan. kemudian dicari lagi data yang terbesar dan tukarkan ke kanan, sehingga terlihat seperti BUBBLE(gelembung) yang bergerak ke kanan.hasilnya data akan terurut dari kecil ke besar.

Page 69: Modul Pascal

for i:= 1 to batas-1 dobegin

for j:= i+1 to batas do begin

if data[i]>data[j] then begin temp:= data[i]; data[i]:=data[j]; data[j]:=temp;

end; end;

end;

3. Kemudian setelah data terurut, cetak ke layar.

writeln('HASIL SETELAH DIURUTKAN');

for i:= 1 to batas dowrite(data[i],' ');