Created
September 2, 2025 06:30
-
-
Save g-79211081-ops/b214de347d2a694eaea4d1233afff18f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from docx import Document | |
# Buat dokumen Word baru | |
doc = Document() | |
# ======================= | |
# Muka Depan | |
# ======================= | |
doc.add_heading('SEKOLAH MENENGAH KEBANGSAAN ____________', 0) | |
doc.add_paragraph('PEPERIKSAAN AKHIR TAHUN 2025\n') | |
doc.add_heading('ASAS SAINS KOMPUTER', level=1) | |
doc.add_paragraph('TINGKATAN 2\nMasa: 1 jam 30 minit\nMarkah: 70\n') | |
doc.add_heading('Arahan Kepada Calon', level=2) | |
doc.add_paragraph( | |
"1. Tuliskan nama dan kelas pada ruangan yang disediakan.\n" | |
"2. Kertas ini mengandungi 3 Bahagian: A, B dan C.\n" | |
"3. Jawab SEMUA soalan.\n" | |
"4. Tulis jawapan anda pada kertas jawapan yang disediakan.\n" | |
"5. Serahkan kertas soalan ini bersama kertas jawapan anda selepas tamat peperiksaan." | |
) | |
doc.add_paragraph("\nNama: ________________________\nKelas: ________________________") | |
doc.add_page_break() | |
# ======================= | |
# Bahagian A | |
# ======================= | |
doc.add_heading('BAHAGIAN A (10 markah)', level=1) | |
doc.add_paragraph("Jawab semua soalan. Pilih jawapan yang paling tepat.\n") | |
soalan_A = [ | |
("Apakah maksud perkakasan komputer?", | |
["Arahan yang dijalankan komputer", "Komponen fizikal komputer", | |
"Data yang diproses komputer", "Bahasa pengaturcaraan"]), | |
("Contoh perisian aplikasi ialah:", | |
["Windows", "Microsoft Word", "BIOS", "CPU"]), | |
("Simbol rombik dalam carta alir mewakili:", | |
["Proses", "Input/Output", "Keputusan", "Terminal"]), | |
("Tujuan carta alir digunakan ialah untuk:", | |
["Menulis kod terus", "Menganalisis masalah", "Melakar penyelesaian grafik", "Menyimpan data"]), | |
("Antara berikut, yang manakah pemboleh ubah sah?", | |
["2nama", "Nama_Pelajar", "nama-pelajar", "nama pelajar"]), | |
("Nyatakan jenis data bagi '85.6'.", | |
["String", "Integer", "Real", "Boolean"]), | |
("Apakah istilah bagi proses mengumpul dan menyusun data?", | |
["Analisis data", "Pemprosesan data", "Penyimpanan data", "Pengurusan data"]), | |
("Data yang belum diproses dikenali sebagai:", | |
["Maklumat", "Arahan", "Input", "Output"]), | |
("Contoh amalan keselamatan ICT ialah:", | |
["Berkongsi kata laluan", "Menggunakan antivirus", "Membuka lampiran e-mel tanpa periksa", "Mengakses laman palsu"]), | |
("Apakah fungsi pemboleh ubah dalam pengaturcaraan?", | |
["Menghasilkan output grafik", "Menyimpan data sementara", "Mengesan ralat sintaks", "Menentukan jenis perisian"]), | |
] | |
for i, (q, pilihan) in enumerate(soalan_A, start=1): | |
doc.add_paragraph(f"{i}. {q}") | |
for j, pilihan_jawapan in zip("ABCD", pilihan): | |
doc.add_paragraph(f" {j}. {pilihan_jawapan}", style="List Bullet") | |
doc.add_paragraph("[1 markah]") | |
doc.add_page_break() | |
# ======================= | |
# Bahagian B | |
# ======================= | |
doc.add_heading('BAHAGIAN B (40 markah)', level=1) | |
doc.add_paragraph("Jawab semua soalan.\n") | |
# Q11: Padanan | |
doc.add_paragraph("11. Padankan simbol carta alir dengan fungsi yang betul. [3 markah]") | |
table = doc.add_table(rows=5, cols=2) | |
table.style = "Table Grid" | |
hdr_cells = table.rows[0].cells | |
hdr_cells[0].text = "Simbol" | |
hdr_cells[1].text = "Fungsi" | |
rows = [ | |
("Terminal", ""), | |
("Proses", ""), | |
("Input/Output", ""), | |
("Keputusan", "") | |
] | |
for i, (simbol, fungsi) in enumerate(rows, start=1): | |
row_cells = table.rows[i].cells | |
row_cells[0].text = simbol | |
row_cells[1].text = fungsi | |
doc.add_paragraph("\n") | |
# Q12 | |
doc.add_paragraph("12. Isikan tempat kosong: __________ digunakan untuk menyimpan lebih daripada satu nilai dengan jenis data yang sama. [3 markah]") | |
# Q13 | |
doc.add_paragraph("13. Susun atur arahan berikut mengikut urutan yang betul: [3 markah]\n" | |
"i. Papar jumlah\n ii. Jumlah = X + Y\n iii. Input X, Y\n iv. Mula\n v. Tamat") | |
# Q14: Benar/Salah | |
doc.add_paragraph("14. Tandakan (✔) untuk pernyataan Benar atau Salah: [3 markah]") | |
table = doc.add_table(rows=4, cols=2) | |
table.style = "Table Grid" | |
table.rows[0].cells[0].text = "Pernyataan" | |
table.rows[0].cells[1].text = "Jawapan (Benar/Salah)" | |
statements = [ | |
"Boolean hanya mempunyai dua nilai: True dan False.", | |
"Integer digunakan untuk nilai perpuluhan.", | |
"String menyimpan nombor sahaja." | |
] | |
for i, st in enumerate(statements, start=1): | |
table.rows[i].cells[0].text = st | |
table.rows[i].cells[1].text = "" | |
doc.add_paragraph("\n") | |
# Q15 | |
doc.add_paragraph("15. Lengkapkan kod berikut: [3 markah]\nfor i in range(1, ___):\n print('ASK Tingkatan 2')") | |
# Q16: Jadual data suhu | |
doc.add_paragraph("16. Lengkapkan jadual dengan menukar data mentah kepada maklumat: [3 markah]") | |
table = doc.add_table(rows=2, cols=5) | |
table.style = "Table Grid" | |
table.rows[0].cells[0].text = "Data Suhu (°C)" | |
table.rows[1].cells[0].text = "Maklumat" | |
suhu = ["34", "36", "38", "40"] | |
for j, s in enumerate(suhu, start=1): | |
table.rows[0].cells[j].text = s | |
table.rows[1].cells[j].text = "" | |
doc.add_paragraph("\n") | |
# Q17 | |
doc.add_paragraph("17. Pilih struktur kawalan yang sesuai: Jika nombor genap papar 'Even', jika nombor ganjil papar 'Odd'. [3 markah]") | |
# Q18 | |
doc.add_paragraph("18. Padankan kod dengan output: [3 markah]\na. print(5+3)\nb. print('5+3')\nc. print(10//3)\nOutput: i. 5+3, ii. 8, iii. 3") | |
# Q19 | |
doc.add_paragraph("19. Susun pseudokod berikut supaya betul: [3 markah]\nMula\nJika markah >= 50\nPapar 'Lulus'\nJika tidak\nPapar 'Gagal'\nTamat") | |
# Q20 | |
doc.add_paragraph("20. Betulkan kod berikut: [3 markah]\nif nombor = 10:\n print('Betul')\nelse\n print('Salah')") | |
doc.add_page_break() | |
# ======================= | |
# Bahagian C | |
# ======================= | |
doc.add_heading('BAHAGIAN C (20 markah)', level=1) | |
doc.add_paragraph("Jawab semua soalan.\n") | |
doc.add_paragraph("21. Tulis satu atur cara Python untuk membaca 3 nombor dan memaparkan jumlah serta purata. [10 markah]") | |
doc.add_paragraph("\n") | |
doc.add_paragraph("22. Analisis pseudokod berikut dan nyatakan output jika input N = 5: [10 markah]\n" | |
"Mula\nSum = 0\nUntuk i = 1 hingga N\n Sum = Sum + i\nPapar Sum\nTamat") | |
doc.add_page_break() | |
# ======================= | |
# Skema Jawapan | |
# ======================= | |
doc.add_heading('SKEMA JAWAPAN', level=1) | |
skema = { | |
"Bahagian A": ["1. B", "2. B", "3. C", "4. C", "5. B", | |
"6. C", "7. B", "8. C", "9. B", "10. B"], | |
"Bahagian B": [ | |
"11. Terminal – Mula/Tamat, Proses – Arahan, Input/Output – Data, Keputusan – Soalan Bersyarat", | |
"12. Array / Senarai", | |
"13. iv, iii, ii, i, v", | |
"14. a ✔, b ✘, c ✘", | |
"15. 6", | |
"16. 34=Normal, 36=Normal, 38=Demam, 40=Demam Tinggi", | |
"17. B", | |
"18. a–ii, b–i, c–iii", | |
"19. Mula → Jika markah ≥ 50 → Papar 'Lulus' → Jika tidak → Papar 'Gagal' → Tamat", | |
"20. if nombor == 10: … else:" | |
], | |
"Bahagian C": [ | |
"21. Kod Python untuk baca 3 nombor, papar jumlah & purata", | |
"22. Output = 15" | |
] | |
} | |
for bahagian, jawapan in skema.items(): | |
doc.add_heading(bahagian, level=2) | |
for j in jawapan: | |
doc.add_paragraph(j) | |
# Simpan fail | |
doc.save("Kertas_Peperiksaan_ASK_T2.docx") | |
print("Fail Word berjaya dijana: Kertas_Peperiksaan_ASK_T2.docx") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment