Computational Thinking: Berpikir Komputasional dari Nol

Belum masuk. Progresmu tidak tersimpan.

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

Bahasa Natural, Pseudocode, dan Flowchart

Di bab ini (9 bagian)
  1. Tujuan
  2. Satu algoritma, banyak cara menulis
  3. Bahasa natural
  4. Pseudocode
  5. Flowchart
  6. Dari pseudocode ke JavaScript
  7. Memilih bentuk yang tepat
  8. Kesalahan umum
  9. Rangkuman

Tujuan bab ini

  • Menuliskan satu algoritma dalam tiga bentuk: bahasa natural, pseudocode, dan flowchart.
  • Menyebutkan kelebihan dan kekurangan setiap bentuk.
  • Mengenali simbol-simbol standar flowchart dan fungsinya.
  • Menerjemahkan pseudocode menjadi kode JavaScript.

Satu algoritma, banyak cara menulis

Algoritma adalah pemikirannya, sedangkan cara menuliskannya bisa bermacam-macam. Ada tiga bentuk yang paling sering dipakai: bahasa natural, pseudocode, dan flowchart. Kita pakai satu kasus yang sama untuk membandingkannya: menentukan apakah sebuah bilangan genap atau ganjil.

Bahasa natural

Bahasa natural adalah bahasa sehari-hari yang ditulis sebagai langkah bernomor:

  1. Masukkan sebuah bilangan.
  2. Bagi bilangan dengan 2.
  3. Jika sisanya 0, tulis "Genap".
  4. Jika tidak, tulis "Ganjil".

Kelebihan: mudah dipahami siapa saja, bahkan yang belum pernah belajar pemrograman.

Kekurangan: bisa bermakna ganda. Langkah 2 misalnya, "bagi dengan 2" bisa diartikan hasil baginya atau sisanya. Langkah 3 memperjelas bahwa yang dilihat adalah sisa, tetapi pembaca harus menyimpulkannya sendiri.

Pseudocode

Pseudocode ("kode semu") adalah tulisan terstruktur yang mirip kode, tetapi tidak terikat pada bahasa pemrograman tertentu:

INPUT n
IF n MOD 2 = 0 THEN
    OUTPUT "Genap"
ELSE
    OUTPUT "Ganjil"
END IF

MOD adalah operasi sisa bagi. Contohnya, 7 MOD 2 = 1 karena 7 dibagi 2 adalah 3 sisa 1, sedangkan 8 MOD 2 = 0.

Kelebihan: terstruktur, ringkas, dan mudah diubah ke bahasa pemrograman apa pun.

Kekurangan: perlu sedikit latihan untuk membaca kata kunci seperti IF, THEN, dan END IF.

Satu hal penting: pseudocode tidak punya aturan baku. Ada yang menulis JIKA ... MAKA, ada yang memakai IF ... THEN. Yang penting konsisten dan jelas. Indentasi (menjorokkan baris) membantu menunjukkan langkah mana yang berada di dalam IF dan mana yang di dalam ELSE.

Flowchart

Flowchart adalah diagram alir. Langkah digambar sebagai simbol dan dihubungkan dengan panah.

Kelebihan: visual dan mudah diikuti alurnya, cocok untuk menjelaskan percabangan.

Kekurangan: memakan tempat dan repot diubah kalau algoritmanya panjang.

Simbol-simbol flowchart

Simbol-simbol standar flowchart

SimbolFungsi
Terminator (oval)Menandai awal (Mulai) dan akhir (Selesai)
Proses (persegi panjang)Perhitungan atau tindakan, misalnya total = a + b
Input/Output (jajar genjang)Memasukkan data atau menampilkan hasil
Keputusan (belah ketupat)Pertanyaan bercabang Ya/Tidak berdasarkan kondisi
Konektor (lingkaran kecil)Menghubungkan alur pada halaman yang sama
Sub-prosesMemanggil prosedur yang sudah didefinisikan

Garis alir (panah) menunjukkan arah urutan langkah. Alur dibaca dari atas ke bawah dan dari kiri ke kanan. Setiap flowchart harus punya satu Mulai dan minimal satu Selesai.

Flowchart genap atau ganjil

Kalau digambarkan, alurnya seperti ini:

  1. Terminator Mulai.
  2. Input/Output Masukkan n.
  3. Keputusan n MOD 2 = 0?
  4. Cabang Ya menuju Input/Output Tampilkan "Genap".
  5. Cabang Tidak menuju Input/Output Tampilkan "Ganjil".
  6. Kedua cabang bertemu di terminator Selesai.

Perhatikan bahwa simbol keputusan selalu punya dua jalan keluar yang diberi label Ya dan Tidak.

Dari pseudocode ke JavaScript

Pseudocode yang rapi hampir bisa diterjemahkan baris per baris:

PseudocodeJavaScript
INPUT nparameter fungsi n
n MOD 2n % 2
= 0 (membandingkan)=== 0
IF ... THEN ... ELSE ... END IFif (...) { ... } else { ... }
OUTPUT "Genap"return "Genap";

Hasilnya:

function genapAtauGanjil(n) {
  if (n % 2 === 0) {
    return "Genap";
  } else {
    return "Ganjil";
  }
}

genapAtauGanjil(8); // "Genap"
genapAtauGanjil(7); // "Ganjil"

Kenapa === dan bukan =? Di JavaScript, satu tanda sama dengan (=) berarti mengisi nilai, misalnya let x = 5. Untuk membandingkan, pakai tiga tanda sama dengan (===). Ini berbeda dari pseudocode, tempat = sering dipakai untuk membandingkan.

Lebih dari dua cabang

Bagaimana kalau pilihannya lebih dari dua? Pseudocode bisa memakai ELSE IF, dan JavaScript juga:

INPUT nilai
IF nilai >= 75 THEN
    OUTPUT "Tuntas"
ELSE IF nilai >= 60 THEN
    OUTPUT "Remedial"
ELSE
    OUTPUT "Mengulang"
END IF
function statusNilai(nilai) {
  if (nilai >= 75) {
    return "Tuntas";
  } else if (nilai >= 60) {
    return "Remedial";
  } else {
    return "Mengulang";
  }
}

Kondisi diperiksa dari atas. Begitu satu kondisi benar, cabang lain dilewati. Itu sebabnya urutan kondisi penting: kalau nilai >= 60 diletakkan paling atas, nilai 90 akan masuk "Remedial".

Memilih bentuk yang tepat

Tidak ada bentuk yang selalu paling baik. Pilih sesuai pembaca dan tujuannya:

  • Untuk menjelaskan ke teman atau orang tua, bahasa natural paling mudah diterima.
  • Untuk merancang program sebelum menulis kode, pseudocode paling praktis.
  • Untuk presentasi atau menunjukkan percabangan yang rumit, flowchart paling mudah diikuti.

Banyak programmer berpengalaman memulai dari pseudocode di kertas, baru kemudian menulis kode.

Kesalahan umum

  • Flowchart tanpa Selesai, atau dengan beberapa Mulai. Alur jadi tidak jelas awal dan akhirnya.
  • Simbol keputusan dengan satu panah keluar. Keputusan selalu bercabang Ya dan Tidak.
  • Memakai = untuk membandingkan di JavaScript. Gunakan ===.
  • Urutan else if yang keliru, sehingga kondisi yang lebih luas menutupi kondisi yang lebih sempit.

Rangkuman

  • Algoritma bisa ditulis dalam bahasa natural, pseudocode, atau flowchart.
  • Bahasa natural mudah dipahami tetapi bisa bermakna ganda; pseudocode terstruktur dan mudah diubah ke kode; flowchart visual dan mudah diikuti.
  • Pseudocode tidak punya aturan baku, yang penting konsisten dan jelas. MOD adalah operasi sisa bagi.
  • Simbol flowchart: terminator, proses, input/output, keputusan, konektor, dan sub-proses, dihubungkan garis alir.
  • Di JavaScript, MOD ditulis %, dan perbandingan memakai ===.

Selesaikan bab ini

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

Latihan kode: Dari pseudocode ke kode: harga tiket museum

Terjemahkan pseudocode ini menjadi fungsi hargaTiket(umur):

INPUT umur
IF umur < 5 THEN
    OUTPUT 0
ELSE IF umur <= 17 THEN
    OUTPUT 10000
ELSE
    OUTPUT 20000
END IF

Ingat: OUTPUT menjadi return, dan ELSE IF menjadi else if.

Latihan kode: Positif, negatif, atau nol

Tulis jenisBilangan(n) dari pseudocode berikut:

INPUT n
IF n > 0 THEN
    OUTPUT "Positif"
ELSE IF n < 0 THEN
    OUTPUT "Negatif"
ELSE
    OUTPUT "Nol"
END IF

Perhatikan huruf besar di awal setiap teks keluaran.

Cek pemahaman

  1. 1Apa arti operasi MOD dalam pseudocode?

  2. 2Simbol flowchart yang dipakai untuk pertanyaan bercabang Ya/Tidak adalah

  3. 3Pseudocode memiliki aturan penulisan baku yang wajib diikuti semua orang.

  4. 4Apa hasil pemanggilan statusNilai(65)?

    function statusNilai(nilai) {
      if (nilai >= 75) {
        return "Tuntas";
      } else if (nilai >= 60) {
        return "Remedial";
      } else {
        return "Mengulang";
      }
    }