ARRAY DAN RECORD.pdf (567Kb)

ARRAY DAN ARRAY DAN RECORD RECORD

ARRAY DAN ARRAY DAN

  Materi Materi

  

Materi Materi 66

ARRAY ARRAY ARRAY ARRAY

  • • Sebuah struktur data yang terdiri atas atas banyak variabel dengan tipe data

    sama, dimana masing-masing elemen elemen variabel mempunyai nilai indeks. Setiap elemen array mampu untuk untuk menyimpan satu jenis data (yaitu: variabel).
  • Cara Pendefinisian Contoh: type A = array [1..6] of integer; ;

  1

  2

  3

  4

  5

  6 Secara logika pendefinisian array di atas merupakan sekumpulan kotak,

dimana tiap kotak mempunyai nilai indeks indeks integer 1, 2, 3, ...,6 tiap elemen

array ditandai dengan: A[1], A[2], A[ A[3], A[4], A[5], A[6] untuk mengisi

SIFAT ARRAY SIFAT ARRAY

  Array merupakan struktur data yang statis statis, yaitu jumlah elemen yang ada harus ditentukan terlebih dahulu dan tak bisa bisa diubah saat program berjalan. Untuk menyatakan array dalam PASCAL kita harus harus terlebih dahulu Mendefinisikan jumlah elemen array .

  Contoh: const N=10; type A= array [1..N] of integer;

  

Array Satu Satu Dimensi

Contoh Program Array 1 dimensi

  Type nama_array = ARRAY[bawah..atas] program INT_ARRAY; uses wincrt; of tipe_data; const N=10; var variabel_array : nama_array; type int_array = ARRAY [1..N] of integer; var bil : int_array; indeks : integer; BEGIN

  Atau

  writeln('masukkan sepuluh bilangan integer.'); for indeks := 1 to 10 do var variabel_array : begin

  ARRAY[bawah..atas] of tipe_data; readln(bil[indeks]); { loop untuk memasukkan elemen array } end; writeln('Isi dari array ini adalah'); { tampilkan setiap elemen } for indeks := 1 to 10 do

  #jika kita ingin membuat beberapa array

  begin

  dengan tipe/jenis yang sama, kita lebih

  writeln('bil[', indeks:2,'] adalah ',bil[indeks] ); End

  baik jika mendeklarasikan dengan type

  

Array Multidimensi Multidimensi

Dalam array multidimensi terdiri atas baris (row) dan dan

  ARRAY [ 1..5, 1..5] kolom (column). Index pertama adalah baris dan yang yang A[1,1] A[1,2] A[1,3] A[1,4] A[1,5] kedua adalah kolom.

  Sintaks: A[2,1] A[2,2] A[2,5]

  • Type nama_array =ARRAY[bawah..atas, bawah..atas atas] of tipe_data; var variabel_array: nama_array; A[3,1] A[3,3] A[3,5]

  atau A[4,1] A[4,4] A[4,5]

  • SYNTAX var variabel_array: ARRAY [bawah..atas atas, bawah..atas] of tipe_data;
  • A[5,1] A[5,5] # Pernyataan berikut membentuk suatu array integer integer dengan nama bilangan , 10 x 10 elemen (100). type matriks = ARRAY [1..10, 1..10] of integer; var AKU: matriks;

      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 ;

      ); Memproses Array Memproses

      Misal diberikan deklarasi suatu array sebagai sebagai berikut :

      VARX : ARRAY [1..10] OF integer; Untuk keperluan membaca variabel X (input) (input) kita tidak bisa melakukan seperti sebuah data bernilai tunggal, yaitu READ (X) (X).

      VARX : ARRAY [1..10] OF integer;

      Sebab jika kita membaca/input suatu variabel variabel berjenis array berarti kita membaca elemen-elemen array tersebut.

      Untuk itu diperlukan suatu bentuk perulangan perulangan seperti berikut : FOR I := 1 TO 10 DO READ ( X[1] ); FOR I := 1 TO 10 DO READ ( X[1] );

      Demikian pula halnya untuk keperluan keperluan memproses elemen-elemennya, harus ditunjukkan elemen yang akan diproses.

      Contoh 1:

    Misal terdapat 10 bilangan integer positif yang yang berbeda disimpan di dalam suatu array B.

      

    Tentukan integer yang terbesar diantara 10 integer integer tersebut dengan suatu program Pascal.

    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} B[I}; WRITE (MAX); 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); 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. Contoh :

      3. TYPE account = RECORD

      1. VAR nilai : RECORD

      cust_no : integer;

      Nilai_1 : integer;

      cust_type : char;

      Nilai_2 : integer;

      cust_balance : real;

      END;

    END END;

    2. TYPE date = RECORD

      VAR customer : account;

      VAR

      Tanggal : 1..31; Bulan : 1…12; Tahun : 1900..2000; END;

      VAR event1,event2 : ARRAY [1..10]

      Selanjutnya, misal ingin dibuat program sederhana untuk

    MEMPROSES VARIABEL BERJENIS RECORD

      menjumlahkan dua bilangan kompleks a dan b yang hasilnya Perhatikan deklarasi variabel berikut : disimpan di c.

      TYPE nilai : RECORD Secara aljabar penjumlahan dua bilangan kompleks adalah

      Nilai1 : real; sebagai berikut :

      Nilai2 : real; a = x1 + iy1

      END; b = x2 + iy2 +

      VAR x,y : nilai; c = (x1 + x2 ) + I(y1 + y2) Maka bentuk garis besar programnya adalah sebagai berikut :

      # Untuk memproses variabel x dan / atauy dilakukan dengan dengan Program contoh ; cara menyebutkan field designatornya, yg terdiri dari atas :

      Type bk = record Nama_record.nama_field

      Bag_nyata : integer; Pada deklarasi diatas yang dimaksud dengan field designator-

      Bag_imajiner : integer; nya adalah :

      End; x.nilai1

      Var a,b,c : bk; x.nilai2

      Begin y.nilai1

      Read (a.bag_nyata, a.bag_imajiner, b.bag_nyata, b.bag_imajiner); y.nilai2 c.bag_nyata := a.bag_nyata + b.bag_imajiner;

      Jadi jika ingin membaca variabel x atau y atau keduanya, maka maka c.bag_imajiner := a.bag_imajiner + b.bag_imajiner; bentuk statement-nya adalah :

      STATEMENT “WITH” STATEMENT “WITH” Selain cara yang telah disebutkan diatas, untuk

      Untuk membaca variabel p dan q di samping

      memproses suatu record dapat digunakan statement

      dengan memanfaatkan statement WITH

      WITH. Dengan statement ini penulisannya akan lebih sederhana.

      bentuknya menjadi : WITH p,q DO read (no, kode, juml, harga);

      Bentuk Umum:

      Bandingkan jika digunakan cara sebelumnya :

      WITH nama_record DO statement

      Read (p.no, p.kode, p.juml, p.harga, q.no,

      Perhatikan deklarasi dibawah ini :

      q.kode, q.juml, q.harga);

      TYPE x = RECORD No : integer; Kode : char; Juml : integer; Harga : real; END;

      CONTOH : Apabila di dalam dalam pernyataan WITH terdapat lebih dari satu record, haruslah haruslah pada kedua record tersebut tidak ada field Pernyataan seperti : dengan nama yang yang sama. Sebagai contoh :

      Type Data.npm :=‘22297566’

      BarangX BarangX=RECORD Data.Nama:=‘Abdul Kadir’

      Batu Batu:integer; Data.Fakultas:=‘Teknik’

      Kayu Kayu:real; END;

      Dapat diganti dengan : BarangY BarangY=RECORD Batu:string[10]; Batu

      WITH Data Do Kayu Kayu:char;

      Begin END; npm :=‘22297566’

      Var Nama:=‘Abdul Kadir’ brg_X:barangX; brg_X Fakultas:=‘Teknik’ d) Fungsi standar INT Bentuk umum :

      INT(x:real):real;

    Digunakan untuk menghasilkan nilai integer integer dari x. hasil dari fungsi adalah tipe real

    dengan nilai yang berupa pembulatan ke bawah bawah (nilai pecahan dibuang) dari nilai x.

      Contoh : Begin X:=9.99; Write(‘Nilai yang akan dibulatkan = ‘ ,X); = ‘ ,X); Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2); (X):3:2); End.

      Hasil : Nilai yang akan dibulatkan = 9.99 Nilai pembulatannya = 9.00

    e) Fungsi standar FRAC

      Bentuk umum : FRAC(x:):real; Digunakan untuk mendapatkan nilai pecahan pecahan dari argumen x. Argumen x dapat bernilai real maupun integer dan hasil dari dari fungsi adalah real.

      Contoh : Begin

      X:=9.99; Write(‘Nilai X = ‘,X, ‘Nilai pecahannya = ‘,Frac(X):4:3); End.

      Hasilnya : Nilai X = 9.99 Nilai pecahannya pecahannya = 0.990 f) Fungsi standar SQR Bentuk umum : SQR(x); Digunakan untuk menghitung nilai pangkat kuadrat dari dari argumen X. Argumen X dapat berbentuk tipe Real atau Integer dan hasil Fungsinya akan sama dengan dengan tipe argumennya. Contoh : Program Misal5; Var X : Real; Begin Write(‘Nilai yang akan dikuadratkan ?’); Readln Readln(X);

      Writeln(‘Nilai kuadratnya =’, SQR(X):9:2); End.

      Output : Nilai yang akan dikuadratkan ? 5 Nilai kuadratnya = 25.00

      Karena kedua variabel record brg_X dan brg_Y brg_Y memiliki nama field yang sama, Jika misalnya kemudian dikenakan pernyataan : WITH brg_X, brg_Y Do Begin writeln(batu); writeln(kayu);

      End; dapat menyebabkan hasil tidak seperti yang diharapkan diharapkan.

      Record yang

      Record yang Bervariasi

    • 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),

      bisa Hal bahwa record serempak, terpakai fasilitas diperlukan

      TIME),

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

      Array tipe record

    dec(i); dec type barang=RECORD

    clrscr; clrscr namabrg:string[20]; writeln (‘------------------------------------------------------------’); writeln jmlbrg:byte; writeln writeln (‘No nama barang jumlah harga total’); hargabrg:real; writeln (‘------------------------------------------------------------’); writeln total:real; for for j:=1 to I do end;

    begin begin var jual:array [1..10] of barang gotoxy(1,j+3);write (j); gotoxy gotoxy gotoxy(5,j+3);write(jual[i].nmbrg); i,j:integer; gotoxy gotoxy(26,j+3);write(jual[i].jmlbrg:10); tot1:real; gotoxy(37,j+3);write(jual[i].hrgbrg:10:2); gotoxy Begin gotoxy gotoxy(48,j+3);write(jual[i].total:10:2); I:=1;

    tot1:=tot1 + jual[j].total ; tot write(‘Nama barang :’);readln(jual[i].nmbrg);

    end end; Repeat writeln writeln (‘------------------------------------------------------------’); write(‘Jumlah barang :’);readln(jual[i].jmlbrg); writeln(‘ Total :’,tot1:10:2’); writeln write(‘Harga barang :’);readln(jual[i].hrgbrg); writeln writeln (‘------------------------------------------------------------’); jual[i].total:=jual[i].jmlbrg* jual[i]. jual[i].hrg.brg;

    end end. inc (I); write(‘Nama barang :’);readln(jual[i].nmbrg); begin Array dalam record Type barang= RECORD write(‘Jumlah barang ’,I,’ : nmbrg:string[20];

      ’);readln(jual.jmlbrg[i]); jmlbrg:array[1..3]of byte; tbarang:=tbarang+jual.jmlbrg[i]; hrgbrg:real; end; total:real; write(‘Harga barang :’);readln(jual.hrgbrg); end; var jual:barang; jual.total:=tbarang*jual.hrgbrg; tbarang, i:integer; writeln(‘Total Harga Barang = ‘,

      Begin jual.total:10:2); clrscr; end. write(‘Nama Barang :’);readln(jual.nmbrg); for i:=1to 3 do otal Harga Barang = ‘, jual.total:10:2);

    SET (HIMPUNAN) SET (HIMPUNAN)

      Set adalah kumpulan dari nilai-nilai yang yang memiliki kesamaan sifat, yaitu tipe data

    yang sama dan urutan penulisannya tidak diperhatikan diperhatikan. Setiap obyek dalam himpunan

    disebut dengan anggota atau elemen himpunan himpunan. Contoh :

      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 terstruktur, terdiri dari sejumlah elemen yang bertipe

    sama dan harus bertipe data ordinal yang memiliki memiliki nilai terletak antara 0 sampai 255.

    Berbeda dengan tipe data array, tipe data SET SET tidak mengenal elemen pertama, elemen

    kedua dan seterusnya. Pada tipe data SET tidak tidak terdapat elemen yang bernilai sama.

      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 : 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 senin,selasa,rabu,kamis,jumat,sabtu,minggu); {enumerasi} Hari2 = set of Hari; Pilihan = set of 1..7 {subrange dalam bentuk bilangan bilangan}; Var hurufkecil :set of‘a’..’z’; kapital : hurufbesar; hariseminggu : hari2; Kalimat : kata; Dalam keadaan awal, suatu variabel yang bertipe bertipe data SET belum terisi. Variabel tersebut

    Contoh program memberikan nilai untuk tipe data SET : Program SET1; type Hari = (senin,selasa,rabu,kamis,jumat,sabtu,minggu senin,selasa,rabu,kamis,jumat,sabtu,minggu); {enumerasi} Hari2 = set of Hari; var hariseminggu:hari2; begin hariseminggu:=[selasa, kamis,sabtu]; end.

      

    Operasi SET ( SET (Himpunan)

      2. Operasi Pengurangan

    1. Operasi Penjumlahan

      Disebut juga operasi selisih SET,

      Disebut juga operasi penggabungan operatornya (-). (UNION), Operatornya (+).

      Misal :

      Contoh :

      SET1 - SET2, menghasilkan elemen yang

      A:= [‘B’,’F’,’J’,’L’];

      merupakan anggota SET1 yang bukan

      A:= A + [‘a’,’B’,’b’,’c’,’d’,’e’,’f’,’j’,’k’,’l’]; anggota SET2.

      Contoh :

      maka nilai A sekarang adalah

      A:=[1,2,3,4,5];

      [‘B’,’F’,’J’,’L’,‘a’,’b’,’c’,’d’,’e’,’f’,’j’,’k’,’l’]

      B:=[4,5,6,7];

      3. Operasi Perkalian Disebut juga operasi Intersection (irisan), operatornya operatornya (*).

      Misal : SET1 - SET2, menghasilkan elemen yang merupakan merupakan anggota SET1 dan sekaligus merupakan anggota SET2.

      Contoh :

      2. D:=[1,2,3,4,5];

      1. A:=[1,2,3,4,5]; E:=[6,7,8,9,10];

      B:=[1,3,5,6,7]; F:=A*B;

      C:=A*B; Maka nilai F adalah [ ]

      Maka nilai C adalah [1,3,5]

      Perbandingan dalam dalam SET (Himpunan) Contoh :

      5. [2,1] < = [1,2,3] hasil TRUE 1. [3,4,5]=[4,5,3] hasil TRUE 6. [5,6,7] > = [7,6] hasil TRUE 2. [c,d]=[d,g,c] hasil FALSE 7. 3 in [4,5,3,2] hasil TRUE 3. [2,4]< >[2,3] hasil TRUE

      

    Contoh Program Contoh Program Perbandingan Perbandingan Perbandingan SET Perbandingan SET

    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 Himpunan Pertama} write(‘Tentukan batas Atas:’);readln(b); Kbil1:=[a..b]; write(‘Tentukan batas bawah :’);readln(a); {Input Himpunan Himpunan Kedua} write(‘Tentukan batas Atas:’);readln(b); Kbil2:=[a..b]; if kbil1= kbil2 then writeln(‘Himpunan 1 sama dengan Himpunan 2’); if kbil1 < > kbil2 then writeln(‘Himpunan 1 tidak sama dengan Himpunan 2’); if kbil1< = kbil2 then writeln(‘Himpunan 1 anggota dari dari Himpunan 2’);

      

    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

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

      SET dalam Program

      ):char; {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’;

    TERIMAKASIH TERIMAKASIH

      Lilis Setyowati