Masukkan Password
12 Chapter 1 Practice Exercise | Dart Basics Exercise | Learn Dart Language | Dart Course
Ini adalah latihan penutup Chapter 1 Dart. Soal-soalnya sengaja mencakup hampir semua materi yang sudah kita pelajari: String, int, double, const, input user, operator aritmatika, konversi tipe data, manipulasi string, dan sebagainya.
Saya akan jelaskan maksud setiap soal, konsep yang diuji, cara berpikirnya, dan contoh solusi Dart-nya.
Catatan: transkrip memiliki beberapa salah transkripsi seperti “DT/DOT” yang maksudnya adalah Dart.
1. Gambaran besar latihan
Ada sekitar 12 latihan utama:
| No | Latihan | Materi yang diuji |
|---|---|---|
| 1 | Print nama | String, print() |
| 2 | Tampilkan tanda kutip | String & escape character |
| 3 | Constant int bernilai 7 | const |
| 4 | Simple interest | Variabel & operasi matematika |
| 5 | Kuadrat angka | Input & perkalian |
| 6 | Full name | Input & String |
| 7 | Quotient & remainder | ~/ dan % |
| 8 | Swap dua angka | Variabel & assignment |
| 9 | Hapus whitespace | .replaceAll() |
| 10 | String → integer | int.parse() |
| 11 | Split bill | Pembagian & input |
| 12 | Waktu perjalanan | Rumus matematika & konversi |
Mari kita bahas satu per satu.
2. Soal 1 — Print nama
Soalnya:
Buat program untuk mencetak nama kamu.
Ini adalah soal paling sederhana.
Contoh:
void main() {
print("Ahad");
}
Output:
Ahad
Kamu juga bisa menggunakan variabel:
void main() {
String name = "Ahad";
print(name);
}
Output:
Ahad
Apa yang dilatih?
Kita mengulang konsep:
String
print()
Ingat:
String name = "Ahad";
berarti kita menyimpan teks "Ahad" ke dalam variabel name.
3. Soal 2 — Menampilkan tanda kutip
Ini sedikit lebih menarik.
Soalnya meminta menampilkan:
Hello I am "Ahad"
Hello I am 'Aashi'
Perhatikan bahwa tanda kutip harus ikut muncul di output.
Misalnya kita ingin mencetak:
Hello I am "Ahad"
Kita bisa menggunakan single quote sebagai pembungkus String:
print('Hello I am "Ahad"');
Output:
Hello I am "Ahad"
Sebaliknya:
print("Hello I am 'Aashi'");
Output:
Hello I am 'Aashi'
Bagaimana kalau tanda kutipnya sama?
Misalnya ingin:
Hello I am "Ahad"
tetapi kita ingin menggunakan double quote sebagai pembungkus.
Kita bisa menggunakan escape character:
print("Hello I am \"Ahad\"");
Output:
Hello I am "Ahad"
\" berarti:
tampilkan karakter
"sebagai bagian dari String.
Begitu juga:
print('Hello I am \'Aashi\'');
Output:
Hello I am 'Aashi'
Ingat:
\" → "
\' → '
Ini melatih materi String dan escape character.
4. Soal 3 — Constant int bernilai 7
Soalnya:
Deklarasikan constant bertipe
intdengan nilai7.
Gunakan:
const int number = 7;
Contoh lengkap:
void main() {
const int number = 7;
print(number);
}
Output:
7
Kenapa menggunakan const?
const berarti nilai tersebut tidak boleh diubah setelah ditentukan.
Misalnya:
const int number = 7;
number = 10;
Ini akan menghasilkan error.
Karena kita mengatakan:
numberadalah nilai konstan.
Berbeda dengan:
int number = 7;
number = 10;
Ini boleh karena number bukan constant.
Cara mengingat
const → constant → tidak berubah
5. Soal 4 — Menghitung Simple Interest
Sekarang masuk ke matematika.
Soalnya meminta membuat program untuk menghitung simple interest.
Rumus:
Simple Interest = (P × T × R) / 100
Biasanya:
P= Principal → jumlah uang awal/modalT= Time → waktuR= Rate → suku bunga
Misalnya:
P = 1000
T = 2
R = 5
Maka:
SI = (1000 × 2 × 5) / 100
= 100
Program:
void main() {
double P = 1000;
double T = 2;
double R = 5;
double simpleInterest = (P * T * R) / 100;
print(simpleInterest);
}
Output:
100.0
Kenapa saya menggunakan double?
Karena bunga bisa menghasilkan angka desimal.
Misalnya:
P = 1500
T = 2
R = 4.5
Hasilnya bisa memiliki angka pecahan.
Jadi double lebih aman untuk nilai yang berpotensi desimal.
6. Soal 5 — Menghitung kuadrat dengan user input
Soalnya:
Minta user memasukkan sebuah angka, kemudian cetak kuadrat angka tersebut.
Misalnya user memasukkan:
5
Program harus menghasilkan:
25
Karena:
5² = 5 × 5 = 25
Program:
import 'dart:io';
void main() {
print("Enter a number:");
int number = int.parse(stdin.readLineSync()!);
int square = number * number;
print("Square = $square");
}
Jika user memasukkan:
5
output:
Square = 25
Mari kita bedah
Bagian ini:
stdin.readLineSync()
mengambil input dari user.
Input tersebut berupa String.
Misalnya user mengetik:
5
yang diterima program sebenarnya:
"5"
Karena kita ingin melakukan perkalian, kita ubah menjadi int:
int.parse(...)
Jadi:
int number = int.parse(stdin.readLineSync()!);
bisa dibaca:
Ambil input → ubah menjadi integer → simpan ke
number.
Kemudian:
int square = number * number;
7. Soal 6 — Membuat full name dari first name dan last name
Soalnya:
Minta user memasukkan first name dan last name, kemudian tampilkan full name.
Misalnya:
First name: Ahad
Last name: Khan
Output:
Full name: Ahad Khan
Program:
import 'dart:io';
void main() {
print("Enter your first name:");
String firstName = stdin.readLineSync()!;
print("Enter your last name:");
String lastName = stdin.readLineSync()!;
String fullName = "$firstName $lastName";
print("Full name: $fullName");
}
Perhatikan:
"$firstName $lastName"
Ini menggunakan String interpolation.
Dart akan mengganti:
$firstName
dengan isi variabel firstName.
Dan:
$lastName
dengan isi lastName.
8. Soal 7 — Quotient dan remainder
Ini sangat penting karena berkaitan dengan operator yang sudah kita pelajari.
Soalnya:
Cari quotient dan remainder dari dua angka.
Misalnya:
17 ÷ 5
Hasil pembagian sebenarnya:
3.4
Tetapi quotient biasanya yang dimaksud adalah hasil bagi bulat:
3
Sedangkan remainder adalah sisa:
2
Karena:
17 = (5 × 3) + 2
Operator Dart yang digunakan
Quotient
Gunakan:
~/
Contoh:
int quotient = 17 ~/ 5;
hasil:
3
Remainder
Gunakan:
%
Contoh:
int remainder = 17 % 5;
hasil:
2
Program lengkap
import 'dart:io';
void main() {
print("Enter first number:");
int firstNumber = int.parse(stdin.readLineSync()!);
print("Enter second number:");
int secondNumber = int.parse(stdin.readLineSync()!);
int quotient = firstNumber ~/ secondNumber;
int remainder = firstNumber % secondNumber;
print("Quotient = $quotient");
print("Remainder = $remainder");
}
Misalnya input:
17
5
Output:
Quotient = 3
Remainder = 2
9. Bedakan /, ~/, dan %
Ini wajib kamu ingat.
Misalnya:
17 / 5
hasil:
3.4
Sedangkan:
17 ~/ 5
hasil:
3
Dan:
17 % 5
hasil:
2
Jadi:
| Operator | Fungsi | 17 ... 5 |
|---|---|---|
/ | pembagian | 3.4 |
~/ | pembagian bulat | 3 |
% | sisa pembagian | 2 |
10. Soal 8 — Swap dua angka
Ini adalah salah satu soal paling penting.
Misalnya:
A = 10
B = 20
Kita ingin menjadi:
A = 20
B = 10
Ini disebut swap.
11. Kenapa tidak bisa langsung seperti ini?
Jangan melakukan:
a = b;
b = a;
Misalnya awal:
a = 10
b = 20
Setelah:
a = b;
menjadi:
a = 20
b = 20
Nilai 10 sudah hilang.
Kemudian:
b = a;
menjadi:
a = 20
b = 20
Gagal.
12. Gunakan variabel sementara
Kita membutuhkan tempat penyimpanan sementara.
int a = 10;
int b = 20;
int temp = a;
a = b;
b = temp;
Mari kita lihat:
Awalnya:
a = 10
b = 20
Kemudian:
temp = a;
menjadi:
temp = 10
a = 10
b = 20
Kemudian:
a = b;
menjadi:
a = 20
b = 20
temp = 10
Kemudian:
b = temp;
menjadi:
a = 20
b = 10
temp = 10
Berhasil.
Program lengkap dengan input
import 'dart:io';
void main() {
print("Enter first number:");
int a = int.parse(stdin.readLineSync()!);
print("Enter second number:");
int b = int.parse(stdin.readLineSync()!);
int temp = a;
a = b;
b = temp;
print("A = $a");
print("B = $b");
}
Misalnya:
10
20
Output:
A = 20
B = 10
13. Soal 9 — Menghapus semua whitespace
Soalnya:
Hapus semua white spaces dari sebuah String.
Misalnya:
"Hello World Dart"
menjadi:
"HelloWorldDart"
Kita sudah pernah membahas .replaceAll().
Kita bisa menggunakan:
String text = "Hello World Dart";
text = text.replaceAll(" ", "");
print(text);
Output:
HelloWorldDart
Dengan input user
import 'dart:io';
void main() {
print("Enter a string:");
String text = stdin.readLineSync()!;
String result = text.replaceAll(" ", "");
print(result);
}
Misalnya user memasukkan:
Hello World Dart
hasil:
HelloWorldDart
Catatan penting
replaceAll(" ", "") menghapus spasi biasa.
Kalau yang dimaksud benar-benar semua jenis whitespace seperti tab atau newline, pendekatan regex dapat digunakan. Tetapi untuk latihan dasar Chapter 1, replaceAll(" ", "") adalah konsep yang sedang dilatih.
14. Soal 10 — Mengubah String menjadi integer
Soalnya:
Convert String to integer.
Misalnya kita punya:
String text = "100";
text adalah:
String
bukan:
int
Untuk mengubahnya:
int number = int.parse(text);
Sekarang:
text → String
number → int
Contoh
void main() {
String text = "100";
int number = int.parse(text);
print(number);
}
Output:
100
15. Kenapa conversion diperlukan?
Misalnya:
String a = "10";
String b = "20";
Kalau kita melakukan:
print(a + b);
hasilnya:
1020
Karena String digabungkan.
Bukan:
30
Kalau ingin menjumlahkan:
int numberA = int.parse(a);
int numberB = int.parse(b);
print(numberA + numberB);
hasil:
30
Ini konsep yang sangat penting ketika bekerja dengan user input, karena input dari keyboard biasanya berupa String.
16. Soal 11 — Split bill
Ini contoh yang sangat realistis.
Misalnya kamu makan bersama teman.
Total bill:
100000
Jumlah orang:
4
Maka masing-masing membayar:
100000 / 4 = 25000
Rumus:
Split Amount = Total Bill / Number of People
Program
import 'dart:io';
void main() {
print("Enter total bill:");
double totalBill = double.parse(stdin.readLineSync()!);
print("Enter number of people:");
int numberOfPeople = int.parse(stdin.readLineSync()!);
double splitAmount = totalBill / numberOfPeople;
print("Each person should pay: $splitAmount");
}
Misalnya input:
100000
4
Output:
Each person should pay: 25000.0
Kenapa double?
Karena pembagian bisa menghasilkan pecahan.
Misalnya:
100000 / 3
hasilnya sekitar:
33333.333...
Jadi double cocok untuk hasil pembagian.
Kalau ingin dua angka di belakang koma:
print(splitAmount.toStringAsFixed(2));
Output:
33333.33
17. Soal 12 — Menghitung waktu perjalanan
Ini soal matematika yang cukup penting.
Diberikan:
Distance = 35 km
Speed = 50 km/hour
Ditanya:
Berapa waktu yang dibutuhkan dalam menit?
Rumus:
Time = Distance / Speed
Masukkan:
Time = 35 / 50
= 0.7 jam
Tetapi pertanyaannya meminta menit.
Karena:
1 jam = 60 menit
maka:
0.7 × 60 = 42 menit
Jadi jawabannya:
42 menit
18. Programnya
void main() {
double distance = 35;
double speed = 50;
double timeInHours = distance / speed;
double timeInMinutes = timeInHours * 60;
print("Time taken = $timeInMinutes minutes");
}
Output:
Time taken = 42.0 minutes
Kalau ingin output tanpa .0:
print("Time taken = ${timeInMinutes.toStringAsFixed(0)} minutes");
Output:
Time taken = 42 minutes
19. Perhatikan satuan!
Ini bagian yang sering dilupakan pemula.
Kita memiliki:
Distance = km
Speed = km/hour
Ketika:
km ÷ (km/hour)
hasilnya:
hour
Jadi:
35 km ÷ 50 km/hour
= 0.7 hour
Baru kemudian:
0.7 × 60
= 42 minutes
Jadi jangan langsung bingung dengan rumus.
Gunakan langkah:
Distance
↓
÷ Speed
↓
Time dalam jam
↓
× 60
↓
Time dalam menit
20. Kalau semua latihan digabungkan, apa yang sebenarnya sedang dilatih?
Ini yang paling penting.
Latihan ini bukan sekadar 12 soal terpisah.
Sebenarnya semuanya sedang menguji fondasi Chapter 1.
String
Contohnya:
String name = "Ahad";
Digunakan pada:
- nama
- full name
- menghapus whitespace
- String → integer
Variables
Contohnya:
int age = 20;
double price = 100.5;
Digunakan hampir di semua soal.
const
const int number = 7;
Input
stdin.readLineSync()
Digunakan untuk:
- square
- full name
- quotient/remainder
- swap
- split bill
Conversion
int.parse(...)
double.parse(...)
Digunakan karena input user awalnya berupa String.
Arithmetic operators
+
-
*
/
~/
%
Digunakan untuk:
- simple interest
- square
- quotient
- remainder
- split bill
- travel time
Assignment
=
+=
dan assignment lainnya digunakan ketika memproses nilai.
String methods
Contohnya:
replaceAll()
21. Cara belajar latihan ini yang paling bagus
Jangan langsung copy semua jawaban.
Lebih baik gunakan pola berikut.
Tahap 1 — Baca soal
Misalnya:
Buat program menghitung square dari sebuah angka.
Tanyakan:
Input-nya apa?
Jawab:
number
Prosesnya apa?
number × number
Output-nya apa?
square
Tahap 2 — Tulis algoritma sederhana
Misalnya:
1. Minta angka
2. Ubah input menjadi int
3. Kalikan angka dengan dirinya sendiri
4. Cetak hasil
Tahap 3 — Baru ubah menjadi Dart
import 'dart:io';
void main() {
print("Enter a number:");
int number = int.parse(stdin.readLineSync()!);
int square = number * number;
print(square);
}
Cara seperti ini jauh lebih bagus daripada menghafalkan kode.
22. Pola universal untuk soal input
Sebagian besar latihan Chapter 1 dengan user input bisa menggunakan pola:
import 'dart:io';
void main() {
print("Enter something:");
String input = stdin.readLineSync()!;
// proses
print("hasil");
}
Kalau input angka integer:
int number = int.parse(stdin.readLineSync()!);
Kalau input angka desimal:
double number = double.parse(stdin.readLineSync()!);
Jadi kamu bisa mengingat:
User mengetik
↓
readLineSync()
↓
String
↓
parse()
↓
int / double
23. Cheat sheet Chapter 1
Ini bagian yang bagus untuk kamu simpan sebagai catatan.
print("Hello");
String
String name = "Ahad";
Integer
int age = 20;
Double
double price = 10.5;
Boolean
bool isActive = true;
Constant
const int number = 7;
Input String
String name = stdin.readLineSync()!;
Input integer
int number = int.parse(stdin.readLineSync()!);
Input double
double price = double.parse(stdin.readLineSync()!);
String → int
int.parse("100");
int → String
100.toString();
Pembagian biasa
10 / 3
Pembagian bulat
10 ~/ 3
Remainder
10 % 3
Interpolation
print("Hello $name");
Hapus spasi
text.replaceAll(" ", "");
Kuadrat
number * number
Swap
int temp = a;
a = b;
b = temp;
24. Kesimpulan Chapter 1
Kalau kamu sudah memahami semua latihan ini, berarti fondasi Dart kamu sudah mencakup:
CHAPTER 1
│
┌──────────────┼──────────────┐
↓ ↓ ↓
Data Operator Input
Types │
│ │ ↓
int/double + - * / String
String ~/ % │
bool ↓
List/Map/Set parse()
null safety │
│ ↓
└──────────────→ Processing
│
↓
Output/print
Dan latihan ini juga menjadi jembatan menuju Chapter 2, karena setelah kamu menguasai data, operator, String, dan input, kamu bisa mulai menggabungkannya dengan:
if
if-else
switch
ternary
for
forEach
for-in
while
do-while
break
continue
exception handling
Jadi jangan hanya menghafalkan jawaban 12 soal di atas. Coba kerjakan ulang tanpa melihat solusi, terutama soal simple interest, quotient/remainder, swap, split bill, dan time calculation. Kalau kamu bisa menyelesaikannya dari nol, berarti konsep Chapter 1-mu sudah benar-benar mulai terbentuk.