20. Pola perulangan — Solusi PR
File solusi .go ada di
exercises/20/homework/solutions/.
Soal 1 — Faktorial
Soal. Kalikan 1 sampai 5.
Cara berpikir. Akumulasi, tetapi dengan
*=, bukan +=. Mulai hasil kali dari
1. Kalau mulai dari 0, jawabannya
0, karena apa pun dikali nol adalah nol.
Solusi yang dikerjakan.
package main
import "fmt"
func main() {
product := 1
for i := 1; i <= 5; i++ {
product *= i
}
fmt.Println(product)
}Output:
120
Soal 2 — Hitung kelipatan
Soal. Hitung angka dari 1 sampai 50 yang habis dibagi 7.
Cara berpikir. Pola hitung: pemeriksaannya
i%7 == 0, dan penghitungannya hits++.
Solusi yang dikerjakan.
package main
import "fmt"
func main() {
hits := 0
for i := 1; i <= 50; i++ {
if i%7 == 0 {
hits++
}
}
fmt.Println(hits)
}Output, menghitung 7, 14, 21, 28, 35, 42, dan 49:
7
Soal 3 — Kuadrat besar pertama
Soal. Temukan angka pertama yang kuadratnya di atas 200.
Cara berpikir. Pola cari. first mulai
dari -1, nilai yang tidak mungkin menjadi jawaban, dan
perulangan berhenti pada kecocokan pertama.
Solusi yang dikerjakan.
package main
import "fmt"
func main() {
first := -1
for i := 1; i <= 100; i++ {
if i*i > 200 {
first = i
break
}
}
fmt.Println(first)
}14 × 14 adalah 196, dan 15 × 15 adalah 225, jadi outputnya:
15
Kesalahan umum.
- Lupa
break, sehingga perulangan terus berjalan danfirstberakhir pada kecocokan terakhir, bukan pertama. - Mendeklarasikan
firstdi dalam perulangan. Variabelnya lalu tidak ada setelah perulangan, dan Go berhenti denganundefined: first.
Tantangan — Statistik rentang dalam satu jalan
Soal. Total, jumlah angka genap, dan tanda habis dibagi 9 dari satu perulangan.
Cara berpikir. Tiga variabel sebelum perulangan,
satu baris atau satu if untuk masing-masing di dalamnya,
dan tiga cetakan sesudahnya.
Solusi yang dikerjakan.
package main
import "fmt"
func main() {
total := 0
evens := 0
hasNine := false
for i := 1; i <= 20; i++ {
total += i
if i%2 == 0 {
evens++
}
if i%9 == 0 {
hasNine = true
}
}
fmt.Println("total", total)
fmt.Println("evens", evens)
fmt.Println("divisible by 9", hasNine)
}Output, dengan tanda berubah di 9 dan tetap true sampai
18:
total 210
evens 10
divisible by 9 true
Kesalahan umum.
- Menulis tiga perulangan terpisah atas rentang yang sama. Satu kali jalan mengerjakan ketiganya, itulah gunanya mengenali pola.
- Memakai
else ifdi antara kedua pemeriksaan. Sebuah angka bisa genap dan habis dibagi 9 sekaligus, seperti 18, jadi keduanya harus berupa duaifterpisah.
Selesai?
Bab-bab Bagian 4 sudah selesai. Kamu bisa membuat cabang dengan
if dan switch, bernalar tentang benar dan
salah dengan &&, ||, dan
!, mengulang dengan setiap bentuk for,
menyusun perulangan bersarang untuk kisi, dan memilih pola perulangan
yang tepat. Bagian 4 punya dua mini-proyek untuk
menyatukannya: Game Tebak
Angka dan Batu-Gunting-Kertas.