• Tidak ada hasil yang ditemukan

(Label, Goto, Operator Logika, IF, dan CASE)

(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 …?