Practice paper, not an official KPM paperKertas latihan, bukan kertas rasmi KPM
Asas Sains Komputer Tingkatan 2
Ujian Akhir Sesi Akademik (format rumah)
Asas Sains Komputer
Tingkatan 2, 1 jam 30 minit, 70 marksmarkah
NameNama
ClassKelas
DateTarikh
marksmarkah: / 70
InstructionsArahan
Kertas soalan ini mengandungi tiga bahagian: Bahagian A, Bahagian B dan Bahagian C.
Jawab semua soalan.
Bahagian A: pilih satu jawapan yang betul.
Bahagian B dan C: tulis jawapan anda di ruang yang disediakan. Tunjukkan cara kerja anda.
Practice shows answers as you go. Exam times you and hides answers until you submit.Latihan menunjukkan jawapan semasa menjawab. Peperiksaan menetapkan masa dan menyembunyikan jawapan sehingga dihantar.
Bahagian A
10 marksmarkah
Jawab semua soalan. Setiap soalan diikuti oleh empat pilihan jawapan, A, B, C dan D. Pilih satu jawapan yang betul.
1
QuestionSoalan 1
Antara nombor berikut, yang manakah bukan nombor perlapanan?
Show answerTunjuk jawapanHide answerSembunyi jawapan
B
Sistem perlapanan hanya menggunakan digit 0 hingga 7 dan tidak mempunyai digit 8 dan 9 (ms. 3). 39188 mengandungi digit 9 dan 8, maka ia bukan nombor perlapanan. Tiga nombor lain hanya menggunakan digit 0 hingga 7.
For the teacherUntuk guru: RememberingMengingat, lowrendah difficultyaras lowrendah, Bab 1, standard 1.1.1
TextbookBuku teksp.ms. 3
2
QuestionSoalan 2
Perkataan SAYANG mempunyai enam aksara. Setiap aksara disimpan sebagai satu bait (8 bit) menggunakan kod ASCII. Pernyataan yang manakah betul?
Show answerTunjuk jawapanHide answerSembunyi jawapan
D
Satu aksara = 8 bit = 8 digit perduaan = 3 digit perlapanan = 2 digit perenambelasan (ms. 15 dan 31). Bagi 6 aksara: 6 × 8 = 48 digit perduaan, 6 × 3 = 18 digit perlapanan dan 6 × 2 = 12 digit perenambelasan, sama seperti perkataan TOLONG yang diwakili oleh 48 digit perduaan dan 18 digit perlapanan (ms. 15). Pilihan A menggunakan 18 digit untuk perenambelasan, pilihan B dan C mengubah bilangan digit yang salah.
For the teacherUntuk guru: UnderstandingMemahami, mediumsederhana difficultyaras mediumsederhana, Bab 1, standard 1.1.4
TextbookBuku teksp.ms. 15
3
QuestionSoalan 3
Teliti pseudokod berikut.
1Setkan n = 4
2Setkan jum = 0
3while n != 0
4 jum = jum + n
5 n = n - 2
6Paparkan jum
Apakah nilai yang dipaparkan?
Show answerTunjuk jawapanHide answerSembunyi jawapan
A
Syarat n != 0 diuji sebelum setiap lelaran (ms. 58). Lelaran 1: n = 4, jum = 0 + 4 = 4, n menjadi 2. Lelaran 2: n = 2, jum = 4 + 2 = 6, n menjadi 0. Apabila n = 0, syarat palsu dan gelung berhenti. Paparkan jum = 6. Pilihan 10 ialah hasil jika n dikurangkan satu setiap kali (4 + 3 + 2 + 1); pilihan 4 hanya mengira lelaran pertama.
For the teacherUntuk guru: AnalysingMenganalisis, mediumsederhana difficultyaras mediumsederhana, Bab 2, standard 2.1.1 (ii)
TextbookBuku teksp.ms. 58
4
QuestionSoalan 4
Sebuah atur cara berjalan sehingga tamat tanpa memaparkan sebarang mesej ralat, tetapi outputnya tidak seperti yang dijangka. Apakah jenis ralat itu?
Show answerTunjuk jawapanHide answerSembunyi jawapan
C
Ralat logik menyebabkan atur cara memberi output yang tidak dijangka dan tiada paparan mesej ralat, maka ia sukar dikesan (Rajah 2.17, ms. 60). Ralat sintaks ada mesej ralat dan ralat masa larian menyebabkan atur cara terhenti tiba-tiba. Ralat penterjemah bukan jenis ralat dalam buku teks.
For the teacherUntuk guru: RememberingMengingat, lowrendah difficultyaras lowrendah, Bab 2, standard 2.1.2
TextbookBuku teksp.ms. 60
5
QuestionSoalan 5
Python menggunakan penterjemah jenis
Show answerTunjuk jawapanHide answerSembunyi jawapan
C
Buku teks menyenaraikan tiga jenis penterjemah: penghimpun, pengkompil dan pentafsir. Python, PHP, Perl dan Ruby menggunakan pentafsir; C, C++, Java dan Pascal menggunakan pengkompil (Rajah 3.1, ms. 76). Penyahpepijat bukan penterjemah.
For the teacherUntuk guru: RememberingMengingat, lowrendah difficultyaras lowrendah, Bab 3, standard 3.1
TextbookBuku teksp.ms. 76
6
QuestionSoalan 6
Apakah output bagi kod Python berikut?
print(17 // 5, 17 % 5)
Show answerTunjuk jawapanHide answerSembunyi jawapan
A
Operator // memberi hasil bahagi tanpa baki: 17 // 5 = 3. Operator % memberi baki pembahagian: 17 % 5 = 2 (Jadual 3.9, ms. 100). Tanda koma dalam print() memaparkan satu ruang kosong di antara dua nilai. Output: 3 2.
For the teacherUntuk guru: ApplyingMengaplikasi, lowrendah difficultyaras lowrendah, Bab 3, standard 3.1.3
TextbookBuku teksp.ms. 100
7
QuestionSoalan 7
Apakah output bagi kod Python berikut?
ayat = "Pelajar"
print(ayat[2:5])
Show answerTunjuk jawapanHide answerSembunyi jawapan
B
Indeks bermula daripada 0: P = 0, e = 1, l = 2, a = 3, j = 4, a = 5, r = 6. Julat [2:5] bermula pada indeks 2 dan berhenti sebelum indeks 5, iaitu aksara pada indeks 2, 3 dan 4: l, a, j. Output: laj (Contoh 3.6, ms. 83).
For the teacherUntuk guru: ApplyingMengaplikasi, lowrendah difficultyaras lowrendah, Bab 3, standard 3.1.1
TextbookBuku teksp.ms. 83
8
QuestionSoalan 8
Atur cara dalam Amali Komputer 3.4 menggunakan pilihan bersarang untuk menentukan tahun lompat.
tahun = int(input("Masukkan tahun: "))
if (tahun % 4) == 0:
if (tahun % 100) == 0:
if (tahun % 400) == 0:
print("Tahun lompat")
else:
print("Bukan tahun lompat")
else:
print("Tahun lompat")
else:
print("Bukan tahun lompat")
Ungkapan boolean yang manakah menghasilkan keputusan tahun lompat yang sama dengan atur cara itu?
Show answerTunjuk jawapanHide answerSembunyi jawapan
D
Tahun ialah tahun lompat jika boleh dibahagi 4 tetapi tidak boleh dibahagi 100, atau jika boleh dibahagi 400 (Amali Komputer 3.4, ms. 141 dan 142). Ungkapan D memberi keputusan yang sama untuk semua tahun: 2000 (True), 1900 (False), 2024 (True) dan 2026 (False). A salah kerana 1900 memberi True (1900 % 4 == 0). B salah kerana 2024 memberi False (2024 % 400 != 0). C salah kerana 2024 memberi False dan ungkapan itu benar bagi 1900 yang bukan tahun lompat.
For the teacherUntuk guru: AnalysingMenganalisis, mediumsederhana difficultyaras mediumsederhana, Bab 3, standard 3.2.1 (iii)
Show answerTunjuk jawapanHide answerSembunyi jawapan
B
Struktur pelbagai pilihan if-elif-else menyemak syarat dari atas ke bawah dan berhenti pada syarat pertama yang benar (Rajah 3.12, ms. 127). 72 >= 80 palsu; 72 >= 60 benar, maka "Baik" dipaparkan dan syarat selepasnya tidak disemak lagi.
For the teacherUntuk guru: ApplyingMengaplikasi, lowrendah difficultyaras lowrendah, Bab 3, standard 3.2.1 (ii)
TextbookBuku teksp.ms. 127
10
QuestionSoalan 10
Berapa kali pernyataan dalam gelung berikut dilaksanakan?
for i in range(4, 20, 4):
print(i)
Show answerTunjuk jawapanHide answerSembunyi jawapan
C
range(mula, henti, langkau) bermula pada 4, bertambah 4 setiap kali dan berhenti sebelum 20: 4, 8, 12, 16 (Rajah 3.15, ms. 146). Maka ulangan berlaku 4 kali. Nilai 20 tidak termasuk kerana julat berhenti sebelum nilai henti.
For the teacherUntuk guru: ApplyingMengaplikasi, lowrendah difficultyaras lowrendah, Bab 3, standard 3.2.1 (iv)
TextbookBuku teksp.ms. 146
Bahagian B
40 marksmarkah
Jawab semua soalan. Tulis jawapan anda di ruang yang disediakan.
11
QuestionSoalan 11
Jadual 1 menunjukkan kod ASCII bagi aksara dalam perkataan Padi. Petak P, Q, R dan S sengaja dibiarkan kosong.
Jadual 1
[2 marksmarkah](a)Tulis nilai P, iaitu kod ASCII perlapanan bagi P, dan nilai Q, iaitu kod ASCII perenambelasan bagi a.
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
P = 80: 80 ÷ 8 = 10 baki 0; 10 ÷ 8 = 1 baki 2; 1 ÷ 8 = 0 baki 1; baki dari bawah ke atas: 120 (ms. 12). Q = 97: 97 ÷ 16 = 6 baki 1; 6 ÷ 16 = 0 baki 6; baca 61 (ms. 28). Kedua-duanya boleh disemak dalam Lampiran A (ms. 178 dan 179).
Tick each point you got.Tandakan setiap isi yang betul.
[2 marksmarkah](b)Tulis nilai R, iaitu kod ASCII perduaan bagi d (8 digit), dan nilai S, iaitu kod ASCII perlapanan bagi i.
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
R: kod perpuluhan d ialah 100 dan kod perduaannya ialah 01100100 (Lampiran A, ms. 179); semakan: 64 + 32 + 4 = 100. S = 105: 105 ÷ 8 = 13 baki 1; 13 ÷ 8 = 1 baki 5; 1 ÷ 8 = 0 baki 1; baca 151 (ms. 12).
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: ApplyingMengaplikasi, lowrendah difficultyaras lowrendah, Bab 1, standard 1.1.3
TextbookBuku teksp.ms. 178
12
QuestionSoalan 12
Nombor perlapanan 34068 perlu ditukar kepada nombor perpuluhan.
[2 marksmarkah](a)Tukarkan 34068 kepada nombor perpuluhan dengan nilai tempat perlapanan. Tunjukkan cara kerja anda.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
Nilai tempat perlapanan: 83 = 512, 82 = 64, 81 = 8 dan 80 = 1 (ms. 3 dan 6). 1536 + 256 + 0 + 6 = 1798. Maka 34068 = 179810.
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](b)Nyatakan nilai tempat bagi digit 4 dalam 34068.
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
Digit 4 berada di kedudukan ketiga dari kanan, iaitu nilai tempat 82 = 64 (ms. 3 dan 6).
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](c)Tulis tiga nombor perlapanan yang datang selepas 578.
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
Selepas 7 datang 10 (dibaca satu kosong), bukan 8. Maka selepas 578 datang 608, 618 dan 628 (ms. 3).
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: UnderstandingMemahami, mediumsederhana difficultyaras mediumsederhana, Bab 1, standard 1.1.2 (ii)
TextbookBuku teksp.ms. 7
13
QuestionSoalan 13
Tentukan sama ada pernyataan berikut tentang sistem nombor perenambelasan dan data komputer Benar atau Palsu.
[1 markmarkah](a)Sistem nombor perenambelasan menggunakan digit 0 hingga 9 dan huruf A hingga F.Show answerTunjuk jawapanHide answerSembunyi jawapan
Benar
Sistem perenambelasan mempunyai enam belas pilihan digit, iaitu 0 hingga 9 dan A hingga F (ms. 19 dan Jadual 1.8, ms. 20).
Bait ialah gabungan 8 bit, bukan 4 bit, dan boleh mewakili sehingga 256 aksara berbeza (ms. 12).
[1 markmarkah](d)Perkataan lima aksara seperti BAKTI diwakili oleh 40 digit perduaan atau 10 digit perenambelasan.Show answerTunjuk jawapanHide answerSembunyi jawapan
Benar
Setiap aksara ialah 8 bit, maka 5 aksara = 40 digit perduaan. Dalam perenambelasan setiap aksara hanya 2 digit, maka 10 digit (Contoh 1.16, ms. 31).
For the teacherUntuk guru: RememberingMengingat, lowrendah difficultyaras lowrendah, Bab 1, standard 1.2.1
TextbookBuku teksp.ms. 19
14
QuestionSoalan 14
Lakukan penukaran sistem nombor yang berikut.
[2 marksmarkah](a)Tukarkan 27508 kepada nombor perduaan. Buang sifar di hadapan dalam jawapan akhir.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
Jadual 1.5 (ms. 9 dan 3): 2 = 010; 7 = 111; 5 = 101; 0 = 000. Cantum: 010111101000. Buang sifar di hadapan sahaja: 101111010002. Sifar di hujung (000) tidak boleh dibuang. Semakan: 2 × 512 + 7 × 64 + 5 × 8 + 0 = 1024 + 448 + 40 = 1512.
Tick each point you got.Tandakan setiap isi yang betul.
[2 marksmarkah](b)Tukarkan 10101112 kepada nombor perlapanan. Tunjukkan cara kerja anda.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
7 digit bukan gandaan 3, maka tambah dua sifar di kiri (bukan di kanan): 001 010 111. 001 = 1; 010 = 2; 111 = 7. Maka 10101112 = 1278 (ms. 9 hingga 11). Semakan: 1 × 64 + 2 × 8 + 7 = 87 dan 10101112 = 64 + 16 + 4 + 2 + 1 = 87.
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: ApplyingMengaplikasi, lowrendah difficultyaras lowrendah, Bab 1, standard 1.1.2 (iii)
TextbookBuku teksp.ms. 9
15
QuestionSoalan 15
Nombor perpuluhan 75010 perlu ditukar kepada nombor perenambelasan.
[2 marksmarkah](a)Tukarkan 75010 kepada nombor perenambelasan dengan kaedah bahagi dengan 16 dan gunakan bakinya. Tunjukkan cara kerja anda.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
750 ÷ 16 = 46 baki 14 (16 × 46 = 736); baki 14 ditulis E (Jadual 1.6, ms. 19). 46 ÷ 16 = 2 baki 14 (E). 2 ÷ 16 = 0 baki 2. Baca baki dari bawah ke atas: 2, E, E. Maka 75010 = 2EE16 (ms. 20 dan 21).
Tick each point you got.Tandakan setiap isi yang betul.
[2 marksmarkah](b)Semak jawapan anda di (a) dengan menukarkannya semula kepada nombor perpuluhan. Tunjukkan cara kerja anda.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
Nilai tempat perenambelasan: 256, 16 dan 1 (ms. 19). E = 14. 2 × 256 = 512; 14 × 16 = 224; 14 × 1 = 14. 512 + 224 + 14 = 750, sama dengan nombor asal (ms. 22 dan 23).
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: ApplyingMengaplikasi, lowrendah difficultyaras lowrendah, Bab 1, standard 1.2.2 (i)
TextbookBuku teksp.ms. 20
16
QuestionSoalan 16
Pseudokod berikut mengira denda buku perpustakaan mengikut bilangan hari buku itu dipulangkan lewat.
1Mula
2Baca hari
3Jika (hari == 0)
4 Setkan denda = 0
5Jika tidak
6 Jika (hari <= 7)
7 Kirakan denda = hari * 0.50
8 Jika tidak
9 Kirakan denda = 5.00 + (hari - 7) * 1.00
10 Tamat jika
11Tamat jika
12Paparkan denda
13Tamat
Jadual 2 ialah semakan meja bagi empat nilai hari. Petak P, Q dan R sengaja dibiarkan kosong.
Jadual 2
[2 marksmarkah](a)Tulis nilai P dan nilai Q.
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
P: 4 == 0 ialah Tidak, maka cabang Jika tidak yang pertama dilaksanakan dan ujian kedua diuji. Q: 10 <= 7 ialah Tidak, maka cabang Jika tidak yang dalam dilaksanakan (ms. 43).
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](b)Tulis nilai R, iaitu denda yang dipaparkan bagi 10 hari.
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](c)Jika baris 6 ditulis sebagai Jika (hari < 7), tulis denda yang dipaparkan bagi 7 hari.
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
7 < 7 ialah Tidak, maka cabang Jika tidak yang dalam dilaksanakan: denda = 5.00 + (7 - 7) * 1.00 = 5.00. Dengan <= denda bagi 7 hari ialah 7 * 0.50 = 3.50. Menukar <= kepada < mengubah keputusan pada nilai sempadan 7: uji nilai sempadan dengan semakan meja (ms. 43).
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: AnalysingMenganalisis, hightinggi difficultyaras hightinggi, Bab 2, standard 2.1.1 (i)
TextbookBuku teksp.ms. 43
17
QuestionSoalan 17
Pilih jenis data Python bagi setiap nilai berikut.
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](d)print(9 / 4)
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
Operator / memberi hasil bahagi berjenis float: 9 / 4 = 2.25 (Jadual 3.1, ms. 78).
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: ApplyingMengaplikasi, lowrendah difficultyaras lowrendah, Bab 3, standard 3.1.1
TextbookBuku teksp.ms. 100
19
QuestionSoalan 19
Atur cara berikut mengira purata dua markah ujian. Pengguna memasukkan 60 dan 80. Atur cara berjalan tanpa mesej ralat tetapi memaparkan Purata: 100.0, bukan 70.0.
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
Atur cara berjalan tanpa mesej ralat tetapi memberi output yang salah, maka ia ialah ralat logik (ms. 60 dan 109).
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](b)Terangkan punca output 100.0.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
Python mengikut tertib operasi matematik: darab dan bahagi dahulu, kemudian tambah dan tolak, melainkan ada kurungan (ms. 78 dan 110). Sama seperti kesilapan dalam Contoh 3.20 (ms. 109 hingga 111) yang menyebabkan bahagi dibuat dahulu.
Tick each point you got.Tandakan setiap isi yang betul.
[2 marksmarkah](c)Tulis semula baris 3 supaya purata yang betul dikira, kemudian tulis output atur cara.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
purata = (markah1 + markah2) / 2
Output: Purata: 70.0
Kurungan memastikan tambah dibuat dahulu: (60 + 80) / 2 = 140 / 2 = 70.0. Hasil bahagi dalam Python 3 ialah float, maka output ialah 70.0 dan bukan 70 (Contoh 3.23, ms. 123).
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: EvaluatingMenilai, mediumsederhana difficultyaras mediumsederhana, Bab 3, standard 3.1.4
TextbookBuku teksp.ms. 109
20
QuestionSoalan 20
Diberi ayat = "Sekolah". Tulis output bagi setiap pernyataan Python berikut.
[1 markmarkah](a)print(len(ayat))
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
len() menghitung bilangan aksara: S, e, k, o, l, a, h = 7 (Jadual 3.3, ms. 83).
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](b)print(ayat[3])
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
Indeks bermula daripada 0: S = 0, e = 1, k = 2, o = 3. Maka ayat[3] ialah o (Contoh 3.6, ms. 83).
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](c)print(ayat * 2)
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
Operator * mengulang string mengikut bilangan yang dinyatakan, tanpa ruang kosong (Jadual 3.3, ms. 83).
Tick each point you got.Tandakan setiap isi yang betul.
[1 markmarkah](d)print("-".join("Ayu"))
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
join() menambah aksara di antara setiap aksara string. Seperti ":".join("Selamat") yang memberi S:e:l:a:m:a:t (Contoh 3.9, ms. 85).
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: UnderstandingMemahami, lowrendah difficultyaras lowrendah, Bab 3, standard 3.1.1
TextbookBuku teksp.ms. 83
Bahagian C
20 marksmarkah
Jawab semua soalan. Tulis jawapan anda di ruang yang disediakan.
21
QuestionSoalan 21
Sebuah kedai runcit mencatat jumlah belian setiap pelanggan (dalam RM). Pengguna memasukkan jumlah belian pelanggan satu demi satu. Nombor 0 menandakan tiada pelanggan lagi dan tidak dikira sebagai belian. Atur cara mengira bilangan pelanggan dan jumlah belian semua pelanggan, kemudian memaparkan kedua-duanya. Selepas itu, jika jumlah belian sekurang-kurangnya RM300, paparkan "Sasaran tercapai"; jika tidak, paparkan "Sasaran belum tercapai".
[2 marksmarkah](a)Rajah 1 ialah carta alir bagi bahagian pertama algoritma. Tulis syarat bagi P dan pernyataan bagi Q.Rajah 1
Auto-checked: type a short answerSemakan automatik: taip jawapan pendek
Show answerTunjuk jawapanHide answerSembunyi jawapan
Gelung while berjalan selagi belian bukan 0 (0 ialah penanda untuk berhenti, seperti Contoh 2.4, ms. 57 hingga 59). Belian pertama dibaca sebelum gelung; belian seterusnya mesti dibaca semula di hujung gelung (Q) supaya syarat berubah dan gelung akhirnya berhenti.
Tick each point you got.Tandakan setiap isi yang betul.
[8 marksmarkah](b)Tulis pseudokod lengkap bagi algoritma ini.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
Mula
Setkan jumlah = 0
Setkan bil = 0
Baca belian
while belian != 0
Kirakan jumlah = jumlah + belian
Kirakan bil = bil + 1
Baca belian
Paparkan bil, jumlah
Jika (jumlah >= 300)
Paparkan "Sasaran tercapai"
Jika tidak
Paparkan "Sasaran belum tercapai"
Tamat jika
Tamat
Algoritma ini menggabungkan jujukan, ulangan while dan pilihan dwipilihan (ms. 65 hingga 68). Terima penyelesaian lain yang betul, misalnya belian dibaca di dalam gelung dengan syarat berhenti yang lain, asalkan nilai 0 tidak ditambah ke jumlah atau dikira sebagai pelanggan. Semakan meja dengan 120.50, 45, 80 dan 0: bil = 3, jumlah = 245.5, "Sasaran belum tercapai". Dengan 150, 90, 75.50 dan 0: bil = 3, jumlah = 315.5, "Sasaran tercapai". Jumlah tepat RM300 juga mencapai sasaran kerana syaratnya >= 300.
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: CreatingMencipta, hightinggi difficultyaras hightinggi, Bab 2, standard 2.1.3
TextbookBuku teksp.ms. 65
22
QuestionSoalan 22
Koperasi sekolah menjual buku latihan pada harga tetap RM12.50 sebuah. Pelanggan membeli sekurang-kurangnya satu buku. Diskaun diberi mengikut bilangan buku: 20% jika membeli 10 buah atau lebih; 10% jika membeli 5 hingga 9 buah; tiada diskaun jika kurang daripada 5 buah.
[2 marksmarkah](a)(i) Tulis jumlah bayaran bagi 12 buku selepas diskaun. (ii) Nyatakan sama ada harga RM12.50 patut disimpan sebagai pemboleh ubah atau pemalar. Beri satu sebab.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
(i) 12.5 × 12 = 150.0; diskaun 20% = 30.0; 150.0 - 30.0 = 120.0 (sama dengan 150.0 × 0.80). (ii) Pemalar menyimpan nilai dalam ingatan, tetapi nilainya tidak berubah semasa atur cara dilaksanakan (Jadual 3.4, ms. 92).
Tick each point you got.Tandakan setiap isi yang betul.
[8 marksmarkah](b)Tulis atur cara Python lengkap yang: (1) menyimpan harga sebuah buku sebagai pemalar; (2) meminta bilangan buku (nombor bulat) dan mengulang permintaan itu selagi bilangan yang dimasukkan kurang daripada 1; (3) memilih kadar diskaun mengikut bilangan buku; (4) mengira jumlah bayaran selepas diskaun dan memaparkannya dibundarkan kepada dua tempat perpuluhan.
You mark this one: open Show answerAnda tanda sendiri: buka Tunjuk jawapan
Show answerTunjuk jawapanHide answerSembunyi jawapan
HARGA = 12.50
bil = int(input("Bilangan buku: "))
while bil < 1:
print("Bilangan tidak sah")
bil = int(input("Bilangan buku: "))
if bil >= 10:
diskaun = 0.20
elif bil >= 5:
diskaun = 0.10
else:
diskaun = 0
jumlah = HARGA * bil
bayar = jumlah - jumlah * diskaun
print("Jumlah bayaran: RM", round(bayar, 2))
Atur cara menggabungkan jujukan, ulangan while, pilihan if-elif-else dan pemalar (ms. 92, 127 hingga 135 dan 159 hingga 163). Terima penyelesaian lain yang betul, misalnya nama pemboleh ubah yang lain, if bersarang atau jumlah dikira terus dengan HARGA * bil * (1 - diskaun). Semakan meja: 12 buku memberi RM120.0; 10 buku memberi 125.0 - 25.0 = RM100.0; 6 buku memberi 75.0 - 7.5 = RM67.5; 4 buku memberi RM50.0; jika pengguna memasukkan 0 dahulu, atur cara meminta bilangan semula.
Tick each point you got.Tandakan setiap isi yang betul.
For the teacherUntuk guru: CreatingMencipta, mediumsederhana difficultyaras mediumsederhana, Bab 3, standard 3.2.3
TextbookBuku teksp.ms. 160
Test specification (JSU)Jadual Spesifikasi Ujian (JSU)
Bab
RememberingMengingat
UnderstandingMemahami
ApplyingMengaplikasi
AnalysingMenganalisis
EvaluatingMenilai
CreatingMencipta
Item
marksmarkah
1. Perwakilan data
2 (5)
2 (5)
3 (12)
–
–
–
7
22
2. Algoritma
1 (1)
–
–
2 (5)
–
1 (10)
4
16
3. Kod arahan
2 (5)
1 (4)
5 (8)
1 (1)
1 (4)
1 (10)
11
32
TotalJumlah
5 (11)
3 (9)
8 (20)
3 (6)
1 (4)
2 (20)
22
70
Each cell shows items (marks).Setiap petak menunjukkan item (markah).