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 DosenAbstract
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
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
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 :#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;
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++.
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; }
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()
{ 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};
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;
}
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 ...
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.
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 DosenAbstract
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
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.
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(); }
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
#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:
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();
}
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;
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
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();
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(); }
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!
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.
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 DosenAbstract
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++.
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();
}
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(); }
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>
#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 :
#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();
}
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();
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; …
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;
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
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.
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 DosenAbstract
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
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(); }
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.
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 :
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 :
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 :
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;
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();
}
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(); }
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
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.
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 DosenAbstract
Kompetensi
Function Dalam Bahasa C Mampu membuat program yang mengandung void function dan typed functionFunction (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.
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 :
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();
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();
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();
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();
#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; }
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()
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); }
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();
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;
getch(); }
void tukar(int& X, int& Y) { int Z; Z = X; X = Y; Y = Z; } Hasil eksekusi :
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.
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 DosenAbstract
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 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>
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 :
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>
#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:
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 :
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(); }
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.
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 DosenAbstract
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.
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 :
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++)
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 ;
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 :
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(); }
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];
} 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 :
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)
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(); }
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.