Modul 3 : Perulangan - IvanSholana/Pemrograman-Berbasis-Objek-Sistem-Informasi GitHub Wiki
Definisi Perulangan
Perulangan merupakan salah satu control flow
selain percabangan. Control flow ini bekerja dengan mengatur flow dari program untuk melakukan instruksi yang berulang secara terus menerus selama memenuhi suatu kondisi yang ditetapkan. Manfaat dari perulangan sangatlah banyak seperti efisiensi syntax atau kode program karena mengurangi hingga menghilangkan kode program yang redundant/berulang sehingga kode program akan lebih mudah terbaca.
Di dalam bahasa Java sendiri terdapat beberapa jenis perulangan yang akan dipelajari di dalam modul ini yaitu for-loop
, while-loop
, do-while loop
dan foreach loop
.
Jenis - Jenis Perulangan
For Looping
For looping adalah perulangan yang memiliki 3 buah nilai yang diinisialisasi yaitu start
, end-condition
, step
. Start merupakan nilai yang menentukkan dari nilai berapa perulangan akan dilakukan, end-condition merupakan nilai penentu atau batas dari perulangan, dan step adalah perubahan nilai dari start pada setiap iterasinya. Looping jenis ini sangat cocok untuk perulangan yang sudah diketahui jumlah kebutuhan perulangan yang perlu dilakukannya. Untuk menggunakan perulangan for maka dapat dilihat pada struktur berikut:
for(start; end; step){
// Statement
}
Contoh kode program:
for(int a = 0; a < 10; a+= 2){
System.out.print(a + " ");
}
Output:
0 2 4 6 8
While Looping
Jenis looping selanjutnya adalah while loop
. Berbeda dengan for loop, while loop hanya membutuhkan sebuah inisialisasi kondisi untuk membuatnya berjalan ketika kondisi tersebut bernilai True. Namun, meskipun begitu tetap dibutuhkan suatu statement untuk menghentukan looping tersebut, karena jika tidak maka akan terjadi infinite loop
sehingga menyebabkan stack overflow
karena penumpukan memori yang digunakan pada RAM. Untuk menggunakan while loop maka perhatikan struktur berikut:
while(condition){
// statement
}
Contoh:
int a = 0;
while(a < 10){
System.out.print(a + " ");
a++;
}
Output:
0 1 2 3 4 5 6 7 8 9
Pada kode program di atas nilai a
akan bertambah tiap iterasinya dan ketika nilai a sudah tidak memenuhi yang mana menghasilkan kondisi false pada while, maka perulangan akan berhenti. Perulangan ini cocok untuk melakukan perulangan yang tidak diketahui membutuhkan berapa perulangan untuk menyelesaikan suatu problem.
Do While
Perulangan selanjutnya adalah Do-While
, perulangan ini tidak berbeda jauh dengan while. Perbedaanya antara while dan do-while adalah do-while akan menjalankan statement sebanyak sekali terlepas apakah kondisi bernilai True atau False. Pengecekan kondisi tidak dilakukan pada eksekusi pertama tetapi akan dilakukan untuk menentukkan apakah perulangan selanjutnya akan dilakukan atau tidak. Untuk menggunakan do-while
perhatikan struktur berikut:
do{
// statement
}while(condition);
Contoh:
Scanner input = new Scanner(System.in);
int a = 0;
do{
System.out.println(a);
a = input.nextInt();
}while (a != 0);
Foreach
Jika sebelumnya seluruh perulangan dilakukan berdasarkan kondisi, maka terdapat jenis perulangan yang melakukan perulangan berdasarkan data iterator atau data yang dapat diiterasi. Dalam java perulangan untuk melakukan hal tersebut adalah foreach
. Contoh dari data yang dapat diiterasi adalah array atau list. Untuk menggunakannya perhatikan struktur berikut:
foreach(data_output:data_asal){
// Statement
}
Contoh:
String nama[] = {"rudi","siti","cecep","supri","alex"};
for (String nama_output: nama) {
System.out.print(nama_output + " ");
}
Output:
rudi siti cecep supri alex
Nested Loop
Nested-Loop
adalah looping yang dilakukan di dalam sebuah perulangan lain. Dengan menggunakan nested loop
maka perulangan yang berada di dalam perulangan lain akan dilakukan pada setiap perulangan yang membungkusnya. Jika masih bingung maka perhatikan 2 contoh berikut:
for(int a = 10; a > 0; a--){
for(int b = 0; b < a; b++){
System.out.print('b');
}
System.out.println('a');
}
Output:
bbbbbbbbbba
bbbbbbbbba
bbbbbbbba
bbbbbbba
bbbbbba
bbbbba
bbbba
bbba
bba
ba
Perulangan b akan dijalankan pada setiap perulangan a.
Break and Continue
Ketika melakukan looping, terdapat sebuah statement yang dapat merubah arah berjalannya looping yaitu break
dan continue
.
Break
akan menghentikan looping secara paksa ketika suatu kondisi terpenuhi meskipun kondisi dari loopingnya sendiri masih menghasilkan nilai true. Contoh:
for(int a = 0; a < 100; a++){
System.out.print(a + " ");
if(a == 5){
break;
}
}
Output:
1 2 3 4 5
Program di atas akan berhenti di 5 terlepas dari kondisi pada for yang memerintahkan perulangan tersebut melakukan perulangan hingga 100.
Kemudian, statement continue merupakan statement yang akan memerintahkan program untuk melewati seluruh statement di bawah statement continue dan melakukan perulangan selanjutnya tanpa melakukan keseluruhan statement di bawah continue. Contoh:
for(int x = 0; x < 10; x++){
if(x == 5){
continue;
}
System.out.print(x + " ");
}
Output:
0 1 2 3 4 6 7 8 9
Nilai 5 akan terlewati karena ketika kondisi nilai adalah 5 maka statement continue akan dilakukan dan melewati statment di bawahnya. Analisis output di atas dan jawablah bagaimana cara mengoutputkan sebuah angka meskipun angka tersebut masuk ke dalam kondisi continue dan bagaimana cara untuk melakukan continue terhadap sebuah range angka. Contoh dari 1 - 10 nilai 5 hingga 7 akan dilewati dan menghasilkan output 1 2 3 4 8 9 10.
Latihan Soal
-
Terdapat sebanyak n tombol dan sebuah lampu dengan kondisi mati, untuk menghidupkan lampu maka perlu menekan sekali sebuah tombol. Namun, tombol hanya boleh ditekan ketika urutan tombol tersebut dapat membagi bersih jumlah tombol dengan sisa bagi 0. Tentukan apakah sebuah lampu akan berakhir dengan kondisi mati atau hidup jika memiliki sebanyak n buah tombol.
Sample Input 1
10
Sample Output 1
Lampu mati
Sample Input 2
16
Sample Output 2
Lampu hidup
-
Buatlah program untuk menampilkan deret Fibonacci Contoh tampilan :
Masukkan berapa deret Fibonacci? 8
8 deret Fibonacci = 1 1 2 3 5 8 13 21
Contoh Kode Program Lain:
For Looping
class ForCount {
public static void main (String args[]) {
int count=1;
for (int i=0; i<9; i++) {
for (int j=0; j<i+1; j++) {
System.out.print(count);
}
count++;
System.out.println();
}
}
}
While Looping
class WhileCount {
public static void main (String args[]) {
int count=1;
int i=0;
while (i<9) {
int j=0;
while (j<i+1) {
System.out.print(count);
j++;
}
count++;
System.out.println();
i++;
}
}
}
Continue
public class ContinueLabel {
public static void main(String args[]) {
int a, b;
Mulai:
for(a=0;a<2;a++)
for(b=0;b<3;b++) {
if (b==1) continue Mulai;
System.out.println("a=" + a + " ; b=" + b);
}
}
}
Break
public class BreakLabel {
public static void main(String args[]) {
int a, b;
Mulai:
for(a=0;a<2;a++)
for(b=0;b<3;b++) {
if (b==1) break Mulai;
System.out.println("a=" + a + " ; b=" + b);
}
}
}
Tugas
- Buatlah program untuk menampilkan deret bilangan genap dari 2 sampai dengan 20 kecuali kelipatan 6. Contoh tampilan :
2 4 8 10 14 16 20
LAPORAN RESMI Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan tugas yang telah dibuat.