Modul 3 - Belajar Pascal Pemula
Modul 3
Setelah
mencoba program
Hangman, sesuatu pertanyaan yang
timbul
adalah mengapa komputer
dapat mengetahui
huruf yang kita masukan ada dalam tulisan atau tidak ?
Ok, hal tersebut dapat terjadi karena adanya keputusan yang terprogram, artinya komputer
dapat mengambil keputusan untuk berdasarkan
aliran logika yang telah
ditentukan sebelumnya yang dikenal sebagai algoritma.
Bagaimana penulisan perintah pengambilan keputusan pada Pascal ?
Salah satu perintah struktur pengambilan keputusan adalah :
If condition
Then statement;
Dimana condition
adalah sesuatu yang bernilai True atau False, dan statement adalah perintah yang akan dijalankan.
Dapatkah anda memberikan sebuah contoh pemakaian perintah If ?
Baiklah, misalnya kita akan membuat program menentukan pembayaran berdasarkan berdasarkan jumlah belanja, jika diatas 100000 (seratus ribu) mendapatkan potongan
3%, maka programnya adalah sebagai berikut :
Uses Crt; Var
Belanja : Real;
Begin
Clrscr;
Write(‘Jumlah belanja ? ‘); Readln(Belanja);
If Belanja > 100000 Then Belanja := Belanja * 0.97;
Writeln(‘Jumlah yang harus anda bayar ‘,Belanja:10:2); Readln;
End.
Ok, saya mengerti bahwa pada
prinsipnya Statement setelah Then akan dijalankan kalau condition setelah If menghasilkan nilai True. Bagaimana kalau condition True Statement1 dijalankan, dan sebaliknya Statement2 dijalankan ?
Untuk keputusan seperti ini, pascal menyediakan struktur pengambilan keputusan
berikut:
If condition
Then Statement1 Else Statement2;
Atau lebih baik ditulis sebagai
If conditon
Then
Statement1
Else
Statement2;
Langsung saya buatkan contoh :
Uses Crt; Var
Bilangan : Integer;
Begin
Clrscr;
Write(‘Masukan Bilangan
? ‘); Readln(Bilangan);
If (Bilangan Mod 2) = 0 Then
Writeln (‘Genap’)
Else
Writeln (‘Ganjil’);
Readln; End.
He-he-he, bagaimana kalau keputusannya lebih dari 2, misalnya 4 Statement yang harus dijalankan berdasarkan masing-masing condition ?
Oh, hal itu bisa dilakukan dengan merangkai beberapa struktur If, misalnya :
If condition1 Then
Statement1
Else
If condition2 Then
Statement2
Else
If condition3
Then
Statement3
Else
Statement4;
Jadi pada prinsipnya adalah terdiri dari tiga struktur
If.
Misalnya kita
akan membuat nilai
huruf
dari
angka
dengan kriteria 80
keatas
mendapat A, 70 s/d 79 mendapat B, 60 s/d 69 mendapat C, 50 s/d 59 mendapat D,
dan
dibawah 49 mendapat E, maka dapat ditulis menjadi :
if mark>=80 then grade:='A'
else { 79 or below goes here }
if mark>=70 then
grade:='B'
else { 69 or below goes here }
if mark>=60 then
grade:='C'
else { 59 or below goes here }
if mark>=50 then
grade:='D'
else { 49 or below goes here }
grade:='E';
Wah panjang banget, adakah cara lain untuk melakukan hal tersebut ?
Selain struktur kendali If, pascal juga menyediakan suatu struktur Case, yang akan menjalankan statement berdasarkan range tertentu, adapun syntaxnya adalah
sebagai berikut :
Case variabel
Of
Range1 : Statement1;
Range2 : Statement2;
Range3 : Statement3;
…
Else StatementN;
End;
Saya akan menggulangi contoh diatas dengan struktur Case :
Case mark of
80..100: grade:='A';
70..79 : grade:='B';
60..69 : grade:='C';
50..59
: grade:='D'; Else grade:='E';
End;
Lebih sederhana bukan.
Opss, hampir lupa, bagaimana kalau statement yang harus dijalankan pada
masing- masing condition lebih dari 1 ?
Ya, benar, sering kita perlu menjalankan beberapa Statement pada masing-masing condition, untuk keperluan tersebut kita dapat memblok perintah-perintah
tersebut dengan Begin … End;
Contoh :
14
If Belanja > 100000 Then
Begin
Belanja := Belanja * 0.97;
Writeln (‘Anda berhak mendapat
potongan 3%’);
End;
Pertanyaan yang
terakhir, bagaimana
penulisan condition yang
terdiri dari beberapa logika ?
Pertanyaan yang tepat sekali, untuk condition
yang terdiri dari beberapa logika dapat
anda gabungkan dengan operasi AND, OR. Misalnya kita akan mencari tahun kabisat.
In the Gregorian calendar, which is the calendar used by most modern countries, the
following rules decides which years are leap years:
1. Every year divisible by 4 is a
leap year.
2. But every year divisible by 100 is NOT a leap year
3. Unless the the year is also divisible by 400, then it is still a
leap year.
Maka penulisan programnya menjadi :
If ((tahun Mod 4) = 0) And Not (tahun Mod 100 = 0)) Or (tahun Mod 400) = 0 Then
Writeln (‘Tahun
Kabisat !’) Else
Writeln (‘Bukan Tahun Kabisat
!’);
Latihan 3
1. What does Pascal provide in order to perform conditional branching ?
2. Explain briefly each syntax !
3. How could we do nested branching ? Is it legal ?
4. Tell us how to trap arrow keys !
5. How could we trap function keys (F1 through F10) ? How is it similar
to trapping
arrow keys?
6. Determine the output if i=5 and j=3 for the following excerpt :
if i<4 then writeln('Need more experience ...')
else begin
writeln('Yes, you have it !');
if j<=3 then writeln('But, I would prefer better ones.')
else writeln('Superb !');
writeln('Congratulations !');
end;
15
writeln('Thank you for using this program !');
7. Make a program to ask ages. Classify the ages into these categories :
* age < 2 ==> "You are a baby !"
* 2 to age < 12 ==> "You are a kid !"
* 12 to age < 18 ==> "You
are a teenager
!"
* 18 to age < 24 ==> "You are a young adult !"
* 24 to age < 40 ==> "You are an adult !"
* 40 to age < 55 ==> "You
are middle aged !"
* 55 to age < 65 ==> (Give comments yourself)
* age to 65 ==> (Give comments yourself)
Silahkan mencoba :
Readkey is a function, returning a char value. OK, let's see how it works !
program test_readkey;
uses crt;
var
c : char;
begin
c:=readkey;
case c of
#8 : writeln('You presses backspace');
#9 : writeln('You presses tab');
#13: writeln('You presses enter');
#27: writeln('You presses escape');
#32: writeln('You presses space');
else writeln('You presses other key');
end;
end.
Let us detect the arrow keys. Arrow keys, just like function keys, are
extended.
It
means it generates a
special codes. Now, here is the code to trap them :
program trap_arrow;
uses crt;
var
c : char;
begin
c:=readkey;
if c=#0 then { If extended
codes, }
begin
c:=readkey; { read the code once more }
case c of
#72: writeln('Up arrow');
#75: writeln('Left arrow');
#77: writeln('Right arrow');
#80: writeln('Down arrow');
end;
end;
end.\
Comments
Post a Comment