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