I. KATA PENGANTAR Dewasa ini sudah banyak berkembang bahasa-bahasa pemrograman tingkat tinggi yang pemakaiannya sudah sangat mudah, hanya klik dan drag saja. Namun meskipun demikian tetap saja programmer harus menuliskan kode-kode program agar objek-objek yang sudah mereka buat dapat bertingkah laku/bekerja sesuai dengan yang diinginkan. Secara singkat dapat dikatakan bahwa sebuah program pasti terdapat alur logika yang menyebabkan program tersebut dapat bekerja dengan benar. Modul algoritma dan pemrograman ini sangat penting bagi mahasiswa program studi Ilmu Komputer pada khususnya karena menjadi dasar bagi mahasiswa untuk mempelajari bahasa pemrograman. Pada modul ini diberikan contoh-contoh kasus untuk mempermudah memahami konsep. Karena sebuah contoh dapat memberikan inspirasi pemecahan masalah yang mirip. Tetapi patut diingat bahwa sebuah masalah di dalam pemrograman, bila diberikan kepada pemrogram yang berbeda, boleh jadi mempunyai aneka ragam solusi (dalam hal ini algoritma), mulai algoritma yang kusut karena banyak sekali percabangannya, sampai pada algoritma yang kurang efisien karena banyak sekali pengulangan instruksi yang sama dalam menganalisa kasus. Dengan mempelajari modul ini diharapkan nantinya Anda dapat memecahkan masalah secara metodologis, yaitu sesuai dengan skema (model) yang benar. Ketaatan menggunakan skema niscaya akan menghasilkan algoritma yang efisien dan mudah dipahami sehingga menghasilkan program yang baik pula. Sebagai akhir kata, semoga modul ini dapat diterima oleh para pembaca dalam mempelajari komputer, khususnya yang mempelajari mengenai bahasa penrograman Pascal serta dapat menambah wawasan bagi para pembaca dalam pembuatan program secara terstruktur. Yogyakarta, Desember 2007 Penulis Modul Ke-3 - Hal 1
II. PENDAHULUAN Hampir tiap program yang kompleks mengandung suatu penyeleksian kondisi. Dengan menyeleksi suatu kondisi, program dapat menentukan tindakan apa yang harus dikerjakan, tergantung dari hasil kondisi yang diseleksi tersebut. Dalam hal ini seleksi di dalam Pascal digunakan untuk mengontrol jalannya program agar dapat memilih salah satu dari sekian banyak pilihan yang ada. Untuk menyeleksi suatu kondisi, di dalam Pascal dapat dipergunakan statement IF dan CASE III. PENYELEKSIAN KONDISI MENGGUNAKAN IF A.1. Tujuan Instruksional Umum Setelah mempelajari modul ini Anda diharapkan mampu menyelesaikan permasalahan penyeleksian kondisi dengan membangun algoritma dan mengimplementasikan menggunakan IF THEN 2. Tujuan Instruksional Khusus Setelah menyelesaikan modul ini Anda diharapkan dapat : a. menuliskan bentuk umum penyeleksian kondisi menggunakan statemen IF tunggal, minimal untuk membangun program yang sederhana. b. membangun algoritma dan program untuk menyelesaikan masalah menggunakan IF THEN Berganda, maksimal dalam waktu 10 menit untuk masalah yang sederhana. c. membangun algoritma dan program untuk menyelesaikan masalah menggunakan IF THEN bertingkat, maksimal dalam waktu 15 menit untuk masalah yang sederhana. d. menyebutkan minimal 3 tipe data yang dapat digunakan pada operand untuk operasi bolean pada penyeleksian kondisi IF THEN. B. URAIAN MATERI Modul Ke-3 - Hal 2
Statement penyeleksian kondisi berguna untuk memeilih satu dari 2 atau lebih kemungkinan yang ada. Dan jika statement penyelsian kondisi tersebut terdiri dari 2 atau lebih penyataan, maka pernyataan tersebut harus berada diantara begin dan end. 1. Bentuk Perintah If Tunggal Bentuk paling sederhana pilihan tunggal adalah IF-THEN, yakni jika hanya ada satu pilihan yang disediakan. Statement IF-THEN digunakan untuk menyeleksi suatu kondisi, bila kondisi yang diseleksi terpenuhi, maka statement yang mengikuti THEN akan diproses. Sebaliknya bila kondisi tidak terpenuhi, maka yang akan diproses adalah statement berikutnya. Bentuk umum statemen kendali IF untuk pilihan tunggal IF kondisi THEN Statemen Dengan kondisi : ungkapan boolean, yakni ungkapan yang akan menghasilkan nilai Benar atau salah, pada kondisi tipe varaiebl yang digunakan adalah semua tipe data sederhana dapat digunakan. Statemen : statemen tunggal atau statemen majemuk yang akan dikerjakan jika Kondisi bernilai benar. kondisi False (Salah) True (Benar) pernyataan Gambar 1. Gambaran mekanisme kerja dari pernyataan IF tunggal Pada bentuk ini pernyataan hanya akan dijalankan kalau kondisi bernilai TRUE. Modul Ke-3 - Hal 3
Contoh 1. : Program Suhu1; { ----------------------------------------- } { Contoh sederhana pemakaian IF } { ----------------------------------------- } USES Crt; VAR Suhu : Real; BEGIN ClrScr; Write ( Suhu Tubuh : ); Readln (Suhu); IF Suhu > 37 THEN WriteLn( Suhu Tinggi! ); WriteLn( Selesai ); END. Dari program Contoh 1 diatas apabila suhu diinputkan > 37 maka outputnya adalah Suhu Tinggi!, namun apabila <= 37 maka outputnya adalah Selesai. Contoh 2. : Hasil Run : A B Dari bentuk diatas timbul suatu masalah apabila kondisi terpenuhi terdapat lebih dari satu perintah. Maka bentuk IF-THEN dapat dikembangkan dalam bentuk Dengan menggunakan blok maka apabila kondisi terpenuhi maka semua perintah yang ada di dalam blok program tersebut akan dikerjakan. Contoh 3: Modul Ke-3 - Hal 4
Hasil Run : C Contoh 4: Hasil Run : A B C 2. Bentuk Perintah If Ganda Bentuk yang digunakan adalah IF pilihan ganda, yakni dengan memilih salah satu dari 2 alternatif yang disediakan. Bentuk umum : IF kondisi THEN Statemen1 ELSE Statemen2. Dengan kondisi Statemen1 adalah ekspresi yang bernilai benar atau salah adalah statemen tunggal atau statemen majemuk yang akan dikerjakan jika kondisi bernilai benar Modul Ke-3 - Hal 5
Statemen2 adalah statemen tunggal atau statemen majemuk yang akan dikerjakan jika kondisi bernilai salah kondisi False (Salah) True (Benar) Pernyataan_1 Pernyataan_2 Gambar 2. Gambaran mekanisme kerja dari pernyataan IF berganda Contoh 5 : program untuk menentukan apakah bilangan yang dimasukkan merupakan bilangan genap atau ganjil. Contoh 6 : Program tujuh; uses crt; var i : integer; Bil : integer; ket : string; begin clrscr; write('masukkan bilangan yang akan diuji : ');readln(i); bil := I mod 2; if bil = 0 then ket :='Bilangan genap' else ket:='bilangan ganjil'; clrscr; write('bilangan : ',i,' adalah '); writeln(ket); readln; end. Modul Ke-3 - Hal 6
Program kata; uses crt; var i : integer; begin clrscr; write('masukkan bilangan yang akan diuji : ');readln(i); if bil = 0 then begin write( Pernyataan Anda benar ); write( Silahkan diteruskan ); end else begin write( Pernyataan Anda salah ); write( Silahkan keluar); end; end. Salah satu hal penting yang perlu diperhatikan dalam menuliskan pernyataan IF ELSE adalah tidak diperkenankannya pemakaian tanda titik koma dibelakang pernyataan sebelum ELSE. Contoh penulisan yang salah: IF Suhu > 37 THEN WriteLn ( Suhu Tinggi ); ELS E WrietLn ( Suhu tidak tinggi ); Kesalahannya yaitu ada pada tanda titik koma yang terletak pada: WriteLn ( Suhu Tinggi ); 3. Bentuk Perintah If Bertingkat Bentuk statemen IF bertingkat merupakan variasi statemen IF yang lengkap. Dalam pengambilan keputusan disediakan lebih dari 2 alternatif. Bentuk umum statemen kendali IF bertingkat : IF kondisi THEN Statemen1 ELSE IF kondisi2 THEN Statemen2 ELSE Statemen berikutnya Contoh 7 : Modul Ke-3 - Hal 7
Hasil Run : B Contoh 8 : menentukan nilai abjad dari nilai huruf, sbb : dari masalah diatas dibuat dalam bentuk flowchart sebagai berikut : dari diagram asrus diatas terlihat bahwa banyak perbandingan yang harus dilakukan, sehingga perintah IF akan digunakan untuk menentukan sejumlah alternatif Modul Ke-3 - Hal 8
Program konversi; uses crt; var nilai : integer; Huruf : string; begin clrscr; write('masukkan nilai yang akan diuji : ');readln(nilai); if nilai > = 90 then huruf :='A' else if nilai >= 80 then huruf:='b' else if nilai >=70 then huruf := C else if nilai >=60 then huruf := D else huruf := E ; write('nilai huruf : ',huruf) end. Contoh 9 : Hasil Run : B Contoh 10 : Hasil Run : X1 Modul Ke-3 - Hal 9
C. EVALUASI FORMATIF 1) 2). Lengkapi program dibawah ini untuk menentukan kedudukan parabola dan garis tersebut, apakah berpotongan, bersinggungan atau tidak keduanya. Jika diketahui parabola Y = Ax 2 + Bx + C dan garis Y = Mx + N. dan harga diskriminan D = (B-M) 2 4 A(C N).Maka bila D > 0 Maka berpotongan, bila D = 0 maka bersinggungan dan bila D < 0 maka tidak keduanya. Modul Ke-3 - Hal 10
Program Delapan; uses crt; var A,B,C,D,M,N : real; begin clrscr; writeln( Data untuk parabola Y = A*x*x + Bx + C ); write('masukkan harga konstanta fungsi kuadrat x : ');readln(a); write('masukkan harga konstanta fungsi x : ');readln(b); write('masukkan harga konstanta : ');readln(c); writeln( Data garis Y = M x + N ); write('masukkan harga konstanta fungsi x : ');readln(m); write('masukkan harga konstanta : ');readln(n); { isi statement untuk proses menentukan kedudukan parabola terhadap garis } D := sqr(b M) 4 * A * (C N); If D > 0 then ket := berpotongan Else if D= 0 then ket:= bersinggungan Else ket := tidak keduanya ; clrscr; writeln('kedudukan parabola dan garis tersebut adalah : ',ket); readln; end. 3). Tulislah algoritma dan programnya untuk menghitung total harga barang yang mengikuti aturan berikut : Jika jumlah barang yang dibeli < 100 buah, maka harga per barang adalah Rp. 10.000 Jika jumlah barang yang dibeli lebih besar dari atau sama dengan 100 dan kurang dari 150, maka harga per barang adalah Rp. 9.500. Jika jumlah barang yang dibeli lebih dari atau sama dengan 150, maka harga per barang adalah Rp. 9.000,- Masukan dari program ini adalah jumlah barang yang dibeli. Keluaran dari program ini adalah harga yang harus dibayar. Modul Ke-3 - Hal 11
IV. PENYELEKSIAN KONDISI MENGGUNAKAN CASE OF A.1. Tujuan Instruksional Umum Setelah mempelajari modul ini Anda diharapkan mampu menyelesaikan permasalahan penyeleksian kondisi dengan membangun algoritma dan mengimplementasikan menggunakan CASE OF 2. Tujuan Instruksional Khusus Setelah menyelesaikan modul ini Anda diharapkan dapat : a. menuliskan bentuk umum penyeleksian kondisi menggunakan statemen CASE, minimal untuk membangun program yang sederhana. b. menyebutkan minimal 3 tipe data yang dapat digunakan pada operand untuk operasi bolean pada penyeleksian kondisi CASE. c. menyebutkan perbedaan penyeleksian kondisi IF dan CASE minimal 2 perbedaan. d. membedakan penggunaan penyeleksian kondisi menggunakan IF THEN atau CASE OF untuk permasalah yang sederhana maksimal dalam waktu 15 menit. B. URAIAN MATERI Selain menggunakan statemen IF pilihan jamak, pengambilan keputusan untuk sejumlah alternatif jawaban bisa dilaksanakan dengan statemen CASE. Pada masalah tertentu, CASE lebih memberikan kejelasan daripada IF. Namun perlu diketahui bahwa semua persoalan yang dapat ditangani oleh CASE bisa ditangani oleh IF, tetapi tidak jika sebaliknya. Bentuk umum statemen CASE CASE ungkapan OF Label1 : statemen1; Label2 : statemen2; Labeln : statemenn; END; Dengan : - Ungkapan yang mengikuti kata CASE dapat berupa sembarang ungkapan yang memberikan hasil integer, char atau boolean. Modul Ke-3 - Hal 12
- Label, yang masing-masing disebut label kasus, adalah konstanta yang mempunyai tipe yang sama dengan ungkapan. Setiap label kasus dapat terdiri dari sejumlah konstanta dipisahkan dengan koma. Konstanta tertentu hanya bisa muncul dalam satu label kasus. - Statemen yag mengikuti tanda titik dua dapat berupa statemen tunggal atau majemuk. - Kata end digunakan untuk mengakhiri setiap statemen case dan merupakan bagian dari statemen CASE. Dalam mekanisme kerja pernyataan CASE seperti dilihat pada gambar dibawah ini, pengujian dilakukan dengan mencocokan nilai dan daftar_nilai, dimulai dari yang teratas. Kalau pada suatu pengujian tidak ada yang cocok, daftar_nilai berikutnya akan diperiksa. Kalau ada yang cocok, pernyataan yang terletak sesudah tanda : akan dijalankan dan kemudian eksekusi dilanjutkan ke END. Bagian ELSE hanya akan dijalankan kalau tak ada satupun daftar_nilai yang cocok. Nilai = daftar nilai 1 Tidak Nilai = daftar nilai 2 Ya Ya pernyataan_1 pernyataan_2 Tidak Nilai = daftar nilai m pernyataan_n Tidak Ya pernyataan_m Modul Ke-3 - Hal 13
Contoh penggunaan CASE program sembilan; uses crt; var ket, nama : string; kode : char; begin clrscr; write( Masukkan nama anda : ); readln(nama); write('pilih Kode jurusan di MIPA : ');readln(kode); case upcase(kode) of 'A' : ket:='jurusan Fisika'; 'B' : ket:='jurusan Matematika Ps. Statistik'; 'C' : ket:='jurusan Matematika Ps. Ilmu KOmputer'; 'D' : ket:='jurusan Kimia'; end; clrscr; writeln( Nama anda :,nama); writeln('kode jurusan anda : ',kode); writeln('keterangan : ',ket); readln; end. C. EVALUASI FORMATIF 1. Buatlah algoritma dan programnya menggunakan statemen IF THEN dan case of untuk mengkonversi nilai angka ke nilai huruf dari hasil ujian, bila diketahui : Untuk nilai 80 100 maka nilai huruf A Untuk nilai 60 79 maka nilai huruf B Untuk nilai 40 59 maka nilai huruf C Dibawah 40 nilai D 2. Buatlah algoritma dan program menggunakan statemen case of untuk menampilkan keterangan penggolongan usia apabila dimasukkan usia seseorang. Dimana penggolongannya adalah : Usia <= 5 th adalah BALITA Usia > 5 dan <= 20 adalah REMAJA Usia > 20 adalah DEWASA Modul Ke-3 - Hal 14
EVALUASI Pilihlah salah satu jawaban yang Anda anggap paling benar 1. Ekspresi manakah yang tidak diizinkan dalam Pascal? A. if I = R then writeln( R ); B. if R = I then writeln ( R ); C. if I = Round ( R ) then writeln( R ); D. if R = round ( I / 3 ) then writeln( R ); E. if I >= R then writeln(r); 2. Dengan deklarasi sebagai berikut : var s : string; I, J : integer; C : char; Maka penggunaan perintah case yang benar adalah : A. case upcase( C ) of L : S := Large ; I := 40; M : S := Medium ; I := 38; S : S := Small ; I := 36; end; B. case ( C ) of L, l : S := Large ; M, m : S := Medium ; S, s : S := Small ; end; C. case I of < 100 : S := To small ; 100.. 300 : S := Normal ; > 300 : S := Too Large ; end; D. case J / I of 2 : S := Large ; 3 : S := Medium ; 4 : S := Small ; end; Modul Ke-3 - Hal 15
E. case J of A : S := Large ; B : S := Medium ; C : S := Small ; end; 3. Perhatikan program berikut var I, J, K : integer; L : byte; Begin I := 3; J := 4; K := 32; L := 0; { If -1 : } if I + J and K = 0 then writeln( Betul ) else writeln( Salah ); { If -2 : } if ( I =2 ) and (J < I) or (K > I ) then writeln( Betul ) else writeln( Salah ); { If -3 : } if not L in [1.. 120] then writeln( Betul ) else writeln( Salah ); end. Program ini berisi 3 perintah IF-THEN-ELSE yang tidak saling berkaitan, yang masing-masing bernama if-1, if-2 dan if-3. Perintah if manakah yang penulisannya tidak benar : A. if-1 C. if-3 B. if-2 D. if-1 dan if-3 E. if-2 dan if-1 4. Dari program no 3. perintah if mana sajakah yang akan menghasilkan output berupa tulisan Betul? A. if-1 C. if-2 B. if-1 dan if-2 D. if-2 dan if-3 E. tidak ada yang menghasilkan output Betul Modul Ke-3 - Hal 16
5. Bagaimanakah keluaran program berikut ini? var I : integer; begin I := 2; Case I of 1,3,5,7,9 : writeln( Ganjil ); 2 : writeln( Prima genap ); 0.. 10 : writeln( Normal ); else writeln( Tidak Normal ); end; end. A. Prima genap B. Normal C. Prima genap Normal D. Normal Prima genap E. tidak menampilkan apa-apa 6. Bagaimana keluaran dari program berikut ini? var x,y,z : integer; begin x := 5; y := 5; z := 7; if (x >= y) and (y > z) then writeln( kondisi 1 terpenuhi ) else if (x<y) or (z<y) then writeln( kondisi 2 terpenuhi ) else if (y = x) and not (z >= y) then writeln( kondisi 3 terpenuhi ) else if not(x <= y) and ( y <= z) then writeln( kondisi 4 terpenuhi ); end; A. kondisi 1 yang terpenuhi B. kondisi 2 yang terpenuhi C. kondisi 3 yang terpenuhi D. kondisi 4 yang terpenuhi E. tidak menampilkan apa-apa Modul Ke-3 - Hal 17
7. Bagaimana output program dibawah ini? var x, y : integer; begin x := 1; y := -1; if (x < 0) then if ( Y > 0) then writeln( X < 0 dan y > 0 ) else writeln( x > 0 ); end. A. 1 B. X < 0 dan Y > 0 C. X > 0 D. Tidak menampilkan apa-apa E. Error in statement 8. Bagaimana output program dibawah ini? var x, y : integer; begin x := 1; y := -1; if (x < 0) then begin if ( Y > 0) then writeln( X < 0 dan y > 0 ); end else writeln( x > 0 ); end. A. 1 B. X < 0 dan Y > 0 C. X > 0 D. Tidak menampilkan apa-apa E. Error in statement Modul Ke-3 - Hal 18
9. var A, B : boolean; begin A := true; B := false; Write( A ); Write( B ); If ( A and B ) then Write( C ); Write( D ); End. Program diatas akan menghasilkan : A. ABC B. BAC C. ABD D. ABCD E. Error in statement. 10. Tipe data yang dapat digunakan pada stement case dibawah ini, kecuali : A. Real B. Integer C. Char D. Byte E. Enumerated Umpan Balik dan Tindak Lanjut Cocokkanlah jawaban anda dengan Kunci Jawaban Evaluasi yang terdapat di bagian lampiran modul ini dan hitunglah jumlah jawaban anda yang benar. Kemudian gunakan rumus di bawah ini untuk mengetahui tingkat penguasaan anda dalam materi Modul ke-1. Rumus : Tingkat penguasaan = Jumlah jawaban anda 10 yang benar 100% Modul Ke-3 - Hal 19
Arti tingkat penguasaan yang anda capai : 90% - 100% = baik sekali 80% - 89% = baik 70% - 79% = sedang - 69% = kurang Kalau Anda mencapai tingkat penguasaan 80% atau lebih, Anda dapat meneruskan ke modul berikutnya. Bagus! Tetapi kalau nilai Anda dibawah 80%, Anda harus mengulang Modul ke-1 terutama yang belum Anda kuasai. Modul Ke-3 - Hal 20
BAHAN BACAAN Brassard, Gilles, and Bratley, Paul, 1996, Fundamentals of Algorithmics, Prentice Hall, Englewood Cliffs, New Jersey. Budiyanto, Alex, 2003, Pengantar Algoritma dan Pemrograman, www.ilmu Komputer.com Jogiyanto H.M, 1995, Turbo Pascal versi 5.0, jilid 1, Andi Offset, Yogyakarta. Munir, Rinaldi, Ir, dan Lidya, Leoni, Ir., 1998, Algoritma dan Pemrograman I, Informatika, Bandung. Pranata, Antony, 2000, Algoritma dan Pemrograman, J & J Learning, Yogyakarta. Modul Ke-3 - Hal 21
LAMPIRAN KUNCI JAWABAN FORMATIF 1. D 2. B 3. A 4. D 5. A 6. E 7. D 8. C 9. C 10. A Modul Ke-3 - Hal 22