Pola yang Sering Muncul · Pelajaran 7 dari 8
Studi kasus: rata-rata nilai kelas
10 menit baca · BelajarCode
Seorang guru ingin program untuk mengolah nilai ulangan. Guru akan mengetik nilai satu per satu, dan mengetik -1 jika sudah selesai. Program harus menampilkan banyak siswa, rata-rata, banyak siswa yang tuntas (nilai 75 ke atas), dan nilai tertinggi.
Flowchart
- Langkah 1, Mulai: Mulai
- Langkah 2, Proses: banyak ← 0, total ← 0, tuntas ← 0, tertinggi ← -1
- Langkah 3, Masukan: Baca nilai
- Langkah 4, Keputusan: nilai ≠ -1?Yajika ya, proses nilai ini (lihat langkah berikutnya)Tidakjika tidak, lompat ke "Ada data?"
- Langkah 5, Proses: banyak ← banyak + 1, total ← total + nilai
- Langkah 6, Keputusan: nilai ≥ 75?Yajika ya, tuntas ← tuntas + 1Tidakjika tidak, lanjut
- Langkah 7, Keputusan: nilai > tertinggi?Yajika ya, tertinggi ← nilai, lalu baca nilai berikutnyaTidakjika tidak, baca nilai berikutnya
- Langkah 8, Keputusan: Ada data? (banyak > 0)Yajika ya, tampilkan banyak, total ÷ banyak, tuntas, tertinggiTidakjika tidak, tampilkan "Belum ada nilai"
- Langkah 9, Selesai: Selesai
Perhatikan keputusan terakhir. Kalau guru langsung mengetik -1, banyak bernilai 0 dan pembagian total ÷ banyak akan error. Flowchart yang baik memikirkan kasus seperti ini.
Program
1banyak = 02total = 03tuntas = 04tertinggi = -156nilai = int(input("Nilai (-1 untuk selesai): "))7while nilai != -1:8 banyak += 19 total += nilai10 if nilai >= 75:11 tuntas += 112 if nilai > tertinggi:13 tertinggi = nilai14 nilai = int(input("Nilai (-1 untuk selesai): "))1516if banyak > 0:17 print("Banyak siswa:", banyak)18 print(f"Rata-rata: {total / banyak:.2f}")19 print("Tuntas:", tuntas)20 print("Tertinggi:", tertinggi)21else:22 print("Belum ada nilai")Nilai (-1 untuk selesai): 80 Nilai (-1 untuk selesai): 65 Nilai (-1 untuk selesai): 92 Nilai (-1 untuk selesai): 74 Nilai (-1 untuk selesai): 88 Nilai (-1 untuk selesai): -1 Banyak siswa: 5 Rata-rata: 79.80 Tuntas: 3 Tertinggi: 92
Menguji dengan kasus batas
Program yang baik diuji bukan hanya dengan data biasa, tetapi juga dengan kasus batas:
- Tanpa data sama sekali: langsung
-1. Hasilnya harus "Belum ada nilai". - Satu data saja.
- Nilai tepat 75: harus terhitung tuntas.
- Semua nilai sama.
Cek pemahaman
Kenapa tertinggi diberi nilai awal -1 pada program ini?
Latihan
Persentase kelulusan
Tambahkan persentase siswa yang tuntas ke dalam laporan, dibulatkan satu angka di belakang koma. Untuk contoh di atas, hasilnya 60.0%.
Pembahasan
Tambahkan satu baris di dalam blok if banyak > 0:
1banyak = 52tuntas = 33persen = tuntas / banyak * 1004print(f"Persentase tuntas: {persen:.1f}%")Persentase tuntas: 60.0%
Baris ini harus berada di dalam if banyak > 0:, karena jika banyak bernilai 0, pembagiannya error.
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.