Anda di halaman 1dari 122

Algoritma Dan Pemrograman 1

Oleh :

Suharnawi

UNIVERSITAS DIAN NUSWANTORO


1
2
KATA PENGANTAR

Buku Algoritma dan Pemrograman I ini adalah buku yang dibuat untuk keperluan praktikum
matakuliah Algoritma dan Pemrograman I. Mata kuliah Algoritma dan Pemrograman I ini
diberikan kepada mahasiswa pada semester awal. Pada semester awal adalah waktu yang tepat
untuk mempelajari alur program berupa algoritma dan bagaimana menyusun sebuah program.
Bahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++.
Bahasa pemrograman C++ merupakan bahasa yang banyak digunakan yang pada saat ini
menempati urutan 10 besar. Banyak kemudahan yang ada dalam pemrograman C++.
Dengan berbagai kemudahan dan kelengkapan fungsi yang ada maka sangat baik untuk
dipelajari bagi pemula. Strukturnya yang juga mirip pemrograman java, maka untuk beralih ke
belajar java setelah mempelajari bahasa C++ ini nantinya tentu akan lebih cepat untuk dapat
mempelajarinya. Pada saat ini Java menempati urutan yang bagus dari penggunakan bahasa
pemrograman.
Tentunya penulis menyadari masih banyak kekurangan dalam penulisan buku ini. Sudah
barang tentu pembaca diharapkan dapat lebih memperkaya pengalaman menuliskan program
dengan berani menuliskan program yang lebih besar. Kesederhanaan dari isi buku ini
diharapkan dapat mudah dipahami oleh mahasiswa. Karena dengan fondasi pemahaman yang
kuat untuk belajar selanjutnya akan lebih baik.
Penulis juga mohon maaf jika dalam penulisan buku ini masih banyak kesalahan atau
kekurangan.

Semarang, 18 Desember 2014


Salam
Penulis

i
ii
Daftar Isi

Kata Pengantar ……………………………………………………………..…………………………………………. i


Daftar Isi ……………………………………………………………………………………………………………… iii

Pertemuan 1 ………………………………………………………………………………….. 1
Memulai Borland C++ ……………………………………………………………………………..…………. 1
Menulis Kode Program C++ …………………………………………………………..……………………. 2
Mengkompilasi Kode Program C++ ……………………………………………..……………………. 2
Menjalankan Program C++ …………………………………………………………..……………………. 3
Struktur Program C++ …..…………………………………………………………….……………………. 3
Pertemuan 2 ………………………………………………………………………………….. 9
Identifier ……………..……………………………………………………………………………..…………. 10
Tipe Data ………………..………………………………………………………………..……………………. 11
Variabel …………………………………………………………………………………..……………………. 13
Deklarasi Variabel ……………………………………………………………………..……………………. 13
Inisialisasi Variabel …………………………………………………………………….……………………. 14
Deklarasi Konstanta …………………………………………………………………..……………………. 15
Karakter dan String …………………………………………………………………….……………………. 16
Pertemuan 3 ………………………………………………………………………………….. 21
cout() …………………………………………………………………………………………………..…………. 21
printf() …………………………………………………………………………………………………..…………. 22
puts() …………………………………………………………………………………………………..…………. 25
putchar() ……………………………………………………………………………………………..…………. 25
cin() …………………………………………………………………………………………………..………..…. 28
scanf() …………………………………………………………………………………………………..…………. 30
gets() …………………………………………………………………………………………………..…………. 31
getch() ……….………………………………………………………………………………………..…………. 32
getche() ……………….……………………………………………………………………………..…………. 33

iii
Pertemuan 4 ………………………………………………………………………………….. 35
Operator Assignation (=)…………………………………………………………………………..…………. 35
Operator Arithmetic (+, -, *, /, %) …………………………………………………………..…………. 36
Operator Compound Assignation (-=, +=, *=, dll) …………………………………..…………. 37
Operator Increase (++) and decrease (--) …………………………………………………..…………. 37
Operator Relation (==, !=, >, <, <=, >=) …………………………………………………..…………. 38
Operator Logika (!, &&, ||) ……………………………………………………………………..…………. 40
Operator Conditional (?) …………………………………………………………………………..…………. 40
Operator Bitwise (&, |, ^, ~, <<, >>) ………………………………………………………..…………. 41
Prioritas Operator ………………………………………………………………………..……………………. 42
Pertemuan 5 ………………………………………………………………………………….. 45
Pernyataan IP ………………………………………………………………………………………..…………. 45
Pernyataan IP - ELSE …………………………………………………………………………..…………. 48
Pernyataan NESTED IP …………………………………………………………………………..…………. 50
Pernyataan IP – ELSE Majemuk ……………………………………………………………..…………. 51
Pernyataan switch - case ……………………………………………………………………..…………. 52
Pertemuan 6 ………………………………………………………………………………….. 57
Pernyataan while …………………………………………………………………………………..…………. 57
Pernyataan do - while ……………………………………………………………………………..…………. 59
Pernyataan for ……………………………………………………………………………………..…………. 60
Pernyataan nested - for …………………………………………………………………………..…………. 63
Pernyataan goto ……………………………………………………………………………………..…………. 64
Pernyataan break ………………………………………………………………………………..…………. 65
Pernyataan continue ……………………………………………………………………………..…………. 66
Pertemuan 7 ………………………………………………………………………………….. 67
Array ……………………….…………………………………………………………………………..…………. 67
Inisialisasi Array ……….………………………………………………………………..……………………. 68
Array Multidimensi ……………………………………………………………………..……………………. 70
Array sebagai parameter ………………………………………………………………..……………………. 72
Pertemuan 8 ………………………………………………………………………………….. 73
Data Struktur ………………………………………………………………………………………..…………. 73
Pertemuan 9 ………………………………………………………………………………….. 79
Fungsi …………………….…………………………………………………………………………..…………. 79

iv
Fungsi tanpa tipe ( void ) ……………………………………………………………..……………………. 81
Variabel Lokal dan Variabel Global ………………………………………………..……………………. 81
Pertemuan 10 ……………………………………………………………………………….. 85
Parameter Fungsi …..……………………………………………………………………………..…………. 85
Argument passed by value dan by reference …………………………………..……………………. 86
Nilai default dalam argument ………………………………………………………..……………………. 88
Pertemuan 11 ……………………………………………………………………………….. 93
Prototyping Function …..………………………………………………………………………..…………. 93
Overloaded Function …..……………………………………………………………..……………………. 95
Pertemuan 12 ……………………………………………………………………………….. 97
Rekursivity Function …………………………………………………………………………..…………. 97
Pertemuan 13……………………………………………………………………………….. 100
Sorting …..…………..……………………………………………………………………………..…………. 100
Buble Sort ……………..……………………………………………………………………………..…………. 100
Selection Sort …………………………………………………………………………..……………………. 103
Pertemuan 14……………………………………………………………………………….. 107
Searching ………………………………………………………………………………..………………….…. 107
Linier Search ………….…………………………………………………………………..……………………. 107
Binary Search ……….…………………………………………………………………..……………………. 109
Daftar Pustaka ………………………………………………………………………….. 111

v
vi
Pertemuan 1

Pokok Bahasan
1. Mengenal Borland C++
2. Membaca Algoritma
3. Mengimplementasikan Algoritma dalam pemrograman

Tujuan Pembelajaran
1. Mahasiswa dapat membaca algoritma dengan benar
2. Mahasiswa dapat mengimplementasikan Algoritma kedalam bahasa pemrograman C++
3. Mahasiswa mampu mengkompilasi dan menjalankan program

Kompetensi Prasyarat
1. Mahasiswa telah menguasai pengoperasian dasar komputer
2. Mahasiswa dapat menggunakan Operating Sistem Windows.

Instruksi Khusus
1. Mahasiswa menggunakan pemrograman C++ untuk membuat program dengan tahapan yang
benar.

Teori Singkat
Memulai Borland C++
Untuk memulai Borland C++ dapat dilakukan dengan cara memilih menu Start pada Windows,
Program File, dan pilih Borland C++.
Membuat File / Program C++
Dari menu File pada Borland C++, pilih New, dan Text File.

Gambar 1.1 Tampilan Borland C++

1
Menulis kode Program C++
Tuliskan kode program C++ pada editor yang disediakan seperti pada Gambar 1.2 berikut :

Gambar 1.2 Editor Borland C++

Mengkompilasi kode Program C++


Untuk mengkompilasi kode program pilihlah icon Compile this file. Kompilasi dilakukan pada
saat membuat program baru atau pada saat setelah melakukan perubahan program.

Gambar 1.3 Icon Compile this File Borland C++

2
Menjalakan Program C++
Untuk menjalankan program yang telah berhasil dikompilasi pilihlah icon Run seperti pada
Gambar 1.4 berikut :

Gambar 1.4 Icon Run Borland C++

Struktur Program C++


Struktur program C++ adalah sebagai berikut :

#Preprocessor directive

int main ()
{
// badan program ;
// lokasi program utama dituliskan ;
}

contoh source code :

// progran C++ pertamaku


#include <iostream.h>

int main ()
{
cout << "Hello World!";
return 0;
}

Hasil program setelah di-kompile dan di-eksekusi :

Hello World

3
Keterangan :

Program di atas merupakan salah satu program paling sederhana dalam C++, tetapi dalam
program tersebut mengandung komponen dasar yang selalu ada pada setiap pemrograman
C++. Keterangan dari masing-masing baris perintah di atas adalah :

// program C++ pertamaku

Baris ini adalah komentar. Semua baris yang diawali dengan dua garis miring (//) akan
dianggap sebagai komentar dan tidak akan berpengaruh terhadap program.

#include <iostream.h>

Kalimat yang diawali dengan tanda (#) adalah are preprocessor directive. Bukan
merupakan baris kode yang dieksekusi, tetapi indikasi untuk kompiler. Dalam kasus ini
kalimat #include <iostream.h> memberitahukan preprocessor kompiler untuk
menyertakan header file standard iostream. File spesifik ini juga termasuk library
deklarasi standard I/O pada C++ dan file ini disertakan karena fungsi-fungsinya akan
digunakan nanti dalam program.

int main ()

Baris ini mencocokan pada awal dari deklarasi fungsi main. Fungsi main merupakan
titik awal dimana seluruh program C++ akan mulai dieksekusi. Diletakan di awal, di
tengah atau di akhir program, isi dari fungsi main akan selalu dieksekusi pertama kali.
Pada dasarnya, seluruh program C++ memiliki fungsi main.
main diikuti oleh sepasang tanda kurung () karena merupakan fungsi. pada C++,
semua fungsi diikuti oleh sepasang tanda kurung () dimana, dapat berisi argumen
didalamnya. Isi dari fungsi main selanjutnya akan mengikuti,berupa deklarasi formal
dan dituliskan diantara kurung kurawal ( { } ), seperti dalam contoh.

cout << "Hello World";

Intruksi ini merupakan hal yang paling penting dalam program contoh. cout
merupakan standard output stream dalam C++ (biasanya monitor). cout
dideklarasikan dalam header file iostream.h, sehingga agar dapat digunakan maka file
ini harus disertakan.
Perhatikan setiap kalimat diakhiri dengan tanda semicolon (;). Karakter ini
menandakan akhir dari instruksi dan harus disertakan pada setiap akhir instruksi pada
program C++.

return 0;

Intruksi return menyebabkan fungsi main() berakhir dan mengembalikan kode yang
mengikuti instruksi tersebut, dalam kasus ini 0. Nilai nol boleh digantikan dengan nilai
yang sesuai dengan tipe data dari main, dengan demikian jika main mempunyai tipe int
maka return dapat diberikan nilai dengan jangkauan int tersebut.

Tidak semua baris pada program ini melakukan aksi. Ada baris yang hanya berisi komentar
(diawali //), baris yang berisi instruksi untuk preprocessor kompiler (Yang diawali #),kemudian
4
baris yang merupakan inisialisasi sebuah fungsi (dalam kasus ini, fungsi main) dan baris yang
berisi instruksi (seperti, cout <<), baris yang terakhir ini disertakan dalam blok yang dibatasi
oleh kurung kurawal ({}) dari fungsi main.

Struktur program dapat dituliskan dalam bentuk yang lain agar lebih mudah dibaca, contoh :

#include <iostream.h>

int main ()
{
cout << " Hello World ";
return 0;
}

atau dapat juga dituliskan :

#include <iostream.h>

int main () { cout << " Hello World "; return 0; }

Dalam satu baris dan memiliki arti yang sama dengan program-program sebelumnya. pada C++
pembatas antar instruksi ditandai dengan semicolon (;) pada setiap akhir instruksi.
contoh :

#include <iostream.h>

int main ()
{
cout << " Data Saya " << endl;
cout << " ================ " << endl;
cout << " Nama : Awalina " << endl;
cout << " Telp. : 081262621188 ";
cout << endl;

return 0;
}

Komentar Program
Komentar adalah bagian dari program yang diabaikan oleh kompiler. Tidak melaksanakan aksi
apapun. Mereka berguna untuk memungkinkan para programmer untuk memasukan catatan

5
atau deskripsi tambahan mengenai program tersebut. C++ memiliki dua cara untuk menuliskan
komentar :

// Komentar baris
/* Komentar Blok */

Komentar baris, akan mengabaikan apapun mulai dari tanda (//) sampai akhir dari baris yang
sama. Komentar Blok, akan mengabaikan apapun yang berada diantara tanda /* dan */.
Komentar sangat penting diberikan sebagai bahan dokumentasi. Komentar akan sangat
berguna nantinya pada saat program akan dibaca kembali.

Contoh penggunaan komentar :

/*
Nama program : komentar01.cpp
Dibuat tanggal : 1 Oktober 2014
Fungsi Program : memberi keterangan program
Dibuat oleh : nawi
*/

#include <iostream.h>
int main ()
{
//mencetak nama............
cout << "Nama : Cahaya Indahsari";
cout << endl;

cout << "Kota : Semarang"; // cetak kota

return 0;
}

6
Pelaksanaan Praktikum
1. Buatlah Program Berikut :

/*
Nama program : Latihan01.cpp
Dibuat tanggal : 2 Februari 2015
Fungsi Program : mencetak keterangan
Dibuat oleh : nama mahasiswa
*/

#include <iostream.h>
int main ()
{
//menampilkan data............
Clrscr;
cout << “Data Mahasiswa” << endl;
cout << “=========================” << endl;
cout << "1. NIM : A12.2014.29012" << endl;
cout << “2. Nama : Nur Hartati Mulya” << endl;
cout << "3. Alamat : Jl. Nuri 45 RT.01/RW.03\n";
cout << "4. Kel. : Wonomulyo\n";
cout << "4. Kec. : Candisari\n";
cout << "5. Kota : Semarang"; // cetak kota
cout << endl;

getch();
return 0;
}

Output yang dihasilkan :

2. Ubahlah nilai 0 yang mengikuti return 0 dengan angka 1945, perhatikan apa yang terjadi !
3. Ubahlah perintah int main() menjadi void main() dan perintah return 0 dihilangkan !
Perhatikan apa yang terjadi !

Latihan
1. Cetaklah Data Mahasiswa yang dilengkapi dengan bingkai yang mengitari data tersebut !

7
Tugas
1. Jelaskan masing-masing baris perintah dari program praktikum no. 1 di atas !
2. Tuliskan perbedaan pemakaian komentar // dengan /*….*/
3. Mengapa return diberi nilai 0 ?
int main ()
{
cout << " Hello World ";
return 0;
}
4. Apa fungsi kurung kurawal ( { } ) dalam program ?
5. Apa perbedaan perintah “\n” dan endl ?

8
Pertemuan 2

Pokok Bahasan
1. Tipe Data
2. Variabel
3. Konstanta

Tujuan Pembelajaran
1. Mahasiswa mengenal tipe data dan mengetahui jangkauan nilai dari tipe data
2. Mahasiswa dapat menetukan tipe data yang tepat dalam penyusunan program

Kompetensi Prasyarat
1. Mahasiswa telah mampu menuliskan, mengkompilasi, dan menjalankan program C++
2. Mahasiswa dapat membuat program dengan perintah cout.

Instruksi Khusus
1. Mahasiswa menggunakan pemrograman C++ untuk membuat program dengan tahapan yang
benar.
2. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Komputer sebagai pengolah data tentunya tidak dapat lepas dengan proses penyimpanan data.
Komputer dengan kemampuan memproses dan mengelola data, sudah barang tentu harus
dilakukan pengelolaan yang baik. Sebagai ilustrasi, ingat 2 buah angka, angka pertama adalah 5
dan angka kedua adalah 2. Selanjutnya tambahkan 10 pada angka pertama kemudian hasilnya
dikurangi angka kedua (dimana hasil akhirnya adalah 11).
Seluruh proses ini dapat diekspresikan dalam C++ dengan serangkaian instruksi sebagai berikut
:

a = 5;
b = 4;
a = a + 10;
result = a - b;

Jelas ini merupakan satu contoh yang sangat sederhana karena kita hanya menggunakan 2 nilai
integer yang kecil, tetapi komputer dapat menyimpan jutaan angka dalam waktu yang hampir
bersamaan dan dapat melakukan operasi matematika yang rumit.

9
Karena itu, kita dapat mendefinisikan variable sebagai bagian dari memori untuk menyimpan
nilai yang telah ditentukan. Setiap variable memerlukan identifier yang dapat
membedakannya dari variable yang lain. Sebagai contoh dari kode di atas, identifier
variabelnya adalah a, b dan result.

Identifiers
Identifier adalah untaian satu atau lebih huruf, angka, atau garis bawah ( _ ). Panjang dari
identifier, tidak terbatas, walaupun untuk beberapa kompiler hanya 32 karakter pertama saja
yang dibaca sebagai identifier (sisanya diabaikan). Identifier harus selalu diawali dengan huruf
atau garis bawah ( _ ).

Ketentuan lainnya yang harus diperhatikan dalam menentukan identifier adalah tidak boleh
menggunakan key word dari bahasa C++. Di bawah ini adalah key word dalam C++ :

and_eq asm auto bitand

bitor bool break case

catch char class compl

const const_cast continue default

delete do double dynamic_cast

else enum explicit export

extern FALSE float for

friend goto if inline

int long mutable namespace

new not not_eq operator

or or_eq private protected

public register reinterpret_cast return

short signed sizeof static

static_cast struct switch template

this throw TRUE try

typedef typeid typename union

unsigned using virtual void

volatile wchar_t while xor

xor_eq

10
Sebagai tambahan, represetasi alternatif dari operator, tidak dapat digunakan sebagai identifier.
Represetasi alternatif dari operator tersebut adalah sebagai berikut:

and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq

catatan:
Bahasa C++ adalah bahasa yang "case sensitive", ini berarti identifier yang dituliskan dengan
huruf kapital akan dianggap berbeda dengan identifier yang sama tetapi dituliskan dengan
huruf kecil, sebagai contoh : variabel hargabeli tidak sama dengan variable HARGABELI
ataupun variabel HargaBeli.

Tipe Data
Tipe data yang ada pada C++ adalah sebagai berikut :

Tabel 2.1. Tipe Data

Tipe Data Ukuran Jangkauan Nilai


signed: -128 to 127
char 1 byte
unsigned: 0 to 255

short int signed: -32768 to 32767


2 bytes
(short) unsigned: 0 to 65535
signed: -2147483648 to 2147483647
int 4 bytes
unsigned: 0 to 4294967295

long int signed: -2147483648 to 2147483647


4 bytes
(long ) unsigned: 0 to 4294967295
bool 1 byte true or false
float 4 bytes +/- 3.4e +/- 38 (~7 digits)
double 8 bytes +/- 1.7e +/- 308 (~15 digits)
long
8 bytes +/- 1.7e +/- 308 (~15 digits)
double
wchar_t 2 or 4 bytes 1 wide character

Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi
setiap instruksi yang akan dilaksanakan oleh komputer. Misalnya saja 5 dibagi 2 bisa saja
menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5 dan 2 bertipe integer maka
akan menghasilkan nilai 2, namun jika keduanya bertipe float maka akan menghasilkan nilai
2.5. Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih efisien
dan efektif.

11
Contoh :

#include <iostream.h>
#include <conio.h>

int main ()
{
// declaring variables:
int a, b;
int result;

// process:
a = 5;
b = 2;
result = a / b;
cout << "Hasil (int) = " << result;
getch();

return 0;
}

Hasil output program :

Hasil (int) = 2

Contoh :

#include <iostream.h>
#include <conio.h>

int main ()
{
// declaring variables:
float a, b;
float result;

// process:
a = 5;
b = 2;
result = a / b;
cout << "Hasil (float)= " << result;
getch();

return 0;
}

Hasil output program :

Hasil (float) = 2.5

12
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 variable bisa diubah-ubah sesuai kebutuhan.
Nama dari suatu variable 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 dianggap berbeda. Jadi antara
nim, NIM dan Nim dianggap berbeda.
 Tidak boleh mengandung spasi.
 Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah (underscore).
Yang termasuk symbol khusus yang tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -,
+, = dsb
 Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.

Contoh penamaan variabel yang benar :


NIM, a, x, nama_mhs, f3098, f4, nilai, budi

Contoh penamaan variable yang salah :


%nilai_ujian, 80harga, rata-rata, ada spasi, penting!

Deklarasi variabel
Untuk menggunakan variabel pada C++, kita harus mendeklarasikan tipe data yang akan
digunakan. Sintaks penulisan deklarasi variabel adalah dengan menuliskan tipe data yang akan
digunakan diikuti dengan identifier yang benar, contoh :

int a;
float mynumber;

Jika akan menggunakan tipe data yang sama untuk beberapa identifier maka dapat dituliskan
dengan menggunakan tanda koma.

contoh :
int a, b, c;

Tipe data integer (char , short, long dan int) dapat berupa signed atau unsigned tergantung dari
kisaran nilai yang akan direpresentasikan. Dilakukan dengan menyertakan keyword signed atau
unsigned sebelum tipe data, contoh :

unsigned short NumberOfSons;


signed int MyAccountBalance;

13
Jika tidak dituliskan, maka akan dianggap sebagai signed.

contoh :

#include <iostream.h>
#include <conio.h>
int main ()
{
unsigned int jumlah, harga;
int total;
jumlah = 10; // jumlah >= 0
harga = 5000; // harga >= 0
total = jumlah * harga;
cout << "Total = " << total;
getch();
return 0;
}

Inisialisasi Variabel
Ketika mendeklarasikan variabel lokal, kita dapat memberikan nilai tertentu. Sintaks penulisan
sebagai berikut :

type identifier = initial_value ;

Misalkan kita akan mendeklarasikan variabel dengan nama a dengan tipe int yang bernilai 0,
maka dapat dituliskan :
int a = 0;

Atau dengan cara lainnya, yaitu menyertakan nilai yang akan diberikan dalam tanda ():

type identifier (initial_value) ;

contoh :
int a (0);

14
contoh program :

#include <iostream.h>
#include <conio.h>

int main () {
int panjang = 5, lebar (4);
int luas;

luas = panjang * lebar;


cout << "Luas = " << luas;
getch();
return 0;
}

Variabel Numerik
Variabel numerik ini dibagi menjadi menjadi 3 (tiga) macam :
 Bilangan Bulat atau Integer
 Bilangan Desimal Berpresisi Tunggal atau Floating Point.
 Bilangan Desimal Berpresisi Ganda atau Double Precision.

Variabel Text
Variabel Text ini dibagi menjadi menjadi 2 (dua) macam :
 Character ( Karakter Tunggal )
 String ( Untuk Rangkaian Karakter )

contoh :
char niliaihuruf;
char nama[25];

Deklarasi 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.
Bentuk deklarasi konstanta diawali dengan reserved word const.
Bentuk penulisannya :

const nama-konstanta = nilai konstanta;

Konstanta dapat bernilai integer, pecahan, karakter dan string.


Contoh konstanta : 50; 13; 3.14; 4.50005; ‘A’; ‘Bahasa C’.
15
Nilai Integer
Merupakan nilai konstanta numerik yang meng-identifikasikan nilai integer decimal. Karena
merupakan nilai numeric, maka tidak memerlukan tanda kutip (") maupun karakter khusus
lainnya.
Contoh :
1776
707
-273

C++ memungkinkan kita untuk mempergunakan nilai oktal (base 8) dan heksadesimal (base
16). Jika menggunakan octal maka harus diawali dengan karakter 0 (karakter nol), dan untuk
heksadesimal diawali dengan karakter 0x (nol, x).

Contoh :
75 // decimal
0113 // octal
0x4b // hexadecimal

Dari contoh diatas, seluruhnya merepresentasikan nilai yang sama : 75.

Nilai Floating Point


Merepresentasikan nilai desimal dan/atau eksponen, termasuk titik desimal dan karakter e
(Yang merepresentasikan “dikali 10 pangkat n” , dimana n merupakan nilai integer) atau
keduanya. Contoh :
3.14159 // 3.14159
6.02e23 // 6.02 x 1023
1.6e-19 // 1.6 x 10-19
3.0 // 3.0

Karakter dan String


Merupakan konstanta non-numerik, Contoh :
'z'
'p'
"Hello world"
"How do you do?"

Untuk karakter tunggal dituliskan diantara kutip tunggal (') dan untuk untaian beberapa
karakter, dituliskan diantara kutip ganda (").

Konstanta karakter dan string memiliki beberapa hal khusus, seperti escape codes berikut ini.

16
escape
Fungsi Keterangan
codes

\n newline ganti baris baru

\r carriage return ke kolom pertama

\t tab tabulasi

\v vertical tab tabulasi vertical

\b backspace mundur satu spasi

\f form feed (page feed) ganti halaman

\a alert (beep) untuk bunyi bell

\' single quote (') karakter petik tunggal

\" double quote (") karakter petik ganda

\? question mark (? ) question mark

\\ backslash (\) karakter garis miring

contoh :
'\n'
'\t'
"Left \t Right"
"one\ntwo\nthree"

Sebagai tambahan, kita dapat menuliskan karakter apapun dengan menuliskan yang diikuti
dengan kode ASCII, mengekspresikan sebagai octal (contoh, \23 atau \40) maupun
heksadesimal (contoh, \x20 atau \x4A).

Konstanta Define (#define)


Kita dapat mendefinisikan sendiri nama untuk konstanta yang akan kita pergunakan, dengan
menggunakan preprocessor directive #define. Dengan format :

#define identifier value

17
Contoh :
#define PI 3.14159265
#define NEWLINE '\n'
#define WIDTH 100

Setelah didefinisikan seperti diatas, maka kita dapat menggunakannya pada seluruh program
yang kita buat, contoh :

circle = 2 * PI * r;
cout << NEWLINE;

Pada dasarnya, yang dilakukan oleh kompiler ketika membaca #define adalah menggantikan
literal yang ada (dalam contoh, PI, NEWLINE atau WIDTH) dengan nilai yang telah ditetapkan
(3.14159265, '\n' dan 100). #define bukan merupakan instruksi, oleh sebab itu tidak diakhiri
dengan tanda semicolon (;).

Deklarasi Konstanta (const)


Dengan prefix const kita dapat mendeklarasikan konstanta dengan tipe yang spesifik seperti
yang kita inginkan.

contoh :
const int width = 100;
const char tab = '\t';
const zip = 12440;

Jika tipe data tidak disebutkan, maka kompiler akan meng-asumsikan sebagai int.

contoh :

#include <iostream.h>
#include <conio.h>

#define PI 3.14159
#define NEWLINE '\n'

int main ()
{
double r=5.0;
double circle;

circle = 2 * PI * r;
cout << circle;
cout << NEWLINE;
getch();
return 0;
}

18
Pelaksanaan Praktikum
1. Buatlah Program Berikut :

/*
Nama program : Latihan02.cpp
Dibuat tanggal : 5 Februari 2015
Fungsi Program : menggunakan variabel
Dibuat oleh : nama mahasiswa
*/

#include <iostream.h>
#include <conio.h>

char nama[30];
char Alamat[30];
int nilai1;
int nilai2;
float rata;

int main ()
{
clrscr;
strcpy(nama, "Setia Djati");
strcpy(alamat, "Jl. Nuri 45");
nilai1 = 85;
nilai2 = 90;

//cetak data...........................
cout << "Data Mahasiswa" << endl;
cout << "=============================" << endl;
cout << "1. Nama : " << Nama << endl;
cout << "2. Alamat : " << alamat << endl;
cout << "3. Nilai1 : " << Nilai1 << endl;
cout << "4. Nilai2 : " << Nilai2 << endl;
rata = (nilai1 + nilai2)/2;
cout << "5. Rata-rata : " << rata << endl;
cout << "=============================" << endl;

getch();
return 0;
}

Output yang dihasilkan :

19
2. Buatlah Program Berikut :

/*
Nama program : Latihan02a.cpp
Dibuat tanggal : 5 Februari 2015
Fungsi Program : menggunakan variabel
Dibuat oleh : nama mahasiswa
*/

#include <iostream.h>
#include <conio.h>

char nama[30];
char alamat[30];

int main ()
{
clrscr;
strcpy(nama, "Setia Djati");
strcpy(alamat, "Jl. Nuri 45");
int nilai1 = 85;
int nilai2 = 90;

//cetak data...........................
cout << "Data Mahasiswa" << endl;
cout << "=============================" << endl;
cout << "1. Nama : " << Nama << endl;
cout << "2. Alamat : " << alamat << endl;
cout << "3. Nilai1 : " << Nilai1 << endl;
cout << "4. Nilai2 : " << Nilai2 << endl;
float rata = (nilai1 + nilai2)/2;
cout << "5. Rata-rata : " << rata << endl;
cout << "=============================" << endl;

getch();
return 0;
}

Latihan
1. Buatlah program konversi mata uang rupiah ke US $ !
2. Buatlah program untuk menghitung konversi suhu dari Reamur ke Celcius !

Tugas
1. Jelaskan bahwa bahasa C++ merupakan bahasa pemrograman yang case sensitif ?
2. Jelaskan pengertian keyword ?
3. Mengapa keyword tidak boleh digunakan sebaga indentifier ?
4. Type data apa yang sesuai untuk mewakili hasil berikut :
a. Jumlah anak dalam keluarga
b. Nilai ujian dalam suatu kelas
c. Nilai rata-rata kelas

20
Pertemuan 3

Pokok Bahasan
1. Perintah Input bahasa pemrograman C++
2. Perintah Output bahasa pemrograman C++

Tujuan Pembelajaran
1. Mahasiswa dapat mencetak/menampilkan informasi di layar
2. Mahasiswa dapat membuat program untuk memasukkan data

Kompetensi Prasyarat
1. Mahasiswa telah mengenal dan dapat menggunakan identifier dengan baik
2. Mahasiswa dapat menggunakan perintah mencetak.

Instruksi Khusus
1. Mahasiswa harus dapat menggunakan tipe data dengan benar sesuai peruntukannya
2. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Komputer sebagai pengolah data tentunya tidak dapat lepas dengan proses penyimpanan data.

#include <iostream.h> // untuk mengaktifkan perintah cout;


#include <stdio.h> // untuk mengaktifkan perintah printf dan scanf
#include <conio.h> // untuk mengaktifkan perintah getch()

Perintah standar output yang disediakan oleh Borland C++, diantaranya adalah :

 cout()
 printf()
 puts()
 putchar()

cout()
Fungsi cout() merupakan sebuah objeck didalam Borland C++ digunakan untuk menampilkan
suatu data kelayar. Untuk menggunakan fungsi cout() ini, harus menyertakan file header
iostream.h .

21
Contoh :

#include <stdio.h>
#include <conio.h>
#include <iostream.h>

main()
{
float a, b, c;
a = 7.5; b = 8.4; c = 0;
clrscr();
cout<<" Nilai A : " << a;
cout<<" Nilai B : " << b;

c = a + b;

cout<<" Nilai C : " << c;


getch();
}

printf()
Fungsi printf() merupakan fungsi keluaran yang paling umum digunakan untuk menampilkan
informasi ke layar.

Bentuk Penulisan :

printf("string-kontrol", arg1, arg2, …);

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.

Tabel 2.4. Penentu Format Printf()

Format untuk
TIPE DATA
printf()

Integer %d

Floating Point

Bentuk Desimal %f

22
Bentuk Berpangkat %e

Bentuk Desimal dan Pangkat %g

Double Precision %lf

Character %c

String %s

Unsigned Integer %u

Long Integer %ld

Long Unsigned Integer %lu

Unsigned Hexadecimal Integer %x

Unsigned Octal Integer %o

printf(“%c merupakan abjad yang ke - %d”,’b’,2);

b typenya char

contoh :

#include <stdio.h>
#include <conio.h>
main()
{
int a = 7;
char b = 'G';
clrscr();

printf("%c adalahAbjad Ke - %d", b, a);


getch();
}

Penggunaan Penentu Lebar Field


Bila ingin mencetak atau menampilkan data yang bertipe data FLOAT atau pecahan, tampilan
yang tampak biasanya kurang bagus. Hal tersebut dapat diatur lebar field-nya dan jumlah
desimal yang ingin dicetak. Berikut bentuk penulisannya :

23
contoh :

#include <stdio.h>
#include <conio.h>

main()
{
float a = 7.50, b = 243.21;
clrscr();
printf("Bilangan A = %f \n", a);
printf("Bilangan B = %f", b);
getch();
}

Output yang akan dihasilkan, jika tidak menggunakan panentu lebar field adalah

Bilangan A = 7.500000

Bilangan B = 243.210007

contoh :

#include <stdio.h>
#include <conio.h>
main()
{
float a = 7.50, b = 243.21;
clrscr();
printf("Bilangan A = %4.1f \n", a);
printf("Bilangan B = %4.1f", b);
getch();
}

Output yang dihasilkan, jika menggunakan penentu lebar field adalah

Bilangan A = 7.5

Bilangan B = 243.2

24
puts()
Perintah puts() sebenarnya sama dengan printf(), yaitu digunakan untuk mencetak string
ke layar. puts() berasal dari kata PUT STRING.

Perbedaan antara printf() dengan puts() adalah :


Tabel 2.6. Perbedaan fungsi puts() dengan printf()
printf() puts()

Harus menentukan tipe data untuk data Tidak Perlu penentu tipe data string, karena
string, yaitu %s fungsi ini khusus untuk tipe data string.

Untuk mencetak pindah baris tidak perlu


Untuk mencetak pindah baris, memerlukan
notasi ‘ \n ‘ , karena sudah dibeikan secara
notasi ‘ \n ‘
otomatis.

contoh :

#include <stdio.h>
#include <conio.h>

main()
{
char a[4] = "Dian";
clrscr();
puts("Saya Kuliah di. ");
puts(a);
getch();
}

putchar()
Perintah putchar() digunakan untuk menampilkan sebuah karakter ke layar. Penampilan
karakter tidak diakhiri dengan pindah baris.
contoh :

#include <stdio.h>
#include <conio.h>

main()
{
clrscr();
putchar('D');
putchar('N');
putchar('S');
getch();
}

25
Fungsi Manipulator
Manipulator pada umumnya digunakan untuk mengatur tampilan layar, untuk menggunakan
manipulator ini file header yang harus disertakan file header iomanip.h.
Ada beberapa fungsi manipulator yang disediakan oleh Borland C++, antara lain.

endl hex() setfill()

end oct() setprecision()

flush() setbase() setosflags()

dec() setw()

Berikut akan dibahas beberapa fungsi manipulator, diantaranya :

a. endl
Fungsi endl merupakan suatu fungsi manipulator yang digunakan untuk menyisipkan karakter
NewLine atau mengatur pindah baris. Fungsi ini sangat berguna untuk piranti keluaran berupa
file di disk. File header yang harus disertakan adalah file header iostream.h .
contoh :

# include <stdio.h>
# include <conio.h>
# include <iostream.h>
main()
{
float a, b, c;
a=7.5; b=8.4; c=0
clrscr();
cout<<"Nilai A : "<< a <<endl;
cout<<"Nilai B : "<< b <<endl;
c = a + b;
cout<<"Nilai C : "<< c <<endl;
getch();
}

b. ends
Fungsi ends merupakan suatu fungsi manipulator yang digunakan untuk menambah karakter
null ( nilai ASCII NOL ) kederetan suatu karakter. Fungsi ini akan berguna untuk mengirim
sejumlah karakter kefile didisk atau modem dan mangakhirinya dengan karakter NULL.. File
header yang harus disertakan adalah file header iostream.h .

26
contoh :

# include <stdio.h>
# include <conio.h>
# include <iostream.h>
main()
{
int a, b, c, d;
clrscr();
cout<<"Masukan Nilai A : "; cin>>a;
cout<<"Masukan Nilai B : "; cin>>b;
c = a % b;
d = a * b;

cout<<"Hasil C = A % B adalah "<<c<<ends;


cout<<"Hasil D = A * B adalah "<<d<<ends;
getch();
}

c. dec, oct dan hex


Fungsi dec, oct dan hex merupakan suatu fungsi manipulator yang digunakan untuk
menampilkan data dalam bentuk desimal, oktal dan hexadesimal. File header yang harus
disertakan adalah file header iomanip.h .
contoh :

# include <stdio.h>
# include <conio.h>
# include <iostream.h>
# include <iomanip.h>

void main()
{
int nilai = 10;
clrscr();

cout<<"Nilai = "<<nilai<<endl;
cout<<"ke Octal = "<<oct<<nilai<<endl;
cout<<"ke Hexa = "<<hex<<nilai<<endl;
cout<<"ke Desimal = "<<dec<<nilai<<endl;

getch();
}

27
d. setprecision ()
Fungsi setprecision() merupakan suatu fungsi manipulator yang digunakan untuk mengatur
jumlah digit desimal yang ingin ditampilkan. Fungsi ini biasa pada fungsi cout(), file header
yang harus disertakan adalah file header iomanip.h .
Contoh :

# include <stdio.h>
# include <conio.h>
# include <iostream.h>
# include <iomanip.h>

void main()
{
float a, b, c;
a = 25.77;
b = 23.45;
clrscr();

c = a * b;

cout<<setiosflags(ios::fixed);
cout<<setprecision(1)<<c<<endl;
cout<<setprecision(2)<<c<<endl;
cout<<setprecision(3)<<c<<endl;
cout<<setprecision(4)<<c<<endl;

Perintah standar input yang disediakan oleh Borland C++, diantaranya adalah :
 cin()
 scanf()
 gets()
 cout()
 getch
 getche()

cin()
Fungsi cin() merupakan sebuah objeck didalam C++ digunakan untuk memasukkan suatu
data. Untuk menggunakan fungsi cin() ini, harus menyertakan file header iostream.h .
cin() digunakan untuk menangani standard input pada C++ dengan menambahkan
overloaded operator extraction (>> ) pada cin stream. Harus diikuti dengan variable yang akan
menyimpan data.
Contoh :

int age;
cin >> age;

28
Contoh diatas mendeklarasikan variabel age dengan tipe int dan menunggu input dari cin
(keyborad) untuk disimpan di variabel age.
cin akan memproses input dari keyboard sekali saja dan tombol ENTER harus ditekan.

contoh :

#include <iostream.h>
#include <conio.h>

int main ()
{
int i;
cout << "Please enter an integer value: ";
cin >> i;
cout << "The value you entered is " << i;
cout << " and its double is " << i*2 ;
cout << ".\n";
getch();
return 0;
}

Output :
Please enter an integer value: 702
The value you entered is 702 and its double is 1404.

cin juga dapat digunakan untuk lebih dari satu input :

cin >> a >> b;

Equivalen dengan :
cin >> a;
cin >> b;

Dalam hal ini data yang di input harus 2, satu untuk variabel a dan lainnya untuk variabel b
yang penulisannya dipisahkan dengan : spasi, tabular atau newline.

29
Contoh :

# include <conio.h>
# include <iostream.h>

main()
{
float a, b, c;

clrscr();
cout<<"Masukan Nilai A : ";
cin>>a;
cout<<"Masukan Nilai B : ";
cin>>b;

c = a + b;

cout<<"Masukan Nilai C : "<<c<<endl;


getch();
}

scanf()
Fungsi scanf() digunakan untuk memasukkan berbagai jenis data.

Bentuk Umum dari fungsi ini adalah :

scanf("penentu format", &nama-


variabel);

Keterangan :
simbol & merupakan pointer yang digunakan untuk menunjuk ke alamat variabel memori yang dituju.

Tabel 5.1. Penentu Format scanf()

Penentu Format Untuk


TIPE DATA
scanf()

Integer %d

Floating Point

Bentuk Desimal %e atau %f

30
Bentuk Berpangkat %e atau %f

Double Precision %lf

Character %c

String %s

Unsigned Integer %u

Long Integer %ld

Long Unsigned Integer %lu

Unsigned Hexadecimal Integer %x

Unsigned Octal Integer %o

Contoh :

# include <stdio.h>
# include <conio.h>
main()
{
int a, b, c = 0 ;
clrscr();
printf("Masukan Nilai A = ");
scanf("%d",&a);
printf("Masukan Nilai B = ");
scanf("%d",&b);

c = a + b;
printf("Hasil Penjumlahan = %d",c);
getch()
}

gets()
Fungsi gets() digunakan untuk memasukkan data string. Bentuk Umum dari fungsi ini
adalah :

gets(nama-variabel-array);

31
Perbedaan antara scanf() dengan gets() adalah :

scanf() gets()

Tidak dapat menerima string yang Dapat menerima string yang


mengandung spasi atau tab dan mengandung spasi atau tab dan
dianggap sebagai data terpisah masing dianggap sebagai satu
kesatuan data.

Contoh :

# include <stdio.h>
# include <conio.h>

main()
{
char nm1[20];
char nm2[20];

clrscr();

puts("Masukan nama ke - 1 = ");


gets(nm1);
printf("Masukan nama ke - 2 = ");
scanf("%s",&nm2);

printf("\n\n");
puts("Suka ketemu dg Anda ..");

puts(nm1);
printf("Suka ketemu dg Anda ..%s", nm1);
puts("Suka ketemu dg Anda ..");
puts(nm1);

printf("\n\n");

puts("Suka ketemu dg Anda ..");


puts(nm2);
printf("Suka ketemu dg Anda ..%s", nm2);
}

getch ()
Fungsi getch() (get character and echo) dipakai untuk membaca sebuah karakter dengan sifat
karakter yang dimasukkan tidak perlu diakhiri dengan menekan tombol ENTER, dan karakter
yang dimasukan tidak akan ditampilkan di layar. File header yang harus disertakan adalah
conio.h.

32
contoh :

# include <stdio.h>
# include <conio.h>

main()
{
char kar;
clrscr();

printf("Masukan Sebuah Karakter = ");


kar = getch();
printf("\nAnda Memasukan %c", kar);
getch();
}

getche()
Fungsi getche() dipakai untuk membaca sebuah karakter dengan sifat karakter yang
dimasukkan tidak perlu diakhiri dengan menekan tombol ENTER, dan karakter yang
dimasukan ditampilkan di layar. File header yang harus disertakan adalah conio.h.

contoh :

# include <stdio.h>
# include <conio.h>

main()
{
char kar;

clrscr();
printf("Masukan Sebuah Karakter = ");
kar = getche();
printf("\nAnda Memasukan %c", kar);
getch ();
}

Selain itu kedua fungsi ini dapat digunakan untuk menahan agar tidak langsung balik kembali
kedalam listing program dan hasil dari program yang di eksekusi dapat dilihat tanpa menekan
tombol ALT – F5. Karena fungsi getch() merupakan fungsi masukkan, jadi sebelum program
keluar harus menginputkan satu buah karakter.

33
Pelaksanaan Praktikum
1. Cobalah contoh-contoh program pada bab ini !

Latihan
1. Buatlah program untuk menghitung gaji karyawan, jika inputan datanya terdiri dari NIK,
nama karyawan, pendidikan, jenis kelamin, agama, tanggal lahir, pendidikan, gaji pokok,
tunjangan keluarga, tunjangan jabatan, tunjangan transport. Untuk total gaji ditampilkan
dengan perhitungan (gaji pokok + tunjangan keluarga + tunjangan jabatan + tunjangan
transport) !

34
Pertemuan 4

Pokok Bahasan
1. Operator Dasar C++

Tujuan Pembelajaran
1. Mahasiswa mengenal berbagai operator Dasar C++
2. Mahasiswa dapat menggunakan beberapa jenis operator dalam penyusunan program

Kompetensi Prasyarat
1. Mahasiswa telah mengenal dan dapat menggunakan tipe data dengan benar
2. Mahasiswa dapat menggunakan perintah masukan dan keluaran.

Instruksi Khusus
1. Mahasiswa menggunakan pemrograman C++ untuk membuat program dengan tahapan yang
benar.
2. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Operator-operator yang disediakan C++ berupa keyword atau karakter khusus. Operator
merupakan intruksi khusus yang dikenai untuk variable.

Operator Assignation (=)


Operator assignation digunakan untuk memberikan nilai ke suatu variable.

a = 25;

Memberikan nilai integer 25 ke variabel a. Sisi kiri dari operator disebut lvalue (left value) dan
sisi kanan disebut rvalue (right value). lvalue harus selalu berupa variabel dan sisi kanan dapat
berupa konstanta, variabel, hasil dari suatu operasi atau kombinasi dari semuanya.

Contoh :
int a, b; // a:? b:?
a = 10; // a:10 b:?
b = 4; // a:10 b:4

Hasil dari contoh diatas, a bernilai 10 dan b bernilai 4.

Contoh :
a = 2 + (b = 5);
35
equivalen dengan :
b = 5;
a = 2 + b;

contoh kode program :

// assignment operator

#include <iostream.h>
#include <conio.h>

int main ()
{
int a, b; // a:?, b:?
a = 10; // a:10, b:?
b = 4; // a:10, b:4
a = b; // a:4, b:4
b = 7; // a:4, b:7

cout << "a = " << a;


cout << endl;
cout << "b = " << b;

getch();
return 0;
}

Operator Arithmetic ( +, -, *, /, % )
Bahasa C++ mengenal beberapa operator aritmatik berikut ini :

Operator Fungsi

+ addition

- subtraction

* multiplication

/ division

% modulo

contoh :
NilaiAkhir = ( NilaiUTS + NilaiUAS ) / 2;

36
Operator Compound Assignation (+=, -=, *=, /=, %=, >>=, <<=, &=,
^=, |=)
Bahasa C++ mengenal beberapa operator Compound assignation berikut ini :

(+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

contoh penggunaan :
expressionis equivalent to

value += increase; value = value + increase;

a -= 5; a = a - 5;

a /= b; a = a / b;

price *= units + 1; price = price * (units + 1);

contoh program :

#include <iostream.h>
#include <conio.h>

int main ()
{
int a, b=3;
a = b;
a += 2; // equivalent to a=a+2
cout << a;

getch();
return 0;
}

Operator Increase (++) and decrease (--)


Operator increase (++) digunakan untuk penambahan dan decrease(--) digunakan untuk
pengurangan.

contoh nilai a ditambah 1 :

a++;
a+=1;
a=a+1;

37
contoh Nilai a dikurangi 1.

a--;
a-=1;
a=a-1;

contoh diatas adalah equivalen secara fungsional.

Operator Increase dan Decrease dapat digunakan sebagai prefix atau suffix. Dengan kata lain
dapat dituliskan sebelum identifier variabel (++a) atau sesudahnya (a++). operator increase
yang digunakan sebagai prefix (++a), Perbedaannya terlihat pada tabel dibawah ini :

contoh 1 contoh 2

B = 3; B = 3;

A = ++B; A = B++;

// A is 4, B is 4 // A is 3, B is 4

Pada contoh 1, B ditambahkan sebelum nilainya diberikan ke A. Sedangkan contoh 2, Nilai B


diberikan terlebih dahulu ke A dan B ditambahkan kemudian.

Operator Relational (==, !=, >, <, >=, <=)


Untuk mengevaluasi antara 2 ekspresi, dapat digunakan operator Relasional. Hasil dari
operator ini adalah nilai bool yaitu hanya berupa true atau false, atau dapat juga dalam nilai
int, 0 untuk mereprensentasikan "false" dan 1 untuk merepresentasikan "true".

Operator-operator relasional pada C++ :

Operator Fungsi

== Equal to

!= Not equal to

> Greater than

< Less than

>= Greater than or equal to

<= Less than or equal to

38
contoh :

(7 == 5) // evaluates to false.
(5 > 4) // evaluates to true.
(3 != 2) // evaluates to true.
(6 >= 6) // evaluates to true.
(5 < 5) // evaluates to false.

contoh, misalkan a=2, b=3 dan c=6 :


operasi keterangan

(a == 5) would return false.

(a*b >= c) would return true since (2*3 >= 6) is it.

(b+4 > a*c) would return false since (3+4 > 2*6) is it.

((b=2) == a) would return true.

contoh program :

#include <iostream.h>
#include <conio.h>

int main ()
{
int a = 2, b=3, c =6;

cout << (a == 5) << endl;

cout << (a*b >= c) << endl;

cout << (b+4 > a*c) << endl;

cout << ((b=2) == a) << endl;

getch();
return 0;
}

39
Operator Logika ( !, &&, || )
Operator ! equivalen dengan operasi boolean NOT, hanya mempunyai 1 operand, berguna untuk
membalikkan nilai dari operand yang bersangkutan. Contoh :

!(5 == 5) // evaluates to false because the


expression at its right (5 ==
5) is true.
!(6 <= 4) // evaluates to true because (6
<= 4) would be false.
!true // evaluates to false
!false // evaluates to true.

operator Logika && dan || digunakan untuk mengevaluasi 2 ekspresi dan menghasilkan 1 nilai akhir.
mempunyai arti yang sama dengan operator logika Boolean AND dan OR.

First Second result result

Operand Operand
a && b a || b
a b

TRUE TRUE TRUE TRUE

TRUE FALSE FALSE TRUE

FALSE TRUE FALSE TRUE

FALSE FALSE FALSE FALSE

contoh :

// evaluates to false ( true && false ).


( (5 == 5) && (3 > 6) )

// evaluates to true ( true || false ).


( (5 == 5) || (3 > 6) )

Operator Conditional ( ? )
Operator kondisional mengevaluasi ekspresi dan memberikan hasil tergantung dari hasil
evaluasi (true atau false). Sintaks :

condition ? result1 : result2

40
Jika kondisi true maka akan menghasilkan result1, jika tidak akan menghasilkan result2.
contoh :

7==5 ? 4 : 3 // returns 3, since 7 is not equal to 5.


7==5+2 ? 4 : 3 // returns 4, since 7 is equal to 5+2.
5>3 ? a : b // returns the value of a, since 5 is
greater than 3.
a>b ? a : b // returns whichever is greater, a or b.

contoh program :

#include <iostream.h>
#include <conio.h>

int main ()
{
int a,b,c;

a=2;
b=7;
c = (a > b) ? a : b;

cout << c;
getch();
return 0;
}

Operator Bitwise (&, |, ^, ~, <<, >> )


Operator Bitwise memodifikasi variabel menurut bit yang merepresentasikan nilai yang disimpan,
atau dengan kata lain dalam representasi binary.

asm
description
operator equivalent

& AND Bitwise AND

| OR Bitwise Inclusive OR

^ XOR Bitwise Exclusive OR

~ NOT Unary complement (bit inversion)

<< SHL Shift Left

>> SHR Shift Right

41
Explicit type casting operators
Type casting operators memungkinkan untuk mengkonversikan tipe data yang sudah diberikan
ke tipe data yang lain. Ada beberapa cara yang dapat dilakukan dalam C++, yang paling popular
yaitu tipe baru dituliskan dalam tanda kurung ().

contoh :

int i;
float f = 3.14;
i = (int) f;

Contoh diatas, mengkonversikan nilai 3.14 menjadi nilai integer (3). Type casting operator
yang digunakan (int).

cara lainnya :

int i;
float f = 3.14;
i = int ( f );

Prioritas pada operator


Operator dalam suatu notasi akan diproses sesuai dengan urutan derajat dari masing-masing
operator.
contoh : a = 5 + 7 % 2

Jawaban dari contoh diatas adalah 6.

Dibawah ini adalah prioritas operator dari tinggi ke rendah :


Level Operator Description Grouping

1 :: scope Left-to-right

2 () [] . -> ++ -- postfix Left-to-right

3 ++ -- ~ ! unary (prefix) Right-to-left

*& pointer

+- unary sign operator

4 (type) type casting Right-to-left

5 .* ->* pointer-to-member Left-to-right

42
6 */% multiplicative Left-to-right

7 +- additive Left-to-right

8 << >> shift Left-to-right

9 < > <= >= relational Left-to-right

10 == != equality Left-to-right

11 & bitwise AND Left-to-right

12 ^ bitwise XOR Left-to-right

13 | bitwise OR Left-to-right

14 && logical AND Left-to-right

15 || logical OR Left-to-right

16 ?: conditional Right-to-left

= *= /= %= += -=
17 assignment Right-to-left
>>= <<= &= ^= |=

18 , comma Left-to-right

contoh program :

#include <iostream.h>
#include <conio.h>

int main ()
{
int a = 5, b = 6, c = 7, d = 10;
int hasil1, hasil2;
float hasil3, hasil4, hasil5;

hasil1 = a + b * c;
hasil2 = a + b * c - d;
hasil3 = a / b + c * d;
hasil4 = ( a + b ) / c * d;
hasil5 = a * b / c + d;

cout << hasil1 << "\t";


cout << hasil2 << "\t";
cout << hasil3 << "\t";
cout << hasil4 << "\t";
cout << hasil5 << "\t";

getch();
return 0;
}

43
Pelaksanaan Praktikum
1. Cobalah contoh program pada bab ini !
2. Buatlah program untuk menghitung luas segitiga !

Latihan
1. Buatlah program berikut ini !

#include <iostream.h>
#include <conio.h>

void main ()
{
int sewa;
int jarak, hargabbm;
int tempuhlt, total;
float butuhbbm;

cout << "Perhitungan Biaya Perjalanan \n";


cout << "====================================== \n";
cout << "1. Harga sewa per hari : "; cin >> sewa;
cout << "2. Jarak Tujuan : "; cin >> jarak;
cout << "3. Harga bbm perliter : "; cin >> hargabbm;
cout << "4. Konsumsi BBM per liter : "; cin >> tempuhlt;
//lakukan perhitungan...............................
butuhbbm = jarak / tempuhlt;
total = sewa + int(butuhbbm) * hargabbm;
cout << " BBM dibutuhkan : " << butuhbbm << endl;
cout << "====================================== \n";
cout << "Perkiraan Total Biaya : " << total << endl;
getch();
}

Output Program yang dihasilkan :

44
Pertemuan 5

Pokok Bahasan
1. Struktur Program Sederhana
2. Struktur Program Pilihan

Tujuan Pembelajaran
1. Mahasiswa mengenal struktur program sederhana / struktur urut.
2. Mahasiswa dapat membuat program dimana didalamnya terdapat struktur pilihan.

Kompetensi Prasyarat
1. Mahasiswa telah mempraktekkan bab-bab sebelumnya.
2. Mahasiswa dapat menguasai tipe data, variable, operator, perintah input dan output.

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Pernyataan Percabangan digunakan untuk memecahkan persoalan untuk mengambil suatu
keputusan diantara sekian pernyataan yang ada. Untuk keperluan pengambilan keputusan,
Borland C++ menyediakan beberapa perintah antara lain.
Pernyataan IF
Pernyataan if mempunyai pengertian, “ Jika kondisi bernilai benar, maka perintah akan
dikerjakan dan jika tidak memenuhi syarat maka akan diabaikan”. Dari pengertian tersebut
dapat dilihat dari diagram alir berikut:

salah
kondisi

benar
perintah

Gambar 6.1. Diagram Alir IF

45
Bentuk umum dari pernyataan if adalah sebagai berikut :

if (kondisi)
pernyataan;

Penulisan kondisi harus didalam tanda kurung dan berupa ekspresi relasi dan penulisan
pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan
kosong. Jika pemakaian if diikuti dengan pernyataan majemuk, bentuk penulisannya sebagai
berikut :

if (kondisi)
{
pernyataan;
……
}

Contoh :

Menentukan besarnya potongan dari pembelian barang yang diberikan seorang pembeli,
dengan kriteria :

 Tidak ada potongan jika total pembelian kurang dari Rp. 50.000,-
 Jika total pembelian lebih dari atau sama dengan Rp. 50.000,- potongan yang diterima
sebesar 20% dari total pembelian.

Contoh : Program IF -

#include<conio.h>
#include<iostream.h>

main()
{
double tot_beli, potongan=0, jum_bayar=0;
clrscr();

cout<<"Total Pembelian Rp. ";


cin>>tot_beli;

46
if (tot_beli >= 50000)
potongan = 0.2 * tot_beli;

cout>>" Potongan Rp. " <<potongan<<endl;

jum_bayar = tot_beli - potongan;

cout>>"Jumlah harus dibayar Rp. ",jum_bayar;

getch();
}

contoh :
Buatlah sebuah program menuliskan teks “Semarang Kota Atlas” jika diinput sebuah bilangan
ganjil.

Kode Program :

#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
int x;
printf("Masukkan sebuah bilangan = ");
scanf("%d",&x);
if(x%2 != 0)
{
printf("Semarang Kota Atlas");
}

getch();
return 0;
}

47
Pernyataan IF - ELSE
Pernyataan if mempunyai pengertian, “ Jika kondisi bernilai benar, maka perintah-1 akan
dikerjakan dan jika tidak memenuhi syarat maka akan mengerjakan perintah-2”. Dari
pengertian tersebut dapat dilihat dari diagram alir berikut :

salah
kondisi

benar

Perintah-1 Perintah-2

Gambar 6.2. Diagram Alir if-else

Bentuk umum dari pernyataan if

if (kondisi)
perintah-1;
else
perintah-2;

Perintah-1 dan perintah-2 dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau
pernyataan kosong. Jika pemakaian if-else diikuti dengan pernyataan majemuk, bentuk
penulisannya sebagai berikut :

Bentuk umum dari pernyataan if dengan banyak perintah

48
if (kondisi)
{
perintah1;
...
}
else
{
perintah2;
...
}

Contoh
Menentukan besarnya potongan dari pembelian barang yang diberikan seorang pembeli,
dengan kriteria :
 jika total pembelian kurang dari Rp. 50.000,- potongan yang diterima sebesar 5% dari total
pembelian.
 Jika total pembelian lebih dari atau sama dengan Rp. 50.000,- potongan yang diterima
sebesar 20% dari total pembelian.

Contoh : Program IF-Else

#include<conio.h>
#include<iostream.h>

main()
{
double tot_beli, potongan=0, jum_bayar=0;
clrscr();

cout<<"Total Pembelian Rp. ";


cin>>tot_beli;

if (tot_beli >= 50000)


potongan = 0.2 * tot_beli;
else
potongan = 0.05 * tot_beli;

cout>>" Potongan Rp. "<<potongan<<endl;

jum_bayar = tot_beli - potongan;

cout>>"Jumlah harus bayar Rp. ",jum_bayar;

getch();
}

49
Pernyataan NESTED IF
Nested if merupakan pernyataan if berada didalam pernyataan if yang lainnya.
Bentuk penulisan pernyataan Nested if adalah :

if(syarat)
if(syarat)
… perintah;
else
… perintah;
else
if(syarat)
… perintah;
else
… perintah;

Contoh :
Suatu perusahaan memberikan komisi kepada para selesman dengan ketentuan sebagai berikut:
 Bila salesman dapat menjual barang hingga Rp. 200.000 ,- , akan diberikan uang jasa sebesar
Rp. 10.000 ditambah dengan uang komisi Rp. 10% dari pendapatan yang diperoleh hari itu.
 Bila salesman dapat menjual barang diatas Rp. 200.000 ,- , akan diberikan uang jasa sebesar
Rp. 20.000 ditambah dengan uang komisi Rp. 15% dari pendapatan yang diperoleh hari itu.
 Bila salesman dapat menjual barang diatas Rp. 500.000 ,- , akan diberikan uang jasa sebesar
Rp. 30.000 ditambah dengan uang komisi Rp. 20% dari pendapatan yang diperoleh hari itu.

Contoh : Program Nested-If

#include<conio.h>
#include<iostream.h>

main() {
float pendptan, jasa=0, komisi=0, total=0;
clrscr();

cout>>"Pendapatan Hari ini Rp. ";


cin<pendptan;

if ((pendptan >=0) && (pendptan <= 200000))


{
jasa=10000;
komisi=0.1*pendptan;
}
else
{
if(pendptan<=500000)
{
jasa=20000;
komisi=0.15*pendptan;
}

50
else
{
jasa=30000;
komisi=0.2*pendptan;
}
}
total = komisi + jasa;
cout<<"Uang Jasa Rp. "<<jasa<<endl;
cout<<"Uang Komisi Rp. "<<komisi<<endl;
cout<<"==========================="<<endl;
cout<<"Hasil Total Rp. "<<total<<endl;

getch();
}

Pernyataan IF – ELSE Majemuk


Bentuk dari if-else bertingkat sebenarnya serupa dengan nested if, keuntungan penggunanan if-else
bertingkat dibanding dengan nested if adalah penggunaan bentuk penulisan yang lebih sederhana.

Bentuk Penulisannya

if (syarat)
{
… perintah;
… perintah;
}
else if (syarat)
{
… perintah;
… perintah;
}
else
{
… perintah;
… perintah;
}

Contoh :
Suatu perusahaan memberikan komisi kepada para selesman dengan ketentuan sebagai berikut:
 Bila salesman dapat menjual barang hingga Rp. 200.000 ,- , akan diberikan uang jasa sebesar
Rp. 10.000 ditambah dengan uang komisi Rp. 10% dari pendapatan yang diperoleh hari itu.
 Bila salesman dapat menjual barang diatas Rp. 200.000 ,- , akan diberikan uang jasa sebesar
Rp. 20.000 ditambah dengan uang komisi Rp. 15% dari pendapatan yang diperoleh hari itu.
 Bila salesman dapat menjual barang diatas Rp. 500.000 ,- , akan diberikan uang jasa sebesar
Rp. 30.000 ditambah dengan uang komisi Rp. 20% dari pendapatan yang diperoleh hari itu.

51
contoh : Program IF-Else-IF

#include<conio.h>
#include<iostream.h>

main()
{
switch
float(ekspresi
pendptan,integer
jasa=0,atau karakter
komisi=0, )
total=0;
{ clrscr();
case konstanta-1 : //perintah;
cout>>"Pendapatan Rp.//perintah;
";cin<pendptan;
if (pendptan >= 0 && break;
pendptan <= 200000)
{case konstanta-2 : //perintah;
jasa=10000; //perintah;
break;
komisi=0.1*pendptan;
} ……
……
else if(pendptan<=500000)
{default :
jasa=20000; //perintah;
//perintah;
komisi=0.15*pendptan;
} }
else
{
jasa=30000;
komisi=0.2*pendptan;
}

/* menghitung total */
total = komisi + jasa;

cout<<"Uang Jasa Rp. "<<jasa<<endl;


cout<<"Uang Komisi Rp. "<<komisi<<endl;
cout<<"==========================="<<endl;
cout<<"Hasil Total Rp. "<<total<<endl;

getch();
}

Pernyataan switch - case


Bentuk dari switch - case merupakan pernyataan yang dirancangan khusus untuk menangani
pengambilan keputusan yang melibatkan sejumlah atau banyak alternatif penyelesaian.
Pernyataan switch - case ini memiliki kegunaan sama seperti if – else bertingkat, tetapi
penggunaannya untuk memeriksa data yang bertipe karakter atau integer.
Bentuk penulisan perintah ini sebagai berikut :

52
switch (ekspresi integer atau karakter )
{
case konstanta-1 : perintah;
perintah;
break;
case konstanta-2 : perintah;
perintah;
break;
……
……
default :
perintah;
perintah;
}

Setiap cabang akan dijalankan jika syarat nilai konstanta tersebut dipenuhi dan default akan
dijalankan jika semua cabang diatasnya tidak terpenuhi.
Pernyataan break menunjukan bahwa perintah siap keluar dari switch. Jika pernyataan ini
tidak ada, maka program akan diteruskan ke cabang – cabang yang lainnya.

contoh : Program Switch ... Case

#include<conio.h>
#include<iostream.h>

main()
{
char kode;
clrscr();
cout<<"Masukkan Kode Barang [A..C] : ";
cin>>kode;

switch(kode)
{
case 'A' :
cout<<"Alat Olah Raga";
break;
case 'B' :
cout<<"Alat Elelktronik";
break;
case 'C' :
cout<<"Alat Masak";
break;
default:
cout<<" Salah Memasukan kode";
break;
}
getch();
}

53
contoh Program Switch ... Case

#include<conio.h>
#include<iostream.h>

main()
{
char kode;
clrscr();
cout<<"Masukkan Kode Barang [A..C] : ";
cin>>kode;

switch(kode)
{
case 'A' :
case 'a' :
cout<<"Alat Olah Raga";
break;
case 'B' :
case 'b' :
cout<<"Alat Elelktronik";
break;
case 'C' :
case 'c' :
cout<<"Alat Masak";
break;
default:
cout<<"Anda Salah Memasukan kode";
break;
}
getch();
}

Pelaksanaan Praktikum
1. Buatlah program inputan nilai angka yang selanjutnya dikonversikan ke nilai huruf dengan
ketentuan sebagai berikut :

Nilai Angka Nilai Huruf


85 s/d 100 A
70 s/d <85 B
60 s/d <70 C
45 s/d <60 D
0 s/d <45 E

2. Buatlah program untuk menentukan kelulusan seleksi pegawai, jika dilakukan dua ujian.
Syarat lulus adalah sebagai berikut :
a. Kedua nilai ujian minimal 85, atau
b. Salah satu nilai ujian minimal 80 dan rata-ratanya minimal 90.

54
Tugas Praktikum

1. Buatlah program untuk menghitung tunjangan anak, jika berlaku bahwa tunjangan anak
berikan kepada maksimal 3 orang anak masing-masing Rp 50.000,- .

2. Buatlah program untuk menghitung besarnya diskon jika berlaku ketentuan berdasarkan
pembelian sebagai berikut :
Pembelian > 100000, maka diskon = 20% * pembelian
50000 s/d <100000, maka diskon = 15% * pembelian
20000 s/d <50000, maka diskon = 10% * pembelian

55
56
Pertemuan 6

Pokok Bahasan
1. Struktur Program Berulang

Tujuan Pembelajaran
1. Mahasiswa mengenal struktur program perulangan
2. Mahasiswa dapat membuat program dengan menggunakan perintah perulangan

Kompetensi Prasyarat
1. Mahasiswa telah mempelajari perintah seleksi/kondisi
2. Mahasiswa dapat menggunakan operator relasi dengan benar.

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Loops merupakan perulangan statement dengan jumlah tertentu jika kondisi terpenuhi. Operasi
perulangan selalu dijumpai didalam bahasa pemrograman.

Pernyataan while
Bentuk perulangan while dikendalikan oleh syarat tertentu, yaitu perulangan akan terus
dilaksanakan selama syarat tersebut terpenuhi.

Bentuk umum perulangan while, sebagai berikut :

while (expression) statement;

57
Bentuk umum perulangan while, dengan lebih dari satu perintah / pernyataan, sebagai berikut :

while (expression)
{
statement1;
statement2;
……
statementn;
}

contoh :

#include <iostream.h>
#include <conio.h>
main()
{
int bil = 1;
clrscr();
while(bil <= 10)
{
cout << bil << endl;
++bil;
}
getch();
}

contoh :

#include <iostream.h>
#include <conio.h>
main()
{
int bil = 2;
clrscr();
while(bil <= 10)
{
cout << bil << endl;
bil+=2;
}
getch();
}

58
7.2 Pernyataan do - while
Pernyataan perulangan do - while merupakan bentuk perulangan yang melaksanakan
perulangan terlebih dahulu dan pengujian perulangan dilakukan dibelakang.

Bentuk umum perulangan do - while, sebagai berikut :

do statement while (condition);

Bentuk umum perulangan do - while, dengan lebih dari satu perintah / pernyataan, sebagai
berikut :

do
{
statement1;
statement2;
…..
statementn;

} while (condition);

Secara fungsional, hampir sama dengan while loop, hanya saja condition dalam do-while
dievaluasi setelah eksekusi statement , dengan kata lain, sedikitnya satu kali eksekusi
statement walaupun kondisi tidak terpenuhi.
contoh :

#include <iostream.h>
#include <conio.h>

main()
{
int bil = 2;
clrscr();

do
{
cout << bil << endl;
bil += 2;
} while (bil <= 10);

getch();
}

59
7.3 Pernyataan for
Perulangan yang pertama adalah for. Bentuk umum pernyataan for sebagai berikut :

for ( initialization; condition; increase )


statement;

Fungsinya akan mengulang statement jika condition bernilai benar. Sama seperti while loop.,
hanya saja for memungkinkan untuk memberikan instruksi initialization dan intruksi increase,
sehingga dapat menampilkan loop dengan counter.

Algoritma perulangan for :


1. initialization, digunakan untuk memberikan nilai awal untuk variable counter. Dieksekusi
hanya sekali.
2. condition, Dievaluasi, jika bernilai true maka loop berlanjut, sebaliknya loop berhenti dan
statement diabaikan
3. statement, dieksekusi, bisa berupa instruksi tunggal maupun blok instruksi (dalam tanda { }
).
4. increase, dieksekusi kemudian algoritma kembali ke step 2.

Bila pernyataan di dalam for lebih dari satu maka pernyataan-pernyataan tersebut harus
diletakan di dalam tanda kurung.

for ( initialization; condition; increase )


{
statement1;
statement2;
…..
statementn;
}

Contoh :
Sebagai contoh program untuk mencetak bilangan dari 1 hingga 10 secara menaik, secara
menurun dan menampilkan bilangan ganjil, sebagai berikut:

60
contoh :

#include<conio.h>
#include<iostream.h>

main()
{
int a;
clrscr();
for(a = 1; a <= 10; ++a)
cout>>a;

getch();
}

contoh :

# include <stdio.h>
# include <conio.h>
#include<iostream.h>

main()
{
int a;
clrscr();
for(a = 10; a >= 1; --a)
cout>>a;

getch();
}

contoh :

#include <stdio.h>
#include <conio.h>
#include<iostream.h>

main()
{
int a;
clrscr();
for(a = 1; a <= 10; a+=2)
cout>>a;

getch();
}

61
contoh :

#include<stdio.h>
#include<conio.h>
main()
{
int a=2, b=1, c=2, d=1, e;
clrscr();
for(e=1; 17>e; e++)
{
gotoxy(e, e); textcolor(e);
cprintf("\nwarna ke-%d",e);
}
textcolor(4+BLINK); cprintf("Borland C++");
getche();
}

contoh :

#include<stdio.h>
#include<conio.h>
int main(void)
{
int i;

clrscr();
for (i=0; i<20; i++)
{
textattr(i + ((i+1) << 4));
cprintf("Borland C++\r\n");
}
getch();
return 0;
}

62
Pernyataan nested - for
Pernyataaan Nested for adalah suatu perulangan for didalam perulangan for yang lainnya.
Bentuk umum pernyataan Nested for sebagai berikut :

for (initialization_a; condition_a; increase_a)


{
for ( initialization; condition; increase )
{
statement1;
statementn;
}
}

Didalam penggunaan nested-for, perulangan yang didalam terlebih dahulu dihitung hingga
selesai, kemudian perulangan yang diluar diselesaikan.

#include<stdio.h>
#include<conio.h>
main()
{
int a, b;
clrscr();
for(a = 1; a <= 5; a++)
{
printf("\n");
for(b = a; b <= 5; b++)
printf(" %d ",a);
}
getch();
}

Perulangan Tidak Berhingga


Perulangan tak berhingga merupakan perulangan ( loop ) yang tak pernah berhenti atau
mengulang terus, hal ini sering terjadi disebabkan adanya kesalahan penanganan kondisi yang
dipakai untuk keluar dari loop.

#include<stdio.h>
#include<conio.h>
main()
{
int bil;
clrscr();
for (bil = 60; bil >=10; bil++)
printf("%d", bil);

getch();
}

63
Pada pernyataan ini tidak akan berhenti untuk menampilkan bilangan menurun, kesalahan
terjadi pada pengubah nilai pencacah, seharusnya penulisan yang benar berupa

bil –

Akan tetapi yang ditulis adalah :

bil ++

Oleh karena kondisi bil >= 1 selalu bernilai benar ( karena bil bernilai 6), maka pernyataan akan
terus dijalankan.

printf("%d", bil);

Jika terjadi hal semacam ini, untuk menghentikan proses yang terus menerus semacam ini
denan menekan tombol CTRL – PAUSE atau CTRL – BREAK.

Pernyataan goto
Pernyataan goto merupakan instruksi untuk mengarahkan eksekusi program ke-pernyataan
yang diawali dengan suatu label. Label merupakan suatu pengenal (identifier) yang diikuti
dengan tanda titik dua ( : ).
Bentuk pemakaian goto sebagai berikut :
goto label;

Contoh Penggunaan goto, dapat dilihat pada program berikut :

#include<iostream.h>
#include<stdio.h>
#include<conio.h>

main()
{
int a, b;
char lagi;
atas:
clrscr();
cout>>"Masukkan Bilangan = "; cin<<a;
b = a % 2;
printf("Nilai %d %% 2 adalah = %d",a, b);
printf("\n\nIngin Hitung Lagi [Y/T] : ");
lagi = getche() ;

if (lagi == 'Y' || lagi == 'y')


goto atas;
getch();
}

64
Pernyataan break
Pernyataan break telah dibahas pada pernyataan pengambilan keputusan switch. Pernyataan
break ini berfungsi untuk keluar dari struktur switch. Selain itu pernyataan break berfungsi
keluar dari perulangan ( for, while dan do-while ). Jika pernyataan break dikerjakan, maka
eksekusi akan dilanjutkan ke pernyataan yang terletak sesudah akhir dari badan perulangan (
loop ).

#include <iostream.h>
#include <conio.h>
main()
{
int bil = 1;
clrscr();

do
{
if (bil >= 6)
break;
cout << bil << endl;
} while( bil++ );

getch();
}

Contoh :

#include <stdio.h>
#include <conio.h>

main()
{
int a=3, b=2, c=1, bil;
clrscr();
printf("Bil-A | Bil-B | Bil-C\n");
printf("-------------------------");
for(bil=1; bil<=10; ++bil)
{
a+=b; b+=c; c+=2;
printf("\n%d \t| %d \t| %d",a, b, c);
if(c==13)
break;
}
getche();
}

65
Pernyataan continue
Pernyataan continue digunakan untuk mengarahkan eksekusi ke iterasi (proses) berikutnya
pada loop yang sama, dengan kata lain mengembalikan proses yang sedang dilaksanakan ke-
awal loop lagi, tanpa menjalankan sisa perintah dalam loop tersebut.

Contoh :

#include <iostream.h>
#include <conio.h>

main()
{
int bil;
clrscr();

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


{
if (bil == 6)
continue;

cout << bil << endl;


}
getch();
}

Pelaksanaan Praktikum
1. Cobalah contoh program yang ada pada bab ini

Latihan
1. Buatlah program untuk mencetak urutan bilangan genap dari 0 sampai dengan 100 secara
ascending dengan menggunakan perintah perulangan while.

2. Buatlah program untuk mencetak urutan bilangan ganjil dari 1 sampai dengan 99 secara
ascending dengan menggunakan perintah perulangan do...while.

66
Pertemuan 7

Pokok Bahasan
1. Array

Tujuan Pembelajaran
1. Mahasiswa mengenal tipe data Array
2. Mahasiswa dapat menggunakan Array

Kompetensi Prasyarat
1. Mahasiswa telah mengenal identifier
2. Mahasiswa telah menguasai perintah input dan perintah perulangan

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Variabel Larik atau lebih dikenal dengan ARRAY adalah adalah Tipe terstruktur yang terdiri
dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Suatu Array mempunyai
jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu larik ditunjukan
oleh suatu indek untuk membedakan elemen yang satu dengan elemen yang lainnya.

Seperti penggunaan variable pada umumnya, array harus dideklarasikan terlebih dahulu,
dengan format sbb :

type name [elements];

Keterangan :
 type : Untuk menyatakan type data yang digunakan.
 Name : untuk menyatakan nama variabel array.
 elements : Untuk menyatakan jumlah elemen array.

contoh array diatas dideklarasikan sebagai berikut :

int billy [5];

67
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 (diluar semua fungsi) maka isi dari array akan di-iniisialisasikan sebagai o :

int billy [5];

maka setiap elemen array billy akan di-inisialisasikan sebagai 0 :

Atau dideklarasikan dengan memberikan nilai array yang dituliskan dalam kurung kurawal :

int billy [5] = { 16, 2, 77, 40, 12071 };

Maka elemen array billy akan berisi :

Access to the values of an Array.


Nilai array dapat diakses secara individual, dengan format :

name[ index ]

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

Misalkan akan disimpan nilai 75 pada elemen ketiga, maka intruksinya :

billy[2] = 75;

Dan jika nilai elemen ketiga tadi akan diberikan ke variable a, maka dapat dituliskan:

a = billy[2];

68
contoh :

#include <iostream.h>
#include <conio.h>
int billy [] = {16, 2, 77, 40, 12071};
int n, result=0;

int main ()
{
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
cout << result;
getch();
return 0;
}

contoh program :

#include<conio.h>
#include<iostream.h>
#include<iomanip.h>

main() {
int i;
char nama[5][20];
float nilai1[5];
float nilai2[5];
float hasil[5];

clrscr();
for(i=1;i<=2;i++)
{
cout<<"Data Ke - "<<i<<endl;
cout<<"Nama Siswa : "; gets(nama[i]);
cout<<"Nilai Teori : "; cin>>nilai1[i];
cout<<"Nilai Praktek : "; cin>>nilai2[i];
hasil[i] =
(nilai1[i] * 0.40)+ (nilai2[i] * 0.60);
cout<<endl;
}

cout<<"=================================="<<endl;
cout<<"No. Nama Nilai Nilai Hasil"<<endl;
cout<<" Mid Tes FInal Ujian"<<endl;
cout<<"========================================";
cout<<endl;

for(i=1;i<=2;i++)
{
cout<<setiosflags(ios::left)<<setw(4)<<i;
cout<<setiosflags(ios::left)
<<setw(20)<<nama[i];
69
cout<<setprecision(2)<<" "<<nilai1[i];
cout<<setprecision(2)<<" "<<nilai2[i];
cout<<setprecision(2)<<" "<<hasil[i];
cout<<endl;
}
cout<<"========================================";
getch();
}

Array Multidimensi
Array Multidimensi dapat dikatakan sebagai array dari array. Contoh dibawah ini adalah array
berdimensi 2 :

Maka pendeklarasiannya :

int jimmy [3][5];

contoh :

#include <iostream.h>
#include <conio.h>

#define WIDTH 5
#define HEIGHT 3

int jimmy [HEIGHT][WIDTH];


int n,m;

int main ()
{
for (n=0;n<HEIGHT;n++)

for (m=0;m<WIDTH;m++)
{
jimmy[n][m]=(n+1)*(m+1);
}

getch();
return 0;
}

70
Program diatas tidak akan menghasilkan tampilan, tetapi akan menyimpan nilai dalam memory
seperti dibawah ini :

Penggunaan konstanta defined (#define) untuk mempermudah jika akan melakukan


perubahan.

Contoh :

#include<conio.h>
#include<iostream.h>
#include<stdio.h>
#include<iomanip.h>

void main() {
int i, j;
int data_jual[4][4];
clrscr();

for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
{
cout<<"Data Ke - "<<i<<" "<<j<<endl;
cout<<"Jumlah Penjulan : ";
cin>>data_jual[i][j];
}
}

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


cout<<"-----------------------"<<endl;
cout<<"NO 2008 2009 2010"<<endl;
cout<<"-----------------------"<<endl;

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

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

getch();
}
71
Array sebagai parameter
Adakalanya array diberikan ke dalam fungsi sebagai parameter. Dalam C++ tidak
memungkinkan untuk pass by value satu blok memory sebagai parameter kedalam suatu
fungsi. Untuk menggunakan array sebagai parameter maka yang harus dilakukan saat
pendeklarasian fungsi adalah spesifikasi tipe array pada argumen, Contoh :

void procedure (int arg[])

Contoh :

#include <iostream.h>
#include <conio.h>

void printarray (int arg[], int length) {


for (int n=0; n<length; n++)
cout << arg[n] << " ";
cout << "\n";
}

int main ()
{
int firstarray[] = {5, 10, 15};
int secondarray[] = {2, 4, 6, 8, 10};
printarray (firstarray,3);
printarray (secondarray,5);
getch()
return 0;
}

Dari contoh diatas, instruksi (int arg[]) menjelaskan bahwa semua array bertipe int, berapapun
panjangnya. oleh sebab itu dideklarasikan parameter kedua dengan sifat yang sama seperti
parameter pertama.

Pelaksanaan Praktikum
1. Praktekkan contoh-contoh program yang ada pada bab ini !

Latihan
1. Apa perbedaan dari ekspresi a45 dan a[45] ?
2. Tuliskan kesalahan dari bagian program berikut :
nt A[10], i;
for ( i = 1; j <= 10; i++)
cin >> A[i];

72
Pertemuan 8

Pokok Bahasan
1. Data Struktur (Struct)

Tujuan Pembelajaran
1. Mahasiswa mengenal bentuk pendefinisan record data dalam C++
2. Mahasiswa dapat menggunakan perintah struct untuk mendefinisikan record dalam
penyusunan program

Kompetensi Prasyarat
1. Mahasiswa telah mengenal tipe data array
2. Mahasiswa telah mengasai perintah input, output, dan perulangan.

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Struktur data merupakan kumpulan berbagai tipe data yang memiliki ukuran yang berbeda di
kelompokkan dalam satu deklarasi unik, dengan format sebagai berikut :

struct model_name {
type1 element1;
type2 element2;
type3 element3;
.
.
} object_name;

Keterangan :
 model_name adalah nama untuk model tipe stukturnya
 parameter optional object_name merupakan identifier yang valid untuk objek sturktur.
 kurung kurawal { } berupa tipe dan sub-identifier yang mengacu ke elemen pembentuk
struktur.
Jika pendefinisian stuktur menyertakan parameter object_name (optional), maka parameter
tersebut akan menjadi nama tipe yang valid ekuivalen dengan struktur.

73
Contoh :

struct products {
char name [30];
float price;
} ;

products apple;
products orange, melon;

Didefinisikan model struktur products dengan dua field : name dan price, dengan tipe yang
berbeda. Kemudian tipe struktur tadi (products) digunakan untuk mendeklarasikan tiga objek :
apple, orange dan melon.

Ketika dideklarasikan, products menjadi tnama tipe yang valid seperti tipe dasar int, char atau
short dan dapat mendeklarasikan objects (variables) dari tipe tersebut. Optional field yaitu
object_name dapat dituliskan pada akhir deklarasi struktur untuk secara langsung
mendeklarasikan object dari tipe struktur.
contoh :

struct products {
char name [30];
float price;
} apple, orange, melon;

Sangat penting untuk membedakan antara structure model, dan structure object. model adalah
type, dan object adalah variable. Kita dapat membuat banyak objects (variables) dari satu
model (type).
Contoh :

#include <iostream.h>
#include <string.h>
#include <sstream.h>

struct movies_t {
string title;
int year;
} mine, yours;

void printmovie (movies_t movie);

74
int main ()
{
string mystr;
mine.title = "2001 A Space Odyssey";
mine.year = 1968;

cout << "Enter title: ";


getline (cin,yours.title);
cout << "Enter year: ";
getline (cin,mystr);
stringstream(mystr) >> yours.year;

cout << "My favorite movie is:\n ";


printmovie (mine);
cout << "And yours is:\n ";
printmovie (yours);
return 0;
}

void printmovie (movies_t movie)


{
cout << movie.title;
cout << " (" << movie.year << ")\n";
}

Contoh di atas menjelaskan bagaimana menggunakan elemen dari struktur dan struktur itu
sendiri sebagai variable normal. Contoh, yours.year merupakan variable valid dengan tipe int,
dan mine.title merupakan array valid dari 50 chars.

Perhatikan mine dan yours juga berlaku sebagai valid variable dari tipe movies_t ketika di-pass
ke-function printmovie(). Salah satu keuntungan dari structures yaitu kita dapat mengacu pada
setiap elemennya atau keseluruhan blok struktur.

75
contoh program :

#include<conio.h>
#include<iostream.h>
main()
{
struct
{
char nim[5];
char nama[15];
float nilai;
} mahasiswa;

clrscr();
cout<<"masukan NIM = "; cin>>mahasiswa.nim;
cout<<"masukan Nama = "; cin>>mahasiswa.nama;
cout<<"masukan Nilai = "; cin>>mahasiswa.nilai;

clrscr();

cout<<"NIM = " << mahasiswa.nim <<endl;


cout<<"Nama = " << mahasiswa.nama <<endl;
cout<<"Nilai = " << mahasiswa.nilai <<endl;

getch();
}

contoh program :

#include<conio.h>
#include<iostream.h>
main()
{
struct smhs
{
char nim[5];
char nama[15];
float nilai;
};

smhs mahasiswa;

clrscr();
cout<<"masukan NIM = "; cin>>mahasiswa.nim;
cout<<"masukan Nama = "; cin>>mahasiswa.nama;
cout<<"masukan Nilai = "; cin>>mahasiswa.nilai;

clrscr();

cout<<"NIM = " << mahasiswa.nim <<endl;


cout<<"Nama = " << mahasiswa.nama <<endl;
cout<<"Nilai = " << mahasiswa.nilai <<endl;

getch();
}
76
contoh strut dengan array :

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>

main()
{
struct smhs
{
char nim[5];
char nama[15];
float nilai;
};

smhs mahasiswa[5];
int a = 0;

clrscr();
do {
cout << "Data pada index ke - " << a << endl;
cout << "=====================" << endl;
cout << "masukan NIM = ";
cin>>mahasiswa[a].nim;
cout << "masukan Nama = ";
cin>>mahasiswa[a].nama;
cout << "masukan Nilai = ";
cin>>mahasiswa[a].nilai;
cout << endl;
a++;
}while( a < 5 );

clrscr();
//cetak judul..........................
clrscr();
cout << " NIM Nama Nilai " << endl;
cout << "============================" << endl;
for (int b=0; b<5; b++)
{
cout << setw (7) << mahasiswa[b].nim;
cout << setw (22) << mahasiswa[b].nama;
cout << setw (5) << mahasiswa[b].nilai<<endl;
}

getch();
}

77
Pelaksanaan Praktikum
1. Praktekkan contoh program yang ada pada bab ini !

Tugas
1. Pada program struct yang dikombinasikan dengan array di atas, tambahkah nilai huruf yang
dikonversikan dari nilai angka. Ketentuan konversi sesuai dengan bahasan struktur kendali
pada bab sebelumnya !

78
Pertemuan 9

Pokok Bahasan
1. Fungsi
2. Variabel Lokal
3. Variabel Global

Tujuan Pembelajaran
1. Mahasiswa mengenal fungsi/procedure dalam program
2. Mahasiswa mengenal variable local dan variable global

Kompetensi Prasyarat
1. Mahasiswa telah memahami indentifier dan tipe data.
2. Mahasiswa telah memahami alur program.

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Function adalah satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam
suatu program.
Pada intinya fungsi berguna untuk :
 Mengurangi pengulangan penulisan program yang berulangan atau sama.

 Program menjadi terstruktur, sehingga mudah dipahami dan dikembangkan.

Format dari function :

type name ( parameter1, parameter2, ...)


{
Statements;
}

dimana :
 type, adalah tipe dari data yang akan dikembalikan/dihasilkan oleh function.
 name, adalah nama yang memungkinkan kita memanggil function.
 parameter (dispesifikasikan sesuai kebutuhan). Setiap parameter terdiri dari tipe data
diikuti identifier, seperti deklarasi variable (contoh, int x) dan berfungsi dalam function

79
seperti variable lainnya. Juga dapat melakukan passing parameters ke function itu
ketika dipanggil. Parameter yang berbeda dipisahkan dengan koma.
 statement, merupakan bagian badan suatu function. Dapat berupa instruksi tunggal
maupun satu blok instruksi yang dituliskan diantara kurung kurawal {}.

contoh :

#include <iostream.h>
#include <conio.h>

int addition (int a, int b)


{
int r;
r = a + b;
return (r);
}

int main ()
{
int z;
z = addition (5, 3);
cout << "The result is " << z;
return 0;
}

Program diatas, ketika dieksekusi akan mulai dari fungsi main. main function memulai dengan
deklarasi variabel z dengan tipe int. Setelah itu instruksi pemanggilan fungsi addition. Jika
diperhatikan, ada kesamaan antara sruktur pemanggilan dengan deklarasi fungsi itu sendiri,
perhatikan contoh dibawah ini :

Instruksi pemanggilan dalam fungsi main untuk fungsi addition, memberikan 2 nilai : 5 dan 3
mengacu ke parameter int a dan int b yang dideklarasikan untuk fungsi addition.

Saat fungsi dipanggil dari main, kontrol program beralih dari fungsi main ke fungsi addition.
Nilai dari kedua parameter yang diberikan (5 dan 3) di-copy ke variable local ; int a dan int b.

Fungsi addition mendeklarasikan variable baru (int r;), kemudian ekspresi r=a+b;, yang berarti
r merupakan hasil penjumlahan dari a dan b, dimana a dan b bernilai 5 dan 3 sehingga hasil
akhirnya 8. perintah selanjutnya adalah :

return (r);
80
Merupakan akhir dari fungsi addition, dan mengembalikan kontrol pada fungsi main. Statement
return dikuti dengan variabel r (return (r);), sehingga nilai dari r yaitu 8 akan dikembalikan :

Dengan kata lain pemanggilan fungsi (addition (5,3)) adalah menggantikan dengan nilai yang
akan dikembalikan (8).

Function tanpa tipe (void)


Deklarasi fungsi akan selalu diawali dengan tipe dari fungsi, yang menyatakan tipe data apa
yang akan dihasilkan dari fungsi tersebut. Jika tidak ada nilai yang akan dikembalikan, maka
dapat digunakan tipe void,

contoh :

#include <iostream.h>

void dummyfunction (void)


{
cout << "I'm a function!";
}

int main ()
{
dummyfunction ();
return 0;
}

Walaupun pada C++ tidak diperlukan men-spesifikasikan void, hal itu digunakan untuk
mengetahui bahwa fungsi tersebut tidak mempunyai argumen, atau parameter dan lainnya.
Maka dari itu pemanggilan terhadap fungsinya dituliskan :

dummyfunction ();

Variable Lokal dan Variabel Global


Didalam pembuatan program perlu diperhatikan bagaimana menetukan variabel secara benar.
Disamping menentukan tipe data apa yang akan digunakan, perlu juga diperhatikan penggunaan
variabel secara baik. Penempatan variabel dapat dilakukan dengan menerapkan variabel sebagai
variabel lokal atau variabel global. Perhatikan skema penempatan variabel lokal dan variabel global
berikut ini :

81
VAriabel Lokal
Variabel yang dideklarasikan di dalam fungsi atau blok adalah variabel lokal. Mereka hanya
dapat digunakan oleh pernyataan yang berada di dalam fungsi atau blok kode program. Variabel
lokal tidak dikenal oleh fungsi yang lain.. Berikut ini adalah contoh menggunakan variabel lokal:

#include <iostream.h>

void main ()
{
// Local variable declaration:
int a, b;
int c;

// actual initialization
a = 10;
b = 20;
c = a + b;

cout << c;
}

Variable Global
Variabel global didefinisikan di luar semua fungsi, biasanya di atas program. Variabel global
akan terus dikenali dalam proses jalannya program.

82
Variabel global dapat diakses oleh fungsi apapun. Artinya, variabel global yang tersedia untuk
digunakan diseluruh program setelah dideklarasikan. Berikut ini adalah contoh menggunakan
variabel global dan lokal:
Kelemahan dari variable global, antara lain :
 Penggunaan memori yang boros
 Pencarian kesalahan terhadapa variable akan sulit dilakukan karena semua variable
dianggap global.

#include <iostream.h>

// Global variable declaration:


int g;

void main ()
{
// Local variable declaration:
int a, b;

// actual initialization
a = 10;
b = 20;
g = a + b;

cout << g;
}

Pelaksanaan Praktikum
1. Cobalah contoh program berikut !

#include <iostream.h>
#include <conio.h>

//variable global
int a = 2;

void satu()
{
int b; //varible local
b = 5;
a = a * b;
cout << "Nilai a : " << a << endl;
cout << "Nilai b : " << b << endl;
}

83
void main ()
{
int b = 3, c = 4; //variable local

cout << "Nilai a : " << a << endl;


cout << "Nilai b : " << b << endl;
cout << "Nilai c : " << c << endl;

satu();

cout << "Nilai a : " << a << endl;


cout << "Nilai b : " << b << endl;
cout << "Nilai c : " << c << endl;

getch();
}

Output program :

Jelaskan mengapa output yg dihasilkan seperti di atas !

Latihan
1. Buatlah daftar harga jual BBM dari jumlah 1 liter sampai dengan 10 liter, dimana judul
laporan dibuat dalam sebuah fungsi !

Daftar Harga BBM


========================================================
Liter Premium Pertamax 92 PrimaDex Bio Solar
========================================================

========================================================

84
Pertemuan 10

Pokok Bahasan
1. Fungsi dengan Parameter
2. Fungsi dengan Parameter by value
3. Fungsi dengan Parameter by reference

Tujuan Pembelajaran
1. Mahasiswa mengenal fungsi dengan menggunakan parameter
2. Mahasiswa dapat membedakan fungsi dengan parameter by value dan fungsi dengan
parameter by reference

Kompetensi Prasyarat
1. Mahasiswa telah memahami fungsi atau procedure dalam program.
2. Mahasiswa telah memahami alur program dengan baik

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Parameter Fungsi
Terdapat dua macam para parameter fungsi, yaitu :
 Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.
 Parameter Aktual adalah variabel yang dipakai dalam pemanggilan fungsi.

Bentuk penulisan Parameter Formal dan Parameter Aktual.

85
Argument passed by value dan by reference
Parameter yang diberikan ke fungsi masih merupakan passed by value. Berarti, ketika
memanggil sebuah fungsi, yang diberikan ke fungsi adalah nilainya, tidak pernah men-
spesifikasikan variablenya. Sebagai Contoh, pemanggilan fungsi addition, menggunakan
perintah berikut :

int x=5, y=3, z;


z = addition ( x , y );

Yang berarti memanggil fungsi addition dengan memberikan nilai dari x dan y, yaitu 5 dan 3,
bukan variabelnya.

Contoh penggunaan fungsi addition :

#include <iostream.h>
#include <conio.h>
int addition (int a, int b)
{
int c;

c = a + b;
return (c);
}

int main ()
{
int x = 5, y = 3;

int hasil;

hasil = addition (x, y);


cout << "Hasil = " << hasil;
getch();

return 0;
}

Tetapi, dapat juga memanipulasi dari dalam fungsi, nilai dari variable external. Untuk hal itu,
digunakan argument passed by reference,

86
Contoh program :

// passing parameters by reference


#include <iostream.h>
#include <conio.h>

void duplicate (int& a, int& b, int& c)


{
a*=2;
b*=2;
c*=2;
}

int main ()
{
int x=2, y=3, z=5;
duplicate (x, y, z);
cout << "x = " << x << endl;
cout << "y = " << y << endl;
cout << "z = " << z << endl;
getch();
return 0;
}

Output program :
x = 4
y = 6
z = 10

Perhatikan deklarasi duplicate, tipe pada setiap argumen diakhiri dengan tanda ampersand
(&), yang menandakan bahwa variable tersebut biasanya akan passed by reference dari pada by
value.
Ketika mengirimkan variable by reference, yang dikirimkan adalah variabelnya dan perubahan
apapun yang dilakukan dalam fungsi akan berpengaruh pada variable diluarnya.

Atau dengan kata lain, parameter yang telah ditetapkan adalah a, b dan c dan parameter yang
digunakan saat pemanggilan adalah x, y dan z, maka perubahan pada a akan mempengaruhi
nilai x, begitupun pada b akan mempengaruhi y, dan c mempengaruhi z.

Itu sebabnya mengapa hasil output dari program diatas adalah nilai variable dalam main
dikalikan 2. jika deklarasi fungsi tidak diakhiri dengan tanda ampersand (&), maka variable
tidak akan passed by reference, sehingga hasilnya akan tetap nilai dari x, y dan z tanpa
mengalami perubahan.

87
Passing by reference merupakan cara efektif yang memungkinkan sebuah fungsi
mengembalikan lebih dari satu nilai. Contoh, fungsi ini akan mengembalikan nilai sebelum dan
sesudahnya dari nilai awal parameter :

// more than one returning value


#include <iostream.h>

void prevnext (int x, int& prev, int& next)


{
prev = x-1;
next = x+1;
}

int main ()
{
int x=100, y, z;
prevnext (x, y, z);
cout << "Previous=" << y << ", Next=" << z;
return 0;
}

Output program :

Previous=99, Next=101

Nilai Default dalam argument


Ketika mendeklarasikan sebuah fungsi, dapat diberikan nilai default untuk setiap parameter.
nilai ini akan digunakan ketika parameter pemanggil dikosongkan. Untuk itu cukup
dideklarasikan pada saat deklarasi fungsi.

Contoh :
// default values in functions
#include <iostream.h>

int divide (int a, int b=2)


{
int r;
r = a / b;
return (r);
}

int main ()
{
cout << divide (12);
cout << endl;
cout << divide (20,4);
return 0;
}

88
Output program :
6
5

Dapat dilihat dalam fungsi divide. Instruksi 1:


divide (12)

Instruksi 2 :
divide (20,4)

inline Function
Directive inline dapat disertakan sebelum deklarasi fungsi, untuk menspesifikasikan bahwa
fungsi tersebut harus di-compile sebagai suatu kode saat dipanggil. Sama halnya dengan
deklarasi macro. Keuntungannya dapat terlihat pada fungsi sederhana yaitu hasil yang
diberikan akan lebih cepat. (jika terjadi stacking of arguments) dapat dihindari.

Format deklarasi :

inline type name ( arguments ... )


{ instructions ... }

Pemanggilannya, sama dengan pemanggilan fungsi pada umumnya. Tidak diperlukan penulisan
keyword inline pada setiap pemanggilan.

Pelaksanaan Praktikum
1. Praktekkan dan pahami contoh program pada bab ini !

89
Latihan
1. Buatlah program berikut dan lengkapi yang masih kurang !

/*
Nama program : Latihan10.cpp
Dibuat tanggal : 2 Februari 2015
Fungsi Program : fungsi
Dibuat oleh : nama mahasiswa
*/

#include <iostream.h>
#include <conio.h>

struct skaryawan
{
int nik;
char nama[20];
int anak;
int pendidikan;
};

int a;
int gapok, tanak;
char ket[10];
skaryawan karyawan[5];

void fgapok()
{
if (karyawan[a].pendidikan == 1)
{
gapok = 10000;
strcpy(ket, "SD");
}
else
if (karyawan[a].pendidikan == 2)
{
gapok = 20000;
strcpy(ket, "SMP");
}
else
{
gapok = 30000;
strcpy(ket, "SMA");
}
}

//berlanjut halaman berikutnya……………..

90
int ftanak(int jmlanak)
{
if (jmlanak > 2)
tanak = 3 * 500;
else
tanak = jmlanak * 500;

return tanak;
}

int ftotal(int gapok, int tanak)


{
int jmltotal;
jmltotal = gapok + tanak;
return jmltotal;
}

void cetakdata()
{
int a, total = 0;
//cetak isi array
clrscr();
cout << "Laporan Pembayaran Air"<< endl;
cout << "==============================================" << endl;
cout << "No NIK Nama Anak Pendidikan GApok TAnak Total" << endl;
cout << "==============================================" << endl;
a=0;
while (a<2)
{

fgapok();
tanak = ftanak(karyawan[a].anak);
total = ftotal (gapok, tanak);
cout << (a+1)
<< karyawan[a].nik << "\t"
<< karyawan[a].anak << "\t"
<< ket << "\t"
<< gapok << "\t"
<< total << endl;
a++;
}
cout << "=============================================" << endl;
getch();

91
void main()
{
int totgaji;

while (a<2)
{
cout << " NIK : " ;cin >> karyawan[a].nik;
cout << " Nama : " ;cin >> karyawan[a].nama;
cout << " Anak : " ;cin >> karyawan[a].anak;
cout << " Pendidikan : " ;cin >> karyawan[a].pendidikan;

//hitung gapok......................
fgapok();
tanak = ftanak(karyawan[a].anak);
totgaji = ftotal( gapok, tanak);
cout << " Gaji Pokok : " << gapok << endl;
cout << " Tunj. Anak : " << tanak << endl;
cout << " Total Gaji : " << totgaji << endl;
getch();
a++;
}

//cetak data..
cetakdata();

92
Pertemuan 11

Pokok Bahasan
1. Prototipeping Function
2. Overloaded Function

Tujuan Pembelajaran
1. Mahasiswa mengenal prototipeping function dan overloaded function.
2. Mahasiswa dapat menggunakan prototipeping function dan overloaded function.

Kompetensi Prasyarat
1. Mahasiswa telah dapat menggunakan fungsi dengan parameter
2. Mahasiswa dapat memahami alur program.

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Prototyping function
Format penulisan :

type name ( argument_type1, argument_type2, ...);

Hampir sama dengan deklarasi fungsi pada umumnya, kecuali :


 Tidak ada statement fungsi yang biasanya dituliskan dalam kurung kurawal { }.
 Diakhiri dengan tanda semicolon (;).
 Dalam argumen dituliskan tipe argumen, bersifat optional.

93
Contoh :

// prototyping
#include <iostream.h>

void odd (int a);


void even (int a);

int main ()
{
int i;
do {
cout << "Type a number: (0 to exit)";
cin >> i;
odd (i);
} while (i!=0);
return 0;
}

void odd (int a)


{
if ((a%2)!=0) cout << "Number is odd.\n";
else even (a);
}

void even (int a)


{
if ((a%2)==0) cout << "Number is even.\n";
else odd (a);
}

Output :
Type a number (0 to exit): 9
Number is odd.
Type a number (0 to exit): 6
Number is even.
Type a number (0 to exit): 1030
Number is even.
Type a number (0 to exit): 0
Number is even.

Contoh diatas tidak menjelaskan tentang efektivitas program tetapi bagaimana prototyping
dilaksanakan. Perhatikan prototype dari fungsi odd dan even:

void odd (int a);


void even (int a);

Memungkinkan fungsi ini dipergunakan sebelum didefinisikan. Hal lainnya mengapa program
diatas harus memiliki sedikitnya 1 fungsi prototype, karena fungsi dalam odd terdapat
pemanggilan fungsi even dan dalam even terdapat pemanggilan fungsi odd. Jika tidak satupun
dari fungsi tersebut dideklarasikan sebelumnya, maka akan terjadi error.

94
Overloaded Function
Dua fungsi yang berbeda dapat memiliki nama yang sama jika prototype dari argumen mereka
berbeda, baik jumlah argumennya maupun tipe argumennya, Contoh :

// overloaded function
#include <iostream.h>

int divide (int a, int b)


{
return (a/b);
}

float divide (float a, float b)


{
return (a/b);
}

int main ()
{
int x=5,y=2;
float n=5.0,m=2.0;
cout << divide (x,y);
cout << "\n";
cout << divide (n,m);
cout << "\n";
return 0;
}

Output :
2
2.5

Contoh diatas mempunyai nama fungsi yang sama, tetapi argumennya berbeda. Yang pertama
bertipe int dan lainnya bertipe float. Kompiler mengetahuinya dengan memperhatikan tipe
argumen pada saat pemanggilan fungsi.

95
Pelaksanaan Praktikum
1. Praktekkan contoh program yang ada pada bab ini !

Latihan
1. Buatlah program latihan pada bab 10 menjadi fungsi dengan bentuk prototyping !

96
Pertemuan 12

Pokok Bahasan
1. Rekursif

Tujuan Pembelajaran
1. Mahasiswa mengenal program dengan fungsi yang mempunyai sifat rekursi
2. Mahasiswa dapat menggunakan rekursi program

Kompetensi Prasyarat
1. Mahasiswa telah memahami penggunaan fungsi
2. Mahasiswa dapat memahami alur program

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Recursivity Function
Rekursif merupakan kemempuan sebuah fungsi untuk memanggil dirinya sendiri. Sangat
berguna untuk pengerjaan sorting atau perhitungan factorial. Contoh, format perhitungan
factorial :

n! = n * (n-1) * (n-2) * (n-3) ... * 1

Misalkan, 5! ( 5 faktorial), akan menjadi :

5! = 5 * 4 * 3 * 2 * 1 = 120

97
contoh :

// factorial calculator
#include <iostream.h>

long factorial (long a)


{
if (a > 1)
return (a * factorial (a-1));
else
return (1);
}

int main ()
{
long l;
cout << "Type a number: ";
cin >> l;
cout << "!" << l << " = " << factorial (l);
return 0;
}

Output program :

Type a number: 9

!9 = 362880

98
Pelaksanaan Praktikum
1. Praktekkan contoh program pada bab ini !
2. Buatlah program untuk menghitung jumlah nilai dari urutan angka 1, 2, 3, …dst sampai 999
dengan menggunakan teknik rekursi !

Latihan
1. Buatlah progam untuk mencetak urutan angka bilangan genap dari 0, 2, 4, …, 100 dengan
menggunakan rekursi !

99
Pertemuan 13

Pokok Bahasan
1. Sorting
2. Buble Sort
3. Selection Sort

Tujuan Pembelajaran
1. Mahasiswa mengenal proses pengurutan data
2. Mahasiswa dapat membuat program pengurutan data dengan metode buble sort dan
selection sort

Kompetensi Prasyarat
1. Mahasiswa telah mempelajari proses seleksi dan perulangan.
2. Mahasiswa dapat membaca alur program.

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Salah satu bagian penting dari pengolahan data adalah sorting atau pengurutan data. Ada
banyak sekali Algoritma pengurutan data di dunia komputer, yatu : bubble sort, selection sort,
insertion sort, exchange sort, quick sort, merge sort, dll.

Bubble Sort
Bubble sort merupakan salah satu jenis sorting. Bubble sort ada metode sorting termudah.
Diberikan nama “bubble” karena konsep dari algoritmanya diibaratkan seperti gelembung air
untuk elemen struktur data yang seharusnya pada posisi awal. Bubble sort mengurutkan data
dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Dimana cara
kerjanya adalah dengan berulang-ulang melakukan proses looping ( perulangan ) terhadap
elemen-elemen struktur data yang belum diurutkan. Nilai dari masing-masing elemen akan
dibandingkan selama proses looping tersebut, jika selama proses looping tersebut ditemukan
ada urutannya tidak sesuai dengan permintaan, maka akan dilakukan proses penukaran (swap).
Sesungguhnya secara tidak langsung, algoritma dari program ini seolah-olah menggeser satu
demi satu elemen dari kanan ke kiri atau dari kiri ke kanan tergantung pada jenis
pengurutannya.
Jenis pengurutan sorting ada 2 yaitu asscending dan descending. Dimana asscending itu
mengurut data dari kecil ke besar dan descending itu mengurut data dari besar ke kecil. Jika

100
semua elemen sudah diperiksa oleh fungsi bubble sort, dan tidak ada pertukaran lagi atau
semua nilai sudah sesuai, maka saat itu program bubble sort akan berhenti bekerja.
Misalkan jika ada data 2 5 4 3 1. Data tersebut masih dalam keadaan acak. Maka ilustrasi
pengurutan dengan bubble sortnya akan terlihat seperti pada table dibawah ini :

101
Kode program pengurutan Buble sort :

#include <iostream.h>
#include <conio.h>

int data[10],data2[10];
int n;

void tukar(int a, int b)


{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void bubble_sort()
{
clrscr();
for(int i=1;i<n;i++)
{
cout << "\nTahap : " << (i) << "\n";
cout << "=================================\n";

for(int j=0; j<n-i; j++)


{
if(data[j] > data[j+1]) tukar(j,j+1);

//mencetak data
for (int x=0; x<n; x++)
cout << data[x] << "\t";
cout << "\n";
}
}
}

void main()
{
cout<<"===PROGRAM BUBBLE SORT==="<<endl;

//Input Data
cout<<"Masukkan Jumlah Data : ";cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Masukkan data ke "<<(i+1)<<" : ";
cin>>data[i];
data2[i]=data[i];
}

bubble_sort();
getch();
}

102
Selection Sort
Selection sort merupakan salah satu jenis sorting yang sangat terkenal karena proses
pengurutannya cukup sederhana. Masih baik untuk digunakan pada saat data yang diurutkan
masih sedikit. Sedangkan pada saat data yang diurutkan jumlahnya besar metode selection sort
sudah tidak efisien lagi.
Berikut adalah pengurutan dengan menggunakan selection sort dengan pengurutan data dari
kecil ke besar/ascending.

103
Kode Program Pengurutan dengan metode Selection Sort

#include <iostream.h>
#include <conio.h>

void main()
{
int Nilai[] = { 5, 2, 4, 3, 1 };
int jdata = 5;
int i, j, x;
for(i = 0; i<jdata-1; i++)
{
cout << "\nTahap : " << (i+1) << "\n";
cout << "=================================\n";
for(j = i+1;j<jdata;j++)
{
if(Nilai[i] > Nilai[j])
{
x = Nilai[i];
Nilai[i] = Nilai[j];
Nilai[j] = x;
}
for (int a = 0; a<jdata; a++)
cout << Nilai[a] << "\t";
cout << "\n";
}
}
getch();
}

104
Pelaksanaan Praktikum
1. Cobalah program sorting pada bab ini !
2. Buatlah program pengurutan nama yang tipenya adalah char !
3. Buatlah program pengurutan dimana datanya berupa record yang terdiri dari nim, nilai1, dan
nilai2. Data diurutkan berdasakan NIM !

Latihan
1. lakukan pengurutan data dimana data yang diurutkan mempunyai susunan record yang
teridir dari nopelanggan, golongan, meter lalu, dan meter sekarang

105
106
Pertemuan 14

Pokok Bahasan
1. Searching
2. Sequential Search
3. Binary search

Tujuan Pembelajaran
1. Mahasiswa mengenal cara pencarian data untuk data array
2. Mahasiswa dapat mempraktekkan pencarian data pada array.

Kompetensi Prasyarat
1. Mahasiswa telah memahami araay dan struct.
2. Mahasiswa dapat melakukan pengurutan data.

Instruksi Khusus
1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan
program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat
Pengertian Pencarian (Searching) merupakan proses yang sangat dasar dalam pemrograman,
guna menemukan data tertentu di dalam sekumpulan data yang bertipe sama.
Metode pencarian dibagi menjadi 2 :
1. Metode Pencarian Berurutan (Linier Search)
Konsep yang digunakan dalam metode ini adalah membandingkan data-data yang ada dalam
kumpulan tersebut, mulai dari elemen pertama sampai sampai dengan elemen data terakhir.
2. Metode Pencarian Bagi Dua (Binary Search)
Metode ini diterapkan pada sekumpulan data yang sudah terurut. Metode ini lebih cepat
dibandingkan metode pencarian berurutan.

Linier Search
Contoh program linier search :

#include <iostream.h>
#include <conio.h>

107
int linearsearch(const int *vArray, const int vJmlData, const int vCari)
{
bool noFound = true;
int i = 0;

while(i < vJmlData && notFound)


{
if(vCari != vArray[i])
i++;
else
notFound = false;
}

if( notFound == false )


return i;
else
return -1;
}

int main()
{
int data[] = { 57, 3, 502, 99, 1007, 2, 9, 8 };
int jmldata = sizeof(data) / sizeof(int);
int jmlketemu = 0;

cout << "Data yang dicari : "; cin >> jmlketemu;


int i = linearsearch(data, jmldata, jmlketemu);

if(i == -1)
cout << "Data tidak ditemukan !\n\n";
else
{
cout << "Data ditemukan pada posisi index ke- " << i <<"\n";

getch();
return 0;
}

108
Binary Search

Contoh program binary search :

#include <iostream.h>
#include <conio.h>

int binarysearch(int [], int, int);

void main()
{

const int jmldata = 10;


int data[jmldata] = {1,2,45,46,56,68,93,94,95,98};
int cari, lokasi;

cout << "Data yang dicari : ";


cin >> cari;
lokasi = binarysearch(data, jumlahdata, cari);
if (lokasi > -1)
cout << "Data yang dicari ditemukan pada lokasi : "
<< lokasi << "\n";
else
cout << "Data tidak ditemukan !\n";

getch();
}

int binarysearch(int list[], int jumlah, int vcari)


{
int kiri, kanan, tengah;

kiri = 0;
kanan = jumlah - 1;

while (kiri <= kanan)


{
tengah = (int) ((kiri + kanan) / 2);
if (vcari == list[tengah])
{
return tengah;
}

else if (vcari > list[tengah])


kiri = tengah + 1;
else
kanan = tengah - 1;
}

return -1;
}

109
Pelaksanaan Praktikum
1. Buatlah contoh program yang ada pada bab ini !

Latihan
1. Cobalah lakukan pencarian data, jika data yang disimpan berupa nama siswa !

110
Daftar Pustaka
http://www.cplusplus.com/files/tutorial.pdf

http://www.cplusplus.com/doc/tutorial/

http://www.cprogramming.com/tutorial/c++-tutorial.html

http://en.wikipedia.org/wiki/Selection_sort

Sanjaya Dwi, Asyiknya belajar Struktur data di planet C++, Elek Media Komputindo,
Jakarta, 2006

http://www.tutorialspoint.com/cplusplus/cpp_variable_scope.htm Desember 2014

111
Catatan :

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

112
Catatan :

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

113
Catatan :

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

114