tugas praktikum 4 praktikum
TRANSCRIPT
-
8/18/2019 tugas praktikum 4 praktikum
1/20
BAB I
LANDASAN TEORI
1.1. Array
Array adalah tipe terstruktur yang terdiri dari sejumlah komponen yang memiliki
tipe yang sama. Array memiliki indeks yang digunakan untuk membedakan data dalam
array satu dan yang lainnya.
Array memiliki susunan tertentu, array yang paling sederhana adalah array 1
dimensi. Gabungan dari array 1 dimensi dengan array 1 dimensi menghasilkan array 2
dimensi. Gabungan dari array 1 dimensi dengan array 2 dimensi menghasilkan array 3
dimensi.
Didalam pembuatan laporan ini hanya memakai array 1 dimensi. Pendeklarasian
array dilakukan dengan cara sebagai berikut:
pemberian nilai pada array dilakukan dengan cara sebagai berikut:
1.2. Looping atau perulangan
ooping adalah sebuah program perulangan statement dengan jumlah tertentu jika
kondisi terpenuhi. Perulangan akan berhenti jika nilai yang dimasukan sudah tidak
memenuhi syarat yang diberikan.
1
//deklarasi array 1 dimensi
Tipe_data variable[panjang_array ];
//pemberian nilai array
Tipe_data variable[panjang_array ]=nilai;
-
8/18/2019 tugas praktikum 4 praktikum
2/20
!acam"macam looping pada # :
• $hile loop
%ynta& : $hile 'e&pression( statement
• do"$hile loop
%ynta& : do statement $hile 'condition()
%ecara *ungsional hampir sama dengan $hile loop, hanya saja condition dalam
do"$hile die+aluasi setelah eksekusi statement, dengan kata lain sedikitnya satu kali
eksekusi statement $alaupun kondisi tidak terpenuhi.
• *or loop
%ynta& : *or'initialiation)condition)increase( statement)
1.3. Queue
Antrian '-ueue( mempunyai prinsip /0 'irst /n irst 0ut( bah$a yang pertama
masuk yang pertama keluar. ueue memiliki kosep, data yang diinputkan akan
dimasukan kedalam tail, atau data paling belakang, dan head akan di akan dijumlahkan
untuk mengambil atau mengeluarkan data.
Adapun operasi didalam ueue sebagai berikut:
1. nueue !emasukkan data ke dalam antrian
n-ue
digunakan
untuk proses
pamasukan
data, dengan
cara
menambahkan
tail dengan satu.
ntuk
2
void enqueue(int x
!i" ((antrian#$%&' == )) (antrian#T&*+ ==
!
antrian#$%&' = 1;
antrian#T&*+ = 1;
,
else
!
antrian#T&*+ = antrian#T&*+ - 1;
,
antrian#data[antrian#T&*+] = x;
,
-
8/18/2019 tugas praktikum 4 praktikum
3/20
menambah panjang antrian, program akan menerima inputan user dan disimpan pada
array indeks ke tail.
2. Deueue !engeluarkan data terdepan dari antrian
De-ueue melakukan proses untuk menghilangkan indeks terdepan, sehingga
data terdepan seakan tidak ada, tapi sebenarnya datanya masih ada, tapi indeks head di
tambahkan satu sehingga ketika saat menampilkan data maka indeks terdepan sebelum
di de-ueuer tidak akan ditampilkan.
3. #lear !enghapus seluruh antrian
#lear atau create empty melakukan proses untuk membuat data kembali seperti
a$al dengan mengembalikan indeks head dan tail ke indeks ke 4.
5. /smpty !emeriksa apakah antrian kosong
/smpty
digunakan
untuk
3
void 'equeue(!
i" (q#.ead q#tail !
q#.ead = ;
q#tail = ;,
q#.ead = q#.ead - 1;
void 0reate%mpty(
!
antrian#$%&' = ;
antrian#T&*+ = ;
,
int *s%mpty(
!
i" ((antrian#$%&' antrian#T&*+ (antrian#$%&' ==
))
(antrian#T&*+ ==
return 1;
else
return ;
,
-
8/18/2019 tugas praktikum 4 praktikum
4/20
menyatakan apakah antrian masih kosong atau tidak. Dengan cara menentukan apakah
indek head lebih besar dari tail, atau apakah head sama dengan tail.
6. /sull !emeriksa apakah antrian penuh
/sull
digunakan
untuk
menyatakan
apakah antrian
sudah penuh
atau belum, dengan cara mengecek apakah tail sama dengan panjang maksimum
antrian.
4
int *s2ull(
!
i" (antrian#T&*+ == max
return 1;
else
return ;
,
-
8/18/2019 tugas praktikum 4 praktikum
5/20
BAB II
PEMBAASAN
2.1. !onto"
Progra#
Pada
program ini,
user akan
menginputkan
data satu per
satu, kemudian
setelah selesai
menginputkan
data ke dalam
-ueue , maka
program akan
menampilkan
semua isi
-ueue.
2.1.1. Sour$e
!o%e !onto"
Progra#
5
3in0lude 4stdio#.
3in0lude 4stdlib#.
3de"ine max 5
typede" stru0t
!
int tail6 .ead6 data[max];
,7ueue;
7ueue antri;
void 0reate_empty(
!
antri#.ead=;
antri#tail=;
,
void enque(int x
!
i"((antri#.ead==))(antri#tail==
!
antri#.ead=1;
antri#tail=1;
,
else
!
antri#tail--;
,
antri#data[antri#tail]=x;
,
void deque(
!
i"(antri#.eadantri#tail
!
antri#.ead=;
antri#tail=;
,
antri#.ead--;
,
int is%mpty(
!
i"((antri#.eadantri#tail(antri#.ead==))(antri#tail==
!
return 1;
,
else
!
return ;
,
,
int is2ull(
!
i"(antri#tail==max
!
return 1;
,
else
!
return ;
,
,
int main(
!
int *nput6lagi6alinan;
0reate_empty(;
lagi =1;
8.ile(lagi==1
!
i"((is%mpty(==1(is2ull(==
!
print"(9antrian tersedia:n9;
print"(9masukan data< 9;
s0an"(9d96)*nput;
enque(*nput;
print"(9tamba.kan datan9;
print"(91#ya6#tidakn9;
print"(9input pili.an< 9;
s0an"(9d96)lagi;
,
else i"(is2ull(==1
!
print"(9antrian penu.:n9;
lagi=;
,
,
8.ile(is%mpty(==
-
8/18/2019 tugas praktikum 4 praktikum
6/20
2.1.2. Pen&ela'an $onto"
#ontoh
program
tersebut adalah
penerapan
-ueue,
bagaimana
bilangan diantri. Didalam source code tersebut menggunakan *ungsi n-ue, De-ue,
/sull, /smpty, dan #reate mpty. Didalam *ungsi n-ue dalam program jika nilai
7ead dan 8ail bernilai 4, nilai 7ead dan 8ail akan diubah menjadi 1, untuk membulai
sebuah antrian.
9ika
tidak makaseperti
biasannya,
bah$a nilai
dari tail akan
di ingkremen,
untuk
menerima
6
!
print"(9d96antri#data[antri#.ead];
deque(;
,
return ;
,
void 0reate_empty(
!
antri#.ead=;
antri#tail=;
,
void enque(int x
!
i"((antri#.ead==))(antri#tail==
!
antri#.ead=1;
antri#tail=1;
, else !
antri#tail--;
, antri#data[antri#tail]=x;
,
-
8/18/2019 tugas praktikum 4 praktikum
7/20
inputan data kedalam antrian yang dimulai dari paling belakang. Didalam *ungsi
inputan user diambil dengan +ariable &. maka ketika user menginputkan, +ariable
didalam struck akan menyamakan nilai dengan +ariable &,
Pada
ungsi De-ue,
jika nilai head
lebih besar
dari tail maka
7ead dan tail
diberi nilai 4,
karena antrian
dinyatakan
sudah kosong jika nilai head lebih besar dari pada tail. Pada de-ue yang mengalami
ingkremen adalah head. ntuk menghilangkan data atau pengambilan data.
ungsi ismpty dan isull menyatakan syarat penuh dari -ueue dan syarat
kosong dari -ueue. %yarat penuh adalah saat tail mencapai nilai ma&, dan saat kosong
adalah saat nilai head lebih besar dari tail dan saat nilai head dan tail bernilai 4.
Didalam program akan melakukan perulangan selama nilai lagi sama dengan 1,
dengan menerima inputan user untuk menentukan ingin menambah data atau tidak.
Didalam perulang ini user akan diminta menginputkan data.
2.1.3. S$reen S"oot Progra# A
7
void deque(
!
i"(antri#.eadantri#tail
!
antri#.ead=;
antri#tail=;
,
antri#.ead--;
,
8.ile(lagi==1
!
i"((is%mpty(==1(is2ull(==
!
print"(9antrian tersedia:n9;
print"(9masukan data< 9;
-
8/18/2019 tugas praktikum 4 praktikum
8/20
(a#)ar 2.1 run $onto" progra#
2.2. Lati"an
Pada program ini, user akan menginputkan data satu per satu, kemudian setelah
selesai menginputkan data ke dalam -ueue , maka program akan menampilkan semua
isi -ueue. Dengan menambahkan *itur untuk mencari data pada antrian menggunakan
*ungsi, dan
Algoritma
pencarian.
2.2.1. Sour$e
!o%e
8
3in0lude 4stdio#.
3in0lude 4stdlib#.
3de"ine max 5
typede" stru0t
!
int tail6 .ead6 data[max];
,7ueue;
7ueue antri;
void 0reate_empty(
!
antri#.ead=;
antri#tail=;
,
void enque(int x
!
i"((antri#.ead==))(antri#tail==
!
antri#.ead=1;
antri#tail=1;
,
else
!
antri#tail--;
,
antri#data[antri#tail]=x;
,
-
8/18/2019 tugas praktikum 4 praktikum
9/20
9
void deque(
!
i"(antri#.eadantri#tail
!
antri#.ead=;
antri#tail=;
,
antri#.ead--;
,
int is%mpty(
!
i"((antri#.eadantri#tail(antri#.ead==))(antri#tail==
!
return 1;
,
else
!
return ;
,
,
int is2ull(
!
i"(antri#tail==max
!
return 1;
,
else
!
return ;
,
-
8/18/2019 tugas praktikum 4 praktikum
10/20
10
int 0ari(int x
!
int y;
"or(y=;y4antri#tail;y--
!
i"(x==antri#data[y]
!
print"(9data d ditemukan pada antrian ke> d96x6y;
,
,
,
int main(
!
int *nput6lagi6alinan;
0reate_empty(;
lagi =1;
8.ile(lagi==1
!
i"((is%mpty(==1(is2ull(==
!
print"(9antrian tersedia:n9;
print"(9masukan data< 9;
s0an"(9d96)*nput;
enque(*nput;
print"(9tamba.kan datan9;
print"(91#ya6#tidakn9;
print"(9input pili.an< 9;
s0an"(9d96)lagi;
,
-
8/18/2019 tugas praktikum 4 praktikum
11/20
2.2.2. Pen&ela'an Lati"an
%ama 7alnya seperti #ontoh program, namun didalam latihan program diminta
untuk menambahkan *ungsi pencarian data. Proses pencarian data adalah dengan
menggunakan nilai dari head kemudian dilakukan perulangan untuk mencari data
dengan mencocokan nilainya satu"satu dari nilai head sampai nilai tail.
2.2.3. S$reen
S"oot Lati"an
11
else i"(is2ull(==1
!
print"(9antrian penu.:n9;
lagi=;
,
,
8.ile(is%mpty(==
!
print"(9dt96antri#data[antri#.ead];
deque(;
,
print"(9masukan data yg akan di0ari< 9;
s0an"(9d96)alinan;
0ari(alinan;
return ;
,
int 0ari(int x
! int y;
"or(y=;y4antri#tail;y-- !
i"(x==antri#data[y] !
print"(9data d ditemukan pada antrian ke> d96x6y;
,
,
,
-
8/18/2019 tugas praktikum 4 praktikum
12/20
(a#)ar 2.2. Run Lati"an
BAB III
LAMPIRAN T*(AS
3.1 Tuga'
ealisasi ueue dalam kehidupan sehari"hari dan buat program sederhana untuk
merepresentasikannya. Program yang dibuat adalah program untuk melakukan antrian
pengambilan sembako, dengan menggunakan ringbu**er
12
-
8/18/2019 tugas praktikum 4 praktikum
13/20
3.1.1. Sour$e !o%e Tuga'
13
3in0lude 4stdio#.
3in0lude 4stdlib#.
int .ead=16tail=1;
void %nque(;
void 'eque(;
void tampil(;
void isi(;int is2ull(;
int is%mpty(;
typede" stru0t
!
int peng.asilan6kepemilikan6tandai;
0.ar nama[?5]6alamat[?5];
,sembako;
sembako antrian[1];
int main(
!
int x6mks6pili.an6lagi=16ulang=1;
print"(9tttt&ntrian @embakon9;
print"(9masukan jumla. maksimum antrian< 9;s0an"(9d96)mks;
menu<
print"(9menun9;print"(91#registrasi antriann9;
print"(9?#proses antrian terdepann9;print"(9A#tampilkan
antriann9;
print"(9pili.an< 9;s0an"(9d96)pili.an;
s8it0.(pili.an
!
0ase 1<
8.ile(lagi==1
!
i"(is2ull(mks==))is%mpty(==1
!
isi(;
%nque(;
print"(9tamba. lagi 1#ya/#tidakn9;
s0an"(9d96)lagi;
,
else
!
break;
,
, goto menu;
break;
0ase ?<
ulang=1;
i"(ulang==1
!
'eque(;
-
8/18/2019 tugas praktikum 4 praktikum
14/20
14
print"(9d96.ead;
print"(9prosese lagi 1#ya/#tidakn9;
s0an"(9d96)ulang;
,
else!
goto menu;
break;
,
0ase A<
i"(.ead==1))tail==1
!
print"(9data kosong9;
,
else
!
tampil(;
,
goto menu;
break;
,
,
void %nque(int mks
!
i"(.ead==1))tail==1
!
tail--;
,else i"(.ead4=tail
!
tail--;
,
,
-
8/18/2019 tugas praktikum 4 praktikum
15/20
15
void isi(
! ""lus.(stdin;
print"(9nama< 9;
gets(antrian[tail]#nama;
print"(9alamat< 9;
gets(antrian[tail]#alamat;
print"(9peng.asilan< 9;
s0an"(9d96)antrian[tail]#peng.asilan;
print"(9golongan< 9;
s0an"(9d96)antrian[tail]#kepemilikan;
,
int is%mpty(
!
i"(.eadtail
!
print"(9antrian kosong:n9;
.ead=1;
tail=1;
return ;
,
else
! return 1;
,
,
int is2ull(int mks
!
i"(tailmks
!
-
8/18/2019 tugas praktikum 4 praktikum
16/20
3.1.2. S$reen
'"oot progra#
Tuga'
;erikut adalah
tampilan dari
program:
(a#)ar 3.1.
ta#pilan
progra#
3.1.3.
Pen&ela'an
Progra#
Tuga'
16
return 1;
, else
!
return ;
,
,
void 'eque(
!
i"(is%mpty(==1))(.ead4tail
!
.ead--;
,
else
!
print"(9antrian kosong:n9;
,
,
void tampil(
!
int x6y;
x=.ead;
y=tail; "or(x;x4tail;x--
!
print"(9antrian ke>d < sn96x6antrian[x]#nama;
,
,
-
8/18/2019 tugas praktikum 4 praktikum
17/20
Pada progam antrian sembako, program pertama akan meminta inputan user
berupa banyaknya antrian yang akan disediakan.
-
8/18/2019 tugas praktikum 4 praktikum
18/20
masuk ke menu tampil jika nilai head dan tail bernilai 1 atau kosong. Didalam *ungsi
tampil dilakukan proses perulangan dengan menggunakan *or dan diulang sebanyak tail
dengan nilai a$al berupa head.
BAB I+
PEN*T*P
,.1 -e'i#pulan
Dapat disimpulkan dari tugas ini, -ueue merupakan proses pengantirian dimana
data pertama yang masuk adalah yang pertama keluar. ungsi digunakan agar program
lebih e*isien dan sedikit menggunakan memori.
,.2 Saran
%aran pada saat melakukan ring buu*er, pada saat penampilan data diharapkan
lebih teliti dengan nilai dari pada head agar tidak terjadi kesalahan dalam pengambilan
nilai a$al.
18
void tampil(
!
int x6y; x=.ead; y=tail;
"or(x;x4tail;x--
! print"(9antrian ke>d < sn96x6antrian[x]#nama;
,
,
-
8/18/2019 tugas praktikum 4 praktikum
19/20
DATAR P*STA-A
1. % ;0G1. ? Looping (Perulangan) Pada Bahasa C @. 21
!aret 241.http:BBkomanganombudiutama.blogspot.co.idB2412B45Binput"
program"include"main"int"abn.html2. AC/CA7.A=/=G.@ Pengertian Array, Cara Kerja Dan Contohnya@.
Diakses 21 maret 241.http:BBaiah.ilearning.meBprogrammingBpengertian"
array"cara"kerja"dan"contohnyaB
3. #0DP0GA! #PP.@ Memahami Struct pada Bahasa C @. 21 maret 241.
http:BBkodeprogramcpp.blogspot.co.idB2416B45Bmemahami"struct"pada"bahasa"
c.html
19
http://komanganombudiutama.blogspot.co.id/2012/04/input-program-include-main-int-abn.htmlhttp://komanganombudiutama.blogspot.co.id/2012/04/input-program-include-main-int-abn.htmlhttp://komanganombudiutama.blogspot.co.id/2012/04/input-program-include-main-int-abn.htmlhttp://komanganombudiutama.blogspot.co.id/2012/04/input-program-include-main-int-abn.html
-
8/18/2019 tugas praktikum 4 praktikum
20/20
20