Anda di halaman 1dari 30

LAPORAN MODUL 1

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data


Yang Dibimbing oleh
Bpk. Utomo Pujianto S.Kom., M.Kom.

Disusun Oleh:
AMRIZAL FAHMI ROSYAD 160533611465
DIAN MONICA 160533611453

S1 PTI OFF A 2016

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI PENDIDIKAN TEKNIK INFORMATIKA
FEBRUARI 2017
STRUCT, ARRAY, DAN POINTER

Tujuan
1. Mahasiswa memahami apakah yang dimaksud dengan struktur data.
2. Mahasiswa memahami apakah yang dimaksud dengan algoritma.
3. Mengingat kembali array, struktur, pointer dalam bahasa C.

DASAR TEORI

1.1. Pengenalan Struktur Data

Struktur data adalah sebuah skema organisasi, seperti struktur dan array, yang diterapkan
pada data sehingga data dapat diinterprestasikan dan sehingga operasioperasi spesifik dapat
dilaksanakan pada data tersebut

1.2.Pengenalan Algoritma

Algoritma adalah barisan langkah-langkah perhitungan dasar yang mengubah masukan


(dari beberapa fungsi matematika) menjadi keluaran. Contoh :
Perkalian
Input :integer positif a , b
Output :a X b
Algoritma perkalian :
Contoh kasus :a = 365, b = 24
Metode 1 : 365 * 24 = 365 + (365 * 23)
= 730 + (365 * 22)
…..
= 8760 + (365 * 0)
= 8760
Metode 2 : 3 6 5
24
1460
730
8760
Manakah algoritma yang lebih baik ?
1.3 Array
Array adalah organisasi kumpulan data homogen yang ukuran atau jumlah elemen
maksimumnya telah diketahui dari awal. Array umumnya disimpan di memori komputer
secara
kontigu (berurutan). Deklarasi dari array adalah sebagai berikut:
int A[5]; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe integer.
Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilai di
masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati posisi-
posisi
lain.
Terdapat dua tipe operasi, yaitu:
1. Operasi terhadap satu elemen/posisi dari array
2. Operasi terhadap array sebagai keseluruhan

Dua operasi paling dasar terhadap satu elemen/posisi adalah


1. Penyimpanan nilai elemen ke posisi tertentu di array
2. Pengambilan nilai elemen dari posisi tertentu di array

1.3.1 Penyimpanan dan Pengambilan Nilai


Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan
pengambilan nilai elemen pada posisi tertentu di array.
Contoh:
A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A
C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A

1.3.2 Keunggulan dan Kelemahan Array


Keunggulan array adalah sebagai berikut:
1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu
secara
langsung tanpa melalui elemen-elemen lain.
2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-elemen
tetangga, baik elemen pendahulu atau elemen penerus
3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka
penggunaan penyimpanannya sangat efisien
Kelemahan array. Array mempunyai fleksibilitas rendah, karena array mempunyai batasan
sebagai berikut:
1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen
adalah
karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain
2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah
ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka
representasi statis
 Tidak efisien dalam penggunaan memori
 Menyiakan banyak waktu komputasi
 Pada suatu aplikasi, representasi statis tidak dimungkinkan
1.4 Pointer
Misalnya kita ingin membuat beberapa penunjuk ke blok penyimpan yang berisi
integer.
Deklarasi pada C adalah:
int *IntegerPointer;
Tanda asterik (*) yang berada sebelum nama variable Integer Pointer menandakan
‘pointer pada suatu int’. Jadi deklarasi diatas berarti ‘definisikan sebuah tipe yang terdiri dari
pointer bertipe integer yang bernama IntegerPointer’. Apabila didepannya ditambahkan
typedef
sebagai berikut
Typedef int *IntegerPointer;
Berarti Integer Pointer merupakan suatu tipe pointer berbentuk integer.

Apabila akan mendeklarasikan dua variable A dan B sebagai penunjuk ke bilangan integer :
IntegerPointer A, B;
Berarti kompiler C akan berisi nilai dari variable A dan B yang ‘menunjuk ke integer’.
Untuk membuat beberapa penunjuk ke beberapa penyimpan integer yang kosong dan
untuk membuat A dan B menunjuk tempat tersebut, digunakan prosedur dinamis untuk
alokasi
penyimpan yang disebut malloc
A = (IntegerPointer *) malloc (sizeof(int));

B = (int *) malloc (sizeof(int));

Misalnya kita akan menyimpan integer 5 pada blok penyimpan yang ditunjuk pointer pada
variable A. Untuk menuimpan angka 5 pada blok penyimpan integer itu melalui pointer A,
digunakan pernyataan :

*A = 5;
Linked list adalah salah satu struktur data yang paling fundamental. Linked list terdiri dari
sejumlah kelompok elemen (linked ) dengan urutan tertentu. Linked list sangat berguna untuk
memelihara sekelompok data, semacam array, tetapi linked list lebih menguntungkan dalam
beberapa kasus. Linked list lebih efisien dalam proses penyisipan (insertion ) dan
penghapusan(deletion ). Linked list juga menggunakan pengalokasian penyimpan secara
dinamis, dimana
penyimpan dialokasikan pada saat waktu berjalan (runtime).

1.5 Struktur
Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama,
dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai untuk
mengelompokkan beberapa informasi yang berkaitan menjadi sebuah satu kesatuan.

Contoh sebuah struktur adalah informasi data tanggal, yang berisi: tanggal, bulan dan
tahun.

1.5.1 Mendeklarasikan Struktur


Contoh pendefinisian tipe struktur adalah sebagai berikut:
struct data_tanggal {
int tanggal;
int bulan;
int tahun;
};
yang mendefinisikan tipe struktur bernama data_tanggal, yang terdiri dari tiga buah elemen
(field)
berupa : tanggal, bulan dan tahun. Pendefnisian dan pendeklarasian struktur dapat juga ditulis
sebagai berikut:
struct data_tanggal {
int tanggal;
int bulan;
int tahun;
} tgl_lahir;
Bentuk umum dalam mendefinisikan dan mendeklarasikan struktur adalah sebagai berikut
struct nama_tipe_struktur {
tipe field1;
tipe field2;
...
...
tipe fieldn;
}variabel_struktur1, ... , variabel_strukturM;
Masing-masing tipe dari elemen struktur dapat berlainan. Adapun variabel_struktur1 sampai
dengan variabel_strukturM menyatakan bahwa variabel struktur yang dideklarasikan bisa
lebih
dari satu. Jika ada lebih dari satu variabel, antara variabel struktur dipisahkan dengan tanda
koma.
1.5.2 Mengakses Elemen Struktur
Elemen dari struktur dapat diakses dengan menggunakan bentuk
variabel_struktur.nama_field
Antara variabel_struktur dan nama_field dipisahkan dengan operator titik (disebut operator
anggota struktur). Contoh berikut merupakan instruksi untuk mengisikan data pada field
tanggal
tgl_lahir.tanggal = 30;

Latihan Praktikum

Percobaan 1
AlgoritmadanStruktur Data
Nama Program :Penggunaan array pada bilangan fibonacci
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <stdio.h>
#define MAX 10

int fibo[MAX];

void main ()
{
int i;

fibo[1]=1;
fibo[2]=1;

for (i=3;i<=MAX;i++)
fibo[i]=fibo[i-2]+fibo[i-1];

printf("%d Bilangan Fibonaci Pertama adalah : \n",MAX);


for (i=1;i<MAX;i++)
printf("%d-", fibo[i]);
}
Script yang benar :
#include <stdio.h>
#define MAX 10

intfibo[MAX];

int main ()
{

int i;

fibo[1]=1;
fibo[2]=1;

for (i=3;i<=MAX;i++)
fibo[i]=fibo[i-2]+fibo[i-1];

printf("%d BilanganFibonaciPertamaadalah : \n",MAX);


for (i=1;i<=MAX;i++)
printf("%d-", fibo[i]);
}

Output Program:

Analisis Program:

Script program tidak dapat di execute jika menggunakan “void” , maka diganti
dengan “int”. kemudian program di atas akan dapat diexecute namun hasil program terdapat
kesalahan. Dari 10 bilangan fibonaci yang diminta , yang keluar hanya 9. Karena penggunaan
rumus yang kurang tepat, yaitu “ for (i=1;i<MAX;i++)”, yang pada rumus tersebut
tidak menggunakan operator = setelah “<’ seharusnya yang benar adalah “for
(i=1;i<=MAX;i++)”,. Hal ini sangat berpengaruh pada hasil program. Jika tidak
menggunakan operator “=” maka hasil yang akan muncul adalah urutan bilangan fibonaci
yang kurang dari 10. Menggunakan “%d” untuk tipe data integer. Penggunaan file header
stdio untuk penggunaan printf. Define MAX untuk penentu maksimal keluarnya bilangan
fibonaci yang ditentukan.

Percobaan 2
AlgoritmadanStruktur Data
Nama Program :Program mengubah isi variabel melalui pointer
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <stdio.h>

main()

{
int y, x = 87;
int *px;

px = &x;
y = *px;

printf("Alamat x = %p\n", &x);


printf("Isi px = %p\n", px);
printf("Isi x = %d\n", x);
printf("Nilai yang ditunjukolehpx = %d\n", *px);
printf("Nilai y = %d\n", y);
}

Script yang benar :


#include <stdio.h>
int main ()
{
int y, x = 87;
int *px;

px = &x;
y = *px;
printf("Alamat x = %p\n", &x);
printf("Isi px = %p\n", px);
printf("Isi x = %d\n", x);
printf("Nilai yang ditunjuk oleh px = %d\n", *px);
printf("Nilai y = %d\n", y);
}

Output Program:

Analisis Program:

Dalam program diatas tidak ada kesalahan pada syntax. Menggunakan file
header #include <stdio.h>untuk mendeklarasikan penginputan data secara
manual atau sistematis menggunakan “printf”. Menggunakan pointer untuk
membaca suatu alamat yang sudah ditentukan dalam syntax. Mengaplikasikan
penggunaan pointer untuk mempersingkat script dan mempermudah penulisan
script. Nilai dari semua variabel adalah sama, karena nilai awal x=87, yang
kemudian terdapat proses penyamaan alamat px=&x, dan selanjutnya nilai dari
alamat px, yaitu *px disamakan dengan y, keluaran akan berupa alamat dan nilai
asli dari alamat tersebut.

Percobaan 3
Algoritma dan Struktur Data
Nama Program :Program mengakses dan mengubah isi suatu variabel pointer.
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <stdio.h>

main()
{
float d = 54.5f, *pd;

printf("Isi d mula-mula = %g\n", d);

pd = &d;
*pd +=10;

printf("Isi d sekarang =%g\n", d);


}

Output Program:

Analisis Program:
Tidak ada kesalahan yang terdapat pada syntax tersebut. Program diatas digunakan untuk
memindah data, yaitu data yang mulanya ada pada d akan dipindah pada pd melalui alamat
dan kemudian akan diproses dengan *pd yang berarti nilai dari d, ditambahkan 10. Karena
alamat keduanya sama maka hasil dari d akan sama dengan *pd. Keluaran akan berupa nilai
awal d dan nilai akhir yang telah ditambahkan 10.

Percobaan 4
Algoritma dan Struktur Data
Nama Program :Penggunaan pointer untuk bilangan fibonacci.
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <stdio.h>
#include <stdlib.h>
#define MAX 10

int *fibo;
void main ()
{
int i;

fibo = (int *) malloc(MAX * sizeof(int));


*(fibo+1)= 1;
*(fibo+2)= 1;

for (i=3;i<=MAX;i++)
*(fibo+i)=(*(fibo+i-2)+*(fibo+i-1));

printf("%d BilanganFibonaciPertamaadalah : \n", MAX);


for (i=1;i<MAX;i++)
printf("%d-", *(fibo+i));
}

Script program yang benar:


#include <stdio.h>

#include <stdlib.h>

#define MAX 10

int *fibo;

int main()

int i;

fibo = (int *) malloc(MAX * sizeof(int));

*(fibo + 1) = 1;

*(fibo + 2) = 1;

for (i=3;i<=MAX;i++)

*(fibo + i)= (*(fibo + i - 2) + *(fibo + i - 1));

printf("%d Bilangan Fibonaci Pertama adalah : \n",MAX);

for (i=1;i<MAX;i++)

printf("%d-",*(fibo+i));
}

Output Program:

Analisis Program:

Program diatas memiliki beberapa kesalahan, yaitu penggunaan void yang


seharusnya menggunakan int. penggunaan rumus yang kurang tepat. Hampir
sama dengan percobaan 1, namun dalam percobaan ini , menggunakan pointer
dalam proses execute program tersebut. Penggunaan pointer tersebut memberikan
variasi terhadap penulisan script untuk menghasilkan sebuah program.
Penggunaan sizeof dan malloc dalam script ini yang memiliki definisi fungsi
tersendiri.

Percobaan 5
Algoritma dan Struktur Data
Nama Program :Penggunaan struktur pada konversi koordinat polar ke koordinat
catersian.
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <stdio.h>
#include <math.h>

struct polar {
double r;
double alpha;
};
structkartesian {
double x;
double y;
};

void main ()
{
struct polar pl;
structkartesian kl;

printf("Masukkannilai r untukkoordinat polar: ");


scanf("%lf",&pl.r);

printf("Masukkannilai alpha untukkoordinat polar: ");


scanf("%lf",&pl.alpha);

kl.x=pl.r * cos(pl.alpha);
kl.y=pl.r * sin(pl.alpha);

printf(
"Nilaikoordinatkartesianuntukkoordinat polar r= %2.2lf alpha=
%2.2lf adalah: \n", pl.r,pl.alpha);
printf("x= %2.2lf y= %2.2lf", kl.x,kl.y);
}

Script program yang benar:


#include <stdio.h>

#include <math.h>

struct polar {

double r;

double alpha;

};

struct kartesian {

double x;

double y;

};
int main()

struct polar pl;

struct kartesian kl;

printf("Masukkan nilai r untuk koordinat polar : ");

scanf("%lf",&pl.r);

printf("Masukkan nilai alpha untuk koordinat polar : ");

scanf("%lf",&pl.alpha);

kl.x = pl.r * cos(pl.alpha);

kl.y = pl.r * sin(pl.alpha);

printf(

"Nilai koordinat kartesian untuk koordinat polar r= %2.2lf alpha= %2.2lf


adalah:\n",pl.r,pl.alpha);

printf("x =%2.2lf y = %2.lf", kl.x,kl.y);

Output Program:

Analisis Program:

Program diatas memiliki kesalahan dalam penulisan syntax. Yang pertama, tentang penulisan
fungsi utama yang seharusnya menggunakan int bukan void. Penulisan syntax yang perlu
diperhatikan. Untuk baris 28-29 nanti ada kesalahan pada syntax yang pertama. Dan
seharusnya tidak menggunakan enter saat penulisan rumus.Kesalahan yang paling fatal
terletak pada penulisan pada baris 28-29.Seharusnya tidak di enter, hal tersebut
menimbulkan error pada script sehingga tidak bisa di excute. Penggunaan file header math.h
untuk pengoperasian matematika. Program diatas menggunakan 2 struck yaitu polar dan
kartesian dengan masing-masing memiliki 2 variabel bertipe data double. Inputan akan
dimasukkan pada isi dari struck polar yaitu r dan alpha. Dan hasil perhitungan dari inputan
akan disimpan pada struck kartesian yaitu x dan y, hasil berupa isi dari polar dan kartesian
dengan 2 angka dibelakang koma.

Percobaan 6
Algoritma dan Struktur Data
Nama Program :Program struktur dalam array.
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <stdio.h>
#include <string.h>

structdtnilai
{
charnrp[10];
charnama[20];
doublenilai;
};

structdtnilai data [10];


int j=0;

voidtambah_data()
{
charjawab[2];
while(1)
{
fflush (stdin);
printf("NRP : "); scanf ("%s",&data[j].nrp);
printf("Nama :"); scanf("%s",&data[j].nama);
printf("Nilai Test :");scanf("%lf",&data[j].nilai);
printf("Ada data lagi (y/t):"); scanf("%s",&jawab);

if ((strcmp(jawab,"Y")==0)|| (strcmp(jawab,"y")==0))
{
j++;continue;
}
else if ((strcmp(jawab, "T")==0||(strcmp(jawab,"t")==0))
)break;
}
}
voidtampil()

{
int i;
printf("Data Mahasiswa yang telahdiinputkan :\n");
printf("NRP\tNama\tNilai\n");

for (i=0;i<=j;i++)
{

printf("%s\t%s\t%6.2f\n",data[i].nrp,data[i].nama,data[i]);
}
}
voidmain()
{
tambah_data();
tampil();
}

Script program yang benar:


#include <stdio.h>
#include <string.h>

structdtnilai
{
charnrp[10];
charnama[20];
doublenilai;
};

structdtnilai data [10];


int j=0;
voidtambah_data()
{
charjawab[2];
while(1)
{
fflush (stdin);
printf("NRP : "); scanf ("%s",&data[j].nrp);
printf("Nama :"); scanf("%s",&data[j].nama);
printf("Nilai Test :");scanf("%lf",&data[j].nilai);
printf("Ada data lagi (y/t):"); scanf("%s",&jawab);

if ((strcmp(jawab,"Y")==0)|| (strcmp(jawab,"y")==0))
{
j++;continue;
}
else if ((strcmp(jawab, "T")==0||(strcmp(jawab,"t")==0))
)break;
}
}
voidtampil()
{
int i;
printf("Data Mahasiswa yang telahdiinputkan :\n");
printf("NRP\tNama\tNilai\n");

for (i=0;i<=j;i++)
{

printf("%s\t%s\t%6.2f\n",data[i].nrp,data[i].nama,data[i]);
}
}
int
main()
{
tambah_data();
tampil();
}
Output Program:

Analisis Program:

Program diatas hanya memiliki penulisan syntax yaitu penulisan void main. Maka untuk
pembenaran dan proses kirim segera dimulai. Program diatas menggunakan struct , kumpulan
fungsi. Menggunakan perulangan while untuk menginputkan kembali data yang dinginkan.
Menggunakan break agar program tidak langsung berhenti. Menggunakan file header string
untuk penggunaan strcmp pada syntax. Perulangan while 1x untuk menginputkan data,
anatara lain nrp, nama, dan juga nilai. Kemudian akan muncul pertanyaan untuk
mengumpulkan nilai kembali dengan pilihan y atau t, apabila y yang berarti iya, maka proses
input data akan dilakukan kembali, apabila t atau tidak, maka akan ke proses berikutnya yaitu
output, dimana semua data yang diunputkan akan di outputkan berupa data nrp, nama, dan
nilai.
Tugas Rumah 1
Algoritma dan Struktur Data
Nama Program :Program Kasir Warung.
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <iostream.h>
#include <string.h>
#include <conio.h>
using namespace std;

structdata_warung{
stringkode_warung;
stringmakan_warung;
stringminum_warung;
intharga;
};

int main()
{
stringnama_penjaga;
data_warungwarung;
string kode_warung[8]={"1", "2", "3", "4","5","6","7","8"};
string makan_warung[4]={"AyamKrispi+Nasi", "AyamBakar+Nasi",
"AyamGoreng+Nasi", "AyamRica+Nasi"};
string minum_warung[4]={"EsTeh", "EsJeruk", "EsSusu",
"EsCoklat"};
intjml_uang, kembali, total=0,tut=0,harga, tot=0;
floatuang;
charyesno;

cout<< "======================================="<<endl;
cout<< " SelamatDatang di WaroengFaDi "<<endl;
cout<< " Jalan Kita MasihPanjang No.01 Malang"<<endl;
cout<< "======================================="<<endl;
cout<< "List Menu : "<<endl;
cout<< "Kode Menu MakananHarga "<<endl;
cout<< " 1 AyamKrispi+NasiRp. 10.000,00"<<endl;
cout<< " 2 AyamBakar+NasiRp. 10.000,00"<<endl;
cout<< " 3 AyamGoreng+NasiRp. 10.000,00"<<endl;
cout<< " 4 AyamRica+NasiRp. 10.000,00"<<endl;
cout<< "---------------------------------------"<<endl;
cout<< "Kode Menu Minuman "<<endl;
cout<< " 5 EsTehRp. 3.000,00"<<endl;
cout<< " 6 EsJerukRp. 5.000,00"<<endl;
cout<< " 7 EsSusuRp. 5.000,00"<<endl;
cout<< " 8 EsCoklatRp. 7.000,00"<<endl;
cout<< "---------------------------------------"<<endl;
pesan:
cout<< "Kode Menu : "; cin>>warung.kode_warung;
if (warung.kode_warung == "1"){
cout<< "Makanan : "<<makan_warung[0]<<endl;
cout<< "Rp. 10.000";
harga = 10000;
tut=tut+harga;
}
else if (warung.kode_warung == "2"){
cout<< "Makanan : "<<makan_warung[1]<<endl;
cout<< "Rp. 10.000";
harga = 10000;
tut=tut+harga;
}
else if (warung.kode_warung == "3"){
cout<< "Makanan : "<<makan_warung[2]<<endl;
cout<< "Rp. 10.000";
harga = 10000;
tut=tut+harga;
}
else if (warung.kode_warung == "4"){
cout<< "Makanan : "<<makan_warung[3]<<endl;
cout<< "Rp. 10.000";
harga = 10000;
tut=tut+harga;
}
else if (warung.kode_warung == "5"){
cout<< "Minuman : "<<minum_warung[4]<<endl;
cout<< "Rp. 3.000";
harga = 3000;

tot=tot+harga;
}
else if (warung.kode_warung == "6"){
cout<< "Minuman : "<<minum_warung[5]<<endl;
cout<< "Rp. 5.000";
harga = 5000;
tot=tot+harga;
}
else if (warung.kode_warung == "7"){
cout<< "Minuman : "<<minum_warung[6]<<endl;
cout<< "Rp. 5.000";
harga = 5000;
tot=tot+harga;
}
else if (warung.kode_warung == "8"){
cout<< "Minuman : "<<minum_warung[7]<<endl;
cout<< "Rp. 7.000";
harga = 7000;
tot=tot+harga;
}
else {
cout<< "Maafandasalahmemasukkankode Menu";
}
cout<<endl;
cout<<"Pesanlainnya? y/n : ";
cin>>yesno;
if(yesno=='y' || yesno=='Y'){

gotopesan;
}
else{
system("cls");
gotoisie;
}
getch();
isie:
total=tut+tot;
cout<< "======================================="<<endl;
cout<< " SelamatDatang di WaroengFaDi "<<endl;cout<< " Jalan
Kita MasihPanjang No.01 Malang"<<endl;
cout<< "======================================="<<endl;
cout<<endl;
cout<< "HargaMakanan : Rp. "<<tut<<",00"<<endl;
cout<< "HargaMinuman : Rp. "<<tot<<",00"<<endl;
cout<< "Total : Rp. "<<total<<",00"<<endl;
cout<< "Bayar : Rp. "; cin>>jml_uang;
system("cls");
total = total + uang;
kembali = jml_uang - total;
time_t now = time(0);
char* dt = ctime(&now);

cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<< " -WAROENG FADI- "<<endl;
cout<< " -Jalan Kita MasihPanjang No.01 Malang- "<<endl;
cout<< " -Telp 0341 ******- "<<endl;
cout<< "------------------------------------------------------"<<endl;
cout<<dt<<endl;
cout<< "Total : Rp. "<<total<<",00"<<endl;
cout<< "Bayar : Rp. "<<jml_uang<<",00"<<endl;
cout<< "Kembali : Rp. "<<kembali<<",00"<<endl;
cout<< "======================================================"<<endl;

nama_penjaga = "Amrizal";

cout<< "Operator : "<<nama_penjaga<<endl;


cout<< " TERIMAKASIH TELAH BERKUNJUNG "<<endl;
cout<< " SELAMAT MENIKMATI MAKANAN DAN MINUMAN ";

return 0;

}
Output Program:

Gambar Menu Makanan-Minuman


Gambar Pemesanan Makanan-Minuman
Gambar Total Harga Makanan-Minuman
Gambar Pembayaran Makanan-Minuman
Tampilan Struk Pembayaran
Analisis Program:

Program di atas digunakan untuk pemesanan makanan, dan pembayaran, serta menampilkan
struk pembayaran. Ketika dijalankan program di atas akan menampilkan menu makan
terlebih dahulu yang disimpan dalam struck bertipe data string. Kemudian memasukkan
pilihan makanan berdasarkan kode yang telah disimpan dalam struck, pilih makanan atau
minuman sesuai urutan nomor. Setelah itu akan muncul perulangan untuk memesan kembali
atau tidak, apabila mengetikkan ‘y’ atau ‘Y’ maka akan menambah pesanan, namun apabila
memilih ‘n’ atau ‘N’ maka akan masuk pada penjumlahan pesanan sehingga akan muncul
total harga, dan menginputkan pembayaran. Kemudian bila proses ini telah selesai, akan
muncul struk pembayaran berupa total harga, uang yang dibayarkan, serta kembalian.

Dalam program diatas menggunakan struck dengan nama data_warung dengan isi di
dalamnya berupa string kode_warung, string makan_warung, string minum_warung, yang
masing-masing dari isi struck itu di isikan dalam program, dan akan dipanggil ketika
pemesanan, dimana ketika mengetikkan kode makanan akan muncul nama makanan itu
sesuai dengan urutan index dalam makan_warung, begitu juga pemesanan minuman.
Menggunakan fungsi if elseif, untuk memilih makanan dengan kondisi tersebut, serta
menggunakan penjumlahan untuk menambahkan harga setiap pembelian makanan dengan
variabel tut, dimana tut=tut+harga, dan untuk minuman menggunakan variabel tot yaitu
tot=tot+harga, yang nantinya pada form pembayaran akan muncul total harga untuk makanan
dan minuman, yang dideklarasikan dari jumlah tut dan tot, pembayaran menggunakan
variabel jml_uang, yang selanjutnya untuk mencari kembalian adalah dengan mengurangkan
antara variabel jml_uang dengan total, dan disimpan dalam kembali, yang akan dipanggil
dalam struk pembayaran.
KESIMPULAN

1. Struktur data adalah sebuah skema organisasi yang diterapkan pada data sehingga
datadapat diinterprestasikan dan sehingga operasi-operasi spesifik dapat dilaksanakan pada
data tersebut.
2. Apabila kita membuat program dengan data yang sudah kita ketahui batasnya, maka
kita bisa menggunakan array (tipe data statis), namun apabila data kita belum kita ketahui
batasnya,kita bisa menggunakan pointer (tipe data dinamis).
3. Untuk sekumpulan data dengan tipe data yang berlainan, namun merupakan satu-
kesatuan,kita dapat menggunakan struktur untuk merepresentasikannya.
4. Keunggulan array adalah sebagai berikut:
Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara
langsung tanpa melalui elemen-elemen lain. Jika berada di suatu lokasi elemen, maka sangat
mudah menelusuri ke elemen-elemen tetangga, baik elemen pendahulu atau elemen penerus.
Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka
penggunaan penyimpanannya sangat efisien
5. Kelemahan array:
Array harus bertipe 29tatic29y. Kita tidak dapat mempunyai array dimana satu elemen adalah
karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain . Kebanyakan bahasa
pemrograman mengimplementasikan array 29tatic yang sulit diubah ukurannya di waktu
eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis.
- Tidak efisien dalam penggunaan memori.
- Menyiakan banyak waktu komputasi.
- Pada suatu aplikasi, representasi statis tidak dimungkinkan
6. Saat membuat struktur data seperti daftar, deret dan percabangan, perlu memiliki
pointer untuk membantu mengelola bagaimana struktur dapat diimplementasikan dan
dikendalikan.
7. Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah
variabel (data type atau object dari class), menyimpan alamat dari sebuah fungsi (function
pointer) dan dapat berfungsi untuk mengirimkan “Parameter yang berupa variabel” ke dalam
fungsi, artinya nilai variabel bisa diubah di dalam fungsi serta dapat membuat variabel
dinamis.
8. Ada 2 operator pointer yang dikenal secara luas, yaitu operator & dan operator *.
DAFTAR RUJUKAN

1. Tim Asisten Dosen. 2017. Modul 1 Struct, Array, dan Pointer. Malang:
Unversitas Negeri Malang.
2. https://kajianinformasi.blogspot.co.id/2013/12/keunggulan-dan-kelemahan-
array.html
3. https://muhammadansharr.blogspot.co.id/2015/05/penjelasan-kegunaan-pointer-c-
lengkap.html

Anda mungkin juga menyukai