0 dari 5 soal kertas sudah kamu periksa sendiri (evaluasi mandiri)
Beberapa soal belum dikerjakan. Kamu tetap bisa membaca panduan, tetapi sebaiknya kerjakan dulu agar evaluasi lebih bermakna.
Angka di atas menunjukkan aktivitas dan penilaian dirimu, bukan nilai penguasaan materi.
Soal 1: Sistem antrean dengan prioritas
Belum dikerjakan
Deskripsi soal
Sebuah sistem antrean harus melayani pelanggan berdasarkan urutan kedatangan. Pelanggan prioritas boleh didahulukan dari pelanggan reguler, tetapi selama masih ada pelanggan reguler yang menunggu, paling banyak 3 pelanggan prioritas boleh dilayani berturut-turut. Jika tidak ada pelanggan reguler yang menunggu, pelanggan prioritas tetap dilayani. Pelanggan baru dapat datang kapan saja.
Buatlah algoritma yang memenuhi aturan tersebut. Tentukan sendiri masalah utama, tujuan, informasi yang relevan, aturan dan batasan, serta urutan langkah penyelesaiannya.
Tujuan latihan
Melatih merancang algoritma dengan aturan yang saling berimbang.
Panduan jawaban / contoh solusi
Masalah utama: menyeimbangkan prioritas dengan keadilan bagi pelanggan reguler.
2. Selama masih ada pelanggan yang menunggu, ulangi langkah 3 dan 4.
3. Jika ada pelanggan prioritas DAN (tidak ada pelanggan reguler menunggu ATAU prioritasBerturut < 3): layani prioritas paling awal. Jika saat itu ada pelanggan reguler menunggu, tambah prioritasBerturut 1.
4. Jika tidak: layani pelanggan reguler paling awal dan setel prioritasBerturut = 0.
5. Pelanggan baru masuk ke antrean sesuai jenisnya. Berhenti jika tidak ada yang menunggu.
Uji: 5 prioritas (P1-P5) dan 2 reguler (R1-R2) menunggu bersamaan menghasilkan urutan P1, P2, P3, R1, P4, P5, R2.
Poin penting yang seharusnya ada
Dua kelompok pelanggan dibedakan dan masing-masing tetap urut kedatangan.
Ada penghitung prioritas berturut-turut dengan batas 3.
Penghitung di-reset setelah pelanggan reguler dilayani.
Kasus tanpa pelanggan reguler ditangani agar prioritas tetap dilayani.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan
Soal 2: Inventaris dengan stok minimum
Belum dikerjakan
Deskripsi soal
Sebuah gudang mencatat barang masuk dan barang keluar. Setiap barang punya stok minimum. Barang keluar tidak boleh melebihi stok yang tersedia. Jika setelah transaksi stok berada di bawah stok minimum, sistem membuat satu peringatan pemesanan ulang, dan tidak boleh membuat peringatan baru lagi sampai stok kembali mencapai minimal stok minimum.
Rancang algoritma untuk memproses satu transaksi (masuk atau keluar) beserta aturan peringatannya.
Tujuan latihan
Melatih merancang algoritma dengan status yang harus diingat antar transaksi.
Panduan jawaban / contoh solusi
Data per barang: stok, stokMinimum, peringatanAktif (benar/salah).
1. Baca barang, jenis transaksi, dan jumlah. Jika jumlah <= 0, tolak transaksi.
2. Jika jenis = masuk: stok = stok + jumlah. Jika stok >= stokMinimum, setel peringatanAktif = salah.
3. Jika jenis = keluar: jika jumlah > stok, tolak dengan pesan "Stok tidak cukup" dan berhenti.
4. Jika diterima: stok = stok - jumlah.
5. Setelah barang keluar, jika stok < stokMinimum DAN peringatanAktif = salah: buat peringatan pemesanan ulang dan setel peringatanAktif = benar.
6. Simpan stok terbaru dan tampilkan hasil transaksi.
Poin penting yang seharusnya ada
Transaksi keluar ditolak jika melebihi stok.
Peringatan dibuat hanya saat stok turun di bawah minimum.
Ada penanda peringatanAktif agar peringatan tidak berulang.
Penanda dikembalikan saat stok kembali mencapai minimum.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan
Soal 3: Sistem peminjaman alat
Belum dikerjakan
Deskripsi soal
Sebuah laboratorium meminjamkan alat kepada anggota dengan aturan: satu anggota maksimal memiliki 3 pinjaman aktif; anggota yang masih punya denda belum lunas tidak boleh meminjam; alat harus berstatus tersedia; lama pinjam 7 hari. Jika dikembalikan terlambat, denda Rp1.000 per hari keterlambatan. Pelunasan denda terjadi di luar algoritma ini; algoritma hanya membaca status denda anggota.
Rancang algoritma untuk proses peminjaman dan proses pengembalian.
Tujuan latihan
Melatih merancang dua alur proses yang saling berhubungan dengan banyak syarat.
Panduan jawaban / contoh solusi
PEMINJAMAN:
1. Baca anggota dan alat.
2. Jika anggota punya denda belum lunas, tolak dengan alasan denda.
3. Jika pinjaman aktif anggota >= 3, tolak dengan alasan batas pinjaman.
4. Jika alat tidak tersedia, tolak dengan alasan alat tidak tersedia.
5. Jika semua syarat terpenuhi: catat pinjaman, tenggat = hari ini + 7 hari, ubah status alat menjadi dipinjam, tambah pinjaman aktif anggota 1.
PENGEMBALIAN:
1. Baca alat yang dikembalikan dan cari pinjaman aktifnya.
2. Hitung hariTerlambat = tanggal kembali - tenggat. Jika negatif, setel 0.
3. Jika hariTerlambat > 0, denda = hariTerlambat × 1000 dan tambahkan ke denda anggota.
4. Ubah status alat menjadi tersedia dan kurangi pinjaman aktif anggota 1.
Poin penting yang seharusnya ada
Tiga syarat peminjaman diperiksa sebelum peminjaman dicatat.
Alasan penolakan dibedakan.
Tenggat dihitung 7 hari dari tanggal pinjam.
Denda hanya dihitung saat terlambat dan status alat serta pinjaman anggota diperbarui.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan
Soal 4: Pemesanan dengan kondisi pembayaran
Belum dikerjakan
Deskripsi soal
Sebuah toko online mencadangkan stok selama 30 menit setelah pesanan dibuat. Jika pembayaran berhasil dalam 30 menit, pesanan diproses. Jika pembayaran gagal atau waktu habis, stok yang dicadangkan dilepas kembali. Jika pembayaran ternyata masuk setelah waktu habis, pesanan hanya diproses jika stok masih tersedia, sedangkan jika tidak, dana dikembalikan.
Rancang algoritma yang menangani seluruh kondisi tersebut.
Tujuan latihan
Melatih merancang alur dengan kondisi waktu dan keadaan yang bercabang.
Panduan jawaban / contoh solusi
1. Pesanan dibuat: jika stok >= jumlah pesan, kurangi stok tersedia (cadangkan) dan catat waktuBuat. Jika tidak, tolak pesanan.
2. Tunggu hasil pembayaran atau waktu mencapai waktuBuat + 30 menit.
3. Jika pembayaran berhasil dan waktu <= batas: ubah status menjadi diproses.
4. Jika pembayaran gagal: lepas cadangan (tambahkan stok kembali), status dibatalkan.
5. Jika waktu habis tanpa pembayaran: lepas cadangan, status kedaluwarsa.
6. Jika pembayaran masuk setelah status kedaluwarsa: jika stok tersedia >= jumlah, cadangkan lagi dan proses pesanan. Jika tidak, kembalikan dana dan status dibatalkan.
Pastikan pelepasan cadangan hanya terjadi satu kali per pesanan.
Poin penting yang seharusnya ada
Stok dicadangkan saat pesanan dibuat.
Tiga hasil dibedakan: berhasil tepat waktu, gagal atau habis waktu, dan masuk terlambat.
Cadangan stok dilepas pada kegagalan dan kedaluwarsa, dan tidak dilepas dua kali.
Pembayaran terlambat memeriksa stok sebelum diproses atau dana dikembalikan.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan
Soal 5: Penjadwalan tugas dengan batasan
Belum dikerjakan
Deskripsi soal
Seorang pekerja mengerjakan sejumlah tugas satu per satu. Setiap tugas punya durasi (jam, paling lama 8 jam), tenggat (hari ke-berapa), dan mungkin harus menunggu tugas lain selesai lebih dulu (ketergantungan). Pekerja hanya bekerja 8 jam per hari, tidak mengerjakan dua tugas sekaligus, dan setiap tugas harus selesai tuntas dalam satu hari (tidak dipecah).
Rancang algoritma yang menyusun jadwal pengerjaan dan menandai tugas yang selesai setelah tenggatnya. Jadwal tidak harus yang paling optimal, tetapi harus mematuhi semua aturan.
Tujuan latihan
Melatih merancang algoritma pemilihan dengan ketergantungan dan batas kapasitas.
Panduan jawaban / contoh solusi
Data: daftar tugas (durasi, tenggat, prasyarat), jam tersisa hari ini = 8, hari = 1.
1. Selama masih ada tugas yang belum selesai, ulangi langkah 2 sampai 6.
2. Kumpulkan tugas siap: semua prasyaratnya sudah selesai.
3. Jika tidak ada tugas siap padahal masih ada tugas tersisa, ada ketergantungan melingkar: tampilkan peringatan dan berhenti.
4. Dari tugas siap, pilih yang tenggatnya paling awal (jika sama, pilih durasi terpendek).
5. Jika jam tersisa hari ini < durasi tugas, pindah ke hari berikutnya: hari = hari + 1 dan jam tersisa = 8.
6. Jadwalkan tugas pada hari tersebut, kurangi jam tersisa, tandai selesai. Jika hari penyelesaian > tenggat, tandai "terlambat".
7. Tampilkan jadwal dan daftar tugas terlambat.
Poin penting yang seharusnya ada
Tugas hanya dimulai jika semua prasyaratnya selesai.
Pemilihan berdasarkan tenggat paling awal.
Batas 8 jam per hari ditegakkan dan pergantian hari ditangani.
Tugas terlambat ditandai dan ketergantungan melingkar terdeteksi.
Kriteria evaluasi
Kejelasan dan ketepatan pemahaman masalah
Kelogisan alur pemikiran dan tahapan solusi
Kesesuaian solusi dengan seluruh aturan dan batasan yang ditentukan