Anda di halaman 1dari 80

MODUL

ALGORITMA DAN PEMROGRAMAN

Disusun oleh :

Ai Ilah Warnilah, S.T,M.Kom

AKADEMI MANAJEMEN INFORMATIKA & KOMPUTER (AMIK – BSI)


BINA SARANA INFORMATIKA

2015

1
KATA PENGANTAR

Puji dan syukur kehadirat Allah SWT atas petunjuk rahmat dan hidayah-Nya.
Penyusun dapat menyelesaikan Modul ini tanpa ada halangan apapun sesuai dengan waktu
yang telah ditentukan.

Penyusun menyadari bahwa banyak kekurangan yang terdapat pada penyusunan


modul ini serta masih jauh dari kata sempurna. Oleh karena itu kritik dan saran yang
membangun sangat diharapkan demi kesempurnaan modul ini. Penyusun mohon maaf yang
sebesar-besarnya apabila dalam pembuatan modul ini banyak kesalahannya. Serta semoga
modul ini dapat bermanfaat khususnya bagi penyusun, umumnya bagi kita semua dan bagi
pihak yang membutuhkan.

Tasikmalaya, 16 Juni 2015

Penyusun

2
DAFTAR ISI

KATA PENGANTAR ..........................................................................................................i


DAFTAR ISI......................................................................................................................... ii

BAB I
PENDAHULUAN ................................................................................................................ 1
A. Sekilas Perkembangan Bahasa C ................................................................................ 1
B. Sekilas Tentang C++ ...................................................................................................1
C. Perbedaan antara C dan C++ ....................................................................................... 1
D. Pengenalan IDE Borland C++ ......................................................................................... 2

BAB II
TIPE DATA .......................................................................................................................... 3
A. Pengertian Tipe Data ....................................................................................................3
B. Jenis Jenis Tipe Data ...................................................................................................4

BAB III
OPERATOR STRING.........................................................................................................13
A. Operator Aritmatika ....................................................................................................13
B. Ekspresi Aritmatika .....................................................................................................13
C. Operator Penambah dan Pengurang ...........................................................................14
D. Operator Relasi / Perbandingan ....................................................................................... 15
E. Operator Logika ...........................................................................................................15
F. Operator Bitwise ..........................................................................................................16
G. Operasi String .............................................................................................................. 18

BAB IV
IF ELSE ................................................................................................................................ 20
A. Pengertian IF ................................................................................................................ 20

BAB V
PERULANGAN ................................................................................................................... 26
A. Statement For .............................................................................................................. 26
B. Pernyataan Nested-for .................................................................................................27
C. Perulangan Tak Hingga ................................................................................................ 29
D. Pernyataan While ...........................................................................................................30
E. Statement Do...While Karakteristik .............................................................................30
F. Pernyataan Break .........................................................................................................31

BAB VI
ARRAY .................................................................................................................................33
A. Array ............................................................................................................................ 33
B. Sorting ......................................................................................................................... 38

BAB VII
POINTER ............................................................................................................................. 49
A. Pengertian Pointer ........................................................................................................49
3
B. Deklarasi Variabel Pointer ........................................................................................... 49
C. Pointer dan Array .........................................................................................................50
D. Pointer dan String ...........................................................................................................51
E. Pointer dan Pointer .......................................................................................................51

BAB VII
FILE HEADER & MACRO ............................................................................................... 54
A. Preprocessor Directives ................................................................................................ 54

BAB IX
FUNGSI ................................................................................................................................ 63
A. Pengertian Fungsi .........................................................................................................63
B. Struktur Fungsi .............................................................................................................63
C. Pointer dan Array .........................................................................................................50
D. Pointer dan String ...........................................................................................................51
E. Pointer dan Pointer .......................................................................................................51

BAB X
STRUCTURE ....................................................................................................................... 69

DAFTAR PUSTAKA ...........................................................................................................76

4
BAB 1
SEJARAH

A. Sekilas Perkembangan Bahasa C


Bahasa C dikembangken di Bell lab pada tahun 1972 ditulis pertama kali oleh
Brian W. Kernighan dan Denies M. Ricthie merupakan bahasa turunan atau
pengembangan dari bahasa B yang ditulis oleh Ken Thompson pada tahun 1970 yang
diturunkan oleh bahasa sebelumnya, yaitu BCL. Bahasa C, pada awalnya dirancang
sebagai bahasa pemrograman yang dioperasikan pada sistem operasi UNIX.
Bahasa C merupakan bahasa pemrograman tingkat menengah yaitu diantara
bahasa tinggat rendah dan tingkat tinggi yang biasa disebut dengan Bahasa Tingkat
Menengah. Bahasa C mempunyai banyak kemampuan yang sering digunakan
diantaranya kemampuan untuk membuat perangkat lunak, misalnya dBASE, Word Star
dan lain-lain.

B. Sekilas Tentang C++


Pada tahun 1980 seorang ahli yang bernama Bjarne Stroustrup
mengembangkan beberapa hal dari bahasa C yang dinamakan “C with Classes” yang
pada mulanya disebut “a better C” dan berganti nama pada tahun 1983 menjadi C++
oleh Rick Mascitti, dibuat di Laboratorium Bell, AT&T.
Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya
yang disebut dengan Object Oriented Programming (OOP), yang mempunyai tujuan
utamanya adalah membantu dan mengelola program yang besar dan kompleks.

C. Perbedaan Antara Bahasa C Dengan C++


Bahasa C merupakan bahasa pemrograman prosedural, di mana penyelesaian
atas suatu masalah dilakukan dengan membagi-bagi masalah tersebut ke dalam sub-sub
masalah yang lebih kecil. Sedangkan C++ merupakan bahasa pemrograman yang
memiliki sifat Object Oriented Programming (OOP). Untuk menyelesaikan masalah,
C++ melakukan langkah pertama dengan mendefinisikan class-class yang merupakan
a.-class yang dibuat sebelumnya sebagai abstraksi dari objek-objek fisik. Class tersebut
berisi keadaan objek, anggota-anggotanya, dan kemampuan dari objeknya. Setelah
beberapa class dibuat, masalah dipecahkan menggunakan class.
5
D. Pengenalan IDE Borland C++
IDE merupakan singkatan dari Integrated Development Environment, merupakan
Lembar kerja terpadu untuk pengembangan program. IDE dari Borland C++, dapat
digunakan untuk:

1. Menulis Naskah Program.


2. Mengkompilasi Program ( Compile )
3. Melakukan Pengujian Program ( Debugging )
4. Mengaitkan Object dan Library ke Program ( Linking )
5. Menjalankan Program ( Running)

6
BAB 2
TIPE DATA
A. Pengertian
Tipe data merupakan tempat untuk menentukan pemberian nilai terhadap suatu
variabel yang diberikan oleh user. Selain itu tipe data juga dapat diartikan sebagai
batasan terhadap fungsi tanda pengenal terhadap semua nilai yang diterima. Tipe data
dalam variable menentukan tipe data yang bisa disimpan didalamnya, format data yang
disimpan, dan berapa banyak memori yang dialokasikan untuk menyimpan data

Fungsi Tipe data antara lain:

 Merepresentasikan nilai dari suatu variabel maupun konstanta


 Penyimpanan data di memori
 Menentukan nilai yang dapat diisikan ke dalam sebuah variable.

Sedangkan jenis tipe data ada dua macam:

 Tipe dasar atau primitive


 Tipe bentukan atau referensi.

Dalam bahasa C++ terdapat lima tipe data dasar, yaitu: int, char, float, double,
dan void. Tipe data memiliki 3 jenis variabel yaitu variabel Numerik, variabel Text,
dan Boolean.
 Variabel Numerik : Memungkinkan kita untuk menyimpan data dalam bentuk bilangan.
Variabel numerik dapat dibagi menjadi beberapa bagian yaitu : Bilangan bulat (Integer
“int”), Bilangan Desimal Berpresisi Tunggal (Floating point “float”), Bilangan Desimal
Berpresisi ganda (Double Precision “double”)
 Variabel Text : memungkinkan kita untuk menyimpan datadalam bentuk karakter.
Bahasa pemograman C++ menyediakan beberapa tipe data dasar seperti char
(character / karakter Tunggal ) dan String (kumpulan karakter dan kata)
 Boolean : pada bahasa Pemograman c++ ditulis dengan menuliskan “bool” merupakan
jenis yang hanya dapat mewakili satu dari dua pilihan yaitu 1 (true) atau (false).

7
Tipe Data Bentuk Penulisan

Boolean Bool

Character Char

Integer Int

Floating Point Float

Double Floating Point Double

String String

Valueless Void

Dari Tipe data diatas bisa kita modifikasi menggunakan modifiers type untuk
memberikan fungsi lebih kepada variabel.

Modifiers Type

Signed Untuk membuat tipe data numerik menjadi negatif

Unsigned Untuk membuat tipe data numerik menjadi Positif

Short Pemesanan jarak dan ukuran memori lebih kecil

Long Pemesanan jarak dan ukuran menjadi lebih Besar

B. Jenis Jenis Tipe Data


1. Integer (int)
Integer adalah salah satu dasar tipe data yang dapat kita gunaka untuk
menyimpan memori berformat angka / bilangan bulat, yaitu bilangan yang tidak
mengandung angka dibelakang koma. Contoh data bilangan bulat adalah 1, 2, 4, 100
dan sebagainya.
Bentuk Umum Penulisan
Int NamaVariabel;
8
Contoh deklarasi
int nilai = 95;
Contoh 1 :
#include <iostream>
int main()
{
// Deklarasi variabel angka & hasil dengan tipe data int
int angka, hasil;
cout<<"Masukan angka = ";cin>>angka;
hasil = angka * 5;
cout<<"hasil dari "<<angka<<" X 5 adalah "<<hasil;
return 0;
getch();
}
Hasil Output :

Gambar 2.1

2. Float Point (float)

Float adalah salah satu tipe data yang bersifat menyatakan bilangan pecahan /
real / mengandung angka dibelakang koma, maupun eksponensial. Tipe data float dapat
menyatakan bilangan real dengan ketelitian relatif lebih rendah jika dibanding double
(hingga 7 digit di belakang koma).

Bentuk Umum Penulisan

float NamaVariabel;

9
Contoh 2

#include <iostream>
int main(){
float jarijari, luas;
const float p = 3.14;
cout<<"Masukan Jari-Jari Lingkaran = ";cin>>jarijari;
luas = p * (jarijari*jarijari);
cout<<"Luas Lingkaran = 3,14 X "<<jarijari<<" X "<<jarijari<<" = "<<luas;
return 0;
getch();
}
Hasil Output :

Gambar 2.2

3. Double Floating Point (double)

Sama seperti float, Double merupakan salah satu tipe data yang bersifat
menyatakan bilangan pecahan / real / mengandung angka dibelakang koma, maupun
eksponensial. Perbedaan double dengan float hanya pada ukuran memori, jangkauan
nilai yang dapat disimpan dan tipe data double dapat menyatakan bilangan real dengan
ketelitian tinggi (hingga 15 digit di belakang koma).

Bentuk Umum Penulisan

double NamaVariabel;

Contoh deklarasi
double nilai = 92,50;

Contoh 3.

10
#include <iostream
int main(){
double jarijari, luas;
const float p = 3.14;
cout<<"Masukan Jari-Jari Lingkaran = ";cin>>jarijari;
luas = p * (jarijari*jarijari);
cout<<"Luas Lingkaran = 3,14 X "<<jarijari<<" X "<<jarijari<<" = "<<luas;
return 0;
}

Hasil Output :

Gambar 2.3

4. Karakter (Char)

Char Adalah salah satu tipe data sembarang huruf, angka dan tanda baca
tunggal. Dalam C++, tipe karakter dinyatakan dalam "char.
Dalam C++, tipe karakter selalu diapit oleh petik tunggal. Sedangkan satu
karakter yang diapit oleh tanda petik ganda akan dianggap sebagai string. Sebagai
contoh 'A' adalah karakter, sedangkan "A" adalah string yang terdiri dari satu karakter.
String sendiri terbentuk dari minimal satu tipe data char dan akan dibahas setelah ini.
Bentuk Umum Penulisan
char NamaVariabel;
Contoh deklarasi
char IndeksNilai = 'A';
Contoh 4
#include <iostream>
int main(){
// Deklarasi variabel IndeksNilai
// Dengan tipe data char
11
// dan mengisinya dengan nilai 'A'
char IndeksNilai = 'A';
cout<<"Indek Nilai = "<<IndeksNilai;
return 0;
}
Hasil Output :

Gambar 2.4
5. String
Tipe ini digunakan untuk merepresentasikan data yang berupa teks (kumpulan
karakter), tipe data string biasa disebut array of character / array dari tipe data char /
kumpulan dari char. Contoh data string adalah "Andi" , "Belajar C++" , dan sebagainya.
Bentuk Umum Penulisan
char NamaVariabel[nilai];

6. Boolean (bool)
Boolean adalah salah satu tipe data pilihan yang hanya memiliki dua nilai
yaitu True (Benar) atau False (Salah). Tipe data ini merepresentasikan data-data yang
hanya mengandung dua buah nilai, yaitu nilai logika (boolean). Nilai logika itu sendiri
hanya terdiri dari nilai benar (biasanya direpresentasikan dengan nilai selain 0 ,
biasanya dengan nilai 1) dan salah (direpresentasikan dengan nilai 0).
Bentuk Umum Penulisan
bool NamaVariabel;
Contoh Deklarasi
bool benar = 0; //yang berarti false
Contoh 5
#include <iostream>
int main(){
// Mendeklarasikan variabel benar
// Variabel benar menggunakan tipe data bool

12
bool benar;
// Meminta input dari user
int a, b;
cout<<"Masukkan nilai a : ";cin>>a;
cout<<"Masukkan nilai b : ";cin>>b;
// Melakukan assigment terhadap variabel benar
benar = a > b;
if(benar == true){ // Dapat ditulis: if(benar){
cout<<"\na lebih besar dari b";
} else{
cout<<"\na lebih kecil / sama dengan b";
}
return 0;
}
Hasil Output

Gambar 2.5

7. Perintah Keluaran

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

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

13
 printf( ) Fungsi printf( ) merupakan fungsi keluaran yang paling umum digunakan
untuk menampilkan informasi kelayar.
1. Penggunaan Penentu Lebar Field
2. Penggunaan Escape Sequences.
 puts( ) Perintah puts( ) sebenarnya sama dengan printf(), yaitu digunakan untuk
mencetak string ke layar. puts( ) berasal dari kata PUT STRING.
1. putchar( )
2. cout
3. Fungsi Manipulator
- endl
- end
- flush( )
- dec( )
- hex( )
- oct( )
- setbase( )
- setw( )
- setfill( )
- setprecision( )
- setosflags( )

8. Perintah Masukan

Diantaranya adalah: scanf( ) gets( ) cout( ) getch( ) getche( )

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, memerlukan Untuk mencetak pindah baris tidak perlu
notasi ‘ \n ‘ notasi ‘ \n ‘ , karena sudah dibeikan secara
otomatis.

14
Tabel 3.4. Tipe Data (16 bit) Dalam C.

UKURAN
TIPE JANGKAUAN NILAI
MEMORI
unsigned char 8 bit 0 ‐ 255
Char 8 bit ‐128 ‐127
Enum 16 bit ‐32768 ‐ 32767
unsigned int 16 bit 0 ‐ 65535
short int 16 bit ‐32768 ‐ 32767
Int 16 bit ‐32768 ‐ 32767
unsigned long 32 bit 0 ‐ 4294967295
Long 32 bit 2147483648 ‐ 2147483647
Float 32 bit 3.4E‐38 ‐ 3.4E+38
Double 64 bit 1.7E‐308 ‐ 1.7E+308
long double 80 bit 3.4E‐4932 ‐ 1.1E+4932
Void 0 bit
neir(pointer) 16 bit
Far(pointer) 32 bit

TIPE FORMAT KETERANGAN

Char %c Karakter/string

Int %i, %d Integer/bilangan bulat

Float %f Float/bilangan pecahan presisi


tunggal
Double %lf Bilangan pecahan presisi ganda

15
LATIHAN 2

Kerjakan tampilan Berikut : dengan menggunakan deklarasi variabel dan sintaks input
(gets,scanf,cin) dan output(printf&cout)

16
BAB 3
OPERATOR DAN OPERASI STRING
Operator merupakan simbol yang dilibatkan dalam program untuk melakukan
operasi atau untuk memanipulasi , dalam hal Penjumlahan dua buah nilai, memberikan
nilai ke variable, membandingkan kesamaan dua nilai.
Berdasarkan sifatnya, operator dapat dibedakan menjadi tiga macam, yaitu :
1) Unary
Operator yang melibatkan sebuah operand
Contoh = -7
2) Binary
Operator yang melibatkan dua operand
Contoh = 6+9
3) Ternary
Operator yang melibatkan tiga operand
Contoh = (20 % 4) +4 +6

A. Operator Aritmatika
Operator aritmatika adalah operator yang digunakan untuk melakukan operasi
operasi aritmatika. Digunakan untuk mengoperasikan data-data numerik, seperti
penjumlahan, pengurangan, perkalian, pembagian, dll.

Operator Keterangan Contoh


+ Penjumlahan 2+2=4

- Pengurangan 6-3=3

* Perkalian 5*5=25

/ Pembagian 8/4=2

% Sisa bagi 10%3=1

B. Ekspresi aritmatika
Ekspresi yang baik operand-nya bertipe numerik dan hasilnya juga bertipe
numeric Ekspresi aritmatika memakai operator aritmatika.
Pada ekspresi aritmetik terdapat 2 buah operator yaitu :

 Operator biner, yaitu ekspresi yang operatornya membutuhkan 2 buah operand.


Contoh a + b
 Operator Uner, yaitu “-” atau operator yang punya 1 operand contoh “-2”

17
 Hierarki Operator Aritmatika
Aritmatika harus dimulai dari operator yang memiliki hirarki/tingkatan yang
tertinggi kemudian ke operator berikutnya yang mempunyai tingkatan yang lebih
rendah

Berikut ini urutan/hirarki operator aritmatika dari urutan tertinggi ke urutan terendah:

Operator Keterangan

* atau / atau Tingkat Operator Sama (tertinggi), Penggunaan bergantung


% pada posisinya, urutan sebelah kiri didahulukan kemudian
sebelah kanan.

+ atau - Tingkat Operator Sama (terendah), Penggunaan bergantung


pada posisinya, urutan sebelah kiri didahulukan kemudian
sebelah kanan.

Contoh :
X=8+4*2/4

//Langkah perhitungan C++


X=8+4*2/4
X=8+8/4
X=8+2
X = 10

 Operator Pemberi Nilai Aritmatika

Operator Keterangan
*= Perkalian
/= Pembagian
%= Sisa pembagian
+= Penjumlahan
-= Pengurangan

Contoh : nilai A=A+1 maka dapat disederhanakan menjadi A+=1

C. Operator Penambah dan Pengurang

Dari contoh penulisan operator pemberi nilai sebagai penyederhanaannya


dapat digunakan operator penambah dan pengurang.

Operator Keterangan
++ Penambahan
– Pengurangan

18
D. Operator Relasi / Perbandingan

Operator Relasi digunakan untuk menguji hubungan antara nilai dan atau
variabel. Operator ini digunakan dalam suatu statement bersyarat yang selalu
menghasilkan nilai true atau false.
Jenis-jenis operator relasi

Operator Keterangan
== Sama dengan (bukan penugasan)
!= Tidak sama dengan
> Lebih dari
< Kurang dari
>= Lebih dari atau sama dengan
<= Kurang dari atau sama dengan

E. Operator Logika
Operator Logika digunakan untuk membandingkan dua nilai variabel atau
lebih. Hasil dari operasi ini adalah nilai boolean true atau false. Asumsikan variabel a
bernilai true, b bernilai false dan c bernilai true, lalu perhatikan tabel berikut:

Operator Keterangan Contoh


&& Jika semua operand bernilai benar (TRUE) a && b hasilnya false
maka kondisi bernilai benar. a && c hasilnya true
|| Jika salah satu dari operand bernilai benar a || b hasilnya true
(TRUE) maka kondisi bernilai benar. a || c hasilnya true
! Digunakan untuk membalik kondisi. Jika !a hasilnya false
kondisi benar (TRUE) maka akan berubah !b hasilnya true
menjadi salah (FALSE), begitu pula !( b && a ) hasilnya
sebaliknya true

 Operator Logika AND (&&)


Operator logika AND digunakan untuk menggabungkan dua atau lebih
ekspresi relasi untuk mendapatkan hasil rasional tunggal, operator / operasi AND
dilambangkan dengan menggunakan simbol "&&", operasi AND hanya akan
menghasilkan nilai 1 (benar) jika semua ekspresi relasi yang dihubungkan bernilai
benar, namun jika tidak, maka operasi tersebut akan menghasilkan nilai 0 (salah).
Berikut ini tabel operator AND.

X Y X || Y
1 1 1
1 0 0
0 0 0
0 1 0

19
 Operator Logika OR
Operator logika OR digunakan untuk menggabungkan dua atau lebih ekspresi
relasi untuk mendapatkan hasil rasional tunggal, operator / operasi OR dilambangkan
dengan menggunakan simbol "||", operasi OR hanya akan menghasilkan nilai 0 (salah)
jika semua ekspresi relasi yang dihubungkan bernilai salah, namun jika tidak, maka
operasi tersebut akan menghasilkan nilai 1 (benar). Berikut ini tabel yang menunjukkan
hasil dari operator OR.

X Y X || Y
1 1 1
1 0 1
0 0 0
0 1 1

 Operator Logika NOT (!)

Nilai yang dihasilkan dari operasi NOT adalah kebalikan dari nilai yang
dikandung dari ekspresi yang dituliskan. Jika nilai awal adalah 1 (benar), maka setelah
operasi NOT maka nilainya menjadi 0 (salah), begitu juga sebaliknya jika nilai awal
adalah 0 (salah), maka setelah operasi NOT maka nilainya menjadi 1 (benar).
Contoh:
Ekspresi Relasi A + 8 < 12
Jika menggunakan Operator Logika NOT, maka relasi diatas menjadi:
!(A+8 < 12)
Jika nilai A = 5, maka ekspresi tersebut memiliki nilai:
A + 8 < 12 → 5 + 8 < 12 → 13 < 12 → SALAH
Jika dilihat dari ekspresi diatas, karena hasil ekspresi mempunyai nilai SALAH, maka
jika digunakan operator logika NOT, ekspresi tersebut akan bernilai BENAR
!(A+8 < 12) → !(SALAH) → BENAR → 1

F. Operator Bitwise
Operator Bitwise adalah operator yang digunakan untuk memanipulasi data
dalam bentuk bit yang mewakili nilai-nilai yang mereka simpan. atau Operator Bitwise
juga dikenal sebagai operator yang berguna untuk melakukan operasi-operasi yang
berhubungan dengan manipulasi bit.
Yang termasuk dalam operator bitwise dalam C++ adalah seperti yang tampak
pada tabel dibawah ini:
Operator Jenis Operasi Contoh
| OR 1|0=1
& AND 1&0=0
^ Exclusive OR (XOR) 1^1=0
~ NOT ~1=0
>> Shift Right 16 >> 2 = 4
<< Shift Left 1 << 2 = 4

20
 Operator Bitwise | (OR)

Operator Bitwise OR dilambangkan dengan menggunakan simbol "|",


Operator ini digunakan untuk membandingkan bit dari dua operand.

X Y X || Y
1 1 1
1 0 1
0 0 0
0 1 1

 Operator Bitwise & (AND)

Operator Bitwise AND dilambangkan dengan menggunakan simbol "&",


Operator ini digunakan untuk membandingkan bit dari dua operand.

X Y X || Y
1 1 1
1 0 0
0 0 0
0 1 0

 Operator Bitwise ^ (Exclusive OR / XOR)

Operator Bitwise Exclusive OR dilambangkan dengan menggunakan simbol


"^", Operator ini digunakan untuk melakukan operasi Exclusive OR (XOR).

X Y X || Y
1 1 0
1 0 1
0 0 0
0 1 1

 Operator Bitwise ~ (NOT)

Operator Bitwise NOT dilambangkan dengan menggunakan simbol "~",


Operator ini digunakan untuk membalik nilai bit dari suatu operand.

Bit Operand / X ~X
1 0
0 1

21
 Operator Bitwise >> (Shift Right)

Operator Bitwise Shift Right dilambangkan dengan menggunakan simbol


">>", Operator ini digunakan untuk menggeser sejumlah bit ke kanan / melakukan
perpindahan bit ke arah kanan.

 Operator Bitwise << (Shift Left)

Operator Bitwise Shift Left dilambangkan dengan menggunakan simbol "<<",


Operator ini digunakan untuk menggeser sejumlah bit ke kiri / melakukan perpindahan
bit ke arah kiri.

G. Operasi String

String adalah untaian karekter dengan panjang tertentu. Merupakan susunan


dari elemen-elemaen tipe karakter. Karena sering dipakai dalam pemrograman, maka
string termasuk dalam tipe dasar. Semua konstanta string harus diapit tanda petik
tunggal. Misal : ‘Matematika’

 Fungsi pengolahan string

- Fungsi Strcat

Fungsi strcat digunakan untuk menggabungkan dua string menjadi satu.

- Fungsi Strcmp

Fungsi ini digunakan untuk membandingkan string pertama dengan string kedua. Hasil
dari fungsi ini bertipe data integer (int).

- Fungsi Strlen

Fungsi strlen digunakan untuk menghitung panjang karakter pada suatu string. Strlen
adalah fungsi yang bertipe data integer.

- Fungsi Strcpy

Fungsi strcpy digunakan untuk menyalin isi string ke suatu variabel.

- Fungsi Strupr

Fungsi strupr digunakan untuk mengubah semua karakter huruf yang terdapat pada
suatu variabel menjadi huruf besar semua (Uppercase).

- Fungsi Strlwr

Fungsi strlwr digunakan untuk mengubah semua karakter huruf yang terdapat pada
suatu variable menjadi huruf kecil semua (Lowercase).

 Fungsi Konversi String

22
- Fungsi atof
Digunakan untuk mengubah string(teks) angka menjadi sebuah bilangan numerik float.
Biasanya header yang digunakan untuk fungsi atof ini adalah : math.h.

- Fungsi atoi
Digunakan untuk mengubah string, angka menjadi sebuah bilangan numerik integer.
Header yang digunakan dalam menggunakan fungsi atoi ini adalah : stdlib.h.

- Fungsi atol
Digunakan untuk mengubah string(teks) angka menjadi sebuah bilangan numerik long
integer. Adapun header yang yang digunakan dalam fungsi atol adalah: stdlib.h.

- Fungsi strlwr
Fungsi strlwr ini biasanya digunakan untuk mengubah huruf kapital(huruf besar) dalam
string menjadi huruf kecil. Header yang harus anda tambahkan dalam menggunakan
fungsi strlwr adalah: string.h

- Fungsi strupr
Merupakan sebuah fungsi yang digunakan untuk mengubah setiap huruf kecil dalam
string menjadi huruf kapital. Header digunakan dalam menggunakan fungsi strupr
adalah string.h.

LATIHAN 3
Tentukan apa hasil numerik dari ekspresi relasi dan logika dibawah ini. Diberikan nilai
A = 4; B = 7 ; C = 3 ; K = 6; L = 5; M = 4
a. D = (5+ 3 > A && B – 3 > 4 + 3 || B + 3 <= 7 + 3)
b. D=K + 6 < M || (C * M < L && 3 * M – L > 0)
c. D=L + 6 < * 4 <= 3 * M + B
d. D=K + M || C * K < L && 3 * K – L > 0
e. D=A * 5<= 4 * M + B
f. D=K + 11 > A && L – 3 > 5* C

23
BAB 4
Operasi Penyeleksian Kondisi
Pernyataan Percabangan digunakan untuk memecahkan persoalan untuk
mengambil suatu keputusan diantara sekian pernyataan yang ada. Untuk keperluan
pengambilan keputusan, Borland
A. Pengertian IF
Fungsi if dalam bahasa pemograman bahasa c++ adalah untuk menjalankan
(mengeksekusi suatu program) yang apabila syaratnya atau syarat tertentu telah
terpenuhi yang mana bias terdiri atas satu keadaan (syarat) atau banyak keadaan
tergantung dari program tersebut.
1. Contoh Program Perintah IF Pada C++
Sebagai contoh, kita ambil kasus yang kemarin kita bahas , yaitu bagaimana
caranya agar suatu program dapat mengidentifikasi angka , dimana jika angka itu genap
maka program akan meng-output-kan "Angka genap ".
Berikut Listing Programnya
#include <iostream>
using namespace std;
int main()
{
int angka1;
cout <<"Masukkan angka = ";cin >> angka1;
if(angka1%2 ==0)
{cout<<angka1 << " adalah angka genap";}
cout <<"\nSelesai\n";
}
Berikut Penampakan Programnya:
Output program IF

Gambar 4.1
24
Penjelasan :
Cara kerja dari program tersebut, adalah JIKA setiap angka yang dimasukkan dibagi 2
dan mempunyai sisa pembagian 0, maka angka tersebut adalah angka genap. dan
setelah itu program akan meng-output-kan "Selesai", alur ini berjalan ketika kondisi
dalam perintah IF bernilai Benar (Gambar kiri). Namun jika kondisi bernilai salah atau
sisa pembagian tidak bernilai 0, maka program akan langsung meng-output-kan
"Selesai" (Gambar yang kanan). tanda "%" pada program, adalah tanda untuk operator
"mod" atau operator untuk mencari sisa hasil pembagian.

2. Contoh Program Perintah IF-ELSE Pada C++


Masih melanjutkan kasus sebelumnya, karena sebelumnya hanya untuk
mengidentifikasi angka genap saja, maka kali ini kita tambahkan untuk mencari angka
ganjil juga.
Berikut Listing programnya :
#include <iostream>
int main()
{
int angka1;
cout <<"Masukkan angka = ";cin >> angka1;
if(angka1%2 ==0)
{cout<<angka1 << " adalah angka genap";}
else
{cout <<angka1 << " adalah angka ganjil";}
cout <<"\nSelesai\n";
getch();}
Berikut Penampakan Programnya :
Output Program IF-ELSE

Gambar 4.

25
Penjelasan :
Dengan menggunakan program sebelumnya, kita tinggal menambahkan perintah "else"
dibawahnya, kemudian menambahkan setiap angka yang bukan genap, maka dia adalah
angka ganjil.

3. Contoh Program Perintah IF Bertingkat Pada C++


Untuk Perintah IF bertingkat, masih menggunakan kasus diatas, namun kita
tambahkan logika untuk mengidentifikasi apakah angka tersebut positif atau negatif.
Berikut Listing Programnya :
#include <iostream>
int main()
{
int angka1;
cout <<"Masukkan angka = ";cin >> angka1;
if(angka1<0)
{ if(angka1%2 ==0)
{ cout<<angka1 << " adalah angka negatif dan juga genap";}
else
{cout <<angka1 << " adalah angka negatif dan juga ganjil";}
}
else
{ if(angka1%2 ==0)
{cout<<angka1 << " adalah angka positif dan juga genap";}
else
{cout <<angka1 << " adalah angka positif dan juga ganjil";}
}
cout <<"\nSelesai\n";
getch();}
Berikut Penampakan Programnya :
Output Program IF bertingkat

26
Gambar 4. 4
Penjelasan :
Pada program di atas, untuk mengidentifikasi angka itu positif atau negatif, cukup
mudah yaitu kita tambahkan perinta IF dengan kondisi jika angka kurang dari 0 maka
angka itu pasti negatif, dan selain itu pasti angka positif. Maka untuk menggabungkan
antara identifikasi positif/negatif dengan identifikasi genap/ganjil, Kita tambahkan if
bertingkat, Pada Listing di atas, kode yang berwana hijau adalah perintah IF untuk
mengidentifikasi positif atau negatif, sedangkan yang berwarna kuning dan coklat
adalah perintah IF untuk mengidentifikasi genap atau ganjil.

4. Contoh Program Perintah swicth case C++


Switch case merupakan salah satu bentuk percabangan ,yang digunakan untuk
pilihan berjumlah banyak.tidak di anjurkan pada pilihan yang melibatkan jangkauan
(range) tetapi di anjurkan pada pilihan berupa konstanta.
Berikut ini adalah contoh program yang mengimplementasikan konsep
percabangan dengan menggunakann Pernyataan (statemen) Switch-Case. Dalam contoh
ini, kita akan membuat program yang dapat menentukan nama hari dari nilai bilangan
(nomor hari) yang di inputkan. Kode programnya dapat dilihat di bawah ini.
Contoh Program dengan Struktur Switch-Case
#include <iostream>
int main(){
int nrhari;
cout<<"Masukkan nomor hari (1 -> 7) : ";
cin>>nrhari;

switch(nrhari){
case 1:
cout<<"\nHari ke-"<<nrhari<<" adalah SENIN";
cout<<"\nMeskipun SENIN Tetap Semangat Ya";

27
break;
case 2:
cout<<"\nHari ke-"<<nrhari<<" adalah SELASA";
cout<<"\nSemangat Untuk Hari SELASA";
break;
case 3:
cout<<"\nHari ke-"<<nrhari<<" adalah RABU";
cout<<"\nUdah Hari RABU, Tetep Produktif Ya";
break;
case 4:
cout<<"\n Hari ke-"<<nrhari<<" adalah KAMIS";
cout<<"\nOrang Manis Terlahir Dihari KAMIS";
break;
case 5:
cout<<"\nHari ke-"<<nrhari<<" adalah JUMAT";
cout<<"\nUdah Hari JUMAT, Siap Mudik ?";
break;
case 6:
cout<<"\nHari ke-"<<nrhari<<" adalah SAPTU";
cout<<"\nHari SAPTU Mau Liburan Kemana ?";
break;
case 7:
cout<<"\nHari ke-"<<nrhari<<" adalah MINGGU";
cout<<"\nMari Tidur Seharian di Hari MINGGU";
break;
default:
cout<<"\nTidak terdapat nama hari ke-"<<nrhari;
cout<<"\nMungkin Kamu Kurang Piknik";
}
return 0;
getch();
}
Berikut Penampakan Programnya :
28
Output Program IF bertingkat

Gambar 4.5
Penjelasan: tipe data dari pernyataan harus karakter atau intenger.default
mengekspresikan statement alternatife yaitu jika nilai yang di masukan tidak sesuai
dengan nilai-nilai konstan yang telah didefinisikan.

LATIHAN 4
1. Buatlah program untuk menghitung nilai rata-rata dari seorang peserta, dengan
ketentuan sebagai berikut :
 Nama Peserta, Nilai I, Nilai II, diinput.
 Nilai Rata-rata merupakan hasil dari Nilai I, dan II dibagi dengan 2
 Ketentuan Juara
a) Jika nilai rata-rata yang dihasilkan lebih besar dari 80, maka menjadi Juara Umum
b) Jika nilai rata-rata yang dihasilkan lebih besar dari 75, maka menjadi Juara Kelas
c) Jika nilai rata-rata yang dihasilkan lebih besar dari 65, maka menjadi Juara
Harapan
d) Selain itu tidak juara
Tampilan yang diinginkan sebagai berikut:
Layar Masukkan
PROGRAM HITUNG NILAI RATA-RATA
Nama Peserta :
Nilai I :
Nilai II :
Layar Keluaran
Siswa yang bernama ...
Memperoleh nilai rata-rata ... dan menjadi juara -... dari hasil pertandingan yang
diikutinya.

29
BAB 5
PROSES PERULANGAN

A. Statement FOR

Statement FOR digunakan untuk menyatakan perulangan pernyataan FOR:

Jika FOR lebih dari satu maka harus di letakan di dalam tanda kurung pernyataan:
for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah )
{
pernyataan / perintah;
pernyataan / perintah;
pernyataan / perintah;
}
 Inisialisas : Merupakan bagian untuk memberikan nilai awal untuk variable
variabel tertentu.
 Syarat Pengulangan : Memegang kontrol terhadap pengulangan, karena bagian ini
yang akan menentukan suatu perulangan diteruskan atau dihentikan.
 Pengubah Nilai Pencacah : Mengatur kenaikan atau penurunan nilai pencacah.

Contoh-1

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
int a;
clrscr( );
for(a = 1; a <= 5; ++a)
cout<<"RISSA YUNISTIA MAULIDA"<<endl;
30
getch( );
}
Maka tampilan nya akan seperti ini :

Gambar 5.1
Contoh-2

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
int a;
clrscr( );
for(a = 1; a <= 30; ++a)
cout<<a;
getch( ); }
Hasil Outputnya :

Gambar 5.2

B. Pernyataan Nested - For


Pernyataaan Nested for adalah suatu perulangan for didalam perulangan for
yang lainnya. Bentuk umum pernyataan Nested for sebagai berikut :
for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah )
{
for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah)
31
{
pernyataan / perintah;
}
}
Contoh-3

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

Gambar 5.3

32
C. Perulangan Tak 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.

Contoh -4
#include<stdio.h>
#include<conio.h>
main( )
{
int bil;
clrscr( );
for (bil = 100; bil >=10; bil--)
printf("%d", bil);
getch( );
}
Maka yang akan di tampilkan nya :

Gambar 5.4
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 ++

33
D. Pernyataan While
Pernyataan while merupakan salah satu pernyataan yang berguna untuk
memproses suatu pernyataan atau beberapa pernyataan beberapa kali. Pernyataan while
memungkinkan statemen-statemen yang ada didalamnya tidak diakukan sama
while ( syarat )
{
Pernyataan / perintah ;
Pernyataan / perintah ;
}
Contoh-5
#include <stdio.h>
#include <conio.h>
main( )
{
int bil=5;
clrscr( );
while(bil<=30)
{
printf(" %d ",bil);
bil+=5; }
getch( ); }
Maka akan di tampilkan nya :

Gambar 5.5
E. Statement Do...While Karakteristik
a. Perulangan akan dilakukan minimal 1x terlebih dahulu, kemudian baru dilakukan
pengecekan terhadap kondisi, jika kondisi benar maka perulangan masih akan tetap
dilakukan.
b. Perulangan dengan do...while() akan dilakukan sampai kondisi false
Contoh-6

34
#include <stdio.h>
#include <conio.h>
main( )
{
int bil=1;
clrscr( );
while(bil<=20)
{
printf(" %d ",bil);
++bil; }
getch( ); }
Output yang akan dihasilkan :

Gambar 5.6
F. Pernyataan Break
Pernyataan break ini berfungsi untuk keluar dari struktur switch. Dan
pernyataan break juga berfungsi keluar dari perulangan ( for, while dan do-while ).
Contoh-7
#include <stdio.h>
#include <conio.h>
main( )
{
int bil = 1;
clrscr( );
do
{
if (bil >= 6)
break;
printf(" %d ",bil);
}
35
while(bil++);
getch( );
}

Output yang akan dihasilkan :

Gambar 5.7

LATIHAN 5

1. Buatlah program untuk menampilkan bilangan ganjil dari kecil ke besar sampai batas
tertentu sampai menemukan break, program selesai.

2. Bulatlah program untuk menghitung 20 deret bilangan genap dengan hasilnya :


2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20+22+24+26+28+30+32+34+36+38+40 =
420

36
BAB 6
ARRAY & SORTING

A. ARRAY
Variabel Larik atau lebih dikenal dengan ARRAY 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 variabel yang satu
dengan variabel yang lainnya.

Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan
tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu larik
disebut dengan elemen-elemen larik.
Letak urutan dari suatu elemen larik ditunjukkan oleh suatu subscript atau suatu index.

Menurut dimensinya, array dapat dibedakan menjadi 2, yaitu:

1. Array satu dimensi

Sebelum digunakan, variabel array perlu dideklarasikan terlebih dahulu.


Cara mendeklarasikan variabel array sama seperti deklarasi variabel yang lainnya,
hanya saja diikuti oleh suatu indek yang menunjukan jumlah maksimum data yang
disediakan.

Bentuk Umum pendeklarasian array:


Index array secara default dimulai dari 0
Deklarasi array :

Tipe_array nama_array[ukuran]

37
Contoh-1 :

#include <iostream.h>
#include <conio.h>
main()
{
int angka[4]={94,61,25,14};

for(int a=0;a<4;a++)
{
cout<<" Indeks Angka [ "<<a<<" ] = "<<angka[a];
cout<<endl;
}
getch();
}

Hasilnya :

Gambar 6.1

38
Contoh-2 :

#include <iostream.h>
#include <conio.h>
main()
{
char
mem[9][20]={"Xiumin","Lay","Suho","Baekhyun","Chen","Chanyeol","D.o","Kai","S
ehun"};

cout<<" Nama Personel "<<endl<<endl;


for(int m=0;m<9;m++)
{
cout<<m<<". "<<mem[m]<<endl;
}

getch();
}
Hasilnya

Gambar 6.2

39
2. Array dua dimensi
Array dimensi dua tersusun dalam bentuk baris dan kolom, dimana indeks
pertama menunjukan baris dan indeks kedua menunjukan kolom. Array dimensi dua
dapat digunakan seperti pendatan penjualan, pendataan nilai dan lain sebagainya.

Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah
buah kolom bentuknya dapat berupa matriks atau tabel.

Deklarasi array : Bentuk Umum pendeklarasian array

Tipe_array nama_array [baris][kolom]

Contoh-1 :

#include <iostream.h>
#include <conio.h>
main()
{

int a,b;
int angka[3][3]={ {24,25,94},
{12,14,61},
{ 4, 7,88}, };

for(a=0;a<3;a++)
{
for(b=0;b<3;b++)
{
cout<<" Indeks Angka [ "<<a<<" ][ "<<b<<" ] = "<<angka[a][b]<<endl;
}
}
getch();}
Hasilnya :
40
Gambar 6.3
Contoh-2 :
#include <iostream.h>
#include <conio.h>
main()
{
char nama[2][3][20]={ {"Park","Ooh","Kim"},
{"Chanyeol","Sehun","JongIn"}, };
cout<<endl<<nama[0][0]<<" "<<nama[1][0]<<endl;
cout<<nama[0][1]<<" "<<nama[1][1]<<endl;
cout<<nama[0][2]<<" "<<nama[1][2]<<endl;
getch();}
Hasilnya :

Gambar 6.4

41
B. SORTING

Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara
acak atau tidak teratur menjadi urut dan teratur menurut suatu aturan tertentu.

Biasanya pengurutan terbagi menjadi dua yaitu :


1. Ascending (pengurutan dari karakter/angka kecil ke karakter/angka besar)
2. Descending (pengurutan dari karakter/angka besar ke karakter/angka kecil)

Contoh Ascending :

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

int main(){
int A[5];
int j,k,i,temp;
int jmax,u=4;

cout<<"Masukkan nilai pada elemen array : "<<endl;


for(i=0;i<5;i++)
{
cout<<" A [ "<<i<<" ] = ";cin>>A[i];
}

for(j=0;j<5;j++)
{
jmax=0;
for(k=1;k<=u;k++)
if (A[k]>A[jmax])
jmax=k;
temp=A[u];
42
A[u]=A[jmax];
A[jmax]=temp;
u--;
}

cout<<"\n Nilai setelah diurutkan = ";

for(i=0;i<5;i++)
cout<<A[i]<<" ";

getch();
}

Hasilnya :

Gambar 6.5
Contoh Descending :

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

int main(){

43
int A[5];
int j,k,i,temp;
int jmin,u=4;

cout<<"Masukkan nilai pada elemen array : "<<endl;


for(i=0;i<5;i++)
{
cout<<" A [ "<<i<<" ] = ";cin>>A[i];
}

for(j=0;j<5;j++)
{
jmin=0;
for(k=1;k<=u;k++)
if (A[k]<A[jmin])
jmin=k;
temp=A[u];
A[u]=A[jmin];
A[jmin]=temp;
u--;
}

cout<<"\n Nilai setelah diurutkan = ";

for(i=0;i<5;i++)
cout<<A[i]<<" ";

getch();
}

44
Hasilnya :

Gambar 6.6

Jenis-jenis Sorting

a. Selection Sort
Tehnik pengurutan dengan cara pemilihan elemen atau proses kerja dengan
memilih elemen data terkecil untuk kemudian dibandingkan & ditukarkan dengan
elemen pada data awal, dan seterusnya sampai seluruh elemen shg akan menghasilkan
pola data yg telah disort.

Prinsip kerja dari teknik ini adalah :


1. Pengecekan dimulai data ke-1 sampai dengan data ke-n
2. Tentukan bilangan dengan Index terkecil dari data bilangan tersebut
3. Tukar bilangan dengan Index terkecil tersebut dengan bilangan pertama ( I = 1
) dari data bilangan tersebut
4. Lakukan langkah 2 dan 3 untuk bilangan berikutnya ( I= I+1 ) sampai
didapatkan urutan yg optimal.

45
Contoh :

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>
main()
{

int a[10],i,tmp,minindex,j;

cout<<"Selection Sort"<<endl<<endl;
cout<<" Masukkan data A :\n";
for(i=0;i<5;i++)
{
cout<<" A [ "<<i<<" ] = ";cin>>a[i];
}
cout<<"\n Data yang akan disorting : ";
for(i=0;i<5;i++)
{
cout<<setw(4)<<a[i];
}
for(i=0;i<5-1;i++) //perulangan iterasi
{
minindex=i;
for(j=i+1;j<5;j++) //perulangan membandingkan data
{
if(a[minindex]>a[j])
{
minindex=j;
}
}
tmp=a[i];
46
a[i]=a[minindex];
a[minindex]=tmp;
}
cout<<"\n\n Hasil Sorting : ";
for(i=0;i<5;i++)
{
cout<<setw(4)<<a[i];
}
getch();
}

Hasilnya :

Gambar 6.7

b. Bubble Sort

Prinsip Kerja dari Bubble Sort adalah :

1. Pengecekan mulai dari data ke-1 sampai data ke-n


2. Bandingkan data ke-n dengan data sebelumnya (n-1)
3. Jika lebih kecil maka pindahkan bilangan tersebut dengan bilangan yg ada didepannya (
sebelumnya ) satu persatu (n-1,n-2,n-3,....dst)
4. Jika lebih besar maka tidak terjadi pemindahan
5. Ulangi langkah 2 dan 3 s/d sort optimal.

47
Contoh :
#include <iostream>
#include <conio.h>

int data[10],data2[10];
int d;
void tukar(int a,int b)
{
int t;
t=data[b];
data[b]=data[a];
data[a]=t;
}

void Input()
{
cout<<"Masukkan jumlah data = ";cin>>d;
cout<<endl;

for(int i=0;i<d;i++)
{
cout<<"Masukkan data ke - "<<(i+1)<<" = ";cin>>data[i];
data2[i]=data[i];
}
cout<<endl;
}

void Tampil()
{
for(int i=0;i<d;i++)
{
cout<<data[i]<<" ";
}
48
cout<<endl<<endl;
}
void bubble_sort()
{
for(int i=1;i<d;i++)
{ for(int j=d-1;j>=i;j--)
{
if(data[j]<data[j-1]) tukar(j,j-1); }
Tampil();
}
cout<<endl; }
main()
{
cout<<" Bubble Sort"<<endl<<endl;
Input();
cout<<"Proses"<<endl<<endl;
Tampil();
bubble_sort();
getch(); }

Hasilnya :

Gambar 6.8

49
c. Insertion Sort

Prinsip Kerja Insertion Sort adalah

1. Pengecekan mulai dari data ke-1 sampai data ke-n


2. Bandingkan data ke-I ( I = data ke-2 s/d data ke-n )
3. Bandingkan data ke-I tersebut dengan data sebelumnya (I-1), Jika lebih kecil maka data
tersebut dapat disisipkan ke data awal sesuai dgn posisisi yg seharusnya
4. Lakukan langkah 2 dan 3 untuk bilangan berikutnya ( I= I+1 ) sampai didapatkan
urutan yg optimal.
Contoh :

#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 insertion_sort()
{
int temp,i,j;
for(i=1;i<=n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j--;

50
}
data[j+1] = temp;
}
}
void main()
{
cout<<"INSERTION SORT"<<endl;
cout<<endl;
cout<<" Masukkan Jumlah Data : ";cin>>n;

for(int i=1;i<=n;i++)
{
cout<<" Masukkan data ke "<<i<<" : ";
cin>>data[i];
data2[i]=data[i];}
insertion_sort();
cout<<endl<<endl;
cout<<" Data Setelah di Sort : ";
for(int i=1; i<=n; i++)
{
cout<<" "<<data[i];}
getch();}

Hasilnya :

Gambar 6.9
51
LATIHAN 6

Buatlah sebuah program berupa memasukkan nilai dari 10 orang mahasiswa dengan
menggunakan array.

Masukkan jumlah Mahasiswa : < input >


Masukkan Nama Mahasiswa : < input >
Masukkan Nilai Mahasiswa : < input >

Nama Mahasiwa : < output >


Nilai : < output >

Nama Mahasiwa : < output >


Nilai : < output >

Nama Mahasiwa : < output >


Nilai : < output >

52
BAB 7

POINTER

A. PENGERTIAN POINTER
Suatu pointer (variable penunjuk) adalah suatu variable yang berisi dengan alamat
lokasi, yaitu suatu memori tertentu.

Dalam pointer, terdapat 2 jenis operator yang biasa digunakan.


1. Operator Alamat / Dereference Operator(&)
Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan
pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan.
Dalam C++, untuk mengetahui alamat tempat penyimpanan data, dapat digunakan
tanda ampersand (&) yang dapat diartikan “alamat”.
Contoh :
Ayu = &Wulan;
Dibaca: isi variabel Ayu sama dengan alamat Wulan
2. Operator Reference (*)
Penggunaan operator ini, berarti mengakses nilai sebuah alamat yang ditunjuk
oleh variabel pointer.
Contoh :
Ayu=*Wulan;
Dibaca: Ayu sama dengan nilai yang ditunjuk oleh Wulan.

B. Deklarasi Variabel Pointer

tipe * nama_variabel_pointer;

Tipe merupakan tipe data yang akan ditunjuk oleh variabel, bukan tipe data dari pointer
tersebut.

53
Contoh 7.1

#include <iostream.h>
#include <conio.h>
main ()
{
int value1 = 5, value2 = 15;
int *mypointer;
mypointer = &value1;
*mypointer = 10;
mypointer = &value2;
*mypointer = 20;
cout << "value1==" << value1 << "\n value2==" << value2;
getch();
}

Hasil Output :

Gambar 7.1

C. Pointer dan Array (pointer to array)


Hubungan antara pointer dan array pada C++ sangatlah erat. Sebab
sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer.
Contoh 7.2 #include <conio.h>
#include <iostream.h>
main()
{
int numbers[5];
int *p;
p = numbers; *p = 10;
p++; *p =20;
p = &numbers[2]; *p = 30;
p = numbers + 3; *p = 40;
p = numbers; *(p+4) = 50;
for (int n=0; n<5; n++)
cout << numbers[n] << ", ";
getch();
} 54
Hasil Output :

Gambar 7.2

D. Pointer dan String (pointer to string)

Hubungan pointer dan string ditunjukkan pada program berikut.

Contoh 7.3

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

main( )
{
char *kantor = "Sedang Rapat";
cout<<endl;
cout<<" String yang muncul di ruangan adalah : "<<kantor<<endl;
getch();
}

Hasil Output:

Gambar 7.3

E. Pointer menunjuk Pointer (Pointer to Pointer)

Suatu pointer bisa saja menunjuk ke pointer lain. Gambar berikut memberikan
contoh mengenai pointer menunjuk pointer.

55
Pointer Variabel
Alamat Nilai

Gambar 7.4 Single Indrection

Pointer Pointer Variabel

Alamat Alamat Nilai

Gambar 7.5 Multi Indrection

Pada Single Inderection, pointer langsung menunjukkan ke alamat dari suatu variabel.
Pada Multi Inderction, terdapat pointer yang menunjukkan ke pointer yang sedang
menunjukkan ke alamat dari suatu variabel. Untuk mendeklarasikan pointer ke pointer,
digunakan tanda asterisk sebanyak dua kali (“ “).

Contoh 7.4

Contoh program untuk pointer yang menunjuk pointer */


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

main()
{
int X = 40;
int *n1;
int **n2;

n1 = &X;
n2 = &n1;

cout<<" Nilai X : "<<X<<endl;


cout<<" Nilai *n1 : "<<*n1<<endl;
cout<<" Nilai *n2 : "<<*n2<<endl;
cout<<" Nilai **n2 : "<<**n2<<endl;

cout<<" Nilai &X : "<<&X<<endl;


cout<<" Nilai N1 : "<<n1<<endl;
cout<<" Nilai N2 : "<<n2<<endl;
getch();
}
ƒ
56
Output :

Gambar 7.6

LATIHAN 7

1. Buat program untuk menampilkan sebaris string seperti contoh berikut ;

“Selamat LIBURAN“ menggunakan variable pointer (pointer to string).

2. Buat program untuk mencetak banyaknya karakter dari kalimat:

“Saya Cantik dari Lahir” dengan menggunakan variabel pointer .

57
BAB 8

Macro Dan File Header

A. Preprocessor Directives
Preprocessor Directivies adalah perintah-perintah khusus yang ditujukan untuk
preprocessor. Semua penggunaan preprocessor directivies dimulai dengan tanda #.
Karena preprocessor adalah perintah untuk preprocessornya C++ maka preprocessor
directivities tidak diakhiri dengan titik koma (;) seperti yang biasanya.
Preprocessor directivies ini akan mengubah program pada saat di compile saja,
jadi perubahannnya hanya bersifat sementara. Setelah selesai maka program akan
kembali seperti semula. Beberapa perintah preprocessor akan dibahas dibagian ini :

8.1.1. #define
Digunakan untuk mendefinisikan suatu identifier atau nilai tertentu kepada suatu
karakter konstanta. Bentuk umum dari preprocessor ini adalah :
#define nama_konstanta teks
Contoh :
#define NILAI 80
Ket : NILAI merupakan nama_konstanta
80 merupakan Teks
Dalam penulisan nama_konstanta sebaiknya ditulis dengan huruf besar untuk
membedakannya dengan nama_variabel dan Teks merupakan nilai dari nama_konstanta
tersebut. Teks dapat berupa numerik, karakter, string, pernyataan, fungsi sederhana.
Dalam contoh diatas diketahui untuk nama_konstanta adalah NILAI dan teks
adalah 80 dan itu merupakan nilai tetap. Artinya, di dalam program jika kita
memasukkan kata NILAI, maka akan otomatis keluar angka 80.

Contoh Program C++ menggunakan #define :


CONTOH 1 /*Program Penggunaan #define*/
#include<conio.>
#include<iostream.>
#define NILAI 80

58
main()
{
clrscr();
int nilai;
nilai=NILAI;
cout<<”Nilai Taehyung adalah “<<nilai<<endl;
getch();
}
Dan tampilan output programnya :

Gambar 8.1

CONTOH 2 /* Program Penggunaan #define */


#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#define awal {
#define akhir }
#define mulai() main()
#define cetak cout
#define isi cin
#define hapus() clrscr()
#define tahan() getch()
#define HITUNG_LABA (penr-peng)
mulai()
awal
int penr,peng,hitung_laba;
hapus();
cetak<<"Program Penggunaan #define"<<endl;
cetak<<"Masukkan Total Penerimaan = ";isi>>penr;

59
cetak<<"Masukkan Total Pengeluaran = ";isi>>peng;
hitung_laba = HITUNG_LABA;
cetak<<"Hasil Laba adalah : "<<hitung_laba;
tahan();
akhir

Hasil output programnya :

Gambar 8.2
8.1.2. #include
Digunakan untuk memasukkan/menyertakan file-file header ke dalam program
yang akan dibuat. Penulisan #include ada 2 macam yaitu :
1. #include “file_header”
Jika meng compile, maka pertama kali si compiler akan mencari file header yang telah
disebutkan pada directori yang aktif dan jika tidak ditemukan akan mencari lagi pada
directori file header tersebut berada. Contoh #include“iostream.h” #include“conio.h”
2. #include <file_header>
Compiler akan mencari file header yang disebutkan pada directori yang ada file
headernya, kecuali pada directori yang sedang aktif. Contoh #include<conio.h>
#include<stdio.h>

8.1.3. #if - #endif


Digunakan untuk meng compile jika pernyataan kondisi pada #if bernilai
benar, jika salah maka diabaikan. Pernyataan kondisi berupa konstanta yang
dideklarasikan dengan #define. Bentuk penulisan
#if ekspresi-konstanta
penyataan;
#endif
CONTOH 3 /*Penggunaan #if - #endif */
#include <conio.h>
#include <stdio.h>
60
#define L 10
main()
{
#if L != 5
printf ("Jika tidak sama dengan Lima");
#endif
getch();}

Hasil output programnya :

Gambar 8.3
8.1.4. #if - #else - #endif
Digunakan untuk meng kompilasi jika pernyataan kondisi pada #if bernilai
benar, jika #if bernilai salah maka pernyataan #else dikompilasi. Penggunaan
preprocessor ini sama hal nya dengan pnggunaan if-else pada program biasa.
Pernyataan kondisinya berupa ekspresi konstanta yang di deklarasikan menggunakan
#define.
Bentuk Penulisan #if ekspresi-konstanta
Penyataan1;
#else
Penyataan2;
#endif

CONTOH 4 /*Penggunaan #if - #else - #endif*/

#include <iostream.h>
#include <conio.h>
#define NILAI 80
main()
{
#if NILAI > 75
61
cout <<"Selamat Anda LULUS"<<endl;
#else
cout <<"Maaf, Anda Tidak LULUS"<<endl;
#endif
getch(); }
Hasil output programnya :

Gambar 8.4
8.1.5. #elif
Digunakan untuk mengkompilasi dari pernyataan bertingkat. Dalam hal ini
#elif sama halnya seperti #elseif yang merupakan kombinasi dari #if dan #else. Perintah
dijalankan sesuai dengan kondisi yang telah ditentukan, Hasil hanya dapat dijalankan
sesuai dengan ketentuan yang benar. Bentuk #elif diikuti oleh ekspresi-konstanta.
Bentuk Penulisan #if ekspresi-konstanta-1
penyataan-1;
#elif ekspresi-konstanta-2
penyataan-2;
# elif ekspresi-konstanta-n
penyataan-n;
#endif

CONTOH 5 /*Penggunaan #elif*/ #include <iostream.h>

#include <conio.h>
#define B 7
main( )
{
#if B > 12
cout<<"Lebih Besar dari Dua Belas"<<endl;
#elif B == 12
cout<<"Sama Dengan Dua Belas"<<endl;
62
#else B < 12
cout<<"Lebih Kecil dari Dua Belas"<<endl;
#endif
getch(); }

Hasil output programnya :

Gambar 8.5
8.1.6. #undef
Digunakan untuk menghilangkan nilai yang telah didefiniskan dari daftar suatu definisi.

CONTOH 6 /*Penggunaan #undef*/

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#define HUTANG_PENJ 10000000
#if HUTANG_PENJ>20000000
#undef HUTANG_PENJ //--> menghilangkan HUTANG_PENJ
#define HUTANG_PENJ 20000000
#elsif HUTANG_PENJ <50000
#undef HUTANG_PENJ //--> menghilangkan HUTANG_PENJ
#define HUTANG_PENJ 50000
#else
#undef HUTANG_PENJ //--> menghilangkan HUTANG_PENJ
#define HUTANG_PENJ 50000
#endif
main( )
{
char str[HUTANG_PENJ];
cout<<HUTANG_PENJ;

63
getch();}
Hasil output programnya :

Gambar 8.6
8.1.7. #ifdef - # ifndef
Preprocessor ini memberikan bagian dari program yang akan di compile, hal
ini dapat dilakukan jika sudah konstanta didefiniskan pada bagian #define, hal ini
merupakan suatu parameter (ukuran yang harus diperkirakan) yang khusus yang harus
terdefinisi. Bentuk umum penulisan sebagai berikut:
#ifdef
nama-konstanta pernyataan;
#endif
Ket: nama-konstanta harus terdefinisi, jika tidak pernyataan akan diabaikan.

CONTOH 7 //*Penggunaan #ifdef dan #ifndef *//


#include<iostream.h>
#include<conio.h>
#define BTS1 "TAEHYUNG"
#define BTS2 "JIMIN"
main( )
{
#ifdef BTS1
cout<<"Lelaki bernama "<<BTS1<<" visual di Bangtan Boys";
#else
#ifndef BTS2
cout<<"Lelaki bernama "<<BTS1<<" "<<BTS2;
cout<<" member Bangtan Boys";
#else
cout<<"Lelaki bernama "<<BTS2<<" dancer di Bangtan Boys";
#endif

64
#endif
getch();
}
Contoh output programnya :

Gambar 8.7
8.1.8. Pembuatan File Header
File header adalah suatu file yang berisikan deklarasi fungsi dan definisi
konstanta, dan file yang berakhiran .h . Walaupun C++ menyediakan file-file header, kita
juga bisa membuat file header sendiri, dengan cara yang sama seperti saat kita membuat
file editor. Saat kita membuat file header, jangan lupa menyimpan file header tersebut
menggunakan akhiran .h .

Cara membuat file header sendiri adalah :


1. Buat program file header terlebih dahulu, kemudia simpan dengan nama coba.h, pada
folder kerja, folder include. Contohnya :
CONTOH 8 /* coba.h contoh pembuatan file header untuk pengaturan */
#define first {
#define last }
#define go( ) main( )
#define cetak cout
#define tampil cprintf
#define masuk scanf
#define isi cin
#define lain else
#define hapus( ) clrscr( )
#define jika if
#define warna textcolor
#define tahan getche( )

2. Setelah disimpan pada direktori C:\BC5\INCLUDE\... , selanjutnya compile file coba.h

65
3. Lalu buatlah program, kemudian gunakan file header yang sudah anda buat dan simpan
dengan nama hasil.cpp
Contoh-9 /* program dengan file header sendiri */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include"coba.h"
go( )
first
int angka;
hapus( );
warna(8);
tampil("\nPROGRAM MEMBER BTS\n");
cetak<<endl;
cetak<<"1. Kim Taehyung"<<endl;
cetak<<"2. Park Jimin"<<endl;
cetak<<"\nMasukkan Pilihan Anda : ";isi>>angka;

jika(angka==1)
{cetak<<"\nAnda memilih Kim Taehyung";}
lain jika(angka==2)
{cetak<<"\nAnda memilih Park Jimin";}
lain
{cetak<<"\nPilihan yang anda masukan salah";}
tahan;
last
Hasil output programnya :

Gambar 8.9

66
BAB 9
FUNGSI ( Function )

A. Pengertian Fungsi
Fungsi (Function) merupakan blok dari kode yang dirancang untuk
melaksanakan tugas khusus. Kegunaan dari fungsi ini adalah untuk:
- Mengurangi pengulangan penulisan program yang berulangan atau sama.
- Program menjadi lebih terstruktur, sehingga mudah dipahami dan dapat lebih
dikembangkan.
Fungsi-fungsi yang sudah kita kenal sebelumnya adalah fungsi main(), yang
bersifat mutlak, karena fungsi ini program akan dimulai, sebagai contoh yang lainnya
fungsi printf(), cout() yang mempunyai tugas untuk menampilkan informasi atau data
kelayar dan masih banyak lainnya

B. Stuktur Fungsi
Sebuah fungsi sederhana mempunyai bentuk tulisan berikut :
nama_fungsi(argumen)
{
..... pernyataan/perintah;
..... pernyataan/perintah;
..... pernyataan/perintah;
}
Keterangan:
- Nama fungsi, boleh dituliskan secara bebas dengan ketentuan, tidak
menggunakan spasi dan nama-nama fungsi yang mempunyai arti sendiri.
- Argumen, diletakan diantara tanda kurung “( )” yang terletak dibelakang nama
fungsi. Argumen boleh diisi dengan suatu data atau dibiarkan kosong.
- Pernyataan / perintah, diletakan diantara tanda kurung ‘{ }’.
Sejauh ini kamu telah berlatih dengan membuat program dalam fungsi utama
alias fungsi main(). Bagaimana jika program yang kamu buat merupakan program yang
kompleks? Apakah kamu akan menggunakan fungsi main saja untuk semua tugas?
tentu saja ini akan membuat kamu mengalami kesulitan dalam melakukan
pengembangan serta pada saat membaca struktur program di tahap debugging.
Untuk mengatasi masalah tersebut, dalam pemrograman C++ menggunakan
pendekatan fungsi, dimana fungsi digunakan untuk membagi program berdasarkan
bagian-bagian tertentu yang memiliki tugasnya masing-masing. Tentu saja semua
fungsi yang bakalan kamu buat tidak akan berjalan sendiri-sendiri namun bekerja atas
dasar panggilan atau koordinasi fungsi utama atau fungsi main().
Nah, fungsi dalam pemrograman C++ dapat kamu deklarasikan dengan menggunakan sintaks
berikut ini:
67
Komponen dalam sebuah fungsi itu:

1. Suatu fungsi jelas memiliki tipe. Tipe suatu fungsi menentukan nilai kembalian dari
fungsi tersebut. Suatu fungsi dengan tipe int (integer) akan memberikan kembalian/
return berupa nilai bertipe integer dari pemrosesan yang sudah dilakukannya. Berbeda
dengan tipe void, dimana tipe fungsi ini tidak memiliki nilai kembalian atau dapat
dikatakan fungsi void hanya menjalankan rutin program saja.
2. Nama_fungsi merupakan pengenal suatu fungsi. Nama_fungsi akan sangat berguna
dan wajib disertakan karena sebagai basis pemanggilan.
3. Parameter merupakan variabel penampung input suatu fungsi. Dapat dikatakan bahwa
parameter merupakan satu-satunya gerbang input dan pertukaran nilai antara suatu
fungsi dengan dunia luar (fungsi main).
4. Return merupakan instruksi yang berguna mengembalikan hasil kerja suatu fungsi,
untuk dapat digunakan di dunia luar (fungsi main).

Agar kamu semakin paham dengan apa yang sudah di jelaskan di atas, maka perhatikan
contoh berikut ini:
//Contoh Fungsi Luas & Lebar Lingkaran
#include <conio.h>
#include <iostream.h>
int hitung_luas (int panjang, int lebar){
int luas = panjang*lebar;
return luas;
}
int main()
{
int a,b,hasil;
cout<<endl;
cout<<" Program Hitung Luas Persegi Panjang"<<endl;
cout<<" --------------------------------------"<<endl;
cout<<" Masukan Nilai Panjang : ";cin>>a;
cout<<" Masukan Nilai Lebar : ";cin>>b;
hasil = hitung_luas(a,b);
cout<<" Luas Persegi Panjang Adalah : "<<hasil<<endl;
getch(); }

68
Program di atas merupakan program yang berfungsi menghitung luas persegi
panjang, dengan memanfaatkan sebuah fungsi. Kita buat fungsi hitung_luas dengan tipe
int (integer). Parameter yang terdapat pada fungsi hutung_luas adalah panjang, dan
lebar dengan masing-masing bertipe data integer. Variabel luas kita deklarasikan di
dalam fungsi dan memiliki nilai berupa perkalian panjang dan lebar. Nilai luas
kemudian diumpan sebagai nilai akhir pemrosesan dengan menggunakan instruksi
return pada baris ke-enam.
Pada baris ke-17 yaitu di dalam fungsi main(), kita panggil fungsi hitung_luas
dan diberikan nilai parameter berupa variabel a, dan b. Nilai variabel a dan b pada baris
sebelumnya menampung nilai panjang dan lebar yang diinputkan user. Pada baris 17
pula, hasil umpan balik (return) fungsi hitung_luas, mimin tampung pada variabel hasil
untuk kemudian dicetak pada baris ke-18 untuk melihat hasilnya.
Berikut adalah hasil output program:

Gambar 9.1

Fungsi Void
Seperti yang sudah Kita jelaskan di atas, terdapat fungsi dengan tipe void,
Fungsi dengan tipe void tidak akan mengembalikan nilai apapun seperti fungsi yang
sudah kita contohkan di atas. Fungsi void biasanya digunakan untuk menjalankan rutin
program tertentu saja.
Berikut contoh kode programnya:
#include <iostream>
#include <stdio.h>
#include <string>
#include <conio.h>
int cetak (string kata){
cout<<kata<<endl;
}
main()
{
string input;
cout<<endl;
cout<<"Masukkan kata : ";cin>>input;
cetak(input);
69
getch();
}
Program di atas, merupakan program yang memanfaatkan fungsi void untuk mencetak data
yang kamu masukkan. Kamu bisa lihat tidak ada instruksi return dalam fungsi cetak tersebut.

Berikut hasil output programnya:

Gambar 9.2

Fungsi Overload
Suatu fungsi dalam program yang kamu buat bisa memiliki nama yang sama.
Terus bagaimana cara manggilnya ?, kalau namanya aja sama? Apa nanti fungsi utama
tidak bingung dalam melakukan pemanggilan? Oke, gini jadi yang membedakan suatu
fungsi adalah parameternya, sehingga program utama atau main() tidak akan salah
panggil dan mendapatkan nilai yang salah walaupun namanya sama. Nih buat lebih
memperjelas,
Berikut contohkan kode programnya:
#include <stdio.h>
#include <conio.h>
#include <iostream>
void fungsiOverload (void){
cout<<endl;
cout<<" Ini Merupakan fungsi overload"<<endl;}
int fungsiOverload (int bil1, int bil2){
int operasi;
operasi = bil1*bil2;
return operasi;}
int main()
{ fungsiOverload();
cout<<" Hasil : "<<fungsiOverload(3,5)<<endl;
getch();
}
Pada program di atas, kita membuat dua buah fungsi dengan nama yang sama yaitu
“fungsiOverload”. Fungsi pertama berfungsi mencetak kata “Ini Merupakan fungsi overload“,
sedangkan fungsi kedua bertugas melakukan perkalian dua buah bilangan. Kamu bisa lihat pada
baris 14 dan 15 bagaimana kedua fungsi yang memiliki nama beda namun dipanggil dengan
cara yang berbeda yaitu dari parameternya.

70
Berikut adalah hasil output programnya:

Gambar 9.3

Fungsi Prototype
Fungsi prototype atau prototype function sebenarnya merupakan sebuah
variasi gaya dalam mendeklarasikan sebuah fungsi. Nah coba kamu perhatikan semua
fungsi yang sudah kita jabarkan dan jelaskan panjang kali lebar di atas, hehehe. Semua
fungsi tersebut dideklarasikan sebelum fungsi main(). Nah kenapa kok harus
dideklarasikan di awal atau sebelum fungsi main()? Suatu sub fungsi dideklarasikan
diawal suatu fungsi main() dengan tujuan agar fungsi main dapat mengenali fungsi-
fungsi yang ada. Bagaimana kalau suatu fungsi berada sesudah fungsi main()? jelas
bahwa error akan terjadi karena fungsi main tidak mengenali suatu fungsi yang hendak
dipanggil dalam fungsi utama.
Untuk menanggulangi hal tersebut, dalam pemrograman C++ dikenal
istilah prototype fungction, dimana kamu wajib mendelarasikan nama fungsi, jenis
fungsi, dan parameternya saja sebelum fungsi main agar dikenali oleh program utama.
Untuk selanjutnya kamu bebas menyusun isi suatu fungsi mengenai apa saja yang
hendak dilakukan dengan fungsi tersebut serta meletakanya setelah fungsi main().
Berikut contohnya kita gunakan fungsi yang sudah ada di atas:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int hitung_luas (int panjang, int lebar); // Prototype Funcion
int hitung_luas (int panjang, int lebar){
int luas = panjang*lebar;
return luas; }
int main()
{
int a,b,hasil;
cout<<endl;
cout<<" Program Hitung Luas Persegi Panjang"<<endl;
cout<<" -----------------------------------"<<endl;
cout<<" Masukkan nilai panjang : "; cin>>a;
cout<<" Masukkan nilai lebar : "; cin>>b;
hasil = hitung_luas(a,b);
cout<<" Luas persegi panjang adalah : "<<hasil<<endl;
getch();
}
71
Hasil Output :

Gambar 9.5

Fungsi Inline
Fungsi inline merupakan metode yang digunakan untuk mempercepat
pemanggilan suatu fungsi. Biasanya fungsi yang diberikan atribut inline merupakan
fungsi yang berada di dalam loop atau dipanggil secara berulang kali. Dengan
metode inline, suatu fungsi akan aktif dalam memori sehingga mempercepat
pemanggilan blok fungsi untuk diproses. Untuk mengaplikasikan fungsi inline cukup
mudah yaitu dengan menambahkan atribut inline sebelum tipe fungsi. Berikut adalah
sintaksnya:

LATIHAN 9

1. Buatlah program untuk menghitung besarnya Diskon yang diberikan atas besanya
sejumlah pembelian, dengan ketentuan sebagai berikut :
i. Jika belanja dibawah Rp. 2,000,000 , maka tidak mendapat diskon.
ii. Jika belanja dimulai dari Rp. 2,000,000 , sampai dengan Rp. 10.000.000, maka
mendapat diskon sebesar 15%.
iii. Jika belanja diatas Rp. 4.000.000, maka mendapat diskon sebesar 30%.
Fungsi yang harus dibuat potong() untuk menghitung besar potongan yang akan
diberikan. Dengan tampilan yang diinginkan sebagai berikut:

Program Hitung Potongan.


Besar pembelian barang Rp. ………. <di input >
Besar diskon yang diberikan Rp. ………< hasil proses >
Besar harga yang harus dibayarkan Rp. ………< hasil proses >

72
BAB 10

STRUKTUR

Struktur (struct) sendiri adalah kumpulan dari variabel yang dinyatakan


dengan sebuah nama , dengan sifat setiap variabel dapat memiliki tipe yang berlainan,
strukutur merupakan suatu program yang memerlukan berbagai tipe data dengan nama
variabel yang banyak pula.

MENDEKLARASIKAN STRUCT
struct struct
nama_tipe_struktur {
{ elemen_struktur;
elemen_struktur;
.....
.....
atau .....
.....
} nama_tipe_struktur;
};

CONTOH
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
struct
{
char nik[10];
char nama[15];
float nilai;
} karyawan;
clrscr();
cout<<"masukan NIK = ";cin>>karyawan.nik;
cout<<"masukan Nama = ";cin>>karyawan.nama;
cout<<"masukan Nilai Test = ";cin>>karyawan.nilai;
cout<<”\n\nData Yang di Inputkan adalah : \n\n”;
cout<<"NIK = "<<karyawan.nik<<endl;
cout<<"Nama = "<<karyawan.nama<<endl;
cout<<"Nilai Test = "<<karyawan.nilai<<endl;
getch();
}

73
Output yang akan dihasilkan, dari program contoh diatas adalah :

Gambar 10.1

CONTOH #include<conio.h>
#include<stdio.h>
#include<iostream.h>
main( )
{
struct data
{
char nik[10],nama[15];
char prestasi[20];
};
clrscr( );
data karyawan;
cout<<"masukan NIK : ";cin>>karyawan.nik;
cout<<"masukan NAMA : ";cin>>karyawan.nama;
cout<<"masukan PRESTASI : ";cin>>karyawan.prestasi;
cout<<"\n\n Data yang Anda Inputkan Adalah : "<<endl<<endl;
cout<<"NIK : "<<karyawan.nik<<endl;
cout<<"NAMA: "<<karyawan.nama<<endl;
cout<<"PRESTASI: "<<karyawan.prestasi<<endl;
getch( ); }

Output yang akan dihasilkan, dari program contoh diatas adalah :

Gambar 10.2

74
NESTED STRUCTURE
Nested Structure merupakan suatu Structure dapat digunakan didalam
structure yang lainnya, atau biasa disebut dengan structure di dalam structure.

CONTOH
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
struct dtmhs
{
char nim[5],nama[15];
};
struct dtnil
{
float nil1;
float nil2;
};
struct
{
struct dtmhs mhs;
struct dtnil nil;
} nilai;
clrscr();
cout<<"masukan NIM = "; cin>>nilai.mhs.nim;
cout<<"masukan Nama = "; cin>>nilai.mhs.nama;
cout<<"masukan Nilai UTS = "; cin>>nilai.nil.nil1;
cout<<"masukan Nilai UAS = "; cin>>nilai.nil.nil2;
cout<<”\n\nData yang di Inputkan adalah : \n\n”;
cout<<"NIM = "<<nilai.mhs.nim<<endl;
cout<<"Nama = "<<nilai.mhs.nama<<endl;
cout<<"Nilai UTS = "<<nilai.nil.nil1<<endl;
cout<<"Nilai UAS = "<<nilai.nil.nil2<<endl;
cout<<endl;

getch();
return(0);
}

75
Output yang akan dihasilkan, dari program contoh diatas adalah :

Gambar 10.3

STRUCTURE DENGAN ARRAY

Sebuah struct yang di dalamnya tedapat variable dengan tipe data array.

struct
{
elemen_struktur ;
…………………. ;
} nama_tipe_struktur[jml_index];

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

76
clrscr();
for(i=1; i<=2; i++)
{
cout<<"masukan NIM = "; cin>>mhs[i].nim;
cout<<"masukan Nama = "; cin>>mhs[i].nama;
cout<<"masukan Nilai Akhir = "; cin>>mhs[i].nilai;
}
cout<<endl;
cout<<"data Mahasiswa"<<endl;
for(i=1; i<=2; i++)
{
cout<<"Data Ke - "<<i<<endl;
cout<<"NIM = "<<mhs[i].nim<<endl;
cout<<"Nama = "<<mhs[i].nama<<endl;
cout<<"Nilai Akhir = "<<mhs[i].nilai<<endl;
cout<<endl;
}
getch();
}

Output yang akan dihasilkan, dari program contoh diatas adalah :

Gambar 10.4

77
STRUCTURE DENGAN FUNGTION

#include<stdio.h> cout<<endl;
#include<conio.h> }
#include<iostream.h>
char* ket(float n); getch();
main() }
{ char* ket(float n)
int i, j=1, k=1; {
struct if(n > 65)
{ cout<< "Lulus";
char nim[5]; else
char nama[15]; cout<< "Gagal";
float nilai; }
} mhs[5];
clrscr();
for(i=0; i<2; i++)
{ cout<<"Data Ke - "<<j++<<endl;
cout<<"masukan NIM = ";
cin>>mhs[i].nim;
cout<<"masukan Nama = ";
cin>>mhs[i].nama;
cout<<"masukan Nilai Akhir = ";
cin>>mhs[i].nilai;
cout<<endl; }
clrscr();
for(i=0; i<2; i++)
{ cout<<"Data Ke - "<<k++<<endl;
cout<<"NIM = "<<mhs[i].nim<<endl;
cout<<"Nama = "<<mhs[i].nama<<endl;
cout<<"Nilai Akhir =
"<<mhs[i].nilai<<endl;
cout<<"Keterangan yang didapat = ";
cout<<ket(mhs[i].nilai)<<endl;

78
Output yang akan dihasilkan, dari program contoh diatas adalah :

Gambar 10.5 Gambar 10.6

LATIHAN 10
1. Buatlah program menggunakan function untuk menentukan selisih antara dua waktu
(jam). Misalkan selisih antara pukul 4.30 dengan 6.00 adalah 90 menit.
Terdapat 2 argumen function yaitu jam pertama dan jam kedua (lebih besar dari jam
pertama).

hint: buat struktur jam (dengan unit jam, dan menit).

79
DAFTAR PUSTAKA

Al Fatta, Hanif, S.k om. 2006. Dasar Pemrograman C++. Andi Offset. Yogyakarta
Frieyadie. 2006. Panduan Pemrograman C++. Andi Offset. Yogyakarta
Kadir, Abdul. 2001. Pemrograman C++ menggunakan turbo C++ dan borland C++.
Andi Offset. Yogyakarta.
Nugroho, Adi, ST., MMSI. Pemrograman Berorientasi Objek. Informatika. Bandung

80

Anda mungkin juga menyukai