Salah satu kelebihan dalam bahasa pascal adalah tersedianya berbagai struktur data yang bisa dikatakan hanya terbatas pada imajinasi programer dalam mengaplikasikannya, beberapa struktur data yang komplek dengan manupulasi yang berbeda dengan manupulasi data original dan data real. Struktur Data ini lebih efisien jika dideklarasikan dibawah keyword type sehingga dengan demikian kita mendapat data jenis baru yang sesuai dengan keinginan kita, dengan mendeklarasikan tipe data tertentu, maka akan didapat beberapa keuntungan antara lain :
Ø Tidak memerlukan deklarasi yang berulang – ulang bila diperlukan banyak data yang bertipe komplek yang sama
Ø Tipe data yang komplek yang dideklarasikan dapat dipergunakan sebagai parameter dalam sebuah fungsi
Ø Memungkinkan membuat tipe data baru yang merupakan kumpulan dari tipe data – tipe data yang baru pula
Ø Programer tidak terbatas dengan tipe data yang baku yang disediakan oleh bahasa pascal
Ø Dengan tipe data ini program lebih dapat dimengerti sehingga seolah-olah programer menulis bahasa pascal dalam bahasa inggris
Ø Untuk pelindung atau proteksi bagi keamanan program
Array
Adalah kumpulan dari beberapa nilai semuanya memiliki tipe data yang sama. Syntax penulisannya :
Var
Nama Variabel : array[indeks Awal ... Indeks Akhir] of Tipedata;
Begin
Dengan nama variabel adalah nama yang kita berikan untuk mengidentifikasi data array tersebut, sedangkan indeks awal dan indeks akhir berturut – turut merupakan indeks array terkecil dan indeks array terbesar, yang menentukan beberapa banyak elemen array yang kita pesan.
Latihan – Latihan Program
Program Pengurutan
Uses Crt;
Var
Data : Array[1..100] of integer;
I,J,A,N :Integer;
Begin
Clrscr;
Write(‘Masukan Data :’);Readln(n);
Writeln(‘Data sebelum Diurutkan’);
For I :=1 to n do
Begin
Write(‘Masukan Nilai ke : ‘,I:2);Readln(Data[I]);
End;
For I:=1 to n do
For J:=I + 1 to n do
Begin
If Data[I] < Data[J] then
Begin
A:=Data[I];
Data[I] := Data[J];
Data[J] := A
End;
End;
End;
Writeln;
Writeln(Data setelah diurut’);
For I:=i to n do
Begin
Write(‘ ‘,Data[I]);
Readln;
End.
Program Perkalian_Matrik;
Uses crt
Type
Larik : Array[1..25,1..25] of real;
Var
I,J,K : Byte;
L,M,N : Byte
A,B,C : Larik;
Begin
Clrscr;
Write(‘Baris Matrik pertama : ‘);readln(M);
Write(‘Kolom Matrik Pertama/ Baris Matrik Kedua : ‘);readln(N);
Write(‘Kolom Matrik Kedua : ‘);readln(L);
Writeln(‘Matrik yang pertama : ‘);
For I :=1 to M do
Begin
For J:=1 to N do
Begin
Write(‘Nilai [‘, I ,’ , ’,J,’ , ’] ? ‘);readln(A[I,J]);
End;writeln;
End;
Writeln;
Writeln(‘Matrik yang kedua’);
For i:= 1 to n do
Begin
For J:= 1 to L do
Begin
Write(‘Nilai [‘, I ,’ , ’,J,’ , ’] ? ‘);readln(B[I,J]);
End;writeln;
End;
{proses Perkalian matrik }
For i:=1 to M do
Begin
For j := 1 to N do
Begin
C[I,J] :=0;
For k:=1 to L do
C[I,J]:= C[I,J] + (A[I,K] * B[I,K]);
End;
End;
Clrscr;
Writeln(‘Hasil Dari Perkalian Matrik : ‘);
Writeln;
For I:=1 to M do
Begin
For J:=1 to L do
Write(C[I,J]:9:2);Writeln;
End;readln;
End.
Program Penjualan_Barang
Uses Crt;
Var
I : Integer;
NB : Array[1..8] of String;
No, SA,BT,Sisa : Array[1..8] of Integer;
Begin
Clrscr;
Writeln(‘@@@@@@@@@@@@@@@@@@@@@@@’);
Writeln(‘ Data Stok Barang di Gudang ‘);
Writeln(‘No. Nama Barang Stok Awal Terjual Sisa’);
For i:= i to 8 do
Begin
Gotoxy(2,4+1);Readln(No[I]);
Gotoxy(5,4+1);Readln(NB[I]);
Gotoxy(20,4+1);Readln(SA[I]);
Gotoxy(25,4+1);Readln(BT[I]);
Data[I] := (SA[I] – BT[I]);
Gotoxy(35,4+I);Write(Data[I]);
End;
Readln;
End;
Record
Suatu jenis struktur data komplek yang memungkinkan untuk mencampur beberapa jenis data dalam satu struktur. Jika elemen dari struktur data array haruslah memiliki tipe data yang sama, maka pada struktur record batasan ini tidak ada. Record dapat memiliki tipe data apa saja, Syntak penulisannya :
Type
Namarecord = Record
NamaVariabel : Tipedata
NamaVariabel : Tipedata
NamaVariabel : Tipedata
End;
Var
NamaVariabel : Tipe Data Record
Latihan –latihan Program
Program_data_bertipe_komplek;
Uses crt;
Type
Data_Pegawai = Record
Nip : Integer;
Nama,Alamat,Jabatan : String;
Gol : Char;
Gapok,Pajak,Gaber : Real;
End;
Var
Pegawai : Array[1..2] of Data_pegawai;
I : Integer;
Begin
Clrscr;
Writeln(‘************************************’);
Writeln(‘ Data Pegawai Swasta ‘);
Writeln(‘************************************’);
For i := 1 to 2 do
Begin
Write(‘ Nip :’);readln(pegawai[I].nip);
Write(‘ Nama Pegawai :’);readln(pegawai[I].nama);
Write(‘ Alamat Pegawai :’);readln(pegawai[I].alamat);
Write(‘ Jabatan Pegawai :’);readln(pegawai[I].jabatan);
Write(‘ Golongan :’);readln(pegawai[I].gol);
Write(‘ Gaji Pokok :’);readln(pegawai[I].gapok);
Pegawai[I].Pajak := 0,05 * Pegawai[I].Gapok;
Write(‘ Pajak :’);Readln(Pegawai[I].pajak:10:0);
Pegawai[I].Gaber := Pegawai[I].Gapok - Pegawai[I].Pajak;
Write(‘ Gaji Bersih :’);readln(pegawai[I].gaber:10:0);
End;
Readln;
End.
Program Rata_rata_nilai_mahasiswa;
Uses crt;
Const
Jumlahtes = 4;
SiswaMax = 40;
Type
Data_Siswa = Record
Nim : Integer;
Nama : String[20];
Nilai : array[1..Jumlahtes]of real;
Rata_rata : Real;
End;
ArraySiswa = array[1..SiswaMax] Of data_siswa;
Var
Jumlah : 1..SiswaMak;
I,J : Integer;
Total_nilai : real;
Siswa : ArraySiswa;
Temporer : Data_Siswa;
Begin
Clrscr;
Write(‘Jumlah Data :’);Readln(Jumlah);Writeln;
For I:=1 to Jumlah do
Begin
Write(‘Nomer Induk Mahasiswa :’);readln(Siswa[I].Nim);
Write(‘Nomer Nama Mahasiswa :’);readln(Siswa[I].Nama);
Write(‘Nilai Yang di Dapat :’);
For I:=1 to J do
Begin
Write(J:2,’ ‘);Readln(Siswa[I].Nilai[J]);
End;Writeln;
End;
For I:=1 to SiswaMak do
Begin
Total_Nilai :=0;
For J:= 1 to JumlahTes do
begin
Total_Nilai := Total_Nilai + Siswa[I].Nilai[J];
Siswa[I].Rata-rata :=Total_Nilai / Jumlahtes;
End;
End;
For I:=1 to Jumlah – 1 do
For J:= I+1 to jumlah do
If siswa[I].Rata_rata < Siswa[J].Rata-rata then
Begin
Temporer := siswa[I];
Siswa[I] := Siswa[J];
Siswa[J]:= Temporer;
End;
Writeln;
Writeln(‘^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^’);
Writeln(‘ | Nim Siswa Nama Siswa Nilai Rata – Rata |‘);
Writeln(‘^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^’);
For I := 1 Jumlah do
Writeln(Siswa[I].Nim:5, Siswa[I].Nama:15,
Siswa[I].Rata-rata:10:2);
Writeln(‘^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^’);
Readln;
End.
Kasus
Buatlah program untuk mengunakan record untuk menghitung dua data total gaji pegawai, dengan ketentuan Nip,Nama,Pegawai alamat Pegawai, Jabatan, Golongan dan jumlah anak
Jika Gol = 1 gapok = 200000 dan tunjangan Jabatan = 100 % * Gapok
Gol = 2 gapok = 1500000 dan tunjangan Jabatan = 50 % * Gapok
Gol = 3 gapok = 1000000 dan tunjangan Jabatan = 30 % * Gapok
Gol = 4 gapok = 750000 dan tunjangan Jabatan = 20 % * Gapok
Tunjangan anak dihitung sampai anak ke 3 = 20 % dari gapok
Tunjangan Suami/Istri = 15 % dari Gapok. Untuk mencari Gator adalah gapok ditambah tunjangan Jabatan ditambah tunjangan anakditambah tunjangan suami / istri. Pajak didapat 2 % dari gaji pokok dan untuk gaber kalian cari sendiri.
Output : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Total Gaji Pegawai Swasta
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nim :
Nama Pegawai :
Alamat Pegawai :
Jabatan Golongan :
Jumlah Anak :
Gaji Pokok :
Tunjangan Jabatan :
Tunjangan Anak :
Tunjangan Suami / Istri :
Gaji Kotor :
Pajak :
Gaji Bersih :
Nim :
Nama Pegawai :
Alamat Pegawai :
Jabatan Golongan :
Jumlah Anak :
Gaji Pokok :
Tunjangan Jabatan :
Tunjangan Anak :
Tunjangan Suami / Istri :
Gaji Kotor :
Pajak :
Gaji Bersih :
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
No comments:
Post a Comment