Berpikir Komputasional Kelas 10

Berpikir Komputasional – Kelas X SMA
🔍

Algoritma Searching

Cara cerdas menemukan jarum di tumpukan jerami.

🔍 Linear Search

Seperti mencari kunci di tas: Kamu cek satu per satu dari atas sampai bawah.

Kelebihan: Data boleh berantakan (acak).
Kekurangan: Sangat capek jika barang di tas ada ribuan.

⚡ Binary Search

Seperti menebak angka 1-100: Kamu tebak 50, jika terlalu kecil, kamu buang angka 1-50.

Kelebihan: Sangat cepat (hanya butuh beberapa kali tebak).
Kekurangan: Data WAJIB tersusun rapi (A-Z atau 1-100).

🚀 Mengapa Memilih Algoritma yang Tepat?

Perbandingan jumlah maksimal langkah (pengecekan) yang dibutuhkan:

Jumlah Data (N) Linear Search (Maks) Binary Search (Maks)
10 Data 10 Langkah ~ 4 Langkah
1.000 Data 1.000 Langkah ~ 10 Langkah
1.000.000 Data 1 Juta Langkah (Lama!) Hanya 20 Langkah! 🚀

Linear Search Flowchart

MULAI
Cek kotak pertama
Apakah Cocok?
TIDAK → Cek Kotak Berikutnya
YA ▼
SELESAI (Ketemu)
FOR i = 0 TO akhir_data:
  IF data[i] == target THEN
    RETURN i
RETURN -1

Binary Search Flowchart

MULAI (Data Urut)
Belah data jadi 2 tengah
Pas di Tengah?
TIDAK → Buang setengah yang salah
YA ▼
SELESAI (Ketemu)
WHILE low <= high:
  mid = (low + high) / 2
  IF data[mid] == target RETURN mid
  ELSE IF target > data[mid] low = mid + 1
  ELSE high = mid – 1

🎮 Game Simulasi Angka

👨‍🏫 Panduan: Cara Mengerjakan Tracing

Pelajari contoh lengkap berikut sebelum mengerjakan praktikum. Baca setiap langkah perlahan-lahan.

LANGKAH 1

Pelajari Linear Search

Kita punya array: [10, 25, 30, 42, 55, 68, 80]

Target: cari angka 55

1 Periksa indeks ke-0
10
25
30
42
55
68
80
[0][1][2][3][4][5][6]

Apa yang saya lakukan?

Lihat kotak kuning → itu elemen yang sedang saya periksa. Angkanya 10.

Bandingkan: 10 == 55Tidak sama ❌

Lanjut ke indeks berikutnya →

2 Periksa indeks ke-1
10
25
30
42
55
68
80
[0][1][2][3][4][5][6]

Apa yang saya lakukan?

Kotak [0] jadi abu-abu karena sudah diperiksa. Kotak kuning sekarang di [1], angkanya 25.

Bandingkan: 25 == 55Tidak sama ❌

Lanjut ke indeks berikutnya →

3 Periksa indeks ke-2
10
25
30
42
55
68
80
[0][1][2][3][4][5][6]

Apa yang saya lakukan?

Sekarang di [2], angkanya 30.

Bandingkan: 30 == 55Tidak sama ❌

Lanjut ke indeks berikutnya →

4 Periksa indeks ke-3 → DITEMUKAN! ✅
10
25
30
42
55
68
80
[0][1][2][3][4][5][6]

Apa yang saya lakukan?

Sekarang di [3], angkanya 42.

Bandingkan: 42 == 55Tidak sama ❌

Lanjut ke indeks berikutnya →

5 Periksa indeks ke-4 → DITEMUKAN! ✅
10
25
30
42
55
68
80
[0][1][2][3][4] ← KETEMU![5][6]

Apa yang saya lakukan?

Sekarang di [4], angkanya 55.

Bandingkan: 55 == 55SAMA! ✅

STOP! Angka 55 ditemukan di indeks 4. Selesai!

📌 Inti Cara Kerja Linear Search:
1.Mulai dari indeks 0 (paling kiri)
2.Periksa satu per satu: array[i] == target?
3.Jika SAMA → STOP, ketemu!
4.Jika TIDAK → i + 1, cek elemen berikutnya
5.Jika sampai akhir array dan tidak ketemu → target tidak ada

💡 Analogi kehidupan nyata: Kayak mencari kunci di tumpukan kunci. Kamu cek kunci pertama, kedua, ketiga… sampai ketemu (atau tidak ada).

LANGKAH 2

Pelajari Binary Search

Array: [10, 25, 30, 42, 55, 68, 80]

Target: cari angka 68

Syarat WAJIB: Array harus terurut dari kecil ke besar

1 Tentukan elemen TENGAH
LOW
25
30
42
55
68
HIGH
[0][1][2][3][4][5][6]

Apa yang saya lakukan?

LOW = indeks 0, HIGH = indeks 6

MID = (0 + 6) / 2 = 3

array[3] = 42

Bandingkan: 42 < 68 → artinya 68 lebih besar dari 42

Jadi 68 pasti ada di sebelah kanan indeks 3 → abaikan kiri, fokus kanan

LOW diubah jadi 4 (MID + 1)

2 Persempit ke SETENGAH KANAN
55
68
LOW
68
HIGH
[4][5][4][5][6]

Apa yang saya lakukan?

LOW = 4, HIGH = 6

MID = (4 + 6) / 2 = 5

array[5] = 68

Bandingkan: 68 == 68SAMA! ✅

STOP! Angka 68 ditemukan di indeks 5. Selesai!

📌 Inti Cara Kerja Binary Search:
1.Tentukan LOW (awal) dan HIGH (akhir)
2.Hitung MID = (LOW + HIGH) dibagi 2
3.Lihat nilai array[MID], bandingkan dengan target
4a.Jika array[MID] == targetSTOP, ketemu!
4b.Jika array[MID] < target → target di kanan → LOW = MID + 1
4c.Jika array[MID] > target → target di kiri → HIGH = MID – 1
5.Ulangi dari langkah 2 sampai ketemu atau LOW > HIGH

💡 Analogi kehidupan nyata: Kayak mencari kata di kamus. Kamu buka tengah buku → kata di situ terlalu kecil/kebesar? → buka setengah yang tepat → ulangi sampai ketemu. Jauh lebih cepat dari membaca dari halaman 1!

💡 Tips Mengerjakan Praktikum:
Linear Search: Tulis indeks 0, 1, 2, 3… secara berurutan. Setiap langkah cek SATU elemen.
Binary Search: SELALU tulis LOW dan HIGH dulu di setiap langkah. Hitung MID. Abaikan setengah yang tidak relevan.
Menghitung MID: LOW + HIGH, lalu bagi 2. Kalau hasilnya desimal, bulatkan ke bawah. Contoh: (3+7)/2 = 5.
Warna di simulasi: Kuning = sedang diperiksa, Hijau = ketemu, Abu = sudah dilewati. Gunakan ini sebagai panduan saat mengisi tabel.

📝 Praktikum Siswa

Kerjakan latihan berikut di buku tulis, lalu cek jawabanmu dengan klik “Lihat Jawaban”.

PRAKTIKUM 1

Tracing Manual — Linear Search

Diberikan array: [7, 15, 3, 22, 9, 31, 18, 5]

Cari angka 22 menggunakan Linear Search. Isilah tabel tracing berikut:

Langkah i array[i] array[i] == 22? Aksi
107?
2115?
323?
4???

Pertanyaan:

  1. Berapa langkah yang dibutuhkan untuk menemukan 22?
  2. Di indeks berapa angka 22 ditemukan?
  3. Berapa total perbandingan yang dilakukan?
Langkahiarray[i]== 22?Aksi
107TidakLanjut
2115TidakLanjut
323TidakLanjut
4322YA ✅STOP — Ditemukan!

Jawaban:

  1. 4 langkah
  2. Ditemukan di indeks 3
  3. Total perbandingan: 4 kali
PRAKTIKUM 2

Tracing Manual — Binary Search

Array yang sama: [7, 15, 3, 22, 9, 31, 18, 5]

⚠️ PERHATIAN: Array di atas TIDAK terurut! Apa yang terjadi jika kamu langsung menerapkan Binary Search? Mengapa?

Binary Search TIDAK BISA diterapkan pada array ini karena data tidak terurut. Binary Search bergantung pada perbandingan nilai tengah untuk menentukan “ke kiri” atau “ke kanan”. Jika data acak, keputusan ini akan salah.

Contoh: mid = 22, target = 9. Karena 22 > 9, Binary Search akan mencari di kiri. Tapi angka 9 justru ada di kanan indeks 4! Hasilnya: 9 tidak akan pernah ditemukan meskipun ada di array.

Sekarang, urutkan array tersebut terlebih dahulu, lalu lakukan tracing Binary Search untuk mencari angka 18:

Array terurut: [3, 5, 7, 9, 15, 18, 22, 31]

Langkah LOW HIGH MID array[MID] vs 18 Aksi
107???
2?????
3?????
LangkahLOWHIGHMIDarr[MID]vs 18Aksi
107399 < 18Cari kanan, LOW=4
247518== 18 ✅DITEMUKAN!

Hanya 2 langkah! Bandingkan dengan Linear Search yang butuh 6 langkah (18 ada di indeks 5 pada array terurut). Ini menunjukkan keunggulan Binary Search pada data terurut.

PRAKTIKUM 3

Perbandingan — Linear vs Binary Search

Array terurut: [2, 5, 8, 12, 16, 23, 38, 45, 56, 67, 78, 89, 91, 95, 100] (15 elemen)

Hitung jumlah langkah yang dibutuhkan untuk mencari angka berikut dengan kedua algoritma:

Target Linear Search
(langkah)
Binary Search
(langkah)
Lebih efisien?
2???
56???
100???
50???

Pertanyaan refleksi:

  1. Kapan Linear Search lebih efisien dari Binary Search?
  2. Apakah selisih langkah selalu sama untuk setiap target?
  3. Jika array berisi 1.000.000 elemen, perkirakan selisih langkah untuk target di tengah!
TargetLinearBinaryLebih efisien?
214Linear ✅
5683Binary ✅
100154Binary ✅
50154Binary ✅

Refleksi:

  1. Linear Search lebih efisien saat target ada di awal sekali array (contoh: angka 2 hanya butuh 1 langkah, Binary butuh 4). Tapi ini kasus terbaik — secara rata-rata, Binary tetap jauh lebih cepat.
  2. Tidak selalu sama. Tergantung posisi target. Target di awal → Linear menang. Target di tengah/akhir → Binary menang jauh.
  3. Linear: ~500.000 langkah. Binary: ⌈log₂1.000.000⌉ = 20 langkah. Selisihnya fenomenal!
PRAKTIKUM 4

Analisis Skenario Nyata

Tentukan algoritma searching yang paling tepat untuk setiap skenario berikut. Jelaskan alasanmu!

Skenario A:

Seorang guru mencari nama “Ahmad” dalam daftar hadir 30 siswa yang tidak diurutkan berdasarkan nama.

Pilihan: Linear Search / Binary Search — Alasan: …

Skenario B:

Aplikasi kamus digital mencari kata “algoritma” dalam database 50.000 kata yang diurutkan alfabet.

Pilihan: Linear Search / Binary Search — Alasan: …

Skenario C:

Seorang siswa baru saja menerima 5 nilai ujian dan ingin mengecek apakah nilainya ada yang sama dengan nilai temannya yang sudah diurutkan.

Pilihan: Linear Search / Binary Search — Alasan: …

Skenario A → Linear Search

Data tidak terurut → Binary Search tidak bisa digunakan. Linear Search satu-satunya pilihan. Dengan 30 data, waktu pencarian tetap sangat cepat.

Skenario B → Binary Search

Data terurut (50.000 kata) → Binary Search sangat ideal. Hanya butuh ~16 langkah (log₂50.000), dibanding Linear yang butuh sampai 50.000 langkah. Perbedaan 3.000x lebih cepat!

Skenario C → Binary Search

Data teman sudah terurut → Binary Search bisa dipakai. Meskipun hanya 5 nilai, prinsip yang sama berlaku. Ini juga melatih siswa untuk selalu mempertimbangkan Binary Search ketika data terurut, berapa pun ukurannya.

💡 Kesimpulan kunci: Pilihan algoritma TIDAK hanya didasarkan pada ukuran data, tapi juga pada sifat data (terurut atau tidak). Ini adalah kemampuan berpikir komputasional yang penting!

TANTANGAN

Reverse Engineering — Tebak Target!

Diberikan log langkah Binary Search berikut. Tentukan angka berapa yang sedang dicari dan di indeks berapa ditemukan!

Array: [4, 11, 19, 27, 33, 42, 55, 68, 74, 81, 90, 97]

Langkah 1:LOW=0, HIGH=11, MID=5 → arr[5]=42, 42 < target → LOW=6
Langkah 2:LOW=6, HIGH=11, MID=8 → arr[8]=74, 74 > target → HIGH=7
Langkah 3:LOW=6, HIGH=7, MID=6 → arr[6]=55, 55 < target → LOW=7
Langkah 4:LOW=7, HIGH=7, MID=7 → arr[7]=??, ?? == target → DITEMUKAN!

Pertanyaan:

  1. Berapa angka target yang dicari?
  2. Di indeks berapa ditemukan?
  3. Mengapa di langkah 1, 42 < target artinya cari ke kanan (LOW=6)?
  1. Target = 68 (karena di langkah 4, arr[7]=68 dan cocok dengan target)
  2. Ditemukan di indeks 7
  3. Karena array terurut ascending (kecil ke besar). Jika arr[MID] < target, artinya target pasti lebih besar dari MID, sehingga harus ada di sebelah kanan MID. Jadi kita geser LOW ke MID+1 untuk mempersempit pencarian ke setengah kanan.

💡 Tips mengerjakan soal seperti ini: Baca log dari bawah ke atas! Langkah terakhir langsung memberitahu arr[7] = target. Lalu kerjakan ke atas untuk memahami alur keputusannya.

📊

Sorting (Pengurutan)

Menyusun data dari terkecil ke terbesar atau sebaliknya.

🎮 Visualisasi Sorting

Perbandingan: 0 | Swap: 0

🎯 Kuis Sorting

📚

Stack (Tumpukan)

Prinsip LIFO: Last In First Out.

🎮 Simulasi Tumpukan

📖 Ringkasan Stack

Analogi: Tumpukan piring. Piring terakhir yang diletakkan adalah yang pertama diambil.

🚶

Queue (Antrean)

Prinsip FIFO: First In First Out.

🎮 Simulasi Antrean

🕸️

Teori Graf

Memodelkan hubungan antar objek dalam jaringan.

🗺️ Simulasi Jaringan (Graf)

Klik pada simpul (Node) untuk melihat simulasi koneksi.

💡 Studi Kasus

Google Maps

Simpul adalah persimpangan jalan, dan Sisi adalah jalan yang menghubungkannya.

Media Sosial

Simpul adalah profil pengguna, dan Sisi adalah hubungan pertemanan atau follower.

📝

Lembar Kerja (LKPD)

Kerjakan dan simpan progres belajarmu.

Scroll to Top