Computational Thinking: Berpikir Komputasional dari Nol

Belum masuk. Progresmu tidak tersimpan.

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

Tiga Struktur Kontrol dan Studi Kasus Teh Manis

Di bab ini (9 bagian)
  1. Tujuan
  2. Tiga bahan dasar semua algoritma
  3. Sekuensial
  4. Percabangan
  5. Perulangan
  6. Studi kasus: membuat teh manis
  7. Latihan berpikir: temukan strukturnya
  8. Kesalahan umum
  9. Rangkuman

Tujuan bab ini

  • Menjelaskan tiga struktur kontrol dasar: sekuensial, percabangan, dan perulangan.
  • Memberi contoh sehari-hari untuk setiap struktur.
  • Membaca studi kasus membuat teh manis dalam pseudocode dan flowchart.
  • Menulis perulangan for dan while di JavaScript.

Tiga bahan dasar semua algoritma

Algoritma serumit apa pun, dari aplikasi ojek daring sampai gim di ponselmu, dibangun dari tiga struktur saja: sekuensial, percabangan, dan perulangan. Kalau kamu menguasai tiga ini, kamu bisa membaca dan menyusun hampir semua algoritma.

Sekuensial

Sekuensial berarti langkah dijalankan berurutan dari atas ke bawah, satu per satu, tanpa dilewati.

Ambil gelas
Isi air
Minum

Contoh sehari-hari: memakai kaus kaki, lalu sepatu. Urutannya tidak bisa ditukar. Memakai sepatu lalu kaus kaki jelas tidak masuk akal.

Di JavaScript, baris-baris di dalam fungsi juga dijalankan berurutan:

function siapkanMinum() {
  const langkah = [];
  langkah.push("ambil gelas");
  langkah.push("isi air");
  langkah.push("minum");
  return langkah;
}

Percabangan

Percabangan berarti memilih langkah berdasarkan kondisi benar atau salah.

IF hujan THEN
    bawa payung
ELSE
    pakai topi
END IF

Contoh sehari-hari: jika lampu merah, berhenti. Kamu sudah mengenal bentuk JavaScript-nya di bab sebelumnya, yaitu if dan else:

function bawaan(hujan) {
  if (hujan) {
    return "payung";
  } else {
    return "topi";
  }
}

Perulangan

Perulangan berarti mengulang langkah selama kondisi terpenuhi atau sejumlah kali tertentu.

FOR i = 1 TO 10
    push-up
END FOR

Contoh sehari-hari: menyikat gigi tiap pagi dan malam, setiap hari.

Ada dua jenis perulangan yang perlu kamu bedakan:

JenisKapan dipakaiContoh
Sejumlah kali (FOR)Banyaknya ulangan sudah diketahuiPush-up 10 kali
Selama kondisi (WHILE, REPEAT UNTIL)Banyaknya ulangan bergantung pada keadaanTunggu sampai air mendidih

for di JavaScript

function pushUp(jumlah) {
  const catatan = [];
  for (let i = 1; i <= jumlah; i++) {
    catatan.push("push-up ke-" + i);
  }
  return catatan;
}

pushUp(3); // ["push-up ke-1", "push-up ke-2", "push-up ke-3"]

while di JavaScript

while (kondisi) { ... } mengulang isi kurung kurawal selama kondisinya benar. Begitu kondisinya salah, perulangan berhenti.

function menitMendidih(suhuAwal) {
  let suhu = suhuAwal;
  let menit = 0;
  while (suhu < 100) {
    suhu = suhu + 10; // anggap suhu naik 10 derajat per menit
    menit = menit + 1;
  }
  return menit;
}

menitMendidih(30); // 7

Perhatikan bahwa di dalam while, nilai suhu terus berubah. Kalau baris suhu = suhu + 10 dihapus, kondisi suhu < 100 akan selalu benar dan perulangan tidak pernah berhenti. Algoritma itu tidak lagi berhingga.

Studi kasus: membuat teh manis

Sekarang gabungkan ketiganya. Ini pseudocode membuat teh manis:

MULAI
Rebus air
WHILE air belum mendidih
    tunggu
END WHILE
Seduh teh di gelas
REPEAT
    tambah 1 sendok gula, aduk
UNTIL rasa cukup manis
SELESAI

Mari bedah strukturnya:

  • Sekuensial: rebus air, lalu seduh teh, lalu tambah gula. Urutannya tetap.
  • Percabangan: "air belum mendidih" dan "rasa cukup manis" adalah kondisi yang diperiksa.
  • Perulangan: "tunggu" diulang selama air belum mendidih, dan "tambah gula" diulang sampai rasa cukup manis.

WHILE dan REPEAT UNTIL itu berbeda

Keduanya perulangan, tetapi ada perbedaan halus:

  • WHILE memeriksa kondisi di awal. Kalau air sudah mendidih sejak awal, langkah "tunggu" tidak dijalankan sama sekali.
  • REPEAT UNTIL menjalankan langkah dulu, baru memeriksa kondisi. Jadi gula pasti ditambahkan minimal satu sendok.

Perbedaan ini masuk akal untuk teh manis: kamu pasti menambah gula setidaknya sekali.

Versi flowchart

Pada flowchart, alurnya: Mulai, Rebus air, lalu keputusan Mendidih? Jika Tidak, panah kembali ke atas untuk menunggu. Jika Ya, lanjut ke Seduh teh + gula, lalu keputusan Cukup manis? Jika Tidak, panah kembali untuk menambah gula. Jika Ya, Selesai.

Perhatikan polanya: panah "Tidak" yang kembali ke atas membentuk perulangan. Di flowchart tidak ada simbol khusus untuk perulangan. Perulangan muncul dari simbol keputusan yang alurnya berbalik ke langkah sebelumnya.

Coba tambahkan langkah yang terlewat, misalnya menyiapkan gelas dan kantong teh. Di mana kamu meletakkannya agar urutannya masuk akal?

Latihan berpikir: temukan strukturnya

Coba tentukan struktur kontrol pada setiap kalimat berikut:

KalimatStruktur
Cuci tangan, lalu makanSekuensial
Jika PR sudah selesai, boleh bermainPercabangan
Lari keliling lapangan 5 kaliPerulangan sejumlah kali
Aduk adonan sampai rataPerulangan selama kondisi
Jika hujan, tunggu di kelas sampai redaPercabangan yang berisi perulangan

Kalimat terakhir menunjukkan bahwa struktur bisa bersarang: perulangan berada di dalam percabangan. Di JavaScript pun begitu, kamu boleh menulis while di dalam if, atau if di dalam for. Algoritma yang besar sebenarnya hanyalah susunan dan tumpukan tiga struktur ini.

Kesalahan umum

  • Perulangan tanpa perubahan. Kalau nilai dalam kondisi tidak pernah berubah di dalam perulangan, program macet.
  • Batas perulangan meleset satu. i < 10 mulai dari 1 hanya berjalan 9 kali, sedangkan i <= 10 berjalan 10 kali.
  • Memakai WHILE saat langkah wajib dijalankan minimal sekali. Pikirkan apakah kondisinya perlu diperiksa sebelum atau sesudah langkah.

Rangkuman

  • Semua algoritma dibangun dari tiga struktur: sekuensial, percabangan, dan perulangan.
  • Sekuensial menjalankan langkah berurutan; percabangan memilih langkah berdasarkan kondisi; perulangan mengulang langkah.
  • FOR dipakai saat jumlah ulangan diketahui; WHILE dan REPEAT UNTIL dipakai saat ulangan bergantung pada kondisi.
  • WHILE memeriksa kondisi di awal, REPEAT UNTIL menjalankan langkah dulu baru memeriksa.
  • Di flowchart, perulangan terbentuk dari panah keputusan yang kembali ke langkah sebelumnya.

Selesaikan bab ini

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

Latihan kode: REPEAT UNTIL: sendok gula

Setiap sendok gula menambah tingkat manis sebanyak 2. Pseudocode-nya:

manis = 0, sendok = 0
REPEAT
    tambah 1 sendok (manis bertambah 2)
UNTIL manis >= target
OUTPUT sendok

Tulis sendokGula(target). Karena ini REPEAT UNTIL, gula selalu ditambah minimal satu sendok, bahkan jika target 0.

JavaScript punya do { ... } while (kondisi); yang menjalankan isi dulu baru memeriksa kondisi. Perhatikan bahwa kondisinya kebalikan dari UNTIL: ulangi selama manis < target.

Contoh: sendokGula(5) menghasilkan 3 (manis 2, 4, 6).

Latihan kode: Langkah membuat teh

Tulis langkahTeh(suhuAwal) yang mengembalikan array langkah-langkah:

  1. Selalu mulai dengan "rebus air".
  2. Selama suhu di bawah 100, tambahkan "tunggu" dan naikkan suhu 10 derajat.
  3. Akhiri dengan "seduh teh".

Contoh: langkahTeh(80) menghasilkan ["rebus air", "tunggu", "tunggu", "seduh teh"], sedangkan langkahTeh(100) menghasilkan ["rebus air", "seduh teh"] karena air sudah mendidih.

Fungsi ini memuat sekuensial (urutan langkah) dan perulangan while yang kondisinya diperiksa di awal.

Cek pemahaman

  1. 1"Jika lampu merah, berhenti" adalah contoh struktur kontrol apa?

  2. 2Apa perbedaan utama WHILE dan REPEAT UNTIL?

  3. 3Pada flowchart membuat teh manis, perulangan terbentuk dari panah "Tidak" yang kembali ke langkah sebelumnya.

  4. 4Berapa nilai yang dikembalikan menitMendidih(70)?

    function menitMendidih(suhuAwal) {
      let suhu = suhuAwal;
      let menit = 0;
      while (suhu < 100) {
        suhu = suhu + 10;
        menit = menit + 1;
      }
      return menit;
    }