Bentuk Perulangan & Penyeleksian Kondisi pada Pascal

Materi 
1. Bentuk – bentuk Perulangan 

Dalam hampir setiap program yang kompleks mutlak memerlukan suatu perulangan dan percabangan. Tujuan perulangan disini adalah untuk mengulang statement atau blok statement berulang kali sesuai 
sejumlah yang ditentukan pemakai. Dalam materi ini akan memberikan gambaran konsep dasar dari pengertian diatas. 

a) Perulangan For.
Perulangan dengan statemen For digunakan untuk mengulang statemen atau suatu blok statemen berulang kali. Perulangan dengan statemen For dapat berupa perunlangan positif dan perulangan negatif. 

• Perulangan For positif 
contoh : perulangan positif untuk satu statement : 
Uses Crt; 
Var 
i : Integer; 
Begin 
For i := 1 To 5 Do Writeln ('I Love Dinda’); 
END. 
Maka bila program diatas dicompile 
hasilnya : 
I Love Dinda 
I Love Dinda 
I Love Dinda 
I Love Dinda 
I Love Dinda 
Penjelasan : Berati statemen I Love Dinda akan diulang sebanyak 5 kali yaitu dengan menghitung nilai i dari i ke 1 sampai nilai i terakhir yaitu i ke 5. 

# Contoh dengan menggunakan blok statement: cara penulisannya dengan pada awal blok diawali dengan Begin dan pada akhir blok diakhiri dengan End; 
Uses Crt; 
Var 
i : Integer; 
Begin 
For i:= 1 To 10 Do 
Begin 
Writeln ('I Love Dinda'); { blok statement } 
End; 
End. 
Hasil yang akan didapat akan sama dengan contoh yang pertama, tapi yang harus diingat disini untuk penggunaan blok pada perulangan For biasanya mempunyai banyak statement [lebih dari 1 statement] 


# Contoh 3 : Penggunaan perulangan For dalam blok statement untuk membuat tabel 

Uses Crt; 
Var 
a,b,c : Integer; 
bagi : Real; 
Begin 
Writeln('----------------------------------------------'); 
Writeln(' a a*a a*a*a 1/a '); 
Writeln('----------------------------------------------'); 
For a := 1 To 10 Do 
Begin 
b:= a*a; 
c:=a*a*a; 
bagi := 1/a; 
Writeln(a:4,c:10,d:10,bagi:12:3); 
End; 
Writeln ('----------------------------------------------'); 
End. 
maka hasilnya : 
---------------------------------------------- 
a a*a a*a*a 1/a 
---------------------------------------------- 
1 1 1 1.000 
2 4 8 0.500 
3 9 27 0.333 
4 16 64 0.250 
5 25 125 0.200 
6 36 216 0.167 
7 49 343 0.143 
8 64 512 0.125 
9 81 729 0.111 
10 100 1000 0.100 
---------------------------------------------- 
• Perulangan For negatif : Perulangan negatif adalah perulangan dengan menghitung (counter) dari besar ke kecil. 

Statement yang digunakan adalah For-DownTo-Do 
contoh : 
Uses Crt; 
Var 
i : Integer; 
Begin 
For i := 10 DownTo 1 Do Write (i:3); 
End. 
Hasil : 
10 9 8 7 6 5 4 3 2 1 

• Perulangan For tersarang 
Perulangan For tersarang adalah perulangan For yang berada pada perulangan yang lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan bertambah, mengerjakan perulangan yang lebih dalam lagi mulai dari nilai awalnya dan seterusnya. 
Contoh : 
Var 
a,b : Integer; 
Begin 
For a := 1 To 3 Do 
Begin 
For b := 1 To 2 Do Write (a :4,b:2); 
Writeln; 
End; 
End. 
Hasil : 
1 1 1 2 
2 1 2 2 
3 1 3 2 

• Perulangan While - Do 
Penyeleksian kondisi digunakan untuk agar program dapat menyeleksi kondisi, sehingga program dapat menentukan tindakan apa yang harus dikerjakan, tergantung dari kondisi yang diseleksi tersebut. Perulangan While – Do tidak dilakukan jika kondisi tidak terpenuhi. 
Contoh : 
Uses Crt; 
Var i : Integer; 
Begin 
i := 0; 
While < 5 do 
Begin 
Write (i:3); 
Inc (i); { sama dengan i:=i+1 } 
End; 
End. 
Hasilnya : 
0 1 2 3 4 

• Perulangan While – Do tersarang 
Perulangan While – Do tersarang (nested While - Do) merupakan perulangan While – Do yang satu di dalam perulangan While – Do yang lainnya. 
Contoh : 
Uses Crt; 
Var 
a, b : Integer; 
Begin 
ClrScr; 
a:=1; 
b:=1; 
While a < 4 Do{ loop selama a masih lebih kecil dari 4 } 
Begin 
a := a+1; 
While b < 3 Do{ loop selama b masih lebih kecil dari 3 } 
Begin 
Write (a:3,b:2); 
b:=b+1; 
End; 
End; 
Readln; 
End. 

• Perulangan Repeat - Until. 
Repeat – Until digunakan untuk mengulang statement-statemen atau blok statement sampai (Until) kondisi yang diseleksi di Until tidak terpenuhi. 
Sintak dari statement ini adalah : 
Contoh : 
Var 
i : Integer; 
Begin 
i:=0; 
Repeat 
i:= i+1; 
Writeln (i); 
Until i=5; 
End. 
hasil : 
1 
2 
3 
4 
5 

• Repeat – Until tersarang 
Repeat – Until tersarang adalah suatu perulangan Repeat - Until yang satu berada didalam perulangan Repeat – Until yang lainnya. 
Contoh : 
Var 
a,b,c : Real; 
Begin 
Writeln('========================================'); 
Writeln(' sisi A sisi B Sisi C '); 
Writeln (' ======================================='); 
a:= 1; 
Repeat { perulangan luar } 
b := 0; 
Repeat{ perulangan dalam } 
c:=Sqrt (a*a+b*b); 
Writeln (a:6:2, b:9:2, c:9:2); 
b:=b+5; 
Until b>25; { berhenti jika b lebih besar dari 5 untuk 
perulangan dalam } 
a:=a+1; 
Until a>3; { berhenti jika a lebih besar dari 3 untuk 
perulangan luar } 
Writeln(' =======================================');
End. 

• Percabangan 

 If - Then 
Bentuk struktur If – Then adalah sebagai berikut : 
If Kondisi Then Statement 
Ungkapan adalah kondisi yang diseleksi oleh statement If. Bila kondisi yang diseleksi terpenuhi, maka statement yang mengikuti Then akan diproses, sebaliknya bila kondisi tidak terpenuhi, maka yang akan diproses statement berikutnya. 
Misalnya : 
If Pilihan = 2 Then 
Begin{ jika kondisi terpenuhi, Yaitu jika pilihan = 2 } 
...... 
...... 
End 
Else{ jika kondisi tidak terpenuhi, yaitu jika pilhan tidak sama dengan 2} 
Begin 
....... 
....... 
End; 
Contoh Program : 
Uses Crt; 
Var 
Nilai : Real; 
Begin 
Write ('Jumlah Nilai :'); 
Readln (nilai); { Pemasukan data } 
If nilai > 60 Then { seleksi kondisi variabel nilai } 
Writeln('Lulus') { Dilaksanakan jika nilai lebih besar dari 60 } 
Else 
Writeln('Tidak lulus'); { Dilaksanakan jika variabel nilai lebih kecil dari 60 } 
End. 
Hasil : 
Jika kita Memasukan 40 pada varibel nilai, Maka program diatas akan mencetak Tidak lulus. 

 If tersarang (nested If) 
Struktur If tersarang merupakan bentuk dari suatu statement If berada di dalam lingkungan statemen If yang lainya. Bentuk statement If tersarang sebagai berikut : 

If kodisi1 Then atau If Kondisi1 Then 
If kondisi2 Then Begin 
statemen1 IF kondisi2 Then 
Else statemen1 
statemen2; Else 
statemen2 
End; 

 Case - Of 
Struktur Case – Of mempunyai suatu ungkapan logika yang disebut dengan selector dan sejumlah statemen yang diawali dengan suatu label permasalahan (case label) yang mempunyai tipe sama dengan selector. 
Statement yang mempunyai case label yang bernilai sama dengan case label yang bernilai sama dengan nilai selector akan diproses sedang statemen yang lainya tidak. 

Bentuk struktur dari Case - Of: 

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

Daftar Case label dapat berupa konstanta, range dari konstanta yang bukan bertipe real. 
Contoh program ; 
Program nilai; 
Var 
nil : Char ; 
Begin 
Write ('Nilai Numerik yang didapat :'); 
Readln (nil); 
Case nil Of 
'A': Writeln ('Sangat Baik’); 
'B': Writeln('Baik’); 
'C': Writeln('Cukup'); 
'D': Writeln('Kurang'); 
'E': Writeln('Sangat Kurang'); 
End; 
End. 
hasil : Nilai Numerik yang didapat : B Input Baik 
Contoh Listing Program untuk Dicoba 

1. Program input data dengan array. 
Program Pemakaian_Array_Untuk_10_data_dengan_menggunakan_For; 

Uses Crt; 
Const 
garis='------------------------------------------------------'; 
Var 
nil1,nil2 : Array [1..10] Of 0..100; {Array dgn Type subjangkauan} 
npm : Array [1..10] Of String [8]; 
nama : Array [1..10] Of String [15]; 
n,i,bar : Integer; 
jum : Real; 
tl : Char; 
Begin 
ClrScr; 
{ pemasukan data dalam array } 
Write ('Mau Isi Berapa Data:'); 
Readln (n); 
For i:= 1 To n Do 
Begin 
ClrScr; 
GotoXY(30,4+1); Write('Data Ke-:',i:2); 
GotoXY(10,5+i); Write('NPM :'); Readln (npm[i]); 
GotoXY(10,6+i); Write('Nama :'); Readln (nama[i]); 
GotoXY(10,7+i); Write('Nilai 1 :'); Realdn(nil 1[i]); 
GotoXY(10,8+i); Write('Nilai 2 :'); Readln(nil 2[i]); 
End; 
{ proses data dalam array } 
ClrScr; 
GotoXY(5,4); Write(Garis); 
GotoXY(5,5); Write ('No'); 
GotoXY(9,5); Write ('NPM'); 
GotoXY(18,5); Write ('Nama'); 
GotoXY(34,5); Write ('Nilai 1'); 
GotoXY(41,5); Write ('Nilai 2'); 
GotoXY(47,5); Write ('Rata'); 
GotoXY(54,5); Write ('Abjad’); 
GotoXY(5,6); Write (Garis); 
{ proses Cetak isi array dan seleksi kondisi } 
bar := 7; 
For i:= 1 To n Do 
Begin 
jum:=(nil1[i]+nil2[i])/2; 
If jum>= 90 Then tl:='A' 
Else 
If jum>80 Then tl:='B' 
Else 
If jum>60 then tl:='C' 
Else 
If jum 50 Then tl:='D' 
Else 
tl:='E'; 
{ cetak hasil yang disimpan di array dan hasil } 
{ penyeleksian kondisi } 
GotoYX(5,bar); Writeln(i:2); 
GotoYX(9,bar); Writeln (NPM[i]); 
GotoYX(18,bar); Writeln (NAMA[i]); 
GotoYX(34,bar); Writeln (NIL1[i]:4); 
GotoYX(41,bar); Writeln (NIL2[i]:4); 
GotoYX(47,bar); Writeln (jum:5:1); 
GotoYX(54,bar); Writeln (tl); 
bar:=bar+1; 
End; 
GotoXY(5,bar+1);Writeln(garis); 
Readln; 
End. 

2. Program jendela bergerak. 
Program Window_Bergerak_dgn_delay; 
Uses Crt; 
Var i : Integer; 
Begin 
For i:=1 To 15 Do 
Begin 
Sound (i*100); 
Delay (100); 
NoSound; 
End; 
TextBackGround(black); 
ClrScr; 
For i := 1 To 9 Do 
Begin 
TextBackGround(white); 
Window (42-i*4,10-i,38+i*4,15+i); 
ClrScr; 
Delay(100); 
End; 
TextColor(15); 
GotoXY(28,2);Writeln('c'); 
GotoXY (8,3); Writeln ('3'); 
GotoXY (28,4); Writeln ('A'); 
TextColor(black); 
GotoXY (44,3); Writeln ('3'); 
GotoXY (44,2); Writeln ('&'); 
TextColor (29,4); Writeln ('U'); 
TextColor (red*25); 
GotoXY (30,3); Writeln ('B E L A J A R'); 
TextColor (black); 
GotoXY (5,5); Write('c'); 
For i := 6 To 64 Do 
Begin 
GotoXY (i,5); Writeln (''); 
End; 
For i := 6 To 20 Do 
Begin 
GotoXY(5,i); Writeln('3 '); 
End; 
GotoXY (5,21); Writeln (' '); 
TextColor(white); 
GotoXY(65,5); Write('U'); 
For i := 6 To 65 Do 
Begin 
GotoXY (i,21); Writeln(' `); 
End; 
For i := 6 To 20 Do 
Begin 
GotoXY(65,i); Writeln('3'); 
End; 
GotoXY (65,21); Writeln ('c'); 
TextColor(yellow); 
Readln; 
End. 





Soal Latihan 
Buatlah program untuk soal dibawah ini dengan tampilan sebagus mungkin (gunakan perintah Window, Textcolor dll). Jumlah suku sesuai dengan input dari keyboard. 
1. Buat deret hitung 3,7,11,15,......................=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
2. Buat deret ukur 3,9,27,................................=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
3. Buat tabel deret bergoyang 1,-2,4,-8,...........=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
4. Buat deret suku harmonis 1,1/2,1/3,.............=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
5. Buat deret fibbonaci 1,1,2,3,5,.....................=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
6. Buat deret seperti berikut 1,-2,3,-4,.............=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
7. Buat deret kuadrat 1, 4, 9,............................=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
8. Buat deret seperti berikut 100, 90, 70 ,...........=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
9. Buat deret seperti berikut 256, 196, 144,............=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
10. Buat deret seperti berikut 1, 1, 1, 2, 2, 3, 6, 4, 24, 5..........=? 
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T. 
11. Buatlah program untuk mencari faktorial, sesuai dengan input yang diminta. 
12. Buatlah program huruf yang berjatuhan sehingga membentuk suatu kalimat yang telah diinput dari keyboard .



CREDIT