Anda di halaman 1dari 65

MODUL PRAKTIKUM

PEMROGRAMAN DASAR

SEKOLAH VOKASI
UNIVERSITAS GADJAH MADA
BAB I

ALGORITMA DAN PEMROGRAMAN TERSTRUKTUR

 Definisi dan pengertian


Pada bahasa pemrograman komputer terdapat beberapa faktor yang harus diperhatikan
yaitu sintaksis, semantik, dan kebenaran logika. Sintaksis adalah tata bahasa yang
digunakan dalam program. Semantik adalah maksud yang dikandung dalam setiap
pernyataan yang ada di dalam program. Kebenaran logika berhubungan dengan benar
tidaknya urutan pernyataan yang ada dalam program. Bahasa komputer dikelompokkan
menjadi dua bagian yaitu bahasa pemrograman tingkat tinggi (low level programming
language) dan bahasa pemrograman tingkat tinggi (high level programming language).
Bahasa pemrograman tingkat rendah sulit dipahami karena berhubungan langsung dengan
mesin komputer itu sendiri, pemrograman tingkat tinggi merupakan bahasa pemrograman
yang memakai kata-kata dan pernyataan yang mudah dimengerti manusia meskipun masih
jauh berbeda dengan bahasa manusia sesungguhnya.

Proses pemecahan masalah sebelum di implementasikan dalam sebuah program yaitu


1. Menganalisa dan memahami suatu permasalahan dan dibuat suatu algoritma dimana
algoritma merupakam pola pkir terstruktur berisi tahap-tahap penyelesaian suatu
permasalahan.
2. Membuat suatu kode dari algoritma yang telah dibuat ke dalam pernyataan--pernyataan
yang sesuai dengan bahasa pemrograman yang digunakan
3. Testing dan debugging. Testing merupakan proses menjalankan program secara rutin
untuk menemukan kesalahan – kesalahan dalam penulisan suatu pernyataan dalam
program. Sedangkan debugging adalah proses menemukan kesalahankesalahan dalam
program dan kesalahan yang ditemukan kemudian diperbaiki sampai tidak muncul lagi.
4. Melakukan dokumentasi terhadap setiap langkkah yang dilakukan. Dokumentasi ini
sangat penting untuk mengembangkan program selanjutnya.

 Algoritma Pemrograman
Algoritma pemrograman merupakan urutan langkah—langkah untuk menyelesaikan
masalah yang disusun secara sistematis. Algoritma dibuat tanpa memperhatikkan bentuk
yang akan digunakan sebagai implementasinya, sehingga suatu algoritma dapat
menjelaskan bagaimana cara melaksanakan fungsi yang dapat diekspresikan dengan suatu
program atau komponen fisik. Sebelum membuat algoritma perlu mendefinisikan masukan
(input) dan keluaran (output).
1. Mendefinisikan masalah
Memahami permasalahan mendalam langkah apa yang harus dinputkan pada
program dan perintah yang akan digunakan serta bagaimana bentuk outputnya. Contoh
diambil kasus algoritma memasak telor dadar. Dimana input berupa telor yang masih
mentah dan output berupa telor yang sudah matang.
2. Teknik pemecahan masalah dan algoritma
Teknik pemecahan masalah yang tepat dalam hal ini dituangkan dalam suatu
algoritma dengan tujuan untukk menyelesaikan masalah. Algoritma harus memiliki
kebenaran secara logika sehingga siap diimpplementasikan dalam program. Misalkan
dari permasalahan membuat telor dadar dapat dibuat suatu algoritma sebagai berikut :
 Nyalakan api kompor
 Tuangkan minyak ke dalam wajan
 Pecahkan telor ayam ke dalam mangkuk
 Tambahkan garam secukuppnya
 Aduk campuran telor dengan garam
 Tuang adonan telor ke dalam wajan
 Masak telor hingga matang

Penyajian algoritma :
Algoritma disajikan dalam dua bentuk , yaitu:
1. Menggunakan Flow chart (diagram alir)
2. Menggunakan pseudo-code

 Flowchart
Dalam membuat algoritma diperlukan suatu mekanisme atau alat bantu untuk
menuangkan hasil pemikiran mengenai langkah-langkah penyelesain yang sistematis dan
terurut. Penyusunan solusi sebagai alat untuk pemecahan masalah dapat disajikan dengan
flowchart, merupakan skema penggambaran dari algoritma atau proses. Tabel berikut
menyajikan simbol-simbol yang digunakan untuk menyusun flowchart.

Terminator
Sebagai simbol ’START’ atau ’END’ untuk memulai atau
mengakhiri flowchart.

Input/Output
Digunakan untuk menuliskan proses menerima data atau
mengeluarkan data

Proses
Digunakan untuk menuliskan proses yang diperlukan, misalnya
operasi aritmatika

Conditional / Decision
Digunakan untuk menyatakan proses yang membutuhkan
keputusan

Preparation
Digunakan untuk memberikan nilai awal

Arrow
Sebagai penunjuk arah dan alur proses

Connector (On-page)
Digunakan untuk menyatukan beberapa arrow

Connector (Off-page)
Digunakan untuk menghubungkan flowchart yang harus
digambarkan pada halaman yang berbeda. Biasanya pada simbol
ini diberi nomor sebagai penanda, misalnya angka 1.
Display
Digunakan untuk menampilkan data ke monitor

 Struktur Flowchart
o Struktur sequence
Struktur ini terdiri dari pernyataan yang tidak mempunyai unsur perulangan atau
keputusan didalamnya. Contoh algoritma memecahkan masalah dalam program
untuk sequence , kasus perhitungan luas dan volume balok. Adapun volume dari
balok adalah volume=(2*p*l)+(2*p*t)+(2*l*t) sedangkan luas suatu balok adalah
luas=p*l*t (p= panjang, l= lebar, t = tinggi). Algoritma dari permasalahan tersebut
adalah:
1. Masukkan panjang
2. Masukkan lebar
3. Masukkan tinggi
5. Luas = (2*p*l)+(2*p*t)+(2*l*t)
6. Volume = p*l*t
7. Tampilkan luas
8. Tampilkan volume

Adapun dengan penyajian flowchart sebagai berikut :

Keterangan dari algoritma diatas: pada baris pertama, kedua dan ketiga anda
diminta untuk memasukkan input yang berkaitan dengan balok yaitu panjang,
lebar,tinggi. Adapun panjang balok disimpan pada variabel panjang (p), lebar
balok disimpan pada variabel lebar (l), tinggi balok disimpan pada variabel tinggi
(t). Sedangkan pada baris keempat dan kelima anda diminta memasukkan rumus
volume balok (2*p*l)+(2*p*t)+(2*l*t) dan luas balok adalah luas=p*l*t. Untuk luas
balok disimpan pada variabel luas dan volume balok disimpan pada variabel
volume . Baris enam dan tuuh merupakan hasil dari proses input dan proses
perhitungan yang dimasukkan berdasarkan nilai inputnya dan ditampilkan pada
variabel luas dan volume.

o Struktur keputusan (decision)


Pengambilan keputusan perlu dilakukan apabila harus menentukan satu pilihan
dari minimal dua pilihan yang ada. Dalam hal ini kondisi yang dihadapi perlu
diketahui. Simbol pengambilan keputusan hanya memiliki satu buah input dan dua
buah output yang digunakan untuk memfasilitasi hasil dari pengujian kondisi yaitu
ya atau tidak (True atau False).

Contoh Kasus : Pemimpin sebuah perusahaan otomotif perlu menentukan


besarnya bonus yang akan diberikan kepada para pegawainya yang bekerja
sebagai account executive. Jika terdapat pegawai yang dalam bulan ini telah
menjual mobil lebih dari dua unit, maka akan mendapatkan bonus sebesar Rp
1.000.000,- kemudian pegawai yang bisa menjual mobil tepat dua buah maka,
akan mendapatkan bonus Rp 500.000,- namun jika pegawai yang dalam bulan
ini penjualannya kurang dari dua unit maka, pegawai tersebut tidak mendapatkan
bonus. Jika kita gambarkan persoalan di atas menggunakan flowchart maka,
akan menjadi seperti berikut :
START

Input
(jumlah penjualan)

jumlah
Ya penjualan> 2 Tidak
unit?

jumlah
Bonus =
Ya penjualan= 2
1.000.000 Tidak
unit?

Bonus = Bonus =
500.000 0

Output
(Bonus)

END

o Struktur Perulangan (Looping)


Dalam beberapa kasus, seringkali terdapat proses yang harus dilakukan secara
berulang-ulang. Pada kasus yang berhubungan dengan pengolahan informasi
menggunakan komputer, terdapat proses-proses yang harus dilakukan secara
berulang, mulai dari input data, proses dan output. Program yang baik adalah
program yang bisa mengoptimalkan kinerja komputer, dengan cara menggunakan
kembali program atau sekumpulan program dengan proses tertentu. Atau dengan
kata lain terdapat bagian program yang dapat dipanggil/digunakan secara
berulang-ulang. Hal ini akan mempermudah pekerjaan programmer dalam
menghasilkan solusi. Dalam proses pengulangan terdapat 3 (tiga) hal penting,
yaitu:
1. Inisialisasi (penentuan kondisi/nilai awal)
2. Proses
3. Kondisi berhenti

Contoh Kasus : Seorang staff IT diminta untuk menampilkan data dari sebuah
tabel dimana di dalamnya terdapat seratus baris data. Jika staff tersebut harus
menampilkan satu per satu, tentunya akan membutuhkan banyak kode program
dan program akan menjadi tidak efektif. Bagaimana cara menyelesaikan
persoalan staff IT tersebut?
Solusi : Untuk kasus menampilkan data, dapat ditentukan bahwa jumlah baris
yang akan dibaca adalah 100. Baris akan dibaca mulai dari baris pertama (baris =
1). Proses yang dilakukan adalah membaca dan menampilkan isinya ke layar
(output). Pembacaan akan berhenti jika baris yang dibaca sudah mencapai baris
ke-100. Jika digambarkan menggunakan flowchart maka, akan tampak sebagai
berikut:
START

Jumlah baris = 100

Baris = 1

Baris <
Jumlah baris ?

Ya

Output
(Data[Baris])

Baris = Tidak
Baris + 1

END

Tugas :
Buatlah desain flowchart berikut di software DIA, hasilnya di capture dan jelaskan algoritma
dari teknik pemecahan masalah pada flowchart tersebut.

1. Kasus perhitungan gaji 2. Kasus penjumlahan dua bilangan

3. Kasus mencari nilai 4. Kasus penggajian dengan syarat


rata-rata kondisi

5. Kasus subroutine 6. Kasus perulangan nilai


BAB II
BERKENALAN DENGAN BAHASA C++

1. Sejarah
Bahasa C++ merupakan salah satu bahasa pemrograman komputer, dimana C++
merupakan pengembangan dari bahasa C, bahasa C dikembangkan pada tahun
1980 menjadi C++ oleh Bjarne Stroustroup dari Laboratorium Bell,AT&T. Awalnya
C++ diberi nama dengan nama “A better C”, kemudian untuk simbol ++ berasal dari
salah satu operator di bahasa C yaitu increment, yang merupakan operator penaikan
dimana simbol tersebut menunjukan bahwa C++ adalah bahasa pemrograman yang
lebih canggih dibandingkan dengan C.
Kemudian Borland International Inc mengembangkan kompiler C++ menjadi
sebuah kompiler yang dapat mengubah C++ menjadi bahasa mesin (assembly), lalu
pada tahun 1990 bahasa C++ pun menjadi bahasa pemrograman yang berorientasi
obyek. Agar dapat mendukung fitur di C++, maka dibangunlah efisiensi dan sistem
support untuk pemrograman tingkat rendah (low level coding), konsep yang di
tambahkan pada C++ yaitu seperti class yang sifatnya seperti inheritance dan
overloading. Selain itu C++ memiliki keistimewaan yaitu dapat mendukung OOP
(Object Oriented Programming). Tujuan dibuatnya C++ adalah agar dapat
meningkatkan produktivitas pemrogram dalam membuat sebuah aplikasi.

2. Kelebihan dan Kekurangan Bahasa C++


 Kelebihan Bahasa C++
a. Bahasa C++ tersedia hampir di semua jenis komputer
b. Bersifat portable dan fleksibel untuk semua jenis komputer
c. Menyediakan sedikit kata-kata kunci yaitu hanya terdapat 48 kata kunci
d. Proses eksekusinya lebih cepat
e. Terdapatnya dukungan pustaka fungsi dan kelas yang banyak, dengan hal
itulah bahasa C++ memungkinkan pembuatan aplikasi makro
f. Bahasa C++ termasuk bahasa tingkat menengah (middle level language)
g. Kode programnya bersifat reuseable, sehingga bisa digunakan kembali pada
project lain dengan hanya menggunakan library dan file header
h. Bahasa C++ merupakan bahasa yang terstruktur, sehingga akan mendukung
OOP
i. Bahasa standarnya ANSI sehingga bisa di pakai di berbagai platform

 Kekurangan Bahasa C++


a. Untuk pemula biasanya akan kesuliatan dalam menggunakan pointer
b. Implementasi C++ dalam teknologi IT untuk sekarang sangat sedikit sekali
c. Terdapatnya banyak operator serta fleksibilitas sehingga dalam penulisan
dapat membingungkan pemakai.

3. Mengenal Editor Bahasa C++


Untuk memulai bahasa C++, buka editor bahasa C++ yang ada, seperti Dev C++,
Eclipse, NetBeans, Atom, Code::Blocks, dan sebagainya. Semua program yang ada
pada modul ini diterapkan menggunakan Dev C++.
 Melakukan testing dan debugging
Testing merupakan proses menjalankan program secara rutin untuk
menemukan kesalahan – kesalahan dalam penulisan suatu pernyataan
dalam program. Pada dev c++ untuk melakukan testing program digunakan
button pada aplikasi program atau dengan Ctrl+F9

Sedangkan debugging adalah proses menemukan kesalahan-kesalahan


dalam program dan kesalahan yang ditemukan kemudian diperbaiki sampai
tidak muncul lagi.

Sedangkan running adalah proses untuk menjalankan program sesuai


dengan fungsi yanga ada

4. Penulisan Program Bahasa C++


Salah satu konsep yang penting dalam bahasa pemrograman C ++ adalah struktur.
Struktur merupakan salah satu bentuk susunan dari suatu program. Berikut
merupakan struktur dasar dari program C++ :
#include <file-include>
void main ()
{
Pernyataan;
}

Contoh program sederhana C++ :


/*Contoh program C++*/ Hasil program :
#include <iostream>
using namespace std;
int main ()
{
cout<<"Selamat Belajar C++";
return 0;
}

Penjelasan contoh program diatas :


 /*Contoh program C++*/ merupakan sebuah baris komentar dan tidak
berpengaruh pada hasil program. Umumnya baris komentar digunakan untuk
memberikan penjelasan tentang program. Untuk memberikan komentar
menggunakan pembatas /* dan */ atau menggunakan tanda // untuk komentar
yang hanya terdiri dari satu baris.
 #include <iostream> berarti memerintahkan kompiler untuk menyertakan file
header iostream. #include merupakan salah satu jenis praprosesor yang
dipakai untuk membaca file yang dinamakan file header yaitu file yang berisi
deklarasi fungsi dan definisi konstanta. Dalam file header tersebut terdapat
beberapa fungsi standar yang digunakan dalam proses input dan output,
misalnya dalam program ini yaitu perintah cout.
 using namespace std; adalah sebuah intruksi terhadap compiler untuk
menggunakan semua fungsi yang terkait untuk kerangka yang sama, bisa
berupa berkas, class, dan sejenisnya yang berkaitan dengan std.  Penulisan
perintah cout dan cin sebenarnya adalah std::cout atau std::cin namun
dengan adanya pengunaan Using Namespace Std dapat meminimalisir
kesalahan akbiat tidak dikenalinya fungsi cout dan cin apabila dalam
penulisan secara langsung. 
 main() merupakan nama dari salah satu fungsi yang harus ada di dalam
program C++ dan diletakkan dibagian tertentu yang menunjukan kepada
compiler dimana awal suatu program. main() hanya digunakan sekali saja
dalam suatu program. Setiap program harus mengandung fungsi main() agar
dapat diproses.
 Tanda { brance pembuka, yang diletakkan dibawah nama fungsi main()
menunjukan awal dari perintah-perintah yang akan ditulis atau tanda
{ merupakan awal suatu function body atau fungsi blok.
 cout << "Selamat Belajar C++"; perintah ini merupakan hal yang akan
dieksekusi oleh compiler dan merupakan perintah yang akan dikerjakan. cout
termasuk dalam file iostream. cout merupakan perintah untuk menampilkan
ke layer.
 return 0; pernyataan return akan menyebabkan fungsi main() menghentikan
program dan mengembalikan nilai kepada main. Dalam hal ini, yang
dikembalikan adalah nilai 0. Mengenai pengembalian nilai, akan dijelaskan
nanti mengenai Fungsi dalam C++.
 Perlu diingat, bahwa setiap pernyataan dalam C++ harus diakhiri dengan
tanda semicolon (;) untuk memisahkan antara pernyataan satu dengan
pernyataan lainnya.

Tugas :

1. Buatlah program sederhana dengan hasil output seperti dibawah ini (screenshot
program dan hasilnya) :
a.

b.

2. Ketik ulang program berikut dan screenshot hasilnya, kemudian analisis program
tersebut.
#include <iostream>
using namespace std;
int main ()
{
cout<<"Selamat pagi teman-teman..." << endl;
cout<<"Perkenalkan nama saya Irsyad";
return 0;
}
3. Buatlah program dengan hasil output seperti dibawah ini (screenshot program dan
hasilnya):
a.

b.

4. Ketik ulang program berikut dan screenshot hasilnya, kemudian analisis program
tersebut.
#include <iostream>
int main ()
{
std::cout<<"Selamat pagi teman-teman..." << std::endl;
std::cout<<"Perkenalkan nama saya Irsyad Muafa";
return 0;
}
5. Buatlah program tanpa menggunakan perintah using namespace std; dengan hasil
output seperti dibawah ini (screenshot program dan hasilnya):
a.

b.
BAB III

STRUKTUR DASAR BAHASA C++

1. Tipe Data
Tipe data adalah himpunan nilai yang dapat dimiliki oleh sebuah data. Tipe data
menentukan apakah sebuah nilai dapat dimiliki sebuah data atau tidak, serta operasi
apa yang dapat dilakukan pada data tersebut. Jika sebuah data, misalnya umur,
harus berupa bilangan bulat maka dapat dipastikan bahwa 25, 13, dapat menjadi
nilai umur, sedangkan 7.5, 19.655 bukan merupakan contoh dari nilai umur. Berikut
merupakan contoh beberapa tipe data dasar :
 Integer/ bilangan bulat
Integer adalah tipe data dasar berupa bilangan yang tidak mengandung pecahan
desimal. Dalam pemrograman yang menggunakan bahasa pemprograman C++,
secara umum dikenal beberap macam tipe data integer, yaitu:

Tipe Ukuran Nilai


Shor 8 bit -128 .. 127
t
Int 16 bit -32768 .. 32767
Long 32 bit -2147483648 .. 2147483647
Contoh integer: 2 5 -10 135 2008

 Real/ bilangan riil


Real adalah tipe data dasar berupa bilangan yang memiliki pecahan desimal. Dalam
pemrograman, secara umum dikenal beberapa macam tipe data real, yaitu:

Tipe Ukuran Nilai


float 32 bit 2.9x10-39 .. 1.7x1038
Doubl 48 bit 5.0x10-324 .. 1.7x10308
e
Contoh real: .5 0.17 -3.465 92.0 4.3000+E9

 Char/ Karakter
Char adalah tipe data dasar yang terdiri atas satu buah angka, huruf, tanda baca
atau karakter khusus. Untuk menyimpan sebuah karakter, diperlukan 1 byte atau 8
bit tempat didalam memori. Dalam sebuah program, penulisan tipe data char diawali
dan diakhiri dengan tanda kutip ganda. Selain itu, terdapat sebuah karakter kosong
yang disebut dengan null atau nil dan dituliskan sebagai “”.
Contoh char: “5” “A” “?” “+” “$”
Perhatikan bahwa 5 adalah integer sedangkan “5” adalah char.
 String
String adalah tipe data dasar yang berupa kumpulan karakter dengan panjang
tertentu. Meskipun berupa kumpulan karakter, karena tipe data string sering
digunakan dalam pemrograman, string dianggap sebagai tipe data dasar. Untuk
penyimpanan string didalam memori, dibutuhkan 1 byte untuk tiap karakternya.
Serupa dengan penulisan karakter, penulisan sebuah string juga harus diawali dan
diakhiri dengan tanda petik ganda. String juga mengenal null yang dituliskan dengan
“”.
Contoh string: “BANDUNG”, “ABC3456”, “Lucu”, “30202001”, “z”
Perhatikan bahwa sebuah karakter tunggal (“z”) juga merupakan string.

 Boolean/ bilangan logika


Sebuah data boolean memiliki tepat dua buah kemungkinan nilai, direpresentasikan
sebagai Benar dan Salah, atau True dan False, atau dapat juga dilambangkan
dengan 1 dan 0.
Tipe data ini paling sering digunakan untuk range yang memiliki dua buah nilai: lulus
- tidak lulus, member – bukan member.

Contoh Program :
#include <iostream>
using namespace std;
int main()
{ int x; float y; char z; double w;
x = 10; /* variabel x diisi dengan 10 */
y = 9.45; /* variabel y diisi dengan 9.45 */
z = 'C'; /* variabel z diisi dengan karakter "C" */
w = 3.45E+20; /* variabel w diisi dengan 3.45E+20 */
cout<<"Nilai dari x adalah : "<<x<<endl; /* Menampilkan isi variabel x
*/
cout<<"Nilai dari y adalah : "<<y<<endl; /* Menampilkan isi variabel y
*/
cout<<"Nilai dari z adalah : "<<z<<endl; /* Menampilkan isi variabel z
*/
cout<<"Nilai dari w adalah : "<<w<<endl; /* Menampilkan isi variabel w
*/
return 0;
}

2. Konstanta
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses program
berlangsung. Konstanta nilainya selalu tetap. Konstanta harus didefinisikan terlebih
dahulu di awal program. Konstanta dapat bernilai integer, pecahan, karakter dan
string. Contoh konstanta : 50; 13; 4,50005; ‘A’; ‘Bahasa C++’.
Pendeklarasian konstanta dapat dilakukan dengan 2 cara :
a. Menggunakan praprocessor #define
#define PHI 3.14
#define nim “0111500382”
#define nama “Irsyad Muafa”
b. Menggunakan const
const int lebar = 100;
const char tab = ‘\t’;
const zip = 1212;
3. Variabel
Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai
tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya selalu
tetap, nilai dari suatu variabel bisa diubah-ubah sesuai kebutuhan. Nama dari suatu
variabel dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai berikut :
 Terdiri dari gabungan huruf dan angka dengan karakter pertama harus
berupa huruf. Bahasa C++ bersifat case-sensitive artinya huruf besar dan
kecil dianggal berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda.
 Tidak boleh mengandung spasi dan tidak boleh mengandung simbol-simbol
khusus, kecuali garis bawah (underscore). Yang termasuk simbol khusus
yang tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -, +, = dan
sebagainya

Contoh penamaan variabel yang benar :


NIM, a, x, nama_mhs, f3908, f4, nilai, budi, dan sebagainya.

Contoh penamaan variabel yang salah :


%nilai_mahasiswa, 80mahasiswa, rata-rata, ada spasi, penting!, dan sebagainya

Bentuk umum pendeklarasian suatu variabel adalah :


Tipe_data nama_variabel;
Contoh :
int x; // Deklarasi x bertipe integer
char y, huruf, nim[10]; // Deklarasi variabel bertipe char
char *p; // Deklarasi pointer p bertipe char

Contoh program :
//bekerja dengan variabel
#include <iostream>
using namespace std;
int main()
{
//inisialisasi variabel :
int a,b, hasil;
//proses :
a = 5;
b = 2;
a = a + 1;
hasil = a - b;
//cetak hasilnya :
cout << hasil;
//menghentikan program :
return 0;
}

4. Operator
a. Operator Penugasan
Operator Penugasan (Assignment Operator) dalam bahasa C++ berupa tanda sama
dengan (“=”) akan memberikan nilai ke dalam suatu variabel.
artinya memberikan nilai 5 ke dalam variable a. Sebelah kiri tanda = dalam
pernyataan di atas, dikenal dengan lvalue (left value) dan di sebelah kanan tanda =
dikenal dengan rvalue (right value). lvalue harus selalu berupa variable, sedangkan
rvalue dapat berupa variable, nilai, konstanta, hasil operasi ataupun kombinasinya.

b. Operator Aritmatika
Bahasa C++ menyediakan lima operator aritmatika, yaitu :
 * : untuk perkalian
 / : untuk pembagian
 % : untuk sisa pembagian (modulus)
 + : untuk pertambahan
 - : untuk pengurangan

Untuk operator modulus (%) digunakan untuk mengetahui sisa hasil bagi. Misalnya
a= 9 % 6, maka variabel a akan terisi nilai 3 karena sisa hasil bagi 9 dan 6 adalah 3.

Contoh Program 1 :
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int a,b,c,d,e,f,g;
a=10;
b=5;
cout<<"Masukkan nilai a : "<<a<<endl;
cout<<"Masukkan nilai b : "<<b<<endl;
c=a+b;
d=b-a;
e=a*b;
f=a%b;
g=a/b;
cout<<"Masukkan nilai c : "<<c<<endl;
cout<<"Masukkan nilai d : "<<d<<endl;
cout<<"Masukkan nilai e : "<<e<<endl;
cout<<"Masukkan nilai f : "<<f<<endl;
cout<<"Masukkan nilai g : "<<g<<endl;
return 0;
}

c. Operator Hubungan (Perbandingan)


Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah
operand (sebuah nilai atau variabel).

Operator Arti Contoh


< Kurang dari x<y Apakah x kurang dari y
<= Kurang dari sama x <= y Apakah x kurang dari sama
dengan dengan y
> Lebih dari x>y Apakah x lebih dari y
>= Lebih dari sama dengan x >= y Apakah x lebih dari sama dengan
y
== Sama dengan x == y Apakah x sama dengan y
!= Tidak sama dengan x != y Apakah x tidak sama dengan y

Contoh :
(7==5) hasilnya adalah false
(5>4) hasilnya adalah true
(5<5) hasilnya adalah false

d. Operator Logika
Jika operator hubungan membandingkan hubungan antara dua buah operand, maka
operator logika digunakan untuk membandingkan logika hasil dari operator-operator
hubungan. Operator logika ada tiga macam, yaitu :
 && : logika AND (DAN)
 || : logika OR (ATAU)
 ! : logika NOT (INGKARAN)

Misalnya:
((5==5) && (3>6)) mengembalikan nilai false, karena (true && false)
untuk logika NOT (!), contohnya !(5==5) akan mengembalikan nilai false, karena !
(true).
#include <iostream>
#include <conio.h>
using namespace std;
int main () {
float a,b,c,d,e,f,g,h,i;
cout<<"Masukkan nilai a = "; cin>>a;
cout<<"Masukkan nilai b = "; cin>>b;
cout<<"Masukkan nilai c = "; cin>>c;
d = a + 4 < 10;
e = b > a + 5;
f = c - 3 >= 4;
g = d && e && f;
h = d || e || f;
i = !(d);
cout<<endl<<endl;
cout<<"Hasil dari d = a + 4 < 10 adalah "<<d<<endl;
cout<<"Hasil dari e = b > a + 5 adalah "<<e<<endl;
cout<<"Hasil dari f = c - 3 >= 4 adalah "<<f<<endl;
cout<<endl<<endl;
cout<<"Hasil dari g = d && e && f adalah "<<g<<endl;
cout<<"Hasil dari h = d || e || f adalah "<<h<<endl;
cout<<"Hasil dari i = !(d) adalah "<<i<<endl;
return 0;
}
e. Operator Bitwise
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di
memori.
 << : pergeseran bit ke kiri
 >> : pergeseran bit ke kanan
 & : bitwise AND
 ^ : bitwise XOR ( exclusive OR)
 | : bitwise OR
 ~ : bitwise NOT

f. Operator Penaikan dan Penurunan


Operator penaikan (++) akan menaikkan atau menambahkan 1 nilai variabel.
Sedangkan operator penurunan (--) akan menurunkan atau mengurangi 1 nilai
variabel.

Operator Arti/Maksud Letak Contoh Equivalen


++ Peningkatan dengan Sebelum dan A++ A=A+1
penambahan nilai 1 sesudah
-- Penurunan dengan Sebelum dan A-- A=A–1
pengurangan nilai 1 sesudah

Catatan penting! :
Operator peningkatan ++ dan penurunan -- jika diletakkan sebelum atau sesudah
operand maka akan terdapat perbedaan.
- Jika diletakkan didepan variabel, maka proses penambahan atau pengurangan
akan dilakukan sesaat sebelum atau langsung pada saat menjumpai ekspresi ini,
sehingga nilai variabel tadi akan langsung berubah begitu ekspresi ini ditemukan.
- Jika diletakkan dibelakang variabel, maka proses penambahan atau
pengurangan akan dilakukan setelah ekspresi ini dijumpai atau nilai variabel
akan tetap pada saat ekspresi ditemukan.

Contoh Program 1 :
/* Perbedaan operator peningkatan ++ yang diletakkan di depan
dan dibelakang operand */
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
int x, nilai;
x=5;
nilai = ++x; /* berarti x=x+1; nilai=x */
cout<<"nilai = "<<nilai<<","<<" x = "<<x<<endl;
nilai = x++; /* berarti nilai=x; nilai=x+1 */
cout<<"nilai = "<<nilai<<","<<" x = "<<x<<endl;
return 0;
}

Contoh Program 2 :
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
int b, nilai;
b=15;
nilai = --b; /* berarti b=b-1; nilai=b */
cout<<"nilai = "<<nilai<<","<<" b = "<<b<<endl;
nilai = b--; /* berarti nilai=b; nilai=b-1 */
cout<<"nilai = "<<nilai<<","<<" b = "<<b<<endl;
return 0;
}

Tugas
1. Buatlah program kalkulator sederhana yang mengimplementasikan beberapa
operator yang sudah dijelaskan
2. Buatlah sebuah program untuk menghitung jumlah rata-rata dari 5 buah bilangan
bulat positif.
3. Buatlah sebuah program berdasarkan flowchart berikut :
a. Kasus perhitungan gaji b. Kasus penjumlahan dua bilangan
BAB IV

INPUT DAN OUTPUT

1. MEMASUKKAN DATA
Dalam bahasa C++ proses memasukkan suatu data bisa menggunakan beberapa fungsi
pustaka yang telah tersedia. Dalam bahasa C++ untuk memasukkan data biasa digunakan
perintah cin karena menggunakan file header iostream. Sedangkan perintah yang lain
(scanf(), gets(), getchar(), getch(), getche()) sejatinya merupakan milik bahasa C, karena
fungsi tersebut berada di library “stdio.h” yang merupakan library milik bahasa C. namun
karena C++ bisa menjalankan hampir semua file header/library dari C, maka kita bisa
menggunakan fungsi tersebut di C++.
a. Perintah cin
Untuk menerima inputan dengan perintah cin, maka operator yang akan digunakan
adalah overload operator (>>) dan diikuti variabel tempat menyimpan inputan data.
Untuk menggunakan perintah cin ini harus menyertakan file header <iostream>.
Perintah cin hanya dapat diproses setelah penekanan tombol ENTER. Jadi, walaupun
hanya satu karakter yang dimasukkan, sebelum penekanan Enterm cin tidak akan
merespon apa-apa. Perintah ini juga dapat digunakan menerima beberapa inputan
dalam sekali pernyataan :
cin>>a>>b;
yang sama dengan pernyataan :
cin>>a;
cin>>b;
kedua pernyataan diatas jika dijalankan akan meminta dua kali inputan data. Satu
untuk variabel a dan satunya lagi untuk variabel b. dan untuk peasukan datanya
dipisahkan dengan pemisah seperti Spasi, Tab atau Enter.

Contoh Program :
#include <iostream>
using namespace std;
int main(){
char nama[50];
int nilai;

cout<<"Masukkan Nama : ";


cin>>nama;
cout<<"Masukkan Nilai : ";
cin>>nilai;

cout<<"Mahasiswa atas nama "<<nama<<" nilainya "<<nilai;


return 0;
}

b. Perintah scanf()
Fungsi pustaka scanf() digunakan untuk menginput data berupa data numerik,
karakter dan string secara terformat. Bentuk umum perintah scanf():
Scanf(“penentu format”, &nama-variabel)
Simbol & merupakan pointer yang digunakan untuk menunjukkan ke alamat variabel
memori yang dituju. Kode penentu format :
 %c : membaca sebuah karakter
 %s : membaca sebuah string
 %i, %d : membaca sebuah bilangan bulat (integer)
 %f, %e : membaca sebuah bilangan pecahan (real)
 %o : membaca sebuah bilangan oktal
 %x : membaca sebuah bilangan heksadesimal
 %u : membaca sebuah bilangan tak bertanda
 %s : membaca string
 %ld : membaca long integer

Contoh program :
#include <stdio.h>
#include <conio.h>
int main(){
int a,b,c;
printf("Masukkan Nilai A = "); scanf("%d", &a);
printf("Masukkan Nilai B = "); scanf("%d", &b);
c=a+b;
printf("Hasil Penjumlahan = %d",c);
}

c. Perintah gets()
Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan tidak dapat
digunakan untuk memasukkan data numerik. Harus diakhiri dengan penekanan tombol
enter. Cursor secara otomatis akan pindah baris. Tidak memerlukan penentu format.

Contoh Program :
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
char nama[50];

cout<<"Masukkan Nama : ";


gets(nama);

cout<<"Hi "<<nama<<" kamu berhasil lolos seleksi UGM";


return 0;
}

d. Perintah getchar()
 Fungsi getchar() digunakan untuk membaca data yang bertipe karakter
 Harus diakhiri dengan penekanan tombol enter
 Pergantian baris secara otomatis

e. Perintah getch() dan getche()


 Fungsi getch() dan getche() digunakan untuk membaca data karakter.
 Karakter yang dimasukkan tidak perlu diakhiri dengan penekanan tombol enter.
 Tidak memberikan efek pergantian baris secara otomatis.
 Jika menggunakan fungsi getch() karakter yang dimasukkan tidak akan
ditampilkan pada layar sehingga sering digunakan untuk meminta inputan berupa
password.
 Sedangkan pada getche() karakter yang dimasukkan akan ditampilkan pada layar.

Contoh Program :
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main(){
char huruf1, huruf2;
cout<<"Masukkan sebuah karakter : ";
huruf1=getche(); //karakter yang dimasukkan akan terlihat di
layar
cout<<endl<<"Karakter yang anda masukkan adalah "<<huruf1;
cout<<endl<<"Masukkan sebuah karakter lagi : ";
huruf2=getch(); //karakter yang dimasukkan tidak terlihat di
layar
cout<<endl<<"Karakter yang anda masukkan adalah : "<<huruf2;
getch();
}

2. MENAMPILKAN DATA
Dalam bahasa C++ untuk menampilkan data, umumnya menggunakan perintah cout yang
mana perintah ini menggunakan file header iostream. Selain itu, untuk menampilkan data
juga dapat menggunakan perintah printf(), puts(), putchar(). Ketiga perintah tersebut
sejatinya merupakan milik bahasa C, karena fungsi tersebut berada di library “stdio.h” yang
merupakan library milik bahasa C. Namun karena C++ bisa menjalankan hampir semua file
header/library dari C, maka kita bisa menggunakan fungsi tersebut di C++.
a. Perintah cout
Perintah cout digunakan untuk menampilkan suatu data ke layar. Untuk
menggunakan perintah cout harus menyertakan header iostream.
Contoh program :
#include<iostream>
using namespace std;
int main(){
float a,b,c;
a=7.5; b=8.4; c=0;
cout<<"Masukkan Nilai A : "<<a<<endl;
cout<<"Masukkan Nilai B : "<<b<<endl;
c=a+b;
cout<<"Masukkan Nilai C : "<<c;
return 0;
}

b. Perintah printf()
Printf() digunakan untuk menampilkan informasi ke layar. Dalam penggunaannya
harus menentukan tipe data untuk data string, yaitu %s. Untuk mencetak pindah
baris memerlukan notasi \n. bentuk penulisan perintah printf():
Printf(“string kontrol”, argumen1, argumen2, …);
String kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta
penentu format. Penentu format dipakai untuk memberi tahu kompiler mengenai
jenis data yang dipakai dan akan ditampilkan. Argumen ini dapat berupa variabel,
konstanta dan ungkapan.
Contoh program :
#include <stdio.h>
#include <conio.h>
int main(){
int a;
char b;
a=5;
b='E';
printf("%c merupakan abjad ke %d", b, a);
}

c. Perintah puts()
Perintah puts() (put string) digunakan untuk mencetak string ke layar. Tidak perlu
penentu tipe data string karena fungsi ini khusus untuk tipe data string. Fungsi ini
melakukan pemindahan baris secara otomatis.
Contoh program :
#include <stdio.h>
#include <conio.h>
int main(){
char a[10] = "XMUAFA";
puts("Kode username saya : ");
puts(a);
}

d. Perintah putchar()
Perintah putchar() digunakan untuk menampilkan sebuah karakter ke layar.
Penampilan karakter tidak diakhiri dengan pindah baris.
Contoh program :
#include <stdio.h>
#include <conio.h>
int main(){
putchar('X');
putchar('M');
putchar('U');
putchar('A');
putchar('F');
putchar('A');
}

Tugas
Buatlah program untuk masing-masing ketentuan berikut (analisis dan screenshot
program beserta hasilnya) :
1. Menginput dan menampilkan biodata pribadi seseorang yang terdiri dari
nama, tempat, tanggal lahir, alamat, nomor telepon, agama, dan jenis
kelamin.
2. Mencetak sejumlah deret bilangan ganjil antara 1 sampai N, dimana N
dimasukkan oleh user.
3. Menentukan bilangan terbesar dan terkecil dari sejumlah bilangan yang
dimasukkan oleh user (misalnya N buah bilangan).
4. Menentukan luas lingkaran
BAB V

PENYELEKSIAN KONDISI

Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu proses. Pernyataan


percabangan digunakan untuk memecahkan persoalan untuk mengambil suatu keputusan
diantara sekian banyak pernyataan yang ada.

1. STRUKTUR KONDISI “IF…”


Struktrur if dibentuk dari pernyataan if dan sering 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 Program 1:
Menentukan besarnya potongan dari pembelian barang yang diberikan oleh seorang
pembeli, dengan beberapa kriteria yaitu :
a. Tidak ada potongan jika total pembelian kurang dari Rp 50.000
b. Jika total pembelian lebih dari atau sama dengan Rp 50.000 maka akan
mendapat potongan sebesar 20%
#include <iostream>
using namespace std;

int main()
{
double tot_beli, potongan=0, jml_bayar=0;
cout<<"Total pembelian Rp. "; cin>>tot_beli;
if (tot_beli >= 50000)
potongan = 0.2 * tot_beli;
cout<<"Besarnya potongan Rp. "<<potongan<<endl;
jml_bayar = tot_beli - potongan;
cout<<"Jumlah yang harus dibayarkan Rp. "<<jml_bayar;
return 0;
}
Jika total pembelian > 50.000, output yang dihasilkan :

Jika total pembelian < 50.000, output yang dihasilkan :

2. STRUKTUR KONDISI “IF….ELSE….”


Dalam struktur kondisi 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 umumnya adalah sebagai berikut :
if(kondisi)
pernyataan-1
else
pernyataan-2

Contoh program :
Menentukan besarnya potongan dari pembelian barang dengan kriteria :
a. Jika total pembelian kurang dari Rp 50.000, potongan yang diterima adalah 5%
dari total pembelian
b. Jika total pembelian lebih dari atau sama dengan Rp 50.000, potongan yang
diterima adalah 20% dari total pembelian

#include <iostream>
using namespace std;

int main()
{
double tot_beli, potongan=0, jml_bayar=0;
cout<<"Total pembelian Rp. "; cin>>tot_beli;
if (tot_beli >= 50000)
potongan = 0.2 * tot_beli;
else
potongan = 0.05 * tot_beli;
cout<<"Besarnya potongan Rp. "<<potongan<<endl;
jml_bayar = tot_beli - potongan;
cout<<"Jumlah yang harus dibayarkan Rp. "<<jml_bayar;
return 0;
}
Jika total pembelian > 50.000, output yang dihasilkan :

Jika total pembelian < 50.000, output yang dihasilkan :

3. PERNYATAAN NESTED IF
Nested if merupakan pernyataan if yang berada di dalam pernyataan if lainnya.
Contoh program :
Suatu perusahaan memberikan komisi kepada salesman dengan ketentuan berikut :
a. Jika salesman dapat menjual barang hingga Rp 20.000 akan diberikan uang jasa
sebesar Rp 10.000 ditambah dengan uang komisi 10% dari pendapatan yang
diperoleh hari itu
b. Jika salesman dapat menjual barang diatas Rp 20.000 akan diberikan uang jasa
sebesar Rp 20.000 ditambah dengan uang komisi 15% dari pendapatan yang
diperoleh hari itu
c. Jika salesman dapat menjual barang diatas Rp 50.000 akan diberikan uang jasa
sebesar Rp 30.000 ditambah dengan uang komisi 20% dari pendapatan yang
diperoleh hari itu

#include <iostream>
using namespace std;
int main()
{
float pendapatan, jasa=0, komisi=0, total=0;
cout<<"Pendapatan hari ini Rp. "; cin>>pendapatan;
if(pendapatan>= 0 && pendapatan <= 20000)
{
jasa = 10000;
komisi = 0.1 * pendapatan;
}
else
{
if(pendapatan<= 50000)
{
jasa = 20000;
komisi = 0.15 * pendapatan;
}
else
{
jasa = 30000;
komisi = 0.2 * pendapatan;
}
}
total = komisi + jasa;
cout<<"Uang jasa Rp. "<<jasa<<endl;
cout<<"Uang komisi Rp. "<<komisi<<endl;
cout<<"==============================="<<endl;
cout<<"Total pendapatan Rp. "<<total<<endl;
return 0;
}

Jika pendapatan <= 20000, output yang dihasilkan :

Jika pendapatan <= 50000, output yang dihasilkan :

Jika pendapatan >= 50000, output yang dihasilkan :


4. STRUKTUR KONDISI “SWITCH….CASE….DEFAULT…”
Struktur kondisi switch...case...default digunakan untuk penyeleksian kondisi dengan
kemungkinan yang terjadi cukup banyak. Struktur ini akan melaksanakan salah satu
dari beberapa pernyataan ‘case’ tergantung nilai kondisi yang ada di dalam switch.
Selanjutnya proses diteruskan hingga ditemukan pernyataan ‘break’. Jika tidak ada
nilai pada case yang sesuai dengan nilai kondisi, maka proses akan diteruskan
kepada pernyataan yang ada di bawah ‘default’. Bentuk umum dari struktur kondisi
ini yaitu:
switch(kondisi)
{
case 1 : pernyataan-1;
break;
case 2 : pernyataan-2;
break;
.....
.....
case n : pernyataan-n;
break;
default : pernyataan-m
}

Contoh program:
Terdapat beberapa kode barang diantaranya : alat olahraga (A), alat elektromik (B),
dan alat masak (C). Ketika ingin memilih salah satu dari kode barang tersebut, maka
akan tampil kode barang dan keterangan barang tersebut, sesuai dengan kode yang
terpilih, tetapi jika tidak memilih salah satu dari ketiga kode barang tersebut, maka
akan tampil “anda salah memasukkan kode”
#include <iostream>
using namespace std;
int main()
{
char kode;
cout<<"Masukkan kode barang = "; cin>>kode;
switch(kode)
{
case 'A':
cout<<"alat elektronik";
break;
case 'B':
cout<<"alat olahraga";
break;
case 'C':
cout<<"alat masak";
break;
default:
cout<<"Anda salah memasukkan kode!";
break;
}
return 0;
}
Hasil jika sesuai kondisi/syarat:

Hasil jika tidak sesuai kondisi/syarat :

Catatan : program ini bersifat case sensitive sehingga besar kecilnya huruf
berpengaruh.

Tugas
1. Buatlah sebuah Program untuk mencetak bilangan terbesar dari 5 buah
bilangan yang dimasukkan oleh user, dengan cara membandingkan bilangan
sebelumnya dengan bilangan berikutnya. Misalnya bilangan tersebut A, B, C,
D, dan E maka A dan B diperbandingkan. Jika A lebih besar dari B maka A
dibandingkan dengan C, jika A lebih besar dari C maka A dibandingkan
dengan D, demikian seterusnya sampai didapat nilai yang terbesar.
2. Buatlah sebuah program untuk menentukan kategori nilai yang diperoleh
seorang mahasiswa :
a. Apabila mendapat nilai A maka akan masuk kategori Excellent
b. Apabila mendapat nilai B maka akan masuk kategori Very Good
c. Apabila mendapat nilai C maka akan masuk kategori Good
d. Apabila mendapat nilai D maka akan masuk kategori Fair
e. Apabila mendapat nilai E maka akan masuk kategori Poor
f. Apabila menginput nilai selain yang diatas maka akan muncul pesan
“Invalid Grade”
3. Praktikkan program berikut dan buat flowchartnya (hasilnya discreenshot dan
dianalisis di laporan)
4. Buatlah program serta algoritma dari flowchart berikut :
BAB VI

PERULANGAN

Perulangan atau biasa disebut dengan “looping” adalah proses yang dilakukan secara
berulang-ulang sampai batas yang ditentukan. Biasanya, bila dalam proses perulangan tidak
disertakan batasnya maka kode program akan error karena proses itu akan terjadi berulang
terus tak terhingga sementara variabel dalam komputer sangatlah terbatas. Dalam
perulangan, umumnya terdiri dari 3 komponen, yaitu :

1) Nilai awal/inisialisasi, yaitu menentukan nilai awal dalam perulangan


2) Syarat perulangan, jika nilai memenuhi kondisi tertentu, perulangan dilanjutkan, jika
tidak, maka perulangan akan dihentikan
3) Perubahan nilai, selama perulangan berlangsung nilai akan diubah secara kontinyu

1. STRUKTUR PERULANGAN “WHILE”


Perulangan WHILE digunakan pada program yang terstruktur. 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 (false).

Contoh Program 1:
#include <iostream>
using namespace std;
int main(){
int x=1; //awal variabel
while(x<=10) //batas akhir perulangan
{
cout<<x<<" Bahasa C++"<<endl;
x++; //variabel x ditambah 1
}
return 0;
}

Pada perulangan while diatas, 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 Program 2 :
#include <iostream>
using namespace std;
int main(){
int i=1, x;
while (i<=3)
{x=1;
while (x<=i)
{cout<<x;
x=x+1;
}
cout<<endl;
i=i+1;
}
return 0;
}

2. STRUKTUR PERULANGAN “DO….WHILE….”


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.
Contoh Program :
#include <iostream>
using namespace std;
int main(){
int bil=2;
do {
cout<<bil<<" ";
bil+=2;
}
while (bil<=10);
return 0;
}

3. STRUKTUR PERULANGAN “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 sederhana. Bentuk umum
perulangan for adalah sebagai berikut :
for (inisialisasi; syarat; penambahan)
pernyataan;

Keterangan:
 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 Program 1:
#include <iostream>
using namespace std;
int main(){
int x;
for(x=1; x<=10; x++)
{
cout<<x<<" Bahasa C++"<<endl;
}
return 0;
}

Contoh program 2 :
/*Mencari total dan rata-rata bilangan menggunakan for*/
#include <iostream>
using namespace std;
int main(){
float r,i,x, t=0;
int y;
for(y=1; y<=3; y++)
for(i=0; i<=2; i++)
{
cout<<"Entry bilangan "<<y<<" : ";
cin>>x;
t=t+x;
y=y+1;
}
cout<<endl<<"Total : "<<t;
r=t/i;
cout<<endl<<"Rata-rata : "<<r;
return 0;
}

Tugas
1. Buatlah program untuk mencetak 10 bilangan prima pertama
2. Buatlah program untuk menampilkan sederetan angka genap dan ganjil beserta
jumlahnya. Contoh :
2 3 5 7 9 = 25
4 6 8 10 = 30
3. Buatlah program untuk mencetak tampilan sebagai berikut :
BAB VII

ARRAY

Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu
yang menggunakan nama yang sama. Letak atau posisi dari elemen array ditunjukkan oleh
suatu index. Dilihat dari dimensinya, array dapat dibagi menjadi array dimensi satu, array
dimensi dua, dan array multi dimensi.
1. ARRAY DIMENSI SATU
 Setiap elemen array dapat diakses melalui indeks.
 Indeks array secara default dimulai dari 0.

 Deklarasi array
Bentuk umum:
Tipe_array nama_array[ukuran];

Contoh:
Nilai[0] Nilai[1] Nilai[2] Nilai[3] Nilai[4]
int Nilai[5];
70 80 82 60 75

Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int nilai[5]; //Deklarasi array dengan 5 elemen berisi int

//Mengisi nilai ke dalam elemen array


cout << "== Input nilai 5 Mahasiswa ==\n\n";
for(int i = 1; i <= 5; i++) {
cout << "Nilai "<<i<<" = "; cin >> nilai[i]; }

//Menampilkan nilai atau isi dari array "nilai"


for(int i = 1; i <= 5; i++) {
cout << "\nNilai mahasiswa ke "<<i<<" = "<< nilai[i]; }
return 0; }

CATATAN :
String juga sebenarnya merupakan array yang bertipe karakter. Jumlah elemen array
menyatakan jumah string.
Contoh aplikasi array satu dimensi:
#include<iostream>
using namespace std;
int main()
{ string hewan[5];
for (int i = 1; i < 5; i++)
{ cout << "Tulis nama hewan " << i << " " << hewan[i];
cin >> hewan[i]; }
cout << endl << "Nama hewan yang dituliskan " << endl;
for (int i = 1; i < 5; i++)
{ cout << hewan[i] << endl; } }

2. ARRAY DIMENSI DUA


 Array dimensi dua merupakan array yang terdiri dari m buah baris dan n buah kolom.
Bentuknya dapat berupa matriks atau tabel.
 Deklarasi array:
Tipe_array nama_array[baris][kolom];
Contoh: int X[3][4];
 Cara mengakses array: Untuk mengakses array, misalnya kita ingin mengisi elemen
array baris 2 kolom 3 dengan 10 maka perintahnya adalah sebagai berikut:
X[1][2] = 10;
 Untuk mengisi dan menampilkan isi elemen array ada dua cara yaitu:
 Row Major Order (secara baris per baris)
 Column Major Order (secara kolom per kolom)

X[0][0] X[0][1] X[0][2] X[0][3]


X[1][0] X[1][1] X[1][2] X[1][3]
X[2][0] X[2][1] X[2][2] X[2][3]

Contoh Program 1:
/* Program penjumlahan matriks dimensi dua */
#include <iostream>
using namespace std;
int main()

//Deklarasi array dengan jumlah elemen 3 baris 2 kolom


{ int matrika [3][2];
int matrikb [3][2] = {{1,2},{3,4},{5,6}};
int matrikc [3][2];

// Deklarasi variabel untuk indeks perulangan


int i,j;
cout<<"\t===============================";
cout<<"\n\t= Penjumlahan Matrik Ordo 3x2 =\n";
cout<<"\t===============================\n\n";

// Isi matrika
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
{ cout<<"matrik a ["<<i<<"] ["<<j<<"] = ";
cin>>matrika[i][j]; }
} cout<<endl;

// Jumlah matrika dan matrikb, hasil disimpan ke matrikc


for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
{ matrikc[i][j]=matrika[i][j] + matrikb[i][j]; } }

// Menampilkan matrika
cout<<"\nMatrik a\n";
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
{ cout<<matrika[i][j]<<" "; }
cout<<endl; }

// Menampilkan matrikb
cout<<"\nMatrik b\n";
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
{ cout<<matrikb[i][j]<<" "; }
cout<<endl; }

// Menampilkan hasil penjumlahan / matrikc


cout<<"\nMatrik c atau hasil\n";
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
{ cout<<matrikc[i][j]<<" "; }
cout<<endl; }
return 0; }

Contoh Program 2:
//Program pembuatan tabel penjualan pada PT X
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{ int i, j; int data_jual[4][6];
for(i=1;i<=3;i++)
{ for(j=1;j<=3;j++)
{ cout << "Data Ke - "<<i<<" "<<j<<endl;
cout << "Jumlah Penjualan : "; cin >> data_jual[i]
[j];}}

cout << "Data Penjualan Pertahun" << endl;


cout << "------------------------------" << endl;
cout << "NO 2001 2002 2003" << endl;
cout << "------------------------------" << endl;

for(i=1;i<=3;i++)
{ cout << setiosflags(ios::left) << setw(8) << i;
for(j=1;j<=3;j++)
{ cout<<setiosflags(ios::left) << setw(3);
cout<<data_jual[i][j]; cout<<" "; }
cout<<endl; }
cout << "-----------------------------" << endl; }

Contoh aplikasi Array untuk menghitung invers suatu matriks:


#include <iostream>
using namespace std;
int main()
{ int i, j, matrik[10][10]; float hasilbagi, det, a, b, c, d;
for(i=0;i<=1;i++)
{ for(j=0;j<=1;j++)
{ cout << "matrik [" <<i<< "][" <<j<< "]" << " = ";
cin >> matrik[i][j]; cout << endl; } }
for(i=0; i<=1;i++)
{ for(j=0;j<=1;j++)
{ cout<<matrik[i][j]<<" "; }
cout<<endl; }
det=(matrik[0][0]*matrik[1][1])-(matrik[1][0]*matrik[0][1]);
cout << "Maka determinannya adalah = "; cout << det <<endl;
hasilbagi = 1/det;
//mencari invers
a = hasilbagi * matrik[1][1];
b = hasilbagi * -matrik[0][1];
c = hasilbagi * -matrik[1][0];
d = hasilbagi * matrik[0][0];

cout << endl << "matrik invers \n\n=" << "1/" << det << " x
[" << matrik[1][1] << " " << -matrik[0][1] << "]";
cout << "\n[" << -matrik[1][0] << " " << matrik[0][0] <<"]";
cout << "\n Jadi matrik inversnya adalah = \n";
cout << "[" << a << " " << b << "]" << endl;
cout << "[" << c << " " << d << "]"; }

3. ARRAY MULTI DIMENSI


Array multi dimensi merupakan array yang dapat diakses melalui banyak indeks. Bentuk
pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua.
Bentuk umumnya yaitu :
tipe_array nama_array[ukuran1][ukuran2]…[ukuranN];

Contoh : float X[2][4][3];

X[0][0][0] X[0][0][1] X[0][0][2]


X[0][1][0] X[0][1][1] X[0][1][2]
X[0][2][0] X[0][2][1] X[0][2][2]
X[0][3][0] X[0][3][1] X[0][3][2]

X[1][0][0] X[1][0][1] X[1][0][2]


X[1][1][0] X[1][1][1] X[1][1][2]
X[1][2][0] X[1][2][1] X[1][2][2]
X[1][3][0] X[1][3][1] X[1][3][2]

Contoh Program:
#include <iostream>
using namespace std;
int main()

/*Deklarasi array dimensi tiga */


{ int angka [2][3][4];

// Deklarasi variabel untuk indeks perulangan


int i,j,k;
cout<<"\t===============================";
cout<<"\n\t== Contoh Array Tiga Dimensi ==\n";
cout<<"\t===============================\n\n";

// Isi nilai kedalam elemen-elemen array angka


cout<<"== Masukkan elemen-elemen array angka ==\n";
for(i=0;i<2;i++)
{ for(j=0;j<3;j++)
{ for(k=0;k<4;k++)
{ cout<<"angka indeks ke ["<<i<<"]["<<j<<"]
["<<k<<"]"<<" = ";
cin>>angka[i][j][k]; } } }

//Tampilkan nilai dari setiap elemen array angka


cout<<"\n\n===============================\n";
cout<<"== Tampil nilai elemen Array ==\n";
cout<<"===============================\n";
for(i=0;i<2;i++)
{ for(j=0;j<3;j++)
{ for(k=0;k<4;k++)
{ cout << angka[i][j][k]; cout << " "; }
cout << endl; }
cout << endl; }
return 0; }

TUGAS
1. Buatlah sebuah program untuk menginput, menghitung dan mencetak perkalian
matriks 3 x 3
2. Jelaskan apa yang tercetak dari program berikut ini :
#include <iostream>
#define SIZE 10
using namespace std;
int whatIsThis(int [], int);
int main()
{ int total, a[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
total = whatIsThis(a, SIZE);
cout << "\nNilai variabel total adalah " << total <<
endl;}
int whatIsThis(int b[], int size)
{ if (size == 1)
return b[0];
else
return b[size-1] + whatIsThis(b, size-1); }
BAB VIII

FUNGSI PUSTAKA

1. PENGERTIAN FUNGSI
Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan
suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi
merupakan elemen utama dalam bahasa C++ karena bahasa C++ sendiri terbentuk dari
kumpulan fungsi-fungsi. Dalam setiap program bahasa C++, minimal terdapat satu
fungsi yaitu fungsi main(). Fungsi banyak diterapkan dalam program-program C++ yang
terstruktur. Keuntungan penggunaan fungsi dalam program yaitu program akan memiliki
struktur yang jelas (mempunyai readability yang tinggi) dan juga akan menghindari
penulisan bagian program yang sama.

2. BEBERAPA FUNGSI PUSTAKA DALAM BAHASA C++


 Fungsi Operasi String (tersimpan dalam header file “cstring”)
 strcpy()
Berfungsi untuk menyalin suatu string asal ke variabel string tujuan, dengan
syarat string tujuan mempunyai tipe data dan ukuran yang sama dengan string
asal.
Bentuk umum : strcpy(var_tujuan, string_asal);
 strlen()
Berfungsi untuk memperoleh jumlah karakter dari suatu string.
Bentuk umum : strlen(string);
 strrev()
Berfungsi untuk membalik letak urutan pada string/
Bentuk umum : strrev(string);
Contoh Program:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{ char huruf[20]; char pindah[20];
cout << "Masukkan sembarang kata = ";
gets(huruf); cout << endl;
strcpy(pindah, huruf);
cout << "Kata yang dimasukkan = " << huruf << endl;
cout << "Setelah kata dipindahkan = " << pindah << endl;
cout << "Panjang kata setelah dipindahkan = ";
cout << strlen(pindah) << endl;
strrev(pindah); cout << "Hasil perubahan = " <<
pindah; }

 strcat()
Digunakan untuk menambahkan string sumber ke bagian akhir dari string tujuan.
Bentuk umum : strcat(tujuan, sumber);
 strupr()
Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf kapital.
Bentuk umum : strupr(string);
 strlwr()
Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf kecil.
Bentuk umum : strlwr(string);

Contoh Program:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{ char satu[30] = "Fakultas Sekolah Vokasi";
char dua[30] = " Universitas Gadjah Mada";
strcat(satu, dua);
cout << "Hasil penggabungannya : " << satu << endl;
cout << "Diubah menjadi huruf kapital: " <<
strupr(satu);
cout << endl;
cout << "Diubah menjadi huruf kecil: " << strlwr(satu);
cout << endl; }

 strcmp()
Digunakan untuk membandingkan dua buah string.
Hasil dari fungsi ini bertipe integer dengan nilai :
(a) Negative, jika string pertama kurang dari string kedua.
(b) Nol, jika string pertama sama dengan string kedua
(c) Positif, jika string pertama lebih besar dari string kedua.
Bentuk umum : strcmp(string1, string2);
Contoh Program :
#include <iostream>
#include <cstring>
using namespace std;
int main()
{ char string1[5], string2[5]; int hasil;
cout << "Masukkan sembarang 1 : "; cin >> string1;
cout << "Masukkan sembarang 2 : "; cin >> string2;
cout << endl;
hasil = strcmp(string1, string2);
if(hasil > 0)
cout << string1 << " > " << string2 << endl;
else if(hasil == 0)
cout << string1 << " = " << string2 << endl;
else
cout << string1 << " < " << string2 << endl; }

 Fungsi Operasi Karakter (tersimpan dalam header “cctype”)


 islower()
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter berupa huruf
kecil.
Bentuk umum : islower(char);
 isupper()
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan huruf
kapital.
Bentuk umum : isupper(char);
 isdigit()
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan
sebuah digit.
Bentuk umum : isdigit(char);
 tolower()
Fungsi akan mengubah huruf kapital menjadi huruf kecil.
Bentuk umum : tolower(char);
 toupper()
Fungsi akan mengubah huruf kecil menjadi huruf kapital.
Bentuk umum : toupper(char);

Contoh Program:
#include <iostream>
#include <cctype>
using namespace std;
int main()
{ char kar;
cout << "Masukkan sebuah karakter : "; cin >> kar;
cout << endl << endl;
if(isupper(kar)) //Jika “kar” huruf kapital
{ cout << kar << " adalah huruf besar" << endl;
cout << "Huruf kecilnya adalah : ";
kar = tolower(kar); cout << kar; }
else if(islower(kar)) //Jika “kar” huruf kecil
{ cout << kar << " adalah huruf kecil" << endl;
cout << "Huruf besarnya adalah : ";
kar = toupper(kar); cout << kar; }
else if(isdigit(kar)) //Jika “kar” adalah digit
cout << kar << " adalah karakter digit";
else
cout << kar <<" bukan huruf besar, kecil, atau
digit";}

 Fungsi Operasi Matematik (tersimpan dalam header “cmath dan cstdlib”)


 sqrt()
Digunakan untuk menghitung akar dari sebuah bilangan.
Bentuk umum : sqrt(bilangan);
 pow()
Digunakan untuk menghitung pemangkatan suatu bilangan.
Bentuk umum : pow(bilangan, pangkat);
Contoh Program:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ float x; float y; float z;
cout<< "***** MENGHITUNG NILAI X PANGKAT Y *****" <<
endl;
cout<< endl << "Masukkan nilai X: "; cin >> x;
cout<< "Masukkan nilai Y: "; cin >> y;

// Hitung pangkat
float result = pow(x,y);
cout<<x<<" pangkat "<< y <<" = "<< result << endl <<
endl;
cout<<"\n***** MENGHITUNG NILAI DARI AKAR Z *****"<<
endl;
cout<< endl << "Masukkan nilai Z : "; cin >> z;

// Hitung akar
float hasil = sqrt(z);
cout<<"Akar dari "<< z <<" = "<< hasil << endl; return
0;}
 sin(), cos(), tan()
Masing-masing digunakan untuk menghitung nilai sinus, cosinus dan tangens
dari suatu sudut dalam bentuk radian.
Bentuk umum : sin(sudut); cos(sudut); tan(sudut);
Contoh Program:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{ float x;
cout << "\n===== MENGHITUNG SUDUT DALAM RADIAN =====\n";
cout << endl;
cout << "Masukkan sudut : "; cin >> x;
cout << "sin(" << x << "): " << sin(x) << endl;
cout << "cos(" << x << "): " << cos(x) << endl;
cout << "tan(" << x << "): " << tan(x) << endl;
return 0; }

 atof()
Digunakan untuk mengonversi nilai string menjadi bilangan bertipe double.
Bentuk umum : atof(char x);
 atoi ()
Digunakan untuk mengonversi nilai string menjadi bilangan bertipe integer.
Bentuk umum : atoi(char x);
Contoh Program:
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main()
{ char x[4] = "100", y[5] = "10.3";
int a; float b;
a = atoi(x); b = atof(y);
cout << "Semula A dan B memiliki nilai" << endl;
cout << "A = " << x << " B = " << y << endl << endl;
cout << "Setelah dikonversi lalu ditambahkan angka 10";
cout << endl << "A = " << a+10 << " B = " << b+10;}

 div()
Digunakan untuk menghitung hasil pembagian dan sisa pembagian.
Bentuk umum : div_t div(int x, int y)
Strukturnya :
typedef struct
{ int dout: // hasil pembagian
int rem // sisa pembagian
} div t;
Contoh Program :
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ int x, y; div_t hasil;
cout << "Menghitung sisa dan hasil pembagian x dan y\n";
cout << "x = "; cin >> x;
cout << "y = "; cin >> y;
hasil = div(x,y);
cout << "\n\n" << x << " dibagi " << y << " = " <<
hasil.quot << " sisa " << hasil.rem << endl; }

 max()
Digunakan untuk menentukan nilai maksimal dari dua buah bilangan.
Bentuk umum : max(bilangan 1, bilangan2);
 min()
Digunakan untuk menentukan bilangan terkecil dari dua buah bilangan.
Bentuk umum : min(bilangan1, bilangan2);
Contoh Program:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ int x, y, z;
cout<<"Menentukan bilangan terbesar dan terkecil" <<
endl;
cout<<"X = "; cin >> x;
cout<<"Y = "; cin >> y;
cout<<"Z = "; cin >> z;
cout<<"\nBilangan terbesar = "<<max(max(x, y), z) <<
endl;
cout<< "Bilangan terkecil = "<<min(min(x, y), z); }

TUGAS
1. Buat program untuk menghitung persamaa kuadrat 5x2 + 10x + 100 = 0.
2. Buat program untuk menampilkan tabel sinus dan cosinus seperti pada gambar
dibawah ini
BAB IX

MEMBUAT FUNGSI SENDIRI

 Deklarasi Fungsi
Pembuatan fungsi sendiri terpisah dari fungsi utama. Sebelum digunakan (dipanggil),
suatu fungsi harus dideklarasikan dan didefinisikan terlebih dahulu. Bentuk umum
pendeklarasian fungsi adalah:
tipe_fungsi nama_fungsi(parameter_fungsi);
Sedangkan bentuk umum pendefinisian fungsi adalah :
Tipe_fungsi nama_fungsi(parameter_fungsi)
{ statement
statement
………………………
}
 Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :
 Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi dengan
nilai keluaran bertipe integer.
 Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan
pendefinisian penentu tipe fungsi.
 Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke dalam
tipe void.
 Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa
pernyataan return.
 Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya.

Contoh Program 1:
#include <iostream>
using namespace std;

/* prototype fungsi tambah(), ada titik koma */


float tambah(float x, float y);
float a, b, c;
int main()
{ cout << "A = "; cin >> a; cout << "B = "; cin >> b;
c = tambah(a, b); // pemanggilan fungsi tambah()
cout << "A + B = " << c; }
/* Definisi fungsi, tanpa titik koma */
float tambah(float x, float y)
{ return (a+b); } // Nilai balik fungsi

Contoh Program 2:
/* Program menghitung nilai faktorial */
#include <iostream>
using namespace std;
long int faktorial(int N); // prototype fungsi faktorial()
int main()
{ int N; long int fak;
cout << "Berapa factorial ? "; cin >> N;
fak = faktorial(N); // pemanggilan fungsi faktorial()
cout << N << "! = " << fak << endl; }

long int faktorial(int N) // definisi fungsi faktorial


{ int I; long int F = 1;
if(N<=0) return(0);
for(I=2; I<=N; I++) F = F * I;
return(F); }

 Parameter Formal dan Parameter Aktual


 Parameter Formal adalah variabel yang ada pada daftar parameter dalam definisi
fungsi.
 Parameter Aktual adalah variabel (parameter) yang dipakai dalam pemanggilan
fungsi. Dalam contoh program pertambahan di atas parameter formal terdapat
pada pendefinisisan fungsi :
float tambah(float x, float y) //parameter formal

{ return(a+b);
}
Sedangkan parameter aktual terdapat pada pemanggilan fungsi :
int main()
{ ……………
…………..
c = tambah(a, b); //parameter aktual
…………..
}

 Cara Melewatkan Parameter


Cara melewatkan suatu parameter ada dua cara yaitu :
 Pemanggilan Secara Nilai (Call by Value)
 Call by value akan menyalin nilai dari parameter aktual ke parameter formal.
 Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori
letak dari datanya.
 Fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah
dari nilai aslinya yang digunakan oleh bagian program yang memanggil
fungsi.
 Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai asli di
bagian program yang memanggilnya.
 Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari
bagian program yang memanggil fungsi ke fungsi yang dipanggil.
 Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya
untuk sebuah variabel, elemen array atau konstanta saja.

Contoh Program:
#include <iostream>
using namespace std;
void tukar(int x, int y); /* pendeklarasian fungsi */
int main()
{ int a,b; a = 15; b = 10;
cout << "Nilai sebelum pemanggilan fungsi\n";

/* a dan b sebelum pemanggilan fungsi */


cout << "a = " << a << " b = " << b << endl << endl << endl;
tukar(a,b); /* pemanggilan fungsi tukar() */
cout << "Nilai setelah pemanggilan fungsi\n";

// a dan b setelah pemanggilan fungsi


cout << "a = " << a << " b = " << b << endl; }

void tukar(int x, int y) // Pendefinisian fungsi tukar()


{ int z; /* variabel sementara */
z = x; x = y; y = z;
cout << "Nilai di akhir fungsi tukar()" << endl;
cout << "x = " << x << " y = " << y << endl; }

 Pemanggilan Secara Referensi (Call by Reference)


 Pemanggilan secara Referensi merupakan upaya untuk melewatkan alamat
dari suatu variabel ke dalam fungsi.
 Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan nilai
datanya.
 Fungsi yang menerima kiriman alamat ini makan menggunakan alamat yang
sama untuk mendapatkan nilai datanya.
 Perubahan nilai di fungsi akan merubah nilai asli di bagian program yang
memanggil fungsi.
 Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu
dari fungsi pemanggil ke fungsi yang dipanggil dan juga sebaliknya.
 Pengiriman secara acuan tidak dapat bdilakukan untuk suatu ungkapan.

Contoh Program:
#include <iostream>
using namespace std;
void tukar(int *px, int *py);
int main()
{ int a,b; a = 15; b = 10;
cout << "Nilai sebelum pemanggilan fungsi" << endl;
cout << "a = " << a << " b = " << b << endl << endl;
tukar(&a,&b); // parameter alamata dan alamat b
cout << "Nilai setelah pemanggilan fungsi" << endl;
cout << "a = " << a << " b = " << b << endl << endl; }

void tukar(int *px, int *py)


{ int z; // variabel sementara
z = *px; *px = *py; *py = z;
cout << "Nilai di akhir fungsi tukar()" << endl;
cout << "*px = " << *px << " *py = " << *py << endl; }

 Penggolongan Variabel berdasarkan Kelas Penyimpanan (Storage Class)


 Variabel lokal
Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi.
Sifat-sifat variabel lokal :
 Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan lenyap
ketika proses eksekusi terhadap fungsi berakhir.
 Hanya dikenal oleh fungsi tempat variabel dideklarasikan
 Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya
random).
 Dideklarasikan dengan menambahkan kata “auto” (opsional).
 Variabel global (eksternal)
Variabel global (eksternal) adalah variabel yang dideklarasikan di luar fungsi.
Sifat-sifat variabel global :
 Dikenal (dapat diakses) oleh semua fungsi.
 Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
 Dideklarasikan dengan menambahkan kata “extern” (opsional).

Contoh Program:
#include <iostream>
using namespace std;
void tampil(void);
int i = 25; // variabel global
int main()
{ cout << "Nilai i di fungsi main() = " << i << endl << endl;
tampil();
i = i * 4; //nilai i yang dikali 4 adalah 25 (global) bukan
10
cout << "Nilai i di fungsi main() sekarang = " << i << endl;}

void tampil(void)
{ int i = 10; // variabel lokal
cout << "Nilai i di fungsi tampil() = " << i << endl <<
endl;}

 Variabel Statis
Variabel statis adalah variabel yang nilainya tetap dan bisa berupa variabel lokal
(internal) dan variabel global (eksternal). Sifat-sifat variabel statis :
 Jika bersifat internal (lokal), maka variabel hanya dikenal oleh fungsi tempat
variabel dideklarasikan.
 Jika bersifat eksternal (global), maka variabel dapat dipergunakan oleh
semua fungsi yang terletak pada program yang sama.
 Nilai variabel statis tidak akan hilang walau eksekusi terhadap fungsi telah
berakhir.
 Inisialisasi hanya perlu dilakukan sekali saja, yaitu pada saat fungsi dipanggil
pertama kali.
 Jika tidak diberi nilai awal secara otomatis berisi nilai nol. Dideklarasikan
dengan menambahkan kata “static”.

 Variabel Register
Variabel Register adalah variabel yang nilainya disimpan dalam register CPU,
bukan dalam memori RAM. Sifat-sifat variabel register :
 Hanya dapat diterapkan pada variabel lokal yang bertipe int, char, dan
pointer.
 Digunakan untuk mengendalikan proses perulangan (looping).
 Proses perulangan akan lebih cepat karena variabel register memiliki
kecepatan yang lebih tinggi dibandingkan variabel biasa.
 Dideklarasikan dengan menambahkan kata “register”.

Contoh Program:
#include <iostream>
using namespace std;

// Membuat fungsi untuk menghitung M pangkat e


int Hitung(register int M, register int e)
{ register int temp; temp = 1;
for (;e;e--)
{ temp = temp * M; }
return temp; }
// Fungsi Utama
int main()
{ int MD; MD = Hitung(4,5); // 4 pangkat 5
cout << "Hasil perhitungan = " << MD << endl;
return 0; }

 Fungsi Rekursif
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri.

Contoh Program:
#include <iostream>
using namespace std;
long int faktorial(int N); // prototype fungsi faktorial
int main()
{ int N; cout << "Berapa faktorial ? "; cin >> N;
cout<<"\nFaktorial dari " << N <<" = "<< faktorial(N) <<
endl;}
long int faktorial(int N) // definisi fungsi faktorial
{ if(N==0)
return(1);
else
/*fungsi faktorial() memanggil fungsi faktorial() */
return(N * faktorial(N - 1)); }
TUGAS
1. Buat fungsi untuk menentukan apakah suatu bilangan bulat bersifat ganjil atau
genap. Jika genap maka fungsi menghasilkan nilai 1, dan 0 untuk selainnya.
2. Buat sebuah program untuk menghitung luas segitiga dan persegi.
BAB X

POINTER

1. PENGERTIAN POINTER
 Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari
suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel
lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain,
variabel pertama dikatakan menunjuk ke variabel kedua.
 Operator Pointer ada dua, yaitu :
 Operator &
 Operator & bersifat unary (hanya memerlukan satu operand saja).
 Operator & menghasilkan alamat dari operandnya.
 Operator *
 Operator * bersifat unary (hanya memerlukan satu operand saja).
 Operator * menghasilkan nilai yang berada pada sebuah alamat.

2. DEKLARASI POINTER
Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih
dahulu sebelum digunakan. Bentuk Umum : Tipe_data *nama_pointer;
Tipe data pointer mendefinisikan tipe dari objek yang ditunjuk oleh pointer. Secara
teknis, tipe apapun dari pointer dapat menunjukkan lokasi (dimanapun) dalam memori.
Bahkan operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apapun yang
ditunjuk. Contoh, ketika kita mendeklarasikan pointer dengan tipe int*, kompiler akan
menganggap alamat yang ditunjuk menyimpan nilai integer - walaupun sebenarnya
bukan (sebuah pointer int* selalu menganggap bahwa ia menunjuk ke sebuah obyek
bertipe integer, tidak peduli isi sebenarnya). Karenanya, sebelum mendeklarasikan
sebuah pointer, pastikan tipenya sesuai dengan tipe obyek yang akan ditunjuk.
Contoh :
int *px;
char *sh;

Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int x, y; /* x dan y bertipe int */
int *px; /* px pointer yang menunjuk objek */
x = 87;
px = &x; /* px berisi alamat dari x */
y = *px; /* y berisi nilai yang ditunjuk px */
cout << "Alamat x = " << &x << endl;
cout << "Isi px = " << px << endl;
cout << "Isi x = " << x << endl;
cout << "Nilai yang ditunjuk oleh px = " << *px << endl;
cout << "Nilai y = " << y << endl; }

3. OPERASI POINTER
 Operasi Penugasan
Suatu variabel pointer seperti halnya variabel yang lain, juga bisa mengalami operasi
penugasan. Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang
lain.
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ float *x1, *x2, y; y = 13.45;
x1 = &y; /* Alamat dari y disalin ke variabel x1 */
x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */
cout<<"Nilai variabel y = "<<y<<" ada di alamat "<< x1;
cout<<"\nNilai variabel y = "<<y<<" ada di alamat "<<
x2; }

 Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer
saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index
selanjutnya) dalam memori. Begitu juga operasi pengurangan.
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int nilai[3], *penunjuk;
nilai[0] = 125; nilai[1] = 345; nilai[2] = 750;
penunjuk = &nilai[0];
cout<<"Nilai "<<*penunjuk<<" ada di alamat " << penunjuk;
cout<<"\nNilai "<<*(penunjuk+1)<<" ada di alamat " <<
penunjuk+1;
cout<<"\nNilai "<<*(penunjuk+2)<<" ada di alamat " <<
penunjuk+2; }

 Operasi Logika
Suatu pointer juga dapat dikenai operasi logika.
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int a = 100, b = 200, *pa, *pb;
pa = &a; pb = &b;
if(pa < pb)
cout << "pa menunjuk ke memori lebih rendah dari pb\n";
if(pa == pb)
cout << "pa menunjuk ke memori yang sama dengan pb\n";
if(pa > pb)
cout << "pa menunjuk ke memori lebih tinggi dari
pb\n";}

4. POINTER DAN STRING


Contoh Program 1:
#include <iostream>
using namespace std;
const char *nama1 = "SPIDERMAN"; const char *nama2 =
"GATOTKACA";
int main()
{ const char *namax;
cout << "SEMULA :" << endl;
cout << "Saya suka >> " << nama1 << endl;
cout << "Tapi saya juga suka >> " << nama2 << endl;
/* Penukaran string yang ditunjuk pointer nama1 dan nama2 */
namax = nama1; nama1 = nama2; nama2 = namax;
cout << "SEKARANG : " << endl;
cout << "Saya suka >> " << nama1 << endl;
cout << "Dan saya juga masih suka >> " << nama2 << endl;}

Contoh Program 2:
#include <iostream>
using namespace std;
void misteril (char *);
int main()
{ char string[] = "characters";
cout << "String sebelum proses adalah " << string << endl;
misteril (string);
cout << "\nString setelah proses adalah " << string; }
void misteril (char *s)
{ while (*s != '\0') {
if (*s >='a' && *s <= 'z')
*s -= 32; ++s; } }

5. POINTER MENUNJUK SUATU ARRAY


Contoh Program:
#include <iostream>
using namespace std;
int main()
{ static int tgl_lahir[] = { 13, 9, 1982 }; int *ptgl;
ptgl = tgl_lahir; /* ptgl berisi alamat array */
cout << "Diakses dengan pointer" << endl;
cout << "Tanggal = " << *ptgl << endl;
cout << "Bulan = " << *(ptgl + 1) << endl;
cout << "Tahun = " << *(ptgl + 2) << endl;
cout << "\nDiakses dengan array biasa" << endl;
cout << "Tanggal = " << tgl_lahir[0] << endl;
cout << "Bulan = " << tgl_lahir[1] << endl;
cout << "Tahun = " << tgl_lahir[2];}

6. MEMBERI NILAI ARRAY DENGAN POINTER


Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int x[5], *p, k;
p = x; x[0] = 5;/* x[0] diisi dengan 5, jadi x[0] = 5 */
x[1]= x[0];/* x[1] diisi dengan x[0], jadi x[1] = 5 */
x[2]= *p + 2;/* x[2] diisi dengan x[0] + 2, jadi x[2] = 7 */
x[3]= *(p+1)-3;/* x[3] diisi dengan x[1] – 3, jadi x[3] = 2
*/
x[4] = *(x + 2);/* x[4] diisi dengan x[2], jadi x[4] = 7 */
for(k=0; k<5; k++)
cout << "x[" << k << "] = " << x[k] << endl; }

TUGAS
Apa yang tercetak dari program-program berikut ini ?
1. #include <iostream>
using namespace std;
void misteri2(const char *);
int main()
{ const char *string = "Teknik Elektro dan Informatika";
misteri2(string); cout << endl; return 0; }
void misteri2(const char *s) {
for ( ; *s != '\0' ; s++) cout << *s; }

2. #include <iostream>
using namespace std;
int misteri3(const char *);
int main()
{ char string[80];
cout << "Ketik sebuah string : "; cin >> string;
cout << misteri3(string) << endl; }
int misteri3(const char *s)
{ int x = 0;
for ( ; *s != '\0' ; s++)
++x;
return x; }
BAB XI

OPERASI FILE

Pada prinsipnya operasi yang dilakukan pada file terdiri dari 3 tahapan :
1. Membuka file
2. Melakukan pemrosesan pada file
3. Menutup file
Dalam melakukan operasi file dibutuhkan fungsi-fungsi yang berhubungan
dengan operasi file yang terdapat pada file fstream. Oleh sebab itu, untuk dapat
melakukan operasi file, maka preprocessor directive berikut ditambahkan:
#include <fstream>

1. MEMBUKA FILE
Pembukaan dari suatu file mempunyai 2 tujuan, yaitu :
1. Membuka file untuk ditulis/direkam
2. Membuka file untuk dibaca

Membuka file untuk ditulis :


ofstream file_objek;
Setelah objek_output diciptakan, maka file dibuka dengan cara :
file_objek.open (“nama_file”);

Kedua pernyataan di atas dapat disederhanakan :


ofstream file_objek (“nama_file”);

Membuka file untuk dibaca :


ifstream file_objek;
Setelah objek_input diciptakan, maka file dibuka dengan cara :
file_objek.open (“nama_file”);

Kedua pernyataan di atas dapat disederhanakan :


ifstream file_objek (“nama_file”);

2. MENUTUP FILE
Setelah pemrosesan file berakhir, maka file perlu ditutup. Langkah ini dilakukan dengan
cara : file_objek.close();
Pemakaian fungsi close() sifatnya optional. Bila digunakan fungsi ini maka compiler tidak
akan mengeluarkan pesan error.

3. FILE TEKS
A. Menulis/Merekan Data Teks
Contoh Program:
// Merekam atau menulis File Text
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ cout << "Latihan Merekam data ke file\n";
ofstream latihan ("datateks.txt");
for (int i=1; i<=10; i++)
latihan << "Belajar Operasi File" << endl;
cout << "Data telah selesai direkam..."<< endl;
latihan.close(); }

B. Membaca Isi File


// Membaca/Menampilkan data file text
#include <iostream>
#include <fstream>
using namespace std;
int main()
{ const int MAX=80;
char buffer[MAX+1];
cout << "Latihan Menampilkan Isi file\n";
ifstream latihan ("datateks.txt");
while (latihan)
{ latihan.getline(buffer,MAX);
cout << buffer << endl; }
latihan.close(); }

4. FILE DENGAN AKSES SECARA SEQUENTIAL


File sekuensial berisi rekam data yang tidak mengenal posisi baris atau nomor rekam
pada saat aksesnya dan setiap rekam data dapat memiliki lebar yang berbeda-beda.
Pada bahasa C++ terdapat beberapa perintah yang dapat digunakan untuk akses file
secara sekuensial diantaranya:
ios::in = sebagai input (membaca data yang direkam/ditulis)
ios::out = sebagai output (merekam/menulis data)
ios::ate = menuliskan pada akhir file untuk file baru.
ios::app = meletakkan keluaran atau output pada akhir file
ios::trunk = akan menghapus file jika ada
ios::nocreate = tanpa membuat file baru (file harus ada sebelumnya)
ios::noreplace = membuat file baru (file belum ada sebelumnya, jika ada maka fungsi
tidak berjalan)
ios::binary = membuat file biner (bukan text)

Contoh Program:
a. Menulis/Merekam Data
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;
struct datamhs
{ char nim[15]; char nama[25]; float ipk;
} mhs;
int main()
{ ofstream file_mhs ("datamhs.dat", ios::app);
if (!file_mhs)
{cerr << "File could not be opened" << endl;
exit(1); } // prototype in cstdlib
char jwb = 'y'; cout << "Input Data Mahasiswa" << endl;
while (jwb == 'Y' || jwb == 'y')
{cout << endl; cout << "NIM = "; cin >> mhs.nim;
cout << "Nama = "; cin >> mhs.nama;
cout << "IPK = "; cin >> mhs.ipk;
file_mhs.write((char*)&mhs, sizeof(mhs));
cout << "Ada Data Lagi [Y/T] = "; cin >> jwb; }
file_mhs.close(); }
b. Membaca Isi File
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
using namespace std;
void infoMhs();
struct datamhs
{ char nim[15]; char nama[25]; float ipk;
} mhs;
int main()
{ ifstream file_mhs ("datamhs.dat", ios::in);
if (!file_mhs)
{cerr<<"File could not be opened"<<endl;
exit(1); }
cout << "-------------------------------------------" <<
endl;
cout << setiosflags(ios::left) << setw(8) << "No." <<
setw(15) << "NIM" << setw(25) << "Nama" << setw(5) << "IPK"
<< setw(20) << "Predikat" <<endl;
cout << "-------------------------------------------" <<
endl;
file_mhs.read((char *)&mhs,sizeof(mhs));
while (!file_mhs.eof())
{ infoMhs();
file_mhs.read((char*)&mhs, sizeof(mhs)); }
cout << "-------------------------------------------" <<
endl;
file_mhs.close(); }
int no=0;
char pre[20];
void infoMhs()
{ no++;
if (mhs.ipk>=3.50)
strcpy(pre,"Sangat Memuaskan");
else if (mhs.ipk>=3.00)
strcpy(pre,"Memuaskan");
else if (mhs.ipk>=2.50)
strcpy(pre,"Cukup");
cout << setiosflags(ios::left) << no << ". " <<
setw(15) << mhs.nim << setw(25) << mhs.nama << setw(5) <<
setprecision(3) << setiosflags(ios::showpoint | ios::left)
<< setiosflags(ios::left) << mhs.ipk << setw(20) << pre <<
endl;}

TUGAS
1. Buat program untuk merekam 5 data nama mahasiswa yang diinputkan dengan nama
file objek mhs dan nama file teks “nama_mhs.txt”
2. Buat program untuk menampilkan hasil rekam data pada nomor 1.
BAB XII

PEMROGRAMAN MODULAR

A. Definisi

Dalam sebuah program, seringkali pemrogram perlu memecah persoalan yang kompleks
menjadi beberapa bagian yang lebih mudah diselesaikan. Ide inilah yang mencetuskan
struktur pemrograman modular, yaitu memecah persoalan menjadi subsub persoalan yang
biasa disebut subprogram.

Bayangkan sebuah program yang dibuat untuk menghitung nilai rata-rata dari sekumpulan
nilai integer. Dalam prosesnya, program melakukan perhitungan tersebut dalam dua
langkah, yaitu menjumlahkan seluruh nilai, kemudian membaginya dengan banyaknya nilai
yang tersedia. Dengan demikian program tersebut dapat dipecah menjadi dua subprogram,
yaitu subprogram penjumlahan dan subprogram pembagian.

- Selain itu, pemrograman modular memungkinkan pemrogram memanggil kembali


subprogram yang telah didefinisikannya setiap kali diperlukan dalam program
tersebut.
- Pemrogram tidak perlu berulang kali mendefinisikan sekumpulan instruksi yang
diperlukan beberapa kali dalam sebuah program maupun dalam program lainnya.
- Dengan pemrograman modular, sebuah subprogram dapat dianggap sebagai
program kecil dengan sebuah tujuan spesifik yang umumnya berisi operasi
sederhana dan apabila terdapat kesalahan dapat dilokalisir pada subprogram itu
sendiri. Sub-sub program tersebut kemudian disatukan oleh bagian program utama
yang dapat memanggil subprogram tersebut sesuai kebutuhan dalam program.

Dalam pemrograman, dikenal dua tipe subprogram yang biasa digunakan untuk memecah
persoalan kompleks menjadi lebih sederhana, yaitu fungsi (function) dan prosedur
(procedure). Kedua tipe subprogram ini dapat digunakan bersamaan maupun salah satunya
saja dalam sebuah program. Masing-masing tipe subprogram memiliki karakteristik dan
perilaku yang berbeda sehingga penggunaannya dalam program juga berbeda-beda.

 Subprogram sebagai bagian dari program utama wajib mendefinisikan kondisi awal
(initial state/I.S.) sebelum proses dalam subprogram dieksekusi dan juga
mendefinisikan kondisi akhir (final state/F.S.) yang berupa hasil proses (output) atau
perubahan nilai dalam variabel tertentu (khusus untuk fungsi saja).

Beberapa fungsi dan prosedur telah terdefinisi dan dapat langsung digunakan oleh
pemrogram dalam sebuah program dengan mendefinisikan variabel-variabel yang
diperlukan. Selain fungsi dan prosedur yang telah terdefinisi tersebut, pemrogram juga dapat
membuat sendiri fungsi dan prosedur yang diperlukannya dalam sebuah program. Dalam
membuat sebuah subprogram, pemrogram dapat menyimpannya dalam salah satu dari dua
lokasi berikut ini:

1. Dalam file yang sama dengan program utama: dapat dilakukan jika subprogram
sedikit dan berukuran kecil sehingga relatif mudah dikelola dalam sebuah file
2. Dalam file yang terpisah: biasanya dilakukan jika subprogram sudah terlalu banyak
sehingga sulit dikelola, atau jika pemrogram menginginkan supaya subprogram
dapat digunakan di beberapa program utama sekaligus

B. Variabel Lokal dan Variabel Global


1. Variabel Lokal
Dalam mendeklarasikan sebuah fungsi/ prosedur, dapat dideklarasikan pula variabel-
variabel yang akan digunakan dalam fungsi/ prosedur tersebut. Variabel semacam ini
disebut variabel lokal atau variabel internal, artinya variabel ini hanya dikenali secara
lokal dalam sebuah subprogram (fungsi atau prosedur). Variabel lokal tidak dapat
dipanggil, diakses dan diubah oleh prosedur atau fungsi yang lain, bahkan oleh
program utama sekalipun karena hanya dapat dikenali oleh prosedur atau fungsi
dimana variabel ini didefinisikan.
2. Variabel Global
Sedangkan variabel yang didefinisikan dalam program utama dan dapat digunakan di
program utama maupun sub-sub program lainnya disebut dengan variabel global.
Nilai dari variabel ini dapat dipanggil, diakses dan diubah oleh prosedur atau fungsi
apapun yang terdapat dalam program tersebut.

C. Fungsi
Fungsi adalah subprogram yang menerima data masukan, melakukan beberapa
perhitungan dari data tersebut, kemudian mengembalikan output berupa sebuah data
baru. Dengan kata lain, sebuah fungsi memetakan sebuah nilai (dalam domain) menjadi
nilai lain (dalam range) dengan operasi/ proses tertentu. Pendeklarasian fungsi
merupakan salah satu cara memecah persoalan ke dalam beberapa sub persoalan yang
lebih mudah diselesaikan. Dalam pembuatan sebuah fungsi, pemrogram harus
mendefinisikan:
 nama fungsi
 Tipe data yang dibuat/ dihasilkan oleh fungsi
 Daftar parameter yang menyatakan data yang diperlukan oleh fungsi
 Satu atau lebih instruksi yang melakukan perhitungan
Selanjutnya, fungsi yang sudah didefinisikan dapat digunakan dalam program utama
maupun dalam fungsi lainnya dengan cara memanggil nama fungsi dan memberikan
parameter yang diperlukan oleh fungsi tersebut. Fungsi bekerja menurut mekanisme
pemanggilan-pengembalian (callreturn-mechanism). Tahapan dalam mekanisme tersebut
adalah:
1. Fungsi dipanggil dari program utama maupun fungsi lainnya
2. Sekumpulan operasi dalam fungsi dieksekusi
3. Hasil eksekusi dikembalikan ke program utama atau fungsi lain yang memanggilnya.

Contoh fungsi :
int rata(int x, int y, int z)
{
int ave;
ave = (x + y + z)/3;
return(ave);
}

Di dalam fungsi dikenal istilah Parameter Formal dan Parameter Aktual :


a. Parameter formal adalah parameter yang terdapat pada pendefinisian sebuah fungsi.
b. Parameter aktual adalah parameter yang terdapat pada saat pemanggilan fungsi.

Cara melewatkan parameter ke dalam suatu fungsi dapat dilakukan melalui dua cara
yaitu:
a. Pelewatan parameter melalui nilai (call by value) :
- Pelewatan parameter ke dalam fungsi dengan menyalin nilai dari suatu variabel
aktualnya. Maksudnya adalah fungsi menerima masukan berupa nilai, bukan
alamat memori letak dari datanya dan nilai tersebut disimpan di alamat memori
yang terpisah dari nilai aslinya yang digunakan oleh bagian program yang
memanggil fungsi.
Contoh :
#include <iostream>
using namespace std;
int kali(int a, int b, int c) //parameter formal
{
int x;
x = a*b*c;
return(x);
}
int main()
{
int a,b,c;
cout<<"Masukkan angka 1 : "; cin>>a;
cout<<"Masukkan angka 2 : "; cin>>b;
cout<<"Masukkan angka 3 : "; cin>>c;
cout<<"Hasil perkalian ketiga bilangan :
"<<kali(a,b,c); //parameter aktual
return 0;
}

b. Pelewatan parameter melalui acuan/referensi (call by reference) :


- Pelewatan parameter ke dalam fungsi dengan menyalin alamat dari suatu variabel
aktualnya. Fungsi yang menerima kiriman alamat ini akan menggunakan alamat
yang sama untuk mendapatkan nilai datanya. Hal ini dilakukan dengan
menggunakan pointer. Pointer adalah variabel yang merujuk pada alamat lokasi
suatu memori tertentu, variable pointer dapat dideklarasikan dengan menuliskan
nama variabelnya diawali dengan asterisk (‘*’). Perubahan yang terjadi pada
variabel asal akan mengakibatkan perubahan pada variabel pointernya dan
sebaliknya.

Contoh :
#include <iostream>
using namespace std;
void desc_sort(int *bil1, int *bil2) // parameter formal
{
if(*bil1<*bil2)
{
*bil1 = *bil1 + *bil2;
*bil2 = *bil1 - *bil2;
*bil1 = *bil1 - *bil2;
}
}
int main()
{
int a,b,c;
cout<<"Masukkan angka 1 : "; cin>>a;
cout<<"Masukkan angka 2 : "; cin>>b;
cout<<"Masukkan angka 3 : "; cin>>c;
desc_sort(&a, &b); //parameter aktual
desc_sort(&a, &c); //parameter aktual
desc_sort(&b, &c); //parameter aktual
cout<<"Hasil descending sort : "<<a<<" "<<b<<" "<<c;
return 0;

D. Prosedur
Cara lain memecah persoalan pemrograman ke dalam sub-sub persoalan pemrograman
adalah dengan mendeklarasikan prosedur. Prosedur adalah sederetan instruksi yang
diberi nama, dan melakukan tujuan tertentu. Seperti halnya pada fungsi, prosedur bekerja
dengan mekanisme pemanggilan pengembalian (call-return mechanism), yaitu dengan
urutan langkah:
1. Prosedur dipanggil oleh kode pemanggil (program utama maupun prosedur lainnya)
2. Sekumpulan operasi yang disimpan dalam prosedur dieksekusi
3. Kontrol dikembalikan ke kode pemanggil

Penulisan prosedure seperti berikut :


void nama_procedure (<daftar_parameter_input>
,<daftar_parameter_output>)
{
/* instruksi */
}

Dengan catatan bahwa nama prosedur dan nama parameternya harus disebutkan dalam
blok kode pemanggil. Berbeda dengan fungsi, daftar parameter pada procedure terbagi
menjadi dua yaitu parameter input dan parameter output. Daftar parameter boleh kosong
(tidak ada parameter input maupun output). Jika parameter tidak kosong (minimal ada
satu parameter) maka harus dituliskan nama parameter beserta tipe datanya.
Prosedur tanpa parameter memanfaatkan nilai dari variabel yang terdefinisi dalam kode
program utama/prosedur lain yang memanggilnya. Prosedur tanpa parameter ini hanya
dapat dieksekusi jika nilai dari variabel yang diperlukan dalam prosedur sudah
didefinisikan dalam kode program utama/prosedur lain yang memanggilnya.
Prosedur dengan parameter dibuat untuk mengeksekusi sekumpulan instruksi dengan
parameter yang berbeda-beda. Nama parameter yang dituliskan pada definisi /
spesifikasi prosedur disebut dengan parameter formal. Sedangkan parameter yang
dituliskan pada pemanggilan prosedur disebut parameter aktual.
Parameter formal adalah nama-nama variabel yang dipakai dalam mendefinisikan
prosedur, dan membuat prosedur tersebut dapat dieksekusi dengan variabel yang
berbeda saat pemanggilan. Terdapat tiga tipe parameter formal:
- parameter input, yaitu parameter yang diperlukan prosedur sebagai masukan untuk
melakukan aksi yang efektif
- parameter output, yaitu parameter yang akan menyimpan nilai yang dihasilkan oleh
prosedur
- parameter input/output, yaitu parameter yang diperlukan prosedur sebagai masukan
untuk melakukan aksi tertentu, yang pada akhir prosedur akan diisi dengan nilai baru
sebagai hasil eksekusi prosedur.

Parameter aktual adalah variabel / konstanta yang dipakai ketika prosedur dipanggil oleh
program utama / prosedur lain. Parameter aktual dapat berupa variabel / konstanta, tapi
parameter output harus berupa variabel karena akan menyimpan hasil eksekusi
prosedur.

Tugas

Praktikkan program berikut (hasilnya dicapture dan dianalisis di laporan)


1. Kasus 1

2. Kasus 2
3. Kasus 3

4. Kasus 4

Anda mungkin juga menyukai