Pemrograman Algoritma Struktur Data

dokumen-dokumen yang mirip
PENGERTIAN. 2. Operator Unary 3. Operator Binary 4. Operator Ternary

Pengenalan C++ Oleh : Dewi Sartika

Struktur Bahasa C dan C++

PEMROGRAMAN BERORIENTASI OBJEK. Operator. Budhi Irawan, S.Si, M.T

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

Komentar, Identifier, Konstanta dan Variabel

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

PEMROGRAMAN BERORIENTASI OBJEK

PEMROGRAMAN BERORIENTASI OBJEK. Percabangan. Budhi Irawan, S.Si, M.T

MODUL 1 Alur Seleksi dengan C++

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

PEMROGRAMAN BERORIENTASI OBJEK. Pengulangan. Budhi Irawan, S.Si, M.T

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

Pertemuan 5 PEMILIHAN/PERCABANGAN

Keg. Pembelajaran 2 : Mengenal Bahasa C++

STRUKTUR DATA MENGGUNAKAN C++ Windha Mega PD, S.Kom

Konsep Dasar Pemrograman Dan Pengenalan C++

PRAKTIKUM PEMROGRAMAN KOMPUTER MODUL II PERCABANGAN. Bahasa Pemrograman : C / C++

Algoritma Pemrograman. Fery Updi,M.Kom

Instalasi Code::Blocks, Tipe Data, Variabel, Konstanta, Operator, Input-Output dan Flowchart

8.1 FUNGSI, DEKLARASI DAN DEFINISI NYA

Pengantar Pemrograman

STRUKTUR DASAR PEMROGRAMAN

Achmad Solichin.

OPERATOR DAN STATEMEN I/O

PERCABANGAN P E N G E N A L A N P R O G R A M S T U D I T E K N I K I N F O R M AT I K A. Institut Teknologi Sumatera

Tipe Data dan Operator

Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah: Perkalian Pembagian Sisa Pembagian (mod) Penjumlahan 6 2

SUMBER BELAJAR PENUNJANG PLPG

3. Elemen Dasar C++ S. Indriani S. L., M.T L.,

Chapter 1 KONSEP DASAR C

Bahasa C-M6 By Jamilah, Skom 1

Bab 2. Dasar-Dasar Pemrograman C

PRAKTIKUM 4 PERCABANGAN

Chapter 2 Tipe Data, Identifier, Operator dan Control Statement

MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER)

Dasar Pemrograman Java

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

elemen Dasar Bahasa Pemrograman C

MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN

MODUL 1 PENGENALAN PROGRAM C++ DAN PERNYATAAN MASUKAN-KELUARAN

Bahasa C. Dosen : Dhamayanti

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

PENGANTAR KOMPUTER & SOFTWARE II PERCABANGAN

Tipe Data, Identifier, Operator dan Control Statement

PENGANTAR BAHASA C++

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA

MODUL I PENDAHULUAN & PENGENALAN TURBO C++

Basic Input/Output Operator Yoannita

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Dasar Pemrograman Mikrokontroler dengan Bahasa C

IT234 - Algoritma dan Struktur Data. Ramos Somya

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

STRUKUR KENDALI : PERCABANGAN

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Minggu III STRUKTUR PEMILIHAN (KONTROL PROGRAM)

TEKNIK ELEKTRO FAKULTAS TEKNIK UNISMA

Elemen Bahasa Pemrograman. Aditya Rizki Yudiantika, M.Eng.

MODUL 1 PENGENALAN ENVIROMENT C++

PEMROGRAMAN TERSTRUKTUR OLEH : IR. H. SIRAIT, MT

Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.

PEMROGRAMAN BAHASA C++ ASEP MUHIDIN. Penerbit ZEYRANK OFFSET. Aa Oon Pemrograman Bahasa C++ 1

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Keg. Pembelajaran 3 : Operator dalam Bahasa C++

SL 1201 Materi tentang Fungsi

Algoritma dan Pemrograman

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

MODUL PRAKTIKUM ALGORITMA DAN PEMOGRAMAN I. Oleh : Wahyu Widodo, S.Kom

PERTEMUAN II Tipe Data, Variabel, Konstanta, Operator

ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

PRAKTIKUM 4 PENGAMBILAN KEPUTUSAN

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

Keg. Pembelajaran 5 : Perulangan dalam C++ 1. Tujuan Kegiatan Pembelajaran 2. Uraian Materi while do..while for continue dan break go to

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

INPUT OUTPUT. cout. Digunakan untuk mencetak suatu informasi ke layar Contoh : cout << Halo Teknik Informatika

BAHASA PEMROGRAMAN C

StrukturDasarProgram Prosedural (dalambahasac++)

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman

PENGENALAN C++ DADANG MULYANA 2012

Tipe Data dan Variabel. Dosen Pengampu Muhammad Zidny Naf an, M.Kom

MODUL. Pemrograman Terstruktur Semester IV, 2017 Acihmah Sidauruk, M.Kom. 1. Tujuan. 2. Teori Singkat. 3. Praktikum KONSTAN DAN OPERATOR

Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom

STRUKTUR DASAR ALGORITMA DAN PEMROGRAMAN STMIK AMIKOM YOGYAKARTA

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

Identifier dan Tipe Data

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

Algoritma dan Pemrograman

BAB 4 PENGENALAN BAHASA C

PENGENALAN PROGRAM C++

MODUL DUA VARIABEL DAN TIPE VARIABEL

TIPE DATA, VARIABLE, dan OPERATOR DELPHI

Modul IV Pemrograman Bahasa C ( bagian I )

Transkripsi:

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 Abstract 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++ Kompetensi 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

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 2 Pemrograman Algoritma Struktur Data Modul 01

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 : 3 Pemrograman Algoritma Struktur Data Modul 01

#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; 4 Pemrograman Algoritma Struktur Data Modul 01

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++. 5 Pemrograman Algoritma Struktur Data Modul 01

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; 6 Pemrograman Algoritma Struktur Data Modul 01

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() 7 Pemrograman Algoritma Struktur Data Modul 01

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_tipenilai1, nilai2,...; Contoh pendefinisian tipe enumerasi: enum JENIS_KELAMINPria, Wanita; enum HARIMinggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu; 8 Pemrograman Algoritma Struktur Data Modul 01

contoh : #include<iostream.h> #include<string.h> enum JENIS_KELAMINPria, 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 : 9 Pemrograman Algoritma Struktur Data Modul 01

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... 10 Pemrograman Algoritma Struktur Data Modul 01

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. 11 Pemrograman Algoritma Struktur Data Modul 01

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 Abstract Operator dan && dalam bahasa C++ Proses konversi dari multi conditions menjadi nested if Kompetensi Mampu menggunakan operator (OR) dan && (AND) dan melakukan kombinasi antara berbagai operator tersebut. Mampu melakukan konversi dari multi conditions menjadi nested if

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. 2 Pemrograman Algoritma Struktur Data Modul 02

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(); 3 Pemrograman Algoritma Struktur Data Modul 02

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 : 4 Pemrograman Algoritma Struktur Data Modul 02

#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 (&&) 5 Pemrograman Algoritma Struktur Data Modul 02

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 : 6 Pemrograman Algoritma Struktur Data Modul 02

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; 7 Pemrograman Algoritma Struktur Data Modul 02

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 8 Pemrograman Algoritma Struktur Data Modul 02

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(); 9 Pemrograman Algoritma Struktur Data Modul 02

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 : 10 Pemrograman Algoritma Struktur Data Modul 02

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! 11 Pemrograman Algoritma Struktur Data Modul 02

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. 12 Pemrograman Algoritma Struktur Data Modul 02

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 Abstract Struktur Kondisi IF Struktur Kondisi Switch Case Kompetensi Mampu menggunakan struktur kondisi IF dalam bahasa pemrograman C++. Mampu menggunakan struktur kondisi Switch Case dalam bahasa pemrograman C++.

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 : 2 Pemrograman Algoritma Struktur Data Modul 03

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 : 3 Pemrograman Algoritma Struktur Data Modul 03

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> 4 Pemrograman Algoritma Struktur Data Modul 03

#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 : 5 Pemrograman Algoritma Struktur Data Modul 03

#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 : 6 Pemrograman Algoritma Struktur Data Modul 03

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(); 7 Pemrograman Algoritma Struktur Data Modul 03

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; 8 Pemrograman Algoritma Struktur Data Modul 03

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; 9 Pemrograman Algoritma Struktur Data Modul 03

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. 10 Pemrograman Algoritma Struktur Data Modul 03

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. 11 Pemrograman Algoritma Struktur Data Modul 03

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 Abstract Struktur perulangan dengan for, do while dan while Pengaplikasian struktur perulangan untuk memecahkan soal soal matematika dan fisika Kompetensi 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

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 : 2 Pemrograman Algoritma Struktur Data Modul 04

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. 3 Pemrograman Algoritma Struktur Data Modul 04

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 : 4 Pemrograman Algoritma Struktur Data Modul 04

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 : 5 Pemrograman Algoritma Struktur Data Modul 04

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 : 6 Pemrograman Algoritma Struktur Data Modul 04

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"; 7 Pemrograman Algoritma Struktur Data Modul 04

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 : 8 Pemrograman Algoritma Struktur Data Modul 04

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(); 9 Pemrograman Algoritma Struktur Data Modul 04

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 10 Pemrograman Algoritma Struktur Data Modul 04

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. 11 Pemrograman Algoritma Struktur Data Modul 04

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 Abstract Function Dalam Bahasa C Kompetensi Mampu membuat program yang mengandung void function dan typed function

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. 2 Pemrograman Algoritma Struktur Data Modul 05

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 : 3 Pemrograman Algoritma Struktur Data Modul 05

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(); 4 Pemrograman Algoritma Struktur Data Modul 05

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(); 5 Pemrograman Algoritma Struktur Data Modul 05

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(); 6 Pemrograman Algoritma Struktur Data Modul 05

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(); 7 Pemrograman Algoritma Struktur Data Modul 05

#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 : 8 Pemrograman Algoritma Struktur Data Modul 05

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() 9 Pemrograman Algoritma Struktur Data Modul 05

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); 10 Pemrograman Algoritma Struktur Data Modul 05

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(); 11 Pemrograman Algoritma Struktur Data Modul 05

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; 12 Pemrograman Algoritma Struktur Data Modul 05

getch(); void tukar(int& X, int& Y) int Z; Z = X; X = Y; Y = Z; Hasil eksekusi : 13 Pemrograman Algoritma Struktur Data Modul 05

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. 14 Pemrograman Algoritma Struktur Data Modul 05

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 Abstract Kompetensi Fungsi Rekursif Mampu menjelaskan konsep fungsi rekursif Mampu mengimplementasikan masalah matematika yang solusinya bersifat rekursif dengan program yang mengandung fungsi rekursif

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 langkahlangkah 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> 2 Pemrograman Algoritma Struktur Data Modul 06

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 : 3 Pemrograman Algoritma Struktur Data Modul 06

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> 4 Pemrograman Algoritma Struktur Data Modul 06

#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 5 Pemrograman Algoritma Struktur Data Modul 06

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 : 6 Pemrograman Algoritma Struktur Data Modul 06

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(); 7 Pemrograman Algoritma Struktur Data Modul 06

Hasil Eksekusi : 8 Pemrograman Algoritma Struktur Data Modul 06

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. 9 Pemrograman Algoritma Struktur Data Modul 06

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 Abstract Array satu dimensi dan Array dua dimensi Kompetensi 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.

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 : 2 Pemrograman Algoritma Struktur Data Modul 07

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++) 3 Pemrograman Algoritma Struktur Data Modul 07

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 ratarata 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++) 4 Pemrograman Algoritma Struktur Data Modul 07

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 elemenelemennya, 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] 5 Pemrograman Algoritma Struktur Data Modul 07

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(); 6 Pemrograman Algoritma Struktur Data Modul 07

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]; 7 Pemrograman Algoritma Struktur Data Modul 07

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 : 8 Pemrograman Algoritma Struktur Data Modul 07

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) 9 Pemrograman Algoritma Struktur Data Modul 07

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 : 10 Pemrograman Algoritma Struktur Data Modul 07

Hasil Eksekusinya adalah : 11 Pemrograman Algoritma Struktur Data Modul 07

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. 12 Pemrograman Algoritma Struktur Data Modul 07

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 Abstract Pointer Linked List Kompetensi Mampu menggunakan pointer untuk mengalokasikan memori secara dinamis. Mampu menjelaskan konsep linked list. Mampu mengimplementasikan linkedlist dalam sebuah program sampai dengan menambah node node baru dan list traversal.

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 Data Berisi alamat variabel X 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 : tipe *variabel; Contoh : double *p; p adalah variabel pointer yang menunjuk ke data bertipe double. menyatakan pointer double *p; variabel pointer yang menunjuk Contoh lain : tipe data yang ditunjuk oleh variabel pointer p ke data bertipe double Gambar 2. Penentuan tipe Pointer 2 Pemrograman Algoritma Struktur Data Modul 08

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 : Variabel_pointer = &variabel_data 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> 3 Pemrograman Algoritma Struktur Data Modul 08

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 : 4 Pemrograman Algoritma Struktur Data Modul 08

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 : Novel = new RekamanBuku; 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() 5 Pemrograman Algoritma Struktur Data Modul 08

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 : Deletevariabel_pointer; Dengan cara tersebut, memori yang ditunjuk oleh variabel_pointer dihapus. 6 Pemrograman Algoritma Struktur Data Modul 08

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; ; 7 Pemrograman Algoritma Struktur Data Modul 08

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(); 8 Pemrograman Algoritma Struktur Data Modul 08

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 : novel = new RekamanBuku[5]; 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 9 Pemrograman Algoritma Struktur Data Modul 08

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 10 Pemrograman Algoritma Struktur Data Modul 08

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. 11 Pemrograman Algoritma Struktur Data Modul 08

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. 12 Pemrograman Algoritma Struktur Data Modul 08

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 Abstract List traversal secara rekursif Penyisipan node di awal dan di tengah linked list. Kompetensi Mampu membuat program yang secara rekursif melakukan list traversal Mampu membuat program yang melakukan penyisipan node di awal dan di tengah linked list.

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 2 Pemrograman Algoritma Struktur Data Modul 09

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 : 3 Pemrograman Algoritma Struktur Data Modul 09

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; 4 Pemrograman Algoritma Struktur Data Modul 09

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) 5 Pemrograman Algoritma Struktur Data Modul 09

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; 6 Pemrograman Algoritma Struktur Data Modul 09

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"); 7 Pemrograman Algoritma Struktur Data Modul 09

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 : 8 Pemrograman Algoritma Struktur Data Modul 09

9 Pemrograman Algoritma Struktur Data Modul 09

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. 10 Pemrograman Algoritma Struktur Data Modul 09

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 Abstract ADT Stack Implementasi stack dengan array Implementasi stack dengan linked list Kompetensi Mampu menjelaskan yang dimaksud dengan ADT stack Mampu membuat program yang mengimplementasikan stack dengan array

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. 2 Pemrograman Algoritma Struktur Data Modul 09

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 ) pop(t) push(t, Amsterdam ) push(t, Geneva ) push(t, Roma ) push(t, Vienna ) pop(t) pop(t) pop(t) push(t, London ) Paris dimasukkan terlebih dulu, baru Innsbruck Innsbruck dikeluarkan, kemudian Amsterdam dimasukkan, dan diikuti Geneva Roma dan Vienna ditambahkan Vienna, Roma dan Geneva dikeluarkan. Kemudian London ditambahkan Innsbruck Paris Geneva Amsterdam Paris Geneva Amsterdam Paris London Amsterdam Paris 3 Pemrograman Algoritma Struktur Data Modul 09

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. O String asal FERNANDO D di proses ketumpokan N A di ambil satu persatu dan di susun dari kiri ke kanan : ODNANREF N R E F 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 4 Pemrograman Algoritma Struktur Data Modul 09

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(bc d[]) dianggap valid, sedangkan ekspresi (a(bc 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 5 Pemrograman Algoritma Struktur Data Modul 09

// 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"); 6 Pemrograman Algoritma Struktur Data Modul 09

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 7 Pemrograman Algoritma Struktur Data Modul 09

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. 8 Pemrograman Algoritma Struktur Data Modul 09

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 Abstract Implementasi Stack dengan linked list Kompetensi Mampu membuat program yang mengimplementasikan stack dengan linked list

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(); ; 2 Pemrograman Algoritma Struktur Data Modul 11

// 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; 3 Pemrograman Algoritma Struktur Data Modul 11

// 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'); 4 Pemrograman Algoritma Struktur Data Modul 11

// 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: 5 Pemrograman Algoritma Struktur Data Modul 11