Anda di halaman 1dari 17

AES I 2020

CC BY SA

Control Flow Perulangan


(Loop)
Menggunakan for, while, do-while, for-each
AES II 2021
CC BY SA

Loop
Selain conditional control flow*, pemrograman
mengenal juga loop (perulangan).

Teknik ini digunakan untuk memerintahkan program


melakukan eksekusi suatu blok kode secara
berulang-ulang.

Perulangan ini dilakukan hingga batas jumlah


tertentu, atau hingga kondisi tertentu terpenuhi.

Java mengenal loop menggunakan for, for each,


while, dan do-while

* control flow, kendali alur eksekusi kode program


AES II 2021
CC BY SA

For loop - struktur


Inisialisasi syarat perulangan update

for (int i=1;i<=7;i++) {


For mengeksekusi kode menggunakan rentang nilai tertentu. // Kode yang dieksekusi
Teknik ini umumnya digunakan saat perulangan akan
// pada setiap siklus perulangan
dilakukan dalam jumlah yang sudah pasti (n kali).
}

Misal,
Kontrol perulangan menggunakan for terdiri atas tiga segmen: inisialisasi,
syarat, update
for (int i=1;i<=7;i++) {
System.out.println("Nilai i: "+i);
Inisialisasi, kode pada segmen ini dieksekusi paling awal. Segmen ini
}
dieksekusi sekali saja yakni sebelum siklus perulangan dimulai. Pada
contoh, disiapkan sebuah variabel i dengan nilai 1.
Jalankan kode di atas pada replit

Syarat perulangan, ekspresi pada segmen ini digunakan untuk


Kode di atas mencetak nilai secara berulang pada memeriksa apakah perulangan perlu dilakukan. Jika ekspresi bernilai true,
rentang nilai 1 sampai 7 lakukan perulangan, jika false hentikan perulangan. Pada contoh,
perulangan berhenti jika i sudah tidak lebih kecil atau sama dengan 7,
Jalankan kode di atas (klik pada link replit), kemudian dengan kata lain jika i lebih besar dari 7
lihat penjelasan di samping
Update, kode pada segmen ini dieksekusi setiap satu siklus perulangan
selesai. Pada contoh, setiap satu siklus perulangan selesai, nilai i
dinaikkan satu langkah.
AES II 2021
CC BY SA

For loop - variasi rentang, jumlah dan arah langkah

for (int i=0;i<4;i++){ Nilai i dari 0 s.d 3


Cuplikan kode di samping
System.out.println(i);
memberikan beberapa contoh
}
penggunaan for loop dengan variasi
pada rentang nilai, jumlah langkah,
for (int i=1;i<=5;i++){ Nilai i dari 1 s.d 5
maupun arahnya.
System.out.println(i);

Rentang bisa dimulai dari nilai berapa }

saja. Tidak harus 0 atau 1. (cth 1 dan Nilai i kelipatan 3, perhatikan


2) for (int i=3;i<10;i=i+3){
segmen update
System.out.println(i);

Kenaikan nilai pada segmen update }

tidak mesti harus 1 ataupun harus Nilai i dari besar ke kecil,


naik/positif. Bisa saja lebih dari satu, for (int i=5;i>0;i--){
perhatikan ketiga segmen
dan bisa pula turun/negatif. (cth 3 dan System.out.println(i);

4) }
Jalankan kode di atas pada replit
AES II 2021
CC BY SA

For loop - cth mencetak teks

Cuplikan kode di samping adalah


kode yang mencetak teks “Hello
World” sebanyak 3 kali for (int i=0;i<3;i++){
System.out.println("Hello world!");
Jalankan pada replit untuk lebih }
jelasnya.
Jalankan kode di atas pada replit
AES II 2021
CC BY SA

For loop - cth dengan conditional

Cuplikan kode di samping adalah


kode perulangan yang memeriksa for (int i=1;i<10;i++){
setiap bilangan 1 s.d 9, apakah setiap if (i % 2 == 0) { // akan bernilai true bila i genap
bilangan itu ganjil atau genap. System.out.println(i+" adalah bilangan genap");
} else {
Jalankan pada replit untuk lebih System.out.println(i+" adalah bilangan ganjil");
jelasnya. }
}

Jalankan kode di atas pada replit


AES II 2021
CC BY SA

While loop
While melakukan eksekusi kode secara berulang
berdasarkan nilai kebenaran ekspresi tertentu.

Berikut adalah mekanisme kerjanya:

1. Jika saat memasuki struktur while ekspresi


Struktur perulangan menggunakan while.
bernilai true, maka kode di dalamnya akan
while (ekspresi) {
dieksekusi.
// Kode yang dieksekusi
2. Setelah baris terakhir pada struktur dieksekusi,
ekspresi akan dievaluasi lagi. Bila masih bernilai // jika ekspresi bernilai true

true, kode di dalamnya akan kembali dieksekusi. }


3. Hal ini terus berlangsung hingga ekspresi
bernilai false.
4. Jika saat memasuki struktur while ekspresi
bernilai false, kode tidak akan dieksekusi sama
sekali.
AES II 2021
CC BY SA

While loop - cth padanan for


Struktur while dapat digunakan int i = 0;
sebagaimana penggunaan struktur for. while ( i < 4 ) {
System.out.println(i);
Cuplikan kode di samping menunjukkan i++;
beberapa contoh perulangan dengan }
struktur while. i = 1;
while ( i <= 5 ) {
Contoh-contoh tersebut melakukan hal yang System.out.println(i);
sama dengan contoh sebelumnya yang i++; // ini sama artinya dengan i = i + 1
menggunakan struktur for. }
i = 3;
while (i<10) {
System.out.println(i);
i=i+3; // ini bisa diganti dengan i+=3
}
Jalankan kode di atas pada replit
AES II 2021
CC BY SA

While loop - cth penghentian berdasar input user


Keunggulan perulangan dengan while adalah String text = "Saya sedang belajar perulangan
dapat melakukan perulangan dalam jumlah yang menggunakan while";
belum pasti. String lagi = "y";
while (lagi.equalsIgnoreCase("y")) {
Contoh di kanan adalah perulangan System.out.println(text);
menggunakan while yang jumlah perulangannya System.out.println("Lagi? (Y/T): ");
bergantung pada input user. lagi = System.console().readLine();
System.out.println();
Kode dalam struktur akan terus dijalankan }
berulang selama user memilih memasukkan System.out.println("Perulangan dihentikan");
karakter ‘Y’ atau ‘y’.

Jalankan kode di atas pada replit


AES II 2021
CC BY SA

While loop - cth penghentian berdasar tercapainya


kondisi tertentu while ( benar < 7 && salah < 2 ) {
bil1 = ThreadLocalRandom.current().nextInt(
1,
Contoh lain adalah saat perulangan baru berhenti jika 10);
tercapainya kondisi tertentu. bil2 = ThreadLocalRandom.current().nextInt(
1,
10);
Cuplikan kode di samping adalah sebuah permainan kunci = bil1 * bil2;
tanya jawab perkalian untuk dua bilangan di bawah
System.out.println(bil1+" x "+bil2+" = ? ");
10.
String input = System.console().readLine();
jawaban = Integer.parseInt(input);
Pada permainan ini, user diminta menjawab soal
if (jawaban == kunci) {
berturut turut. Permainan dimenangkan bila user
sudah menjawab 7 kali secara benar, dan kalah bila benar++;
dua kali menjawab salah. System.out.println("Benar : "+benar+" kali");
} else {
Jalankan kode utuhnya via replit, cobalah mengganti salah++;
nilai beberapa variabel untuk lebih memahami kode System.out.println("Salah : "+salah+" kali");
program. }
}
Jalankan kode di atas pada replit
AES II 2021
CC BY SA

While loop - infinite loop

Infinite loop atau disebut juga endless loop adalah


perulangan yang dirancang tidak berhenti sama while (true) {
sekali, kecuali jika terjadi intervensi tertentu. System.out.println("Hello ke-"+i);
i++;
Infinite loop digunakan untuk biasanya untuk proses try {
daemon* atau services, pada kode yang menjalankan
TimeUnit.SECONDS.sleep(5);
hardware/embedded devices, atau pada fungsi main
} catch (Exception x) {
sebuah game.
x.printStackTrace();
}
Infinite loop menggunakan struktur while dibuat
dengan menggunakan nilai true langsung sebagai
Jalankan kode di atas pada replit
syarat perulangan, seperti diperlihatkan pada contoh
di samping.

*proses yang berjalan di belakang layar/background


AES II 2021
CC BY SA

do-while loop
Variasi lain dari while adalah do-while. Pada
perulangan menggunakan do-while, kode program
dieksekusi minimal sekali, terlepas dari kondisi yang
menjadi syarat perulangan. Struktur perulangan menggunakan do-while.

Berikut adalah mekanisme kerjanya: do {


// Kode yang dieksekusi
1. Kode dalam blok do-while dieksekusi. // jika ekspresi bernilai true
2. Setelah eksekusi berakhir, ekspresi yang }
menjadi syarat kondisi dievaluasi. Jika ekspresi while (ekspresi)
bernilai true, kode dalam blok dieksekusi
kembali. Jika tidak, perulangan dihentikan.
3. Hal ini terus berlangsung hingga ekspresi
bernilai false.
AES II 2021
CC BY SA

do-while loop, cth


Contoh di kanan adalah perulangan do {
menggunakan do-while. System.out.println("Masukkan sebuah bilangan
kelipatan 3: ");
Pada contoh tersebut, program akan meminta String input = System.console().readLine();
user untuk memberikan sebuah contoh bilangan bil = Integer.parseInt(input);
kelipatan 3. benar = bil % 3 == 0 ; // periksa apakah bil
merupakan kelipatan 3
Program akan terus mengulang permintaan if (!benar) {
tersebut bila user memberikan bilangan yang System.out.println(bil+" bukan kelipatan 3: ");
bukan kelipatan 3. }
} while (!benar);
Perulangan akan terhenti bila bilangan yang
dimasukkan user adalah bilangan kelipatan 3.

Jalankan kode di atas pada replit


AES II 2021
CC BY SA

for-each loop
Java mengenal for-each loop, versi ringkas yang Sintaks perulangan menggunakan for-each
digunakan untuk melakukan perulangan terhadap
elemen yang terdapat pada sebuah data bertipe array for (TipeData elemen: array/collection ) {
ataupun collection*. // Kode yang dieksekusi untuk tiap elemen
}
Penggunaan for-each membuat kode menjadi lebih
sederhana dan mudah terbaca.
Contoh
Untuk lebih jelasnya, lihat kumpulan contoh for (String warna: warnaBalons) {
penggunaan for-each pada link kode replit di samping. System.out.println("Balonku berwarna "+warna);
}

Jalankan kode di atas pada replit

*tipe object yang menampung banyak elemen di dalamnya, seperti list dan
set
AES II 2021
CC BY SA

Tugas
B. Perulangan menggunakan for 2 - Mencari nilai rata-rata,
A. Perulangan menggunakan for 1 - perulangan pada range nilai
tertinggi, terendah
tertentu

Buatlah program dengan ketentuan sebagai berikut


Buatlah program dengan ketentuan sebagai berikut

1. Tanyakan kepada user jumlah data yang akan dimasukkan,


1. Kalikan 3 digit terakhir pada NPM anda, yang tidak sama
simpan dalam variabel bernama jumlahData.
dengan 0. Simpan sebagai variabel bernama awal.
2. Lakukan perulangan untuk meminta user memasukkan
2. Jumlahkan dua digit tanggal, bulan, dan tahun lahir anda.
data bertipe double sejumlah nilai jumlahData.
Misal lahir 10 November 2003, dijumlahkan menjadi 10 +
3. Sesuai dengan NPM anda maka:
11 + 3 = 24. Simpan sebagai variabel bernama akhir.
a. NPM ganjil mencari nilai tertinggi dan rata-rata
3. Cetak seluruh bilangan di antara kedua variabel tersebut
nilai dari seluruh data tersebut.
menggunakan teknik perulangan for.
b. NPM genap mencari nilai terendah dan rata-rata
nilai dari seluruh data tersebut.

SERAHKAN TUGAS DALAM BENTUK LINK REPLIT MELALUI ELEARNING PADA SLOT YANG ADA
AES II 2021
CC BY SA

Challenges
B. Fibonacci
A. Jumlah bilangan kuadrat

Setiap suku pada deret fibonacci dibentuk dari menjumlahkan dua


Bilangan kuadrat dengan nilai lebih kecil dari 10 adalah, 1,4,9,16.
nilai suku sebelumnya, dengan nilai suku pertama dan kedua adalah
Jumlah seluruh bilangan tersebut adalah 30.
1 dan 2. Sepuluh suku pertama pada deret ini adalah: 1, 2, 3, 5, 8,
13, 21, 34, 55, 89,
Dengan memanfaatkan teknik perulangan, hitunglah jumlah seluruh
bilangan kuadrat yang lebih kecil dari 100000000 (100 juta)
Dengan memanfaatkan teknik perulangan, carilah hasil penjumlahan
dari seluruh suku pada deret fibonacci yang memiliki nilai genap dan
lebih kecil dari 1000000 (satu juta).

PENGERJAAN CHALLENGE BERSIFAT OPSIONAL. JAWABAN DIPOST PADA SLOT CHALLENGE. BOLEH
MENJAWAB YANG MANA SAJA. YANG MENJAWAB BENAR PERTAMA KALI AKAN MENDAPATKAN SUBSIDI NILAI
YANG DAPAT DIGUNAKAN PADA SALAH SATU KOMPONEN NILAI AKHIR
Selesai

Anda mungkin juga menyukai