Masukkan Password
13 Exercise Solution Chapter 1 | Dart Basics Exercise Solution | Learn Dart Language | Dart Course
Transcript ini sebenarnya adalah pembahasan lengkap latihan Chapter 1 Dart. Ada beberapa kesalahan transkripsi seperti βDOTβ yang sebenarnya Dart, dan beberapa istilah yang terdengar seperti βcodeβ padahal maksudnya quote (' atau ").
Saya akan jelaskan satu per satu dari soal 1β12, bukan hanya menerjemahkan transcript, tetapi juga menjelaskan kenapa kodenya seperti itu, cara kerjanya, dan kesalahan yang sering dilakukan pemula.
π§© Chapter 1 β Practice Exercise Dart
Latihan ini bagus karena hampir semua materi Chapter 1 yang sudah dipelajari sebelumnya dipakai kembali:
print()Stringintdoubleconst- input dengan
stdin int.parse()- operator matematika
/,~/,%- String interpolation
- method String
runtimeType- List/variabel
- dan lain-lain.
Kita bahas mulai dari soal pertama.
1. Print nama
Soal
Write a program to print your name in Dart.
Ini adalah soal paling sederhana.
void main() {
print("Ahad");
}
Output:
Ahad
Penjelasan
print("Ahad");
print() digunakan untuk menampilkan sesuatu ke terminal.
"Ahad" adalah sebuah String.
Jadi secara sederhana:
print() = tampilkan sesuatu ke layar
Misalnya:
print("Hello");
print("I am Ahad");
print(25);
Output:
Hello
I am Ahad
25
Perhatikan bahwa print() tidak hanya bisa mencetak String. Kita juga bisa mencetak angka, Boolean, hasil perhitungan, dan sebagainya.
2. Menampilkan single quote dan double quote
Ini bagian yang cukup penting untuk memahami String dan quote.
Misalnya kita ingin menghasilkan:
Hello I am "Ahad"
Kita bisa menulis:
print('Hello I am "Ahad"');
Perhatikan:
String dibungkus dengan:
' ... '
sedangkan quote yang ingin ditampilkan adalah:
"Ahad"
Jadi double quote berada di dalam single quote.
Kenapa bisa?
Karena Dart tahu bahwa String dimulai dari:
'
dan berakhir pada:
'
Sehingga:
'Hello I am "Ahad"'
dibaca sebagai satu String.
Sebaliknya juga bisa
Kalau kita ingin menghasilkan:
Hello I am 'Ahad'
kita bisa menggunakan:
print("Hello I am 'Ahad'");
Sekarang String dibungkus dengan double quote:
" ... "
dan single quote berada di dalamnya:
'Ahad'
π₯ Aturan sederhananya
Kalau quote yang ingin ditampilkan adalah double quote:
print('Hello I am "Ahad"');
Kalau quote yang ingin ditampilkan adalah single quote:
print("Hello I am 'Ahad'");
Jadi kita bisa mengingat:
Pembungkus String sebaiknya berbeda dengan quote yang ingin ditampilkan di dalamnya.
Bagaimana kalau quote-nya sama?
Misalnya kita ingin:
Hello I am 'Ahad'
tetapi kita menulis:
print('Hello I am 'Ahad'');
Ini akan error.
Kenapa?
Dart akan menganggap:
'Hello I am '
adalah String pertama.
Kemudian:
Ahad
berada di luar String.
Lalu quote berikutnya membuat struktur semakin kacau.
Solusinya: escape character
Kita bisa menggunakan backslash:
print('Hello I am \'Ahad\'');
Output:
Hello I am 'Ahad'
Perhatikan:
\'
Backslash \ memberi tahu Dart:
“Quote ini jangan dianggap sebagai akhir String. Saya ingin quote ini menjadi karakter biasa.”
Contoh lainnya
print("He said \"Hello\"");
Output:
He said "Hello"
Karena:
\"
berarti double quote dianggap sebagai karakter biasa.
π§ Cara mengingat
Ada tiga cara penting:
1. Double quote di dalam single quote
'Hello "Ahad"'
2. Single quote di dalam double quote
"Hello 'Ahad'"
3. Quote yang sama β gunakan backslash
'Hello \'Ahad\''
3. Membuat constant integer
Soal:
Declare a constant type of integer and set its value to 7.
Kita bisa menulis:
const int a = 7;
Mari kita pecah:
const int a = 7;
| Bagian | Arti |
|---|---|
const | nilai konstan |
int | tipe data integer |
a | nama variabel |
= | memberikan nilai |
7 | nilai |
Jadi:
const int a = 7;
berarti:
Buat variabel bernama
a, bertipeint, dengan nilai konstan7.
Apa bedanya dengan int biasa?
Normal:
int a = 7;
a = 10;
Ini boleh.
Tetapi:
const int a = 7;
a = 10;
akan error.
Karena const berarti nilainya tidak boleh diubah.
Analogi
Bayangkan:
int age = 20;
seperti menulis angka di papan tulis.
Kita masih boleh menghapusnya:
20 β 21
Sedangkan:
const int birthYear = 2000;
seperti angka yang sudah dicetak permanen.
Tidak boleh diganti.
4. Menghitung Simple Interest
Soal:
Write a program that finds simple interest.
Rumus:
$$ SI = \frac{P \times T \times R}{100} $$Keterangan:
| Simbol | Arti |
|---|---|
P | Principal/modal awal |
T | Time/waktu |
R | Rate/suku bunga |
SI | Simple Interest |
Contoh:
int p = 50;
int t = 30;
int r = 60;
double simpleInterest = (p * t * r) / 100;
print(simpleInterest);
Hasil:
900.0
Mengapa 900.0?
Karena kita menggunakan:
/
Dalam Dart, pembagian / menghasilkan double.
Contoh:
print(10 / 2);
hasilnya:
5.0
Walaupun hasil matematikanya adalah 5, Dart memperlakukannya sebagai double.
Lebih baik menggunakan double
Untuk perhitungan finansial atau bunga, biasanya lebih masuk akal menggunakan double:
double p = 50;
double t = 30;
double r = 60;
double simpleInterest = (p * t * r) / 100;
print(simpleInterest);
5. Mencari kuadrat menggunakan input user
Soal:
Write a program to print the square of a number using user input.
Misalnya user memasukkan:
8
Kita ingin:
64
karena:
$$ 8^2 = 8 \times 8 = 64 $$Langkah 1 β import dart:io
Untuk menerima input terminal:
import 'dart:io';
Langkah 2 β meminta input
print("Enter a number:");
Kemudian:
stdin.readLineSync()
Misalnya user mengetik:
8
Yang diterima program sebenarnya adalah:
"8"
bukan:
8
Ini sangat penting.
Input dari terminal awalnya berupa String.
Langkah 3 β ubah String menjadi int
Gunakan:
int.parse()
Contohnya:
int number = int.parse(stdin.readLineSync()!);
Ini kelihatannya rumit, tetapi kita pecah:
stdin.readLineSync()
β mengambil input.
Hasilnya:
String?
Kemudian:
!
β memberi tahu Dart bahwa kita menganggap hasilnya tidak null.
Kemudian:
int.parse(...)
β mengubah String menjadi integer.
Langkah 4 β hitung square
Cara pertama:
int square = number * number;
Kalau:
number = 8
maka:
8 Γ 8 = 64
Program lengkap
import 'dart:io';
void main() {
print("Enter a number:");
int number = int.parse(stdin.readLineSync()!);
int square = number * number;
print("Square: $square");
}
Input:
8
Output:
Square: 64
Cara kedua: menggunakan pow()
Dart juga memiliki fungsi pow() dari library dart:math.
import 'dart:io';
import 'dart:math';
void main() {
print("Enter a number:");
int number = int.parse(stdin.readLineSync()!);
num square = pow(number, 2);
print("Square: $square");
}
pow() berarti power/pangkat.
pow(8, 2)
berarti:
$$ 8^2 $$hasilnya:
64
Mana yang lebih mudah?
Untuk square sederhana:
number * number
lebih sederhana.
Untuk pangkat yang lebih umum:
pow(number, exponent)
lebih fleksibel.
Contoh:
pow(2, 3)
berarti:
$$ 2^3 = 8 $$6. Menggabungkan first name dan last name
Soal:
Print full name from first name and last name using user input.
Misalnya user memasukkan:
Ahad
dan:
Hashi
kita ingin:
Ahad Hashi
Program
import 'dart:io';
void main() {
print("Enter first name:");
String firstName = stdin.readLineSync()!;
print("Enter last name:");
String lastName = stdin.readLineSync()!;
print("$firstName $lastName");
}
Perhatikan interpolation
Bagian:
print("$firstName $lastName");
adalah String interpolation.
Dart mengganti:
$firstName
dengan nilai firstName.
Dan:
$lastName
dengan nilai lastName.
Kalau:
firstName = "Ahad";
lastName = "Hashi";
maka:
"$firstName $lastName"
menjadi:
Ahad Hashi
7. Mencari quotient dan remainder
Ini salah satu soal penting karena berhubungan dengan:
/
~/
%
Misalnya:
int a = 155;
int b = 10;
Kita ingin mencari:
- quotient
- remainder
Remainder
Gunakan:
%
Contoh:
int remainder = a % b;
Maka:
155 % 10 = 5
Jadi:
remainder = 5
Quotient
Gunakan:
~/
Contoh:
int quotient = a ~/ b;
Maka:
155 ~/ 10 = 15
Jadi:
quotient = 15
Program lengkap
void main() {
int a = 155;
int b = 10;
int quotient = a ~/ b;
int remainder = a % b;
print("Quotient: $quotient");
print("Remainder: $remainder");
}
Output:
Quotient: 15
Remainder: 5
Jangan tertukar!
Misalnya:
155 / 10
hasil:
15.5
Sedangkan:
155 ~/ 10
hasil:
15
Dan:
155 % 10
hasil:
5
Cara mengingat:
| Operator | Fungsi | Contoh |
|---|---|---|
/ | pembagian biasa | 155 / 10 = 15.5 |
~/ | quotient/integer division | 155 ~/ 10 = 15 |
% | sisa pembagian | 155 % 10 = 5 |
8. Swap dua angka
Soal:
Write a program to swap two numbers.
Misalnya awalnya:
A = 10
B = 155
Setelah swap:
A = 155
B = 10
Artinya nilai A dan B ditukar.
β Kesalahan pemula
Jangan melakukan:
a = b;
b = a;
Misalnya awal:
a = 10
b = 20
Setelah:
a = b;
menjadi:
a = 20
b = 20
Nilai 10 sudah hilang.
Metode 1 β menggunakan variabel sementara
Kita membutuhkan tempat sementara:
int temp = a;
Misalnya:
a = 10
b = 20
temp = 10
Kemudian:
a = b;
menjadi:
a = 20
b = 20
temp = 10
Kemudian:
b = temp;
menjadi:
a = 20
b = 10
Berhasil.
Program lengkap
void main() {
int a = 10;
int b = 20;
int temp = a;
a = b;
b = temp;
print("A: $a");
print("B: $b");
}
Output:
A: 20
B: 10
Metode 2 β multiple assignment
Dart juga memungkinkan kita melakukan assignment beberapa variabel dalam satu statement.
a, b = b, a;
Misalnya:
int a = 10;
int b = 20;
a, b = b, a;
print(a);
print(b);
Hasil:
20
10
Ini jauh lebih ringkas.
Bisa juga deklarasi beberapa variabel
Misalnya:
int a = 10, b = 20;
Artinya:
int a = 10;
int b = 20;
Jadi beberapa variabel bisa ditulis dalam satu statement.
π§ Cara memahami swap
Anggap:
A = π₯
B = π¦
Swap berarti:
A = π¦
B = π₯
Dengan temp:
temp = π₯
A = π¦
B = temp π₯
9. Menghapus whitespace dari String
Soal:
Remove all white spaces from a String.
Misalnya:
String text = " How are you ";
Ada spasi di depan dan belakang.
Kita bisa menggunakan:
trim()
String result = text.trim();
Hasil:
How are you
Apa yang dilakukan trim()?
trim() menghapus whitespace di:
- awal String
- akhir String
Tetapi tidak menghapus spasi di tengah.
Contoh:
String text = " How are you ";
print(text.trim());
Output:
How are you
Spasi antara:
How are you
tetap ada.
Ini penting: transcript sedikit menyesatkan
Soalnya mengatakan:
remove all white spaces
Tetapi solusi transcript menggunakan:
trim()
Itu sebenarnya tidak menghapus semua whitespace.
Misalnya:
String text = "How are you";
Jika:
print(text.trim());
hasilnya tetap:
How are you
Karena spasi di tengah tidak dihapus.
Kalau benar-benar ingin menghapus spasi
Gunakan:
text.replaceAll(" ", "");
Contoh:
String text = "How are you";
String result = text.replaceAll(" ", "");
print(result);
Output:
Howareyou
Perbandingan
| Method | Hasil |
|---|---|
trim() | menghapus whitespace di awal & akhir |
replaceAll(" ", "") | menghapus karakter spasi biasa di seluruh String |
Jadi:
" How are you ".trim()
β
How are you
Sedangkan:
" How are you ".replaceAll(" ", "")
β
Howareyou
.length dan whitespace
Misalnya:
String text = " How are you ";
Whitespace juga dihitung oleh:
text.length
Karena spasi adalah bagian dari String.
Jadi saat menghitung panjang String:
Spasi tetap dianggap sebagai karakter.
10. Mengubah String menjadi Integer
Soal:
Convert String into integer.
Misalnya:
String number = "10";
Perhatikan:
"10"
adalah String, bukan integer.
Kalau:
10
itu adalah integer.
Menggunakan int.parse()
int result = int.parse(number);
Sekarang:
number
yang tadinya:
String
sudah dikonversi menjadi:
int
Contoh lengkap
void main() {
String number = "10";
int result = int.parse(number);
print(result);
print(result.runtimeType);
}
Output:
10
int
Kenapa conversion diperlukan?
Misalnya:
String a = "10";
String b = "20";
Kalau:
print(a + b);
hasilnya:
1020
Karena String digabungkan.
Bukan:
30
Kalau ingin matematika:
int a = int.parse("10");
int b = int.parse("20");
print(a + b);
hasil:
30
β οΈ Hati-hati dengan int.parse()
Kalau:
int number = int.parse("hello");
akan error karena "hello" bukan angka yang valid.
Untuk input yang mungkin salah, kita bisa menggunakan:
int? number = int.tryParse("hello");
hasilnya:
null
Ini lebih aman untuk input user.
11. Membagi bill dengan teman
Soal:
Calculate split amount of bill.
Misalnya:
Total bill = 900
Friends = 3
Kita ingin:
900 / 3 = 300
Program:
double totalBill = 900;
int numberOfFriends = 3;
double splitBill = totalBill / numberOfFriends;
print(splitBill);
Output:
300.0
Mengapa menggunakan /?
Karena kita ingin pembagian biasa:
900 / 3
hasil:
300.0
Kalau hasilnya tidak bulat?
Misalnya:
double totalBill = 1000;
int friends = 3;
double splitBill = totalBill / friends;
print(splitBill);
hasilnya kira-kira:
333.3333333333333
Untuk tampilan uang, biasanya kita tidak ingin menampilkan terlalu banyak angka desimal.
Kita bisa menggunakan:
print(splitBill.toStringAsFixed(2));
Output:
333.33
β οΈ Catatan dunia nyata
Program sederhana ini mengasumsikan bill dibagi rata.
Kalau:
Total = 900
3 orang
masing-masing:
300
Tetapi dalam aplikasi nyata bisa ada:
- pajak
- service charge
- tip
- pembagian berdasarkan makanan masing-masing
- pembulatan pembayaran
Untuk latihan Chapter 1, rumus sederhananya cukup:
split bill = total bill / number of people
12. Menghitung waktu perjalanan dalam menit
Ini soal terakhir.
Diketahui:
Distance = 35 km
Speed = 50 km/hour
Ditanya:
Berapa menit waktu yang dibutuhkan?
Langkah 1 β gunakan rumus
Rumus waktu:
$$ Time = \frac{Distance}{Speed} $$Maka:
$$ Time = \frac{35}{50} $$hasil:
$$ 0.7 \text{ jam} $$Jadi:
0.7 hour
Tapi soal meminta menit
Kita tahu:
1 jam = 60 menit
Maka:
$$ 0.7 \times 60 = 42 $$Jadi:
42 menit
Program Dart
double distance = 35;
double speed = 50;
double timeInHours = distance / speed;
double timeInMinutes = timeInHours * 60;
print(timeInMinutes);
Output:
42.0
Kalau ingin menampilkan tanpa .0:
print(timeInMinutes.toStringAsFixed(0));
Output:
42
π§ Kenapa satuannya penting?
Ini konsep yang sangat penting dalam pemrograman dan matematika.
Kita punya:
35 km
50 km/hour
Kalau:
km Γ· (km/hour)
maka hasilnya:
hour
Jadi:
35 km / 50 km/hour = 0.7 hour
Baru kemudian:
hour Γ 60 = minute
π₯ Kesalahan yang sering terjadi
Jangan langsung menganggap:
35 / 50
sebagai menit.
Hasilnya adalah:
0.7
dan satuannya jam, bukan menit.
Harus dikonversi:
(35 / 50) * 60
π Ringkasan 12 Soal
| No | Materi | Konsep utama |
|---|---|---|
| 1 | Print nama | print() |
| 2 | Quote dalam String | '...', "...", \ |
| 3 | Constant integer | const int |
| 4 | Simple interest | operasi matematika |
| 5 | Square + input | stdin, int.parse(), pow() |
| 6 | Full name | String interpolation |
| 7 | Quotient & remainder | ~/, % |
| 8 | Swap | temporary variable / multiple assignment |
| 9 | Whitespace | trim(), replaceAll() |
| 10 | String β int | int.parse() |
| 11 | Split bill | / |
| 12 | Travel time | pembagian + konversi unit |
π§ Cheat Sheet yang Wajib Diingat
Input
import 'dart:io';
String name = stdin.readLineSync()!;
Input angka:
int number = int.parse(stdin.readLineSync()!);
Input desimal:
double number = double.parse(stdin.readLineSync()!);
String
String name = "Ahad";
Interpolation:
print("Hello $name");
Quote:
'Hello "Ahad"'
"Hello 'Ahad'"
Escape:
'Hello \'Ahad\''
Konversi
int.parse("10")
double.parse("10.5")
Sebaliknya:
10.toString()
Pembagian
10 / 3
β 3.333...
10 ~/ 3
β 3
10 % 3
β 1
Ingat:
/= hasil pembagian~/= quotient%= remainder
String methods
text.trim()
β hapus whitespace awal/akhir.
text.replaceAll(" ", "")
β hapus spasi biasa di seluruh String.
text.length
β jumlah karakter, termasuk spasi.
Constant
const int age = 20;
Nilainya tidak bisa diubah.
π― Hal terpenting dari Chapter 1
Kalau saya sederhanakan seluruh Chapter 1 menjadi sebuah alur, kira-kira seperti ini:
USER INPUT
β
stdin.readLineSync()
β
String
β
parse()
β
int / double
β
OPERASI
β
+ - * / ~/ %
β
HASIL
β
print()
Contohnya:
int a = int.parse(stdin.readLineSync()!);
int b = int.parse(stdin.readLineSync()!);
int result = a + b;
print(result);
Artinya:
User memasukkan data
β
Data masuk sebagai String
β
String dikonversi menjadi int
β
Dilakukan operasi matematika
β
Hasil ditampilkan
Kalau kamu sudah memahami alur ini, berarti fondasi Dart dasar kamu sudah cukup kuat untuk masuk ke Chapter 2.
π¨ Beberapa koreksi penting dari transcript
Ada beberapa hal dalam transcript yang sebaiknya jangan kamu hafalkan mentah-mentah:
1. βDOT programmingβ
Yang dimaksud adalah Dart programming.
2. trim() bukan menghapus semua whitespace
" Hello World ".trim()
hanya menghapus whitespace di ujung.
Kalau ingin menghilangkan spasi biasa di seluruh String:
" Hello World ".replaceAll(" ", "")
hasil:
HelloWorld
3. int.parse() hanya cocok untuk input angka yang valid
int.parse("123"); // OK
tetapi:
int.parse("abc"); // error
Untuk input yang tidak pasti:
int.tryParse("abc"); // null
4. pow() berasal dari dart:math
Jadi perlu:
import 'dart:math';
5. / dan ~/ berbeda
Ini sangat penting untuk Dart:
10 / 3
β 3.333...
sedangkan:
10 ~/ 3
β 3
π Kesimpulan Chapter 1
Chapter 1 sebenarnya sedang mengajarkan kamu cara berbicara dengan komputer menggunakan Dart.
Kamu sudah belajar:
Data β Input β Proses β Output
Contoh:
Input
β
10
β
Konversi String β int
β
10 Γ 10
β
100
β
print()
Dan 12 latihan di transcript tadi sengaja dibuat untuk menggabungkan semua fondasi tersebut.
Setelah ini, materi Chapter 2 akan terasa jauh lebih menarik karena kita mulai membuat program yang bisa mengambil keputusan dan mengulang pekerjaan, menggunakan if, switch, for, while, do-while, break, continue, dan exception handling.