dalam Bahasa C
IF2110 – Semester I 2020/2021
Tujuan
Mahasiswa dapat mengimplementasikan ADT dengan memakai
modul program dalam bahasa C
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;
/*------------validator jam------------*/
boolean IsJValid(int H, int M, int S);
/* Mengirim true jika H,M,S dapat membentuk Jam yang valid */
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));
}
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;
}
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;
}