Tuesday, November 1, 2016

Memasukkan Data Mahasiswa Dalam Bentuk Record dalam Pascal

Tugas :

Buatlah progam untuk memasukkan sejumlah data nilai mahasiswa dalam bentuk record. Data yang dimasukkan adalah Nim, Nama, Nilai UTS, Nilai UAS, Nilai Tugas. Setelah semua data dimasukkan, semua data ditampilkan dalam bentuk tabel yang diurutkan secara descending berdasarkan nilai rata-rata tiap mahasiswa, kemudian konversi nilai rata-rata ke dalam nilai angka dengan aturan.
Rata-rata >= 80 nilai huruf A keterangan Lulus
Rata-rata >= 70 nilai huruf B keterangan Lulus
Rata-rata >= 60 nilai huruf C keterangan Lulus
Rata-rata >= 50 nilai huruf D keterangan Tidak Lulus
Rata-rata < 50 nilai huruf E keterangan Tidak Lulus
Contoh output program :
Jumlah Data : 2
Data ke-1
N I M : 11010001
N a m a : Jono
Nilai UTS : 50
Nilai UAS : 50
Nilai TUGAS : 50
Data ke-2
N I M : 11010002
N a m a : Hari
Nilai UTS : 90
Nilai UAS : 90
Nilai TUGAS : 90




keterangan program:

1.  Pendeklarasian dari type data record. Dengan kita mendeklarasikan seluruh data yang ingin dimaksukkan kedalam table.

program nilai_mahasiswa;
Uses Crt;
Type Nilai = Record
     Nim        : longint;
     Nama       : String;
     Tugas      : Real;
     UTS        : Real;
     UAS        : Real;
     Na         : Real;
     huruf      : Char;
     keterangan : string;
  End;

2.  pendeklarasian variable yang akan di pakai di semua program.
Var
    Mhs : Array[1..50] of Nilai;
    I   : Integer;
    n : integer;

3.  kemudian dengan menggunakan procedure kita buat cara untuk menampilkan data.

procedure input_data;
begin
Clrscr;
write('masukkan jumlah mahasiswa = ');
readln(n);
For I := 1 To n Do
    Begin
      With Mhs[i] Do
      Begin
       Writeln('Mahasiswa ke : ',i:2);
       Write('Nim   : ');Readln(Nim);
       Write('Nama  : ');Readln(Nama);
       Write('Tugas : ');Readln(Tugas);
       Write('UTS   : ');Readln(Uts);
       Write('UAS   : ');Readln(Uas);
      End;
    End;
end;

4.  kemudian dengan procedure lagi kita buat untuk menghitung data. Dari menghitung rata-rata sampai pernyataan lulus atau tidak lulus.

procedure hitung_data;
begin
For i := 1 To n Do
    Begin
    With Mhs[i] Do
        Begin
           Na := (Tugas + Uts + Uas) / 3;
           If (Na >= 80) Then huruf := 'A' Else
           If (Na < 80) and (Na>=70) Then huruf := 'B' Else
           If (Na < 70) and (Na>=60) Then huruf := 'C' Else
           If (Na < 60) and (Na>=50) Then huruf := 'D' Else
           huruf :='E';
        End;
    End;
end;

procedure tampil_keterangan;
begin
     for i := 1 to n do
        begin
        with mhs[i] do
             begin
                  if huruf = 'A' then keterangan := 'lulus' else
                  if huruf = 'B' then keterangan := 'lulus' else
                  if huruf = 'C' then keterangan := 'lulus' else
                  if huruf = 'D' then keterangan := 'tidak lulus' else
                  keterangan := 'tidak lulus';
             end;
        end;
end;

5.  kemudian selanjutnya membuat prosedur untuk menampilkan seluruh data yang tadi telah di imputkan.

procedure tampil_data;
begin
clrscr;
gotoxy(25,1); writeln('H A S I L  P R O S E S');
Writeln('+---+---------+-------------+------+-----+-----+----------+------+----------+');
Writeln('|NO |NIM      |NAMA         |TUGAS |UTS  |UAS  |RATA-RATA |HURUF |KETERANGAN|');
Writeln('+---+---------+-------------+------+-----+-----+----------+------+----------+');
For i := 1 To n Do
Begin
      With Mhs[i] Do
        Begin
             gotoxy(2, 4+i); Writeln(i);
             gotoxy(6, 4+i); write(Nim);
             gotoxy(16, 4+i); write(Nama);
             gotoxy(30, 4+i); write(Tugas:2:2);
             gotoxy(37, 4+i); write(Uts:2:2);
             gotoxy(43, 4+i); write(Uas:2:2);
             gotoxy(49, 4+i); write(Na:2:2);
             gotoxy(60, 4+i); write(huruf);
             gotoxy(67, 4+i); write(keterangan);
        End;
    End;
end;

6.  Membuat program utama yang digunakan untuk memproses seluruh kegiatan program.

begin
input_data;
hitung_data;
tampil_keterangan;
tampil_data;
readln;
end.

Membuat KHS (Kartu Hasil Studi) dengan turbo Pascal

struktur program:
program nilai_mahasiswa_si;
Uses Crt;
Type score = Record
     no           : integer;
     kode         : string;
     matkul       : string;
     sks        : integer;
     uas        : integer;
     uts          : integer;
     tugas        : integer;
     kuis         : integer;
     akhir      : real;
     huruf      : string;
     bobot      : integer;
  End;

Var
    mhs : Array[1..50] of score;
    I                       : Integer;
    n, bob                         : integer;
    jmlsks, jmlbobot, ambil        : integer;
    nim, nama, jur          : string;
    ip                             : real;
--------------------------------------------------------------------------------------
procedure input;
begin
clrscr;
write('berapa mata kuliyah yang diambil = ');
readln(n);
clrscr;
gotoxy(12,1); writeln('            KHS (KARTU HASIL STUDY)');
gotoxy(12,2); writeln('SEKOLAH TINGGI MENEJEMEN INFORMASI DAN KOMUNIKASI');
gotoxy(12,3); writeln('              EL-RAHMA YOGYAKARTA');
gotoxy(1, 5);Write('NIM       = ');readln(nim);
gotoxy(1, 6);Write('NAMA      = ');readln(nama);
gotoxy(1, 7);Write('JURUSAN   = ');readln(jur);
gotoxy(1, 8);Writeln('+---+-----+-------------------+---+---+---+-----+----+-----+-----+-----+');
gotoxy(1, 9);Writeln('|NO |KODE |NAMA MATA KULIYAH |SKS|UAS|UTS|TUGAS|KUIS|AKHIR|HURUF|BOBOT|');
gotoxy(1, 10);Writeln('+===+=====+===================+===+===+===+=====+====+=====+=====+=====+');
end;
--------------------------------------------------------------------------------------
procedure hitung;
begin
For i := 1 To n Do
   Begin
      With mhs[i] Do
        Begin
              gotoxy(1, 10+i); Write('|',i);
              gotoxy(5, 10+i); write('|'); readln(kode);
              gotoxy(11, 10+i); write('|'); readln(matkul);
              gotoxy(31, 10+i); write('|'); readln(sks);
              gotoxy(35, 10+i); write('|'); readln(uas);
              gotoxy(39, 10+i); write('|'); readln(uts);
              gotoxy(43, 10+i); write('|'); readln(tugas);
              gotoxy(49, 10+i); write('|'); read(kuis);
             
      

        Begin
           akhir := (uas + Uts + tugas + kuis) / 4;
           If (akhir <= 100) and (akhir >= 85) Then huruf := 'A' Else
           If (akhir < 85) and (akhir >= 65) Then huruf := 'B' Else
           If (akhir < 65) and (akhir >= 45) Then huruf := 'C' Else
           If (akhir < 45) and (akhir >= 25) Then huruf := 'D' Else
           huruf :='E';
        End;
          gotoxy(54, 10+i); write('|', akhir:0:2);
          gotoxy(60, 10+i); write('|', huruf);

        begin
           if huruf = 'A' then bob := 4 else
           if huruf = 'B' then bob := 3 else
           if huruf = 'C' then bob := 2 else
           if huruf = 'D' then bob := 1 else
           bob := 0;
        end;
       bobot := sks * bob;
       gotoxy(66, 10+i); write('|', bobot);
       gotoxy(72, 10+i); write('|');
       jmlsks := jmlsks + sks;
       jmlbobot := jmlbobot + bobot;
       begin
          ip := jmlbobot / jmlsks;
          if (ip > 3.0) and (ip <= 4.0) then ambil := 24 else
          if (ip <= 3.0) and (ip > 2.5) then ambil := 21 else
          if (ip <= 2.5) and (ip > 1.5) then ambil := 18 else
          ambil := 15;
       end;
       End;
    readln;
  end;
readln;
Write('+---+-----+-------------------+---+---+---+-----+----+-----+-----+-----+');
gotoxy(55, 14+i); write('total sks      = ',jmlsks);
gotoxy(55, 15+i); write('total bobot    = ',jmlbobot);
gotoxy(55, 16+i); write('IP             = ',ip:0:1);
gotoxy(55, 17+i); write('sks yg diambil = ', ambil);
readln;
end;
--------------------------------------------------------------------------------------
begin
input;
hitung;
gotoxy(40, 20+i); write('gunawanrudy90@yahoo.com');
readln;
end.

Monday, October 31, 2016

Program Membuat Senarai

usescrt;
constgaris ='---------------------------------------';
pesan ='##**SenaraiBerantaiMasihKosong**##';
typesimpul = ^data;
           data   = record
           nama : string;
           alamat : string;
           berikut :simpul;
end;
var
     awal,akhir : simpul;
     pilih : char;
     cacah : integer;

function MENU : char;
var P : char;
begin
     clrscr;
     gotoxy(30,3); write('##DAFTAR MENU PILIHAN##');
     gotoxy(20,7)); write('********************************************');
     gotoxy(20,8); write('A. MENAMBAH SIMPUL BARU DI AWAL SENARAI');
     gotoxy(20,9); write('B. MENAMBAH SIMPUL BARU DI MANA SAJA');
     gotoxy(20,10); write('C. MENAMBAH SIMPUL BARU DI AKHIR SENARAI');
     gotoxy(20,11); write('D. MENGHAPUS SIMPUL PERTAMA');
     gotoxy(20,12); write('E. MENGHAPUS SIMPUL DI MANA SAJA');
     gotoxy(20,13); write('F. MENGHAPUS SIMPUL TERAKHIR');
     gotoxy(20,14); write('G. MENCETAK ISI SENARAI');
     gotoxy(20,15); write('H. CARI DATA');
     gotoxy(20,16); write('I. SELESAI');
     gotoxy(20,17); write('*****************11110306******************');
     repeat
           gotoxy(48,20); write('':10);
           gotoxy(30,20); write('Pilihsalahsatu: ');
           P :=upcase(readkey);
     until P in ['A'..'I'];
     MENU := P;
end;
{ didalam program ini terdapat pendeklarasian pertama, yaitu tentang simpulnya dibuat, tentang recordnya, serta menu pilihan apa saja yang dapat kita gunakan ketika kita menjalan program pada pascal}


 {proceduresimpulbaru}
function SIMPUL_BARU11110306 : simpul;
var B : simpul;
begin
     new(B);
     with B^ do
     begin
           write('Nama  : '); readln(nama);
           write('Alamat: '); readln(alamat);
           berikut := nil;
     end;
     SIMPUL_BARU11110306 := B;
end;

procedure TAMBAH_AWAL11110306 (N : integer);
varbaru : simpul;
begin
     if N <> 0 then
     begin
           writeln('##MENAMBAH DATA BARU DI AWAL##');
           writeln(copy(garis,1,45));
     end;
     writeln;
     baru := SIMPUL_BARU11110306;
     ifawal=nil then
     akhir:= baru
else
     baru^.berikut := awal;
     awal := baru;
end;

{ didalam program tambah senarai inikitadapatmenambahkanberbagai data di awalsenarai, dankemudian data tersebutdisimpan agar nantinyadapatdiolah.}


 {proceduretambahakhir}
procedure TAMBAH_AKHIR11110306 (N : integer);
varbaru : simpul;
begin
     if N <> 0 then
     begin
           writeln('##MENAMBAH DATA BARU DI AKHIR##');
           writeln(copy(garis,1,46));
     end;
     writeln;
     baru := SIMPUL_BARU11110306;
     ifawal=nil then
     awal := baru
else
     akhir^.berikut := baru;
     akhir := baru;
end;

{didalamprosedurinikitadapatmenambahkan data padaakhirsimpulkemudian data tersebutdisimpan agar dapatdiolah}

 {proceduretambahmanasaja}
procedure TAMBAH_MANASAJA11110306;
varbaru,bantu : simpul;
     posisi,i   : integer;
begin
     writeln('##MENAMBAH DATA BARU DI MANA SAJA##');
     writeln(garis); writeln;
     writeln('**DATA TELAH BERISI:',cacah:2,' SIMPUL**');
     repeat
           gotoxy(52,5); write(' ');
           gotoxy(1,5);  write('DATA BARU AKAN DITEMPATKAN SEBAGAI SIMPUL NOMOR: ');
           readln(posisi)
     untilposisi in [1..cacah+1];
     ifposisi=1 then TAMBAH_AWAL11110306(0)
else
     ifposisi=cacah+1 then TAMBAH_AKHIR11110306(0)
     else
           begin
                writeln;
                baru := SIMPUL_BARU11110306;
                bantu:= awal;
                for i:=1 to posisi-2 do
                bantu := bantu^.berikut;
                baru^.berikut := bantu^.berikut;
                bantu^.berikut := baru;
           end;
end;

{didalam procedure nikitadapatmenambahkan data baikitu di awal, akhirmaupun di tengah.}

 {procedurehapusawal}
procedure HAPUS_PERTAMA11110306;
begin
ifawal<> nil then
     begin
           awal := awal^.berikut;
           writeln('##DATA PERTAMA TELAH TERHAPUS##');
     end
else
     writeln(pesan);
     writeln; writeln('**TEKAN <<ENTER>> UNTUK KEMBALI KE MENU UTAMA**');
     repeat until keypressed
end;

{didalam procedure inikitadapatmenghapus data yang telahkitabuatyaitupadaawal data yang telahkitasimpan}

 {procedurehapusakhir}
procedure HAPUS_TERAKHIR11110306;
var bantu : simpul;
     H     : integer;
begin
     ifawal=nil then
     begin
           writeln(pesan);
           H := 0;
     end
else
     ifawal=akhir then
     begin
           awal := nil;
           akhir:= nil;
           H := 1;
     end
else
     begin
           bantu := awal;
           while bantu^.berikut<>akhir do
           bantu := bantu^.berikut;
           akhir := bantu;
           akhir^.berikut := nil;
           H := 1;
     end;
     if H=1 then
     writeln('##DATA TERAKHIR TELAH TERHAPUS##'); writeln;
     writeln('**TEKAN <<ENTER>> UNTUK KEMBALI KE MENU UTAMA**');
     repeat until keypressed
end;

{didalam procedure inikitadapatmenghapus data yang telah di simpan, yaitu data yang paling akhir di simpan}

{procedurehapusmanasaja}
procedure HAPUS_MANASAJA11110306;
varposisi,i : integer;
     bantu,bantu1 : simpul;
begin
     ifcacah=0 then
     begin
           writeln(pesan); writeln;
           writeln('**TEKAN <<ENTER>> UNTUK KEMBALI KE MENU UTAMA**');
           repeat until keypressed
     end
else
     begin
           writeln('##MENGHAPUS DATA YANG ADA DI MANA SAJA##');
           writeln(copy(garis,1,35)); writeln;
           writeln('**DATA SEKARANG BERISI :',cacah:2,' SIMPUL**');
           repeat
                gotoxy(37,5); write('':5);
                gotoxy(1,5); write('Akan menghapus Data nomorberapa: ');
                readln(posisi);
                untilposisi in [1..cacah];
                ifposisi=1 then HAPUS_PERTAMA11110306
           else
                ifposisi=cacah then HAPUS_TERAKHIR11110306
           else
                begin
                     bantu := awal;
                     for i:=1 to posisi-2 do
                     bantu:= bantu^.berikut;
                     bantu1 := bantu^.berikut;
                     bantu^.berikut := bantu1^.berikut;
                     bantu1^.berikut := nil;
                     dispose(bantu1);
                end;
     end;
end;

{ dalam procedure inikitadapatmengolah data yaitumenghapus data di bagianawalataudepanmaupunawaldari data yang telahkitasimpan.}

 {prosedurebaca}
procedure BACA_SENARAI11110306;
var bantu : simpul;
     i     : integer;
begin
     i := 1;
     writeln('**MEMBACA ISI DATA YANG TERSIMPAN**');
     writeln('**TEKAN <<ENTER>> UNTUK KEMBALI KE MENU UTAMA**');
     writeln(copy(garis,1,42)); writeln;
     bantu := awal;
     if bantu=nil then
           writeln(pesan)
     else
           while bantu <> nil do
           begin
                writeln('Simpul: ',i:2,'--->Nama  : ',bantu^.nama);
                writeln('':15,'Alamat: ',bantu^.alamat);
                bantu := bantu^.berikut;
                inc(i);
           end;
           repeat until keypressed
end;

{ dalam procedure inikitadapatmengolah data untukmencetakataumenampilkanseluruh data yang telahkitabuat, sehinggakitatahuapasaja data yang kitamiliki.}

{prosedurmencarisimpultertentu}
procedure CARI_SIMPUL11110306;
var bantu : simpul;
     i     : integer;
begin
     i := 1;
     writeln('**MENCARI SIMPUL TERTENTU**');
     ifawal = nil then
writeln('****DATA MASIH KOSONG****')
else
writeln('**MENCARI DATA TERTENTU**');
     bantu:=awal;
     if bantu^.nmbuku=bantu^.nmbuku then
begin
writeln('Nama        : ', bantu^.nama:5);
writeln('Alamat : ', bantu^.alamat);
end
else
writeln('Data Dengan No ',bantu^.:5,'tidak ada');
end;
{========================================================}
{PROGRAM UTAMA}
begin
     cacah := 0;
     awal := nil;
     akhir := nil;
     repeat
           pilih := MENU;
           clrscr;
           casepilih of
                'A' : TAMBAH_AWAL11110306(1);
                'B' : TAMBAH_MANASAJA11110306;
                'C' : TAMBAH_AKHIR11110306(1);
                'D' : HAPUS_PERTAMA11110306;
                'E' : HAPUS_MANASAJA11110306;
                'F' : HAPUS_TERAKHIR11110306;
                'G' : BACA_SENARAI11110306;
                'H' : CARI_SIMPUL11110306;
           end;
           ifpilih in ['A','B','C'] then inc(cacah)
     else
           if (pilih in ['D','E','F']) and (cacah<> 0) then
           dec(cacah)
           untilpilih='I'
end.

{ di program terakhiratau program utamainidideklarasikanberbagai procedure yang telahkitabuattadi, sehinggapada procedure inijugadapat di sebut program pokok, karenatanpa procedure ini program tidakakanberjalan.}