Dasar Struktur Data Ika Menarianti.

Slides:



Advertisements
Presentasi serupa
Dasar Komputer & Pemrog 2 A minggu 5. PROCEDURE DAN FUNCTION Procedure dan Function adalah suatu program yang terpisah dalam blok sendiri Dan memiliki.
Advertisements

Praktikum pemprograman terstruktur1
Konsep dan Defenisi data 1Nurdiansah PTIK 09 UNM.
Ardian Maretta Prastiawan, Ssi Software Development UPT. Puskom UNS
Identifier, Variabel, Operator, Tipe Data dan Mengenal Object
Chapter 3.2 : Tipe, Nama dan Nilai
Pemrograman Visual Tipe Data dan Operator
ARRAY Suatu array (larik) adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Komponen ini disebut dengan.
-Tipe Bilangan Bulat > 1,4,40,100 -Tipe bilangan real > 1.50,3.234, Tipe Boolean > True, False -Tipe Karakter > A, B, X, y -Tipe String > Nama,
ARRAY Suatu array (larik) adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Komponen ini disebut dengan.
Outline Awalnya dikembangkan oleh Borland dan umunya igunakan untuk paket perangkat lunak tingkat lanjut dengan kepustakaan yang lebih banyak dan.
KOMPONEN DALAM DELPHI Form
T I P E D A T A.
Algoritma (Struktur, Tipe Data, Input/Output)
Proses Berurutan Pemrograman Visual.
Tipe data. Data adalah fakta atau kenyataan yang tercatat mengenai suatu obyek Fakta merupakan keterangan tentang kenyataan yang disimpan, direkam atau.
KOMENTAR Komentar dipakai untuk memberikan penjelasan atau keterangan di dalam baris program. Teks yang ditulis sebagai komentar tidak akan dikompilasi.
Algoritma Dan Pemrograman
Pengenalan Type Data Type data dapat dikelompokkan menjadi 2
STRUKTUR DATA Nanik Susanti, S.Kom.
JENIS-JENIS DATA Pertemuan 2.
PENGGUNAAN TIPE DATA YANG EFEKTIF
Unit Dalam Delphi Struktur unit dalam delphi adalah sebagai berikut:
Tipe Data By Serdiwansyah N. A..
PERTEMUAN 2 Bambang Irawan.
Penulisan Bahasa Program (Komentar, Variabel, Konstanta, Operator dan Tipe Data) Pemrograman Visual.
Contoh Aplikasi Untuk Pemrograman :
Dasar-Dasar Pemrograman
BAB 2 Elemen Dasar.
ALGORITMA PEMROGRAMAN 2A
PERTEMUAN 3 KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Struktur Program Minimal
Pengantar Pemrograman
PENGENALAN USER INTERFACE DALPHI 7.0 Volume 2
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
Tipe Data, Operator Dalam Delphi
TIPE ENUMERASI DAN SUB JANGKAUAN
TEAM 1 Cut Hayatul Wardani ( ) Saputri Phonna ( ) Azhary (140502)
FKIP Pend. Matematika Universitas Muhammadiyah Gresik
Antrian Dengan Array Ika Menarianti.
Minggu I STRUKTUR DATA Gerlan A. Manu, ST.
Pengenalan Delphi Achmad Yasid, SKom.
PENGGUNAAN TIPE DATA YANG EFEKTIF
Pseudocode – Tipe Data, Variabel, dan Operator
Pengenalan Visual Basic
Erna Kumalasari Nurnawati
PEMROGRAMAN PASCAL ELEMEN PEMROGRAMAN PASCAL.
Pengenalan Type Data Type data dapat dikelompokkan menjadi 2
Tumpukan Dengan Array Ika Menarianti.
Senarai Berantai Ika Menarianti.
Menambah dan Menghapus Data Via Array
Tipe data & Variabel 1. Bahasa Pascal 2. Tipe data & Variabel
STRUKTUR DATA Introduction KHOIRIYA LATIFA, M.Kom.
TIPE DATA.
PENGGUNAAN TIPE DATA YANG EFEKTIF
KONSEP TIPE DATA, OPERATOR DAN IDENTIFIER
KONSEP DASAR STRUKTUR DATA
Tipe data.
Dasar Struktur Data Ika Menarianti.
PENGENALAN USER INTERFACE DELPHI 7.0
Pemrogram 1 Agus Darmawan, S.kom.
Tipe data & Variabel 1. Bahasa Pascal 2. Tipe data & Variabel.
Chapter 3.2 : Tipe, Nama dan Nilai
STRUKTUR DATA Introduction KHOIRIYA LATIFA, M.Kom.
PENGGUNAAN TIPE DATA YANG EFEKTIF
KOMENTAR Komentar dipakai untuk memberikan penjelasan atau keterangan di dalam baris program. Teks yang ditulis sebagai komentar tidak akan dikompilasi.
Tipe Data Struktur Ridwan, S.T., M.Eng. Pokok Pembahasan Bahan Kajian. Tipe Data Terstruktur Materi Tipe Data: 1.Definisi data, tipe data dan struktur.
KOMENTAR Komentar dipakai untuk memberikan penjelasan atau keterangan di dalam baris program. Teks yang ditulis sebagai komentar tidak akan dikompilasi.
SMK BINA INSAN Pemograman Dasar Operasi Aritmatika Dan Logika Yobi Saputra 22.
Memori dan Scope Variabel
Transcript presentasi:

Dasar Struktur Data Ika Menarianti

Persiapan awal Buka program Delphi

Ubah properti milik Form Name : FormBab2 Caption : TestBab2 Perhatikan apa yang berubah ketika properti diubah!

Selanjutnya persiapkan prosedurnya: Klik pada FormBab2 Klik Tab Event pada Object Inspector Klik pada OnCreate Klik ganda pada sel disebelahnya hingga muncul kode berikut: procedure TFormBab2.FormCreate(Sender: TObject); begin end;

Selanjutnya.. Tambahkan komponen Label. Atur Propertinya: Name : LabelInfo Caption : Info Align : alClient Perhatikan apa yang berubah ketika properti diubah!

Selanjutnya..... Simpan dengan cara: Pilih Menu File lalu pilih Save Project As... Ketikkan FBab2 untuk menggantikan Unit1 pada kotak disebelah kanan judul File Name untuk memberi nama file formulir dan klik tombol Ganti project1 dengan PBab2 untuk memberi nama proyek. Setelah itu klik Save.

Struktur Data Primitif Wadah data yang paling sederhana disebut sebagai tipe data primitif atau struktur data primitif. Tipe Data Primitif Tipe Data Keterangan Kebutuhan Memori Shortint Bilangan Bulat -128 s/d 127 1 byte Integer Bilangan Bulat -32767 s/d 32768 2 byte Longint Bilangan Bulat -2147483648 s/d 2147483647 4 byte Byte Bilangan Bulat 0 s/d 255 Word Bilangan Bulat 0 s/d 65535 Real Bilangan real 6 byte Boolean Data logika. Bernilai True atau False Char Menyatakan sebuah karakter

Struktur Data Primitif (2) Pemilihan tipe data dilakukan dengan pedoman: Pilihlah yang membutuhkan memori paling sedikit Semua kemungkinan nilai bisa terakomodasi oleh tipe tersebut.

Enumerasi, Subjangkauan dan Himpunan Enumerasi merupakan salah satu tipe yang dibuat sendiri oleh pemrogram. Tipe ini digunakan pada variabel yang nilai kemungkinannya terbatas atau tidak begitu banyak. Nilai dinyatakan dengan nama pengenal. Menggunakan pengenal diharapkan akan lebih memberikan kejelasan dibandingkan menggunakan kode. Contoh: Type SistemOperasi = (unix, linux, windows_xp, windows_7, mac_os); JenisKelamin = (pria, wanita);

Enumerasi, Subjangkauan dan Himpunan (2) Subjangkauan (subrange) merupakan suatu tipe yang menyatakan suatu jaringan nilai dari suatu tipe yang sudah ada. Jangkauan nilai ditentukan oleh nilai terkecil dan nilai terbesar. Bentuk pendeklarasian: type Nama_type = Nilai_terkecil .. Nilai_terbesar; Contoh: NilaiBulan: 1..12; //subjangkauan integer HurufKapital : ‘A’ .. ‘Z’ ; //subjangkauan char

Enumerasi, Subjangkauan dan Himpunan (2) Himpunan (set) adalah suatu struktur data yang memungkinkan menyimpan sejumlah nilai yang tergolong dalam tipe data primitif. Bentuk pendeklarasian: type Nama_tipe = set of Tipe_elemen; Elemen-elemen himpunan yang dinyatakan denagan [ ]. Misal [1, 2, 3] menyatakan himpunan yeng terdiri elemen 1, 2 dan 3. Sedangkan [ ] dinyatakan himpunan kosong.

Operator untuk memanipulasi himpunan Pembandingan Keterangan + H1 + H2 Operator union ini berguna untuk menggabungkan himpunan H1 dan H2 Contoh: [1, 2, 3] + [3, 4, 5] [1, 2, 3, 4, 5] - H1 – H2 Operator perbedaan/pengurangan berguna untuk mendapatkan himpunan yang berisi elemen-elemen dari H1 yang tidak ada pada H2 [1, 2, 3] - [3, 4, 5] [1, 2] [3, 4, 5] - [1, 2, 3] [4, 5] * H1 * H2 Operator interseksi berguna untuk memperoleh himpunan dengan elemen yang ada pada H1 dan H2 [1, 2, 3] * [3, 4, 5] [3]

Contoh program enum procedure TFormBab2.FormCreate(Sender: TObject); type TSistemOperasi = (unix, linux, windows_xp, windows_7, mac_os); var SisOperasi : set of TSistemOperasi; teks : string; keterangan: string; S : TSistemOperasi; begin SisOperasi := [unix, linux, windows_7];

Selanjutnya..... //Tampilkan isi SisOperasi for S := unix to mac_os do if S in SisOperasi then begin case S of unix : keterangan := 'UNIX'; linux : keterangan := 'LINUX'; windows_xp : keterangan:='WINDOWS_XP'; windows_7 : keterangan:= 'WINDOWS_7'; mac_os : keterangan:= 'MAC OS'; end; teks := teks + keterangan + #13#10; LabelInfo.Caption:=teks; end.

Record Struktur data yang menampung beberapa data yang tipenya dapat berlainan. Ketiga buah field yang terdapat pada record bertipe TRecBuku memiliki tipe data yang berlainan. Field judul dan pengarang bertipe string dan field jumlah bertipe bilangan bulat. Delphi Field : Judul Bertipe TRecBuku Abdul Kadir Field : Pengarang 10 Field : Jumlah

Record (2) Record dapat menampung beberapa data berlainan tipe. Bentuk pendeklarasian: record Field_1 : Tipe_1; Field_2 : Tipe_2; ..... Field_N : Tipe_N; end; Contoh: type TRecBuku = record Judul : String; Pengarang : String; Jumlah : byte; end; Var Buku : TRecBuku

Buku.Judul := ‘Pascal’; Record (3) Untuk mengakses sebuah field dalam variabel bertipe record diperlukan notasi: Variabel.nama_field Contoh: Buku.Judul artinya field judul yang terdapat pada variabel Buku Jika ingin diisikan data ‘Pascal’, pernyataannya: Buku.Judul := ‘Pascal’;

Program Record Gunakan FormCreate untuk menulis program dibawah ini. procedure TFormBab2.FormCreate(Sender: TObject); type TRecBuku = record Judul : String; Pengarang : String; Jumlah : byte; end; var Buku : TRecBuku;

Selanjutnya.. begin //pemberian nilai ke field milik buku Buku.Judul := 'Pascal'; Buku.Pengarang := 'Abdul Kadir'; Buku.Jumlah := 10; //tampilkan isi buku LabelInfo.Caption:= 'Judul : ' + Buku.Judul + #13#10 + 'Pengarang : ' + Buku.Pengarang+#13#10 + 'Jumlah : ' + IntToStr(Buku.Jumlah); end;

Hasilnya...

Array dan String Array adalah struktur data yang berguna untuk menyimpan sejumlah data yang bertipe sama, Array bisa bernilai nilai yang sama (himpunan tidak). Rien Jamain 1 Array PenyanyiJazz Mengandung 5 elemen Nunung Wardiman 2 Angka ini menyatakan indeks bagi elemen array Margie Siegers 3 Syaharani 4 Andien 5

Array dan String (2) Bagian yang menyusun array disebut elemen array. Masing-masing elemen dapat diakses melalui indeks array. Array gambar diatas dibuat dengan cara: type TArrayNama = array [1..5] of string; var PenyanyiJazz : TArrayNama; Kuncinya pada kata array yang diikuti dengan [nilai terkecil ... Nilai terbesar] dan kata of diikuti tipe data elemen.

Array dan String (2) PenyanyiJazz[1] PenyanyiJazz[2] PenyanyiJazz[3] Elemen array diakses dengan: Nama_array[indeks] Rien Jamain PenyanyiJazz[1] Nunung Wardiman PenyanyiJazz[2] Margie Siegers PenyanyiJazz[3] Syaharani PenyanyiJazz[4] Andien PenyanyiJazz[5]

Program Array dan String procedure TFormBab2.FormCreate(Sender: TObject); type TArrayNama = array [1..5] of string; var PenyanyiJazz : TArrayNama; Teks : String; I : integer; begin //pemberian nilai ke array PenyanyiJazz[1] := 'Rien Jamain'; PenyanyiJazz[2] := 'Nunung wardiman'; PenyanyiJazz[3] := 'Margie Siegers'; PenyanyiJazz[4] := 'Syaharani'; PenyanyiJazz[5] := 'Andien';

selanjutnya.. //Tampilkan isi Array Teks := ' '; for I := 1 to 5 do Teks := Teks + 'Penyanyi Jazz [ ' + IntToStr(I)+ ' ] : '+ PenyanyiJazz[I] + #13#10; LabelInfo.Caption :=Teks; end; end. Hasilnya...

Array dan string Array yang dibahas didepan tergolong sebagai array berdimensi satu. Terdapat pula elemen berdimensi dua. Bentuk array berdimensi dua: 1 2 Indeks kolom Indonesia Jakarta 1 Austria Vienna 2 Prancis Paris 3 InfoNegara[3,2] Mesir Kairo 4 Kolom kedua Indeks baris Nama array Baris ketiga

Program Array dua dimensi procedure TFormBab2.FormCreate(Sender: TObject); type TArrayNegara = array [1..4, 1..2] of string; var InfoNegara : TArrayNegara; Teks : String; I : integer; begin //pemberian nilai ke array InfoNegara[1,1] := 'Indonesia'; InfoNegara[1,2] := 'Jakarta'; InfoNegara[2,1] := 'Austria'; InfoNegara[2,2] := 'Vienna';

InfoNegara[3,1] := 'Prancis'; InfoNegara[3,2] := 'Paris'; InfoNegara[4,1] := 'Mesir'; InfoNegara[4,2] := 'Kairo'; //Tampilkan isi Array Teks := ' '; for I := 1 to 4 do Teks := Teks + InfoNegara[I,1] + ' - ' + InfoNegara[I,2] + #13#10; LabelInfo.Caption :=Teks; end; end.

Untuk memudahkan mengolah deretan karakter digunakan tipe data string. Var Nama:string; Variabel Nama mampu menampung string dengan panjang karakter bisa berapa saja. Apabila jumlah maksimal dalam suatu string mencapai N karakter, bisa membatasinya dengan menuliskan String[N]. Alamat : String [65]; Alamat hanya bisa menampung 65 karakter. Untuk mengakses setiap karakter dalam suatu string, gunakan notasi [] seperti pada array. Nama[1] Menyatakan karakter pada posisi kesatu dalam string Nama

Kode program procedure TFormBab2.FormCreate(Sender: TObject); var Nama : String [15]; Teks : String; i : Integer; begin Nama := 'Ika Menarianti'; //Tampilkan per huruf per baris Teks := ' '; for i := 1 to Length(Nama) do Teks := Teks + Nama[i] + #13#10; LabelInfo.Caption:=Teks; LabelInfo.Alignment:=taCenter; end;

LabelInfo.Alignment:=taCenter; Keterangan Fungsi Length digunakan untuk mengetahui jumlah karakter dalam string. LabelInfo.Alignment:=taCenter; Dipakai untuk mengatur agar teks dalam label diatur di tengah.

Berisi alamat variabel x Pointer Pointer adalah suatu tipe data yang digunakan untuk menunjuk ke suatu data. Variabel yang bertipe pointer tidaklah berisi data, melainkan berisi alamat suatu data. POINTER Variabel X 5 Berisi alamat variabel x Data

Penjelasan Dimungkinkan untuk mengakses data pada variabel x melalui pointer. Pointer digunakan sehubungan dengan pembentukan variabel dinamis. Variabel dinamis adalah variabel yang bisa dialokasikan di dalam memori atau dihapus dari memori ketika program dieksekusi.

Mendeklarasikan pointer Tipe pointer dideklarasikan: Type Nama_tipe = ^pengenal_tipe; Pengenal_tipe dapat berupa tipe-tipe data yang tergolog sebagai struktur data primitif. Tanda ^ mengawali pengenal_tipe. Contoh: TPtrInt = ^Integer; Var PtrX: TPtrInt; PtrInt adalah tipe pointer yang menunjuk ke data bertipe Integer;

TPtrInt = ^Integer; Tanda ^ mendefinisikan pointer Nama tipe pointer Tipe yang ditunjuk pointer Nama tipe pointer Contoh lain: Type TRecBuku = record Judul : String; Pengarang : String; Jumlah : Byte; End; TPtrBuku = ^TrecBuku; Var Novel : TPtrBuku;

Variabel_pointer := @variabel_data Novel adalah variabel pointer yang menunjuk ke tipe record bernama tRecbuku Agar variabel pointer menunjuk ke suatu variabel data maka diperlukan penugasan: Variabel_pointer := @variabel_data Simbol @ berarti alamat. Variabel_pointer diisi dengan alamat variabel_data

Mengakses data via pointer procedure TFormBab2.FormCreate(Sender: TObject); Type TRecBuku = record Judul : String; Pengarang : String; Jumlah : Byte; End; TPtrBuku = ^TrecBuku; Var Novel : TPtrBuku; Buku : TRecBuku;

begin //pemberian nilai ke field milik buku Buku begin //pemberian nilai ke field milik buku Buku.Judul:= 'Badai Pasti Berlalu'; Buku.Pengarang:= 'Marga T.'; Buku.Jumlah := 2; //atur agar novel menunjuk ke buku Novel:= @Buku; //Tampilkan isi Buku melalui novel LabelInfo.Caption:= 'Judul: ' + Novel^.Judul + #13#10 + 'Pengarang: ' + Novel^.Pengarang +#13#10 + 'Jumlah: ' +IntToStr(Novel^.Jumlah); end;

Menggunakan variabel dinamis Variabel dinamis adalah variabel yang bisa diciptakan ketika program dieksekusi. Bagaimana cara menciptakan variabel dinamis? Kuncinya yaitu menggunakan prosedur New Terdapat variabel pointer PtrBaru yang bertipe PtrBuku. Agar tercipta variabel yang dinamis yang kan ditunjuk oleh PtrBaru diperlukan perintah: New(Ptrbaru);

Gambaran variabel dinamis procedure TFormBab2.FormCreate(Sender: TObject); Type TRecBuku = record Judul : String; Pengarang : String; Jumlah : Byte; End; TPtrBuku = ^TrecBuku; Var PtrData: TPtrBuku;

begin //alokasikan memori New(PtrData); //pemberian nilai ke field yang ditunjuk Ptrdata PtrData.Judul:= 'Badai Pasti Berlalu'; PtrData.Pengarang:= 'Marga T.'; PtrData.Jumlah := 2; //Tampilkan data buku melalui PtrData LabelInfo.Caption:= 'Judul: ' + PtrData^.Judul + #13#10 + 'Pengarang: ' + PtrData^.Pengarang +#13#10 + 'Jumlah: ' +IntToStr(PtrData^.Jumlah); //dealokasi memori Dispose(PtrData); end;

Menghapus Variabel Dinamis Bila suatu variabel dinamis tidak diperlukan lagi, memori yang digunakannya bisa dihapus dengan prosedur Dispose. Pemanggilannya: Dispose(Variabel_pointer); Artinya, memori yang ditunjuk oleh Variabel_pointer dihapus.

Gambaran Penghapusan Data Keadaan awal: ? PtrData ? ? Setelah Dispose(PtrData): ? PtrData ? ? Memori untuk data ini didealokasikan atai dibebaskan

Pointer dan Array Dinamis Array juga dapat dipesan secara dinamis. Untuk membuat array dinams digunakan fungsi GetMem Untuk membebaskan memori digunakan prosedur FreeMem

Kode Program procedure TFormBab2.FormCreate(Sender: TObject); Type TRecBuku = record Judul : String [60]; Pengarang : String[60]; Jumlah : Byte; End; TArrayRecBuku=array [1..10000] of TRecBuku; TPtrBuku = ^TArrayRecBuku; Var PtrData: TPtrBuku; i, JumElemen : Longint; Teks :String; begin //alokasikan memori JumElemen:=5; GetMem(PtrData, JumElemen * SizeOf(TRecBuku));

Lanjutan... //pemberian nilai ke field yang ditunjuk Ptrdata PtrData^[1].Judul:= 'Octopussy'; PtrData^[1].Pengarang:= 'Ian Flemings'; PtrData^[1].Jumlah := 2; PtrData^[2].Judul:= 'Badai Pasti Berlau'; PtrData^[2].Pengarang:= 'Marga T.'; PtrData^[2].Jumlah := 4; PtrData^[3].Judul:= 'Struktur Data'; PtrData^[3].Pengarang:= 'Abdul Kadir'; PtrData^[3].Jumlah := 2; PtrData^[4].Judul:= 'Algoritma Pemrograman'; PtrData^[4].Pengarang:= 'Rinaldi Munir'; PtrData^[4].Jumlah := 5;

Lanjutan... PtrData^[5].Judul:= 'Metodologi Penelitian'; PtrData^[5].Pengarang:= 'Moh. Nazir'; PtrData^[5].Jumlah := 6; //Tampilkan data buku melalui PtrData Teks:=' '; for i:=1 to JumElemen do Teks := Teks + 'judul : ' + PtrData^[i].Judul + #13#10 +'pengarang : '+ PtrData^[i].Pengarang +#13#10 + 'Jumlah : ' + IntToStr(PtrData^[i].Jumlah) + #13#10#13#10; LabelInfo.Caption:=Teks; //dealokasi memori FreeMem(PtrData); end;

Catatan Yang perlu diperhatikan dalam menggunakan GetMem dan melibatkan String adalah panjang string harus ditentukan. Perhatikan dua deklarasi berikut: TArrayRecBuku=array [1..10000] of TRecBuku; TPtrBuku = ^TArrayRecBuku; TArrayRecBuku merupakan tipe array dengan jumlah hingga 100.000 elemen. Namun sebenarnya pemesanan memori sesungguhnya tidak sebesar itu, mengingat hal itu hanya berupa tipe.

Perhatikan kode bagian pernyataan: JumElemen:=5; GetMem(PtrData, JumElemen * SizeOf(TRecBuku)); Jumlah memori yang dialokasikan melalui GetMem hanya sebesar JumElemen ukuran tipe TRecBuku. Dengan kata lain, hanya akan ada 5 elemen saja. Pernyataan GetMem(PtrData, JumElemen * SizeOf(TRecBuku)); dapat diliustrasikan sebagai berikut:

Hasil pengalokasikan memori oleh GetMem Field : judul Field : pengarang Field : jumlah 1 Field : judul 2 Field : pengarang 3 Field : jumlah 4 Field : judul 5 Field : pengarang Array PtrData Field : jumlah Field : judul Field : pengarang Field : jumlah Field : judul Field : pengarang Field : jumlah

PtrData^[1].Judul:= 'Octopussy'; Pernyataan seperti: PtrData^[1].Judul:= 'Octopussy'; Dibaca sebagai pengisian string Octopussy ke field judul yang ditunjuk oleh elemen pertama pada array PtrData. Pernyataan: FreeMem(PtrData); Digunakan untuk membebaskan atau mendealokasikan memori yang ditunjuk oleh PtrData

Fungsi Rekursif Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi rekursif banyak digunakan pada pola tertentu, misalnya pohon biner atau menghitung faktorial. Contoh: Faktorial m! Didefinisikan sebagai: 1 jika m=0 1 x 2 x 3 x .. X m jika m > 0 Secara rekursif, persoalan diatas ditulis sebagai berikut: 0! = m Bila m > 0, m! = m x (m – 1 )!

Kondisi pertama digunakan sebagai penghenti rekursi, sedangkan kondisi kedua menggambarkan proses rekursi. Kondisi tersebut dituangkan: Function Faktorial (M : Integer) : Longint; Begin if M = 0 then Faktorial := 1 else Faktorial := M * Faktorial (M – 1); End;

Misal dilakukan pemanggilan: Hasil := Faktorial(4); 24 Hasil:24 4 x Faktorial(3) 6 3 x Faktorial(2) 2 2 x Faktorial(1) 1 1 1 x Faktorial(0) Faktorial(0)

Kode Faktorial Procedure TFormBab2.FormCreate (Sender: Tobject); Function Faktorial (m: Integer):Longint; begin if M = 0 then Faktorial := 1 else Faktorial := M * Faktorial (M-1); end; //Hitung 4! LabelInfo.Caption := ‘4! = ‘ +IntToStr(Faktorial(4));

Pengenalan Objek Objek disebut sebagai instan kelas. Kelas mengandung properti dan metode Kelas adalah suatu wadah yang mengandung data (disebut propeti atau variabel instan) dan prosedur atau fungsi untuk mengakses data (disebut metode)

Variabel Instan Kelas Metode Menyatakan data Berupa fungsi atau prosedur Variabel Instan Kelas Metode Seolah-olah kelas adalah cetakan bagi objek Objek 1 Objek N Objek 2 Instan kelas, dengan sendirinya memiliki variabel instan dan metode

Deklarasi sebuah kelas TipeKelas = Class (Object) private //bagian yang bersifat khusus public //bagian yang bersifat umum end; Private menyatakan area untuk mendeklarasikan variabel instan ataupun metode yang hanya boleh diakses oleh objek secara internal. Public menyatakan area untuk mendeklarasikan variabel instan ataupun metode yang boleh diakses oleh siapa saja.

Membuat kelas dalam unit Kelas dibuat pada sebuah unit. Menyatakan nama unit unit Unit1; Interface Implementation End. Mendeklarasikan kelas Digunakan untuk mendefinisikan detail dari metode Menyatakan akhir unit Untuk membuat unit: Klik Menu file Klik New Klik Unit - Delphi

Tulis kode program ini pada unit unit FBuku; interface uses Sysutils; type TBuku = class (TObject) private Judul : String; Pengarang : String; Jumlah : Integer; public constructor Create (Judul : String =''; Pengarang: String =''; Jumlah : Integer = 0); function Info():String; end;

implementation constructor TBuku implementation constructor TBuku.Create(Judul : String; Pengarang : String; Jumlah : Integer); begin Self.Judul := Judul; Self.Pengarang := Pengarang; Self.Jumlah:= Jumlah; end; function TBuku.Info(): String; Info:= 'Judul: '+ Judul + #13#10 + 'Pengarang: '+ Pengarang + #13#10+ 'Jumlah: '+ IntToStr(Jumlah); end.

Penjelasan program uses Sysutils; Digunakan untuk menyertakan unit Sysutils. Unit ini berisi sejumlah pustaka yang berguna dalam penyusunan unit. Contoh: IntToStr() hanya bisa digunakan Sysutils digunakan.

Nama kelas Objek yang diwarisi type TBuku = class (TObject) private Judul : String; Pengarang : String; Jumlah : Integer; public constructor Create (Judul : String = ''; Pengarang: String = ''; Jumlah : Integer = 0); function Info():String; end; Bersifat khusus (privat). Hanya metode milik kelas Tbuku yang bisa mengakses Menyatakan nilai bawaan Bisa dipakai dimana saja karena bersifat umum (publik)

TBuku.Create Detail dari metode milik kelas diletakkan pada bagian implementation. Nama kelas disebutkan didepan nama metode. Create tersebut milik Tbuku, karena bisa saja ada create untuk kelas lain. Penulisan: constructor TBuku.Create(Judul : String; Pengarang : String; Jumlah : Integer); Menyerupai pendeklarasian kelas yang berupa constructor Create (Judul : String =''; Pengarang: String =''; Jumlah : Integer = 0);

Konstruktor adalah metode yang dipanggil pertama kali ketika kelas instan diciptakan. Nilai bawaan digunakan sebagai nilai yang akan dipakai sekiranya argumen tidak disebutkan ketika konstruktor dipanggil. Nama konstruktor tidak harus berupa Create, tapi create umum dipakai Self.Judul := Judul; Self berarti objek tempat pernyataan berada. Self.Judul dibaca sebagai variabel instan Judul milik objek. Self digunakan karena terdapat dua Judul (judul milik objek dan judul dalam argumen). Self.Judul := Judul berarti “Isikan nilai judul milik argumen kepada judul milik objek”

Menyimpan dan Menambahkan Proyek Jika semua program telah ditulis, compile program! Jika tidak ada kesalahan, simpan dengan nama Fbuku. Tambahkan unit ke dalam proyek Pbab2. Caranya: Klik menu Project Klik Add to Project Pilih Fbuku Klik tombol Open Buka kode milik FBab2 dengan tekan tombol F12 Tambahkan , Fbuku seperti: unit FBab2; Interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FBuku;

Tujuan penambahan ,FBuku untuk memberitahukan bahwa unit FBab2 memerlukan unit Fbuku Penggunaan unit Fbuku dapat dilihat pada kode yang diletakkan pada unit FBab2 yang terdapat pada FormCreate

Kode Program procedure TFormBab2.FormCreate(Sender: TObject); var Buku: TBuku; begin Buku := TBuku.Create('Badai','Marga',4); LabelInfo.Caption:= Buku.Info(); end; end.

Menggunakan Destruktor Destruktor adalah kebalikan dari konstruktor. Kegunaannya untuk melakukan tindakan ketika objek berakhir. Jika kita menggunakan objek maka destruktor bisa meletakkan kode untuk membebaskan memori.

Contoh kode (simpan dengan FBuku2) unit FBuku2; interface uses Sysutils, Dialogs; type TBuku = class (TObject) private Judul : String; Pengarang : String; Jumlah : Integer; public constructor Create (Judul : String =''; Pengarang: String =''; Jumlah : Integer = 0); destructor Destroy; override; function Info():String; end;

implementation uses FBuku, FBab2; constructor TBuku implementation uses FBuku, FBab2; constructor TBuku.Create(Judul : String; Pengarang : String; Jumlah : Integer); begin Self.Judul := Judul; Self.Pengarang := Pengarang; Self.Jumlah:= Jumlah; end; destructor TBuku.Destroy; begin Inherited Destroy; end; function TBuku.Info(): String; Info:= 'Judul: '+ Judul + #13#10 + 'Pengarang: '+ Pengarang + #13#10+ 'Jumlah: '+ IntToStr(Jumlah); end.

Review Dasar Struktur Data

Soal 1 Apa yang dimaksud dengan: Enumerasi Record Pointer Fungsi rekursif Variabel dinamis Konstruktor Destruktor New Dispose FreeMem

Soal 2 Terdapat dua buah himpunan seperti berikut: H1 = [2, 3, 4, 5] Apa hasil operasi berikut? H1 - H2 H2 - H1 H2 + H1 H1 + H2 H1 * H2

Soal 3 Buatlah program untuk mendeklarasikan array Bunga yang akan menampung 5 buah nama bunga, yaitu Mawar, Melati, Kenanga, Arumdalu dan Anthurium. Bagaimana pula pernyataan untuk mengisikan nama bunga tersebut?

Soal 4 Suatu array data diisi dengan: Buatlah program untuk menghitung nilai rata-rata dari kelima elemen tersebut. 70 80 60 76

Soal 5 Type TRecBuku = record Judul : String [60]; Jelaskan maksud program dibawah ini: Type TRecBuku = record Judul : String [60]; Pengarang : String[60]; Jumlah : Byte; End; TArrayRecBuku=array [1..10000] of TRecBuku; TPtrBuku = ^TArrayRecBuku; Var PtrData: TPtrBuku;