Computational Thinking: Berpikir Komputasional dari Nol

Belum masuk. Progresmu tidak tersimpan.

Masuk
  • Bab 2 dari 8
  • 35 menit
  • 2 latihan kode
  • 4 soal kuis

Empat Pilar: Dekomposisi dan Pengenalan Pola

Di bab ini (6 bagian)
  1. Tujuan
  2. Empat pilar dalam satu gambaran
  3. Pilar 1: Dekomposisi
  4. Pilar 2: Pengenalan Pola
  5. Kesalahan umum
  6. Rangkuman

Tujuan bab ini

  • Menjelaskan empat pilar CT secara garis besar.
  • Memecah masalah besar menjadi sub-masalah dengan dekomposisi.
  • Menemukan pola pada barisan bilangan dan kejadian sehari-hari.
  • Menerapkan dekomposisi dan pola dalam fungsi JavaScript sederhana.

Empat pilar dalam satu gambaran

CT punya empat pilar yang akan kamu pelajari satu per satu:

PilarInti
DekomposisiMemecah masalah besar menjadi bagian-bagian kecil yang lebih mudah dikelola
Pengenalan PolaMenemukan kesamaan atau keteraturan antarbagian masalah
AbstraksiBerfokus pada informasi penting dan mengabaikan detail yang tidak relevan
AlgoritmaMenyusun langkah-langkah penyelesaian yang runtut dan jelas

Keempat pilar ini saling melengkapi dan tidak harus selalu dipakai berurutan. Bayangkan keluargamu menyiapkan liburan. Rencana dipecah menjadi transportasi, penginapan, dan makanan (dekomposisi). Kalian belajar dari liburan sebelumnya, misalnya hotel dekat pantai selalu cepat penuh (pola). Kalian fokus pada anggaran dan tanggal, bukan pada warna koper (abstraksi). Terakhir, kalian menyusun rencana langkah demi langkah (algoritma). Kadang kamu melompat bolak-balik, dan itu wajar.

Bab ini membahas dua pilar pertama.

Pilar 1: Dekomposisi

Dekomposisi berarti memecah masalah kompleks menjadi sub-masalah yang lebih kecil, sehingga setiap bagian bisa diselesaikan satu per satu.

Contoh: pentas seni sekolah

Panitia pentas seni tidak bisa langsung "membuat acara". Kalimat itu terlalu besar untuk dikerjakan. Maka masalahnya dipecah:

  • Acara: susun rundown, pilih pengisi.
  • Konsumsi: hitung porsi, pesan snack.
  • Dekorasi: tentukan tema panggung, siapkan alat.
  • Publikasi: buat poster, sebar undangan.

Perhatikan bahwa pemecahan terjadi dua tingkat. Mula-mula "pentas seni" dipecah menjadi empat bidang, lalu setiap bidang dipecah lagi menjadi tugas kecil. Kamu boleh terus memecah sampai setiap bagian terasa jelas dan bisa langsung dikerjakan.

Manfaat dekomposisi

  • Masalah terasa tidak menakutkan. "Pesan snack" jauh lebih ringan daripada "bikin pentas seni".
  • Tugas mudah dibagi ke anggota tim. Setiap orang memegang bagiannya.
  • Kesalahan lebih cepat ditemukan. Kalau snack kurang, kamu tahu harus memeriksa bagian konsumsi, bukan seluruh acara.

Contoh lain: menulis laporan dipecah menjadi pendahuluan, isi, dan penutup. Coba juga pikirkan: bagaimana kamu memecah tugas "belajar untuk ujian"? Mungkin per mata pelajaran, lalu per bab, lalu per hari.

Dekomposisi dalam kode

Di JavaScript, dekomposisi biasanya berarti membuat beberapa fungsi kecil, lalu satu fungsi besar yang memanggil semuanya.

function biayaKonsumsi(porsi, hargaPerPorsi) {
  return porsi * hargaPerPorsi;
}

function biayaPublikasi(jumlahPoster, hargaPoster) {
  return jumlahPoster * hargaPoster;
}

function totalBiaya(porsi, hargaPerPorsi, jumlahPoster, hargaPoster) {
  return biayaKonsumsi(porsi, hargaPerPorsi) + biayaPublikasi(jumlahPoster, hargaPoster);
}

totalBiaya(100, 5000, 10, 3000); // 500000 + 30000 = 530000

Setiap fungsi kecil mudah diperiksa sendiri. Kalau totalnya salah, kamu cukup menguji biayaKonsumsi dan biayaPublikasi satu per satu.

Pilar 2: Pengenalan Pola

Pengenalan pola berarti mencari kesamaan, keteraturan, atau tren di dalam masalah. Pola yang sudah dikenali bisa dipakai ulang untuk menyelesaikan masalah serupa, jadi kamu tidak perlu memulai dari nol.

Contoh: barisan bilangan

Lihat barisan ini: 2, 5, 8, 11, ...

Selisih antarsuku selalu 3. Jadi suku berikutnya adalah 11 + 3 = 14. Kita bisa melangkah lebih jauh dan mencari rumus suku ke-n:

n12345
Suku2581114

Karena bertambah 3 setiap langkah, rumusnya pasti mengandung 3n. Untuk n = 1, 3n = 3, padahal sukunya 2, jadi kurangi 1. Rumusnya 3n − 1. Cek: n = 4 menghasilkan 12 − 1 = 11. Cocok.

Inilah kekuatan pola. Tanpa rumus, kamu harus menjumlah satu per satu untuk mencari suku ke-100. Dengan rumus, langsung 3 × 100 − 1 = 299.

Pola juga tidak hanya berupa angka. Bentuk yang berulang, misalnya lingkaran, persegi, segitiga, lalu kembali ke lingkaran, juga pola.

Pola dalam keseharian

  • Jalanan padat pada jam berangkat dan pulang kerja.
  • Menu kantin yang berulang setiap minggu.
  • Penjualan payung naik saat musim hujan.

Begitu pola dikenali, kamu bisa bertindak lebih cerdas: berangkat lebih pagi, membawa bekal di hari menu yang tidak kamu suka, atau, kalau kamu pedagang, menambah stok payung menjelang musim hujan.

Pola dalam kode

Rumus 3n − 1 bisa langsung ditulis sebagai fungsi. Untuk membuat banyak suku sekaligus, kita butuh array dan perulangan for.

function sukuKe(n) {
  return 3 * n - 1;
}

function barisan(jumlah) {
  const hasil = [];
  for (let n = 1; n <= jumlah; n++) {
    hasil.push(sukuKe(n));
  }
  return hasil;
}

barisan(5); // [2, 5, 8, 11, 14]

Penjelasan sintaks baru:

  • const hasil = []; membuat array kosong, yaitu daftar berurutan. const dipakai untuk nama yang tidak akan diganti dengan nilai lain.
  • for (let n = 1; n <= jumlah; n++) berarti: mulai dari n = 1, ulangi selama n kurang dari atau sama dengan jumlah, dan tambah n satu setiap putaran (n++).
  • hasil.push(...) menambahkan nilai ke ujung array.

Perhatikan bahwa barisan memakai sukuKe. Pola ditemukan sekali, lalu dipakai ulang berkali-kali.

Kesalahan umum

  • Memecah terlalu sedikit. "Persiapan" dan "pelaksanaan" masih terlalu besar. Pecah lagi sampai setiap tugas jelas siapa mengerjakan apa.
  • Menebak pola dari terlalu sedikit data. Dua angka belum cukup untuk yakin. Selalu cek rumusmu pada beberapa suku.
  • Salah rumus karena lupa titik awal. Selisih 3 tidak otomatis berarti 3n. Periksa suku pertama untuk menentukan penyesuaiannya.

Rangkuman

  • CT punya empat pilar: dekomposisi, pengenalan pola, abstraksi, dan algoritma, yang saling melengkapi dan tidak harus berurutan.
  • Dekomposisi memecah masalah besar menjadi bagian kecil sehingga mudah dikerjakan, dibagi, dan diperiksa.
  • Dalam kode, dekomposisi berwujud beberapa fungsi kecil yang digabungkan.
  • Pengenalan pola mencari keteraturan agar solusi bisa dipakai ulang, misalnya rumus 3n − 1 untuk barisan 2, 5, 8, 11.
  • Selalu uji pola yang kamu temukan pada beberapa contoh sebelum memakainya.

Selesaikan bab ini

  1. 1. Baca materi
  2. 2. Latihan kode (2)
  3. 3. Kuis (4 soal)

Latihan kode: Dekomposisi biaya pentas seni

Panitia pentas seni memecah perhitungan biaya menjadi bagian kecil. Lengkapi tiga fungsi:

  1. biayaKonsumsi(porsi, hargaPerPorsi) mengembalikan porsi × harga per porsi.
  2. biayaDekorasi(jumlahAlat, hargaPerAlat) mengembalikan jumlah alat × harga per alat.
  3. totalBiaya(porsi, hargaPerPorsi, jumlahAlat, hargaPerAlat) mengembalikan jumlah kedua biaya. Panggil dua fungsi sebelumnya, jangan menghitung ulang.

Contoh: totalBiaya(100, 5000, 4, 25000) menghasilkan 500000 + 100000 = 600000.

Latihan kode: Pola barisan 4, 7, 10, 13

Barisan 4, 7, 10, 13, ... selalu bertambah 3.

  1. Temukan rumus suku ke-n, lalu tulis di sukuKe(n). Petunjuk: mulai dari 3n, lalu sesuaikan dengan suku pertama.
  2. barisan(jumlah) mengembalikan array berisi suku ke-1 sampai suku ke-jumlah. Pakai perulangan for dan push, serta panggil sukuKe.

Contoh: sukuKe(5) menghasilkan 16, dan barisan(4) menghasilkan [4, 7, 10, 13].

Cek pemahaman

  1. 1Panitia memecah "pentas seni" menjadi acara, konsumsi, dekorasi, dan publikasi. Pilar CT apa yang dipakai?

  2. 2Berapa suku berikutnya dari barisan 2, 5, 8, 11?

  3. 3Keempat pilar CT harus selalu dipakai berurutan dari dekomposisi sampai algoritma.

  4. 4Apa hasil pemanggilan barisan(3)?

    function sukuKe(n) {
      return 3 * n - 1;
    }
    function barisan(jumlah) {
      const hasil = [];
      for (let n = 1; n <= jumlah; n++) {
        hasil.push(sukuKe(n));
      }
      return hasil;
    }
    barisan(3);