Anda di halaman 1dari 4

ADT Jam

dalam Bahasa C
IF2110 – Semester I 2020/2021

Tim Pengajar IF2110

Tujuan
 Mahasiswa dapat mengimplementasikan ADT dengan memakai
modul program dalam bahasa C

24/08/2020 IF2110/Modularitas Program dalam Bahasa C 2

1
/* File : jam.h */
Notasi akses:
/* spesifikasi ADT Jam */ Menggantikan
#ifndef jam_H fungsi/prosedur selektor
#define jam_H
get dan set
#include "boolean.h"

/* Notasi Akses */
#define Hour(J) (J).HH
#define Minute(J) (J).MM
#define Second(J) (J).SS

typedef struct {
int HH; /* 0..23 */
int MM; /* 0..59 */
int SS; /* 0..59 */
} Jam;

/***** Konstruktor ************/


Jam MakeJam(int H, int M, int S);
/* Membentuk Jam dari H, M, S yg valid */

24/08/2020 IF2110/Modularitas Program dalam Bahasa C 3

/*------------validator jam------------*/
boolean IsJValid(int H, int M, int S);
/* Mengirim true jika H,M,S dapat membentuk Jam yang valid */

/*------------Baca & Tulis jam-----------*/


void BacaJam(Jam *J);
/* I.S. : J tak terdefinisi */
/* F.S. : J terdefinisi dan merupakan jam valid */
/* Proses : mengulang baca komponen H,M,S sehingga membentuk J yang valid */
void TulisJam(Jam J);
/* I.S. : J sembarang */
/* F.S. : J ditulis ke layar dengan format HH:MM:SS */
/* Proses : Menulis ke layar */

/*----------Konversi terhadap type jam----------*/


int JamToDetik(Jam J);
/* Konversi Jam menjadi detik */
Jam DetikToJam(int N);
/* Konversi detik ke Jam */
#endif

24/08/2020 IF2110/Modularitas Program dalam Bahasa C 4

2
/* File : jam.c */
/* Body ADT Jam */
#include "jam.h"
/* -----------konstruktor Jam--------- */
Jam MakeJam(int H, int M, int S)
/* Membentuk Jam dari H, M, S yg valid */
{ /* Kamus Lokal */ Cara mengeset komponen,
Jam J1; menggunakan notasi akses
/* Algoritma */ yang sudah didefinisikan
Hour(J1) = H;
Minute(J1) = M;
Second(J1) = S;
return J1;
}
/*------------validator Jam------------*/
boolean IsJValid(int H, int M, int S)
/* Mengirim true jika H,M,S dapat membentuk Jam yang valid */
{ /* Kamus Lokal */
/* Algoritma */
return ((H >= 0 && H <= 23) && (M >= 0 && M <= 59) &&
(S >= 0 && S <= 59));
}

24/08/2020 IF2110/Modularitas Program dalam Bahasa C 5

/*------------Baca & Tulis jam-----------*/


void BacaJam(Jam *J)
/* I.S. : J tak terdefinisi */
/* F.S. : J terdefinisi dan merupakan jam valid */
/* Proses : mengulang baca komponen H, M, S sehingga membentuk J yang valid */
{ /* Kamus Lokal */
int H, M, S;
/* Algoritma */
do {
printf("Masukkan jam : ");scanf("%d",&H);
printf("Masukkan menit : ");scanf("%d",&M);
printf("Masukkan detik : ");scanf("%d",&S);
} while(!IsJValid(H,M,S));
*J = MakeJam(H,M,S);
}
void TulisJam(Jam J)
/* I.S. : J sembarang*/
/* F.S. : J ditulis ke layar dengan format HH:MM:SS */
/* Proses : Menulis ke layar */
{ /* Kamus lokal */
/* Algoritma */
printf("%d:%d:%d",Hour(J),Minute(J),Second(J));
}

24/08/2020 IF2110/Modularitas Program dalam Bahasa C 6

3
int JamToDetik(Jam J)
/* Konversi Jam menjadi detik */
{ /* Kamus Lokal */
/* Algoritma */
return(3600 * Hour(J) + 60 * Minute(J) + Second(J));
}

Jam DetikToJam(int N)
/* Konversi detik ke Jam */
{ /* Kamus Lokal */
int sisa;
Jam JOut;
/* Algoritma */
N = N % 86400; // harus ditambah ini agar valid
Hour(JOut) = N / 3600;
sisa = N % 3600;
Minute(JOut) = sisa / 60;
Second(JOut) = sisa % 60;
return JOut;
}

24/08/2020 IF2110/Modularitas Program dalam Bahasa C 7

Driver
/* File : mjam.c */
/* Program MainJam */
/* Driver ADT Jam */
#include <stdio.h>
#include "jam.h”

int main()
{ /* KAMUS */
Jam J1, J2;
/* ALGORITMA */
BacaJam(&J1);
printf("Jam sekarang: ");
TulisJam(J1); printf("\n");
printf("Konversi menjadi detik: %d\n",JamToDetik(J1));
J2 = DetikToJam(5000);
printf("5000 detik sama dengan jam : ");
TulisJam(J2);

return 0;
}

24/08/2020 IF2110/Modularitas Program dalam Bahasa C 8

Anda mungkin juga menyukai