BLANTERORBITv102

Tugas UTS Algoritma dan Pemrograman 2

Sabtu, 06 Agustus 2011
Posting again, yes (). Minggu lalu dosen Algoritma dan Pemrograman 2 memberi tugas untuk Ujian Tengah Semester (UTS), dan nilai tugas tersebut menjadi nilai UTS. Tugasnya membuat program untuk data pegawai beserta gaji. Disini ada 2 program Pascal yang dibuat dengan array of record. Check this out teman2! ()

1. Source Code:
uses crt;

type Pegawai=record
  Nomor:string;
  Nama:string;
  Status:string;
  Gaji:extended;
  end;

var DataPeg:array[1..50]of Pegawai;

procedure Input(var i:integer);
var GajiPokok:longint;
    n:integer;
begin
  i:=i+1;
  writeln('Input Data Pegawai');
  writeln('==================');
  writeln;
//  writeln('Masukkan huruf (T) untuk pegawai TETAP ;');
//  writeln('Masukkan huruf (H) untuk pegawai HONORER ;');
  repeat
    write('Nomor Pegawai    : ');
    readln(DataPeg[i].Nomor);
    DataPeg[i].Nomor:=UpCase(DataPeg[i].Nomor);
    if (DataPeg[i].Nomor[1]<>'H') and (DataPeg[i].Nomor[1]<>'T') then
    begin
      writeln('Nomor pegawai salah!');
      writeln('Masukkan karakter (T) pada awal nomor pegawai untuk pegawai tetap');
      writeln('Masukkan karakter (H) pada awal nomor pegawai untuk pegawai honor');
      writeln;
    end;
  until (DataPeg[i].Nomor[1]='H') or (DataPeg[i].Nomor[1]='T');
  write('Nama  Pegawai    : ');
  readln(DataPeg[i].Nama);
  if (DataPeg[i].Nomor[1]='T') then
    DataPeg[i].Status:='TETAP';
  if (DataPeg[i].Nomor[1]='H') then
    DataPeg[i].Status:='HONOR';
  writeln('Status Pegawai   : ',DataPeg[i].Status);
  writeln;
  write('Gaji Pokok       = Rp. ');
  readln(GajiPokok);
  write('Total jam lembur = ');
  readln(n);
  writeln;
  if (DataPeg[i].Nomor[1]='T') then
    DataPeg[i].Gaji:=GajiPokok+(GajiPokok*0.3)+(n*20000);
  if (DataPeg[i].Nomor[1]='H') then
    DataPeg[i].Gaji:=GajiPokok+(n*20000);
  writeln('Gaji Total     : Rp. ',DataPeg[i].Gaji:0:0);
  writeln;
  writeln;
  writeln;
  write('Press any key ...');readkey;
end;

procedure Output(x:integer);
var i:integer;
begin
  writeln('Cetak Data Pegawai');
  writeln('==================');
  writeln;
  writeln('=======================================================================');
  writeln('| No | No Pegawai |      Nama Pegawai      | Status | Gaji Total (Rp) |');
  writeln('=======================================================================');
  for i:=1 to x do
  begin
    writeln('|    |            |                        |        |                 |');
    gotoxy(3,6+i);write(i);
    gotoxy(8,6+i);write(DataPeg[i].Nomor);
    gotoxy(21,6+i);write(DataPeg[i].Nama);
    gotoxy(46,6+i);write(DataPeg[i].Status);
    gotoxy(55,6+i);write(DataPeg[i].Gaji:0:0);
    writeln;
  end;
  writeln;
  writeln('=======================================================================');
  write('Press Any Key to Exit ');readkey;
end;

procedure Menu(var jmlPeg:integer);
var pilihan:integer;
    keluar:boolean;
begin
  clrscr;
  keluar:=false;
  writeln('Data Pegawai');
  writeln('============');
  writeln;
  writeln('Menu :');
  writeln('1. Masukkan data baru');
  writeln('2. Lihat semua data');
  writeln('3. Keluar');
  writeln;
  write('Pilih : ');readln(pilihan);
  if (pilihan>0) and (pilihan<4) then
  begin
    clrscr;
    case pilihan of
      1:Input(jmlPeg);
      2:Output(jmlPeg);
      3:keluar:=true;
    end;
  end;
  if (keluar=false) then
    Menu(jmlPeg);
end;

var jmlPeg:integer;

begin
jmlPeg:=0;
Menu(jmlPeg);
end.

Output:

Tampilan Menu

Tampilan Pilihan Masukkan Data Baru
Tampilan Pilihan Lihat Semua Data
Penjelasan: Program ini cuma bisa satu kali input data, kalo mau input data pegawainya banyak tinggal code-nya.

2. Source Code
uses crt;

type data_pegawai=record
     status,nama,np:string;
     lbr,tunj,lembur,stat,gaji,pokok,tunjangan:real;
  end;

var
  pegawai:array[1..100] of data_pegawai;
  i,n:integer;

begin
   clrscr;
   write('Data Pegawai yang Dimasukkan : ');readln(n);
   writeln;
   for i:=1 to n do
    begin
     write('No Pegawai : ');readln(pegawai[i].np);
     write('Nama Pegawai : ');readln(pegawai[i].nama);
     write('Status : (pilih : 1.Tetap  2.Honor) ');readln(pegawai[i].stat);

     if pegawai[i].stat=1 then
       begin
        pegawai[i].status:='Tetap';
       end
     else if pegawai[i].stat=2 then
       begin
        pegawai[i].status:='Honor';
       end
     else
       begin
        writeln('input salah!!!');
        exit;
     end;

     write('Gaji Pokok : Rp. ');readln(pegawai[i].pokok);
     write('Banyak jam lembur : ');readln(pegawai[i].lembur);
      pegawai[i].tunj:=pegawai[i].pokok*30/100;
      pegawai[i].lbr:=pegawai[i].lembur*20000;
     writeln('==================================');
     if pegawai[i].stat=1 then
       begin
         pegawai[i].gaji:=pegawai[i].pokok+pegawai[i].tunj+pegawai[i].lbr;
       end
     else if pegawai[i].stat=2 then
       begin
         pegawai[i].gaji:=pegawai[i].pokok+pegawai[i].lbr;
     end;
    end;

     clrscr;
     writeln('| No. Pegawai | Nama Pegawai | Status |    Gaji    |');
     writeln('----------------------------------------------------');
     for i:=1 to n do
     begin
     write('| ',pegawai[i].np);gotoxy(15,2+i);write('| ',pegawai[i].nama);gotoxy(30,2+i);write('| ',pegawai[i].status);gotoxy(39,2+i);write('| ',pegawai[i].gaji:2:0);gotoxy(52,2+i);write('|');writeln;
     end;
     writeln('----------------------------------------------------');
readkey;
end.

Output:


Tampilan Data Pegawai yg diinput
Tampilan Output Data Pegawai
Penjelasan: program Pascal ini bisa menginputkan data pegawai lebih banyak.

Author

Iqbal Alghifari

BLOGGER DARI KALIMANTAN SELATAN