MATA KULIAH: ALGORITMA DASAR
Soal Praktikum: Program Perhitungan Nilai Mahasiswa
Deskripsi:
Buatlah sebuah program Python sederhana untuk menghitung nilai akhir mahasiswa dan menentukan grade serta status kelulusan.
Spesifikasi Program:
-
Input Data Mahasiswa:
- Program meminta input jumlah mahasiswa (minimal 3 mahasiswa)
- Untuk setiap mahasiswa, input:
- Nama mahasiswa
- Nilai Tugas (0-100)
- Nilai UTS (0-100)
- Nilai UAS (0-100)
-
Validasi Input:
- Semua nilai harus dalam range 0-100
- Jika input tidak valid, tampilkan pesan error dan minta input ulang
- Nama tidak boleh kosong
-
Perhitungan:
- Hitung nilai akhir dengan bobot:
- Tugas: 30%
- UTS: 30%
- UAS: 40%
- Hitung nilai akhir dengan bobot:
-
Tentukan grade berdasarkan nilai akhir:
- A: >= 80
- B: 70-79
- C: 60-69
- D: 50-59
- E: < 50
-
Tentukan status:
- LULUS jika nilai akhir >= 60
- TIDAK LULUS jika nilai akhir < 60
-
Output:
Program harus menampilkan:
- Tabel hasil untuk setiap mahasiswa (Nama, Tugas, UTS, UAS, Nilai Akhir, Grade, Status)
- Nilai rata-rata kelas
- Jumlah mahasiswa yang lulus dan tidak lulus
Ketentuan Teknis:
- Gunakan bahasa pemrograman Python
- Gunakan minimal 2 fungsi:
- Fungsi untuk menghitung nilai akhir dan grade
- Fungsi untuk menampilkan hasil
- Gunakan struktur perulangan (for/while) untuk input dan proses data
- Gunakan percabangan (if-elif-else) untuk menentukan grade dan status
- Kode harus rapi dengan komentar yang jelas
Contoh Output yang Diharapkan:
=== PROGRAM PERHITUNGAN NILAI MAHASISWA ===
Masukkan jumlah mahasiswa: 3
--- Input Mahasiswa ke-1 ---
Nama: Ahmad Fauzi
Nilai Tugas (0-100): 85
Nilai UTS (0-100): 80
Nilai UAS (0-100): 90
--- Input Mahasiswa ke-2 ---
Nama: Siti Nurhaliza
Nilai Tugas (0-100): 75
Nilai UTS (0-100): 70
Nilai UAS (0-100): 65
--- Input Mahasiswa ke-3 ---
Nama: Budi Santoso
Nilai Tugas (0-100): 50
Nilai UTS (0-100): 55
Nilai UAS (0-100): 45
=== HASIL PERHITUNGAN NILAI ===
--------------------------------------------------------------------
No | Nama | Tugas | UTS | UAS | N.Akhir | Grade | Status
--------------------------------------------------------------------
1 | Ahmad Fauzi | 85 | 80 | 90 | 85.50 | A | LULUS
2 | Siti Nurhaliza | 75 | 70 | 65 | 69.50 | C | LULUS
3 | Budi Santoso | 50 | 55 | 45 | 49.50 | E | TIDAK LULUS
--------------------------------------------------------------------
=== RINGKASAN ===
Rata-rata Kelas : 68.17
Jumlah Lulus : 2 mahasiswa
Jumlah Tidak Lulus: 1 mahasiswa
Yang Harus Diserahkan:
- Source code Python lengkap dengan komentar (.py)
- Screenshot hasil running program dengan minimal 3 data mahasiswa
Format Pengumpulan:
- File dengan nama:
NIM_Nama_UTS.py - Contoh:
2101234567_AhmadFauzi_UTS.py
Kriteria Penilaian:
- Input dan validasi data (20%)
- Perhitungan nilai akhir dan grade (30%)
- Penggunaan fungsi (20%)
- Penggunaan struktur perulangan dan percabangan (20%)
- Output dan kerapian kode (10%)
Waktu Pengerjaan: 1 Minggu
Presentasi: Setiap mahasiswa akan mempresentasikan hasil kerjanya selama 10-15 menit
BAGIAN B: SOAL LISAN (10 Soal - Akan Ditanyakan 3 Secara Acak)
Soal Lisan 1: Karakteristik Algoritma
Pertanyaan:
Sebutkan dan jelaskan minimal 4 dari 5 karakteristik algoritma yang baik! Berikan contoh konkret untuk masing-masing karakteristik tersebut.
Materi: Bab 1 - Pengenalan Algoritma
Soal Lisan 2: Tipe Data dan Operator Logika
Pertanyaan:
Jelaskan perbedaan antara operator logika AND dan OR! Berikan contoh kasus penggunaan dalam kehidupan sehari-hari dan dalam pemrograman. Serta apa hasil dari ekspresi berikut? Jelaskan!
True and FalseTrue or Falsenot True
Materi: Bab 3 - Struktur Runtunan
Soal Lisan 3: Perbedaan Jenis Loop
Pertanyaan:
Jelaskan perbedaan mendasar antara while loop dan do-while loop (dalam Python menggunakan while True dengan break)! Berikan contoh kode Python untuk masing-masing dan jelaskan kapan lebih tepat menggunakannya.
Materi: Bab 5 - Struktur Perulangan
Soal Lisan 4: Simbol Flowchart dan Fungsinya
Pertanyaan:
Sebutkan dan gambarkan minimal 5 simbol flowchart standar (ISO 5807) beserta fungsinya masing-masing! Berikan contoh penggunaan konkret untuk setiap simbol.
Materi: Bab 2 - Notasi dan Representasi Algoritma
Soal Lisan 5: Operator dan Prioritas
Pertanyaan:
Hitung hasil ekspresi berikut dengan urutan prioritas operator yang benar:
hasil = 10 + 3 * 2**2 - 8 / 4
Jelaskan langkah-langkah perhitungan Anda sesuai urutan prioritas operator!
Materi: Bab 3 - Struktur Runtunan
Soal Lisan 6: Nested Loop - Analisis Kompleksitas
Pertanyaan:
Perhatikan kode Python berikut:
n = 3
for i in range(1, n+1):
for j in range(1, n+1):
print(i * j, end=" ")
print()
a) Jika n = 3, berapa kali statement print(i * j) akan dieksekusi?
b) Berapa kompleksitas waktu (time complexity) dari algoritma ini?
c) Jelaskan mengapa nested loop bisa menjadi masalah untuk performa jika n sangat besar!
Materi: Bab 5 - Struktur Perulangan
Soal Lisan 7: Struktur Perulangan FOR
Pertanyaan:
a) Jelaskan kapan kita sebaiknya menggunakan FOR loop dibandingkan WHILE loop! Berikan 1 contoh kasus yang lebih tepat menggunakan FOR loop!
Materi: Bab 5 - Struktur Perulangan
Soal Lisan 8: Break vs Continue
Pertanyaan:
Jelaskan perbedaan antara statement break dan continue dalam perulangan! Berikan contoh kode Python untuk masing-masing yang menunjukkan output berbeda.
Materi: Bab 5 - Struktur Perulangan
Soal Lisan 9: Multiple IF vs Nested IF
Pertanyaan:
Jelaskan perbedaan antara struktur Multiple IF-ELIF dengan Nested IF dalam Python! Kapan lebih tepat menggunakan IF-ELIF dan kapan menggunakan Nested IF? Berikan contoh kode untuk masing-masing!
Materi: Bab 4 - Struktur Percabangan
Soal Lisan 10: Algoritma vs Program
Pertanyaan:
Jelaskan perbedaan fundamental antara algoritma dan program komputer! Mengapa kita perlu mempelajari algoritma terlebih dahulu sebelum langsung coding? Berikan contoh konkret!
Materi: Bab 1 - Pengenalan Algoritma
PETUNJUK PELAKSANAAN UJIAN LISAN
Untuk Mahasiswa:
- Setiap mahasiswa akan dipanggil secara acak
- Akan diberikan 3 soal lisan dari 10 soal yang tersedia (dipilih secara acak)
- Waktu menjawab: maksimal 1 menit per soal
- Boleh menggunakan kertas untuk menggambar/menulis saat menjelaskan
- Nilai berdasarkan:
- Ketepatan jawaban (50%)
- Kemampuan menjelaskan (30%)
- Contoh yang diberikan (20%)
BOBOT PENILAIAN UTS
- Soal Praktikum: 50%
- Soal Lisan: 50%
Nilai Akhir UTS = (Nilai Praktikum × 50%) + (Nilai Lisan × 50%)
CATATAN PENTING
- Kejujuran Akademik: Segala bentuk plagiarisme atau kecurangan akan mendapat sanksi tegas
- Presentasi: Mahasiswa harus bisa menjelaskan setiap baris kode yang ditulisnya
- Bantuan: Boleh menggunakan dokumentasi Python resmi atau AI, tidak boleh copy-paste kode dari internet
Selamat mengerjakan dan semoga sukses!
Mata Kuliah: Algoritma Dasar
Top comments (0)