Set ini meliputi seluruh modul struktur pengaturcaraan: jenis data, skop setempat dan global, parameter, nilai dipulangkan, dan memisahkan logik daripada input dan output. Semua atur cara dan nilai adalah rekaan.
Soalan disusun daripada mudah kepada lebih sukar. Tulis jawapan anda dahulu, kemudian buka penyelesaian. Jadual jejak ditunjukkan sepenuhnya supaya anda boleh membandingkan setiap baris. Pelatih jejak pseudokod terhad berguna untuk soalan jejak, kotak pasir penaakulan Python yang selamat membolehkan anda menyemak hasil, dan log kesilapan dan baris gilir ujian semula ialah tempat untuk merekod kesilapan.
Soalan
1. Pilih jenis data yang paling sesuai bagi setiap satu: (a) bilangan kerusi dalam dewan, (b) suhu 31.5, (c) kod tiket “0045”, (d) satu jawapan ‘Y’ atau ‘N’, (e) sama ada hujan sedang turun.
Tunjukkan jawapan
(a) INTEGER, bilangan bulat. (b) REAL, kerana ada bahagian pecahan. (c) STRING, kerana tidak pernah dikira dan sifar di depan mesti dikekalkan. (d) CHAR, satu aksara. (e) BOOLEAN, hanya TRUE atau FALSE.
2. Sebuah atur cara menyimpan hasil 15 / 4. Nyatakan nilai dan jenis data yang diperlukan.
Tunjukkan jawapan
15 / 4 = 3.75. Hasilnya mempunyai bahagian pecahan, jadi ia memerlukan REAL. Pemboleh ubah INTEGER tidak dapat menyimpan 3.75.
3. Nyatakan outputnya.
Count ← 10
PROCEDURE Change()
DECLARE Count : INTEGER
Count ← 99
ENDPROCEDURE
CALL Change()
OUTPUT Count
Tunjukkan jawapan
Prosedur mengisytiharkan Count setempatnya sendiri dan menetapkannya kepada 99. Count global ialah pemboleh ubah yang berasingan dan kekal 10. Outputnya ialah 10.
4. Count diisytiharkan dalam atur cara utama. Temp diisytiharkan di dalam prosedur Calc. Nyatakan sama ada setiap satu setempat atau global, dan sama ada atur cara utama boleh mengeluarkan Temp selepas Calc dijalankan.
Tunjukkan jawapan
Count ialah global. Temp setempat bagi Calc. Atur cara utama tidak boleh mengeluarkan Temp, kerana pemboleh ubah setempat berhenti wujud apabila prosedur tamat.
5. Tulis fungsi Area yang menerima dua parameter REAL Length dan Width dan memulangkan hasil darabnya sebagai REAL. Nyatakan nilai Area(4.5, 2).
Tunjukkan jawapan
FUNCTION Area(Length : REAL, Width : REAL) RETURNS REAL
RETURN Length * Width
ENDFUNCTION
Area(4.5, 2) memulangkan 4.5 × 2 = 9.0.
6. Jejak fungsi dan nyatakan nilai yang dipulangkan oleh RepeatAdd(6, 4).
FUNCTION RepeatAdd(A : INTEGER, B : INTEGER) RETURNS INTEGER
DECLARE Result : INTEGER
Result ← 0
FOR I ← 1 TO B
Result ← Result + A
NEXT I
RETURN Result
ENDFUNCTION
Tunjukkan jawapan
| I | Result |
|---|---|
| mula | 0 |
| 1 | 6 |
| 2 | 12 |
| 3 | 18 |
| 4 | 24 |
Fungsi memulangkan 24, iaitu 6 × 4.
7. Fungsi ini sepatutnya memulangkan 1 + 2 + 3 bagi SumTo(3). Nyatakan apa yang sebenarnya dipulangkan, dan betulkannya.
FUNCTION SumTo(N : INTEGER) RETURNS INTEGER
DECLARE Total : INTEGER
Total ← 0
FOR I ← 1 TO N
Total ← Total + I
RETURN Total
NEXT I
ENDFUNCTION
Tunjukkan jawapan
RETURN berada di dalam gelung, jadi pada pusingan pertama Total menjadi 0 + 1 = 1 dan fungsi tamat. Ia memulangkan 1.
Pembetulan: pindahkan RETURN Total selepas NEXT I. Kemudian Total menjadi 1, 3, 6 dan fungsi memulangkan 6.
8. Fungsi di bawah mengurangkan harga mengikut peratusan. Nyatakan nilai Discount(80, 25), kemudian terangkan apa berlaku jika argumen ditukar kepada Discount(25, 80).
FUNCTION Discount(Price : REAL, Percent : REAL) RETURNS REAL
RETURN Price - Price * Percent / 100
ENDFUNCTION
Tunjukkan jawapan
Discount(80, 25): 80 × 25 / 100 = 20, dan 80 − 20 = 60.
Discount(25, 80): Price ialah 25 dan Percent ialah 80. 25 × 80 / 100 = 20, dan 25 − 20 = 5. Argumen dipadankan dengan parameter mengikut kedudukan, jadi menukarnya memberi jawapan salah tanpa mesej ralat.
9. Tulis fungsi ToFahrenheit yang menerima nilai Celsius REAL dan memulangkan Celsius × 9 / 5 + 32. Berikan hasil bagi 30 dan 100.
Tunjukkan jawapan
FUNCTION ToFahrenheit(Celsius : REAL) RETURNS REAL
RETURN Celsius * 9 / 5 + 32
ENDFUNCTION
Bagi 30: 30 × 9 = 270, 270 / 5 = 54, 54 + 32 = 86. Bagi 100: 100 × 9 = 900, 900 / 5 = 180, 180 + 32 = 212. Fungsi tidak mempunyai INPUT atau OUTPUT, jadi atur cara utama yang mengendalikannya.
10. Nyatakan outputnya.
FUNCTION Score(Correct : INTEGER, Wrong : INTEGER) RETURNS INTEGER
RETURN Correct * 3 - Wrong
ENDFUNCTION
A ← Score(8, 2)
B ← Score(5, 5)
OUTPUT A + B
Tunjukkan jawapan
Score(8, 2) = 8 × 3 − 2 = 24 − 2 = 22, jadi A = 22. Score(5, 5) = 15 − 5 = 10, jadi B = 10. Outputnya ialah 22 + 10 = 32.
11. Bagi setiap tugas, nyatakan sama ada prosedur atau fungsi lebih sesuai dan sebabnya: (a) memaparkan satu baris sambutan, (b) mengira bil termasuk caj perkhidmatan 8% dan memberikan jumlah kembali kepada pemanggil.
Tunjukkan jawapan
(a) Prosedur: ia hanya melakukan sesuatu dan tiada nilai dikembalikan. (b) Fungsi: pemanggil memerlukan jumlah, jadi ia menggunakan RETURN. Caj perkhidmatan ditambah dalam fungsi dan atur cara utama menentukan cara memaparkan hasil.
12. Nyatakan outputnya. Terangkan mengapa panggilan kedua tidak bermula daripada 0.
DECLARE Count : INTEGER
Count ← 0
FUNCTION Next(Step : INTEGER) RETURNS INTEGER
Count ← Count + Step
RETURN Count
ENDFUNCTION
DECLARE A : INTEGER
DECLARE B : INTEGER
A ← Next(2)
B ← Next(3)
OUTPUT A + B
Tunjukkan jawapan
Count ialah global, jadi perubahan kekal antara panggilan. Panggilan pertama: Count = 0 + 2 = 2, memulangkan 2, jadi A = 2. Panggilan kedua: Count = 2 + 3 = 5, memulangkan 5, jadi B = 5. Outputnya 2 + 5 = 7.
Ini berfungsi tetapi menjadikan fungsi bergantung pada pemboleh ubah global, iaitu tabiat yang dinasihatkan oleh modul supaya dielakkan. Reka bentuk yang lebih bersih ialah menghantar kiraan semasa sebagai parameter.
Jika anda tersilap
Padankan setiap jenis ralat dengan pelajaran, ulang semakan kendiri pelajaran itu, kemudian cuba semula soalan beberapa hari kemudian.
| Ralat | Pergi ke |
|---|---|
| Jenis salah, terutama kod disimpan sebagai nombor (1, 2) | Pilih jenis data yang sesuai |
| Output atau keterlihatan pemboleh ubah setempat atau global (3, 4, 12) | Skop setempat dan global |
| Susunan parameter atau pengepala fungsi (5, 8, 11) | Bina subrutin dengan parameter yang jelas |
| Nilai salah selepas menjejak, RETURN awal (6, 7, 10) | Jejak nilai yang dipulangkan |
| Mencampur pengiraan dengan input atau output (9, 11) | Asingkan logik daripada input dan output |
Jika ralat anda tersebar merentasi beberapa pelajaran, guru satu dengan satu dalam perkhidmatan tuisyen Computer Science kami boleh membantu anda menentukan keutamaan.