162
MODUL PERKULIAHAN Pemrograman Algoritma Struktur Data Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh Ilmu Komputer Tehnik Informatika 01 87042 Tim Dosen Abstract Kompetensi Pengenalan Bahasa C++ Konstanta dan tipe data dalam C++ Mencetak nilai konstanta bilangan integer dan float serta string dalam C++ Memberi nilai ke dalam variabel bilangan integer dan float dalam C++ Mampu menggunakan IDE Borland C++ Mampu membuat program console sederhana dalam Bahasa C++ dan mencetak konstanta bilangan, karakter dan string dalam Bahasa C++ Mampu memberi nilai ke dalam variabel bertipe data bilangan integer dan float serta menampilkan nilai variabel bilangan integer dan float

MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

  • Upload
    vudieu

  • View
    259

  • Download
    12

Embed Size (px)

Citation preview

Page 1: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Tehnik Informatika 

01 87042  Tim Dosen

 

 

 

Abstract  Kompetensi  Pengenalan Bahasa C++ Konstanta dan tipe data dalam C++ Mencetak nilai konstanta bilangan integer

dan float serta string dalam C++ Memberi nilai ke dalam variabel bilangan

integer dan float dalam C++

Mampu menggunakan IDE Borland C++ Mampu membuat program console

sederhana dalam Bahasa C++ dan mencetak konstanta bilangan, karakter dan string dalam Bahasa C++

Mampu memberi nilai ke dalam variabel bertipe data bilangan integer dan float serta menampilkan nilai variabel bilangan integer dan float

Page 2: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

STRUKTUR DASAR C++

1. Pendahuluan

Algoritma adalah urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu

untuk memecahkan suatu masalah dalam rentang waktu tertentu. Setiap aksi harus

dapat dikerjakan dan mempunyai efek tertentu.

Algoritma dapat dituliskan dengan banyak cara, mulai dari menggunakan bahasa

alami yang digunakan sehari-hari, simbol grafik bagan alir, sampai menggunakan bahasa

pemograman seperti bahasa C atau C++.

2. C dan C++

Berbicara tentang C++ biasanya tidak lepas dari C, sebagai bahasa

pendahulunya. Pencipta C adalah Brian W. Kerninghan dan Dennis M. Ritchie pada

sekitar tahun 1972, dan sekitar satu dekade setelahnya diciptakanlah C++, oleh

Bjarne Stroustrup dari Laboratorium Bell, AT&T, pada tahun 1983. C++ cukup

kompatibel dengan bahasa pendahulunya C. Pada mulanya C++ disebut “ a better C “.

Nama C++ sendiri diberikan oleh Rick Mascitti pada tahun 1983, yang berasal dari

operator increment pada bahasa C.

3. Mengenal C++

C++ merupakan perluasan bahasa C dengan tambahan fasilitas kelas (Class).

Program C++ berupa sekumpulan fungsi. Bahkan program utama juga berbentuk

fungsi, yaitu fungsi main().

Kode C++ bersifat case sensitive, artinya membedakan antara huruf kapital dengan

huruf kecil.

Bahasa C dan C++ merupakan bahasa yang sangat populer dalam dunia

pengembangan perangkat lunak. Kedua bahasa ini digolongkan ke dalam bahasa

tingkat menengah (middle level language).

Keistimewaan dari bahasa C++ adalah karena bahasa ini mendukung pemrograman

berarah objek atau yang lebih sering dikenal dengan istilah Object Oriented

Programming (OOP).

Mengapa perlu Object Oriented Programming (OOP)?

Mempermudah programmer menulis program.

Mempercepat proses pembuatan program

Mempermudah pemeliharaan program

Page 3: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Bahasa C

Fleksibel: dapat mengakses/mendekati mesin, namun mudah dimengerti oleh

manusia.

Portabel: dipakai mulai dari komputer mikro sampai superkomputer.

Bahasa yang paling banyak digunakan dalam ilmu komputer, untuk membuat OS,

aplikasi, dan lain lain.

Didukung oleh banyak pustaka (libraries)

Bahasa C++

Merupakan pengembangan bahasa C dan diberi kemampuan OOP.

C++ merupakan subset dari bahasa C, maka pustaka yang ditulis dalam bahasa C

dapat dipergunakan dalam bahasa C++.

Kerangka program C++

#include <iostream.h>

//Protopype fungsi

tipe_data nama_fungsi(parameter1,parameter2,..);

//Fungsi utama

void main()

{

statemen_yang_akan_dilakukan;

...

return 0;

}

//Implementasi fungsi

tipe_data nama_fungsi(parameter1,parameter2,...)

{

statemen_yang_akan_dilakukan;

...

}

Contoh1 :

Page 4: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

#include<iostream.h>

int main()

{

cout <<"Selamat menggunakan C++";

return 0;

}

Keterangan:

#include adalah sebuah prosesor pengarah yang mengatakan kepada kompiler untuk

meletakan kode dari header file iostream.h kedalam program. Fungsi cout memerlukan

file iostream.h.

Main adalah nama judul fungsi.

Tanda () digunakan untuk mengapit argumen fungsi yaitu nilai yang akan dilewatkan ke

fungsi.

Tanda { pada fungsi main() menyatakan awal eksekusi program. Adapun } pada fungsi

main() menyatakan akhir eksekusi program.

Pemakaian fungsi cout dipakai untuk menampilkan text di layar monitor anda.

memakai tanda atau symbol <<, yang diketahui sebagai operator pemasukan (insertion

operators). Tanda tersebut mengatakan kepada kompiler agar segera menghasilkan

output sesuai dengan input anda.

”Selamat menggunakan C++“ adalah suatu pernyataan yang diapit oleh tanda petik

ganda. Setiap pernyataan harus diakhiri dengan tanda titik koma (;).

return 0 maksudnya pada baris ini juga ada kode yang memerintahkan fungsi main

kembali ke 0. Pada saat satu kali kembali.

Contoh 2:

#include <iostream.h>

int main()

{

int x, y, z;

cout <<“Masukkan bilangan kesatu:“;

cin >> x;

cout <<“Masukkan bilangan kedua:“;

cin >> y;

z = x + y;

cout << ”Jadi hasil penjumlahannya adalah: ” << z;

return 0;

}

Page 5: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusi :

1. Komentar :

Komentar merupakan bagian yang penting dalam program.

Komentar tidak akan mempengaruhi terhadap jalannya program karena

komentar tidak ikut dieksekusi pada saat proses kompilasi.

Fungsi komentar antara lain:

1. Menjelaskan tujuan / fungsi program

2. Memudahkan saat program dibuat atau direvisi

3. Menjelaskan keterangan-keterangan lain tentang kegunaan sejumlah

pernyataan dalam program.

a. Menggunakan tanda //

Pada C++ suatu komentar diawali dengan dua tanda garis miring (//). Semua

tulisan yang terletak sesudah tanda // hingga akhir baris dengan sendirinya akan

diperlakukan sebagai keterangan. Tanda ini digunakan untuk menuliskan

komentar yang banyaknya hanya satu baris.

b. Menggunakan tanda /*.....*/

Tanda ini dapat digunakan untuk menuliskan komentar yang banyaknya satu

baris atau lebih. Bentuk ini bermanfaat untuk mengabaikan sejumlah pernyataan

yang telah dibuat oleh pemrograman karena suatu alasan misalnya sedang

melacak kesalahan.

2. Identifier

Identifier (pengenalan) adalah suatu nama yang biasa dipakai dalam pemrograman

untuk menyatakan variabel, konstanta bernama, tipe data, fungsi, label, objek.

Indentifikasi dilakukan untuk mempermudah proses penanganan data atau nilai.

Ketentuan penulisan identifier:

a. Tidak boleh berupa angka atau diawali dengan karakter yang berupa angka.

b. Tidak boleh mengandung spasi.

c. Tidak boleh menggunakan karakter-karakter simbol ( #, @, ?, $, dll).

d. Tidak boleh menggunakan kata kunci (keyword) yang terdapat pada C++.

Page 6: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

e. Nama identifier sebaiknya disesuaikan dengn kebutuhannya artinya jangan

sampai orang lain bingung hanya karena salah satu penamaan identifier.

Contoh identifier:

int bilangan_bulat;

long X2;

int A[5]

const int MAX=5;

int A=10, B=15, C=25;

3. Tipe Data

Tipe data berfungsi untuk merepresentasikan jenis dari sebuah nilai yang terdapat dalam

program. Dalam C++ terdapat beberapa tipe data dasar yang telah didefinisikan yaitu:

1. Tipe bilangan bulat (integer)

Digunakan untuk data-data angka yang tidak mengandung angka dibelakang koma.

Misalnya 3, 21, 78.

contoh:

#include <iostream.h>

int main()

{

int x; //mendeklarasikan variabel x dengn tipe data int

x=3; //melakukan assigment terhadap variabel x

cout <<“Nilai x adalah “<<x;

return 0;

}

2. Tipe Bilangan Desimal (floating-point)

Adalah tipe yang mempresentasikan data-data bilangan yang mengandung

angka dibelakang koma, misalnya 3.16, 21.5, dll.

Tipe data Float = 32, double = 64, dan long double = 80.

Contoh:

#include <iostream.h>

int main()

{

double y;

y = 27.55; //melakukan assigment terhadap variabel y

cout <<“Nilai y adalah “<<y;

return 0;

}

Page 7: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

3. Tipe Logika (boolean)

Tipe ini merepresentasikan data-data yang hanya mengandung dua buah nilai, yaitu

nilai logika (boolean) yang terdiri dari nilai benar (direpresentasikan dengan nilai 1) dan

nilai salah (direpresentasikan dengan nilai 0).

4. Tipe Karakter / String

Tipe ini merepresentasikan data-data yang berupa karakter, dan dinyatakan dengan

tipe char, sedangkan untuk string dinyatakan dengan pointer dari tipe char yaitu char*.

Contoh :

#include <iostream.h>

int main()

{

char Karakter ='A';

char*nama ="Susi Susanti";

char Jurusan[15]="INFORMATIKA";

cout <<Karakter<<endl;

cout <<nama<<endl;

cout <<Jurusan<<endl;

return 0;

}

5. Tipe data Bentukan

Adalah tipe data yang dibuat sendiri sesuai kebutuhan dalam program yang akan

dimuat.

a. Struktur

Struktur adlah tipe data bentukan yang menyimpan lebih dari satu variabel bertipe

sama maupun berbeda.

Deklarasinya:

Struct nama_struktur

{

Tipe_data variabel1;

Tipe_data variabel2;

......

};

#include<iostream.h>

#include<string.h>

int main()

Page 8: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

{

struct MAHASISWA

{

char NIM[15];

char Nama[20];

char Alamat[30];

char Kota[15];

}A;

strcpy(A.NIM,"01500024");

strcpy(A.Nama,"Susi Susanti");

strcpy(A.Alamat,"Jl.Raya Meruya Selatan");

strcpy(A.Kota,"Jakarta");

cout<<A.NIM<<endl;

cout<<A.Nama<<endl;

cout<<A.Alamat<<endl;

cout<<A.Kota<<endl;

return 0;

Hasil Eksekusi :

b. Enumerasi

Tipe Enumerasi adalah tipe data yang nilainya terbatas pada nilai-nilai yang telah

didefinisikan saja. Tipe enumerasi digunakan untuk membentuk tipe data yang nilainya

pasti.

Deklarasinya:

enum nama_tipe{nilai1, nilai2,....};

Contoh pendefinisian tipe enumerasi:

enum JENIS_KELAMIN{Pria, Wanita};

enum HARI{Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu};

Page 9: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

contoh :

#include<iostream.h>

#include<string.h>

enum JENIS_KELAMIN{Pria, Wanita};

int main()

{

struct MAHASISWA

{

char NIM[15];

char Nama[20];

char Alamat[30];

char Kota[15];

JENIS_KELAMIN gender;

}A;

strcpy(A.NIM,"01500024");

strcpy(A.Nama,"Susi Susanti");

strcpy(A.Alamat,"Jl.Raya Meruya Selatan");

strcpy(A.Kota,"Jakarta");

A.gender=Wanita;

cout<<"NIM : "<<A.NIM<<endl;

cout<<"Nama : "<<A.Nama<<endl;

cout<<"Alamat : "<<A.Alamat<<endl;

cout<<"Kota : "<<A.Kota<<endl;

cout<<"Jenis Kelamin : "<<A.gender<<endl;

return 0;

}

Hasil Eksekusi :

Page 10: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Latihan :

1. Buatlah program dengan menggunakan struct dengan hasil eksekusi program

sebagai berikut:

Plat Nomor Kendaraan : B1669OK

Jenis Kendaraan : AVANZA

Nama Pemilik : Bambang Susilo

Alamat : Jl. Meruya raya No 1

Kota : Jakarta

2. Buatlah program dengan tampilan sbb:

Masukkan sebuah huruf = .............

Masukan sebuah kata = .................

Masukkan Angka = ..................

Huruf yang Anda masukkan adalah .............

Kata yang Anda masukkan adalah ..............

Angka yang Anda masukkan adalah ........

Page 11: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 01 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 12: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Tehnik Informatika 

02 87042  Tim Dosen

 

 

 

Abstract  Kompetensi  Operator || dan && dalam bahasa C++

Proses konversi dari multi conditions menjadi nested if

Mampu menggunakan operator || (OR) dan && (AND) dan melakukan kombinasi antara berbagai operator tersebut.

Mampu melakukan konversi dari multi conditions menjadi nested if

Page 13: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

OPERATOR C++

Operator adalah simbol yang mengolah nilai pada operand dan menghasilkan satu nilai

baru.

Operator dapat dikelompokan menjadi 4 bagian yaitu:

1. Operator Assignment

2. Operator Unary

3. Operator Binary

4. Operator Ternary

1. Operator Assignment

Adalah operator yang berfungsi untuk memasukkan (assign) nilai ke dalam suatu

variabel ataupun konstanta. Operator ini dilambangkan dengan tanda sama dengan (=)

Contoh:

MyChar = 'C';

MyString = "Rahasia C++";

MyInteger = 24;

MyDouble = 22.021;

2. Operator Unary

Adalah operator yang hanya melibatkan sebuah operand. Yang termasuk ke dalam tabel

operator unary antara lain:

Operator Jenis Operasi Contoh

+ Positif +7

- Negatif -7

++ Incremen C++

-- decremen C--

Increment adalah suatu penambahan nilai yang terjadi pada sebuah variabel.

Operator yang digunakan untuk melakukan increment adalah operator ++.

Ada dua jenis increment dalam C++ yaitu pre-increment dan post-increment.

Pre-increment artinya melakukan penambahan nilai sebelum suatu variabel itu

diproses. Post-incremen artinya melakukan proses terlebih dahulu sebelum

dilakukan penambahan nilai.

Page 14: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Decrement merupakan kebalikan dari proses increment, yaitu menurunkan

(mengurangi) nilai dari suatu variabel. Operator yang digunakan untuk melakukan

decrement adalah operator --. Decrement juga dibagi 2 yaitu pre-decrement dan

post-decrement.

Contoh :

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

void main()

{ int A; //mendeklarasikan variabel

A = 5;

cout<<"Contoh melakukan pre-increment \n";

cout<<"Nilai A awal adalah : "<<A<<endl;

cout<<"Nilai ++A adalah :"<<++A<<endl;

cout<<"Nilai A akhir adalah:"<<A<<endl;

cout<<'\n'<<endl;

cout<<"Contoh melakukan pre-decrement \n";

cout<<"Nilai A awal adalah : "<<A<<endl;

cout<<"Nilai --A adalah :"<<--A<<endl;

cout<<"Nilai A akhir adalah:"<<A<<endl;

cout<<'\n'<<endl;

//mengubah nilai A menjadi 10

A = 10;

cout<<"Contoh melakukan post-increment \n";

cout<<"Nilai A awal adalah : "<<A<<endl;

cout<<"Nilai A++ adalah :"<<A++<<endl;

cout<<"Nilai A akhir adalah:"<<A<<endl;

cout<<'\n'<<endl;

cout<<"Contoh melakukan post-decrement \n";

cout<<"Nilai A awal adalah : "<<A<<endl;

cout<<"Nilai A-- adalah :"<<A--<<endl;

cout<<"Nilai A akhir adalah:"<<A<<endl;

cout<<'\n'<<endl;

getch();

}

Page 15: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusi :

3. Operator Binary

Adalah operator yang digunakan dalam operasi yang melibatkan dua buah operand.

Operator Binary dikelompokan menjadi 4 jenis yaitu:

a. Operator Aritmatika

b. Operator Logika

c. Operator Relasional

d. Operator Bitwise

a. Operator Aritmatika

Adalah operator yang digunakan untuk melakukan operasi-operasi aritmatika seperti

penjumlahan, pengurangan, dan sebagainya.

Operator Keterangan

* Perkalian

/ Pembagian

% Modulus atau sisa bagi

+ Penjumlahan

- Pengurangan

Contoh :

Page 16: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

int main()

{

int X = 10, Y = 3;

int jumlah, kurang, kali, bagi, sisa_bagi;

jumlah = X + Y;

kurang = X - Y;

kali = X * Y;

bagi = X / Y;

sisa_bagi= X % Y;

cout<<X<<" + "<<Y<<" = "<<jumlah<<endl;

cout<<X<<" - "<<Y<<" = "<<kurang<<endl;

cout<<X<<" * "<<Y<<" = "<<kali<<endl;

cout<<X<<" / "<<Y<<" = "<<bagi<<endl;

cout<<X<<" % "<<Y<<" = "<<sisa_bagi<<endl;

getch();

}

Hasil eksekusi :

b. Operator Logika

Adalah operator yang digunakan untuk melakukan operasi dimana nilai yang

dihasilkan dari operasi tersebut hanya bernilai benar (true / 1) atau salah (false / 0).

Nilai ini biasa disebut dengan boolean. Yang termasuk operator logika antara lain:

1. Operator AND (&&)

Page 17: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

hanya akan menghasilkan nilai 1 (benar) jika semua operand-nya bernilai benar,

namun jika tidak maka operasi tersebut akan menghasikan nilai 0 (salah).

2. Operator OR (||)

hanya akan menghasilkan nilai 0 (salah) jika semua operand-nya bernilai salah,

namun jika tidak maka operasi tersebut akan menghasilkan nilai 1 (benar).

3. Operator NOT (!)

Nilai yang dihasilkan oleh nilai NOT adalah kebalikan dari nilai yang dikandung di

dalamnya. Jika nilai awal 1 (benar) maka nilai operasi NOT menjadi 0 (salah).

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

int main()

{

cout<<"Logika AND"<<endl;

cout<<" 1 AND 1 = "<<(1&&1)<<endl;

cout<<" 1 AND 0 = "<<(1&&0)<<endl;

cout<<" 0 AND 1 = "<<(0&&1)<<endl;

cout<<" 0 AND 0 = "<<(0&&0)<<endl;

cout<<endl;

cout<<"Logika OR"<<endl;

cout<<" 1 OR 1 = "<<(1||1)<<endl;

cout<<" 1 OR 0 = "<<(1||0)<<endl;

cout<<" 0 OR 1 = "<<(0||1)<<endl;

cout<<" 0 OR 0 = "<<(0||0)<<endl;

cout<<endl;

cout<<"Logika NOT"<<endl;

cout<<" NOT 1 = "<<(!1)<<endl;

cout<<" NOT 0 = "<<(!0)<<endl;

getch();

}

Hasil Eksekusi :

Page 18: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

c. Operator Relasional

Adalah operator yang digunakan untuk menentukan relasi atau hubungan dari dua

buah operand. Operator ini banyak digunakan untuk melakukan pengecekan sebuah

ekspresi (kondisi) dalam struktur percabangan.

OperatorJenis Operasi

> Lebih besar

< Lebih kecil

>= Lebih besar atau sama dengan

<= Lebih kecil atau sama dengan

== Sama dengan

!= Tidak sama dengan

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

int main()

{

int nilai;

//memasukkan bilangan bulat

cout<<" Masukkan sebuah bilangan bulat : ";

cin>>nilai;

Page 19: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

if (nilai % 2 == 0)

cout<<nilai<<" adalah bilangan Genap"<<endl;

else

cout<<nilai<<" adalah bilangan Ganjil"<<endl;

getch();

}

Hasil eksekusi :

d. Operator Bitwise

Adalah operator yang digunakan untuk melakukan operasi-operasi yang berhubungan

dengan pemanipulasian bit.

Yang termasuk dalam operator bitwise anta lain:

Operator Keterangan

<< Shift left

>> shift right

&& operasi bit AND

|| Operasi bit OR

^ Operasi bit XOR

~ Operasi bit NOT

Operator & berguna untuk melakukan operasi ”DAN” pada tataran bit.

1001 9

1010 10

1000 8

Page 20: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Operator | berguna untuk melakukan operasi ”ATAU” pada tataran bit.

1001 9

1010 10

1011 11

Operator ^ berguna untuk melakukan operasi ”ATAU EKSKLUSIF” pada tataran bit.

1001 9

1010 10

0011 3

Operator ~ memberikan hasil dengan masing-masing bit berupa kebalikan dari bit

operand.

1011 1001

0100 0110

Operator << (geser kiri) berfungsi untuk menggeser bit-bit ke kiri.

contoh: 29 << 1 memberikan nilai hasil 58

0001 1101 29

0011 1010 58

Operator << (geser kanan) berfungsi untuk menggeser bit-bit ke kanan.

contoh: 29 << 1 memberikan nilai 14

0001 1101 29

0000 1110 14

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

int main()

{ int x=64;

int y= 1;

cout<<" NOT "<<x<<" = "<< ~x<<endl;

cout<<x<<" OR "<<y<<" = "<<(x|y)<<endl;

cout<<x<<" AND "<<y<<" = "<<(x&y)<<endl;

cout<<x<<" XOR "<<y<<" = "<<(x^y)<<endl;

cout<<x<<" GESER KIRI "<<y<<" = "<<(x<<y)<<endl;

cout<<x<<" GESER KANAN "<<y<<" = "<<(x>>y)<<endl;

getch();

}

Page 21: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil eksekusi :

4. Operator Ternary

Adalah operator yang digunakan dalam operasi yang melibatkan tiga buah operand.

Bentuk umum:

Ekspresi1? Ekspresi2: Ekspresi3;

Jika ekspresi1 bernilai benar, maka program akan mengeksekusi ekspresi2.

Sedangkan jika ekspresi1 salah maka yang dieksekusi adalah ekspresi3.

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

int main()

{ int angka;

cout<<"Masukkan bilangan: ";

cin>>angka;

(angka %2 ==0) ? (cout<<angka<<" adalah bilangan Genap \n") :

(cout<<angka<<" adalah bilangan Ganjil \n");

getch();

}

Hasil eksekusi :

Page 22: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Latihan :

1. Buatlah program untuk menentukan bilangan positif atau negatif dengan menggunakan

operator ternary!

2. Buatlah program untuk menentukan nilai mahasiswa lulus atau tidak lulus (nilai lulus jika

>= 65) dengan menggunakan operator ternary!

3. Buatlah program untuk menghitung menghitung luas persegi panjang (panjang * lebar)

dengan inputan dari user

4. Buatlah program untuk menghitung menghitung Keliling lingkaran (2 * PI * jari-jari),

Dengan inputan dari user!

Page 23: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 12 Pemrograman Algoritma Struktur Data Modul 02 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 24: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Tehnik Informatika 

03 87042  Tim Dosen

 

 

 

Abstract  Kompetensi  Struktur Kondisi IF

Struktur Kondisi Switch Case

Mampu menggunakan struktur kondisi IF dalam bahasa pemrograman C++.

Mampu menggunakan struktur kondisi Switch Case dalam bahasa pemrograman C++.

Page 25: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

PERCABANGAN (DECISION)

Decision digunakan untuk memilih salah satu alternatif jawaban yang tepat dari pilihan

yang ada.

Suatu pemilihan statemen yang akan dieksekusi dimana pemilihan tersebut didasarkan

atas kondisi tertentu.

Statemen yang terdapat dalam sebuah blok percabangan akan dieksekusi jika kondisi

yang didefinisikan terpenuhi (bernilai benar) Artinya jika kondisi tidak terpenuhi (bernilai

salah) maka statemen tersebut tidak ikut dieksekusi atau akan diabaikan oleh compiler.

1. Struktur satu kondisi (perintah IF)

• digunakan untuk menyeleksi suatu kondisi tunggal.

• Bila proses yang diseleksi terpenuhi atau bernilai benar, maka pernyataan yang ada

di dalam blok if akan diproses dan dikerjakan.

Bentuk umum struktur kondisi if adalah:

if(kondisi)

pernyataan;

contoh :

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

void main()

{ int nilai; //memasukkan bilangan bulat

cout<<"Masukkan sebuah bilangan bulat: ";

cin>>nilai; //menampilkan teks jika nilai yang tersimpan lebih besar dari 0

if (nilai > 0)

cout<<"Nilai yang Anda masukkan adalah bilangan positif";

getch();

}

Hasil Eksekusi :

Page 26: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

2. Struktur dua kondisi (perintah if – else) Perintah if.....else minimal terdapat dua pernyataan.

Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama

yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan

yang kedua yang dilaksanakan.

Bentuk Umum :

if (kondisi)

{ statemen_jika_kondisi_terpenuhi;

}

else

{

statemen_jika_kondisi_tidak_terpenuhi;

}

Contoh :

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

void main()

{ int nilai;

cout<<"Masukkan sebuah bilangan bulat: ";

cin>>nilai;

if (nilai %2 == 0)

{ cout<<nilai <<" adalah bilangan genap";

}

else

{ cout<<nilai <<" adalah bilangan ganjil";

}

getch();

}

Hasil eksekusi :

Page 27: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

3. Struktur tiga kondisi (perintah multiple if – else)

Percabangan jenis ini merupakan perluasan dari struktur yang memiliki dua

kondisi diatas yaitu dengan menyisipkan satu atau lebih kondisi ke dalamnya.

Bentuk umum:

if (kondisi1)

{

statemen_jika_kondisi1_terpenuhi;

}

else if (kondisi2)

{

statemen_jika_kondisi2_terpenuhi;

}

else if (kondisi3)

{

statemen_jika_kondisi3_terpenuhi;

} ....

else

{

statemen_jika_semua_kondisi_tidak_terpenuhi;

}

Contoh 1:

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

Page 28: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

#include <conio.h>

void main()

{ int nilai; //memasukkan bilangan bulat

cout<<"Masukkan sebuah bilangan yang akan diperiksa : ";

cin>>nilai; //pengecek bilangan apakah habis dibagi dua atau tidak

if (nilai > 0)

{

cout<<nilai<< " adalah bilangan positif ";

}

else if (nilai < 0)

{

cout<<nilai<< " adalah bilangan negatif ";

}

else

{

cout<< " Anda memasukkan bilangan NOL ";

}

getch(); }

Hasil Eksekusi :

Contoh 2 :

Page 29: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

void main()

{ int nilai;

char huruf;

cout<<"Masukkan nilai : " ;

cin>>nilai;

if ((nilai>=81) && (nilai<=100))

huruf='A';

else

if ((nilai>=71) && (nilai<=80))

huruf='B';

else

if ((nilai>=61) && (nilai<=70))

huruf='C';

else

if ((nilai>=51) && (nilai<=60))

huruf='D';

else

huruf='E';

cout<<"Jadi nilai huruf yang didapat adalah: "<<huruf;

getch();

}

Hasil eksekusi :

Page 30: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Latihan :

Buatlah program untuk menentukan huruf, dengan ketentuan sebagai

berikut:

Jika karakter >=’A’ dan karakter <=’Z’ maka Karakter yang Anda masukkan adalah

huruf besar.

Jika karakter >=’a’ dan karakter <=’z’ maka Karakter yang Anda masukkan adalah

huruf kecil.

Jika karakter >=’0’ dan karakter <=’9’ maka Karakter yang Anda masukkan adalah

Angka.

Jika bukan semuanya berarti Karakter yang Anda masukkan adalah bukan

alphanumeric.

Jawab :

#include <vcl.h>

#pragma hdrstop

//Program menentukan karakter

#include <iostream.h>

#include <conio.h>

void main()

{ char karakter;

cout<<"Masukkan sebuah karakter: ";

cin>>karakter;

if (karakter >= 'A' && karakter <= 'Z')

cout<<"Masukkan Anda adalah huruf besar";

else if (karakter >= 'a' && karakter <= 'z')

cout<<"Masukkan Anda adalah huruf kecil";

else if (karakter >= '0' && karakter <= '9')

cout<<"Masukkan Anda adalah angka";

else

cout<<"Masukkan Anda bukan alphanumeric";

getch();

}

Page 31: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusi :

4. Perintah switch

Perintah ini memiliki bentuk switch – case yang digunakan untuk pilihan berjumlah

banyak.

Perintah switch tidak dianjurkan pada pilihan yang melibatkan jangkauan nilai (range)

tetapi dianjurkan pada pilihan berupa konstanta dan banyak misalnya untuk memilih

menu.

Bentuk umum:

switch (pernyataan)

{ case nilai_1:

blok_pernyataan1;

break;

case nilai_2:

blok_pernyataan2;

break;

Page 32: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

default:

blok_pernyataan_n;

}

Cara kerjanya:

1. switch akan mengevaluasi pilihan dan apabila isinya sama dengan nilai_1,

maka blok pernyataan 1 akan dijalankan sampai menemukan perintah break untuk

kemudian keluar dari blok switch.

2. Bila pilihan tidak sama isinya dengan nilai_1, maka akan dicocokkan lagi dengan

nilai_2. dan apabila isinya sama dengan nilai_2, maka blok pernyataan 2 akan

dijalankan sampai menemukan perintah break untuk kemudian keluar dari blok

switch.

3. Terakhir, apabila isi pilihan tidak sesuai dengan nilai_1, nilai_2 dan seterusnya maka

secara otomatis yang dijalankan adalah blok pernyataan default.

Contoh :

#include <vcl.h> #pragma hdrstop #include <iostream.h> #include <conio.h> void main() { { int bil; cout<<"Masukkan sebuah angka (1 .. 7): "; cin>>bil; switch (bil)

{ case 1: cout<<"Hari ke - "<<bil<<"adalah MINGGU";

break; case 2: cout<<"Hari ke - "<<bil<<" adalah SENIN";

break; case 3: cout<<"Hari ke - "<<bil<<"adalah SELASA"; break; case 4: cout<<"Hari ke - "<<bil<<"adalah RABU";

break; case 5: cout<<"Hari ke - "<<bil<<"adalah KAMIS";

break; case 6: cout<<"Hari ke - "<<bil<<"adalah JUMAT";

break; case 7: cout<<"Hari ke - "<<bil<<"adalah SABTU";

break;

Page 33: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

default: cout<<"Kode tidak ada"; } getch(); } }

Hasil eksekusi :

Soal Latihan :

1. Buatlah program menggunakan menu :

A. Menentukan karakter

B. Toko Buku

C. Buatlah program untuk menentukan masukkan dari user apakah berupa huruf

vokal atau konsonan!

2. Buatlah program untuk menghitung luas dengan menggunakan menu, dengan

ketentuan sebagai berikut:

1. Menghitung Luas Bujur Sangkar.

2. Menghitung Luas Persegi Panjang.

3. Menghitung Luas Segi Tiga

4. Menghitung Luas Lingkaran.

Page 34: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 03 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 35: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Tehnik Informatika 

04 87042  Tim Dosen

 

 

 

Abstract  Kompetensi  Struktur perulangan dengan for,  do‐while dan while 

Pengaplikasian struktur perulangan  untuk memecahkan soal‐soal  matematika dan fisika 

  

Mampu menggunakan struktur perulangan dengan for, do‐while dan while dalam Bahasa Pemrograman C++ 

Mampu memanfaatkan struktur perulangan untuk memecahkan soal‐soal matematika dan fisika 

 

Page 36: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

 

PERULANGAN (LOOPING)

1. Pernyataan While

Pada pernyataan while, pengecekan terhadap loop dilakukan dibagian awal (sebelum

tubuh loop). Bentuk umum :

while (kondisi)

pernyataan;

Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Proses

perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan

berhenti bila kondisinya bernilai salah.

Contoh :

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

void main()

{ int x;

x = 1; /* awal variabel */

while (x <= 10) /* Batas akhir perulangan */

{ cout<<"Bahasa C++ "<<endl;

x ++; /* variabel x ditambah dengan 1 */

}

getch(); }

Hasil Eksekusi :

Page 37: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Keterangan :

Pada perulangan while, proses atau perintah mencetak kata-kata “BAHASA C++”

akan terus dilakukan selama variabel x masih kurang atau sama dengan 10. Setiap

kali melakukan perulangan, nilai dari variabel x akan bertambah 1.

Contoh 2:

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

void main()

{ int i = 0;

while (i != 99)

{ cout<<" Masukkan Sebuah Bilangan : ";

cin>>i;

cout<<"Bilangan Anda adalah= "<<i<<endl;

}

getch();

}

Hasil eksekusi :

Ket :

Program minta inputan dari user dengan tipe integer

Selama user belum memasukkan nilai 99 maka program akan terus melooping.

Looping akan berhenti jika user telah memasukkan angka 99.

Page 38: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

2. Pernyatan Do .. While…

Pada pernyataan do-while, tubuh loop berupa pernyataan.

Pada pernyataan do, mula-mula pernyataan dijalankan.

Selanjutnya, kondisi diuji. Seandainya kondisi bernilai benar, maka pernyataan

dijalankan lagi, kemudian kondisi diperiksa kembali, dan seterusnya.

Kalau kondisi bernilai salah, maka pernyataan tidak dijalankan lagi.

Pada dasarnya struktur perulangan do....while sama saja dengan struktur while, hanya

saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di

atas sementara pada perulangan do....while, seleksi while berada di bawah batas

perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan

terjadi satu kali perulangan.

Bentuk umum: do

pernyataan;

while (kondisi)

Contoh :

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

void main()

{ int x; x = 1;

do

{ cout<<"BAHASA C++ "<<endl; x ++;

}

while(x <= 10);

getch();

}

Hasil eksekusi :

Page 39: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

3. Pernyataan For

Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah

diketahui jumlah perulangannya. Dari segi penulisannya, struktur perulangan for

tampaknya lebih efisien karena susunannya lebih simpel dan sederhana.

Bentuk umum perulangan for:

for(inisialisasi; syarat; penambahan)

pernyataan;

Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol.

syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan.

penambahan : pengatur perubahan nilai variabel kontrol.

Contoh :

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

void main()

{ /* Program perulangan menggunakan for */

int x;

for(x = 1; x<= 10; x++)

{ cout<<"BAHASA C++ "<<endl;

}

getch();

}

Hasil Eksekusi :

Page 40: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

4. FOR BERSARANG (NESTED FOR)

For bersarang dapat melibatkan lebih dari satu variabel namun yang jelas satu

diantaranya akan digunakan sebagai indeks perulangan.

Bentuk umum:

for( variabel1=nilai_awal; kondisi1; variabel1++){

for( variabel2=nilai_awal; kondisi2; variabel2++){

for( variabel3=nilai_awal; kondisi3; variabel3++){

Statemen_statemen yang akan diulang;

….

} } }

Contoh 1 :

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>

int main()

{ int x,y; for (x=1; x<=10; x++)

{ for (y=1; y<=10; y++)

{

cout<<setw(4)<<x*y<<" ";

}

cout<<"\n";

}

getch();

}

Hasil eksekusi :

Page 41: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Contoh 2 :

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>

int main()

{

int x,y ; for (x=1; x<=10; x++)

{

for (y=1; y<=x; y++)

{

cout<<setw(4)<<x*y<<" ";

}

cout<<"\n";

}

getch();

}

Hasil eksekusi :

Contoh 3:

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>

int main()

{ int b,a,e;

char u[26]= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

Page 42: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

cout<<"Masukan Angka : ";

cin>>b;

for(a = b-1; a>=0; a--){

cout<<u[a]<<" ";}

getch();

}

Hasil eksekusi :

Contoh 4 :

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>

int main()

{

int a,b,e;

char u[26]= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

cout<<"Masukan Angka : ";

cin>>e;

for(b = 0; b< e; b++){

for(a = 0; a<= b; a++){

cout<<u[a]<<" ";}

cout<<endl;}

getch();

}

Hasil eksekusi :

Page 43: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Contoh program faktorial :

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include<conio.h>

using namespace std;

long faktorial(int m)

{

if (m == 0) return 1;

else return m * faktorial(m - 1);

}

int main()

{

int n = 3; cout << n << "! = "

<< faktorial(n) << endl;

n = 6;

cout << n << "! = "

<< faktorial(n) << endl;

getch();

}

Page 44: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil eksekusi :

Soal Latihan :

1. Buatlah program dengan menggunakan while dengan tampilan sbb:

2. Buatlah program dengan menggunakan nested for dengan tampilan sbb:

3. Buatlah program untuk menampilkan deret bilangan genap antara 2 sampai 30, dengan

menggunakan for

4. Buatlah program untuk menampilkan deret bilangan ganjil antara 11 sampai 50

5. Buatlah program untuk menampilkan deret bilangan genap antara 3 sampai 50

Page 45: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 04 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 46: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Tehnik Informatika 

05 87042  Tim Dosen

 

 

 

Abstract  Kompetensi 

Function Dalam Bahasa C  

  

Mampu membuat program yang mengandung void function dan typed function  

 

Page 47: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Function (Fungsi)

Fungsi adalah satu blok kode yang dapat melakukan tugas tertentu atau satu blok

instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program. Sebuah

fungsi berisi sejumlah pernyataan yang dikemas dalam sebuah nama. Nama tersebut

selanjutnya dapat dipanggil berkali-kali di beberapa tempat dalam program. Keuntungan

pembuatan fungsi secara umum adalah :

Program besar dapat dipisah menjadi program-program kecil.

Dapat dikerjakan oleh beberapa orang sehingga koordinasi mudah.

Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan

kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.

Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa

mengganggu program keseluruhan.

Mempermudah dokumentasi.

Sifat-sifat dari fungsi yang baik adalah :

Nilai fan-in tinggi, artinya semakin sering suatu fungsi dipanggil oleh pengguna semakin

tinggi nilai fan-in.

Fan-out rendah, artinya semakin spesifik fungsi suatu modul akan semakin rendah nilai

fan-out.

Self-contained tinggi, artinya kemampuan untuk memenuhi kebutuhannya sendiri.

Bentuk umum sebuah fungsi adalah:

Tipe_fungsi nama_fungsi (parameter fungsi)

Deklarasi parameter

{

Tubuh fungsi

}

Tipe fungsi digunakan untuk menentukan tipe keluaran fungsi

I. Fungsi Tanpa Nilai Balik

Fungsi tanpa nilai balik (return Value) digunakan untuk melakukan proses-proses yang

tidak menghasilkan nilai, seperti melakukan pengulangan, proses pengesetan nilai

ataupun yang lainnya.

Fungsi semacam ini tipe kembaliannya akan diisi dengan nilai void.

Page 48: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Bentuk umumnya:

Void_nama_fungsi(parameter1, parameter2,..)

{

Statemen_yang_akan_dieksekusi;

. . .

}

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void tulis(void)

{

int j;

for (j=0;j<10;j++)

{

cout<<"Belajar Bahasa C++"<<endl;

}

}

main(void)

{

tulis();

getch();

}

Hasil eksekusi :

Page 49: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

2. Fungsi Dengan Nilai Balik

Fungsi dengan nilai balik yaitu fungsi yang digunakan untuk melakukan proses-proses

yang berhubungan dengan nilai. Adapun cara pendefinisiannya adalah dengan menuliskan

tipe data dari nilai yang akan dikembalikan didepan nama fungsi.

Bentuk umum:

tipe_data nama_fungsi(parameter1, parameter2,..)

{

Statemen_yang_akan_dieksekusi;

. . .

return nilai_balik;

}

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

#include<iostream.h>

LuasBujurSangkar(int sisi)

{

int L;

L = sisi * sisi;

return L;

}

main()

{

int s, Luas;

cout<<"Masukkan nilai sisi : ";

cin>>s;

Luas=LuasBujurSangkar(s);

cout<<"Luas Bujur Sangkar adalah "<<Luas;

getch();

}

Page 50: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusi :

3. Fungsi Dengan Parameter

Parameter adalah suatu variabel yang berfungsi untuk menampung nilai yang akan

dikirimkan ke dalam fungsi. Parameter itu sendiri terbagi dua macam yaitu:

Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi

fungsi.

Parameter aktual adalah parameter (tidak selamanya menyatakan variabel) yang

digunakan dalam pemanggilan fungsi.

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

int TambahSatu(int X)

{

X = X + 1;

return X;

}

main()

{

int bilangan;

cout<<"Masukkan sebuah bilangan : ";

cin>>bilangan;

cout<<"Nilai akhirnya adalah "<<TambahSatu(bilangan);

getch();

}

Page 51: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusi :

Melewatkan Parameter

Ada 2 cara melewatkan Parameter yaitu:

1. Berdasarkan nilai (pass by value).

2. Berdasarkan referensi (pass by reference).

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void Kali2(int& X)

{

X = X * 2;

cout<<"Nilai didalam fungsi adalah: "<<X<<endl;

}

main()

{

int bilangan;

cout<<"Masukkan sebuah bilangan : ";

cin>>bilangan;

cout<<endl;

cout<<"Nilai awal : "<<bilangan<<endl; //memanggil nilai awal

Kali2(bilangan); //memangggil fungsi Kali2

cout<<"Nilai akhirnya adalah "<<bilangan<<endl;

getchar();

}

Page 52: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusi :

Contoh pass by reference

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void Kali2(int& X)

{

X = X * 2;

cout<<"Nilai didalam fungsi adalah: "<<X<<endl;

}

main()

{

int bilangan;

cout<<"Masukkan sebuah bilangan : ";

cin>>bilangan;

cout<<endl;

cout<<"Nilai awal : "<<bilangan<<endl; //memanggil nilai awal

Kali2(bilangan); //memangggil fungsi Kali2

cout<<"Nilai akhirnya adalah "<<bilangan<<endl;

getch();

}

Page 53: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void Kali2(int& X);

main()

{

int bilangan;

cout<<"Masukkan sebuah bilangan : ";

cin>>bilangan;

cout<<endl;

cout<<"Nilai awal : "<<bilangan<<endl; //memanggil nilai awal

Kali2(bilangan); //memangggil fungsi Kali2

cout<<"Nilai akhirnya adalah "<<bilangan<<endl;

getch();

}

void Kali2(int& X)

{

X = X * 2;

cout<<"Nilai didalam fungsi adalah: "<<X<<endl;

}

Hasil eksekusi :

Page 54: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Soal Latihan :

1. Buatlah suatu fungsi untuk menjumlahkan 2 buah bilangan

Program :

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

int Tambah (int a, int b)

{

int r;

r = a + b;

return (r);

}

int main()

{

int z;

z = Tambah(5,3);

cout<<"Hasilnya = " <<z<<endl;

getch();

}

2. Buatlah Program tambah, kurang, kali, bagi dengan menggunakan fungsi

Program :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

float Tambah(float x, float y);

float Kurang(float x, float y);

float Kali(float x, float y);

float Bagi(float x, float y);

int main()

{

Page 55: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

int x,y;

cout<<"Masukan nilai pertama:"; cin>>x;

cout<<"Masukan nilai kedua:"; cin>>y;

cout<<"Hasil Penjumlahan:"<<Tambah(x,y)<<endl;

cout<<"Hasil Pengurangan:"<<Kurang(x,y)<<endl;

cout<<"Hasil Perkalian:"<<Kali(x,y)<<endl;

cout<<"Hasil Pembagian:"<<Bagi(x,y)<<endl;

getch();

}

float Tambah(float x, float y)

{

return (x+y);

}

float Kurang(float x, float y)

{

return (x-y);

}

float Kali(float x, float y)

{

return (x*y);

}

float Bagi(float x, float y)

{

return (x/y);

}

Page 56: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

3. Buatlah program menggunakan fungsi untuk menghitung luas persegi panjang dan luas

bujur sangkar!

Program :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

LuasBujurSangkar(int sisi)

{

int L;

L = sisi * sisi;

return L;

}

LuasPersegiPanjang(int panjang, int lebar)

{

int L;

L = panjang * lebar;

return L;

}

main()

{

int s,p,l, Luas;

cout<<"Menghitung Luas Bujur Sangkar"<<endl;

cout<<"Masukkan nilai sisi : "; cin>>s;

Luas=LuasBujurSangkar(s);

cout<<"Luas Bujur Sangkar adalah "<<Luas<<endl;

cout<<endl;

cout<<"Menghitung Luas Persegi Panjang"<<endl;

cout<<"Masukkan panjang : "; cin>>p;

cout<<"Masukkan lebar : "; cin>>l;

Luas=LuasPersegiPanjang(p,l);

cout<<"Luas Bujur Sangkar adalah "<<Luas<<endl;

getch();

}

Page 57: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 12 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil eksekusi

4. Buatlah fungsi tukar dari 2 buah inputan user!

//Program tukar

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void tukar(int& X, int& Y);

main()

{

int a,b;

cout<<"Masukkan bilangan pertama: ";

cin>>a;

cout<<"Masukkan bilangan kedua: ";

cin>>b;

cout<<endl;

cout<<"Sebelum ditukar (): "<<endl;

cout<<"Nilai pertama = "<<a<<endl;

cout<<"Nilai kedua = "<<b<<endl;

cout<<endl;

tukar(a,b);

cout<<"Sesudah ditukar () adalah "<<endl;

cout<<"Nilai pertama = "<<a<<endl;

cout<<"Nilai kedua = "<<b<<endl;

cout<<endl;

Page 58: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 13 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

getch();

}

void tukar(int& X, int& Y)

{

int Z;

Z = X;

X = Y;

Y = Z;

}

Hasil eksekusi :

Page 59: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 14 Pemrograman Algoritma Struktur Data Modul 05 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Indra Yatini B, Flowchart, Algoritma, dan Pemrograman Menggunakan Bahasa C++ Builder,

Graha Ilmu, Yogyakarta, 2010.

Page 60: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Tehnik Informatika 

06 87042  Tim Dosen

 

 

 

Abstract  Kompetensi 

Fungsi Rekursif  

  

Mampu  menjelaskan  konsep  fungsi rekursif 

Mampu  mengimplementasikan  masalah matematika  yang  solusinya  bersifat rekursif  dengan  program  yang mengandung fungsi rekursif  

Page 61: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 06 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

 

Fungsi Rekursif

Rekursif berarti suatu proses yang memanggil dirinya sendiri. Dalam rekursif

sebenarnya terkandung pengertian prosedur atau fungsi. Perbedaannya adalah bahwa

rekursif bisa memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat

pemanggil prosedur atau fungsi.

Rekursif merupakan teknik pemrograman yang penting, dan beberapa bahasa

pemrograman modern mendukung keberadaan proses rekursif ini. Pemanggilan prosedur

atau fungsi ke dirinya sendiri bisa berarti proses yang berulang yang tidak bisa diketahui

kapan akan berakhir. Dalam pemakaian sehari-hari, rekursi merupakan teknik pemrograman

yang berdaya guna untuk digunakan pada pekerjaan pemrograman dengan

mengekspresikannya ke dalam suku-suku dari program lain dengan menambahkan langkah-

langkah sejenis. Contoh paling sederhana dari proses rekursi adalah menghitung nilai

faktorial dari bilangan bulat. Nilai faktorial, secara rekursif dapat ditulis sebagai :

0! = 1

N! = N x (N-1)!, Untuk N > 0

yang secara notasi pemrograman bisa ditulis sebagai :

FAKTORIAL (0) = 1 1)

FAKTORIAL (N) = N * FAKTORIAL (N-1) 2)

Persamaan 2) di atas merupakan contoh hubungan rekurens (recurrence relation), yang

berarti bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang

sama dengan argumen yang lebih kecil.

Persamaan 1) yang tidak bersifat rekursif, disebut nilai awal. Setiap fungsi rekursi paling

sedikit mempunyai 1 (satu) nilai awal; jika tidak, fungsi tersebut tidak bisa dihitung secara

eksplisit.

Contoh program Rekursif

1. Faktorial :

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <conio.h>

Page 62: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 06 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

using namespace std;

//mendefinisikan Fungsi Faktorial

int Faktorial(int X)

{

if (X==1)

return (1);

return X * Faktorial(X-1); //memanggil dirinya sendiri

}

// Fungsi Utama

int main()

{

int Bilangan,Hasil;

cout<<"Masukkan Bilangan Yang Akan Dihitung : ";

cin>>Bilangan;

//Memanggil Fungsi Faktorial

Hasil=Faktorial(Bilangan);

//Menampilkan Hasil

cout<<Bilangan<<" ! = "<<Hasil;

getch();

}

Hasil Eksekusi :

Page 63: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 06 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

2. Faktorial

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

long factorial(long a)

{

if (a>1)

return (a*factorial(a-1));

else

return(1);

}

int main ()

{

long L;

cout<<"Masukkan nilai : ";

cin>>L;

cout<< "!" << L << " = " << factorial (L);

getch();

}

3. Program Pangkat :

//Pangkat

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

Page 64: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 06 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

#include <conio.h>

double Pangkat(double A, int N)

{

if (N==0)

return 1;

else

return A * Pangkat(A, N-1);

}

void main ()

{

int A,N;

cout<<"Masukkan nilai = "; cin>>A;

cout<<"Pangkat berapa = "; cin>>N;

cout<<"Hasil Pangkat = "<<Pangkat(A,N);

getch();

}

Hasil Eksekusi :

Latihan :

1. Buat program untuk menghitung deret S = 1+2+3+4+5+….+N menggunakan

Function Rekursi

2. Buat program untuk menghitung deret S = 2+4+6+8+10+….+2N menggunakan

Function Rekursi

3. Buat program untuk menghitung 10 deret Fibonacci dengan menggunakan Function

Rekursi:

1 1 2 3 5 8 13 21 34 55

Page 65: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 06 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Jawab :

No.1 Program Deret

//Deret

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

int S(int n)

{

if (n==1)

return (1);

else

return (n + S(n-1));

}

main ()

{

int n;

cout<<”Masukkan n = “; cin>>n;

cout<<”Deret S = 1 + 2 + 3 + 4 + 5 + …+ n \n”;

cout<<”Jumlah Deret S = “<<S(n);

getch();

}

Hasil Eksekusi :

Page 66: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 06 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

No. 2

//Deret

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

int S(int n)

{

if (n==1)

return (2);

else

return (2*n + S(n-1));

}

main ()

{

int n;

cout<<"Masukkan n = "; cin>>n;

cout<<"Deret S = 2 + 4 + 6 + 8 + 10 + ...+ n \n";

cout<<"Jumlah Deret S = "<<S(n);

getch();

}

Page 67: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 06 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusi :

Page 68: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 06 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Indra Yatini B, Flowchart, Algoritma, dan Pemrograman Menggunakan Bahasa C++ Builder,

Graha Ilmu, Yogyakarta, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 69: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Tehnik Informatika 

07 87042  Tim Dosen

 

 

 

Abstract  Kompetensi 

Array satu dimensi dan  Array dua dimensi  

  

Mampu membuat program untuk menginisialisasi array satu dimensi dan array dua dimensi.

Mampu membuat program untuk mengisi elemen array satu dimensi dan array dua dimensi menggunakan struktur perulangan.  

Page 70: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

 

ARRAY

Array adalah himpunan elemen (variabel) dengan tipe data yang sama dan disimpan

secara berurutan dalam memori yang ditandai dengan memberikan indeks pada suatu nama

variabel.

1. Array Berdimensi Satu

Gambaran sebuah Array ditunjukkan pada contoh di bawah ini, dimana kita dapat

menyimpan 5 nilai dengan tipe float tanpa harus mendeklarasikan 5 identifier variabel

yang berbeda. Perhatikan contoh di bawah ini :

Elemen-elemen Array

0 1 2 3 4

Nama Array

Gambar 1. Gambaran Sebuah Array

Bagian kosong di atas merepresentasikan elemen array, dalam kasus ini adalah

nilai integer. Angka 0 – 4 merupakan indeks dan selalu dimulai dari 0. Seperti

penggunaan variabel pada umumnya, array harus dideklarasikan terlebih dahulu,

dengan format sebagai berikut :

Type name [elements];

Maka contoh array di atas dideklarasikan sebagai berikut :

Float Suhu [5] ;

Inisialisasi Array

Ketika mendeklarasikan array lokal (didalam fungsi), jika tidak diberikan nilai maka isi

dari array tidak akan ditentukan (undetermined) sampai nilai diberikan. Jika

mendeklarasikan array global array (di luar semua fungsi) maka isi dari array akan

diinisialisasikan sebagai 0 :

Page 71: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

0 1 2 3 4

Suhu 0 0 0 0 0

Atau dideklarasikan dengan memberikan nilai array yang dituliskan dalam kurung

kurawal :

Float Suhu [5] = { 28.5, 28, 29, 30.5, 27}

Maka elemen array akan berisi :

0 1 2 3 4

Suhu 28.5 28 29 30.5 27

Nilai array dapat di akses secara individual, dengan format :

name [index]

Maka dari contoh sebelumnya nama yang digunakan untuk mengakses masing-masing

elemen :

Suhu[0] Suhu[1] Suhu[2] Suhu[3] Suhu[4]

Suhu

Misalkan akan disimpan nilai 75 pada elemen ke tiga, maka instruksinya : Suhu[2] = 28;

Dan jika nilai elemen ke tiga tadi akan diberikan ke variabel a, maka dapat dituliskan :

a = Suhu[2];

contoh 1:

Buatlah program untuk menampilkan data suatu suhu

//contoh Array

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void contoh()

{

float Suhu[5]= {27.5, 28, 29, 30.5, 27};

for (int i=0; i<5; i++)

Page 72: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

cout<<"Suhu [" <<i<< "] = "<<Suhu[i]<<endl;

}

void main()

{

contoh();

getchar();

}

Hasil Eksekusi :

Contoh 2:

Buat program nilai dan jumlahkan nilai tersebut, kemudian hitung jumlahnya dan nilai rata-

rata dari 5 buah bilangan yang dimasukkan

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void main()

{

int daf_nilai[5];

int i,jum;

float rata;

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

{

cout<<"Masukkan nilai tes ke-" <<i<< " : ";

cin>>daf_nilai[i];

}

jum = 0 ;

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

Page 73: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

jum = jum + daf_nilai[i];

rata = jum / 5;

cout<<"Jumlah : "<<jum<<endl;

cout<<"Rata-rata : "<<rata<<endl;

getch();

}

Hasil eksekusi :

2. Array Multidimensi

Array multidimensi dapat dianggap sebagai “array dari array”. Contoh array 2

dimensi dapat dibayangkan sebagai table berdimensi 2 yang tersusun dari elemen-

elemennya, semua bertipe sama.

Contoh :

suhu 0 1 2 3 4

0

1

2

Array suhu menyatakan array dua dimensi berukuran 3 x 5 elemen bertipe integer. Cara

mendeklarasikan dalam bahasa C ++ adalah ;

Int suhu [3] [5];

Sedangkan cara untuk menunjuk pada salah satu elemennya bisa dilakukan dengan

menyebutkan nama array diikuti dengan alamat sel menurut baris dan kolomnya,

misalnya :

Suhu [0] [3] atau suhu [2] [1]

Page 74: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Array multidimensi tidak hanya terbatas pada array dimensi 2 saja tetapi dapat berupa

array dimensi 3 dan seterusnya.

3. Array Sebagai Parameter

Suatu saat kita mungkin perlu untuk menjadikan array sebagai parameter sebuah

fungsi. Dalam C/C++ tidak memungkinkan untuk mengirimkan nilai seluruh blok memori

sebagai parameter fungsi, tetapi kita dapat mengirimkan alamat awalnya.

Agar sebuah fungsi dapat menerima array sebagai parameter, cara yang dilakukan

adalah menentukan tipe dan nama array (tanpa menentukan banyak elemen) dalam

parameter fungsi saat fungsi dideklarasikan.

Contoh :

Void coba_array (int array1[])

Prosedur acak akan menerima sebuah parameter bertipe integer dengan nama

p_array, untuk mengirimkan sebuah array yang dideklarasikan sebagai :

Int array [40];

Cukup memanggil fungsi dengan statement :

Coba_array (array);

Contoh :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void array (int data[], int panjang)

{

for (int n=0; n<panjang; n++)

cout<< data[n] << " ";

cout<<endl;

}

void main()

{

int array1[]={5,10,15};

int array2[]={2,4,6,8,10};

array(array1,3);

array(array2,5);

getchar();

}

Page 75: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusi :

Seperti kita lihat pada program di atas, parameter pertama (int data[ ]) menerima

sebarang array yang tipenya int, berapapun panjangnya. Untuk itu perlu ditambahkan

parameter yang kedua untuk memberitahu panjang array yang dikirim. Nilai ini kemudian

dapat dipakai pada statement perulangan for untuk menampilkan elemen array sesuai

banyaknya. Dalam deklarasi fungsi juga diperbolehkan untuk memasukkan array

multidimensi. Format untuk menyertakan array berbeda dengan format parameter array

dimensi satu. Contoh deklarasi parameter array dimensi 3:

Void coba_array ( int array1[ ] [3] [4] )

Perhatikan kurung siku pertama [ ] dibiarkan kosong sementara yang lainnya harus

ditentukan. Hal ini karena compiler dalam fungsi harus dapat menentukan berapa besar

array pada dimensi tambahan.

Untuk bisa mengetahui lebih jelas tentang sifat-sifat array sebagai parameter sebuah

fungsi kita perlu memahami lebih lanjut tentang operasi pointer.

Latihan :

Buat program C++ untuk menampilkan 5 nama Mahasiswa yang diinput melalui keyboard.

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void data_mahasiswa()

{

string nama [5];

int indeks;

for (indeks=1; indeks <=5; indeks++)

{

cout<<"Masukkan nama mahasiswa ke-"<<indeks<<" : ";

cin >> nama[indeks];

Page 76: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

}

clrscr();

cout <<" Daftar Nama Mahasiswa " << endl;

cout <<"--------------------- " << endl;

cout <<"No | Nama Mahasiswa " << endl;

cout <<"--------------------- " << endl;

for (indeks=1; indeks <=5; indeks++)

{

cout << indeks << '\t' << nama[indeks]<<endl;

}

}

void main()

{

clrscr();

data_mahasiswa();

getch();

}

Jika kita input nama berikut :

Hasil eksekusinya adalah :

Page 77: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Soal :

Dari program latihan di atas kembangkan sehingga dapat menyimpan ‘Umur’ dan ‘Jenis

Kelamin’ dari mahasiswa. Untuk umur adalah yang berumur di atas 20 tahun saja.

Kemudian tambahkan program tersebut untuk menghitung rata-rata umur dari semua

mahasiswa yang dimasukkan.

Programnya :

#include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include<conio.h>

void data_mahasiswa()

{

string nama [5];

int umur [5];

char jenis[5];

int indeks;

int x;

float jumlah, rata;

for (indeks=1; indeks <=5; indeks++)

{

cout<<"Masukkan nama mahasiswa ke-"<<indeks<<" : ";

cin >> nama[indeks];

cout<<"Masukkan umur mahasiswa ke-"<<indeks<<" : ";

cin >> umur[indeks];

cout<<"Masukkan jenis mahasiswa ke-"<<indeks<<" : ";

cin >> jenis[indeks];

}

clrscr();

cout <<" Daftar Nama Mahasiswa " << endl;

cout <<"-------------------------- " << endl;

cout <<"No | Nama | Umur | Jenis " << endl;

cout <<"-------------------------- " << endl;

x=umur[0];

for (indeks=1; indeks <=5; indeks++)

if (umur[indeks] > x)

Page 78: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

x=umur[indeks];

for (indeks=1; indeks <=5; indeks++)

{

if (umur[indeks]>=17)

cout << indeks << '\t' << nama[indeks]<<'\t'<<umur[indeks]<<'\t'<<jenis[indeks]<<endl;

}

jumlah = 0;

for (indeks=1; indeks <=5; indeks++)

jumlah = jumlah + umur[indeks];

rata = jumlah/indeks;

cout<<endl;

cout<<"umur yang paling tua = "<<x<<endl;

cout<<endl;

cout<<"Jumlah Umur = "<<jumlah<<endl;

cout<<"Rata-rata = "<<rata<<endl;

}

void main()

{

clrscr();

data_mahasiswa();

getch();

}

Jika diinput dari keyboard data berikut :

Page 79: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil Eksekusinya adalah :

Page 80: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 12 Pemrograman Algoritma Struktur Data Modul 07 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Indra Yatini B, Flowchart, Algoritma, dan Pemrograman Menggunakan Bahasa C++ Builder,

Graha Ilmu, Yogyakarta, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 81: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Informatika 

09 87042  Tim Dosen

 

 

Abstract  Kompetensi 

Pointer  Linked List  

  

Mampu  menggunakan  pointer  untuk mengalokasikan memori secara dinamis. 

Mampu menjelaskan konsep linked‐list.  Mampu  mengimplementasikan  linked‐

list  dalam  sebuah  program  sampai dengan menambah node‐node baru dan list traversal.  

 

Page 82: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

POINTER dan LINKED LIST

I. POINTER

Pointer adalah tipe data yang digunakan untuk menunjuk ke suatu data. Suatu variabel

yang bertipe pointer (variabel pointer) tidak berisi data, melainkan berisi alamat suatu data.

Di dalam komputer setiap lokasi data mempunyai alamat yang khas. Gambar berikut contoh

suatu pointer yang menunjuk ke suatu data.

Pointer Variabel X

Berisi alamat variabel X Data Gambar 1. Gambaran Pointer Berdasarkan kondisi di atas, dimungkinkan untuk mengakses data pada variabel X melalui

Pointer.

Pointer biasa digunakan sehubungan dengan pembentukan variabel dinamis. Variabel

Dinamis adalah variabel yang bisa dialokasikan di dalam memori atau dihapus dari memori

ketika program dieksekusi. Hal seperti ini banyak dipakai pada struktur data seperti linked

list dan pohon biner.

1.1. MENDEKLARASIKAN VARIABEL POINTER

Bentuk deklarasi variabel pointer :

Contoh :

p adalah variabel pointer yang menunjuk ke data bertipe double.

menyatakan pointer

double *p; 

variabel pointer yang menunjuk

ke data bertipe double tipe data yang ditunjuk oleh variabel pointer p

Gambar 2. Penentuan tipe Pointer

Contoh lain :

tipe *variabel;

double *p; 

Page 83: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

struct RekamanBuku

{

string judul;

string pengarang;

int jumlah;

}

struct RekamanBuku *novel;

Pada contoh ini, novel adalah variabel pointer yang menunjuk ke tipe struktur

RekamanBuku. Gambarannya seperti berikut :

novel judul

pengarang

jumlah

yang ditunjuk oleh novel bertipe RekamanBuku

gambar 3. Variabel pointer yang menunjuk ke struktur

Supaya suatu variabel pointer menunjuk ke suatu variabel data, penugasan seperti

berikut diperlukan :

Simbol & berarti alamat.

Pernyataan di atas berarti bahwa : variabel_pointer diisi dengan alamat

variabel_data.

1.2. MENGAKSES DATA VIA POINTER

Untuk melihat cara pengaksesan data melalui pointer, cobalah kode novel.cpp berikut :

//kode program novel.cpp

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <conio.h>

#include <string>

Variabel_pointer = &variabel_data

Page 84: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

using namespace std;

struct RekamanBuku

{

string judul;

string pengarang;

int jumlah;

};

int main()

{

struct RekamanBuku *novel, buku;

// Isi data buku

buku.judul = "Badai Pasti Berlalu";

buku.pengarang = "Marga T.";

buku.jumlah = 2;

// Variabel pointer novel diatur menunjuk ke variabel buku

novel = &buku;

// Mengakses data melalui variabel pointer novel

cout << "Judul : " << novel->judul << endl;

cout << "Pengarang : " << novel->pengarang << endl;

cout << "Jumlah : " << novel->jumlah << endl;

getch();

}

Hasil eksekusi program :

Page 85: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

1.3. MENGGUNAKAN VARIABEL DINAMIS

Beberapa struktur data memanfaatkan variabel dinamis. Variabel dinamis adalah

variabel yang bisa diciptakan ketika program dieksekusi. Menciptakan variabel dinamis

butuh variabel pointer, kuncinya yaitu operator new. Misalnya terdapat variabel pointer

novel yang bertipe pointer. Agar tercipta variabel dinamis yang akan ditunjuk oleh novel,

perintahnya adalah :

Gambar berikut menunjukkan keadaan setelah pernyataan tersebut dieksekusi :

novel judul

pengarang

jumlah

tanda Tanya menyatakan nilainya belum ditentukan secara eksplisit oleh pemrogram

Gambar 4. Keadaan setelah variabel dinamis diciptakan

Kode program berikut ptrdata.cpp memberikan gambaran tentang penciptaan variabel

dinamis dan pengaksesannya. Anda bandingkan dengan kode yang serupa, tetapi tidak

memakai variabel dinamis (yaitu pada program novel.cpp)

//program ptrdata.cpp

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <conio.h>

#include <string>

using namespace std;

struct RekamanBuku

{

string judul;

string pengarang;

int jumlah;

};

int main()

{

Novel = new RekamanBuku;

Page 86: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

struct RekamanBuku *novel;

// Buat variabel dinamis dan atur agar ditunjuk oleh novel

novel = new RekamanBuku;

// Isi data melalui novel

novel->judul = "Meriam Benteng Navarone";

novel->pengarang = "Alistair McClean";

novel->jumlah = 4;

// Mengakses data melalui variabel pointer novel

cout << "Judul : " << novel->judul << endl;

cout << "Pengarang : " << novel->pengarang << endl;

cout << "Jumlah : " << novel->jumlah << endl;

// Bebaskan memori untuk variabel dinamis

delete novel;

getch();

}

Hasil eksekusi program :

1.4. MENGHAPUS VARIABEL DINAMIS

Bila suatu variabel dinamis tidak diperlukan lagi, memori yang digunakannya bisa

dihapus. Perintah yang diperlukan untuk keperluan tersebut berupa prosedur delete.

Perintahnya adalah :

Dengan cara tersebut, memori yang ditunjuk oleh variabel_pointer dihapus.

Deletevariabel_pointer;

Page 87: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Keadaan awal :

novel

Setelah delete novel :

novel

Memori untuk data ini dibebaskan atau didealokasikan

Gambar 5. Gambaran penghapusan variabel dinamis

Contoh penggunaan delete terdapat pada program ptrdata.cpp, yaitu diletakkan setelah

variabel dinamis tidak diperlukan lagi.

1.5. POINTER dan ARRAY DINAMIS

Array juga dapat dipesan secara dinamis melalui new. Contoh kode program

dinamis.cpp

//kode program dinamis.cpp

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <conio.h>

#include <string>

using namespace std;

struct RekamanBuku

{

string judul;

string pengarang;

int jumlah;

};

Page 88: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

int main()

{

struct RekamanBuku *novel;

// Buat variabel dinamis berupa array dan atur agar ditunjuk oleh novel

novel = new RekamanBuku[5];

// Isi data melalui novel

novel[0].judul = "Meriam Benteng Navarone";

novel[0].pengarang = "Alistair McClean";

novel[0].jumlah = 4;

novel[1].judul = "Octopussy";

novel[1].pengarang = "Ian Flemmings";

novel[1].jumlah = 2;

novel[2].judul = "Badai Pasti Berlalu";

novel[2].pengarang = "Marga T.";

novel[2].jumlah = 2;

novel[3].judul = "Twilight";

novel[3].pengarang = "Stephenie Meyer";

novel[3].jumlah = 3;

novel[4].judul = "Harry Potter Deadly Hallows";

novel[4].pengarang = "JK Rowlings";

novel[4].jumlah = 4;

// Mengakses data melalui variabel pointer novel

for (int j = 0; j < 5; j++)

{

cout << "Judul : " << novel[j].judul << endl;

cout << "Pengarang : " << novel[j].pengarang << endl;

cout << "Jumlah : " << novel[j].jumlah << endl;

cout << endl;

}

// Bebaskan memori untuk variabel dinamis

delete [] novel;

getch();

}

Page 89: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil eksekusi program :

Hal yang terpenting dalam menggunakan array dinamis adalah penyebutan jumlah elemen

array dilakukan dengan menuliskan jumlah elemen dalam tanda [ ]. Pada program di atas :

menyatakan bahwa jumlah elemen array yang diciptakan dan ditunjuk oleh novel sebanyak

5 buah. Gambaran setelah pernyataan di atas dijalankan dapat dilihat pada gambar berikut :

novel judul pengarang jumlah

novel[0]

novel[1]

novel[2] novel[3] novel[4]

Gambar 6. Pengalokasian Array Dinamis

novel = new RekamanBuku[5];

Page 90: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

II. KONSEP LINKED LIST

1. Mengenal Struktur Data Linked List

Linked List (Senarai Berantai) adalah jenis struktur data yang berisi kumpulan data

yang disusun secara linear dengan setiap data disimpan dalam sebuah simpul dan

antara satu simpul dengan simpul lain dihubungkan melalui pointer.

Struktur data ini mempunyai bentuk dasar dengan sifat data disisipkan ke dalam

senarai melalui salah satu ujungnya. Gambar 7. Menunjukkan keadaan dalam linked list

apabila secara berturut-turut nama Amir, Bakdi, Cintya dan Dhanu dimasukkan ke dalam

linked list.

Contoh linked list :

pertama 

Dhanu Cintya Bakdi Amir null

Gambar 7. Linked List

Perhatikan gambar di atas bahwa Amir sebagai data yang pertama kali dimasukkan

akan berada pada salah satu ujung (ujung kanan). Sedangkan data yang terakhir kali

dimasukkan yaitu Dhanu, justru berada dibagian kiri, yang ditunjuk oleh pointer pertama.

Dengan kata lain, pointer pertama selalu menunjuk ke data yang terakhir kali

dimasukkan. Berbeda dengan stack, penghapusan data dalam linked list bias dilakukan

di mana saja.

Dalam terminologi linked list, setiap data diletakkan dalam sebuah simpul (node).

Pada gambar di atas terdapat 4 buah simpul. Setiap simpul terdiri atas 2 bagian, yaitu

bagian data dan bagian penunjuk ke simpul berikutnya. Pada contoh di atas bagian data

hanya mengandung sebuah data, yaitu nama orang. Namun bagian data bisa saja

mengandung beberapa data. Misalnya bagian data terdiri atas nomor mahasiswa dan

nama mahasiswa seperti contoh berikut :

2010.01.001 Andi Sadewo

Berisi nomor mahasiswa Dan Nama mahasiswa

Pointer yang digunakan untuk menunjuk ke simpul berikutnya.

Berisi NULL kalau tidak menunjuk Ke simpul.

Gambar 8. Penjelasan simpul dalam linked list

Page 91: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

2. Operasi Dasar Dalam Linked List (Senarai Berantai)

Operasi dasar pada Linked List berupa :

INSERT( ), menyatakan operasi untuk memasukkan data ke dalam linked list

pada posisi yang ditunjuk oleh pointer pertama. Operasi ini biasa dinyatakan

dengan insert(S, d) atau biasa disingkat insert(d). S menyatakan linked list dan d

menyatakan item data yang dimasukkan ke dalam linked list S.

FIND( ), menyatakan operasi untuk mencari suatu data dalam linked list. Operasi

ini biasa dinyatakan dengan fungsi find(pendahulu, x). nilai baliknya berupa true

kalau data yang dicari (yaitu x) ada; atau false kalau data yang dicari tidak ada.

Pada saat nilai balik bernilai true, pendahulu menunjuk simpul yang berada tepat

sebelum simpul yang berisi data yang dicari.

REMOVE( ), menyatakan operasi untuk menghilangkan sebuah simpul dari

linked list. Operasi ini biasa dinyatakan dengan remove(S, x) atau remove(x)

saja.

Page 92: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 12 Pemrograman Algoritma Struktur Data Modul 08 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Abdul Kadir, Teori dan Aplikasi STRUKTUR DATA menggunakan C++, CV. ANDI OFFSET,

Yogyakarta, 2013.

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 93: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Informatika 

10 87042  Tim Dosen

 

 

Abstract  Kompetensi 

List traversal secara rekursif  Penyisipan node di awal dan di tengah linked‐list.   

  

Mampu membuat program yang secara rekursif melakukan list traversal 

Mampu membuat program yang melakukan penyisipan node di awal dan di tengah linked‐list. 

Page 94: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

LIST TRAVERSAL

Traversal atau kunjungan simpul list sesuai urutan untuk memproses setiap simpul

tepat satu kali. Algoritma traversal, menggunakan variabel penuding PTR untuk menuding

simpul yang sedang di proses saat ini. Karena itu LINK(PTR) akan menuding simpul berikut

dalam list.

Statement PTR := LINK(PTR) akan menggerakkan penuding ke simpul berikutnya.

PTR

Gambar 1.

Algoritma Traversal secara rinci :

Mula-mula, kita awali dengan memberi nilai kepada PTR, sama dengan START. Kita

proses INFO(PTR), yakni informasi pada simpul pertama dalam List. Selanjutnya PTR

diperbaharui melalui statement PTR := LINK(PTR). Sekarang proses INFO(PTR), yakni

informasi pada simpul kedua. Demikian seterusnya sampai nilai PTR = NULL, akhir dari

traversal.

ALGORITMA

1. PTR := START.

2. Kerjakan Langkah 3 dan 4 dalam hal PTR <> NULL :

3. Proses INFO(PTR).

4. PTR := LINK(PTR).

5. EXIT.

CARI (SEARCHING) DALAM LINKED LIST

1. Cari dalam list tidak terurut

2. Cari dalam list terurut

CARI DALAM LIST TIDAK TERURUT

Page 95: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Melakukan Traversal Simpul list, sambil setiap kali memeriksa apakah informasi dalam

simpul yang tengah dikunjungi tersebut sama dengan ITEM.

Dalam algoritma ini diperlukan 2 buah pemeriksaan pada setiap putaran yaitu :

1. Memeriksa apakah telah sampai pada akhir dari list, yakni dengan memeriksa apakah

PTR = NULL.

2. Memeriksa apakah ITEM telah ditemukan lokasinya, yakni dengan memeriksa apakah

INFO(PTR) = ITEM

ALGORITMA

SEARCH(INFO, LINK, START, ITEM, LOC)

1. PTR := START.

2. Kerjakan langkah 3 dalam hal PTR <> NULL :

3. Jika INFO(PTR) = ITEM, maka :

LOC := PTR, exit.

Bila tidak

PTR := LINK(PTR).

4. LOC := NULL. (Pencarian gagal)

5. Exit.

CARI DALAM LIST TERURUT

Melakukan traversal simpul list, sambil setiap kali memeriksa apakah informasi

dalam simpul yang tengah dikunjungi tersebut sama dengan ITEM. Karena terurutnya list,

tidak perlu melakukan traversal sampai akhir dari list, walau ITEM tidak terdapat dalam list.

Begitu INFO(PTR) > ITEM, hentikan proses pencarian.

Dalam algoritma ini diperlukan 2 buah pemeriksaan pada setiap putaran yaitu :

1. Memeriksa apakah INFO(PTR) sudah lebih besar dari ITEM, berarti ITEM tidak terdapat

dalam list, hentikan proses cari.

2. Memeriksa apakah ITEM telah ditemukan lokasinya, yakni dengan memeriksa apakah

INFO(PTR) = ITEM.

ALGORITMA

SRCHSL(INFO, LINK, START, ITEM, LOC)

1. PTR := START.

2. Kerjakan langkah 3 dalam hal PTR <> NULL :

3. Jika INFO(PTR) < ITEM, maka :

PTR := LINK(PTR).

Bila tidak jika ITEM = INFO(PTR), maka :

Page 96: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

LOC := PTR, dan exit. (pencarian sukses)

Bila tidak :

LOC := NULL, and exit.

4. LOC := NULL.

5. Exit.

Contoh :

// Contoh senarai berantai (linked list)

#include <vcl.h>

#pragma hdrstop

#include <conio.h>

#include <iostream>

#include <string>

using namespace std;

class Simpul

{

public:

string kode;

string nama;

Simpul* berikut;

// Konstruktor

Simpul(string xkode, string xnama)

{

kode = xkode;

nama = xnama;

berikut = NULL;

}

void display()

{

cout << kode << " : "

<< nama << endl;

}

};

class SenaraiBerantai

{

private:

Simpul* pertama;

Page 97: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

public:

// Konstruktor

SenaraiBerantai()

{

pertama = NULL;

}

// Destruktor

~SenaraiBerantai()

{

// Menghapus semua simpul

Simpul* penunjukHapus;

while (pertama != NULL)

{

penunjukHapus = pertama;

pertama = pertama->berikut;

delete penunjukHapus;

}

}

// Memasukkan data ke senarai berantai Nilai balik tidak ada

void insert(string kode, string nama)

{

Simpul* ptrBaru;

ptrBaru = new Simpul(kode, nama);

ptrBaru->berikut = pertama;

pertama = ptrBaru;

}

// Mencari data Nilai balik berupa true kalau yang dicari ketemu

// Dalam hal ini, pendahulu merupakan simpul yang terletak di depan simpul yang dicari

bool find(Simpul* &pendahulu, Simpul* &posisiData, string x)

{

posisiData = pertama;

pendahulu = NULL;

bool ditemukan = false;

while (posisiData != NULL)

{

Page 98: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

string kode = posisiData->kode;

if (kode.compare(x) == 0)

{

ditemukan = true;

break; // Keluar dari while

}

pendahulu = posisiData;

posisiData = posisiData->berikut;

}

return ditemukan;

}

// Mencari data Nilai balik berupa NULL kalau yang dicari tidak ketemu

Simpul* find(string x)

{

Simpul* pendahulu;

Simpul* posisiData;

bool ditemukan = find(pendahulu, posisiData, x);

if (! ditemukan)

return NULL;

else

return posisiData;

}

// Menghapus simpul yang berisi kode x

// Nilai balik berupa :

// - true kalau data berhasil dihapus

// - false kalau data tidak ada

bool remove(string x)

{

Simpul* pendahulu;

Simpul* posisiData;

bool ditemukan = find(pendahulu, posisiData, x);

if (! ditemukan)

{

cout << "Data yang akan dihapus tidak ditemukan."

<< endl;

Page 99: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

return false;

}

if (pendahulu == NULL)

{

// Data yang dihapus ditunjuk oleh pertama

pertama = pertama->berikut;

delete posisiData;

}

else

{

// Data yang dihapus tidak ditunjuk oleh pertama

pendahulu->berikut = posisiData->berikut;

delete posisiData;

}

}

// Menampilkan data

void display(void)

{

cout << "Isi senarai berantai:" << endl;

Simpul* penunjuk = pertama;

while (penunjuk != NULL)

{

penunjuk->display();

penunjuk = penunjuk->berikut;

}

}

};

int main()

{

SenaraiBerantai senarai;

// Masukkan 5 buah nama

senarai.insert("AMN", "Aminudin");

senarai.insert("ZAS", "Zaskia");

senarai.insert("RIN", "Rina Melati");

senarai.insert("FAR", "Farhan");

Page 100: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

senarai.insert("AGN", "Agnes Monica");

cout << "Keadaan awal:" << endl;

senarai.display();

senarai.remove("RIN");

cout << endl;

cout << "Setelah RIN dihapus:" << endl;

senarai.display();

// Cari RIN

string dicari = "RIN";

cout << endl;

cout << "Pencarian " << dicari << endl;

Simpul* posisiData = senarai.find(dicari);

if (posisiData == NULL)

cout << dicari << " tidak ditemukan." << endl;

else

{

cout << "Hasil pencarian:" << endl;

posisiData->display();

}

// Cari FAR

dicari = "FAR";

cout << endl;

cout << "Pencarian " << dicari << endl;

posisiData = senarai.find(dicari);

if (posisiData == NULL)

cout << dicari << " tidak ditemukan." << endl;

else

{

cout << "Hasil pencarian:" << endl;

posisiData->display();

}

getch();

}

Hasil Eksekusi Program :

Page 101: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Page 102: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 103: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Informatika 

11 87042  Tim Dosen

 

 

 

Abstract  Kompetensi 

ADT Stack  Implementasi stack dengan array  

Implementasi stack dengan linked‐list   

  

Mampu menjelaskan yang dimaksud dengan ADT stack 

Mampu membuat program yang mengimplementasikan stack dengan array  

 

Page 104: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

ADT STACK

I. STRUKTUR DATA TUMPUKAN

Stack (Tumpukan) adalah struktur data yang memungkinkan penyisipan dan

pengambilan data dilakukan dari satu ujung yang disebut puncak. Sesuai namanya, struktur

data ini digambarkan seperti keadaan tumpukan piring atau tumpukan buku. Cara yang

paling mudah untuk meletakkan piring ke dalam tumpukan yakni dengan menaruhnya di

bagian puncak. Begitu juga kalau Anda ingin mengambil piring. Piring diambil dari data yang

berada di puncak tumpukan.

kosong

C

B

A Berisi 3

C

B Diambil 1

A dari puncak

Gambar 1. Struktur Data Tumpukan

Tumpukan memiliki sifat Last In First Out (LIFO). Artinya, data yang terakhir kali

dimasukkan/disisipkan akan menjadi data yang pertama kali keluar. Pada contoh di atas,

yang berisi tumpukan A, B, dan C jelas terlihat bahwa C adalah data yang terakhir kali

ditumpukkan. Jika terjadi operasi pengambilan data maka C adalah data yang akan keluar

terlebih dulu.

Page 105: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

II. OPERASI DASAR PADA TUMPUKAN

Operasi dasar pada tumpukan adalah PUSH dan POP.

- PUSH adalah operasi untuk memasukkan data ke dalam tumpukan. Operasi ini

biasa dinyatakan dengan push(T,d). T menyatakan tumpukan dan d menyatakan item

data yang disisipkan ke dalam tumpukan T.

- POP adalah operasi untuk mengambil data dari tumpukan. Operasi ini biasa

dinyatakan dengan pop(T). Dalam hal ini data teratas dari tumpukan T akan

dikeluarkan dan menjadi nilai balik pop. Itulah sebabnya, penggunaan pop sering

dituangkan dalam bentuk pernyataan :

data = pop (T);

Tabel berikut memperlihatkan sejumlah operasi PUSH dan POP

Tabel 1. Ilustrasi PUSH dan POP pada Tumpukan (STACK)

Operasi Penjelasan Hasil tumpukan T

push(T,’Paris’)

push(T, ‘Innsbruck’)

Paris dimasukkan terlebih

dulu, baru Innsbruck

Innsbruck Paris

pop(T)

push(T, ‘Amsterdam’)

push(T, ‘Geneva’)

Innsbruck dikeluarkan,

kemudian Amsterdam

dimasukkan, dan diikuti

Geneva

Geneva Amsterdam Paris

push(T, ‘Roma’)

push(T, ‘Vienna’)

Roma dan Vienna

ditambahkan

Geneva Amsterdam Paris

pop(T)

pop(T)

pop(T)

push(T, ‘London’)

Vienna, Roma dan Geneva

dikeluarkan. Kemudian

London ditambahkan

London Amsterdam Paris

Page 106: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

III. APLIKASI TUMPUKAN

Aplikasi Tumpukan (Stack) sangat banyak, beberapa penerapan Tumpukan diantaranya

adalah :

Membalik String.

Jika kita memproses suatu string dimulai dari yang paling kiri dan menaruh ke

tumpukan karakter per karakter maka karakter paling kiri akan berada pada posisi

paling bawah dalam tumpukan. Kalau kemudian, karakter dalam tumpukan diambil

satu persatu dan disusun dari kiri ke kanan maka string akan terbentuk dengan

susunan terbalik terhadap aslinya, seperti diperlihatkan pada gambar di bawah ini.

String asal FERNANDO

di proses ketumpokan

di ambil satu persatu dan di susun dari kiri ke kanan : ODNANREF

Gb. Pembalikan string melalui tumpukan

Mengkonversikan bilangan system decimal ke system biner. Contoh. Bilangan 19

identik dengan bilangan biner : 10011. Algoritma untuk melakukannya adalah seperti

berikut :

1. Tumpukan <---- kosong

2. While Bilangan > 0

3. Digit ---- sisa pembagian bilangan bulat dengan 2

4. Push(Tumpukan, Digit)

5. Bilangan ---- pembagian bilangan bulat dengan 2

6. End-While

7. While (Tumpukan tidak kosong)

8. Digit ---- Pop

O

D

N

A

N

R

E

F

Page 107: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

9. Tampilkan digit

10. End-While

Mengevaluasi Ekspresi Aritmetika. Misalnya, tumpukan dipakai untuk memproses

perhitungan semacam (2+1)*3+5*2 yang melibatkan berbagai operator dengan

prioritas yang berbeda.

Memproses pasangan tanda kurung dalam suatu ekspresi. Misalnya, ekspresi

seperti (a(b{c|d}[]) dianggap valid, sedangkan ekspresi (a(b{c|d] dianggap tidak valid.

Menangani fungsi Rekursif. Secara internal computer menggunakan tumpukan ketika

terjadi pemanggilan fungsi secara rekursif.

4. Implementasi Stack dengan Vektor

Tumpukan dapat dibuat dengan berbagai cara. Salah satu cara yaitu, menggunakan

Vector. Dalam hal ini, jumlah data

Implementasi Stack dengan Vector

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <string>

#include <vector>

using namespace std;

class Tumpukan

{

private:

vector<string> tumpukan;

int puncak;

public:

// Konstruktor

Tumpukan(int ukuran) : puncak(-1)

{

tumpukan.resize(ukuran); // Ukuran vector

Page 108: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

}

// Memasukkan data ke tumpukan

// Nilai balik berupa false

// kalau tumpukan sudah penuh

bool push(string data)

{

// Periksa kalau tumpukan penuh

if (puncak == (tumpukan.size()-1))

return false;

// Masukkan data ke tumpukan

puncak++;

tumpukan[puncak] = data;

}

string pop(void)

{

if (! empty())

return tumpukan[puncak--];

else

return ""; // String kosong menyatakan

// tumpukan sudah habis

}

bool empty(void)

{

return (puncak == -1);

}

};

int main()

{

int ukuran = 10;

Tumpukan stack(ukuran); // Buat objek

// Masukkan 5 buah nama

stack.push("Aminudin");

stack.push("Zaskia");

stack.push("Rina Melati");

stack.push("Farhan");

Page 109: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

stack.push("Agnes Monica");

// Kosongkan isi tumpukan dan tampilkan

while (! stack.empty())

{

string nama = stack.pop();

cout << nama << endl;

}

getchar();

}

Hasil Eksekusi Program Tumpukan Dengan Vector

Page 110: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 09 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Indra Yatini B, Flowchart, Algoritma, dan Pemrograman Menggunakan Bahasa C++ Builder,

Graha Ilmu, Yogyakarta, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 111: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Teknik Informatika 

12 87042  Tim Dosen

 

 

 

Abstract  Kompetensi  

Implementasi Stack dengan linked‐list   

  

Mampu membuat program yang mengimplementasikan stack dengan linked‐list 

 

Page 112: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

IMPLEMENTASI STACK DENGAN

LINKED LIST

I. Implementasi Aplikasi Linked List untuk membuat tumpukan (Stack)

// Implementasi kelas SimpulTumpukan dan ListTumpukan

// (Aplikasi untuk membalik string)

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <string>

#include <conio.h>

using namespace std;

class SimpulTumpukan

{

public:

char data;

SimpulTumpukan* berikut;

// Konstruktor

SimpulTumpukan(char data);

};

class ListTumpukan

{

private:

SimpulTumpukan* puncak;

public:

ListTumpukan();

virtual ~ListTumpukan();

void push(char data);

bool empty();

char pop();

};

Page 113: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

// Konstruktor

SimpulTumpukan::SimpulTumpukan(char data)

{

SimpulTumpukan::data = data;

SimpulTumpukan::berikut = NULL;

}

ListTumpukan::ListTumpukan()

{

ListTumpukan::puncak = NULL;

}

// Destruktor

ListTumpukan::~ListTumpukan()

{

// Menghapus semua simpul

SimpulTumpukan* penunjukHapus;

while (puncak != NULL)

{

penunjukHapus = puncak;

puncak = puncak->berikut;

delete penunjukHapus;

}

}

// push() (Bersifat publik)

// Untuk memasukkan data ke dalam tumpukan

void ListTumpukan::push(char data)

{

SimpulTumpukan* ptrBaru;

ptrBaru = new SimpulTumpukan(data);

ptrBaru->berikut = puncak;

puncak = ptrBaru;

}

Page 114: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

// empty() (Bersifat publik)

// Menghasilkan true kalau tumpukan dalam keadaan kosong

bool ListTumpukan::empty()

{

return puncak == NULL;

}

// pop() (Bersifat publik)

// Mengambil sebuah nilai dari tumpukan

char ListTumpukan::pop()

{

if (empty())

{

cout << "Tumpukan sudah kosong. "

<< "Tidak bisa diambil lagi" << endl;

return 0; // Karakter NULL menyatakan tumpukan sudah kosong

}

SimpulTumpukan* ptrData;

char data;

ptrData = puncak;

data = puncak->data;

puncak = puncak->berikut;

delete ptrData;

return data;

}

int main()

{

ListTumpukan tumpukan;

tumpukan.push('A');

tumpukan.push('B');

tumpukan.push('C');

tumpukan.push('D');

Page 115: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

// Ambil isi tumpukan

cout << "Isi tumpukan dari atas ke bawah:" << endl;

char karakter;

while (! tumpukan.empty())

{

karakter = tumpukan.pop();

cout << karakter << endl;

}

getch();

}

Hasil eksekusi :

II. APLIKASI DOUBLE LINKED LIST (SENARAI BERANTAI GANDA)

Double Linked List adalah jenis linked list yang memiliki 2 buah pointer. Pointer pertama

dipakai untuk menunjuk ke simpul berikutnya dan pointer kedua digunakan untuk

menunjuk ke simpul pendahulunya.

// Contoh untuk menguji senarai berantai ganda

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <conio.h>

using namespace std;

class SimpulGanda

{

public:

Page 116: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

char data;

SimpulGanda* berikut;

SimpulGanda* sebelum;

// Konstruktor

SimpulGanda(char data);

};

class ListGanda

{

private:

SimpulGanda* pertama;

SimpulGanda* terakhir;

public:

ListGanda();

virtual ~ListGanda();

void insertFirst(char data);

void insertLast(char data);

bool insertAfter(char kunci, char data);

bool empty();

char removeFirst();

char removeLast();

bool removeKey(char data);

void displayForward();

void displayBackward();

};

// Konstruktor

SimpulGanda::SimpulGanda(char data)

{

// Konstruktor

SimpulGanda::data = data;

SimpulGanda::berikut = NULL;

SimpulGanda::sebelum = NULL;

}

// Konstruktor

ListGanda::ListGanda()

{

// Konstruktor

Page 117: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

ListGanda::pertama = NULL;

ListGanda::terakhir = NULL;

}

// Destruktor

ListGanda::~ListGanda()

{

// Destruktor

// Menghapus semua simpul

SimpulGanda* penunjukHapus;

while (pertama != NULL)

{

penunjukHapus = pertama;

pertama = pertama->berikut;

delete penunjukHapus;

}

}

// insertFirst() (Bersifat publik)

// Menyisipkan data ke dalam senarai

// sehingga akan ditunjuk oleh pertama

void ListGanda::insertFirst(char data)

{

// Buat simpul baru dan isikan Karakter ke dalam simpul

SimpulGanda* ptrBaru = new SimpulGanda(data);

// Atur penunjuk ke simpul

if (empty())

terakhir = ptrBaru;

else

pertama->sebelum = ptrBaru;

ptrBaru->berikut = pertama;

ptrBaru->sebelum = NULL;

pertama = ptrBaru;

}

// insertLast() (Bersifat publik)

// Menyisipkan data ke akhir senarai

void ListGanda::insertLast(char data)

{

Page 118: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

// Buat simpul baru dan isikan karakter ke dalam simpul

SimpulGanda* ptrBaru = new SimpulGanda(data);

// Atur penunjuk ke simpul

if (empty())

pertama = ptrBaru;

else

{

terakhir->berikut = ptrBaru;

ptrBaru->sebelum = terakhir;

}

ptrBaru->berikut = NULL;

terakhir = ptrBaru;

}

// insertAfter() (Bersifat publik)

// Menyisipkan data ke sesudah kunci kunci

bool ListGanda::insertAfter(char kunci, char data)

{

char ditemukan = false;

// Cari posisi Key

SimpulGanda* ptrData = pertama;

while (ptrData != NULL)

{

if (ptrData->data == kunci)

{

ditemukan = true;

break;

}

ptrData = ptrData->berikut;

}

// Cek kalau tidak ditemukan

if (! ditemukan)

{

return false;

}

// Buat simpul baru dan isikan data ke dalam simpul

SimpulGanda* ptrBaru = new SimpulGanda(data);

Page 119: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

// Atur penunjuk ke simpul

if (ptrData == terakhir)

{

ptrBaru->berikut = NULL;

terakhir = ptrBaru;

}

else

{

ptrBaru->berikut = ptrData->berikut;

ptrData->berikut->sebelum = ptrBaru;

}

ptrBaru->sebelum = ptrData;

ptrData->berikut = ptrBaru;

return true;

}

// empty() (Bersifat publik)

// Menghasilkan true kalau senarai kosong atau false kalau tidak kosong

bool ListGanda::empty()

{

return pertama == NULL;

}

// removeFirst() (Bersifat publik)

// Menghapus data pada simpul yang ditunjuk oleh pertama

char ListGanda::removeFirst()

{

if (empty())

{

cout << "Tumpukan sudah kosong" << endl;

return 0;

}

char data = pertama->data;

SimpulGanda* ptrData = pertama;

if (pertama->berikut == NULL)

terakhir = NULL;

else

pertama->berikut->sebelum = NULL;

Page 120: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

pertama = pertama->berikut;

delete ptrData;

return data;

}

// removeLast() (Bersifat publik)

// Menghapus data pada simpul yang ditunjuk oleh terakhir

char ListGanda::removeLast()

{

if (empty())

{

cout << "Tumpukan sudah kosong" << endl;

return 0;

}

char data = terakhir->data;

SimpulGanda* ptrData = terakhir;

if (pertama->berikut == NULL)

pertama = NULL;

else

terakhir->sebelum->berikut = NULL;

terakhir = terakhir->sebelum;

delete ptrData;

return data;

}

// removeKey() (Bersifat publik)

// Menghapus simpul yang sesuai dengan kunci

// Hasil true kalau data dihapus false kalau tak ada yang dihapus

bool ListGanda::removeKey(char data)

{

SimpulGanda* ptrData = pertama;

while (ptrData->data != data)

{

ptrData = ptrData->berikut;

if (ptrData == NULL)

{

return false;

Page 121: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

}

}

if (ptrData == pertama)

pertama = ptrData->berikut;

else

ptrData->sebelum->berikut = ptrData->berikut;

if (ptrData == terakhir)

terakhir = ptrData->sebelum;

else

ptrData->berikut->sebelum = ptrData->sebelum;

delete ptrData;

return true;

}

// displayForward() (Bersifat publik)

// Menampilkan isi senarai dari pertama ke terakhir

void ListGanda::displayForward()

{

cout << "Dari pertama ke terakhir: " << endl;

SimpulGanda* ptrData = pertama;

while (ptrData != NULL)

{

cout << ptrData->data;

ptrData = ptrData->berikut;

}

cout << endl; // Pindah baris

}

// displayBackward() (Bersifat publik)

// Menampilkan isi senarai dari terakhir ke pertama

void ListGanda::displayBackward()

{

cout << "Dari terakhir ke pertama: " << endl;

SimpulGanda* ptrData = terakhir;

while (ptrData != NULL)

{

cout << ptrData->data;

ptrData = ptrData->sebelum;

Page 122: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 12 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

}

cout << endl; // Pindah baris

}

int main()

{

ListGanda senarai;

senarai.insertFirst('A');

senarai.insertFirst('B');

senarai.insertFirst('C');

senarai.insertFirst('D');

senarai.insertFirst('E');

senarai.displayForward();

cout << "Penyisipan X dan Y: " << endl;

senarai.insertLast('X');

senarai.insertLast('Y');

senarai.displayBackward();

senarai.displayForward();

char karakter = senarai.removeFirst();

cout << "Karakter terkiri yang diambil: " << endl;

senarai.displayForward();

senarai.removeKey('C');

cout << "Setelah C diambil:" << endl;

senarai.displayForward();

karakter = senarai.removeLast();

cout << "Karakter terkanan yang diambil: " << endl;

senarai.displayForward();

cout << "Penyisipan setelah B: " << endl;

senarai.insertAfter('B', 'M');

senarai.displayForward();

getch();

}

Page 123: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 13 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Hasil eksekusi :

Page 124: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 14 Pemrograman Algoritma Struktur Data Modul 11 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Abdul Kadir, Teori dan Aplikasi Struktur Data Menggunakan C++, Penerbit Andi,

Yogyakarta, 2013

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 125: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Informatika 

13 87042  Tim Dosen

 

 

Abstract  Kompetensi  

ADT Queue  Implementasi queue dengan array linear dan sirkular  

Implementasi queue dengan linked‐list  

  

Mampu menjelaskan yang dimaksud dengan ADT queue 

Mampu membuat program yang mengimplementasikan queue dengan array linear dan sirkular. 

Mampu membuat program yang mengimplementasikan Queue dengan linked‐list 

Page 126: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

ADT (Abstrack Data Type) QUEUE

I. ADT QUEUE

Queue disebut juga antrian dimana data masuk di satu sisi dan keluar di sisi yang

lain. Karena itu, queue bersifat FIFO (First In First Out). Antrian (Queue) merupakan suatu

kumpulan data yang penambahan elemennya (masuk antrian) hanya bisa dilakukan pada

suatu ujung (disebut dengan sisi belakang/rear) atau disebut juga enqueue yaitu apabila

seseorang masuk ke dalam sebuah antrian. Jika seseorang keluar dari antrian/penghapusan

(pengambilan elemen) dilakukan lewat ujung yang lain (disebut dengan sisi depan/front)

atau disebut juga dequeue yaitu apabila seseorang keluar dari antrian.

Jadi, dalam antrian menggunakan prinsip “masuk pertama keluar pertama” atau

disebut juga dengan prinsip FIFO (first in first out). Dengan kata lain, urutan keluar akan

sama dengan urutan masuknya. Contoh : antrian mobil saat membeli karcis di pintu jalan tol,

antrian di bioskop dan sebagainya.

1. Operasi / Prosedur Standar pada QUEUE / ANTRIAN

QUEUE merupakan struktur data dinamis, ketika program dijalankan, jumlah elemennya

dapat berubah secara dinamis sesuai keperluan. Berikut ini operasi-operasi standar pada

queue :

a. Inisialisasi, merupakan prosedur untuk membuat queue pada kondisi awal, yaitu

queue yang masih kosong (belum mempunyai elemen).

b. InQueue, Insert Queue merupakan prosedur untuk memasukkan sebuah elemen baru

pada queue. Jumlah elemen Queue akan bertambah satu dan elemen tersebut

merupakan elemen belakang.

c. DeQueue, Delete Queue merupakan prosedur untuk menghapus/mengambil sebuah

elemen dari queue. Elemen yang diambil adalah elemen depan dan jumlah elemen

queue akan berkurang satu.

Hal lain yang perlu diperhatikan dalam suatu struktur dinamis adalah jumlah elemen

struktur data tersebut. Operasi-operasi yang berhubungan dengan jumlah elemen suatu

queue adalah :

1. Size, yaitu operasi untuk mendapatkan banyaknya elemen queue.

2. Empty, yaitu prosedur untuk mengetahui apakah queue dalam keadaan kosong

atau tidak. Dengan status ini maka dapat dicegah dilakukannya operasi Dequeue

Page 127: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

dari suatu queue yang kosong.

3. Full, merupakan prosedur untuk mengetahui apakah Queue penuh atau tidak.

Prosedur ini hanya berlaku untuk queue yang jumlahnya terbatas.

II. IMPLEMENTASI QUEUE DENGAN ARRAY LINEAR dan SIRKULAR

Karena antrian merupakan suatu kumpulan data, maka tipe data yang sesuai untuk

menyajikan antrian adalah menggunakan array atau list (senarai berantai).

Perhatikan gambar berikut ini :

depan

keluar A B C D E F masuk

belakang

gambar 1. Contoh antrian dengan 6 elemen

Gambar di atas menunjukkan contoh penyajian antrian menggunakan array. Antrian

di atas berisi 6 elemen, yaitu A, B, C, D, E dan F. Elemen A terletak di bagian depan antrian

dan elemen F terletak di bagian belakang antrian. Jika ada elemen baru yang akan masuk,

maka elemen tersebut akan diletakkan di sebelah kanan F. Dan jika ada elemen yang akan

dihapus, maka A akan dihapus terlebih dahulu.

Elemen A terletak di bagian depan, kemudian disusul elemen B dan elemen yang

paling akhir atau paling belakang adalah elemen F. Misalkan ada elemen baru yang akan

masuk maka akan terletak di belakang elemen F, sehingga elemen baru akan menempati

posisi yang paling belakang.

Gambar 2 menunjukkan antrian di atas dengan penambahan elemen G dan H,

sehingga gambar 1. Menjadi :

depan

keluar A B C D E F G H masuk

belakang

gambar 2. Contoh penambahan antrian dengan 2 elemen

Page 128: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Gambar 3 menunjukkan antrian dengan penghapusan elemen A dan B, sehingga gambar 1

menjadi :

depan

keluar C D E F G H masuk

belakang

gambar 3. Contoh penghapusan antrian dengan 2 elemen

Seperti pada tumpukan atau stack di dalam antrian juga dikenal 2 operasi dasar yaitu

menambah elemen baru yang akan diletakkan di bagian belakang antrian dan

menghapus elemen yang terletak di bagian depan antrian. Selain itu kita juga harus

melihat antrian itu mempunyai isi atau masih kosong.

Untuk memahami penggunaan antrian dalam array, kita membutuhkan deklarasi

antrian, misalnya sebagai berikut :

# define MAXN 6

Typedef enum { NOT_OK, OK } Tboolean;

Typedef struct {

Titem array [MAXN];

int first;

int last;

int number_of_items;

} Tqueue

Dengan deklarasi di atas, elemen antrian dinyatakan dalam tipe integer yang semuanya

terdapat dalam struktur. Variabel first menunjukkan posisi elemen pertama dalam array,

dan variabel last menunjukkan posisi elemen terakhir dalam array.

Algoritma dari penggalan program di atas adalah :

1. Tentukan elemen yang akan dimasukkan ke dalam antrian (dalam hal ini adalah 6

elemen).

2. Deklarasikan struktur untuk menampung elemen pada antrian.

3. Selesai.

Untuk menambah elemen baru dan mengambil elemen dari antrian dalam antrian,

diperlukan deklarasi berikut ini :

Page 129: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

void initialize_queue ( Tqueue *Pqueue)

{

Pqueue -> firs = 0;

Pqueue -> last = -1;

Pqueue -> number_of_items = 0;

}

Tboolean enqueue ( Tqueue *Pqueue, Titem item)

{

if (Pqueue -> number_of_items >= MAXN)

return (NOT_OK);

else {

Pqueue -> last++;

if (Pqueue -> last > MAXN -1)

Pqueue -> = 0;

Pqueue -> array[Pqueue->last] = item;

Pqueue -> number_of_items++;

return (OK);

}

}

Tboolean dequeue (Tqueue *Pqueue, Titem, item)

{

if (Pqueue -> number_of_items == 0)

return (NOT_OK);

else {

*Pitem = Pqueue -> array[Pqueue->first++];

if (Pqueue -> first > MAXN -1)

Pqueue -> first = 0;

Pqueue -> number_of_items--;

return (OK);

}

}

Page 130: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Contoh program antrian :

// Contoh antrian

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <string>

#include <conio.h>

#include <vector>

using namespace std;

class Antrian

{

private:

vector<string> data;

int depan, belakang;

int maksElemen;

public:

// Konstruktor

Antrian(int ukuran)

{

depan = 0;

belakang = 0;

maksElemen = ukuran;

data.resize(ukuran); // Ukuran vector

}

// Memasukkan data ke antrian

// Nilai balik tidak ada

void insert(string x)

{

int posisiBelakang;

// Geser belakang ke posisi berikutnya

if (belakang == maksElemen)

posisiBelakang = 1;

else

posisiBelakang = belakang + 1;

// Cek belakang apa sama dengan Depan

if (posisiBelakang == depan)

Page 131: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

cout << "Antrian penuh" << endl;

else

{

belakang = posisiBelakang;

// Masukkan data

data[belakang] = x;

}

}

string remove(void)

{

if (empty())

{

cout << "Antrian kosong" << endl;

return "";

}

if (depan == maksElemen)

depan = 1;

else

depan = depan + 1;

return data[depan];

}

bool empty(void)

{

if (depan == belakang)

return true;

else

return false;

}

};

int main()

{

int ukuran = 10;

Antrian daftar(ukuran); // Buat objek

// Masukkan 5 buah nama

daftar.insert("Aminudin");

daftar.insert("Zaskia");

Page 132: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

daftar.insert("Rina Melati");

daftar.insert("Farhan");

daftar.insert("Agnes Monica");

// Kosongkan isi antrian dan tampilkan

while (! daftar.empty())

{

string nama = daftar.remove();

cout << nama << endl;

}

getch();

}

Hasil eksekusi :

III. IMPLEMENTASI QUEUE DENGAN LINKED LIST

Untuk memanipulasi sebuah antrian bisa digunakan dua buah variabel yang

menyimpan posisi elemen paling depan dan elemen paling belakang. Apabila antrian

diimplementasikan menggunakan linked list maka cukup 2 pointer yang bisa dipakai

yaitu elemen paling depan (kepala) dan elemen paling belakang (ekor).

Untuk mengimplementasikan antrian dengan menggunakan pointer, perhatikan

algoritma berikut ini :

1. Tentukan struktur untuk menampung node yang akan dimasukkan pada antrian.

Deklarasi struktur pada penggalan program berikut ini :

Page 133: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

struct queueNode

{

char data;

struct queueNode *nextPtr;

};

typedef struct queueNode QUEUENODE;

ypedef QUEUENODE * QUEUENODEPTR;

QUEUENODEPTR headPtr = NULL, tailPtr = NULL;

2. Deklarasikan penambahan elemen baru pada antrian, dimana letaknya adalah paling

belakang. Deklarasi penambahan elemen baru tersebut dapat dilihat pada penggalan

program berikut ini :

void enqueue ( QUEUENODEPTR *headPtr, QUEUENODEPTR *tailPtr, char value )

{

QUEUENODEPTR newPtr = malloc ( sizeof ( QUEUENODE ) );

If ( newPtr != NULL )

{

newPtr -> data = value;

newPtr -> nextPtr = NULL;

if ( isEmpty ( *headPtr ) )

*headPtr = newPtr;

else

( *tailPtr ) -> nextPtr = newPtr;

*tailPtr = newPtr;

}

3. Lakukan pengecekan terhadap antrian, apakah antrian dalam kondisi kosong atau

tidak. Kalau kondisi antrian kosong, maka elemen bisa dihapus. Penggalan program

berikut ini akan menunjukkan kondisi tersebut.

int isEmpty ( QUEUENODEPTR headPtr )

{

return headPtr == NULL;

}

Page 134: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 12 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Indra Yatini B, Flowchart, Algoritma, dan Pemrograman Menggunakan Bahasa C++ Builder,

Graha Ilmu, Yogyakarta, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

Page 135: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Teknik Informatika 

14 87042  Tim Dosen

 

 

Abstract  Kompetensi  

ADT Binary Tree   

 

 

Mampu menjelaskan yang dimaksud dengan ADT Binary Tree 

Mampu mengimplementasikan binary tree menggunakan linked‐list 

Mampu mengimplementasikan operasi dan manipulasi terhadap binary tree 

 

Page 136: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 13 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

A

B C D

E F G H I J

K L M

ADT Binary Tree

I. ADT Binary Tree

Definisi Pohon adalah :

Susunan dari satu atau lebih simpul (node) yang terdiri dari satu simpul khusus yang

disebut akar (root) sedang sisanya membentuk subtree dari akar.

LEVEL

0

1

2

3

Akar dari struktur pohon ini adalah A

Satu simpul akan berisi :

~ Informasi ( misal, A , B, dst)

~ Cabang-cabang (Link) yang menghubungkan Kesimpul simpul yang lain.

Simpul A sebagai akar mempunyai 3 Link yang membentuk SUBTREE B,C, D.

Jumlah SUBTREE dari satu simpul disebut : DERAJAT (DEGREE).

Derajat Simpul : A = 3

B = 2

C = 1

G = 0

Simpul yang mempunyai derajat = 0 disebut : SIMPUL TERMINAL atau DAUN (LEAF)

Contoh simpul daun gambar diatas adalah : K , L, F, G, M, I , J

Struktur Pohon yang terkenal adalah struktur geneologi (silsilah). Dalam struktur tersebut

adanya simpul anak (children) dan orangtua(parent)

Page 137: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 13 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Contoh anak D adalah H, I, J

Orangtua D adalah A

Anak dari orang tua yang sama (saudara sekandung) disebut sibling misal H,I,J.

DERAJAT (DEGREE) SUATU POHON

Adalah derajat maksimum dari suatu simpul dalam pohon.

Contoh derajat pohon dalam gambar diatas adalah 3.

Nenek Moyang dari dari suatu simpul adalah seluruh simpul-simpul yang ada sepanjang

lintasan dari akar sampai simpul tersebut.

Contoh nenek moyang dari M adalah A, D dan H.

KEDALAMAN (HEIGHT atau DEPTH)

Kedalaman suatu pohon ditentukan oleh level maksimum dari simpul dalam pohon.

Contoh kedalaman pohon dari gambar diatas adalah A.

HUTAN (FOREST)

Adalah susunan dari beberapa pohon.

Bila akar A dihilangkan maka akan diperoleh hutan dengan 3 pohon yaitu :

B(E(K,L),F)

C(G)

D(H(M),I,J)

Ada 2 cara untuk menyatakan struktur pohon yaitu :

1. Gambar

2. Daftar(List)

Pernyataan dengan Gambar adalah seperti terlihat pada Gambar diatas sedangkan kalau

dengan List adalah sebagai berikut :

(A(B(E(K,L),F),C(G),D(H(M),I,J)))

Proses dalam struktur data non linier, bentuk pohon akan lebih mudah digambarkan bila

diketahui :

1. n ( Jumlah Simpul atau Node )

2. k ( Derajat Pohon)

Dari data n dan k maka dapat dihitung :

JUMLAH LINK = n . k

JUMLAH NULL-LINK = n( k - 1)+1

Page 138: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 13 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

B C D

E F G H I J

A

JUMLAH NON ZERO LINK = n - 1

STRUKTUR NODE K-ary

DATA

Child –1

……

Child-k

 

Pohon 3 - ary :

Dari gambar diatas diket : n = 10 , k = 3

Maka dapat dihitung :

JUMLAH LINK = n . k = 3. 10 = 30

JUMLAH NULL LINK = n ( k – 1 ) + 1

= 10( 3 – 1 ) + 1

= 21

JUMLAH NON ZERO LINK = n – 1 = 10 – 1 = 9

POHON BINER (BINARY TREE)

Tipe yang sangat penting dari struktur data

Dalam struktur pohon biner hanya dikenal SUBTREE KIRI DAN SUBTREE KANAN

saja

Simpul dalam pohon biner adalah :

Susunan dari simpul-simpul yang masing-masing bisa kosong atau terdiri dari akar dan dua

pohon biner yang terpisah dan disebut subtree kiri dan subtree kanan.

Page 139: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 13 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

A

B

C

G

A

B C

D E

A

B C

D E F G

Pohon biner dengan subtree kanan kosong

Pohon biner dengan subtree kiri kosong

Complete Binary Tree

Pohon Biner Penuh ( Full Binary Tree)

Adalah pohon biner yang mempunyai simpul atau node lengkap dari level 1

sampai level ke I

 

 

Full Binary Tree

Pohon Biner Lengkap ( Complete Binary Tree) Adalah pohon biner yang mempunyai simpul dengan nomor urut 1 sampai dengan n.

Page 140: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 13 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

1

2

10

3

4 5

11

6 7

12 8 9 13 14 15

i = level Level Anak terkiri menunjukkan anak Terkanan menujukkan 1 Jumlah simpul jumlah max simpul i – 1 i 2 2 – 1 2 3 4

LEVEL ANAK TERKIRI

ANAK TERKANAN

1 1 12 2 33 4 74 8 155 16 316 32 637 64 1278 128 2559 256 511

10 512 102311 1024 204712 . . . .

2048 . . . .

4095 . . . .

No anak kiri (Left Child) = No. Parent * 2

No anak kanan (Right Child) = (No. Parent *2) + 1

No Parent = No Child

2

Pertanyaan

1. Pohon dengan simpul jumlah simpul = 273 merupakan lengkap atau penuh

2. Berapa kedalamannya ?

3. No berapa simpul terkiri dari level tersebut ?

4. berapa jumlah maxsimum simpul level 7

5. No berapa anak kanan dari simpul ke 180 ?…..ada dilevel berapa anak tersebut.

6. No. berapa orang tua dari simpul ke 83 ? … ada dilevel berapa orangtua tsb

Page 141: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 13 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

A

B

C

D

Kedalaman minimal dari pohon biner adalah :

2 Log n + 1 -- dimana n = jumlah simpul

Contoh bila n = 15

Maka kedalamannya minimal = 2 Log 15 + 1

= Log 15 + 1

Log 2

= 1.17 / 0.3 + 1 = 3 + 1

= 4

SKEWED TREE

Binary Tree yang semua nodenya (kecuali leaf/daun) hanya memiliki satu child.

Adalah Pohon biner yang miring kekiri atau kekanan, atau dengan kata lain pohon biner

dengan subtree kiri kosong atau subtree kanan kosong.

Pohon Biner seperti ini disimpan dalam bentuk Array sangat memboroskan

REPRESENTASINYA sebagai berikut :

1 A 2 B 3 4 C 5 6 7 8 D 9

15

Kosong sebanyak 7 Elemen

Berdasarkan full binary tree, pohon jenis diatas memiliki banyak simpul kosong.

Seharusnya dibawah A, terdapat simpul anak yg selevel, namun hanya terdapat 1 simpul

anak yaitu B, dibawah B, seharusnya terdapat 1 simpul anak B, 2 simpul anak lainnya yang

selevel atau 2 simpul anak dari simpul yg selevel dengan B, kosong 3 array.

Page 142: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 13 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Terlihat dari contoh diatas bahwa penyimpanan data dalam memori dari pohon biner

hanya menguntungkan kalau pohon binernya penuh sehingga tidak memboroskan tempat.

Untuk menanggulangi ini maka perlu menggunakan representasi Linked List, dimana

masing-masing simpul akan mempunyai 3 field yaitu :

LCHILD DATA RCHILD

ATAU

Contoh Representasi Link Pohon Biner Biasa

 

 

 

DATA

LCHILD RCHILD

B

0 D 0 0 E 0

C

0 F 0 0 G 0

A

Page 143: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 13 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Indra Yatini B, Flowchart, Algoritma, dan Pemrograman Menggunakan Bahasa C++ Builder,

Graha Ilmu, Yogyakarta, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.

 

 

 

 

 

 

 

Page 144: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

 

 

  MODUL PERKULIAHAN 

  Pemrograman Algoritma Struktur Data  

 

 

Modul Standar untuk digunakan dalam Perkuliahan di Universitas Mercu Buana

  

             

  Fakultas  Program Studi  Tatap Muka  Kode MK  Disusun Oleh   

  Ilmu Komputer  Teknik Informatika 

14 87042  Tim Dosen

 

 

Abstract  Kompetensi  

ADT Binary Tree   

 

 

Mampu mengimplementasikan traversal pre‐order, in‐order dan post‐order. 

Mampu mengimplementasikan program yang melakukan pencarian pada binary tree  

 

Page 145: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 2 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

*

+ C

A B

ADT Binary Tree

I. PENELUSURAN POHON BINER ( Binary Tree Traversal )

Ada 3 macam Traversal :

1. Inorder Traversal

2. Preorder Traversal

3. Postorder Traversal

1. Inorder Traversal

Akan menghasilkan bentuk INFIX, Bentuknya :

Operand1 Operator Operand2 A + B

Contoh

Tulislah hasil penelusuran pohon biner berikut ini bila ditelusuri secara INORDER.

Langkah-langkahnya :

1. Telusuri Subtree (sub pohon) Kiri

2. Proses Simpul Akar

3. Telusuri Subtree(Sub pohon) Kanan

maka akan diperoleh persamaan INORDERnya adalah: (A + B) * C

2. Preorder Traversal

Akan menghasilkan bentuk PREFIX, Bentuknya

Operator Operand1 Operand2 + A B

Page 146: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 3 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

*

+ C

A B

*

+ C

A B

Contoh

Tulislah hasil penelusuran pohon biner berikut ini bila ditelusuri secara PREORDER.

Langkah-langkahnya :

1. Proses Simpul Akar

2. Telusuri Subtree(sub pohon) Kiri

3. Telusuri Subtree(Sub pohon) Kanan

maka akan diperoleh persamaan PREORDERnya adalah: * + A B C

3. Postorder Traversal

Akan menghasilkan bentuk POSTFIX, Bentuknya :

Operand1 Operand2 Operator

A B +

Contoh

Tulislah hasil penelusuran pohon biner berikut ini bila ditelusuri secara POSTORDER.

Langkah-langkahnya :

1. Telusuri Subtree(sub pohon) Kiri

2. Telusuri Subtree(Sub pohon) Kanan

3. Proses Simpul akar

maka akan diperoleh persamaan POSTORDERnya adalah: A B + C *

Page 147: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 4 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

-

C

/

A +

D

- *

7 E F G

*

SOAL latihan

1. Buat Persamaan INORDER, PREORDER, DAN POST ORDER dari Tree Berikut :

2. Diket Persamaan POST ORDER : A B / C * D E ** F / + 2 – Buat INORDER, PREORDER, dan buat Tree nya.

II. BINARY SEARCH TREE

adalah Binary tree dengan sifat bahwa :

semua left child harus lebih kecil daripada right child dan parentnya.

Juga semua right child harus lebih besar daripada left child dan parentnya.

Binary search tree dibuat untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan

dalam searching atau pencarian node tertentu dalam binary tree.

Contoh binary search tree umum :

Pada dasarnya operasi dalam binary search tree sama dengan binary tree biasa, kecuali

pada operasi insert, update dan delete.

10 23

5 14 21 25

18

Page 148: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 5 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

~ OPERASI INSERT

Pada binary search tree, insert dilakukan setelah ditemukan lokasi yang tepat (lokasi

tidak ditentukan oleh user sendiri).

Misalnya anda diminta memasukkan angka-angka berikut ini ke dalam suatu binary

search tree. Angka-angka tersebut adalah 12, 15, 13, 9, 5, 11, 20

Algoritma dari insert ini adalah :

1. Masukkan sebuah huruf, angka pertama yang masuk akan menjadi root.

2. Kemudian masukkan angka berikutnya ke dalam tree tersebut.

3. Bandingkan angka tersebut dengan angka yang menjadi root, apabila angkanya lebih

besar dari root maka letaknya ada di sebelah kanan. Kalau angkanya lebih kecil,

maka letaknya di sebelah kiri root.

4. Untuk sub root atau child, caranya juga sama dengan langkah 3.

Implementasi dari algoritma di atas dapat dilihat pada ilustrasi gambar berikut ini ;

1. Insert angka 12

Masukkan angka 12 ke dalam tree. Karena tree masih kosong maka otomatis angka

12 menjadi root.

2. Insert angka 15

Karena angka 15 lebih besar dari angka 12, maka sesuai dengan aturan yang ada

dalam binary search tree, angka 15 ini berada di sebelah kanan angka 12.

3. Insert angka13

Karena angka 13 yang dimasukkan lebih besar dari angka 12, maka sesuai dengan

aturan yang berlaku, angka 13 ini harus berada di sebelah kanan angka 12.

Kemudian karena disebelah kanan angka 12 sudah ada angka 15, maka angka 13

ini harus dibandingkan lagi dengan angka 15. Karena angka 13 lebih kecil dari

angka 15, maka posisinya ada disebelah kiri angka 15.

12

12

15

15

12

13

Page 149: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 6 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

4. Insert angka 9

Karena angka 9 yang dimasukkan lebih kecil dari angka 12, maka sesuai dengan

aturan yang berlaku angka 9 ini harus berada di sebelah kiri angka 12.

5. Insert angka 5

Karena angka 5 lebih kecil dari angka 12, maka sesuai aturan yang berlaku angka 5

ini harus berada di sebelah kiri angka 12. Kemudian karena di sebelah kiri angka 12

sudah ada angka 9, maka angka 5 ini harus dibandingkan lagi dengan angka 9.

Karena angka 5 lebih kecil dari angka 9, maka posisinya ada di sebelah kiri angka 9.

6. Insert angka 11

Karena angka 11 lebih kecil dari angka 12, maka sesuai dengan aturan yang

berlaku angka 11 ini harus berada di sebelah kiri angka 12. Kemudian karena di

sebelah kiri angka 12 sudah ada angka 9, maka angka 11 ini harus dibandingkan

lagi dengan angka 9. Karena angka 11 lebih besar dari angka 9, maka posisinya

ada di sebelah kanan angka 9.

15

13

12

9

15

13

12

9

5

15

13

12

9

5 11

Page 150: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 7 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning   Tim Dosen http://www.mercubuana.ac.id

 

7. Insert angka 20

Karena angka 20 lebih besar dari angka 12, maka sesuai dengan aturan yang

berlaku angka 20 ini harus berada di sebelah kanan angka 12. Kemudian karena di

sebelah kanan angka 12 sudah ada angka 15, maka angka 20 ini harus

dibandingkan lagi dengan angka 15. Karena angka 20 lebih besar dari angka 15,

maka posisinya ada di sebelah kanan angka 15.

~ OPERASI UPDATE

Seperti pada binary tree biasa, namun disini update akan berpengaruh pada posisi node

selanjutnya. Bila setelah diupdate mengakibatkan tree tersebut bukan Binary Search Tree

lagi, maka harus dilakukan perubahan pada tree dengan melakukan rotasi supaya tetap

menjadi Binary Search Tree.

~ OPERASI DELETE

Delete dilakukan setelah ditemukan lokasi yang tepat. (lokasi tidak ditentukan oleh user

sendiri). Misalnya dari angka-angka berikut ini dan sesuai dengan permasalahan pada

operasi insert yaitu 12, 15, 13, 9, 5, 11, 20. Anda diminta untuk menghapus angka 5, 20,

12, 9 dan 15.

Adapun algoritma dari delete ini adalah :

1. Tentukan angka yang akan dihapus.

2. Kalau angka tersebut merupakan leaf, maka bisa langsung dihapus.

3. Kalau angka yang dihapus mempunyai 1 atau lebih cabang, maka posisi angka yang

dihapus dapat digantikan pada angka yang merupakan leaf baik itu berada pada sub

tree kiri atau kanan.

Implementasi dari algoritma di atas dapat dilihat pada ilustrasi gambar berikut ini :

1. Delete angka 5

Karena angka 5 merupakan leaf, maka angka 5 ini langsung dapat dihapus.

15

13

12

9

5 11 20

Page 151: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 8 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

2. Delete angka 20

Karena angka 20 ini juga termasuk leaf, maka angka ini juga bisa segera dihapus.

3. Delete angka 12

Karena angka 12 ini mempunyai 2 anak cabang, maka untuk menggantikan angka 12

yang dihapus dapat menggunakan angka yang ada di sebelah kiri subtree bagian

kanan yaitu angka 13.

4. Delete angka 9

Karena angka 9 mempunyai 1 cabang di sebelah kiri, maka angka 11 yang merupakan

cabang dari 9 dapat menggantikan angka 9 yang dihapus.

5. Delete angka 15

Karena angka 15 merupakan leaf, maka angka ini dapat segera dihapus.

15

13

9

12

11 20

15

13

9

12

11

15

13

9

11

15

13

11

Page 152: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 9 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

Contoh program :

#include <vcl.h>

#pragma hdrstop

#include <iostream>

#include <string>

#include <conio.h>

using namespace std;

class SimpulPohon

{

public:

char data;

SimpulPohon* induk;

SimpulPohon* kiri;

SimpulPohon* kanan;

// Konstruktor

SimpulPohon(char karakter);

};

class PohonBiner

{

private:

SimpulPohon* akar;

bool sisip(SimpulPohon* &ortu, SimpulPohon* ptrBaru);

SimpulPohon* cari(SimpulPohon* &akar, char data);

string inOrder(SimpulPohon* ptrSimpul);

string preOrder(SimpulPohon* ptrSimpul);

string postOrder(SimpulPohon* ptrSimpul);

void hapusSemuaSimpul(SimpulPohon* ptrSimpul);

public:

PohonBiner();

~PohonBiner();

bool sisip(char data);

bool cari(char data);

13

9

Page 153: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 10 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

bool hapus(char data);

string inOrder();

string preOrder();

string postOrder();

};

// Konstruktor SimpulPohon

SimpulPohon::SimpulPohon(char data)

{

SimpulPohon::data = data;

SimpulPohon::induk = NULL;

SimpulPohon::kiri = NULL;

SimpulPohon::kanan = NULL;

}

// Konstruktor PohonBiner

PohonBiner::PohonBiner()

{

PohonBiner::akar = NULL;

}

// Destruktor PohonBiner

PohonBiner::~PohonBiner()

{

hapusSemuaSimpul(akar);

}

// sisip (Bersifat privat)

// Untuk menyisipkan simpul ke pohon

// Nilai balik: true = Berhasil disisipkan

// false = Gagal karena data kembar

bool PohonBiner::sisip(SimpulPohon* &ortu, SimpulPohon* ptrBaru)

{

if (ptrBaru->data == ortu->data)

{

delete ptrBaru; // Hapus karena sudah ada

return false;

}

else

if (ptrBaru->data < ortu->data)

Page 154: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 11 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

if (ortu->kiri == NULL)

{

ortu->kiri = ptrBaru;

ptrBaru->induk = ortu;

return true;

}

else

return sisip(ortu->kiri, ptrBaru);

else // Berarti lebih dari

if (ortu->kanan == NULL)

{

ortu->kanan = ptrBaru;

ptrBaru->induk = ortu;

return true;

}

else

return sisip(ortu->kanan, ptrBaru);

}

// sisip (Bersifat publik)

// Untuk menyisipkan data ke pohon

// Nilai balik: true = Berhasil disisipkan

// false = Gagal karena data kembar

bool PohonBiner::sisip(char data)

{

SimpulPohon* ptrBaru = new SimpulPohon(data);

if (akar == NULL)

{

akar = ptrBaru;

return true;

}

else

return sisip(akar, ptrBaru);

}

// cari (Bersifat privat)

// Untuk mencari data data

// Nilai balik: true: ketemu

Page 155: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 12 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

// false: tidak ketemu

// argumen Akar menyatakan akar dari subpohon

// untuk pencarian

SimpulPohon* PohonBiner::cari(SimpulPohon* &akar, char data)

{

if (akar == NULL)

return NULL;

else

if (data == akar->data)

return akar;

else

if (data < akar->data)

return cari(akar->kiri, data);

else

return cari(akar->kanan, data);

}

// cari (Bersifat publik)

// Menghasilkan : true: kalau data ketemu

// false: kalau tidak ketemu

bool PohonBiner::cari(char data)

{

if (cari(akar, data) == NULL)

return false;

else

return true;

}

// hapus (Bersifat publik)

// Nilai balik: false = Data tidak ketemu

// true = Data berhasil dihapus

bool PohonBiner::hapus(char data)

{

SimpulPohon* simpulDihapus = cari(akar, data);

if (simpulDihapus == NULL)

{

return true;

}

Page 156: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 13 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

if (simpulDihapus->kanan == NULL)

if (simpulDihapus->kiri == NULL)

{

// Simpul yang akan dihapus berkedudukan

// sebagai daun (tidak punya anak)

if (simpulDihapus == akar)

akar = NULL;

else

if (simpulDihapus->induk->kiri == simpulDihapus)

// Kalau yang dihapus adalah anak kiri ortunya

simpulDihapus->induk->kiri = NULL;

else

// Kalau yang dihapus adalah anak kanan ortunya

simpulDihapus->induk->kanan = NULL;

}

else

{

// Simpul yang akan dihapus memiliki anak di sebelah kiri saja

if (simpulDihapus == akar)

{

akar = simpulDihapus->kiri;

akar->induk = NULL;

}

else

{

// Kalau bukan akar

if (simpulDihapus->induk->kiri == simpulDihapus)

{

// Merupakan anak kiri dari ortunya

simpulDihapus->induk->kiri = simpulDihapus->kiri;

simpulDihapus->kiri->induk = simpulDihapus->induk;

}

else

{

// Merupakan anak kanan dari ortunya

simpulDihapus->induk->kanan = simpulDihapus->kiri;

Page 157: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 14 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

simpulDihapus->kiri->induk = simpulDihapus->induk;

}

}

}

else

if (simpulDihapus->kiri == NULL)

{

// Simpul yang akan dihapus mempunyai anak di sebelah kanan saja

if (simpulDihapus == akar)

{

akar = simpulDihapus->kanan;

akar->induk = NULL;

}

else // Kalau bukan akar

if (simpulDihapus->induk->kiri == simpulDihapus)

{

// Simpul dihapus adalah anak kiri ortunya

simpulDihapus->induk->kiri = simpulDihapus->kanan;

simpulDihapus->kanan->induk = simpulDihapus->induk;

}

else

{

// Simpul dihapus adalah anak kanan ortunya

simpulDihapus->induk->kanan = simpulDihapus->kanan;

simpulDihapus->kanan->induk = simpulDihapus->induk;

}

}

else

{

// Simpul yang dihapus memiliki dua buah subpohon

// -- Cari pengganti/suksesor simpul yang akan dihapus

SimpulPohon* suksesor = simpulDihapus->kanan;

while (suksesor->kiri != NULL)

suksesor = suksesor->kiri;

// -- Putuskan suksesor dari pohon

if (suksesor->induk->kiri == suksesor)

Page 158: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 15 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

{

// Suksesor sebagai anak kiri dari induknya

suksesor->induk->kiri = suksesor->kanan;

if (suksesor->kanan != NULL)

suksesor->kanan->induk = suksesor->induk;

}

else

{

// Suksesor sebagai anak kanan dari induknya

suksesor->induk->kanan = suksesor->kanan;

if (suksesor->kanan != NULL)

suksesor->kanan->induk = suksesor->induk;

}

// Data pada suksesor disalin ke simpul yang akan dihapus

simpulDihapus->data = suksesor->data;

// Ubah simpul yang ditunjuk oleh suksesor ke SimpulDihapus

simpulDihapus = suksesor;

}

delete simpulDihapus;

return true;

}

// InOrder (bersifat privat)

// Menampilkan data secara inorder

string PohonBiner::inOrder(SimpulPohon* ptrSimpul)

{

string hasil = "";

if (ptrSimpul != NULL)

{

if (ptrSimpul->kiri != NULL)

hasil = hasil + inOrder(ptrSimpul->kiri);

hasil = hasil + ptrSimpul->data;

if (ptrSimpul->kanan != NULL)

hasil = hasil + inOrder(ptrSimpul->kanan);

}

return hasil;

}

Page 159: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 16 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

// InOrder (bersifat publik)

// Menampilkan data secara inorder

string PohonBiner::inOrder()

{

return inOrder(akar);

}

// PreOrder (bersifat privat)

// Menampilkan data secara preorder

string PohonBiner::preOrder(SimpulPohon* ptrSimpul)

{

string hasil = "";

if (ptrSimpul != NULL)

{

hasil = hasil + ptrSimpul->data;

if (ptrSimpul->kiri != NULL)

hasil = hasil + preOrder(ptrSimpul->kiri);

if (ptrSimpul->kanan != NULL)

hasil = hasil + preOrder(ptrSimpul->kanan);

}

return hasil;

}

// PreOrder (bersifat publik)

// Menampilkan data secara preorder

string PohonBiner::preOrder()

{

return preOrder(akar);

}

// PostOrder (bersifat privat)

// Menampilkan data secara postorder

string PohonBiner::postOrder(SimpulPohon* ptrSimpul)

{

string hasil = "";

if (ptrSimpul != NULL)

{

if (ptrSimpul->kiri != NULL)

hasil = hasil + postOrder(ptrSimpul->kiri);

Page 160: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 17 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

if (ptrSimpul->kanan != NULL)

hasil = hasil + postOrder(ptrSimpul->kanan);

hasil = hasil + ptrSimpul->data;

}

return hasil;

}

// PostOrder (bersifat publik)

// Menampilkan data secara postorder

string PohonBiner::postOrder()

{

return postOrder(akar);

}

// HapusSemuaSimpul (Bersifat privat)

// Untuk menghapus semua simpul

void PohonBiner::hapusSemuaSimpul(SimpulPohon* ptrSimpul)

{

if (ptrSimpul != NULL)

{

hapusSemuaSimpul(ptrSimpul->kiri);

hapusSemuaSimpul(ptrSimpul->kanan);

delete ptrSimpul;

}

}

int main()

{

PohonBiner pohon;

string dataNama = "KEBUNMAIYA";

// Memasukkan karakter-karakter yang ada di dataNama ke Pohon

for (unsigned int i = 0; i < dataNama.length(); i++)

{

if (pohon.sisip(dataNama[i]) == false)

cout << "Data " << dataNama[i]

<< " sudah ada" << endl;

else

cout << "Data " << dataNama[i]

<< " disimpan" << endl;

Page 161: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 18 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

}

cout << "InOrder: "

<< pohon.inOrder() << endl;

cout << "PreOrder: "

<< pohon.preOrder() << endl;

cout << "PostOrder: "

<< pohon.postOrder() << endl;

// Menghapus A, N dan K

pohon.hapus('A');

pohon.hapus('N');

pohon.hapus('K');

cout << "Setelah A, N dan K dihapus: " << endl

<< "PreOrder: "

<< pohon.preOrder() << endl;

getch();

}

Hasil eksekusi :

Page 162: MODUL PERKULIAHAN Pemrograman Algoritma Struktur Datafasilkom.mercubuana.ac.id/wp...Algoritma-dan-Struktur-Data-TI.pdf · Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA,

2015 19 Pemrograman Algoritma Struktur Data Modul 14 Pusat Bahan Ajar dan eLearning Tim Dosen http://www.mercubuana.ac.id

Daftar Pustaka

Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta,

2009.

Budi Raharjo, Pemrograman C++, Informatika, Bandung, 2010.

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana Media,

Bandung, 2004.