stdsquare²
🎓 Kelas
stdsquare / materi / slides / pertemuan-05
Tema
Japan
Arcade
Dark Retro
Font
‹ Daftar slide Pertemuan 5: Text Files dan Penanganan Eksepsi
Program Studi Bisnis Digital • FEB UNDIP

Algoritma dan Pemrograman

Pertemuan 5 — Text Files dan Penanganan Eksepsi

Bagaimana program Anda menyimpan data ke luar memori sementara, dan bagaimana program tetap berjalan aman ketika terjadi kesalahan tak terduga.

RPS minggu 5 · 2x50 menit

Tujuan Pembelajaran Hari Ini

Empat capaian yang harus Anda kuasai setelah pertemuan ini, sejalan dengan Sub-CPMK minggu 5.

Sub-CPMK 5.1
01
Menjelaskan konsep file teks dan fungsi open() beserta mode akses r, w, dan a.
Sub-CPMK 5.2
02
Mempraktikkan cara menulis dan membaca file teks memakai Python, termasuk pola with open().
Sub-CPMK 5.3
03
Mengidentifikasi jenis eksepsi (exception) umum dan memahami mengapa program bisa berhenti mendadak.
Sub-CPMK 5.4
04
Menerapkan try-except-else-finally untuk membuat program yang tangguh terhadap kesalahan.

Mengapa Ini Penting bagi Bisnis Digital?

Bayangkan Anda mengelola sistem pencatatan transaksi untuk sebuah UMKM di Tokopedia. Dua masalah nyata akan segera Anda temui.

Masalah 1 — Data hilang. Setiap kali program Python ditutup, semua variabel di memori ikut hilang. Kalau daftar transaksi hanya disimpan di variabel, besok pagi semuanya kosong lagi. Anda butuh file teks agar data tersimpan permanen di penyimpanan komputer (disk).
Masalah 2 — Program berhenti mendadak. Kalau pelanggan mengetik huruf padahal diminta jumlah barang, atau file catatan stok belum ada, program Python tanpa penanganan akan langsung crash — berhenti total di tengah transaksi. Anda butuh penanganan eksepsi agar hal itu tidak terjadi.
Bagian 1 dari 3
Membaca & Menulis Text File
Bagaimana program Python menyimpan dan mengambil kembali data dari luar memori — ke dalam file teks di disk komputer Anda.

Fungsi open(): Pintu Masuk ke File

Python menyediakan fungsi bawaan open() untuk membuka file teks. Fungsi ini butuh nama file dan mode akses — cara Anda ingin memakai file itu.

"r"ReadBaca isi file.File harus sudah ada."w"WriteTulis baru; isi lamaakan TERTIMPA habis."a"AppendTambah data barudi akhir file lama.

Contoh: open("penjualan.txt", "r") membuka file penjualan.txt khusus untuk dibaca.

Pola Aman: Blok with open()

Python menyediakan pola context manager (pengelola konteks) via kata kunci with agar file otomatis tertutup setelah selesai dipakai — tanpa Anda harus mengetik close() manual.

Langkah 1 — Tanpa with (rawan lupa)
file = open("penjualan.txt", "r") isi = file.read() print(isi) file.close() # mudah terlupa!
Langkah 2 — Dengan with (disarankan)
with open("penjualan.txt", "r") as file: isi = file.read() print(isi) # file otomatis tertutup di sini

Menulis ke File: write() dan writelines()

Setelah file terbuka dalam mode "w" atau "a", Anda memakai write() untuk satu baris teks, atau writelines() untuk beberapa baris sekaligus dari sebuah list.

Langkah 1 — write() satu per satu
with open("catatan.txt", "a") as f: f.write("Kopi Susu - Rp18000\n") f.write("Roti Bakar - Rp15000\n")

Tanda \n = pindah baris baru; kalau lupa, semua teks akan menyambung jadi satu baris.

Langkah 2 — writelines() dari list
item = ["Kopi Susu\n", "Roti Bakar\n"] with open("catatan.txt", "a") as f: f.writelines(item)

Cocok kalau data Anda sudah berbentuk kumpulan (list) baris teks.

Tiga Cara Membaca File

Setelah file dibuka dalam mode "r", Python punya tiga metode baca dengan hasil yang berbeda.

read()
Satu String
Membaca seluruh isi file sekaligus jadi satu string panjang, termasuk semua tanda \n di dalamnya.
readline()
Satu Baris
Membaca satu baris saja setiap kali dipanggil — cocok dipakai berulang dalam loop while.
readlines()
List Baris
Membaca semua baris sekaligus, dikembalikan sebagai list — tiap elemen adalah satu baris teks.
Cara paling umum membaca baris demi baris: for baris in file: — Python otomatis mengiterasi file baris per baris tanpa perlu readlines() dulu.

Hitung dari Nol: Total Penjualan dari File

File penjualan.txt milik Kedai Kopi Anira berisi 4 baris angka transaksi (Rupiah). Program membaca tiap baris dan menjumlahkannya.

150000 200000 175000 300000
LangkahPerhitunganNilai
Baca baris 1total = 0 + 150.000Rp 150.000
Baca baris 2total = 150.000 + 200.000Rp 350.000
Baca baris 3total = 350.000 + 175.000Rp 525.000
Baca baris 4total = 525.000 + 300.000Rp 825.000
TOTAL PENJUALAN
Rp 825.000
dari 4 transaksi tercatat
total = 0 with open("penjualan.txt") as f: for baris in f: total += int(baris)
Bagian 2 dari 3
Eksepsi: Ketika Program Berhenti
Mengenali jenis-jenis kesalahan yang membuat program Python berhenti mendadak (crash) di tengah jalan.

Apa Itu Eksepsi (Exception)?

Definisi Kerja

Eksepsi (exception) adalah kesalahan yang terjadi saat program sedang berjalan (runtime), bukan kesalahan penulisan kode (syntax error) yang terdeteksi sebelum program dijalankan. Tanpa penanganan, eksepsi membuat program berhenti total (crash).

Jenis EksepsiKapan MunculContoh Kasus
FileNotFoundErrorFile yang dicari tidak adaopen("stok.txt") padahal file belum dibuat
ValueErrorNilai salah tipe/formatint("sepuluh") — teks bukan angka
ZeroDivisionErrorPembagian dengan noltotal / jumlah_item saat item = 0
KeyErrorKunci tidak ditemukanMencari data pelanggan dengan ID yang tak ada

Simulasi: Program Tanpa Penanganan Eksepsi

Bayangkan sistem kasir sederhana untuk toko online kecil menghitung harga per unit. Tanpa penanganan eksepsi, satu input salah bisa menghentikan seluruh program.

Langkah 1 — Kode berjalan normal
total_harga = 100000 jumlah_item = int(input("Jumlah item: ")) harga_satuan = total_harga / jumlah_item print(harga_satuan)

Kasir mengetik 4 → program mencetak 25000.0, semua lancar.

Langkah 2 — Kasir salah ketik
Jumlah item: empat Traceback (most recent call last): File "kasir.py", line 2 ValueError: invalid literal for int() with base 10: 'empat'

Program berhenti total (crash) — transaksi pelanggan yang sedang antre pun ikut terganggu.

Bagian 3 dari 3
try-except: Menjaga Program Tetap Berjalan
Struktur kode yang menangkap eksepsi sebelum ia sempat menghentikan program Anda secara paksa.

Struktur Dasar try-except

Kode di dalam blok try "dicoba" dijalankan; kalau muncul eksepsi, Python langsung lompat ke blok except yang sesuai, tanpa menghentikan program.

Langkah 1 — Tulis blok try
try: jumlah_item = int(input("Jumlah item: ")) harga = 100000 / jumlah_item print(harga)
Langkah 2 — Tangkap dengan except
except ValueError: print("Input harus berupa angka!")

Sekarang kasir mengetik "empat" → program mencetak pesan sopan, tidak crash.

Menangani Beberapa Jenis Eksepsi Sekaligus

Satu blok try boleh diikuti beberapa blok except, masing-masing untuk jenis eksepsi yang berbeda.

try: jumlah_item = int(input("Jumlah item: ")) harga_satuan = total_harga / jumlah_item print(f"Harga satuan: Rp{harga_satuan}") except ValueError: print("Input harus berupa angka, bukan huruf.") except ZeroDivisionError: print("Jumlah item tidak boleh nol.")
Kasir ketik "lima" → ditangkap oleh except ValueError.
Kasir ketik 0 → ditangkap oleh except ZeroDivisionError.

Melengkapi Pola: else dan finally

else — kalau TIDAK ada eksepsi

Kode di blok else hanya berjalan kalau blok try berhasil tanpa eksepsi sama sekali — dipisah dari try agar lebih jelas mana kode "inti" dan mana kode "risiko".

finally — SELALU berjalan

Kode di blok finally selalu dijalankan, baik terjadi eksepsi maupun tidak — cocok untuk membersihkan sumber daya, misalnya menutup file.

try: f = open("stok.txt", "r") except FileNotFoundError: print("File stok.txt tidak ditemukan.") else: print("File berhasil dibuka.") finally: print("Pengecekan stok selesai.")

Hitung dari Nol: Rata-Rata Belanja dengan Penanganan Eksepsi

Kedai Kopi Anira mencatat 3 transaksi pelanggan di file belanja.txt: Rp120.000, Rp95.000, Rp130.000. Program menghitung rata-rata per transaksi.

LangkahPerhitunganNilai
Jumlahkan 3 transaksi120.000 + 95.000 + 130.000Rp 345.000
Hitung n (jumlah baris)len(daftar_transaksi)3
Bagi total dengan n (try)345.000 ÷ 3Rp 115.000
Simulasi file kosong (except)345.000 ÷ 0 → ditangkap"Data kosong, rata-rata Rp0"
RATA-RATA PER TRANSAKSI
Rp 115.000
kondisi normal, 3 transaksi
try: rata2 = total / len(daftar) except ZeroDivisionError: rata2 = 0 print("Data kosong")

Praktik Terbaik: Gabungkan with dan try-except

Pola paling aman untuk bekerja dengan file: bungkus with open() di dalam try, agar file otomatis tertutup dan eksepsi tetap tertangkap.

try:with open(file)baca & proses data(file otomatis tertutup)exceptFileNotFoundError:tampilkan pesan sopanfinally(opsional)log "proses selesai"
try: with open("data_pelanggan.txt", "r") as f: data = f.readlines() print(f"{len(data)} baris berhasil dibaca") except FileNotFoundError: print("File data_pelanggan.txt belum ada di folder ini.")

Latihan Kelas: Sistem Pencatat Transaksi UMKM

Kerjakan berpasangan (10 menit), lalu satu pasangan akan diminta mendemonstrasikan hasilnya.

Instruksi
  • Buat file transaksi.txt memakai mode "a", tulis 3 transaksi contoh (nama produk & harga)
  • Baca kembali file itu, hitung total seluruh harga memakai perulangan
  • Bungkus proses pembacaan dengan try-except FileNotFoundError
  • Uji coba: hapus/ganti nama file lalu jalankan lagi — pastikan program tidak crash
Tantangan tambahan (opsional): Tambahkan penanganan ValueError untuk kasus harga yang tersimpan sebagai teks tidak valid, misalnya baris kosong di dalam file.

Ringkasan & Pertemuan Berikutnya

Yang Sudah Anda Kuasai
  • open() dengan mode r / w / a, dan pola aman with open()
  • Menulis file dengan write() dan writelines()
  • Membaca file dengan read() / readline() / readlines()
  • try-except-else-finally untuk menangkap eksepsi dengan tenang
Pertemuan 6 — Fungsi dalam Pemrograman. Kita akan belajar membungkus kode berulang (seperti perhitungan total & validasi input hari ini) ke dalam fungsi bernama, lengkap dengan parameter dan nilai kembali (return), agar kode Anda lebih rapi dan bisa dipakai berulang kali.