Evaluasi: Tahap 1 · Hard

Ringkasan latihan

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.

Data: antrean prioritas dan antrean reguler (masing-masing urut kedatangan), penghitung prioritasBerturut = 0, batas = 3.

1. Mulai. Setel prioritasBerturut = 0.

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

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

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

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

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

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

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

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

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

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

‹ Kembali ke level Kembali ke tahap