šŸ”„

Loop & Perulangan

Otomasi Pemberian Pakan & Monitoring Kualitas Air

Untuk Jurusan Agribisnis Perikanan Air Tawar (APAT)

Kelas X SMK

2 JP (90 Menit) Kelas X APAT 3 Level Kesulitan

Tujuan Pembelajaran

Setelah mengikuti praktek ini, kamu akan mampu:

  • Memahami konsep perulangan sebagai "otomasi tugas berulang" dalam program
  • Menggunakan for loop dengan range() untuk perulangan berbasis hitungan
  • Menggunakan while loop untuk perulangan berbasis kondisi
  • Menerapkan break dan continue untuk mengontrol alur loop
  • Membuat program jadwal pakan otomatis dan monitoring kualitas air harian
  • Membangun sistem perulangan bersarang (nested loop) untuk tabel data kolam

Konsep Dasar Loop

Analogi untuk Siswa APAT:

Bayangkan kamu harus memberi makan ikan di 5 kolam setiap hari. Kamu tidak perlu bilang "beri pakan kolam 1, beri pakan kolam 2, beri pakan kolam 3…" satu per satu. Cukup bilang: "ULANGI 5 kali: beri pakan kolam berikutnya!"

Itulah fungsi Loop — menjalankan perintah yang sama berulang kali secara otomatis. Bayangkan berapa banyak waktu yang kamu hemat!

Alur Kerja Loop:
🟦 MULAI
↓
ā“ Kondisi Loop Terpenuhi?
YA ↓
TIDAK →
āš™ļø Jalankan isi loop
↓
šŸ”¢ Update counter/kondisi
↺ KEMBALI KE ATAS
⬛ SELESAI (keluar loop)
Dua Jenis Loop Utama di Python:
šŸ”µ FOR Loop — "Ulangi Sebanyak X Kali"
for i in range(5):
    print("Beri pakan kolam", i+1)

āœ… Digunakan ketika jumlah pengulangannya sudah diketahui.

Contoh: beri pakan 3 kali sehari, catat 7 hari monitoring, cek 5 kolam.

🟣 WHILE Loop — "Ulangi Selama Kondisi Benar"
suhu = 22
while suhu < 25:
    print("Panaskan air...")
    suhu += 1

āœ… Digunakan ketika jumlah pengulangannya belum tentu, bergantung pada kondisi.

Contoh: terus aerasi selama DO rendah, terus beri makan selama masih ada stok.

FOR Loop & Fungsi range()

Memahami range() — Pembuat Urutan Angka
SintaksMenghasilkanContoh Penggunaan APAT
range(5) 0, 1, 2, 3, 4 Cek 5 kolam (indeks 0–4)
range(1, 6) 1, 2, 3, 4, 5 Beri pakan kolam 1 s/d 5
range(1, 8) 1, 2, 3, 4, 5, 6, 7 Monitoring 7 hari dalam seminggu
range(0, 31, 7) 0, 7, 14, 21, 28 Jadwal pengecekan tiap 7 hari (per minggu)
range(3, 0, -1) 3, 2, 1 Hitung mundur jadwal panen
Visualisasi range(1, 6):
1
2
3
4
5
← 5 angka = 5 kolam 🐟
Perintah Kontrol Loop: break & continue
šŸ›‘ break — Hentikan Loop Sekarang
for kolam in range(1, 6):
  if kolam == 3:
    print("Kolam 3 bocor!")
    break # Berhenti!
  print(f"Kolam {kolam} OK")

Menghentikan loop sepenuhnya saat kondisi terpenuhi.

ā­ļø continue — Lewati Iterasi Ini
for kolam in range(1, 6):
  if kolam == 3:
    continue # Skip kolam 3
  print(f"Beri pakan kolam {kolam}")

Melewati satu iterasi, lalu lanjut ke iterasi berikutnya.

WHILE Loop

Perhatian — Bahaya Infinite Loop!

while loop terus berjalan selama kondisinya BENAR. Jika kondisi tidak pernah berubah menjadi False, program akan berjalan selamanya (infinite loop)!
Selalu pastikan ada sesuatu di dalam loop yang mengubah nilai variabel kondisi agar loop bisa berhenti.

āŒ SALAH — Infinite Loop
stok_pakan = 10
while stok_pakan > 0:
    print("Beri pakan...")
    # āš ļø stok tidak berkurang!
    # Loop tidak akan berhenti!
āœ… BENAR — Loop Terkontrol
stok_pakan = 10
while stok_pakan > 0:
    print(f"Beri pakan, sisa: {stok_pakan} kg")
    stok_pakan -= 2 # āœ… berkurang!

Level Mudah

MUDAH

Menggunakan for loop dasar dengan range(). Cocok untuk pemula!

Contoh 1: Jadwal Pemberian Pakan 3x Sehari
Skenario: Lele harus diberi pakan 3 kali sehari (pagi, siang, sore). Buat program yang mencetak jadwal pakan otomatis menggunakan for loop.
# Jadwal pemberian pakan 3x sehari
waktu_pakan = ["Pagi (06.00)", "Siang (12.00)", "Sore (17.00)"]

print("=== JADWAL PAKAN HARIAN LELE ===")
for i, waktu in enumerate(waktu_pakan, 1):
    print(f"Pemberian ke-{i}: {waktu} — Berikan 2 kg pelet")

print("\nTotal pakan hari ini:", len(waktu_pakan) * 2, "kg")
Contoh Output:
=== JADWAL PAKAN HARIAN LELE ===
Pemberian ke-1: Pagi (06.00) — Berikan 2 kg pelet
Pemberian ke-2: Siang (12.00) — Berikan 2 kg pelet
Pemberian ke-3: Sore (17.00) — Berikan 2 kg pelet

Total pakan hari ini: 6 kg
Contoh 2: Cek Status 5 Kolam Sekaligus
Skenario: Kamu punya 5 kolam lele. Buat program yang mencetak laporan pengecekan pagi untuk setiap kolam secara otomatis menggunakan range().
# Pengecekan rutin 5 kolam pagi hari
jumlah_kolam = 5

print("=== PENGECEKAN PAGI - SEMUA KOLAM ===")
for nomor in range(1, jumlah_kolam + 1):
    print(f"Kolam {nomor}: āœ… Dicek — Air jernih, ikan aktif")

print(f"\nāœ”ļø Semua {jumlah_kolam} kolam berhasil dicek!")
Contoh Output:
=== PENGECEKAN PAGI - SEMUA KOLAM ===
Kolam 1: āœ… Dicek — Air jernih, ikan aktif
Kolam 2: āœ… Dicek — Air jernih, ikan aktif
Kolam 3: āœ… Dicek — Air jernih, ikan aktif
Kolam 4: āœ… Dicek — Air jernih, ikan aktif
Kolam 5: āœ… Dicek — Air jernih, ikan aktif

āœ”ļø Semua 5 kolam berhasil dicek!
šŸŽÆ Latihan Level Mudah

Lengkapi kode berikut!

Buat program yang mencetak tabel berat lele dari minggu ke-1 sampai minggu ke-8, dengan pertumbuhan 50 gram per minggu dimulai dari 30 gram.

# Tabel pertumbuhan lele mingguan
berat_awal = 30 # gram
pertumbuhan = 50 # gram/minggu

print("Minggu | Berat Lele (gram)")
print("-" * 25)

for minggu in ______: # range dari 1 sampai 8
    berat = ______ # hitung berat berdasarkan minggu
    print(f" {minggu} | {berat} gram")
Petunjuk:
  • Isi ______ pertama dengan range(1, 9) untuk minggu 1–8
  • Isi ______ kedua dengan rumus: berat_awal + (minggu * pertumbuhan)
Output yang Diharapkan:
Minggu | Berat Lele (gram)
-------------------------
1 | 80 gram
2 | 130 gram
3 | 180 gram
... | ...
8 | 430 gram

Level Sedang

SEDANG

Menggunakan while loop, break, continue, dan kombinasi loop dengan logika IF.

Contoh 1: Simulasi Pemanasan Air dengan While Loop
Skenario: Suhu air kolam awal 20°C. Pemanas meningkatkan suhu 1°C per menit. Program mensimulasikan proses pemanasan hingga suhu mencapai 25°C (suhu ideal lele).
# Simulasi pemanasan air kolam
suhu = 20.0 # °C
target = 25.0
menit = 0

print("=== SIMULASI PEMANASAN KOLAM ===")
print(f"Suhu awal: {suhu}°C | Target: {target}°C\n")

while suhu < target:
    menit += 1
    suhu += 1.0
    print(f"Menit ke-{menit}: Suhu sekarang {suhu}°C šŸŒ”ļø")

print(f"\nāœ… Suhu ideal tercapai dalam {menit} menit!")
print("Lele siap dipindahkan / diberi pakan.")
Contoh Output:
=== SIMULASI PEMANASAN KOLAM ===
Suhu awal: 20.0°C | Target: 25.0°C

Menit ke-1: Suhu sekarang 21.0°C šŸŒ”ļø

Menit ke-2: Suhu sekarang 22.0°C šŸŒ”ļø
Menit ke-3: Suhu sekarang 23.0°C šŸŒ”ļø
Menit ke-4: Suhu sekarang 24.0°C šŸŒ”ļø
Menit ke-5: Suhu sekarang 25.0°C šŸŒ”ļø

āœ… Suhu ideal tercapai dalam 5 menit!

Lele siap dipindahkan / diberi pakan.
Contoh 2: Monitoring Stok Pakan dengan Break & Continue
Skenario: Program mensimulasikan penggunaan stok pakan selama beberapa hari. Jika stok sudah habis, program berhenti. Jika stok < 5 kg, tampilkan peringatan tapi tetap lanjut.
# Monitoring stok pakan harian
stok_pakan = 20 # kg
pakan_per_hari = 3 # kg/hari
hari = 1

print("=== MONITORING STOK PAKAN ===")

while stok_pakan > 0:
    if stok_pakan < pakan_per_hari:
        print(f"Hari {hari}: āš ļø Stok tidak cukup! Sisa {stok_pakan} kg. Beli pakan dulu!")
        break # Hentikan, tidak bisa beri pakan

    stok_pakan -= pakan_per_hari

    if stok_pakan < 5:
        print(f"Hari {hari}: āœ… Pakan diberikan | Sisa: {stok_pakan} kg āš ļø STOK MENIPIS!")
    else:
        print(f"Hari {hari}: āœ… Pakan diberikan | Sisa: {stok_pakan} kg")

    hari += 1
Contoh Output:
=== MONITORING STOK PAKAN ===
Hari 1: āœ… Pakan diberikan | Sisa: 17 kg
Hari 2: āœ… Pakan diberikan | Sisa: 14 kg
Hari 3: āœ… Pakan diberikan | Sisa: 11 kg
Hari 4: āœ… Pakan diberikan | Sisa: 8 kg
Hari 5: āœ… Pakan diberikan | Sisa: 5 kg
Hari 6: āœ… Pakan diberikan | Sisa: 2 kg āš ļø STOK MENIPIS!
Hari 7: āš ļø Stok tidak cukup! Sisa 2 kg. Beli pakan dulu!
šŸŽÆ Latihan Level Sedang

Buat program rekap monitoring pH air selama 7 hari!

Program meminta input nilai pH untuk hari 1–7, kemudian:

  • Jika pH normal (6.5–8.5): cetak "āœ… NORMAL"
  • Jika pH tidak normal: cetak "āš ļø TIDAK NORMAL" dan catat ke daftar masalah
  • Di akhir, tampilkan total hari yang bermasalah
# Rekap monitoring pH 7 hari
hari_bermasalah = 0

for hari in ______: # range 1 sampai 7
    ph = float(input(f"Masukkan pH hari ke-{hari}: "))

    if ______: # cek apakah pH normal
        print(f" Hari {hari}: āœ… NORMAL (pH={ph})")
    else:
        print(f" Hari {hari}: āš ļø TIDAK NORMAL (pH={ph}) — perlu penanganan!")
        hari_bermasalah ______ # tambahkan 1

print(f"\nšŸ“Š Total hari bermasalah: {hari_bermasalah} dari 7 hari")
Petunjuk: Isi ______ dengan: (1) range(1, 8), (2) kondisi pH normal: 6.5 <= ph <= 8.5, (3) operator tambah: += 1

Level Sulit

SULIT

Loop bersarang (nested loop), akumulasi data, dan sistem monitoring multi-parameter.

Contoh 1: Laporan Kualitas Air 5 Kolam x 7 Hari (Nested Loop)
Skenario: Buat program yang menghasilkan tabel laporan kualitas air untuk 5 kolam selama 7 hari. Setiap kolam dicek sekali per hari. Tampilkan total hari pengecekan seluruhnya.
# === LAPORAN KUALITAS AIR MULTI-KOLAM ===
jumlah_kolam = 5
jumlah_hari = 7
total_pengecekan = 0

print("=" * 45)
print(" LAPORAN MINGGUAN — KUALITAS AIR KOLAM ")
print("=" * 45)

for kolam in range(1, jumlah_kolam + 1):
    print(f"\n🐟 KOLAM {kolam}:")
    for hari in range(1, jumlah_hari + 1):
        print(f" Hari {hari}: āœ… pH=7.2 | Suhu=27°C | DO=6.5 mg/L")
        total_pengecekan += 1

print("\n" + "=" * 45)
print(f"āœ”ļø Total pengecekan minggu ini: {total_pengecekan} kali")
print(f" ({jumlah_kolam} kolam Ɨ {jumlah_hari} hari = {total_pengecekan})")
Contoh Output (sebagian):
=============================================
LAPORAN MINGGUAN — KUALITAS AIR KOLAM
=============================================

🐟 KOLAM 1:

Hari 1: āœ… pH=7.2 | Suhu=27°C | DO=6.5 mg/L
Hari 2: āœ… pH=7.2 | Suhu=27°C | DO=6.5 mg/L
... (7 hari)

🐟 KOLAM 2:

... (7 hari)

=============================================

āœ”ļø Total pengecekan minggu ini: 35 kali
(5 kolam Ɨ 7 hari = 35)
šŸŽÆ Latihan Level Sulit — Kalkulator Total Biaya Pakan

Buat program kalkulator biaya pakan mingguan dengan kondisi berikut:

AturanKeterangan
Loop selama 7 hariInput berapa kg pakan yang digunakan tiap hari
Harga pakan: Rp 9.000/kgHitung biaya setiap hari
Jika pakan > 5 kg/hariTampilkan "āš ļø Pemakaian tinggi hari ini"
Di akhir loopTampilkan total pakan (kg) & total biaya (Rp)
Jika ada input pakan = 0Gunakan continue — skip hari itu
# Kalkulator biaya pakan mingguan
harga_per_kg = 9000
total_pakan = 0
total_biaya = 0

print("=== REKAP PAKAN 7 HARI ===")

for hari in ______: # range 1 sampai 7
    pakan = float(input(f"Hari ke-{hari} — pakan digunakan (kg): "))

    if ______: # jika pakan = 0, skip
        print(f" Hari {hari}: Tidak ada pemberian pakan (skip)")
        continue

    biaya_hari = ______ # hitung biaya hari ini
    total_pakan ______ # akumulasi total pakan
    total_biaya ______ # akumulasi total biaya

    if ______: # jika pakan > 5 kg
        print(f" Hari {hari}: {pakan} kg | Rp {biaya_hari:,.0f} āš ļø Pemakaian tinggi!")
    else:
        print(f" Hari {hari}: {pakan} kg | Rp {biaya_hari:,.0f}")

print(f"\n{'='*35}")
print(f"Total pakan : {total_pakan} kg")
print(f"Total biaya : Rp {total_biaya:,.0f}")
Petunjuk:
  • Loop: range(1, 8)
  • Kondisi skip: pakan == 0
  • Biaya hari ini: pakan * harga_per_kg
  • Akumulasi: gunakan += pakan dan += biaya_hari
  • Kondisi tinggi: pakan > 5

Ringkasan Materi

⭐ MUDAH

FOR Loop + range()

Perulangan dengan jumlah yang diketahui. Contoh: cetak jadwal pakan, cek 5 kolam, tabel pertumbuhan mingguan.

for i in range(1, 6):
  print("Kolam", i)
⭐⭐ SEDANG

WHILE + break/continue

Perulangan berbasis kondisi. Contoh: simulasi pemanasan, monitoring stok pakan, rekap harian.

while kondisi:
  # jalankan
  if ...: break
  if ...: continue
⭐⭐⭐ SULIT

Nested Loop + Akumulasi

Loop dalam loop. Contoh: laporan 5 kolam Ɨ 7 hari, kalkulator biaya pakan mingguan.

for kolam in ...
  for hari in ...:
    total += ...

Dokumentasi & Pengumpulan

WAJIB DIDOKUMENTASIKAN!

Perhatikan Instruksi Berikut:

Setiap praktek yang telah kamu lakukan WAJIB didokumentasikan dalam satu postingan di Blogger sebagai bukti pembelajaran.

1
Buat Postingan di Blogger

Dokumentasikan semua hasil praktek (kode program, output, dan penjelasan) dari Level Mudah, Sedang, dan Sulit dalam satu postingan Blogger yang rapi dan menarik.

2
Gunakan Judul yang Ditentukan

Pastikan postingan menggunakan judul persis seperti berikut:

Loop dan Perulangan Python untuk Budidaya Ikan
Judul harus persis sama termasuk huruf kapital dan spasi untuk memudahkan penilaian.
3
Kirim Link ke Google Form

Setelah postingan dipublikasikan, kirim link lengkap postinganmu melalui Google Form berikut:

Batas Waktu Pengumpulan: di hari saat ada jadwal KKA maksimal pukul 23:59 WIB
Tips Dokumentasi yang Baik:
  • Sertakan screenshot kode program dan hasil output dari ketiga level
  • Tambahkan penjelasan singkat tentang perbedaan for dan while loop
  • Tunjukkan kode jawaban latihan yang sudah kamu lengkapi dan jalankan
  • Gunakan gambar kolam ikan atau suasana budidaya untuk memperkaya konten
  • Pastikan postingan sudah dipublikasikan (bukan draft)
NILAI PRAKTEK AKAN DINILAI BERDASARKAN KELENGKAPAN DOKUMENTASI DI BLOGGER

Tips Belajar

For vs While — Kapan Dipakai?

Pakai for jika tahu berapa kali perulangan. Pakai while jika bergantung pada kondisi. Kebingungan? Tanya dirimu: "Berapa kali?" → for, "Sampai kapan?" → while.

Hindari Infinite Loop!

Selalu pastikan ada sesuatu dalam while loop yang mengubah variabel kondisi. Jika program terasa macet, tekan Ctrl+C untuk menghentikan.

Indentasi Tetap Wajib!

Sama seperti logika IF, semua kode di dalam loop HARUS diindentasi (masuk ke dalam). Nested loop = dua kali indentasi!

Loop = Otomasi Kolam!

Setiap kali membuat loop, bayangkan kamu sedang memprogram robot peternak ikan yang bekerja otomatis — cek semua kolam, beri pakan, catat data. Loop itu kuncinya!