0% menganggap dokumen ini bermanfaat (0 suara)
81 tayangan20 halaman

Hilih

Array adalah tumpukan variabel yang memiliki tipe data dan nama yang sama tetapi dibedakan oleh indeks. Array dapat didefinisikan untuk menyimpan banyak nilai dengan tipe yang sama dan diakses menggunakan indeks. Array dapat berdimensi tunggal atau multidimensi, dan dapat digunakan sebagai parameter fungsi.

Diunggah oleh

Adhan Hady
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
81 tayangan20 halaman

Hilih

Array adalah tumpukan variabel yang memiliki tipe data dan nama yang sama tetapi dibedakan oleh indeks. Array dapat didefinisikan untuk menyimpan banyak nilai dengan tipe yang sama dan diakses menggunakan indeks. Array dapat berdimensi tunggal atau multidimensi, dan dapat digunakan sebagai parameter fungsi.

Diunggah oleh

Adhan Hady
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 20

Pengertian Array

Array adalah tumpukan variabel yang sejenis dan memiliki nama yang sama. Konsep suatu array
menjadikan tumpukan variabel tersebut mampu menampung nilai yang berbeda asalkan tetap
dengan tipe yang sama dengan tipe array. Sintaks penulisan array adalah sebagai berikut:
1 tipe nama_array[elemen];
Tipe array merupakan tipe data tumpukan variabel tersebut, sedangkan nama_array adalah nama
tumpukan variabel. Untuk elemen atau indeks, merupakn pembeda yang membedakan tumpukan
variabel yang satu dengan yang lainnya dalam satu array, karena di awal sudah Mimin jelaskan
bahwa array memiliki nama dan jenis yang sama namun pembendanya terletak di indeks atau
elemen itu sendiri.

Pendeklarasian Array
Berikut mimin contohkan cara mendeklarasikan suatu array:
1 int tampungan[5];
Pada contoh diatas, Mimin membuat array dengan nama tampungan bertipe data integer dimana
array ini dapat menampung nilai sebanyak 5 buah. Masing-masing nilai yang dimasukkan akan
diberikan nomor elemen atau indeks dari elemen ‘0’ hingga ‘4’. Yang perlu kamu ingat bahwa,
penomoran elemen pada array dimulai dari angka ‘0’.

Pemberian Nilai Pada Array


Untuk memberikan nilai pada suatu aray, kamu dapat memasukkan nilai satu persatu pada
masing-masing elemen atau dengan memasukkan dengan cara bersamaan. Untuk memasukkan
satu-persatu pada masing-masing elemen kamu dapat lakukan dengan kode program sebagai
berikut:
1 #include <iostream>
2 using namespace std;
3
4 int main(){
5 int tampungan[5];
6 tampungan[0] = 4;
7 tampungan[1] = 3;
8 tampungan[2] = 7;
9 tampungan[3] = 8;
10 tampungan[4] = 9;
11 return 0;
12 }
Untuk memasukkan nilai secara serentak dapat kamu coba dengan kode di bawah ini:
1 #include <iostream>
2 using namespace std;
3
4 int main(){
5 int tampungan[5] = {4,3,7,8,9};
6 return 0;
7 }
Kedua contoh program diatas memiliki fungsi dan tujuan yang sama yaitu memasukkan kelima
nilai di atas ke dalam array “tampungan”, hanya saja dengan cara yang berbeda.

Mengakses Nilai Pada Array


Setelah kamu bisa mendeklarasikan dan memberikan nilai pada suatu array, maka langkah
selanjutnya adalah mengakses nilai yang berada pada suatu array. Untuk programnya Mimin
contohkan sebagai berikut:
1 #include <iostream>
2 using namespace std;
3
4 int main(){
5 int tampungan[5] = {4,3,7,8,9};
6 cout<<"Nilai pada array tampungan elemen ke "<<0<<" adalah :"<<tampungan[0]<<endl;
7 cout<<"Nilai pada array tampungan elemen ke "<<1<<" adalah :"<<tampungan[1]<<endl;
8 cout<<"Nilai pada array tampungan elemen ke "<<2<<" adalah :"<<tampungan[2]<<endl;
9 cout<<"Nilai pada array tampungan elemen ke "<<3<<" adalah :"<<tampungan[3]<<endl;
10 cout<<"Nilai pada array tampungan elemen ke "<<4<<" adalah :"<<tampungan[4]<<endl;
11 return 0;
12 }
Berikut adalah hasil output programnya:

Kamu juga bisa memanfaatkan loop untuk mengakses nilai pada array karena lebih cepat dan
simple. Berikut Mimin contohkan kode programnya:
1 #include <iostream>
2 using namespace std;
3
4 int main(){
5 int tampungan[5] = {4,3,7,8,9};
6 for(int i=0; i<=5; i++){
7 cout<<"Nilai pada array tampungan elemen ke "<<i<<" adalah :"<<tampungan[i]<<endl;
8 }
9 return 0;
10 }
Terlihat bahwa program untuk mengakses array dengan memanfaatkan loop lebih simple untuk
menghasilkan output yang sama sebagai berikut:
Array Multidimensi
Array multidimensi merupakan array yang memiliki indeks lebih dari 1. Indeks pada array
merepresentasikan dimensi dari array. Sebagai contoh array dengan indeks berjumlah dua, maka
dapat dikatakan bahwa array tersebut merupakan array dua dimensi dan begitu juga untuk
dimensi yang lainnya. Pada contoh kasus ini, Mimin mencontohkan array dua dimensi dalam
C++ sebagai berikut:
1 int arrayMulti[2][3];
Mimin sengaja mencontohkan array dua dimensi pada kasus ini karena array ini dapat dipahami
sebagai sebuah sel dalam tabel. Dimensi pertama array adalah baris, sedangkan dimensi array
kedua adalah kolom. Visualisasi array dua dimensi, Mimin gambarkan sebagai berikut:

0 1 2

0 int arrayMulti[0][0] int arrayMulti[0][1] int arrayMulti[0][2]

1 int arrayMulti[1][0] int arrayMulti[1][1] int arrayMulti[1][2]

Dari tabel diatas kamu dapat melihat bahwa, jumlah elemen dari arrayMulti adalah 6, yang
didapat dari perkalian indeks pertama dan kedua 2*3 = 6. Untuk memberikan nilai pada array
dua dimensi kamu dapat menggunakan sintaks sebagai berikut:
1 int arrayMulti[2][3] = {{1,2,3},{4,5,6}};
Pada contoh diatas, dimensi pertama adalah abstrak atau bisa dikatakan hanya sebagai
kelompok-kelompok bilangan (kurung kurawal ({}) didalam kurung kurawal utama atau besar).
Dimensi kedua merupakan anggota dari kelompok-kelompok tersebut (isi dari kurung kurawal).
Secara mudahnya bahwa dimensi kedua merupakan isi dari dimensi pertama. Berikut mimin
contohkan aplikasinya dalam program C++:
1 #include <iostream>
2 using namespace std;
3
4 int main(){
5 int arrayMulti[2][3] = {{1,2,3},{4,5,6}};
6 cout<<"Nilai arrayMulti[0][0] adalah "<<arrayMulti[0][0]<<endl;
7 cout<<"Nilai arrayMulti[0][0] adalah "<<arrayMulti[0][1]<<endl;
8 cout<<"Nilai arrayMulti[0][0] adalah "<<arrayMulti[0][2]<<endl;
9 cout<<"Nilai arrayMulti[0][0] adalah "<<arrayMulti[1][0]<<endl;
10 cout<<"Nilai arrayMulti[0][0] adalah "<<arrayMulti[1][1]<<endl;
11 cout<<"Nilai arrayMulti[0][0] adalah "<<arrayMulti[1][2]<<endl;
12 return 0;
13 }
Hasil output programnya adalah sebagai berikut:

Kamu juga bisa menggunakan looping for untuk mengakses nilai dari array multidimensi guna
mempersingkat pemrograman sebagai berikut:
1 #include <iostream>
2 using namespace std;
3
4 int main(){
5 int arrayMulti[2][3] = {{1,2,3},{4,5,6}};
6 cout<<"Akses Array Multidimensi Dengan Looping For"<<endl;
7 for(int x=0; x<=1; x++){
8 for(int y=0; y<=2; y++){
9 cout<<"Nilai arrayMulti["<<x<<"]["<<y<<"] adalah "<<arrayMulti[x][y]<<endl;
10 }
11 }
12 return 0;
13 }
Hasil output programnya adalah sebagai berikut:

Array Sebagai Parameter Suatu Fungsi


Ternyata sobat, array dapat juga berperan sebagai parameter suatu fungsi. Untuk menjadikan
array sebagai parameter fungsi cukup dengan menambahkan kurung kotak ([]) pada akhir nama
parameter. Yang harus kamu perhatikan, bahwa parameter pada array tidak perlu penambahan
indeks. Berikut Mimin contohkan sintaks sederhananya:
1 void cetakArray(int arrayInput[],int indeks);
Mimin hendak membuat fungsi dengan nama cetakArray yang bertindak untuk mencetak nilai
pada array, dimana array ini diinputkan user melalui parameter kedalam fungsi. Nah untuk
memudahkan pemahaman kamu, Mimin contohkan program sederhananya sebagai berikut:
1 #include <iostream>
2 using namespace std;
3
4 void cetakArray(int arrayInput[], int indeks);
5 int main(){
6 int arrayMimin[4] = {1,2,3,4};
7 cetakArray(arrayMimin,4);
8 return 0;
9 }
10
11 void cetakArray(int arrayInput[], int indeks){
12 for (int x=0; x<indeks; x++){
13 cout<<"Nilai array indeks "<<x<<" adalah = "<<arrayInput[x]<<endl;
14 }
15 }
Hasil output programnya adalah sebagai berikut:

Array Sebagai Kumpulan Karakter


Sedikit mengulang mengenai string. String merupakan tumpukan karakter, untaian karakter atau
disebut dengan array of character. Secara mudahnya, string merupakan kumpulan dari beberapa
karakter yang disusun menurut aturan tertentu, sehingga menghasilkan suatu kata atau kalimat.
String yang terdiri dari kata “sinauArduino”, jika ditulis dalam sebuah array dalam C++ dapat
dideklarasikan dengan menggunakan sintaks sebagai berikut:
1 char nama[13] = "sinauArduino";
Berdasarkan elemen-elemen array yang sudah kamu pelajari, kamu dapat mengakses huruf “A”
dari elemen ke-enam array tersebut dengan sintaks:
1 char nama[5];
Yang perlu kamu ingat adalah, bahwa string merupakan null-terminated array of
character, dengan artian bahwa sebuah string selalu diakhiri dengan karakter null (‘\0’). Dengan
keistimewaan inilah kamu tidak perlu menghitung panjang string untuk batas akhir suatu
looping, namun cukup apabila nilai elemen dalam suatu string sama dengan null (‘\0’), maka bisa
dipastikan bahwa elemen tersebut adalah akhir dari sebuah string. Untuk lebih memudahkan
pemahamanmu, berikut Mimin contohkan program sederhananya:
1 #include <iostream>
2 using namespace std;
3
4 int main(){
5 char nama[13] = "sinauArduino";
6 for (int i=0; nama[i]!='\0'; i++){
7 cout<<nama[i];
8 }
9 cout<<endl;
10 return 0;
11 }
Hasil output programnya sebagai berikut:

Program di atas berfungsi untuk mencetak semua nilai yang terdapat pada array karakter “nama”
dengan bantuan looping for, dimana looping ini akan terus bekerja mencetak isi dalam setiap
elemen array hingga ditemukan null terminated character ‘\0’.

Pengertian Pointer
Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib
memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar,
penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel
satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer,
suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.

Alamat Dari Variabel


Misalkan kamu memiliki variabel x dan terletak di memori 0x000001. Jika kamu ingin
memasukkan nilai 100 kedalam variabel x, maka processor harus membawa nilai 100 tersebut
kedalam variabel x yang terletak di alamat memori 0x000001. Hal yang perlu kamu ketahui
adalah, setiap variabel ternyata memiliki ukuran byte yang berbeda-beda dalam memori. Sebagai
contoh suatu variabel bertipe int memiliki ukuran 4 byte dalam memori. Maka variabel tersebut
akan menempati 4 kapling lokasi dalam memori, misalkan 0x000001, 0x000002, 0x000003, dan
0x000004. Jika terdapat dua buah variabel bertipe int yang bersebelahan, maka alamat variabel
pertama terletak di 0x000001 dan variabel kedua terletak dialamat 0x000005.

Memori menggunakan bilangan heksadesimal yang ditandai dengan awalan ‘0x’, sehingga jika
suatu variabel menempati blok kesepuluh dalam memori, maka alamatnya adalah 0x00000a

Deference (&)
Deference (&) merupakan suatu operator yang berfungsi untuk menanyakan alamat dari suatu
variabel. Apabila kamu memberikan simbol & pada awal variabel dan mencetak hasilnya pada
jendela CLI, maka yang akan tercetak adalah alamat dari variabel tersebut bukan nilai yang
ditampung oleh variabel tersebut. Berikut contoh programnya:
1
#include <iostream>
2 using namespace std;
3
4 int main(){
5 int a = 5;
6 cout<<"Alamat Variabel a adalah :"<<&a<<endl;
7 cout<<"Nilai Variabel a adalah :"<<a<<endl;
return 0;
8 }
9
Hasil output programnya adalah:

Alamat variabel ‘a’ pada setiap komputer akan berbeda-beda tergantung kompiler dalam
mengalokasikan memori untuk suatu variabel.

Reference (*)
Reference (*) merupakan suatu operator yang berfungsi menyatakan suatu variabel adalah
variabel pointer. Sama halnya dengan operator deference, peletakan simbol operator reference
diletakan diawal variabel. Operator reference ini akan membuat suatu variabel pointer untuk
menampung alamat. Nah untuk lebih mudahnya perhatikan contoh berikut:
1
2 #include <iostream>
3 using namespace std;
4
int main(){
5 int a=5; //Memberikan nilai 5 pada variabel a
6 int *b; //Mendeklarasikan variabel b sebagai pointer
7 b = &a; //Mengkopikan alamat variabel a kedalam variabel pointer b
8 cout<<"Nilai variabel a adalah "<<a<<endl;
9 cout<<"Alamat variabel a adalah "<<&a<<endl;
cout<<"Isi dari variabel b adalah "<<b<<endl;
10 cout<<"Nilai yang tertampung dalam variabel b adalah "<<*b<<endl;
11
12 return 0;
13 }
14
Hasil output programnya adalah:
Dari hasil output program di atas dapat dipahami bahwa, nilai variabel b sama dengan variabel a,
walaupun variabel b tidak diberikan nilai yang sama dengan variabel a. Hal ini terjadi karena
variabel pointer b menunjuk alamat variabel a dan variabel pointer b dapat mengakses nilai yang
terkandung dalam alamat yang ditunjuknya.

Pointer dan Array


Tahukah kamu bahwa jika kamu menuliskan sebuah array tanpa tanda kurung kotak ([]) maupun
indeksnya, maka array tersebut menunjuk atau bersi alamat elem pertama dari array tersebut.
Misalkan kamu membuat sebuah pointer bertipe int dengan nama pointerArray dan sebuah array
dengan tipe yang sama yaitu int dengan nama nilaiArray, maka pemberian nilai berikut sah dan
dapat dilakukan:
1 int *pointerArray;
2 int nilaiArray[5];
3 pointerArray = nilaiArray; //memberikan alamat elemen pertama array pada variabel poin
Dari sintaks di atas, variabel pointer dengan nama pointrArray sekarang menunjuk pada alamat
memori elemen pertama array dengan nama nilaiArray. Nah secara tidak langsung kita dapat
mengakses nilai elemen array dengan menggunakan variabel pointer. Berikut Mimin contohkan
sintaks pemrogramannya:
1
2 #include <iostream>
3 using namespace std;
4
5 int main(){
int nilaiArray[5] = {2,5,4,6,7};
6 int *pointerArray;
7 pointerArray = nilaiArray;
8 cout<<"Nilai pada elemen 0 nilaiArray adalah = "<<nilaiArray[0]<<endl;
9 cout<<"Nilai pada elemen 0 nilaiArray (Pointer) adalah = "<<*pointerArray<<endl;
10 pointerArray++; // naikan alamat yang ditunjuk pointer sejauh 1 integer
*pointerArray = 10; //Ubah nilai elemen 1 array (nilaiArray) menjadi 10
11 cout<<"Nilai pada elemen 1 nilaiArray adalah = "<<nilaiArray[1]<<endl;
12 cout<<"Nilai pada elemen 1 nilaiArray (Pointer) adalah = "<<*pointerArray<<endl;
13 pointerArray = nilaiArray; //kembalikan pointer pada elemen pertama
14 cout<<endl;
cout<<"Akses nilai semua array dengan pointer dan looping for"<<endl;
15 for (int i=0; i<5; i++){
16 cout<<"Nilai indeks ["<<i<<"] adalah = "<<*(pointerArray+i)<<endl;
17 }
18 return 0;
19 }
20
21
Hasil output programnya adalah sebagai berikut:

Dari hasil di atas, dapat kamu lihat bagaimana cara mengakses nilai array dengan menggunakan
pointer.
Suatu pointer bertipe int hanya dapat digunakan untuk menunjuk pada variabel int. Sebab, tipe
data tersebut akan menentukan sifat pointer ketika alamat pointer tersebut dilakukan increment.
Begitu juga untuk tipe data yang lain.

Pointer Sebagai Parameter Suatu Fungsi


Seperti halnya dengan array, pointer dapat digunakan sebagai parameter suatu fungsi. Karena
sifat pointer yang hanya sebagai penunjuk, maka setiap perubahan yang terjadi pada parameter,
sebenarnya terjadi pada variabel yang ditunjuk bukan pada variabel pointer. Berikut Mimin
contohkan program sederhananya:
1
2 #include <iostream>
3 using namespace std;
4
void tambah(int *angka){
5 *angka +=20;
6 }
7
8 int main(){
9 int nilai = 10;
10 cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;
tambah(&nilai); //Memasukkan alamat variabel nilai pada fungsi tambah
11 cout<<"Nilai variabel nilai adalah = "<<nilai<<endl;
12 return 0;
13 }
14
Berikut adalah output programnya:
Pada program diatas, Mimin membuat fungsi tambah, dimana ketika alama suatu variabel
diberikan sebagai parameter fungsi, nilai 20 akan ditambahkan pada alamat tersebut. Perbedaan
parameter berupa pointer dan non-pointer adalah, pada variabel non-pointer, ketika kamu ingin
memasukkan nilai pada sebuah variabel kedalam parameter, kamu harus memasukkan nilai dari
variabel tersebut. Untuk parameter berupa pointer, kamu cukup memasukkan alamat variabel
yang menampung nilai dengan operator (&) kedalam parameter fungsi
Yang menarik adalah pada fungsi tambah di atas, walaupun fungsi tersebut merupakan fungsi
void tanpa nilai kembalian alias return, namun nilai variabel parameter berubah.

Queue atau antrian merupakan suatu kumpulan data yang memiliki head/front dimana
data dikeluarkan (dequeue) dan tail/rear dimana data dimasukkan (enqueue) ke antrian.

Proses QUEUE

Seperti halnya pada antrian yang biasa kita lakukan sehari-hari, di manapun. Antrian
dimulai dari depan ke belakang, jika didepan belum pergi meninggalkan antrian maka
antrian terus bertambah dari belakang dan antrian paling belakang disini dinamakan
rear/tail.

Jadi selama antrian terus bertambah (enqueue) maka antrian yang paling akhir adalah
tail/rear.

Jika ada yang keluar dari antrian (dequeue) maka data tersebut adalah yang paling
depan (head/front), dan data berikutnya setelah data yang keluar berubah menjadi yang
paling depan (head/front).

Queue menggunakan metode FIFO, dimana yang masuk pertama kali akan keluar
pertama kali juga.

Program QUEUE
1. Untuk mengimplementasikan program queue di C++ kita membutuhkan tiga
method atau fungsi enqueue(); untuk menambahkan data ke
antrian,dequeue(); untuk me ngeluarkan data dari antrian dan printQueue() untuk
menampilkan queue.
2. Selain tiga fungsi tersebut, kita akan membuat dua fungsi opsional untuk
mengecek apakah antrian kosong isEmpty() dan antrian penuh isFull().
3. Untuk menyimpan data kita bisa menggunakan empty array dengan maksimum
array yang nanti akan kita definisikan sebagai maksimum antrian, jadi kita bisa
mengetahui indeks pertama adalah front dan data indeks yang kosong untuk
menambahkan data sebagai rear-nya.
4. Untuk data antriannya terstruktur kita bisa menggunakan struct sehingga lebih
mudah mengakses data front, rear dan array datanya sendiri seperti sebuah
object.
5. Karena ini adalah program konsole maka tentu kita juga akan membuat
fungsi main().
Kode Program QUEUE

1. Preprocessor dan Header File

#include <iostream>
#define MAX 20 //maksimum data queue
using namespace std;

Disini kita hanya menggunakan dua baris preprocessor untuk mendefinisikan header
file iostream untuk standard input/output stream dan MAX untuk maksimum data array
pada queue/antrian.

2. Struct data

//Deklarasi struct antrian


struct Queue {
int front, rear, data[MAX];
}Q;

Pada struct kita mendeklarasikan front, rear dan array data[] dengan jumlah array dari
data maksimum yang telah di definisikan sebelumnya yaitu MAX.

Deklarasi variabel pada struct sama halnya dengan pendeklarasian variabel pada
umumnya, karena disini kita hanya memiliki tipe data yang sama, jadi kita bisa
menghemat baris dengan menyebariskan tiga variabel bertipe integer.

INFO : Disini kita hanya membuat program untuk mengetahui dasar implementasi queue di c++,
Sebenarnya kita juga bisa menggunakan variabel data dengan tipe data lain selain integer, atau sebagai
data struct seperti pada program sederhana ini.
3. Memeriksa antrian

//cek apakah antrian penuh


bool isFull() {
return Q.rear == MAX;
}

//cek apakah antrian kosong


bool isEmpty() {
return Q.rear == 0;
}

Kedua fungsi ini akan digunakan untuk memeriksa apakah antrian


penuh isFull()(fungsi pertama) dan antrian kosong isEmpty(), keduanya
mengembalikan nilai boolean, jadi kita cukup mengembalikan nilai perbandingan pada
fungsi masing - masing.

1. Pada fungsi isFull() akan mengembalikan nilai true jika nilai Q.rear sama
dengan maksimum data array yang telah ditentukan MAX, atau false jika tidak
sama.
2. Pada fungsi isEmpty() akan mengembalikan nilai true jika nilai Q.rear sama
dengan 0, atau false jika tidak sama.

4. Menampilkan Antrian

//Menampilkan Queue
void printQueue() {
if (isEmpty()) {
cout << "Antrian kosong"<<endl;
}
else {
cout << "QUEUE : ";
for (int i = Q.front; i < Q.rear; i++)
//menambahkan koma jika data tidak terdapat di antrian pertama
cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
cout << endl;
}
}

Untuk menampilkan antrian, kita perlu memeriksa apakah antriannya kosong. Jika
kosong maka tidak ada data untuk ditampilkan, jadi cukup tampilkan pesan. Tapi jika
antrian berisi data atau ada antrian disana maka tampilkan data yang ada di antrian
menggunakan for loop.

Disini kode di dalam perulangan/loop hanyalah elemen setiap data yang telah
dimasukkan dengan menggunakan koma kecuali data terakhir.
Info : Mungkin kalian bertanya kenapa kita tidak memulai membuat fungsi yang utama dari program
yang kita tulis yaitu enqueue(), dequeue() dan fungsi dan kode lain setelahnya.

Ini dikarenakan kompiler pada c++ membaca kode yang kita tulis dari baris atas ke bawah. Kompiler tidak
akan mengkompile program jika ada variabel atau fungsi yang tidak di definisikan atau di deklarasikan.

Kompiler juga tidak akan mengkompile program dengan variabel atau fungsi yang di didefinisikan di baris
paling bawah, tapi di panggil pada baris kode di atasnya.

5. Input Data ke antrian

//manambahkan data ke antrian


void enqueue() {
if (isFull())
{
cout << "Antrian penuh!"<<endl;
}
else {
int data;
//menambahkan data ke antrian
cout << "Masukkan Data : ";cin >> data;
Q.data[Q.rear] = data;
//menempatkan tail pada elemen data terakhir yang ditambahkan
Q.rear++;
cout << "Data ditambahkan\n";
printQueue();
}
}

Untuk menginputkan data ke antrian hal utama yang perlu kita lakukan adalah
memeriksa apakah antrian penuh atau tidak, jika penuh, maka kita tidak dapat
menambahkan data ke antrian karena sudah tidak ada ruang lagi yang tersedia.

Jika masih ada ruang maka inputkan data ke antrian dan tambahkan satu nilai
ke Q.rear dimana data tersebut berada pada antrian paling belakang.

Disini kita juga memanggil fungsi printQueue() yang telah didefinisikan pada baris kode
sebelumnya, secara langsung setelah data ditambahkan. Jadi user bisa melihat data ada
di dalam antrian.

6. Mengambil Data antrian

// mengambil data dari antrian


void dequeue() {
if (isEmpty())
{
cout << "Antrian masih kosong"<<endl;
}
else{
cout << "Mengambil data \"" << Q.data[Q.front] << "\"..." << endl;
//menggeser antrian data ke head
for (int i = Q.front; i < Q.rear; i++)
Q.data[i] = Q.data[i + 1];
//menempatkan tail pada data terakhir yang digeser
Q.rear--;
printQueue();
}
}

Sama halnya dengan menampilkan antrian, untuk mengambil data dari dalam antrian
atau mengeluarkannya (dequeue), pertama kali kita perlu memeriksa apakah ada data
dalam antrian. Karena kita tidak dapat menghapus data yang tidak ada pada antrian.

Jika ada data pada antrian, maka geser data ke antrian palng depan atau Q.front, disini
kita akan menimpa data yang keluar dari antrian yang paling depan dan kemudian
mengurangi satu nilai Q.rear.

7. Menampilkan Menu

int main() {
int choose;
do
{
//Tampilan menu
cout << "-------------------\n"
<< " Menu Pilihan\n"
<< "-------------------\n"
<< " [1] Enqueue \n"
<< " [2] Dequeue\n"
<< " [3] Keluar \n\n"
<< "-------------------\n"
<< "Masukkan pilihan : "; cin >> choose;
switch (choose)
{
case 1:
enqueue();
break;
case 2:
dequeue();
break;
default:
cout << "Pilihan tidak tersedia";
break;
}
} while (choose !=3);
return 0;
}

Setelah semua fungsi dan variabel yang kita butuhkan telah tersedia, langkah terakhir
adalah menggunakan fungsi-fungsi dan variabel tersebut menjadi sebuah program yang
kita inginkan (program queue) dengan memanggilnya dan memolesnya menjadi sebuah
menu pada fungsi main. Disini kita hanya perlu menggunakan
perulangan while dan switch untuk menentukan pilihan user.

switch akan memeriksa pilihan user (disini adalah nilai variabel choose dengan tipe data
integer). Disini hanya ada dua pilihan. pilihan pertama jika user ingin menambahkan
data ke antrian dan pilihan kedua jika user ingin menghapus atau mengeluarkan data
dari antrian. Selain dari kedua pilihan tersebut maka tampilkan pesan pilihan tidak
tersedia.

Sedangkan while sendiri akan mengulang pilihan pada switch, selama user tidak memilih
pilihan dengan nilai 3 atau choose == 3.

Full Code

Lihat Full Demo Disini : cpp queue code demo

Sebenarnya di C++ sudah ada library untuk membuat queue, jadi untuk membuat
queue kita cukup menambahkan header file queue pada awal baris dan selanjutnya kita
bisa menggunakan method dan fungsi yang telah disediakan untuk membuat antrian
seperti empty, size, front, back, push_back, pop_front dan lainnya.

Definisi stack
Stack merupakan suatu tumpukan dari benda dengan konsep utamanya adalah LIFO (Last In
Fist Out). Benda yang masuk terakhir dalam stack akan menjadi benda pertama yang di keluarkan
dari stack. Ilustrasinya bisa di liat di bawah :
Pada gambar diatas, jika kita ingin mengambil sesuatu dari tumpukan maka kita harus
mengambilnya dari tumpukan yang paling atas dahulu. Misalkan jika kita mengambil yang A
terlebih dahulu maka yang B akan jatuh. Dalam program c++ ada 2 cara penerapan prinsip stack
ini yakni dengan array dan linked list . operasi-operasi dalam stack :
1. Push : untuk menambahkan item pada tumpukan paling atas
2. Pop : untuk mengambil item paling atas
3. Clear : untuk mengosongkan stack
4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
Stack Dengan Array of Struct
1. Definisikan Stack dengan menggunakan suatu struct
2. Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack
3. Elemen struct Stack adalah array data dan top untuk menadakan posisi data teratas
4. Buatlah variabel tumpuk sebagai implementasi dari struct Stack
5. Deklarasikan operasi-operasi/function di atas dan buat implemetasinya
Contoh stack dengan array
Contoh deklarasi MAX_STACK
#define MAX_STACK 10
Contoh deklarasi STACK dengan struct dan array data

typedef struct STACK{


int top;
int data[10];
};
Deklarasi/buat variabel dari struct
STACK tumpuk;

Contoh programnya
DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
1. #include <iostream.h>
2. #include <conio.h>
3.
4. char stack[10];
5. int tdc,i;
6. char answer,tmp,e;
7. void speed();
8.
9.
10. void push1()
11. {
12. for(i=0;i<=17; i++)
13. {
14. gotoxy(22+i,7);cout<<" ";
15. gotoxy(23+i,7); cout<<tmp; speed();
16. }
17. for(i=1;i<=(14-tdc);i++)
18. {
19. speed();
20. gotoxy(40,6+i); cout<<" ";
21. gotoxy(40,7+i); cout<<tmp;
22. }
23. }
24.
25. void pop1(char temp)
26. {
27. for(i=1;i<=(14-tdc);i++)
28. {
29. speed();
30. gotoxy(40,22-i-tdc); cout<<" ";
31. gotoxy(40,21-i-tdc); cout<<tmp;
32. }
33. for(i=1;i<=19;i++)
34. {
35. speed();
36. gotoxy(38+i,7); cout<<" ";
37. gotoxy(39+i,7); cout<<tmp; speed();
38. }
39. gotoxy(58,7);cout<<" ";
40. }
41.
42. void push(char e)
43. {
44. tdc=tdc+1;
45. stack[tdc]=e;
46. push1();
47. }
48. void pop(char e)
49. {
50. if(tdc !=0)
51. {
52. gotoxy(1,7); cout<<" "<<endl;
53. e=stack[tdc]; pop1(e);
54. tdc=tdc-1;
55. }
56. else
57. {
58. gotoxy(1,7); cout<<"stack kosong!"<<endl;
59. gotoxy(1,7);
60. }
61. }
62.
63. void main()
64. {
65. clrscr();
66. cout<<"program stack dengan animasi"<<endl;
67. cout<<"1.push--> memasukkan data"<<endl;
68. cout<<"2.pop---> mengambil data"<<endl;
69. cout<<"3.clear-> membersihkan data"<<endl;
70. cout<<"4.exit--> keluar"<<endl;
71. //cout<<"pilih [1/2/3/4] ="<<endl;
72.
73.
74. clear:
75. gotoxy(59,6); cout<<"-";
76. gotoxy(59,9); cout<<"_";
77. gotoxy(37,10); cout<<"|| ||";
78. for(i=1;i<=11;i++)
79. {
80. gotoxy(38,10+i);
81. if(i==11)
82. cout<<"|___|";
83. else
84. cout<<"| |";
85. }
86. tdc=0;
87. do
88. {
89. input:
90. gotoxy(1,6);
91. cout<<"masukkan pilihan anda[1/2/3/4] : ";
92. answer=getche();
93. if(int(answer)==27 || answer=='4')
94. break;
95. else if(answer=='1')
96. {
97. if(tdc != 7)
98. {
99. gotoxy(1,7); cout<<"masukkan suatu huruf : ";
100. cin>>tmp;
101. push(tmp);
102. gotoxy(1,7); cout<<" ";
103. }
104. else
105. {
106. gotoxy(1,7); cout<<"stack penuh!";
107. getch();
108. gotoxy(1,7); cout<<" ";
109. }
110. }
111. else if(answer=='2')
112. pop(tmp);
113. else if(answer=='3')
114. goto clear;
115. else
116. goto input;
117. }
118. while(1);
119.
120. getch();
121. }
122.
123. void speed()
124. {
125. for(int y=1;y<77;y++)
126. for(int x=1;x<77;x++)
127. for(int p=1;p<77;p++)
128. cout<<"";
129. }

Tampilan jika program di jalankan


Push
Pop

Anda mungkin juga menyukai