PROGRAM :
program SistemNilai;
uses crt;
var
nama: string;
tugas, uts, uas, nilaiAkhir: real;
grade: char;
function HitungNilai(t, u, ua: real): real;
begin
HitungNilai := (t * 0.3) + (u * 0.3) + (ua * 0.4);
end;
procedure TentukanGrade(n: real);
begin
if n >= 85 then grade := 'A'
else if n >= 75 then grade := 'B'
else if n >= 65 then grade := 'C'
else if n >= 50 then grade := 'D'
else grade := 'E';
end;
begin
clrscr;
writeln('=== SISTEM PENILAIAN MAHASISWA ===');
write('Nama: '); readln(nama);
write('Nilai Tugas: '); readln(tugas);
write('Nilai UTS: '); readln(uts);
write('Nilai UAS: '); readln(uas);
nilaiAkhir := HitungNilai(tugas, uts, uas);
TentukanGrade(nilaiAkhir);
writeln('Nilai Akhir: ', nilaiAkhir:0:2);
writeln('Grade: ', grade);
if grade <> 'E' then
writeln('Keterangan: LULUS')
else
writeln('Keterangan: TIDAK LULUS');
readln;
end.
PENJELASAN PROGRAM PASCAL :
Siap 🔥
Sekarang kita bedah program ini seperti kamu lagi ngajarin di kelas sebagai asdos.
📌 1️⃣ Bagian Header Program
program SistemNilai;
uses crt;
🔎 Penjelasan:
• program SistemNilai;
→ Nama programnya adalah SistemNilai.
• uses crt;
→ Menggunakan library CRT (Cathode Ray Tube).
Fungsinya untuk:
o clrscr; → Membersihkan layar
o Mengatur tampilan console
📌 2️⃣ Bagian Deklarasi Variabel
var
nama: string;
tugas, uts, uas, nilaiAkhir: real;
grade: char;
🔎 Penjelasan:
Variabel Tipe Data Fungsi
nama string Menyimpan nama mahasiswa
tugas real Nilai tugas
uts real Nilai UTS
uas real Nilai UAS
nilaiAkhir real Hasil perhitungan akhir
grade char Huruf nilai (A–E)
Kenapa pakai real?
Karena ada angka desimal (misalnya 82.5).
📌 3️⃣ Function HitungNilai
function HitungNilai(t, u, ua: real): real;
begin
HitungNilai := (t * 0.3) + (u * 0.3) + (ua * 0.4);
end;
🔎 Penjelasan:
Ini adalah function (fungsi yang mengembalikan nilai).
Parameter:
• t → tugas
• u → uts
• ua → uas
Mengembalikan nilai akhir dengan rumus:
NA=(t∗0.3)+(u∗0.3)+(ua∗0.4)NA = (t * 0.3) + (u * 0.3) + (ua *
0.4)NA=(t∗0.3)+(u∗0.3)+(ua∗0.4)
Artinya:
• Tugas 30%
• UTS 30%
• UAS 40%
Kenapa pakai function?
✔ Supaya kode rapi
✔ Bisa dipanggil berkali-kali
✔ Konsep modular programming
📌 4️⃣ Procedure TentukanGrade
procedure TentukanGrade(n: real);
begin
if n >= 85 then grade := 'A'
else if n >= 75 then grade := 'B'
else if n >= 65 then grade := 'C'
else if n >= 50 then grade := 'D'
else grade := 'E';
end;
🔎 Penjelasan:
Ini adalah procedure (tidak mengembalikan nilai).
Parameter:
• n → nilai akhir
Logika:
• ≥ 85 → A
• ≥ 75 → B
• ≥ 65 → C
• ≥ 50 → D
• < 50 → E
Kenapa pakai procedure?
✔ Karena hanya mengubah variabel global grade
✔ Tidak perlu return nilai
📌 5️⃣ Program Utama (Main Program)
begin
Semua kode di dalam ini akan dijalankan.
🔹 Membersihkan Layar
clrscr;
Membersihkan tampilan console.
🔹 Input Data
write('Nama: '); readln(nama);
write('Nilai Tugas: '); readln(tugas);
write('Nilai UTS: '); readln(uts);
write('Nilai UAS: '); readln(uas);
Mahasiswa mengisi:
• Nama
• Nilai tugas
• Nilai UTS
• Nilai UAS
🔹 Memanggil Function
nilaiAkhir := HitungNilai(tugas, uts, uas);
Artinya:
• Panggil function
• Simpan hasilnya ke nilaiAkhir
🔹 Menentukan Grade
TentukanGrade(nilaiAkhir);
Procedure ini:
• Mengecek nilai akhir
• Mengisi variabel grade
🔹 Menampilkan Hasil
writeln('Nilai Akhir: ', nilaiAkhir:0:2);
:0:2 artinya:
• Tampilkan 2 angka di belakang koma
Contoh:
83.75
writeln('Grade: ', grade);
Menampilkan huruf nilai.
🔹 Menentukan Lulus/Tidak
if grade <> 'E' then
Artinya:
• Jika grade bukan E → LULUS
• Jika E → TIDAK LULUS
Operator <> artinya “tidak sama dengan”.
🎯 Alur Logika Program
1. Input data
2. Hitung nilai akhir
3. Tentukan grade
4. Tentukan lulus/tidak
5. Tampilkan hasil
🎓 Konsep Yang Bisa Kamu Tekankan
Saat Mengajar
Sebagai asdos, kamu bisa jelaskan:
• Perbedaan function & procedure
• Parameter
• Return value
• Percabangan bertingkat
• Modular programming
• Format output angka
🔥 Kalau Mau Naik Level
Kamu bisa kasih challenge:
1️⃣ Tambahkan validasi nilai (tidak boleh >100)
2️⃣ Bisa input 5 mahasiswa (pakai loop & array)
3️⃣ Tambahkan predikat (Sangat Baik, Baik, Cukup)
4️⃣ Tambahkan menu ulang program