Sebelum menghitung apa pun, kalkulator kita membutuhkan kerangka yang bisa berdiri: menu yang tampil di terminal, input yang terbaca, dan alur program yang kembali ke menu setelah setiap perhitungan. Pada bagian ini kita membangun kerangka tersebut — hasil perhitungan sengaja masih berupa teks penampung. Fokus kita bukan aritmatika, melainkan cara menstrukturkan program interaktif menjadi fungsi-fungsi kecil yang masing-masing punya satu tanggung jawab.
Merancang Alur Program #
Alur program yang kita targetkan dapat ditulis sebagai urutan sederhana:
- tampilkan menu,
- baca pilihan pengguna (
1sampai5), - bila pilihan
5, keluar dari loop, - bila pilihan tidak dikenal, tampilkan pesan lalu kembali ke menu,
- baca dua angka,
- tampilkan hasil (masih berupa penampung),
- kembali ke langkah 1.
Dari urutan tersebut kita bagi program menjadi empat fungsi: tampilkan_menu() mencetak menu, baca_pilihan() membaca nomor operasi, baca_angka() membaca satu angka dengan label, dan jalankan() menjadi koordinator yang merangkai semuanya di dalam satu loop. Fungsi input() selalu mengembalikan string, sehingga nomor menu kita bandingkan sebagai string "1" sampai "5", bukan bilangan bulat.
Kode Lengkap Bagian 1 #
Simpan kode berikut sebagai main.py:
"""Kalkulator Terminal - fondasi program.
Bagian 1: kerangka menu, pembacaan input, dan loop utama program.
"""
def tampilkan_menu():
"""Cetak daftar operasi yang tersedia."""
print("=== Kalkulator Terminal ===")
print("1. Tambah")
print("2. Kurang")
print("3. Kali")
print("4. Bagi")
print("5. Keluar")
def baca_pilihan():
"""Baca nomor operasi yang dipilih pengguna."""
return input("Pilih operasi (1-5): ")
def baca_angka(label):
"""Baca satu angka dari pengguna berdasarkan label."""
teks = input(f"{label}: ")
return float(teks)
def jalankan():
"""Jalankan loop utama kalkulator."""
while True:
tampilkan_menu()
pilihan = baca_pilihan()
if pilihan == "5":
break
if pilihan not in ("1", "2", "3", "4"):
print(f"Pilihan '{pilihan}' tidak dikenal.")
continue
a = baca_angka("Angka pertama")
b = baca_angka("Angka kedua")
print("Hasil: (akan dihitung pada Bagian 2)")
print("Terima kasih telah menggunakan Kalkulator Terminal.")
if __name__ == "__main__":
jalankan()Mari kita bedah baris-baris kuncinya:
- Baris 22-25 (
def baca_angka(label):): fungsi ini menerima label seperti"Angka pertama", mencetak prompt dengan f-string, lalu mengembalikan hasilfloat(teks). Konversifloat()memungkinkan pengguna memasukkan bilangan desimal seperti2.5, sesuai materi Chapter Type Conversion. - Baris 30 (
while True:): loop tak berhingga menjadi jantung program interaktif. Loop ini berjalan terus sampai pernyataanbreakdijalankan — pola yang dibahas pada Chapter while Loops. - Baris 34-35 (
if pilihan == "5": break): satu-satunya pintu keluar resmi. Bandingkan string"5", bukan angka5, karenainput()mengembalikan string. - Baris 37-39 (
if pilihan not in ...): operator keanggotaannot inmemeriksa pilihan terhadap tuple yang berisi empat nilai sah. Pilihan lain ditolak dengan pesan, lalucontinuemelompat kembali ke awal loop tanpa membaca angka. - Baris 41-43: dua angka dibaca memakai
baca_angka(), lalu baris 43 mencetak penampung hasil. Perhitungan sungguhan menyusul pada Bagian 2. - Baris 45 (
print("Terima kasih ...")): baris ini berada di luar loop, sehingga hanya dijalankan setelahbreakterjadi — ucapan perpisahan selalu tampil apa pun jalur keluarnya. - Baris 48-49 (
if __name__ == "__main__":): baris ini menjaga agar loop hanya berjalan ketika berkas dieksekusi langsung. Mekanismenya dibahas tuntas pada Chapter Main Module dan name, dan perannya menjadi krusial ketika kita menulis test pada Bagian 4.
Mencoba Program #
Program interaktif dapat diuji tanpa mengetik manual: perintah printf mengirim baris-baris teks seolah-olah diketik pengguna, dan operator pipe | menyalurkannya ke program:
printf '1\n10\n5\n5\n' | python3 main.pyOutput yang Dihasilkan:
=== Kalkulator Terminal ===
1. Tambah
2. Kurang
3. Kali
4. Bagi
5. Keluar
Pilih operasi (1-5): Angka pertama: Angka kedua: Hasil: (akan dihitung pada Bagian 2)
=== Kalkulator Terminal ===
1. Tambah
2. Kurang
3. Kali
4. Bagi
5. Keluar
Pilih operasi (1-5): Terima kasih telah menggunakan Kalkulator Terminal.Uji juga jalur pilihan yang tidak dikenal:
printf 'sembilan\n5\n' | python3 main.pyOutput yang Dihasilkan:
=== Kalkulator Terminal ===
1. Tambah
2. Kurang
3. Kali
4. Bagi
5. Keluar
Pilih operasi (1-5): Pilihan 'sembilan' tidak dikenal.
=== Kalkulator Terminal ===
1. Tambah
2. Kurang
3. Kali
4. Bagi
5. Keluar
Pilih operasi (1-5): Terima kasih telah menggunakan Kalkulator Terminal.Program menolak sembilan, kembali ke menu, lalu keluar dengan sopan ketika menerima 5.
Ringkasan Bagian 1 #
Kerangka telah berdiri: empat fungsi dengan tanggung jawab jelas, satu loop utama, dan penanganan awal untuk pilihan yang tidak dikenal. Kelemahan yang tersisa disengaja — perhitungan belum ada, dan input angka yang salah masih bisa merobohkan program. Keduanya kita tuntaskan mulai Bagian 2. Berkas lengkap bagian ini dapat diunduh di bagian bawah halaman.
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
main.py
Unduh berkas"""Kalkulator Terminal - fondasi program.
Bagian 1: kerangka menu, pembacaan input, dan loop utama program.
"""
def tampilkan_menu():
"""Cetak daftar operasi yang tersedia."""
print("=== Kalkulator Terminal ===")
print("1. Tambah")
print("2. Kurang")
print("3. Kali")
print("4. Bagi")
print("5. Keluar")
def baca_pilihan():
"""Baca nomor operasi yang dipilih pengguna."""
return input("Pilih operasi (1-5): ")
def baca_angka(label):
"""Baca satu angka dari pengguna berdasarkan label."""
teks = input(f"{label}: ")
return float(teks)
def jalankan():
"""Jalankan loop utama kalkulator."""
while True:
tampilkan_menu()
pilihan = baca_pilihan()
if pilihan == "5":
break
if pilihan not in ("1", "2", "3", "4"):
print(f"Pilihan '{pilihan}' tidak dikenal.")
continue
a = baca_angka("Angka pertama")
b = baca_angka("Angka kedua")
print("Hasil: (akan dihitung pada Bagian 2)")
print("Terima kasih telah menggunakan Kalkulator Terminal.")
if __name__ == "__main__":
jalankan()