Anda di halaman 1dari 15

LAPORAN PRAKTIKUM

ALGORITMA DAN STRUKTUR DATA

Laporan ini disusun untuk memenuhi salah satu tugas mata kuliah
Praktikum Algoritma Dan Struktur Data

Semester 2 Tahun Akademik 2020/2021

Oleh :
Nama : Popy Anisa
NPM : 207006018

LABORATORIUM INFORMATIKA
PROGRAM STUDI INFORMATIKA
FAKULTAS TEKNIK UNIVERSITAS SILIWANGI
TASIKMALAYA
2021
MODUL III

MODULARITAS PROGRAM & ADT

3.1. DASAR TEORI

Algoritma : sederetan langkah-langkah logis yang disusun secara


sistematis untuk memecahkan suatu masalah.

Struktur Data adalah sebuah cara untuk mengatur data (organize data)
dengan cara yang memungkinkannya diproses dalam waktu yang efektif
dan efisien.

Contoh : mempresentasikan waktu (time) pukul 01:02:03

Cara 1 Cara 2

3 byte: h=01, m=02, s=03 2 byte: detik sejak tengah malam=3723

0x01 0x02 0x03 0x0e 0x8b => hexadecimal(storage)

- menghitung selisih waktu lebih - menghitung selisih waktu lebih mudah


rumit - mencetak format “HH:MM:SS”
- mencetak format “HH:MM:SS”
lebih mudah

Dari contoh di atas bisa dilihat bahwa struktur data yang berbeda
membutuhkan algoritma yang berbeda meskipun mempresentasikan
permasalahan yang sama.

III-1
III-2

3.1.1. Modularitas Program

1. Sebuah Program yang “utuh” seringkali terdiri dari beberapa


modul program

2. Modul program dapat mewakili:

A Sekumpulan rutin sejenis

B ADT (Abstract Data Type): Definisi type dan primitifnya

C Mesin : definisi state variable dari mesin da primitifnya

3.1.2. Modul Program dalam c

Program utuh terdiri dari 3 kelompok file

1. File header dengan nama xxx.h:

> untuk setiap type dan primitifnya, ada sebuah file header
> contoh : untuk ADT Jam dan ADT Date ada 2 buah file
header (Jam.h dan Date.h)

> Fungsi selektor Get dan Set dapat digantikan dengan macro
berparameter. Misal selektor terhadap Hour(J), Minute(J) dan
Second(J)
#define Hour(J) (J).HH

#define Minute(J) (J).MM

#define Second(J) (J).SS

2. File body dengan nama xxx.c:

> berisi realisasi dari prototype yang di definisikan dalam file

header
III-3

> Akan ada sebuah xxx.c untuk setiap xxx.h

> Contoh: untuk file header Jam.h dan Date.h akan ada file

body Jam.c dan Date.c


#define Hour(J) (J).HH

#define Minute(J) (J).MM

#define Second(J) (J).SS

1. File body dengan nama xxx.c:

> berisi realisasi dari prototype yang di definisikan dalam file


header

> Akan ada sebuah xxx.c untuk setiap xxx.h

> Contoh: untuk file header Jam.h dan Date.h akan ada file
body Jam.c dan Date.c
#define Hour(J) (J).HH

#define Minute(J) (J).MM

#define Second(J) (J).SS

2. File main (driver) :

> berisi program utama dan procedure/fungsi lain yang hanya

dibutuhkan oleh main

> Misal diberi nama main.c

> program utuh akan terdiri dari sebuah main.c, sejumlah

xxx.h dan xxx.c


III-4

3.1.3. Penyimpanan modul program

1. Untuk setiap modul xxx.h dan xxx.c dibuat main program


untuk mentest setiap fungsi dan procedure yang dibuat.

2. Main program tersebut disebut “Driver” atau “teststub”

3. Setiap paket terdiri dari xxx.h dan xxx.c, main.c dan hasil test
disimpan dalam satu director.

3.1.4. ADT ( Abstract Data Type)

> ADT merupakan pemodelan suatu tipe data yang didefinisikan


perilakunya berdasarkan:

> data yang terkandung didalamnya

> himpunan nilai yang mungkin dimiliki oleh data tersebut

> operasi yang dapat diterapkan terhadap data tersebut

> Implementasi dari suatu ADT mencakup struktur data untuk data
yang didefinisikan oleh ADT dan algoritma untuk setiap operasi
terhadap data tersebut.

> ADT, Struktur data dan algoritma adalah salah satu mekanisme
modularitas (reusbility) dalam paradigma procedural.

ADT = pendefinisian tipe data, misalnya operasi data apa saja yang
bisa dilakukan pada data tsb, effect nya seperti apa dan strukture
datanya seperti apa.

Contoh: ADT jam

operasi add(+), subtract(-)


III-5

Efek operasi= add->detik +1, jika detik=60, menit+1


Jika menit = 60, jam +1, dsb

Struktur datanya : nyimpan H, nyimpen M, nyimpen S

Contoh :

3.1.5. RINGKASAN : ADT (AbstractDataType)

> Membuat suatu ADT mencakup :

1. Spesifikasi

> Deffinisi tipe data

> Himpunan nilai yg mungkin

> Daftar operasi-operasi(primitif maupun penunjang)

> prekondisi yang harus terpenuhi sebelum operasi dimulai

> state setelah operasi selesai


III-6

2. Implementasi

> Struktur data konkret

> Implementaasi algoritma setiap operasi

> “test case” untuk operasi pada setiap rentang kemungkinan nilai.

3.1.6 Boolean.h
/* File: boolean.h */

/* Definisi type data boolean

*/#ifndef BOOLEAN_H

#define BOOLEAN_H

#define boolean unsignedchar

#define true 1

#define false 0

#endif

Analisis :

1. Boolean adalah suatu tipe data yang hanya mempunyai dua nilai.
2. #ifndef memeriksa apakah token yang diberikan #defined lebih
awal dalam file atau dalam file yang disertakan; jika tidak, itu
termasuk kode antara itu dan penutupan #else atau, jika tidak #else
ada, #endif pernyataan.

3. #define untuk membuat konstanta dalam bahasa C

4. #endif digunakan untuk mengkompilasi jika pernyataan kondisi


pada #if bernilai benar, jika tidak maka, diabaikan
III-7

TUGAS !

1. Buatlah ADT bernama DATE, yang terdiri dari Tanggal, Bulan


dan Tahun Kalender dan di analisis !

Jawaban :
nclude<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

int hitung_Year(int thn);


int hitung_Month(int thn,int bln);
int cek_Day(int jmlDay);
int hitung_Day(int bln,int thn);

int main()
{
int thn,bln,jmlDay,jumlah_Day,Day;

printf("Years : ");
scanf("%d",&thn);fflush(stdin);
do{
printf("Month : ");
scanf("%d",&bln);fflush(stdin);
}while(bln<1||bln>12);
printf("\n. . . Loading . . .\n");
system("pause");
system("cls");
if (bln==1){
printf("Calendar : January %d",thn);
}else if (bln==2){
printf("Calendar : February %d",thn);
}else if (bln==3){
printf("Calendar : March %d",thn);
}else if (bln==4){
printf("Calendar : April %d",thn);
}else if (bln==5){
III-8

printf("Calendar : May %d",thn);


}else if (bln==6){
printf("Calendar : June %d",thn);
}else if(bln==7){
printf("Calendar : July %d",thn);
}else if (bln==8){
printf("Calendar : August %d",thn);
}else if (bln==9){
printf("Calendar : September %d",thn);
}else if (bln==10){
printf("Calendar : October %d",thn);
}else if (bln==11){
printf("Calendar : November %d",thn);
}else if (bln==12){
printf("Calendar : Desember %d",thn);
}
jmlDay = hitung_Year(thn) + hitung_Month(thn, bln);
Day = cek_Day(jmlDay);
jumlah_Day = hitung_Day(bln,thn);

printf("\n\n=======================================
==============\n");
printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");

printf("===========================================
==========\n");

for(int i = 0 ; i < Day ; i++){


printf("\t");
}
for(int i = 1 ; i <= jumlah_Day ; i++){
printf("%d\t", i);
if(Day %7 == 6)
printf("\n");
Day++;
}
getch();
return 0;
}
III-9

int hitung_Year(int thn){


int jmlDay = 0, year;
for(year = 1900 ; year < thn ; year++){
if(year%4 == 0){
jmlDay += 366;
}else{
jmlDay += 365;
}
}
return(jmlDay);
}

int hitung_Month(int thn,int bln){


int jmlDay = 0, Month;
for(Month = 1 ; Month < bln ; Month++)
{
if(Month == 1 || Month == 3 || Month == 5 || Month
== 7 || Month == 8 || Month == 10 || Month == 12){
jmlDay += 31;
}else
if(Month==4||Month==6||Month==9||Month==11){
jmlDay += 30;
}else{
if(thn%4 == 0){
jmlDay += 29;
}else
jmlDay += 28;
}
}
return(jmlDay);
}
int cek_Day(int jmlDay){
int Day = jmlDay%7 ;
return(Day);
}
int hitung_Day(int Month,int thn)
{
int jmlDay = 0;
if(Month == 1 || Month == 3 || Month == 5 ||
Month == 7 || Month == 8 || Month == 10 || Month ==
12){
jmlDay += 31;
III-10

}else if(Month == 4 || Month == 6 || Month == 9 || Month


== 11){
jmlDay += 30;
}else{
if(thn%4==0)
jmlDay += 29;
else
jmlDay += 28;
}
return(jmlDay);
}
Tampilan pada layar
III-11
III-12

Tampilan Output :

Analisis :

Tampilan diatas merupakan program ADT Date yang berisikan tanggal,


bulan dan tahun. Dalam program tersebut sudah dimasukkan perintah
untuk mencetak inputan yang kita perintahkan seperti tahun
2021(printf("Years : "); maka akan otomatis tercetak dan menampilkan
output seperti pada gambar diatas.
III-13

1. Fungsi #include adalah sebuah prosesor pengarah yang mengatakan


kepada kompiler untuk meletakan kode dari header file iostream.h
kedalam program. Fungsi cout memerlukan file iostream.h.
2. #include<stdio.h> adalah Library dalam bahasa pemrograman C yang
digunakan untuk INPUT-OUTPUT , tanpa menggunakan library
tersebut maka program C yang kita buat tidak bisa digunakan untuk
menampilkan atau menginput sesuatu.
3. String.h adalah library yang berisi fungsi-fungsi untuk membantu
pengolahan string ataupun substring. Fungsi-fungsi tersebut antara
lain : strcpy, strncpy, strcat, strncat, strcmp, strncmp, strlen
4. Stdlib.h : Merupakan file header yang berfungsi untuk operasi
pembanding dan operasi konversi. Fungsi-fungsi yang ada
di stdlib.h antara lain sebagai berikut : max() : fungsi ini digunakan
untuk menentukan nilai maximum dari 2 bilangan yang diinputkan.
Bentuk penulisannya adalah max(bilangan1,bilangan2)
5. Int main berfungsi utama yang akan dibaca compiler pertama kali
secara otomatis.
6. { = blok pembuka untuk memulai program dengan pasangannya (})
yaitu untuk mengakhiri.
7. Tanda <<, yang diketahui sebagai operator pemasukan (insertion
operators). Tanda tersebut mengatakan kepada kompiler agar segera
menghasilkan output sesuai dengan input anda.
8. Int hitung_Years, hitung_Month, cek_day, hitung_Day berfungsi
untuk mendeklarasikan variable sebagai data integer.
9. printf() merupakan fungsi untuk menampilkan output ke layar
komputer. Fungsi ini terdapat pada library <stdio.h> dan juga
<iostream> .
10. scanf() adalah fungsi untuk mengambil input dari keyboard. Fungsi
ini memiliki format seperti fungsi printf()
III-14

11. If adalah salah satu pernyataan penyeleksian yang mencari kebenaran dari
conditonal expression.
12. Else adalah pasangan if. Gunanya untuk jika if tidak memenuhi
syarat.
13. Tanda semicolon “ ; “ digunakan untuk mengakhiri sebuah pernyataan.
Setiap pernyataan harus diakhiri dengan sebuah tanda semicolon.
14. Return berfungsi untuk mengakhri eksekusi dari function tersebut,
dan return juga dapat memberikan nilai pada saat akhir dari function
kepada pemanggil.

Anda mungkin juga menyukai