(Label, Goto, Operator Logika, IF, dan CASE)
A. Peralatan yang diperlukan: 1. Komputer (PC)
2. Program Pascal (Turbo Pascal for Windows, TPW 1.5) B. Tujuan Praktikum
1. Mahasiswa dapat menulis dan membetulkan kesalahan program Pascal. 2. Mahasiswa dapat menjalankan dan memberikan masukan program Pascal.
3. Mahasiswa dapat menulis program Pascal yang menggunakan perintah IF … THEN … dan IF … THEN … ELSE ….
4. Mahasiswa dapat membuat program Pascal yang menggunakan perintah LABEL dan GOTO.
5. Mahasiswa dapat menulis program Pascal yang menggunakan struktur CASE .. OF … dan CASE … OF … ELSE …. END.
6. Mahasiswa dapat menulis program Pascal untuk menghitung akar persamaan kuadrat. 7. Mahasiswa dapat menulis program untuk membadingkan dua buah bilangan bulat. 8. Mahasiswa dapat menulis program Pascal untuk melakukan operasi dua buah bilangan. C. Dasar Teori
Operator logika (boolean) dalam Pascal meliputi:
Operator Operasi Jenis Data Jenis Hasil
not negasi Boolean Boolean
and DAN Boolean Boolean
Or ATAU Boolean Boolean
xor XOR Boolean Boolean
Operatornotmerupakan operator uner.
Operator relasi dalam Pascal adalah sebagai berikut.
Operator Operasi Jenis Data jenis hasil
= sama dengan semua jenis baku, pointer, set, string, atau packed string Boolean <> tidak sama semua jenis baku, pointer, set, string, atau packed string Boolean
< kurang dari semua jenis baku, string, packed string, atau PChar Boolean
> lebih dari semua jenis baku, string, packed string, atau PChar Boolean
<= kurang dari atau sama dengan semua jenis baku, string, packed string, atau PChar Boolean >= lebih dari atau sama dengan semua jenis baku, string, packed string, atau PChar Boolean
Peloncatan program dengan GOTO Perintah
digunakan untuk membuat agar jalannya program meloncat ke statemen yang diawali dengan kata
NamaLabel: (ada titik duanya!). NamaLabel harus didefinisikan pada bagian deklarasi dengan kata
label. Contoh: label baca; begin baca: read(a);
if a = 0 then goto baca;
...
end.
Pengendalian program dengan if ... then ... else
Kata if, then, dan else digunakan untuk mengendalikan jalannya suaatu program berdasarkan pada suatu kondisi atau syarat. Perintah ini berguna untuk memilih statemen mana yang akan dikerjakan oleh komputer berdasarkan nilai kebenaran syarat yang diberikan. Format if ... then ... else adalah:
if kondisi then statemen;
atau
if kondisi then statemen1 else statemen2;
Apabila kondisi bernilai benar (True) maka statemen (atau statemen1) akan dikerjakan. Jika
kondisi bernilai salah (False) maka statemen (atau statemen1)TIDAK dikerjakan. Apabila ada
else maka yang dikerjakan adalah statemen setelah else, yakni statemen2.
Catatan:
Apabila kata else digunakan, maka statemen antara then dan else TIDAK diakhiri dengan titik koma, tetapi statemen setelah else harus diakhiri dengan titik koma (;). Apabila tidak ada kata else, maka statemen setelah then HARUS diakhiri dengan titik koma (;).
Contoh:
(* Statemen "if - then - else" *)
if (I < Min) or (I > Max) then I := 0;
if ParamCount <> 2 then
begin
WriteLn('Salah tulis perintah');
Halt(1); {Program terhenti ...}
end else begin ReadFile(ParamStr(1)); WriteFile(ParamStr(2)); end;
Pengendalian program dengan case..of..else..end
Statemen case terdiri atas sebuah ekspresi (pemilih) dan sebuah daftar statemen, masing-masing diawali dengan sebuah nilai (kasus ekspresi) dan titik dua (:).
Aturan pemakaian:
case ekspresi of
nilai2: statement2; ... end atau case ekspresi of nilai1: statement1; ... nilaiN: statementN; else statementLain; end
Pada pola pertama, statement1 akan dikerjakan apabila nilai ekspresi=nilai1. Jika tidak, statement2
akan dikerjakan apabila nilai ekspresi=nilai2, dst. Pada pola kedua, sama dengan pola pertama, kecuali bahwa statementLain akan dikerjakan apabila nilai ekspresi tidak sama dengan nilai1, nilai2, ..., maupun nilaiN.
Nilai ekspresi harus suatu ekspresi yang nilainya berjenis ordinal (dapat diurutkan). Nilai1, Nilai2, dst. dapat berupa sebuah nilai jenis ordinal (sesuai dengan jenis ekspresi)atau beberapa nilai yang dipisahkan dengan tanda koma.
Contoh:
case karakter of
'A'..'Z', 'a'..'z': WriteLn('Huruf');
'0'..'9': WriteLn('Angka satuan'); '+', '-', '*', '/': WriteLn('Operator'); else WriteLn('Karakter khusus!'); end; D. Kegiatan Praktek
1.Tulis program-program di bawah ini (persis apa adanya) dan simpan dengan nama sama dengan yang tertulis pada baris pertama (di belakang kata program).
--- Program tutor3; uses wincrt; var x,y:integer; pilih:char; label baca; begin baca: clrscr;
writeln('Program Membaca Dua Bilangan Bulat'); write('Masukkan bilangan pertama: ');readln(x); write('Masukkan bilangan kedua: ');readln(y); if x > y then
writeln('Anda tentu tahu bahwa ', x, ' > ', y) else
writeln('Anda tentu tahu bahwa ', x, ' <= ', y); writeln;
write('Mau melanjutkan? <Y/T>: ');readln(pilih); if (pilih = 'Y') or (pilih = 'y') then goto baca; writeln('Program sudah selesai ... terima kasih!');
end. --- Program Operasi3; uses wincrt; var x,y:integer; operasi,pilih:char; label baca; begin baca: clrscr;
writeln('Program Operasi Dua Bilangan Bulat'); write('Masukkan bilangan pertama: ');readln(x); write('Masukkan bilangan kedua: ');readln(y); write('Pilih Operasi : ');readln(operasi);
if operasi='+' thenwriteln(x,' + ', y, ' = ', x+y) else
if operasi='-' thenwriteln(x,' - ', y, ' = ', x-y) else
if (operasi='*') or (operasi='x') or (operasi='X') thenwriteln(x,' * ', y, ' = ', x*y)
else
if ((operasi='/') or (operasi=':')) and (y<>0) then writeln(x,' : ', y, ' = ', x/y:4:3)
else
writeln('Error! Anda tidak tahu operasi aritmetika?'); writeln;
write('Mau melanjutkan? <Y/T>: ');readln(pilih); if (pilih = 'Y') or (pilih = 'y') then goto baca; writeln('Program sudah selesai ... terima kasih!'); end. --- Program AkarPK; uses WinCrt; var a,b,c:real; D,x1,x2:real; R,I:real; pilih:Char; label baca; begin baca: clrscr;
writeln('Program menghitung akar persamaan ax^2+bx+c=0'); writeln;
write('Masukkan nilai-nilai a, b, dan c :'); readln(a,b,c);
if a = 0 then begin
writeln('Nilai a harus tidak nol!'); goto baca; {Ulangi lagi sampai a<>0!} end;
(* Tulis persamaan ... *)
if a=1 thenwrite('x^2') else write(a:3:2,'x^2'); if b>0 then begin if b=1 then write(' + x') else write(' + ',b:3:2,'x') end
else if b<0 then write(b:3:2,'x'); if c>0 then write(' + ',c:3:2)
else if c<0 then write(c:3:2); writeln(' = 0.');writeln;
D:=b*b-4*a*c; {dapat juga ditulis D:=sqr(b)-4*a*c} if D=0 then
begin
x1:=-b/(2*a);
writeln('Oleh karena nilai D = ',D:3:2,',');
writeln('maka akar-akarnya adalah x1 = x2 = ',x1:3:2); end
else if D>0 then begin
x1:=(-b+sqrt(D))/(2*a);x2:=(-b-sqrt(D))/(2*a); writeln('Oleh karena nilai D = ',D:3:2,','); writeln('maka akar-akarnya adalah:');
writeln('x1 = ',x1:3:2,' dan x2 = ',x2:3:2); end
else if D<0 then begin
R:=-b/(2*a);I:=(sqrt(-D))/(2*a);
writeln('Oleh karena nilai D = ',D:3:2,','); writeln('maka akar-akarnya adalah:');
write('x1 = ');
if R<>0 then write(R:3:2);
if I>0 then write('+',I:3:2,'i') else write(I:3:2,'i');
write(' dan x2 = ');
if R<>0 then write(R:3:2);
if i>0 then writeln('-',I:3:2,'i') else writeln(I:3:2,'i');
end; writeln;
write('Mau menghitung yang lain? <Y/T>: '); readln(pilih);
if (pilih='Y') or (pilih='y') then goto baca else writeln('Selesai!'); donewincrt; end. --- Program Operasi4; uses wincrt; var x,y:integer; operasi,pilih:char; label baca; begin baca:
clrscr;
writeln('Program Operasi Dua Bilangan Bulat'); write('Masukkan bilangan pertama: ');readln(x); write('Masukkan bilangan kedua: ');readln(y); write('Pilih Operasi : ');readln(operasi); case operasi of '+' : writeln(x,' + ', y, ' = ', x+y); '-' : writeln(x,' - ', y, ' = ', x-y); '*','x','X': writeln(x,' * ', y, ' = ', x*y); '/',':' : if (y<>0) then writeln(x,' : ', y, ' = ', x/y:4:3); else
writeln('Error! Anda tidak tahu operasi aritmetika?'); end;
writeln;
write('Mau melanjutkan? <Y/T>: ');readln(pilih); if (pilih = 'Y') or (pilih = 'y') then goto baca; writeln('Program sudah selesai ... terima kasih!'); end.
--- E. Laporan Praktikum
Tulis laporan praktikum Anda dengan format sebagai berikut. A. Judul Praktikum : Praktikum Pemrograman Komputer
B. Identitas Praktikan :
Nama Mhs : ______________________ NIM : ______________ Praktikum ke : ______________________ Tgl Praktikum : ______________
C. Hasil Praktikum :
1. a) Jalankan programtutor3.pas beberapa kali dan lengkapi tabel di bawah ini. No Bil. I Bil. II Tampilan relasi kedua bilangan
1 32400 5657 2 -6580 0 3 -33000 5000 4 5.3 5 5 7500 100000 6 9 4+5 7 -50000 -32000 8 65321 12345
b). Tampilan manakah yang benar?
c). Tampilan manakah yang benar tetapi bilangannya berubah?
d). Mengapa terjadi perubahan nilai bilangan yang ditampilkan? Bagaimanakah cara agar tidak terjadi hal demikian?
e). Nomor-nomor manakah yang menampilkan hasil yang salah dan berubah bilangannya? Bagaimanakah untuk menghindari terjadinya hal demikian?
f). Manakah yang menyebabkan terjadinya pesan error ? Mengapa demikian? Bagaimanakah caranya untuk menghindari hal demikian?
g). Dapatkah kesalahan yang terjadi pada isian nomor 6 dihindari dengan cara mengubah programnya?
h). Apakah kegunaan perintah label dan bagaimanakh cara menggunakannya? 2. a). Jalankan programOperasi3.pas beberapa kali dan lengkapi tabel di bawah ini.
No Bil. I Bil. II Operasi Tampilan yang dihasilkan
1 23 45 + 2 23 45 - 3 35 5 / 4 35 5 : 5 35 5 X 6 35 10 * 7 500 500 x 8 15 0 / 9 0 15 / 10 47 40 < 11 32000 32000 + 12 32000 32000 - 13 -3210 65000 + 14 350 100 * 15 50.0 10 /
b). Nomor-nomor manakah yang menghasilkan tampilan (hasil perhitungan) yang salah? c). Nomor-nomor manakah yang menghasilkan pesan error (tidak ada hasil perhitungan)? d). Bagaimanakah cara menghindari kesalahan seperti nomor 7 dan 14?
e). Bagaimanakah cara menghindari kesalahan seperti nomor 8? f). Bagaimanakah cara menghindari kesalahan seperti nomor 9?
g). Mengapa nomor 11 hasilnya salah padahal nomor 12 hasilnya benar? h). Bagaimanakah cara menghindari kesalahan seperti nomor 11?
i). Bagaimanakah cara menghindari kesalahan seperti nomor 13? j). Bagaimanakah cara menghindari kesalahan seperti nomor 15?
3. a). Jalankan programAkarPK.pas beberapa kali dan lengkapi tabel di bawah ini. No a b c D x1 x2 Jelaskan hasilnya 1 1 1 1 2 0 1 2 3 -1 3 2 4 2 3 0 5 1 0 0 6 -1 5 10 7 0 1 0 8 2 3 4 9 1 2 -10 10 1 -5 6 11 3/2 1 4.0 12 1.5 1 4.0 13 2.5 5 1.0 14 -0.5 2 4 15 -3 5 10
b). Nomor-nomor manakah yang menghasilkan akar kembar? Mengapa? c). Nomor-nomor manakah yang menghasilkan akar kompleks? Mengapa? d). Nomor-nomor manakah yang menghasilkan dua akar berlainan? Mengapa?
4. Bagaimanakah cara memberi masukan (input) untuk merespon perintah read(a,b,c)? 5. Apakah kegunaan perintah clrscr?
6. a). Jalankan programOperasi4.pas beberapa kali dan lengkapi tabel di bawah ini. No Bil. I Bil. II Operasi Tampilan yang dihasilkan
1 23 45 + 2 23 45 - 3 35 5 / 4 35 5 : 5 35 5 X 6 35 10 * 7 500 500 x 8 15 0 / 9 0 15 / 10 47 40 < 11 32000 32000 + 12 32000 32000 - 13 -3210 65000 + 14 350 100 * 15 50.0 10 /
b). Nomor-nomor manakah yang menghasilkan tampilan (hasil perhitungan) yang salah? c). Nomor-nomor manakah yang menghasilkan pesan error (tidak ada hasil perhitungan)? d). Bagaimanakah cara menghindari kesalahan seperti nomor 7 dan 14?
e). Mengapai nomor 8 tidak menampilkan kesalahan?Bagaimanakah untuk memberi tahu terjadinya pembagian dengan nol?
f).Bagaimanakah cara menghindari kesalahan seperti nomor 9?
g). Mengapa nomor 11 hasilnya salah padahal nomor 12 hasilnya benar? h). Bagaimanakah cara menghindari kesalahan seperti nomor 11?
i). Bagaimanakah cara menghindari kesalahan seperti nomor 13? j). Bagaimanakah cara menghindari kesalahan seperti nomor 15?
7. Apakah kesamaan dan perbedaan fungsi dan pemakaian perintah IF … THEN … ELSE dan CASE … OF … ELSE …?