201 Buatlahprogram barudengancarafile–new–sourceataugunakan CTRL–Nkemudianketiksourcecodeprogramsepertidibawahini: #include<iostream> #include<conio.h> usingnamespacestd; main() { charc[4]; inti; for(i=0;i<4;++i) { printf("Addressofc[%d]=%x\n",i,&c[i]); } getch(); }
202 Gambar5.14Pointerdalamarray Setelahprogramdiperbaikidandicompile,makatampilanhasilrunning akantampaksepertigambardibawahini:
203 Gambar5.15hasilrunningPointerdalamarray
204 5.6KESIMPULANDANSARAN a.Kesimpulan Pointermerupakantipedatayangmenunjukanposisipenyimpanan datadalamsebuahmemory.Pointerjugamerupakanpenunjukdalam komputer,yangmenunjukantataletakfileyangadadalammemory.Suatu pointerdapatmenuntukanalamatdarisuatuvariabellaindandapat mengaksesnilaiyangadadalamvariabelberpointer.Denganpointerkitadi mungkinkanuntukmenunjuksuatumemori,mendapatkanisidarimemori danmengubahisidarimemoriyangditunjuk.Pointerdapatdideklarasikan sepertivariabelbiasadenganmenambahkantanda*untukmengawalinama darivariabel. b.saran Laporan inimasih terdapatbanyak kesalahan karena terbatasnya pengetahuandankurangnyareferensimataeripadalaporanini,diharapkan pembacadapatmemberikansaransebagaimotivasipembuatanlaporan selanjutnya.
205
206
207 LAPORANPRAKTIKUM
208 ALGORITMADANSTRUKTURDATA NAMA :FARIDARUSTAM NPM :07352211047 FAKULTASTEKNIK PRODITEKNIKINFORMATIKA UNIVERSITASKHAIRUN TERNATE2022 BABVI
209 STACK(TUMPUKAN) 6.1PENDAHULUAN Penggunaan stack atau tumpukan merupakan salah satu komponenpentinguntukmenjalankanprosespenanganansuatudatadi sampinghallainsepertiQueue(antrian)linkedlistdantree.stackadalah suatukoleksiataukumpulanitem datayangterorganisasidalam bentuk urutanunsur,dimanasaatoperasipenambahandanpenghapusandatanya selaludilakukanpadabagianakhirdata,yangdisebutdengantopofstack. stackmerupakansuatukoleksidatadalam komputasi,untukmeletakkan sebuahelemenpadabagianatasdaristack,makakitamelakukanpush,dan untukmemindahkandaritempatyangdiatasdaristack.makakitalakukan push,danuntukmemindahkandaritempatyangdiatastersebut,kitalakukan pop. Karakteristikpentingstackadalahbersifat(ifoclastinfirsout)artinyadata yang terakhirmasuk merupakan data yang keluarterlebih dahulu.kita asumsikan saja misalnya memasukkan data alfabetsecara urutdaria sampaie(a-b-c-d-e).kemudianinginmengeluarkanalfabetb,makayang harusdilakukanadalahmengeluarkanalfabetC,d,danC secaraberurut sehinggaakhirnyadapat mengaksesb.stackjugabisadigunakandalam mengontroloperasidalam sebuahoperasi.selainitustackjugamerupakan
210 algoritmayangbaikyangdapatdigunakanuntukmembuatphaser(membaca urutanoperasidarisebuahpersamaanmatematika).padapenghitungan aritmatika,notasiintinyaadalahnotasiyangmenampilkanoperatorditengah operand.sedangkannotasipositiuc'xadalahoperasiyangmenempatkan operatorsetelahduaoperand.Stackjugamerupakantipedataabstrakyang umumdigunakanpadasebuahpemogramankomputer. Program stack, untuk mengimplementasikan stack di C++ kita membutuhkantigamethodataufungsipush():untukmenambahkandatake tumpukan,pop():untukmengeluarkandatadaritumpukandanprintstack() untukmenampilkandatayangadaditumpukan.selainuntuktigafungsi tersebut,kitaakanmembuatduafungsiopsionaluntukmengecekapakah tumpukankosong Empty()dantumpukanpenuhispull().untukuntuk menyimpandatakitabisamenggunakanemptyarraydenganmaksimum array yang akan yang nantiakan kita definisikan sebagaimaksimum tumpukan.Agardatatumpukannyaterstrukturkitabisamenggunakanstruch sehinggalebihmudahmengaksesdatatopdanarraydatanyasendiriseperti sebuahobject,karenainiadalahprogram konsolemakatentukitaakan membuatfungsimain(). 6.1TUJUANPRAKTIKUM a.MemahamiKonsepStack
211 b.MempraktekkancaraPenggunaanSTACKdalamC++ 6.2LANGKAH-LANGKAHPRAKTIKUM a.BukalahaplikasiDevC++melaluistartmenu Gambar6.1TampilanaplikasiDevC++ b.Tampilanawaltampaksepertigambardibawahini: Gambar6.2TampilanawalDevC++
212 c.Buatlahprogram barudengancarafile-new-sourceataugunakanCtrl–N atausepertipadagambardibawahini: Gambar6.3Membuatprojekbaru d.Ketiksourcecodeprogramnyasepertigambardibawahini
213 Gambar6.4StrukturcodeC++
214 Setelahmenulissourcenya,tekancompileandrunsepertigambardibawah ini: Gambar6.6Prosescompile e.Akanmunculdialoguntukmenyimpanprogram.Berikannamasesuai dengankeinginankalian.Missal“VariabeldanKonstanta”kemudiansave denganekstensi“Cpp”. Gambar6.4StrukturcodeC++ Gambar6.5Proses compile
215 Gambar6.6ProsesPenyimpanan Setelahkliksave,akanmunculjendelayangmenampakkanhasilprogram menghitungluas,keliling,danjari–jarilingkaranyangtelahdibuat.
216 f.Andatelahberhasilmembuatprogram menghitungluas,keliling,danjari– jarilingkarandenganbahasapemrogramanC++menggunakanDevC++. 6.3LATIHANKEGIATANPRAKTIKUM Buatlahprogram barudengancarafile-new-sourceataugunakanCTRL+N kemudianketiksourceataugunakanCTRL+N,kemudianketiksourcecode sepertidibawahini: /*Programofstackusingarray*/ #include<stdio.h> #include<stdlib.h> #include<conio.h> #defineMAX5 inttop=-1; intstack_arr[MAX]; Gambar6.7Hasilrunning
217 voidpush(); voidpop(); voiddisplay(); intmain() { intchoice; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enteryourchoice:"); scanf("%d",&choice); switch(choice) {
218 case1: push(); break; case2: pop(); break; case3: display(); break; case4: exit(1); default: printf("\nPILIHANTIDAKTERSEDIA\n"); } } getch();
219 } voidpush() { intpushed_item; if(top==(MAX-1)) printf("StackOverflow\n"); else { printf("\nEntertheitemtobepushedinstack:"); scanf("%d",&pushed_item); top=top+1; stack_arr[top]=pushed_item; } } voidpop() {
220 if(top==-1) printf("StackUnderflow\n"); else{ printf("Poppedelementis:%d\n",stack_arr[top]); top=top-1; } } voiddisplay() { inti; if(top==-1) printf("Stackisempty\n"); else{ printf("\nStackelements:\n"); for(i=top;i>0;i--) printf("%d\n",stack_arr[i]);
221 } } Compiledanperbaikisampaibenar. Gambar6.8Sourcecodelatihan
222 latihan1 6.4STUDIKASUS BerikutFlowchart“Stack”: Gambar6.9sourcecodelatihan1 Gambar6.10tampilanhasilrunning
223 Flowchart6.1stack Penjelasan: Flowchartdiatas menjelaskan tentang stack atau tumpukanarray yangdimanadiawalidengansimbolterminator.Setelahitu mendeklarasikanNODE,TOP:NULLVoidPush,VoidPop,voiddisplay,int choice=0,kemudian masukkekondisiwhile(1)danprint1.Push,2.Pop,
224 3.Display,4.Quit.Masukkan pilihan 1,2,3 atau 4.Akhiridengan simbol terminator. BerikutSourceCode“Stack”: #include<stdio.h> #include<stdlib.h> #include<conio.h> typedefstructnode { intdata; structnode*link; } NODE; NODE*top=NULL; Voidpush(); voidpop();
225 voiddisplay(); intmain() { intchoice=0; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enteryourchoice:"); scanf("%d",&choice); switch(choice) { case1: push();
226 break; case2: pop(); break; case3: display(); break; case4: exit(0); default: printf("\nPILIHANTIDAKTERSEDIA\n"); } } getch(); } voidpush()
227 { NODE*temp; intinfo=0; printf("Enterdatatobepushed(0-9999):"); scanf("%d",&info); temp=(NODE*)malloc(sizeof(NODE)); if(temp==NULL) printf("\nMemoryAllocationFailed"); else { temp->data=info; temp->link=top; top=temp; printf("NodehasbeeninsertedatTop(Front)Successfully!!\n"); } }
228 voidpop() { NODE*tmp; if(top==NULL) printf("Stackisempty!!\n"); else { temp=top; printf("Poppeddata:%d\n",tmp->data); top=top->link; free(tmp); } } voiddisplay() { NODE*temp;
229 if(top==NULL) { printf("EmptyStack!!!\n"); } else { temp=top; printf("Stack:-\n"); while(temp!=NULL) { printf("\n____\n"); printf("|%4d|",temp->data); temp=temp->link;} } } Compiledanperbaikisampaibenar
230 Gambar6.11sourcecodestack
231 Gambar6.11sourcecodestack Gambar6.12sourcecodestack
232 Gambar6.12sourcecodestack Gambar6.13tampilanhasilrunningstack Gambar6.13tampilanhasilrunningstack
233 6.5KESIMPULANDANSARAN A)Kesimpulan Penggunaanstackatautumpukanmerupakansalahsatu komponen pentinguntukmenjalankanprosespenanganansuatudatadisamping hallainsepertiQueue(antrian)linkedlistdantree.stackadalahsuatu koleksiataukumpulanitem datayangterorganisasidalam bentuk urutanunsur,dimanasaatoperasipenambahandanpenghapusan
234 datanyaselaludilakukanpadabagianakhirdata,yangdisebutdengan topofstack.stackmerupakansuatukoleksidatadalam komputasi, untukmeletakkansebuahelemenpadabagianatasdaristack,maka kitamelakukanpush,danuntukmemindahkandaritempatyangdi atasdaristack.makakitalakukanpush,danuntukmemindahkandari tempatyangdiatastersebut,kitalakukanpop. Karakteristikpentingstackadalahbersifat(ifoclastinfirsout) artinyadatayangterakhirmasukmerupakandatayangkeluarterlebih dahulu.kita asumsikan saja misalnya memasukkan data alfabet secaraurutdariasampaie(a-b-c-d-e).kemudianinginmengeluarkan alfabetb,makayangharusdilakukanadalahmengeluarkanalfabetC, d,danCsecaraberurutsehinggaakhirnyadapatmengaksesb.stack jugabisadigunakandalammengontroloperasidalamsebuahoperasi. selainitustackjugamerupakanalgoritmayangbaikyangdapat digunakanuntukmembuatphaser(membacaurutanoperasidari sebuah persamaan matematika).pada penghitungan aritmatika, notasiintinyaadalahnotasiyangmenampilkanoperatorditengah operand. sedangkan notasi positiuc'x adalah operasi yang menempatkanoperatorsetelahdua operand.Stackjugamerupakan tipedataabstrakyangumum digunakanpadasebuahpemograman komputer.
235 Program stack,untukmengimplementasikan stackdiC++ kita membutuhkantigamethodataufungsipush():untukmenambahkan dataketumpukan,pop():untukmengeluarkandatadaritumpukandan printstack()untukmenampilkandatayangadaditumpukan.selain untuktigafungsitersebut,kitaakanmembuatduafungsiopsional untukmengecekapakahtumpukankosongEmpty()dantumpukan penuhispull().untukuntukmenyimpandatakitabisamenggunakan emptyarraydenganmaksimum arrayyangakanyangnantiakankita definisikansebagaimaksimum tumpukan.Agardatatumpukannya terstrukturkita bisa menggunakan struch sehingga lebih mudah mengaksesdatatopdanarraydatanyasendirisepertisebuahobject, karenainiadalahprogram konsolemakatentukitaakanmembuat fungsimain(). b).saran. Laporan inimasih terdapatbanyak kesalahan karena terbatasnya pengetahuan dan kurangnya referensi mataeri pada laporan ini, diharapkan pembaca dapat memberikan saran sebagai motivasi pembuatanlaporanselanjutnya.
236
237
238 LAPORANPRAKTIKUM ALGORITMADANSTRUKTURDATA NAMA :FARIDARUSTAM NPM :07352211047 FAKULTASTEKNIK PRODITEKNIKINFORMATIKA UNIVERSITASKHAIRUN TERNATE2022
239 BABVII QUEUE 7.1PENDAHULUAN Queueatauantrianmerupakankumpulanelemenyangpengisiandan penghapusanelemenyangdilakukandarisisiataugerbangyang berbedabeda.Pengisiandilakukandarigerbangbelakangdan penghapusangerbangdepan.Halinimenunjukanbahwauntukqueue mempunyaiduagerbangyaitugerbangdepandanbelakang.Dengan demikiandapatdlihatbahwaqueuemempunyaisifatFIFO(Fristin, Fristout),yaituelemenyangpertamamasukakankeluarpertamajuga. Represnatsiqueuedapatdeklarasidenganmenggunakanarrayatau linkedlistresresntasiqueuedenganarrayataulinkedlist. Representasiqueue dengan arrayada penunjuk depan dan belakangyangdigunakanuntukmenunjukelemenposisidepandan elemenposisibelakang.sehinggadapatdiketahuiqueuekosongatau tidak.Queuedapatditambahselamabelakangtidaksamadenganisi danmaksimum array.Operasipenyisipanelemenqueuedigunakan untukmengambilataumenghapuselemendansuatuqueue.Operasi penghapusanelemenpadacircularyangdihapusadalahselaluyang
240 beradadidepansehinggapenunjukdepanakannaiksatu(depan+1) jikadepanlebihkecildarimaksimum elemenarray.tetapidpenadi aturmenjadisatu(depan=1)jikadepansamadenganmaksimum elemenarray. 7.2TUJUANPRAKTIKUM a)Praktikanmengenalsalahsatulagitipekhususdarilinklistyaitu queue/antrianbesertaseluruhoperasiyangadapadanya. b)Praktikandiharapkandapatmenerapkanteorimengenaisinglelink listdidalampembuatanprogramqueue. c)Praktikandalammenjelaskanjenis-jenisqueue. 7.3 7.3LANGKAH-LANGKAHPRAKTIKUM g.BukalahaplikasiDevC++melaluistartmenu Gambar7.1TampilanaplikasiDevC++ h.Tampilanawaltampaksepertigambardibawahini:
241 Gambar7.2TampilanawalDevC++ i.Buatlahprogram barudengancarafile-new-sourceataugunakanCtrl–N atausepertipadagambardibawahini:
242 Gambar7.3Membuatprojekbaru j.Ketiksourcecodeprogramnyasepertigambardibawahini:
243 Gambar7.4struktrodeC++
244 Gambar7.5strukturcodec++ e.Setelahmenulissourcenya,tekancompileandrunsepertigambardi bawahini: Gambar6.6strukturcodec++ .Akan munculdialog untuk menyimpan program.Berikan nama sesuai dengankeinginankalian.Missal“VariabeldanKonstanta”kemudiansave Gambar7.6strukturcode c++
245 denganekstensi“Cpp”. Gambar7.7ProsesPenyimpanan Setelahkliksave,akanmunculjendelayangmenampakkanhasilprogram menghitungluas,keliling,danjari–jarilingkaranyangtelahdibuat.
246 Andatelahberhasilmembuatprogrammenghitungluas,keliling,danjari– Gambar7.8Hasilrunning
247 jarilingkarandenganbahasapemrogramanC++menggunakanDevC++. 7.4LatihanKegiatanPraktikum a.Latihan1 Buatlahprogram barudengancaraklikCtrl–N kemudianketik sourcecodeprogramnyasepertidibawahini: //*Programofqueueusingarray*/ #include<stdio.h> #include<stdlib.h> #include<conio.h> #defineMAX5 intrear=-1; intfront=-1; intqueue_arr[MAX]; voidenqueue(); voiddequeue(); voiddisplay();
248 main() { intchoice; while(1) { printf("1.Insert\n"); printf("2.Delete\n"); printf("3.Display\n"); printf("4.Quit\n"); printf("Enteryourchoice:"); scanf("%d",&choice); //tujuanPraktikum: //1)MemahamiKonsepQueue //2)MempraktekkancaraPenggunaanQueuedalamC++ //5) switch(choice)
249 { case1: enqueue(); break; case2: dequeue(); break; case3: display(); break; case4: exit(1); default: printf("PILIHANTIDAKTERSEDIA\n"); } }
250 getch(); } voidenqueue() { intadded_item; if(rear==MAX-1) printf("QueueOverflow\n"); else { if(front==-1) front=0; printf("Inputtheelementforadding inqueue:"); scanf("%d",&added_item); rear=rear+1; queue_arr[rear]=added_item;