Implementasi Seleksi dan Iterasi
Diperkenalkan| English | Makna |
|---|---|
| accumulator/əˈkjuːmjʊleɪtə/ | akumulator |
Maksimum awal nol menciptakan hasil
- Array berisi −8, −3 dan −11. Memulai max dari nol meninggalkan maksimum yang tidak pernah ada di array.
- Untuk array nonempty ini, mulai max dari a[0]. Membandingkan nilai berikutnya memperbarui −8 menjadi −3 dan mempertahankannya.
Pola perulangan: akumulasi
- Pola loop adalah resep yang dapat digunakan kembali untuk tugas umum. Pola akumulator membangun total berjalan atau produk sepanjang iterasi.
- Mulai
sum = 0, lalusum = sum + xdi dalam loop; total berjalan berubah; dapat menurun saat nilai negatif ditambahkan. Ide yang sama untuk running count (count++) atau running max.
Kondisional di dalam perulangan
- Letakkan
ifdi dalam loop agar hanya作用于符合条件的项目。"Hitung bilangan genap": loop, danif (x % 2 == 0) count++; - Loop ini mengunjungi setiap item;
ifmenentukan mana yang harus diproses. Menggabungkan seleksi dan perulangan adalah inti dari sebagian besar algoritma.
Mencari nilai maksimum
- Untuk menemukan nilai terbesar, simpan variabel
maxdan perbarui saat Anda melihat sesuatu yang lebih besar. Pastikan array tidak kosong, inisialisasimaxdengan nilainya pertama, lalu periksa sisanya. Angka "sangat kecil" yang tidak spesifik masih bisa melebihi semua input aktual. - Inisialisasi
if (x > max) { max = x; }di dalam loop. Setelah loop selesai,maxmenyimpan nilai terbesar yang ditemukan.
Pola akumulator
sum menumpuk across passes; ia dimulai dari 0.
Untuk membangun JUMLAH berjalan dalam perulangan, Anda harus menginisialisasi akumulator dengan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Jumlah dimulai dari 0; produk akan dimulai dari 1.
Untuk membangun PRODUK berjalan, inisialisasi akumulator dengan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Memulai produk dari 0 membuatnya selalu 0; mulailah dari 1.
Untuk menghitung angka genap selama melingkar, Anda menggunakan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
if memilih item mana yang dihitung oleh loop.
Menaruh inisialisasi akumulator di dalam perulangan akan meresetnya setiap kali iterasi.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Inisialisasi sebelum perulangan, bukan di dalamnya.
Untuk menghentikan perulangan segera setelah target ditemukan, Anda dapat menggunakan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
break keluar dari loop terdalam. Flag Boolean juga perlu digunakan dalam kondisi loop atau logika kontrol; hanya mengasignkannya tidak menghentikan eksekusi.
Keluar lebih awal dengan penanda atau break
- Terkadang Anda bisa berhenti lebih awal setelah menemukan apa yang dibutuhkan. Bendera
booleandapat mencatat "ditemukan" dan dicek oleh kondisi loop; penugasan bendera saja tidak akan menghentikan loop.breakakan menghentikan loop terdalam secara langsung. - "Apakah daftar mengandung nol?" — hentikan pada nol pertama. Keluar dini menghemat pekerjaan tetapi tetap pertahankan logika yang benar untuk kasus "tidak ditemukan".
Inisialisasi akumulator dengan benar, atau semua hasil akan salah. Jumlah dimulai dari 0, produk dari 1 (memulai produk dari 0 akan selalu menghasilkan 0), maksimum dari elemen pertama setelah pengecekan non-kosong. Koleksi kosong tidak memiliki maksimum kecuali kontrak mendefinisikan hasil terpisah. Dan perbarui di setiap iterasi yang sesuai — inisialisasi yang keliru di dalam loop akan meresetnya setiap kali perulangan dan merusak total.
What is the maximum of the nonempty array {−8, −3, −11}?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
−3 is the greatest actual element. Starting at 0 produces an invalid invented candidate.
Membaca a[0] adalah cara valid untuk menginisialisasi maksimum untuk array kosong.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Tidak ada elemen pertama dalam array kosong. Periksa input atau tentukan hasil tanpa-maksimum terpisah.
Berapa banyak bilangan genap dalam array int {-8, -3, -11}?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Hanya -8 memiliki sisa nol saat dibagi oleh 2; nilai negatif juga bisa menjadi genap.
Menghitung bilangan genap dalam perulangan atas array a:
int count = 0;for (int i = 0; i < a.length; i++) { if (a[i] % 2 == 0) count++; }- Perulangan mengunjungi setiap elemen;
ifhanya menghitung yang genap.
Terapkan penalaran ke kasus baru
- Array kosong tidak memiliki elemen pertama dan memerlukan kontrak atau pengecekan terpisah.
- Nilai awal harus sesuai dengan operasi: jumlah nol, hasil kali satu, maksimum kandidat awal yang valid.
Pola perulangan umum menggabungkan iterasi dan seleksi: akumulator (sum += x, hitungan, atau maksimum berjalan) dibangun melintasi beberapa kali, dengan if di dalamnya untuk memproses hanya item yang cocok. Inisialisasi akumulator dengan tepat (jumlah 0, perkalian 1, maksimum nilai pertama), dan pertimbangkan keluar lebih awal (break/penanda) sekali jawaban ditemukan.