2012
Struktur Kontrol Perulangan (Looping) 120 menit 1. Pendahuluan 2. Instruksi Switch dan Break (kelanjutan conditional) 3. Instruksi Perulangan FOR dan Continue 4. Instruksi Perulangan WHILE 5. Instruksi Perulangan DO-WHILE 1. Diktat dan Literatur 2. Schildt, C: The Complete Reference Third Edition, McGraw-Hill,1998
Referensi
1. PENDAHULUAN
Meskipun kita telah mampu mendefinisikan permasalahan kita dalam bentuk percabangan (ifconditional), terkadang hal tersebut tidaklah cukup. Misalnya kita telah memilih salah satu alternatif yang ada, namun apabila alternative tersebut tidak sesuai dengan yang diharapkan, kita perlu kembali ke langkah-langkah sebelumnya untuk mencari alternatif lain. Pada bagian inilah kita menggunakan proses perulangan, atau dalam bahasa pemrograman bisa disebut dengan looping. Selain untuk menyelesaikan permasalahan di atas, looping dapat digunakan untuk menghasilkan program agar dapat berjalan lebih efektif. Andaikata kita perlu menuliskan nomor urut dari no.1 hingga no.100. Tanpa menggunakan looping, maka kita perlu menuliskannya satu per satu. Hal tersebut tentu banyak menyita waktu, energi, dan filesize. Akan tetapi, bila kita menggunakan looping, maka setidaknya hanya butuh beberapa baris perintah untuk mencapai tujuan tersebut. Dalam Bahasa C, instruksi yang paling umum digunakan adalah instruksi FOR, instruksi WHILE, dan instruksi DO-WHILE. Seluruh proses dapat dilakukan oleh ketiga instruksi tersebut. Namun, instruksi for umumnya digunakan untuk proses looping dimana jumlah perulangannya diketahui, sedangkan instruksi while dan do-while digunakan apabila proses perulangan bergantung pada suatu kondisi.
OUTPUT
Perasaan Anda Hari Ini 1=BAHAGIA 2=SENANG 3=BIASA SAJA 4=SEDIH 5=KESAL 6=MARAH Perasaan Anda [1....6]: 2 SENANG
KETERANGAN switch (kode) kata kode merupakan nama variabel yang akan nilainya akan dicocokkan dengan nilai pada case yang ada. Apabila nilai kode tersebut cocok dengan salah satu case yang ada, maka statement di dalam case tersebut akan dieksekusi. case 2: printf("SENANG"); Jika variabel kode kita masukkan nilai 2, maka program akan mencari case yang sesuai, yakni case 2 kemudian menjalankan statement di dalamnya. Apabila seluruh statement telah dieksekusi maka harus dituliskan instruksi break. break; Instruksi ini bertujuan untuk keluar dari suatu blok, dalam hal ini adalah blok switch. Maksud penggunaan disini adalah agar proses switch berakhir setelah menjalankan statement yang
diperlukan. Atau dapat diartikan pula perintah break ini untuk membatasi antara case satu dengan case lainnya. default Apabila nilai dari variabel yang dicocokkan tidak ada dalam pilihan case, maka statement yang dijalankan adalah yang berada di dalam instruksi default ini. Dapat dianalogikan default ini sama dengan else pada contoh percabangan.
OUTPUT 1 2 3 4 5 6 7 8 9 10
Bentuk daripada for bisa bermacam-macam. Berikut adalah contoh dari bentuk tipe bersarang : INPUT
#include <stdio.h> int main() { int naik; int turun; for (naik =1; naik <= 5; naik ++) { printf("\n%i ", naik); for (turun =6; (turun-naik) >= 1; turun --) { printf("*"); } } return 0; }
OUTPUT
1 ***** 2 **** 3 *** 4 ** 5* Contoh di atas melibatkan proses increment dan decrement. Pada for tingkat kedua, nilai syarat_perulangan bergantung pada nilai di for yang pertama. Bentuk seperti program diatas umumnya banyak digunakan untuk membentuk grafik sederhana dalam bahasa C.
CONTINUE
Jika tadi kita menggunakan break untuk menghentikan proses pada blok tersebut dan keluar dari blok tersebut, instruksi continue pun melakukan hal yang serupa, yaitu tidak menjalankan proses-proses yang berada setelah continue, namun justru langsung melanjutkan proses di luar blok. Berikut contohnya : INPUT
#include <stdio.h> int main() { int data; for (data =1; data <= 10; data ++) { if (data %2 != 0) { continue; } printf("%i ", data); } return 0; }
OUTPUT 2 4 6 8 10 KETERANGAN Proses pertama adalah menjalankan proses for. Saat data bernilai 1, proses dilanjutkan dengan mengecek apakah modulus dari 1 dibagi 2 adalah 0. Kondisi menjadi true sehingga proses continue dijalankan dan perintah cout dilewat (tidak dieksekusi). Selanjutnya proses for dilanjutkan. Sekarang nilai data menjadi 2 dan kembali dicek. Karena kondisi bernilai false, maka instruksi continue tidak dijalankan dan menyebabkan perintah cout berjalan. Di layar akhrnya menampilkan nilai dari data, yaitu 2.
INPUT
#include <stdio.h> int main() { int batas = 10; int nomor; nomor = 1; while (nomor <= batas) { printf("%i\n", nomor); nomor ++; } return 0; }
OUTPUT 1 2 3 4 5 6 7 8 9 10 KETERANGAN Hasil yang dikeluarkan akan sama dengan proses pada for, namun bentuk programnnya berbeda. Jika kita lihat dengan lebih teliti, inisiasi_counter, syarat_perulangan dan update_counter sebenarnya masih terdapat dalam instruksi WHILE ini, hanya saja bentuknya berbeda. Setelah nilai 1 di-assign pada variabel nomor, kemudian instruksi WHILE memeriksa apakah syarat_perulangan masih memenuhi. Jika kondisi bernilai true, maka statement perulangan akan dijalankan dan bila telah selesai maka akan diperiksa kembali hingga pada akhirnya proses perulangan akan berhenti ketika syarat_perulangan tidak terpenuhi lagi.
Namun ada yang harus diperhatikan dalam penggunaan WHILE ini. Bayangkan apa yang terjadi apabila statement
nomor ++; tidak kita tulis dalam program kita. Proses perulangan akan terus terjadi tanpa henti. Apabila proses yang dijalankan termasuk hal yang kompleks, maka hal ini dapat membuat komputer kita crash. Agar lebih tertantang, coba jalankan program ini dan pahami setiap langkah yang berjalan : INPUT
//Menghitung Jumlah Deret Angka #include <stdio.h> int main() { int bawah, atas; int total=0; printf("Masukkan bilangan batas bawah : "); scanf("%i", &bawah); printf("Masukkan bilangan batas atas : "); scanf("%i", &atas); //pengecekan apakah masukkan dapat diterima if ((bawah >=0) && (atas >=0) && (bawah <= atas)) { while (bawah <= atas) { total += bawah; bawah ++; } printf("Total Jumlah Deret Angka = %i", total); } else { printf("Data Anda tidak valid"); } return 0; }
OUTPUT Masukkan bilangan batas bawah : 5 Masukkan bilangan batas atas : 10 Total Jumlah Deret Angka = 45
Coba tebak hasil apakah yang akan keluar dari input program seperti di bawah ini : INPUT
//Menghitung Mundur #include <stdio.h> int main() { int n; printf("Masukkan angka awal : "); scanf("%i", &n); while (n>0) { printf("%i, ",n); --n; } printf("FIRE!\n"); return 0; }
INPUT
#include <stdio.h> int main() { int batas = 20; int nomor; nomor = 11; do { printf("%i\n", nomor); nomor ++; } while (nomor <= batas); return 0; }
OUTPUT 11 12 13 14 15 16 17 18 19 20
OUTPUT 11
KETERANGAN Inilah yang membedakan antara WHILE dan DO-WHILE. Meskipun sejak pertama kali inisiasi syarat_perulangan sudah tidak memenuhi (11 <= 5), namun karena instruksi berupa DO-WHILE, maka program tetap akan mengeksekusi statement tersebut satu kali sebelum akhirnya proses perulangan berakhir. Dengan kata lain perbedaan utama dari DO-WHILE dengan WHILE adalah proses pengecekannya. Jika WHILE dia akan mengecek dulu jika tidak cocok maka statement tidak akan dijalankan, sedangkan DO-WHILE sebaliknya melakukan dulu baru mengecek jika tidak cocok baru berhenti.