• Tidak ada hasil yang ditemukan

ARRAY DAN RECORD.pdf (567Kb)

N/A
N/A
Protected

Academic year: 2018

Membagikan "ARRAY DAN RECORD.pdf (567Kb)"

Copied!
33
0
0

Teks penuh

(1)

ARRAY DAN

ARRAY DAN

Materi

Materi

ARRAY DAN

ARRAY DAN RECORD

RECORD

(2)

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

(3)

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

(4)

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

(5)

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]

(6)

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

);

(7)

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

(8)

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

(9)

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.

(10)

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.

(11)

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;

(12)

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

(13)

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 13

Untuk 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 :

(14)

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

dalam pernyataan WITH terdapat lebih dari satu haruslah pada kedua record tersebut tidak ada field

yang sama. Sebagai contoh :

(15)

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

(16)

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

(17)

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

(18)

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.

(19)

Record yang

Suatu record dengan field yang bisa

berubah 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

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

………..

(20)

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

(21)

Array 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

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

(22)

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

(23)

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.

(24)

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 :

(25)

Contoh : 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};

(26)

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}

(27)

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;

(28)

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;

(29)

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

(30)

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

(31)

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

(32)

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;

(33)

TERIMAKASIH

TERIMAKASIH

Lilis Setyowati

Referensi

Dokumen terkait

sehingga dengan melihat ringkasan laporan keuangan diatas, untuk sementara dapat dilihat bagaimana perusahaan menjaga likuiditasnya dari aspek pengalokasian dana pada aktiva

Ada 18 nilai untuk pengembangan pendidikan budaya dan karakter bangsa yang disusun oleh Diknas. Mulai tahun ajaran 2011, seluruh tingkat pendidikan di Indonesia harus

Retnaningati (2011), melakukan penelitian di SMA Negeri 3 Surakarta menggunakan Model Pembelajaran Siklus Belajar (Learning Cycle) Untuk Meningkatkan Ke- terampilan Proses

Penelitian ini bertujuan untuk mengetahui tingkat infestasi protozoa saluran pencernaan (Eimeria sp.) pada kerbau lumpur (Bubalus bubalis Linn.) di Kecamatan Jati

Puji syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa, sehingga penulis dapat menyelesaikan skripsi ini dengan judul “ Pengaruh Lingkungan Kerja Non Fisik,

Hasil penelitian ini menunjukkan bahwa secara umum strategi self regulated learning siswa SMP di masyarakat pesisir Percut Sei Tuan berada pada kategorisasi tidak

Pada tahap perencanaan strategik, manajemen membuat alternatif strategi dan program kerja beserta target kinerja. Peran akuntan manajemen dalam perencanaan strategik dalah

Kondisi tersebut juga terdapat pada masyarakat Desa Kemiren yang mempercayai bahwa setiap hal termasuk pepohonan, sumber air, dan kompleks situs Buyut Cili,