MODULI–ADT(AbstractDataType)
I. TUJUAN
1. MemahamikonsepdanimplementasiADTdalambahasaC.
2. MemahamipenggunaanADTsederhanadan majemuk dalamaplikasisehari-hari.
II. DASARTEORI
Tipe datamerupakan sebuahabstraksiyang digunakansebagaitemplateuntuktipe data
yang akandisimpan. Tipe data digunakan untuk memodelkan sekumpulan data tertentu. Tipe
data dibedakan menjadi 2 jenis, yaitu: tipe data dasar dan tipe data bentukan.
• Tipe datadasaradalahtipedatayang sudahadapadabahasapemrograman yang digunakan,seperti:bilanganbulat(integer), bilanganrealpresisitunggal(float),
bilanganrealpresisiganda(double), karakter(char),dankosong(void).
• Tipe data bentukan adalah suatu tipe data yang didefinisikan sendiri oleh Programmer misalnya saat menemui kebutuhan tertentu yang tidak dapat hanya
diwakilkan oleh 1 tipe data dasar, misalnya kebutuhan untuk mengakses buku atau
mahasiswa. Tipe data bentukan merupakan gabungan dari 1 atau lebih tipe data dasar.
Tipe data bentukan memiliki 2 struktur utama, yaitu : nama tipe data baru dan record
(satu atau lebih tipe data dasar yang didefinisikan )
Tipedataabstract(ADT)adalahsebuahentitasdengansejumlahatributdansekumpulan
operasiyangdidefinisikanpadaatribut-atributtersebut.
ADTterdiriatas2bagian:
1. Spesifikasi(WHAT)
Terdiri darinama ADT,deskripsi domaintipe data, dandaftar operasi-operasiyang
diterapkanpadacontohtipedata.
2. Implementasi(HOW)
Berisibadandarisetiapoperasiyangdisediakan.
ADTdapat berupa tipe data dasar namun diberi nama baru atau berupa kumpulan tipe
databerbeda yang diberinama baru. Kumpulan data penyusun ADT dapat berupa tipe data
dasar maupun ADT lain. Untuk pembuatanADTpada bahasaC menggunakan
keywordtypedef. Contoh pendefinisian ADT yang merupakan tipe data dasar namun diberi
typedef struct
{
int jumlah;
}Quantity;
Quantity adalah ADT yang memiliki 1 tipe data dasar, yaitu integer (bilangan bulat).
Contoh ADT yang mengandung beberapa tipe data dasar adalah titip (Point) yang tergambar
pada digram Cartesius. Terdapat 2 tipe data dasar, yaitu bilangan bulat (integer). Bilangan
pertama digunakan untuk menunjukkan posiis absis (sumbu x) dan bilangan kedua untuk
menunjukkan posisi ordinat (sumbu y).
Dapatdidefinisikansebagaiberikut:
typedef struct {
int Absis; int Ordinat; }Point;
Selain kedua jenis ADT di atas, terdapat pula ADT yang terdiri dari ADT lain. Misalnya ADT
Line yang mengandung ADT lain, yaitu Point. Garis (Line) terbentuk dari beberapa titik
(Point).
Sehingga ADT Line dapat didefinisikan sebagai berikut:
typedef struct {
Point Start; Point End; }Line;
SetelahADTdidefinisikan, laludibuat pendeklarasianvariabelnya, misalnyapada ADT
Pointyangtelahdibuat,makadapatdibuatvariabelPdengancara:
Point P;
Cara membaca pendeklarasian variabel di atas : Point adalah tipe data dan P adalah
variabeldaritipedataPoint.
Variabel di dalam ADT dapat diakses dengan tanda titik (.) misalnya pengaksesan nilai
absispadatitikkoordinat,makasyntaxyangdigunakanadalahP.Absisataupengaksesan nilaiordinatpadatitikkoordinatmakasyntaxyangdigunakanadalahP.Ordinat.
Pendeklarasian variabel Line, misalnya Line L;
Contoh cara pengaksesan nilai ordinat titik awal pada Line dengan L.Start.Ordinat
L adalah nama variabel dari tipe data Line diikuti tanda titik (.) kemudian variabel dari tipe data
Point (Absis/Ordinat).
III.DEMO
//file point.h
#include <stdio.h> #include <conio.h> #include <math.h>
//mendefinisikan tipe data baru dengan nama tipe data “Point” typedef struct
{
int Absis; int Ordinat; }Point;
// Inisialisasi prosedur/fungsi yang akan digunakan :
void InitPoint(Point *P, int x, int y); void PrintPoint(Point P);
int IsSame(Point P1, Point P2); float Jarak(Point P1, Point P2);
//file point.c
#include "point.h"
void InitPoint(Point *P, int x, int y) {
void PrintPoint(Point P); {
printf("[%d,%d]", P.Absis, P.Ordinat); }
int IsSame(Point P1, Point P2) {
return P1.Absis==P2.Absis && P1.Ordinat==P2.Ordinat; }
float Jarak(Point P1, Point P2) {
float deltaX, deltaY; deltaX=P2.Absis-P1.Absis; deltaY=P2.Ordinat-P1.Ordinat; return(sqrt(deltaX*deltaX+deltaY*deltaY));//rumus phytagoras } //file mainPoint.c #include "point.h" void main() { int x1,y1,x2,y2;
Point koordinat1, koordinat2;
printf("Masukkan koordinat titik pertama sumbu x : "); scanf("%d",&x1);
printf("Masukkan koordinat titik pertama sumbu y : "); scanf("%d",&y1);
printf("Masukkan koordinat titik kedua sumbu x : "); scanf("%d",&x2);
printf("Masukkan koordinat titik kedua sumbu y : "); scanf("%d",&y2);
InitPoint(&koordinat1,x1,y1); InitPoint(&koordinat2,x2,y2);
printf("\n\nKoordinat titik pertama : "); PrintPoint(koordinat1);
printf("\nKoordinat titik kedua : "); PrintPoint(koordinat2);
if(IsSame(koordinat1, koordinat2))
printf("\nKedua titik koordinatnya sama…"); else
printf("\nKedua titik koordinatnya berbeda…");
printf("\nJarak kedua titik : %5.2f",Jarak(koordinat1,koordinat2));