19. Perulangan bersarang — Solusi PR
File-file solusi .lua ada di
exercises/19/homework/solutions/.
Soal 1 — Persegi panjang dari tanda pagar
Soal. Blok # selebar 5 dan setinggi
3.
Cara berpikirnya. Perulangan luar = baris (3).
Perulangan dalam = kolom (5): bangun satu baris berisi lima
#, lalu cetak.
Solusi.
for row = 1, 3 do
local line = ""
for col = 1, 5 do
line = line .. "#"
end
print(line)
endSoal 2 — Pasangan koordinat
Soal. Cetak setiap (x, y) untuk x dan y
dari 1 sampai 3.
Solusi.
for x = 1, 3 do
for y = 1, 3 do
print("(" .. x .. ", " .. y .. ")")
end
endKeluaran: (1, 1), (1, 2),
(1, 3), (2, 1), ... — sembilan baris.
Kesalahan umum.
- Memakai
xuntuk kedua perulangan. Setiap perulangan butuh variabelnya sendiri.
Soal 3 — Tabel perkalian
Soal. Grid perkalian 5×5.
Solusi.
for row = 1, 5 do
local line = ""
for col = 1, 5 do
line = line .. (row * col) .. "\t"
end
print(line)
endKeluaran:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
Tantangan — Segitiga siku-siku
Soal. Segitiga 6 baris di mana baris
ke-n punya n bintang, lalu dibalik.
Solusi.
-- growing
for row = 1, 6 do
local line = ""
for star = 1, row do
line = line .. "*"
end
print(line)
end
-- shrinking
for row = 6, 1, -1 do
local line = ""
for star = 1, row do
line = line .. "*"
end
print(line)
endKeduanya hanya berbeda di arah perulangan luar: 1, 6
naik, 6, 1, -1 turun. Perulangan dalam identik.
Kesalahan umum.
- Memakai rentang dalam
1, 6(tetap) alih-alih1, row. Rentang dalam yang tetap menghasilkan persegi panjang; segitiga terbentuk karena jumlah dalam dikaitkan dengan baris saat ini.
Selesai?
Kamu sudah bisa membuat grid dan bentuk dari perulangan di dalam perulangan. Bab terakhir Bagian 4 — Pola perulangan — menamai tugas-tugas yang paling sering dikerjakan perulangan: menjumlahkan, menghitung, mencari, dan menandai.