20. Pola perulangan — Solusi PR
File solusi .lua ada di
exercises/20/homework/solutions/.
Soal 1 — Faktorial
Soal. Kalikan bilangan 1 sampai 5 secara berurutan.
Cara mikirnya. Akumulasi, tapi pakai *
bukan +. Mulai nilai produk dari 1 — kalau
mulai dari 0, hasilnya pasti 0, karena apapun
dikali nol hasilnya nol.
Solusi.
local product = 1
for i = 1, 5 do
product = product * i
end
print(product) -- 120Soal 2 — Hitung kelipatan
Soal. Hitung bilangan dari 1 sampai 50 yang habis dibagi 7.
Solusi.
local hits = 0
for i = 1, 50 do
if i % 7 == 0 then
hits = hits + 1
end
end
print(hits) -- 7 (7, 14, 21, 28, 35, 42, 49)Soal 3 — Kuadrat pertama yang besar
Soal. Temukan bilangan pertama yang kuadratnya lebih dari 200.
Solusi.
local first
for i = 1, 100 do
if i * i > 200 then
first = i
break
end
end
print(first) -- 15 (14×14 = 196, 15×15 = 225)Kesalahan umum.
- Lupa menulis
break, sehingga perulangan terus berjalan danfirstmalah berisi hasil terakhir yang cocok, bukan yang pertama.
Tantangan — Statistik rentang dalam satu kali jalan
Soal. Total, jumlah bilangan genap, dan tanda habis-dibagi-9 dari satu perulangan.
Solusi.
local total = 0
local evens = 0
local has_nine = false
for i = 1, 20 do
total = total + i
if i % 2 == 0 then evens = evens + 1 end
if i % 9 == 0 then has_nine = true end
end
print("total", total) -- 210
print("evens", evens) -- 10
print("divisible by 9", has_nine) -- true (9 and 18)Kesalahan umum.
- Menulis tiga perulangan terpisah untuk rentang yang sama. Satu kali jalan sudah cukup untuk ketiga tugas sekaligus — makanya kamu perlu belajar mengenali pola-pola ini.
Selesai?
Begitulah akhir dari Bagian 4. Sekarang kamu sudah bisa bercabang
dengan if, bernalar tentang nilai kebenaran menggunakan
and/or/not, mengulang dengan
berbagai jenis perulangan, menyarangkan perulangan untuk grid, dan
memilih pola perulangan yang tepat sekilas pandang. Bagian 4 punya
dua mini-proyek untuk merangkum semuanya: Number
Guessing Game dan Rock-Paper-Scissors.