jam

Rabu, 22 Oktober 2008

Array

Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char, string dan tipe data scalar atau subrange. Tipe larik mengartikan isi dari larik atau komponen- komponenya mempunyai nilai dengan tipe data tersebut. 
Contoh: 
Var 
jumhitung : array[1..50] of Integer; 
Pada contoh Array dengan nama jumhitung telah dideklarasikan dengan tipe integer, dengan jumlah elemen maksimum 50 elemen, nilai dari elemen array tersebut diatas harus bertipe integer. 

Contoh Program : 
Program Contoh_Array_Input; 
Uses Crt; 
Var 
Bilangan : array[1..50] of Integer; 
Begin 
ClrScr; 
Bilangan[1]:=3; 
Bilangan[2]:=29; 
Bilangan[3]:=30; 
Bilangan[4]:=31; 
Bilangan[5]:=23; 
Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]); 
Readln; 
End. 
Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh dibawah ini : 
Program Contoh_Deklarasi_Array_Beragam; 
Uses Crt; 
Var 
NPM : array[1..20] of string[10]; 
Nama : array[1..20] of string[25]; 
Nilai : array[1..20] of real; 
Umur : array[1..20] of byte; 
banyak,i : integer; 
Begin 
ClrScr; 
Write('Isi berapa data array yang diperlukan :');Readln(banyak); 
For i := 1 to banyak Do 
Begin 
Write('NPM =');Readln(NPM[i]); 
Write('Nama =');readln(Nama[i]); 
Write('Nilai=');readln(Nilai[i]); 
Write('Umur =');readln(Umur[i]); 
End; 
{cetak varibel array} 
Writeln('NPM NAMA NILAI UMUR '); 
For i:= 1 to banyak Do 
Begin 
Writeln(Npm[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3); 
End; 
Readln; 
End. 

Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini : 
Type 
Angka = String[20]; 
Var 
Nama : Array [1..50] of Angka; 
Begin 
End. 

Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar atau subrange, tetapi tidak bisa real. 
Contoh: 
Var 
Nilai : Array[1..10] of Integer; 
pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array tersebut dapat dideklarasikan dengan type seperti berikut ini : 

Type 
Skala = 1..10; 
Var 
Nilai : Array [skala] of Integer; 
atau : 
Type 
Skala = 1..10; 
Y = Array[skala] of Integer; 
Var 
Nilai : Y; 
atau : 
Type 
Y = Array[1..10] of Integer; 
Var 
Nilai : Y; 
atau : 
Const 
Atas =1; 
Bawah = 5; 
type 
Y = Array[Atas..Bawah] of Integer; 
Var 
Nilai : Y; 
I. Deklarasi Type Indeks Skalar 
Indeks dari larik dapat berupa tipe skalar. 
Contoh. : 
Program Deklarasi_Indeks_Array_Skalar; 
Uses Crt; 
Var 
Jum : Array[(jan,feb,mar,apr,mei)] of Integer; 
Begin 
Jum[jan]:=25; 
Jum[feb]:=45; 
Jum[mar]:=21; 
Jum[apr]:=23; 
Jum[mei]:=50; 
Writeln('Jumlah nilai bulan maret =',Jum[mar]); 
Readln; 
End. 
dapat juga ditulis : 
type 
Bln = (jan,feb,mar,apr,mei); 
Var 
Jum : Array[bln] of Integer; 
atau : 
type 
Bln =(jan,feb,mar,apr,mei); 
Var 
Jum : Array[jan..mei] of Integer;

II. Deklarasi Konstanta Array 
Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const). 
Contoh Program : 
Program Contoh_Deklarasi_Array_Konstan; 
Uses Crt; 
Const 
Tetap : Array[1..4] of Integer=(7,10,21,20); 
Var 
i : Integer; 
Begin 
For i:= 1 to 4 Do 
Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]); 
Readln; 
End. 
konstanta array dapat juga berupa ketetapan dalam bentuk karakter seperti berikut. 
Contoh Program : 
Program Contoh_Konstan_Array_Char_; 
Uses Crt; 
Const 
Huruf : Array[0..5] of Char=('A','B','C','D','E','F'); 
Var 
i : Integer; 
Begin 
For i:= 0 to 5 Do 
Writeln('Nilai konstan array ke',i:2,' = ',Huruf[i]); 
Readln; 
End. 
Konstanta array dapat juga berupa string seperti berikut ini. 
Contoh Program : 
Program Constanta_Array_String; 
Uses Crt; 
Type 
A = Array [1..5] of String; 
Const 
Nama : A = ('basic','pascal','cobol','paradox','dbase'); 
Var 
i : Integer; 
Begin 
For i:= 1 to 5 Do 
Writeln('Nilai Array ke-',i:2,'= ',Nama[i]); 
readln; 
end. 

Dalam pascal string merupakan array dari elemen- elemen karakter seperti berikut : 
Contoh Program : 
Program String_Adalah_Array_Tipe_Char; 
Uses Crt; 
Var 
Nama : string; 
i : Integer; 
Begin 
Nama:='Turbo Pascal'; 
For i:= 1 to Length(nama) Do 
Writeln('Elemen ',i,' dari ',Nama,'= ',Nama[i]); 
Readln; 
End. 

contoh program bilangan prima dengan menggunakan bantuan array. 
Contoh program : 
Program Mencari_Bilangan_Prima_Dengan_Array; 
Uses Crt; 
Var 
Prima : Array[1..100] of Integer; 
i,j : Integer; 
bil : Integer; 
Begin 
ClrScr; 
For i := 2 to 100 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. 

Contoh pengurutan data dengan metode buble sort, yaitu dengan cara penukaran, dapat dilihat pada contoh dibawah ini : 
Contoh Program : 
Program Penggunaan_Array_Untuk_Sortir_Buble_Sort; 
Uses Crt; 
Var 
nil1 : Array[1..100] of Integer; 
n,i,j,dum : Integer; 
Begin 
ClrScr; 
Write('mau isi berapa data acak (integer) ='); readln(n); 
For i := 1 to n Do 
Begin 
Write('Data Ke ',i,':');Readln(nil1[i]); 
End; 
{* penyapuan proses} 
for i:= 1 to n-1 do 
begin 
for j:= i to n do 
begin 
if nil1[j]begin 
dum:=nil1[j]; 
nil1[j]:=nil1[i]; 
nil1[i]:=dum; 
end; 
end; 
end; 
writeln; 
writeln('Hasil Sortir'); 
for i := 1 to n do 
write(nil1[i]:3); 
readln; 
end. 


III. Array Dua Dimensi 
Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array), disini akan dibahas array 2 dimensi saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik. 
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat pada listing program dibawah ini . 

Contoh Program: 
Program Deklarasi_Array_Dua_Dimensi; 
Uses Crt;
Var Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin 
ClrScr; 
Tabel[1,1]:=1; 
Tabel[1,2]:=2; 
Tabel[2,1]:=3; 
Tabel[2,2]:=4; 
Tabel[3,1]:=5; 
Tabel[3,2]:=6; 
For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]); 
End; 
End; 
Readln; 
End. 


IV. Alternatif Deklarasi Array Dua Dimensi. 
Ada beberapa cara dalam mendeklarasikan array dua dimensi, beberapa cara tersebut dapat dilihat dibawah ini : 
Contoh : 
Var 
Tabel : Array[1..3] of Array[1..2] of Byte; 
atau : 
Type 
Matrik = Array[1..3,1..2] of Byte; 
Var 
Tabel : Matrik; 
atau : 
Type 
Baris = 1..3; 
Kolom = 1..2; 
Matrik = Array[Baris,Kolom] of Byte; 
Var 
Tabel : Matrik; 
atau : 
Type 
Baris = 1..3; 
Kolom=1..2; 
Matrik= Array[Baris] of Array[Kolom] of Byte; 
Var 
Tabel : Matrik; 
Dibawah ini akan diberikan listing program penggunaan array dua dimensi dalam aplikasi penjumlahan matrik : 
Contoh Prorgam: 
Program Penjumlahan_Matrik; 
Uses Crt; 
Var 
Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer; 
i,j : Integer; 
Begin 
ClrScr; 
{ input matrik ke satu } 
Writeln(' Elemen matrik satu'); 
For i := 1 to 3 Do 
Begin 
For j := 1 to 2 Do 
Begin 
Write('Elemen baris -',i,' Kolom -',j,'= '); 
Readln(matrik1[i,j]); 
End; 
End; 
{input matrik ke dua} 
Writeln('input elemen matrik dua'); 
For i:= 1 to 3 Do 
Begin 
For j:= 1 to 2 Do 
Begin 
Write('Elemen baris -',i,' kolom -',j,'= '); 
Readln(matrik2[i,j]); 
End; 
End; 
{proses penjumlahan tiap elemen} 
For i := 1 to 3 Do 
Begin 
For j:= 1 to 2 Do 
Begin 
Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j]; 
End; 
End; 
{proses cetak hasil} 
For i:= 1 to 3 Do 
Begin 
For j:= 1 to 2 Do 
Begin 
Write(Hasil[i,j]:6); 
End; 
Writeln; 
End; 
Readln; 
End. 


V. Array Sebagai Parameter 
Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai (by value) atau secara acuan (by reference) ke procedure atau ke function. Procedure yang menggunakan parameter berupa array harus dideklarasikan di dalam judul procedure yang menyebutkan parameternya bertipe array. 

Contoh Program : 
Program Contoh_Pengiriman_Parameter_Array_Di_Procedure; 
Uses Crt; 
Const 
Garis ='---------------------------------------------------'; 
Type 
nama = Array[1..10] of String[15]; 
Bulat = Array[1..10] of Integer; 
Huruf = Array[1..10] of Char; 
Var 
i,Banyak : Integer; 
Procedure Proses(Nama:Untai;Nilai:Bulat); 
Var 
Ket : String; 
Abjad : Char; 
Begin 
Writeln(Garis); 
Writeln('Nama Nilai Abjad Keterangan'); 
Writeln(Garis); 
For i := 1 to Banyak Do 
Begin 
If Nilai[i] > 90 Then 
Begin 
Abjad:='A'; 
Ket :='Istimewa'; 
End; 
If (Nilai[i]<90)>70) Then 
Begin 
Abjad:='B'; 
Ket :='Memuaskan'; 
End; 
If (Nilai[i]<70)>60) Then 
Begin 
Abjad:='C'; 
Ket :='Cukup'; 
End; 
If (Nilai[i]<60)>45) Then 
Begin 
Abjad:='D'; 
Ket :='Kurang'; 
End; 
If Nilai[i]< data ="');Readln(Banyak);" nama ="');readln(Nama[i]);" nilai ="');readln(Nilai[i]);" mahasiswa ="’" data =" ‘);readln(JumDat);" mahasiswa ="’,nama);" nilai =" ‘," rata =" ‘," mahasiswa ="’" data =" ‘);readln(JumDat);" mahasiswa ="’,nama);" nilai =" ‘," rata =" ‘," ask="’Y')or(ask="’y')">=15 then
Begin
harkot[j]:=jumbel[j]*harsat[j];
pot[j]:=0.1*harkot[j];
harsih[j]:=jumbel[j]*harsat[j]-pot[j];
End
Else if jumbel[j]>=30 then
Begin
harkot[j]:=jumbel[j]*harsat[j];
pot[j]:=0.2*harkot[j];
harsih[j]:=jumbel[j]*harsat[j]-pot[j];
End
Else
Begin
harkot[j]:=jumbel[j]*harsat[j];
pot[j]:=0*harkot[j];
harsih[j]:=jumbel[j]*harsat[j]-pot[j];
End;
End;
clrscr;
Gotoxy(1,1);Writeln(’===========================================================================’);
Gotoxy(2,2);Writeln(’No’);
Gotoxy(7,2);Writeln(’Merk’);
Gotoxy(16,2);Writeln(’Ukuran’);
Gotoxy(24,2);Writeln(’Jumlah’);
Gotoxy(32,2);Writeln(’Harga’);
Gotoxy(55,2);Writeln(’Potongan’);
Gotoxy(70,2);Writeln(’Total’);
Gotoxy(1,3);Writeln(’Urut’);
Gotoxy(7,3);Writeln(’Susu’);
Gotoxy(16,3);Writeln(’Kaleng’);
Gotoxy(25,3);Writeln(’Beli’);
Gotoxy(32,3);Writeln(’Satuan’);
Gotoxy(70,3);Writeln(’Bayar’);
Gotoxy(1,4);Writeln(’===========================================================================’);
For j:=1 to i do
Begin
Gotoxy(1,j+4);Writeln(j);
Gotoxy(7,j+4);Writeln(merk[j]);
Gotoxy(18,j+4);Writeln(ukuran[j]);
Gotoxy(26,j+4);Writeln(jumbel[j]);
Gotoxy(32,j+4);Writeln(’Rp’,harsat[j]);
Gotoxy(55,j+4);Writeln(’Rp ‘,pot[j]:0:2);
Gotoxy(67,j+4);Writeln(’Rp ‘,harsih[j]:5:2);
End;
Writeln(’===========================================================================’);
Readln;
End.


Contoh Array Toko serba ada
uses crt;
var
np:string[20];
jd,i:byte;
nb:array[1..50]of string;
jb,ttl,hrg:array[1..50]of real;
tot:real;
lagi:char;
label awal,akhir;
begin
awal:
clrscr;
writeln(’TOKO “SERBA ADA”‘);
writeln(’————————-’);
write(’masukan nama pembeli :’);readln(np);
write(’masukan jumlah data :’);readln(jd);
for i:=1 to jd do
begin
writeln(’data ke- ‘,i);
write(’nama barang :’);readln(nb[i]);
write(’jumlah beli :’);readln(jb[i]);
write(’harga :’);readln(hrg[i]);
end;
clrscr;
writeln(’ TOKO “SERBA ADA”‘);
writeln(’ TABEL PENJUALAN BARANG’);
writeln(’———————————————————–’);
writeln(’No. Nama pembeli Nama barang
Jumlah harga total ‘);
writeln(’———————————————————–’);
tot:=0;
for i:=1 to jd do
begin
ttl[i]:=hrg[i]*jb[i];
tot:=tot+ttl[i];
end;
for i:=1 to jd do
begin
writeln(i:1,np:10,nb[i]:13,jb[i]:12:0,hrg[i]:8:0,ttl[i]:10:0);
end;
writeln(’————————————————————-’);
writeln(’total bayar= ‘,tot:3:0);
writeln(’————————————————————-’);
write(’Mau input data
lagi[Y/T]=’);readln(lagi);
if (lagi=’Y') or (lagi=’y') then
goto awal
else
goto akhir;
akhir:
readln;
end.



Contoh Array Bengkel

program bengkel;
uses crt;
var
i,b:byte;
nm,nmoli,jnsmbl:array [1..50]of string;
hrg,bonus,hrgsev,hrgoli,tot:array [1..50]of
real;
totb:real;
begin
clrscr;
writeln(’BENGKEL MAJU MUNDUR’);
writeln(’========================’);
write(’Masukan data: ‘);readln(b);
for i:=1 to b do
begin
writeln(’data ke- ‘,i);
writeln;
write(’nama pengunjung :’);readln(nm[i]);
write(’jenis kendaraan [1. mobil| 2.
motor]:’);readln(jnsmbl[i]);
write(’jenis oli [ 1. castrol| 2. pelumas
pertamina]:’);readln(nmoli[i]);
end;
writeln;
writeln(’ PROGRAM SERVIC BENGKEL
MAJU MUNDUR’);
writeln(’======================================================================’);
writeln(’NO NAMA PENGUNJUNG JENIS
KENDARAAN JENIS OLI TOTAL ‘);
writeln;
totb:=0;
for i:=1 to b do
begin
if jnsmbl[i]=’1′ then
hrgsev[i]:=30000
else
hrgsev[i]:=20000;
if nmoli[i]=’2′ then
hrgoli[i]:= 20000
else
hrgoli[i]:=30000;
tot[i]:=hrgsev[i]+hrgoli[i];
totb:=totb+tot[i];
end;
for i:=1 to b do
begin
writeln(i:1,nm[i]:9,hrgsev[i]:14:0,hrgoli[i]:18:0,tot[i]:19:0);
end;
writeln(’=================================================================’);
writeln(’total bayar
:’,totb:2:0);
readln;
end.


Contoh Array Kereta

uses crt;
var
jp,i:byte;
np,nk:array[1..50]of string;
fsl:array[1..50]of char;
jml,hrg,ttl:array[1..50]of real;
tot:real;
lagi:char;
label awal,akhir;
begin
awal:
clrscr;
writeln(’STASIUN “HARUS BERHENTI” ‘);
writeln(’================================’);
write(’masukan jumlah pemesan :’);readln(jp);
for i:=1 to jp do
begin
writeln(’Data ke- ‘,i);
write(’Nama pemesan :’);readln(np[i]);
write(’Nama kereta :’);readln(nk[i]);
writeln(’fasilitas [ 1.VVIP 3.BISNIS ');
write(' 2.VIP 4.EKONOMI ]
=’);readln(fsl[i]);
write(’jumlah pesan :’);readln(jml[i]);
end;
writeln(’ STASIUN “HARUS BERHENTI” ‘);
writeln(’ PROGRAM PENJUALAN TIKET KERETA API’);
writeln(’————————————————————————-’);
writeln(’NO. Nama Pemesan Nama Kereta Fasilitas Jumlah Pesan harga total’);
tot:=0;
for i:=1 to jp do
begin
if fsl[i]=’1′ then
hrg[i]:=200000
else
if fsl[i]=’2′ then
hrg[i]:=180000
else
if fsl[i]=’3′ then
hrg[i]:=140000
else
hrg[i]:=80000;
ttl[i]:=hrg[i]*jml[i];
tot:=tot+ttl[i];
end;
for i:=1 to jp do
begin
writeln(i:1,np[i]:10,nk[i]:12,fsl[i]:15,jml[i]:14:0,hrg[i]:12:0,ttl[i]:10:0);
end;
writeln(’————————————————————————–’);
writeln(’total pembayaran
=’,tot:9:0);
writeln(’————————————————————————–’);
write(’Mau input data lagi[Y/T]=’);readln(lagi);
if (lagi=’Y') or (lagi=’y') then
goto awal
else
goto akhir;
akhir:
readln;
end.

Selamat MencoBa Semoga Berhasil 

2 komentar:

shofajojo mengatakan...

kakakk nanya donk...
semisal ada soal sperti ini gimana penyekleseaiannya
tuliskan fungsi untuk menghtung jangkauan (range) nilai ddlam larik. jangkauan adalah selisih nilai terbesar dg nilai terkecil... please ya kakak dibantu

Imam Budiman mengatakan...

Mantap kak...makasih postinganya