ARRAY DAN RECORD
ARRAY
Suatu hari karena melihat kemajuan teknologi seorang guru ingin mengetahui
bilangan prima yang ada pada bilangan antara 1 sampai dengan 200 tanpa harus
menghitung manual,maka guru tersebut menyuruh anaknya yang seorang programmer
untuk membuatkan program mencari bilangan prima antara 1 sampai 200, si
programmer membuat program tersebut dengan turbo pascal,program tersebut dibuat
dengan bagian dari pascal yaitu array, maka dibuatlah program tersebut :
Program Mencari_Bilangan_Prima_Dengan_Array;
Uses winCrt;
Var
Prima :
Array[1..200] of Integer;
i,j : Integer;
bil : Integer;
Begin
ClrScr;
For i := 2 to
200 Do
Begin
Prima[i]:=i;
For j:= 2 to
i-1 Do
Begin
bil := (i
mod j); {* i dibagi j dicek apakah 0*}
If bil = 0
then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*}
End;
If Prima[i]
0 Then Write(Prima[i],' '); {*cetak array yg prima*}
End;
Readln;
End.
Program tersebut mencari bilangan prima cara kerja dari program tersebut
adalah mengecek apakah bilangan yang ada dapat dibagi dan habis atau tidak,jika
bilangan tersebut habis dibagi maka bukan bilangan prima,tapi jika tidak habis
dibagi berarti prima,terus berulangan sampai dengan angka 200.
RECORD
Pada kasus ini ada seorang kasir sebuah penginapan membutuhkan sebuah
program untuk merecord data seorang wisatawan yang akan menginap pada sebuah
hotel.Record tentang nama,Jenis Kelamin,Alamat,Umur.
Uses wincrt;
Type
wisatawan =
Record
Nama : string[30];
JenisKelamin : string[20];
Alamat : string[20];
Umur : real;
end;
Var
Wstw:Wisatawan;
Begin
ClrScr;
write
('Nama:');ReadLn(Wstw.Nama);
write
('Alamat:');Readln(Wstw.Alamat);
write ('Jenis
Kelamin:');Readln(Wstw.JenisKelamin);
write
('Umur:');Readln(Wstw.Umur);
Writeln;
Writeln('Nama
Anda:',Wstw.Nama);
Writeln('Alamat Anda:',Wstw.Alamat);
Writeln('Jenis
Kelamin Anda:',Wstw.JenisKelamin);
Writeln('Umur
Anda:',Wstw.Umur:0:0);
End.
Array satu dimensi CONTOH PROGRAM.
uses wincrt;
var
nilai : array[1..5] of integer;
i,jumlahdata : integer;
begin
write('Masukan Jumlah data : ');readln(jumlahdata);
for i:=1 to jumlahdata do
begin
write('Nilai ke- ',i,' : '); readln(nilai[i]);
end;
readln;
writeln('Data ke 3 adalah ',nilai[3]);
end.
Di atas ini adalah program sederhana array saatu dimensi.
nilai : array[1..5] of integer;
i,jumlahdata : integer;
nilai : variabel arraynya
array[1..5] : data dari array variabel nilai dari 1 sampai 5
of integer : tipe data nilai yang nantinya di input integer atau bilangan bulat.
i : variabel untuk isi / value array dari 1 sampai 5 agar program bisa lebih dinamis.
jumlahdata : jumlah data array yang akan di input
write('Masukan Jumlah data : ');readln(jumlahdata);
jumlahdata : jumlah data array yang akan di input dari 1 sampai 5
for i:=1 to jumlahdata do
begin
write('Nilai ke- ',i,' : '); readln(nilai[i]);
end;
i:=1 to jumlahdata : pengulangan dari 1 sampai jumlahdata yng di masukan
ke- ',i,' : menampilkan data ke -
nilai[i] : menyimpan nilai yang di masukan kedalam array
writeln('Data ke 3 adalah ',nilai[3]);
nilai[3] : Data dari array ke 3.
Contoh Array Didalam record
uses wincrt;
type
pegawai=record
nik,nama:string;
gaji:real;
status:char;
totalgaji:real;
end;
larikpeg=array[1..20] of pegawai;
var
peg:larikpeg;
n,i,j:byte;
lagi:char;
xx:pegawai;
begin
{mengisi Data Pegawai}
Repeat
clrscr;
lagi:='y';
while lagi='y' do
begin
inc(n);
writeln(' mengisi
data pegawai ke
',n);
write(' masukan nik
==> ');readln(peg[n].nik);
write(' masukan nama
==> ');readln(peg[n].nama);
write(' gaji pokok
==> ');readln(peg[n].gaji);
write(' status ? <menikah=k, tidak=t>
');readln(peg[n].status);
if peg[n].status='k' then peg[n].totalgaji:=
peg[n].gaji+(0.2*peg[n].gaji)
else
peg[n].totalgaji:=peg[n].gaji+(0.1*peg[n].gaji);
writeln;
write(' apakah akan
mengisi lagi y/t? ');readln(lagi);
writeln;
end;
clrscr;
writeln(' ':10,'Daftar gaji pegawai PT. Maju
Terus');
writeln('
========================================================= ');
writeln(' | no | nik
| nama | gaji pokok
| gaji bersih | ');
writeln('
========================================================= ');
for i:=1 to n do
writeln(i:4,peg[i].nik:9,peg[i].nama:12,'
Rp',peg[i].gaji:10:2,' Rp',peg[i].totalgaji:10:2);
writeln(' =======================================================
');
{mengurutkan}
writeln;
for i:=1 to n-1 do
begin
for
j:=i+1 to n do
begin
if (peg[i].totalgaji<peg[j].totalgaji) then
begin
xx:=peg[i];peg[i]:=peg[j];peg[j]:=xx;
end;
end;
end;
writeln(' ':3,'Daftar gaji pegawai PT. Maju Terus Sesudah Diurutkan');
writeln('
========================================================= ');
writeln(' | no | nik
| nama | gaji pokok
| gaji bersih | ');
writeln('
========================================================= ');
for i:=1 to n do
writeln(i:4,peg[i].nik:9,peg[i].nama:12,'
Rp',peg[i].gaji:10:2,' Rp',peg[i].totalgaji:10:2);
writeln('
====================================================== ');
writeln;
write(' Apakah Ingin Menambah Data Karyawan lagi y/t? ');readln(lagi);
until(lagi='t');
end.
Contoh Prgoram Pascal Gabungan
Procedure dan If Then Tentang Bangun Datar
program cnth_function_deir;
uses wincrt;
var pil:integer; luas:real;
procedure bujur_sangkar;
var sisi:integer;
begin
clrscr;
gotoxy(14,5);write('###___Mencari Luas Bujur Sangkar___###');
gotoxy(20,6);write('Input Sisi Panjang : ');
gotoxy(20,7);write('Luas Bujur Sangkar adalah : ');
gotoxy(41,6);readln(sisi);
luas:=sisi*sisi;
gotoxy(47,7);write(luas:6:1);
repeat until keypressed;
end;
procedure siku_siku;
var alas,tinggi:integer;
begin
clrscr;
gotoxy(10,5);write('Mencari Luas Segitiga Siku-siku');
gotoxy(14,6);write('Input Panjang Alas : ');
gotoxy(14,7);write('Input Tinggi Segitiga : ');
gotoxy(14,8);write('Luas Segitiga adalah : ');
gotoxy(35,6);readln(alas);
gotoxy(38,7);readln(tinggi);
luas:=0.5*alas*tinggi;
gotoxy(36,8);write(luas:6:1);
repeat until keypressed;
end;
begin
clrscr;
gotoxy(14,2);write('Program Menghitung Luas Bangun');
gotoxy(14,7);write('*** Bujur Sangkar dan Segitiga Siku-Siku ***');
gotoxy(14,9);write('1. Luas Bujur Sangkar');
gotoxy(14,10);write('2. Luas Segitiga Siku-siku');
gotoxy(14,14);write('Selesai');
gotoxy(14,3);write('Input Pilihan [1-2] : ');
gotoxy(36,3);readln(pil);
if pil=1 then
bujur_sangkar
else if pil=2 then
siku_siku;
repeat until keypressed;
end.
uses wincrt;
var pil:integer; luas:real;
procedure bujur_sangkar;
var sisi:integer;
begin
clrscr;
gotoxy(14,5);write('###___Mencari Luas Bujur Sangkar___###');
gotoxy(20,6);write('Input Sisi Panjang : ');
gotoxy(20,7);write('Luas Bujur Sangkar adalah : ');
gotoxy(41,6);readln(sisi);
luas:=sisi*sisi;
gotoxy(47,7);write(luas:6:1);
repeat until keypressed;
end;
procedure siku_siku;
var alas,tinggi:integer;
begin
clrscr;
gotoxy(10,5);write('Mencari Luas Segitiga Siku-siku');
gotoxy(14,6);write('Input Panjang Alas : ');
gotoxy(14,7);write('Input Tinggi Segitiga : ');
gotoxy(14,8);write('Luas Segitiga adalah : ');
gotoxy(35,6);readln(alas);
gotoxy(38,7);readln(tinggi);
luas:=0.5*alas*tinggi;
gotoxy(36,8);write(luas:6:1);
repeat until keypressed;
end;
begin
clrscr;
gotoxy(14,2);write('Program Menghitung Luas Bangun');
gotoxy(14,7);write('*** Bujur Sangkar dan Segitiga Siku-Siku ***');
gotoxy(14,9);write('1. Luas Bujur Sangkar');
gotoxy(14,10);write('2. Luas Segitiga Siku-siku');
gotoxy(14,14);write('Selesai');
gotoxy(14,3);write('Input Pilihan [1-2] : ');
gotoxy(36,3);readln(pil);
if pil=1 then
bujur_sangkar
else if pil=2 then
siku_siku;
repeat until keypressed;
end.
Komentar
Posting Komentar