Algoritma dan Pemrograman Analisa Kondisi dan Aksi TUJUAN : Dapat menyelesaikan masalah dengan menggunakan lebih dari satu kondisi. . Dapat menyelesaikan masalah menggunakan looping . dapat menyelesaikan masalah menggunakan pembatasan perulangan dengan flowchart . Flowchart, Rijanto Tosin, bab 4, hal 41 Algoritma & Teknik Pemrograman, Budi Sutedjo, bab 10,115 Analisa Aksi dan Kondisi 1 dari 10 Algoritma dan Pemrograman Hubungan antar kondisi Kadang –kadang dalam suatu masalah terdapat beberapa kondisi atau persyaratan yang saling menentukan. Hubungan antar kondisi ini biasanya terdiri dari dua hubungan, yaitu : - hubungan –DAN- hubungan –ATAUMasing-masing hubungan ini menyatakan keterkaitan antar kondisi sehingga dapat dilakukan aksi sesuai dengan hubungan tersebut. Hubungan DAN Hubungan DAN merupakan hubungan antar kondisi yang mensyaratkan kedua kondisi terpenuhi. Jika salah satu dari kondisi tidak terpenuhi maka proses/tindakan selanjutnya yang dilakukan adalah kondisi yang bernilai false atau T (tidak). Berikut ini terlampir tabel yang memperlihatkan nilai benar atau salah dari hubungan DAN. Kondisi I Kondisi II Hasil Benar Benar Salah Salah Benar Salah Benar Salah Benar Salah Salah Salah Misalnya : untuk menentukan penerimaan calon pegawai ditentukan kriteria sebagai : - Umur di bawah 30 tahu, dan Nilai test lebih besar dari 60 Berdasarkan contoh di atas berarti ada dua kondisi yang harus dipenuhi untuk menyatakan bahwa calon pegawai diterima yaitu umur dan nilai test. Dengan demikian dalam bentuk flowchart dapat digambarkan sebagai berikut : Analisa Aksi dan Kondisi 2 dari 10 Algoritma dan Pemrograman Umur < 30 Dan Nilai > 60 calon pegawai diterima ya tidak calon pegawai tidak diterima Dari flowchart di atas terlihat walaupun hasil test dari calon pegawai sama dengan 80 namun jika umurnya sama dengan 32 maka calon pegawai tersebut tidak diterima. Hubungan ATAU Hubungan ATAU merupakan hubungan antar kondisi yang mensyaratkan hanya salah satu kondisi yang terpenuhi. Kondisi bernilai false atau T (tidak) hanya dapat tercapai jika kedua kondisi tidak terpenuhi. Berikut ini terlampir tabel yang memperlihatkan nilai dari hubungan ATAU. Kondis I Kondisi II Hasil Benar Benar Salah Salah Benar Salah Benar Salah Benar Benar Benar Salah Misalnya : Tunjangan pensiun diberikan kepada pegawai yang berusia lebih dari 60 tahun. Untuk pegawai yang mempunyai masa kerja lebih dari 25 tahun juga mendapatkan tunjangan tersebut. Berdasarkan contoh di atas berarti tunjangan pensiun diberikan kepada pegawai dengan kondisi usia lebih dari 60 tahun ATAU masa kerja lebih dari 25 tahun. Dengan demikian dapat dibuat flowchart seperti di bawah ini Analisa Aksi dan Kondisi 3 dari 10 Algoritma dan Pemrograman Usia > 60 ATAU MK > 25 ya mendpt tunjangan pensiun tidak tidak mendpt tunjangan pensiun Dari flowchart di atas terlihat jika pegawai telah mencapai usia lebih dari 60 tahun maka mendapat tunjangan pensiun. Namun walaupun usianya 50 tahun tapi dengan masa kerja lebih dari 25 tahun maka pegawai tersebut masih mendapatkan tunjangan pensiun. Karena salah satu syarat terpenuhi yaitu masa kerja lebih dari 25 tahun. Perputaran kembali / Looping Pemrograman dengan struktur perulangan adalah suatu teknik pemrograman untuk melakukan suatu proses secara berulanh-ulang jika suatu kondisi dipenuhi. Pada prakteknya, proses perulangan biasanya digunakan untuk beberapa hal. Misalnya : 1. Mengulang proses pemasukan data 2. Mengulang proses perhitungan 3. Mengulang proses penampilan hasil pengolahan data. Instruksi IF-THEN-GOTO Instruksi IF-THEN-GOTO merupakan pemrograman dengan struktur perulangan, dimana instruksi IF-THEN merupakan instruksi untuk pemeriksaan kondisi, sedangkan instruksi GOTO digunakan untuk mengubah alur program menuju instruksi-instruksi yang telah dieksekusi sebelumnya, jika kondisi dipenuhi. Contoh : Permasalahan : Buatlah sebuah program untuk menampilkan bilangan bulat dari angka 1 sampai dengan angka 100. Analisa Aksi dan Kondisi 4 dari 10 Algoritma dan Pemrograman Program : Cls REM menentukan nilai awal variabel I I=1 Ulang: REM Mencetak isi variabel I PRINT I REM Pengujian, jika isi variabel I < 100, REM maka isi variabel I ditambah 1, REM kemudian kembali ke label Ulang IF I < 100 THEN I=I+1: GoTO Ulang END Instruksi FOR-NEXT Instruksi FOR-NEXT digunakan untuk mengeksekusi suatu baris/blok instruksi secara berulang-ulang selama kondisi terpenuhi. Pada instruksi ini kondisi yang dapat digunakan untuk menguji hanya sebatas perhitungan menambah atau mengurangi isi variabel COUNTER dengan step tertentu. Instruksi ini digunakan apabila jumlah perulangan yang dilakukan diketahui secara pasti. Adapun bentuk umum instruksi ini adalah : FOR var-counter = nil-awal TO nil-akhir[STEP nil-penambah/pengurang] Blok instruksi NEXT [var-counter] Jika nilai penambah /pengurang tidak ditulis, maka secara otomatis akan dipergunakan nilai penambah yang telah diteentukan sebagai default, yaitu sebesar 1. Jika ingin dilakukan hitungan dengan mengurangi isi variabel counter karena nilai awal > akhir, maka nilai penambah/pengurang harus didefinisikan negatif. Penulisan instruksi FOR – NEXT ini ada beberapa macam sesuai dengan kebutuhan perulangan yang akan dilakukan , seperti perulangan satu kalang dan kalang dalam kalang. Instruksi FOR – NEXT Tunggal Instruksi FOR – NEXT tunggal adalah sebuah instruksi untuk perulangan yang hanya menggunakan sebuah sebuah counter. Contoh : Permasalahan : Buatlah sebuah program untuk menampilkan bilangan genap antara 1-10 Program : CLS FOR I=1 to 10 STEP 1 IF (INT(I/2)=I/2) then PRINT I NEXT I Analisa Aksi dan Kondisi 5 dari 10 Algoritma dan Pemrograman END Maka hasilnya adalah : 2 4 6 8 10 Apabila pertambahan counter adalah1, maka instruksi STEP dapat ditiadakan. Sedangkan jika nilai awal lebih besar dari nilai akhir, maka hitungan akan dilakukan dengan cara melakukan pengurangan terhadap isi variabel counter. Oleh karena itu digunakan STEP bilangan negatif. CLS FOR I=10 to 1 STEP –1 IF (INT(I/2)=I/2) then PRINT I NEXT I END Maka hasilnya adalah : 10 8 6 4 2 Mengubah Alur Kerja Program dalam Kalang Dalam satu kalang FOR-NEXT dapat dilakukan perubahan alur eksekusi baris program seperti dapat dilihat pada contoh berikut ini. Permasalahan : Buatlah sebuah program untuk menampilkan bilangan ganjil antara 1- 10 Program CLS FOR I=1 TO 10 IF (I MOD 2) = 0 THEN GOTO Lewat PRINT I Lewat : NEXT I Maka hasilnya adalah : 1 3 Analisa Aksi dan Kondisi 6 dari 10 Algoritma dan Pemrograman 5 7 9 Mengubah Alur Kerja Program Keluar dari Jkalang FOR – NEXT Kadangkala eksekusi baris program dalam satu kalang FOOR-NEXT harus diakhiri sebelum seluruh baris program diproses. Untuk keperluan tersebut dapat digunakan instruksi EXIT FOR. Contoh : CLS FOR I = 1 TO 15 REM Menampilkan informasi PRINT “Data ke”; I PRINT “Isikan XXX untuk keluar” REM Meminta inputan nama INPUT “Masukan nama Anda=”, N$ REM Memeriksa masukan apakah nama=XXX? REM jika ya , maka keluar dari kalang FOR NEXT IF N$=”XXX” THEN EXIT FOR REM Menampilkan jumlah huruf nama PRINT “Panjang nama anda =”;LEN(N$) NEXT I PRINT “Selesai.” END Pada saat program diatas dieksekusi, power BASIC akan meminta masukan nama sebanyak 15 buah, tetapi eksekusi tersebut dapat diakhiri sebelum 15 nama dituliskan, apabila diketikkan “XXX” Instruksi FOR NEXT Tersarang Dalam sebuah kalang FOR NEXT diperbolehkan untuk membuat kalang FOR NEXT lainnya. Pada operasi kalang dalam kalang tersebut, urutan eksekusi di mulai dari kalang yang paling dalam sehingga instruksi-instruksi yang terdapat pada kalang yang paling dalam akan paling banyak dieksekusi. Analisa Aksi dan Kondisi 7 dari 10 Algoritma dan Pemrograman Syarat yang harus diperhatikan untuk opersi FOR NEXT kalang tersarang : 1. setiap kalang tidak boleh menggunakan variabel counter yang sama 2. antara kalang-kalang tersebut tidak boleh saling berpotongan (Overlapping) contoh kalang berpotongan : FOR I=1 to 10 FOR J=1 to 10 PRINT I,J NEXT I NEXT J Contoh kalang tersarang : FOR I=1 to 10 FOR J=1 to 10 PRINT I,J NEXT J NEXT I Contoh kalang yang menggunakan variabel counter yang sama : FOR I=1 TO 10 FOR I=1 To 10 PRINT I,I NEXT I NEXT I Instruksi WHILE WEND Di samping instruksi FOR NEXT, terdapat instruksi kalang lain, yaitu instruksi WHILE WEND yang digunakan untuk melakukan proses berulang selama sebuah kondisi dipenuhi. Berbeda dengan instruksi FOR-NEXT yang digunakan jika diketahui dengan pasti banyaknya operasi perulangan. Instruksi WHILE WEND dapat digunakan bila jumlah operasi perulangan yang dilakukan tidak diketahui dengan jelas, tetapi yang diketahui hanya kondisi agar operasi perulangan terjadi. Adapun bentuk umum instruksi ini : WHILE kondisi Blok kondisi WEND Contoh : CLS Lagi$ = ‘T’ REM selama lagi$ <> ‘T’ kerjakan proses berikut WHILE Lagi$ =’T’ REM Memasukkan sebuah bilangan Analisa Aksi dan Kondisi 8 dari 10 Algoritma dan Pemrograman INPUT “Masukkan Sebuah Bilangan : “, Bil REM Jika nilai dibagi 2 tidak bersisa, maka bil* 10, REM Jika hasil bagi bersisa, maka bil/10 IF Bil MOD 2 = 0 THEN PRINT bil*10 ELSE PRINT bil/10 END IF INPUT “Akan mengulang lagi (y/t) : “. Lagi$ WEND Instruksi DO LOOP Instruksi DO LOOP mempunyai fungsi yang sama dengan instruksi WHILE WEND, yaitu untuk melakukan operasi perulangan, tetapi untuk penulisan kondisinya dapat dilakukan secara fleksibel. Bentuk umum instruksi ini adalah : a) Untuk DO LOOP yang kondisi tes terletak pada awal instruksi : DO [{WHILE UNTIL} kondisi] Blok instruksi [EXIT LOOP] blok instruksi LOOP b) Untuk DO LOOP yang tes kondisinya terletak pada akhir instruksi : DO Blok instruksi [EXIT LOOP] blok instruksi LOOP[{WHILE UNTIL }kondisi] Perbedaan yang jelas antara 1 dan 2 adalah pada pengujian kondisinya. Pada point a, kondisi akan diperiksa dulu apakah memenuhi syarat dan kemudian barulah instruksi dilaksanakan, sedangkan pada point b, minimal proses instruksi telah dilakukan sekali, baru kemudian pemeriksaan kondisi dilakukan. Contoh : I=1 DO WHILE I<=10 PRINT I I =1 DO PRINT I Analisa Aksi dan Kondisi 9 dari 10 Algoritma dan Pemrograman I=I+1 LOOP I=I+1 LOOP UNTIL I>10 Analisa Aksi dan Kondisi 10 dari 10 Algoritma dan Pemrograman Analisa Aksi dan Kondisi 11 dari 10