Set ini merangkumi kemahiran dalam pengulangan dan tatasusunan: menjejak gelung terkawal bilangan dan terkawal syarat, membaiki kesalahan off-by-one, dan menggunakan tatasusunan bersama gelung. Cuba setiap soalan di atas kertas dan tulis jadual jejak sebelum membuka jawapan.
Soalan 7 hingga 11 menggunakan tatasusunan Temp[1:6], yang menyimpan bacaan 28, 31, 27, 33, 30, 33. Catat jawapan salah anda dalam log kesilapan.
Pemanasan: gelung terkawal bilangan
S1. Apakah output?
FOR i ← 1 TO 4
OUTPUT i * i
NEXT i
Lihat jawapan
i mengambil 1, 2, 3, 4. Outputnya ialah 1, 4, 9, 16.
S2. Berapa kali gelung berjalan, dan apakah Sum pada akhirnya?
Sum ← 0
FOR i ← 2 TO 10 STEP 2
Sum ← Sum + i
NEXT i
Lihat jawapan
i mengambil 2, 4, 6, 8, 10, jadi gelung berjalan 5 kali. Sum ialah 2, 6, 12, 20, 30. Nilai akhir ialah 30.
Gelung terkawal syarat
S3. Apakah N dan Count pada akhirnya?
N ← 100
Count ← 0
WHILE N > 10 DO
N ← N DIV 3
Count ← Count + 1
ENDWHILE
Lihat jawapan
| Ujian | N selepas | Count selepas |
|---|---|---|
| 100 > 10 benar | 33 | 1 |
| 33 > 10 benar | 11 | 2 |
| 11 > 10 benar | 3 | 3 |
| 3 > 10 palsu | tamat |
N ialah 3 dan Count ialah 3.
S4. Apakah nilai X apabila gelung tamat, dan berapa pusingan dibuat?
X ← 1
REPEAT
X ← X * 2
UNTIL X > 50
Lihat jawapan
X menjadi 2, 4, 8, 16, 32 (setiap satu tidak > 50, jadi ulang), kemudian 64 (64 > 50, berhenti). Itu 6 pusingan dan X ialah 64.
Baiki dan kesan kesalahan
S5. Tugasan ialah mengeluarkan 1 hingga 8. Kod ini mengeluarkan 1 hingga 7. Baikinya.
Count ← 1
WHILE Count < 8 DO
OUTPUT Count
Count ← Count + 1
ENDWHILE
Lihat jawapan
Apabila Count ialah 8, 8 < 8 palsu dan 8 tidak pernah dikeluarkan. Tukar syarat kepada WHILE Count <= 8. Maka Count 1 hingga 8 lulus ujian dan 8 nilai dikeluarkan.
S6. Gelung ini tidak pernah tamat. Terangkan sebabnya, baikinya, kemudian nyatakan N akhir dan bilangan pusingan bagi pembaikan anda.
N ← 10
WHILE N <> 0 DO
N ← N - 3
ENDWHILE
Lihat jawapan
N mengambil 7, 4, 1, -2, -5 dan seterusnya. Ia melangkaui 0, jadi N <> 0 sentiasa benar. Pembaikan: WHILE N > 0.
Jejak: 10 > 0 benar (N = 7), 7 > 0 benar (N = 4), 4 > 0 benar (N = 1), 1 > 0 benar (N = -2), -2 > 0 palsu. Itu 4 pusingan dan N ialah -2.
Tatasusunan dan gelung
S7. Kod ini mengira berapa bacaan melebihi 30. Berikan outputnya.
Hot ← 0
FOR i ← 1 TO 6
IF Temp[i] > 30
THEN
Hot ← Hot + 1
ENDIF
NEXT i
OUTPUT Hot
Lihat jawapan
Bacaan melebihi 30 ialah 31, 33 dan 33. 30 tidak melebihi 30. Hot ialah 3.
S8. Jejak kod ini dan berikan outputnya.
Max ← Temp[1]
MaxPos ← 1
FOR i ← 2 TO 6
IF Temp[i] > Max
THEN
Max ← Temp[i]
MaxPos ← i
ENDIF
NEXT i
OUTPUT MaxPos, Max
Lihat jawapan
| i | Temp[i] | Ujian | Max | MaxPos |
|---|---|---|---|---|
| awal | 28 | 1 | ||
| 2 | 31 | 31 > 28 benar | 31 | 2 |
| 3 | 27 | palsu | 31 | 2 |
| 4 | 33 | 33 > 31 benar | 33 | 4 |
| 5 | 30 | palsu | 33 | 4 |
| 6 | 33 | 33 > 33 palsu | 33 | 4 |
Outputnya ialah 4, 33.
S9. Tulis pseudokod untuk mengeluarkan jumlah dan purata keenam-enam bacaan. Kemudian berikan kedua-dua nilai, dengan purata kepada 1 tempat perpuluhan.
Lihat jawapan
Total ← 0
FOR i ← 1 TO 6
Total ← Total + Temp[i]
NEXT i
Average ← Total / 6
OUTPUT Total, Average
Jumlah selepas setiap pusingan: 28, 59, 86, 119, 149, 182. Jumlahnya 182. Puratanya 182 / 6 = 30.33…, jadi 30.3 kepada 1 tempat perpuluhan.
S10. Apakah Temp[Temp[1] - 25]?
Lihat jawapan
Temp[1] ialah 28. 28 - 25 = 3. Temp[3] ialah 27.
S11. Tatasusunan stok Stock[1:4] bermula sebagai 5, 0, 3, 0. Berikan kandungannya selepas kod ini.
FOR i ← 1 TO 4
IF Stock[i] = 0
THEN
Stock[i] ← 10
ENDIF
NEXT i
Lihat jawapan
Kedudukan 2 dan 4 menyimpan 0 dan diganti. Tatasusunan menjadi 5, 10, 3, 10.
Jika anda tersilap
- Bilangan pusingan salah (S1, S2, S4, S5): ulang kaji menjejak gelung terkawal bilangan dan menjejak gelung terkawal syarat.
- Gelung tidak tamat atau tamat satu pusingan terlalu awal atau lewat (S5, S6): pergi ke membaiki ralat off-by-one.
- Maksimum atau kedudukan salah (S8): baca mencari nilai maksimum dalam senarai.
- Indeks dan nilai bercampur (S9, S10, S11): ikuti menggunakan indeks tatasusunan tanpa mengelirukannya dengan nilai.
Jejak mana-mana soalan ini langkah demi langkah dalam pelatih jejak pseudokod atau kotak pasir penaakulan Python. Jika satu jenis ralat terus berulang, tuisyen Computer Science dalam talian secara satu dengan satu kami boleh menumpukan pada kemahiran itu.