Computational Thinking: Berpikir Komputasional dari Nol

Belum masuk. Progresmu tidak tersimpan.

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

Abstraksi: Menyaring yang Penting

Di bab ini (9 bagian)
  1. Tujuan
  2. Terlalu banyak informasi juga masalah
  3. Contoh klasik: peta jalur kereta
  4. Kasus: menghitung kebutuhan keramik lantai kelas
  5. Abstraksi dalam JavaScript
  6. Cara melatih abstraksi
  7. Latihan berpikir: rapor dan peringkat
  8. Kesalahan umum
  9. Rangkuman

Tujuan bab ini

  • Menjelaskan abstraksi sebagai kegiatan menyaring informasi.
  • Memisahkan informasi penting dan tidak penting pada sebuah kasus.
  • Membuat model sederhana dari masalah nyata, seperti menghitung kebutuhan keramik.
  • Menuliskan abstraksi dalam JavaScript dengan objek dan fungsi.

Terlalu banyak informasi juga masalah

Bayangkan temanmu bertanya arah ke rumahmu, lalu kamu menjawab dengan menyebutkan warna setiap pagar, merek setiap warung, dan jumlah pohon di sepanjang jalan. Semua informasi itu benar, tetapi temanmu justru bingung. Yang ia butuhkan hanya belokan dan patokan penting.

Di sinilah pilar ketiga berperan. Abstraksi adalah kegiatan menyaring informasi: mempertahankan hal yang penting untuk menyelesaikan masalah dan mengabaikan detail yang tidak diperlukan. Hasil abstraksi adalah sebuah model, yaitu gambaran masalah yang cukup sederhana namun tetap berguna.

Contoh klasik: peta jalur kereta

Peta kota yang detail memuat jalan, gedung, sungai, dan taman. Peta jalur kereta jauh lebih sederhana: hanya stasiun dan urutannya. Peta itu tidak menampilkan gedung, jalan, atau jarak sebenarnya.

Apakah peta jalur kereta "salah" karena tidak akurat? Tidak. Penumpang kereta hanya butuh urutan stasiun dan titik transit. Informasi lain justru mengganggu. Peta jalur kereta adalah abstraksi yang baik karena sesuai dengan tujuannya.

Pelajaran pentingnya: abstraksi selalu bergantung pada tujuan. Kalau tujuanmu mencari restoran di dekat stasiun, peta jalur kereta tidak cukup dan kamu butuh peta kota. Tidak ada abstraksi yang benar untuk semua masalah.

Kasus: menghitung kebutuhan keramik lantai kelas

Misalkan sekolah ingin mengganti keramik lantai kelasmu. Ada banyak informasi tentang kelas itu:

InformasiPenting atau diabaikan?
Panjang lantaiPenting
Lebar lantaiPenting
Ukuran keramikPenting
Warna dindingDiabaikan
Jumlah mejaDiabaikan
Nama wali kelasDiabaikan

Warna dinding mungkin penting kalau masalahnya mengecat ulang. Nama wali kelas penting kalau masalahnya membuat surat. Tetapi untuk menghitung keramik, yang relevan hanya ukuran lantai dan ukuran keramik.

Setelah informasi disaring, kita bisa membuat modelnya:

jumlah keramik = (panjang × lebar) ÷ luas 1 keramik

Contoh perhitungan

Lantai kelas berukuran 800 cm × 700 cm, dan keramiknya persegi dengan sisi 40 cm.

  1. Luas lantai = 800 × 700 = 560.000 cm².
  2. Luas 1 keramik = 40 × 40 = 1.600 cm².
  3. Jumlah keramik = 560.000 ÷ 1.600 = 350 keping.

Bagaimana kalau hasilnya tidak bulat, misalnya 350,4? Keramik tidak bisa dibeli sebagian, jadi kamu harus membulatkan ke atas menjadi 351. Ini contoh bagaimana model perlu disesuaikan dengan kenyataan.

Abstraksi dalam JavaScript

Objek: wadah informasi

Di JavaScript, informasi tentang satu benda bisa disimpan dalam objek:

const kelas = {
  panjang: 800,
  lebar: 700,
  warnaDinding: "krem",
  jumlahMeja: 36,
  waliKelas: "Bu Rina"
};

kelas.panjang; // 800
kelas.waliKelas; // "Bu Rina"

Objek ditulis dengan kurung kurawal. Setiap isi berbentuk nama: nilai dan dipisah koma. Untuk membaca nilainya, pakai titik, misalnya kelas.panjang.

Fungsi yang hanya mengambil yang penting

Abstraksi berarti fungsi kita hanya memakai informasi yang relevan:

function jumlahKeramik(panjang, lebar, sisiKeramik) {
  const luasLantai = panjang * lebar;
  const luasKeramik = sisiKeramik * sisiKeramik;
  return Math.ceil(luasLantai / luasKeramik);
}

jumlahKeramik(kelas.panjang, kelas.lebar, 40); // 350

Math.ceil adalah fungsi bawaan JavaScript untuk membulatkan ke atas. Math.ceil(350.4) menghasilkan 351, sedangkan Math.ceil(350) tetap 350.

Perhatikan bahwa jumlahKeramik sama sekali tidak tahu tentang warna dinding atau wali kelas. Fungsi ini bisa dipakai untuk kelas mana pun, bahkan untuk ruang tamu di rumah. Itulah keuntungan abstraksi: model yang sederhana lebih mudah dipakai ulang.

Kenapa memakai sentimeter?

Kamu mungkin bertanya kenapa contoh ini memakai sentimeter, bukan meter. Komputer menyimpan bilangan desimal dengan cara yang kadang tidak tepat. Coba hitung 8 × 7 ÷ (0,4 × 0,4) di JavaScript, hasilnya 349,99999999999994, bukan 350. Kalau hasil itu dibulatkan ke atas, kamu tetap mendapat 350, tetapi pada perhitungan lain selisih kecil seperti ini bisa menggeser hasil satu keping. Memakai bilangan bulat (sentimeter) menghindari masalah itu. Ini juga bagian dari abstraksi: memilih satuan yang paling memudahkan.

Cara melatih abstraksi

Saat menghadapi masalah, ajukan tiga pertanyaan ini:

  1. Apa tujuanku? Tanpa tujuan, kamu tidak bisa menilai mana yang penting.
  2. Informasi apa yang memengaruhi hasil? Kalau sebuah informasi diubah dan hasilnya tetap sama, informasi itu kemungkinan bisa diabaikan.
  3. Bisakah aku menuliskannya sebagai model atau rumus? Model membuat solusi bisa dipakai ulang.

Coba terapkan pada masalah "memilih rute ke sekolah". Tujuannya sampai tepat waktu. Yang memengaruhi hasil: jarak, kemacetan, dan jadwal angkutan. Yang bisa diabaikan: warna angkot dan nama jalan yang tidak kamu lewati.

Latihan berpikir: rapor dan peringkat

Wali kelas ingin menentukan siswa dengan rata-rata nilai tertinggi. Data setiap siswa memuat nama, alamat, nomor telepon orang tua, hobi, tinggi badan, dan nilai lima mata pelajaran. Mana yang penting?

Tujuannya mencari rata-rata tertinggi, jadi yang dibutuhkan hanya nama (untuk mengumumkan pemenangnya) dan nilai. Alamat, nomor telepon, hobi, dan tinggi badan tidak memengaruhi hasil. Modelnya: rata-rata = jumlah nilai ÷ banyaknya mata pelajaran, lalu bandingkan rata-rata semua siswa. Dari enam jenis informasi, cukup dua yang dipakai.

Kesalahan umum

  • Membuang informasi yang ternyata penting. Kalau kamu lupa ukuran keramik, modelnya tidak bisa dihitung. Abstraksi berarti menyaring, bukan membuang sembarangan.
  • Menyimpan semua informasi "untuk jaga-jaga". Fungsi yang menerima sepuluh parameter padahal hanya butuh tiga akan sulit dipakai dan dibaca.
  • Lupa menyesuaikan model dengan kenyataan. Hasil pembagian 350,4 keping tidak masuk akal di toko bangunan, jadi perlu dibulatkan ke atas.

Rangkuman

  • Abstraksi adalah menyaring informasi: ambil yang penting, abaikan yang tidak relevan.
  • Hasil abstraksi berupa model yang sederhana namun tetap berguna, seperti peta jalur kereta.
  • Apa yang penting selalu bergantung pada tujuan masalahnya.
  • Model kebutuhan keramik: (panjang × lebar) ÷ luas 1 keramik, lalu dibulatkan ke atas.
  • Dalam JavaScript, objek menyimpan banyak informasi, sedangkan fungsi yang baik hanya memakai yang relevan.

Selesaikan bab ini

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

Latihan kode: Keramik dari data ruangan

Data ruangan disimpan sebagai objek yang memuat banyak informasi, misalnya:

{ panjang: 800, lebar: 700, warnaDinding: "krem", jumlahMeja: 36 }

Tulis kebutuhanKeramik(ruang, sisiKeramik) yang menghitung jumlah keramik persegi yang dibutuhkan. Semua ukuran dalam sentimeter.

  • Pakai hanya ruang.panjang dan ruang.lebar (abstraksi).
  • Rumus: (panjang × lebar) ÷ (sisi × sisi), lalu bulatkan ke atas dengan Math.ceil.

Contoh: ruang 800 × 700 dengan keramik 40 cm butuh 350 keping.

Latihan kode: Saring data siswa

Data siswa memuat banyak hal, padahal untuk peringkat kita hanya butuh nama dan rata-rata nilai.

Tulis ringkasSiswa(siswa) yang menerima objek seperti:

{ nama: "Ani", alamat: "Jl. Melati 5", hobi: "voli", nilai: [80, 90, 70] }

dan mengembalikan objek baru yang hanya berisi nama dan rataRata, misalnya { nama: "Ani", rataRata: 80 }.

Petunjuk: jumlahkan isi siswa.nilai dengan perulangan for, lalu bagi dengan siswa.nilai.length. Objek baru ditulis { nama: ..., rataRata: ... }.

Cek pemahaman

  1. 1Untuk menghitung kebutuhan keramik lantai kelas, informasi mana yang penting?

  2. 2Kenapa peta jalur kereta disebut contoh abstraksi yang baik?

  3. 3Informasi yang diabaikan dalam abstraksi selalu sama untuk semua masalah.

  4. 4Apa hasil kode berikut?

    Math.ceil(560000 / 1600 + 0.4);