Pages

Friday, May 25, 2012

Program Daftar Nilai Mahasiswa (Bahasa Pascal)

program Daftar_Nilai_Mahasiswa;

uses crt;
const
  maks_mhs=5;
type
  Data_Mhs = record
    NIM, Nama : string;
    Nilai     : integer;
    Indeks    : char;
  end;
  Array_Mhs = array[1..maks_mhs] of Data_Mhs;
var
  Mhs : Array_Mhs;
  i, j, jumA, jumB, jumC, jumD, jumE : integer;
  tinggi, rendah: integer;
  total_nilai, rata_nilai: real;

begin
  gotoxy(29,1);write('DAFTAR NILAI MAHASISWA');
  gotoxy(29,2);write('----------------------');
  gotoxy(16,4);
  write('===============================================');
  gotoxy(16,5);
  write('| NO |   NIM    |    NAMA    | NILAI | INDEKS |');
  gotoxy(16,6);
  write('-----------------------------------------------');

  {Inisialisasi}
  i:=1;
  jumA:=0; jumB:=0; jumC:=0; jumD:=0; jumE:=0;
  total_nilai:=0;

  gotoxy(16,7);
  write('|    |          |            |       |        |');
  {Menampilkan nomor urut pertama}
  gotoxy(18,7);write(i);

  {Memasukkan NIM pertama}
  gotoxy(23,7);readln(Mhs[i].NIM);

  {Mengecek apakah NIM yang dimasukkan 'stop' atau bukan}
  while(Mhs[i].NIM <> 'stop') and (i <= maks_mhs) do
  begin
    {Memasukkan Nama}
    gotoxy(34,i+6);readln(Mhs[i].Nama);
    {Memasukkan Nilai}
    gotoxy(48,i+6);readln(Mhs[i].Nilai);

    {Menentukan Indeks Nilai}
    case (Mhs[i].Nilai) of
      80..100: begin
                 Mhs[i].Indeks := 'A';
                 jumA := jumA + 1;
               end;
      70..79 : begin
                 Mhs[i].Indeks := 'B';
                 jumB := jumB + 1;
               end;
      60..69 : begin
                 Mhs[i].Indeks := 'C';
                 jumC := jumC + 1;
               end;
      50..59 : begin
                 Mhs[i].Indeks := 'D';
                 jumD := jumD + 1;
               end;
      0..49  : begin
                 Mhs[i].Indeks := 'E';
                 jumE := jumE + 1;
               end;
     end; {endcase}
     {Menampilkan Indekas Nilai}
     gotoxy(58,i+6);write(Mhs[i].Indeks);

     {Menghitung Total Nilai}
     total_nilai := total_nilai + Mhs[i].Nilai;

     {Menambah indeks berikutnya}
     i:= i+1;

     gotoxy(16,i+6);
     write('|    |          |            |       |        |');
     {Menampilkan nomor urut pertama}
      gotoxy(18,i+6);write(i);

      {Memasukkan NIM berikutnya}
      gotoxy(23,i+6);readln(Mhs[i].NIM);
  end; {endwhile}
  gotoxy(16,i+6);
  write('-----------------------------------------------');

  {Menghitung rata-rata nilai}
  i:= i-1;   {banyaknya data}
  rata_nilai:= total_nilai/i;

  {Menampikan Rata-rata Nilai}
  gotoxy(16,i+9);
  write('Rata-rata Nilai : ',rata_nilai:0:1);

  {Menentukan nilai tertinggi dan terendah}
  tinggi:=Mhs[1].Nilai;
  rendah:=Mhs[1].Nilai;
  for j:= 2 to i do
    begin
    if (Mhs[j].Nilai >= tinggi)
      then
       tinggi:=Mhs[j].Nilai;

    if (Mhs[j].Nilai <= rendah)
      then
       rendah:=Mhs[j].Nilai;
  end;
  {Menampilkan Nilai Tertinggi dan Nilai Terendah}
  gotoxy(16,i+10);
  write('Nilai Tertinggi : ',tinggi);
  gotoxy(16,i+11);
  write('Nilai Terendah  : ',rendah);

  {Menampilkan jumlah per indeks}
  gotoxy(16,i+12);
  write('Jumlah Indeks A : ',jumA,' Mahasiswa');
  gotoxy(16,i+13);
  write('Jumlah Indeks B : ',jumB,' Mahasiswa');
  gotoxy(16,i+14);
  write('Jumlah Indeks C : ',jumC,' Mahasiswa');
  gotoxy(16,i+15);
  write('Jumlah Indeks D : ',jumD,' Mahasiswa');
  gotoxy(16,i+16);
  write('Jumlah Indeks E : ',jumE,' Mahasiswa');
  readln;
end.

2 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. gan, bisa bantu ane buatin contoh program pascal tentang linked list yg berkaitan dengan create, update, insert, delete. tolong kirimin jwaban ente ke email ane yg ini ya gan akbarsaladin77@gmail.com .smoga ente mw bantu ane. trimksh;)

    ReplyDelete