Kunci Jawaban – Assesmen Sumatif Informatika Kelas XII

🔑 Kunci Jawaban & Rubrik Penilaian

Assesmen Sumatif Informatika Kelas XII

ℹ️
Dokumen Rahasia Guru Kunci jawaban ini hanya untuk pegangan guru/penilai. Total soal: 45 Pilihan Ganda (bobot 60%) dan 5 Esai (bobot 40%). Nilai akhir dikonversi ke skala 0–100.

📊 Distribusi Jawaban Pilihan Ganda

45
Total Soal Objektif
15
Soal Ringan
15
Soal Sedang
15
Soal HOTS

✅ Bagian I: Kunci Jawaban Objektif (Skor @2 = Total 90)

📦 Topik 1: Manajemen Memori Komputer (Soal 1–15)
No. Jawaban Tingkat Konsep Kunci
1BRinganFase Compile-Time
2CRinganVariabel Lokal
3BRinganStack (LIFO)
4BRinganFungsi Garbage Collection
5CRinganTipe Data Dinamik
6BSedangMasalah Variabel Global
7BSedangStack Overflow
8BSedangBottleneck String Concatenation
9CSedangPerbedaan Stack vs Heap
10CSedangAksi Garbage Collector
11BHOTSMemory Leak pada Game
12BHOTSInefisiensi += pada String
13BHOTSRisiko Matriks Besar di Stack
14CHOTSManual Memory Management
15BHOTSDiagnosis Akumulasi Memory Leak
🔄 Topik 2: Perulangan & Fungsi Python (Soal 16–30)
No. Jawaban Tingkat Konsep Kunci
16CRinganPerulangan for
17BRinganFungsi range()
18CRinganStatement break
19CRinganKeyword def
20BRinganScope Lokal
21BSedangStatement continue
22BSedangLoop-else Python
23BSedangParameter *args
24CSedangDefault Parameter
25CSedangFungsi Lambda
26CHOTSRekursi tanpa Base Case
27BHOTSKeyword global
28AHOTSList Comprehension Efisien
29CRinganReturn Value Fungsi
30CHOTSMultiple Return (Tuple)
🤖 Topik 3: Fondasi Aplikasi AI – InfoTerms Bot (Soal 31–45)
No. Jawaban Tingkat Konsep Kunci
31CRinganRule-Based AI
32DRinganStruktur Dictionary
33BRinganMetode .lower()
34BRinganWhile Loop sebagai Saklar
35CRinganKelemahan Rule-Based
36BSedangAlur if-elif-else
37BSedangExact Matching Problem
38BSedangFuzzy Matching Solution
39CSedangKeunggulan Rule-Based
40ASedangPenambahan elif
41BHOTSCelah Logika “keluar”
42BHOTSAnalogi Mark-and-Sweep
43BHOTSNLP & Intent Recognition
44BHOTSRisiko Dictionary Dinamis
45AHOTSKeterbatasan Empati AI
⚡ Ringkasan Jawaban Cepat (Untuk Koreksi Cepat)
1–15: B C B B C  |  B B B C B  |  B B B C B
16–30: C B C C B  |  B B B C C  |  C B A C C
31–45: C D B B C  |  B B B C A  |  B B B B A

📝 Bagian II: Rubrik Penilaian Esai (Skor Maksimal 100)

Setiap soal esai memiliki bobot 20 poin. Penilaian didasarkan pada kelengkapan konsep, ketepatan analisis, dan kualitas argumentasi.

Esai 1: Analisis Manajemen Memori & Bottleneck 20 Poin

Jelaskan perbedaan mendasar antara penyimpanan data di area Stack dan Heap! Berikan satu contoh situasi nyata dalam pengembangan aplikasi di mana penggunaan Heap yang tidak dikelola dengan baik dapat menyebabkan Memory Leak, dan jelaskan bagaimana mekanisme Garbage Collection membantu (atau gagal membantu) mengatasi masalah tersebut!

🔑 Poin Kunci Jawaban:

  1. Perbedaan Stack vs Heap (6 poin):
    • Stack: LIFO, ukuran terbatas, otomatis dibersihkan saat fungsi selesai, cepat, untuk variabel lokal.
    • Heap: Luas & fleksibel, akses lebih lambat, rentan memory leak, untuk data besar/dinamis (objek, list, dictionary).
  2. Contoh Nyata Memory Leak (6 poin):
    • Contoh: Game yang menyimpan objek musuh yang sudah dikalahkan tetapi referensinya tidak dihapus → menumpuk di Heap.
    • Contoh lain: Listener/event handler yang tidak dilepas, cache tanpa batas, atau variabel global yang menampung data terus-menerus.
  3. Peran Garbage Collection (8 poin):
    • GC bekerja dengan mekanisme Mark-and-Sweep: menandai objek yang masih direferensi, lalu menyapu objek yang tidak lagi terhubung.
    • GC gagal jika masih ada referensi “sampel” (misal: objek disimpan di list global) → objek tetap dianggap “hidup” dan tidak dibersihkan.
    • Solusi: programmer harus secara eksplisit menghapus referensi (misal: del atau set None).

📊 Rubrik Penilaian:

KriteriaSkor MaksimalIndikator
Penjelasan Stack vs Heap6Kedua konsep dijelaskan dengan tepat dan kontras yang jelas
Contoh Memory Leak6Contoh konkret, relevan, dan logis
Analisis Garbage Collection8Menjelaskan mekanisme GC + kondisi gagal dengan tepat

Esai 2: Evaluasi Kode & Optimasi (HOTS) 20 Poin

Analisislah mengapa kode berikut dianggap sebagai bottleneck! Tuliskan ulang kode tersebut menjadi lebih optimal menggunakan list, dan jelaskan secara teknis mengapa kode baru lebih efisien!
data = “”
for i in range(100000):
    data += str(i) + ” “

🔑 Poin Kunci Jawaban:

  1. Analisis Bottleneck (6 poin):
    • String di Python bersifat immutable (tidak bisa diubah).
    • Setiap += membuat objek string baru di Heap, menyalin seluruh konten lama + konten baru.
    • 100.000 iterasi = 100.000 alokasi + penyalinan → kompleksitas O(n²), boros memori & CPU.
  2. Kode Optimal (6 poin):
    data_list = [str(i) for i in range(100000)]
    data = ” “.join(data_list)
    Atau menggunakan list comprehension + join.
  3. Penjelasan Efisiensi (8 poin):
    • list bersifat mutableappend atau list comprehension hanya menambah pointer, bukan menyalin seluruh data.
    • "".join() melakukan alokasi memori sekali di awal dengan ukuran total yang sudah diketahui → kompleksitas O(n).
    • Hasil: jauh lebih cepat (bisa 10–100x) dan hemat memori Heap.

📊 Rubrik Penilaian:

KriteriaSkor MaksimalIndikator
Analisis penyebab bottleneck6Menyebutkan immutability string & alokasi berulang
Kode optimasi benar6Menggunakan list + join dengan sintaks valid
Penjelasan teknis efisiensi8Menyebutkan O(n) vs O(n²), alokasi sekali, mutable list

Esai 3: Analisis Logika AI & Celah Keamanan (HOTS) 20 Poin

Analisislah kelemahan logika if "keluar" in input_user.lower(): berjalan = False jika pengguna memasukkan kalimat: “Saya ingin melihat gambar bunga matahari yang sedang mekar keluar dari kuncupnya”. Usulkan perbaikan logika!

🔑 Poin Kunci Jawaban:

  1. Analisis Kelemahan (6 poin):
    • Operator in pada string melakukan substring matching, bukan pencocokan kata utuh.
    • Kalimat di atas mengandung substring “keluar” → bot akan berhenti meskipun pengguna tidak bermaksud keluar.
    • Ini adalah false positive / celah logika kontekstual.
  2. Perbaikan Logika (14 poin) — beberapa solusi diterima:
    • Solusi 1 — Exact Match:
      if input_user.lower().strip() in [“keluar”, “bye”, “exit”]:
          berjalan = False
    • Solusi 2 — Tokenisasi Kata:
      kata = input_user.lower().split()
      if “keluar” in kata or “bye” in kata:
          berjalan = False
    • Solusi 3 — Konfirmasi: Tanyakan ulang “Apakah Anda yakin ingin keluar? (ya/tidak)” sebelum menutup.

📊 Rubrik Penilaian:

KriteriaSkor MaksimalIndikator
Identifikasi celah logika6Menjelaskan substring matching vs konteks
Kualitas solusi perbaikan10Kode/logika solusi valid dan menyelesaikan masalah
Kedalaman analisis4Menyebutkan konsep NLP/tokenisasi/UX

Esai 4: Perbandingan Arsitektur AI 20 Poin

Buatlah analisis perbandingan mendalam antara Rule-Based AI (InfoTerms Bot) dan Large Language Model (LLM) seperti ChatGPT! Sertakan minimal 3 aspek perbandingan, serta jelaskan kapan pengembang sebaiknya memilih Rule-Based AI daripada LLM!

🔑 Poin Kunci Jawaban:

  1. Minimal 3 Aspek Perbandingan (12 poin):
    AspekRule-Based AILLM (ChatGPT)
    Cara KerjaPencocokan pola & aturan statis (dictionary, if-elif)Generasi teks berbasis probabilitas & transformer
    Kebutuhan ResourceRingan, bisa di PC biasa, tanpa GPUButuh GPU, memori besar, komputasi tinggi
    Pemahaman KonteksTidak ada, kakuBaik, memahami nuansa & konteks percakapan
    FleksibilitasTerbatas pada databaseAdaptif, bisa menjawab hal baru
    Kecepatan ResponsSangat cepat (milidetik)Relatif lebih lambat (detik)
    Empati & KreativitasTidak adaBisa menunjukkan empati & narasi kreatif
  2. Kapan Memilih Rule-Based AI (8 poin):
    • Sistem dengan domain terbatas & terdefinisi jelas (kamus istilah, FAQ perusahaan, IVR bank).
    • Kebutuhan respons deterministik (tidak boleh “berhalusinasi”) — misal: sistem medis, hukum, keuangan.
    • Kendala resource terbatas (perangkat embedded, offline, tanpa internet).
    • Kebutuhan audit trail — setiap jawaban bisa ditelusuri ke aturan tertentu.
    • Prototipe cepat dengan biaya rendah sebelum investasi ke LLM.

📊 Rubrik Penilaian:

KriteriaSkor MaksimalIndikator
Kedalaman perbandingan (≥3 aspek)12Setiap aspek dijelaskan dengan kontras yang jelas
Argumentasi kapan memilih Rule-Based8Minimal 2 situasi konkret dengan alasan logis

Esai 5: Desain Sistem & Scope Variabel (HOTS) 20 Poin

Rancang fungsi kalkulator statistik yang menerima jumlah data tidak pasti menggunakan *args! Jelaskan mengapa variabel total dan rata-rata sebaiknya bersifat lokal daripada global, ditinjau dari keamanan data dan efisiensi memori!

🔑 Poin Kunci Jawaban:

  1. Implementasi *args (8 poin):
    def kalkulator_statistik(*data):
        if not data:
            return None
        total = sum(data)
        rata_rata = total / len(data)
        return {“total”: total, “rata_rata”: rata_rata, “jumlah_data”: len(data)}

    print(kalkulator_statistik(10, 20, 30, 40))
    *args menerima argumen positional tak terbatas sebagai tuple.
  2. Alasan Variabel Lokal (12 poin):
    • Keamanan Data (4 poin): Variabel lokal terisolasi di dalam fungsi → tidak bisa diubah/dibaca oleh bagian program lain secara tidak sengaja (mencegah side effect dan race condition).
    • Efisiensi Memori (4 poin): Variabel lokal otomatis dihancurkan dari Stack saat fungsi selesai → tidak membebani Heap atau mengikat RAM terus-menerus seperti variabel global.
    • Reusability & Testing (4 poin): Fungsi menjadi pure function → mudah diuji, dipanggil berulang dengan input berbeda tanpa khawatir state global tercemar.
    • Prinsip Clean Code: Menghindari variabel global = mengurangi coupling, meningkatkan maintainability.

📊 Rubrik Penilaian:

KriteriaSkor MaksimalIndikator
Kode fungsi dengan *args benar8Sintaks valid, menangani kasus kosong, mengembalikan hasil
Penjelasan keamanan data4Menyebutkan isolasi scope & pencegahan side effect
Penjelasan efisiensi memori4Menyebutkan Stack deallocation otomatis
Argumentasi tambahan (clean code)4Menyebutkan reusability, testing, maintainability

🧮 Formula Perhitungan Nilai Akhir

📐 Rumus Nilai Akhir (Skala 0–100):

# Bobot: Objektif 60% + Esai 40%

nilai_objektif = (jumlah_benar / 45) × 100
nilai_esai = (total_skor_esai / 100) × 100

nilai_akhir = (nilai_objektif × 0.60) + (nilai_esai × 0.40)

# Contoh: Siswa benar 36 soal objektif & mendapat 75 poin esai
# nilai_objektif = (36/45) × 100 = 80
# nilai_esai = 75
# nilai_akhir = (80 × 0.60) + (75 × 0.40) = 48 + 30 = 78

📊 Predikat Nilai:

  • 90 – 100: A (Sangat Baik / Mahir)
  • 80 – 89: B (Baik)
  • 70 – 79: C (Cukup)
  • 60 – 69: D (Kurang / Perlu Remedial)
  • < 60: E (Sangat Kurang)