+ All Categories
Home > Documents > Algoritma Struktur Data - reezeki2011.files.wordpress.com · - #include “matkul.h” jika file...

Algoritma Struktur Data - reezeki2011.files.wordpress.com · - #include “matkul.h” jika file...

Date post: 18-Mar-2019
Category:
Upload: trankiet
View: 246 times
Download: 0 times
Share this document with a friend
67
Algoritma Struktur Data 3 sks By. Sri Rezeki Candra Nursari
Transcript

Algoritma Struktur Data3 sks

By. Sri Rezeki Candra Nursari

MateriMateriPengantar Struktur Data

Abstract Data Type (ADT)

Rekursif : Fibonacci

Sorting (Selection, Insertion, Bubble, Shell, Merge, Quick)

Struktur Data Linier (Linked List, Stack, Queu)

Struktur Data Hirarki (Tree, Graph, Hash Tables)

Search (Sequential, Fibonacci, Interpolation, Binary)

Pengertian ADT

• ADT adalah definisi type dan sekumpulan primitif (operasi dasar) terhadap type tersebut.

• Type diterjemahkan menjadi type terdefinisi dalam bahasa pemrograman yang bersangkutan, misalnya menjadi Struct dalam bahasa C

• Primitif dalam konteks pemrograman prosedural, diterjemahkan menjadi fungsi dan prosedur.

Pengertian ADT• Primitif dikelompokkan menjadi :

1. Konstruktor/Kreator, pembentuk nilai type. Biasanya namanya diawali dengan Make.

2. Selektor, untuk mengakses komponen type. Biasanya namanya diawali dengan Get.

3. Prosedur Pengubah nilai komponen 4. Validator komponen type, yang dipakai untuk mengetes apakah dapat

membentuk type sesuai batasan.5. Destruktor/Dealokator, yaitu untuk menghancurkan nilai objek,

sekaligus memori penyimpannya 6. Read/write, untuk interface dengan input/output device7. Operator Relasional terhadap type tersebut untuk mendefinisikan

lebih besar, lebih kecil, sama dengan dan sebagainya.8. Aritmatika terhadap type tersebut, dalam pemrograman biasanya

hanya terdefinisi untuk bilangan numerik.9. Konversi dari type tersebut ke type dasar dan sebaliknya

Abstract Data Type (ADT)• Definisi TYPE dari sebuah ADT dapat

mengandung definisi ADT lainnya– Contoh :

• ADT waktu terdiri atas ADT jam dan ADT tanggal• ADT garis memiliki 2 buah titik

• ADT diimplementasikan menjadi dua modul:– Spesifikasi TYPE dan PRIMITIF

• Spesifikasi Type sesuai bahasa• Spesifikasi PRIMITIF sesuai konteks

(fungsi/prosedur)

– Body berupa kode program

ADT biasanya diimplementasi menjadi dua buah modul, yaitu :1. Definisi/spesifikasi type dan primitif • Spesifikasi type sesuai dengan bahasa yang dipakai • Spesifikasi dari primitif sesuai dengan kaidah dalam konteks

prosedural, yaitu : a) Fungsi : nama, domain, range, dan pre kondisi jika

ada b) Prosedur : Keadaan Awal, Keadaan Akhir dan

proses yang dilakukan 2. Body/realisasi dari primitif, berupa kode program dalam

bahasa yang bersangkutan. Realisasi fungsi dan prosedur harus sedapat mungkin memanfaatkan Selektor dan Konstruktor

Abstract Data Type (ADT)• Realisasi ADT dalam beberapa bahasa pemrograman

BAHASA SPESIFIKASI BODY

C File header *.h File kode program (*.c)

C++ File header *.h File kode program (*.cpp)

Java Class Public Class

Abstract Data Type (ADT)• Setiap ADT harus dibuat menjadi spesifikasi, body dan

driver– Dalam bahasa C++, modul spesifikasi dan body dapat dibuat

dengan cara• Include dari file header• Encapsulate dalam class

– Driver digunakan untuk menguji ADT

Abstract Data Type (ADT)• Struktur Data merupakan teknik/strategi untuk

mengimplementasikan sebuat ADT (ADT lebih merupakan deskripsi logika)

• Struktur data merupakan cara membentuk, mengkonstruksi, mengaransemen, mengkomposisi kan/mengorganisasikan data (ADT)

• ADT:– Stack, queue, priority queue, dictionary, sequence, set

• Struktur Data:– Array, linked list, hash table, tree

Contoh ADT

Programcontoh 01

Algoritma.........?????Pseudocode.......??????

Pendahuluan Class• Class merupakan struktur data dari objek• Sebuah class (kelas) yang menyerupai

struktur dapat dibuat dengan menggantikan kata struct dengan class

• Persamaan struktur dengan kelas, pada cara mendeklarasikan, mendefinisikan dan cara akses

• Sedangkan perbedaan struktur dengan kelas adalah kelas mempunyai access specifier (penentu akses), sedangkan struktur tidak mempunyai access specifier (penentu akses)

Struktur vs Kelas/ClassPersamaan :

• Cara deklarasistruct cthStruct{

int b;........

};

• Cara definisi variabel/objek

cthStruct x;

• Cara aksesx.a = 22;

• Cara deklarasiclass cthClass

{int b;........

};

• Cara definisi variabel/objek

cthClass x;

• Cara aksesx.a = 22;

Struktur vs Kelas/ClassPerbedaan :

struct cthStruct{

int b;........

};

class cthClass{

public;int b;........

};

Kelas/Class• Kelas digunakan untuk mendefinisikan obyek• Contoh : tipe data digunakan untuk

mendefinisikan variabel• Obyek melingkupi anggota data dan fungsi

anggota• Nama kelas biasanya dimulai dengan huruf besar• Pendefinisian Kelas:

• Pendefinisian obyek:NamaKelas Nama_Obyek

Penentu Akses (Access Specifier)

• Digunakan untuk menentukan anggota data atau fungsi anggota mana yang boleh diakses dan oleh siapa

• Ada 4 macam penentu akses(access specifier)/level access modifier: – Public– Default– Private– Protected

Penentu Akses (Access Specifier)

• Public– Bisa diakses dari luar kelas (bersifat global)– Maka semua class yang lain dapat melihat

class tersebut– Dapat melakukan import, instansiasi, extends,

dan memanggil method yang ada dalam class

• Default– Maka hanya class dari package yang sama atau

class turunannya yang dapat melihat class tersebut

Penentu Akses (Access Specifier)

• Private– Hanya bisa diakses dari dalam kelas (bersifat

lokal)– Hanya dapat digunakan oleh inner class saja,

sedangkan class lain tidak dapat ditandai sebagai private

• Protected– Sama dengan Private dan bisa diakses oleh

kelas-kelas turunan– Class tidak dapat dideklarasikan sebagai

protected

Penentu Akses Public• Dengan menggunakan penentu akses

publik, anggota data dan fungsi anggota bisa diakses dari luar kelas

• Contoh :class Buku{

public:char judul[30];.................

}

Penentu Akses Private• Digunakan untuk memproteksi anggota-

anggota tertentu pada kelas agar tidak bisa diakses secara langsung dari luar kelas

• Biasanya yang menggunakan penentu akses private adalah anggota data

• Biasa digunakan pada kelas untuk memproteksi anggota-anggota tertentu pada kelas, agar tidak dapat diakses di luar kelas secara langsung

Penentu Akses Private• Penentu akses private adalah nilai default sehingga

kalau penentu akses tidak ditentukan, maka dianggap menggunakan penentu akses private

• Contoh :class Buku

{private:char judul[30];.................

}

Fungsi Anggota• Ada dua macam cara penulisan fungsi anggota. • Cara 1 : Fungsi didefinisikan didalam kelas

Fungsi Anggota

Cara 2 : prototipe fungsi dideklarasikan dalam kelas, definisi fungsi diletakkan diluar kelas dibawah fungsi main()

Class vs Object• Object adalah instansiasi dari

sebuah class• Class itu sebagai sebuah cetakan

sedangkan object itu adalah barang dari hasil cetakan

• Class juga dapat dikatakan sebagai kategori, sedangkan object adalah sesuatu yang memuhi syarat-syarat yang harus dipenuhi agar masuk dalam kategori tersebut

Class vs Object• Jadi satu class dapat mempunyai

banyak object• Setiap object mempunyai sifat yang

sama persis seperti yang didefinisikan dalam class tersebut

• Contoh : Mendefinisikan beberapa obyek

MtKuliah Jur_IT, Jur_TI;MtKuliah DtMtKuliah[22];

Kelas

Contoh Soal 02:Perintah menampilkan obyek komik dari class buku dengan 3 attribut/field (Judul, Pengarang dan Jumlah Buku yang tersedia)

Menggunakan penentu akses public

Programcontoh 02

Algoritma.........?????Pseudocode.......??????

Kelas

Contoh Soal 03:Perintah menampilkan obyek komik dari class buku dengan 3 attribut/field (Judul, Pengarang dan Jumlah Buku yang tersedia)

Menggunakan penentu akses private & public

Programcontoh 03

Algoritma.........?????Pseudocode.......??????

Kelas

Contoh Soal 04:Perintah menampilkan obyek komik dari class buku dengan 3 attribut/field (Judul, Pengarang dan Jumlah Buku yang tersedia)

Menggunakan fungsi anggota dengan format kelas::data

Programcontoh 04

Algoritma.........?????Pseudocode.......??????

Class & Obyek• Class adalah suatu cara untuk

membuat tipe data yang baru• Mengapa butuh tipe data baru, agar

aplikasinya source code lebih mudah dibaca

• Dari tipe data akan dibuat variabel

Class & Obyek• Variabel adalah tempat untuk

data• Class dengan obyek duluan

class nya• Instance adalah kata lain dari

obyek atau instance miliknya obyek

Class & Obyek Static adalah variabel miliknya si class

atau static variebel miliknya class nilai akan berubah kesemua instance

Didalam class kita dapat :1. Constructor selalu instance2. Method bisa static atau instance3. Variabel/property bisa static atau

instance4. Buat class didalam class biasa disebut

Inner Class

Class & Obyek• Constructor selalu instance• Constructor dan method ada

overloading argumen atau parameter nya berbeda (yang berbeda bisa jumlah, tipe data, urutan), tetapi namanya bisa sama

Class & Obyek

• Macam-macam method– method();– method(Int x, Int y);– method(String x, String y)– method(Integer y, String x )

Class & Object

• Didalam class bisa mennggunakan banyak konstruktor

• Contoh :• Mahasiswa m1 = new Mahasiswa();

Constructor

Obyek

• Terdiri dari 2, yaitu :1. Obyek Lokal2. Obyek Global

1. Obyek Lokal• Merupakan suatu obyek yang

didefinisikan di luar fungsi• Konstruktor dijalankan saat obyek

bersangkutan di ciptakan• Destruktor dijalankan dengan

sendirinya saat fungsi yang mendefinisikannya berakhir

Obyek Lokal

Contoh Soal 05:Menampilkan konstruktor dan destruktor pada variabel R,S,T

Programcontoh 05

Algoritma.........?????Pseudocode.......??????

2. Obyek Global• Merupakan suatu obyek yang didefinisikan

secara global• Konstruktor dijalankan saat awal eksekusi

program, yaitu sebelum fungsi main() di proses

• Destruktor dijalankan saat fungsi main()berakhir

• Apabila ada exit() destruktor obyek global akan dijalankan terlebih dahulu, tetapi destruktor obyek lokal tidak akan dieksekusi

Obyek Global

Contoh Soal 06:Menampilkan konstruktor dan destruktor pada variabel R,S,T dengan menambahkan perintah exit()

Programcontoh 06

Algoritma.........?????Pseudocode.......??????

Menyimpan kelas dan fungsi anggota pada file tersendiri

• Apabila class digunakan untuk sejumlah program, maka class harus

– dideklarasikan pada file tersendiri• Didefinisikan fungsi-fungsi anggotanya

• File header bisa kita buat sendiri• Caranya dengan memisahkan pendefinisian

kelas kedalam suatu file tersendiri yaitu file .H

Menyimpan kelas dan fungsi anggota pada file tersendiri

• Definisi fungsi anggota juga dimasukkan kedalam file .H ini• File .H ini kemudian disimpan di folder BC31\Include atau

disimpan pada tempat lain• Penulisan file header:

- #include “matkul.h” jika file disimpan di folder Include

- #include “d:\matkul.h” jika file disimpan ditempat lain, misal di drive d:

Class dan Obyek

Contoh Soal 07:Buat header untuk deklarasi kelas majalahBuat file untuk mendefinisikan fungsi-fungsi anggota dari class majalahMenampilkan majalah dengan menggunakan class yang di deklarasikan pada file header majalah.h

Programcontoh 07

Programcontoh 07

Programcontoh 07

Algoritma.........?????Pseudocode.......??????

Obyek Sebagai Parameter• Ada 3 kemungkinan melewatkan obyek

sebagai parameter:1. Melewatkan obyek berdasarkan nilai

(passing parameter by value)2. Melewatkan obyek sebagai referensi

(passing parameter by reference)3. Melewatkan obyek sebagai pointer

1. Melewatkan Obyek Berdasarkan Nilai• Definisi fungsi

void lihat_matkul(Matkul matakuliah){matakuliah.lihat_data();

}• Pemanggilan

Matkul jur_it;lihat_matkul(jur_it);

2. Melewatkan Obyek Sebagai Referensi• Definisi fungsi

void lihat_matkul(Matkul &matakuliah){matakuliah.lihat_data();

}• Pemanggilan

Matkul jur_ti;lihat_matkul(jur_ti);

3. Melewatkan Obyek Sebagai Pointer

• Definisi fungsi (cara 1)void lihat_matkul(Matkul *matakuliah){(*matakuliah).lihat_data();

}

• Definisi fungsi (cara 2)void lihat_matkul(Matkul *matakuliah){matakuliah->lihat_data();

}

• PemanggilanMatkul jur_ts;lihat_matkul(&jur_ts)

Array Obyek• Suatu array juga bisa mempunyai elemen berupa obyek• Sintaks:

NamaKelas NamaObyek[jumlah_data];Contoh:Matkul data_matakuliah[10];

• Inisialisasi:Matkul data_matakuliah[2] = {

{Matkul(“PBO”, 3, ‘A’)}, //Matkul : nama konstruktor{Matkul(“Prak PBO”, 2, ‘B’)}

};

Nilai Balik Berupa Obyek• Sebuah fungsi dapat menggunakan obyek

sebagai tipe nilai balik• Sintaks:

TipeNilaiBalik NamaFungsi(TipeData NamaVariabel)Contoh:Matkul IsiData(char *nama_mk, int sks_mk, char nilai_mk);

Pointer ke Fungsi Anggota• Fungsi anggota dapat diakses melalui pointer• Sintaks:

TipeNilaiBalik (NamaKelas::*NamaPointer) (Parameter, …);• TipeNilaiBalik dan Parameter dari pointer tergantung pada tipe

nilai balik dan parameter dari fungsi yang akan diakses• Contoh:

Class Contoh{

public:void FContoh1()

{cout << “tes”;}int FContoh2(int x, int y)

{return(x+y);}};

Pointer ke Fungsi Anggota

• Pointer ke fungsi dengan nilai balik void dan tidak mempunyai parameter:- Deklarasi:

void (Contoh::*ptr_contoh1) ();- Mengakses fungsi FContoh1 dengan pointer:

ptr_contoh1 = &Contoh::FContoh1;- Menjalankan fungsi yang ditunjuk oleh pointer:

(x.*ptr_contoh1)();x adalah nama obyek

Pointer ke Fungsi Anggota• Pointer ke fungsi dengan nilai balik int dan dua

parameter bertipe int:- Deklarasi:

int (Contoh::*ptr_contoh2) (int, int);- Mengakses fungsi FContoh2 dengan pointer:

ptr_contoh2 = &Contoh::FContoh2;- Menjalankan fungsi yang ditunjuk oleh pointer:

(x.*ptr_contoh2)(2,3);x adalah nama obyek


Recommended