Masukkan Password
28 Exercise Solution Chapter 2 | Conditions & Loops Exercise | Learn Dart Language | Dart Course
Kali ini videonya membahas penyelesaian semua practice exercise Chapter 2 satu per satu. Saya akan jelaskan bukan hanya kodenya, tetapi juga kenapa kode tersebut bekerja, bagaimana alur eksekusinya, dan konsep Dart apa yang sebenarnya sedang dilatih.
Catatan transkrip: “DOT” = Dart, “vels/VVS” = vowels, “LP” = else, dan beberapa kata seperti “Plus+” maksudnya operator
++.
Gambaran besar latihan
Ada 9 soal yang diselesaikan:
- Menentukan bilangan ganjil/genap
- Menentukan karakter vowel/consonant
- Menentukan angka positive/negative/zero
- Mencetak nama 100 kali
- Menghitung jumlah bilangan 1–100
- Membuat tabel perkalian 5
- Membuat tabel perkalian 1–9
- Membuat operasi kalkulator
- Mencetak 1–100 kecuali 56
Konsep yang banyak digunakan:
if / else
%
for loop
while loop
nested loop
++
+=
continue
String
List
contains()
toLowerCase()
1. Menentukan angka ganjil atau genap
Soal:
Buat program untuk menentukan apakah sebuah angka odd atau even.
Misalnya:
int a = 4;
Kita ingin mengetahui:
4 → Even
atau:
5 → Odd
Kuncinya adalah %
Kode yang digunakan:
if (a % 2 == 0) {
print("Even");
} else {
print("Odd");
}
Operator % adalah modulo, yaitu mencari sisa pembagian.
Contoh:
4 % 2 = 0
5 % 2 = 1
6 % 2 = 0
7 % 2 = 1
Maka aturan kita:
sisa pembagian 2 = 0 → Even
sisa pembagian 2 ≠ 0 → Odd
Contoh lengkap
void main() {
int a = 5;
if (a % 2 == 0) {
print("Even");
} else {
print("Odd");
}
}
Hasil:
Odd
Karena:
5 % 2 = 1
2. Menentukan vowel atau consonant
Soal kedua:
Apakah sebuah karakter merupakan vowel atau consonant?
Vowel dalam bahasa Inggris:
a
e
i
o
u
Selain itu dianggap consonant untuk latihan ini.
Membuat list vowel
Video membuat sebuah list:
List<String> vowels = ['a', 'e', 'i', 'o', 'u'];
Artinya kita mempunyai kumpulan:
vowels
├── a
├── e
├── i
├── o
├── u
Kemudian kita punya karakter:
String character = 'b';
Sekarang kita ingin bertanya:
Apakah
bada di dalam listvowels?
3. Menggunakan contains()
Untuk memeriksa apakah sebuah nilai terdapat di dalam list, kita bisa menggunakan:
contains()
Contohnya:
vowels.contains(character)
Artinya:
Apakah
characterterdapat di dalamvowels?
Misalnya:
String character = 'a';
Maka:
vowels.contains('a')
hasilnya:
true
Sedangkan:
vowels.contains('b')
hasilnya:
false
Program lengkap
void main() {
List<String> vowels = ['a', 'e', 'i', 'o', 'u'];
String character = 'b';
if (vowels.contains(character)) {
print("Vowel");
} else {
print("Consonant");
}
}
Hasil:
Consonant
Karena b tidak terdapat dalam list.
Kalau kita ubah:
String character = 'a';
hasilnya:
Vowel
4. Masalah huruf besar dan kecil
Ini bagian yang sangat penting dari video.
Misalnya:
String character = 'A';
Sedangkan list kita:
['a', 'e', 'i', 'o', 'u']
Ketika kita melakukan:
vowels.contains(character)
hasilnya:
false
Padahal manusia tahu bahwa:
A
adalah vowel.
Kenapa?
Karena komputer membedakan:
A
dan:
a
Uppercase dan lowercase dianggap berbeda.
5. Menggunakan toLowerCase()
Kita bisa mengubah karakter menjadi lowercase terlebih dahulu:
character.toLowerCase()
Contohnya:
A → a
B → b
E → e
Z → z
Jadi programnya:
void main() {
List<String> vowels = ['a', 'e', 'i', 'o', 'u'];
String character = 'A';
if (vowels.contains(character.toLowerCase())) {
print("Vowel");
} else {
print("Consonant");
}
}
Sekarang:
A
↓
toLowerCase()
↓
a
↓
ada di vowels
↓
Vowel
Hasil:
Vowel
Inti konsepnya
Kalau data kita ingin dibandingkan dengan huruf kecil, kita bisa menormalisasi input:
character.toLowerCase()
Ini merupakan teknik yang sangat sering digunakan dalam pemrograman.
6. Positive, Negative, atau Zero
Soal ketiga:
Tentukan apakah angka positif, negatif, atau nol.
Ada tiga kemungkinan:
a > 0 → Positive
a < 0 → Negative
a == 0 → Zero
Kita menggunakan:
if
else if
else
Contoh:
void main() {
int a = 10;
if (a > 0) {
print("Positive");
} else if (a < 0) {
print("Negative");
} else {
print("Zero");
}
}
Bagaimana Dart memprosesnya?
Misalnya:
a = 10
Dart mengecek:
a > 0
Apakah:
10 > 0
Benar.
Maka:
Positive
dicetak.
Dan Dart tidak perlu mengecek kondisi berikutnya.
Kalau:
a = -10
Pertama:
-10 > 0 → false
Lalu:
-10 < 0 → true
Maka:
Negative
Kalau:
a = 0
Maka:
0 > 0 → false
0 < 0 → false
Keduanya false.
Maka masuk:
else
dan mencetak:
Zero
7. Mencetak nama 100 kali menggunakan for
Soal:
Print your name 100 times.
Video menggunakan for loop.
Contohnya:
for (int i = 1; i <= 100; i++) {
print("Budi");
}
Mari kita bedah.
Bagian pertama
int i = 1
Artinya mulai dari:
i = 1
Bagian kedua
i <= 100
Artinya:
Selama
imasih ≤ 100, ulangi.
Bagian ketiga
i++
Artinya:
i = i + 1
Jadi:
1
2
3
4
...
100
Setiap angka tersebut menyebabkan:
print("Budi");
dijalankan.
Jadi "Budi" dicetak 100 kali.
8. Kenapa i++ penting?
Perhatikan:
for (int i = 1; i <= 100; i++)
i++ bertugas menaikkan nilai i.
Kalau tidak ada perubahan nilai:
i = 1
i = 1
i = 1
i = 1
...
kondisinya akan selalu:
1 <= 100
dan loop tidak akan selesai.
Jadi kita membutuhkan perubahan:
i++;
9. Bisa juga menggunakan while
Video kemudian menunjukkan bahwa soal yang sama dapat dikerjakan dengan while.
int i = 1;
while (i <= 100) {
print("Budi");
i++;
}
Hasilnya sama.
for
for (int i = 1; i <= 100; i++) {
print("Budi");
}
while
int i = 1;
while (i <= 100) {
print("Budi");
i++;
}
Keduanya mencetak nama 100 kali.
Perbedaannya hanya pada cara menulis struktur loop.
10. Menghitung jumlah 1 sampai 100
Soal:
Calculate the sum of natural numbers.
Video menggunakan:
1 + 2 + 3 + ... + 100
Kita membutuhkan variabel untuk menyimpan total.
int sum = 0;
Kemudian:
for (int i = 1; i <= 100; i++) {
sum += i;
}
Setelah loop selesai:
print(sum);
Program lengkap
void main() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
print(sum);
}
Hasil:
5050
11. Apa maksud sum += i?
Ini sangat penting.
sum += i;
sama dengan:
sum = sum + i;
Misalnya awalnya:
sum = 0
Iterasi 1
sum = 0 + 1
sum = 1
Iterasi 2
sum = 1 + 2
sum = 3
Iterasi 3
sum = 3 + 3
sum = 6
Iterasi 4
sum = 6 + 4
sum = 10
dan seterusnya.
Akhirnya:
sum = 5050
12. Kenapa sum dimulai dari 0?
Karena sum berfungsi sebagai penampung total.
Kita bisa membayangkannya seperti kotak kosong:
sum = 0
Kemudian kita masukkan:
+1
+2
+3
+4
...
+100
Akhirnya kotak tersebut berisi:
5050
Konsep seperti ini disebut accumulator.
13. Membuat tabel perkalian 5
Soal:
Generate multiplication table of 5.
Kita mempunyai:
int number = 5;
Kemudian:
for (int i = 1; i <= 10; i++) {
print(number * i);
}
Program lengkap:
void main() {
int number = 5;
for (int i = 1; i <= 10; i++) {
print(number * i);
}
}
Output:
5
10
15
20
25
30
35
40
45
50
14. Membuat output lebih bagus
Video kemudian membuat output seperti:
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
...
5 x 10 = 50
Caranya menggunakan string interpolation:
print("$number x $i = ${number * i}");
Contoh ketika:
number = 5
i = 3
maka:
"$number x $i = ${number * i}"
menjadi:
5 x 3 = 15
15. Mengapa ada ${}?
Dalam Dart kita bisa memasukkan nilai variabel ke dalam string.
Contoh:
int age = 20;
print("Age: $age");
Hasil:
Age: 20
Kalau yang dimasukkan adalah ekspresi/perhitungan, gunakan ${}:
print("${5 * 3}");
hasil:
15
Jadi:
$number
untuk variabel sederhana.
Sedangkan:
${number * i}
untuk ekspresi.
16. Membuat tabel 1 sampai 9
Nah, ini bagian yang lebih penting.
Sebelumnya kita hanya membuat:
tabel 5
Sekarang diminta:
tabel 1
tabel 2
tabel 3
...
tabel 9
Kalau kita pikirkan, kita membutuhkan dua proses pengulangan.
Proses pertama:
1 → 9
Proses kedua:
1 → 10
Karena itu digunakan nested loop.
17. Apa itu nested loop?
Nested loop adalah:
Loop yang berada di dalam loop lain.
Contoh:
for (...) {
for (...) {
// kode
}
}
Bayangkan:
LOOP LUAR
↓
1
↓
LOOP DALAM
1 sampai 10
LOOP LUAR
↓
2
↓
LOOP DALAM
1 sampai 10
LOOP LUAR
↓
3
↓
LOOP DALAM
1 sampai 10
18. Kode tabel 1 sampai 9
void main() {
for (int number = 1; number <= 9; number++) {
print("Table of $number");
for (int i = 1; i <= 10; i++) {
print("$number x $i = ${number * i}");
}
print("");
}
}
19. Bagaimana nested loop tersebut bekerja?
Misalnya:
number = 1
Loop dalam berjalan:
1 × 1
1 × 2
1 × 3
...
1 × 10
Setelah selesai, loop dalam selesai.
Kemudian loop luar menaikkan:
number = 2
Loop dalam dimulai lagi:
2 × 1
2 × 2
2 × 3
...
2 × 10
Kemudian:
number = 3
dan seterusnya sampai:
number = 9
20. Gambaran nested loop
Lebih mudah membayangkannya seperti ini:
number = 1
├── i = 1
├── i = 2
├── i = 3
├── ...
└── i = 10
number = 2
├── i = 1
├── i = 2
├── ...
└── i = 10
number = 3
├── i = 1
├── ...
└── i = 10
...
number = 9
├── i = 1
├── ...
└── i = 10
Jadi loop dalam selesai sepenuhnya terlebih dahulu sebelum loop luar berpindah ke angka berikutnya.
21. Memberikan jarak antar tabel
Video juga menambahkan:
print("");
Tujuannya hanya untuk membuat satu baris kosong.
Misalnya tanpa:
print("");
hasilnya terlihat padat:
1 x 10 = 10
2 x 1 = 2
2 x 2 = 4
Dengan:
print("");
menjadi:
1 x 10 = 10
2 x 1 = 2
2 x 2 = 4
Jadi lebih mudah dibaca.
22. Kalkulator sederhana
Soal:
Buat program yang melakukan penjumlahan, pengurangan, perkalian, dan pembagian.
Misalnya kita punya:
int a = 10;
int b = 5;
Kita dapat melakukan:
Penjumlahan
print(a + b);
hasil:
15
Pengurangan
print(a - b);
hasil:
5
Perkalian
print(a * b);
hasil:
50
Pembagian
print(a / b);
hasil:
2
23. Program kalkulator versi sederhana
void main() {
int a = 10;
int b = 5;
print(a + b);
print(a - b);
print(a * b);
print(a / b);
}
Output:
15
5
50
2
Ini adalah versi paling sederhana seperti yang dijelaskan video.
24. Kalkulator dengan operator
Kalau ingin benar-benar seperti kalkulator, kita bisa menentukan operator:
String operator = '+';
Kemudian:
if (operator == '+') {
print(a + b);
} else if (operator == '-') {
print(a - b);
} else if (operator == '*') {
print(a * b);
} else if (operator == '/') {
print(a / b);
}
Di sini kembali digunakan konsep if-else if.
25. Soal terakhir: 1 sampai 100 tetapi tidak 56
Soal:
Print numbers from 1 to 100 but not 56.
Pertama kita membuat loop biasa:
for (int i = 1; i <= 100; i++) {
print(i);
}
Ini akan menghasilkan:
1
2
3
...
55
56
57
...
100
Tetapi kita tidak ingin 56.
26. Menggunakan continue
Kita bisa mengatakan:
if (i == 56) {
continue;
}
Program lengkap:
void main() {
for (int i = 1; i <= 100; i++) {
if (i == 56) {
continue;
}
print(i);
}
}
27. Apa yang terjadi ketika i = 56?
Normalnya:
i = 55
↓
print 55
i = 56
↓
if (i == 56)
↓
true
↓
continue
Karena ada continue, Dart melewati sisa kode pada iterasi tersebut.
Jadi:
print(i);
tidak dijalankan untuk 56.
Kemudian loop melanjutkan:
i = 57
dan:
print(57);
dijalankan.
Hasilnya:
...
54
55
57
58
...
100
Angka 56 hilang.
28. continue vs break
Jangan tertukar.
continue
if (i == 56) {
continue;
}
Artinya:
“Lewati 56, tetapi lanjutkan loop.”
Hasil:
1 ... 55
57 ... 100
break
Kalau:
if (i == 56) {
break;
}
Artinya:
“Begitu menemukan 56, hentikan loop seluruhnya.”
Hasil:
1 ... 55
Jadi:
| Keyword | Efek |
|---|---|
continue | Skip iterasi sekarang |
break | Stop seluruh loop |
29. Hubungan semua soal dengan materi Chapter 2
Sekarang kita bisa melihat bahwa semua latihan tersebut sebenarnya bukan soal yang berdiri sendiri.
Soal 1
a % 2 == 0
Melatih:
Modulo + if-else
Soal 2
vowels.contains(character.toLowerCase())
Melatih:
List + String + contains + if-else
Soal 3
if
else if
else
Melatih:
Multiple conditions
Soal 4
for
Melatih:
Loop
Soal 5
sum += i;
Melatih:
Loop + accumulator
Soal 6
number * i
Melatih:
Loop + multiplication
Soal 7
for {
for {
}
}
Melatih:
Nested loop
Soal 8
a + b
a - b
a * b
a / b
Melatih:
Arithmetic operators
Soal 9
continue;
Melatih:
Loop control
30. Hal yang paling penting untuk dipahami
Menurut saya, ada 5 konsep utama dari latihan ini yang sebaiknya benar-benar kamu kuasai.
① % untuk mencari sisa
number % 2
Berguna untuk:
- ganjil/genap
- kelipatan
- filtering angka
- kondisi berdasarkan sisa pembagian
② if-else untuk mengambil keputusan
Contoh:
if (number > 0) {
print("Positive");
} else if (number < 0) {
print("Negative");
} else {
print("Zero");
}
Artinya program bisa memilih tindakan berdasarkan kondisi.
③ Loop untuk pekerjaan berulang
Misalnya:
for (int i = 1; i <= 100; i++) {
print("Budi");
}
Daripada menulis print() 100 kali, kita cukup membuat satu loop.
④ Nested loop untuk pengulangan bertingkat
Contohnya tabel 1–9:
for (int number = 1; number <= 9; number++) {
for (int i = 1; i <= 10; i++) {
print("$number x $i = ${number * i}");
}
}
Loop luar memilih tabel mana, loop dalam memilih perkalian ke berapa.
⑤ continue untuk melewati iterasi tertentu
if (i == 56) {
continue;
}
Artinya:
“Jangan kerjakan sisa kode untuk angka ini. Langsung lanjut ke angka berikutnya.”
🧠 Cara berpikir saat mengerjakan soal pemrograman
Ini justru bagian yang paling penting.
Jangan melihat soal:
“Print 1 sampai 100 tetapi jangan 56.”
lalu langsung bingung dengan kode.
Ubah dulu menjadi bahasa manusia:
Mulai dari 1
↓
Selama belum lebih dari 100
↓
Kalau angka = 56
→ lewati
Kalau bukan 56
→ cetak
↓
Naik ke angka berikutnya
Baru terjemahkan ke Dart:
for (int i = 1; i <= 100; i++) {
if (i == 56) {
continue;
}
print(i);
}
Inilah inti belajar programming: bukan menghafal kode, tetapi belajar mengubah aturan/logika → langkah-langkah → kode.
Kalau kamu sudah bisa melakukan itu untuk 9 soal di atas, berarti kamu mulai memahami fondasi penting Dart dari Chapter 2.