Upload
trinhanh
View
219
Download
0
Embed Size (px)
Citation preview
ARRAY DAN ARRAY DAN
MateriMateri
ARRAY DAN ARRAY DAN RECORDRECORD
MateriMateri 66
ARRAYARRAY
• Sebuah struktur data yang terdiri atassama, dimana masing-masing elemenSetiap elemen array mampu untukvariabel).
• Cara Pendefinisian
Contoh: type A = array [1..6] of integer;
Secara logika pendefinisian array didimana tiap kotak mempunyai nilai indeksarray ditandai dengan: A[1], A[2], A[elemen array misal A[1]:=4;.
1 2 3 4
ARRAYARRAY
atas banyak variabel dengan tipe dataelemen variabel mempunyai nilai indeks.untuk menyimpan satu jenis data (yaitu:
;
atas merupakan sekumpulan kotak,indeks integer 1, 2, 3, ...,6 tiap elemenA[3], A[4], A[5], A[6] untuk mengisi
22
5 6
SIFAT ARRAY
Array merupakan struktur data yang statisditentukan terlebih dahulu dan tak bisamenyatakan array dalam PASCAL kita haruselemen array .
Contoh:
const N=10;
type A= array [1..N] of integer;
SIFAT ARRAY
statis, yaitu jumlah elemen yang ada harusbisa diubah saat program berjalan. Untukharus terlebih dahulu Mendefinisikan jumlah
33
Array SatuType nama_array = ARRAY[bawah..atas]of tipe_data;
var variabel_array : nama_array;
Atau
var variabel_array :
ARRAY[bawah..atas] of tipe_data;
#jika kita ingin membuat beberapa arraydengan tipe/jenis yang sama, kita lebihbaik jika mendeklarasikan dengan typeselanjutnya dengan deklarasi var.
Satu Dimensi
44
Contoh Program Array 1 dimensiprogram INT_ARRAY;uses wincrt; const N=10;type int_array = ARRAY [1..N] of integer; var bil : int_array; indeks : integer; BEGIN writeln('masukkan sepuluh bilangan integer.'); for indeks := 1 to 10 do begin readln(bil[indeks]); { loop untuk memasukkan elemen array } end; writeln('Isi dari array ini adalah'); { tampilkan setiap elemen } for indeks := 1 to 10 do begin writeln('bil[', indeks:2,'] adalah ',bil[indeks] );EndEND.
Array MultidimensiDalam array multidimensi terdiri atas baris (row) dankolom (column). Index pertama adalah baris dan yangkedua adalah kolom.Sintaks:• Type nama_array =ARRAY[bawah..atas, bawah..atas
of tipe_data; var variabel_array: nama_array;atau
• SYNTAX var variabel_array: ARRAY [bawah..atasbawah..atas] of tipe_data;
# Pernyataan berikut membentuk suatu array integerdengan nama bilangan , 10 x 10 elemen (100).type matriks = ARRAY [1..10, 1..10] of integer; var
AKU: matriks;
Multidimensidan
yang
atas]
atas,
integer
55
ARRAY [ 1..5, 1..5]
A[1,1] A[1,2] A[1,3] A[1,4] A[1,5]
A[2,1] A[2,2] A[2,5]
A[3,1] A[3,3] A[3,5]
A[4,1] A[4,4] A[4,5]
A[5,1] A[5,5]
Contoh Program
Procedure ISI_MATRIK(AKU:matriks; m,n:integer);
var i,j: integer;
{faktor pengulang}
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
gotoxy(x+2i.y+2y);
read(A[i,j]);
end;
readln ;
{ini memungkinkan kita menulis tiap baris elemen
end; 66
);
elemen}
MemprosesMisal diberikan deklarasi suatu array sebagai
VARX : ARRAY [1..10] OF integer;
Untuk keperluan membaca variabel X (input)sebuah data bernilai tunggal, yaitu READ (X)
Sebab jika kita membaca/input suatu variabelelemen-elemen array tersebut.
Untuk itu diperlukan suatu bentuk perulangan
FOR I := 1 TO 10 DO READ ( X[1] );
Demikian pula halnya untuk keperluanditunjukkan elemen yang akan diproses.
Memproses Arraysebagai berikut :
VARX : ARRAY [1..10] OF integer;
(input) kita tidak bisa melakukan seperti(X).
variabel berjenis array berarti kita membaca
perulangan seperti berikut :
FOR I := 1 TO 10 DO READ ( X[1] );
keperluan memproses elemen-elemennya, harus
77
Contoh 1:
Misal terdapat 10 bilangan integer positif yangTentukan integer yang terbesar diantara 10 integerPenyelesaiannya :
PROGRAM MAKS ;
VAR B : ARRAY [1..10] OF integer;
I,J,MAX : integer;
Begin
FOR I := 1 TO 10 DO READ(B[I});
MAX := B[1];
FOR J := 2 TO 10 DO
IF MAX <= B[J] THEN MAX := B[I}
WRITE (MAX);
End.
yang berbeda disimpan di dalam suatu array B.integer tersebut dengan suatu program Pascal.
;
B[I};
88
Contoh 2:Dari soal contoh 1 di atas, buat program yangPenyelesaiannya :PROGRAM RATA_RATA;TYPE INDEKS = 1..10;VAR A : ARRAY [INDEKS] OF INTEGER;
I : INTEGER;TOTAL : INTEGER;RATA2 : REAL;
BEGINTotal := 0;FOR I := 1 TO 10 DOBEGIN
READ (A[I]);TOTAL := TOTAL + A[I];
END;RATA2 := TOTAL / 10;WRITE (RATA2);
END.
menghitung rata-rata dari 10 bilangan tersebut.
99
RECORD• Record dapat dikatakan sebagai suatu
mempunyai jenis data berbeda.• Data item yang merupakan elemen record
Bentuk Umum:TYPE identifier = RECORD
Nama_field_1 : jenis;Nama_field_2 : jenis;……………………..……………………..nama_field_n : jenis;
END;
RECORDkumpulan data item yang masing-masing
biasanya disebut dengan FIELD.
1010
Contoh :
1. VAR nilai : RECORD
Nilai_1 : integer;
Nilai_2 : integer;
END;
2. TYPE date = RECORD
Tanggal : 1..31;
Bulan : 1…12;
Tahun : 1900..2000;
END;
VAR event1,event2 : ARRAY [1..10]OF date;
3.
ENDVAR
1111
TYPE account = RECORDcust_no : integer;cust_type : char;cust_balance : real;
END;VAR customer : account;
MEMPROSES VARIABEL BERJENIS RECORD Perhatikan deklarasi variabel berikut : TYPE nilai : RECORD
Nilai1 : real; Nilai2 : real;
END; VAR x,y : nilai;
# Untuk memproses variabel x dan / atauy dilakukan dengancara menyebutkan field designatornya, yg terdiri dari atas :
Nama_record.nama_fieldPada deklarasi diatas yang dimaksud dengan field designator-nya adalah :
x.nilai1 x.nilai2 y.nilai1 y.nilai2
Jadi jika ingin membaca variabel x atau y atau keduanya, makabentuk statement-nya adalah :
READ (x.nilai1, x.nilai2, y.nilai1, y.nilai2);
dengan
maka
1212
Selanjutnya, misal ingin dibuat program sederhana untukmenjumlahkan dua bilangan kompleks a dan b yang hasilnyadisimpan di c.Secara aljabar penjumlahan dua bilangan kompleks adalahsebagai berikut :
a = x1 + iy1b = x2 + iy2 +c = (x1 + x2 ) + I(y1 + y2)
Maka bentuk garis besar programnya adalah sebagai berikut :Program contoh ;
Type bk = recordBag_nyata : integer;Bag_imajiner : integer;
End;Var a,b,c : bk;BeginRead (a.bag_nyata, a.bag_imajiner, b.bag_nyata,b.bag_imajiner);c.bag_nyata := a.bag_nyata + b.bag_imajiner;c.bag_imajiner := a.bag_imajiner + b.bag_imajiner;writeln(c.bag_nyata,’ +’,’i’,c.bag_imajiner);End.
STATEMENT “WITH”Selain cara yang telah disebutkan diatas, untukmemproses suatu record dapat digunakan statementWITH. Dengan statement ini penulisannya akanlebih sederhana.
Bentuk Umum:WITH nama_record DO statement
Perhatikan deklarasi dibawah ini :TYPE x = RECORDNo : integer;Kode : char;Juml : integer;Harga : real;END;VAR p,q : x;
STATEMENT “WITH”
1313
Untuk membaca variabel p dan q di sampingdengan memanfaatkan statement WITHbentuknya menjadi :
WITH p,q DO read (no, kode, juml, harga);
Bandingkan jika digunakan cara sebelumnya :
Read (p.no, p.kode, p.juml, p.harga, q.no, q.kode, q.juml, q.harga);
CONTOH :Pernyataan seperti :
Data.npm :=‘22297566’Data.Nama:=‘Abdul Kadir’Data.Fakultas:=‘Teknik’
Dapat diganti dengan :
WITH Data DoBegin
npm :=‘22297566’Nama:=‘Abdul Kadir’Fakultas:=‘Teknik’
end;
Apabila di dalamrecord, haruslahdengan nama yangType
BarangXBatuKayu
END;BarangYBatuKayu
END;Varbrg_Xbrg_Y
1414
dalam pernyataan WITH terdapat lebih dari satuharuslah pada kedua record tersebut tidak ada field
yang sama. Sebagai contoh :
BarangX=RECORDBatu:integer;Kayu:real;
BarangY=RECORDBatu:string[10];Kayu:char;
brg_X:barangX;brg_Y:barangY;
d) Fungsi standar INTBentuk umum : INT(x:real):real;Digunakan untuk menghasilkan nilai integerdengan nilai yang berupa pembulatan ke bawahContoh :Begin
X:=9.99; Write(‘Nilai yang akan dibulatkan = ‘ ,X); Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2);
End. Hasil :
Nilai yang akan dibulatkan = 9.99 Nilai pembulatannya = 9.00
integer dari x. hasil dari fungsi adalah tipe realbawah (nilai pecahan dibuang) dari nilai x.
= ‘ ,X); (X):3:2);
1515
e) Fungsi standar FRAC
Bentuk umum : FRAC(x:):real;
Digunakan untuk mendapatkan nilai pecahanbernilai real maupun integer dan hasil dari
Contoh :
Begin
X:=9.99;
Write(‘Nilai X = ‘,X, ‘Nilai pecahannya
End.
Hasilnya : Nilai X = 9.99 Nilai pecahannya
pecahan dari argumen x. Argumen x dapatdari fungsi adalah real.
= ‘,Frac(X):4:3);
pecahannya = 0.990
1616
f) Fungsi standar SQRBentuk umum : SQR(x);Digunakan untuk menghitung nilai pangkat kuadrat dariReal atau Integer dan hasil Fungsinya akan sama denganContoh : Program Misal5;Var
X : Real;Begin
Write(‘Nilai yang akan dikuadratkan ?’); ReadlnWriteln(‘Nilai kuadratnya =’, SQR(X):9:2);
End.
Output :Nilai yang akan dikuadratkan ? 5Nilai kuadratnya = 25.00
dari argumen X. Argumen X dapat berbentuk tipedengan tipe argumennya.
Readln(X);
1717
Karena kedua variabel record brg_X dan brg_Ykemudian dikenakan pernyataan :WITH brg_X, brg_Y DoBegin
writeln(batu);writeln(kayu);
End;dapat menyebabkan hasil tidak seperti yang diharapkan
brg_Y memiliki nama field yang sama, Jika misalnya
diharapkan.
1818
Record yang
• Suatu record dengan field yang bisaberubah pada saat program berjalan. Halyang perlu diperhatikan adalah bahwabeberapa field yang berada dalam recordtidak pernah muncul dalam serempakhanya akan ada satu field yang terpakaidalam satu saat.
• Record varian akan memberikan fasilitasuntuk menentukan field yang diperlukanpada saat program berjalan (RUN-TIME),berdasarkan keperluannya.
Record yang Bervariasi
bisaHal
bahwarecord
serempak,terpakai
fasilitasdiperlukan
TIME),
1919
Bentuk umum Record Varian :TYPE namarecord = RECORD
Nama_field_1 : jenis;Nama_field_2 : jenis;……………………..nama_field_n : jenis;Case Tagfield: jenis Ofnama_tagfield : (Nama_field:jenis);nama_tagfield: (Nama_field_1,Nama_field_2:jenis);……………………..nama_tagfield: (Nama_field_n:jenis);
END;
Contoh :Type status=(T,P,J);
gaji=RECORDnapeg :string[25];nopeg :string[10];bagian :string[15];CASE stat :status OFT:(gaji:integer);P:(gajiperjam,jmlmax:integer)J:(upahperjam,lembur:integer
end;
);integer);
2020
Array tipe recordtype barang=RECORD
namabrg:string[20];jmlbrg:byte;hargabrg:real;total:real;end;var jual:array [1..10] of barangi,j:integer;tot1:real;
BeginI:=1;write(‘Nama barang :’);readln(jual[i].nmbrg);
Repeatwrite(‘Jumlah barang :’);readln(jual[i].jmlbrg);write(‘Harga barang :’);readln(jual[i].hrgbrg);jual[i].total:=jual[i].jmlbrg* jual[i]. jual[i].hrg.brg;inc (I);write(‘Nama barang :’);readln(jual[i].nmbrg);until (jual[i].nmbrg=‘0’) or (I=11);
decclrscrwritelnwritelnwritelnforbegingotoxygotoxygotoxygotoxygotoxytotendwritelnwritelnwritelnend
2121
dec(i);clrscr;writeln (‘------------------------------------------------------------’);writeln (‘No nama barang jumlah harga total’);writeln (‘------------------------------------------------------------’);for j:=1 to I dobegingotoxy(1,j+3);write (j);gotoxy(5,j+3);write(jual[i].nmbrg);gotoxy(26,j+3);write(jual[i].jmlbrg:10);gotoxy(37,j+3);write(jual[i].hrgbrg:10:2);gotoxy(48,j+3);write(jual[i].total:10:2);tot1:=tot1 + jual[j].total ;end;writeln (‘------------------------------------------------------------’);writeln(‘ Total :’,tot1:10:2’);writeln (‘------------------------------------------------------------’);end.
Array dalam record
Type barang= RECORD
nmbrg:string[20];
jmlbrg:array[1..3]of byte;
hrgbrg:real;
total:real;
end;
var jual:barang;
tbarang, i:integer;
Begin
clrscr;
write(‘Nama Barang :’);readln(jual.nmbrg);
for i:=1to 3 do
otal Harga Barang = ‘, jual.total:10:2);
end. 2222
begin
write(‘Jumlah barang ’,I,’ : ’);readln(jual.jmlbrg[i]);
tbarang:=tbarang+jual.jmlbrg[i];
end;
write(‘Harga barang :’);readln(jual.hrgbrg);
jual.total:=tbarang*jual.hrgbrg;
writeln(‘Total Harga Barang = ‘, jual.total:10:2);
end.
SET (HIMPUNAN) Set adalah kumpulan dari nilai-nilai yang
yang sama dan urutan penulisannya tidak diperhatikandisebut dengan anggota atau elemen himpunan
1. Huruf vokal dalam alfabet
2. kendaraan bermotor
3. binatang menyusui
4. bilangan genap 1 sampai 100
5. dan sebagainya
Set termasuk ke dalam tipe data terstruktursama dan harus bertipe data ordinal yang memilikiBerbeda dengan tipe data array, tipe data SETkedua dan seterusnya. Pada tipe data SET tidak
SET (HIMPUNAN) yang memiliki kesamaan sifat, yaitu tipe data
diperhatikan. Setiap obyek dalam himpunanhimpunan. Contoh :
terstruktur, terdiri dari sejumlah elemen yang bertipememiliki nilai terletak antara 0 sampai 255.
SET tidak mengenal elemen pertama, elementidak terdapat elemen yang bernilai sama.
2323
Deklarasi SET (
Dapat dideklarasikan dalam deklarasi tipe data :
Type variabel_set = SET OF tipe_data;
Dapat pula dideklarasikan dalam deklarasi
Var variabel_set = SET OF tipe_data;
SET (Himpunan)
data :
;
var data :
2424
Contoh :Typekata = set of char; {tipe dasar}huruf besar =‘A’..’Z’; {subrange}Perintah = set of hurufbesar ;Hari = (senin,selasa,rabu,kamis,jumat,sabtu,mingguHari2 = set of Hari;Pilihan = set of 1..7 {subrange dalam bentuk bilanganVarhurufkecil :set of‘a’..’z’;kapital : hurufbesar;hariseminggu : hari2;Kalimat : kata;
Dalam keadaan awal, suatu variabel yang bertipemerupakan suatu variabel kosong, dinyatakan dengan
senin,selasa,rabu,kamis,jumat,sabtu,minggu); {enumerasi}
bilangan};
bertipe data SET belum terisi. Variabel tersebutdengan tanda[ ]. 2525
Contoh program memberikan nilai untuk tipeProgram SET1; type Hari = (senin,selasa,rabu,kamis,jumat,sabtu,mingguHari2 = set of Hari; varhariseminggu:hari2; begin hariseminggu:=[selasa, kamis,sabtu]; end.
data SET :
senin,selasa,rabu,kamis,jumat,sabtu,minggu); {enumerasi}
2626
Operasi SET (1. Operasi Penjumlahan
Disebut juga operasi penggabungan(UNION), Operatornya (+).
Contoh :
A:= [‘B’,’F’,’J’,’L’];
A:= A + [‘a’,’B’,’b’,’c’,’d’,’e’,’f’,’j’,’k’,’l’];
maka nilai A sekarang adalah[‘B’,’F’,’J’,’L’,‘a’,’b’,’c’,’d’,’e’,’f’,’j’,’k’,’l’]
Maka nilai W adalah [1,2,3]
SET (Himpunan)
2727
2. Operasi Pengurangan
Disebut juga operasi selisih SET,operatornya (-).
Misal :
SET1 - SET2, menghasilkan elemen yangmerupakan anggota SET1 yang bukan
anggota SET2.
Contoh :
A:=[1,2,3,4,5];
B:=[4,5,6,7];
W:=A-B;
Maka nilai W adalah [1,2,3]
3. Operasi Perkalian
Disebut juga operasi Intersection (irisan), operatornya
Misal :
SET1 - SET2, menghasilkan elemen yang merupakan
merupakan anggota SET2.
Contoh :
1. A:=[1,2,3,4,5];
B:=[1,3,5,6,7];
C:=A*B;
Maka nilai C adalah [1,3,5]
operatornya (*).
merupakan anggota SET1 dan sekaligus
2828
2. D:=[1,2,3,4,5];E:=[6,7,8,9,10];F:=A*B;
Maka nilai F adalah [ ]
Perbandingan dalam
Contoh :
1. [3,4,5]=[4,5,3] hasil TRUE
2. [c,d]=[d,g,c] hasil FALSE
3. [2,4]< >[2,3] hasil TRUE
4. f in [‘a’..’z’] hasil TRUE
dalam SET (Himpunan)
2929
5. [2,1] < = [1,2,3] hasil TRUE
6. [5,6,7] > = [7,6] hasil TRUE
7. 3 in [4,5,3,2] hasil TRUE
8. [2,1] > = [1,2] hasil TRUE
ContohContoh Program Program PerbandinganPerbandinganProgram Set1; Uses crt; Type kbil=set of byte; var kbil1,kabil2:kabil;
a,b:byte; begin
clrscr; write(‘Tentukan batas bawah :’);readln(a); {Input Himpunanwrite(‘Tentukan batas Atas:’);readln(b); Kbil1:=[a..b]; write(‘Tentukan batas bawah :’);readln(a); {Input Himpunanwrite(‘Tentukan batas Atas:’);readln(b); Kbil2:=[a..b]; if kbil1= kbil2 then writeln(‘Himpunan 1 sama denganif kbil1 < > kbil2 then writeln(‘Himpunan 1 tidak samaif kbil1< = kbil2 then writeln(‘Himpunan 1 anggota dariif kbil1> = kbil2 then writeln(‘Himpunan 1 mempunyai
end.
PerbandinganPerbandingan SETSET
Himpunan Pertama}
Himpunan Kedua}
Himpunan 2’); dengan Himpunan 2’);
dari Himpunan 2’); anggota Himpunan 2’);
3030
ContohContoh Program Operator INProgram Operator INProgram set2; uses crt; type karakter= set of char; var kapital : karakter;
hidup : karakter; jumlahh,jumlahk : integer; kalimat : string;i:integer;
begin clrscr;
kapital:=[‘A’..’Z’]; hidup:=[‘A’,’E’,’I’,’O’,’U’,’a’,’e’,’i’,’o’,’u’]; jumlahh:=0;
Program Operator INProgram Operator IN
3131
jumlahk:=0; writeln(‘Masukkan suatu kalimat :’); readlne (kalimat); for I:=1 to length(kalimat) do
begin if kalimat[i] in kapital then inc(jumlahk); if kalimat[i] in hidup then inc(jumlahh); end; writeln(‘Jumlah kapital =‘,jumlahk); writeln(‘Jumlah huruf hidup =‘,jumlahh);
end.
Aplikasi PenggunaanProgram bacakarakter; uses crt; type karakter=set of char; var pilihan:char; function
bacakar(pesan:string;pilihansah:karakter):char; var ch:char; begin write(pesan); repeat ch:=upcase(readkey); until(ch in pilihansah); writeln(ch); bacakar:=ch; end;
SET dalam Program
):char;
3232
{Program utama} Begin clrscr; repeat Pilihan:=bacakar(‘Anda :(T)ulis Halo,
(B)el,(S)elesai’,[‘T’,’B’,’S’]); Case pilihan of ‘T’:writeln(‘Hallo...’); ‘B’:writeln(‘bel’+ #7); ‘S’:writeln(‘Terimakasih’); end; Until pilihan =‘S’; end.
TERIMAKASIHTERIMAKASIH
Lilis Setyowati
3333