Struktur Data M. Haviz Irfani, S.Si
Struktur Data Pada garis besarnya, data dapat kita kategorikan menjadi : Type Data Sederhana atau Data Sederhana yang terdiri atas : - Data sederhana Tunggal, misalnya Integer,real,Boolean serta karakter - Data Sederhana majemuk misalnya String Type data ini,dengan berbagai cara tertentu,dapat diorganisasikan menjadi Struktur Data. M. Haviz Irfani, S.Si
Struktur Data Struktur data meliputi : - Struktur Data Sederhana misalnya Array dan Record - Struktur data Majemuk terdiri atas : Linier misalnya : Stack, Queue,serta linear linked list. - Nonlinier, misalnya pohon Biner (Binary Tree), Pohon Cari Binar (Binary Search Tree), Pohon Cari M-way ( M-way Search Tree), Trie, General Tree serta Graph M. Haviz Irfani, S.Si
KONSEP ARRAY [0] [1] [2] [3] [4] [5] [6] [7] [8] Variabel NIL 17 21 33 1 48 2 16 72 Type indeks=Array[0..8] of byte; {tipe bentukan/buatan} Var Nil:indeks; Array satu dimensi adl kumpulan elemen2x yg tersusun dlm satu baris dan bertipe yang sama. Nil[1]:= 17; Nil[5]:=0; Nil[2]:=21; Nil[6]:=2; Nil[3]:=33; Nil[7]:=16; Nil[4]:=1; Nil[8]:=72; M. Haviz Irfani, S.Si
KONSEP ARRAY Procedure Cari(nil:indeks); Begin write(‘cari Data ke :’);readln(urut); writeln(‘data ke ’,urut,’ adalah ’,nil[urut]); {urut = 0 .. 8} End; {panggil prosedur di atas dengan CARI(nil); } M. Haviz Irfani, S.Si
KONSEP ARRAY Procedure Tampil(nil:indeks); Begin write(‘dari data indeks ke :’);readln(awal); write(‘sampai data indeks ke :’);readln(akhir); for j:= awal to akhir do writeln(‘data ke ’,j,’ adalah ’,nil[ j ]); { j = awal .. akhir} End; { Panggil prosedur diatas dengan Tampil(nil) ; } M. Haviz Irfani, S.Si
KONSEP ARRAY kolom [1] [2] [3] [4] [5] [6] [7] [8] baris [0] 11 4 6 22 8 5 13 33 71 17 3 41 45 42 54 21 10 1 44 37 27 30 15 2 19 29 16 12 [1] [2] [3] Type indeks=array[0..3,1..8] of integer; Var nil:indeks; Atau Type indeks=array[0..3] of array[1..8] of integer; M. Haviz Irfani, S.Si
KONSEP ARRAY Array dua dimensi adalah kumpulan elemen2x berdasar baris dan kolom tertentu; atau kolom dan baris tertentu yang mempunyai tipe yg sama. Nil[baris,kolom]nil[1,3]:=71;nil[2,7]:=37;nil[3,3]:=8; dst Nil[kolom,baris]nil[7,2]:=37;nil[5,0]:=8;nil[1,3]:=30; dst Warning !! Perhatikan pendeklarasian array, apakah array[baris,kolom] atau array[kolom,baris] M. Haviz Irfani, S.Si
KONSEP ARRAY Procedure Cari(nil:indeks); Begin write(‘Data baris :’);readln(bar); write(‘Data kolom :’);readln(kol); writeln(‘data baris ’,bar,’dan kolom ‘, kol,’ adalah ’,nil[bar,kol]); { baris = 0 .. 3 dan kol = 1..8 } End; {panggil prosedur di atas dengan CARI(nil); } M. Haviz Irfani, S.Si
KONSEP ARRAY Procedure Tampil(nil:indeks); Begin write(‘data kolom dari indeks ke :’);readln(awal); write(‘sampai kolom indeks ke :’);readln(akhir); write(‘data baris dari indeks ke :’);readln(awal1); write(‘sampai baris indeks ke :’);readln(akhir1); for i:= awal1 to akhir1 do for j:= awal to akhir do writeln(‘nil[ ’,i,’,’,j,’]=’,nil[i, j]); { j = awal .. Akhir, dan i=awal1..akhir1} End; { Panggil prosedur diatas dengan Tampil(nil) ; } M. Haviz Irfani, S.Si
KONSEP ARRAY Contoh pendeklarasian lainnya: Type kegiatan=(main,belajar,nonton,berenang); Hari=(senin,selasa,rabu,kamis,jumat,sabtu); aktivitasAnak=array[hari,kegiatan] of byte; Var A: aktivitasAnak; M. Haviz Irfani, S.Si
KONSEP ARRAY 22 1 29 13 11 44 81 55 33 71 17 3 41 45 70 54 21 10 37 15 30 8 2 19 16 x 3 17 25 10 41 5 77 33 71 45 62 54 21 1 44 37 34 30 15 8 2 19 29 16 [0] 11 4 6 22 8 5 13 33 71 17 3 41 45 42 54 21 10 1 44 37 27 30 15 2 19 29 16 12 [1] [3] [2] [2] [3] [1] [1] [2] [3] [4] [5] [6] [7] [8] Z Y Array tiga dimensi adalah kumpulan elemen2x berdasarkan x,y,z yang memiliki tipe yang sama. M. Haviz Irfani, S.Si
KONSEP ARRAY Type indeks=array [0..3,1..8,1..3] of string; Var nil:indeks; atau: Type indeks=array[0..3]of array[1..8]of array[1..3]of string; M. Haviz Irfani, S.Si
KONSEP ARRAY Procedure Tampil(nil:indeks); Begin write(‘data X dari indeks ke :’);readln(awal); write(‘sampai X indeks ke :’);readln(akhir); write(‘data Y dari indeks ke :’);readln(awal1); write(‘sampai Y indeks ke :’);readln(akhir1); write(‘data Z dari indeks ke :’);readln(awal2); write(‘sampai Z indeks ke :’);readln(akhir2); for x:= awal to akhir do for y:= awal1 to akhir1 do for z:= awal2 to akhir2 do writeln(‘nil[ ’,x,’,’,y,’,‘,z,’]=’,nil[x, y, z]); { x = awal .. Akhir , y=awal1..akhir1 dan z=awal2..akhir2} End; { Panggil prosedur diatas dengan Tampil(nil) ; } M. Haviz Irfani, S.Si
KONSEP ARRAY Contoh pendeklarasian yang lain; Type kalender =array[1..30] of array[1..12] of array[1999..2005] of string; Var tanggal:kalender; Note: untuk array dimensi tiga ke atas prinsipnya sama dg dimensi sebelumnya. Array[nil1..nil2,nil3..nil4,nil5..nil6, dst] of tipedata M. Haviz Irfani, S.Si
KONSEP RECORD No. Nama Alamat Jenis Kelamin 1 Reynaldy Jl. Dadur Lokek I No.05 NTT L 2 Nunung Jl. Mangholok II No.33 NTB P 3 Arwana Jl. Rangkunyak No.4A Sulsel 4 Sarinem Jl. Serungtuk no. 55Z NTT Misalkan diberikan tabel data penduduk ter-aniaya sebagai berikut: Data disimpan dalam satu variabel yaitu PENDUDUK M. Haviz Irfani, S.Si
KONSEP RECORD Variabel Penduduk mempunyai field: nama, alamat, dan jeniskel. Ditulis dlm pascal : Penduduk.nama Penduduk.alamat Penduduk.jeniskel Contoh: penduduk.nama:=‘nunung’; penduduk.alamat:=‘Jl.Mangholok II no.33 NTB’ penduduk.jeniskel:=‘P’; M. Haviz Irfani, S.Si
KONSEP RECORD Dalam tabel ada 3 field dan 4 record, kolom no. tidak dimasukkan: Dalam pascal : penduduk.nama[1]:=‘Reynaldy’; penduduk.nama[2]:=‘Nunung’; penduduk.nama[3]:=‘Arwana’; penduduk.nama[4]:=‘Sarinem’; Penduduk.alamat[1] :=‘Jl. Dadur Lokek I No.05 NTT’; Penduduk.alamat[2] :=‘Jl. Mangholok II No.33 NTB’; Penduduk.alamat[3] :=‘Jl. Rangkunyak No.4A Sulsel’; Penduduk.alamat[4] :=‘Jl. Serungtuk no. 55Z NTT’; Penduduk.jeniskel[1]:=‘L’; Penduduk.jeniskel[2]:=‘P’; Penduduk.jeniskel[3]:=‘L’; Penduduk.jeniskel[4]:=‘P’; M. Haviz Irfani, S.Si
KONSEP RECORD Bagaimana pendeklarasiannya ??? Type ORANG= record nama :array[1..4] of string; alamat :array[1..4] of string; jeniskel :array[1..4] of char; end; {akhir record} Var Penduduk : orang; M. Haviz Irfani, S.Si
KONSEP RECORD Sintak : Type namatipe = Record field1 : tipedata1; : : : fieldN : tipedataN; End; M. Haviz Irfani, S.Si
KONSEP RECORD M. Haviz Irfani, S.Si Program Recordku1; uses crt; Type orang= record nama:array[1..4] of string; alamat :array[1..4] of string; jeniskel:array[1..4] of char; end; Var penduduk:orang; i:byte; begin clrscr; for i:= 1 to 4 do with penduduk do writeln('data ke - ',i,'*** :'); write('nama : ');readln(nama[i]); write('alamat : ');readln(alamat[i]); write('jenis kelamin : ');readln(jeniskel[i]); end; readkey; end. M. Haviz Irfani, S.Si
KONSEP RECORD M. Haviz Irfani, S.Si program recordku2; uses crt; type orang= record nama:string; alamat :string; jeniskel:char; end; var penduduk:array[1..4]of orang; i:byte; begin clrscr; for i:= 1 to 4 do with penduduk[i] do writeln('data ke - ',i,'*** :'); write('nama : ');readln(nama); write('alamat : ');readln(alamat); write('jenis kelamin :');readln(jeniskel); end; readkey; end. M. Haviz Irfani, S.Si
KONSEP RECORD Procedure Cari(penduduk:orang); Begin write(‘Masukkan indeks data :’);readln(ind); writeln(‘data ke - ’,ind); with penduduk[ind] do begin writeln(‘Nama = ’,nama); writeln(‘Nim = ’,Nim); writeln(‘Nilai = ’,Nilai); end; End; {panggil prosedur di atas dengan CARI(penduduk); } M. Haviz Irfani, S.Si
KONSEP RECORD M. Haviz Irfani, S.Si Procedure Tampil(penduduk:orang); Begin write(‘data kolom dari indeks ke :’);readln(awal); write(‘sampai kolom indeks ke :’);readln(akhir); writeln(‘╔═══╦══════╦═════╦═════┐’); writeln(‘│ No. │ Nama │ Nim │ Nilai │ ’) writeln(‘├───┼──────┼─────┼─────┤’) ; for i:= awal1 to akhir1 do begin with penduduk[i] do gotoxy(2,4+i);writeln(‘│ ’,i); gotoxy(6,4+i);writeln(‘ │ ’,Nama); gotoxy(15,4+i);writeln(‘ │ ’,Nim); gotoxy(22,4+i);writeln(‘ │ ’,Nilai,’ │ ’); end;{end with..do} end;{endfor} writeln(‘└──┴─────┴──────┴─────┘’) End;{Panggil prosedur diatas denganTampil(penduduk); } M. Haviz Irfani, S.Si
KONSEP ARRAY SELESAI… M. Haviz Irfani, S.Si