ARRAY DAN
ARRAY DAN
Materi
Materi
ARRAY DAN
ARRAY DAN RECORD
RECORD
Materi
Materi 66
ARRAY
ARRAY
•
Sebuah struktur data yang terdiri atas
sama, dimana masing-masing elemen
Setiap elemen array mampu untuk
variabel).
•
Cara Pendefinisian
Contoh: type A = array [1..6] of integer;
Secara logika pendefinisian array di
dimana tiap kotak mempunyai nilai indeks
array ditandai dengan: A[1], A[2], A[
elemen array misal A[1]:=4;.
1 2 3 4
ARRAY
ARRAY
atas banyak variabel dengan tipe data
elemen variabel mempunyai nilai indeks.
untuk menyimpan satu jenis data (yaitu:
;
atas merupakan sekumpulan kotak,
indeks integer 1, 2, 3, ...,6 tiap elemen
A[3], A[4], A[5], A[6] untuk mengisi
22
SIFAT ARRAY
Array merupakan struktur data yang statis ditentukan terlebih dahulu dan tak bisa menyatakan array dalam PASCAL kita harus elemen array .
Contoh: const N=10;
type A= array [1..N] of integer;
SIFAT ARRAY
statis, yaitu jumlah elemen yang ada harus bisa diubah saat program berjalan. Untuk harus terlebih dahulu Mendefinisikan jumlah
Array Satu
Type 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 array dengan tipe/jenis yang sama, kita lebih baik jika mendeklarasikan dengan type selanjutnya dengan deklarasi var.
Satu Dimensi
44
Contoh Program Array 1 dimensi program 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] ); End
Array Multidimensi
Dalam array multidimensi terdiri atas baris (row) dan kolom (column). Index pertama adalah baris dan yang kedua 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..atas
bawah..atas] of tipe_data;
# Pernyataan berikut membentuk suatu array integer dengan nama bilangan , 10 x 10 elemen (100).
type matriks = ARRAY [1..10, 1..10] of integer; var AKU: matriks;
Multidimensi
dan 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
);
Memproses
Misal 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 variabel elemen-elemen array tersebut.
Untuk itu diperlukan suatu bentuk perulangan
FOR I := 1 TO 10 DO READ ( X[1] ); Demikian pula halnya untuk keperluan
ditunjukkan elemen yang akan diproses.
Memproses Array
sebagai 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
Contoh 1:
Misal terdapat 10 bilangan integer positif yang Tentukan integer yang terbesar diantara 10 integer Penyelesaiannya :
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};
Contoh 2:
Dari soal contoh 1 di atas, buat program yang Penyelesaiannya :
PROGRAM RATA_RATA; TYPE INDEKS = 1..10;
VAR A : ARRAY [INDEKS] OF INTEGER; I : INTEGER; TOTAL : INTEGER; RATA2 : REAL; BEGIN Total := 0; FOR I := 1 TO 10 DO BEGIN READ (A[I]);
TOTAL := TOTAL + A[I]; END;
RATA2 := TOTAL / 10; WRITE (RATA2);
END.
menghitung rata-rata dari 10 bilangan tersebut.
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;
RECORD
kumpulan data item yang masing-masing biasanya disebut dengan FIELD.
10 10
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. END VAR 11 11
TYPE account = RECORD cust_no : integer; cust_type : char; cust_balance : real; END;
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 dengan cara menyebutkan field designatornya, yg terdiri dari atas :
Nama_record.nama_field
Pada 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, maka bentuk statement-nya adalah :
READ (x.nilai1, x.nilai2, y.nilai1, y.nilai2);
dengan
maka
12 12
Selanjutnya, misal ingin dibuat program sederhana untuk menjumlahkan dua bilangan kompleks a dan b yang hasilnya disimpan di c.
Secara aljabar penjumlahan dua bilangan kompleks adalah sebagai berikut :
a = x1 + iy1 b = x2 + iy2 +
c = (x1 + x2 ) + I(y1 + y2)
Maka bentuk garis besar programnya adalah sebagai berikut : Program contoh ; Type bk = record Bag_nyata : integer; Bag_imajiner : integer; End; Var a,b,c : bk; Begin
Read (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);
STATEMENT “WITH”
Selain cara yang telah disebutkan diatas, untuk memproses suatu record dapat digunakan statement WITH. Dengan statement ini penulisannya akan lebih sederhana.
Bentuk Umum:
WITH nama_record DO statement Perhatikan deklarasi dibawah ini : TYPE x = RECORD No : integer; Kode : char; Juml : integer; Harga : real; END; VAR p,q : x;
STATEMENT “WITH”
13 13Untuk membaca variabel p dan q di samping dengan memanfaatkan statement WITH bentuknya 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 Do Begin npm :=‘22297566’ Nama:=‘Abdul Kadir’ Fakultas:=‘Teknik’ end; Apabila di dalam record, haruslah dengan nama yang Type BarangX Batu Kayu END; BarangY Batu Kayu END; Var brg_X brg_Y 14 14
dalam pernyataan WITH terdapat lebih dari satu haruslah pada kedua record tersebut tidak ada field
yang sama. Sebagai contoh :
BarangX=RECORD Batu:integer; Kayu:real; BarangY=RECORD Batu:string[10]; Kayu:char; brg_X:barangX; brg_Y:barangY;
d) Fungsi standar INT
Bentuk umum : INT(x:real):real;
Digunakan untuk menghasilkan nilai integer dengan nilai yang berupa pembulatan ke bawah Contoh :
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 real bawah (nilai pecahan dibuang) dari nilai x.
= ‘ ,X); (X):3:2);
15 15
e) Fungsi standar FRAC
Bentuk umum : FRAC(x:):real;
Digunakan untuk mendapatkan nilai pecahan bernilai 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 dapat dari fungsi adalah real.
= ‘,Frac(X):4:3);
pecahannya = 0.990
16 16
f) Fungsi standar SQR Bentuk umum : SQR(x);
Digunakan untuk menghitung nilai pangkat kuadrat dari Real atau Integer dan hasil Fungsinya akan sama dengan Contoh :
Program Misal5; Var
X : Real; Begin
Write(‘Nilai yang akan dikuadratkan ?’); Readln Writeln(‘Nilai kuadratnya =’, SQR(X):9:2);
End. Output :
Nilai yang akan dikuadratkan ? 5 Nilai kuadratnya = 25.00
dari argumen X. Argumen X dapat berbentuk tipe dengan tipe argumennya.
Readln(X);
17 17
Karena kedua variabel record brg_X dan brg_Y kemudian dikenakan pernyataan :
WITH brg_X, brg_Y Do Begin
writeln(batu); writeln(kayu); End;
dapat menyebabkan hasil tidak seperti yang diharapkan
brg_Y memiliki nama field yang sama, Jika misalnya
diharapkan.
18 18
Record yang
• Suatu record dengan field yang bisaberubah pada saat program berjalan. Hal yang perlu diperhatikan adalah bahwa beberapa field yang berada dalam record tidak pernah muncul dalam serempak hanya akan ada satu field yang terpakai dalam satu saat.
• Record varian akan memberikan fasilitas
untuk menentukan field yang diperlukan pada saat program berjalan (RUN-TIME), berdasarkan keperluannya.
Record yang Bervariasi
bisa Hal bahwa record serempak, terpakai fasilitas diperlukan TIME), 19 19
Bentuk umum Record Varian :
TYPE namarecord = RECORD Nama_field_1 : jenis;
Nama_field_2 : jenis; ………..
nama_field_n : jenis; Case Tagfield: jenis Of
nama_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=RECORD
napeg :string[25];
nopeg :string[10];
bagian :string[15];
CASE stat :status OF
T:(gaji:integer);
P:(gajiperjam,jmlmax:integer)
J:(upahperjam,lembur:integer
end;
);
integer);
20 20Array tipe record type barang=RECORD namabrg:string[20]; jmlbrg:byte; hargabrg:real; total:real; end;
var jual:array [1..10] of barang i,j:integer;
tot1:real; Begin
I:=1;
write(‘Nama barang :’);readln(jual[i].nmbrg); Repeat
write(‘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);
dec clrscr writeln writeln writeln for begin gotoxy gotoxy gotoxy gotoxy gotoxy tot end writeln writeln writeln end 21 21 dec(i); clrscr; writeln (‘---’); writeln (‘No nama barang jumlah harga total’);
writeln (‘---’); for j:=1 to I do begin gotoxy(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);
SET (HIMPUNAN)
Set adalah kumpulan dari nilai-nilai yang
yang sama dan urutan penulisannya tidak diperhatikan disebut 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 terstruktur
sama dan harus bertipe data ordinal yang memiliki Berbeda dengan tipe data array, tipe data SET
kedua dan seterusnya. Pada tipe data SET tidak
SET (HIMPUNAN)
yang memiliki kesamaan sifat, yaitu tipe data diperhatikan. Setiap obyek dalam himpunan himpunan. Contoh :
terstruktur, terdiri dari sejumlah elemen yang bertipe memiliki nilai terletak antara 0 sampai 255. SET tidak mengenal elemen pertama, elemen tidak terdapat elemen yang bernilai sama.
23 23
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 : 24 24Contoh : Type
kata = set of char; {tipe dasar} huruf besar =‘A’..’Z’; {subrange} Perintah = set of hurufbesar ;
Hari = (senin,selasa,rabu,kamis,jumat,sabtu,minggu Hari2 = set of Hari;
Pilihan = set of 1..7 {subrange dalam bentuk bilangan Var
hurufkecil :set of‘a’..’z’; kapital : hurufbesar; hariseminggu : hari2; Kalimat : kata;
Dalam keadaan awal, suatu variabel yang bertipe merupakan suatu variabel kosong, dinyatakan dengan
senin,selasa,rabu,kamis,jumat,sabtu,minggu); {enumerasi}
bilangan};
bertipe data SET belum terisi. Variabel tersebut dengan tanda[ ]. 2525
Contoh program memberikan nilai untuk tipe Program SET1;
type
Hari = (senin,selasa,rabu,kamis,jumat,sabtu,minggu Hari2 = set of Hari;
var hariseminggu:hari2; begin hariseminggu:=[selasa, kamis,sabtu]; end. data SET : senin,selasa,rabu,kamis,jumat,sabtu,minggu); {enumerasi} 26 26
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)
27 27
2. Operasi Pengurangan
Disebut juga operasi selisih SET, operatornya (-).
Misal :
SET1 - SET2, menghasilkan elemen yang merupakan anggota SET1 yang bukan
anggota SET2. Contoh :
A:=[1,2,3,4,5]; B:=[4,5,6,7]; W:=A-B;
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
28 28
2. D:=[1,2,3,4,5]; E:=[6,7,8,9,10]; F:=A*B;
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)
29 29 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
Contoh
Contoh Program
Program Perbandingan
Perbandingan
Program Set1; Uses crt;
Type kbil=set of byte; var kbil1,kabil2:kabil;
a,b:byte; begin
clrscr;
write(‘Tentukan batas bawah :’);readln(a); {Input Himpunan write(‘Tentukan batas Atas:’);readln(b);
Kbil1:=[a..b];
write(‘Tentukan batas bawah :’);readln(a); {Input Himpunan write(‘Tentukan batas Atas:’);readln(b);
Kbil2:=[a..b];
if kbil1= kbil2 then writeln(‘Himpunan 1 sama dengan if kbil1 < > kbil2 then writeln(‘Himpunan 1 tidak sama if kbil1< = kbil2 then writeln(‘Himpunan 1 anggota dari if kbil1> = kbil2 then writeln(‘Himpunan 1 mempunyai end.
Perbandingan
Perbandingan SET
SET
Himpunan Pertama} Himpunan Kedua} Himpunan 2’); dengan Himpunan 2’); dari Himpunan 2’); anggota Himpunan 2’); 30 30
Contoh
Contoh Program Operator IN
Program Operator IN
Program 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 IN
Program Operator IN
31 31 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 Penggunaan
Program 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; 32 32 {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.
TERIMAKASIH
TERIMAKASIH
Lilis Setyowati
33 33