STRUKTUR DATA POKOK BAHASAN - 5 ABSTRACT DATA TYPE

dokumen-dokumen yang mirip
Pertemuan 11. Tipe data Struktur (Struct) dan Union

TIF 4201 Algoritma Dan Struktur Data

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

STACK DAN QUEUE (Muhammad Fachrie, STMIK Amikom Yogyakarta)

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

Struktur Data dan Algoritma

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

LAPORAN PRAKTIKUM RESMI QUEUE

Algoritma Dan Struktur Data II. Queue

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

Algoritma dan Struktur Data. Ramos Somya

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Algoritma Pemrograman & Struktur Data

QUEUE (ANTREAN) Prinsip Antrean : FIFO (First In First Out) FCFS (First Come First Serve) Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu

Implementasi Queue menggunakan Array. Imam Fahrur Rozi

Algoritma Dan Struktur Data II

TUGAS PENDAHULUAN MODUL 12 PENGENALAN DAN IMPLEMENTASI STRUKTUR DATA STACK

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Algoritma Dan Struktur Data II

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

ABSTRACT DATA TYPE (ADT) Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc

QUEUE (ANTREAN) Pertemuan 6 PENGERTIAN QUEUE (ANTREAN)

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

KUM 5 IMPLEMENTASI QUEUE

Pertemuan 7. REVIEW dan QUIS

SILABUS STRUKTUR DATA ( TIF-104 ) PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS PEMBANGUNAN JAYA TANGERANG SELATAN

DIG1G3 Implementasi Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

Fungsi : Dasar Fungsi

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

SATUAN ACARA PENGAJARAN

STRUKTUR DATA Pertemuan 1 s.d 8

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Algoritma Pemrograman [BS204]

Seharusnya. if (antrian.tail==max-1) return 0;

Struktur Data Array. Rijal Fadilah S.Si

Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

03/04/2018. Collection set List Map. Pemrograman Berorientasi Object

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

A. TUJUAN PEMBELAJARAN

Algoritma & Pemrograman FUNGSI. Pengampu : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

Pendahuluan Struktur Data STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 1 : 20 Juni 2016

STACK dan QUEUE MODUL PRAKTIKUM STRUKTUR DATA 09 UNIVERSITAS KRISTEN DUTA WACANA. Daftar Isi: Stack dan Queue. Latihan soal. Guided.

Modul Praktikum Bahasa Pemrograman 1

Pemrograman Berorientasi. Array dan Collections

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

04. Single Linked List

Fungsi. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

ARNA FARIZA YULIANA SETIOWATI

MODUL 4. COLLECTIONS ARRAYS, QUEUE, dan STACK

STRUKTUR DASAR PEMROGRAMAN

TIPE DATA ABSTRAK MENGGUNAKAN BAHASA C

BAB IV Antrian(Queue)

MODUL IV STACK A. TUJUAN

Abstract Data Type (ADT)

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

# NINE Queue dengan Array

IKG2I4 / Software Project I

Modul Praktikum Algoritma dan Struktur Data

Algoritma dan Struktur Data. Pertemuan 5 Pointer

ALGORITMA DAN STRUKTUR DATA

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 27 Juni 2016

Algoritme dan Pemrograman

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Pemrograman Dasar C. Minggu 8

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Stack.

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 29 Juni 2015

MODUL PEMROGRAMAN 2. Queue (Antrian)

DIG1G3 Implementasi Struktur Data

Stack STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 5 : 6 Juli 2015

KUM 3 IMPLEMENTASI LIST

A. TUJUAN PEMBELAJARAN

Queue Priority Queue STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 6 : 7 Juli 2015

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

PRAKTIKUM ALGORITMA & PEMROGRAMAN III MODUL_06 Stack (Tumpukan)

Array Pendeklarasian Array

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Stack using Array. Alfa Faridh Suni, S.T., M.T. PTIK

BAB VIII QUEUE (ANTRIAN)

Function nama dipisahkan

Kurikulum Qt. { Basic OOP } Chapter 4. Function

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

MODULAR (FUNGSI)

Algoritma dan Struktur Data. Pointer Pada Struct

Algoritma dan Struktur Data. Linked List

Pengenalan Algoritma

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

Modul 2. [access specifier] [tipe data] [nama variabel];

Transkripsi:

STRUKTUR DATA POKOK BAHASAN - 5 ABSTRACT DATA TYPE Oleh : NAZARUDDIN AHMAD, S.T, M.T Design By mytemplate 2013

Abstract Data Types Pada saat membuat program, biasanya digunakan untuk mencari solusi suatu problem Problem dalam real life Kompleks Perlu mengerti problem dengan baik untuk memisahkan bagian yang penting dari rinci yang tidak penting Abstraksi 2

Abstract Data Types Contoh : Penanganan administrasi dalam sebuah fakultas Mahasiswa? Pegawai.? Informasi apa yang harus dicatat..? 3

Abstract Data Types Abstraksi menghasilkan model Model menaruh fokus pada hal-hal penting pada problem Mendefiniskan property problem 1. Data yang dipengaruhi 2. Operasi yang teridentifikasi 4

Abstract Data Type (ADT) adalah... Spesifikasi dari sekumpulan data termasuk operasi yang dapat dilakukan pada data tersebut. (Wikipedia) Sekumpulan data dan operasi terhadap data tersebut yang definisi-nya tidak bergantung pada implementasi tertentu. (/www.nist.gov/dads/) Definisi TYPE dan sekumpulan PRIMITF (operasi dasar) terhadap TYPE tersebut (Ingriani Liem, ITB) 5

Konsep ADT ADT membungkus (encapsulates) data dan operasi yang memanipulasi data tersebut. Data tersebut juga hanya bisa diakses lewat operasi tersebut. e r a p t o data i o s n 6

Modul ADT ADT biasanya diimplementasikan menjadi 2 modul: Definisi/Spesifikasi Type dan Primitif (Interface) Spesifikasi type sesuai bahasa yang bersangkutan Spesifikasi dari primitif sesuai kaidah prosedural: Fungsi Prosedur Body/realisasi dari primitif Berupa kode program dalam bahasa yang bersangkutan. Agar ADT dapat dites, maka biasanya disertai program utama yang memanggil setiap fungsi/prosedur. Program utama ini disebut sebagai driver. 7

Interface Spesifikasi Abstract Data Type biasa disebut sebagai interface. Interface menyatakan apa yang dapat dilihat dan digunakan oleh programmer. Dalam pemrograman, hal tersebut dinyatakan sebagai public method. Operasi-operasi yang dapat dilakukan pada abstract data type dituliskan dalam interface dan dinyatakan public. 8

Pemisahan interface dengan implementasi Pengguna dari sebuah abstract data type hanya perlu memikirkan dan mempelajari interface yang diberikan tanpa perlu mengetahui banyak bagaimana implementasi dilakukan. (prinsip: enkapsulasi) Implementasi dapat saja berubah namun interface tetap. Dengan kata lain, implementasi dari sebuah abstract data type dapat saja berbeda-beda namun selama masih mengikuti interface yang diberikan maka program yang menggunakan abstract data type tersebut tidak akan terpengaruh. 9

Struktur data = container Container Sebuah struktur data dapat dipandang sebagai tempat penyimpanan benda (container). Beberapa hal yang dapat dilakukan: Menaruh benda Mengambil benda Mencari benda tertentu Mengosongkannya (atau periksa ( kosong apakah Contoh Interface struktur data : Data void add(benda x); void remove(benda x); Benda access(benda x); void makeempty(); boolean isempty(); 10

ADT: List Indeks 1 2 3 4 Sebuah List adalah kumpulan benda di mana setiap benda memiliki posisi. Setiap benda dalam List dapat diakses melalui indeks-nya. Contoh paling gampang: array! Contoh Interface list : void insert(int indeks, Benda x); void append(benda x); void remove(int indeks); void remove(benda x); Benda get(int indeks);

ADT: Stack push pop,top Most recent Sebuah Stack adalah kumpulan benda di mana hanya benda yang most recently inserted dapat diakses. Bayangkan setumpuk koran. Benda yang paling terakhir ditambahkan ditaruh di atas tumpukan (top). Operasi pada Stack membutuhkan waktu konstan (O(1)). Contoh Interface stack : Least recent void push(benda x); Benda pop(); Benda top();

ADT: Queue enqueue dequeue getfront Most recent Least recent Sebuah Queue adalah kumpulan benda di mana hanya benda yang least recently inserted dapat diakses. Bayangkan antrian printer job pada jaringan. Benda yang paling awal ditambahkan berada di depan antrian (front). Operasi pada Queue membutuhkan waktu konstan (O(1)). Contoh Interface queue : void enqueue(benda x); Benda dequeue(); Benda getfront();

ADT: Set tambah Set adalah struktur data yang tidak mengizinkan duplikasi data. Bandingkan dengan struktur data lain yang mengizinkan kita menyimpan dua data yang sama. Bayangkan peserta kuliah ini: Setiap peserta unik, tidak ada yang terdaftar dua kali! Contoh Interface set : void add(benda x); void remove(benda x); boolean ismember(benda x);

ADT: Map Nama: Abdul Betty Chairul Dian Nilai: Map adalah struktur data yang berisi sekumpulan pasangan nama (keys) dan nilai (values) dari nama tersebut. Nama (Keys) harus unik, tapi nilai (values) tidak. Bayangkan basis-data yang berisi informasi peserta kuliah. Apa yang menjadi nama (keys)? Contoh Interface sebuah Map : void put(kunci id, Nilai x); void remove(kunci id); Nilai get(kunci id);

ADT: Priority Queue insert deletemin findmin Highest priority Priority Queue adalah struktur data queue yang tiap elemen data dapat miliki nilai prioritas. Data dengan nilai prioritas tertinggilah yang dapat diakses terlebih dulu. Bayangkan sebuah antrian pada printer jaringan. Misalkan ada sebuah permintaan cetak untuk 100 halaman hanya beberapa detik lebih awal dari permintaan cetak selembar halaman. Contoh Interface sebuah Priority Queue : void insert(benda x); (Menambahkan) void deletemin(); (menghapus) Benda findmin(); (meng-akses)

API vs doing it yourself Jika anda menggunakan framework atau software component, programmer lain dapat lebih mudah mengadaptasi program anda. Jika anda membuat implementasi sendiri, maka programmer lain belum tentu dapat dengan mudah mempelajari program anda. Namun demikian, sebagai mahasiswa/i ilmu komputer, perlu memahami bagaimana data tersusun dalam memory dan perlu memahami konsep-konsep apa yang mendasarinya. Tidak menutup kemungkinan untuk meng-extend/meng-implement Collections

Pemecahan Masalah dengan Tipe Terstruktur Untuk memanipulasi data, C menyediakan semua operasi dasar yang dapat digunakan untuk memecahkan masalah dengan menggunakan tipe data standar Kombinasian type tertentu yang didefinisikan user dengan sekumpulan operasi-operasi dasar yang membolehkan satu kebenaran untuk melihat tipe sebagai konsep kesatuan disebut Abstract Data Type (ADT) Contoh tipe data planet_t dan operasi-operasi dasarnya digambarkan sbb:

Contoh Studi Kasus untuk ADT Tipe yang didefinisikan user untuk angka yang komplek Analisa: Angka yang komplek adalah angka dengan bagian real dan imaginer Contoh : a+bi (a: real, b:imaginer) Definisikan fungsi untuk melakukan operasi aritmetika dasar (penjumlahan, pengurangan, perkalian dan pembagian)

Desain 2 aspek utama dari solusi masalah ini adalah : Mendefinisikan struktur dari tipe yang didefinisikan user Menentukan nama fungsi, parameter, dan tujuan dari tiap operasi

Desain (cont..) Nama struktur yang didefinisikan sendiri : complex_t Fungsi : Multiply_complex (untuk perkalian bil. komplek) Divide_complex (untuk pembagian bil. kompleks Abs_complex (untuk mendapatkan nilai absolut) Print_complex (untuk menampilkan hasil) Scan_complex (untuk melakukan pembacaan thd bil. Kompleks) Add_complex (untuk menjumlahkan bil. Kompleks) Substract_complex (untuk mengurangkan bil. Kompleks)

Spesifikasi dari Tipe complex_t dan operasi-operasi yang berlaku STRUCTURE: Angka kompleks adalah suatu object dari tipe complex_t yang terdiri dari sepasang nilai bertipe double. OPERATOR: /*Complex number input fuction returns standard scanning*/ int scan_complex(complex_t *c) /*output-address of complex variable to fill*/ /* Complex output fuction displays value as a+bi or a-bi Displays only a if imaginary part is 0 Display only bi if real part is 0 */ void print_complex(complex_t c) /* input-complex number to display */

Spesifikasi dari Tipe complex_t dan operasi-operasi yang berlaku (cont.) /*Returns sum of complex value c1 and c2*/ complex_t add_complex(complex_t c1,complex_t c2) /*input*/ /*Returns difference c1-c2*/ complex_t subtract_complex(complex_t c1,complex_t c2) /*input*/ /*Returns product of complex values c1 and c2*/ complex_t multiply_complex(complex_t c1,complex_t c2) /*input*/ /*Returns quotient of complex values(c1/c2)*/ complex-t divide-complex(complex_t c1,complex_t c2) /*input*/ /*Returns absolute value of complex number c*/ abs_complex(complex_t c) /*input*/

Latihan Modifikasi kedua program sebelumnya dengan menggunakan ADT Jam, yang spefisikasinya seperti berikut: typedef struct { int Jam; int Menit; int Detik } jam; /* prototype */ int IsJamValid(int j, int m, int d); /* mengembalikan 1 jika valid dan 0 jika tidak valid */ jam MakeJam(int j, int m, int d); /* Konstruktor, membentuk jam dari komponen yang valid*/

Latihan (cont.) void SetJam(jam *J, int j, int m, int d); /* mengeset jam sesuai dengan parameter input */ void ResetJam(jam *J); /* mengisi sebuah jam dengan 00:00:00 */ void TulisJam(jam J); /* menulis sebuah jam */ int JamKeDetik(jam J); /* konversi jam ke detik */ jam DetikKeJam(int d); /* konversi dari detik ke jam */ jam JPlus(jam J1, jam J2); /* menghasilkan J1+J2, dalam bentuk jam */ jam JMinus(jam J1, jam J2); /* menghasilkan J1-J2, dalam bentuk jam */

Contoh : Titik Koordinat #include <stdio.h> #include <math.h> #include <conio.h> typedef struct { int sumbu_x; int sumbu_y; }Titik; Titik Make_Titik (int x, int y) { Titik t; t.sumbu_x = x; t.sumbu_y = y; return t; }

Contoh : Titik Koordinat (Lanj.) void Display(Titik T) // merupakan fungsi untuk menampilkan Titik di layar { printf("koordinat x = %d ", T.sumbu_x); printf("koordinat y = %d \n", T.sumbu_y); } float Jarak(Titik T1, Titik T2) //fungsi untuk menghitung jarak antara dua titik T1 dan T2 { int A, B; float jarak; A = (T2.sumbu_y - T1. sumbu_y); B = (T2.sumbu_x - T1. sumbu_x); jarak = sqrt(a*a + B*B); } return jarak;

Contoh : Titik Koordinat (Lanj.) int main() { Titik T1; // menciptakan instans dari titik T1 = Make_Titik(1,1); Titik T2; // menciptakan titik T2 T2 = Make_Titik(4,3); } Display(T1); Display(T2); printf("jarak = %f", Jarak(T1, T2)); getch (); return 0;

Contoh : Titik Koordinat (Lanj.) Outputnya :