Jumat, 03 Februari 2012
Share this Article on :


Program pascal dalam perhitungan IPK
menggunakan metode pointer & array.


Code:
{ ------------------------------------- }
{ PROGRAM HITUNG IPK                    }
{ MENGGUNAKAN METODE POINTER & ARRAY    }
{ ------------------------------------- }
{ Dibuat Oleh : Dhe2Mo2N              }
{              dhedhe.love.momon@gmail.com }
{ ------------------------------------- }

Program Hit_IPK;
Uses crt;

const MaxMK = 150;

Type
  { Tabel Identitas Mahasiswa }
  TblMK = ^IDMK;
  IDMK  = record
            NamaMK    : string[30];
            SKS      : integer;
            Nilai    : char;
            BT        : byte;
            NextIDMK,
            PrevIDMK  : integer;  { Posisi Record }
          end;

Var
    NIM        : string[15];
    NamaMhs    : string[30];
    DosenWali  : string[30];
    Jurusan    : string[30];
    i, n      : byte;
    DataMK    : array [1..MaxMK] of TblMK;

    JMK,NL,
    IP,JBT,JSKS  :Integer;

procedure InputID;
var ch : char;
begin
  writeln('[1] Identitas Mahasiswa');
  writeln('-----------------------');
  write('NIM        : ');readln(NIM);
  write('Nama      : ');readln(NamaMhs);
  write('Jurusan    : ');readln(Jurusan);
  write('Dosen Wali : ');readln(DosenWali);
  writeln;
  write('Tekan sembarang tombol untuk melanjutkan...!');
  ch := readkey;
end;

procedure InputMK;
var ch : char;
begin
  clrscr;
  writeln('[2] Nilai Mahasiswa');
  writeln('-----------------------');
  write('Jumlah MK : ');readln(n);

  if (n > MaxMK) then
  begin
      write('Jumlah MK > ',MaxMK);
      halt;
  end
  else
  begin
      for i:=1 to n do
      begin
        new(DataMK[i]);
        writeln;
        writeln('Mata Kuliah (MK) ke-',i);
        writeln('-----------------------');
        write('Nama MK  : ');readln(DataMK[i]^.NamaMK);
        write('Jml SKS  : ');readln(DataMK[i]^.SKS);
        write('Nilai (A/B/C/D/E) : ');readln(DataMK[i]^.Nilai);

        with DataMK[i]^ do
        begin
            Nilai := upcase (Nilai);
            case Nilai of
              'A' :NL:=4;
              'B' :NL:=3;
              'C' :NL:=2;
              'D' :NL:=1;
            else NL:=0
            end;
            BT:=NL*SKS;
            JSKS:=JSKS+SKS;
            JBT:=JBT+BT;
        end;
      end;
  end;
  writeln;
  write('Tekan sembarang tombol untuk melanjutkan...!');
  ch := readkey;
end;

procedure ViewNilai;
var ch : char;
begin
  clrscr;
  writeln('[3] Tampilan Nilai');
  writeln('-----------------------');
  writeln('Hasil Perhitungan Indeks Prestasi (IP)');
  writeln;
  writeln('NIM        : ',NIM);
  writeln('Nama      : ',NamaMhs);
  writeln('Jurusan    : ',Jurusan);
  writeln('Dosen Wali : ',DosenWali);
  writeln;
  writeln('===================================================');
  writeln(' No  Mata Kuliah            Jml SKS      Nilai  ');
  writeln('===================================================');
  for I:=1 to n do
  begin
    with DataMK[i]^ do
    begin
        Gotoxy (2,I+12);write(I:2);
        Gotoxy (7,I+12);write(NamaMK);
        Gotoxy (33,I+12);write(SKS);
        Gotoxy (46,I+12);write(Nilai);
        writeln;
    end;
  end;
  writeln('---------------------------------------------------');
  writeln('Jumlah Mata Kuliah = ',N);
  writeln('Total SKS          = ',JSKS);
  writeln('Total Nilai        = ',JBT);
  writeln;
  write('IP yang diperoleh  = ',JBT/JSKS:0:3);
  writeln;
  writeln;
  write('<< SELESAI >> Tekan sembarang tombol untuk melanjutkan...!');
  ch := readkey;
end;

Begin  { Program UTAMA }
  clrscr;
  writeln('---------------------------------------');
  writeln(' PROGRAM HITUNG IPK                    ');
  writeln(' MENGGUNAKAN METODE POINTER & ARRAY    ');
  writeln('---------------------------------------');
  writeln(' Dibuat Oleh : Dhe2Mo2N              ');
  writeln('               dhedhe.love.momon@gmail.com ');
  writeln('---------------------------------------');
  writeln;writeln;
  InputID;
  InputMK;
  ViewNilai;
End.



Artikel Terkait:

0 komentar: