KKA Kelas XI Semester 1 Pertemuan 9 2 JP × 45 Menit
Struktur Data dan Algoritma Tingkat Lanjut dengan Python
Praktik langsung menggunakan buku tulis, Thonny di komputer, dan Pydroid 3 di HP Android
Pada materi ini, siswa akan mempelajari cara menyimpan, mencari, mengurutkan, dan memproses data menggunakan list, dictionary, stack, queue, linear search, dan sorting. Praktik dirancang agar tetap dapat dilaksanakan meskipun jumlah komputer terbatas.
Siswa akan bekerja secara berkelompok dan bergantian menggunakan tiga media: buku untuk merancang algoritma, Thonny untuk menulis serta melakukan debugging program, dan Pydroid 3 untuk menjalankan program melalui HP.
Hasil Akhir Praktik
Setiap kelompok akan menghasilkan sebuah program pengelolaan produk dan antrean pesanan yang mampu:
- Menyimpan data produk.
- Menampilkan seluruh produk.
- Mencari produk berdasarkan kode.
- Mengurutkan produk berdasarkan harga atau stok.
- Menambahkan pesanan ke dalam antrean.
- Memproses pesanan berdasarkan urutan kedatangan.
- Mengurangi stok setelah pesanan diproses.
- Menyimpan riwayat aktivitas.
- Menolak data masukan yang tidak valid.
- Menampilkan laporan pengujian program.
Penerapan Struktur Data di Dunia Kerja
Struktur data digunakan hampir pada seluruh aplikasi digital. Pemilihan struktur data yang tepat membuat program lebih mudah dikembangkan, diuji, dipelihara, dan digunakan pada jumlah data yang lebih besar.
| Aplikasi Industri | Data yang Dikelola | Struktur Data |
|---|---|---|
| Aplikasi kasir | Produk, stok, harga, dan transaksi | List dan dictionary |
| Marketplace | Produk, pesanan, dan antrean pembayaran | List, dictionary, dan queue |
| Editor dokumen | Riwayat perubahan dan fitur undo | Stack |
| Customer service | Antrean tiket pelanggan | Queue |
| Sistem gudang | Stok dan lokasi barang | Dictionary, searching, dan sorting |
| Sistem sekolah | Data siswa, nilai, dan kehadiran | List dan dictionary |
1. List: Menyimpan Banyak Data
List adalah struktur data untuk menyimpan banyak nilai dalam satu variabel. Data dalam list memiliki nomor posisi yang disebut indeks. Indeks Python dimulai dari angka 0.
produk = ["Laptop", "Mouse", "Keyboard", "Printer"]
print(produk[0])
print(produk[2])
Hasil:
Laptop
Keyboard
Operasi Dasar List
produk = ["Laptop", "Mouse", "Keyboard"]
# Menambah data
produk.append("Printer")
# Mengubah data
produk[1] = "Mouse Wireless"
# Menghapus data
produk.remove("Laptop")
# Menghitung jumlah data
jumlah_produk = len(produk)
print(produk)
print("Jumlah produk:", jumlah_produk)
| Perintah | Fungsi |
|---|---|
append() |
Menambahkan data di bagian akhir list |
insert() |
Menyisipkan data pada indeks tertentu |
remove() |
Menghapus data berdasarkan nilai |
pop() |
Mengambil sekaligus menghapus data |
len() |
Menghitung jumlah elemen |
2. Dictionary: Menyimpan Data Berdasarkan Atribut
Dictionary menyimpan data dalam pasangan key dan value. Dictionary sesuai untuk menyimpan sebuah objek yang memiliki beberapa atribut.
produk = {
"kode": "PRD001",
"nama": "Keyboard Mechanical",
"harga": 350000,
"stok": 12
}
print("Kode :", produk["kode"])
print("Nama :", produk["nama"])
print("Harga:", produk["harga"])
print("Stok :", produk["stok"])
Untuk menyimpan banyak produk, list dan dictionary dapat digabungkan.
daftar_produk = [
{
"kode": "PRD001",
"nama": "Keyboard Mechanical",
"harga": 350000,
"stok": 12
},
{
"kode": "PRD002",
"nama": "Mouse Wireless",
"harga": 150000,
"stok": 20
},
{
"kode": "PRD003",
"nama": "Headset Gaming",
"harga": 275000,
"stok": 8
}
]
for produk in daftar_produk:
print(produk["kode"], "-", produk["nama"])
3. Stack: Data Terakhir Diproses Lebih Dahulu
Stack menggunakan prinsip Last In First Out atau LIFO. Artinya, data yang terakhir dimasukkan akan dikeluarkan terlebih dahulu.
Stack digunakan untuk:
- Fitur undo pada aplikasi.
- Riwayat perubahan data.
- Riwayat halaman browser.
- Proses pemanggilan fungsi.
riwayat = []
riwayat.append("Menambah produk PRD001")
riwayat.append("Mengubah stok PRD001")
riwayat.append("Mengubah harga PRD001")
print("Riwayat awal:", riwayat)
aksi_terakhir = riwayat.pop()
print("Aksi terakhir:", aksi_terakhir)
print("Riwayat sekarang:", riwayat)
Pada contoh tersebut, perubahan harga dikeluarkan terlebih dahulu karena menjadi aktivitas yang terakhir dimasukkan.
4. Queue: Data Pertama Diproses Lebih Dahulu
Queue menggunakan prinsip First In First Out atau FIFO. Data yang masuk terlebih dahulu akan diproses terlebih dahulu.
Queue digunakan dalam:
- Antrean pesanan marketplace.
- Antrean tiket layanan pelanggan.
- Antrean dokumen pada printer.
- Antrean pasien.
- Antrean pekerjaan pada server.
from collections import deque
antrean = deque()
antrean.append("ORD001")
antrean.append("ORD002")
antrean.append("ORD003")
print("Antrean awal:", list(antrean))
pesanan_diproses = antrean.popleft()
print("Pesanan diproses:", pesanan_diproses)
print("Sisa antrean:", list(antrean))
Program akan memproses ORD001 karena pesanan tersebut masuk
paling awal.
5. Linear Search: Mencari Data Satu per Satu
Linear search mencari data dengan memeriksa setiap elemen mulai dari awal sampai data ditemukan atau seluruh data selesai diperiksa.
def cari_produk(data_produk, kode_dicari):
for produk in data_produk:
if produk["kode"].lower() == kode_dicari.lower():
return produk
return None
hasil = cari_produk(daftar_produk, "PRD002")
if hasil is not None:
print("Produk ditemukan:", hasil["nama"])
else:
print("Produk tidak ditemukan")
Penelusuran Manual di Buku
| Langkah | Kode yang Diperiksa | Kode Dicari | Hasil | Keputusan |
|---|---|---|---|---|
| 1 | PRD001 | PRD002 | Tidak sama | Lanjutkan |
| 2 | PRD002 | PRD002 | Sama | Data ditemukan |
6. Sorting: Mengurutkan Data
Sorting digunakan untuk menyusun data berdasarkan kriteria tertentu, misalnya harga, stok, nama, nilai, atau waktu pemesanan.
Mengurutkan Harga Termurah
produk_terurut = sorted(
daftar_produk,
key=lambda produk: produk["harga"]
)
for produk in produk_terurut:
print(produk["nama"], "-", produk["harga"])
Mengurutkan Stok Terbanyak
produk_terurut = sorted(
daftar_produk,
key=lambda produk: produk["stok"],
reverse=True
)
for produk in produk_terurut:
print(produk["nama"], "-", produk["stok"])
Parameter reverse=True digunakan untuk mengurutkan data dari
nilai terbesar menuju nilai terkecil.
7. Kompleksitas Algoritma Secara Sederhana
Kompleksitas algoritma menggambarkan pertambahan jumlah langkah ketika jumlah data meningkat.
| Notasi | Penjelasan | Contoh |
|---|---|---|
| O(1) | Jumlah langkah relatif tetap | Mengambil list menggunakan indeks |
| O(n) | Jumlah langkah mengikuti banyaknya data | Linear search |
| O(log n) | Ruang pencarian dibagi secara bertahap | Binary search pada data terurut |
| O(n log n) | Umum pada pengurutan efisien | Pengurutan bawaan Python secara umum |
| O(n²) | Data dibandingkan berulang kali | Bubble sort dasar |
Program yang menghasilkan jawaban benar belum tentu efisien. Programmer harus mempertimbangkan jumlah data, kecepatan, penggunaan memori, keamanan, dan kemudahan pemeliharaan.
8. Sistem Bergantian Buku, Komputer, dan HP
Bentuk kelompok beranggotakan 4–6 siswa. Setiap kelompok menggunakan buku, komputer, dan HP secara bergantian. Satu perangkat tidak boleh hanya dikuasai oleh satu anggota.
Pembagian Peran
| Peran | Tugas | Bukti Kerja |
|---|---|---|
| Analis | Menentukan masalah, input, proses, dan output | Tabel analisis di buku |
| Perancang algoritma | Membuat pseudocode dan trace table | Pseudocode di buku |
| Programmer Thonny | Mengetik dan menjalankan kode di komputer | File Python |
| Programmer Pydroid | Menjalankan dan menguji kode di HP | Tangkapan layar |
| Tester | Menguji program dengan data valid dan tidak valid | Tabel pengujian |
| Dokumentator | Mencatat bug, perbaikan, dan kesimpulan | Laporan kelompok |
Rotasi Praktik 3 Pos
| Pos | Media | Aktivitas | Durasi |
|---|---|---|---|
| Pos 1 | Buku | Analisis masalah, pseudocode, prediksi hasil, dan skenario uji | 15 menit |
| Pos 2 | Komputer/Thonny | Mengetik kode, menjalankan program, dan debugging | 20 menit |
| Pos 3 | HP/Pydroid 3 | Menjalankan kode, menguji input, dan mengambil dokumentasi | 15 menit |
9. Persiapan Praktik pada Thonny
- Buka aplikasi Thonny.
- Pilih File → New.
- Ketik atau tempel kode Python.
- Pilih File → Save As.
- Simpan dengan nama
P9_Struktur_Data_Kelompok.py. - Tekan F5 atau tombol Run.
- Perhatikan hasil pada Shell.
- Jika muncul error, perhatikan jenis error dan nomor barisnya.
Debugging di Thonny
Thonny menyediakan fitur menjalankan kode langkah demi langkah. Gunakan fitur debug untuk melihat perubahan isi variabel, list, antrean, dan stok.
- Pilih menu View → Variables.
- Jalankan program menggunakan mode debug.
- Amati perubahan
antrean_pesanan. - Amati perubahan stok setelah pesanan diproses.
- Catat perubahan tersebut di buku.
10. Persiapan Praktik pada Pydroid 3
- Buka aplikasi Pydroid 3 – IDE for Python 3.
- Buat file Python baru.
- Ketik atau tempel kode program.
- Simpan sebagai
P9_Struktur_Data_Kelompok.py. - Tekan tombol Run berbentuk segitiga.
- Masukkan pilihan menu melalui terminal.
- Periksa hasil program.
- Ambil tangkapan layar kode dan hasilnya.
11. Praktik di Buku Sebelum Menulis Kode
Salin dan lengkapi tabel berikut di buku.
Analisis Input–Proses–Output
| Bagian | Isi |
|---|---|
| Masalah | Mengelola produk dan antrean pesanan toko |
| Input | Kode produk, nama, harga, stok, nomor pesanan, dan jumlah |
| Proses | Mencari, mengurutkan, memvalidasi, mengantrekan, dan memproses pesanan |
| Output | Daftar produk, hasil pencarian, antrean, stok terbaru, dan riwayat |
Pseudocode
MULAI
Siapkan daftar produk
Siapkan antrean kosong
Siapkan riwayat kosong
TAMPILKAN menu
JIKA pengguna memilih tampilkan produk
TAMPILKAN semua produk
JIKA pengguna memilih cari produk
INPUT kode produk
PERIKSA produk satu per satu
JIKA ditemukan
TAMPILKAN produk
JIKA tidak ditemukan
TAMPILKAN pesan kesalahan
JIKA pengguna memilih tambah pesanan
INPUT nomor pesanan, kode produk, dan jumlah
VALIDASI kode, jumlah, dan stok
JIKA valid
MASUKKAN pesanan ke antrean
JIKA pengguna memilih proses pesanan
AMBIL pesanan paling depan
KURANGI stok
SIMPAN aktivitas ke riwayat
ULANGI sampai pengguna memilih keluar
SELESAI
12. Program Utama Siap Dipraktikkan
Salin kode berikut ke Thonny atau Pydroid 3. Program dibuat berbasis menu agar siswa dapat mencoba berbagai masukan secara langsung.
from collections import deque
# ==================================================
# DATA AWAL
# ==================================================
daftar_produk = [
{
"kode": "PRD001",
"nama": "Keyboard Mechanical",
"kategori": "Aksesori",
"harga": 350000,
"stok": 12
},
{
"kode": "PRD002",
"nama": "Mouse Wireless",
"kategori": "Aksesori",
"harga": 150000,
"stok": 20
},
{
"kode": "PRD003",
"nama": "Headset Gaming",
"kategori": "Audio",
"harga": 275000,
"stok": 8
},
{
"kode": "PRD004",
"nama": "Flashdisk 64 GB",
"kategori": "Penyimpanan",
"harga": 95000,
"stok": 25
},
{
"kode": "PRD005",
"nama": "Webcam HD",
"kategori": "Kamera",
"harga": 225000,
"stok": 10
}
]
# Queue: pesanan pertama diproses lebih dahulu
antrean_pesanan = deque()
# Stack: aktivitas terakhir berada di bagian akhir
riwayat_aktivitas = []
# ==================================================
# FUNGSI BANTU
# ==================================================
def format_rupiah(nilai):
hasil = "Rp{:,.0f}".format(nilai)
return hasil.replace(",", ".")
def garis():
print("-" * 74)
def cari_produk(kode_dicari):
for produk in daftar_produk:
if produk["kode"].lower() == kode_dicari.lower():
return produk
return None
def nomor_pesanan_sudah_ada(nomor):
for pesanan in antrean_pesanan:
if pesanan["nomor"].lower() == nomor.lower():
return True
return False
# ==================================================
# MENAMPILKAN PRODUK
# ==================================================
def tampilkan_produk(data):
print("\nDAFTAR PRODUK")
garis()
print("{:<9} {:<23} {:<14} {:<15} {:<5}".format(
"Kode",
"Nama",
"Kategori",
"Harga",
"Stok"
))
garis()
for produk in data:
print("{:<9} {:<23} {:<14} {:<15} {:<5}".format(
produk["kode"],
produk["nama"],
produk["kategori"],
format_rupiah(produk["harga"]),
produk["stok"]
))
garis()
# ==================================================
# PENCARIAN PRODUK
# ==================================================
def menu_cari_produk():
print("\nPENCARIAN PRODUK")
kode = input("Masukkan kode produk: ").strip()
hasil = cari_produk(kode)
if hasil is None:
print("Produk dengan kode", kode, "tidak ditemukan.")
return
print("\nProduk ditemukan")
print("Kode :", hasil["kode"])
print("Nama :", hasil["nama"])
print("Kategori:", hasil["kategori"])
print("Harga :", format_rupiah(hasil["harga"]))
print("Stok :", hasil["stok"])
# ==================================================
# PENGURUTAN PRODUK
# ==================================================
def urutkan_harga_termurah():
hasil = sorted(
daftar_produk,
key=lambda produk: produk["harga"]
)
tampilkan_produk(hasil)
def urutkan_stok_terbanyak():
hasil = sorted(
daftar_produk,
key=lambda produk: produk["stok"],
reverse=True
)
tampilkan_produk(hasil)
# ==================================================
# MENAMBAHKAN PESANAN
# ==================================================
def tambah_pesanan():
print("\nTAMBAH PESANAN")
nomor = input("Nomor pesanan : ").strip().upper()
kode = input("Kode produk : ").strip().upper()
if nomor == "":
print("Gagal: nomor pesanan tidak boleh kosong.")
return
if nomor_pesanan_sudah_ada(nomor):
print("Gagal: nomor pesanan sudah digunakan.")
return
produk = cari_produk(kode)
if produk is None:
print("Gagal: kode produk tidak ditemukan.")
return
try:
jumlah = int(input("Jumlah pesanan: "))
except ValueError:
print("Gagal: jumlah harus berupa angka bulat.")
return
if jumlah <= 0:
print("Gagal: jumlah harus lebih dari nol.")
return
if jumlah > produk["stok"]:
print("Gagal: stok tidak mencukupi.")
print("Stok tersedia:", produk["stok"])
return
pesanan = {
"nomor": nomor,
"kode_produk": produk["kode"],
"nama_produk": produk["nama"],
"jumlah": jumlah,
"total": produk["harga"] * jumlah,
"status": "Menunggu"
}
antrean_pesanan.append(pesanan)
riwayat_aktivitas.append(
"Menambahkan pesanan " + nomor
)
print("Pesanan", nomor, "berhasil masuk antrean.")
print("Total pembayaran:", format_rupiah(pesanan["total"]))
# ==================================================
# MENAMPILKAN ANTREAN
# ==================================================
def tampilkan_antrean():
print("\nANTREAN PESANAN")
garis()
if len(antrean_pesanan) == 0:
print("Antrean masih kosong.")
return
nomor_urut = 1
for pesanan in antrean_pesanan:
print(
str(nomor_urut) + ".",
pesanan["nomor"],
"|", pesanan["nama_produk"],
"| Jumlah:", pesanan["jumlah"],
"| Total:", format_rupiah(pesanan["total"]),
"|", pesanan["status"]
)
nomor_urut += 1
# ==================================================
# MEMPROSES PESANAN
# ==================================================
def proses_pesanan():
print("\nPROSES PESANAN")
if len(antrean_pesanan) == 0:
print("Tidak ada pesanan yang dapat diproses.")
return
# popleft mengambil pesanan paling depan
pesanan = antrean_pesanan.popleft()
produk = cari_produk(pesanan["kode_produk"])
# Validasi ulang sebelum stok dikurangi
if produk is None:
print("Gagal: produk tidak ditemukan.")
return
if pesanan["jumlah"] > produk["stok"]:
print("Gagal: stok berubah dan sekarang tidak mencukupi.")
return
produk["stok"] -= pesanan["jumlah"]
pesanan["status"] = "Selesai"
riwayat_aktivitas.append(
"Memproses pesanan " + pesanan["nomor"]
)
print("Pesanan berhasil diproses.")
print("Nomor :", pesanan["nomor"])
print("Produk :", pesanan["nama_produk"])
print("Jumlah :", pesanan["jumlah"])
print("Total :", format_rupiah(pesanan["total"]))
print("Status :", pesanan["status"])
print("Sisa stok :", produk["stok"])
# ==================================================
# MENAMPILKAN RIWAYAT
# ==================================================
def tampilkan_riwayat():
print("\nRIWAYAT AKTIVITAS")
if len(riwayat_aktivitas) == 0:
print("Belum ada aktivitas.")
return
nomor = 1
for aktivitas in riwayat_aktivitas:
print(str(nomor) + ".", aktivitas)
nomor += 1
def ambil_riwayat_terakhir():
print("\nAMBIL RIWAYAT TERAKHIR")
if len(riwayat_aktivitas) == 0:
print("Riwayat masih kosong.")
return
aktivitas = riwayat_aktivitas.pop()
print("Aktivitas terakhir:", aktivitas)
print("Aktivitas tersebut dikeluarkan dari stack.")
# ==================================================
# PRODUK STOK RENDAH
# ==================================================
def tampilkan_stok_rendah():
print("\nPRODUK DENGAN STOK DI BAWAH 10")
ditemukan = False
for produk in daftar_produk:
if produk["stok"] < 10:
print(
produk["kode"],
"-", produk["nama"],
"-", produk["stok"]
)
ditemukan = True
if not ditemukan:
print("Tidak ada produk dengan stok rendah.")
# ==================================================
# MENU UTAMA
# ==================================================
def tampilkan_menu():
print("\n========================================")
print(" SISTEM PRODUK DAN ANTREAN PESANAN")
print("========================================")
print("1. Tampilkan seluruh produk")
print("2. Cari produk")
print("3. Urutkan berdasarkan harga termurah")
print("4. Urutkan berdasarkan stok terbanyak")
print("5. Tambahkan pesanan")
print("6. Tampilkan antrean")
print("7. Proses pesanan")
print("8. Tampilkan riwayat")
print("9. Ambil riwayat terakhir")
print("10. Tampilkan produk stok rendah")
print("0. Keluar")
# ==================================================
# PROGRAM UTAMA
# ==================================================
while True:
tampilkan_menu()
pilihan = input("Pilih menu: ").strip()
if pilihan == "1":
tampilkan_produk(daftar_produk)
elif pilihan == "2":
menu_cari_produk()
elif pilihan == "3":
urutkan_harga_termurah()
elif pilihan == "4":
urutkan_stok_terbanyak()
elif pilihan == "5":
tambah_pesanan()
elif pilihan == "6":
tampilkan_antrean()
elif pilihan == "7":
proses_pesanan()
elif pilihan == "8":
tampilkan_riwayat()
elif pilihan == "9":
ambil_riwayat_terakhir()
elif pilihan == "10":
tampilkan_stok_rendah()
elif pilihan == "0":
print("Program selesai. Terima kasih.")
break
else:
print("Pilihan tidak tersedia. Masukkan angka 0-10.")
< muncul sebagai tulisan,
ganti menjadi tanda lebih kecil. Contoh yang benar:
jumlah <= 0 dan produk["stok"] < 10.
13. Cara Mengimplementasikan Program
Gunakan Thonny atau Pydroid 3. Pastikan menu utama tampil tanpa error.
Pilih menu 1. Pastikan lima produk ditampilkan beserta kode, kategori, harga, dan stok.
Pilih menu 2 dan masukkan
PRD002. Setelah itu, ulangi
menggunakan PRD999.
Pilih menu 3 untuk mengurutkan harga dan menu 4 untuk mengurutkan stok.
Pilih menu 5. Gunakan nomor
ORD001, kode
PRD002, dan jumlah 2.
Gunakan nomor
ORD002, kode PRD001, dan jumlah
1.
Pilih menu 6. Pastikan ORD001 berada di urutan pertama.
Pilih menu 7. Pastikan ORD001 diproses terlebih dahulu dan stok Mouse Wireless berkurang dari 20 menjadi 18.
Pilih menu 8. Pastikan aktivitas penambahan dan pemrosesan pesanan tercatat.
Catat hasil aktual di buku dan ambil tangkapan layar program.
14. Skenario Pengujian Wajib
| No. | Skenario | Input | Hasil yang Diharapkan |
|---|---|---|---|
| 1 | Mencari produk valid | PRD002 | Mouse Wireless ditemukan |
| 2 | Mencari produk tidak tersedia | PRD999 | Muncul pesan produk tidak ditemukan |
| 3 | Menambahkan pesanan valid | ORD001, PRD002, 2 | Pesanan berhasil masuk antrean |
| 4 | Jumlah negatif | ORD002, PRD001, -2 | Pesanan ditolak |
| 5 | Jumlah bukan angka | dua | Program tidak berhenti dan menampilkan pesan kesalahan |
| 6 | Jumlah melebihi stok | ORD003, PRD003, 100 | Pesanan ditolak karena stok tidak mencukupi |
| 7 | Nomor pesanan ganda | ORD001 digunakan dua kali | Pesanan kedua ditolak |
| 8 | Memproses antrean | ORD001 lalu ORD002 | ORD001 diproses terlebih dahulu |
| 9 | Memproses antrean kosong | Tidak ada pesanan | Muncul informasi antrean kosong |
| 10 | Mengurutkan harga | Menu 3 | Flashdisk tampil sebagai harga termurah |
Format Catatan Pengujian di Buku
| Skenario | Hasil Aktual | Status | Bug/Penyebab | Perbaikan |
|---|---|---|---|---|
| Mencari PRD002 | Diisi siswa | Lulus/Gagal | Diisi siswa | Diisi siswa |
| Jumlah melebihi stok | Diisi siswa | Lulus/Gagal | Diisi siswa | Diisi siswa |
| Memproses antrean kosong | Diisi siswa | Lulus/Gagal | Diisi siswa | Diisi siswa |
15. Kesalahan yang Sering Terjadi
| Error/Masalah | Penyebab | Solusi |
|---|---|---|
| SyntaxError | Kurang titik dua, kurung, atau tanda kutip | Periksa baris yang ditunjukkan oleh Python |
| IndentationError | Spasi awal baris tidak konsisten | Gunakan empat spasi untuk setiap blok |
| KeyError | Nama key dictionary salah | Periksa penulisan kode, nama, harga, atau stok |
| ValueError | Input teks diubah menjadi angka | Gunakan try-except |
| Produk tidak ditemukan | Kode salah atau belum tersedia | Periksa kode produk |
| Kode berjalan di komputer tetapi gagal di HP | Ada karakter hasil salin atau indentasi berubah | Ketik ulang tanda kutip, operator, dan indentasi |
16. Tugas Pengembangan Kelompok
Setelah program utama berhasil dijalankan, setiap kelompok memilih minimal tiga pengembangan berikut:
- Tambahkan minimal lima produk baru.
- Buat pencarian berdasarkan sebagian nama produk.
- Buat filter produk berdasarkan kategori.
- Tambahkan diskon untuk total tertentu.
- Tambahkan biaya layanan atau biaya pengiriman.
- Buat fitur pembatalan pesanan sebelum diproses.
- Tampilkan tiga produk dengan stok paling sedikit.
- Buat laporan total nilai persediaan.
- Simpan laporan transaksi ke file teks.
- Tambahkan nama pelanggan menggunakan data simulasi.
Target Keberhasilan
- Program dapat dijalankan tanpa SyntaxError.
- Minimal delapan produk tersimpan.
- List dan dictionary digunakan dengan benar.
- Stack dan queue dapat didemonstrasikan.
- Pencarian dapat menemukan data valid.
- Pengurutan memberikan hasil yang tepat.
- Minimal tiga validasi input bekerja.
- Minimal lima skenario pengujian dinyatakan lulus.
- Program dapat dijalankan di Thonny atau Pydroid 3.
- Setiap anggota mampu menjelaskan bagian kode yang dikerjakan.
17. Bukti Praktik yang Dikumpulkan
Bukti Individual
- Catatan materi di buku.
- Pseudocode atau trace table.
- Satu tabel pengujian.
- Penjelasan bagian kode yang dipahami.
- Refleksi singkat.
Bukti Kelompok
- File
.pyhasil praktik. - Tangkapan layar program di Thonny.
- Tangkapan layar program di Pydroid 3.
- Tabel pengujian minimal lima skenario.
- Catatan bug dan perbaikannya.
- Daftar pembagian peran kelompok.
- Demonstrasi program selama 2–3 menit.
18. Etika dan Keamanan Data
- Gunakan data produk dan pelanggan simulasi.
- Jangan memasukkan nomor telepon atau identitas pribadi asli.
- Jangan menyimpan kata sandi dalam kode program.
- Validasi setiap data yang dimasukkan pengguna.
- Jangan mengubah atau menghapus file kelompok lain.
- Gunakan HP hanya untuk kegiatan praktik saat pembelajaran.
- Jangan menyalin kode tanpa memahami cara kerjanya.
- Periksa kembali kode yang diperoleh dari kecerdasan artifisial.
- Catat sumber apabila menggunakan referensi dari luar.
19. Refleksi Praktik
Jawab pertanyaan berikut di buku:
- Apa perbedaan list dan dictionary?
- Apa perbedaan stack dan queue?
- Mengapa antrean pesanan menggunakan prinsip FIFO?
- Bagaimana linear search menemukan produk?
- Apa peran saya dalam kelompok?
- Apakah saya menggunakan buku, Thonny, atau Pydroid 3?
- Bug apa yang ditemukan kelompok?
- Bagaimana bug tersebut diperbaiki?
- Apa bukti bahwa program telah bekerja?
- Bagaimana program ini dapat dikembangkan untuk dunia kerja?
Kesimpulan
List digunakan untuk menyimpan kumpulan data, sedangkan dictionary digunakan untuk menyimpan atribut sebuah objek. Stack menerapkan prinsip LIFO dan sesuai untuk riwayat atau fitur undo. Queue menerapkan prinsip FIFO dan sesuai untuk antrean pesanan atau pelayanan.
Searching digunakan untuk menemukan data, sedangkan sorting digunakan untuk mengurutkan data berdasarkan kebutuhan. Pemilihan struktur data dan algoritma yang tepat membantu menghasilkan program yang terstruktur, efisien, mudah diuji, dan mudah dikembangkan.
Penggunaan buku, Thonny, dan Pydroid 3 secara bergantian memastikan seluruh siswa tetap aktif meskipun jumlah komputer terbatas. Buku digunakan untuk merancang dan menganalisis, Thonny digunakan untuk implementasi serta debugging, sedangkan Pydroid 3 digunakan untuk menjalankan dan menguji program melalui HP Android.
Kegiatan ini menggambarkan alur kerja industri perangkat lunak: menganalisis kebutuhan, merancang algoritma, menulis kode, melakukan pengujian, menemukan bug, memperbaiki program, mendokumentasikan hasil, dan mempresentasikan solusi.

0 Comments