Format Dokumen Pengajaran & Panduan Siswa
BINUS University @ Bekasi SMAS St. John Pertemuan 5 dari 17

MODUL 05 — Input & Output

Ekstrakurikuler CSSE: Computer Science & Software Engineering (Python)

Jenjang Peserta Siswa SMA (Kelas 10–12)
Alokasi Waktu 100 Menit
Fokus Materi input(), print(), f-string, int()/float(), program interaktif
Target Selesai Program yang membaca nama & umur lalu menyapa lewat f-string
Tools VS Code & Python (Run ▶)
Prioritas sesi: Wajib: input() (selalu menghasilkan string), print() dengan sep/end, f-string, konversi int()/float() sebelum hitung, dan program interaktif pertamamu.
Materi pengayaan (opsional jika waktu cukup)

Coba sep="" untuk menempelkan output, dan rangkai input() dua kali dalam satu baris kalimat f-string untuk membuat "kartu perkenalan" otomatis.

1. Tujuan Pembelajaran

  1. Menggunakan input() untuk menerima data dari pengguna, lengkap dengan prompt yang jelas.
  2. Menjelaskan dengan kalimat sendiri kenapa input() selalu menghasilkan string — walau isinya angka.
  3. Menggunakan print() untuk menampilkan output, termasuk mengatur sep dan end.
  4. Menyusun kalimat output rapi dengan f-string (f"Halo {nama}") alih-alih menyambung teks manual.
  5. Mengonversi input angka ke int atau float sebelum dipakai berhitung.
  6. Mengenali ValueError sebagai alarm "yang masuk bukan angka", bukan tanda program rusak.
  7. Menggabungkan semuanya menjadi program interaktif sederhana yang menyapa pengguna.

2. Peta Jalan 17 Pertemuan

Hari ini siswa menempuh barisan ke-5 dari 17 — 29% perjalanan:

[ 01-02 ] Fondasi: konsep program, algoritma, flowchart [ 03-05 ] Mulai coding: print, variabel, input/output <-- HARI INI (100 Menit) [ 06-07 ] Operator & percabangan if/elif/else [ 08 ] Mini Project 1: Decision Making [ 09 ] Looping / Perulangan [ 10 ] Nested Loop & Pattern Programming [ 11-13 ] List, Functions, String [ 14 ] Mini Project 2: Simple App [ 15 ] AI-Assisted Coding [ 16-17 ] Final Project: Development & Presentation

3. Rundown Waktu Terperinci (100 Menit)

WaktuBlokAktivitas
10'PembukaCover sesi, baca tujuan bersama, rekap Sesi 04 (variabel & tipe data — tanya: "inget bedanya int dan str?")
15'DemoProgram sapaan interaktif: komputer tanya nama lalu menyapa — siswa melihat "program yang menjawab" untuk pertama kalinya
25'Materi 1Paparan input() + aturan "input selalu string"; praktik program sapaan versi siswa
25'Materi 2Paparan print() (sep/end) + f-string; konversi int()/float() sebelum berhitung
15'PraktikProgram luas persegi panjang: input panjang & lebar, hitung, cetak dengan f-string
10'PenutupRangkuman 5 poin, preview Sesi 06 (Operators & Expressions), Q&A singkat

4. Pedagogi & Penjelasan Konsep

A. Analogi Formulir Pendaftaran

input() = lembar formulir. Saat kamu daftar ekstrakurikuler, panitia tidak menebak namamu — mereka kasih kolom kosong dan menunggu kamu mengisi. input("Nama: ") persis begitu: program berhenti sejenak, menampilkan pertanyaan, lalu menunggu kamu mengetik dan menekan Enter. Apa yang kamu ketik itu "kotak yang dikembalikan ke program" — dan di sinilah jebakannya: apa pun yang diketik, panitia selalu menyimpannya sebagai tulisan (string), walau isinya "16".

B. "Input Selalu String" — Aturan Emas Sesi Ini

Ketik 16 di input(), yang tersimpan adalah "16" (teks), bukan 16 (angka). Coba bayangkan konsekuensinya: "16" + "16" bukan 32 melainkan "1616" — kayak nyambungin dua kata, bukan menjumlahkan dua angka. Karena itu aturannya satu kalimat: mau dihitung? bungkus dulu dengan int() atau float(). Ini persis Catatan Pengajar di kurikulum resmi, jadi jangan dilewati — siswa yang keberatan "kok error" biasanya lupa konversi.

Catatan pengajar: saat demo, sengaja jalankan sekali int(input("Umur: ")) lalu ketik huruf — biarkan siswa melihat ValueError sendiri, baca pesannya bersama, lalu perbaiki. Error ditanggung di depan lebih aman daripada ditanggung sendiri di rumah.

C. print() Itu Ada Tombol Aturannya

print() bukan sekadar "cetak". Ada dua tombol kecil yang jarang disorot: sep (pemisah antar nilai, default spasi) dan end (penutup, default pindah baris). Trik paling berguna: end=" " membuat dua print() berikutnya nempel di baris yang sama — cocok untuk efek "mengetik bertahap". Dan untuk menyusun kalimat, pakai f-string (f"Halo {nama}") daripada pakai koma atau tanda + — lebih rapi, variabel langsung masuk ke kalimat.

D. Program Interaktif = Program yang Menjawab

Sejauh ini program siswa "bicara satu arah" — mencetak lalu selesai. Hari ini pertama kalinya program menunggu dan merespons. Framing untuk kelas: "program kalian dari hari ini bukan lagi pengumuman, tapi percakapan." Semua game, kalkulator, dan chatbot di pertemuan berikutnya dibangun di atas kebiasaan sederhana ini: tanya → simpan jawaban → proses → jawab balik.

5. Panduan Praktik Langkah demi Langkah

Langkah 1: Pemanasan — Cetak & Atur (10 menit)

Minta siswa menulis dan menjalankan:

print("CSSE", "Input", "Output", sep=" | ")
print("Belajar", end=" -> ")
print("berhasil")

Diskusikan kenapa dua baris terakhir jadi satu baris output (end=" -> " meniadakan pindah baris). Tantang siswa: ubah sep-nya jadi sep="..." dan prediksi hasilnya sebelum Run.

Langkah 2: Program Sapaan Pertama (15 menit)

Tulis bersama-sama, baris demi baris:

nama = input("Siapa namamu? ")
print(f"Halo, {nama}! Selamat belajar Python.")

Jalankan, ketik nama, tunjukkan programnya "berhenti menunggu". Lalu uji aturan emas:

umur = input("Umur: ")
print(umur + 1)   # BOOM! TypeError: hanya bisa str + str

Sengaja bikin error ini. Tanya: "pesan errornya bilang apa?" Bimbing siswa membaca TypeError — bukan dibaca sendiri oleh guru.

Langkah 3: Konversi & Hitung (15 menit)

Perbaiki kode Langkah 2:

umur = int(input("Umur: "))
print(f"Tahun depan kamu {umur + 1} tahun")

Cek dengan type() bila perlu: print(type(umur)) sebelum dan sesudah konversi. Lalu bedakan int() vs float() dengan input tinggi badan (meter, pakai titik: 1.65).

Langkah 4: Program Luas Persegi Panjang (15 menit)

Praktik utama sesi — program hitung luas dari input panjang & lebar:

panjang = float(input("Panjang (m): "))
lebar = float(input("Lebar (m): "))
luas = panjang * lebar
print(f"Luas {panjang} x {lebar} = {luas} meter persegi")

Uji dengan dua kasus: 10 dan 5 (hasil 50.0), lalu 2.5 dan 4 (hasil 10.0). Kenapa muncul .0? Karena float. Ini diskusi singkat yang bagus.

Langkah 5: Challenge — Identitas Lengkap (10 menit)

Program yang membaca nama, umur, kota lalu mencetak perkenalan utuh dengan f-string, contoh jalannya:

Nama: Budi
Umur: 16
Kota: Bekasi

Halo, namaku Budi, umur 16 tahun, dari Bekasi.
Senang bertemu! Sisaku paling suka pelajaran matematika.

Bebaskan kreatifitas baris penutup. Yang cepat selesai: tambahkan baris keempat input (hobi) dan masukkan ke kalimat.

Langkah 6: Pembahasan & Penutup (10 menit)

Bedah solusi challenge 1-2 siswa di depan kelas (proyektor/berbagi layar), sorot pemakaian f-string. Tutup dengan rangkuman 5 poin: input() selalu string, konversi sebelum hitung, f-string untuk kalimat, sep/end untuk atur output, program interaktif = percakapan. Lalu preview Sesi 06.

6. Master Solution Code (kode.py — Sesi 05)

Solusi utuh mandiri — bisa langsung Run dan hasilnya seperti komentar output di bawah:

# Sesi 05 - Input & Output
# Program interaktif: membaca nama, umur, kota - lalu menghitung luas

# --- Bagian 1: print() dengan sep dan end ---
print("CSSE", "Input", "Output", sep=" | ")   # CSSE | Input | Output
print("Belajar", end=" -> ")                  # tetap di baris yang sama
print("berhasil")                             # -> Belajar -> berhasil

# --- Bagian 2: input() + f-string ---
nama = input("Siapa namamu? ")                # contoh: Budi
umur = int(input("Umur: "))                   # contoh: 16
kota = input("Kota asal: ")                   # contoh: Bekasi

print(f"Halo, namaku {nama}, umur {umur} tahun, dari {kota}.")
print(f"Satu tahun lagi kamu berumur {umur + 1} tahun.")

# --- Bagian 3: studi kasus kumulatif - luas persegi panjang ---
panjang = float(input("Panjang (m): "))       # contoh: 2.5
lebar = float(input("Lebar (m): "))           # contoh: 4
luas = panjang * lebar

print(f"Luas {panjang} x {lebar} = {luas} meter persegi")

# Output lengkap kalau diisi seperti contoh:
# CSSE | Input | Output
# Belajar -> berhasil
# Siapa namamu? Budi
# Umur: 16
# Kota asal: Bekasi
# Halo, namaku Budi, umur 16 tahun, dari Bekasi.
# Satu tahun lagi kamu berumur 17 tahun.
# Panjang (m): 2.5
# Lebar (m): 4
# Luas 2.5 x 4.0 = 10.0 meter persegi

Tiga hal yang layak disorot saat membahas: (1) int() untuk umur karena tidak ada setengah tahun, float() untuk panjang karena boleh desimal; (2) {umur + 1} — f-string bisa menampung ekspresi, bukan cuma variabel; (3) luas dihitung sekali di variabel terpisah, bukan dijitip di dalam print() — kebiasaan yang membuat kode mudah dibaca.

7. Troubleshooting Guide (Pegangan Guru)

Masalah Penyebab Tindakan Perbaikan
TypeError saat menjumlah umur input() menghasilkan string; "16" + 1 tidak bisa dihitung. Bungkus dengan int()/float(). Kembalikan ke analogi formulir: "yang masuk itu tulisan, mau dihitung harus diubah jadi angka."
ValueError: invalid literal for int() User mengetik huruf atau spasi saat program minta angka. Normalisasi: ini alarm "isi formulirnya salah", bukan program rusak. Coba lagi dengan angka murni. (Validasi input dibahas lebih dalam nanti.)
Program tampak "menggantung" tanpa output Kursor diam di terminal — itu input() yang sedang menunggu, bukan macet. Arahkan siswa klik dulu di jendela terminal, ketik jawaban, Enter. Tanyakan: "prompt-nya muncul nggak?" Kalau tidak, cek argumen input().
Hasil 10.0 padahal diharapkan 10 float() dipakai padahal input bilangan bulat, atau salah satu operan float. Jelaskan float vs int. Untuk luas, .0 wajar dan tidak salah — diskusikan kapan butuh desimal.
NameError: name 'nama' is not defined Variabel dipakai di f-string sebelum diisi, atau salah eja (NAMA vs nama). Cek urutan baris: input dulu, baru cetak. Python peka huruf besar-kecil — samakan ejaannya.
Dua print() muncul di baris terpisah padahal mau nyambung Default end="\n" pindah baris tiap cetak. Ubah end: print("Belajar", end=" -> "). Tanya balik siswa: "tombol penutupnya diganti apa?"

8. Checklist Evaluasi Siswa

9. Jembatan ke Pertemuan Berikutnya (Sesi 06)

Hari ini programmu sudah bisa bertanya dan menjawab. Tapi ada satu kekurangan: semua yang boleh dilakukan program baru menjumlah umur atau menghitung luas. Minggu depan kita beri dia kemampuan berhitung yang utuh — tambah, bagi, sisa bagi, pangkat — plus cara menggabungkan kondisi. Dan seperti yang kamu lihat hari ini: hasil perbandingan nanti bakal bertanya "benar atau salah".

a = 10
b = 3
print(a / b)   # 3.3333...
print(a % b)   # sisa pembagian: 1
print(a > b)   # True - ini jadi bahan Sesi 06

Operator ini bekal langsung untuk Sesi 07 (percabangan if/elif/else) — hasil perbandingan hari ini yang menentukan jalannya cabang di sana.