0% found this document useful (0 votes)
12 views4 pages

Alpro

The document is a Pascal program designed to process student data, including their names, NIMs, scores, and indices. It includes functions to calculate averages, maximum and minimum scores, pass and fail counts, and percentages of students passing or failing. The program also displays the data in a formatted manner after receiving input from the user.

Uploaded by

reza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views4 pages

Alpro

The document is a Pascal program designed to process student data, including their names, NIMs, scores, and indices. It includes functions to calculate averages, maximum and minimum scores, pass and fail counts, and percentages of students passing or failing. The program also displays the data in a formatted manner after receiving input from the user.

Uploaded by

reza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

program MengolahDataMahasiswa;

uses
crt;
const
maks_array = 50;
type
mhsrecord = record
nim, nama: string;
nilai: integer;
indeks: char;
end;
{Larik1 = array[1..maks_array] of string;
Larik2 = array[1..maks_array] of integer;
Larik3 = array[1..maks_array] of char;}
mahasiswa = array[1..maks_array] of mhsrecord;
var
n : integer;
{nim, nama : Larik1;
nilai : Larik2;
indeks : Larik3;}
mhs : mahasiswa;
procedure JumlahData(var N : integer);
{I.S.: user memasukkan banyaknya data mahasiswa(n)}
{F.S.: menghasilkan banyaknya data mahasiswa(n)}
begin
write('Banyaknya Data Mahasiswa : ');
readln(N);
while(N <= 0) or (n > maks_array) do
begin
writeln('Banyaknya Data Hanya Antara 1-',maks_array);
readln;
gotoxy(1,2);clreol;
gotoxy(28,1);clreol;readln(N);
end;
end;

function IndeksNilai(nilai : integer):char;


{I.S.: Nilai Sudah Terdefenisi}
{F.S.: Menghasilkan fungsi indeks nilai}
begin
case nilai of
80..100 : IndeksNilai := 'A';
70..79 : IndeksNilai := 'B';
60..69 : IndeksNilai := 'C';
50..59 : IndeksNilai := 'D';
0..49 : IndeksNilai := 'E';
end; //endcase
end;//endfunction

function RataRataNilai(n:integer;total:real):real;
{I.S.:}
{F.S.:}
begin
RataRataNilai := total / n;
end;//endfunction

function NilaiMaks(n: integer;mhs: mahasiswa) : integer;


{I.S.:}
{F.s.:}
var
i,maks:integer;
begin
maks := mhs[1].nilai;
for i := 2 to n do
begin
if(mhs[i].nilai > maks) then
maks := mhs[i].nilai
end;
NilaiMaks := maks
end;

function NilaiMin(n: integer;mhs: mahasiswa) : integer;


{I.S.:}
{F.s.:}
var
i,min:integer;
begin
min := mhs[1].nilai;
for i := 2 to n do
begin
if(mhs[i].nilai < min) then
min := mhs[i].nilai
end;
NilaiMin := min
end;

function JmlLulus(n:integer;mhs:mahasiswa) : real;


{I.S.:}
{F.S.:}
var
i: integer;
counter: real;
begin
counter := 0;
for i := 1 to n do
begin
if(mhs[i].indeks < 'E') then
counter := counter + 1
end;
JmlLulus := counter;
end;

function JmlTdkLulus(n:integer;mhs:mahasiswa) : integer;


{I.S.:}
{F.S.:}
var
i,counter: integer;
begin
counter := 0;
for i := 1 to n do
begin
if(mhs[i].indeks < 'E') then
counter := counter + 1
end;
JmlTdkLulus := n - counter;
end;
function PersentaseLulus(n:integer;mhs: mahasiswa): real;
{I.S.:}
{F.S.:}
begin
PersentaseLulus := (JmlLulus(n,mhs) / n) * 100;
end;

function PersentaseTdkLulus(n:integer;mhs: mahasiswa): real;


{I.S.:}
{F.S.:}
begin
PersentaseTdkLulus := ((n - JmlLulus(n,mhs)) / n) * 100;
end;

procedure JmlMhsPerIndeks(n,y:integer; mhs: mahasiswa);


{I.S.:}
{F.S.:}
var
i: integer;
indeks_counter : array[1..5] of integer;
begin
for i := 1 to 5 do
begin
indeks_counter[i] := 0;
end;
for i := 1 to n do
begin
case mhs[i].indeks of
'A' : indeks_counter[1] := indeks_counter[1] + 1;
'B' : indeks_counter[2] := indeks_counter[2] + 1;
'C' : indeks_counter[3] := indeks_counter[3] + 1;
'D' : indeks_counter[4] := indeks_counter[4] + 1;
'E' : indeks_counter[5] := indeks_counter[5] + 1;
end;
end;
gotoxy(11,y+1);
writeln('Indeks Nilai A Berjumlah = ',indeks_counter[1]);
gotoxy(11,y+2);
writeln('Indeks Nilai B Berjumlah = ',indeks_counter[2]);
gotoxy(11,y+3);
writeln('Indeks Nilai C Berjumlah = ',indeks_counter[3]);
gotoxy(11,y+4);
writeln('Indeks Nilai D Berjumlah = ',indeks_counter[4]);
gotoxy(11,y+5);
writeln('Indeks Nilai E Berjumlah = ',indeks_counter[5]);
end;

procedure TampilData(n:integer);
{I.S.: Banyaknya data sudah terdefenisi}
{F.S.: Menampilkan daftar nilai mahasiswa}
var
i,total:integer;
begin
total := 0;
clrscr;
gotoxy(29,1);writeln('DAFTAR NILAI MAHASISWA');
gotoxy(11,2);
writeln('--------------------------------------------------------');
gotoxy(11,3);
writeln('| NO | N I M | NAMA MAHASISWA | NILAI | INDEKS |');
gotoxy(11,4);
writeln('--------------------------------------------------------');
for i:= 1 to n do
begin
gotoxy(11,i+4);
writeln('| | | | | |');
gotoxy(13,i+4);write(i);
gotoxy(18,i+4);readln(mhs[i].nim);
gotoxy(30,i+4);readln(mhs[i].nama);
gotoxy(52,i+4);readln(mhs[i].nilai);
//validasi nilai
while(mhs[i].nilai <= 0) do
begin
gotoxy(11,i+6);write('Nilai Tidak Boleh < 1, tekan enter untuk mengisi
ulang');
readln;
gotoxy(11,i+6);clreol;
gotoxy(52,i+4);readln(mhs[i].nilai);
end;
mhs[i].indeks := IndeksNilai(mhs[i].nilai);
gotoxy(62,i+4);write(mhs[i].indeks);
total := total + mhs[i].nilai;
end;//endfor
gotoxy(11,i+5);
writeln('--------------------------------------------------------');
gotoxy(11,i+6);
writeln('Rata-rata nilai dari ',n,' data = ', RataRataNilai(n,total):0:1);
gotoxy(11,i+7);
writeln('Nilai Tertinggi = ', NilaiMaks(n,mhs));
gotoxy(11,i+8);
writeln('Nilai Terendah = ', NilaiMin(n,mhs));
gotoxy(11,i+9);
writeln('Jumlah Lulus = ', JmlLulus(n,mhs):0:0,' Mahasiswa');
gotoxy(11,i+10);
writeln('Persentase Lulus = ', PersentaseLulus(n,mhs):0:1,'%');
gotoxy(11,i+11);
writeln('Persentase Tidak Lulus = ', PersentaseTdkLulus(n,mhs):0:1,'%');
gotoxy(11,i+12);
writeln('Jumlah Tidak Lulus = ', JmlTdkLulus(n,mhs),' Mahasiswa');
i := i + 12;
JmlMhsPerIndeks(n,i,mhs);
end; //endprocedure

{Algoritma Utama}
begin
JumlahData(n);
TampilData(n);
readln;
end.

You might also like