EXERCISE WORKBOOK MI2164-2011/2012#07
Nama MK : Dasar Algoritma dan Pemrograman Disampaikan pada minggu ke-9
E
Program Studi Manajemen Informatika – Politeknik Telkom Bandung Jl. Telekomunikasi Terusan Buah Batu, Bandung, 40254
1
IDENTITAS
Kajian Perulangan Topik Dasar Logika Perulangan Referensi [1] Sedgewick, Robert. Algorithms. Marly-le-Roi: Addison-Wesley Publishing Company, 1983 [2] Cormen, Thomas H., Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Third Edition. The MIT Press, 2009 [3] Goldman, Sally A., and Kenneth J. Goldman. A Practical Guide to Data Structures and Algorithms using Java. Chapman and Hall/CRC, 2007 Kompetensi Utama Mahasiswa dapat melakukan penelusuran pada alur algoritma perulangan Mahasiswa dapat membuat algoritma dengan logika perulangan dasar Lama Pengerjaan 120 menit Jenis Pengerjaan Individu Kelompok Mandiri Terbimbing
2
PERTANYAAN PENDAHULUAN 1. 2. 3.
3
Sebutkan 3 contoh kondisi perulangan dalam kehidupan sehari-hari! Gambarkan algoritma sederhana dari kondisi-kondisi tersebut dengan menggunakan bahasa Anda sendiri! Jelaskan perbedaan mendasar dari perulangan menggunakan while....do dan for....! Tentukan tampilan dari masing-masing potongan kode program berikut ini: a. for (i=1;i<=5;i++) { output(i+" "); } b. for (i=1;i<=10;i+=2) { output(i+" "); } c. n=1; for (i=1;i<=10;i++) { output(n+" "); n=n+i; }
RINGKASAN TEORI
Struktur kontrol perulangan adalah berupa pernyataan dari Java yang mengijinkan kita untuk mengeksekusi blok kode berulang-ulang sesuai dengan jumlah tertentu yang diinginkan. Ada tiga macam jenis dari struktur kontrol perulangan yaitu while, do .... while, dan for.
1
EXERCISE WORKBOOK MI2164-2011/2012#07
Nama MK : Dasar Algoritma dan Pemrograman Disampaikan pada minggu ke-9
E
Program Studi Manajemen Informatika – Politeknik Telkom Bandung Jl. Telekomunikasi Terusan Buah Batu, Bandung, 40254
3.1 Perulangan while Pernyataan while adalah pernyataan yang diulang-ulang sampai mencapai kondisi yang cocok. Bentuk pernyataan while, while( boolean_expression ){ statement1; statement2; . . . } Pernyataan di dalam while akan dieksekusi berulang-ulang selama kondisi boolean_expression bernilai benar (true). Contoh, pada kode di bawah ini, i ← 4; while ( i > 0 ){ output(i); i--; } Contoh di atas akan mencetak angka 4321 pada layar. Perlu dicatat jika bagian i--; dihilangkan, akan menghasilkan pengulangan yang terus menerus (infinite loop). Sehingga, ketika menggunakan while atau bentuk perulangan yang lain, pastikan Anda memberikan pernyataan yang membuat pengulangan berhenti pada suatu kondisi. Berikut ini adalah beberapa contoh penggunaan while. Contoh 1: x ← 0; while (x<10) { output(x); x++; } Contoh 2: //infinite loop while(true) output(“hello”); Contoh 3: //no loops // statement is not even executed while (false) output(“hello”); 3.2 Perulangan do ... while do ... while mirip dengan while. Pernyataan di dalam do .... while akan dieksekusi beberapa kali selama kondisi bernilai benar (true). Perbedaan antara while dan do .... while adalah pernyataan di dalam do .... while akan dieksekusi sedikitnya satu kali. Bentuk pernyataan do-while, do{ statement1; statement2; . . . }while( boolean_expression ); Pernyataan di dalam do .... while akan dieksekusi pertama kali, dan akan dievaluasi kondisi dari boolean_expression. Jika nilai pada boolean_expression tersebut bernilai true, pernyataan di dalam do .... while akan dieksekusi lagi. Berikut ini beberapa contoh do .... while. Contoh 1: x ← 0; 2
EXERCISE WORKBOOK MI2164-2011/2012#07
Nama MK : Dasar Algoritma dan Pemrograman Disampaikan pada minggu ke-9
E
Program Studi Manajemen Informatika – Politeknik Telkom Bandung Jl. Telekomunikasi Terusan Buah Batu, Bandung, 40254
do{ output(x); x++; }while (x<10); Contoh ini akan memberikan output 0123456789 pada layar. Contoh 2: //infinite loop do{ output(“hello”); } while (true); Contoh di atas akan melakukan pengulangan terus menerus yang menulis kata “hello” pada layar. Contoh 3: //one loop // statement is executed once do{ output(“hello”); }while (false); Contoh di atas akan memberikan output hello pada layar. 3.3 Perulangan for Perulangan for digunakan untuk melakukan proses perulangan pada kondisi pencacahan. Setiap bentuk perulangan for dapat diubah menjadi bentuk perulangan while dengan fungsi yang sama tanpa mengubah alur program. Tetapi tergantung dari permasalahan yang akan kita pecahkan, menulis program dengan for akan membuat alur program lebih mudah dipahami. Misalnya, kita akan menghitung 1+2+3+4+5+...+100. Kita bisa ekspresikan program tersebut dalam bentuk i ← 1; jumlah ← 0; while (i <= 100) { jumlah += i; i++; } Perulangan ini dapat ditulis juga dengan jumlah ← 0; for (i = 1; i <= 100; i++) jumlah += i Apa point-point penting yang kita lihat dari perubahan ini? Pertama mari kita lihat bentuk penggunaan while yang umum dilakukan inisialisasi variabel while (suatu_kondisi_variabel) { perintah update_variabel } Di sini perulangan while memiliki 3 komponen penting, yaitu inisialisasi, yaitu memberikan nilai awal suatu variabel, suatu_kondisi_variabel, yaitu pengujian bahwa perulangan akan terus dilakukan selama kondisi ini bernilai true dan terakhir update_variabel, yaitu instruksi mengubah nilai kondisi variabel untuk membatasi perulangan sehingga akan selesai suatu saat, tidak berulang terus menerus. Pada perulangan for, ketiga komponen ini dirangkai menjadi satu dalam bentuk for (inisialisasi_variabel; kondisi_variabel; update_variabel) perintah 3
EXERCISE WORKBOOK MI2164-2011/2012#07
Nama MK : Dasar Algoritma dan Pemrograman Disampaikan pada minggu ke-9
E
Program Studi Manajemen Informatika – Politeknik Telkom Bandung Jl. Telekomunikasi Terusan Buah Batu, Bandung, 40254
atau jika perintah merupakan blok yang terdiri dari banyak perintah, dapat dituliskan juga dalam bentuk for (inisialisasi_variabel; kondisi_variabel; update_variabel) { banyak_perintah } Di sini inisialisasi variabel bisa berupa apa saja yang berbentuk perintah, misalnya memberikan variabel dengan nilai awal tertentu, dalam bentuk variabel = nilai_awal. Kondisi_variabel harus berbentuk pernyataan boolean seperti suatu_kondisi pada pernyataan while. Sedangkan update_variabel juga berbentuk perintah. Bentuk paling umum dari perulangan for adalah menghitung. Biasanya perulangan ini memiliki bentuk seperti for (variabel=nilai_minimum; variabel<=nilai_maksimum; variabel++) { perintah } Perhatikan bagian terakhir adalah menaikkan nilai variabel dengan 1, yang artinya perulangan akan dimulai dengan nilai_minimum, diakhiri dengan nilai_maksimum dengan jeda 1. Contoh, jika kita ingin berhitung 2,5,8,11,14,17, atau dengan kata lain, mulai dari 2 hingga 17 dengan jeda 3, kita bisa mengekspresikan for dengan for (i = 2; i <= 17; i += 3) { output(i); } Untuk menghitung mundur, kita bisa menggunakan perintah seperti for (i = 20; i >= 0; i--) { output(i); } Atau jika kita ingin menghitung maju dan mundur pada saat yang bersamaan, misalnya i dari 1 hingga 10 dan j dari 10 hingga 1, kita bisa ekspresikan dengan for (i = 1, j = 10; i <= 10; i++, j--) { output(i + " " + j); } Variabel yang akan digunakan, dalam contoh di atas i dan j, adalah variabel yang harus dideklarasikan sebelumnya. Untuk banyak kasus, deklarasi variabel dan perulangannya bisa dilakukan serentak pada bagian inisialisasi variabel. Misalnya for (int i = 1; i <= 10; i++) { output(i) } Perhatikan ada imbuhan int di depan inisialisasi variabel i, yang merupakan deklarasi variabel i dengan tipe data int sekaligus menginisialisasi nilainya dengan 1. 3.4 Perulangan for Bersarang Seperti pada perulangan while, perulangan for pun dapat dilakukan bersarang, artinya perulangan for di dalam perulangan for. Kita ambil contoh sederhana misalnya membuat pola seperti * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Program tersebut bisa diekspresikan dengan algoritma sebagai berikut
4
EXERCISE WORKBOOK MI2164-2011/2012#07
Nama MK : Dasar Algoritma dan Pemrograman Disampaikan pada minggu ke-9
E
Program Studi Manajemen Informatika – Politeknik Telkom Bandung Jl. Telekomunikasi Terusan Buah Batu, Bandung, 40254
untuk setiap baris i = 1,2,3...,8 cetak “* “ sebanyak 8 kali cetak baris baru Kalau kita jabarkan lebih lanjut, perintah kedua juga merupakan perulangan dari 1 hingga 8, sehingga algoritma di atas bisa kita tulis sebagai untuk setiap baris i = 1,2,3...,8 untuk setiap kolom j = 1,2,3...,8 cetak “* “ cetak baris baru Kita bisa terjemahkan sebagai for (int i = 1; i <= 8; i++) { for (int j = 1; j <= 8; j++) { output("* "); } output("\n"); }
4
STUDI KASUS 1. Buatlah sebuah program yang akan mengoutputkan barisan bilangan genap sejumlah inputan user. Contoh tampilan: Masukkan angka: 10 Barisan bilangan genap: 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 2.
Buatlah sebuah program yang akan meminta inputan nama dan nim mahasiswa sampai user menekan tombol T, kemudian akan menampilkan nama dan nim mahasiswa yang diinputkan. Contoh tampilan: Masukkan nama: Andi Masukkan NIM: 001 Ingin input lagi? (Y/T): Y Masukkan nama: Leni Masukkan NIM: 014 Ingin input lagi? (Y/T): Y Masukkan nama: Rudi Masukkan NIM: 004 Ingin input lagi? (Y/T): T Mahasiswa nama Andi, NIM 001 Mahasiswa nama Leni, NIM 014 Mahasiswa nama Rudi, NIM 004
3.
Jika input data secara berturut-turut diisi dengan : 25, 37, 31, 16, 23, 19, 32, 28, 20, 14 maka tentukan tampilan output yang muncul pada potongan program berikut: a. x=0; for (i=1;i<=10;i++) { input(data); if (data > 30) { x = x + data; 5
EXERCISE WORKBOOK MI2164-2011/2012#07
Nama MK : Dasar Algoritma dan Pemrograman Disampaikan pada minggu ke-9 Program Studi Manajemen Informatika – Politeknik Telkom Bandung Jl. Telekomunikasi Terusan Buah Batu, Bandung, 40254
b.
c.
d.
e.
f.
} } output(x); x=0; for (i=1;i<=10;i++) { input(data); x = x + data; } output(x); x=0; for (i=1;i<=10;i++) { input(data); if (data < 30) { x = x + 1; } } output(x); x=0; for (i=1;i<=10;i++) { input(data); if (data > x) { x = data; } } output(x); i=0; do { input(data); i = i + 1; } while (data <= 30); output(i); i=1; while (i<10) { input(data); x = x + data; i = i + 2; } output(x);
6
E