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 :
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0 komentar:
Posting Komentar