Anda di halaman 1dari 3

Notasi Algoritmik ADT POINT

point.h
/* File : point.h */
/* ADT POINT */
#ifndef POINT_H
#define POINT_H
#include "boolean.h"

/*Definisi ABSTRACT DATA TYPE POINT */


typedef struct
{
int X; /* absis */
int Y; /* ordinat */
}
POINT;

/* DEFINISI PROTOTIP PRIMITIF */


/*** Konstruktor membentuk POINT ***/
POINT MakePOINT (int X, int Y);
/* Membentuk sebuah POINT dari komponen-komponennya dan mengirimkan sbg
hasil */
/* dari fungsi: return PTemp dengan PTemp.X=X dan PTemp.Y=Y dan PTemp adalah
sebuah variabel lokal bertype POINT */

/*** Selektor POINT ***/


int Absis (POINT P);
/*Mengirimkan komponen Absis dari P: return (P.X) */
int Ordinat (POINT P);
/* Mengirimkan komponen Ordinat dari P POINT : return (P.Y) */
/*** Destruktor/Dealokator: tidak perlu ***/

/**** KELOMPOK Interaksi dengan I/O device, BACA/TULIS ****/


void BacaPOINT (POINT * P);
/* Bacapoint(x,y,P) membentuk P dari x dan y yang dibaca */
/* baca nilai x dan y (variabel lokal), kemudian (*P).X=x; (*P).Y=y; */
void TulisPOINT (POINT P);
/* Nilai P ditulis ke layar dg format "(X,Y) " */

/* KELOMPOK OPERASI ARITMATIKA TERHADAP TYPE */


POINT Plus (POINT P1, POINT P2);
/* Menghasilkan salinan P yang berisi P1+P2 */
/* Melakukan operasi penjumlahan vektor */
/* buat Ptemp adalah variabel lokal */
/* Ptemp.X=P1.X+P2.X; Ptemp.Y=P1.Y+P2.Y; return Ptemp*/

POINT Minus (POINT P1, POINT P2);


/* Menghasilkan P1-P2 */

POINT DotProduct (POINT P1, POINT P2);


/* Operasi perkalian P1.P2, Melakukan operasi dot product */
POINT CrossProduct (POINT P1, POINT P2);
/* Operasi perkalian P1xP2, Melakukan operasi cross product */

/*** Kelompok operasi relasional terhadap POINT */

W02-S1S2S3 ADT Point Hal. 1 dari 3


boolean EQ (POINT P1, POINT P2);
/*Mengirimkan true jika P1 = P2 : return (P1.X=P2.X) and (P1.Y=P2.Y) */
boolean NEQ (POINT P1, POINT P2);
/*Mengirimkan true jika P1 tidak sama dengan P2 */
boolean LT (POINT P1, POINT P2);
/*Mengirimkan true jika P1 < P2. */
/* Definisi lebih kecil: lebih "kiri-bawah" dalam bidang kartesian */
boolean GT (POINT P1, POINT P2);
/*Mengirimkan true jika P1 > P2. */
/* Definisi lebih besar: lebih "kanan-atas" dalam bidang kartesian */

/* ** Kelompok menentukan di mana P berada */


boolean IsOrigin (POINT P);
/* Menghasilkan true jika P adalah titik origin */
/* return (P.X=0) and (P.Y=0) */

boolean IsOnSbX (POINT P);


/* Menghasilkan true jika P terletak Pada sumbu X */
/* return (P.Y=0) */

boolean IsOnSbY (POINT P);


/* Menghasilkan true jika P terletak pada sumbu Y */

int Kuadran (POINT P);


/* Menghasilkan kuadran dari P: 1,2,3, atau 4 */
/* Precondition : P bukan Titik Origin, */
/* dan P tidak terletak di salah satu sumbu */

/* ** KELOMPOK OPERASI LAIN TERHADAP TYPE */


POINT NextX (POINT P);
/* Mengirim salinan P dengan absis ditambah satu */
/* Ptemp adalah variabel lokal */
/* Ptemp.X=P.X+1; Ptemp.Y=P.Y; return Ptemp; */

POINT NextY (POINT P);


/* Mengirim salinan P dengan ordinat ditambah satu */
POINT PlusDelta (POINT P, int DeltaX, int DeltaY);
/* Mengirim salinan P yang absisnya = Absis(P)+DeltaX dan */
/* Ordinatnya adalah Ordinat(P)+ DeltaY */
POINT MirrorOf (POINT P, boolean SbX, boolean SbY);
/* Menghasilkan salinan P yang dicerminkan */
/* tergantung nilai SbX dan SBY */
/* Jika SbX bernilai true, maka dicerminkan thd Sumbu X */
/* Jika SbY bernilai true, maka dicerminkan thd Sumbu Y */
float Jarak0 (POINT P);
/* Menghitung jarak P ke (0,0) */
POINT HslGeser (POINT P, int Deltax, int deltaY);
/*Menghasilkan P yang sudah digeser ordinatnya sebesar DeltaX */
/* dan ordinatnya sebesar Delta Y */
/* Ptemp adalah variabel lokal */
/* Ptemp.X=P.X+Deltax; Ptemp.Y=P.Y+deltaY; return Ptemp; */

void Geser (POINT * P, int Deltax, int deltaY);


/*I.S. P terdefinisi */
/*F.S. P digeser sebesar DeltaX dan ordinatnya sebesar Delta Y */
/* (*P).X= (*P).X + Deltax; (*P).Y= (*P).Y + DeltaY; */

W02-S1S2S3 ADT Point Hal. 2 dari 3


void GeserKeSbX (POINT * P);
/*I.S. P terdefinisi */
/*F.S. P di Sumbu X dg absis sama dg absis semula.
/* Proses :tergeser Ke Sumbu X. */
/* Contoh: Jika koordinat semula(9,9) menjadi (9,0) */
void GeserKeSbY (POINT * P);
/*I.S. P terdefinisi */
/*F.S. P di Sumbu Y dengan absis yang sama dengan semulai */
/* P digeser Ke Sumbu Y. */
/* Contoh: Jika koordinat semula(9,9) menjadi (0,9) */
void Mirror (POINT * P, boolean SbX, boolean SbY);
/*I.S. P terdefinisi */
/*F.S. P dicerminkan tergantung nilai SbX atau SBY */
/* Jika SbX true maka dicerminkan terhadap Sumbu X */
/* Jika SbY true maka dicerminkan terhadap Sumbu Y */

void Putar (POINT * P, float Sudut);


/*I.S. P terdefinisi */
/*F.S. P diputar sebesar (Sudut) derajat */
#endif

W02-S1S2S3 ADT Point Hal. 3 dari 3

Anda mungkin juga menyukai