Mengumpulkan nilai satu per satu
Satu wadah yang isinya bertambah setiap putaran, dan kenapa nilai awalnya menentukan segalanya.
Sebaiknya baca lebih dulu: Menukar isi dua wadah.
Satu wadah yang terus ditambahi
Wadah yang isinya terus ditambahi seperti itu disebut akumulator. Bentuknya selalu sama: satu variabel diberi nilai awal, lalu di dalam loop ia diisi ulang dengan dirinya sendiri ditambah sesuatu.
SET total = 0 FOR EACH harga IN daftar SET total = total + harga END OUTPUT total
IngatPada SET total = total + harga, sisi kanan dihitung lebih dulu memakai nilai lama, baru hasilnya disimpan. Bukan dua hal yang terjadi bersamaan.
Melihatnya bertambah langkah demi langkah
SET total = 0 FOR EACH harga IN daftar SET total = total + harga END OUTPUT total
total dimulai dari 0. Nilai awal ini bukan formalitas; kita akan lihat akibatnya kalau salah.
Nilai awal yang salah
Sekarang bagian yang paling sering menjadi bug. Nilai awal akumulator harus cocok dengan operasinya. Untuk penjumlahan, nilai awal yang benar adalah nol, sebab menambahkan nol tidak mengubah apa pun. Untuk perkalian, nilai awal nol justru menghancurkan seluruh hasil.
Perkalian dimulai dari nol
SET hasil = 0 FOR EACH angka IN daftar SET hasil = hasil * angka END
Perkalian dimulai dari satu
SET hasil = 1 FOR EACH angka IN daftar SET hasil = hasil * angka END
Nol dikali apa pun tetap nol. Kolom kiri akan mengeluarkan nol untuk daftar apa pun, termasuk daftar berisi angka besar. Nilai awal yang benar adalah nilai yang tidak mengubah hasil operasinya: nol untuk tambah, satu untuk kali.
Periksa pemahaman
Daftar berisi 4 dan 6. Kode berbunyi SET total = 10, lalu loop menambahkan setiap elemen ke total. Apa yang dikeluarkan?
Ringkasan
- Akumulator adalah satu variabel yang dibaca dan ditulis pada baris yang sama di dalam loop.
- Sisi kanan dihitung dengan nilai lama, lalu hasilnya menimpa nilai itu.
- Nilai awal wajib netral terhadap operasinya: nol untuk penjumlahan, satu untuk perkalian.
- Akumulator yang tidak direset akan membawa sisa perhitungan sebelumnya, dan hasilnya tetap tampak masuk akal.