33
ARRAY DAN ARRAY DAN Materi Materi ARRAY DAN ARRAY DAN RECORD RECORD Materi Materi 6 6

ARRAY DAN RECORD.pdf

Embed Size (px)

Citation preview

Page 1: ARRAY DAN RECORD.pdf

ARRAY DAN ARRAY DAN

MateriMateri

ARRAY DAN ARRAY DAN RECORDRECORD

MateriMateri 66

Page 2: ARRAY DAN RECORD.pdf

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

Page 3: ARRAY DAN RECORD.pdf

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

Page 4: ARRAY DAN RECORD.pdf

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.

Page 5: ARRAY DAN RECORD.pdf

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]

Page 6: ARRAY DAN RECORD.pdf

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}

Page 7: ARRAY DAN RECORD.pdf

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

Page 8: ARRAY DAN RECORD.pdf

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

Page 9: ARRAY DAN RECORD.pdf

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

Page 10: ARRAY DAN RECORD.pdf

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

Page 11: ARRAY DAN RECORD.pdf

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;

Page 12: ARRAY DAN RECORD.pdf

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.

Page 13: ARRAY DAN RECORD.pdf

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);

Page 14: ARRAY DAN RECORD.pdf

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;

Page 15: ARRAY DAN RECORD.pdf

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

Page 16: ARRAY DAN RECORD.pdf

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

Page 17: ARRAY DAN RECORD.pdf

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

Page 18: ARRAY DAN RECORD.pdf

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

Page 19: ARRAY DAN RECORD.pdf

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;

Page 20: ARRAY DAN RECORD.pdf

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

Page 21: ARRAY DAN RECORD.pdf

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.

Page 22: ARRAY DAN RECORD.pdf

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.

Page 23: ARRAY DAN RECORD.pdf

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

Page 24: ARRAY DAN RECORD.pdf

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

Page 25: ARRAY DAN RECORD.pdf

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

Page 26: ARRAY DAN RECORD.pdf

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

Page 27: ARRAY DAN RECORD.pdf

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]

Page 28: ARRAY DAN RECORD.pdf

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 [ ]

Page 29: ARRAY DAN RECORD.pdf

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

Page 30: ARRAY DAN RECORD.pdf

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

Page 31: ARRAY DAN RECORD.pdf

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.

Page 32: ARRAY DAN RECORD.pdf

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.

Page 33: ARRAY DAN RECORD.pdf

TERIMAKASIHTERIMAKASIH

Lilis Setyowati

3333