PRAKTIKUM
STRUKTUR DATA
Nama : I Gusti Agung Bagus Satria Putra Utama
NIM : 140010366
Kelas : AB141
Mata
Kuliah : Praktikum Struktur Data
SEKOLAH
TINGGI
MANAJEMEN
INFORMATIKA DAN TEKNIK KOMPUTER
(STIMIK)
STIKOM BALI
TAHUN
2015
BAB
I
VARIABEL
1.
Variabel
·
Variabel Merupakan suatu tempat untuk menampung
data atau konstanta di memori yang mempunyai nilai atau data yang dapat berubah
– ubah selama proses program.
·
Dalam Bahasa C,kita pun akan menemui dan
menggunakan variabel dalam penulisan program. Dalam pemberian variable terdapat
ketentuan – ketentuan sebagi berikut: Tidak boleh ad spasi (contoh : adytya
rachman),dan dapat menggunakan garis bawah (_) sebagi pengubung (contoh:
adytya_rachman).
·
Tidak boleh diawali oleh angka dan mengggunakan
operator aritmatika. Ada dua jenis
variable yaitu:
o
Variabel Numerik ,terdiri dari : a.Bilangan bulat
b.Bilangan decimal bepresisi tunggal atau floating point c.Bilangan decimal
berpresisi ganda atau double precision
o
Varabel Teks,terdiri dari a.Character (karakter
tungggal ) b.String (untaian rangkaian karakter)
Tipe Data Variabel C++
Bahasa pemrograman C++ menyediakan programmer dengan satu set tipe
data untuk programmer menyimpan informasi dan membangun tipe data yang bukan
merupakan bagian dari bahasa itu sendiri. Tipe data yang pertama kali disebut
tipe built-in, dan selanjutnya disebut dengan tipe user-defined atau tipe data
yang telah ditetapkan. Tipe data diklasifikasikan berdasarkan bagaimana keadaan
data disimpan dalam memori, dan jenis operasi yang dapat dilakukan. Berikut
adalah beberapa tipe data yang ada pada pemrograman C(C++):
a)
CHAR
Adalah sembarang huruf, angka, tanda baca tunggal.
b)
Signed
mendeklarasikan char bertanda, digunakan untuk nilai negative. Rentang
nilai mulai -128 sampai 127
c)
unsigned
mendeklarasikan char tidak bertanda, untuk nilai positif. Rentang nilai
mulai 0 sampai 255
contoh deklarasi char :
char letter = ‘A’ ;
unsigned char number = 245
;
signed char value = -71 ;
d)
HORT, INT, LONG
Digunakan untuk menyatakan bilangan bulat. Seperti pada char, perubah
tipe signed dan unsigned dapat ditambahkan. Rentang nilai short int mulai
-32.768 sampai 32.767. Rentang nilai long / int mulai -2.147.483.648 sampai
2.147.483.647
Contoh deklarasi int :
nt nilai, total ; atau
Int nilai = 90 ;
e)
FLOAT, DOUBLE
Menyatakan bilangan pecahan/real, maupun
eksponensial. Dalam keadaan default, bilang floting point dianggap bertipe
double. Rentang nilai float mulai 3,4 E -38 sampai 3,4 E +38
Rentang nilai double mulai 1,7 E -308 sampai 1,7 E
+308
f)
ENUMERATION / ENUM
Adalah serangkaian symbol berurutan yang menspesifikasikan konstanta
bertipe integer. Dalam C++ tidak terdapat tipe Bolean, sehingga untuk
merepresentasikan TRUE dengan nilai integer bukan nol ( 1, 2, dst ), sedangkan
FALSE dengan nilai nol ( 0 )
Contoh deklarasi enum :
Enum BOOLEAN { False, True } ; atau
Enum BOOLEAN { Benar = 3, Salah = 0 } ;
g)
VOID
§
Menyatakan tipe kosong untuk :
§
mendeklarasikan fungsi yang tidak mengembalikan
nilai apapun.
§
mendeklarasikan fungsi yang tidak menerima
parameter apapun.
§
bila diawali dengan operator *, menyatakan penunjuk
terhadap sembarang tipe data.
Contoh deklarasi void :
Void cctrputs (char*, int ) ; atau
Main (void) ; atau
Void* action ;
Int ivalue = 100 ;
Action = &ivalue ;
h)
PENUNJUK / POINTER
Adalah sekelompok data bertipe sama yang menduduki lokasi memori yang
berurutan. Jumlah elemen array dinyatakan dengan cara mengapit jumlah yang di
maksud dengan tanda ‘ [ … ] ‘ Bentuk umum : tipe namaArray [ jumlahelemen ] ;
Untuk menyatakan array berdimensi lebih dari 1 (satu), tambahkan tanda ‘[ … ]’
sebanyak dimensi yang diinginkan.
Contoh deklarasi array 2 dimensi :
Int matrix [2][3] ;
i)
STRING
Deretan karakter yang diakhiri dengan sebuah karakter kosong. String
ditulis dengan mengapit string dengan tanda petik dua ( “ …….” )
Contoh deklarasi string :
Char text [ ] = “ C++ “ ;
Puts (text) ;
j)
STRUCT, UNION
Digunakan untuk mendeklarasikan sekelompok data yang memiliki tipe yang
berlainan. Struct : elemennya ada dilokasi memori yang berbeda, dan union :
elemennya ada dilokasi memori yang sama.
Bentuk umum :
Struct tipestruktur
{Tipeanggota1 namaAnggota1 ;
Tipeanggota2 namaAnggota2 ;
………….}namaStruktur ;
v
Contoh Program Macam Tipe Data Menggunakan C++
#include<iostream.h>
#include<conio.h>
void main()
{
int x;
float y;
char z;
double w;
x = 10;
y = 9.45;
z = 'C';
w = 3.45;
cout<<"Nilai dari x adalah : "<< x << endl;
cout<<"Nilai dari y adalah : "<< y << endl;
cout<<"Nilai dari z adalah : "<< z << endl;
cout<<"Nilai dari w adalah : "<< w << endl;
getch();
}
BAB
II
ARRAY
Array
Array adalah sesuatu yang berbaris atau
berderet-deret sedemikian rupa sehingga alamatnya saling bersambung atau bersebelahan/berdampingan (contiguous).
Array dibagi menjadi dua yaitu Array satu dimensi dan multi dimensi.
1.
Array 1 Dimensi
Array satu dimensi adalah kumpulan elemen yang tersusun dalam
suatu baris.
Contoh:
2.
Array 2 Dimensi
Array Multidimensi merupakan sebuah perluasan dari sebuah array satu
dimensi. Jika pada array satu dimensi hanya terdiri dari sebuah baris dengan
beberapa kolom elemen maka pada array dua dimensi terdiri dari beberapa baris
dan beberapa kolom elemen yang bertype sama.
Contoh:
#include <iostream>
#include <conio.h>
std;
{
void tetap()
{
//deklarasi matrix
int inputA [3][3];
int inputB [3][3];
int inputC [3][3];
//input matrix A
cout << "Masukkan
input A : "<<endl;
cout <<
"------------------"<<endl;
for (int bar = 0; bar <= 2;
bar++)
{
for (int kol = 0; kol <= 2;
kol++)
{
cout << "A
["<<bar<<"]["<<kol<<"] = ";
cin >> inputA[bar][kol];
}
}
//input matrix B
cout << "\nMasukkan
input B : "<<endl;
cout <<
"------------------"<<endl;
for (int bar = 0; bar <= 2;
bar++)
{
for (int kol = 0; kol <= 2;
kol++)
{
cout << "B
["<<bar<<"]["<<kol<<"] = ";
cin >> inputB[bar][kol];
//menghitung |c|=|a|+|b|
inputC[bar][kol] = (inputA[bar][kol]
+ inputB[bar][kol]);
}
}
//tampilan (output) matrix A,B,C
cout << "\nHasil
penjumlahan |A|+|B| = "<<endl;
cout <<
"----------------------------"<<endl;
for (int bar = 0; bar <= 2; bar++)
{
cout << "| ";
for (int kolA = 0; kolA <= 2;
kolA++)
{
cout << "
"<<inputA[bar][kolA];
}
cout << "| ";
cout << "| ";
for (int kolB = 0; kolB <= 2;
kolB++)
{
cout << "
"<<inputB[bar][kolB];
}
cout << "| ";
cout << "| ";
for (int kolC = 0; kolC <= 2;
kolC++)
{
cout << "
"<<inputC[bar][kolC];
}
cout << "| ";
cout << "
"<<endl;
}
}
};
int main()
{
penjumlahan hitung;
hitung.tetap();
system("pause");
return 0;
}
BAB
III
STACK
Stack
Pengertian Stack atau Tumpukan adalah suatu stuktur data yang penting
dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang
terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari
stack. Stack (Tumpukan) adalah list
linier yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan
penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“ TOP dan Penghapusan selalu dilakukan pada
TOP.
Stack karena aturan penyisipan dan penghapusan semacam itu, TOP adalah
satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling
akhir akan menjadi elemen yang akan dihapus.Dikatakan bahwa elemen Stack akan
tersusun secara LIFO (Last In First Out).
karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi
elemen teratas dalam tumpukan.
Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka
elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil
elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu
Compo juga.
Ø
OPERASI-OPERASI/FUNGSI STACK
Push : digunakan untuk menambah item pada stack pada tumpukan paling
atas
Pop : digunakan untuk mengambil item pada stack pada tumpukan paling
atas
Clear : digunakan untuk mengosongkan stack
IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
Ø
INISIALISASI STACK
Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0,
yang berarti stack adalah KOSONG.!
Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen
teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX
of STACK sehingga menyebabkan stack PENUH!
Ilustrasi stack pada saat inisialisasi
Fungsi IsFull
Untuk memeriksa apakah stack sudah penuh?
Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1
maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full
Ilustrasi
Contoh syntax
#include "iostream.h"
#include "stdio.h"
#include "conio.h"
#define size 5
struct stack
{
int a[size];
int top;
};
typedef struct stack STACK;
void push(STACK *p,int value) /* PUSH OPERATION */
{
if(p->top==size-1)
cout<<"Stack
Penuh!";
else
p->a[++p->top]=value;
}
int pop(STACK *p) /* POP OPERATION */
{
if (p->top==-1)
{
cout<<"Stack
Kosong!";
return -1;
}
else
return p->a[p->top--];
}
void display (STACK *p) /*DISPLAY OPERATION */
{
int i;
if(p->top==-1)
cout<<"\nStack
Kosong!\n";
else
cout<<"\nIsi Stack
Adalah: \n";
for (i=p->top;i>=0; --i)
cout<<p->a[i]<<"\n";
}
void main()
{
STACK s ;
int x,i;
s.top=-1;
char pil;
do {
clrscr();
printf("1.
Tambah\n");
printf("2. Ambil
Datar\n");
printf("3. Lihat
Data\n");
printf("4. Hapus
Data\n");
printf("5.
Keluar\n");
printf("Silahkan masukkan
pilihan anda (1-5)... ");
pil=getche();
if(pil!='1' && pil
!='2' && pil !='3' && pil!='4' && pil!='5' )
printf("\n\nAnda
salah mengetikkan inputan...\n");
else
{
if(pil=='1')
{
cout<<"\nMasukkan Element: ";cin>>x;
push (&s,x);
}
else
{
if(pil=='2')
{
x=pop(&s);
if(x!=-1)
cout<<"\nElement yang Dihapus: "<<x;
getch();
}
else
{
if(pil=='3')
{
display(&s);
getch();
}
else
{
if(pil=='4')
{
if(s.top==-1)
printf("\nStack
Kosong!\n");
else
printf("\nStack
Dihapus!\n");
for (i=s.top;i>=0;
--i)
printf("Element
Yang Dihapus adalah %d\n",pop(&s));
s.top=-1;
getch();
}}}
}}}
while(pil!='5');
}
BAB
IV
QUEUE
QUEUE
Queue
adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada
suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan
elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front).
Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar
Pertama” atau FIFO (First In First Out).
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex:
antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam
bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing
computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem
tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung
dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan
Tail ( depan/front, belakang/rear).
Karakteristik Queue atau antrian :
1. elemen antrian
2. front (elemen terdepan antrian)
3. tail (elemen terakhir)
4. jumlah elemen pada antrian
5. status antrian Operasi pada Queue atau antrian
1. tambah(menambah item pada belakang antrian)
2. hapus (menghapus elemen depan dari antrian)
3. kosong( mendeteksi apakah pada antrian mengandung elemen atau tidak)
Operasi-operasi Queue :
1. Create() Untuk menciptakan dan
menginisialisasi Queue Dengan cara membuat Head dan Tail = -1
2. IsEmpty() Untuk memeriksa
apakah Antrian sudah penuh atau belum Dengan cara memeriksa nilai Tail, jika
Tail = -1 maka empty Kita tidak memeriksa Head, karena Head adalah tanda untuk
kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah
Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang,
yaitu menggunakan nilai Tail.
3. IsFull Untuk mengecek apakah
Antrian sudah penuh atau belum Dengan cara mengecek nilai Tail, jika
Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti
sudah penuh
4. Enqueue Untuk menambahkan
elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling
belakang Penambahan elemen selalu menggerakan variabel Tail dengan cara increment
counter Tail terlebih dahulu
5. Dequeue() Digunakan untuk
menghapus elemen terdepan/pertama (head) dari Antrian Dengan cara menggeser
semua elemen antrian kedepan dan mengurangi Tail dgn 1 Penggeseran dilakukan
dengan menggunakan looping.
6. Clear() Untuk menghapus
elemen-elemen Antrian dengan cara membuat Tail dan Head = -1 Penghapusan
elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset
indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi
terbaca
7. Tampil() Untuk menampilkan nilai-nilai
elemen Antrian Menggunakan looping dari head s/d tail
BAB
V
SORTING
SORTING
Sorting adalah proses menyusun elemen –
elemen dengan tata urut tertentu dan proses tersebut terimplementasi dalam
bermacam aplikasi. Kita ambil contoh pada aplikasi perbankan. Aplikasi tersebut
mampu menampilkan daftar account yang aktif. Hampir seluruh pengguna pada
sistem akan memilih tampilan daftar berurutan secara ascending demi kenyamanan
dalam penelusuran data. Beberapa macam algoritma sorting telah dibuat karena
proses tersebut sangat mendasar dan sering digunakan. Oleh karena itu,
pemahaman atas algoritma – algoritma yang ada sangatlah berguna.
1.Selection Sort (Ascending): Pengurutan dilakukan dengan memilih elemen
terbesar dan menempatkan pada posisinya, kemudian mencari element terbesar
berikutnya dan menempatkan pada tempatnya, dan seterusnya.
Proses pengurutan dengan menggunakan metode selection sort secara
terurut naik adalah :
1. Mencari data terkecil dari data pertama sampai data terakhir,
kemunian di tukar posisinya dengan data pertama.
2. mencari data terkecil dari data kedua sampai data terakhir, kemudian
di tukar dengan posisinya dengan data kedua.
3. mencari data terkecil dari data ketiga sampai data terakhir, kemudian
di tukar posisinya dengan data ketiga
4. dan seterusnya sampai semua data turut naik. apabila terdapat n buah
data yang akan di urutkan, maka membutukan (n - 1) langkah pengurutan, dimana
data terakhir yaitu data ke-n tidak perlu di urutkan karena hanya tinggal satu
satunya.
3.
Bubble Sort Konsep Buble Sort Metode pengurutan
gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun yang berada
dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat
jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di
atas dipakai pada pengurutan gelembung. Bubble sort (metode gelembung) adalah
metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan
tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu
iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti
data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci
akan dengan lambat menggelembung ke posisinya yang tepat
BAB
VI
SEARCHING
Searching
Pencarian
(Searching) merupakan proses yang fundamental dalam pemrograman, guna menemukan
data (nilai) tertentu di dalam sekumpulan data yang bertipe sama. Fungsi
pencarian itu sendiri adalah untuk memvalidasi (mencocokkan) data.
Metode pencarian dibagi menjadi 2, yaitu:
·
Metode Pencarian Beruntun
Konsep yang digunakan dalam metode ini adalah membandingkan data-data
yang ada dalam kumpulan tersebut, mulai dari elemen pertama sampai elemen
ditemukan, atau sampai elemen terakhir.
·
Metode Pencarian Bagi Dua (Binary Search)
Metode ini diterapkan pada sekumpulan data yang sudah terurut (menaik
atau menurun). Metode ini lebih cepat dibandingkan metode pencarian beruntun.
Data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini.
Konsep
dasar metode ini adalah membagi 2 jumlah elemennya, dan menentukan apakah data
yang berada pada elemen paling tengah bernilai sama, lebih dari atau kurang
dari nilai data yang akan dicari. Jika bernilai sama, maka langsung data yang
dicari ditemukan. Jika data di elemen terurut naik, maka jika data yang berada
di tengah kurang dari data yang dicari, maka pencarian selanjutnya berkisar di
elemen tengah ke kanan, dan begitu seterusnya sampai ketemu atau tidak sama
sekali. Dan sebaliknya untuk nilai data yang berada di tengah lebih dari data
yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kiri, dan
begitu seterusnya sampai ketemu atau tidak sama sekali. Dan demikian sebaliknya
untuk data yang terurut menurun. Dalam hal ini tentukan indeks paling awal dan
indeks paling akhir, untuk membagi 2 elemen tersebut. Indeks awal = i, dimana nilai i, pada awalnya
bernilai 0; Indeks akhir = j, dimana nilai j, pada awalnya bernilai sama dengan
jumlah elemen.
Algoritma pencarian berurutan dapat
dituliskan sebagai berikut :
1 i ← 0
2 ditemukan ← false
3 Selama (tidak ditemukan) dan (i <= N) kerjakan baris 4
4 Jika (Data[i] = x) maka ditemukan ← true, jika tidak i ← i + 1
5 Jika (ditemukan) maka i adalah indeks dari data yang dicari, jika tidak data tidak ditemukan
2 ditemukan ← false
3 Selama (tidak ditemukan) dan (i <= N) kerjakan baris 4
4 Jika (Data[i] = x) maka ditemukan ← true, jika tidak i ← i + 1
5 Jika (ditemukan) maka i adalah indeks dari data yang dicari, jika tidak data tidak ditemukan
Daftar Pustaka
Nugroho, Adi. 2008. Algoritma dan Struktur Data dalam Bahasa Java.Jakarta: Andy Publisher



