Masukkan Password
14 2.0 Conditions & Loops in Dart Programming Language | Learn Dart Language | Dart Course
Kali ini kita masuk ke Chapter 2 Dart: Conditions and Loops. Ini adalah salah satu chapter yang sangat penting karena mulai di sinilah program kita bisa mengambil keputusan dan mengulangi pekerjaan secara otomatis.
Transcript ini masih berupa pengantar/overview, jadi belum membahas sintaks setiap materi secara mendalam. Saya akan menjelaskan dulu gambaran besarnya, supaya ketika nanti masuk ke if, switch, for, while, dan seterusnya, kamu tidak merasa semuanya berdiri sendiri.
Catatan: transcript beberapa kali menulis βDOTβ, βassetβ, dan βtaryβ. Yang dimaksud adalah Dart, assert, dan ternary.
π Chapter 2 β Conditions and Loops
Chapter 1 sebagian besar membahas:
Bagaimana menyimpan, menerima, mengolah, dan menampilkan data.
Sedangkan Chapter 2 mulai membahas:
Bagaimana mengatur alur jalannya program.
Inilah yang disebut control flow atau alur kontrol program.
1. Apa itu Control Flow?
Bayangkan kamu membuat program seperti membuat sebuah cerita.
Program tidak selalu berjalan dengan pola:
Baris 1
β
Baris 2
β
Baris 3
β
Baris 4
β
Selesai
Kadang program harus berkata:
“Kalau kondisi ini benar, lakukan A. Kalau salah, lakukan B.”
Atau:
“Ulangi pekerjaan ini 100 kali.”
Nah, itulah fungsi conditions dan loops.
2. Conditions = Pengambilan Keputusan
Condition berarti kondisi.
Contohnya di kehidupan sehari-hari:
Kalau hujan β bawa payung.
Dalam programming:
if (isRaining) {
print("Bring an umbrella");
}
Program memeriksa:
Apakah isRaining benar?
β
YA
β
Bring an umbrella
Kalau ternyata:
isRaining = false
maka perintah di dalam if tidak dijalankan.
3. Contoh yang lebih nyata
Misalnya kita membuat program untuk menentukan apakah seseorang sudah dewasa.
int age = 20;
if (age >= 18) {
print("Adult");
}
Program berpikir:
age >= 18 ?
β
TRUE
β
Print "Adult"
Kalau:
int age = 15;
maka:
15 >= 18 ?
β
FALSE
β
Tidak menjalankan print
Jadi if memungkinkan program mengambil keputusan berdasarkan kondisi.
4. Kondisi biasanya menghasilkan bool
Ini sangat penting untuk menghubungkan Chapter 1 dengan Chapter 2.
Kita sudah belajar tipe data:
bool
yang hanya mempunyai dua kemungkinan:
true
false
Misalnya:
int age = 20;
age >= 18
Hasil ekspresi tersebut adalah:
true
Karena:
20 >= 18
benar.
Sedangkan:
age < 18
menghasilkan:
false
Jadi secara sederhana:
Condition β biasanya menghasilkan
trueataufalse.
Dan hasil tersebut digunakan oleh if, while, dan sebagainya.
5. if
Ini adalah materi pertama dalam Chapter 2.
Bentuk dasarnya:
if (condition) {
// code
}
Contoh:
int age = 20;
if (age >= 18) {
print("You are an adult");
}
Cara membacanya:
Jika
age >= 18benar, jalankan kode di dalam{}.
6. if-else
Kadang kita tidak hanya ingin melakukan sesuatu ketika kondisi benar.
Kita juga ingin menentukan apa yang dilakukan ketika kondisi salah.
Misalnya:
int age = 15;
if (age >= 18) {
print("Adult");
} else {
print("Minor");
}
Program memiliki dua jalan:
age >= 18?
/ \
TRUE FALSE
β β
Adult Minor
Jadi:
if= kalau benarelse= kalau salah
7. if-else if-else
Bagaimana kalau pilihannya lebih dari dua?
Misalnya kita ingin menentukan grade:
80 ke atas β A
60 ke atas β B
40 ke atas β C
di bawah 40 β D
Kita bisa menggunakan:
if (marks >= 80) {
print("A");
} else if (marks >= 60) {
print("B");
} else if (marks >= 40) {
print("C");
} else {
print("D");
}
Program akan memeriksa dari atas ke bawah.
Ini sangat penting.
Misalnya:
marks = 85
Program mengecek:
85 >= 80 β TRUE
langsung masuk ke:
A
dan tidak perlu mengecek kondisi berikutnya.
π§ Cara membayangkan if-else if
Anggap ada beberapa pintu:
Pintu 1 β >= 80
Pintu 2 β >= 60
Pintu 3 β >= 40
Pintu 4 β selain itu
Program mencoba dari atas.
Begitu menemukan pintu yang cocok:
“Oke, masuk sini.”
Selesai.
Karena itu urutan kondisi sangat penting.
8. assert
Transcript berikutnya menyebut:
assert basically used to trace the errors in our program
Ada sedikit penyederhanaan di sini.
assert bukan sekadar “mencari error”, tetapi lebih tepat digunakan untuk:
memastikan asumsi tertentu yang dibuat programmer memang benar, terutama saat development/debugging.
Contoh:
int age = 20;
assert(age >= 18);
Artinya:
“Saya sebagai programmer mengharapkan
ageminimal 18.”
Kalau ternyata:
int age = 15;
maka assertion tersebut gagal.
if vs assert
Ini perbedaan yang sangat penting.
if
Digunakan untuk logika program:
if (age >= 18) {
print("You can vote");
}
Artinya program memang perlu mengambil keputusan.
assert
Digunakan untuk memeriksa asumsi programmer:
assert(age >= 18);
Artinya programmer berkata:
“Saya mengharapkan kondisi ini benar.”
Jadi jangan mengandalkan assert sebagai validasi input user atau mekanisme keamanan aplikasi production.
9. switch-case
Materi berikutnya adalah:
switch
case
switch digunakan ketika kita ingin membandingkan satu nilai dengan beberapa kemungkinan nilai tertentu.
Misalnya hari:
int day = 1;
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
case 3:
print("Tuesday");
break;
default:
print("Invalid day");
}
Kalau:
day = 2
program mencari:
case 1 β tidak cocok
case 2 β cocok
kemudian:
Monday
switch vs if
Ini pertanyaan yang sangat umum.
Gunakan if ketika kondisinya berupa perbandingan/range
Contoh:
if (age >= 18) {
print("Adult");
}
Karena kita membandingkan rentang.
Gunakan switch ketika satu nilai mempunyai beberapa kemungkinan spesifik
Contoh:
switch (day) {
case 1:
print("Sunday");
break;
case 2:
print("Monday");
break;
}
Cara mengingat:
ifβ apakah kondisi ini terpenuhi?switchβ nilai ini termasuk pilihan yang mana?
10. Ternary Operator
Transcript menyebut:
Ternary Operator is the short form of if else.
Benar, tetapi ada sedikit detail penting:
ternary sangat cocok untuk memilih salah satu dari dua nilai berdasarkan kondisi.
Syntax:
condition ? valueIfTrue : valueIfFalse
Contoh:
int age = 20;
String status = age >= 18 ? "Adult" : "Minor";
print(status);
Output:
Adult
Cara membacanya:
age >= 18 ?
β
TRUE
β
"Adult"
Kalau false:
"Minor"
Kenapa disebut “ternary”?
Karena ada tiga bagian:
condition ? trueValue : falseValue
Yaitu:
- condition
- value jika true
- value jika false
Contoh:
age >= 18 ? "Adult" : "Minor"
if-else vs ternary
if-else:
if (age >= 18) {
status = "Adult";
} else {
status = "Minor";
}
Ternary:
status = age >= 18 ? "Adult" : "Minor";
Untuk kondisi sederhana, ternary lebih ringkas.
Tetapi jangan membuat ternary terlalu rumit.
Misalnya jangan membuat sesuatu seperti:
condition1
? condition2
? condition3
? ...
Kalau sudah sulit dibaca, lebih baik gunakan if-else.
11. Sekarang masuk ke LOOPS π
Ini bagian yang sangat penting.
Bayangkan kamu ingin:
Hello World
Hello World
Hello World
Hello World
...
sebanyak 100 kali.
Tanpa loop, kamu harus menulis:
print("Hello World");
print("Hello World");
print("Hello World");
print("Hello World");
// ...
100 kali.
Tentu sangat tidak efisien.
Dengan loop:
for (int i = 1; i <= 100; i++) {
print("Hello World");
}
Selesai.
Hanya beberapa baris.
π§ Apa itu loop?
Loop = perulangan.
Artinya:
Jalankan kode yang sama berulang kali berdasarkan aturan tertentu.
Misalnya:
Mulai
β
Cetak Hello
β
Apakah sudah 100 kali?
β
Belum β ulangi
β
Cetak Hello
β
...
β
Sudah 100 kali
β
Selesai
12. Kenapa Loop sangat penting?
Loop digunakan hampir di mana-mana.
Misalnya kita memiliki:
List<String> names = [
"Ahad",
"Ali",
"Budi",
"Siti"
];
Kita ingin mencetak semua nama.
Tanpa loop:
print(names[0]);
print(names[1]);
print(names[2]);
print(names[3]);
Dengan loop:
for (String name in names) {
print(name);
}
Kalau datanya menjadi 100 nama?
Kita tetap menggunakan loop yang sama.
13. Jenis Loop yang akan dipelajari
Transcript memberikan beberapa jenis loop:
for
forEach
for-in
while
do-while
Jangan khawatir melihat banyak nama.
Sebenarnya semuanya memiliki ide dasar yang sama:
mengulang sesuatu.
Yang berbeda adalah cara kita menentukan pengulangannya.
14. for loop
for biasanya digunakan ketika pola pengulangan kita cukup jelas.
Contoh:
for (int i = 1; i <= 5; i++) {
print(i);
}
Output:
1
2
3
4
5
Ada tiga bagian penting:
for (int i = 1; i <= 5; i++)
Bagian 1 β mulai
int i = 1
Mulai dari 1.
Bagian 2 β kondisi
i <= 5
Selama masih true, loop berjalan.
Bagian 3 β perubahan
i++
Setiap selesai satu putaran, i bertambah 1.
15. forEach
forEach digunakan untuk melakukan sesuatu terhadap setiap item dalam collection.
Misalnya:
List<String> names = [
"Ahad",
"Ali",
"Budi"
];
names.forEach((name) {
print(name);
});
Output:
Ahad
Ali
Budi
Cara membacanya:
“Untuk setiap
namedi dalamnames, lakukanprint(name).”
16. for-in
for-in juga digunakan untuk mengambil setiap item dari collection.
List<String> names = [
"Ahad",
"Ali",
"Budi"
];
for (String name in names) {
print(name);
}
Output:
Ahad
Ali
Budi
Cara membacanya:
“Untuk setiap
nameyang ada di dalamnames, jalankan kode.”
for, forEach, dan for-in
Ketiganya sama-sama bisa melakukan iterasi collection, tetapi cara penggunaannya berbeda.
| Loop | Fokus |
|---|---|
for | kontrol index dan jumlah iterasi |
forEach | lakukan sesuatu untuk setiap item |
for-in | mengambil setiap item secara langsung |
Contoh for:
for (int i = 0; i < names.length; i++) {
print(names[i]);
}
Contoh forEach:
names.forEach((name) {
print(name);
});
Contoh for-in:
for (String name in names) {
print(name);
}
Untuk pemula, for-in sering terasa paling natural ketika kita hanya membutuhkan nilai itemnya.
17. while
while berarti:
selama kondisi masih benar, terus lakukan.
Contoh:
int i = 1;
while (i <= 5) {
print(i);
i++;
}
Output:
1
2
3
4
5
Cara berpikirnya:
i = 1
Apakah i <= 5?
YES β print
i++
Apakah i <= 5?
YES β print
i++
...
Sampai:
i = 6
Kemudian:
6 <= 5
adalah false.
Loop berhenti.
18. do-while
do-while mirip dengan while, tetapi ada perbedaan yang sangat penting.
while
CHECK
β
RUN
do-while
RUN
β
CHECK
Contoh:
int i = 1;
do {
print(i);
i++;
} while (i <= 5);
Kode di dalam do pasti dijalankan setidaknya satu kali, karena pengecekan kondisi dilakukan setelahnya.
π₯ Perbedaan while dan do-while
Misalnya:
int i = 10;
while (i < 5) {
print(i);
}
Output:
tidak ada
Karena kondisi sudah salah sejak awal.
Tetapi:
int i = 10;
do {
print(i);
} while (i < 5);
Output:
10
Karena blok do dijalankan terlebih dahulu.
Ini salah satu perbedaan paling penting antara keduanya.
19. break
Selanjutnya ada:
break;
break digunakan untuk menghentikan loop lebih awal.
Contoh:
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
print(i);
}
Output:
1
2
3
4
Ketika:
i == 5
menjadi true, program menjalankan:
break;
dan keluar dari loop.
Analogi break
Bayangkan kamu sedang mencari sesuatu di 100 kotak.
Kamu menemukan barang yang dicari di kotak nomor 5.
Tidak perlu memeriksa kotak:
6
7
8
...
100
Kamu langsung berkata:
“Sudah ketemu. Berhenti.”
Itulah break.
20. continue
continue berbeda dengan break.
break
Berhenti total dari loop.
continue
Lewati iterasi saat ini dan lanjut ke iterasi berikutnya.
Contoh:
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
print(i);
}
Output:
1
2
4
5
Ketika i == 3, continue mengatakan:
“Jangan jalankan sisa kode untuk putaran ini. Lanjut ke putaran berikutnya.”
Jadi angka 3 dilewati.
π₯ break vs continue
Ini wajib kamu bedakan:
break
β
KELUAR DARI LOOP
Sedangkan:
continue
β
LEWATI PUTARAN SEKARANG
β
LANJUT LOOP
Contoh sederhana:
1 β cetak
2 β cetak
3 β continue β lewati
4 β cetak
5 β cetak
Sedangkan break:
1 β cetak
2 β cetak
3 β break β SELESAI
4 β tidak dijalankan
5 β tidak dijalankan
21. Exception Handling
Materi terakhir sebelum latihan adalah:
Exception handling
Ini digunakan ketika program menghadapi kondisi/error yang terjadi saat program berjalan.
Misalnya kita meminta user memasukkan angka:
int number = int.parse(input);
Kalau user memasukkan:
hello
maka:
int.parse("hello")
tidak bisa dilakukan dan dapat menghasilkan FormatException.
Nah, exception handling memungkinkan kita menangani kondisi tersebut dengan lebih baik.
Contoh sederhana
Kita bisa menggunakan:
try {
// kode yang mungkin menghasilkan error
} catch (e) {
// menangani error
}
Misalnya:
try {
int number = int.parse("hello");
print(number);
} catch (e) {
print("Input is not a valid number");
}
Daripada program berhenti begitu saja, kita bisa memberikan respons yang lebih jelas.
Nanti materi ini akan kita bahas lebih dalam ketika sampai bagian exception handling.
π§© Gambaran Besar Chapter 2
Sekarang kita bisa melihat hubungan semua materi:
CHAPTER 2
β
ββββββββββββ΄βββββββββββ
β β
CONDITIONS LOOPS
β β
βββββββΌββββββ ββββββββΌββββββββββ
β β β β β β
if switch ternary for while do-while
β
if-else
β
if-else-if
β
assert
LOOP CONTROL
β
ββββββ΄βββββ
β β
break continue
ERROR HANDLING
β
try/catch
π Hubungannya dengan Chapter 1
Ini penting supaya kamu tidak merasa Chapter 2 adalah materi yang benar-benar baru.
Di Chapter 1 kamu sudah belajar:
int age = 20;
Sekarang Chapter 2 menggunakan data tersebut:
if (age >= 18) {
print("Adult");
}
Chapter 1:
Kita punya data
age.
Chapter 2:
Kita menggunakan data
ageuntuk membuat keputusan.
Contoh lainnya.
Chapter 1:
List<String> names = [
"Ahad",
"Ali",
"Budi"
];
Chapter 2:
for (String name in names) {
print(name);
}
Chapter 1:
Kita punya List.
Chapter 2:
Kita mengulang isi List.
Jadi sebenarnya:
Chapter 2 adalah cara menggunakan data yang sudah kita pelajari di Chapter 1 untuk mengontrol jalannya program.
π Contoh Program yang Menggabungkan Semuanya
Misalnya kita ingin membuat program sederhana:
import 'dart:io';
void main() {
print("Enter your age:");
int age = int.parse(stdin.readLineSync()!);
if (age >= 18) {
print("You are an adult.");
} else {
print("You are a minor.");
}
}
Di sini sudah ada beberapa konsep:
Chapter 1
import 'dart:io';
stdin.readLineSync()
int.parse()
print()
Chapter 2
if
else
Jadi programming itu memang seperti menyusun puzzle.
π§ Cara Mengingat Chapter 2
Saya sarankan jangan menghafalkan semua syntax sekaligus.
Pahami fungsi masing-masing.
Conditions
if
Kalau kondisi benar, lakukan.
else
Kalau kondisi
ifsalah, lakukan alternatif ini.
else if
Kalau kondisi sebelumnya salah, coba kondisi berikutnya.
switch
Nilai ini cocok dengan pilihan yang mana?
ternary
Pilih salah satu dari dua nilai secara singkat.
assert
Saya sebagai programmer mengharapkan kondisi ini benar.
Loops
for
Ulangi dengan pola yang jelas.
forEach
Lakukan sesuatu untuk setiap item.
for-in
Ambil setiap item satu per satu.
while
Selama kondisi benar, terus ulangi.
do-while
Jalankan dulu, baru cek kondisi.
Loop control
break
Berhenti dari loop.
continue
Lewati putaran sekarang, lanjut berikutnya.
Exception
try-catch
Coba jalankan kode; kalau terjadi exception, tangani.
π― Peta Mental Sederhana
Kalau kamu melihat sebuah masalah programming, tanyakan:
“Program saya perlu mengambil keputusan?”
Gunakan:
if
if-else
if-else-if
switch
ternary
“Program saya perlu mengulang sesuatu?”
Gunakan:
for
forEach
for-in
while
do-while
“Saya ingin menghentikan loop?”
break
“Saya ingin melewati satu putaran?”
continue
“Ada kemungkinan terjadi exception?”
try-catch
π Kesimpulan
Chapter 1 mengajarkan kita data dan operasi dasar.
Chapter 2 mulai mengajarkan logika program.
Perbedaan sederhananya:
CHAPTER 1
Data
β
Operasi
β
Output
sedangkan:
CHAPTER 2
Data
β
Condition?
β
βββ TRUE β lakukan A
βββ FALSE β lakukan B
atau:
Data
β
Loop
β
Ulangi
β
Ulangi
β
Ulangi
β
Selesai
Jadi kalau Chapter 1 membuat kamu bisa mengatakan:
“Saya bisa membuat program.”
Maka Chapter 2 mulai membuat kamu bisa mengatakan:
“Saya bisa membuat program berpikir dan mengontrol apa yang harus dilakukan.”
Dan ini memang chapter yang sangat penting. Setelah memahami if, switch, ternary, dan berbagai loop, kemampuanmu membuat program sederhana akan meningkat cukup drastis.