Lewati navigasi
Pustaka TEMAS / Fungsi dengan kontrak yang dapat diuji · Pustaka
← Kembali ke Pustaka
Informatika Kelas IXPelajaran 9 / 32
BAB 3 · Kelas IX · semester 1

Fungsi dengan kontrak yang dapat diuji

INFO9-09

Tujuan belajar

Menulis fungsi yang memeriksa masukan sebelum menghasilkan nilai atau menolak keadaan invalid.

Bekal awal: Memahami fungsi, parameter, return, dan kondisi Python.

Konteks bab

Ketelitian memeriksa pekerjaan menjadi bentuk amanah. Program dan data digunakan sebagai contoh, tanpa akun atau transaksi nyata.

Bacaan dan kasus

3 · Program yang selalu tampak berhasil

Bacaan pendalaman

Kasus dan angka yang dibuat untuk latihan adalah simulasi/rekaan; fakta konsep dan sumber dibedakan dalam uraian.

Fungsi model menerima total8 dan dipinjam3. Pembuat berharap sisa5, tetapi kode menjumlahkan keduanya sehingga keluar11. Karena program tidak berhenti dengan pesan kesalahan, hasil semula dianggap benar. Pemeriksa kemudian meminta kontrak dan hitungan manual.

Perbaikan pertama mengganti penjumlahan dengan pengurangan. Uji8,3 lulus, tetapi data2,5 menghasilkan−3. Kelompok menyadari perhitungan benar belum cukup tanpa validasi. Mereka menambahkan pemeriksaan rentang serta kasus0,0 dan pinjam=total.

Laporan uji mencatat data, harapan, aktual, dan alasan. Kelompok tidak mengubah harapan5 menjadi11 agar semua tampak lulus. Mereka menyimpan versi awal untuk menjelaskan perubahan. Bukti belajar muncul dari kemampuan menemukan hubungan antara kontrak, bug, perbaikan, dan hasil uji.

Fokus pemeriksaan. Mengapa program yang selesai berjalan masih dapat salah?

Fungsi memisahkan satu tanggung jawab

Fungsi tersedia(total, dipinjam) menghitung sisa menurut kontrak. Ia tidak perlu sekaligus membaca formulir, menyimpan berkas, dan menggambar grafik. Pemisahan membuat perilaku lebih mudah diuji. Parameter ialah nama masukan pada definisi; argumen ialah nilai yang diberikan ketika fungsi dipanggil. return mengirim nilai ke pemanggil, berbeda dari print yang menampilkan teks.

Prasyarat dan hasil perlu jelas

Fungsi menerima dua bilangan bulat dengan 0≤dipinjam≤total. Setelah berhasil, hasil berada pada rentang0 sampai total. Masukan invalid ditolak sebelum hitungan dianggap sah. Pada contoh, ValueError dipakai untuk menandai kontrak tidak terpenuhi. Pemanggil dapat menangani kesalahan dan memberi pesan yang sesuai; jangan menangkap semua kesalahan lalu menampilkan angka0 seolah benar.

Contoh kecil mempunyai batas

Program hanya memeriksa satu pasangan nilai rekaan, tanpa transaksi bersamaan atau penyimpanan. Pemeriksaan tipe memakai type(x) is int agar nilai logika True/False tidak diperlakukan sebagai jumlah alat. Bentuk ini dipilih untuk kontrak latihan yang sempit, bukan satu-satunya gaya penulisan fungsi Python.

Fungsi persediaan pada data rekaan

def tersedia(total, dipinjam):
    if type(total) is not int or type(dipinjam) is not int:
        raise ValueError("jumlah harus bulat")
    if total < 0 or dipinjam < 0 or dipinjam > total:
        raise ValueError("jumlah di luar aturan")
    return total - dipinjam

print(tersedia(12, 5))
print(tersedia(0, 0))
try:
    print(tersedia(4, 6))
except ValueError:
    print("Data tidak valid")
Keluaran contoh
7
0
Data tidak valid

Exception ditangani pada pemanggil. Pemeriksaan tipe dan rentang merupakan kontrak contoh; kebenaran catatan nyata tetap memerlukan sumber.

Telusuri contoh

Apa beda return7 dan print(7)?

  1. return mengirim nilai untuk perhitungan berikutnya.
  2. print menulis tampilan; nilai kembalinya sendiri None.
  3. Pilih fungsi sesuai kebutuhan pemanggil.

Mengapa masukan invalid tidak diubah menjadi0?

  1. Nol merupakan hasil yang mungkin sah.
  2. Memakainya sebagai pengganti semua kesalahan menyamarkan masalah.
  3. Beri status atau kesalahan yang jelas sesuai kontrak.
Waspadai kekeliruan

print dan return tidak sama; menangkap kesalahan lalu mengembalikan0 dapat menyembunyikan data invalid.

Latihan mandiri

1 Apa hasil tersedia(12,5)?

Petunjuk awal

Pisahkan informasi yang diketahui, alasan yang diperlukan, dan batas kesimpulan. Periksa kembali contoh sebelum membuka pembahasan.

Pembahasan · buka setelah mencoba

7.

2 Apa hasil tersedia(0,0)?

Petunjuk awal

Pisahkan informasi yang diketahui, alasan yang diperlukan, dan batas kesimpulan. Periksa kembali contoh sebelum membuka pembahasan.

Pembahasan · buka setelah mencoba

0, valid.

3 Mengapa tersedia(4,6) ditolak?

Petunjuk awal

Pisahkan informasi yang diketahui, alasan yang diperlukan, dan batas kesimpulan. Periksa kembali contoh sebelum membuka pembahasan.

Pembahasan · buka setelah mencoba

Dipinjam melebihi total.

4 Mengapa fungsi tidak langsung menyimpan berkas?

Petunjuk awal

Pisahkan informasi yang diketahui, alasan yang diperlukan, dan batas kesimpulan. Periksa kembali contoh sebelum membuka pembahasan.

Pembahasan · buka setelah mencoba

Tanggung jawab hitungan dipisah agar dapat diuji dan digunakan tanpa efek samping yang tidak diperlukan.

PENDALAMAN WEB

Perluas pemahamanmu

Tambahkan pesan antarmuka yang menyebut kolom bermasalah tanpa membocorkan data lain. Pertahankan fungsi hitungan terpisah dari tampilan.

Coba dengan umpan balik

Latihan otomatis membantu pemeriksaan; tuliskan alasan dan langkah untuk membuktikan pemahaman.

1 Masukan total4 dipinjam6 harus…

Pilih satu jawaban

Petunjuk awal

Tentukan informasi, konsep dan bukti yang dibutuhkan.

Pembahasan · buka setelah mencoba

B. ditolak sesuai kontrak. Kontrak model melarang jumlah dipinjam melebihi total.

Praktik dan refleksi

Tulis tabel panggilan, hasil yang diharapkan, hasil aktual, dan status. Jelaskan setiap kasus sebelum menjalankan kode.

Penanda pribadi di perangkat ini; bukan nilai atau bukti penguasaan.

Pustaka Ponpes TemasVersi 1 · 14 Oktober 2026

Catat bacaanmu

Informatika Kelas IX · Pelajaran 9 · Fungsi dengan kontrak yang dapat diuji

Tersimpan di perangkat ini. Masuk agar progres dapat dibuka di perangkat lain.
Masuk untuk sinkronisasi

BERSAMA MENYEMPURNAKAN PUSTAKA

Catatan & masukan pembaca

Ada yang perlu diperbaiki? Bantu kami melalui koreksi, saran, atau rujukan.

Untuk Informatika Kelas IX · Pelajaran 9 · Fungsi dengan kontrak yang dapat diujiVersi 1

Masuk dengan Google agar nama terisi otomatis dan masukan terhubung ke riwayat serta penilaian poin kontribusi.

Beri masukan Nama wajib diisi · tanpa daftar akun
Kutip teks yang ingin dikoreksi opsional
Tambahkan usulan perbaikan & rujukan opsional

Masukan ditelaah pengelola sebelum ditampilkan. Nama yang diisi ikut tampil jika masukan diterbitkan.

Catatan yang telah ditinjau 0

Belum ada catatan yang ditampilkan untuk bagian ini. Masukan Anda tetap dapat dikirim kepada pengelola.

Beri masukan