ADT Complex

 

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

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

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

17 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

18 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:

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

20 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

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

22 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 */

23 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*/

24 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*/

25 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 */

26 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; }

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

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

(sumber) https://docplayer.info/

Artikel Selanjutnya Artikel Sebelumnya
Post Terkait :
Struktur Data