Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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.
False (Salah)
kondisi 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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
Statemen2
adalah statemen tunggal atau statemen majemuk yang akan dikerjakan jika kondisi bernilai salah
False (Salah)
kondisi 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. 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.
Contoh 6 :
Modul Ke-3 - Hal 6
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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 = Ax2 + 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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
-
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
Ya pernyataan_1
Tidak Nilai = daftar nilai 2 …
Ya pernyataan_2
Tidak
Nilai = daftar nilai m
Ya pernyataan_m
Tidak pernyataan_n
Modul Ke-3 - Hal 13
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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) 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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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 yang benar × 100% 10
Modul Ke-3 - Hal 19
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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