Dasar-Dasar Pemrograman
Modul Pembelajaran Python

Dasar-Dasar Pemrograman Python

Pelajari dasar-dasar pemrograman menggunakan bahasa Python, mulai dari algoritma, flowchart, pseudocode, variabel, tipe data, operator, input, output, seleksi, dan perulangan.

Materi ini juga membahas fungsi, rekursi, list, tuple, dictionary, set, file handling, serta pengolahan data untuk membangun program Python yang terstruktur dan mudah dikembangkan.

16

Pertemuan

10+

Konsep Python

3

Evaluasi Utama

Topik Pembelajaran Python

Algoritma & Flowchart
Susun langkah-langkah penyelesaian masalah sebelum membuat program Python.
Dasar-Dasar Python
Pelajari variabel, tipe data, operator, input, output, dan sintaks Python.
Seleksi & Perulangan
Gunakan if, elif, else, for, dan while untuk mengatur alur program.
Fungsi & Rekursi
Buat program modular menggunakan fungsi, parameter, return, dan rekursi.
Struktur Data & File
Kelola data menggunakan list, tuple, dictionary, set, serta file Python.
Dasar-Dasar Pemrograman Python

Introduction

Pemrograman adalah proses menyusun instruksi agar komputer dapat menyelesaikan suatu masalah secara sistematis.

Apa Itu Pemrograman Python?

Python adalah bahasa pemrograman tingkat tinggi yang dirancang agar mudah dibaca, dipahami, dan digunakan. Python memiliki sintaks yang sederhana sehingga cocok untuk pemula yang baru mempelajari pemrograman.

Dalam pembelajaran ini, Python digunakan untuk memahami konsep dasar pemrograman, seperti algoritma, variabel, tipe data, operator, input, output, seleksi, perulangan, fungsi, struktur data, dan pengolahan file.

Sebelum menulis kode, seorang programmer perlu memahami masalah yang akan diselesaikan. Masalah tersebut kemudian diubah menjadi algoritma, ditulis dalam bentuk pseudocode atau flowchart, lalu diterjemahkan ke dalam kode Python.

Mengapa Belajar Python?

  • Sintaks sederhana dan mudah dibaca
  • Cocok untuk pembelajaran pemrograman dasar
  • Digunakan dalam berbagai bidang teknologi
  • Mendukung pemrograman terstruktur dan modular
  • Memiliki banyak library dan komunitas

Alur Pembelajaran Pemrograman

1. Analisis Masalah

Memahami masalah, kebutuhan input, proses, dan output.

2. Merancang Algoritma

Menyusun langkah penyelesaian menggunakan pseudocode atau flowchart.

3. Menulis Kode

Menerjemahkan algoritma ke dalam program menggunakan bahasa Python.

4. Pengujian

Menjalankan program, menemukan kesalahan, dan memperbaiki kode.

Contoh Program Python Sederhana

Program berikut meminta nama pengguna kemudian menampilkan pesan sapaan. Contoh ini menunjukkan penggunaan input dan output dalam Python.

Fungsi input() digunakan untuk menerima data dari pengguna, sedangkan fungsi print() digunakan untuk menampilkan informasi ke layar.

Python Code
nama = input("Masukkan nama Anda: ")

print(f"Halo, {nama}!")
print("Selamat belajar Python.")

Konsep yang Akan Dipelajari

  • Algoritma, flowchart, dan pseudocode
  • Variabel dan konstanta
  • Tipe data Python
  • Operator aritmatika dan logika
  • Input dan output
  • Percabangan menggunakan if, elif, dan else
  • Perulangan for dan while
  • Fungsi dan parameter
  • Fungsi rekursif
  • List, tuple, dictionary, dan set
  • Record dan nested record menggunakan dictionary
  • File handling menggunakan Python
Tips Belajar Python
  • Pahami logika program sebelum menghafalkan sintaks.
  • Ketik dan jalankan sendiri setiap contoh program.
  • Biasakan membaca pesan error dengan teliti.
  • Uji program menggunakan berbagai jenis input.
  • Gunakan nama variabel yang jelas dan mudah dipahami.
  • Latih kemampuan dengan membuat program sederhana.
Dasar-Dasar Pemrograman Python

Tujuan Pembelajaran

Setelah menyelesaikan pembelajaran ini, mahasiswa diharapkan mampu memahami konsep dasar pemrograman dan menerapkannya menggunakan bahasa Python.

Capaian Pembelajaran Umum

Pembelajaran Dasar-Dasar Pemrograman bertujuan untuk membangun kemampuan berpikir logis, sistematis, dan komputasional dalam menyelesaikan masalah menggunakan program Python.

Mahasiswa tidak hanya mempelajari sintaks Python, tetapi juga memahami proses analisis masalah, perancangan solusi, implementasi kode, pengujian, dan perbaikan program.

Pengetahuan

Mahasiswa mampu memahami konsep-konsep dasar pemrograman dan struktur bahasa Python.

  • Memahami konsep algoritma
  • Menjelaskan fungsi flowchart dan pseudocode
  • Memahami variabel dan tipe data
  • Menjelaskan operator Python
  • Memahami konsep seleksi dan perulangan
Keterampilan

Mahasiswa mampu menerapkan konsep pemrograman dalam bentuk program Python yang dapat dijalankan.

  • Membuat program input dan output
  • Menggunakan if, elif, dan else
  • Menggunakan perulangan for dan while
  • Membuat fungsi dan fungsi rekursif
  • Mengolah data menggunakan struktur data Python
Sikap dan Etika

Mahasiswa mampu menerapkan sikap bertanggung jawab dan disiplin dalam proses pengembangan program.

  • Menulis kode secara rapi dan terstruktur
  • Menggunakan nama variabel yang jelas
  • Menghargai karya dan kode orang lain
  • Melakukan pengujian secara bertanggung jawab
  • Mendokumentasikan hasil pekerjaan

Tujuan Pembelajaran Khusus

  1. Mahasiswa mampu menjelaskan pengertian algoritma dan karakteristik algoritma yang baik.
  2. Mahasiswa mampu membuat flowchart dan pseudocode untuk menyelesaikan masalah.
  3. Mahasiswa mampu menerjemahkan algoritma ke dalam kode Python.
  4. Mahasiswa mampu menggunakan variabel, konstanta, dan tipe data Python.
  5. Mahasiswa mampu menggunakan operator aritmatika, perbandingan, dan logika.
  1. Mahasiswa mampu membuat program dengan input dan output.
  2. Mahasiswa mampu menerapkan percabangan menggunakan if, elif, dan else.
  3. Mahasiswa mampu menerapkan perulangan menggunakan for dan while.
  4. Mahasiswa mampu membuat dan menggunakan fungsi dalam Python.
  5. Mahasiswa mampu mengembangkan project Python sederhana secara mandiri.

Ruang Lingkup Pembelajaran

Tahap Materi Kompetensi yang Diharapkan
Pertemuan 1 Algoritma dan Flowchart Mampu merancang langkah penyelesaian masalah secara sistematis.
Pertemuan 2 Struktur dan Tipe Data Python Mampu menggunakan variabel, tipe data, dan operator.
Pertemuan 3-4 Input, Output, dan Seleksi Mampu membuat program dengan alur keputusan.
Pertemuan 5-6 Perulangan Mampu mengotomatisasi proses berulang menggunakan loop.
Pertemuan 7 Prosedur dan Fungsi Mampu membuat program yang modular dan mudah digunakan kembali.
Pertemuan 9-14 Struktur Data dan File Mampu mengelola data menggunakan list, dictionary, dan file.
Pertemuan 15-16 Evaluasi dan Project Mampu mengembangkan aplikasi Python sederhana secara utuh.
Indikator Keberhasilan
  • Program dapat dijalankan tanpa kesalahan sintaks.
  • Program menghasilkan output yang sesuai dengan kebutuhan.
  • Algoritma dapat dijelaskan dengan baik.
  • Kode menggunakan struktur yang rapi dan mudah dibaca.
  • Program telah diuji menggunakan beberapa skenario input.
Bentuk Evaluasi
  • Latihan pemrograman setiap materi
  • Kuis teori dan analisis kode
  • Penugasan individu atau kelompok
  • Project UTS
  • Project UAS
Pesan Pembelajaran

Fokus utama pembelajaran ini bukan hanya menghafalkan sintaks Python, tetapi memahami cara berpikir dalam menyelesaikan masalah. Tuliskan algoritmanya, buat programnya, uji hasilnya, lalu perbaiki berdasarkan kesalahan yang ditemukan.

Pertemuan 1

Algoritma

Algoritma adalah urutan langkah-langkah logis, sistematis, dan terbatas yang digunakan untuk menyelesaikan suatu masalah.

Pengertian Algoritma

Dalam pemrograman, algoritma digunakan sebagai dasar untuk menyusun solusi sebelum solusi tersebut diterjemahkan ke dalam bahasa pemrograman seperti Python.

Algoritma tidak bergantung pada bahasa pemrograman tertentu. Satu algoritma dapat diimplementasikan menggunakan Python, Java, C++, JavaScript, atau bahasa pemrograman lainnya.

Dengan merancang algoritma terlebih dahulu, proses penulisan program menjadi lebih terarah, mudah dipahami, dan lebih mudah diperbaiki apabila terjadi kesalahan.

Ciri-Ciri Algoritma

  • Memiliki langkah-langkah yang jelas
  • Memiliki awal dan akhir
  • Menghasilkan output
  • Setiap langkah dapat dilaksanakan
  • Menyelesaikan masalah secara sistematis

Komponen Dasar Algoritma

Input

Data yang digunakan sebagai masukan ke dalam program.

Proses

Langkah pengolahan data untuk menghasilkan solusi.

Output

Hasil yang diperoleh setelah data diproses.

Termination

Algoritma harus berhenti setelah menyelesaikan langkahnya.

Contoh Masalah

Diketahui panjang dan lebar sebuah persegi panjang. Buatlah algoritma untuk menghitung luas persegi panjang.

Input:
  • Panjang
  • Lebar
Proses:

Luas dihitung menggunakan rumus:

Luas = Panjang x Lebar
Output:

Nilai luas persegi panjang.

Langkah-Langkah Algoritma

  1. Mulai.
  2. Masukkan nilai panjang.
  3. Masukkan nilai lebar.
  4. Hitung luas dengan rumus panjang dikalikan lebar.
  5. Tampilkan hasil luas.
  6. Selesai.

Implementasi Algoritma dengan Python

Setelah algoritma dirancang, langkah-langkah tersebut dapat diterjemahkan menjadi program Python.

Kode Program
# Program menghitung luas persegi panjang

panjang = float(input("Masukkan panjang: "))
lebar = float(input("Masukkan lebar: "))

luas = panjang * lebar

print(f"Luas persegi panjang adalah: {luas}")

Penjelasan Kode

Kode Penjelasan
input() Digunakan untuk menerima masukan dari pengguna dalam bentuk teks.
float() Mengubah data masukan menjadi bilangan desimal agar dapat digunakan dalam operasi matematika.
panjang * lebar Menghitung luas berdasarkan rumus persegi panjang.
f-string Menampilkan nilai variabel ke dalam teks menggunakan format yang mudah dibaca.
print() Menampilkan hasil program ke layar.
Efektivitas

Algoritma harus mampu menghasilkan solusi yang sesuai dengan permasalahan.

Efisiensi

Algoritma sebaiknya menggunakan waktu dan sumber daya secara optimal.

Keterbacaan

Langkah-langkah algoritma harus mudah dibaca, dipahami, dan dikomunikasikan.

Kesalahan Umum dalam Membuat Algoritma

  • Langkah-langkah algoritma tidak berurutan.
  • Input dan output tidak dijelaskan dengan jelas.
  • Algoritma tidak memiliki kondisi berhenti.
  • Langkah penyelesaian terlalu umum dan sulit diterjemahkan menjadi kode.
  • Algoritma tidak diuji menggunakan contoh data.

Latihan

Buatlah algoritma dan program Python untuk menghitung total harga belanja.

Ketentuan:
  • Masukkan nama barang.
  • Masukkan harga barang.
  • Masukkan jumlah barang.
  • Hitung total harga.
  • Tampilkan nama barang dan total harga.
Petunjuk: Gunakan rumus: total = harga * jumlah
Kesimpulan

Algoritma merupakan dasar dari setiap program. Sebelum menulis kode Python, pahami masalah, tentukan input dan output, susun langkah penyelesaian, kemudian implementasikan dan uji program tersebut.

Pertemuan 1

Flowchart

Flowchart adalah diagram yang digunakan untuk menggambarkan alur logika atau langkah-langkah penyelesaian suatu masalah secara visual.

Pengertian Flowchart

Flowchart membantu programmer memahami alur kerja program sebelum menuliskannya ke dalam bahasa pemrograman Python. Setiap proses, input, output, dan keputusan digambarkan menggunakan simbol tertentu.

Dengan menggunakan flowchart, kesalahan logika dapat ditemukan lebih awal. Flowchart juga memudahkan komunikasi antara programmer, dosen, maupun anggota tim pengembang.

Flowchart berbeda dari kode program. Flowchart berfokus pada alur penyelesaian masalah, sedangkan Python digunakan untuk mengimplementasikan alur tersebut menjadi program yang dapat dijalankan.

Manfaat Flowchart

  • Memvisualisasikan alur program
  • Mempermudah analisis masalah
  • Membantu menemukan kesalahan logika
  • Mempermudah komunikasi solusi
  • Menjadi dokumentasi program

Simbol-Simbol Flowchart

Start / End
Terminator

Menunjukkan awal atau akhir algoritma.

Process
Process

Menunjukkan proses atau perhitungan.

Input / Output
Data

Menunjukkan input atau output program.

Decision
Decision

Menunjukkan pengambilan keputusan.

Flow Line

Menunjukkan arah alur proses.

A
Connector

Menghubungkan alur yang terpisah.

Keterangan Simbol Flowchart

Simbol Nama Kegunaan Contoh dalam Python
Oval Terminator Menunjukkan titik mulai dan selesai. Awal dan akhir program.
Persegi Panjang Process Menunjukkan instruksi atau proses perhitungan. total = harga * jumlah
Jajar Genjang Input / Output Menunjukkan data yang masuk atau keluar. input() dan print()
Belah Ketupat Decision Menunjukkan kondisi atau percabangan. if nilai >= 75:
Panah Flow Line Menunjukkan arah perpindahan proses. Urutan eksekusi kode.

Struktur Flowchart Dasar

Mulai
Input Data
Proses
Output
Selesai

Contoh Masalah

Buatlah flowchart untuk menentukan apakah seorang mahasiswa dinyatakan lulus atau tidak berdasarkan nilai ujian.

Ketentuan:
  • Nilai minimal lulus adalah 75.
  • Jika nilai lebih besar atau sama dengan 75, tampilkan pesan "Lulus".
  • Jika nilai kurang dari 75, tampilkan pesan "Tidak Lulus".

Alur Flowchart

  1. Mulai.
  2. Masukkan nilai mahasiswa.
  3. Periksa apakah nilai lebih besar atau sama dengan 75.
  4. Jika benar, tampilkan "Lulus".
  5. Jika salah, tampilkan "Tidak Lulus".
  6. Selesai.

Representasi Alur Percabangan

Mulai
   |
Input nilai
   |
Apakah nilai >= 75?
   | Ya                 | Tidak
   v                    v
Tampilkan "Lulus"   Tampilkan "Tidak Lulus"
   |                    |
   +---------+----------+
             |
           Selesai

Implementasi Flowchart dengan Python

Flowchart sebelumnya dapat diterjemahkan ke dalam kode Python menggunakan input dan percabangan if-else.

Kode Program
# Menentukan status kelulusan

nilai = float(input("Masukkan nilai: "))

if nilai >= 75:
    print("Lulus")
else:
    print("Tidak Lulus")

Hubungan Flowchart dengan Python

Bagian Flowchart Implementasi Python Fungsi
Input input() Menerima data dari pengguna.
Process Assignment atau operasi Mengolah data.
Decision if, elif, else Menentukan jalur program.
Output print() Menampilkan hasil.
Loop for atau while Mengulangi proses.
Flowchart Sequential

Menampilkan proses yang berjalan berurutan dari awal sampai akhir tanpa percabangan.

Input → Process → Output
Flowchart Selection

Memiliki percabangan berdasarkan kondisi tertentu.

Condition → True / False
Flowchart Looping

Memiliki proses yang diulang selama kondisi tertentu terpenuhi.

Condition → Process → Repeat

Praktik Terbaik Membuat Flowchart

  • Gunakan simbol flowchart yang sesuai.
  • Gunakan arah alur yang konsisten, biasanya dari atas ke bawah.
  • Berikan label yang jelas pada setiap proses.
  • Hindari alur yang terlalu panjang dan rumit.
  • Pastikan setiap jalur memiliki akhir.
  • Berikan label "Ya" dan "Tidak" pada decision.
  • Uji flowchart dengan beberapa contoh input.
  • Pastikan flowchart sesuai dengan kode Python.

Latihan

Buatlah flowchart dan program Python untuk menentukan kategori usia seseorang.

Ketentuan:
  • Usia kurang dari 13 tahun: Anak-anak.
  • Usia 13 sampai 17 tahun: Remaja.
  • Usia 18 sampai 59 tahun: Dewasa.
  • Usia 60 tahun atau lebih: Lansia.
Petunjuk: Gunakan simbol decision dan percabangan if, elif, dan else.
Kesimpulan

Flowchart membantu menggambarkan algoritma secara visual. Dengan flowchart, programmer dapat memahami urutan proses, percabangan, dan perulangan sebelum menerapkannya ke dalam program Python.

Pertemuan 1

Tahapan Pemrograman

Tahapan pemrograman adalah proses sistematis yang dilakukan untuk mengubah suatu permasalahan menjadi program Python yang dapat dijalankan dan menghasilkan solusi.

Proses Pengembangan Program

Membuat program tidak hanya sekadar menulis kode. Programmer harus memahami permasalahan, merancang solusi, menerjemahkan solusi ke dalam Python, kemudian menguji dan memperbaiki program tersebut.

Tahapan ini membantu menghasilkan program yang benar, terstruktur, mudah dibaca, mudah dikembangkan, dan sesuai dengan kebutuhan pengguna.

Tujuan Tahapan Pemrograman

  • Menghasilkan solusi yang benar
  • Mengurangi kesalahan dalam program
  • Membuat kode lebih mudah dipahami
  • Mempermudah proses pengujian
  • Mempermudah pemeliharaan program

Tahapan Utama Pemrograman

1
Analisis Masalah

Memahami masalah yang akan diselesaikan, menentukan kebutuhan pengguna, serta mengidentifikasi input, proses, dan output.

Hasil:

Deskripsi masalah dan kebutuhan program.

2
Perancangan Solusi

Menyusun algoritma, flowchart, dan pseudocode sebagai rancangan penyelesaian masalah.

Hasil:

Algoritma dan rancangan alur program.

3
Implementasi

Menerjemahkan algoritma ke dalam kode menggunakan bahasa pemrograman Python.

Hasil:

Source code Python.

4
Pengujian

Menjalankan program dengan berbagai input untuk memastikan hasilnya sesuai kebutuhan.

Hasil:

Data pengujian dan hasil pengamatan.

5
Debugging

Menemukan dan memperbaiki kesalahan sintaks, kesalahan logika, maupun kesalahan saat program dijalankan.

Hasil:

Program yang telah diperbaiki.

6
Dokumentasi dan Pemeliharaan

Menjelaskan cara kerja program dan melakukan perubahan atau pengembangan jika diperlukan.

Hasil:

Dokumentasi dan versi program yang lebih baik.

Alur Pengembangan Program

Analisis Masalah
Algoritma
Coding Python
Testing
Perbaikan

Studi Kasus

Buatlah program Python untuk menghitung nilai rata-rata tiga mata pelajaran seorang mahasiswa.

Kebutuhan Program:
  • Menerima tiga nilai mata pelajaran
  • Menghitung nilai rata-rata
  • Menampilkan hasil rata-rata
  • Menentukan status lulus atau tidak lulus

Penerapan Tahapan

  1. Analisis input, proses, dan output.
  2. Buat algoritma perhitungan rata-rata.
  3. Tulis kode menggunakan Python.
  4. Uji dengan beberapa nilai.
  5. Perbaiki kode jika terdapat kesalahan.

Implementasi Program Python

# Program menghitung rata-rata nilai

nilai_1 = float(input("Masukkan nilai pertama: "))
nilai_2 = float(input("Masukkan nilai kedua: "))
nilai_3 = float(input("Masukkan nilai ketiga: "))

rata_rata = (nilai_1 + nilai_2 + nilai_3) / 3

print(f"Nilai rata-rata: {rata_rata:.2f}")

if rata_rata >= 75:
    print("Status: Lulus")
else:
    print("Status: Tidak Lulus")

Pengujian Program

No. Input Nilai Rata-Rata Output yang Diharapkan
1 80, 75, 85 80 Lulus
2 60, 70, 65 65 Tidak Lulus
3 75, 75, 75 75 Lulus
4 90, 85, 95 90 Lulus

Jenis Kesalahan dalam Pemrograman

Syntax Error

Kesalahan penulisan sintaks Python sehingga program tidak dapat dijalankan.

print("Halo"
Runtime Error

Kesalahan yang terjadi ketika program sedang dijalankan.

10 / 0
Logic Error

Program dapat dijalankan, tetapi menghasilkan output yang salah.

luas = panjang + lebar

Praktik Terbaik

  • Gunakan nama variabel yang deskriptif.
  • Gunakan indentasi Python dengan konsisten.
  • Pisahkan fungsi berdasarkan tanggung jawabnya.
  • Uji program dengan input normal dan batas.
  • Baca pesan error sebelum memperbaiki kode.
  • Tambahkan komentar dan dokumentasi secukupnya.

Latihan

Buatlah program Python untuk menghitung total pembayaran pada sebuah toko.

Ketentuan:
  • Masukkan nama barang.
  • Masukkan harga barang.
  • Masukkan jumlah barang.
  • Hitung subtotal.
  • Berikan diskon jika subtotal lebih besar dari Rp500.000.
  • Tampilkan total pembayaran.
Urutan pengerjaan: Analisis masalah, buat algoritma, tulis kode Python, lakukan pengujian, lalu dokumentasikan hasilnya.
Kesimpulan

Tahapan pemrograman membantu programmer menyelesaikan masalah secara teratur. Proses tersebut dimulai dari analisis masalah, perancangan algoritma, implementasi kode Python, pengujian, debugging, hingga dokumentasi dan pemeliharaan program.

Pertemuan 1

Pseudocode

Pseudocode adalah penulisan langkah-langkah algoritma menggunakan bahasa sederhana dan terstruktur sebelum diterjemahkan menjadi kode Python.

Pengertian Pseudocode

Pseudocode atau kode semu merupakan cara untuk mendeskripsikan algoritma menggunakan bahasa manusia yang menyerupai struktur kode program.

Pseudocode tidak memiliki aturan sintaks yang sangat ketat seperti Python. Oleh karena itu, pseudocode dapat digunakan untuk merancang solusi tanpa memikirkan detail penulisan bahasa pemrograman terlebih dahulu.

Setelah logika pseudocode sudah benar, setiap langkah dapat diterjemahkan menjadi kode Python yang dapat dieksekusi oleh komputer.

Karakteristik Pseudocode

  • Mudah dibaca manusia
  • Menggambarkan logika program
  • Tidak bergantung pada bahasa tertentu
  • Menggunakan langkah yang sistematis
  • Mudah diterjemahkan ke Python

Tujuan Penggunaan Pseudocode

Fokus pada Logika

Programmer dapat memikirkan solusi tanpa terganggu aturan sintaks Python.

Mudah Dikomunikasikan

Pseudocode dapat dipahami oleh orang yang belum menguasai bahasa Python.

Mudah Diperbaiki

Kesalahan logika dapat diperbaiki sebelum program ditulis dalam bentuk kode.

Kata Kunci dalam Pseudocode

Kata Kunci Fungsi Contoh
START Menandai awal algoritma. START
END Menandai akhir algoritma. END
INPUT Menerima data dari pengguna. INPUT nilai
OUTPUT Menampilkan hasil kepada pengguna. OUTPUT total
SET Memberikan nilai kepada variabel. SET total = harga * jumlah
IF - ELSE Membuat percabangan. IF nilai >= 75 THEN
FOR Mengulang proses dengan jumlah tertentu. FOR i FROM 1 TO 5
WHILE Mengulang proses berdasarkan kondisi. WHILE password != benar

Contoh Masalah

Buatlah algoritma untuk menghitung luas persegi panjang berdasarkan panjang dan lebar yang dimasukkan oleh pengguna.

Komponen Masalah:
  • Input: panjang dan lebar
  • Proses: panjang dikalikan lebar
  • Output: luas persegi panjang

Pseudocode Luas Persegi Panjang

START

    INPUT panjang
    INPUT lebar

    SET luas = panjang * lebar

    OUTPUT luas

END

Penerjemahan ke Python

Pseudocode sebelumnya dapat diterjemahkan ke dalam kode Python sebagai berikut:

Kode Python
# Menghitung luas persegi panjang

panjang = float(input("Masukkan panjang: "))
lebar = float(input("Masukkan lebar: "))

luas = panjang * lebar

print(f"Luas persegi panjang: {luas}")

Pseudocode Percabangan

Pseudocode
START

    INPUT nilai

    IF nilai >= 75 THEN
        OUTPUT "Lulus"
    ELSE
        OUTPUT "Tidak Lulus"
    END IF

END
Implementasi Python
nilai = float(input("Masukkan nilai: "))

if nilai >= 75:
    print("Lulus")
else:
    print("Tidak Lulus")

Pseudocode Perulangan

Pseudocode FOR
START

    SET total = 0

    FOR i FROM 1 TO 5
        SET total = total + i
    END FOR

    OUTPUT total

END
Implementasi Python
total = 0

for i in range(1, 6):
    total = total + i

print(total)

Pseudocode Fungsi

Pseudocode
FUNCTION hitung_luas(panjang, lebar)

    SET luas = panjang * lebar

    RETURN luas

END FUNCTION

START

    INPUT panjang
    INPUT lebar

    SET hasil = hitung_luas(panjang, lebar)

    OUTPUT hasil

END
Implementasi Python
def hitung_luas(panjang, lebar):
    luas = panjang * lebar
    return luas


panjang = float(input("Panjang: "))
lebar = float(input("Lebar: "))

hasil = hitung_luas(panjang, lebar)

print(f"Luas: {hasil}")

Perbandingan Pseudocode dan Python

Pseudocode Python Penjelasan
INPUT nilai nilai = input() Menerima input pengguna.
OUTPUT hasil print(hasil) Menampilkan output.
SET total = 10 total = 10 Memberikan nilai ke variabel.
IF kondisi THEN if kondisi: Membuat percabangan.
FOR i FROM 1 TO 5 for i in range(1, 6): Membuat perulangan.
FUNCTION def Mendefinisikan fungsi.

Aturan Penulisan Pseudocode yang Baik

  • Gunakan kalimat yang singkat dan jelas.
  • Gunakan indentasi untuk menunjukkan struktur.
  • Gunakan nama variabel yang bermakna.
  • Tulis langkah sesuai urutan eksekusi.
  • Jelaskan kondisi percabangan secara lengkap.
  • Pastikan perulangan memiliki kondisi berhenti.
  • Hindari detail sintaks yang tidak diperlukan.
  • Uji pseudocode dengan contoh data.

Latihan

Buatlah pseudocode dan program Python untuk menghitung total pembayaran pada sebuah toko.

Ketentuan:
  • Masukkan nama barang.
  • Masukkan harga barang.
  • Masukkan jumlah barang.
  • Hitung subtotal.
  • Berikan diskon 10% jika subtotal minimal Rp500.000.
  • Tampilkan total pembayaran.
Petunjuk: Pisahkan langkah input, proses perhitungan, percabangan diskon, dan output.
Kesimpulan

Pseudocode membantu programmer merancang logika program dengan bahasa yang sederhana sebelum menulis kode Python. Pseudocode dapat digunakan untuk menggambarkan proses berurutan, percabangan, perulangan, dan fungsi.

Pertemuan 2

Struktur Bahasa Python

Struktur bahasa Python adalah aturan penyusunan kode agar program dapat dibaca, dijalankan, dan dipelihara dengan baik.

Mengenal Struktur Program Python

Python memiliki struktur sintaks yang sederhana dan mudah dibaca. Berbeda dengan beberapa bahasa pemrograman lain, Python menggunakan indentasi untuk menentukan blok program.

Sebuah program Python dapat terdiri dari komentar, variabel, ekspresi, percabangan, perulangan, fungsi, dan modul. Setiap bagian memiliki fungsi tertentu dalam membangun program.

Struktur program yang baik membuat kode lebih mudah dipahami, diuji, dikembangkan, dan digunakan kembali.

Elemen Utama Python

  • Komentar
  • Variabel dan konstanta
  • Ekspresi dan statement
  • Blok program dan indentasi
  • Fungsi
  • Modul dan package

Karakteristik Sintaks Python

Indentasi

Indentasi digunakan untuk menentukan blok kode dalam fungsi, percabangan, dan perulangan.

Case Sensitive

Python membedakan huruf besar dan huruf kecil pada nama variabel maupun fungsi.

Statement

Statement merupakan instruksi yang akan dijalankan oleh program.

Komentar dalam Python

Komentar digunakan untuk memberikan penjelasan pada kode. Komentar tidak akan dieksekusi oleh Python.

Komentar Satu Baris
# Ini adalah komentar

nama = "Andi"

print(nama)
Komentar Beberapa Baris
"""
Komentar ini dapat ditulis
dalam beberapa baris.
"""

print("Belajar Python")
Catatan: Gunakan komentar untuk menjelaskan tujuan atau logika kode yang tidak langsung terlihat. Hindari komentar yang hanya mengulang isi kode.

Statement Penugasan

Statement penugasan digunakan untuk memberikan nilai kepada variabel.

nama = "Budi"
umur = 20
tinggi = 1.70

print(nama)
print(umur)
print(tinggi)

Python tidak memerlukan deklarasi tipe data secara khusus. Tipe data ditentukan berdasarkan nilai yang diberikan.

Expression

Expression adalah kombinasi nilai, variabel, dan operator yang menghasilkan suatu nilai.

harga = 50000
jumlah = 3

total = harga * jumlah

print(total)

Pada contoh tersebut, ekspresi harga * jumlah menghasilkan nilai yang disimpan ke dalam variabel total.

Indentasi pada Python

Indentasi adalah jarak atau spasi di awal baris kode. Python menggunakan indentasi untuk menentukan kode yang termasuk dalam suatu blok.

Contoh yang Benar
nilai = 80

if nilai >= 75:
    print("Lulus")
    print("Selamat")
Contoh yang Salah
nilai = 80

if nilai >= 75:
print("Lulus")
Perhatian: Gunakan jumlah indentasi yang konsisten. Standar yang umum digunakan dalam Python adalah empat spasi untuk setiap level blok.

Blok Program

Blok program adalah kumpulan statement yang berada dalam satu struktur, seperti percabangan, perulangan, atau fungsi.

Percabangan
if nilai >= 75:
    print("Lulus")
else:
    print("Tidak lulus")
Perulangan
for angka in range(1, 4):
    print(angka)
Fungsi
def salam():
    print("Halo")

salam()

Fungsi dan Main Program

Python tidak mewajibkan penggunaan fungsi main(). Namun, penggunaan fungsi utama dapat membuat struktur program lebih rapi dan mudah dikembangkan.

def hitung_luas(panjang, lebar):
    return panjang * lebar


def main():
    panjang = float(input("Masukkan panjang: "))
    lebar = float(input("Masukkan lebar: "))

    luas = hitung_luas(panjang, lebar)

    print(f"Luas: {luas}")


if __name__ == "__main__":
    main()
Penjelasan: Kondisi if __name__ == "__main__": memastikan fungsi main() dijalankan ketika file dieksekusi secara langsung, tetapi tidak dijalankan otomatis ketika file digunakan sebagai modul.

Modul dan Import

Modul adalah file Python yang berisi kode yang dapat digunakan kembali oleh program lain. Python menyediakan banyak modul bawaan.

import math

radius = 7
luas = math.pi * radius ** 2

print(f"Luas lingkaran: {luas:.2f}")

Selain mengimpor seluruh modul, bagian tertentu dari modul juga dapat diimpor.

from math import sqrt

nilai = 25
akar = sqrt(nilai)

print(akar)

Aturan Penamaan Identifier

Aturan Contoh Benar Contoh Salah
Tidak boleh diawali angka nilai1 1nilai
Tidak menggunakan spasi nama_lengkap nama lengkap
Tidak menggunakan keyword Python jumlah_data class
Membedakan huruf besar dan kecil total_harga Menganggap Total sama dengan total
Gunakan nama yang bermakna jumlah_mahasiswa x untuk data penting
snake_case

Umumnya digunakan untuk nama variabel dan fungsi.

total_harga
PascalCase

Umumnya digunakan untuk nama class.

DataMahasiswa
UPPER_CASE

Umumnya digunakan untuk konstanta.

MAX_LOGIN_ATTEMPT

Contoh Program dengan Struktur yang Baik

DISCOUNT_RATE = 0.10


def hitung_total(harga, jumlah):
    subtotal = harga * jumlah

    if subtotal >= 500000:
        diskon = subtotal * DISCOUNT_RATE
    else:
        diskon = 0

    return subtotal - diskon


def main():
    harga = float(input("Masukkan harga barang: "))
    jumlah = int(input("Masukkan jumlah barang: "))

    total = hitung_total(harga, jumlah)

    print(f"Total pembayaran: Rp{total:,.2f}")


if __name__ == "__main__":
    main()

Praktik Terbaik Penulisan Python

  • Gunakan indentasi empat spasi.
  • Gunakan nama variabel yang deskriptif.
  • Gunakan snake_case untuk fungsi dan variabel.
  • Buat fungsi yang memiliki satu tanggung jawab.
  • Hindari baris kode yang terlalu panjang.
  • Tambahkan komentar seperlunya.
  • Pisahkan logika program ke dalam fungsi.
  • Uji kode secara bertahap.

Latihan

Buatlah program Python dengan struktur yang baik untuk menghitung total nilai mahasiswa.

Ketentuan:
  • Buat fungsi untuk menghitung nilai akhir.
  • Nilai akhir terdiri dari nilai tugas, UTS, dan UAS.
  • Gunakan bobot tugas 30%, UTS 30%, dan UAS 40%.
  • Buat fungsi untuk menentukan status kelulusan.
  • Gunakan fungsi main() sebagai titik awal program.
Petunjuk: Pisahkan proses input, perhitungan, dan output ke dalam fungsi yang berbeda.
Kesimpulan

Struktur bahasa Python terdiri dari statement, ekspresi, variabel, blok program, fungsi, komentar, dan modul. Indentasi merupakan bagian penting dalam Python karena digunakan untuk menentukan struktur blok kode.

Materi Pemrograman Dasar

Variabel dan Konstanta

Variabel dan konstanta merupakan konsep dasar dalam pemrograman yang digunakan untuk menyimpan nilai dan informasi selama program berjalan.

Pengertian Variabel

Variabel adalah nama yang digunakan untuk menyimpan suatu nilai di dalam memori komputer. Nilai variabel dapat diubah selama program dijalankan.

nama = "Andi"
umur = 20
tinggi = 170.5

Pada contoh tersebut, nama, umur, dan tinggi adalah variabel.

Membuat Variabel dalam Python

Python tidak memerlukan deklarasi tipe data secara eksplisit. Variabel dibuat ketika nilai diberikan menggunakan operator assignment =.

nama = "Budi"
usia = 19
nilai = 85.5
lulus = True
Python menentukan tipe data variabel secara otomatis berdasarkan nilai yang diberikan.

Aturan Penamaan Variabel

  1. Nama variabel boleh terdiri dari huruf, angka, dan underscore.
  2. Nama variabel tidak boleh diawali angka.
  3. Nama variabel tidak boleh menggunakan spasi.
  4. Nama variabel bersifat case-sensitive.
  5. Nama variabel tidak boleh menggunakan keyword Python.
Contoh yang Benar
nama_mahasiswa = "Citra"
nilai1 = 90
jumlah_data = 10
Contoh yang Salah
1nama = "Andi"
nama mahasiswa = "Budi"
class = "Informatika"

Variabel dan Tipe Data

Tipe Data Contoh Keterangan
String "Python" Menyimpan teks.
Integer 25 Menyimpan bilangan bulat.
Float 3.14 Menyimpan bilangan desimal.
Boolean True Menyimpan nilai benar atau salah.
List [1, 2, 3] Menyimpan kumpulan data berurutan.
Dictionary {"nama": "Andi"} Menyimpan pasangan key dan value.

Mengubah Nilai Variabel

nilai = 70

print(nilai)

nilai = 85

print(nilai)

Nilai variabel nilai berubah dari 70 menjadi 85.

Pengertian Konstanta

Konstanta adalah nilai yang seharusnya tidak berubah selama program berjalan. Python tidak memiliki sintaks khusus untuk membuat konstanta, sehingga konstanta biasanya ditulis menggunakan huruf kapital.

PI = 3.14159
NAMA_APLIKASI = "Sistem Akademik"
BATAS_NILAI = 70
Huruf kapital merupakan konvensi penamaan untuk memberi tanda bahwa suatu variabel diperlakukan sebagai konstanta.

Perbedaan Variabel dan Konstanta

Aspek Variabel Konstanta
Nilai Dapat berubah. Sebaiknya tidak berubah.
Penamaan Umumnya huruf kecil. Umumnya huruf kapital.
Contoh nama BATAS_NILAI
Penggunaan Data yang berubah selama program. Nilai tetap yang digunakan berulang.

Menyimpan Input ke Variabel

nama = input("Masukkan nama: ")
umur = int(input("Masukkan umur: "))

print("Nama:", nama)
print("Umur:", umur)
Fungsi input() selalu menghasilkan data bertipe string. Gunakan konversi tipe data jika membutuhkan angka.

Operasi pada Variabel

panjang = 10
lebar = 5

luas = panjang * lebar
keliling = 2 * (panjang + lebar)

print("Luas:", luas)
print("Keliling:", keliling)

Contoh Penggunaan Konstanta

BATAS_LULUS = 70

nilai = float(
    input("Masukkan nilai: ")
)

if nilai >= BATAS_LULUS:

    print("Lulus")

else:

    print("Tidak lulus")

Penggunaan konstanta membuat program lebih mudah diperbaiki. Jika batas kelulusan berubah, cukup ubah nilai BATAS_LULUS.

Multiple Assignment

Python mendukung pemberian nilai kepada beberapa variabel dalam satu baris.

nama, umur, kota = "Andi", 20, "Bandung"

print(nama)
print(umur)
print(kota)

Menukar Nilai Variabel

a = 10
b = 20

a, b = b, a

print("a:", a)
print("b:", b)

Setelah pertukaran, nilai a menjadi 20 dan nilai b menjadi 10.

Scope Variabel

Variabel Global

Variabel global dibuat di luar fungsi dan dapat diakses oleh bagian program lainnya.

nama_aplikasi = "Data Mahasiswa"


def tampilkan_nama():

    print(nama_aplikasi)


tampilkan_nama()
Variabel Lokal

Variabel lokal dibuat di dalam fungsi dan hanya dapat digunakan di dalam fungsi tersebut.

def hitung_luas():

    panjang = 10
    lebar = 5

    return panjang * lebar


print(hitung_luas())

Memeriksa Tipe Data

nama = "Andi"
umur = 20
nilai = 85.5
lulus = True

print(type(nama))
print(type(umur))
print(type(nilai))
print(type(lulus))

Konversi Tipe Data

angka_teks = "100"

angka_integer = int(angka_teks)
angka_float = float(angka_teks)
angka_string = str(angka_integer)

print(angka_integer)
print(angka_float)
print(angka_string)

Kesalahan Umum

  1. Menggunakan nama variabel yang diawali angka.
  2. Menggunakan spasi pada nama variabel.
  3. Menggunakan keyword sebagai nama variabel.
  4. Menganggap input angka otomatis bertipe integer.
  5. Mengubah nilai konstanta secara sembarangan.
  6. Menggunakan nama variabel yang tidak menjelaskan isi datanya.

Latihan

  1. Buat program untuk menghitung luas dan keliling persegi panjang.
  2. Buat program untuk menghitung luas lingkaran dengan konstanta PI.
  3. Buat program yang menerima nama, umur, dan alamat pengguna.
  4. Buat program untuk menentukan status kelulusan menggunakan konstanta BATAS_LULUS.
  5. Buat program untuk menukar isi dua variabel.
Kesimpulan

Variabel digunakan untuk menyimpan data yang nilainya dapat berubah, sedangkan konstanta digunakan untuk menyimpan nilai tetap. Pemahaman tentang variabel, konstanta, tipe data, scope, dan konversi tipe merupakan dasar penting dalam membuat program Python yang terstruktur.

Pertemuan 2

Tipe Data Python

Tipe data adalah jenis nilai yang disimpan dan diolah oleh program. Python menyediakan berbagai tipe data untuk mengelola angka, teks, nilai logika, dan kumpulan data.

Pengertian Tipe Data

Tipe data menentukan jenis nilai yang dapat disimpan dalam sebuah variabel dan operasi apa saja yang dapat dilakukan terhadap nilai tersebut.

Python menggunakan konsep dynamic typing. Artinya, programmer tidak perlu menuliskan tipe data ketika membuat variabel. Python akan menentukan tipe data berdasarkan nilai yang diberikan.

Meskipun Python menentukan tipe data secara otomatis, programmer tetap perlu memahami jenis data agar dapat memilih operasi dan struktur data yang tepat.

Cara Mengetahui Tipe Data

Gunakan fungsi type() untuk mengetahui tipe data suatu nilai atau variabel.

nilai = 25

print(type(nilai))

Tipe Data Dasar Python

Integer

Bilangan bulat tanpa angka desimal.

umur = 20
jumlah = -5
int
Float

Bilangan yang memiliki angka desimal.

tinggi = 1.75
nilai = 87.5
float
String

Kumpulan karakter atau teks.

nama = "Andi"
pesan = 'Halo'
str
Boolean

Nilai logika yang hanya memiliki nilai benar atau salah.

aktif = True
lulus = False
bool

Integer

Tipe data integer digunakan untuk menyimpan bilangan bulat positif, negatif, maupun nol.

jumlah_mahasiswa = 35
saldo = -10000
angka_nol = 0

print(type(jumlah_mahasiswa))

Integer dapat digunakan dalam operasi penjumlahan, pengurangan, perkalian, pembagian bulat, dan perpangkatan.

Float

Tipe data float digunakan untuk menyimpan bilangan yang memiliki angka di belakang koma.

harga = 12500.50
rata_rata = 87.75

hasil = harga * 2

print(hasil)

Gunakan format desimal ketika menampilkan hasil agar output lebih mudah dibaca.

String

String adalah tipe data yang digunakan untuk menyimpan teks. String dapat ditulis menggunakan tanda petik satu, tanda petik dua, atau triple quotes.

Tanda Petik Tunggal
nama = 'Budi'
print(nama)
Tanda Petik Ganda
pesan = "Selamat belajar"
print(pesan)
String Multibaris
deskripsi = """
Belajar Python
dari dasar
"""
print(deskripsi)
Operasi String
nama_depan = "Budi"
nama_belakang = "Santoso"

nama_lengkap = nama_depan + " " + nama_belakang

print(nama_lengkap)
print(len(nama_lengkap))
print(nama_lengkap.upper())
print(nama_lengkap.lower())

Boolean

Boolean hanya memiliki dua nilai, yaitu True dan False. Tipe data ini sering digunakan dalam percabangan dan perulangan.

nilai = 80

lulus = nilai >= 75

print(lulus)

if lulus:
    print("Mahasiswa lulus")
else:
    print("Mahasiswa tidak lulus")
Catatan: Penulisan Boolean dalam Python harus menggunakan huruf kapital pada awal kata, yaitu True dan False.

Tipe Data Koleksi

List

Koleksi berurutan dan dapat diubah.

buah = [
    "Apel",
    "Jeruk"
]
Tuple

Koleksi berurutan yang tidak dapat diubah.

warna = (
    "Merah",
    "Biru"
)
Dictionary

Koleksi pasangan key dan value.

mahasiswa = {
    "nama": "Dina",
    "umur": 20
}
Set

Koleksi nilai unik tanpa duplikasi.

angka = {
    1, 2, 3
}

Perbandingan Tipe Data Koleksi

Tipe Data Berurutan Dapat Diubah Duplikasi Contoh
List Ya Ya Diperbolehkan [1, 2, 2]
Tuple Ya Tidak Diperbolehkan (1, 2, 2)
Dictionary Mempertahankan urutan input Ya Key harus unik {"a": 1}
Set Tidak digunakan berdasarkan indeks Ya Tidak diperbolehkan {1, 2, 3}

Konversi Tipe Data

Konversi tipe data digunakan untuk mengubah nilai dari satu tipe data ke tipe data lainnya.

Perhatian: Konversi dapat menghasilkan ValueError jika teks tidak memiliki format yang sesuai, misalnya int("abc").

Tipe Data None

None digunakan untuk menyatakan bahwa sebuah variabel belum memiliki nilai atau tidak menghasilkan nilai.

hasil = None

if hasil is None:
    print("Belum ada hasil")

Gunakan operator is atau is not ketika membandingkan nilai dengan None.

Mutable dan Immutable

Mutable

Nilai dapat diubah setelah objek dibuat.

  • List
  • Dictionary
  • Set
angka = [1, 2, 3]
angka.append(4)

print(angka)
Immutable

Nilai tidak dapat diubah setelah objek dibuat.

  • Integer
  • Float
  • String
  • Tuple
nama = "Andi"

# Membuat string baru
nama = nama + " Saputra"

print(nama)

Pemeriksaan Tipe Data

Selain menggunakan type(), Python memiliki fungsi isinstance() untuk memeriksa apakah suatu nilai termasuk tipe tertentu.

nilai = 25

print(type(nilai))

if isinstance(nilai, int):
    print("Nilai berupa integer")
else:
    print("Nilai bukan integer")

Contoh Penggunaan Beberapa Tipe Data

nama = "Sinta"
umur = 21
nilai = 87.5
aktif = True

mata_kuliah = [
    "Python",
    "Database",
    "Algoritma"
]

profil = {
    "nama": nama,
    "umur": umur,
    "nilai": nilai,
    "aktif": aktif,
    "mata_kuliah": mata_kuliah
}

print(f"Nama: {profil['nama']}")
print(f"Umur: {profil['umur']}")
print(f"Nilai: {profil['nilai']}")
print(f"Status aktif: {profil['aktif']}")
print(f"Mata kuliah: {profil['mata_kuliah']}")

Kesalahan Umum Tipe Data

  • Menganggap hasil input() langsung berupa angka.
  • Mencampurkan string dan integer tanpa konversi.
  • Mencoba mengubah tuple secara langsung.
  • Mengakses key dictionary yang tidak tersedia.
  • Menggunakan list ketika data seharusnya tidak boleh diubah.

Latihan

Buatlah program Python untuk menyimpan dan menampilkan data seorang mahasiswa.

Data yang harus disimpan:
  • Nama mahasiswa sebagai string
  • Umur sebagai integer
  • IPK sebagai float
  • Status aktif sebagai boolean
  • Daftar mata kuliah sebagai list
  • Data lengkap sebagai dictionary
Petunjuk: Gunakan type() atau isinstance() untuk menampilkan tipe data setiap nilai.
Kesimpulan

Python memiliki tipe data dasar seperti integer, float, string, dan boolean, serta tipe data koleksi seperti list, tuple, dictionary, dan set. Pemilihan tipe data yang tepat membantu program bekerja secara benar dan efisien.

Pertemuan 2

Operator Python

Operator adalah simbol atau kata kunci yang digunakan untuk melakukan operasi terhadap nilai, variabel, atau ekspresi dalam program Python.

Pengertian Operator

Operator digunakan untuk melakukan perhitungan matematika, membandingkan nilai, menggabungkan kondisi, memberikan nilai, serta memeriksa keanggotaan suatu data.

Nilai atau variabel yang digunakan oleh operator disebut operand. Sebagai contoh, pada ekspresi a + b, variabel a dan b merupakan operand, sedangkan + merupakan operator.

Pemahaman operator sangat penting karena hampir semua program membutuhkan proses perhitungan dan pengambilan keputusan.

Jenis Operator

  • Operator aritmatika
  • Operator perbandingan
  • Operator logika
  • Operator penugasan
  • Operator keanggotaan
  • Operator identitas

Operator Aritmatika

Operator aritmatika digunakan untuk melakukan operasi matematika terhadap bilangan.

Operator Nama Contoh Hasil
+ Penjumlahan 10 + 3 13
- Pengurangan 10 - 3 7
* Perkalian 10 * 3 30
/ Pembagian 10 / 3 3.333...
// Pembagian Bulat 10 // 3 3
% Sisa Pembagian 10 % 3 1
** Perpangkatan 2 ** 3 8
a = 10
b = 3

print("Penjumlahan:", a + b)
print("Pengurangan:", a - b)
print("Perkalian:", a * b)
print("Pembagian:", a / b)
print("Pembagian bulat:", a // b)
print("Sisa pembagian:", a % b)
print("Pangkat:", a ** b)

Operator Perbandingan

Operator perbandingan digunakan untuk membandingkan dua nilai. Hasil dari perbandingan selalu berupa nilai Boolean, yaitu True atau False.

Operator Nama Contoh Hasil
== Sama dengan 5 == 5 True
!= Tidak sama dengan 5 != 3 True
> Lebih besar 8 > 5 True
< Lebih kecil 3 < 5 True
>= Lebih besar atau sama dengan 5 >= 5 True
<= Lebih kecil atau sama dengan 4 <= 5 True
nilai = 80

print(nilai == 80)
print(nilai != 70)
print(nilai >= 75)
print(nilai < 100)

Operator Logika

Operator logika digunakan untuk menggabungkan beberapa kondisi atau membalik nilai Boolean.

Operator Fungsi Contoh
and True jika semua kondisi bernilai True. nilai >= 75 and kehadiran >= 80
or True jika salah satu kondisi bernilai True. role == "admin" or role == "operator"
not Membalik nilai Boolean. not selesai
nilai = 85
kehadiran = 90

lulus = nilai >= 75 and kehadiran >= 80

print("Status lulus:", lulus)

admin = False
print("Bukan admin:", not admin)

Operator Penugasan

Operator penugasan digunakan untuk memberikan nilai atau memperbarui nilai pada sebuah variabel.

Operator Bentuk Panjang Contoh
= Penugasan x = 10
+= x = x + 5 x += 5
-= x = x - 5 x -= 5
*= x = x * 5 x *= 5
/= x = x / 5 x /= 5
%= x = x % 5 x %= 5
saldo = 100000

saldo += 50000
print(saldo)

saldo -= 25000
print(saldo)

saldo *= 2
print(saldo)

Operator Keanggotaan

Operator keanggotaan digunakan untuk memeriksa apakah suatu nilai terdapat dalam koleksi.

buah = ["Apel", "Jeruk", "Mangga"]

print("Apel" in buah)
print("Durian" not in buah)
  • in: terdapat di dalam koleksi
  • not in: tidak terdapat di dalam koleksi

Operator Identitas

Operator identitas digunakan untuk memeriksa apakah dua variabel merujuk pada objek yang sama.

a = None

print(a is None)
print(a is not None)
  • is: objek yang sama
  • is not: objek yang berbeda

Prioritas Operator

Ketika sebuah ekspresi memiliki beberapa operator, Python akan menjalankannya berdasarkan urutan prioritas. Gunakan tanda kurung agar urutan operasi lebih jelas.

hasil_1 = 2 + 3 * 4
hasil_2 = (2 + 3) * 4

print(hasil_1)
print(hasil_2)
Prioritas Operator Contoh
1 Tanda kurung (a + b)
2 Perpangkatan a ** b
3 Perkalian dan pembagian a * b, a / b
4 Penjumlahan dan pengurangan a + b, a - b
5 Perbandingan dan logika a > b and aktif

Contoh Program Menggunakan Operator

# Program menghitung total pembayaran

harga = float(input("Masukkan harga barang: "))
jumlah = int(input("Masukkan jumlah barang: "))

subtotal = harga * jumlah

if subtotal >= 500000:
    diskon = subtotal * 0.10
else:
    diskon = 0

total = subtotal - diskon

print(f"Subtotal: Rp{subtotal:,.2f}")
print(f"Diskon: Rp{diskon:,.2f}")
print(f"Total pembayaran: Rp{total:,.2f}")

Kesalahan Umum Penggunaan Operator

  • Menggunakan = untuk membandingkan nilai. Gunakan == untuk perbandingan.
  • Menggunakan and ketika seharusnya menggunakan or.
  • Menggabungkan string dan angka tanpa konversi.
  • Lupa menggunakan tanda kurung pada ekspresi yang memiliki banyak operator.
  • Membagi bilangan dengan nol sehingga menghasilkan ZeroDivisionError.

Latihan

Buat program Python untuk menghitung nilai akhir mahasiswa.

Ketentuan:
  • Nilai tugas memiliki bobot 30%.
  • Nilai UTS memiliki bobot 30%.
  • Nilai UAS memiliki bobot 40%.
  • Gunakan operator aritmatika untuk menghitung nilai akhir.
  • Gunakan operator perbandingan untuk menentukan status kelulusan.
  • Mahasiswa dinyatakan lulus jika nilai akhir minimal 75.
Petunjuk: Gunakan operator *, +, >=, dan if-else.
Kesimpulan

Operator digunakan untuk melakukan perhitungan, perbandingan, penggabungan kondisi, penugasan nilai, pemeriksaan keanggotaan, dan pemeriksaan identitas. Penggunaan operator yang tepat membantu program menghasilkan logika dan output yang benar.

Pertemuan 3

Input pada Python

Input adalah data yang dimasukkan oleh pengguna ke dalam program. Python menyediakan fungsi input() untuk menerima data dari keyboard.

Pengertian Input

Input memungkinkan program berinteraksi dengan pengguna. Program dapat meminta nama, usia, nilai, jumlah barang, atau informasi lain yang dibutuhkan untuk diproses.

Secara default, fungsi input() selalu menghasilkan data bertipe string. Jika data yang dimasukkan berupa angka, data tersebut harus dikonversi menggunakan fungsi seperti int() atau float().

Input yang diterima sebaiknya divalidasi agar program dapat menangani data yang tidak sesuai dengan baik.

Fungsi Input

nama = input("Masukkan nama: ")

print(nama)

Teks yang berada di dalam fungsi input() disebut prompt. Prompt digunakan untuk memberikan instruksi kepada pengguna.

Input String

Data teks dapat diterima langsung menggunakan fungsi input().

nama = input("Masukkan nama Anda: ")
alamat = input("Masukkan alamat Anda: ")

print(f"Nama: {nama}")
print(f"Alamat: {alamat}")
Catatan: Nilai dari nama dan alamat bertipe str karena berasal dari input teks.

Input Angka

Karena input() menghasilkan string, gunakan konversi tipe data ketika ingin melakukan operasi matematika.

Input Integer
umur = int(input("Masukkan umur: "))

print(f"Umur Anda {umur} tahun.")

Gunakan int() untuk bilangan bulat.

Input Float
tinggi = float(input("Masukkan tinggi: "))

print(f"Tinggi Anda {tinggi} meter.")

Gunakan float() untuk bilangan desimal.

Konversi Data Input

Perhatikan perbedaan antara operasi string dan operasi angka.

angka_pertama = input("Masukkan angka pertama: ")
angka_kedua = input("Masukkan angka kedua: ")

hasil_string = angka_pertama + angka_kedua

print("Jika tidak dikonversi:", hasil_string)

Jika pengguna memasukkan 10 dan 20, hasilnya adalah 1020 karena kedua nilai masih berupa string.

angka_pertama = int(input("Masukkan angka pertama: "))
angka_kedua = int(input("Masukkan angka kedua: "))

hasil = angka_pertama + angka_kedua

print("Hasil penjumlahan:", hasil)

Menerima Beberapa Input

Input pada Beberapa Baris
nama = input("Nama: ")
umur = int(input("Umur: "))
kota = input("Kota: ")

print(f"{nama}, {umur} tahun, tinggal di {kota}.")
Input dalam Satu Baris
nama, kota = input(
    "Masukkan nama dan kota: "
).split()

print(f"Nama: {nama}")
print(f"Kota: {kota}")
Catatan: Metode split() memisahkan input berdasarkan spasi. Cara ini sesuai jika setiap data tidak mengandung spasi.

Input, Process, dan Output

Input

Pengguna memasukkan data yang diperlukan.

Process

Program mengolah data dengan operator atau aturan tertentu.

Output

Program menampilkan hasil pengolahan data.

Contoh Program Input dan Proses

Program berikut menghitung total harga berdasarkan harga barang dan jumlah pembelian.

nama_barang = input("Nama barang: ")
harga = float(input("Harga barang: "))
jumlah = int(input("Jumlah barang: "))

total = harga * jumlah

print()
print("=== RINCIAN PEMBELIAN ===")
print(f"Nama barang: {nama_barang}")
print(f"Harga: Rp{harga:,.2f}")
print(f"Jumlah: {jumlah}")
print(f"Total: Rp{total:,.2f}")

Validasi Input

Validasi input digunakan untuk memastikan data yang dimasukkan sesuai dengan aturan program.

usia = int(input("Masukkan usia: "))

if usia < 0:
    print("Usia tidak boleh negatif.")
else:
    print(f"Usia Anda: {usia} tahun.")

Validasi dapat dilakukan menggunakan percabangan, perulangan, dan penanganan exception.

Menangani Input yang Tidak Valid

Jika pengguna memasukkan teks ketika program mengharapkan angka, Python akan menghasilkan ValueError. Gunakan try-except untuk menanganinya.

try:
    nilai = float(input("Masukkan nilai: "))

    if 0 <= nilai <= 100:
        print(f"Nilai yang dimasukkan: {nilai}")
    else:
        print("Nilai harus berada di antara 0 dan 100.")

except ValueError:
    print("Input harus berupa angka.")

Input Berulang

Perulangan dapat digunakan agar program terus meminta input sampai pengguna memasukkan data yang benar.

while True:
    try:
        nilai = float(input("Masukkan nilai 0-100: "))

        if 0 <= nilai <= 100:
            break

        print("Nilai harus berada di antara 0 dan 100.")

    except ValueError:
        print("Masukkan angka yang valid.")

print(f"Nilai diterima: {nilai}")

Kesalahan Umum pada Input

  • Menganggap hasil input() langsung berupa integer atau float.
  • Melakukan operasi matematika pada string tanpa konversi.
  • Tidak memvalidasi nilai negatif atau nilai di luar batas.
  • Tidak menangani input yang bukan angka.
  • Tidak memberikan petunjuk yang jelas kepada pengguna.

Latihan

Buatlah program Python untuk menghitung nilai akhir mahasiswa.

Ketentuan:
  • Minta input nama mahasiswa.
  • Minta input nilai tugas.
  • Minta input nilai UTS.
  • Minta input nilai UAS.
  • Pastikan seluruh nilai berada pada rentang 0 sampai 100.
  • Tampilkan nama dan nilai akhir mahasiswa.
Petunjuk: Gunakan input(), float(), validasi rentang nilai, dan try-except.
Kesimpulan

Fungsi input() digunakan untuk menerima data dari pengguna. Karena hasilnya berupa string, data numerik perlu dikonversi menggunakan int() atau float(). Input sebaiknya selalu divalidasi agar program berjalan dengan aman dan menghasilkan output yang benar.

Pertemuan 3

Output pada Python

Output adalah informasi atau hasil proses yang ditampilkan oleh program kepada pengguna. Python menggunakan fungsi print() untuk menampilkan output.

Pengertian Output

Output merupakan hasil yang dikeluarkan setelah program melakukan proses terhadap data masukan. Output dapat berupa teks, angka, hasil perhitungan, maupun informasi lainnya.

Dalam Python, fungsi print() digunakan untuk menampilkan satu atau beberapa nilai ke layar.

Output yang baik harus disajikan dengan format yang jelas agar mudah dipahami oleh pengguna.

Fungsi print()

print("Halo, Python!")
print(25)
print(10 + 5)

Output Sederhana

Fungsi print() dapat digunakan untuk menampilkan teks, angka, variabel, dan hasil operasi.

print("Selamat datang")
print(100)

nama = "Andi"
umur = 20

print(nama)
print(umur)
Output:
Selamat datang
100
Andi
20

Menampilkan Beberapa Nilai

Beberapa nilai dapat ditampilkan dalam satu fungsi print() dengan memisahkannya menggunakan koma.

nama = "Budi"
umur = 21
kota = "Bandung"

print("Nama:", nama)
print("Umur:", umur)
print("Kota:", kota)
Secara default, setiap nilai yang dipisahkan dengan koma akan diberi jarak oleh Python.

Parameter sep dan end

Parameter sep

Parameter sep digunakan untuk menentukan pemisah antar nilai.

nama = "Andi"
umur = 20
kota = "Jakarta"

print(nama, umur, kota, sep=" | ")

Output: Andi | 20 | Jakarta

Parameter end

Parameter end digunakan untuk menentukan karakter di akhir output.

print("Belajar", end=" ")
print("Python", end=" ")
print("Dasar")

Output: Belajar Python Dasar

Menggabungkan String

String dapat digabungkan menggunakan operator +. Semua nilai yang digabungkan harus bertipe string.

nama_depan = "Siti"
nama_belakang = "Aminah"

nama_lengkap = nama_depan + " " + nama_belakang

print("Nama lengkap: " + nama_lengkap)
Perhatian: String tidak dapat langsung digabungkan dengan integer atau float menggunakan operator +. Gunakan fungsi str() jika diperlukan.

F-String

F-string merupakan cara yang praktis untuk menyisipkan nilai variabel ke dalam teks.

nama = "Dina"
umur = 20
nilai = 87.5

print(f"Nama: {nama}")
print(f"Umur: {umur} tahun")
print(f"Nilai: {nilai}")

F-string ditandai dengan huruf f sebelum tanda petik. Variabel ditulis di dalam kurung kurawal.

Format Angka

Python menyediakan format khusus untuk menampilkan angka dengan jumlah desimal, pemisah ribuan, atau simbol tertentu.

harga = 1250000.5
nilai = 87.5678

print(f"Harga: Rp{harga:,.2f}")
print(f"Nilai: {nilai:.2f}")
Format Fungsi Contoh
:.2f Menampilkan dua angka desimal 87.57
:, Memberikan pemisah ribuan 1,250,000
:,.2f Pemisah ribuan dan dua desimal 1,250,000.50

Karakter Khusus pada Output

Python menyediakan karakter escape untuk mengatur tampilan teks pada output.

print("Baris pertama\nBaris kedua")
print("Nama:\tAndi")
print("Dia berkata: \"Halo\"")
Karakter Fungsi
\n Pindah ke baris baru
\t Membuat tab atau jarak
\" Menampilkan tanda petik ganda
\\ Menampilkan karakter backslash

Output Berbentuk Tabel

print("=" * 40)
print("DATA MAHASISWA")
print("=" * 40)

print(f"{'Nama':<15}: {'Andi'}")
print(f"{'NIM':<15}: {'123456'}")
print(f"{'Program Studi':<15}: {'Informatika'}")
print(f"{'Nilai':<15}: {87.5:.2f}")

print("=" * 40)

Tanda < digunakan untuk mengatur perataan teks ke kiri dalam format tertentu.

Contoh Program Struk Belanja

nama_barang = "Buku"
harga = 25000
jumlah = 3

subtotal = harga * jumlah

print("=" * 35)
print("         STRUK BELANJA")
print("=" * 35)
print(f"Barang   : {nama_barang}")
print(f"Harga    : Rp{harga:,.2f}")
print(f"Jumlah   : {jumlah}")
print(f"Subtotal : Rp{subtotal:,.2f}")
print("=" * 35)

Kesalahan Umum pada Output

  • Lupa menggunakan tanda petik pada teks.
  • Menggabungkan string dan angka tanpa konversi.
  • Salah menempatkan kurung kurawal pada f-string.
  • Menggunakan format angka yang tidak sesuai.
  • Output tidak diberi keterangan sehingga sulit dipahami.

Latihan

Buatlah program Python untuk menampilkan biodata mahasiswa.

Data yang ditampilkan:
  • Nama mahasiswa
  • NIM
  • Program studi
  • Semester
  • IPK
  • Status mahasiswa
Ketentuan: Gunakan f-string, format IPK menjadi dua angka desimal, serta buat tampilan output seperti kartu biodata.
Kesimpulan

Fungsi print() digunakan untuk menampilkan hasil program kepada pengguna. Output dapat dibuat lebih informatif menggunakan beberapa nilai, f-string, parameter sep dan end, karakter khusus, serta format angka.

Pertemuan 3

Konsep Seleksi

Seleksi adalah struktur kontrol yang digunakan untuk memilih tindakan berdasarkan kondisi tertentu. Python menyediakan if, if-else, dan if-elif-else untuk membuat percabangan program.

Pengertian Seleksi

Dalam program, tidak semua instruksi harus dijalankan. Terkadang program harus memilih tindakan tertentu sesuai dengan kondisi atau data yang diberikan.

Sebagai contoh, program dapat menentukan apakah mahasiswa lulus berdasarkan nilai. Jika nilai minimal terpenuhi, program menampilkan pesan "Lulus". Jika tidak, program menampilkan pesan "Tidak Lulus".

Kondisi dalam seleksi biasanya menghasilkan nilai Boolean, yaitu True atau False.

Komponen Seleksi

  • Kondisi
  • Operator perbandingan
  • Blok kode
  • Jalur benar
  • Jalur salah

Kondisi Boolean

Kondisi adalah ekspresi yang menghasilkan nilai True atau False.

nilai = 80

print(nilai >= 75)
print(nilai < 75)
print(nilai == 80)
Ekspresi Hasil Penjelasan
80 >= 75 True 80 lebih besar atau sama dengan 75.
80 < 75 False 80 tidak lebih kecil dari 75.
80 == 80 True Kedua nilai memiliki nilai yang sama.

Seleksi Satu Kondisi dengan if

Struktur if digunakan untuk menjalankan blok kode hanya ketika suatu kondisi bernilai benar.

nilai = 80

if nilai >= 75:
    print("Mahasiswa lulus")
Struktur Umum
if kondisi:
    perintah
Catatan: Baris kondisi harus diakhiri dengan tanda titik dua :. Baris perintah harus menggunakan indentasi.

Seleksi Dua Kondisi dengan if-else

Struktur if-else digunakan ketika program memiliki dua kemungkinan tindakan.

nilai = float(input("Masukkan nilai: "))

if nilai >= 75:
    print("Lulus")
else:
    print("Tidak lulus")
Alur Program
Input Nilai
Nilai >= 75?
Ya: Lulus
Tidak: Gagal

Seleksi Banyak Kondisi dengan if-elif-else

Struktur if-elif-else digunakan ketika terdapat lebih dari dua kemungkinan kondisi.

nilai = float(input("Masukkan nilai: "))

if nilai >= 85:
    predikat = "A"
elif nilai >= 75:
    predikat = "B"
elif nilai >= 65:
    predikat = "C"
elif nilai >= 50:
    predikat = "D"
else:
    predikat = "E"

print(f"Predikat nilai: {predikat}")
Struktur Umum
if kondisi_pertama:
    perintah_pertama
elif kondisi_kedua:
    perintah_kedua
else:
    perintah_jika_semua_salah

Seleksi Bersarang

Seleksi bersarang atau nested selection adalah struktur if yang berada di dalam struktur if lainnya.

nilai = 85
kehadiran = 90

if nilai >= 75:
    if kehadiran >= 80:
        print("Lulus")
    else:
        print("Tidak lulus karena kehadiran kurang")
else:
    print("Tidak lulus karena nilai kurang")
Perhatian: Gunakan nested if secukupnya. Jika kondisi terlalu kompleks, pertimbangkan penggunaan operator logika atau fungsi terpisah.

Seleksi dengan Operator Logika

Beberapa kondisi dapat digabungkan menggunakan operator and, or, dan

Pertemuan 3

Percabangan if-else

Percabangan if-else digunakan untuk memilih salah satu dari dua tindakan berdasarkan kondisi tertentu.

Pengertian if-else

Struktur if-else memungkinkan program menjalankan blok kode yang berbeda berdasarkan hasil pemeriksaan kondisi.

Jika kondisi bernilai True, program menjalankan blok if. Jika kondisi bernilai False, program menjalankan blok else.

Struktur ini banyak digunakan untuk validasi data, menentukan status, memberikan diskon, dan mengatur hak akses.

Komponen if-else

  • Kondisi
  • Operator perbandingan
  • Blok kode if
  • Blok kode else
  • Indentasi

Struktur Dasar if-else

if kondisi:
    perintah_jika_benar
else:
    perintah_jika_salah
Catatan: Setiap kondisi harus diakhiri dengan tanda titik dua :. Perintah di dalam blok if dan else harus menggunakan indentasi.

Contoh Masalah

Buat program untuk menentukan apakah seseorang sudah cukup umur untuk memiliki kartu identitas.

Ketentuan:
  • Usia minimal adalah 17 tahun.
  • Jika usia minimal terpenuhi, tampilkan "Boleh memiliki kartu identitas".
  • Jika tidak terpenuhi, tampilkan "Belum cukup umur".

Implementasi Python

usia = int(input("Masukkan usia: "))

if usia >= 17:
    print("Boleh memiliki kartu identitas")
else:
    print("Belum cukup umur")

Alur Eksekusi if-else

Mulai
Periksa Kondisi
True: Jalankan if
False: Jalankan else

Operator yang Digunakan

Operator Arti Contoh
== Sama dengan nilai == 75
!= Tidak sama dengan status != "Nonaktif"
> Lebih besar umur > 17
< Lebih kecil nilai < 50
>= Lebih besar atau sama dengan nilai >= 75
<= Lebih kecil atau sama dengan usia <= 12

Contoh Menentukan Bilangan

angka = int(input("Masukkan sebuah angka: "))

if angka % 2 == 0:
    print("Angka tersebut adalah bilangan genap")
else:
    print("Angka tersebut adalah bilangan ganjil")

Operator modulus % digunakan untuk mendapatkan sisa pembagian. Bilangan genap memiliki sisa pembagian 0 ketika dibagi dengan angka 2.

if-else dengan Operator Logika

Operator logika dapat digunakan untuk menggabungkan beberapa kondisi dalam satu percabangan.

nilai = 85
kehadiran = 90

if nilai >= 75 and kehadiran >= 80:
    print("Mahasiswa lulus")
else:
    print("Mahasiswa tidak lulus")
Operator Fungsi
and Semua kondisi harus benar.
or Salah satu kondisi harus benar.
not Membalik nilai kondisi.

Nested if-else

Nested if adalah percabangan yang berada di dalam percabangan lainnya.

username = input("Username: ")
password = input("Password: ")

if username == "admin":
    if password == "12345":
        print("Login berhasil")
    else:
        print("Password salah")
else:
    print("Username tidak ditemukan")
Nested if sebaiknya digunakan secara terukur agar kode tidak terlalu dalam dan sulit dibaca.

Contoh Program Diskon

total_belanja = float(
    input("Masukkan total belanja: ")
)

if total_belanja >= 500000:
    diskon = total_belanja * 0.10
else:
    diskon = 0

total_bayar = total_belanja - diskon

print(f"Diskon: Rp{diskon:,.2f}")
print(f"Total pembayaran: Rp{total_bayar:,.2f}")

Perbedaan if dan if-else

Struktur Perilaku Penggunaan
if Hanya menjalankan perintah jika kondisi benar. Ketika tidak ada tindakan khusus untuk kondisi yang salah.
if-else Memilih salah satu dari dua blok perintah. Ketika kondisi benar dan salah memiliki tindakan masing-masing.

Kesalahan Umum

  • Lupa menulis tanda titik dua setelah kondisi.
  • Tidak menggunakan indentasi pada blok kode.
  • Menggunakan = untuk membandingkan nilai.
  • Menulis else dengan kondisi.
  • Menukar posisi blok if dan else.
  • Tidak menguji kondisi benar dan kondisi salah.

Praktik Terbaik

  • Gunakan kondisi yang jelas.
  • Gunakan nama variabel yang bermakna.
  • Gunakan indentasi empat spasi.
  • Hindari percabangan yang terlalu dalam.
  • Uji kedua jalur program.
  • Tambahkan validasi untuk input pengguna.

Latihan

Buat program Python untuk menentukan apakah seseorang boleh mengikuti ujian.

Ketentuan:
  • Input nilai kehadiran mahasiswa.
  • Mahasiswa boleh mengikuti ujian jika kehadiran minimal 75 persen.
  • Jika memenuhi syarat, tampilkan "Boleh mengikuti ujian".
  • Jika tidak memenuhi syarat, tampilkan "Tidak boleh mengikuti ujian".
  • Validasi agar nilai kehadiran berada pada rentang 0 sampai 100.
Petunjuk: Gunakan input(), float(), operator perbandingan, dan struktur if-else.
Kesimpulan

Struktur if-else digunakan untuk memilih salah satu dari dua jalur program. Kondisi diperiksa terlebih dahulu, kemudian Python menjalankan blok if jika kondisi benar atau blok else jika kondisi salah.

Pertemuan 3

Case Of pada Python

Pada Python, konsep case-of dapat diterapkan menggunakan struktur match-case. Struktur ini digunakan untuk mencocokkan sebuah nilai dengan beberapa pola tertentu.

Pengertian match-case

Struktur match-case digunakan ketika program harus memilih tindakan berdasarkan nilai atau pola tertentu.

Struktur ini memiliki fungsi yang mirip dengan switch-case pada bahasa pemrograman lain. Namun, match-case pada Python memiliki kemampuan pencocokan pola yang lebih fleksibel.

Struktur match-case tersedia mulai Python versi 3.10. Untuk versi Python yang lebih lama, gunakan if-elif-else sebagai alternatif.

Komponen match-case

  • Ekspresi yang diperiksa
  • Keyword match
  • Beberapa pola case
  • Blok perintah
  • Wildcard _

Struktur Dasar match-case

match nilai:
    case pola_pertama:
        perintah_pertama
    case pola_kedua:
        perintah_kedua
    case _:
        perintah_default
Catatan: Tanda titik dua : wajib ditulis setelah match dan setiap case. Blok kode harus menggunakan indentasi.

Contoh Masalah

Buat program untuk menampilkan nama hari berdasarkan angka yang dimasukkan pengguna.

  • Angka 1 berarti Senin.
  • Angka 2 berarti Selasa.
  • Angka 3 berarti Rabu.
  • Angka 4 berarti Kamis.
  • Angka 5 berarti Jumat.
  • Angka 6 berarti Sabtu.
  • Angka 7 berarti Minggu.

Implementasi match-case

hari = int(input("Masukkan nomor hari: "))

match hari:
    case 1:
        print("Senin")
    case 2:
        print("Selasa")
    case 3:
        print("Rabu")
    case 4:
        print("Kamis")
    case 5:
        print("Jumat")
    case 6:
        print("Sabtu")
    case 7:
        print("Minggu")
    case _:
        print("Nomor hari tidak valid")

Default Case dengan Wildcard

Simbol underscore _ digunakan sebagai pola default. Pola ini akan dijalankan jika tidak ada case lain yang cocok.

pilihan = input("Pilih menu: ")

match pilihan:
    case "1":
        print("Anda memilih menu utama")
    case "2":
        print("Anda memilih pengaturan")
    case "3":
        print("Anda memilih bantuan")
    case _:
        print("Pilihan tidak tersedia")
Penggunaan case _ disarankan agar program tetap memiliki respons ketika pengguna memasukkan nilai yang tidak sesuai.

Satu Case dengan Beberapa Nilai

Beberapa nilai dapat digabungkan dalam satu pola menggunakan simbol garis vertikal |.

bulan = int(input("Masukkan nomor bulan: "))

match bulan:
    case 12 | 1 | 2:
        print("Musim hujan")
    case 3 | 4 | 5:
        print("Musim peralihan")
    case 6 | 7 | 8:
        print("Musim kemarau")
    case 9 | 10 | 11:
        print("Musim peralihan")
    case _:
        print("Nomor bulan tidak valid")

Contoh tersebut mengelompokkan beberapa angka bulan ke dalam satu kondisi case.

match-case dan if-elif-else

Versi if-elif-else
menu = input("Pilih menu: ")

if menu == "1":
    print("Menu utama")
elif menu == "2":
    print("Pengaturan")
elif menu == "3":
    print("Bantuan")
else:
    print("Menu tidak tersedia")
Versi match-case
menu = input("Pilih menu: ")

match menu:
    case "1":
        print("Menu utama")
    case "2":
        print("Pengaturan")
    case "3":
        print("Bantuan")
    case _:
        print("Menu tidak tersedia")

Perbandingan Struktur

Aspek if-elif-else match-case
Versi Python Semua versi Python Python 3.10 atau lebih baru
Jenis pemeriksaan Kondisi dan ekspresi Boolean Pencocokan nilai dan pola
Kemudahan untuk banyak pilihan Dapat menjadi panjang Lebih terstruktur
Wildcard default else case _
Pencocokan pola Terbatas Lebih fleksibel

Case dengan Kondisi Tambahan

Struktur match-case dapat menggunakan kondisi tambahan dengan keyword if. Kondisi tambahan ini disebut guard.

nilai = int(input("Masukkan nilai: "))

match nilai:
    case nilai if nilai >= 85:
        print("Predikat A")
    case nilai if nilai >= 75:
        print("Predikat B")
    case nilai if nilai >= 65:
        print("Predikat C")
    case nilai if nilai >= 50:
        print("Predikat D")
    case _:
        print("Predikat E")
Perhatian: Pola dengan guard harus disusun dari kondisi yang paling tinggi atau paling khusus menuju kondisi yang lebih umum.

Pattern Matching pada Tuple

match-case juga dapat mencocokkan beberapa nilai yang berada dalam bentuk tuple.

koordinat = (0, 5)

match koordinat:
    case (0, 0):
        print("Titik berada di pusat")
    case (0, y):
        print(f"Titik berada pada sumbu Y dengan nilai {y}")
    case (x, 0):
        print(f"Titik berada pada sumbu X dengan nilai {x}")
    case (x, y):
        print(f"Titik berada pada koordinat ({x}, {y})")

Nilai yang ditulis sebagai variabel pada pola dapat menangkap bagian tertentu dari data yang cocok.

Pattern Matching pada Dictionary

Dictionary juga dapat diperiksa berdasarkan key tertentu.

pengguna = {
    "role": "admin",
    "aktif": True
}

match pengguna:
    case {"role": "admin", "aktif": True}:
        print("Admin aktif")
    case {"role": "admin"}:
        print("Admin tidak aktif")
    case {"role": "user"}:
        print("Pengguna biasa")
    case _:
        print("Data pengguna tidak dikenali")

Contoh Program Kalkulator

angka_pertama = float(
    input("Masukkan angka pertama: ")
)

operator = input("Masukkan operator (+, -, *, /): ")

angka_kedua = float(
    input("Masukkan angka kedua: ")
)

match operator:
    case "+":
        hasil = angka_pertama + angka_kedua
    case "-":
        hasil = angka_pertama - angka_kedua
    case "*":
        hasil = angka_pertama * angka_kedua
    case "/":
        if angka_kedua != 0:
            hasil = angka_pertama / angka_kedua
        else:
            hasil = "Tidak dapat membagi dengan nol"
    case _:
        hasil = "Operator tidak valid"

print(f"Hasil: {hasil}")

Kapan Menggunakan match-case?

Gunakan match-case ketika:
  • Program memiliki banyak pilihan nilai.
  • Setiap pilihan memiliki pola yang jelas.
  • Kode if-elif menjadi terlalu panjang.
  • Menggunakan Python 3.10 atau lebih baru.
Gunakan if-else ketika:
  • Kondisi berupa rentang nilai.
  • Program harus berjalan pada Python lama.
  • Kondisi menggunakan ekspresi kompleks.
  • Pemeriksaan hanya membutuhkan satu atau dua kondisi.

Kesalahan Umum

  • Menggunakan match pada Python sebelum versi 3.10.
  • Lupa menulis tanda titik dua setelah match atau case.
  • Tidak menyediakan case _ untuk nilai yang tidak cocok.
  • Menulis nilai string tanpa tanda petik.
  • Menyusun guard dengan urutan yang tidak tepat.
  • Menganggap match-case dapat digunakan pada semua versi Python.

Praktik Terbaik

  • Gunakan nama variabel yang jelas.
  • Sediakan case _ sebagai kondisi default.
  • Gunakan indentasi empat spasi.
  • Gunakan if-elif-else untuk kondisi berbentuk rentang.
  • Uji seluruh kemungkinan case.
  • Pastikan versi Python mendukung match-case.

Latihan

Buatlah program menu sederhana menggunakan match-case.

Ketentuan:
  • Tampilkan menu 1 untuk menghitung luas persegi.
  • Tampilkan menu 2 untuk menghitung luas persegi panjang.
  • Tampilkan menu 3 untuk menghitung luas lingkaran.
  • Tampilkan menu 4 untuk keluar dari program.
  • Gunakan case _ jika pilihan tidak tersedia.
Petunjuk: Gunakan input(), konversi tipe data, match-case, dan operator aritmatika.
Kesimpulan

Python menggunakan struktur match-case untuk menerapkan konsep case-of atau switch-case. Struktur ini cocok untuk mencocokkan banyak pilihan nilai atau pola. Gunakan case _ sebagai kondisi default dan pastikan program dijalankan menggunakan Python versi 3.10 atau lebih baru.

Pertemuan 3

Perbandingan if-elif-else dan match-case

Python menggunakan if-elif-else dan match-case untuk membuat percabangan. Keduanya memiliki fungsi yang sama secara umum, tetapi digunakan pada kondisi yang berbeda.

Mengapa Perlu Dibandingkan?

Struktur if-elif-else digunakan untuk memeriksa kondisi Boolean, rentang nilai, atau kondisi yang kompleks.

Sementara itu, struktur match-case digunakan untuk mencocokkan satu nilai dengan beberapa pola tertentu. Struktur ini menyerupai switch-case pada bahasa pemrograman lain.

Pemilihan struktur yang tepat dapat membuat program lebih singkat, rapi, mudah dibaca, dan mudah dikembangkan.

Pertanyaan Utama

  • Apakah kondisi berupa rentang nilai?
  • Apakah nilai dibandingkan secara langsung?
  • Apakah terdapat banyak pilihan menu?
  • Apakah versi Python mendukung match-case?

Perbedaan Utama

Aspek if-elif-else match-case
Fungsi utama Memeriksa kondisi Boolean. Mencocokkan nilai atau pola.
Versi Python Semua versi Python. Python 3.10 atau lebih baru.
Kondisi rentang Sangat sesuai. Dapat digunakan dengan guard, tetapi kurang sederhana.
Banyak pilihan nilai Bisa menjadi panjang. Lebih rapi dan terstruktur.
Wildcard default else case _
Pattern matching Terbatas. Mendukung pencocokan pola.

Contoh dengan if-elif-else

Contoh berikut menentukan nama hari berdasarkan nomor hari.

hari = int(input("Masukkan nomor hari: "))

if hari == 1:
    nama_hari = "Senin"
elif hari == 2:
    nama_hari = "Selasa"
elif hari == 3:
    nama_hari = "Rabu"
elif hari == 4:
    nama_hari = "Kamis"
elif hari == 5:
    nama_hari = "Jumat"
elif hari == 6:
    nama_hari = "Sabtu"
elif hari == 7:
    nama_hari = "Minggu"
else:
    nama_hari = "Nomor hari tidak valid"

print(nama_hari)

Contoh dengan match-case

hari = int(input("Masukkan nomor hari: "))

match hari:
    case 1:
        nama_hari = "Senin"
    case 2:
        nama_hari = "Selasa"
    case 3:
        nama_hari = "Rabu"
    case 4:
        nama_hari = "Kamis"
    case 5:
        nama_hari = "Jumat"
    case 6:
        nama_hari = "Sabtu"
    case 7:
        nama_hari = "Minggu"
    case _:
        nama_hari = "Nomor hari tidak valid"

print(nama_hari)
Catatan: Kode match-case hanya dapat dijalankan pada Python versi 3.10 atau lebih baru.

Kondisi Berupa Rentang Nilai

Untuk kondisi berupa rentang nilai, penggunaan if-elif-else biasanya lebih mudah dibaca.

nilai = float(input("Masukkan nilai: "))

if nilai < 0 or nilai > 100:
    print("Nilai tidak valid")
elif nilai >= 85:
    print("Predikat A")
elif nilai >= 75:
    print("Predikat B")
elif nilai >= 65:
    print("Predikat C")
else:
    print("Predikat D atau E")

Struktur ini lebih sesuai karena kondisi menggunakan operator <, >, dan >= untuk memeriksa interval nilai.

Rentang Nilai dengan match-case

Rentang nilai tetap dapat ditulis menggunakan match-case dengan bantuan guard.

nilai = float(input("Masukkan nilai: "))

match nilai:
    case nilai if nilai < 0 or nilai > 100:
        print("Nilai tidak valid")
    case nilai if nilai >= 85:
        print("Predikat A")
    case nilai if nilai >= 75:
        print("Predikat B")
    case nilai if nilai >= 65:
        print("Predikat C")
    case _:
        print("Predikat D atau E")
Untuk kondisi rentang, if-elif-else biasanya lebih sederhana dibandingkan match-case dengan guard.

Contoh Menu Program

Untuk program berbentuk menu dengan pilihan nilai yang jelas, match-case dapat membuat kode lebih rapi.

pilihan = input("Pilih menu 1, 2, atau 3: ")

match pilihan:
    case "1":
        print("Anda memilih menu utama")
    case "2":
        print("Anda memilih pengaturan")
    case "3":
        print("Anda memilih bantuan")
    case _:
        print("Pilihan tidak tersedia")

Beberapa Nilai dalam Satu Pilihan

Dengan if-elif-else
hari = input("Masukkan nama hari: ").lower()

if hari == "sabtu" or hari == "minggu":
    print("Hari libur")
else:
    print("Hari kerja")
Dengan match-case
hari = input("Masukkan nama hari: ").lower()

match hari:
    case "sabtu" | "minggu":
        print("Hari libur")
    case _:
        print("Hari kerja")

Pada kasus beberapa nilai yang memiliki tindakan sama, match-case dapat menggunakan operator | dalam satu pola.

Kondisi Kompleks

Untuk kondisi yang menggunakan banyak operator logika, if-elif-else lebih mudah digunakan.

nilai = 85
kehadiran = 90
tugas_lengkap = True

if (
    nilai >= 75
    and kehadiran >= 80
    and tugas_lengkap
):
    print("Mahasiswa lulus")
else:
    print("Mahasiswa belum lulus")
Gunakan if-elif-else ketika inti keputusan terletak pada kondisi, bukan pencocokan nilai tertentu.

Panduan Pemilihan Struktur

Pertanyaan Gunakan Alasan
Apakah kondisi berupa rentang nilai? if-elif-else Lebih mudah membaca kondisi perbandingan.
Apakah pilihan berupa nilai tetap? match-case Struktur pencocokan nilai lebih rapi.
Apakah menggunakan Python sebelum 3.10? if-elif-else match-case belum tersedia.
Apakah kondisi menggunakan logika kompleks? if-elif-else Lebih fleksibel untuk ekspresi Boolean.
Apakah data memiliki pola atau struktur? match-case Mendukung pattern matching.

Pattern Matching

Keunggulan utama match-case adalah kemampuan mencocokkan struktur data seperti tuple dan dictionary.

data = ("mahasiswa", "aktif")

match data:
    case ("mahasiswa", "aktif"):
        print("Mahasiswa aktif")
    case ("mahasiswa", "nonaktif"):
        print("Mahasiswa tidak aktif")
    case ("dosen", "aktif"):
        print("Dosen aktif")
    case _:
        print("Data tidak dikenali")

Pencocokan struktur seperti ini lebih sulit ditulis secara ringkas menggunakan if-elif-else biasa.

Kelebihan if-elif-else

  • Mendukung semua versi Python.
  • Fleksibel untuk kondisi kompleks.
  • Cocok untuk rentang nilai.
  • Mudah dipahami pemula.
  • Dapat menggunakan operator logika.

Kelebihan match-case

  • Rapi untuk banyak pilihan nilai.
  • Mendukung pattern matching.
  • Dapat mencocokkan beberapa nilai sekaligus.
  • Memiliki wildcard default.
  • Cocok untuk program berbasis menu.

Kesalahan Umum

  • Menggunakan match-case pada Python versi sebelum 3.10.
  • Menggunakan = untuk membandingkan nilai pada struktur if.
  • Tidak menulis case _ untuk kondisi default.
  • Menggunakan match-case untuk semua kondisi tanpa mempertimbangkan jenis masalah.
  • Tidak menguji seluruh kemungkinan kondisi dan pilihan.

Latihan

Buat dua program untuk menentukan kategori nilai mahasiswa: satu menggunakan if-elif-else dan satu lagi menggunakan match-case.

Ketentuan:
  • Nilai 85 sampai 100 mendapatkan predikat A.
  • Nilai 75 sampai 84 mendapatkan predikat B.
  • Nilai 65 sampai 74 mendapatkan predikat C.
  • Nilai 0 sampai 64 mendapatkan predikat D.
  • Nilai di luar rentang 0 sampai 100 dinyatakan tidak valid.
Petunjuk: Gunakan if-elif-else untuk rentang nilai. Gunakan match-case dengan guard sebagai perbandingan alternatif.
Kesimpulan

Gunakan if-elif-else untuk kondisi berbentuk rentang, kondisi kompleks, dan program yang harus kompatibel dengan berbagai versi Python. Gunakan match-case untuk mencocokkan banyak nilai tetap, pilihan menu, atau pola struktur data.

Pertemuan 3

Studi Kasus Seleksi

Studi kasus seleksi membantu memahami penggunaan if, if-else, dan if-elif-else untuk menyelesaikan permasalahan nyata menggunakan Python.

Tujuan Pembelajaran

Menganalisis Masalah

Menentukan input, proses, kondisi, dan output dari sebuah permasalahan.

Membuat Seleksi

Menggunakan struktur percabangan sesuai dengan kebutuhan program.

Menguji Program

Menguji berbagai kondisi untuk memastikan hasil program sudah benar.

Studi Kasus 1: Menentukan Kelulusan

Buat program untuk menentukan apakah seorang mahasiswa dinyatakan lulus atau tidak lulus.

Ketentuan:
  • Mahasiswa lulus jika nilai akhir minimal 75.
  • Nilai harus berada pada rentang 0 sampai 100.
  • Nilai di luar rentang tersebut dianggap tidak valid.
Analisis Masalah
Input Nilai akhir mahasiswa
Proses Memeriksa rentang nilai dan batas kelulusan
Output Status lulus, tidak lulus, atau tidak valid
Implementasi Python
nilai = float(input("Masukkan nilai akhir: "))

if nilai < 0 or nilai > 100:
    print("Nilai tidak valid")
elif nilai >= 75:
    print("Mahasiswa lulus")
else:
    print("Mahasiswa tidak lulus")

Studi Kasus 2: Menentukan Predikat Nilai

Buat program untuk menentukan predikat nilai mahasiswa berdasarkan nilai yang diperoleh.

Rentang Nilai Predikat
85 sampai 100 A
75 sampai 84 B
65 sampai 74 C
50 sampai 64 D
0 sampai 49 E
nilai = float(input("Masukkan nilai: "))

if nilai < 0 or nilai > 100:
    predikat = "Tidak valid"
elif nilai >= 85:
    predikat = "A"
elif nilai >= 75:
    predikat = "B"
elif nilai >= 65:
    predikat = "C"
elif nilai >= 50:
    predikat = "D"
else:
    predikat = "E"

print(f"Predikat nilai: {predikat}")
Kondisi dengan nilai terbesar harus ditulis terlebih dahulu agar hasil seleksi tidak keliru.

Studi Kasus 3: Menghitung Diskon Belanja

Sebuah toko memberikan diskon berdasarkan total pembelian.

Total Belanja Diskon
Minimal Rp1.000.000 20%
Rp500.000 sampai kurang dari Rp1.000.000 10%
Rp250.000 sampai kurang dari Rp500.000 5%
Kurang dari Rp250.000 Tidak ada diskon
total_belanja = float(
    input("Masukkan total belanja: ")
)

if total_belanja < 0:
    print("Total belanja tidak valid")
else:
    if total_belanja >= 1000000:
        persentase_diskon = 0.20
    elif total_belanja >= 500000:
        persentase_diskon = 0.10
    elif total_belanja >= 250000:
        persentase_diskon = 0.05
    else:
        persentase_diskon = 0

    nilai_diskon = total_belanja * persentase_diskon
    total_bayar = total_belanja - nilai_diskon

    print(f"Diskon: {persentase_diskon * 100:.0f}%")
    print(f"Nilai diskon: Rp{nilai_diskon:,.2f}")
    print(f"Total bayar: Rp{total_bayar:,.2f}")

Studi Kasus 4: Menentukan Hak Akses

Buat program login sederhana untuk menentukan hak akses pengguna berdasarkan username, password, dan status akun.

Ketentuan:
  • Username harus benar.
  • Password harus benar.
  • Akun harus berstatus aktif.
  • Pengguna yang memenuhi semua kondisi dapat masuk ke sistem.
username = input("Username: ")
password = input("Password: ")
status_aktif = input("Apakah akun aktif? (ya/tidak): ")

if username == "admin" and password == "python123":
    if status_aktif.lower() == "ya":
        print("Login berhasil")
        print("Hak akses: Administrator")
    else:
        print("Akun tidak aktif")
else:
    print("Username atau password salah")

Studi Kasus 5: Menentukan Jenis Hari

Buat program untuk menentukan apakah suatu hari termasuk hari kerja atau hari libur.

hari = input("Masukkan nama hari: ").lower()

if hari == "sabtu" or hari == "minggu":
    print("Hari libur")
elif hari in [
    "senin",
    "selasa",
    "rabu",
    "kamis",
    "jumat"
]:
    print("Hari kerja")
else:
    print("Nama hari tidak valid")
Operator or digunakan karena cukup salah satu kondisi yang terpenuhi untuk menyatakan hari libur.

Studi Kasus 6: Menentukan Kategori BMI

Indeks Massa Tubuh atau BMI dapat digunakan untuk menentukan kategori berat badan seseorang.

Nilai BMI Kategori
Kurang dari 18.5 Berat badan kurang
18.5 sampai kurang dari 25 Normal
25 sampai kurang dari 30 Berat badan berlebih
30 atau lebih Obesitas
berat = float(input("Masukkan berat badan (kg): "))
tinggi = float(input("Masukkan tinggi badan (m): "))

if berat <= 0 or tinggi <= 0:
    print("Data harus lebih besar dari nol")
else:
    bmi = berat / (tinggi ** 2)

    if bmi < 18.5:
        kategori = "Berat badan kurang"
    elif bmi < 25:
        kategori = "Normal"
    elif bmi < 30:
        kategori = "Berat badan berlebih"
    else:
        kategori = "Obesitas"

    print(f"BMI: {bmi:.2f}")
    print(f"Kategori: {kategori}")

Studi Kasus 7: Tarif Parkir

Hitung tarif parkir berdasarkan lama kendaraan berada di area parkir.

Ketentuan:
  • Satu jam pertama dikenakan tarif Rp5.000.
  • Setiap jam berikutnya dikenakan tarif Rp3.000.
  • Lama parkir tidak boleh kurang dari satu jam.
lama_parkir = int(
    input("Masukkan lama parkir dalam jam: ")
)

if lama_parkir <= 0:
    print("Lama parkir tidak valid")
elif lama_parkir == 1:
    tarif = 5000
else:
    tarif = 5000 + (lama_parkir - 1) * 3000

    print(f"Total tarif parkir: Rp{tarif:,.2f}")
Perhatikan bahwa output tarif pada contoh tersebut berada di dalam blok else, sehingga hanya ditampilkan ketika input valid.

Memisahkan Seleksi ke dalam Fungsi

Logika seleksi dapat dipisahkan ke dalam fungsi agar program lebih rapi dan mudah digunakan kembali.

def tentukan_status_nilai(nilai):
    if nilai < 0 or nilai > 100:
        return "Tidak valid"
    elif nilai >= 75:
        return "Lulus"
    else:
        return "Tidak lulus"


def main():
    nilai = float(input("Masukkan nilai: "))

    status = tentukan_status_nilai(nilai)

    print(f"Status: {status}")


if __name__ == "__main__":
    main()
Fungsi membuat logika seleksi lebih terorganisasi, mudah diuji, dan dapat digunakan kembali.

Contoh Pengujian

Kasus Input Hasil yang Diharapkan
Nilai di bawah batas 60 Tidak lulus
Nilai tepat pada batas 75 Lulus
Nilai di atas batas 90 Lulus
Nilai negatif -10 Nilai tidak valid
Nilai lebih dari 100 120 Nilai tidak valid

Kesalahan yang Sering Terjadi

  • Tidak memvalidasi input sebelum melakukan perhitungan.
  • Menempatkan kondisi umum sebelum kondisi khusus.
  • Lupa menggunakan operator logika yang sesuai.
  • Tidak menguji nilai batas seperti 0, 75, dan 100.
  • Menggunakan indentasi yang tidak konsisten.
  • Tidak menangani input kosong atau bukan angka.

Tugas Studi Kasus

Buatlah program kasir sederhana dengan ketentuan berikut:

  1. Minta input nama pelanggan.
  2. Minta input nama barang, harga barang, dan jumlah barang.
  3. Hitung subtotal pembelian.
  4. Berikan diskon 20% jika subtotal minimal Rp1.000.000.
  5. Berikan diskon 10% jika subtotal minimal Rp500.000.
  6. Berikan diskon 5% jika subtotal minimal Rp250.000.
  7. Tidak ada diskon jika subtotal kurang dari Rp250.000.
  8. Tampilkan status pembayaran jika total bayar lebih dari atau sama dengan Rp500.000.
  9. Tampilkan ringkasan transaksi dalam format yang rapi.
Petunjuk: Gunakan input, konversi tipe data, operator aritmatika, operator perbandingan, if-elif-else, dan format output menggunakan f-string.
Kesimpulan

Studi kasus seleksi membantu menghubungkan konsep percabangan dengan permasalahan nyata. Dalam menyelesaikan masalah, tentukan terlebih dahulu input, proses, kondisi, dan output. Setelah itu, pilih struktur seleksi yang sesuai dan uji semua kemungkinan kondisi, termasuk nilai batas dan input yang tidak valid.

Pertemuan 4

Perulangan pada Python

Perulangan digunakan untuk menjalankan blok kode secara berulang berdasarkan jumlah pengulangan atau kondisi tertentu.

Pengertian Perulangan

Perulangan atau looping adalah struktur kontrol yang memungkinkan program menjalankan perintah yang sama secara berulang tanpa harus menulis kode berkali-kali.

Python menyediakan dua jenis perulangan utama, yaitu perulangan for dan perulangan while.

Perulangan juga dapat dikombinasikan dengan break, continue, dan else.

Jenis Perulangan

  • Perulangan for
  • Perulangan while
  • Perulangan bersarang
  • break
  • continue
  • else pada perulangan

Perulangan for

Perulangan for digunakan untuk mengulang setiap elemen dari suatu koleksi atau rangkaian data.

for angka in [1, 2, 3, 4, 5]:
    print(angka)
Struktur Umum
for variabel in koleksi:
    perintah

Variabel angka akan menerima nilai setiap elemen dari list secara bergantian.

Fungsi range()

Fungsi range() digunakan untuk menghasilkan deret angka yang sering digunakan bersama perulangan for.

for angka in range(5):
    print(angka)

Output dari contoh tersebut adalah angka 0 sampai 4. Batas akhir pada range() tidak termasuk dalam hasil.

Bentuk Contoh Hasil
range(stop) range(5) 0, 1, 2, 3, 4
range(start, stop) range(2, 6) 2, 3, 4, 5
range(start, stop, step) range(2, 10, 2) 2, 4, 6, 8

Mengulang List

buah = ["Apel", "Jeruk", "Mangga"]

for item in buah:
    print(f"Buah: {item}")

Mengulang String

kata = "Python"

for karakter in kata:
    print(karakter)

Perulangan while

Perulangan while menjalankan blok kode selama kondisi bernilai True.

angka = 1

while angka <= 5:
    print(angka)
    angka += 1
Perhatian: Pastikan terdapat perubahan nilai yang memengaruhi kondisi. Jika tidak, perulangan dapat berjalan tanpa berhenti.

Perulangan while dengan Input

Perulangan while cocok digunakan ketika jumlah pengulangan belum diketahui secara pasti.

jawaban = ""

while jawaban.lower() != "ya":
    jawaban = input("Apakah ingin berhenti? ")

print("Program selesai")

Program akan terus meminta input sampai pengguna mengetik ya.

Pernyataan break

break digunakan untuk menghentikan perulangan sebelum seluruh iterasi selesai.

for angka in range(1, 11):
    if angka == 5:
        break

    print(angka)

Perulangan berhenti ketika nilai angka mencapai 5.

Pernyataan continue

continue digunakan untuk melewati sisa perintah pada iterasi saat ini dan melanjutkan ke iterasi berikutnya.

for angka in range(1, 6):
    if angka == 3:
        continue

    print(angka)

Angka 3 tidak ditampilkan, tetapi perulangan tetap dilanjutkan.

else pada Perulangan

Blok else pada perulangan dijalankan ketika perulangan selesai secara normal tanpa dihentikan oleh break.

for angka in range(1, 4):
    print(angka)
else:
    print("Perulangan selesai")
Dengan break
for angka in range(1, 6):
    if angka == 3:
        break

    print(angka)
else:
    print("Perulangan selesai tanpa break")

Perulangan Bersarang

Perulangan bersarang adalah perulangan yang berada di dalam perulangan lainnya.

for baris in range(1, 4):
    for kolom in range(1, 4):
        print(f"({baris}, {kolom})")

Perulangan bagian luar mengatur baris, sedangkan perulangan bagian dalam mengatur kolom.

Contoh Pola dengan Perulangan

for baris in range(1, 6):
    print("*" * baris)
*
**
***
****
*****

Akumulasi Nilai

Perulangan dapat digunakan untuk menjumlahkan atau mengakumulasikan nilai.

total = 0

for angka in range(1, 6):
    total += angka

print(f"Total: {total}")

Variabel total menyimpan hasil penjumlahan setiap iterasi.

Studi Kasus: Menghitung Total Belanja

jumlah_barang = int(
    input("Masukkan jumlah barang: ")
)

total = 0

for nomor in range(1, jumlah_barang + 1):
    harga = float(input(f"Harga barang ke-{nomor}: "))
    total += harga

print(f"Total belanja: Rp{total:,.2f}")

Studi Kasus: Mencari Data

data = [12, 25, 8, 40, 15]
target = 40
ditemukan = False

for nilai in data:
    if nilai == target:
        ditemukan = True
        break

if ditemukan:
    print("Data ditemukan")
else:
    print("Data tidak ditemukan")

Studi Kasus: Validasi Input

Gunakan while untuk meminta input sampai pengguna memasukkan data yang valid.

while True:
    try:
        nilai = float(input("Masukkan nilai 0-100: "))

        if 0 <= nilai <= 100:
            break

        print("Nilai harus berada pada rentang 0-100.")

    except ValueError:
        print("Input harus berupa angka.")

print(f"Nilai diterima: {nilai}")

Perbandingan for dan while

Aspek for while
Jumlah perulangan Biasanya sudah diketahui. Biasanya bergantung pada kondisi.
Sumber data Cocok untuk list, string, tuple, dan range. Cocok untuk kondisi Boolean.
Risiko infinite loop Lebih kecil. Lebih besar jika kondisi tidak berubah.
Contoh penggunaan Mengulang data mahasiswa. Validasi input pengguna.

Kesalahan Umum Perulangan

  • Lupa memperbarui variabel kondisi pada perulangan while.
  • Menggunakan batas range() yang tidak tepat.
  • Mengubah list secara langsung saat sedang melakukan iterasi.
  • Menempatkan break atau continue pada blok yang salah.
  • Menggunakan perulangan bersarang secara berlebihan.

Praktik Terbaik

  • Gunakan for jika jumlah iterasi sudah diketahui.
  • Gunakan while jika perulangan bergantung pada kondisi.
  • Pastikan kondisi perulangan dapat berhenti.
  • Gunakan nama variabel yang bermakna.
  • Hindari perulangan yang terlalu dalam.
  • Uji perulangan dengan data kosong dan data dalam jumlah besar.

Latihan

Buat program Python untuk mengolah nilai beberapa mahasiswa.

Ketentuan:
  • Minta input jumlah mahasiswa.
  • Minta input nilai setiap mahasiswa.
  • Hitung total seluruh nilai.
  • Hitung nilai rata-rata.
  • Hitung jumlah mahasiswa yang lulus.
  • Mahasiswa lulus jika nilainya minimal 75.
Petunjuk: Gunakan perulangan for, variabel akumulator, operator aritmatika, dan seleksi if.
Kesimpulan

Perulangan digunakan untuk menjalankan instruksi secara berulang. Gunakan for ketika jumlah iterasi atau sumber data sudah diketahui, dan gunakan while ketika perulangan bergantung pada suatu kondisi. Pernyataan break dan continue dapat digunakan untuk mengatur jalannya perulangan.

Pertemuan 4

Perulangan for pada Python

Perulangan for digunakan untuk mengulang blok kode pada setiap elemen dalam suatu koleksi atau rangkaian data.

Pengertian Perulangan for

Perulangan for digunakan ketika program perlu menjalankan perintah yang sama untuk beberapa data.

Data yang dapat digunakan dalam perulangan for antara lain list, tuple, string, dictionary, set, dan objek range().

Setiap elemen koleksi akan dibaca satu per satu dan disimpan sementara dalam variabel perulangan.

Karakteristik for

  • Digunakan untuk mengulang koleksi data.
  • Jumlah iterasi biasanya sudah diketahui.
  • Tidak membutuhkan perubahan counter manual.
  • Dapat digunakan bersama range().

Struktur Dasar for

for variabel in koleksi:
    perintah
Keterangan: Variabel akan menerima setiap elemen dari koleksi secara berurutan. Blok kode yang diulang harus menggunakan indentasi.

Contoh Sederhana

for angka in [1, 2, 3, 4, 5]:
    print(angka)
Hasil Output
1
2
3
4
5

Pada setiap iterasi, variabel angka berisi satu nilai dari list.

Perulangan dengan range()

Fungsi range() menghasilkan deret angka yang dapat digunakan sebagai batas perulangan.

for angka in range(5):
    print(angka)

Output dimulai dari 0 sampai sebelum 5, yaitu 0, 1, 2, 3, dan 4.

Bentuk Contoh Hasil
range(stop) range(5) 0, 1, 2, 3, 4
range(start, stop) range(2, 6) 2, 3, 4, 5
range(start, stop, step) range(2, 10, 2) 2, 4, 6, 8

Menentukan Nilai Awal

for angka in range(3, 8):
    print(angka)

Perulangan dimulai dari angka 3 sampai sebelum 8.

Menentukan Step

for angka in range(0, 11, 2):
    print(angka)

Perulangan bertambah dua angka pada setiap iterasi.

Perulangan Mundur

Perulangan mundur dapat dibuat dengan memberikan nilai step negatif pada fungsi range().

for angka in range(5, 0, -1):
    print(angka)

Output yang dihasilkan adalah 5, 4, 3, 2, dan 1.

Mengulang List

buah = ["Apel", "Jeruk", "Mangga"]

for nama_buah in buah:
    print(f"Nama buah: {nama_buah}")

Variabel nama_buah menerima setiap nilai dari list buah secara berurutan.

Mengulang Tuple

warna = ("Merah", "Hijau", "Biru")

for item in warna:
    print(item)

Mengulang Set

angka = {10, 20, 30}

for item in angka:
    print(item)

Set tidak menjamin urutan elemen tertentu ketika ditampilkan.

Mengulang String

String merupakan kumpulan karakter. Oleh karena itu, setiap karakter dapat dibaca menggunakan perulangan for.

kata = "Python"

for karakter in kata:
    print(karakter)

Mengulang Dictionary

mahasiswa = {
    "nama": "Sinta",
    "umur": 20,
    "prodi": "Informatika"
}

for kunci in mahasiswa:
    print(kunci, mahasiswa[kunci])
Mengambil Key dan Value
for kunci, nilai in mahasiswa.items():
    print(f"{kunci}: {nilai}")

Fungsi enumerate()

Fungsi enumerate() digunakan untuk mendapatkan indeks dan nilai elemen secara bersamaan.

buah = ["Apel", "Jeruk", "Mangga"]

for indeks, nama_buah in enumerate(buah):
    print(f"{indeks}: {nama_buah}")

Secara default, indeks dimulai dari angka 0.

Fungsi zip()

Fungsi zip() digunakan untuk menggabungkan beberapa koleksi dan mengakses elemennya secara bersamaan.

nama = ["Andi", "Budi", "Citra"]
nilai = [80, 75, 90]

for mahasiswa, nilai_akhir in zip(nama, nilai):
    print(f"{mahasiswa}: {nilai_akhir}")

for dengan Seleksi

Perulangan for dapat digabungkan dengan if untuk memproses elemen tertentu saja.

angka = [1, 2, 3, 4, 5, 6]

for nilai in angka:
    if nilai % 2 == 0:
        print(f"{nilai} adalah bilangan genap")

Menghentikan for dengan break

data = [10, 20, 30, 40, 50]
target = 30

for nilai in data:
    if nilai == target:
        print("Data ditemukan")
        break

    print(f"Memeriksa: {nilai}")

Perulangan dihentikan segera setelah nilai target ditemukan.

Melewati Iterasi dengan continue

for angka in range(1, 6):
    if angka == 3:
        continue

    print(angka)

Ketika nilai angka adalah 3, program melewati iterasi tersebut dan melanjutkan ke angka berikutnya.

else pada for

Blok else dijalankan apabila perulangan selesai secara normal tanpa dihentikan oleh break.

for angka in range(1, 4):
    print(angka)
else:
    print("Perulangan selesai")
Contoh dengan break
for angka in range(1, 6):
    if angka == 3:
        break

    print(angka)
else:
    print("Tidak ada break")

Nested for

Nested for adalah perulangan for yang berada di dalam perulangan lainnya.

for baris in range(1, 4):
    for kolom in range(1, 4):
        print(f"Baris {baris}, Kolom {kolom}")

Perulangan bagian dalam akan selesai terlebih dahulu sebelum perulangan bagian luar berpindah ke iterasi berikutnya.

Membuat Pola dengan for

for baris in range(1, 6):
    print("*" * baris)
Hasil Output
*
**
***
****
*****

Akumulasi dengan for

total = 0

for angka in range(1, 6):
    total += angka

print(f"Total: {total}")

Variabel total digunakan untuk menyimpan hasil penjumlahan pada setiap iterasi.

Studi Kasus Nilai Mahasiswa

Program berikut menghitung total, rata-rata, dan jumlah mahasiswa yang lulus.

jumlah_mahasiswa = int(
    input("Jumlah mahasiswa: ")
)

total_nilai = 0
jumlah_lulus = 0

for nomor in range(1, jumlah_mahasiswa + 1):
    nilai = float(input(f"Nilai mahasiswa ke-{nomor}: "))

    total_nilai += nilai

    if nilai >= 75:
        jumlah_lulus += 1

rata_rata = total_nilai / jumlah_mahasiswa

print(f"Total nilai: {total_nilai:.2f}")
print(f"Rata-rata: {rata_rata:.2f}")
print(f"Jumlah mahasiswa lulus: {jumlah_lulus}")

Perbandingan for dan while

Aspek for while
Jumlah iterasi Biasanya sudah diketahui. Bergantung pada kondisi.
Sumber data Koleksi atau range(). Kondisi Boolean.
Counter Dikelola otomatis. Biasanya harus diperbarui manual.
Risiko infinite loop Relatif kecil. Lebih besar.

Kesalahan Umum

  • Lupa menulis tanda titik dua setelah for.
  • Tidak menggunakan indentasi pada blok perulangan.
  • Mengira batas akhir range() ikut diproses.
  • Menggunakan indeks secara manual ketika enumerate() lebih sesuai.
  • Mengubah isi list secara langsung ketika sedang melakukan iterasi.
  • Membuat nested loop terlalu dalam sehingga sulit dibaca.

Praktik Terbaik

  • Gunakan nama variabel yang jelas.
  • Gunakan enumerate() untuk indeks dan nilai.
  • Gunakan zip() untuk menggabungkan beberapa koleksi.
  • Hindari nested loop yang tidak diperlukan.
  • Gunakan break hanya ketika memang diperlukan.
  • Uji perulangan dengan koleksi kosong.

Latihan

Buat program untuk mengolah data nilai mahasiswa menggunakan perulangan for.

Ketentuan:
  • Simpan beberapa nama mahasiswa dalam sebuah list.
  • Simpan nilai masing-masing mahasiswa dalam list lain.
  • Tampilkan nama dan nilai setiap mahasiswa.
  • Tampilkan status "Lulus" jika nilai minimal 75.
  • Gunakan zip() untuk membaca nama dan nilai secara bersamaan.
Petunjuk: Gunakan for, zip(), if-else, dan f-string.
Kesimpulan

Perulangan for digunakan untuk membaca dan memproses setiap elemen dalam koleksi atau deret angka. Fungsi range(), enumerate(), dan zip() dapat membantu membuat perulangan lebih fleksibel. Gunakan break untuk menghentikan perulangan dan continue untuk melewati iterasi tertentu.

Pertemuan 4

Studi Kasus Perulangan for

Studi kasus berikut menunjukkan penerapan perulangan for untuk mengolah data, menghitung nilai, mencari data, dan membuat pola menggunakan Python.

Tujuan Pembelajaran

Mengolah Data

Membaca setiap elemen dalam list menggunakan perulangan.

Menghitung Nilai

Menggunakan akumulator untuk menghitung total dan rata-rata.

Mencari Data

Mencari elemen tertentu dengan bantuan break.

Studi Kasus 1: Menampilkan Data Mahasiswa

Tampilkan seluruh nama mahasiswa yang tersimpan dalam sebuah list.

mahasiswa = [
    "Andi",
    "Budi",
    "Citra",
    "Dina"
]

for nama in mahasiswa:
    print(f"Nama mahasiswa: {nama}")

Perulangan akan berjalan sebanyak jumlah elemen dalam list.

Studi Kasus 2: Menghitung Total dan Rata-rata

Hitung total dan rata-rata nilai dari beberapa mahasiswa.

nilai = [80, 75, 90, 85, 70]

total = 0

for angka in nilai:
    total += angka

rata_rata = total / len(nilai)

print(f"Total nilai: {total}")
print(f"Rata-rata: {rata_rata:.2f}")
Variabel total disebut akumulator karena menyimpan hasil penjumlahan setiap iterasi.

Studi Kasus 3: Menentukan Status Kelulusan

Tentukan status kelulusan setiap mahasiswa berdasarkan nilai minimal 75.

nama = ["Andi", "Budi", "Citra", "Dina"]
nilai = [80, 65, 90, 70]

for mahasiswa, nilai_akhir in zip(nama, nilai):

    if nilai_akhir >= 75:
        status = "Lulus"
    else:
        status = "Tidak lulus"

    print(
        f"{mahasiswa}: {nilai_akhir} - {status}"
    )

Fungsi zip() digunakan untuk membaca dua list secara bersamaan.

Studi Kasus 4: Mencari Nilai Terbesar

nilai = [80, 95, 70, 88, 90]

nilai_terbesar = nilai[0]

for angka in nilai:
    if angka > nilai_terbesar:
        nilai_terbesar = angka

print(f"Nilai terbesar: {nilai_terbesar}")
Nilai pertama digunakan sebagai nilai awal pembanding. Setiap nilai berikutnya dibandingkan dengan nilai terbesar sementara.

Studi Kasus 5: Mencari Data Tertentu

data = [12, 25, 8, 40, 15]
target = 40
ditemukan = False

for nilai in data:
    if nilai == target:
        ditemukan = True
        break

if ditemukan:
    print("Data ditemukan")
else:
    print("Data tidak ditemukan")

Pernyataan break menghentikan pencarian setelah data yang dicari ditemukan.

Studi Kasus 6: Menghitung Bilangan Genap

Hitung jumlah dan tampilkan semua bilangan genap dari sebuah list.

angka = [10, 15, 20, 25, 30, 35, 40]

jumlah_genap = 0

for nilai in angka:
    if nilai % 2 == 0:
        print(f"Bilangan genap: {nilai}")
        jumlah_genap += 1

print(f"Jumlah bilangan genap: {jumlah_genap}")

Studi Kasus 7: Menghitung Total Belanja

Hitung total harga beberapa barang yang dimasukkan oleh pengguna.

jumlah_barang = int(
    input("Jumlah barang: ")
)

total = 0

for nomor in range(1, jumlah_barang + 1):

    harga = float(
        input(f"Harga barang ke-{nomor}: ")
    )

    if harga < 0:
        print("Harga tidak valid")
    else:
        total += harga

print(f"Total belanja: Rp{total:,.2f}")

Studi Kasus 8: Membuat Tabel Perkalian

angka = int(input("Masukkan angka: "))

for faktor in range(1, 11):
    hasil = angka * faktor

    print(
        f"{angka} x {faktor} = {hasil}"
    )

Fungsi range(1, 11) menghasilkan angka 1 sampai 10.

Studi Kasus 9: Membuat Pola Segitiga

tinggi = int(input("Masukkan tinggi pola: "))

for baris in range(1, tinggi + 1):
    print("*" * baris)
Contoh Output
*
**
***
****
*****

Studi Kasus 10: Analisis Nilai Mahasiswa

Program berikut menghitung total nilai, rata-rata, nilai tertinggi, nilai terendah, dan jumlah mahasiswa lulus.

jumlah_mahasiswa = int(
    input("Jumlah mahasiswa: ")
)

total = 0
jumlah_lulus = 0
nilai_tertinggi = None
nilai_terendah = None

for nomor in range(1, jumlah_mahasiswa + 1):

    nilai = float(
        input(f"Nilai mahasiswa ke-{nomor}: ")
    )

    total += nilai

    if nilai >= 75:
        jumlah_lulus += 1

    if nilai_tertinggi is None or nilai > nilai_tertinggi:
        nilai_tertinggi = nilai

    if nilai_terendah is None or nilai < nilai_terendah:
        nilai_terendah = nilai

rata_rata = total / jumlah_mahasiswa

print()
print("=== HASIL ANALISIS ===")
print(f"Total nilai       : {total:.2f}")
print(f"Rata-rata         : {rata_rata:.2f}")
print(f"Nilai tertinggi   : {nilai_tertinggi:.2f}")
print(f"Nilai terendah    : {nilai_terendah:.2f}")
print(f"Jumlah mahasiswa lulus: {jumlah_lulus}")

Studi Kasus 11: Matriks Sederhana

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for baris in matriks:
    for nilai in baris:
        print(nilai, end=" ")

    print()
Output
1 2 3
4 5 6
7 8 9

Studi Kasus 12: Data dengan enumerate()

Gunakan enumerate() untuk menampilkan nomor urut dan nama mahasiswa.

mahasiswa = [
    "Andi",
    "Budi",
    "Citra",
    "Dina"
]

for nomor, nama in enumerate(mahasiswa, start=1):
    print(f"{nomor}. {nama}")

Studi Kasus 13: Menyalin Data yang Memenuhi Syarat

Salin hanya data yang nilainya memenuhi batas tertentu ke list baru.

nilai = [60, 80, 75, 50, 90]
nilai_lulus = []

for angka in nilai:
    if angka >= 75:
        nilai_lulus.append(angka)

print(f"Nilai lulus: {nilai_lulus}")

Method append() digunakan untuk menambahkan data ke dalam list.

Tabel Pengujian

Kasus Data Hasil yang Diharapkan
List berisi data [1, 2, 3] Semua data ditampilkan.
List kosong [] Perulangan tidak dijalankan.
Nilai genap 10 Nilai diproses sebagai bilangan genap.
Data ditemukan 40 Pencarian dapat dihentikan dengan break.
Jumlah iterasi range(1, 4) Perulangan berjalan tiga kali.

Kesalahan Umum

  • Mengira nilai akhir pada range() ikut diproses.
  • Lupa menginisialisasi variabel akumulator.
  • Salah menggunakan break sehingga data belum selesai diproses.
  • Tidak memperhatikan list kosong.
  • Menggunakan nested loop secara berlebihan.
  • Mengubah isi list ketika sedang melakukan iterasi.

Tugas Studi Kasus

Buatlah program sederhana untuk mengolah data penjualan.

Ketentuan:
  1. Simpan data penjualan beberapa hari dalam sebuah list.
  2. Tampilkan penjualan setiap hari.
  3. Hitung total seluruh penjualan.
  4. Hitung rata-rata penjualan.
  5. Cari penjualan tertinggi.
  6. Cari penjualan terendah.
  7. Tampilkan jumlah hari dengan penjualan minimal Rp500.000.
Petunjuk: Gunakan list, perulangan for, akumulator, operator perbandingan, if, dan f-string.
Kesimpulan

Perulangan for sangat berguna untuk memproses setiap elemen dalam koleksi. Dengan menggabungkan for dengan seleksi, akumulator, enumerate(), zip(), dan break, program dapat menyelesaikan berbagai permasalahan pengolahan data secara efisien.

Pertemuan 4

Perulangan while pada Python

Perulangan while digunakan untuk menjalankan blok kode selama kondisi tertentu bernilai True.

Pengertian Perulangan while

Perulangan while digunakan ketika jumlah pengulangan belum diketahui secara pasti dan bergantung pada suatu kondisi.

Program akan memeriksa kondisi terlebih dahulu. Jika kondisi bernilai True, blok kode dijalankan. Setelah itu kondisi diperiksa kembali.

Perulangan akan berhenti ketika kondisi berubah menjadi False atau ketika dihentikan menggunakan break.

Karakteristik while

  • Berbasis kondisi.
  • Jumlah iterasi belum tentu diketahui.
  • Kondisi diperiksa sebelum blok dijalankan.
  • Berisiko mengalami infinite loop.

Struktur Dasar while

while kondisi:
    perintah
Catatan: Kondisi harus diakhiri dengan tanda titik dua :. Perintah di dalam perulangan harus menggunakan indentasi.

Contoh Sederhana

angka = 1

while angka <= 5:
    print(angka)
    angka += 1
Output
1
2
3
4
5

Variabel angka bertambah satu pada setiap iterasi sehingga kondisi akhirnya menjadi False.

Alur Perulangan while

Inisialisasi
Periksa Kondisi
True: Jalankan
False: Berhenti

while dengan Counter

Counter adalah variabel yang digunakan untuk mengontrol jumlah pengulangan.

counter = 0

while counter < 3:
    print(f"Perulangan ke-{counter + 1}")
    counter += 1
Jika nilai counter tidak diperbarui, kondisi dapat selalu bernilai True dan menyebabkan infinite loop.

while dengan Input Pengguna

Perulangan while cocok digunakan untuk meminta input sampai pengguna memasukkan nilai tertentu.

jawaban = ""

while jawaban.lower() != "ya":
    jawaban = input("Apakah ingin berhenti? ")

print("Program selesai")

Perulangan berhenti ketika pengguna memasukkan kata ya.

Validasi Input dengan while

Gunakan while untuk meminta input sampai data memenuhi aturan yang ditentukan.

nilai = float(input("Masukkan nilai 0-100: "))

while nilai < 0 or nilai > 100:
    print("Nilai tidak valid.")
    nilai = float(input("Masukkan nilai 0-100: "))

print(f"Nilai diterima: {nilai}")

while dengan try-except

Gunakan try-except agar program dapat menangani input yang bukan angka.

while True:
    try:
        nilai = float(input("Masukkan nilai 0-100: "))

        if 0 <= nilai <= 100:
            break

        print("Nilai harus berada pada rentang 0-100.")

    except ValueError:
        print("Input harus berupa angka.")

print(f"Nilai diterima: {nilai}")

Menghentikan while dengan break

break menghentikan perulangan secara langsung, meskipun kondisi perulangan masih bernilai True.

while True:
    perintah = input("Masukkan perintah: ")

    if perintah.lower() == "keluar":
        break

    print(f"Perintah diterima: {perintah}")

print("Program berhenti")

Menggunakan continue

continue melewati sisa perintah pada iterasi saat ini dan langsung melanjutkan ke iterasi berikutnya.

angka = 0

while angka < 6:
    angka += 1

    if angka == 3:
        continue

    print(angka)

Angka 3 dilewati, tetapi perulangan tetap berjalan sampai kondisi menjadi False.

else pada while

Blok else dijalankan ketika perulangan selesai secara normal tanpa dihentikan oleh break.

angka = 1

while angka <= 3:
    print(angka)
    angka += 1
else:
    print("Perulangan selesai")
Contoh dengan break
angka = 1

while angka <= 5:
    if angka == 3:
        break

    print(angka)
    angka += 1
else:
    print("Perulangan selesai tanpa break")

Studi Kasus Menu Berulang

Program menu dapat menggunakan while agar pengguna dapat memilih beberapa menu sampai memilih keluar.

while True:
    print()
    print("=== MENU ===")
    print("1. Tampilkan data")
    print("2. Pengaturan")
    print("3. Keluar")

    pilihan = input("Pilih menu: ")

    if pilihan == "1":
        print("Data ditampilkan")
    elif pilihan == "2":
        print("Pengaturan dibuka")
    elif pilihan == "3":
        print("Program selesai")
        break
    else:
        print("Pilihan tidak valid")

Akumulasi dengan while

Perulangan while dapat digunakan untuk menjumlahkan angka sampai pengguna memasukkan angka tertentu.

total = 0
angka = int(input("Masukkan angka: "))

while angka != 0:
    total += angka
    angka = int(input("Masukkan angka lain, 0 untuk berhenti: "))

print(f"Total: {total}")

Angka 0 berfungsi sebagai tanda berhenti atau sentinel value.

Studi Kasus Tebak Angka

angka_rahasia = 7
tebakan = None

while tebakan != angka_rahasia:
    tebakan = int(input("Tebak angka 1-10: "))

    if tebakan < angka_rahasia:
        print("Terlalu kecil")
    elif tebakan > angka_rahasia:
        print("Terlalu besar")
    else:
        print("Tebakan benar")

Nested while

Nested while adalah perulangan while yang berada di dalam perulangan lain.

baris = 1

while baris <= 3:
    kolom = 1

    while kolom <= 3:
        print(f"({baris}, {kolom})")
        kolom += 1

    baris += 1
Pastikan variabel pada perulangan luar dan dalam diperbarui agar tidak terjadi infinite loop.

Perbandingan for dan while

Aspek for while
Dasar perulangan Koleksi atau deret angka. Kondisi Boolean.
Jumlah iterasi Biasanya sudah diketahui. Belum tentu diketahui.
Counter Dikelola otomatis. Biasanya diperbarui manual.
Risiko infinite loop Relatif kecil. Lebih besar.
Contoh penggunaan Membaca semua elemen list. Validasi input dan menu program.

Kesalahan Umum

  • Lupa memperbarui variabel kondisi.
  • Kondisi selalu bernilai True.
  • Menempatkan continue sebelum perubahan variabel kondisi.
  • Tidak menangani input yang bukan angka.
  • Lupa menggunakan break pada menu keluar.
  • Menggunakan nested while terlalu dalam.

Praktik Terbaik

  • Pastikan kondisi dapat berubah.
  • Gunakan break untuk kondisi berhenti yang jelas.
  • Gunakan try-except untuk input numerik.
  • Gunakan nama variabel yang jelas.
  • Hindari perulangan yang terlalu kompleks.
  • Uji kondisi awal dan kondisi berhenti.

Latihan

Buat program kasir sederhana menggunakan perulangan while.

Ketentuan:
  • Tampilkan menu tambah barang dan selesai.
  • Minta input nama barang, harga, dan jumlah.
  • Hitung subtotal setiap barang.
  • Tambahkan subtotal ke total pembayaran.
  • Program terus berjalan selama pengguna belum memilih selesai.
  • Tampilkan total pembayaran ketika program selesai.
Petunjuk: Gunakan while, break, input(), operator aritmatika, dan if-elif-else.
Kesimpulan

Perulangan while digunakan untuk menjalankan blok kode selama kondisi masih bernilai True. Struktur ini cocok untuk validasi input, menu program, permainan, dan proses yang jumlah pengulangannya belum diketahui. Selalu pastikan kondisi dapat berubah agar tidak terjadi infinite loop.

Pertemuan 4

Perulangan Repeat pada Python

Perulangan repeat digunakan untuk menjalankan suatu blok kode berulang kali. Python tidak menyediakan keyword repeat secara langsung, tetapi konsepnya dapat diterapkan menggunakan while True dan break.

Pengertian Perulangan Repeat

Perulangan repeat digunakan ketika sebuah perintah perlu dijalankan berkali-kali sampai kondisi tertentu terpenuhi.

Berbeda dengan while biasa, pola while True dapat menjalankan blok program terlebih dahulu, kemudian memeriksa apakah perulangan harus dihentikan.

Pola ini cocok digunakan pada menu program, validasi input, permainan, dan program yang harus berjalan minimal satu kali.

Komponen Repeat

  • while True
  • Blok perintah
  • Kondisi berhenti
  • Keyword break
  • Perubahan data pada setiap iterasi

Pola Dasar Repeat

while True:
    perintah

    if kondisi_berhenti:
        break
Penjelasan: while True membuat perulangan berjalan terus. Pernyataan break digunakan untuk menghentikan perulangan ketika kondisi tertentu terpenuhi.

Contoh Sederhana

while True:
    print("Perintah dijalankan")

    jawaban = input("Ulangi? (ya/tidak): ")

    if jawaban.lower() == "tidak":
        break

print("Perulangan selesai")

Program akan mengulang perintah selama pengguna belum memasukkan jawaban tidak.

Perbandingan while dan Pola Repeat

Aspek while biasa Pola repeat
Pemeriksaan kondisi Dilakukan sebelum blok dijalankan. Dilakukan di dalam blok perulangan.
Minimal eksekusi Dapat tidak dijalankan. Dijalankan minimal satu kali.
Keyword umum while kondisi while True dan break
Contoh penggunaan Counter dengan kondisi awal. Menu dan validasi input.

Repeat untuk Validasi Input

Pola repeat sangat sesuai untuk meminta input sampai data yang dimasukkan pengguna valid.

while True:
    nilai = float(input("Masukkan nilai 0-100: "))

    if 0 <= nilai <= 100:
        break

    print("Nilai tidak valid. Silakan ulangi.")

print(f"Nilai diterima: {nilai}")

Repeat pada Menu Program

while True:
    print()
    print("=== MENU PROGRAM ===")
    print("1. Tampilkan data")
    print("2. Tambah data")
    print("3. Keluar")

    pilihan = input("Pilih menu: ")

    if pilihan == "1":
        print("Data ditampilkan")
    elif pilihan == "2":
        print("Data ditambahkan")
    elif pilihan == "3":
        print("Program selesai")
        break
    else:
        print("Pilihan tidak tersedia")

Menu akan terus ditampilkan sampai pengguna memilih menu 3.

Repeat pada Program Kalkulator

while True:
    angka_pertama = float(
        input("Angka pertama: ")
    )

    operator = input("Operator (+, -, *, /): ")

    angka_kedua = float(
        input("Angka kedua: ")
    )

    if operator == "+":
        hasil = angka_pertama + angka_kedua
    elif operator == "-":
        hasil = angka_pertama - angka_kedua
    elif operator == "*":
        hasil = angka_pertama * angka_kedua
    elif operator == "/" and angka_kedua != 0:
        hasil = angka_pertama / angka_kedua
    else:
        hasil = "Operasi tidak valid"

    print(f"Hasil: {hasil}")

    ulangi = input("Hitung lagi? (ya/tidak): ")

    if ulangi.lower() == "tidak":
        break

Repeat pada Permainan Tebak Angka

angka_rahasia = 8

while True:
    tebakan = int(input("Tebak angka 1-10: "))

    if tebakan == angka_rahasia:
        print("Tebakan benar")
        break
    elif tebakan < angka_rahasia:
        print("Terlalu kecil")
    else:
        print("Terlalu besar")

Permainan terus berulang sampai pengguna menemukan angka yang benar.

Repeat dengan Sentinel Value

Sentinel value adalah nilai khusus yang digunakan sebagai tanda untuk menghentikan perulangan.

total = 0

while True:
    angka = int(
        input("Masukkan angka, 0 untuk berhenti: ")
    )

    if angka == 0:
        break

    total += angka

print(f"Total: {total}")
Pada contoh tersebut, angka 0 berfungsi sebagai sentinel value.

Repeat dengan Counter

jumlah_pengulangan = 3
counter = 0

while True:
    print(f"Proses ke-{counter + 1}")
    counter += 1

    if counter == jumlah_pengulangan:
        break

Waspada Infinite Loop

Infinite loop terjadi ketika kondisi perulangan selalu bernilai benar dan tidak ada perintah penghenti.

# Contoh yang tidak tepat
while True:
    print("Perulangan tidak berhenti")
Perbaikan
counter = 0

while True:
    print("Perulangan berjalan")
    counter += 1

    if counter == 3:
        break

Alur Repeat

Jalankan Perintah
Periksa Kondisi Berhenti
Salah: Ulangi
Benar: Berhenti

Kesalahan Umum

  • Lupa menulis break.
  • Kondisi berhenti tidak pernah terpenuhi.
  • Menggunakan continue sebelum memperbarui variabel kontrol.
  • Tidak memvalidasi input pengguna.
  • Membuat perulangan tanpa batas yang jelas.

Praktik Terbaik

  • Tentukan kondisi berhenti sejak awal.
  • Gunakan break secara jelas.
  • Gunakan while True untuk menu atau proses interaktif.
  • Pastikan data kontrol selalu diperbarui.
  • Tangani input yang tidak valid.
  • Uji kondisi berhenti dan kondisi pengulangan.

Latihan

Buat program kasir menggunakan pola repeat dengan while True.

Ketentuan:
  • Minta input nama barang.
  • Minta input harga dan jumlah barang.
  • Hitung subtotal barang.
  • Tambahkan subtotal ke total pembayaran.
  • Tanyakan apakah pengguna ingin menambah barang.
  • Hentikan program jika pengguna menjawab tidak.
Petunjuk: Gunakan while True, break, input(), f-string, dan operator aritmatika.
Kesimpulan

Python tidak memiliki keyword repeat atau do-while secara langsung. Namun, konsep repeat dapat dibuat menggunakan while True dan break. Pola ini memastikan blok program dijalankan terlebih dahulu dan dapat dihentikan setelah kondisi tertentu terpenuhi.

Pertemuan 4

Perbandingan for, while, dan repeat

Python menyediakan perulangan for dan while. Adapun konsep repeat dapat diterapkan menggunakan pola while True dengan break.

Mengapa Perlu Dibandingkan?

Ketiga pola tersebut digunakan untuk menjalankan perintah secara berulang, tetapi memiliki cara kerja dan penggunaan yang berbeda.

for cocok digunakan ketika data atau jumlah pengulangan sudah diketahui. while digunakan ketika pengulangan bergantung pada kondisi.

Pola repeat cocok untuk program yang harus dijalankan minimal satu kali, seperti menu, validasi input, dan permainan.

Pertanyaan Pemilihan

  • Apakah jumlah iterasi sudah diketahui?
  • Apakah pengulangan bergantung pada kondisi?
  • Apakah perintah harus dijalankan minimal satu kali?
  • Apakah perulangan membutuhkan break?

Perbandingan Utama

Aspek for while repeat
Ketersediaan di Python Tersedia langsung. Tersedia langsung. Tidak tersedia sebagai keyword.
Dasar pengulangan Koleksi atau deret angka. Kondisi Boolean. Kondisi berhenti.
Jumlah iterasi Biasanya sudah diketahui. Belum tentu diketahui. Belum tentu diketahui.
Pemeriksaan kondisi Dikelola oleh iterator. Sebelum blok dijalankan. Setelah blok dijalankan.
Minimal eksekusi Dapat tidak berjalan jika koleksi kosong. Dapat tidak berjalan. Berjalan minimal satu kali.
Keyword utama for while while True dan break
Risiko infinite loop Relatif kecil. Ada. Ada jika tidak menggunakan break.

Perulangan for

Gunakan for ketika program perlu membaca setiap elemen pada koleksi atau mengulang berdasarkan jumlah tertentu.

for angka in range(1, 6):
    print(angka)
Cocok digunakan untuk:
  • Membaca seluruh elemen list.
  • Mengulang string atau tuple.
  • Membuat pola angka.
  • Mengulang program dengan jumlah tertentu.

Perulangan while

Gunakan while ketika pengulangan bergantung pada kondisi yang diperiksa sebelum blok kode dijalankan.

angka = 1

while angka <= 5:
    print(angka)
    angka += 1
Cocok digunakan untuk:
  • Validasi input.
  • Pengulangan berdasarkan kondisi.
  • Proses yang jumlah iterasinya belum diketahui.
  • Menunggu kondisi tertentu terpenuhi.

Pola repeat

Pola repeat digunakan ketika blok kode harus dijalankan terlebih dahulu, kemudian program memeriksa kondisi berhenti.

while True:
    print("Perintah dijalankan")

    jawaban = input("Ulangi? (ya/tidak): ")

    if jawaban.lower() == "tidak":
        break

Pola ini merupakan cara Python meniru konsep do-while atau repeat-until.

Contoh Tugas yang Sama

Ketiga contoh berikut menampilkan angka 1 sampai 5.

Dengan for
for angka in range(1, 6):
    print(angka)
Dengan while
angka = 1

while angka <= 5:
    print(angka)
    angka += 1
Dengan pola repeat
angka = 1

while True:
    print(angka)
    angka += 1

    if angka > 5:
        break

Perbedaan Alur Eksekusi

for

Ambil elemen, jalankan perintah, lalu lanjut ke elemen berikutnya sampai koleksi selesai.

while

Periksa kondisi, jalankan perintah jika benar, lalu periksa kembali.

repeat

Jalankan perintah terlebih dahulu, periksa kondisi berhenti, lalu ulangi jika diperlukan.

Contoh Validasi Input

Untuk validasi input, pola while True sering digunakan karena input selalu diminta minimal satu kali.

while True:
    try:
        usia = int(input("Masukkan usia: "))

        if usia >= 0:
            break

        print("Usia tidak boleh negatif.")

    except ValueError:
        print("Input harus berupa angka.")

print(f"Usia diterima: {usia}")

Contoh Menu Program

Program menu biasanya menggunakan pola repeat karena menu harus ditampilkan minimal satu kali.

while True:
    print()
    print("=== MENU ===")
    print("1. Tampilkan data")
    print("2. Tambah data")
    print("3. Keluar")

    pilihan = input("Pilih menu: ")

    if pilihan == "1":
        print("Data ditampilkan")
    elif pilihan == "2":
        print("Data ditambahkan")
    elif pilihan == "3":
        print("Program selesai")
        break
    else:
        print("Pilihan tidak valid")

Panduan Pemilihan Perulangan

Situasi Struktur yang Disarankan Alasan
Membaca semua elemen list for for dirancang untuk iterasi koleksi.
Mencetak angka 1 sampai 100 for Jumlah iterasi sudah diketahui.
Meminta input sampai valid while atau repeat Perulangan bergantung pada validitas input.
Menampilkan menu berulang Pola repeat Menu perlu ditampilkan minimal satu kali.
Menunggu data tersedia while Perulangan bergantung pada kondisi.
Mengulang permainan sampai menang Pola repeat Permainan dijalankan lalu diperiksa hasilnya.
Mengolah setiap karakter string for String merupakan koleksi karakter.

Kelebihan for

  • Sintaks ringkas.
  • Cocok untuk koleksi data.
  • Risiko infinite loop kecil.
  • Tidak membutuhkan counter manual.

Kelebihan while

  • Fleksibel untuk kondisi dinamis.
  • Cocok untuk jumlah iterasi tidak pasti.
  • Dapat digunakan untuk proses menunggu.
  • Tidak perlu menggunakan koleksi.

Kelebihan repeat

  • Blok kode selalu dijalankan minimal satu kali.
  • Cocok untuk menu interaktif.
  • Cocok untuk validasi input.
  • Kondisi berhenti mudah terlihat.

Kesalahan Umum

  • Menggunakan while tanpa memperbarui variabel kondisi.
  • Menganggap Python memiliki keyword repeat.
  • Lupa menulis break pada pola while True.
  • Menggunakan for untuk kondisi yang belum memiliki jumlah iterasi pasti.
  • Menggunakan while ketika cukup menggunakan for.
  • Tidak menguji kondisi awal dan kondisi berhenti.

Latihan Perbandingan

Buat tiga versi program untuk menghitung total belanja: menggunakan for, while, dan pola repeat.

Ketentuan:
  • Versi for meminta jumlah barang terlebih dahulu.
  • Versi while berjalan selama counter belum mencapai jumlah barang.
  • Versi repeat terus meminta barang sampai pengguna memilih berhenti.
  • Setiap versi harus menghitung total pembayaran.
  • Tampilkan hasil total dengan format rupiah.
Petunjuk: Gunakan variabel total, input harga, operator aritmatika, for, while, dan while True dengan break.
Kesimpulan

Gunakan for ketika jumlah iterasi atau sumber data sudah diketahui. Gunakan while ketika pengulangan bergantung pada kondisi yang diperiksa sebelum blok dijalankan. Gunakan pola repeat dengan while True dan break ketika blok kode harus dijalankan minimal satu kali, seperti pada menu dan validasi input.

Pertemuan 5

Prosedur pada Python

Prosedur adalah blok kode yang diberi nama dan dapat dipanggil untuk menjalankan tugas tertentu. Pada Python, prosedur dibuat menggunakan keyword def.

Pengertian Prosedur

Prosedur digunakan untuk mengelompokkan beberapa perintah yang memiliki tujuan tertentu ke dalam satu blok kode.

Setelah dibuat, prosedur dapat dipanggil berkali-kali tanpa harus menulis ulang seluruh perintahnya.

Dalam Python, prosedur pada dasarnya merupakan fungsi yang tidak mengembalikan nilai menggunakan return.

Manfaat Prosedur

  • Mengurangi penulisan kode berulang.
  • Membuat program lebih terstruktur.
  • Memudahkan pemeliharaan kode.
  • Memudahkan pengujian program.
  • Memisahkan tugas berdasarkan fungsi.

Struktur Dasar Prosedur

def nama_prosedur():
    perintah
Keterangan: Keyword def digunakan untuk mendefinisikan prosedur. Nama prosedur ditulis setelah def dan diakhiri tanda kurung serta titik dua.

Prosedur Sederhana

def tampilkan_salam():
    print("Selamat datang di program Python")


tampilkan_salam()

Prosedur tampilkan_salam() dipanggil untuk menampilkan pesan kepada pengguna.

Memanggil Prosedur Berkali-kali

def cetak_garis():
    print("-" * 30)


cetak_garis()
print("Laporan Nilai")
cetak_garis()

Prosedur dapat dipanggil berulang kali di bagian program yang berbeda.

Prosedur dengan Parameter

Parameter digunakan agar prosedur dapat menerima data dari luar ketika dipanggil.

def sapa_nama(nama):
    print(f"Halo, {nama}")


sapa_nama("Andi")
sapa_nama("Budi")

Nilai "Andi" dan "Budi" dikirimkan ke parameter nama.

Beberapa Parameter

def tampilkan_biodata(nama, umur, prodi):
    print(f"Nama   : {nama}")
    print(f"Umur   : {umur}")
    print(f"Prodi  : {prodi}")


tampilkan_biodata(
    "Citra",
    20,
    "Informatika"
)

Parameter Default

Parameter default memiliki nilai awal yang digunakan jika argumen tidak diberikan saat prosedur dipanggil.

def sapa(nama, sapaan="Halo"):
    print(f"{sapaan}, {nama}")


sapa("Andi")
sapa("Budi", "Selamat pagi")

Argumen Posisi dan Keyword

Argumen Posisi
def tampilkan_data(nama, umur):
    print(nama)
    print(umur)


tampilkan_data("Dina", 21)
Argumen Keyword
tampilkan_data(
    umur=21,
    nama="Dina"
)

Prosedur dengan Seleksi

def tampilkan_status(nilai):
    if nilai >= 75:
        print("Status: Lulus")
    else:
        print("Status: Tidak lulus")


tampilkan_status(80)
tampilkan_status(60)

Prosedur dengan Perulangan

def tampilkan_daftar(data):
    for nomor, item in enumerate(data, start=1):
        print(f"{nomor}. {item}")


buah = ["Apel", "Jeruk", "Mangga"]

tampilkan_daftar(buah)

Perbandingan Prosedur dan Fungsi

Aspek Prosedur Fungsi
Tujuan Menjalankan suatu tindakan. Menghasilkan suatu nilai.
Nilai balik Biasanya tidak menggunakan return. Menggunakan return.
Contoh Menampilkan pesan. Menghitung luas.
Penggunaan hasil Langsung menjalankan perintah. Hasil dapat disimpan dalam variabel.

Perbedaan dalam Program

Prosedur
def tampilkan_luas(panjang, lebar):
    luas = panjang * lebar
    print(f"Luas: {luas}")


tampilkan_luas(10, 5)
Fungsi
def hitung_luas(panjang, lebar):
    return panjang * lebar


hasil = hitung_luas(10, 5)
print(f"Luas: {hasil}")

Variabel Lokal dalam Prosedur

Variabel yang dibuat di dalam prosedur disebut variabel lokal. Variabel tersebut hanya dapat digunakan di dalam prosedur.

def tampilkan_total():
    total = 500000
    print(f"Total: Rp{total:,.2f}")


tampilkan_total()

# Variabel total tidak dapat digunakan di sini
# print(total)

Studi Kasus Prosedur Kasir

def tampilkan_header():
    print("=" * 35)
    print("        PROGRAM KASIR")
    print("=" * 35)


def tampilkan_detail(nama, harga, jumlah):
    subtotal = harga * jumlah

    print(f"Nama barang : {nama}")
    print(f"Harga       : Rp{harga:,.2f}")
    print(f"Jumlah      : {jumlah}")
    print(f"Subtotal    : Rp{subtotal:,.2f}")
    print("-" * 35)


tampilkan_header()

tampilkan_detail(
    "Buku",
    25000,
    2
)

tampilkan_detail(
    "Pulpen",
    5000,
    3
)

Prosedur dengan Program Utama

def tampilkan_menu():
    print("1. Tampilkan data")
    print("2. Tambah data")
    print("3. Keluar")


def proses_menu():
    while True:
        tampilkan_menu()

        pilihan = input("Pilih menu: ")

        if pilihan == "1":
            print("Data ditampilkan")
        elif pilihan == "2":
            print("Data ditambahkan")
        elif pilihan == "3":
            print("Program selesai")
            break
        else:
            print("Pilihan tidak valid")


if __name__ == "__main__":
    proses_menu()

Kondisi if __name__ == "__main__" memastikan program utama dijalankan ketika file dieksekusi langsung.

Kesalahan Umum

  • Lupa menulis keyword def.
  • Lupa menulis tanda titik dua setelah deklarasi prosedur.
  • Tidak menggunakan indentasi.
  • Mendefinisikan prosedur tetapi tidak pernah memanggilnya.
  • Jumlah argumen tidak sesuai dengan parameter.
  • Menggunakan variabel lokal di luar prosedur.

Praktik Terbaik

  • Gunakan nama prosedur yang menjelaskan tugasnya.
  • Gunakan huruf kecil dan underscore.
  • Buat prosedur dengan satu tanggung jawab utama.
  • Gunakan parameter untuk data yang berubah.
  • Hindari prosedur yang terlalu panjang.
  • Tambahkan dokumentasi jika diperlukan.

Latihan

Buat program data mahasiswa menggunakan beberapa prosedur.

Ketentuan:
  • Buat prosedur untuk menampilkan judul program.
  • Buat prosedur untuk menampilkan data mahasiswa.
  • Buat prosedur untuk menentukan status kelulusan.
  • Mahasiswa lulus jika nilai minimal 75.
  • Panggil seluruh prosedur dari program utama.
Petunjuk: Gunakan def, parameter, if-else, print(), dan pemanggilan prosedur.
Kesimpulan

Prosedur pada Python dibuat menggunakan keyword def dan digunakan untuk menjalankan tugas tertentu. Prosedur dapat menerima parameter, menggunakan seleksi dan perulangan, serta dipanggil berkali-kali. Jika sebuah blok kode perlu mengembalikan nilai, gunakan fungsi dengan return.

Pertemuan 5

Fungsi pada Python

Fungsi adalah blok kode yang dibuat untuk menjalankan tugas tertentu dan dapat mengembalikan nilai menggunakan return.

Pengertian Fungsi

Fungsi digunakan untuk mengelompokkan perintah yang memiliki tujuan tertentu ke dalam sebuah blok kode.

Fungsi dapat menerima data melalui parameter dan menghasilkan nilai yang dapat disimpan atau digunakan kembali.

Penggunaan fungsi membuat program lebih terstruktur, mengurangi pengulangan kode, dan memudahkan pemeliharaan.

Komponen Fungsi

  • Keyword def
  • Nama fungsi
  • Parameter
  • Blok perintah
  • Nilai balik dengan return

Struktur Dasar Fungsi

def nama_fungsi(parameter):
    perintah
    return nilai
Fungsi didefinisikan menggunakan def. Pernyataan return digunakan untuk mengembalikan hasil dari fungsi.

Fungsi Sederhana

def hitung_luas_persegi(sisi):
    return sisi * sisi


hasil = hitung_luas_persegi(5)

print(f"Luas persegi: {hasil}")

Fungsi menerima nilai sisi, menghitung luas, lalu mengembalikan hasil perhitungan.

Fungsi Tanpa Parameter

def tampilkan_judul():
    return "Program Data Mahasiswa"


judul = tampilkan_judul()

print(judul)

Fungsi dengan Parameter

def sapa_nama(nama):
    return f"Halo, {nama}"


pesan = sapa_nama("Andi")

print(pesan)

Parameter nama digunakan untuk menerima data ketika fungsi dipanggil.

Fungsi dengan Beberapa Parameter

def hitung_total(harga, jumlah):
    return harga * jumlah


total = hitung_total(25000, 3)

print(f"Total: Rp{total:,.2f}")

Parameter Default

Parameter default digunakan ketika fungsi memiliki nilai bawaan jika argumen tidak diberikan.

def sapa(nama, sapaan="Halo"):
    return f"{sapaan}, {nama}"


print(sapa("Andi"))
print(sapa("Budi", "Selamat pagi"))

Argumen Posisi dan Keyword

Argumen Posisi
def hitung_luas(panjang, lebar):
    return panjang * lebar


hasil = hitung_luas(10, 5)
Argumen Keyword
hasil = hitung_luas(
    lebar=5,
    panjang=10
)

Pernyataan return

return menghentikan eksekusi fungsi dan mengembalikan nilai kepada kode yang memanggilnya.

def cek_kelulusan(nilai):
    if nilai >= 75:
        return "Lulus"

    return "Tidak lulus"


status = cek_kelulusan(80)

print(status)

Fungsi dengan Beberapa return

def tentukan_predikat(nilai):
    if nilai < 0 or nilai > 100:
        return "Tidak valid"
    elif nilai >= 85:
        return "A"
    elif nilai >= 75:
        return "B"
    elif nilai >= 65:
        return "C"
    else:
        return "D"


print(tentukan_predikat(90))

Fungsi dengan Perulangan

def hitung_total(data):
    total = 0

    for nilai in data:
        total += nilai

    return total


nilai = [80, 75, 90]

hasil = hitung_total(nilai)

print(f"Total: {hasil}")

Fungsi dengan Seleksi

def hitung_diskon(total):
    if total >= 1000000:
        return 0.20
    elif total >= 500000:
        return 0.10
    elif total >= 250000:
        return 0.05
    else:
        return 0


diskon = hitung_diskon(750000)

print(f"Diskon: {diskon * 100:.0f}%")

Mengembalikan Beberapa Nilai

Python dapat mengembalikan beberapa nilai dalam bentuk tuple.

def analisis_nilai(data):
    total = sum(data)
    rata_rata = total / len(data)
    nilai_tertinggi = max(data)
    nilai_terendah = min(data)

    return (
        total,
        rata_rata,
        nilai_tertinggi,
        nilai_terendah
    )


nilai = [80, 75, 90, 85]

total, rata_rata, tertinggi, terendah = analisis_nilai(nilai)

print(f"Total: {total}")
print(f"Rata-rata: {rata_rata:.2f}")
print(f"Nilai tertinggi: {tertinggi}")
print(f"Nilai terendah: {terendah}")

Variabel Lokal dan Global

Variabel yang dibuat di dalam fungsi disebut variabel lokal. Variabel tersebut hanya dapat digunakan di dalam fungsi.

nama_program = "Data Mahasiswa"


def tampilkan_data():
    nama_mahasiswa = "Andi"

    print(nama_program)
    print(nama_mahasiswa)


tampilkan_data()
Sebaiknya gunakan parameter dan nilai balik daripada terlalu sering mengubah variabel global.

Fungsi Lambda

Lambda adalah fungsi singkat tanpa nama yang biasanya digunakan untuk operasi sederhana.

kuadrat = lambda angka: angka ** 2

hasil = kuadrat(5)

print(hasil)

Untuk fungsi yang kompleks, gunakan def agar kode lebih mudah dibaca.

Fungsi Rekursif

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi ini harus memiliki kondisi dasar agar berhenti.

def hitung_mundur(angka):
    if angka == 0:
        print("Selesai")
        return

    print(angka)
    hitung_mundur(angka - 1)


hitung_mundur(5)
Tanpa kondisi dasar, fungsi rekursif dapat berjalan terus hingga menyebabkan error.

Studi Kasus Fungsi Kasir

def hitung_subtotal(harga, jumlah):
    return harga * jumlah


def tentukan_diskon(total):
    if total >= 1000000:
        return 0.20
    elif total >= 500000:
        return 0.10
    elif total >= 250000:
        return 0.05

    return 0


def hitung_total_bayar(total, diskon):
    nilai_diskon = total * diskon

    return total - nilai_diskon


subtotal = hitung_subtotal(25000, 10)
diskon = tentukan_diskon(subtotal)
total_bayar = hitung_total_bayar(subtotal, diskon)

print(f"Subtotal: Rp{subtotal:,.2f}")
print(f"Diskon: {diskon * 100:.0f}%")
print(f"Total bayar: Rp{total_bayar:,.2f}")

Perbandingan Fungsi dan Prosedur

Aspek Fungsi Prosedur
Tujuan Menghasilkan nilai. Menjalankan tindakan.
Keyword def def
Nilai balik Menggunakan return. Biasanya tidak mengembalikan nilai.
Contoh Menghitung luas. Menampilkan laporan.

Kesalahan Umum

  • Lupa menulis return.
  • Menggunakan hasil fungsi tanpa menyimpannya.
  • Jumlah argumen tidak sesuai dengan parameter.
  • Menggunakan variabel lokal di luar fungsi.
  • Membuat fungsi terlalu panjang.
  • Tidak menangani pembagian dengan nol.

Praktik Terbaik

  • Gunakan nama fungsi yang menjelaskan tugasnya.
  • Buat fungsi dengan satu tanggung jawab utama.
  • Gunakan parameter untuk data yang berubah.
  • Gunakan return untuk hasil perhitungan.
  • Hindari ketergantungan pada variabel global.
  • Uji fungsi dengan beberapa kemungkinan input.

Latihan

Buat program pengolahan data mahasiswa menggunakan fungsi.

Ketentuan:
  • Buat fungsi untuk menghitung total nilai.
  • Buat fungsi untuk menghitung rata-rata.
  • Buat fungsi untuk menentukan nilai tertinggi.
  • Buat fungsi untuk menentukan status kelulusan.
  • Tampilkan semua hasil fungsi pada program utama.
Petunjuk: Gunakan def, parameter, return, list, perulangan, dan seleksi.
Kesimpulan

Fungsi pada Python dibuat menggunakan keyword def. Fungsi dapat menerima parameter dan mengembalikan hasil dengan return. Penggunaan fungsi membuat program lebih modular, mudah dibaca, mudah diuji, dan dapat digunakan kembali.

Pertemuan 5

Fungsi Rekursif pada Python

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri untuk menyelesaikan masalah secara bertahap sampai mencapai kondisi dasar.

Pengertian Fungsi Rekursif

Rekursi adalah teknik pemrograman ketika sebuah fungsi memanggil dirinya sendiri dengan data yang lebih sederhana.

Setiap pemanggilan fungsi akan disimpan sementara di dalam memori sampai mencapai kondisi yang menghentikan rekursi.

Fungsi rekursif harus memiliki kondisi dasar. Tanpa kondisi dasar, fungsi akan terus memanggil dirinya sendiri dan dapat menyebabkan RecursionError.

Komponen Rekursi

  • Fungsi memanggil dirinya sendiri.
  • Memiliki kondisi dasar.
  • Masalah diperkecil pada setiap pemanggilan.
  • Rekursi berhenti saat kondisi dasar terpenuhi.

Struktur Dasar Fungsi Rekursif

def fungsi_rekursif(data):
    if kondisi_dasar:
        return hasil

    return fungsi_rekursif(data_lebih_sederhana)
Catatan: Kondisi dasar digunakan untuk menghentikan pemanggilan fungsi. Bagian rekursif memanggil fungsi dengan masalah yang lebih kecil.

Contoh Hitung Mundur

def hitung_mundur(angka):
    if angka == 0:
        print("Selesai")
        return

    print(angka)
    hitung_mundur(angka - 1)


hitung_mundur(5)
Output
5
4
3
2
1
Selesai

Fungsi terus memanggil dirinya sendiri dengan nilai yang lebih kecil sampai angka == 0.

Menghitung Faktorial

Faktorial dari bilangan $n$ ditulis sebagai $n!$ dan didefinisikan dengan rumus:

$n! = n \times (n - 1)!$
$0! = 1$
def faktorial(n):
    if n == 0 or n == 1:
        return 1

    return n * faktorial(n - 1)


hasil = faktorial(5)

print(f"Hasil faktorial: {hasil}")

Hasil dari faktorial(5) adalah 120.

Proses faktorial(4)

faktorial(4)
= 4 * faktorial(3)
= 4 * 3 * faktorial(2)
= 4 * 3 * 2 * faktorial(1)
= 4 * 3 * 2 * 1
= 24

Setelah mencapai kondisi dasar, hasil dikembalikan secara bertahap ke pemanggilan sebelumnya.

Deret Fibonacci

Pada deret Fibonacci, setiap nilai merupakan hasil penjumlahan dua nilai sebelumnya.

def fibonacci(n):
    if n <= 1:
        return n

    return fibonacci(n - 1) + fibonacci(n - 2)


for indeks in range(8):
    print(fibonacci(indeks), end=" ")
Output
0 1 1 2 3 5 8 13
Implementasi Fibonacci rekursif sederhana dapat menjadi lambat untuk nilai besar karena banyak perhitungan yang dilakukan berulang.

Menjumlahkan Elemen List

def jumlah_list(data):
    if len(data) == 0:
        return 0

    return data[0] + jumlah_list(data[1:])


angka = [2, 4, 6, 8]

print(jumlah_list(angka))

Setiap pemanggilan mengambil elemen pertama, kemudian memproses sisa list sampai list menjadi kosong.

Mencari Nilai Terbesar

def nilai_terbesar(data):
    if len(data) == 1:
        return data[0]

    terbesar_sisa = nilai_terbesar(data[1:])

    if data[0] > terbesar_sisa:
        return data[0]

    return terbesar_sisa


angka = [12, 45, 8, 30]

print(nilai_terbesar(angka))

Membalik String

def balik_string(teks):
    if len(teks) <= 1:
        return teks

    return balik_string(teks[1:]) + teks[0]


hasil = balik_string("Python")

print(hasil)

Karakter pertama dipindahkan ke bagian akhir setelah sisa string dibalik secara rekursif.

Memeriksa Palindrom

Palindrom adalah kata yang tetap sama ketika dibaca dari depan maupun dari belakang.

def adalah_palindrom(teks):
    teks = teks.lower()

    if len(teks) <= 1:
        return True

    if teks[0] != teks[-1]:
        return False

    return adalah_palindrom(teks[1:-1])


print(adalah_palindrom("katak"))
print(adalah_palindrom("python"))

Faktor Persekutuan Terbesar

Algoritma Euclid dapat digunakan untuk mencari faktor persekutuan terbesar atau FPB secara rekursif.

def fpb(a, b):
    if b == 0:
        return a

    return fpb(b, a % b)


hasil = fpb(48, 18)

print(f"FPB: {hasil}")

Pada contoh tersebut, FPB dari 48 dan 18 adalah 6.

Rekursi pada Struktur Bertingkat

Rekursi juga cocok untuk memproses data yang memiliki struktur bertingkat, seperti folder dan subfolder.

def tampilkan_struktur(data, indentasi=0):
    for nama, isi in data.items():
        print(" " * indentasi + nama)

        if isinstance(isi, dict):
            tampilkan_struktur(isi, indentasi + 4)


struktur = {
    "Dokumen": {
        "Tugas": {},
        "Laporan": {}
    },
    "Gambar": {
        "Foto": {}
    }
}

tampilkan_struktur(struktur)

Perbandingan Rekursi dan Perulangan

Aspek Rekursi Perulangan
Cara kerja Fungsi memanggil dirinya sendiri. Blok kode dijalankan berulang.
Kondisi berhenti Kondisi dasar. Kondisi perulangan.
Penggunaan memori Dapat lebih besar karena call stack. Biasanya lebih hemat.
Keterbacaan Ringkas untuk masalah bertingkat. Lebih sederhana untuk pengulangan biasa.
Risiko RecursionError. Infinite loop.
Contoh penggunaan Pohon, folder, Fibonacci. List, counter, tabel.

Call Stack pada Rekursi

Setiap pemanggilan fungsi disimpan di dalam call stack. Pemanggilan terakhir harus selesai terlebih dahulu sebelum fungsi sebelumnya melanjutkan prosesnya.

def contoh(angka):
    if angka == 0:
        return

    print(f"Masuk: {angka}")
    contoh(angka - 1)
    print(f"Keluar: {angka}")


contoh(3)
Output
Masuk: 3
Masuk: 2
Masuk: 1
Keluar: 1
Keluar: 2
Keluar: 3

Studi Kasus: Total Nilai dengan Rekursi

def total_nilai(nilai, indeks=0):
    if indeks == len(nilai):
        return 0

    return nilai[indeks] + total_nilai(
        nilai,
        indeks + 1
    )


data_nilai = [80, 75, 90, 85]

total = total_nilai(data_nilai)
rata_rata = total / len(data_nilai)

print(f"Total nilai: {total}")
print(f"Rata-rata: {rata_rata:.2f}")

Rekursi Tanpa Kondisi Dasar

# Contoh yang salah
def berjalan_terus():
    print("Memanggil kembali")
    berjalan_terus()


# berjalan_terus()
Fungsi tersebut tidak memiliki kondisi dasar sehingga akan terus memanggil dirinya sendiri dan menyebabkan RecursionError.

Praktik Terbaik

  • Selalu tentukan kondisi dasar.
  • Pastikan masalah semakin kecil.
  • Gunakan nama fungsi yang jelas.
  • Hindari rekursi terlalu dalam.
  • Gunakan perulangan jika lebih sederhana.
  • Uji nilai awal dan kondisi dasar.

Latihan

Buat beberapa fungsi rekursif berikut:

  1. Fungsi untuk menghitung faktorial.
  2. Fungsi untuk menghitung pangkat suatu bilangan.
  3. Fungsi untuk menghitung jumlah angka dalam list.
  4. Fungsi untuk membalik sebuah string.
  5. Fungsi untuk memeriksa apakah sebuah kata merupakan palindrom.
Petunjuk: Setiap fungsi harus memiliki kondisi dasar, pemanggilan dirinya sendiri, dan data yang semakin sederhana.
Kesimpulan

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Setiap fungsi rekursif wajib memiliki kondisi dasar agar proses berhenti. Rekursi cocok digunakan untuk masalah yang memiliki struktur bertingkat, seperti pohon, folder, faktorial, dan Fibonacci. Untuk pengulangan sederhana, perulangan biasa sering lebih mudah dan lebih hemat memori.

Pertemuan 5

Perbandingan Prosedur dan Fungsi

Prosedur dan fungsi sama-sama dibuat menggunakan def. Perbedaannya terletak pada tujuan dan cara penggunaan nilai yang dihasilkan.

Prosedur

Prosedur digunakan untuk menjalankan suatu tindakan, seperti menampilkan pesan, mencetak laporan, atau mengubah data.

Prosedur biasanya tidak menggunakan return untuk mengembalikan hasil kepada pemanggil.

def tampilkan_salam():
    print("Selamat datang")


tampilkan_salam()

Fungsi

Fungsi digunakan untuk melakukan proses tertentu dan mengembalikan hasil yang dapat digunakan kembali.

Fungsi biasanya menggunakan return untuk mengirimkan nilai kepada kode pemanggil.

def hitung_luas(sisi):
    return sisi * sisi


hasil = hitung_luas(5)
print(hasil)

Perbandingan Utama

Aspek Prosedur Fungsi
Tujuan Menjalankan suatu tindakan. Menghasilkan suatu nilai.
Keyword Python def def
Nilai balik Biasanya tidak menggunakan return. Menggunakan return.
Hasil pemanggilan Biasanya menghasilkan efek langsung. Dapat disimpan dalam variabel.
Contoh penggunaan Menampilkan menu atau laporan. Menghitung luas atau total.
Dapat digunakan dalam ekspresi Biasanya tidak. Ya.

Apa yang Terjadi jika Tidak Menggunakan return?

Dalam Python, fungsi yang tidak memiliki pernyataan return akan mengembalikan nilai None secara otomatis.

def tampilkan_pesan():
    print("Halo")


hasil = tampilkan_pesan()

print(f"Nilai balik: {hasil}")
Output
Halo
Nilai balik: None
Karena tidak mengembalikan nilai, fungsi tersebut dapat dianggap sebagai prosedur.

Contoh Prosedur untuk Menampilkan Data

def tampilkan_mahasiswa(nama, nilai):
    print("=" * 30)
    print(f"Nama  : {nama}")
    print(f"Nilai : {nilai}")

    if nilai >= 75:
        print("Status: Lulus")
    else:
        print("Status: Tidak lulus")

    print("=" * 30)


tampilkan_mahasiswa("Andi", 80)

Prosedur berfokus pada tindakan menampilkan data dan tidak mengembalikan nilai.

Contoh Fungsi untuk Menghitung Data

def tentukan_status(nilai):
    if nilai >= 75:
        return "Lulus"

    return "Tidak lulus"


status = tentukan_status(80)

print(f"Status: {status}")

Fungsi mengembalikan teks status sehingga hasilnya dapat disimpan dan digunakan dalam perintah lain.

Menyelesaikan Masalah yang Sama

Menggunakan Prosedur
def tampilkan_luas(panjang, lebar):
    luas = panjang * lebar
    print(f"Luas: {luas}")


tampilkan_luas(10, 5)
Menggunakan Fungsi
def hitung_luas(panjang, lebar):
    return panjang * lebar


luas = hitung_luas(10, 5)

print(f"Luas: {luas}")
Prosedur langsung menampilkan hasil, sedangkan fungsi mengembalikan hasil agar dapat diproses lebih lanjut.

Menggabungkan Prosedur dan Fungsi

Prosedur dan fungsi dapat digunakan bersama dalam satu program. Fungsi menghitung data, sedangkan prosedur menampilkan hasilnya.

def hitung_subtotal(harga, jumlah):
    return harga * jumlah


def tampilkan_detail(nama, harga, jumlah):
    subtotal = hitung_subtotal(harga, jumlah)

    print(f"Nama barang : {nama}")
    print(f"Harga       : Rp{harga:,.2f}")
    print(f"Jumlah      : {jumlah}")
    print(f"Subtotal    : Rp{subtotal:,.2f}")


tampilkan_detail(
    "Buku",
    25000,
    2
)

Kapan Menggunakan Prosedur atau Fungsi?

Kebutuhan Gunakan Contoh
Menampilkan pesan Prosedur tampilkan_pesan()
Mencetak laporan Prosedur cetak_laporan()
Menghitung nilai Fungsi hitung_total()
Memeriksa kondisi Fungsi cek_kelulusan()
Mengubah format data Fungsi format_rupiah()
Menjalankan beberapa tindakan Prosedur jalankan_menu()

Studi Kasus Kasir

def hitung_subtotal(harga, jumlah):
    return harga * jumlah


def hitung_diskon(total):
    if total >= 1000000:
        return total * 0.20
    elif total >= 500000:
        return total * 0.10
    elif total >= 250000:
        return total * 0.05

    return 0


def tampilkan_ringkasan(nama_pelanggan, subtotal, diskon):
    total_bayar = subtotal - diskon

    print("=" * 35)
    print("RINGKASAN TRANSAKSI")
    print("=" * 35)
    print(f"Pelanggan : {nama_pelanggan}")
    print(f"Subtotal  : Rp{subtotal:,.2f}")
    print(f"Diskon    : Rp{diskon:,.2f}")
    print(f"Total     : Rp{total_bayar:,.2f}")
    print("=" * 35)


subtotal = hitung_subtotal(75000, 10)
diskon = hitung_diskon(subtotal)

tampilkan_ringkasan(
    "Andi",
    subtotal,
    diskon
)

Hal Penting

  • Prosedur dan fungsi sama-sama menggunakan def pada Python.
  • Perbedaan prosedur dan fungsi merupakan perbedaan konsep atau tujuan penggunaan.
  • Fungsi tanpa return secara otomatis mengembalikan None.
  • Fungsi sebaiknya digunakan untuk proses yang menghasilkan data.
  • Prosedur sebaiknya digunakan untuk tindakan seperti mencetak atau menampilkan informasi.

Kesalahan Umum

  • Mengira prosedur merupakan keyword khusus di Python.
  • Lupa menggunakan return pada fungsi.
  • Menggunakan print() ketika hasil seharusnya dikembalikan untuk diproses lagi.
  • Menganggap nilai yang dicetak dapat langsung digunakan sebagai nilai balik.
  • Tidak menyimpan hasil pemanggilan fungsi.
  • Membuat satu fungsi menangani terlalu banyak tugas.

Praktik Terbaik

  • Gunakan nama yang menjelaskan tugas blok kode.
  • Pisahkan proses perhitungan dan tampilan.
  • Gunakan fungsi untuk menghasilkan nilai.
  • Gunakan prosedur untuk tindakan tampilan.
  • Hindari ketergantungan pada variabel global.
  • Buat setiap fungsi atau prosedur memiliki satu tanggung jawab.

Latihan

Buat program data mahasiswa yang memisahkan prosedur dan fungsi.

Ketentuan:
  • Buat fungsi untuk menghitung rata-rata nilai.
  • Buat fungsi untuk menentukan status kelulusan.
  • Buat prosedur untuk menampilkan identitas mahasiswa.
  • Buat prosedur untuk menampilkan hasil akhir.
  • Panggil seluruh fungsi dan prosedur dari program utama.
Petunjuk: Gunakan def, parameter, return, print(), seleksi, dan pemanggilan fungsi.
Kesimpulan

Prosedur dan fungsi pada Python sama-sama dibuat menggunakan def. Prosedur digunakan untuk menjalankan tindakan, sedangkan fungsi digunakan untuk menghasilkan dan mengembalikan nilai. Dalam program yang baik, fungsi dapat digunakan untuk proses perhitungan, sedangkan prosedur digunakan untuk menampilkan hasil atau menjalankan tindakan tertentu.

Penilaian Tengah Semester

Penugasan UTS Python

Buatlah sebuah aplikasi berbasis Python yang menerapkan materi variabel, input, seleksi, perulangan, prosedur, fungsi, dan pengolahan data.

Mata Kuliah

Pemrograman Dasar

Bahasa

Python

Sifat Tugas

Individu

Judul Penugasan

Aplikasi Pengolahan Data Mahasiswa

Buat aplikasi berbasis terminal untuk mengelola data mahasiswa, menghitung nilai, menentukan status kelulusan, serta menampilkan laporan akademik.

Latar Belakang

Pengolahan data mahasiswa membutuhkan proses input, penyimpanan, pencarian, perhitungan, dan penyajian data. Proses tersebut dapat diselesaikan menggunakan konsep dasar pemrograman Python.

Melalui tugas ini, mahasiswa diharapkan mampu menggabungkan beberapa konsep pemrograman menjadi sebuah aplikasi yang dapat digunakan.

Tujuan Penugasan

  1. Memahami penggunaan variabel dan tipe data.
  2. Menggunakan input untuk menerima data dari pengguna.
  3. Menerapkan seleksi if-elif-else.
  4. Menerapkan perulangan for dan while.
  5. Membuat prosedur dan fungsi.
  6. Mengolah data menggunakan list atau dictionary.
  7. Membuat program yang terstruktur dan mudah dipahami.

Ketentuan Umum

  • Program dibuat menggunakan bahasa Python.
  • Program dijalankan melalui terminal atau command prompt.
  • Program harus memiliki menu utama.
  • Program harus menggunakan fungsi atau prosedur.
  • Program harus memiliki validasi input.
  • Gunakan nama variabel yang jelas.
  • Tambahkan komentar pada bagian kode yang penting.
  • Program tidak boleh berhenti karena kesalahan input pengguna.

Fitur Minimal Program

Aplikasi minimal harus memiliki fitur-fitur berikut:

No. Fitur Keterangan
1 Tambah data Menambahkan data mahasiswa baru.
2 Tampilkan data Menampilkan seluruh data mahasiswa.
3 Cari data Mencari mahasiswa berdasarkan NIM atau nama.
4 Hitung nilai Menghitung nilai akhir mahasiswa.
5 Status kelulusan Menentukan lulus atau tidak lulus.
6 Laporan Menampilkan ringkasan data akademik.
7 Keluar Mengakhiri program.

Struktur Data

Setiap data mahasiswa minimal memiliki informasi berikut:

mahasiswa = {
    "nim": "2301001",
    "nama": "Andi",
    "prodi": "Informatika",
    "nilai_tugas": 80,
    "nilai_uts": 75,
    "nilai_uas": 85
}

Seluruh data mahasiswa dapat disimpan ke dalam list.

data_mahasiswa = []

Ketentuan Perhitungan Nilai

Nilai akhir mahasiswa dihitung menggunakan bobot berikut:

Komponen Bobot
Nilai tugas 30%
Nilai UTS 30%
Nilai UAS 40%
nilai_akhir = (
    nilai_tugas * 0.30
    + nilai_uts * 0.30
    + nilai_uas * 0.40
)
Ketentuan Kelulusan
  • Nilai akhir minimal 75: Lulus.
  • Nilai akhir di bawah 75: Tidak lulus.

Rancangan Menu

=== APLIKASI DATA MAHASISWA ===
1. Tambah data mahasiswa
2. Tampilkan semua data
3. Cari data mahasiswa
4. Hitung nilai mahasiswa
5. Tampilkan laporan
6. Keluar

Menu harus ditampilkan berulang kali sampai pengguna memilih menu keluar.

Fungsi atau Prosedur yang Disarankan

def tampilkan_menu():
    pass


def tambah_mahasiswa(data):
    pass


def tampilkan_mahasiswa(data):
    pass


def cari_mahasiswa(data, kata_kunci):
    pass


def hitung_nilai_akhir(tugas, uts, uas):
    pass


def tentukan_status(nilai_akhir):
    pass


def tampilkan_laporan(data):
    pass


def jalankan_program():
    pass
Nama fungsi dapat diubah sesuai kebutuhan, tetapi setiap fungsi sebaiknya memiliki satu tanggung jawab utama.

Contoh Fungsi Inti

def hitung_nilai_akhir(tugas, uts, uas):
    return (
        tugas * 0.30
        + uts * 0.30
        + uas * 0.40
    )


def tentukan_status(nilai_akhir):
    if nilai_akhir >= 75:
        return "Lulus"

    return "Tidak lulus"


nilai_akhir = hitung_nilai_akhir(80, 75, 85)
status = tentukan_status(nilai_akhir)

print(f"Nilai akhir: {nilai_akhir:.2f}")
print(f"Status: {status}")

Validasi Input

Nilai yang dimasukkan harus berada pada rentang 0 sampai 100.

def input_nilai(label):
    while True:
        try:
            nilai = float(input(f"{label}: "))

            if 0 <= nilai <= 100:
                return nilai

            print("Nilai harus berada pada rentang 0-100.")

        except ValueError:
            print("Input harus berupa angka.")

Ketentuan Fitur Pencarian

Pengguna dapat mencari data berdasarkan NIM atau nama mahasiswa.

def cari_mahasiswa(data, kata_kunci):
    ditemukan = False

    for mahasiswa in data:
        if (
            kata_kunci.lower() in mahasiswa["nim"].lower()
            or kata_kunci.lower() in mahasiswa["nama"].lower()
        ):
            print(mahasiswa)
            ditemukan = True

    if not ditemukan:
        print("Data tidak ditemukan")

Ketentuan Laporan

Laporan minimal menampilkan:

  • Jumlah seluruh mahasiswa.
  • Jumlah mahasiswa lulus.
  • Jumlah mahasiswa tidak lulus.
  • Nilai rata-rata kelas.
  • Nilai tertinggi.
  • Nilai terendah.
def tampilkan_laporan(data):
    if len(data) == 0:
        print("Belum ada data mahasiswa.")
        return

    total_nilai = 0
    jumlah_lulus = 0

    for mahasiswa in data:
        nilai = mahasiswa["nilai_akhir"]
        total_nilai += nilai

        if mahasiswa["status"] == "Lulus":
            jumlah_lulus += 1

    rata_rata = total_nilai / len(data)

    print(f"Jumlah mahasiswa: {len(data)}")
    print(f"Jumlah lulus: {jumlah_lulus}")
    print(f"Jumlah tidak lulus: {len(data) - jumlah_lulus}")
    print(f"Rata-rata kelas: {rata_rata:.2f}")

Ketentuan Teknis

Wajib Digunakan
  • Variabel.
  • Input dan output.
  • if-elif-else.
  • for.
  • while.
Disarankan Digunakan
  • Fungsi dan prosedur.
  • List atau dictionary.
  • try-except.
  • break dan continue.
  • File sederhana sebagai fitur tambahan.

Format Laporan

  1. Halaman judul.
  2. Latar belakang.
  3. Tujuan program.
  4. Penjelasan alur program.
  5. Penjelasan setiap fungsi atau prosedur.
  6. Screenshot kode program.
  7. Screenshot hasil program.
  8. Pengujian program.
  9. Kesimpulan.

Skenario Pengujian

No. Skenario Hasil yang Diharapkan
1 Menambahkan data valid Data berhasil disimpan.
2 Memasukkan nilai di atas 100 Program meminta input ulang.
3 Mencari data tersedia Data mahasiswa ditampilkan.
4 Mencari data tidak tersedia Pesan data tidak ditemukan.
5 Menampilkan data kosong Pesan belum ada data.
6 Memilih menu keluar Program berhenti dengan normal.

Rubrik Penilaian

Komponen Bobot
Kesesuaian fitur 25%
Penerapan konsep Python 25%
Struktur dan kualitas kode 20%
Validasi dan pengujian 15%
Laporan 10%
Presentasi 5%

Berkas Pengumpulan

Kumpulkan berkas berikut:

  • File program dengan ekstensi .py.
  • Laporan dalam format PDF.
  • Screenshot hasil pengujian.
  • File tambahan jika digunakan.
Nama_NIM_UTS/
├── program_mahasiswa.py
├── laporan_uts.pdf
└── screenshot/
    ├── menu.png
    ├── tambah_data.png
    └── laporan.png

Peraturan Pengerjaan

  • Tugas dikerjakan secara individu.
  • Setiap mahasiswa wajib memahami kode yang dikumpulkan.
  • Dilarang menyalin program tanpa memahami prosesnya.
  • Program harus dapat dijalankan tanpa error.
  • Keterlambatan pengumpulan mengikuti kebijakan dosen.

Fitur Tambahan

Mahasiswa dapat memperoleh nilai tambahan dengan menerapkan fitur berikut:

  • Menyimpan data ke file CSV atau JSON.
  • Mengedit data mahasiswa.
  • Menghapus data mahasiswa.
  • Mengurutkan data berdasarkan nilai.
  • Menggunakan fungsi rekursif untuk fitur tertentu.
  • Menambahkan antarmuka grafis sederhana.

Checklist Sebelum Mengumpulkan

Ringkasan Penugasan

Buat aplikasi pengolahan data mahasiswa menggunakan Python. Program harus memiliki menu, fitur pengolahan data, validasi input, fungsi, prosedur, perulangan, dan laporan. Pastikan kode dapat dijalankan, mudah dibaca, serta setiap fitur dijelaskan dalam laporan.

Evaluasi Pembelajaran

Kuis UTS Pemrograman Dasar

Jawablah pertanyaan berikut untuk menguji pemahaman terhadap materi Python yang telah dipelajari.

Jumlah Soal

20

Waktu

30 Menit

Jenis Soal

Pilihan Ganda

Petunjuk Pengerjaan

  1. Bacalah setiap soal dengan teliti.
  2. Pilih satu jawaban yang paling tepat.
  3. Setiap soal memiliki nilai yang sama.
  4. Jangan membuka catatan atau program Python selama kuis.
  5. Periksa kembali jawaban sebelum dikumpulkan.
Soal 1

Keyword yang digunakan untuk mendefinisikan fungsi pada Python adalah ...

Soal 2

Apa hasil dari kode berikut?

angka = 5
print(angka * 2)
Soal 3

Struktur seleksi yang digunakan untuk dua kondisi adalah ...

Soal 4

Apa hasil dari kode berikut?

for angka in range(3):
    print(angka)
Soal 5

Pernyataan yang digunakan untuk menghentikan perulangan adalah ...

Soal 6

Perulangan yang digunakan untuk membaca setiap elemen list adalah ...

Soal 7

Apa fungsi dari return?

Soal 8

Apa nilai balik dari fungsi yang tidak memiliki return?

Soal 9

Perulangan while akan berjalan selama ...

Soal 10

Apa yang dimaksud dengan infinite loop?

Soal 11

Fungsi yang memanggil dirinya sendiri disebut ...

Soal 12

Komponen wajib dalam fungsi rekursif adalah ...

Soal 13

Apa fungsi dari continue?

Soal 14

Struktur yang biasa digunakan untuk meniru do-while pada Python adalah ...

Soal 15

Apa hasil dari kode berikut?

def tambah(a, b):
    return a + b

print(tambah(2, 3))
Soal 16

Parameter adalah ...

Soal 17

Pernyataan yang benar tentang prosedur adalah ...

Soal 18

Variabel yang dibuat di dalam fungsi disebut variabel ...

Soal 19

Fungsi berikut digunakan untuk menghitung ...

def faktorial(n):
    if n == 0:
        return 1

    return n * faktorial(n - 1)
Soal 20

Fungsi berikut menghasilkan nilai ...

def kuadrat(angka):
    return angka ** 2

print(kuadrat(4))

Soal Esai

Jelaskan perbedaan antara for, while, dan pola repeat menggunakan while True serta break.

Kunci Jawaban Dosen

Bagian ini sebaiknya disembunyikan dari mahasiswa sebelum kuis dikerjakan.
  1. B
  2. C
  3. A
  4. B
  5. C
  6. B
  7. C
  8. C
  9. A
  10. C
  1. B
  2. A
  3. C
  4. B
  5. C
  6. A
  7. B
  8. B
  9. B
  10. D
Catatan

Kuis ini digunakan untuk mengukur pemahaman mahasiswa terhadap konsep dasar Python. Pastikan mahasiswa tidak hanya menghafal jawaban, tetapi juga memahami alasan dari setiap jawaban yang dipilih.

Project UTS

Aplikasi Pengolahan Data Mahasiswa

Project UTS ini menggabungkan konsep variabel, input, seleksi, perulangan, list, dictionary, prosedur, fungsi, dan validasi input dalam sebuah aplikasi berbasis terminal.

Bahasa Pemrograman

Python

Jenis Aplikasi

Aplikasi Terminal

Sifat Project

Individu

Deskripsi Project

Buatlah aplikasi yang dapat digunakan untuk mengelola data mahasiswa. Aplikasi harus dapat menyimpan data, menampilkan data, mencari data, menghitung nilai akhir, dan menentukan status kelulusan mahasiswa.

Program dijalankan menggunakan menu utama dan harus tetap berjalan sampai pengguna memilih menu keluar.

Tujuan Project

  • Menerapkan konsep dasar Python dalam sebuah program.
  • Menggunakan struktur data list dan dictionary.
  • Membuat program menggunakan fungsi dan prosedur.
  • Menerapkan seleksi dan perulangan.
  • Menerapkan validasi input.
  • Membuat aplikasi yang terstruktur dan mudah digunakan.

Fitur yang Wajib Dibuat

No. Fitur Keterangan
1 Tambah data Menambahkan data mahasiswa baru.
2 Tampilkan data Menampilkan seluruh data mahasiswa.
3 Cari data Mencari mahasiswa berdasarkan NIM atau nama.
4 Hitung nilai Menghitung nilai akhir mahasiswa.
5 Status kelulusan Menampilkan status lulus atau tidak lulus.
6 Laporan Menampilkan ringkasan nilai mahasiswa.
7 Keluar Mengakhiri program secara normal.

Struktur Data

Data mahasiswa dapat disimpan menggunakan dictionary. Seluruh dictionary kemudian disimpan ke dalam list.

data_mahasiswa = [
    {
        "nim": "2301001",
        "nama": "Andi",
        "prodi": "Informatika",
        "nilai_tugas": 80,
        "nilai_uts": 75,
        "nilai_uas": 85,
        "nilai_akhir": 80.50,
        "status": "Lulus"
    }
]

Perhitungan Nilai

Nilai akhir dihitung berdasarkan bobot berikut:

Komponen Bobot
Nilai tugas 30%
Nilai UTS 30%
Nilai UAS 40%
nilai_akhir = (
    nilai_tugas * 0.30
    + nilai_uts * 0.30
    + nilai_uas * 0.40
)
Nilai akhir minimal 75 dinyatakan Lulus.

Contoh Program Lengkap

data_mahasiswa = []


def garis():
    print("=" * 60)


def tampilkan_judul():
    garis()
    print("APLIKASI PENGOLAHAN DATA MAHASISWA")
    garis()


def input_nilai(label):
    while True:
        try:
            nilai = float(input(f"{label}: "))

            if 0 <= nilai <= 100:
                return nilai

            print("Nilai harus berada pada rentang 0 sampai 100.")

        except ValueError:
            print("Input harus berupa angka.")


def cari_nim(nim):
    for mahasiswa in data_mahasiswa:
        if mahasiswa["nim"] == nim:
            return mahasiswa

    return None


def hitung_nilai_akhir(nilai_tugas, nilai_uts, nilai_uas):
    return (
        nilai_tugas * 0.30
        + nilai_uts * 0.30
        + nilai_uas * 0.40
    )


def tentukan_status(nilai_akhir):
    if nilai_akhir >= 75:
        return "Lulus"

    return "Tidak lulus"


def tambah_data():
    print()
    print("=== TAMBAH DATA MAHASISWA ===")

    nim = input("NIM: ")

    if cari_nim(nim) is not None:
        print("NIM sudah terdaftar.")
        return

    nama = input("Nama: ")
    prodi = input("Program studi: ")

    nilai_tugas = input_nilai("Nilai tugas")
    nilai_uts = input_nilai("Nilai UTS")
    nilai_uas = input_nilai("Nilai UAS")

    nilai_akhir = hitung_nilai_akhir(
        nilai_tugas,
        nilai_uts,
        nilai_uas
    )

    status = tentukan_status(nilai_akhir)

    mahasiswa = {
        "nim": nim,
        "nama": nama,
        "prodi": prodi,
        "nilai_tugas": nilai_tugas,
        "nilai_uts": nilai_uts,
        "nilai_uas": nilai_uas,
        "nilai_akhir": nilai_akhir,
        "status": status
    }

    data_mahasiswa.append(mahasiswa)

    print("Data berhasil ditambahkan.")


def tampilkan_data():
    print()
    print("=== DATA MAHASISWA ===")

    if len(data_mahasiswa) == 0:
        print("Belum ada data mahasiswa.")
        return

    for nomor, mahasiswa in enumerate(data_mahasiswa, start=1):
        print()
        print(f"Data ke-{nomor}")
        print(f"NIM          : {mahasiswa['nim']}")
        print(f"Nama         : {mahasiswa['nama']}")
        print(f"Program studi: {mahasiswa['prodi']}")
        print(f"Nilai akhir  : {mahasiswa['nilai_akhir']:.2f}")
        print(f"Status       : {mahasiswa['status']}")


def cari_data():
    print()
    print("=== CARI DATA MAHASISWA ===")

    kata_kunci = input(
        "Masukkan NIM atau nama: "
    ).lower()

    ditemukan = False

    for mahasiswa in data_mahasiswa:
        if (
            kata_kunci in mahasiswa["nim"].lower()
            or kata_kunci in mahasiswa["nama"].lower()
        ):
            print()
            print(f"NIM         : {mahasiswa['nim']}")
            print(f"Nama        : {mahasiswa['nama']}")
            print(f"Program studi: {mahasiswa['prodi']}")
            print(f"Nilai akhir : {mahasiswa['nilai_akhir']:.2f}")
            print(f"Status      : {mahasiswa['status']}")

            ditemukan = True

    if not ditemukan:
        print("Data tidak ditemukan.")


def tampilkan_laporan():
    print()
    print("=== LAPORAN AKADEMIK ===")

    if len(data_mahasiswa) == 0:
        print("Belum ada data mahasiswa.")
        return

    total_nilai = 0
    jumlah_lulus = 0

    nilai_tertinggi = data_mahasiswa[0]["nilai_akhir"]
    nilai_terendah = data_mahasiswa[0]["nilai_akhir"]

    for mahasiswa in data_mahasiswa:
        nilai = mahasiswa["nilai_akhir"]

        total_nilai += nilai

        if mahasiswa["status"] == "Lulus":
            jumlah_lulus += 1

        if nilai > nilai_tertinggi:
            nilai_tertinggi = nilai

        if nilai < nilai_terendah:
            nilai_terendah = nilai

    jumlah_mahasiswa = len(data_mahasiswa)
    jumlah_tidak_lulus = jumlah_mahasiswa - jumlah_lulus
    rata_rata = total_nilai / jumlah_mahasiswa

    print(f"Jumlah mahasiswa : {jumlah_mahasiswa}")
    print(f"Jumlah lulus    : {jumlah_lulus}")
    print(f"Jumlah tidak lulus: {jumlah_tidak_lulus}")
    print(f"Rata-rata kelas : {rata_rata:.2f}")
    print(f"Nilai tertinggi : {nilai_tertinggi:.2f}")
    print(f"Nilai terendah  : {nilai_terendah:.2f}")


def tampilkan_menu():
    print()
    garis()
    print("MENU UTAMA")
    garis()
    print("1. Tambah data mahasiswa")
    print("2. Tampilkan semua data")
    print("3. Cari data mahasiswa")
    print("4. Tampilkan laporan")
    print("5. Keluar")
    garis()


def jalankan_program():
    tampilkan_judul()

    while True:
        tampilkan_menu()

        pilihan = input("Pilih menu: ")

        if pilihan == "1":
            tambah_data()

        elif pilihan == "2":
            tampilkan_data()

        elif pilihan == "3":
            cari_data()

        elif pilihan == "4":
            tampilkan_laporan()

        elif pilihan == "5":
            print("Program selesai.")
            break

        else:
            print("Pilihan menu tidak valid.")


if __name__ == "__main__":
    jalankan_program()

Contoh Tampilan Menu

============================================================
APLIKASI PENGOLAHAN DATA MAHASISWA
============================================================

============================================================
MENU UTAMA
============================================================
1. Tambah data mahasiswa
2. Tampilkan semua data
3. Cari data mahasiswa
4. Tampilkan laporan
5. Keluar
============================================================
Pilih menu:

Konsep yang Digunakan

Konsep Penerapan
Variabel Menyimpan data mahasiswa dan nilai.
List Menyimpan banyak data mahasiswa.
Dictionary Menyimpan detail setiap mahasiswa.
if-elif-else Memilih menu dan menentukan status.
for Menampilkan dan mencari data.
while Menjalankan menu dan validasi input.
Fungsi Menghitung nilai dan menentukan status.
Prosedur Menampilkan menu dan data.
try-except Menangani input yang bukan angka.

Skenario Pengujian

No. Skenario Hasil yang Diharapkan
1 Menambahkan data valid Data berhasil tersimpan.
2 Memasukkan nilai lebih dari 100 Program meminta input ulang.
3 Memasukkan NIM duplikat Data ditolak.
4 Mencari data yang tersedia Data mahasiswa ditampilkan.
5 Mencari data yang tidak tersedia Pesan data tidak ditemukan.
6 Menampilkan laporan tanpa data Pesan belum ada data.
7 Memilih menu keluar Program berhenti normal.

Pengembangan Tambahan

Untuk meningkatkan kualitas project, tambahkan beberapa fitur berikut:

  • Edit data mahasiswa.
  • Hapus data mahasiswa.
  • Mengurutkan data berdasarkan nilai.
  • Menyimpan data ke file JSON atau CSV.
  • Memuat data dari file ketika program dijalankan.
  • Menambahkan login admin sederhana.

Format Pengumpulan

Nama_NIM_Project_UTS/
├── aplikasi_mahasiswa.py
├── laporan_project.pdf
└── screenshot/
    ├── menu-utama.png
    ├── tambah-data.png
    ├── pencarian.png
    └── laporan.png

Rubrik Penilaian

Komponen Bobot
Kelengkapan fitur 25%
Penerapan konsep Python 25%
Struktur dan kualitas kode 20%
Validasi dan pengujian 15%
Laporan project 10%
Presentasi 5%

Checklist Project

Kesimpulan

Project UTS ini melatih mahasiswa untuk menggabungkan berbagai konsep dasar Python ke dalam aplikasi nyata. Program harus memiliki struktur yang jelas, validasi input, fungsi dan prosedur, serta dapat menjalankan seluruh fitur tanpa error.

Pertemuan 9

Konsep Array dalam Python

Array digunakan untuk menyimpan sekumpulan data dalam satu variabel sehingga data dapat dikelola dengan lebih mudah.

Pengertian Array

Array adalah struktur data yang digunakan untuk menyimpan banyak nilai dalam satu tempat. Setiap nilai di dalam array memiliki posisi atau indeks.

Dalam Python, konsep array dasar biasanya diterapkan menggunakan struktur data list. List dapat menyimpan beberapa data dengan tipe yang sama maupun berbeda.

data = [10, 20, 30, 40, 50]

print(data)

Karakteristik Array

  • Dapat menyimpan banyak data dalam satu variabel.
  • Setiap elemen memiliki indeks.
  • Indeks array pada Python dimulai dari angka 0.
  • Elemen array dapat diakses menggunakan indeks.
  • Isi array dapat diubah setelah array dibuat.
  • Array dapat ditambah atau dikurangi elemennya.

Membuat Array

Array atau list dibuat menggunakan tanda kurung siku []. Setiap elemen dipisahkan menggunakan tanda koma.

nama = ["Andi", "Budi", "Citra"]

nilai = [80, 75, 90]

campuran = ["Python", 2026, True, 85.5]

print(nama)
print(nilai)
print(campuran)

Indeks Array

Indeks digunakan untuk mengakses elemen tertentu di dalam array. Indeks pertama pada Python adalah 0.

Indeks 0 1 2 3
Data 10 20 30 40
angka = [10, 20, 30, 40]

print(angka[0])  # 10
print(angka[1])  # 20
print(angka[2])  # 30
print(angka[3])  # 40

Indeks Negatif

Python juga mendukung indeks negatif. Indeks -1 digunakan untuk mengambil elemen terakhir, sedangkan -2 digunakan untuk mengambil elemen sebelum elemen terakhir.

buah = ["Apel", "Jeruk", "Mangga", "Pisang"]

print(buah[-1])  # Pisang
print(buah[-2])  # Mangga

Mengubah Elemen Array

Elemen array dapat diubah dengan memberikan nilai baru pada indeks tertentu.

nilai = [70, 80, 90]

nilai[1] = 85

print(nilai)
Output:
[70, 85, 90]

Menghitung Jumlah Elemen

Fungsi len() digunakan untuk menghitung jumlah elemen yang terdapat di dalam array.

data = [10, 20, 30, 40, 50]

jumlah_data = len(data)

print(jumlah_data)
Output:
5

Menampilkan Elemen Array dengan Perulangan

Perulangan for dapat digunakan untuk membaca setiap elemen array satu per satu.

nama = ["Andi", "Budi", "Citra"]

for mahasiswa in nama:
    print(mahasiswa)
Output:
Andi
Budi
Citra

Memeriksa Elemen Array

Operator in digunakan untuk memeriksa apakah suatu nilai terdapat di dalam array.

buah = ["Apel", "Jeruk", "Mangga"]

if "Jeruk" in buah:
    print("Jeruk tersedia")
else:
    print("Jeruk tidak tersedia")

Operasi Dasar Array

Operasi Fungsi Contoh
append() Menambahkan elemen di akhir array. data.append(60)
insert() Menambahkan elemen pada indeks tertentu. data.insert(1, 15)
remove() Menghapus elemen berdasarkan nilai. data.remove(20)
pop() Menghapus elemen berdasarkan indeks. data.pop(0)
sort() Mengurutkan elemen. data.sort()
reverse() Membalik urutan elemen. data.reverse()

Contoh Program Array

nilai = []

jumlah = int(input("Jumlah nilai: "))

for i in range(jumlah):
    angka = float(input(f"Nilai ke-{i + 1}: "))
    nilai.append(angka)

print()
print("Data nilai:", nilai)
print("Jumlah data:", len(nilai))
print("Nilai tertinggi:", max(nilai))
print("Nilai terendah:", min(nilai))
print("Rata-rata:", sum(nilai) / len(nilai))
Kesimpulan

Array atau list digunakan untuk menyimpan banyak data dalam satu variabel. Setiap elemen memiliki indeks yang dimulai dari 0. Array dapat diakses, diubah, ditambah, dihapus, dan diproses menggunakan perulangan.

Pertemuan 9

Array Satu Dimensi

Array satu dimensi adalah struktur data yang menyimpan beberapa elemen dalam satu baris atau satu urutan data.

Pengertian Array Satu Dimensi

Array satu dimensi adalah kumpulan data yang disusun dalam satu urutan. Setiap elemen dapat diakses menggunakan satu indeks.

Dalam Python, array satu dimensi dapat dibuat menggunakan struktur data list dengan tanda kurung siku [].

angka = [10, 20, 30, 40, 50]

print(angka)

Bentuk Array Satu Dimensi

Array satu dimensi memiliki satu indeks untuk menunjuk posisi setiap elemen.

Indeks 0 1 2 3 4
Elemen 10 20 30 40 50
angka = [10, 20, 30, 40, 50]

print(angka[0])  # 10
print(angka[1])  # 20
print(angka[2])  # 30
print(angka[3])  # 40
print(angka[4])  # 50

Membuat Array Satu Dimensi

Array dapat dibuat dengan menuliskan beberapa nilai di dalam tanda kurung siku. Setiap nilai dipisahkan oleh tanda koma.

nama_mahasiswa = [
    "Andi",
    "Budi",
    "Citra"
]

nilai_mahasiswa = [
    80,
    75,
    90
]

print(nama_mahasiswa)
print(nilai_mahasiswa)

Mengakses Elemen Array

Elemen array dapat diakses dengan menuliskan nama array diikuti indeks di dalam tanda kurung siku.

buah = ["Apel", "Jeruk", "Mangga"]

print("Buah pertama :", buah[0])
print("Buah kedua   :", buah[1])
print("Buah ketiga  :", buah[2])
Indeks array Python dimulai dari 0, bukan dari 1.

Menggunakan Indeks Negatif

Indeks negatif digunakan untuk mengakses elemen array dari posisi paling belakang.

Indeks -4 -3 -2 -1
Data Apel Jeruk Mangga Pisang
buah = ["Apel", "Jeruk", "Mangga", "Pisang"]

print(buah[-1])  # Pisang
print(buah[-2])  # Mangga

Mengubah Elemen Array

Elemen array dapat diubah dengan memberikan nilai baru pada indeks tertentu.

nilai = [70, 80, 90]

nilai[1] = 85

print(nilai)
Output:
[70, 85, 90]

Menambahkan Elemen

Method append() digunakan untuk menambahkan elemen baru di bagian akhir array.

angka = [10, 20, 30]

angka.append(40)

print(angka)
Output:
[10, 20, 30, 40]

Menyisipkan Elemen

Method insert() digunakan untuk menyisipkan elemen pada indeks tertentu.

angka = [10, 20, 30]

angka.insert(1, 15)

print(angka)
Elemen 15 disisipkan pada indeks 1.
[10, 15, 20, 30]

Menghapus Elemen

Method remove() digunakan untuk menghapus elemen berdasarkan nilainya.

buah = ["Apel", "Jeruk", "Mangga"]

buah.remove("Jeruk")

print(buah)
Output:
["Apel", "Mangga"]

Method pop() digunakan untuk menghapus elemen berdasarkan indeks.

angka = [10, 20, 30]

angka.pop(1)

print(angka)

Menampilkan Array dengan Perulangan

Perulangan for digunakan untuk menampilkan setiap elemen array secara berurutan.

nama = ["Andi", "Budi", "Citra"]

for data in nama:
    print(data)
Output:
Andi
Budi
Citra

Perulangan Menggunakan Indeks

Fungsi range() dan len() dapat digunakan untuk mengakses elemen berdasarkan indeks.

nilai = [80, 75, 90, 85]

for i in range(len(nilai)):
    print(f"Indeks {i}: {nilai[i]}")
Output:
Indeks 0: 80
Indeks 1: 75
Indeks 2: 90
Indeks 3: 85

Mengisi Array melalui Input

Array dapat diisi secara dinamis menggunakan input dan perulangan.

data = []

jumlah = int(input("Jumlah data: "))

for i in range(jumlah):
    nilai = int(input(f"Data ke-{i + 1}: "))
    data.append(nilai)

print("Isi array:", data)

Studi Kasus Array Satu Dimensi

Buat program untuk menyimpan nilai beberapa mahasiswa, kemudian menampilkan jumlah nilai, nilai tertinggi, nilai terendah, dan rata-rata.

nilai_mahasiswa = []

jumlah = int(input("Jumlah mahasiswa: "))

for i in range(jumlah):
    nilai = float(
        input(f"Nilai mahasiswa ke-{i + 1}: ")
    )

    nilai_mahasiswa.append(nilai)

total = sum(nilai_mahasiswa)
tertinggi = max(nilai_mahasiswa)
terendah = min(nilai_mahasiswa)
rata_rata = total / len(nilai_mahasiswa)

print()
print("Data nilai :", nilai_mahasiswa)
print("Total nilai:", total)
print("Nilai tertinggi:", tertinggi)
print("Nilai terendah :", terendah)
print("Rata-rata     :", rata_rata)

Kelebihan dan Kekurangan

Kelebihan Kekurangan
Mudah dibuat dan digunakan. Semua data berada dalam satu urutan.
Dapat menyimpan banyak data. Pencarian data besar dapat membutuhkan waktu.
Mudah diproses menggunakan perulangan. Kurang cocok untuk data bertingkat.
Memiliki banyak method bawaan. Kesalahan indeks dapat menyebabkan error.

Kesalahan Umum

Kesalahan yang sering terjadi adalah mengakses indeks yang tidak tersedia.

angka = [10, 20, 30]

print(angka[3])
Kode tersebut menghasilkan IndexError karena indeks yang tersedia hanya 0, 1, dan 2.
Kesimpulan

Array satu dimensi menyimpan data dalam satu urutan dan setiap elemen diakses menggunakan satu indeks. Dalam Python, array satu dimensi umumnya dibuat menggunakan list. List dapat diakses, diubah, ditambah, dihapus, dan diproses menggunakan perulangan.

Pertemuan 9

Pengolahan Data Array

Pengolahan data array meliputi proses menambah, mengubah, menghapus, mencari, mengurutkan, dan menghitung data di dalam array.

Pengertian Pengolahan Data Array

Pengolahan data array adalah serangkaian proses untuk mengelola isi array agar dapat digunakan sesuai kebutuhan program.

Proses tersebut dapat dilakukan dengan menggunakan indeks, perulangan, operator, fungsi bawaan, dan method list Python.

nilai = [80, 75, 90, 85]

print("Data nilai:", nilai)
print("Jumlah data:", len(nilai))
print("Total nilai:", sum(nilai))

Menampilkan Data Array

Data array dapat ditampilkan secara langsung menggunakan fungsi print().

buah = ["Apel", "Jeruk", "Mangga"]

print(buah)
Output:
["Apel", "Jeruk", "Mangga"]

Menampilkan Setiap Elemen

Perulangan for digunakan untuk mengolah setiap elemen array satu per satu.

nilai = [80, 75, 90, 85]

for data in nilai:
    print(data)
Output:
80
75
90
85

Mengubah Data Array

Data pada indeks tertentu dapat diubah dengan memberikan nilai baru.

nilai = [70, 80, 90]

nilai[0] = 75
nilai[2] = 95

print(nilai)
Output:
[75, 80, 95]

Menambahkan Data

Menggunakan append()

Method append() menambahkan satu elemen baru ke bagian akhir array.

data = [10, 20, 30]

data.append(40)

print(data)
Output: [10, 20, 30, 40]
Menggunakan extend()

Method extend() digunakan untuk menambahkan beberapa elemen sekaligus.

data = [10, 20, 30]

data.extend([40, 50, 60])

print(data)

Menyisipkan Data

Method insert() digunakan untuk menyisipkan data pada posisi indeks tertentu.

angka = [10, 20, 40]

angka.insert(2, 30)

print(angka)
Angka 30 disisipkan pada indeks 2.
[10, 20, 30, 40]

Menghapus Data

Menggunakan remove()

Method remove() menghapus elemen berdasarkan nilainya.

buah = ["Apel", "Jeruk", "Mangga"]

buah.remove("Jeruk")

print(buah)
Output: ["Apel", "Mangga"]
Menggunakan pop()

Method pop() menghapus elemen berdasarkan indeks dan mengembalikan nilai yang dihapus.

data = [10, 20, 30, 40]

data.pop(1)

print(data)
Output: [10, 30, 40]

Mencari Data

Operator in digunakan untuk memeriksa keberadaan suatu data dalam array.

nama = ["Andi", "Budi", "Citra"]

cari = "Budi"

if cari in nama:
    print(cari, "ditemukan")
else:
    print(cari, "tidak ditemukan")
Data Budi ditemukan di dalam array.

Menentukan Posisi Data

Method index() digunakan untuk mengetahui posisi indeks suatu data.

buah = ["Apel", "Jeruk", "Mangga"]

posisi = buah.index("Jeruk")

print("Jeruk berada pada indeks", posisi)
Output:
Jeruk berada pada indeks 1

Menghitung Data Array

Python menyediakan beberapa fungsi untuk menghitung data numerik dalam array.

nilai = [80, 75, 90, 85]

print("Jumlah data :", len(nilai))
print("Total nilai :", sum(nilai))
print("Nilai minimum:", min(nilai))
print("Nilai maksimum:", max(nilai))
print("Rata-rata    :", sum(nilai) / len(nilai))
Fungsi Keterangan
len() Menghitung jumlah elemen.
sum() Menghitung jumlah seluruh nilai.
min() Mencari nilai terkecil.
max() Mencari nilai terbesar.

Mengurutkan Data

Urutan Naik
angka = [40, 10, 30, 20]

angka.sort()

print(angka)
Output: [10, 20, 30, 40]
Urutan Menurun
angka = [40, 10, 30, 20]

angka.sort(reverse=True)

print(angka)
Output: [40, 30, 20, 10]

Membalik Urutan Data

Method reverse() digunakan untuk membalik urutan elemen array.

angka = [10, 20, 30, 40]

angka.reverse()

print(angka)
Output: [40, 30, 20, 10]

Menyalin Array

Untuk membuat salinan array, gunakan method copy(). Cara ini mencegah perubahan pada array asli.

data_asli = [10, 20, 30]

data_salinan = data_asli.copy()

data_salinan.append(40)

print("Data asli   :", data_asli)
print("Data salinan:", data_salinan)

Data asli tetap: [10, 20, 30]

Data salinan menjadi: [10, 20, 30, 40]

Mengambil Sebagian Data dengan Slicing

Slicing digunakan untuk mengambil sebagian elemen array. Bentuk umumnya adalah array[awal:akhir]. Indeks akhir tidak ikut diambil.

angka = [10, 20, 30, 40, 50]

print(angka[1:4])
print(angka[:3])
print(angka[2:])
Output:
[20, 30, 40]
[10, 20, 30]
[30, 40, 50]

Menyaring Data Array

Data array dapat disaring menggunakan perulangan dan kondisi tertentu.

nilai = [55, 70, 85, 60, 90, 45]

lulus = []

for data in nilai:
    if data >= 70:
        lulus.append(data)

print("Nilai lulus:", lulus)
Output:
Nilai lulus: [70, 85, 90]

Studi Kasus Pengolahan Nilai

Program berikut digunakan untuk mengolah nilai mahasiswa. Program akan menampilkan total, rata-rata, nilai tertinggi, nilai terendah, serta status kelulusan.

nilai_mahasiswa = [78, 65, 90, 55, 82]

total = sum(nilai_mahasiswa)
rata_rata = total / len(nilai_mahasiswa)
nilai_tertinggi = max(nilai_mahasiswa)
nilai_terendah = min(nilai_mahasiswa)

jumlah_lulus = 0

for nilai in nilai_mahasiswa:
    if nilai >= 70:
        jumlah_lulus += 1

print("Data nilai       :", nilai_mahasiswa)
print("Total nilai      :", total)
print("Rata-rata        :", rata_rata)
print("Nilai tertinggi  :", nilai_tertinggi)
print("Nilai terendah   :", nilai_terendah)
print("Jumlah mahasiswa :", len(nilai_mahasiswa))
print("Jumlah lulus     :", jumlah_lulus)

Ringkasan Operasi Array

Operasi Fungsi Contoh
append() Menambah satu data di akhir array. data.append(10)
extend() Menambah beberapa data. data.extend([20, 30])
insert() Menyisipkan data pada indeks tertentu. data.insert(1, 15)
remove() Menghapus data berdasarkan nilai. data.remove(10)
pop() Menghapus data berdasarkan indeks. data.pop(0)
index() Mencari indeks suatu data. data.index(20)
sort() Mengurutkan data. data.sort()
reverse() Membalik urutan data. data.reverse()
copy() Menyalin array. salinan = data.copy()

Kesalahan Umum

1. Mengakses Indeks yang Tidak Tersedia
data = [10, 20, 30]

print(data[3])
Kode tersebut menghasilkan IndexError karena indeks terakhir yang tersedia adalah 2.
2. Menghapus Data yang Tidak Ada
data = [10, 20, 30]

data.remove(50)
Kode tersebut menghasilkan ValueError karena nilai 50 tidak terdapat dalam array.

Latihan

  1. Buat array berisi 10 bilangan bulat.
  2. Tampilkan seluruh elemen array menggunakan perulangan.
  3. Hitung jumlah seluruh elemen array.
  4. Cari nilai terbesar dan terkecil.
  5. Tampilkan hanya bilangan genap.
  6. Urutkan data dari nilai terkecil ke nilai terbesar.
Kesimpulan

Pengolahan data array dapat dilakukan dengan berbagai operasi, seperti menampilkan, mengubah, menambah, menghapus, mencari, menghitung, mengurutkan, dan menyaring data. Penguasaan operasi tersebut penting untuk membuat program yang mampu mengelola sekumpulan data secara efektif.

Pertemuan 10

Array Banyak Elemen

Array banyak elemen digunakan untuk menyimpan dan mengolah sejumlah data dalam satu struktur array secara lebih efektif.

Pengertian Array Banyak Elemen

Array banyak elemen adalah array yang memiliki jumlah data lebih banyak dalam satu struktur. Walaupun jumlah datanya banyak, setiap elemen tetap dapat diakses menggunakan indeks.

Dalam Python, array banyak elemen dapat dibuat menggunakan struktur data list.

angka = [
    10, 20, 30, 40, 50,
    60, 70, 80, 90, 100
]

print(angka)

Struktur Indeks Array

Setiap elemen array memiliki indeks. Indeks pertama dimulai dari 0 dan indeks terakhir adalah jumlah elemen dikurangi satu.

Indeks 0 1 2 3 4
Nilai 10 20 30 40 50
data = [10, 20, 30, 40, 50]

print("Elemen pertama:", data[0])
print("Elemen terakhir:", data[len(data) - 1])

Mengakses Banyak Elemen dengan Perulangan

Perulangan for dapat digunakan untuk membaca semua elemen array tanpa mengakses indeks satu per satu.

data = [10, 20, 30, 40, 50]

for nilai in data:
    print(nilai)
Setiap nilai dalam array akan ditampilkan secara berurutan.

Mengakses Elemen dan Indeks

Fungsi enumerate() digunakan untuk mendapatkan indeks dan nilai secara bersamaan.

buah = [
    "Apel",
    "Jeruk",
    "Mangga",
    "Pisang"
]

for indeks, nama_buah in enumerate(buah):
    print(indeks, nama_buah)
Contoh hasil:
0 Apel
1 Jeruk
2 Mangga
3 Pisang

Mengisi Array dengan Banyak Data

Array dapat diisi menggunakan input pengguna dan perulangan. Cara ini berguna ketika jumlah data belum diketahui secara langsung.

data = []

jumlah = int(input("Jumlah data: "))

for i in range(jumlah):
    nilai = int(input(f"Data ke-{i + 1}: "))
    data.append(nilai)

print("Isi array:", data)

Pengolahan Data Numerik

Array numerik dapat diolah menggunakan fungsi sum(), len(), min(), dan max().

nilai = [75, 80, 90, 65, 85]

total = sum(nilai)
jumlah = len(nilai)
rata_rata = total / jumlah

print("Total nilai     :", total)
print("Jumlah data     :", jumlah)
print("Nilai terendah  :", min(nilai))
print("Nilai tertinggi :", max(nilai))
print("Rata-rata       :", rata_rata)

Menyeleksi Banyak Data

Data array dapat diseleksi menggunakan kondisi tertentu. Contohnya adalah mengambil data yang lebih besar atau sama dengan nilai tertentu.

nilai = [55, 70, 80, 65, 90, 45]

nilai_lulus = []

for data in nilai:
    if data >= 70:
        nilai_lulus.append(data)

print("Nilai lulus:", nilai_lulus)
Output:
Nilai lulus: [70, 80, 90]

Mengambil Bilangan Genap

Operator modulus % dapat digunakan untuk memeriksa apakah suatu bilangan merupakan bilangan genap.

angka = [10, 15, 20, 25, 30, 35, 40]

bilangan_genap = []

for nilai in angka:
    if nilai % 2 == 0:
        bilangan_genap.append(nilai)

print("Bilangan genap:", bilangan_genap)

Mengurutkan Banyak Data

Method sort() digunakan untuk mengurutkan data dari nilai terkecil ke nilai terbesar.

data = [45, 10, 80, 25, 60]

data.sort()

print("Urutan naik:", data)

Untuk mengurutkan data dari nilai terbesar ke nilai terkecil, gunakan reverse=True.

data.sort(reverse=True)

print("Urutan turun:", data)

Mengambil Sebagian Data

Slicing digunakan untuk mengambil sebagian elemen dari array tanpa mengubah array aslinya.

data = [10, 20, 30, 40, 50, 60]

bagian_awal = data[:3]
bagian_tengah = data[2:5]
bagian_akhir = data[3:]

print("Bagian awal   :", bagian_awal)
print("Bagian tengah :", bagian_tengah)
print("Bagian akhir  :", bagian_akhir)

Mengubah Beberapa Elemen

Beberapa elemen array dapat diubah menggunakan slicing.

data = [10, 20, 30, 40, 50]

data[1:3] = [25, 35]

print(data)
Output:
[10, 25, 35, 40, 50]

Studi Kasus Pengolahan Nilai Mahasiswa

Program berikut menyimpan nilai mahasiswa, kemudian menghitung jumlah data, total nilai, rata-rata, nilai tertinggi, nilai terendah, dan jumlah mahasiswa yang lulus.

nilai_mahasiswa = [
    78, 65, 90, 55, 82,
    70, 88, 60
]

total_nilai = sum(nilai_mahasiswa)
jumlah_data = len(nilai_mahasiswa)
rata_rata = total_nilai / jumlah_data

jumlah_lulus = 0

for nilai in nilai_mahasiswa:
    if nilai >= 70:
        jumlah_lulus += 1

print("Data nilai       :", nilai_mahasiswa)
print("Jumlah mahasiswa :", jumlah_data)
print("Total nilai      :", total_nilai)
print("Rata-rata        :", rata_rata)
print("Nilai tertinggi  :", max(nilai_mahasiswa))
print("Nilai terendah   :", min(nilai_mahasiswa))
print("Jumlah lulus     :", jumlah_lulus)

Studi Kasus Pencarian Data

Program berikut mencari sebuah nama di dalam array.

nama_mahasiswa = [
    "Andi",
    "Budi",
    "Citra",
    "Dewi",
    "Eko"
]

nama_dicari = input("Masukkan nama yang dicari: ")

if nama_dicari in nama_mahasiswa:
    posisi = nama_mahasiswa.index(nama_dicari)

    print("Data ditemukan")
    print("Posisi indeks:", posisi)
else:
    print("Data tidak ditemukan")

Operasi Array Banyak Elemen

Operasi Kegunaan Contoh
len() Menghitung jumlah elemen. len(data)
sum() Menghitung total nilai. sum(data)
min() Mencari nilai terendah. min(data)
max() Mencari nilai tertinggi. max(data)
append() Menambahkan satu elemen. data.append(10)
remove() Menghapus elemen berdasarkan nilai. data.remove(10)
sort() Mengurutkan elemen. data.sort()
index() Mencari posisi elemen. data.index(20)

Kesalahan Umum

1. Mengakses Indeks di Luar Batas
data = [10, 20, 30]

print(data[3])
Indeks terakhir array tersebut adalah 2. Mengakses indeks 3 akan menghasilkan IndexError.
2. Menggunakan Fungsi Numerik pada Data Teks
nama = ["Andi", "Budi", "Citra"]

print(sum(nama))
Fungsi sum() hanya dapat digunakan pada data numerik, bukan data teks.

Latihan

  1. Buat array berisi 15 bilangan bulat.
  2. Tampilkan seluruh elemen menggunakan perulangan.
  3. Hitung jumlah seluruh data.
  4. Tampilkan bilangan genap dan bilangan ganjil.
  5. Cari nilai terbesar dan terkecil.
  6. Urutkan data dari nilai terbesar ke nilai terkecil.
  7. Cari posisi indeks dari sebuah nilai tertentu.
Kesimpulan

Array banyak elemen tetap menggunakan satu indeks untuk mengakses setiap data. Pengolahan array dapat dilakukan dengan perulangan, kondisi, slicing, fungsi bawaan, dan method list. Array satu dimensi digunakan untuk menyimpan data dalam satu urutan, sedangkan data bertingkat akan dibahas pada materi matriks atau array dua dimensi.

Pertemuan 10

Array Dua Dimensi / Matriks

Array dua dimensi digunakan untuk menyimpan data dalam bentuk baris dan kolom seperti tabel atau matriks.

Pengertian Array Dua Dimensi

Array dua dimensi adalah struktur data yang menyimpan elemen dalam dua arah, yaitu baris dan kolom. Setiap elemen diakses menggunakan dua indeks.

Dalam Python, array dua dimensi dapat dibuat menggunakan list yang berisi beberapa list lain. Struktur ini juga disebut sebagai nested list.

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print(matriks)

Bentuk Matriks

Matriks berikut memiliki tiga baris dan tiga kolom sehingga disebut matriks berukuran 3 x 3.

Kolom 0 Kolom 1 Kolom 2
Baris 0 1 2 3
Baris 1 4 5 6
Baris 2 7 8 9
matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

Mengakses Elemen Matriks

Elemen array dua dimensi diakses menggunakan format matriks[baris][kolom].

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print(matriks[0][0])  # 1
print(matriks[1][2])  # 6
print(matriks[2][1])  # 8
Indeks baris dan kolom sama-sama dimulai dari 0.

Mengubah Elemen Matriks

Elemen matriks dapat diubah dengan memberikan nilai baru pada posisi baris dan kolom tertentu.

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

matriks[1][1] = 50

print(matriks)
Elemen pada baris 1 dan kolom 1 berubah dari 5 menjadi 50.

Menampilkan Matriks

Setiap baris matriks dapat ditampilkan menggunakan satu perulangan.

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for baris in matriks:
    print(baris)
Output:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

Menampilkan Elemen dengan Nested Loop

Untuk menampilkan setiap elemen matriks, gunakan dua perulangan. Perulangan pertama membaca baris, sedangkan perulangan kedua membaca kolom.

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for baris in matriks:
    for elemen in baris:
        print(elemen, end=" ")

    print()
Output:
1 2 3
4 5 6
7 8 9

Mengakses Matriks dengan Indeks

Fungsi range() dan len() dapat digunakan untuk mengakses baris dan kolom berdasarkan indeks.

matriks = [
    [10, 20, 30],
    [40, 50, 60],
    [70, 80, 90]
]

for i in range(len(matriks)):
    for j in range(len(matriks[i])):
        print(
            f"Baris {i}, Kolom {j}: {matriks[i][j]}"
        )

Membuat Matriks melalui Input

Matriks dapat dibuat secara dinamis dengan menerima input jumlah baris dan kolom dari pengguna.

baris = int(input("Jumlah baris: "))
kolom = int(input("Jumlah kolom: "))

matriks = []

for i in range(baris):

    data_baris = []

    for j in range(kolom):
        nilai = int(
            input(f"Data [{i}][{j}]: ")
        )

        data_baris.append(nilai)

    matriks.append(data_baris)

print()
print("Matriks:")

for data_baris in matriks:
    print(data_baris)

Menghitung Baris dan Kolom

Jumlah baris dapat dihitung menggunakan len(matriks). Jumlah kolom pada baris tertentu dapat dihitung menggunakan len(matriks[baris]).

matriks = [
    [1, 2, 3],
    [4, 5, 6]
]

jumlah_baris = len(matriks)
jumlah_kolom = len(matriks[0])

print("Jumlah baris :", jumlah_baris)
print("Jumlah kolom :", jumlah_kolom)
Matriks tersebut berukuran 2 x 3.

Menghitung Jumlah Seluruh Elemen

Jumlah seluruh elemen matriks dapat dihitung menggunakan nested loop.

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

total = 0

for baris in matriks:
    for nilai in baris:
        total += nilai

print("Total elemen:", total)
Output: Total elemen: 45

Matriks Persegi

Matriks persegi adalah matriks yang memiliki jumlah baris dan kolom yang sama, misalnya matriks 3 x 3.

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

jumlah_baris = len(matriks)
jumlah_kolom = len(matriks[0])

if jumlah_baris == jumlah_kolom:
    print("Matriks persegi")
else:
    print("Bukan matriks persegi")

Diagonal Utama Matriks

Diagonal utama adalah elemen yang memiliki indeks baris dan kolom yang sama, yaitu posisi [0][0], [1][1], dan seterusnya.

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

diagonal = []

for i in range(len(matriks)):
    diagonal.append(matriks[i][i])

print("Diagonal utama:", diagonal)
Output:
Diagonal utama: [1, 5, 9]

Studi Kasus Nilai Mahasiswa

Matriks berikut menyimpan nilai tiga mahasiswa untuk tiga mata kuliah. Program menghitung rata-rata setiap mahasiswa.

nilai = [
    [80, 75, 90],
    [70, 85, 80],
    [90, 88, 95]
]

for i in range(len(nilai)):

    total = sum(nilai[i])
    rata_rata = total / len(nilai[i])

    print(
        f"Mahasiswa {i + 1}: "
        f"Total = {total}, "
        f"Rata-rata = {rata_rata}"
    )

Ringkasan Operasi Matriks

Operasi Kegunaan Contoh
matriks[i][j] Mengakses elemen pada baris dan kolom. matriks[0][1]
len(matriks) Menghitung jumlah baris. len(matriks)
len(matriks[i]) Menghitung jumlah kolom. len(matriks[0])
append() Menambahkan baris atau elemen. matriks.append([1, 2])
sum() Menghitung total nilai dalam satu baris. sum(matriks[0])
Nested loop Membaca seluruh elemen matriks. for baris in matriks

Kesalahan Umum

1. Mengakses Indeks di Luar Batas
matriks = [
    [1, 2],
    [3, 4]
]

print(matriks[2][0])
Kode tersebut menghasilkan IndexError karena indeks baris yang tersedia hanya 0 dan 1.
2. Jumlah Kolom Tidak Sama
matriks = [
    [1, 2, 3],
    [4, 5]
]
Matriks tersebut tidak beraturan karena jumlah kolom pada setiap baris berbeda. Pastikan struktur matriks sesuai kebutuhan program.

Latihan

  1. Buat matriks berukuran 3 x 3.
  2. Tampilkan seluruh elemen matriks menggunakan nested loop.
  3. Hitung jumlah seluruh elemen matriks.
  4. Tampilkan elemen diagonal utama.
  5. Hitung jumlah setiap baris.
  6. Buat program untuk menghitung rata-rata setiap baris matriks.
Kesimpulan

Array dua dimensi atau matriks menyimpan data dalam bentuk baris dan kolom. Elemen diakses menggunakan dua indeks, yaitu indeks baris dan indeks kolom. Pengolahan matriks umumnya menggunakan nested loop untuk membaca seluruh elemen.

Pertemuan 10

Operasi Matriks

Operasi matriks digunakan untuk mengolah data pada baris dan kolom, seperti penjumlahan, pengurangan, perkalian, transpose, dan pencarian nilai tertentu.

Pengertian Operasi Matriks

Operasi matriks adalah proses pengolahan elemen-elemen matriks berdasarkan aturan tertentu. Setiap elemen biasanya diolah berdasarkan posisi baris dan kolomnya.

Dalam Python, operasi matriks dapat dilakukan menggunakan nested loop dan struktur data list.

A = [
    [1, 2],
    [3, 4]
]

B = [
    [5, 6],
    [7, 8]
]

Penjumlahan Matriks

Penjumlahan matriks dilakukan dengan menjumlahkan elemen yang memiliki posisi baris dan kolom yang sama.

Matriks A + Matriks B
1 2 + 5 6
3 4 + 7 8
A = [
    [1, 2],
    [3, 4]
]

B = [
    [5, 6],
    [7, 8]
]

hasil = []

for i in range(len(A)):

    baris = []

    for j in range(len(A[i])):
        nilai = A[i][j] + B[i][j]
        baris.append(nilai)

    hasil.append(baris)

print(hasil)
Output:
[[6, 8], [10, 12]]

Pengurangan Matriks

Pengurangan matriks dilakukan dengan mengurangkan elemen matriks pertama dengan elemen matriks kedua pada posisi yang sama.

A = [
    [8, 7],
    [6, 5]
]

B = [
    [2, 3],
    [4, 1]
]

hasil = []

for i in range(len(A)):

    baris = []

    for j in range(len(A[i])):
        nilai = A[i][j] - B[i][j]
        baris.append(nilai)

    hasil.append(baris)

print(hasil)
Output:
[[6, 4], [2, 4]]

Perkalian Matriks dengan Skalar

Perkalian skalar dilakukan dengan mengalikan setiap elemen matriks dengan satu bilangan tertentu.

matriks = [
    [1, 2],
    [3, 4]
]

skalar = 3
hasil = []

for baris in matriks:

    baris_hasil = []

    for nilai in baris:
        baris_hasil.append(nilai * skalar)

    hasil.append(baris_hasil)

print(hasil)
Output:
[[3, 6], [9, 12]]

Perkalian Dua Matriks

Perkalian dua matriks dilakukan dengan menjumlahkan hasil perkalian elemen pada baris matriks pertama dengan elemen pada kolom matriks kedua.

Matriks $A$ berukuran $m \times n$ dapat dikalikan dengan matriks $B$ berukuran $n \times p$. Hasilnya berukuran $m \times p$.

A = [
    [1, 2],
    [3, 4]
]

B = [
    [5, 6],
    [7, 8]
]

hasil = [
    [0, 0],
    [0, 0]
]

for i in range(len(A)):

    for j in range(len(B[0])):

        for k in range(len(B)):
            hasil[i][j] += A[i][k] * B[k][j]

print(hasil)
Output:
[[19, 22], [43, 50]]

Transpose Matriks

Transpose matriks adalah proses menukar posisi baris menjadi kolom dan kolom menjadi baris.

Contoh matriks berukuran $2 \times 3$ akan berubah menjadi matriks berukuran $3 \times 2$.

matriks = [
    [1, 2, 3],
    [4, 5, 6]
]

transpose = []

jumlah_baris = len(matriks)
jumlah_kolom = len(matriks[0])

for j in range(jumlah_kolom):

    baris = []

    for i in range(jumlah_baris):
        baris.append(matriks[i][j])

    transpose.append(baris)

print(transpose)
Output:
[[1, 4], [2, 5], [3, 6]]

Menghitung Jumlah Setiap Baris

Jumlah setiap baris dapat dihitung menggunakan fungsi sum().

matriks = [
    [10, 20, 30],
    [5, 15, 25],
    [2, 4, 6]
]

for i in range(len(matriks)):

    total = sum(matriks[i])

    print(
        f"Jumlah baris {i + 1}: {total}"
    )
Output:
Jumlah baris 1: 60
Jumlah baris 2: 45
Jumlah baris 3: 12

Menghitung Jumlah Setiap Kolom

Untuk menghitung jumlah kolom, program membaca elemen pada kolom yang sama dari setiap baris.

matriks = [
    [10, 20, 30],
    [5, 15, 25],
    [2, 4, 6]
]

jumlah_kolom = len(matriks[0])

for j in range(jumlah_kolom):

    total = 0

    for i in range(len(matriks)):
        total += matriks[i][j]

    print(
        f"Jumlah kolom {j + 1}: {total}"
    )
Output:
Jumlah kolom 1: 17
Jumlah kolom 2: 39
Jumlah kolom 3: 61

Operasi Diagonal Matriks

Pada matriks persegi, diagonal utama memiliki indeks baris dan kolom yang sama.

matriks = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

jumlah_diagonal = 0

for i in range(len(matriks)):
    jumlah_diagonal += matriks[i][i]

print("Jumlah diagonal utama:", jumlah_diagonal)
Output:
Jumlah diagonal utama: 15

Matriks Identitas

Matriks identitas adalah matriks persegi yang memiliki nilai 1 pada diagonal utama dan nilai 0 pada elemen lainnya.

ukuran = 3

identitas = []

for i in range(ukuran):

    baris = []

    for j in range(ukuran):

        if i == j:
            baris.append(1)
        else:
            baris.append(0)

    identitas.append(baris)

for baris in identitas:
    print(baris)
Output:
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]

Studi Kasus Operasi Nilai Mahasiswa

Matriks berikut menyimpan nilai beberapa mahasiswa untuk beberapa mata kuliah. Program menghitung total nilai dan rata-rata setiap mahasiswa.

nilai = [
    [80, 75, 90],
    [70, 85, 80],
    [90, 88, 95]
]

for i in range(len(nilai)):

    total = sum(nilai[i])
    rata_rata = total / len(nilai[i])

    print(
        f"Mahasiswa {i + 1}: "
        f"Total = {total}, "
        f"Rata-rata = {rata_rata:.2f}"
    )
Setiap baris mewakili satu mahasiswa, sedangkan setiap kolom mewakili nilai mata kuliah.

Ringkasan Operasi Matriks

Operasi Kegunaan Contoh
Penjumlahan Menjumlahkan elemen dengan posisi yang sama. A[i][j] + B[i][j]
Pengurangan Mengurangkan elemen dengan posisi yang sama. A[i][j] - B[i][j]
Perkalian Skalar Mengalikan setiap elemen dengan bilangan tertentu. A[i][j] * k
Perkalian Matriks Mengalikan baris dengan kolom. Nested loop tiga tingkat
Transpose Menukar baris menjadi kolom. A[i][j] menjadi A[j][i]
Diagonal Mengolah elemen dengan indeks baris dan kolom sama. A[i][i]

Kesalahan Umum

1. Ukuran Matriks Tidak Sesuai

Penjumlahan dan pengurangan matriks membutuhkan ukuran matriks yang sama.

A = [
    [1, 2],
    [3, 4]
]

B = [
    [5, 6, 7],
    [8, 9, 10]
]
Matriks tersebut memiliki jumlah kolom yang berbeda, sehingga tidak dapat dijumlahkan secara langsung dengan perulangan sederhana.
2. Kesalahan Indeks
matriks = [
    [1, 2],
    [3, 4]
]

print(matriks[2][0])
Indeks baris yang tersedia hanya 0 dan 1. Kode tersebut menghasilkan IndexError.

Latihan

  1. Buat dua matriks berukuran 2 x 2.
  2. Buat program penjumlahan kedua matriks.
  3. Buat program pengurangan kedua matriks.
  4. Kalikan sebuah matriks dengan skalar.
  5. Buat transpose dari matriks berukuran 2 x 3.
  6. Hitung jumlah setiap baris dan kolom.
  7. Tampilkan diagonal utama matriks persegi berukuran 3 x 3.
Kesimpulan

Operasi matriks dilakukan dengan mengolah elemen berdasarkan posisi baris dan kolom. Operasi dasar yang dapat dilakukan meliputi penjumlahan, pengurangan, perkalian skalar, perkalian matriks, transpose, perhitungan baris dan kolom, serta pengolahan diagonal.

Pertemuan 11

Konsep Record

Record digunakan untuk mengelompokkan beberapa data yang berbeda dalam satu objek berdasarkan identitas tertentu.

Pengertian Record

Record adalah struktur data yang digunakan untuk menyimpan beberapa atribut atau field yang saling berhubungan dalam satu kesatuan data.

Contohnya, data seorang mahasiswa terdiri dari NIM, nama, program studi, dan nilai. Semua data tersebut dapat dikelompokkan dalam satu record mahasiswa.

Contoh konsep:

Satu mahasiswa dapat memiliki NIM, nama, alamat, dan nilai sebagai satu kesatuan data.

Record dalam Python

Python tidak memiliki tipe data record secara khusus seperti beberapa bahasa pemrograman lainnya. Konsep record dapat diterapkan menggunakan dictionary atau class.

Dictionary cocok digunakan untuk memperkenalkan konsep record karena data disimpan dalam bentuk pasangan key dan value.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "program_studi": "Informatika",
    "nilai": 85
}

print(mahasiswa)

Field pada Record

Field adalah bagian data yang terdapat di dalam record. Setiap field memiliki nama dan nilai.

Field Nilai Keterangan
nim 2026001 Nomor identitas mahasiswa.
nama Andi Nama mahasiswa.
program_studi Informatika Program studi mahasiswa.
nilai 85 Nilai mahasiswa.
mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "program_studi": "Informatika",
    "nilai": 85
}

Mengakses Data Record

Data di dalam dictionary dapat diakses menggunakan nama key yang ditulis di dalam tanda kurung siku.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "program_studi": "Informatika",
    "nilai": 85
}

print("NIM  :", mahasiswa["nim"])
print("Nama :", mahasiswa["nama"])
print("Nilai:", mahasiswa["nilai"])
Setiap field diakses menggunakan nama key, bukan indeks angka seperti pada array.

Mengakses Data dengan get()

Method get() digunakan untuk mengambil nilai berdasarkan key. Method ini lebih aman jika key belum tentu tersedia.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi"
}

nama = mahasiswa.get("nama")
alamat = mahasiswa.get("alamat", "Belum diisi")

print("Nama   :", nama)
print("Alamat :", alamat)

Mengubah Nilai Field

Nilai field dapat diubah dengan memberikan nilai baru pada key yang sesuai.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 75
}

mahasiswa["nilai"] = 85

print(mahasiswa)
Nilai field nilai berubah dari 75 menjadi 85.

Menambahkan Field Baru

Field baru dapat ditambahkan dengan menggunakan key yang belum tersedia.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi"
}

mahasiswa["alamat"] = "Bandung"
mahasiswa["semester"] = 2

print(mahasiswa)

Menghapus Field

Field dapat dihapus menggunakan keyword del atau method pop().

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

del mahasiswa["nilai"]

print(mahasiswa)

Method pop() dapat menghapus field sekaligus mengembalikan nilainya.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

nilai = mahasiswa.pop("nilai")

print("Nilai yang dihapus:", nilai)
print(mahasiswa)

Menampilkan Isi Record

Method items() digunakan untuk menampilkan seluruh key dan value di dalam record.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "program_studi": "Informatika",
    "nilai": 85
}

for field, nilai in mahasiswa.items():
    print(field, ":", nilai)
Perulangan items() menghasilkan pasangan key dan value secara bersamaan.

Mengambil Key dan Value

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

print("Daftar field :", mahasiswa.keys())
print("Daftar nilai :", mahasiswa.values())
print("Isi record   :", mahasiswa.items())
Method Kegunaan
keys() Mengambil seluruh nama field.
values() Mengambil seluruh nilai field.
items() Mengambil field dan nilai secara bersamaan.

Memeriksa Keberadaan Field

Operator in digunakan untuk memeriksa apakah sebuah key terdapat di dalam record.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

if "nilai" in mahasiswa:
    print("Field nilai tersedia")
else:
    print("Field nilai tidak tersedia")

Record dengan Berbagai Tipe Data

Satu record dapat menyimpan berbagai tipe data, seperti teks, bilangan, boolean, list, dan dictionary.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "aktif": True,
    "nilai": [80, 85, 90],
    "kontak": {
        "email": "andi@example.com",
        "telepon": "08123456789"
    }
}

print(mahasiswa["nama"])
print(mahasiswa["nilai"])
print(mahasiswa["kontak"]["email"])
Struktur record dapat menyimpan data yang kompleks sesuai kebutuhan program.

Kumpulan Record

Beberapa record dapat disimpan dalam sebuah list. Struktur ini cocok digunakan untuk menyimpan data banyak mahasiswa, barang, atau pelanggan.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 78
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 92
    }

]

for data in mahasiswa:
    print(data["nim"], data["nama"], data["nilai"])

Studi Kasus Data Mahasiswa

Program berikut menyimpan data mahasiswa, kemudian menampilkan mahasiswa yang memperoleh nilai minimal 70.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 65
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 90
    }

]

for data in mahasiswa:

    if data["nilai"] >= 70:
        status = "Lulus"
    else:
        status = "Tidak Lulus"

    print(
        data["nim"],
        data["nama"],
        data["nilai"],
        status
    )

Ringkasan Operasi Record

Operasi Kegunaan Contoh
Akses data Mengambil nilai berdasarkan key. data["nama"]
get() Mengambil data dengan aman. data.get("nama")
Menambah field Menambahkan key baru. data["alamat"] = "Bandung"
del Menghapus field. del data["nilai"]
pop() Menghapus field dan mengambil nilainya. data.pop("nilai")
keys() Mengambil seluruh key. data.keys()
values() Mengambil seluruh value. data.values()
items() Mengambil key dan value. data.items()

Kesalahan Umum

1. Mengakses Key yang Tidak Ada
mahasiswa = {
    "nama": "Andi"
}

print(mahasiswa["nilai"])
Kode tersebut menghasilkan KeyError karena key nilai tidak tersedia.
2. Salah Menuliskan Nama Key
mahasiswa = {
    "program_studi": "Informatika"
}

print(mahasiswa["program studi"])
Nama key harus ditulis sama persis, termasuk spasi, underscore, dan huruf besar kecil.

Latihan

  1. Buat satu record yang menyimpan data diri mahasiswa.
  2. Tampilkan setiap field pada record tersebut.
  3. Ubah nilai salah satu field.
  4. Tambahkan field baru berupa alamat.
  5. Hapus salah satu field menggunakan pop().
  6. Buat list yang berisi minimal tiga record mahasiswa, kemudian tampilkan mahasiswa yang lulus.
Kesimpulan

Record digunakan untuk mengelompokkan beberapa data yang saling berhubungan dalam satu kesatuan. Dalam Python, konsep record dapat diterapkan menggunakan dictionary. Setiap data diakses melalui key, sehingga struktur ini lebih deskriptif daripada array yang menggunakan indeks angka.

Pertemuan 11

Struktur Data Record

Struktur data record digunakan untuk mengelompokkan beberapa field yang memiliki tipe data dan fungsi berbeda ke dalam satu kesatuan data.

Konsep Struktur Record

Sebuah record terdiri dari beberapa field. Setiap field memiliki nama dan nilai yang menjelaskan informasi tertentu.

Sebagai contoh, record mahasiswa dapat memiliki field nim, nama, program_studi, dan nilai.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "program_studi": "Informatika",
    "nilai": 85
}

Komponen Record

Komponen Contoh Keterangan
Nama record mahasiswa Nama variabel yang menyimpan record.
Field nama Nama atribut atau bagian data.
Value "Andi" Nilai yang dimiliki oleh field.
Key "nim" Identitas yang digunakan untuk mengakses value.

Membuat Struktur Record

Dalam Python, struktur record dapat dibuat menggunakan dictionary. Setiap field ditulis dalam bentuk pasangan key: value.

produk = {
    "kode": "P001",
    "nama": "Keyboard",
    "harga": 250000,
    "stok": 15
}

print(produk)

Tipe Data pada Field

Setiap field dalam record dapat memiliki tipe data yang berbeda, seperti string, integer, float, boolean, list, dan dictionary.

data = {
    "nama": "Andi",
    "umur": 20,
    "ipk": 3.75,
    "aktif": True,
    "hobi": ["Membaca", "Coding"]
}

print(data)
Perbedaan tipe data dalam setiap field tidak menjadi masalah selama penggunaannya sesuai dengan kebutuhan program.

Mengakses Field Record

Field record dapat diakses menggunakan nama key di dalam tanda kurung siku.

produk = {
    "kode": "P001",
    "nama": "Keyboard",
    "harga": 250000,
    "stok": 15
}

print("Kode  :", produk["kode"])
print("Nama  :", produk["nama"])
print("Harga :", produk["harga"])
print("Stok  :", produk["stok"])

Mengubah Field Record

Nilai pada field dapat diubah dengan memberikan nilai baru pada key yang bersangkutan.

produk = {
    "kode": "P001",
    "nama": "Keyboard",
    "harga": 250000,
    "stok": 15
}

produk["harga"] = 275000
produk["stok"] = 20

print(produk)

Menambahkan Field Baru

Field baru dapat ditambahkan dengan menggunakan key yang belum terdapat di dalam record.

produk = {
    "kode": "P001",
    "nama": "Keyboard",
    "harga": 250000
}

produk["kategori"] = "Perangkat Komputer"
produk["merek"] = "ABC"

print(produk)

Menghapus Field

Field dapat dihapus menggunakan keyword del atau method pop().

produk = {
    "kode": "P001",
    "nama": "Keyboard",
    "harga": 250000,
    "stok": 15
}

del produk["stok"]

print(produk)
produk = {
    "kode": "P001",
    "nama": "Keyboard",
    "harga": 250000,
    "stok": 15
}

harga = produk.pop("harga")

print("Harga yang dihapus:", harga)
print(produk)

List yang Berisi Record

Beberapa record dapat disimpan dalam sebuah list. Struktur ini digunakan untuk menyimpan kumpulan data yang memiliki bentuk sama.

produk = [

    {
        "kode": "P001",
        "nama": "Keyboard",
        "harga": 250000
    },

    {
        "kode": "P002",
        "nama": "Mouse",
        "harga": 150000
    },

    {
        "kode": "P003",
        "nama": "Monitor",
        "harga": 1500000
    }

]

for data in produk:
    print(data["kode"], data["nama"], data["harga"])

Mengakses Record dalam List

Record dalam list dapat diakses menggunakan indeks list, kemudian dilanjutkan dengan nama key record.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 78
    }

]

print(mahasiswa[0]["nama"])
print(mahasiswa[1]["nilai"])
Akses mahasiswa[0]["nama"] berarti mengambil field nama dari record pertama.

Perulangan Kumpulan Record

Perulangan dapat digunakan untuk memproses setiap record yang terdapat dalam list.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 65
    }

]

for data in mahasiswa:

    print("NIM   :", data["nim"])
    print("Nama  :", data["nama"])
    print("Nilai :", data["nilai"])
    print()

Menyeleksi Record Berdasarkan Kondisi

Record dapat diseleksi berdasarkan nilai field tertentu, misalnya menampilkan mahasiswa yang lulus.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 65
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 90
    }

]

for data in mahasiswa:

    if data["nilai"] >= 70:
        print(data["nama"], "lulus")

Record dengan Struktur Bersarang

Sebuah record dapat memiliki field yang berisi record lain. Struktur ini digunakan untuk menyimpan data yang lebih kompleks.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "alamat": {
        "jalan": "Jl. Merdeka",
        "kota": "Bandung"
    },
    "nilai": {
        "algoritma": 85,
        "basis_data": 90
    }
}

print(mahasiswa["alamat"]["kota"])
print(mahasiswa["nilai"]["algoritma"])

Studi Kasus Data Produk

Program berikut menyimpan beberapa data produk. Program menampilkan produk yang memiliki stok lebih dari nol.

produk = [

    {
        "kode": "P001",
        "nama": "Keyboard",
        "harga": 250000,
        "stok": 10
    },

    {
        "kode": "P002",
        "nama": "Mouse",
        "harga": 150000,
        "stok": 0
    },

    {
        "kode": "P003",
        "nama": "Monitor",
        "harga": 1500000,
        "stok": 5
    }

]

for data in produk:

    if data["stok"] > 0:

        print(
            data["kode"],
            data["nama"],
            data["harga"],
            data["stok"]
        )

Ringkasan Struktur Record

Struktur Kegunaan Contoh Akses
Record sederhana Menyimpan satu objek data. data["nama"]
List of record Menyimpan banyak objek data. data[0]["nama"]
Record bersarang Menyimpan record di dalam record. data["alamat"]["kota"]
Field list Menyimpan beberapa nilai dalam satu field. data["nilai"][0]

Kesalahan Umum

1. Salah Menuliskan Nama Key
data = {
    "nama_lengkap": "Andi"
}

print(data["nama"])
Kode tersebut menghasilkan KeyError karena key nama tidak sama dengan key nama_lengkap.
2. Salah Urutan Akses
data = [
    {
        "nama": "Andi"
    }
]

print(data["nama"])
Karena data berupa list, akses yang benar adalah data[0]["nama"].

Latihan

  1. Buat satu record yang menyimpan data sebuah produk.
  2. Tambahkan field kategori dan stok.
  3. Ubah nilai harga produk.
  4. Buat list yang berisi minimal tiga record produk.
  5. Tampilkan produk yang memiliki stok lebih dari nol.
  6. Hitung total nilai persediaan dengan rumus harga * stok.
Kesimpulan

Struktur data record terdiri dari kumpulan field yang disimpan dalam satu kesatuan. Dalam Python, record dapat dibuat menggunakan dictionary. Kumpulan record dapat disimpan dalam list, sedangkan data yang lebih kompleks dapat dibuat dengan struktur record bersarang.

Pertemuan 11

Pengolahan Data Record

Pengolahan data record meliputi proses membuat, membaca, mengubah, menambah, menghapus, mencari, mengurutkan, dan menyeleksi data berdasarkan field tertentu.

Pengertian Pengolahan Data Record

Pengolahan data record adalah proses mengelola kumpulan field yang terdapat dalam sebuah record agar dapat digunakan untuk kebutuhan program.

Dalam Python, pengolahan record dapat dilakukan menggunakan dictionary, list, perulangan, kondisi, dan method bawaan dictionary.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

print(mahasiswa["nama"])
print(mahasiswa["nilai"])

Membaca Data Record

Data record dapat dibaca dengan mengakses key atau field yang dibutuhkan.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "program_studi": "Informatika",
    "nilai": 85
}

print("NIM           :", mahasiswa["nim"])
print("Nama          :", mahasiswa["nama"])
print("Program Studi :", mahasiswa["program_studi"])
print("Nilai         :", mahasiswa["nilai"])

Membaca Data dengan get()

Method get() digunakan untuk membaca nilai field tanpa menghasilkan error ketika key tidak tersedia.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi"
}

nama = mahasiswa.get("nama")
alamat = mahasiswa.get("alamat", "Belum tersedia")

print("Nama   :", nama)
print("Alamat :", alamat)

Mengubah Data Record

Nilai field dapat diubah dengan memberikan nilai baru pada key yang sesuai.

produk = {
    "kode": "P001",
    "nama": "Keyboard",
    "harga": 250000,
    "stok": 10
}

produk["harga"] = 275000
produk["stok"] = 15

print(produk)
Field harga dan stok berhasil diperbarui.

Menambahkan Field Record

Field baru dapat ditambahkan dengan memberikan key dan value baru.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi"
}

mahasiswa["alamat"] = "Bandung"
mahasiswa["semester"] = 2
mahasiswa["aktif"] = True

print(mahasiswa)

Menghapus Field Record

Menggunakan del
mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

del mahasiswa["nilai"]

print(mahasiswa)
Menggunakan pop()
mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

nilai = mahasiswa.pop("nilai")

print("Nilai yang dihapus:", nilai)
print(mahasiswa)

Menampilkan Seluruh Field

Method items() digunakan untuk menampilkan seluruh key dan value dalam sebuah record.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "program_studi": "Informatika",
    "nilai": 85
}

for field, nilai in mahasiswa.items():
    print(field, ":", nilai)

Memeriksa Field Record

Operator in digunakan untuk memeriksa apakah sebuah key tersedia di dalam record.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

if "nilai" in mahasiswa:
    print("Field nilai tersedia")
else:
    print("Field nilai tidak tersedia")

Mengolah Kumpulan Record

Beberapa record dapat disimpan dalam list dan diproses menggunakan perulangan.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 65
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 90
    }

]

for data in mahasiswa:
    print(
        data["nim"],
        data["nama"],
        data["nilai"]
    )

Menyeleksi Record

Record dapat diseleksi berdasarkan nilai field tertentu. Contoh berikut menampilkan mahasiswa yang lulus.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 65
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 90
    }

]

for data in mahasiswa:

    if data["nilai"] >= 70:
        print(data["nama"], "lulus")

Menghitung Data Record

Nilai pada field numerik dapat dihitung menggunakan fungsi seperti sum(), len(), min(), dan max().

mahasiswa = [

    {
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nama": "Budi",
        "nilai": 65
    },

    {
        "nama": "Citra",
        "nilai": 90
    }

]

daftar_nilai = []

for data in mahasiswa:
    daftar_nilai.append(data["nilai"])

total = sum(daftar_nilai)
rata_rata = total / len(daftar_nilai)

print("Total nilai    :", total)
print("Rata-rata      :", rata_rata)
print("Nilai tertinggi:", max(daftar_nilai))
print("Nilai terendah :", min(daftar_nilai))

Mengurutkan Kumpulan Record

Fungsi sorted() dapat digunakan untuk mengurutkan kumpulan record berdasarkan field tertentu.

mahasiswa = [

    {
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nama": "Budi",
        "nilai": 65
    },

    {
        "nama": "Citra",
        "nilai": 90
    }

]

urut = sorted(
    mahasiswa,
    key=lambda data: data["nilai"]
)

for data in urut:
    print(data["nama"], data["nilai"])

Untuk mengurutkan dari nilai terbesar ke nilai terkecil, gunakan reverse=True.

urut = sorted(
    mahasiswa,
    key=lambda data: data["nilai"],
    reverse=True
)

for data in urut:
    print(data["nama"], data["nilai"])

Mencari Record

Pencarian record dapat dilakukan dengan membandingkan nilai field tertentu.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 65
    }

]

nim_dicari = input("Masukkan NIM: ")

ditemukan = False

for data in mahasiswa:

    if data["nim"] == nim_dicari:
        print("Data ditemukan")
        print("Nama :", data["nama"])
        print("Nilai:", data["nilai"])

        ditemukan = True
        break

if not ditemukan:
    print("Data tidak ditemukan")

Menambahkan Record Baru

Record baru dapat ditambahkan ke dalam list menggunakan method append().

mahasiswa = []

data_baru = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

mahasiswa.append(data_baru)

print(mahasiswa)

Menghapus Record dari List

Record dapat dihapus berdasarkan indeks menggunakan pop().

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi"
    },

    {
        "nim": "2026002",
        "nama": "Budi"
    }

]

data_dihapus = mahasiswa.pop(0)

print("Data yang dihapus:", data_dihapus)
print("Data tersisa:", mahasiswa)

Studi Kasus Pengolahan Nilai

Program berikut mengolah data mahasiswa, menentukan status kelulusan, menghitung rata-rata, dan menampilkan data yang sudah diproses.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 65
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 90
    },

    {
        "nim": "2026004",
        "nama": "Dewi",
        "nilai": 72
    }

]

total = 0

for data in mahasiswa:

    if data["nilai"] >= 70:
        data["status"] = "Lulus"
    else:
        data["status"] = "Tidak Lulus"

    total += data["nilai"]

rata_rata = total / len(mahasiswa)

print("Rata-rata kelas:", rata_rata)
print()

for data in mahasiswa:

    print(
        data["nim"],
        data["nama"],
        data["nilai"],
        data["status"]
    )

Ringkasan Pengolahan Record

Operasi Kegunaan Contoh
Membaca field Mengambil nilai berdasarkan key. data["nama"]
Mengubah field Memperbarui nilai field. data["nilai"] = 90
Menambah field Menambahkan field baru. data["status"] = "Lulus"
Menghapus field Menghapus field tertentu. del data["nilai"]
Menambah record Menambahkan record ke list. data.append(record)
Mencari record Mencari berdasarkan field tertentu. data["nim"] == nim_dicari
Menyeleksi record Memfilter berdasarkan kondisi. data["nilai"] >= 70
Mengurutkan record Mengurutkan berdasarkan field. sorted(..., key=...)

Kesalahan Umum

1. Mengakses Key yang Tidak Tersedia
data = {
    "nama": "Andi"
}

print(data["nilai"])
Gunakan get() jika key belum tentu tersedia.
2. Lupa Menggunakan Indeks List
data = [
    {
        "nama": "Andi"
    }
]

print(data["nama"])
Akses yang benar adalah data[0]["nama"] karena record berada di dalam list.

Latihan

  1. Buat list yang berisi minimal lima record mahasiswa.
  2. Tampilkan seluruh data mahasiswa menggunakan perulangan.
  3. Tambahkan field status berdasarkan nilai mahasiswa.
  4. Tampilkan hanya mahasiswa yang lulus.
  5. Cari mahasiswa berdasarkan NIM.
  6. Urutkan data mahasiswa berdasarkan nilai tertinggi.
  7. Hitung nilai rata-rata seluruh mahasiswa.
Kesimpulan

Pengolahan data record dilakukan dengan mengakses, mengubah, menambah, menghapus, mencari, menyeleksi, dan mengurutkan field atau kumpulan record. Dalam Python, struktur list yang berisi dictionary sangat berguna untuk mengelola data banyak objek secara terstruktur.

Pertemuan 12

Record dalam Record

Record dalam record adalah struktur data yang menyimpan sebuah record di dalam field record lainnya untuk membentuk data yang lebih terstruktur.

Pengertian Record dalam Record

Record dalam record merupakan struktur data bersarang atau nested record. Sebuah field di dalam record dapat berisi record lain dalam bentuk dictionary.

Struktur ini berguna untuk menyimpan data yang memiliki beberapa kelompok informasi, seperti data mahasiswa dengan alamat dan nilai mata kuliah.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",

    "alamat": {
        "jalan": "Jl. Merdeka",
        "kota": "Bandung"
    },

    "nilai": {
        "algoritma": 85,
        "basis_data": 90
    }
}

Struktur Record Bersarang

Field Isi Jenis Data
nim 2026001 String
nama Andi String
alamat jalan dan kota Record
nilai algoritma dan basis_data Record

Mengakses Record dalam Record

Untuk mengakses record bersarang, gunakan nama key secara berurutan dari record luar menuju record bagian dalam.

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "jalan": "Jl. Merdeka",
        "kota": "Bandung"
    }
}

print("Nama  :", mahasiswa["nama"])
print("Jalan :", mahasiswa["alamat"]["jalan"])
print("Kota  :", mahasiswa["alamat"]["kota"])
Bentuk umum aksesnya adalah:
record["field_luar"]["field_dalam"]

Mengubah Data Record Bagian Dalam

Field pada record bagian dalam dapat diubah menggunakan akses bertingkat.

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "jalan": "Jl. Merdeka",
        "kota": "Bandung"
    }
}

mahasiswa["alamat"]["kota"] = "Jakarta"

print(mahasiswa["alamat"])
Nilai field kota berhasil diubah menjadi Jakarta.

Menambahkan Field pada Record Dalam

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung"
    }
}

mahasiswa["alamat"]["kode_pos"] = "40123"

print(mahasiswa)

Menghapus Field pada Record Dalam

Field pada record bagian dalam dapat dihapus dengan del atau pop().

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "jalan": "Jl. Merdeka",
        "kota": "Bandung",
        "kode_pos": "40123"
    }
}

del mahasiswa["alamat"]["kode_pos"]

print(mahasiswa)
kota = mahasiswa["alamat"].pop("kota")

print("Kota yang dihapus:", kota)

Record Nilai Mata Kuliah

Record bersarang dapat digunakan untuk mengelompokkan nilai berdasarkan mata kuliah.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",

    "nilai": {
        "algoritma": 85,
        "basis_data": 90,
        "pemrograman": 88
    }
}

print(
    "Nilai Algoritma:",
    mahasiswa["nilai"]["algoritma"]
)

print(
    "Nilai Pemrograman:",
    mahasiswa["nilai"]["pemrograman"]
)

Mengolah Data Record Bagian Dalam

Nilai yang terdapat dalam record bagian dalam dapat diambil menggunakan method values(), kemudian diolah dengan fungsi numerik.

mahasiswa = {
    "nama": "Andi",

    "nilai": {
        "algoritma": 85,
        "basis_data": 90,
        "pemrograman": 88
    }
}

daftar_nilai = mahasiswa["nilai"].values()

total = sum(daftar_nilai)
jumlah = len(daftar_nilai)
rata_rata = total / jumlah

print("Total nilai :", total)
print("Rata-rata   :", rata_rata)

Menampilkan Record Bagian Dalam

Method items() dapat digunakan untuk menampilkan key dan value pada record bagian dalam.

mahasiswa = {
    "nama": "Andi",

    "nilai": {
        "algoritma": 85,
        "basis_data": 90,
        "pemrograman": 88
    }
}

for mata_kuliah, nilai in mahasiswa["nilai"].items():
    print(mata_kuliah, ":", nilai)

Kumpulan Record dengan Record Dalam

Struktur record bersarang dapat digunakan pada banyak data mahasiswa yang disimpan dalam list.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",

        "alamat": {
            "kota": "Bandung"
        },

        "nilai": {
            "algoritma": 85,
            "basis_data": 90
        }
    },

    {
        "nim": "2026002",
        "nama": "Budi",

        "alamat": {
            "kota": "Jakarta"
        },

        "nilai": {
            "algoritma": 75,
            "basis_data": 80
        }
    }

]

for data in mahasiswa:

    print("Nama:", data["nama"])
    print("Kota:", data["alamat"]["kota"])
    print("Nilai Algoritma:", data["nilai"]["algoritma"])
    print()

Seleksi Berdasarkan Record Dalam

Data dapat diseleksi berdasarkan field yang terdapat di dalam record bagian dalam.

mahasiswa = [

    {
        "nama": "Andi",
        "nilai": {
            "algoritma": 85,
            "basis_data": 90
        }
    },

    {
        "nama": "Budi",
        "nilai": {
            "algoritma": 65,
            "basis_data": 70
        }
    }

]

for data in mahasiswa:

    if data["nilai"]["algoritma"] >= 70:
        print(
            data["nama"],
            "lulus Algoritma"
        )

Studi Kasus Data Mahasiswa

Program berikut menghitung rata-rata nilai mata kuliah setiap mahasiswa dan menentukan status kelulusannya.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",

        "nilai": {
            "algoritma": 85,
            "basis_data": 90,
            "pemrograman": 88
        }
    },

    {
        "nim": "2026002",
        "nama": "Budi",

        "nilai": {
            "algoritma": 65,
            "basis_data": 70,
            "pemrograman": 68
        }
    }

]

for data in mahasiswa:

    nilai = data["nilai"].values()

    total = sum(nilai)
    rata_rata = total / len(nilai)

    if rata_rata >= 70:
        status = "Lulus"
    else:
        status = "Tidak Lulus"

    print("NIM      :", data["nim"])
    print("Nama     :", data["nama"])
    print("Rata-rata:", rata_rata)
    print("Status   :", status)
    print()

Ringkasan Akses Record Bersarang

Operasi Contoh Keterangan
Mengakses field dalam data["alamat"]["kota"] Mengambil nilai kota.
Mengubah field dalam data["nilai"]["algoritma"] = 90 Mengubah nilai mata kuliah.
Menambah field dalam data["alamat"]["kode_pos"] = "40123" Menambahkan informasi baru.
Menghapus field dalam del data["alamat"]["kota"] Menghapus data bagian dalam.
Perulangan data["nilai"].items() Membaca seluruh field bagian dalam.
Perhitungan sum(data["nilai"].values()) Menghitung jumlah nilai.

Kesalahan Umum

1. Salah Urutan Key
data = {
    "alamat": {
        "kota": "Bandung"
    }
}

print(data["kota"])
Akses yang benar adalah data["alamat"]["kota"] karena kota berada di dalam record alamat.
2. Mengakses Key yang Tidak Tersedia
data = {
    "alamat": {
        "kota": "Bandung"
    }
}

print(data["alamat"]["kode_pos"])
Gunakan get() jika field bagian dalam belum tentu tersedia.
kode_pos = data["alamat"].get(
    "kode_pos",
    "Belum tersedia"
)

Latihan

  1. Buat record mahasiswa yang memiliki record alamat.
  2. Tambahkan record nilai yang berisi tiga mata kuliah.
  3. Tampilkan kota tempat tinggal mahasiswa.
  4. Ubah nilai salah satu mata kuliah.
  5. Hitung total dan rata-rata nilai mahasiswa.
  6. Buat list yang berisi minimal tiga mahasiswa dengan alamat dan nilai masing-masing.
Kesimpulan

Record dalam record digunakan untuk menyimpan data yang memiliki struktur bertingkat. Dalam Python, data tersebut dapat dibuat menggunakan dictionary bersarang. Akses data dilakukan secara berurutan dari record luar ke record bagian dalam menggunakan beberapa key.

Pertemuan 12

Nested Record

Nested record adalah struktur data yang menyimpan record di dalam record lain sehingga data dapat dikelompokkan secara bertingkat.

Pengertian Nested Record

Nested record atau record bersarang adalah record yang memiliki field dengan nilai berupa record lain. Struktur ini digunakan ketika satu data memiliki beberapa kelompok informasi.

Dalam Python, nested record dapat dibuat menggunakan dictionary di dalam dictionary.

pelanggan = {
    "id": "C001",
    "nama": "Andi",

    "kontak": {
        "email": "andi@example.com",
        "telepon": "08123456789"
    },

    "alamat": {
        "jalan": "Jl. Merdeka",
        "kota": "Bandung"
    }
}

Struktur Nested Record

Level Field Isi
Level 1 nama Andi
Level 1 kontak Record kontak
Level 2 kontak["email"] andi@example.com
Level 1 alamat Record alamat
Level 2 alamat["kota"] Bandung

Mengakses Data Nested Record

Data nested record diakses secara bertingkat, dimulai dari record luar kemudian dilanjutkan ke record bagian dalam.

pelanggan = {
    "nama": "Andi",

    "kontak": {
        "email": "andi@example.com",
        "telepon": "08123456789"
    },

    "alamat": {
        "kota": "Bandung"
    }
}

print("Nama  :", pelanggan["nama"])
print("Email :", pelanggan["kontak"]["email"])
print("Kota  :", pelanggan["alamat"]["kota"])
Bentuk umum akses nested record:
record["field_luar"]["field_dalam"]

Mengubah Data Nested Record

Data pada record bagian dalam dapat diubah menggunakan akses bertingkat.

pelanggan = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung",
        "kode_pos": "40123"
    }
}

pelanggan["alamat"]["kota"] = "Jakarta"
pelanggan["alamat"]["kode_pos"] = "10110"

print(pelanggan)

Menambahkan Data pada Nested Record

pelanggan = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung"
    }
}

pelanggan["alamat"]["provinsi"] = "Jawa Barat"
pelanggan["kontak"] = {
    "email": "andi@example.com"
}

print(pelanggan)

Menghapus Data Nested Record

Field pada record bagian dalam dapat dihapus menggunakan del atau pop().

pelanggan = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung",
        "kode_pos": "40123"
    }
}

del pelanggan["alamat"]["kode_pos"]

print(pelanggan)
kota = pelanggan["alamat"].pop("kota")

print("Data dihapus:", kota)

Perulangan Nested Record

Method items() dapat digunakan untuk membaca semua field dalam record bagian dalam.

mahasiswa = {
    "nama": "Andi",

    "nilai": {
        "algoritma": 85,
        "basis_data": 90,
        "pemrograman": 88
    }
}

for mata_kuliah, nilai in mahasiswa["nilai"].items():
    print(mata_kuliah, ":", nilai)

List Berisi Nested Record

Kumpulan nested record dapat disimpan dalam list. Struktur ini cocok untuk mengelola data banyak objek.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",

        "alamat": {
            "kota": "Bandung"
        },

        "nilai": {
            "algoritma": 85,
            "basis_data": 90
        }
    },

    {
        "nim": "2026002",
        "nama": "Budi",

        "alamat": {
            "kota": "Jakarta"
        },

        "nilai": {
            "algoritma": 70,
            "basis_data": 75
        }
    }

]

for data in mahasiswa:

    print("Nama:", data["nama"])
    print("Kota:", data["alamat"]["kota"])
    print("Algoritma:", data["nilai"]["algoritma"])
    print()

Mengolah Nilai pada Nested Record

Nilai yang terdapat pada record bagian dalam dapat dihitung dengan mengambil seluruh value menggunakan values().

mahasiswa = {
    "nama": "Andi",

    "nilai": {
        "algoritma": 85,
        "basis_data": 90,
        "pemrograman": 88
    }
}

daftar_nilai = mahasiswa["nilai"].values()

total = sum(daftar_nilai)
rata_rata = total / len(daftar_nilai)

print("Total nilai :", total)
print("Rata-rata   :", rata_rata)

Seleksi Nested Record

Seleksi dapat dilakukan berdasarkan field yang berada di dalam nested record.

mahasiswa = [

    {
        "nama": "Andi",
        "nilai": {
            "algoritma": 85
        }
    },

    {
        "nama": "Budi",
        "nilai": {
            "algoritma": 65
        }
    }

]

for data in mahasiswa:

    nilai = data["nilai"]["algoritma"]

    if nilai >= 70:
        print(data["nama"], "lulus")
    else:
        print(data["nama"], "tidak lulus")

Studi Kasus Data Pesanan

Program berikut menyimpan data pesanan pelanggan dalam nested record. Program menghitung total harga pesanan.

pesanan = {
    "nomor": "ORD001",

    "pelanggan": {
        "nama": "Andi",
        "kota": "Bandung"
    },

    "produk": {
        "nama": "Keyboard",
        "harga": 250000,
        "jumlah": 2
    }
}

harga = pesanan["produk"]["harga"]
jumlah = pesanan["produk"]["jumlah"]
total = harga * jumlah

print("Nomor pesanan:", pesanan["nomor"])
print("Nama pelanggan:", pesanan["pelanggan"]["nama"])
print("Produk:", pesanan["produk"]["nama"])
print("Total harga:", total)

Nested Record Bertingkat

Nested record dapat memiliki lebih dari dua tingkat. Namun, struktur yang terlalu dalam akan lebih sulit dibaca dan dikelola.

perusahaan = {
    "nama": "Teknologi Maju",

    "alamat": {
        "kantor": {
            "jalan": "Jl. Sudirman",
            "kota": "Jakarta"
        }
    }
}

print(
    perusahaan["alamat"]["kantor"]["kota"]
)
Gunakan nested record secara secukupnya agar kode tetap mudah dipahami.

Ringkasan Nested Record

Operasi Contoh Keterangan
Mengakses data data["alamat"]["kota"] Mengambil field dari record dalam.
Mengubah data data["nilai"]["algoritma"] = 90 Mengubah field bagian dalam.
Menambah data data["alamat"]["provinsi"] = "Jabar" Menambahkan field baru.
Menghapus data del data["alamat"]["kota"] Menghapus field bagian dalam.
Membaca banyak data data["nilai"].items() Melakukan perulangan field dalam.
Menghitung data sum(data["nilai"].values()) Mengolah nilai numerik bagian dalam.

Kesalahan Umum

1. Salah Menuliskan Urutan Key
data = {
    "alamat": {
        "kota": "Bandung"
    }
}

print(data["kota"])
Akses yang benar adalah data["alamat"]["kota"].
2. Mengakses Record yang Belum Dibuat
data = {
    "nama": "Andi"
}

data["alamat"]["kota"] = "Bandung"
Record alamat harus dibuat terlebih dahulu sebelum field kota ditambahkan.

Latihan

  1. Buat nested record data pelanggan yang memiliki informasi kontak dan alamat.
  2. Tampilkan email dan kota pelanggan.
  3. Tambahkan field kode pos pada record alamat.
  4. Ubah nomor telepon pelanggan.
  5. Buat nested record data produk yang memiliki informasi kategori, harga, dan stok.
  6. Hitung total harga berdasarkan harga dan jumlah produk.
Kesimpulan

Nested record digunakan untuk menyimpan data secara bertingkat. Dalam Python, nested record dibuat menggunakan dictionary di dalam dictionary. Data diakses dengan menuliskan key dari record luar kemudian key dari record bagian dalam.

Pertemuan 12

Pengolahan Nested Record

Pengolahan nested record meliputi proses membaca, mengubah, menambah, menghapus, mencari, menghitung, dan menyeleksi data pada record yang memiliki struktur bertingkat.

Pengertian Pengolahan Nested Record

Pengolahan nested record adalah proses mengelola data yang berada di dalam record bertingkat. Data dapat berupa record kontak, alamat, nilai, produk, atau informasi lainnya.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung",
        "provinsi": "Jawa Barat"
    },

    "nilai": {
        "algoritma": 85,
        "basis_data": 90
    }
}

Membaca Data Nested Record

Data nested record dibaca menggunakan akses key secara bertingkat dari record luar menuju record dalam.

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung"
    },

    "nilai": {
        "algoritma": 85
    }
}

print("Nama :", mahasiswa["nama"])
print("Kota :", mahasiswa["alamat"]["kota"])
print(
    "Nilai Algoritma:",
    mahasiswa["nilai"]["algoritma"]
)

Membaca Data dengan get()

Method get() digunakan agar program tidak langsung menghasilkan error ketika field belum tersedia.

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung"
    }
}

kota = mahasiswa.get(
    "alamat",
    {}
).get(
    "kota",
    "Belum tersedia"
)

kode_pos = mahasiswa.get(
    "alamat",
    {}
).get(
    "kode_pos",
    "Belum tersedia"
)

print("Kota     :", kota)
print("Kode Pos :", kode_pos)

Mengubah Data Nested Record

Field yang berada di dalam record dapat diubah dengan menggunakan akses key bertingkat.

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung"
    },

    "nilai": {
        "algoritma": 85
    }
}

mahasiswa["alamat"]["kota"] = "Jakarta"
mahasiswa["nilai"]["algoritma"] = 90

print(mahasiswa)

Menambahkan Data Nested Record

Field baru dapat ditambahkan ke dalam record yang sudah tersedia.

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung"
    }
}

mahasiswa["alamat"]["kode_pos"] = "40123"
mahasiswa["alamat"]["jalan"] = "Jl. Merdeka"

mahasiswa["kontak"] = {
    "email": "andi@example.com",
    "telepon": "08123456789"
}

print(mahasiswa)

Menghapus Data Nested Record

Field pada record bagian dalam dapat dihapus menggunakan del atau pop().

mahasiswa = {
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung",
        "kode_pos": "40123"
    }
}

del mahasiswa["alamat"]["kode_pos"]

print(mahasiswa)
kota = mahasiswa["alamat"].pop("kota")

print("Data yang dihapus:", kota)
print(mahasiswa)

Menampilkan Isi Nested Record

Method items() dapat digunakan untuk membaca key dan value pada record bagian dalam.

mahasiswa = {
    "nama": "Andi",

    "nilai": {
        "algoritma": 85,
        "basis_data": 90,
        "pemrograman": 88
    }
}

for mata_kuliah, nilai in mahasiswa["nilai"].items():
    print(mata_kuliah, ":", nilai)

Menghitung Data pada Nested Record

Nilai pada nested record dapat dihitung dengan mengambil seluruh value menggunakan values().

mahasiswa = {
    "nama": "Andi",

    "nilai": {
        "algoritma": 85,
        "basis_data": 90,
        "pemrograman": 88
    }
}

daftar_nilai = list(
    mahasiswa["nilai"].values()
)

total = sum(daftar_nilai)
jumlah = len(daftar_nilai)
rata_rata = total / jumlah

print("Total nilai :", total)
print("Jumlah nilai:", jumlah)
print("Rata-rata   :", rata_rata)
print("Tertinggi   :", max(daftar_nilai))
print("Terendah    :", min(daftar_nilai))

Mengolah Kumpulan Nested Record

Kumpulan nested record dapat disimpan dalam list kemudian diproses menggunakan perulangan.

mahasiswa = [

    {
        "nama": "Andi",

        "alamat": {
            "kota": "Bandung"
        },

        "nilai": {
            "algoritma": 85
        }
    },

    {
        "nama": "Budi",

        "alamat": {
            "kota": "Jakarta"
        },

        "nilai": {
            "algoritma": 65
        }
    }

]

for data in mahasiswa:

    print("Nama :", data["nama"])
    print("Kota :", data["alamat"]["kota"])
    print(
        "Nilai:",
        data["nilai"]["algoritma"]
    )
    print()

Menyeleksi Kumpulan Nested Record

Seleksi dapat dilakukan berdasarkan field di dalam nested record, misalnya kota atau nilai mata kuliah.

mahasiswa = [

    {
        "nama": "Andi",

        "alamat": {
            "kota": "Bandung"
        },

        "nilai": {
            "algoritma": 85
        }
    },

    {
        "nama": "Budi",

        "alamat": {
            "kota": "Jakarta"
        },

        "nilai": {
            "algoritma": 65
        }
    }

]

for data in mahasiswa:

    if data["nilai"]["algoritma"] >= 70:
        print(
            data["nama"],
            "lulus mata kuliah Algoritma"
        )

Mencari Data Nested Record

Pencarian dapat dilakukan dengan membandingkan nilai field yang berada di dalam record bersarang.

mahasiswa = [

    {
        "nama": "Andi",

        "alamat": {
            "kota": "Bandung"
        }
    },

    {
        "nama": "Budi",

        "alamat": {
            "kota": "Jakarta"
        }
    }

]

kota_dicari = "Bandung"

for data in mahasiswa:

    if data["alamat"]["kota"] == kota_dicari:
        print(
            data["nama"],
            "tinggal di",
            kota_dicari
        )

Mengurutkan Nested Record

Fungsi sorted() dapat digunakan untuk mengurutkan list nested record berdasarkan field bagian dalam.

mahasiswa = [

    {
        "nama": "Andi",

        "nilai": {
            "algoritma": 85
        }
    },

    {
        "nama": "Budi",

        "nilai": {
            "algoritma": 65
        }
    },

    {
        "nama": "Citra",

        "nilai": {
            "algoritma": 90
        }
    }

]

urut = sorted(
    mahasiswa,
    key=lambda data: data["nilai"]["algoritma"],
    reverse=True
)

for data in urut:
    print(
        data["nama"],
        data["nilai"]["algoritma"]
    )
Parameter reverse=True digunakan untuk mengurutkan data dari nilai terbesar ke nilai terkecil.

Menambahkan Nested Record Baru

mahasiswa = []

data_baru = {
    "nim": "2026001",
    "nama": "Andi",

    "alamat": {
        "kota": "Bandung"
    },

    "nilai": {
        "algoritma": 85
    }
}

mahasiswa.append(data_baru)

print(mahasiswa)

Studi Kasus Pengolahan Data Mahasiswa

Program berikut menghitung rata-rata nilai setiap mahasiswa dan menentukan status kelulusannya.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",

        "alamat": {
            "kota": "Bandung"
        },

        "nilai": {
            "algoritma": 85,
            "basis_data": 90,
            "pemrograman": 88
        }
    },

    {
        "nim": "2026002",
        "nama": "Budi",

        "alamat": {
            "kota": "Jakarta"
        },

        "nilai": {
            "algoritma": 65,
            "basis_data": 70,
            "pemrograman": 68
        }
    }

]

for data in mahasiswa:

    daftar_nilai = list(
        data["nilai"].values()
    )

    total = sum(daftar_nilai)
    rata_rata = total / len(daftar_nilai)

    if rata_rata >= 70:
        status = "Lulus"
    else:
        status = "Tidak Lulus"

    data["hasil"] = {
        "total": total,
        "rata_rata": rata_rata,
        "status": status
    }

for data in mahasiswa:

    print("NIM      :", data["nim"])
    print("Nama     :", data["nama"])
    print("Kota     :", data["alamat"]["kota"])
    print(
        "Rata-rata:",
        data["hasil"]["rata_rata"]
    )
    print(
        "Status   :",
        data["hasil"]["status"]
    )
    print()

Ringkasan Pengolahan Nested Record

Operasi Contoh Kegunaan
Membaca data data["alamat"]["kota"] Mengambil field bagian dalam.
Mengubah data data["nilai"]["algoritma"] = 90 Memperbarui nilai nested record.
Menambah data data["alamat"]["kode_pos"] = "40123" Menambahkan field baru.
Menghapus data del data["alamat"]["kota"] Menghapus field bagian dalam.
Menghitung data sum(data["nilai"].values()) Menghitung nilai numerik.
Mencari data data["alamat"]["kota"] == "Bandung" Mencari berdasarkan field bertingkat.
Mengurutkan data sorted(..., key=lambda ...) Mengurutkan berdasarkan field dalam.

Kesalahan Umum

1. Record Bagian Dalam Belum Dibuat
data = {
    "nama": "Andi"
}

data["alamat"]["kota"] = "Bandung"
Record alamat harus dibuat terlebih dahulu sebelum field kota ditambahkan.
2. Salah Menggunakan Fungsi Numerik
data = {
    "nilai": {
        "algoritma": 85,
        "basis_data": 90
    }
}

print(sum(data["nilai"]))
Gunakan values() untuk mengambil nilai numerik.
print(sum(data["nilai"].values()))

Latihan

  1. Buat nested record data pelanggan yang memiliki field kontak dan alamat.
  2. Tampilkan email, nomor telepon, dan kota pelanggan.
  3. Tambahkan field kode pos pada alamat pelanggan.
  4. Ubah nomor telepon pelanggan.
  5. Buat list yang berisi minimal tiga nested record produk.
  6. Hitung total harga setiap produk berdasarkan harga dan jumlah.
  7. Urutkan produk berdasarkan total harga terbesar.
Kesimpulan

Pengolahan nested record dilakukan dengan menggunakan akses key secara bertingkat. Data dapat dibaca, diubah, ditambah, dihapus, dicari, dihitung, diseleksi, dan diurutkan berdasarkan field yang berada di dalam record bersarang.

Pertemuan 13

File Teks

File teks digunakan untuk menyimpan data dalam bentuk karakter atau tulisan yang dapat dibaca dan diolah oleh program.

Pengertian File Teks

File teks adalah file yang menyimpan data dalam bentuk karakter, kata, kalimat, atau baris teks. Contoh file teks adalah file dengan ekstensi .txt, .csv, dan beberapa file konfigurasi.

File teks dapat digunakan untuk menyimpan data secara permanen sehingga data tetap tersedia walaupun program sudah dihentikan.

Contoh nama file teks:
catatan.txt
data_mahasiswa.txt
produk.csv

Alur Pengolahan File

Pengolahan file teks umumnya terdiri dari beberapa tahap.

Tahap Keterangan
Open Membuka file.
Read atau Write Membaca atau menulis isi file.
Close Menutup file setelah selesai digunakan.

Membuka File dengan open()

Fungsi open() digunakan untuk membuka file. Bentuk umumnya adalah:

open(nama_file, mode)

Contoh membuka file untuk dibaca:

file = open("catatan.txt", "r")

Mode Pembukaan File

Mode Keterangan
"r" Membaca file. File harus sudah tersedia.
"w" Menulis file dan menghapus isi lama.
"a" Menambahkan data di akhir file.
"x" Membuat file baru. Error jika file sudah ada.
"r+" Membaca dan menulis file.
"b" Membuka file dalam mode biner.
"t" Membuka file dalam mode teks.

Menulis File Teks

Method write() digunakan untuk menulis teks ke dalam file. Mode "w" akan membuat file baru jika belum tersedia.

file = open("catatan.txt", "w")

file.write("Belajar pemrograman dasar")
file.write("\nBelajar file teks")

file.close()
Mode "w" akan menghapus isi file lama apabila file tersebut sudah tersedia.

Menulis Banyak Baris

Beberapa baris teks dapat ditulis menggunakan karakter newline \n.

file = open("mahasiswa.txt", "w")

data = """Andi
Budi
Citra
Dewi"""

file.write(data)
file.close()

Menambahkan Isi File

Mode "a" digunakan untuk menambahkan data di bagian akhir file tanpa menghapus isi sebelumnya.

file = open("catatan.txt", "a")

file.write("\nData tambahan")

file.close()

Membaca Seluruh Isi File

Method read() digunakan untuk membaca seluruh isi file sebagai satu string.

file = open("catatan.txt", "r")

isi = file.read()

print(isi)

file.close()

Membaca Satu Baris

Method readline() digunakan untuk membaca satu baris dari file.

file = open("mahasiswa.txt", "r")

baris_pertama = file.readline()

print(baris_pertama)

file.close()

Membaca Semua Baris

Method readlines() digunakan untuk membaca seluruh baris dan menyimpannya dalam bentuk list.

file = open("mahasiswa.txt", "r")

baris = file.readlines()

for data in baris:
    print(data.strip())

file.close()
Method strip() digunakan untuk menghapus karakter newline dan spasi di awal atau akhir teks.

Menggunakan with open()

Struktur with open() disarankan karena file akan ditutup secara otomatis setelah selesai digunakan.

with open("catatan.txt", "r") as file:
    isi = file.read()

print(isi)
Dengan with, kita tidak perlu memanggil file.close() secara manual.

Encoding File

Parameter encoding digunakan untuk menentukan format karakter file. Encoding utf-8 mendukung banyak karakter dan bahasa.

with open(
    "catatan.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Belajar file teks")

Menyimpan Data Record ke File Teks

Data record dapat disimpan ke file teks dengan mengubah setiap field menjadi baris teks.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

with open(
    "mahasiswa.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write(f"NIM: {mahasiswa['nim']}\n")
    file.write(f"Nama: {mahasiswa['nama']}\n")
    file.write(f"Nilai: {mahasiswa['nilai']}\n")

Membaca Data Record dari File Teks

File teks dapat dibaca baris demi baris menggunakan perulangan.

with open(
    "mahasiswa.txt",
    "r",
    encoding="utf-8"
) as file:

    for baris in file:
        print(baris.strip())

File Teks Berformat CSV

CSV atau Comma-Separated Values adalah format file teks yang menyimpan data dalam kolom dengan pemisah koma.

nim,nama,nilai
2026001,Andi,85
2026002,Budi,75
2026003,Citra,90

File CSV dapat dibuat menggunakan module csv.

import csv

data = [
    ["nim", "nama", "nilai"],
    ["2026001", "Andi", 85],
    ["2026002", "Budi", 75],
    ["2026003", "Citra", 90]
]

with open(
    "mahasiswa.csv",
    "w",
    newline="",
    encoding="utf-8"
) as file:

    writer = csv.writer(file)
    writer.writerows(data)

Membaca File CSV

import csv

with open(
    "mahasiswa.csv",
    "r",
    encoding="utf-8"
) as file:

    reader = csv.reader(file)

    for baris in reader:
        print(baris)
Setiap baris CSV akan dibaca sebagai list.

Penanganan Error File

Error dapat terjadi jika file yang ingin dibaca belum tersedia. Gunakan try-except untuk menangani kondisi tersebut.

try:

    with open(
        "data.txt",
        "r",
        encoding="utf-8"
    ) as file:

        isi = file.read()
        print(isi)

except FileNotFoundError:
    print("File tidak ditemukan")

Studi Kasus Penyimpanan Data Mahasiswa

Program berikut menyimpan kumpulan data mahasiswa ke dalam file teks dengan format sederhana.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 75
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 90
    }

]

with open(
    "mahasiswa.txt",
    "w",
    encoding="utf-8"
) as file:

    for data in mahasiswa:

        file.write(
            f"{data['nim']};"
            f"{data['nama']};"
            f"{data['nilai']}\n"
        )

Data dapat dibaca kembali dengan memisahkan setiap baris menggunakan method split().

with open(
    "mahasiswa.txt",
    "r",
    encoding="utf-8"
) as file:

    for baris in file:

        nim, nama, nilai = baris.strip().split(";")

        print("NIM  :", nim)
        print("Nama :", nama)
        print("Nilai:", nilai)
        print()

Ringkasan Operasi File Teks

Operasi Kegunaan Contoh
open() Membuka file. open("data.txt", "r")
read() Membaca seluruh isi file. file.read()
readline() Membaca satu baris. file.readline()
readlines() Membaca semua baris sebagai list. file.readlines()
write() Menulis teks ke file. file.write("Teks")
close() Menutup file. file.close()
strip() Menghapus spasi dan newline. baris.strip()
split() Memisahkan teks menjadi list. baris.split(";")

Kesalahan Umum

1. Lupa Menutup File

File yang tidak ditutup dapat menyebabkan penggunaan sumber daya yang tidak efisien. Gunakan with open() agar file ditutup otomatis.

2. Salah Menggunakan Mode "w"

Mode "w" akan menghapus isi file lama. Gunakan mode "a" jika ingin menambahkan data.

3. File Tidak Ditemukan

Pastikan nama dan lokasi file benar, atau tangani error menggunakan try-except.

Latihan

  1. Buat file teks bernama catatan.txt.
  2. Tuliskan minimal lima baris data ke dalam file tersebut.
  3. Baca seluruh isi file menggunakan read().
  4. Baca file baris demi baris menggunakan perulangan.
  5. Tambahkan satu baris baru tanpa menghapus data lama.
  6. Buat file CSV yang berisi data mahasiswa, kemudian baca kembali isinya menggunakan module csv.
Kesimpulan

File teks digunakan untuk menyimpan dan membaca data secara permanen. Operasi utama file teks meliputi membuka, membaca, menulis, menambahkan, dan menutup file. Penggunaan with open() sangat disarankan karena file akan ditutup secara otomatis setelah selesai digunakan.

Pertemuan 13

Membuat File Teks

File teks dapat dibuat menggunakan fungsi open() dengan mode penulisan. Data kemudian dapat dimasukkan menggunakan method write().

Pengertian Membuat File Teks

Membuat file teks berarti menghasilkan sebuah file baru yang digunakan untuk menyimpan tulisan, angka, atau data lainnya.

Pada Python, file teks dapat dibuat menggunakan fungsi open() dengan mode "w" atau "x".

file = open("data.txt", "w")

file.close()
Jika file data.txt belum tersedia, Python akan membuat file tersebut secara otomatis.

Membuat File dengan Mode "w"

Mode "w" digunakan untuk menulis data ke dalam file. Jika file belum ada, file baru akan dibuat.

file = open("catatan.txt", "w")

file.write("Ini adalah file teks.")

file.close()
Jika file sudah tersedia, mode "w" akan menghapus isi lama sebelum menulis data baru.

Membuat File dengan Mode "x"

Mode "x" digunakan untuk membuat file baru. Jika file sudah ada, Python akan menghasilkan error.

try:

    file = open("data_baru.txt", "x")
    file.write("File berhasil dibuat.")
    file.close()

except FileExistsError:

    print("File sudah tersedia.")
Gunakan mode "x" apabila program tidak boleh menimpa file yang sudah ada.

Membuat File dengan with open()

Cara yang lebih aman dan disarankan adalah menggunakan struktur with open(). File akan ditutup secara otomatis setelah proses selesai.

with open(
    "catatan.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Belajar Python")
    file.write("\nMembuat file teks")

Menulis Satu Baris Teks

with open(
    "pesan.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Selamat belajar pemrograman.")
File pesan.txt akan berisi satu baris teks.

Menulis Banyak Baris

Karakter \n digunakan untuk berpindah ke baris berikutnya.

with open(
    "daftar.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Baris pertama\n")
    file.write("Baris kedua\n")
    file.write("Baris ketiga\n")

Menulis Data dari List

Data dalam list dapat ditulis ke file menggunakan perulangan.

nama = [
    "Andi",
    "Budi",
    "Citra",
    "Dewi"
]

with open(
    "nama.txt",
    "w",
    encoding="utf-8"
) as file:

    for data in nama:
        file.write(data + "\n")

Menggunakan writelines()

Method writelines() digunakan untuk menulis beberapa teks sekaligus. Karakter newline perlu ditambahkan sendiri.

nama = [
    "Andi\n",
    "Budi\n",
    "Citra\n",
    "Dewi\n"
]

with open(
    "nama.txt",
    "w",
    encoding="utf-8"
) as file:

    file.writelines(nama)

Membuat File dari Input Pengguna

Data dari pengguna dapat langsung disimpan ke dalam file teks.

nama = input("Masukkan nama: ")
alamat = input("Masukkan alamat: ")

with open(
    "biodata.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write(f"Nama: {nama}\n")
    file.write(f"Alamat: {alamat}\n")

print("Data berhasil disimpan.")

Membuat File dari Data Record

Data record dapat disimpan ke dalam file teks menggunakan format tertentu.

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "program_studi": "Informatika",
    "nilai": 85
}

with open(
    "mahasiswa.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write(f"NIM: {mahasiswa['nim']}\n")
    file.write(f"Nama: {mahasiswa['nama']}\n")
    file.write(
        f"Program Studi: "
        f"{mahasiswa['program_studi']}\n"
    )
    file.write(f"Nilai: {mahasiswa['nilai']}\n")

Membuat File dari Banyak Record

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 75
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 90
    }

]

with open(
    "mahasiswa.txt",
    "w",
    encoding="utf-8"
) as file:

    for data in mahasiswa:

        file.write(
            f"{data['nim']};"
            f"{data['nama']};"
            f"{data['nilai']}\n"
        )
Tanda titik koma digunakan sebagai pemisah antarfield.

Menambahkan Data ke File

Gunakan mode "a" untuk menambahkan data tanpa menghapus isi file yang sudah ada.

with open(
    "mahasiswa.txt",
    "a",
    encoding="utf-8"
) as file:

    file.write(
        "2026004;Dewi;88\n"
    )

Menggunakan Encoding UTF-8

Encoding utf-8 disarankan agar file dapat menyimpan berbagai karakter, termasuk karakter bahasa Indonesia.

with open(
    "catatan.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write(
        "Belajar pemrograman "
        "dengan Python."
    )

Membuat File pada Folder Tertentu

File dapat dibuat pada folder tertentu dengan menuliskan path atau lokasi file.

with open(
    "data/mahasiswa.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Data mahasiswa")
Folder data harus sudah tersedia agar file dapat dibuat pada lokasi tersebut.

Menangani Error saat Membuat File

Penanganan error dapat digunakan untuk mengatasi kondisi seperti file sudah tersedia atau folder tidak ditemukan.

try:

    with open(
        "data_baru.txt",
        "x",
        encoding="utf-8"
    ) as file:

        file.write("File baru")

except FileExistsError:

    print("File sudah tersedia.")

except OSError:

    print("File gagal dibuat.")

Studi Kasus Membuat File Nilai

Program berikut membuat file teks yang berisi daftar nilai mahasiswa dan status kelulusan.

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 65
    },

    {
        "nim": "2026003",
        "nama": "Citra",
        "nilai": 90
    }

]

with open(
    "hasil_nilai.txt",
    "w",
    encoding="utf-8"
) as file:

    for data in mahasiswa:

        if data["nilai"] >= 70:
            status = "Lulus"
        else:
            status = "Tidak Lulus"

        file.write(
            f"NIM: {data['nim']}\n"
            f"Nama: {data['nama']}\n"
            f"Nilai: {data['nilai']}\n"
            f"Status: {status}\n"
            f"{'-' * 25}\n"
        )

print("File hasil_nilai.txt berhasil dibuat.")

Ringkasan Membuat File Teks

Perintah Kegunaan Contoh
open() Membuka atau membuat file. open("data.txt", "w")
"w" Membuat dan menulis file. Isi lama dapat terhapus.
"x" Membuat file baru. Error jika file sudah ada.
"a" Menambahkan isi file. Data ditulis di bagian akhir.
write() Menulis teks. file.write("Data")
writelines() Menulis beberapa baris. file.writelines(data)
with open() Membuka dan menutup file secara otomatis. Struktur yang disarankan.

Kesalahan Umum

1. Tidak Menambahkan Newline
with open("data.txt", "w") as file:
    file.write("Andi")
    file.write("Budi")
Hasilnya akan berada dalam satu baris. Gunakan \n untuk membuat baris baru.
2. Menggunakan Mode "w" untuk Menambah Data

Mode "w" akan menghapus isi lama. Gunakan mode "a" apabila ingin menambahkan data.

3. Folder Tujuan Tidak Tersedia

Pastikan folder tujuan sudah dibuat sebelum file ditulis pada folder tersebut.

Latihan

  1. Buat file biodata.txt yang berisi nama, alamat, dan nomor telepon.
  2. Buat file daftar-nama.txt yang berisi minimal lima nama.
  3. Tambahkan satu nama baru menggunakan mode "a".
  4. Buat file dari input pengguna.
  5. Simpan data beberapa mahasiswa ke file teks.
  6. Tambahkan status kelulusan pada setiap data mahasiswa sebelum disimpan.
Kesimpulan

File teks dapat dibuat menggunakan fungsi open() dengan mode "w" atau "x". Data ditulis menggunakan write() atau writelines(). Penggunaan with open() lebih aman karena file akan ditutup secara otomatis setelah selesai digunakan.

Pertemuan 13

Menambah Isi File Teks

Menambah isi file teks dilakukan dengan mode append agar data baru ditulis di akhir file tanpa menghapus isi sebelumnya.

Pengertian Menambah Isi File

Menambah isi file berarti menuliskan data baru ke dalam file yang sudah memiliki isi. Data lama tetap dipertahankan, sedangkan data baru ditambahkan pada bagian akhir file.

Dalam Python, proses ini dilakukan menggunakan mode "a" atau append.

with open(
    "catatan.txt",
    "a",
    encoding="utf-8"
) as file:

    file.write("\nData tambahan")

Mode Append "a"

Mode "a" memiliki dua perilaku:

  • Jika file sudah ada, data ditambahkan di akhir file.
  • Jika file belum ada, Python membuat file baru.
file = open("catatan.txt", "a")

file.write("\nBaris baru")

file.close()

Append dengan with open()

Penggunaan with open() lebih disarankan karena file akan ditutup secara otomatis.

with open(
    "catatan.txt",
    "a",
    encoding="utf-8"
) as file:

    file.write("\nBaris tambahan")

Menambah Satu Baris

Gunakan karakter \n sebelum teks agar data tambahan ditulis pada baris baru.

with open(
    "catatan.txt",
    "a",
    encoding="utf-8"
) as file:

    file.write("\nBelajar file teks")
Tanpa \n, teks baru dapat menyatu dengan isi baris terakhir.

Menambah Banyak Baris

with open(
    "catatan.txt",
    "a",
    encoding="utf-8"
) as file:

    file.write("\nBaris pertama")
    file.write("\nBaris kedua")
    file.write("\nBaris ketiga")

Menambah Data dari List

Data dalam list dapat ditambahkan ke file menggunakan perulangan.

data_baru = [
    "Andi",
    "Budi",
    "Citra"
]

with open(
    "nama.txt",
    "a",
    encoding="utf-8"
) as file:

    for nama in data_baru:
        file.write(nama + "\n")

Menggunakan writelines()

Method writelines() dapat menambahkan beberapa baris sekaligus. Setiap data harus memiliki karakter newline.

data_baru = [
    "Andi\n",
    "Budi\n",
    "Citra\n"
]

with open(
    "nama.txt",
    "a",
    encoding="utf-8"
) as file:

    file.writelines(data_baru)

Menambah Isi dari Input Pengguna

catatan = input(
    "Masukkan catatan baru: "
)

with open(
    "catatan.txt",
    "a",
    encoding="utf-8"
) as file:

    file.write(catatan + "\n")

print("Catatan berhasil ditambahkan.")

Menambah Data Record

Data record dapat ditambahkan dengan format tertentu. Tanda titik koma digunakan sebagai pemisah antarfield.

mahasiswa_baru = {
    "nim": "2026004",
    "nama": "Dewi",
    "nilai": 88
}

with open(
    "mahasiswa.txt",
    "a",
    encoding="utf-8"
) as file:

    file.write(
        f"{mahasiswa_baru['nim']};"
        f"{mahasiswa_baru['nama']};"
        f"{mahasiswa_baru['nilai']}\n"
    )

Menambah Banyak Record

data_baru = [

    {
        "nim": "2026004",
        "nama": "Dewi",
        "nilai": 88
    },

    {
        "nim": "2026005",
        "nama": "Eko",
        "nilai": 79
    }

]

with open(
    "mahasiswa.txt",
    "a",
    encoding="utf-8"
) as file:

    for data in data_baru:

        file.write(
            f"{data['nim']};"
            f"{data['nama']};"
            f"{data['nilai']}\n"
        )

Menambah Data ke File CSV

Module csv dapat digunakan untuk menambahkan record baru ke file CSV.

import csv

data_baru = [
    ["2026004", "Dewi", 88],
    ["2026005", "Eko", 79]
]

with open(
    "mahasiswa.csv",
    "a",
    newline="",
    encoding="utf-8"
) as file:

    writer = csv.writer(file)
    writer.writerows(data_baru)

Validasi Sebelum Menambah Data

Validasi diperlukan agar data kosong atau tidak sesuai format tidak dimasukkan ke file.

nama = input("Nama: ").strip()
nilai = input("Nilai: ").strip()

if nama == "" or nilai == "":
    print("Data tidak boleh kosong")
else:

    with open(
        "nilai.txt",
        "a",
        encoding="utf-8"
    ) as file:

        file.write(
            f"{nama};{nilai}\n"
        )

    print("Data berhasil ditambahkan.")

Mencegah Data Duplikat

Program dapat membaca isi file terlebih dahulu untuk memeriksa apakah data yang sama sudah tersedia.

nama_baru = input(
    "Masukkan nama: "
).strip()

try:

    with open(
        "nama.txt",
        "r",
        encoding="utf-8"
    ) as file:

        daftar_nama = [
            baris.strip()
            for baris in file
        ]

except FileNotFoundError:

    daftar_nama = []

if nama_baru in daftar_nama:

    print("Nama sudah tersedia.")

else:

    with open(
        "nama.txt",
        "a",
        encoding="utf-8"
    ) as file:

        file.write(nama_baru + "\n")

    print("Nama berhasil ditambahkan.")

Studi Kasus Menambah Data Mahasiswa

Program berikut menerima data mahasiswa, memvalidasi input, kemudian menambahkannya ke file teks.

nim = input("Masukkan NIM: ").strip()
nama = input("Masukkan nama: ").strip()
nilai = input("Masukkan nilai: ").strip()

if nim == "" or nama == "" or nilai == "":
    print("Semua data harus diisi.")

else:

    try:
        nilai = float(nilai)

        if nilai < 0 or nilai > 100:
            print("Nilai harus berada antara 0 dan 100.")

        else:

            with open(
                "mahasiswa.txt",
                "a",
                encoding="utf-8"
            ) as file:

                file.write(
                    f"{nim};{nama};{nilai}\n"
                )

            print("Data berhasil ditambahkan.")

    except ValueError:

        print("Nilai harus berupa angka.")

Perbandingan Mode "w" dan "a"

Mode Perilaku Kapan Digunakan
"w" Menghapus isi lama dan menulis dari awal. Membuat ulang isi file.
"a" Menulis di bagian akhir file. Menambah data baru.
"x" Membuat file baru dan gagal jika file ada. Mencegah file lama tertimpa.

Kesalahan Umum

1. Lupa Menambahkan \n
with open("data.txt", "a") as file:
    file.write("Andi")
    file.write("Budi")
Data akan menyatu dalam satu baris. Gunakan \n setelah setiap data.
2. Salah Menggunakan Mode "w"

Mode "w" menghapus isi lama. Untuk menambah data gunakan mode "a".

3. Menambah Data Tanpa Validasi

Data kosong, duplikat, atau tidak sesuai format dapat membuat isi file sulit diolah.

Latihan

  1. Buat file catatan.txt yang berisi beberapa catatan awal.
  2. Tambahkan catatan baru menggunakan mode "a".
  3. Buat program untuk menambahkan nama dari input pengguna.
  4. Tambahkan beberapa record mahasiswa ke file mahasiswa.txt.
  5. Validasi agar nilai mahasiswa berada pada rentang 0 sampai 100.
  6. Cegah penambahan data mahasiswa dengan NIM yang sama.
Kesimpulan

Menambah isi file teks dilakukan menggunakan mode "a". Mode ini mempertahankan isi lama dan menuliskan data baru di bagian akhir file. Gunakan with open(), karakter \n, validasi input, dan pemeriksaan duplikasi agar proses penambahan data berjalan dengan baik.

Pertemuan 13

Membaca File Teks

Membaca file teks adalah proses mengambil data yang tersimpan di dalam file agar dapat ditampilkan atau diolah oleh program.

Pengertian Membaca File Teks

Membaca file teks dilakukan dengan membuka file menggunakan mode "r". Mode ini digunakan untuk mengambil isi file tanpa mengubah data di dalamnya.

file = open("catatan.txt", "r")

isi = file.read()

print(isi)

file.close()

Membaca File dengan Mode "r"

Mode "r" digunakan untuk membaca file. File harus sudah tersedia sebelum dibuka.

file = open("data.txt", "r")

print(file.read())

file.close()
Jika file tidak tersedia, Python akan menghasilkan FileNotFoundError.

Membaca dengan with open()

Penggunaan with open() lebih disarankan karena file akan ditutup secara otomatis setelah selesai dibaca.

with open(
    "catatan.txt",
    "r",
    encoding="utf-8"
) as file:

    isi = file.read()

print(isi)

Method read()

Method read() membaca seluruh isi file dan mengembalikannya dalam bentuk string.

with open(
    "catatan.txt",
    "r",
    encoding="utf-8"
) as file:

    isi = file.read()

print(isi)

Membaca Sejumlah Karakter

Method read(jumlah) digunakan untuk membaca sejumlah karakter tertentu.

with open(
    "catatan.txt",
    "r",
    encoding="utf-8"
) as file:

    bagian = file.read(10)

print(bagian)
Contoh tersebut hanya membaca 10 karakter pertama dari file.

Method readline()

Method readline() digunakan untuk membaca satu baris file.

with open(
    "mahasiswa.txt",
    "r",
    encoding="utf-8"
) as file:

    baris_pertama = file.readline()

print(baris_pertama)

Membaca Baris Satu per Satu

with open(
    "mahasiswa.txt",
    "r",
    encoding="utf-8"
) as file:

    baris = file.readline()

    while baris:

        print(baris.strip())

        baris = file.readline()

Method readlines()

Method readlines() membaca seluruh baris dan menyimpannya sebagai list.

with open(
    "mahasiswa.txt",
    "r",
    encoding="utf-8"
) as file:

    daftar_baris = file.readlines()

print(daftar_baris)

Membaca File dengan Perulangan

File dapat dibaca baris demi baris menggunakan perulangan for.

with open(
    "nama.txt",
    "r",
    encoding="utf-8"
) as file:

    for baris in file:
        print(baris.strip())
Cara ini lebih efisien karena program tidak harus memuat seluruh isi file sekaligus ke memori.

Membersihkan Isi Baris dengan strip()

Saat membaca file, setiap baris biasanya memiliki karakter newline \n. Method strip() digunakan untuk menghapusnya.

with open(
    "nama.txt",
    "r",
    encoding="utf-8"
) as file:

    for baris in file:

        nama = baris.strip()

        print("Nama:", nama)

Memisahkan Data dengan split()

Method split() digunakan untuk memisahkan data berdasarkan karakter pemisah tertentu.

data = "2026001;Andi;85"

nim, nama, nilai = data.split(";")

print("NIM  :", nim)
print("Nama :", nama)
print("Nilai:", nilai)

Membaca Record dari File Teks

Data record yang disimpan menggunakan tanda pemisah dapat dibaca dan diubah kembali menjadi dictionary.

mahasiswa = []

with open(
    "mahasiswa.txt",
    "r",
    encoding="utf-8"
) as file:

    for baris in file:

        nim, nama, nilai = baris.strip().split(";")

        record = {
            "nim": nim,
            "nama": nama,
            "nilai": float(nilai)
        }

        mahasiswa.append(record)

for data in mahasiswa:
    print(data)

Membaca File CSV

File CSV dapat dibaca menggunakan module csv.

import csv

with open(
    "mahasiswa.csv",
    "r",
    encoding="utf-8"
) as file:

    reader = csv.reader(file)

    for baris in reader:
        print(baris)

Membaca CSV sebagai Dictionary

DictReader membaca setiap baris CSV sebagai dictionary berdasarkan nama kolom.

import csv

with open(
    "mahasiswa.csv",
    "r",
    encoding="utf-8"
) as file:

    reader = csv.DictReader(file)

    for data in reader:

        print("NIM  :", data["nim"])
        print("Nama :", data["nama"])
        print("Nilai:", data["nilai"])

Menangani Error saat Membaca File

Gunakan try-except untuk menangani kondisi ketika file tidak ditemukan.

try:

    with open(
        "data.txt",
        "r",
        encoding="utf-8"
    ) as file:

        isi = file.read()
        print(isi)

except FileNotFoundError:

    print("File tidak ditemukan.")

except PermissionError:

    print("Tidak memiliki izin membaca file.")

Studi Kasus Membaca Data Nilai

File mahasiswa.txt memiliki format:

2026001;Andi;85
2026002;Budi;65
2026003;Citra;90

Program berikut membaca file, mengubah setiap baris menjadi record, dan menentukan status kelulusan.

try:

    with open(
        "mahasiswa.txt",
        "r",
        encoding="utf-8"
    ) as file:

        for baris in file:

            nim, nama, nilai = (
                baris.strip().split(";")
            )

            nilai = float(nilai)

            if nilai >= 70:
                status = "Lulus"
            else:
                status = "Tidak Lulus"

            print("NIM   :", nim)
            print("Nama  :", nama)
            print("Nilai :", nilai)
            print("Status:", status)
            print()

except FileNotFoundError:

    print("File mahasiswa.txt tidak ditemukan.")

Ringkasan Membaca File Teks

Method Kegunaan Contoh
read() Membaca seluruh isi file. file.read()
read(jumlah) Membaca sejumlah karakter. file.read(10)
readline() Membaca satu baris. file.readline()
readlines() Membaca seluruh baris sebagai list. file.readlines()
strip() Menghapus spasi dan newline. baris.strip()
split() Memisahkan data berdasarkan delimiter. baris.split(";")
csv.reader Membaca file CSV. csv.reader(file)
csv.DictReader Membaca CSV sebagai dictionary. csv.DictReader(file)

Kesalahan Umum

1. File Tidak Ditemukan

Pastikan nama dan lokasi file sudah benar. Gunakan try-except untuk menangani FileNotFoundError.

2. Lupa Menggunakan strip()

Baris yang dibaca dapat memiliki karakter newline. Gunakan strip() sebelum mengolah data.

3. Jumlah Data Tidak Sesuai
data = "2026001;Andi"

nim, nama, nilai = data.split(";")
Kode tersebut error karena data hanya memiliki dua bagian, sedangkan program mengharapkan tiga bagian.

Latihan

  1. Buat file catatan.txt yang berisi minimal lima baris.
  2. Baca seluruh file menggunakan read().
  3. Baca file baris demi baris menggunakan perulangan.
  4. Buat file mahasiswa dengan format nim;nama;nilai.
  5. Baca file tersebut dan ubah setiap baris menjadi dictionary.
  6. Tampilkan mahasiswa yang memiliki nilai minimal 70.
Kesimpulan

File teks dapat dibaca menggunakan mode "r". Method read() digunakan untuk membaca seluruh isi, readline() untuk satu baris, dan readlines() untuk membaca semua baris sebagai list. Data yang dibaca dapat dibersihkan dengan strip() dan dipisahkan dengan split() sebelum diolah lebih lanjut.

Pertemuan 14

File Bertipe

File bertipe adalah file yang menyimpan data berdasarkan jenis atau format tertentu. Setiap tipe file memiliki cara pengolahan yang berbeda.

Pengertian File Bertipe

File bertipe adalah file yang memiliki format penyimpanan data tertentu. Format tersebut menentukan bagaimana data disimpan, dibaca, dan diolah oleh program.

Contoh file bertipe antara lain file teks, file CSV, file JSON, dan file biner.

Tipe File Ekstensi Karakteristik
File teks .txt Berisi karakter yang dapat dibaca manusia.
File CSV .csv Berisi data tabel dengan pemisah tertentu.
File JSON .json Berisi data terstruktur.
File biner .bin Berisi data dalam bentuk byte.

File Teks

File teks menyimpan data dalam bentuk karakter. Isi file dapat dibuka dan dibaca langsung menggunakan text editor.

with open(
    "catatan.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Belajar file teks")
with open(
    "catatan.txt",
    "r",
    encoding="utf-8"
) as file:

    isi = file.read()

print(isi)

File CSV

CSV atau Comma-Separated Values digunakan untuk menyimpan data berbentuk tabel. Setiap baris mewakili record, sedangkan setiap kolom dipisahkan dengan delimiter.

nim,nama,nilai
2026001,Andi,85
2026002,Budi,75
2026003,Citra,90

Membuat file CSV menggunakan module csv:

import csv

data = [
    ["nim", "nama", "nilai"],
    ["2026001", "Andi", 85],
    ["2026002", "Budi", 75],
    ["2026003", "Citra", 90]
]

with open(
    "mahasiswa.csv",
    "w",
    newline="",
    encoding="utf-8"
) as file:

    writer = csv.writer(file)
    writer.writerows(data)

Membaca File CSV

import csv

with open(
    "mahasiswa.csv",
    "r",
    encoding="utf-8"
) as file:

    reader = csv.DictReader(file)

    for data in reader:

        print("NIM  :", data["nim"])
        print("Nama :", data["nama"])
        print("Nilai:", data["nilai"])
DictReader membaca setiap baris CSV sebagai dictionary berdasarkan nama kolom.

File JSON

JSON atau JavaScript Object Notation adalah format penyimpanan data terstruktur yang sering digunakan untuk pertukaran data.

{
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

Menyimpan dictionary ke file JSON:

import json

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

with open(
    "mahasiswa.json",
    "w",
    encoding="utf-8"
) as file:

    json.dump(
        mahasiswa,
        file,
        indent=4
    )

Membaca File JSON

import json

with open(
    "mahasiswa.json",
    "r",
    encoding="utf-8"
) as file:

    mahasiswa = json.load(file)

print("NIM  :", mahasiswa["nim"])
print("Nama :", mahasiswa["nama"])
print("Nilai:", mahasiswa["nilai"])

File JSON Berisi Banyak Record

import json

mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",
        "nilai": 85
    },

    {
        "nim": "2026002",
        "nama": "Budi",
        "nilai": 75
    }

]

with open(
    "mahasiswa.json",
    "w",
    encoding="utf-8"
) as file:

    json.dump(
        mahasiswa,
        file,
        indent=4
    )
with open(
    "mahasiswa.json",
    "r",
    encoding="utf-8"
) as file:

    data = json.load(file)

for mahasiswa in data:
    print(
        mahasiswa["nama"],
        mahasiswa["nilai"]
    )

File Biner

File biner menyimpan data dalam bentuk byte. Isi file biner biasanya tidak dapat dibaca langsung oleh manusia.

Mode file biner ditulis dengan menambahkan karakter b, seperti "rb" untuk membaca dan "wb" untuk menulis.

data = b"Data dalam bentuk byte"

with open(
    "data.bin",
    "wb"
) as file:

    file.write(data)

Membaca File Biner

with open(
    "data.bin",
    "rb"
) as file:

    data = file.read()

print(data)
Hasil pembacaan file biner berupa objek bytes.

Menyimpan Data Python dengan pickle

Module pickle dapat digunakan untuk menyimpan objek Python ke dalam file biner.

import pickle

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",
    "nilai": 85
}

with open(
    "mahasiswa.dat",
    "wb"
) as file:

    pickle.dump(mahasiswa, file)

Membaca kembali objek dari file:

with open(
    "mahasiswa.dat",
    "rb"
) as file:

    data = pickle.load(file)

print(data)
Jangan membuka file pickle dari sumber yang tidak dipercaya karena proses pemuatan data dapat menjalankan kode berbahaya.

Perbandingan Tipe File

Tipe Kelebihan Kekurangan Contoh Penggunaan
TXT Sederhana dan mudah dibaca. Struktur data terbatas. Catatan dan log.
CSV Cocok untuk data tabel. Kurang sesuai untuk struktur bertingkat. Data mahasiswa dan laporan.
JSON Mendukung nested record. Ukuran dapat lebih besar. Konfigurasi dan API.
Biner Efisien untuk data byte. Tidak mudah dibaca manusia. Gambar, audio, dan objek Python.

Mode File Bertipe

Mode Keterangan
"r" Membaca file teks.
"w" Menulis file teks.
"a" Menambah isi file teks.
"rb" Membaca file biner.
"wb" Menulis file biner.
"ab" Menambah isi file biner.

Studi Kasus Penyimpanan Data Mahasiswa

JSON sesuai digunakan untuk menyimpan kumpulan nested record karena dapat mempertahankan struktur dictionary dan list.

import json

data_mahasiswa = [

    {
        "nim": "2026001",
        "nama": "Andi",

        "alamat": {
            "kota": "Bandung"
        },

        "nilai": {
            "algoritma": 85,
            "basis_data": 90
        }
    },

    {
        "nim": "2026002",
        "nama": "Budi",

        "alamat": {
            "kota": "Jakarta"
        },

        "nilai": {
            "algoritma": 75,
            "basis_data": 80
        }
    }

]

with open(
    "data_mahasiswa.json",
    "w",
    encoding="utf-8"
) as file:

    json.dump(
        data_mahasiswa,
        file,
        indent=4
    )

with open(
    "data_mahasiswa.json",
    "r",
    encoding="utf-8"
) as file:

    data = json.load(file)

for mahasiswa in data:

    print("Nama :", mahasiswa["nama"])
    print(
        "Kota :",
        mahasiswa["alamat"]["kota"]
    )
    print(
        "Algoritma:",
        mahasiswa["nilai"]["algoritma"]
    )
    print()

Kesalahan Umum

1. Salah Menggunakan Mode Teks dan Biner

File biner harus dibuka menggunakan mode seperti "rb" atau "wb". File teks biasanya menggunakan mode "r" atau "w".

2. Tidak Menggunakan Module yang Sesuai

Gunakan module csv untuk file CSV dan json untuk file JSON.

3. Membaca JSON sebagai Teks Biasa

JSON sebaiknya dibaca menggunakan json.load() agar langsung berubah menjadi dictionary atau list Python.

Latihan

  1. Buat file teks yang berisi daftar nama mahasiswa.
  2. Buat file CSV yang berisi NIM, nama, dan nilai mahasiswa.
  3. Baca file CSV menggunakan DictReader.
  4. Simpan nested record mahasiswa ke dalam file JSON.
  5. Baca kembali file JSON dan tampilkan datanya.
  6. Buat file biner sederhana yang menyimpan data byte.
Kesimpulan

File bertipe menyimpan data berdasarkan format tertentu. File teks cocok untuk data sederhana, CSV untuk data tabel, JSON untuk data terstruktur dan nested record, sedangkan file biner digunakan untuk menyimpan data dalam bentuk byte. Pemilihan tipe file harus disesuaikan dengan kebutuhan program.

Pertemuan 14

File Tidak Bertipe

File tidak bertipe adalah file yang tidak memiliki struktur data tetap. Isi file diproses sebagai sekumpulan byte tanpa interpretasi tipe data secara otomatis.

Pengertian File Tidak Bertipe

File tidak bertipe atau untyped file adalah file yang tidak menentukan jenis data secara langsung. Program hanya membaca dan menulis data sebagai kumpulan byte.

File seperti ini tidak memiliki aturan khusus mengenai apakah data yang disimpan berupa angka, teks, record, atau objek tertentu.

Contoh file tidak bertipe adalah file biner umum yang menyimpan data tanpa struktur record yang ditentukan secara otomatis.

Perbedaan File Bertipe dan Tidak Bertipe

Aspek File Bertipe File Tidak Bertipe
Struktur data Memiliki format tertentu. Tidak memiliki struktur tetap.
Interpretasi data Format membantu membaca data. Ditentukan sendiri oleh program.
Contoh CSV, JSON, dan file terstruktur. Data biner umum dan raw bytes.
Kemudahan pembacaan Lebih mudah dipahami. Memerlukan aturan pembacaan khusus.

Data dalam Bentuk Byte

Data pada file tidak bertipe biasanya diproses sebagai objek bytes. Setiap byte memiliki nilai antara 0 sampai 255.

data = bytes([65, 66, 67])

print(data)
Nilai byte tersebut merepresentasikan karakter tertentu berdasarkan encoding yang digunakan.

Menulis File Tidak Bertipe

File tidak bertipe dapat dibuat menggunakan mode "wb". Huruf b menunjukkan bahwa file dibuka dalam mode biner.

data = bytes([65, 66, 67, 68])

with open(
    "data.bin",
    "wb"
) as file:

    file.write(data)

Membaca File Tidak Bertipe

File biner dibaca menggunakan mode "rb" dan hasilnya berupa data byte.

with open(
    "data.bin",
    "rb"
) as file:

    data = file.read()

print(data)

Membaca Sebagian Data

Method read(jumlah) dapat digunakan untuk membaca sejumlah byte tertentu.

with open(
    "data.bin",
    "rb"
) as file:

    bagian = file.read(4)

print(bagian)

Menambah Data ke File Tidak Bertipe

Data byte baru dapat ditambahkan menggunakan mode "ab".

data_baru = bytes([69, 70])

with open(
    "data.bin",
    "ab"
) as file:

    file.write(data_baru)

Mengubah Teks Menjadi Byte

String dapat diubah menjadi byte menggunakan method encode().

teks = "Belajar Python"

data = teks.encode("utf-8")

with open(
    "pesan.bin",
    "wb"
) as file:

    file.write(data)

Mengubah Byte Menjadi Teks

Data byte dapat dikembalikan menjadi string menggunakan method decode().

with open(
    "pesan.bin",
    "rb"
) as file:

    data = file.read()

teks = data.decode("utf-8")

print(teks)

Posisi Pointer File

Saat file dibaca atau ditulis, Python memiliki pointer yang menunjukkan posisi data saat ini.

Method tell() digunakan untuk mengetahui posisi pointer, sedangkan seek() digunakan untuk memindahkannya.

with open(
    "data.bin",
    "rb"
) as file:

    print("Posisi awal:", file.tell())

    data = file.read(3)

    print("Data:", data)
    print("Posisi akhir:", file.tell())

Memindahkan Pointer dengan seek()

with open(
    "data.bin",
    "rb"
) as file:

    file.seek(2)

    data = file.read(3)

print(data)
Contoh tersebut melewati dua byte pertama, kemudian membaca tiga byte berikutnya.

Mengetahui Ukuran File

Ukuran file dapat diketahui menggunakan module os.

import os

ukuran = os.path.getsize("data.bin")

print("Ukuran file:", ukuran, "byte")

Menyalin File Tidak Bertipe

File biner dapat disalin dengan membaca data byte kemudian menulisnya ke file tujuan.

with open(
    "sumber.bin",
    "rb"
) as sumber:

    data = sumber.read()

with open(
    "salinan.bin",
    "wb"
) as tujuan:

    tujuan.write(data)

print("File berhasil disalin.")

Membaca File Secara Bertahap

File berukuran besar sebaiknya dibaca secara bertahap atau menggunakan chunk agar tidak memenuhi memori.

ukuran_chunk = 1024

with open(
    "data.bin",
    "rb"
) as sumber:

    while True:

        bagian = sumber.read(ukuran_chunk)

        if not bagian:
            break

        print(
            "Membaca",
            len(bagian),
            "byte"
        )

File Objek dengan pickle

Module pickle dapat menyimpan objek Python seperti dictionary dan list ke file biner.

import pickle

data = {
    "nama": "Andi",
    "nilai": [85, 90, 88]
}

with open(
    "data.dat",
    "wb"
) as file:

    pickle.dump(data, file)
with open(
    "data.dat",
    "rb"
) as file:

    data = pickle.load(file)

print(data)
Jangan memuat file pickle dari sumber yang tidak dipercaya.

Studi Kasus Menyalin File Biner

Program berikut menyalin file biner secara bertahap agar penggunaan memori lebih efisien.

ukuran_chunk = 4096

with open(
    "file_asli.bin",
    "rb"
) as sumber:

    with open(
        "file_salinan.bin",
        "wb"
    ) as tujuan:

        while True:

            data = sumber.read(ukuran_chunk)

            if not data:
                break

            tujuan.write(data)

print("Penyalinan selesai.")

Ringkasan File Tidak Bertipe

Operasi Mode atau Method Kegunaan
Membaca "rb" Membuka file biner untuk dibaca.
Menulis "wb" Membuat atau menimpa file biner.
Menambah "ab" Menambahkan byte ke akhir file.
Membaca byte read() Mengambil data byte.
Posisi pointer tell() Mengetahui posisi pointer.
Memindahkan pointer seek() Berpindah ke posisi tertentu.
Encoding encode() Mengubah string menjadi byte.
Decoding decode() Mengubah byte menjadi string.

Kesalahan Umum

1. Membuka File Biner sebagai File Teks

File biner sebaiknya dibuka menggunakan mode "rb" atau "wb", bukan mode teks biasa.

2. Menulis String Langsung ke File Biner
with open("data.bin", "wb") as file:
    file.write("Data")
Ubah string menjadi byte menggunakan encode().
file.write("Data".encode("utf-8"))
3. Menggunakan pickle dari Sumber Tidak Dikenal

File pickle dapat menjalankan kode saat dimuat. Gunakan hanya file dari sumber yang dipercaya.

Latihan

  1. Buat file biner yang berisi beberapa byte.
  2. Baca isi file biner dan tampilkan hasilnya.
  3. Tambahkan byte baru menggunakan mode "ab".
  4. Ubah string menjadi byte menggunakan encode().
  5. Ubah kembali byte menjadi string menggunakan decode().
  6. Buat program untuk menyalin file biner secara bertahap menggunakan chunk.
Kesimpulan

File tidak bertipe menyimpan data tanpa struktur tipe tertentu. Data biasanya diproses sebagai byte menggunakan mode "rb", "wb", dan "ab". Program bertanggung jawab menentukan cara membaca dan menafsirkan data tersebut.

Pertemuan 14

Operasi File

Operasi file adalah berbagai proses untuk mengelola file, seperti membuka, membaca, menulis, menambah, memindahkan, mengganti nama, dan menghapus file.

Pengertian Operasi File

Operasi file digunakan agar program dapat berinteraksi dengan data yang tersimpan di media penyimpanan.

Operasi file umumnya dilakukan dengan bantuan module os, shutil, dan fungsi bawaan open().

Operasi Kegunaan
Membuat file Menghasilkan file baru.
Membaca file Mengambil isi file.
Menulis file Menyimpan data ke dalam file.
Menambah isi file Menambahkan data tanpa menghapus isi lama.
Mengganti nama Mengubah nama file.
Menyalin file Membuat salinan file.
Memindahkan file Memindahkan file ke folder lain.
Menghapus file Menghapus file dari penyimpanan.

Membuka dan Menutup File

File dibuka dengan fungsi open() dan ditutup menggunakan close().

file = open(
    "data.txt",
    "r",
    encoding="utf-8"
)

isi = file.read()

print(isi)

file.close()
Gunakan with open() agar file ditutup secara otomatis.

Operasi File dengan with open()

with open(
    "data.txt",
    "r",
    encoding="utf-8"
) as file:

    isi = file.read()

print(isi)

Setelah blok with selesai, file akan ditutup secara otomatis.

Membuat File

File dapat dibuat menggunakan mode "w" atau "x".

with open(
    "catatan.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Catatan pertama")
try:

    with open(
        "file_baru.txt",
        "x",
        encoding="utf-8"
    ) as file:

        file.write("File baru")

except FileExistsError:

    print("File sudah tersedia.")

Membaca File

with open(
    "catatan.txt",
    "r",
    encoding="utf-8"
) as file:

    isi = file.read()

print(isi)

File juga dapat dibaca baris demi baris.

with open(
    "catatan.txt",
    "r",
    encoding="utf-8"
) as file:

    for baris in file:
        print(baris.strip())

Menulis dan Menimpa Isi File

Mode "w" digunakan untuk menulis data baru. Isi lama akan terhapus jika file sudah tersedia.

with open(
    "catatan.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Isi file yang baru")

Menambah Isi File

Mode "a" digunakan untuk menambahkan data di akhir file tanpa menghapus isi sebelumnya.

with open(
    "catatan.txt",
    "a",
    encoding="utf-8"
) as file:

    file.write("\nIsi tambahan")

Memeriksa Keberadaan File

Module os menyediakan fungsi path.exists() untuk memeriksa apakah file tersedia.

import os

nama_file = "catatan.txt"

if os.path.exists(nama_file):
    print("File tersedia")
else:
    print("File tidak tersedia")

Mengetahui Ukuran File

Fungsi os.path.getsize() digunakan untuk mengetahui ukuran file dalam satuan byte.

import os

ukuran = os.path.getsize("catatan.txt")

print("Ukuran file:", ukuran, "byte")

Mendapatkan Informasi File

import os

nama_file = "catatan.txt"

print("Nama file :", os.path.basename(nama_file))
print("Folder    :", os.path.dirname(nama_file))
print("Ukuran    :", os.path.getsize(nama_file))
print("Absolute  :", os.path.abspath(nama_file))

Mengganti Nama File

Fungsi os.rename() digunakan untuk mengganti nama file.

import os

os.rename(
    "catatan.txt",
    "catatan_lama.txt"
)

print("Nama file berhasil diubah.")
Pastikan file dengan nama lama tersedia sebelum mengganti namanya.

Menghapus File

Fungsi os.remove() digunakan untuk menghapus file.

import os

nama_file = "catatan_lama.txt"

if os.path.exists(nama_file):

    os.remove(nama_file)

    print("File berhasil dihapus.")

else:

    print("File tidak ditemukan.")
File yang dihapus menggunakan os.remove() tidak dapat dipulihkan melalui program.

Menyalin File

Module shutil menyediakan fungsi copy() untuk menyalin file.

import shutil

shutil.copy(
    "data.txt",
    "data_salinan.txt"
)

print("File berhasil disalin.")

Memindahkan File

Fungsi shutil.move() digunakan untuk memindahkan file ke lokasi lain.

import shutil

shutil.move(
    "data.txt",
    "arsip/data.txt"
)

print("File berhasil dipindahkan.")
Folder tujuan harus sudah tersedia sebelum file dipindahkan.

Membuat Folder

Fungsi os.mkdir() digunakan untuk membuat satu folder baru.

import os

if not os.path.exists("arsip"):
    os.mkdir("arsip")

print("Folder tersedia.")

Untuk membuat folder beserta folder induknya, gunakan os.makedirs().

import os

os.makedirs(
    "data/mahasiswa",
    exist_ok=True
)

Menampilkan Isi Folder

Fungsi os.listdir() digunakan untuk menampilkan daftar file dan folder dalam suatu lokasi.

import os

isi_folder = os.listdir(".")

for nama in isi_folder:
    print(nama)

Menyaring File Berdasarkan Ekstensi

import os

for nama in os.listdir("."):

    if nama.endswith(".txt"):
        print(nama)

Operasi File dengan pathlib

Module pathlib menyediakan cara yang lebih modern dan mudah dibaca untuk mengelola path file.

from pathlib import Path

file = Path("catatan.txt")

if file.exists():
    print("File tersedia")

print("Nama:", file.name)
print("Suffix:", file.suffix)
print("Ukuran:", file.stat().st_size)

Membaca dan menulis file menggunakan pathlib:

from pathlib import Path

file = Path("catatan.txt")

file.write_text(
    "Belajar pathlib",
    encoding="utf-8"
)

isi = file.read_text(
    encoding="utf-8"
)

print(isi)

Penanganan Error Operasi File

import os

try:

    os.remove("data.txt")
    print("File berhasil dihapus.")

except FileNotFoundError:

    print("File tidak ditemukan.")

except PermissionError:

    print("Tidak memiliki izin.")

except OSError as error:

    print("Terjadi error:", error)

Studi Kasus Manajemen File

Program berikut membuat folder arsip, membuat file, menyalin file, lalu menampilkan daftar file dalam folder.

import os
import shutil

folder = "arsip"

if not os.path.exists(folder):
    os.mkdir(folder)

with open(
    "data_mahasiswa.txt",
    "w",
    encoding="utf-8"
) as file:

    file.write("Data mahasiswa")

tujuan = os.path.join(
    folder,
    "data_mahasiswa.txt"
)

shutil.copy(
    "data_mahasiswa.txt",
    tujuan
)

print("Isi folder arsip:")

for nama in os.listdir(folder):
    print(nama)

Ringkasan Operasi File

Fungsi Kegunaan
open() Membuka, membaca, atau menulis file.
os.path.exists() Memeriksa keberadaan file atau folder.
os.path.getsize() Mengambil ukuran file.
os.rename() Mengganti nama file.
os.remove() Menghapus file.
os.mkdir() Membuat folder.
os.listdir() Menampilkan isi folder.
shutil.copy() Menyalin file.
shutil.move() Memindahkan file.
Path.read_text() Membaca file menggunakan pathlib.

Kesalahan Umum

1. Menghapus File Tanpa Pemeriksaan

Selalu periksa keberadaan file menggunakan os.path.exists() sebelum menghapusnya.

2. Folder Tujuan Belum Tersedia

Buat folder tujuan terlebih dahulu menggunakan os.mkdir() atau os.makedirs().

3. Salah Menentukan Path

Gunakan os.path.join() atau pathlib.Path agar penulisan path lebih aman pada berbagai sistem operasi.

Latihan

  1. Buat file data.txt menggunakan Python.
  2. Periksa apakah file tersebut tersedia.
  3. Tampilkan ukuran file.
  4. Ubah nama file tersebut.
  5. Buat folder arsip.
  6. Salin file ke folder arsip.
  7. Hapus file salinan setelah proses selesai.
Kesimpulan

Operasi file memungkinkan program untuk mengelola file dan folder, mulai dari membuat, membaca, menulis, menambah, mengganti nama, menyalin, memindahkan, hingga menghapus file. Module os, shutil, dan pathlib membantu melakukan operasi tersebut secara lebih terstruktur.

Pertemuan 14

Studi Kasus Pengolahan File

Studi kasus ini membahas pengolahan data mahasiswa menggunakan file teks, mulai dari menambah data, membaca data, mencari data, mengubah data, dan menghapus data.

Deskripsi Studi Kasus

Buat sebuah program sederhana untuk mengelola data mahasiswa menggunakan file teks. Setiap data mahasiswa memiliki informasi berikut:

  • NIM
  • Nama
  • Program studi
  • Nilai

Data disimpan dalam file mahasiswa.txt dengan format:

2026001;Andi;Informatika;85
2026002;Budi;Sistem Informasi;75

Struktur Program

  1. Menampilkan menu utama.
  2. Menambahkan data mahasiswa.
  3. Menampilkan seluruh data mahasiswa.
  4. Mencari mahasiswa berdasarkan NIM.
  5. Mengubah data mahasiswa.
  6. Menghapus data mahasiswa.
  7. Menyimpan perubahan ke file teks.

Fungsi Membaca Data

def baca_data():

    try:

        with open(
            "mahasiswa.txt",
            "r",
            encoding="utf-8"
        ) as file:

            data_mahasiswa = []

            for baris in file:

                baris = baris.strip()

                if baris == "":
                    continue

                nim, nama, prodi, nilai = (
                    baris.split(";")
                )

                data_mahasiswa.append({
                    "nim": nim,
                    "nama": nama,
                    "prodi": prodi,
                    "nilai": float(nilai)
                })

            return data_mahasiswa

    except FileNotFoundError:

        return []

Fungsi Menyimpan Data

def simpan_data(data_mahasiswa):

    with open(
        "mahasiswa.txt",
        "w",
        encoding="utf-8"
    ) as file:

        for data in data_mahasiswa:

            file.write(
                f"{data['nim']};"
                f"{data['nama']};"
                f"{data['prodi']};"
                f"{data['nilai']}\n"
            )
Mode "w" digunakan agar seluruh data terbaru ditulis ulang ke dalam file.

Fungsi Menambah Data

def tambah_data(data_mahasiswa):

    nim = input("NIM       : ").strip()
    nama = input("Nama      : ").strip()
    prodi = input("Program Studi: ").strip()
    nilai = input("Nilai     : ").strip()

    if nim == "" or nama == "" or prodi == "":
        print("Data tidak boleh kosong.")
        return

    try:

        nilai = float(nilai)

        if nilai < 0 or nilai > 100:
            print("Nilai harus antara 0 sampai 100.")
            return

    except ValueError:

        print("Nilai harus berupa angka.")
        return

    for data in data_mahasiswa:

        if data["nim"] == nim:
            print("NIM sudah terdaftar.")
            return

    data_mahasiswa.append({
        "nim": nim,
        "nama": nama,
        "prodi": prodi,
        "nilai": nilai
    })

    simpan_data(data_mahasiswa)

    print("Data berhasil ditambahkan.")

Fungsi Menampilkan Data

def tampilkan_data(data_mahasiswa):

    if len(data_mahasiswa) == 0:

        print("Belum ada data mahasiswa.")
        return

    print("\nDaftar Mahasiswa")
    print("-" * 60)

    for nomor, data in enumerate(
        data_mahasiswa,
        start=1
    ):

        print(f"Data ke-{nomor}")
        print("NIM   :", data["nim"])
        print("Nama  :", data["nama"])
        print("Prodi :", data["prodi"])
        print("Nilai :", data["nilai"])

        if data["nilai"] >= 70:
            status = "Lulus"
        else:
            status = "Tidak Lulus"

        print("Status:", status)
        print("-" * 60)

Fungsi Mencari Data

def cari_data(data_mahasiswa):

    nim_dicari = input(
        "Masukkan NIM yang dicari: "
    ).strip()

    ditemukan = False

    for data in data_mahasiswa:

        if data["nim"] == nim_dicari:

            print("\nData ditemukan")
            print("NIM   :", data["nim"])
            print("Nama  :", data["nama"])
            print("Prodi :", data["prodi"])
            print("Nilai :", data["nilai"])

            ditemukan = True
            break

    if not ditemukan:
        print("Data tidak ditemukan.")

Fungsi Mengubah Data

def ubah_data(data_mahasiswa):

    nim_dicari = input(
        "Masukkan NIM yang akan diubah: "
    ).strip()

    for data in data_mahasiswa:

        if data["nim"] == nim_dicari:

            nama_baru = input(
                "Nama baru: "
            ).strip()

            prodi_baru = input(
                "Program studi baru: "
            ).strip()

            nilai_baru = input(
                "Nilai baru: "
            ).strip()

            try:

                nilai_baru = float(nilai_baru)

                if nilai_baru < 0 or nilai_baru > 100:
                    print("Nilai tidak valid.")
                    return

            except ValueError:

                print("Nilai harus berupa angka.")
                return

            data["nama"] = nama_baru
            data["prodi"] = prodi_baru
            data["nilai"] = nilai_baru

            simpan_data(data_mahasiswa)

            print("Data berhasil diubah.")
            return

    print("Data tidak ditemukan.")

Fungsi Menghapus Data

def hapus_data(data_mahasiswa):

    nim_dicari = input(
        "Masukkan NIM yang akan dihapus: "
    ).strip()

    for data in data_mahasiswa:

        if data["nim"] == nim_dicari:

            data_mahasiswa.remove(data)

            simpan_data(data_mahasiswa)

            print("Data berhasil dihapus.")
            return

    print("Data tidak ditemukan.")

Fungsi Menghitung Statistik

def statistik_data(data_mahasiswa):

    if len(data_mahasiswa) == 0:

        print("Belum ada data.")
        return

    daftar_nilai = [
        data["nilai"]
        for data in data_mahasiswa
    ]

    total = sum(daftar_nilai)
    rata_rata = total / len(daftar_nilai)
    nilai_tertinggi = max(daftar_nilai)
    nilai_terendah = min(daftar_nilai)

    jumlah_lulus = sum(
        1
        for nilai in daftar_nilai
        if nilai >= 70
    )

    jumlah_tidak_lulus = (
        len(daftar_nilai) - jumlah_lulus
    )

    print("Total nilai       :", total)
    print("Rata-rata         :", rata_rata)
    print("Nilai tertinggi   :", nilai_tertinggi)
    print("Nilai terendah    :", nilai_terendah)
    print("Jumlah lulus      :", jumlah_lulus)
    print("Jumlah tidak lulus:", jumlah_tidak_lulus)

Program Utama dan Menu

def tampilkan_menu():

    print("\n=== MENU DATA MAHASISWA ===")
    print("1. Tambah data")
    print("2. Tampilkan data")
    print("3. Cari data")
    print("4. Ubah data")
    print("5. Hapus data")
    print("6. Statistik data")
    print("7. Keluar")


data_mahasiswa = baca_data()

while True:

    tampilkan_menu()

    pilihan = input(
        "Pilih menu: "
    ).strip()

    if pilihan == "1":

        tambah_data(data_mahasiswa)

    elif pilihan == "2":

        tampilkan_data(data_mahasiswa)

    elif pilihan == "3":

        cari_data(data_mahasiswa)

    elif pilihan == "4":

        ubah_data(data_mahasiswa)

    elif pilihan == "5":

        hapus_data(data_mahasiswa)

    elif pilihan == "6":

        statistik_data(data_mahasiswa)

    elif pilihan == "7":

        print("Program selesai.")
        break

    else:

        print("Pilihan tidak tersedia.")

Program Lengkap

FILE_NAME = "mahasiswa.txt"


def baca_data():

    data_mahasiswa = []

    try:

        with open(
            FILE_NAME,
            "r",
            encoding="utf-8"
        ) as file:

            for baris in file:

                baris = baris.strip()

                if baris == "":
                    continue

                bagian = baris.split(";")

                if len(bagian) != 4:
                    continue

                nim, nama, prodi, nilai = bagian

                data_mahasiswa.append({
                    "nim": nim,
                    "nama": nama,
                    "prodi": prodi,
                    "nilai": float(nilai)
                })

    except FileNotFoundError:

        pass

    return data_mahasiswa


def simpan_data(data_mahasiswa):

    with open(
        FILE_NAME,
        "w",
        encoding="utf-8"
    ) as file:

        for data in data_mahasiswa:

            file.write(
                f"{data['nim']};"
                f"{data['nama']};"
                f"{data['prodi']};"
                f"{data['nilai']}\n"
            )


def tambah_data(data_mahasiswa):

    nim = input("NIM: ").strip()
    nama = input("Nama: ").strip()
    prodi = input("Prodi: ").strip()
    nilai = input("Nilai: ").strip()

    if not nim or not nama or not prodi:
        print("Data tidak boleh kosong.")
        return

    try:

        nilai = float(nilai)

        if not 0 <= nilai <= 100:
            print("Nilai harus antara 0 sampai 100.")
            return

    except ValueError:

        print("Nilai harus berupa angka.")
        return

    for data in data_mahasiswa:

        if data["nim"] == nim:
            print("NIM sudah digunakan.")
            return

    data_mahasiswa.append({
        "nim": nim,
        "nama": nama,
        "prodi": prodi,
        "nilai": nilai
    })

    simpan_data(data_mahasiswa)

    print("Data berhasil ditambahkan.")


def tampilkan_data(data_mahasiswa):

    if not data_mahasiswa:
        print("Data masih kosong.")
        return

    for data in data_mahasiswa:

        status = (
            "Lulus"
            if data["nilai"] >= 70
            else "Tidak Lulus"
        )

        print("-" * 40)
        print("NIM   :", data["nim"])
        print("Nama  :", data["nama"])
        print("Prodi :", data["prodi"])
        print("Nilai :", data["nilai"])
        print("Status:", status)


def cari_data(data_mahasiswa):

    nim = input("NIM yang dicari: ").strip()

    for data in data_mahasiswa:

        if data["nim"] == nim:
            print(data)
            return

    print("Data tidak ditemukan.")


def ubah_data(data_mahasiswa):

    nim = input("NIM yang diubah: ").strip()

    for data in data_mahasiswa:

        if data["nim"] == nim:

            data["nama"] = input(
                "Nama baru: "
            ).strip()

            data["prodi"] = input(
                "Prodi baru: "
            ).strip()

            try:

                nilai = float(input(
                    "Nilai baru: "
                ))

                if not 0 <= nilai <= 100:
                    print("Nilai tidak valid.")
                    return

                data["nilai"] = nilai

            except ValueError:

                print("Nilai harus berupa angka.")
                return

            simpan_data(data_mahasiswa)

            print("Data berhasil diubah.")
            return

    print("Data tidak ditemukan.")


def hapus_data(data_mahasiswa):

    nim = input("NIM yang dihapus: ").strip()

    for data in data_mahasiswa:

        if data["nim"] == nim:

            data_mahasiswa.remove(data)
            simpan_data(data_mahasiswa)

            print("Data berhasil dihapus.")
            return

    print("Data tidak ditemukan.")


def statistik_data(data_mahasiswa):

    if not data_mahasiswa:
        print("Data masih kosong.")
        return

    nilai = [
        data["nilai"]
        for data in data_mahasiswa
    ]

    print("Jumlah data :", len(nilai))
    print("Rata-rata   :", sum(nilai) / len(nilai))
    print("Tertinggi   :", max(nilai))
    print("Terendah    :", min(nilai))


data_mahasiswa = baca_data()

while True:

    print("\n=== DATA MAHASISWA ===")
    print("1. Tambah")
    print("2. Tampilkan")
    print("3. Cari")
    print("4. Ubah")
    print("5. Hapus")
    print("6. Statistik")
    print("7. Keluar")

    pilihan = input("Pilih: ").strip()

    if pilihan == "1":
        tambah_data(data_mahasiswa)

    elif pilihan == "2":
        tampilkan_data(data_mahasiswa)

    elif pilihan == "3":
        cari_data(data_mahasiswa)

    elif pilihan == "4":
        ubah_data(data_mahasiswa)

    elif pilihan == "5":
        hapus_data(data_mahasiswa)

    elif pilihan == "6":
        statistik_data(data_mahasiswa)

    elif pilihan == "7":
        print("Program selesai.")
        break

    else:
        print("Pilihan tidak valid.")

Contoh Isi File mahasiswa.txt

2026001;Andi;Informatika;85.0
2026002;Budi;Sistem Informasi;75.0
2026003;Citra;Teknik Komputer;90.0

Alur Pengolahan File

  1. Program membaca isi file saat pertama kali dijalankan.
  2. Isi file diubah menjadi list dictionary.
  3. Pengguna memilih operasi melalui menu.
  4. Data diproses di dalam memori.
  5. Data terbaru ditulis kembali ke file.
  6. Program berjalan sampai pengguna memilih menu keluar.

Kesalahan Umum

1. Format Data Tidak Konsisten

Setiap baris harus memiliki jumlah field yang sama agar proses split() dapat berjalan dengan benar.

2. NIM Duplikat

Sebelum menambahkan data, periksa apakah NIM sudah terdaftar.

3. Data Tidak Disimpan Kembali

Setelah proses tambah, ubah, atau hapus, panggil fungsi simpan_data() agar perubahan tersimpan ke file.

4. Nilai Bukan Angka

Gunakan try-except untuk menangani input nilai yang bukan angka.

Pengembangan Program

  1. Tambahkan field alamat mahasiswa.
  2. Tambahkan pencarian berdasarkan nama.
  3. Tambahkan fitur menampilkan mahasiswa yang lulus.
  4. Tambahkan fitur mengurutkan mahasiswa berdasarkan nilai.
  5. Tambahkan fitur ekspor data ke file CSV.
  6. Ubah penyimpanan data dari file teks menjadi file JSON.
Kesimpulan

Pengolahan file dapat diterapkan pada program nyata, seperti sistem pengelolaan data mahasiswa. Data dibaca dari file, diolah dalam bentuk list dan dictionary, kemudian disimpan kembali setelah mengalami perubahan. Dengan fungsi yang terpisah, program menjadi lebih terstruktur dan mudah dikembangkan.

Pertemuan 15

Penugasan Akhir

Penugasan akhir bertujuan menguji kemampuan mahasiswa dalam menerapkan konsep record, nested record, file teks, file bertipe, dan operasi file ke dalam sebuah program sederhana.

Deskripsi Penugasan

Buat sebuah aplikasi sederhana berbasis Python yang dapat digunakan untuk mengelola data. Aplikasi harus mampu menyimpan data secara permanen menggunakan file.

Setiap mahasiswa dapat memilih salah satu tema berikut:

  • Sistem pengelolaan data mahasiswa.
  • Sistem pengelolaan data barang.
  • Sistem pengelolaan data pelanggan.
  • Sistem pengelolaan data perpustakaan.
  • Sistem pengelolaan data transaksi.

Tujuan Pembelajaran

Setelah menyelesaikan tugas ini, mahasiswa diharapkan mampu:

  1. Membuat struktur data menggunakan record atau dictionary.
  2. Menggunakan nested record untuk menyimpan data bertingkat.
  3. Membaca dan menulis data ke dalam file.
  4. Menggunakan operasi tambah, baca, ubah, dan hapus data.
  5. Melakukan validasi input pengguna.
  6. Membuat program yang terstruktur menggunakan fungsi.

Ketentuan Umum

  1. Program dibuat menggunakan bahasa Python.
  2. Program harus memiliki menu utama.
  3. Data harus disimpan dalam file.
  4. Program harus dapat membaca data dari file saat dijalankan.
  5. Program harus menggunakan minimal satu nested record.
  6. Program harus menggunakan fungsi untuk memisahkan setiap proses.
  7. Program harus memiliki validasi input.
  8. Program tidak boleh berhenti karena error input yang tidak sesuai.

Fitur Wajib Program

No. Fitur Keterangan
1 Tambah data Menambahkan data baru ke dalam file.
2 Tampilkan data Menampilkan seluruh data.
3 Cari data Mencari data berdasarkan field tertentu.
4 Ubah data Mengubah data yang sudah tersedia.
5 Hapus data Menghapus data berdasarkan identitas.
6 Statistik Menampilkan hasil perhitungan data.
7 Keluar Menghentikan program dengan aman.

Contoh Struktur Data

Contoh nested record untuk data mahasiswa:

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",

    "identitas": {
        "tempat_lahir": "Bandung",
        "tanggal_lahir": "2005-05-10"
    },

    "akademik": {
        "program_studi": "Informatika",
        "semester": 2,
        "ipk": 3.75
    }
}

Format Penyimpanan File

Data dapat disimpan menggunakan file JSON agar struktur nested record tetap terjaga.

[
    {
        "nim": "2026001",
        "nama": "Andi",
        "identitas": {
            "tempat_lahir": "Bandung",
            "tanggal_lahir": "2005-05-10"
        },
        "akademik": {
            "program_studi": "Informatika",
            "semester": 2,
            "ipk": 3.75
        }
    }
]

Template Program

import json

NAMA_FILE = "data.json"


def baca_data():

    try:

        with open(
            NAMA_FILE,
            "r",
            encoding="utf-8"
        ) as file:

            return json.load(file)

    except FileNotFoundError:

        return []

    except json.JSONDecodeError:

        print("Format file tidak valid.")
        return []


def simpan_data(data):

    with open(
        NAMA_FILE,
        "w",
        encoding="utf-8"
    ) as file:

        json.dump(
            data,
            file,
            indent=4,
            ensure_ascii=False
        )


def tambah_data(data):

    record_baru = {
        "id": "001",
        "nama": "Contoh Data"
    }

    data.append(record_baru)
    simpan_data(data)

    print("Data berhasil ditambahkan.")


def tampilkan_data(data):

    if not data:

        print("Data masih kosong.")
        return

    for nomor, record in enumerate(
        data,
        start=1
    ):

        print(nomor, record)


def cari_data(data):

    kata_kunci = input(
        "Masukkan kata kunci: "
    ).lower()

    ditemukan = False

    for record in data:

        if kata_kunci in record["nama"].lower():

            print(record)
            ditemukan = True

    if not ditemukan:

        print("Data tidak ditemukan.")


def hapus_data(data):

    identitas = input(
        "Masukkan ID data: "
    )

    for record in data:

        if record["id"] == identitas:

            data.remove(record)
            simpan_data(data)

            print("Data berhasil dihapus.")
            return

    print("Data tidak ditemukan.")


def menu():

    print("\n=== MENU UTAMA ===")
    print("1. Tambah data")
    print("2. Tampilkan data")
    print("3. Cari data")
    print("4. Hapus data")
    print("5. Keluar")


data = baca_data()

while True:

    menu()

    pilihan = input(
        "Pilih menu: "
    )

    if pilihan == "1":

        tambah_data(data)

    elif pilihan == "2":

        tampilkan_data(data)

    elif pilihan == "3":

        cari_data(data)

    elif pilihan == "4":

        hapus_data(data)

    elif pilihan == "5":

        print("Program selesai.")
        break

    else:

        print("Pilihan tidak valid.")

Contoh Tema: Sistem Data Barang

Program dapat digunakan untuk mengelola data barang pada sebuah toko.

barang = {
    "kode": "BRG001",
    "nama": "Keyboard",

    "kategori": {
        "kode": "K01",
        "nama": "Peralatan Komputer"
    },

    "stok": {
        "jumlah": 25,
        "satuan": "unit"
    },

    "harga": {
        "beli": 150000,
        "jual": 200000
    }
}

Fitur tambahan yang dapat dibuat:

  • Menambah barang.
  • Mengubah harga barang.
  • Menambah atau mengurangi stok.
  • Mencari barang berdasarkan kode.
  • Menampilkan barang dengan stok minimum.
  • Menghitung nilai total persediaan.

Validasi yang Wajib Diterapkan

  • Field wajib tidak boleh kosong.
  • ID atau kode data tidak boleh duplikat.
  • Nilai numerik harus benar-benar berupa angka.
  • Nilai stok dan harga tidak boleh negatif.
  • Pilihan menu harus sesuai dengan pilihan yang tersedia.
  • File yang tidak tersedia harus ditangani dengan try-except.

Format Laporan

Struktur laporan penugasan:

  1. Halaman judul.
  2. Latar belakang.
  3. Rumusan masalah.
  4. Tujuan program.
  5. Analisis kebutuhan.
  6. Perancangan struktur data.
  7. Flowchart atau algoritma.
  8. Implementasi program.
  9. Pengujian program.
  10. Kesimpulan.
  11. Lampiran kode program dan tangkapan layar.

Skenario Pengujian

No. Skenario Hasil yang Diharapkan
1 Menambahkan data valid. Data tersimpan ke file.
2 Menambahkan ID duplikat. Program menolak data.
3 Memasukkan teks pada field angka. Program menampilkan pesan error.
4 Mencari data tersedia. Data ditampilkan.
5 Mencari data tidak tersedia. Pesan data tidak ditemukan.
6 Mengubah data. Perubahan tersimpan ke file.
7 Menghapus data. Data terhapus dari file.
8 Menjalankan program tanpa file. Program membuat data kosong tanpa error.

Rubrik Penilaian

Komponen Bobot
Struktur program dan fungsi 15%
Penggunaan record atau dictionary 15%
Penggunaan nested record 15%
Operasi file 20%
Validasi dan penanganan error 15%
Kelengkapan fitur 10%
Laporan dan presentasi 10%

Ketentuan Pengumpulan

File yang dikumpulkan terdiri dari:

  • Source code Python dengan ekstensi .py.
  • File data yang digunakan program.
  • Laporan dalam format PDF.
  • Tangkapan layar hasil program.
  • Video demonstrasi singkat, jika diminta.
Semua file sebaiknya dikumpulkan dalam satu folder dengan format nama:
Nama_NIM_PenugasanAkhir

Checklist Sebelum Mengumpulkan

Kesimpulan

Penugasan akhir merupakan penerapan seluruh materi yang telah dipelajari, mulai dari struktur data, nested record, fungsi, validasi, hingga operasi file. Program yang dibuat harus mampu mengelola data secara terstruktur dan menyimpan perubahan secara permanen.

Pertemuan 15

Kuis Pertemuan 15

Kuis ini menguji pemahaman tentang penugasan akhir, struktur data, nested record, operasi file, dan validasi program Python.

Petunjuk Pengerjaan

  1. Bacalah setiap soal dengan teliti.
  2. Pilih satu jawaban yang paling tepat.
  3. Terdapat 15 soal pilihan ganda.
  4. Setiap jawaban benar memiliki nilai yang sama.
  5. Klik tombol Periksa Jawaban setelah semua soal selesai.
Soal 1

Fungsi utama dari json.load(file) adalah ...

Soal 2

Mode file yang digunakan untuk menambahkan data ke akhir file adalah ...

Soal 3

Struktur data yang terdiri dari dictionary di dalam dictionary disebut ...

Soal 4

Method yang digunakan untuk menulis dictionary ke file JSON adalah ...

Soal 5

Fungsi os.path.exists() digunakan untuk ...

Soal 6

Fungsi yang digunakan untuk mengganti nama file adalah ...

Soal 7

Tujuan utama penggunaan fungsi adalah ...

Soal 8

Fungsi os.remove() digunakan untuk ...

Soal 9

Validasi nilai mahasiswa diperlukan agar ...

Soal 10

Exception yang digunakan ketika file tidak ditemukan adalah ...

Soal 11

Module yang digunakan untuk menyalin dan memindahkan file adalah ...

Soal 12

Cara yang tepat untuk mencegah ID data duplikat adalah ...

Soal 13

Method json.dump() digunakan untuk ...

Soal 14

Mengapa pengolahan file sebaiknya menggunakan fungsi yang terpisah?

Soal 15

Fitur utama yang wajib ada dalam aplikasi pengolahan data adalah ...

Hasil Kuis

Pembahasan Jawaban

  1. B. json.load(file) membaca data JSON dari file.
  2. C. Mode "a" digunakan untuk menambahkan data.
  3. B. Nested record adalah struktur data bertingkat.
  4. C. json.dump() menyimpan objek Python ke file JSON.
  5. B. os.path.exists() memeriksa keberadaan file atau folder.
  6. A. os.rename() mengganti nama file.
  7. A. Fungsi membuat program lebih terstruktur dan dapat digunakan kembali.
  8. B. os.remove() menghapus file.
  9. A. Validasi memastikan nilai berada pada rentang yang diperbolehkan.
  10. C. FileNotFoundError muncul saat file tidak ditemukan.
  11. B. Module shutil digunakan untuk menyalin dan memindahkan file.
  12. B. ID harus diperiksa sebelum data baru ditambahkan.
  13. A. json.dump() menulis objek Python ke file JSON.
  14. A. Fungsi terpisah membuat program lebih mudah dirawat dan dikembangkan.
  15. A. Aplikasi pengolahan data minimal menyediakan operasi CRUD.
Pertemuan 16

Project Akhir

Project akhir merupakan tugas penerapan seluruh materi Pemrograman Dasar dalam bentuk aplikasi sederhana berbasis Python.

Deskripsi Project

Buat sebuah aplikasi pengolahan data yang dapat menyimpan, membaca, menambah, mencari, mengubah, dan menghapus data.

Project harus menggunakan konsep:

  • Variabel dan tipe data.
  • Percabangan dan perulangan.
  • Fungsi.
  • List dan dictionary.
  • Nested record.
  • Pengolahan file.
  • Validasi dan penanganan error.

Pilihan Tema Project

Sistem Akademik

Mengelola data mahasiswa, mata kuliah, nilai, dan status kelulusan.

Sistem Inventaris

Mengelola data barang, stok, kategori, harga, dan transaksi.

Sistem Perpustakaan

Mengelola data buku, anggota, peminjaman, dan pengembalian.

Fitur Wajib

No. Fitur Keterangan
1 Tambah data Menambahkan data baru.
2 Tampilkan data Menampilkan seluruh data.
3 Cari data Mencari data berdasarkan kode atau ID.
4 Ubah data Mengubah data yang sudah tersedia.
5 Hapus data Menghapus data tertentu.
6 Laporan Menampilkan ringkasan atau statistik data.
7 Penyimpanan file Data tersimpan secara permanen.

Contoh Struktur Data

Contoh struktur data untuk sistem akademik:

mahasiswa = {
    "nim": "2026001",
    "nama": "Andi",

    "kontak": {
        "email": "andi@example.com",
        "telepon": "08123456789"
    },

    "akademik": {
        "program_studi": "Informatika",
        "semester": 2,
        "ipk": 3.75
    }
}

Format Penyimpanan Data

Gunakan file JSON agar struktur dictionary dan nested record dapat disimpan dengan baik.

import json

NAMA_FILE = "data_project.json"


def baca_data():

    try:

        with open(
            NAMA_FILE,
            "r",
            encoding="utf-8"
        ) as file:

            return json.load(file)

    except FileNotFoundError:

        return []

    except json.JSONDecodeError:

        print("Isi file tidak valid.")
        return []


def simpan_data(data):

    with open(
        NAMA_FILE,
        "w",
        encoding="utf-8"
    ) as file:

        json.dump(
            data,
            file,
            indent=4,
            ensure_ascii=False
        )

Fungsi Menambah Data

def tambah_data(data):

    kode = input("Kode atau ID: ").strip()
    nama = input("Nama: ").strip()
    kategori = input("Kategori: ").strip()

    if kode == "" or nama == "":
        print("Kode dan nama wajib diisi.")
        return

    for item in data:

        if item["kode"] == kode:
            print("Kode sudah digunakan.")
            return

    record_baru = {
        "kode": kode,
        "nama": nama,
        "kategori": {
            "nama": kategori
        }
    }

    data.append(record_baru)
    simpan_data(data)

    print("Data berhasil ditambahkan.")

Fungsi Menampilkan Data

def tampilkan_data(data):

    if not data:

        print("Data masih kosong.")
        return

    for nomor, item in enumerate(
        data,
        start=1
    ):

        print("-" * 45)
        print("Data ke-", nomor)
        print("Kode     :", item["kode"])
        print("Nama     :", item["nama"])
        print(
            "Kategori :",
            item["kategori"]["nama"]
        )

Fungsi Mencari Data

def cari_data(data):

    kata_kunci = input(
        "Masukkan kode atau nama: "
    ).lower()

    hasil = []

    for item in data:

        if (
            kata_kunci in item["kode"].lower()
            or kata_kunci in item["nama"].lower()
        ):

            hasil.append(item)

    if not hasil:

        print("Data tidak ditemukan.")
        return

    tampilkan_data(hasil)

Fungsi Menghapus Data

def hapus_data(data):

    kode = input(
        "Masukkan kode yang dihapus: "
    ).strip()

    for item in data:

        if item["kode"] == kode:

            data.remove(item)
            simpan_data(data)

            print("Data berhasil dihapus.")
            return

    print("Data tidak ditemukan.")

Fungsi Laporan

def tampilkan_laporan(data):

    if not data:

        print("Belum ada data.")
        return

    jumlah_data = len(data)

    kategori = {}

    for item in data:

        nama_kategori = (
            item["kategori"]["nama"]
        )

        if nama_kategori not in kategori:
            kategori[nama_kategori] = 0

        kategori[nama_kategori] += 1

    print("Jumlah data:", jumlah_data)
    print("\nJumlah berdasarkan kategori:")

    for nama, jumlah in kategori.items():
        print(nama, ":", jumlah)

Menu Utama

def tampilkan_menu():

    print("\n=== PROJECT AKHIR ===")
    print("1. Tambah data")
    print("2. Tampilkan data")
    print("3. Cari data")
    print("4. Hapus data")
    print("5. Tampilkan laporan")
    print("6. Keluar")


data = baca_data()

while True:

    tampilkan_menu()

    pilihan = input(
        "Pilih menu: "
    ).strip()

    if pilihan == "1":

        tambah_data(data)

    elif pilihan == "2":

        tampilkan_data(data)

    elif pilihan == "3":

        cari_data(data)

    elif pilihan == "4":

        hapus_data(data)

    elif pilihan == "5":

        tampilkan_laporan(data)

    elif pilihan == "6":

        print("Program selesai.")
        break

    else:

        print("Pilihan tidak valid.")

Validasi Program

  • Kode atau ID tidak boleh kosong.
  • Kode atau ID tidak boleh duplikat.
  • Nama data wajib diisi.
  • File tidak ditemukan harus ditangani.
  • Format JSON tidak valid harus ditangani.
  • Pilihan menu harus diperiksa sebelum diproses.

Dokumentasi Project

  1. Judul dan deskripsi project.
  2. Latar belakang pembuatan aplikasi.
  3. Analisis kebutuhan sistem.
  4. Struktur data yang digunakan.
  5. Flowchart atau algoritma.
  6. Penjelasan setiap fungsi.
  7. Screenshot tampilan program.
  8. Skenario pengujian.
  9. Kesimpulan dan pengembangan selanjutnya.

Rubrik Penilaian

Komponen Penilaian Bobot
Kelengkapan fitur 25%
Struktur dan kualitas kode 20%
Penggunaan struktur data 15%
Pengolahan file 15%
Validasi dan penanganan error 10%
Dokumentasi 10%
Presentasi 5%

Checklist Project

Kesimpulan

Project akhir merupakan kesempatan untuk menggabungkan seluruh konsep Pemrograman Dasar menjadi sebuah aplikasi yang dapat digunakan. Program harus memiliki struktur yang jelas, mampu mengelola data, menggunakan file sebagai media penyimpanan, dan menangani kesalahan input dengan baik.

Ujian Akhir Semester

Penugasan UAS

Penugasan UAS merupakan tugas akhir yang menguji kemampuan mahasiswa dalam merancang, membuat, menguji, dan mendokumentasikan aplikasi pengolahan data menggunakan Python.

Deskripsi Penugasan

Mahasiswa diminta membuat aplikasi pengolahan data berbasis Python. Aplikasi harus mampu menyimpan data secara permanen menggunakan file dan menyediakan fitur pengelolaan data.

Tema aplikasi dapat dipilih dari salah satu pilihan berikut:

  • Sistem Informasi Akademik.
  • Sistem Inventaris Barang.
  • Sistem Perpustakaan.
  • Sistem Kasir Sederhana.
  • Sistem Pengelolaan Data Pelanggan.
  • Tema lain dengan persetujuan dosen.

Kompetensi yang Dinilai

  • Penggunaan variabel dan tipe data.
  • Penggunaan percabangan dan perulangan.
  • Pembuatan fungsi.
  • Penggunaan list dan dictionary.
  • Penggunaan nested record.
  • Pengolahan file.
  • Validasi input.
  • Penanganan error dan dokumentasi program.

Ketentuan Program

  1. Program dibuat menggunakan bahasa Python.
  2. Program harus memiliki menu utama.
  3. Program harus menggunakan minimal lima fungsi.
  4. Program harus menggunakan list atau dictionary sebagai struktur data.
  5. Program harus menggunakan minimal satu nested record.
  6. Data harus disimpan ke dalam file JSON atau CSV.
  7. Program harus dapat membaca data saat pertama kali dijalankan.
  8. Program harus memiliki validasi input.
  9. Program harus menangani kondisi file tidak ditemukan atau format data tidak valid.

Fitur Wajib Aplikasi

No. Fitur Keterangan
1 Tambah data Menambahkan data baru.
2 Tampilkan data Menampilkan seluruh data.
3 Cari data Mencari data berdasarkan ID atau kode.
4 Ubah data Mengubah data yang sudah tersedia.
5 Hapus data Menghapus data tertentu.
6 Laporan Menampilkan rekap atau statistik data.
7 Keluar Mengakhiri program dengan aman.

Contoh Struktur Data

Contoh nested record untuk data barang:

barang = {
    "kode": "BRG001",
    "nama": "Keyboard",

    "kategori": {
        "kode": "K01",
        "nama": "Peralatan Komputer"
    },

    "stok": {
        "jumlah": 20,
        "satuan": "unit"
    },

    "harga": {
        "beli": 150000,
        "jual": 200000
    }
}

Contoh Pengolahan File JSON

import json

NAMA_FILE = "data_uas.json"


def baca_data():

    try:

        with open(
            NAMA_FILE,
            "r",
            encoding="utf-8"
        ) as file:

            return json.load(file)

    except FileNotFoundError:

        return []

    except json.JSONDecodeError:

        print("Format file tidak valid.")
        return []


def simpan_data(data):

    with open(
        NAMA_FILE,
        "w",
        encoding="utf-8"
    ) as file:

        json.dump(
            data,
            file,
            indent=4,
            ensure_ascii=False
        )

Contoh Fungsi Tambah Data

def tambah_data(data):

    kode = input("Kode data: ").strip()
    nama = input("Nama data: ").strip()
    kategori = input("Kategori: ").strip()

    if kode == "" or nama == "":
        print("Kode dan nama wajib diisi.")
        return

    for item in data:

        if item["kode"] == kode:
            print("Kode sudah digunakan.")
            return

    record_baru = {
        "kode": kode,
        "nama": nama,
        "kategori": {
            "nama": kategori
        }
    }

    data.append(record_baru)
    simpan_data(data)

    print("Data berhasil ditambahkan.")

Contoh Fungsi Pencarian

def cari_data(data):

    kata_kunci = input(
        "Masukkan kode atau nama: "
    ).lower()

    ditemukan = False

    for item in data:

        if (
            kata_kunci in item["kode"].lower()
            or kata_kunci in item["nama"].lower()
        ):

            print(item)
            ditemukan = True

    if not ditemukan:
        print("Data tidak ditemukan.")

Contoh Fungsi Laporan

def tampilkan_laporan(data):

    if not data:

        print("Belum ada data.")
        return

    jumlah_data = len(data)

    daftar_kategori = {}

    for item in data:

        kategori = item["kategori"]["nama"]

        if kategori not in daftar_kategori:
            daftar_kategori[kategori] = 0

        daftar_kategori[kategori] += 1

    print("Jumlah data:", jumlah_data)

    for kategori, jumlah in daftar_kategori.items():

        print(
            kategori,
            ":",
            jumlah,
            "data"
        )

Validasi dan Penanganan Error

def input_angka(pesan):

    while True:

        try:

            nilai = int(input(pesan))

            if nilai < 0:
                print("Nilai tidak boleh negatif.")
                continue

            return nilai

        except ValueError:

            print("Input harus berupa angka.")
  • Kode atau ID tidak boleh kosong.
  • Kode atau ID tidak boleh duplikat.
  • Data numerik harus berupa angka.
  • Nilai stok, jumlah, atau harga tidak boleh negatif.
  • File yang tidak tersedia harus ditangani dengan try-except.

Format Laporan UAS

  1. Halaman judul.
  2. Latar belakang.
  3. Rumusan masalah.
  4. Tujuan aplikasi.
  5. Analisis kebutuhan.
  6. Perancangan struktur data.
  7. Flowchart atau pseudocode.
  8. Penjelasan program.
  9. Screenshot hasil program.
  10. Skenario pengujian.
  11. Kesimpulan dan saran pengembangan.

Skenario Pengujian

No. Pengujian Hasil yang Diharapkan
1 Menambahkan data valid. Data tersimpan ke file.
2 Menambahkan kode duplikat. Program menolak data.
3 Mencari data yang tersedia. Data ditampilkan.
4 Mencari data yang tidak tersedia. Pesan data tidak ditemukan.
5 Memasukkan data numerik yang salah. Program menampilkan pesan error.
6 Menghapus data. Data terhapus dari file.
7 Menjalankan program tanpa file data. Program berjalan dengan data kosong.

Rubrik Penilaian UAS

Komponen Bobot
Kelengkapan fitur aplikasi 25%
Penerapan struktur data 15%
Pengolahan file 20%
Validasi dan penanganan error 15%
Kualitas dan kerapian kode 10%
Laporan 10%
Presentasi atau demonstrasi 5%

Ketentuan Pengumpulan

Berkas yang dikumpulkan terdiri dari:

  • Source code Python dengan ekstensi .py.
  • File data JSON atau CSV.
  • Laporan dalam format PDF.
  • Screenshot hasil pengujian.
  • Video demonstrasi jika diperlukan.
Format nama folder pengumpulan:
Nama_NIM_UAS_PemrogramanDasar

Checklist Sebelum Mengumpulkan

Kesimpulan

Penugasan UAS menjadi sarana untuk menerapkan seluruh konsep Pemrograman Dasar ke dalam aplikasi yang nyata. Program harus memiliki fitur pengolahan data, menggunakan file sebagai media penyimpanan, menerapkan validasi, serta dilengkapi dokumentasi dan pengujian yang jelas.

Ujian Akhir Semester

Kuis UAS Pemrograman Dasar

Kuis ini menguji pemahaman tentang struktur data, fungsi, nested record, JSON, operasi file, validasi, dan perancangan project aplikasi Python.

Petunjuk Pengerjaan

  1. Terdapat 15 soal pilihan ganda.
  2. Pilih satu jawaban yang paling tepat.
  3. Setiap jawaban benar memiliki nilai yang sama.
  4. Klik tombol Periksa Jawaban setelah semua soal selesai.
Soal 1

Struktur data yang menyimpan pasangan key dan value adalah ...

Soal 2

Dictionary yang berada di dalam dictionary disebut ...

Soal 3

Method untuk membaca data JSON dari file adalah ...

Soal 4

Method untuk menyimpan data Python ke file JSON adalah ...

Soal 5

Mode file yang digunakan untuk membaca file adalah ...

Soal 6

Mode "w" pada operasi file digunakan untuk ...

Soal 7

Mode file yang digunakan untuk menambahkan data ke akhir file adalah ...

Soal 8

Fungsi os.path.exists() digunakan untuk ...

Soal 9

Fungsi yang digunakan untuk menghapus file adalah ...

Soal 10

Module yang digunakan untuk menyalin dan memindahkan file adalah ...

Soal 11

Exception yang muncul ketika file tidak ditemukan adalah ...

Soal 12

Tujuan penggunaan fungsi dalam program adalah ...

Soal 13

Validasi input digunakan untuk ...

Soal 14

Fitur CRUD terdiri dari ...

Soal 15

Media penyimpanan yang sesuai untuk mempertahankan struktur nested record adalah ...

Hasil Kuis UAS

Kunci Jawaban

1.B, 2.B, 3.B, 4.A, 5.A, 6.B, 7.C, 8.B, 9.B, 10.B, 11.C, 12.A, 13.A, 14.A, 15.A

Ujian Akhir Semester

Project UAS Pemrograman Dasar

Project UAS merupakan tugas akhir untuk menerapkan seluruh konsep Pemrograman Dasar ke dalam aplikasi pengolahan data berbasis Python.

Deskripsi Project

Buat aplikasi pengolahan data sederhana menggunakan Python. Aplikasi harus menyediakan menu untuk mengelola data dan menyimpan data secara permanen ke dalam file.

Pilih salah satu tema berikut:

Sistem Akademik

Data mahasiswa, mata kuliah, nilai, dan status kelulusan.

Sistem Inventaris

Data barang, kategori, stok, dan harga.

Sistem Perpustakaan

Data buku, anggota, peminjaman, dan pengembalian.

Kompetensi yang Harus Diterapkan

  • Variabel dan tipe data.
  • Percabangan dan perulangan.
  • Fungsi.
  • List dan dictionary.
  • Nested record.
  • Operasi file.
  • Validasi input.
  • Penanganan error.

Fitur Wajib

No. Fitur Keterangan
1 Tambah data Menambahkan data baru.
2 Tampilkan data Menampilkan seluruh data.
3 Cari data Mencari data berdasarkan kode atau ID.
4 Ubah data Mengubah data yang tersedia.
5 Hapus data Menghapus data berdasarkan kode atau ID.
6 Laporan Menampilkan statistik atau rekap data.
7 Keluar Mengakhiri program dengan aman.

Contoh Struktur Data

data = {
    "kode": "BRG001",
    "nama": "Keyboard",

    "kategori": {
        "kode": "K01",
        "nama": "Perangkat Komputer"
    },

    "stok": {
        "jumlah": 20,
        "satuan": "unit"
    },

    "harga": {
        "beli": 150000,
        "jual": 200000
    }
}

Template Dasar Program

import json

NAMA_FILE = "data_project_uas.json"


def baca_data():

    try:

        with open(
            NAMA_FILE,
            "r",
            encoding="utf-8"
        ) as file:

            return json.load(file)

    except FileNotFoundError:

        return []

    except json.JSONDecodeError:

        print("Format file tidak valid.")
        return []


def simpan_data(data):

    with open(
        NAMA_FILE,
        "w",
        encoding="utf-8"
    ) as file:

        json.dump(
            data,
            file,
            indent=4,
            ensure_ascii=False
        )


def tampilkan_menu():

    print("\n=== PROJECT UAS ===")
    print("1. Tambah data")
    print("2. Tampilkan data")
    print("3. Cari data")
    print("4. Ubah data")
    print("5. Hapus data")
    print("6. Laporan")
    print("7. Keluar")


data = baca_data()

while True:

    tampilkan_menu()

    pilihan = input(
        "Pilih menu: "
    ).strip()

    if pilihan == "1":

        print("Menu tambah data")

    elif pilihan == "2":

        print("Menu tampilkan data")

    elif pilihan == "3":

        print("Menu cari data")

    elif pilihan == "4":

        print("Menu ubah data")

    elif pilihan == "5":

        print("Menu hapus data")

    elif pilihan == "6":

        print("Menu laporan")

    elif pilihan == "7":

        print("Program selesai.")
        break

    else:

        print("Pilihan tidak valid.")

Validasi Program

  • Kode atau ID tidak boleh kosong.
  • Kode atau ID tidak boleh duplikat.
  • Input angka harus diperiksa menggunakan try-except.
  • Nilai harga, jumlah, atau stok tidak boleh negatif.
  • File tidak ditemukan harus ditangani.
  • Pilihan menu harus divalidasi.

Skenario Pengujian

No. Skenario Hasil yang Diharapkan
1 Menambahkan data valid. Data berhasil tersimpan.
2 Memasukkan kode duplikat. Data ditolak.
3 Mencari data yang tersedia. Data ditampilkan.
4 Mencari data yang tidak tersedia. Pesan data tidak ditemukan.
5 Memasukkan input angka yang salah. Program menampilkan pesan error.
6 Mengubah data. Perubahan tersimpan.
7 Menghapus data. Data terhapus dari file.
8 Menjalankan program tanpa file. Program tetap dapat dijalankan.

Format Laporan

  1. Halaman judul.
  2. Latar belakang.
  3. Rumusan masalah.
  4. Tujuan project.
  5. Analisis kebutuhan.
  6. Perancangan struktur data.
  7. Flowchart atau pseudocode.
  8. Penjelasan kode program.
  9. Screenshot hasil pengujian.
  10. Kesimpulan.
  11. Saran pengembangan.

Rubrik Penilaian

Komponen Penilaian Bobot
Kelengkapan fitur 25%
Struktur data dan nested record 15%
Pengolahan file 20%
Validasi dan penanganan error 15%
Kualitas kode program 10%
Laporan 10%
Presentasi 5%

Ketentuan Pengumpulan

Kumpulkan file berikut:

  • Source code Python dengan ekstensi .py.
  • File data JSON atau CSV.
  • Laporan dalam format PDF.
  • Screenshot program.
  • Video demonstrasi apabila diminta.
Format nama folder:
Nama_NIM_ProjectUAS

Checklist Sebelum Mengumpulkan

Kesimpulan

Project UAS merupakan evaluasi akhir yang menggabungkan konsep dasar pemrograman, struktur data, nested record, fungsi, pengolahan file, validasi, dan penanganan error. Hasil akhir harus berupa aplikasi yang dapat berjalan, mudah digunakan, dan memiliki dokumentasi yang jelas.