Looping & Reusability Kode

Memahami cara menggunakan for loop, while loop, dan fungsi untuk menghindari duplikasi kode pada program Arduino.

90 Menit
Modul 2: Dasar Pemrograman Pemula
Pertemuan 5

TPTujuan Pembelajaran

  1. Peserta didik dapat menggunakan for loop dan while loop untuk mengulang perintah
  2. Peserta didik dapat membuat fungsi sederhana untuk menghindari duplikasi kode
  3. Peserta didik dapat memahami scope variabel (lokal vs global)
  4. Peserta didik dapat menggabungkan loop dan fungsi dalam program Arduino yang terstruktur

Mengapa Kita Butuh Loop?

Pernahkah kalian membayangkan jika harus menulis perintah yang sama berulang kali di program? Misalnya kita ingin membuat LED berkedip 100 kali. Menuliskan digitalWrite() dan delay() sebanyak 100 kali tentu akan sangat melelahkan dan membuat program menjadi sangat panjang!

For Loop: Pengulangan Terstruktur

For Loop digunakan saat kita sudah tahu pasti berapa kali sebuah blok kode harus diulang (misalnya persis 5 kali, atau 10 kali).

Alur kerja dari For Loop

While Loop: Pengulangan Berbasis Kondisi

Berbeda dengan For Loop yang mengulang berdasarkan hitungan, While Loop mengulang kode selama suatu kondisi masih bernilai benar (True). Ini sangat berguna kalau kita tidak tahu persis harus berapa kali mengulang, tetapi kita tahu kapan harus berhenti (misal: selama tombol ditekan).

Fungsi: Reusability Kode

Pernahkah kalian menggunakan remote TV? Setiap tombol punya fungsi spesifik. Kita tidak perlu tahu bagaimana sirkuit di dalam remote bekerja, cukup tekan tombol "Volume Up" dan volume bertambah.

Dalam pemrograman, Fungsi bekerja mirip seperti itu. Kita bisa membungkus beberapa baris kode dan memberinya nama. Jadi setiap kali kita butuh kode tersebut, kita cukup memanggil nama fungsinya. Ini mencegah duplikasi kode atau disebut Reusability Kode.

Program LED Berkedip dengan Pola

Mari kita gabungkan Loop dan Fungsi untuk membuat sinyal morse SOS (S = tiga kedipan pendek, O = tiga kedipan panjang).

SOS_Morse.ino
cpp
// ── Global Variables ────────────────────────
const int LED_PIN = 13;

// ── Fungsi Reusable ─────────────────────────
void kedipPendek() {
  digitalWrite(LED_PIN, HIGH);
  delay(200);
  digitalWrite(LED_PIN, LOW);
  delay(200);
}

void kedipPanjang() {
  digitalWrite(LED_PIN, HIGH);
  delay(600);
  digitalWrite(LED_PIN, LOW);
  delay(200);
}

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
  Serial.println("Program SOS Morse dimulai!");
}

void loop() {
  Serial.println("--- SOS ---");
  
  // S: tiga titik (pendek)
  for (int i = 0; i < 3; i++) {
    kedipPendek();
  }
  delay(400); // jeda antar huruf
  
  // O: tiga garis (panjang)
  for (int i = 0; i < 3; i++) {
    kedipPanjang();
  }
  delay(400);
  
  // S: tiga titik (pendek)
  for (int i = 0; i < 3; i++) {
    kedipPendek();
  }
  
  delay(2000); // jeda antar kata SOS
}
Serial Monitor Output
Program SOS Morse dimulai! --- SOS --- --- SOS --- --- SOS ---

Troubleshooting

Masalah:Pesan error 'kedipPendek was not declared in this scope'

Solusi:Pastikan nama fungsi yang dipanggil sama persis huruf besar-kecilnya dengan nama saat dibuat (case-sensitive).

Cek Pemahaman

Jika kita ingin mengulang kode sebanyak tepat 5 kali, struktur apa yang paling cocok digunakan?

Mudah

Latihan Praktik

Modifikasi Pola Berkedip

Ubah program SOS di atas sehingga menampilkan pola lain, misalnya huruf pertama dari namamu dalam sandi morse. Gunakan fungsi kedipPendek() dan kedipPanjang() serta kombinasi for loop!

Kesimpulan Hari Ini
  • Looping mencegah kita menulis ulang kode yang sama berulang kali.
  • Gunakan For Loop untuk jumlah pengulangan yang pasti.
  • Gunakan While Loop untuk pengulangan berdasarkan kondisi.
  • Fungsi membungkus blok kode agar bisa dipanggil berulang (reusable).

RRefleksi

Luangkan 2–3 menit untuk menjawab pertanyaan di bawah secara jujur.

Kejutan & Penemuan

Apa yang paling mengejutkan atau menarik hari ini?

Apa hal baru yang kamu pelajari tentang cara membuat kode lebih ringkas?

Masih Membingungkan

Apa yang masih membingungkan atau ingin kamu pahami lebih dalam?

Apakah ada bagian dari for loop atau while loop yang masih membingungkan?

Rencana Selanjutnya

Apa yang ingin kamu coba atau pelajari minggu depan?

Bagaimana fungsi bisa membantumu di project akhir nanti?

Refleksi tidak dinilai — ini adalah ruang jujurmu untuk berpikir.

Selamat, Anda Telah Menyelesaikan Modul 1 & 2! 🎉

Anda telah mempelajari pondasi Computational Thinking dan dasar-dasar pemrograman Arduino. Sekarang saatnya untuk menguji pemahaman Anda melalui Ulangan Harian.

Mulai Uji Kompetensi (Modul 1 & 2)