Buku Pemrograman Borland C++
Buku Pemrograman Borland C++
Buku Pemrograman Borland C++
Frieyadie,
Sopiyan, Pradita,
Ilamsyah dan Ani Oktarini
Modul Algoritma Pemrograman I
Pengenalan
Bahasa C++ 1
1.1. Sejarah Singkat
1.1.1. 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.
Gambar 1.1.
Menu Untuk Mengaktifkan Program Borland C++
Gambar 1.2.
Layar Pembuka Borland C++
Menu Bar Tools Bar
Jendela
Editor
Jendela
Message
Status Bar
Gambar 1.3.
IDE Borland C++ 5.02
pernyataan;
Contoh-1
a. Model Tiny
Model memori yang menyediakan jumlah memori untuk program dan data tidak
lebih dari 64 Kb.
Modul Algoritma Pemrograman I
b. Model Small
Model memori yang menyediakan jumlah memori untuk masing-masing program
dan data tidak lebih dari 64 Kb.
c. Model Medium
Model memori yang menyediakan jumlah memori untuk program tidak lebih dari
64 Kb dan data tidak lebih dari 64 K.
d. Model Compact
Model memori yang menyediakan jumlah memori untuk program lebih dari 64
Kb dan data tidak lebih dari 64 K.
e. Model Large
Model memori yang menyediakan jumlah memori untuk program dan data lebih
dari 64 K.
d. Model Huge
Model memori yang menyediakan jumlah memori untuk menyimpan satu jenis
data.
Pada Borland C++ 5.02 terdapat tiga cara menyimpan file editor, diantaranya yaitu :
Save Digunakan untuk menyimpan File Program pada jendela yang sedang aktif
kedalam disk. Hotkey yang ada bisa gunakan untuk menyimpan dengan
menekan tombol Ctrl + KS.
Save As Digunakan untuk menyimpan File Program pada jendela yang sedang aktif
kedalam disk dengan nama file yang berbeda.
Save All Digunakan untuk menyimpan semua File Program pada jendela yang
sedang aktif kedalam disk.
Modul Algoritma Pemrograman I
Tipe Jumlah
Jangkauan Nilai
Data Memori
2.2. Konstanta
Konstanta adalah suatu nilai yang sifatnya tetap. Secara garis besar konstanta
dapat dibagi menjadi dua bagian, yaitu:
Konstanta Bilangan
Konstanta Teks
A. Konstanta Bilangan
Dalam hal ini konstanta bilangan dibagi menjadi tiga kelompok, antara lain:
B. Konstanta Teks
Dalam hal ini konstanta teks dibagi menjadi dua kelompok, antara lain;
1. Data Karakter (Character).
Data karakter hanya terdiri dari sebuah karakter saja yang diapit oleh tanda
kutip tunggal ( ). Data karakter dapat berbentuk abjad ( huruf besar atau
kecil ), angka, notasi atau simbol.
Contoh : Y y 9 & dan lain-lain.
2. Data Teks (String).
Data String merupakan rangkaian dari beberapa karakter yang diapit oleh
tanda kutip ganda ( ).
Contoh : Virusland, Jakarta, AMIK BSI, Y dan lain-lain.
C. Deklarasi Konstanta
Bentuk deklarasi konstanta diawali dengan reserved word const.
Bentuk penulisannya :
const nama_konstanta = nilai konstanta;
atau
const tipe_data nama_konstanta = nilai konstanta;
2.3. Variabel
Adalah suatu tempat menampung data atau konstanta dimemori yang
mempunyai nilai atau data yang dapat berubah-ubah selama proses program.
Dalam pemberian nama variabel, mempunyai ketentuan-ketentuan antara lain :
1. Tidak boleh ada spasi ( contoh : gaji bersih ) dan dapat menggunakan tanda garis
bawah ( _ ) sebagai penghubung (contoh : gaji_bersih).
2. Tidak boleh diawali oleh angka dan menggunakan operator aritmatika.
Variabel, dibagi menjadi dua jenis kelompok, yaitu :
Variabel Numerik
Variabel Teks
A. Variabel Numerik
Variabel numerik ini dibagi menjadi menjadi 3 (tiga) macam :
1. Bilangan Bulat atau Integer
2. Bilangan Desimal Berpresisi Tunggal atau Floating Point.
3. Bilangan Desimal Berpresisi Ganda atau Double Precision.
B. Variabel Text
1. Character ( Karakter Tunggal )
2. String ( Untuk Rangkaian Karakter )
C. Deklarasi Variabel
Adalah proses memperkenalkan variabel kepada Borland C++ dan
pendeklarasian tersebut bersifat mutlak karena jika tidak diperkenalkan terlebih
dahulu maka Borland C++ tidak menerima variabel tersebut.
Deklarasi Variabel ini meliputi tipe variabel, seperti integer atau character dan
nama variabel itu sendiri. Setiap kali pendeklarasian variabel harus diakhiri oleh
tanda titik koma ( ; ).
Bentuk penulisannya :
2.4.1 printf( )
Fungsi printf( ) merupakan fungsi keluaran yang paling umum digunakan
untuk menampilkan informasi kelayar.
main( )
{
char nama =dita;
int nilai = 100;
clrscr( );
Contoh-2 #include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
float a1=87.5, a2=77.50;
clrscr( );
printf("Nilai Tugas 1: %2f \n",a1);
printf("Nilai Tugas 2: %2f ",a2);
getch( );
}
Output yang akan dihasilkan, jika tidak menggunakan penentu lebar field adalah:
Contoh-3 #include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
float a1=87.5, a2=77.50;
clrscr();
printf("Nilai Tugas 1: %2.2f \n",a1);
printf("Nilai Tugas 2: %2.2f",a2);
getch( );
}
Output yang akan dihasilkan, jika menggunakan penentu lebar field adalah
Contoh-4 #include<stdio.h>
#include<conio.h>
main( )
{
char nama1[10]="Dita",nama2[10]="Ani",nama3[10]="Fitri";
float a = 88.5, b = 90.8, c = 98.2;
clrscr( );
printf("%8s\t %7s\t %8s ", nama1,nama2,nama3);
printf("\n%8.2f \t %8.2f \t %8.2f ", a,b,c);
getch( );
}
2.4.2. 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( ) untuk tipe data string
printf( ) puts( )
Harus menentukan tipe data Tidak Perlu penentu tipe data
untuk data string, yaitu %s string, karena fungsi ini khusus
untuk tipe data string.
Untuk mencetak pindah baris, Untuk mencetak pindah baris
memerlukan notasi \n tidak perlu notasi \n , karena
sudah dibeikan secara
otomatis.
main()
{
2.4.3. putchar( )
Perintah putchar( ) digunakan untuk menampilkan sebuah karakter ke
layar. Penampilan karakter tidak diakhiri dengan pindah baris.
main( )
{
clrscr( );
putchar('B');
putchar('S');
putchar('I');
putchar('-');
putchar('2');
putchar('0');
putchar('0');
putchar('9');
getch( );
}
2.4.4. 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 .
main( )
{
int jumbar1=150, jumbar2=23;
clrscr( );
cout<<"Jumlah Barang 1: "<<jumbar1;
cout<<" Jumlah Barang 2: "<<jumbar2;
getch( );
}
a. endl
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-8 # include<stdio.h>
# include<conio.h>
# include<iostream.h>
main( )
{
char nim[9]="12098890",nama[15]="Andi";
char alamat[20]="Jakarta Selatan";
clrscr( );
cout<<"Nim :"<<nim<<endl;
cout<<"Nama :"<<nama<<endl;
cout<<"Alamat :"<<alamat<<endl;
getch( );
}
b. ends
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 .
getch( );
}
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 .
main( )
{
float a,b,c;
a = 25.23;
b = 12.54;
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;
cout<<setprecision(5)<<c<<endl;
getch( );
}
e. setbase( )
setbase( ) merupakan suatu fungsi manipulator yang digunakan untuk konversi
bilangan Octal, Decimal dan Hexadecimal. File header yang harus disertakan file
header iomanip.h .
Bentuk penulisannya :
setbase(base bilangan);
Base bilangan merupakan base dari masing-masing bilangan, yaitu :
Octal = basis 8
Decimal = basis 10
Hexadecimal = basis 16
main( )
{
int a;
clrscr( );
cout<<"Penggunan Manipulator setw()"<<"\n\n";
cout<<"-------------------------------"<<"\n";
for(a=1;a<=15;a++)
{
cout<<setw(a)<<a<<endl;
}
cout<<"-------------------------------"<<"\n";
getche( );
}
Output yang akan dihasilkan, dari program contoh-13 diatas adalah:
cout<<hex<<a<<endl;
}
2.5.1. scanf( )
Fungsi scanf( ) digunakan untuk memasukkan berbagai jenis data. Bentuk Umum
dari fungsi ini adalah:
simbol & merupakan pointer yang digunakan untuk menunjuk kealamat variabel
memori yang dituju.
Tabel 2.7. Penentu Format scanf( )
Penentu Format Untuk
TIPE DATA
scanf( )
Integer %d
Floating Point
Bentuk Desimal %e atau %f
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-22 #include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
char nama[15],kelas[20],hobby[15];
clrscr( );
printf("\tBIODATA SAYA\n");
printf("Nama : ");scanf("%s",&nama);
printf("Kelas: ");scanf("%s",&kelas);
printf("Hobby: ");scanf("%s",&hobby);
getch( );
}
2.5.2. gets( )
Fungsi gets( ) digunakan untuk memasukkan data string. Bentuk Umum dari
fungsi ini adalah:
gets(nama-variabel-array);
scanf( ) gets( )
Tidak dapat menerima string yang Dapat menerima string yang
mengandung spasi atau tab dan mengandung spasi atau tab
dianggap sebagai data terpisah dan masing dianggap sebagai
satu kesatuan data.
main( )
{
char nm1[20];
char nm2[20];
clrscr( );
2.5.3. cin
Fungsi cin merupakan sebuah objeck didalam C++ digunakan untuk
memasukkan suatu data. Untuk menggunakan fungsi cin ini, harus menyertakan file
header iostream.h .
2.5.4. 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.
main( )
{
char kar;
clrscr( );
printf("Masukan Sebuah Karakter Bebas = ");
kar = getch( );
printf("\nTadi Anda Memasukan karakter %c", kar);
getch( );
}
2.5.5. 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.
main( )
{
char kar;
clrscr( );
2.6. Tugas
1. Buatlah program untuk menghitung nilai rata-rata dari seorang siswa, dengan
ketentuan sebagai berikut :
Nim Siswa, Nama Siswa, Nilai Tugas 1, Nilai Tugas II, Nilai Tugas III
diinput.
Layar Masukkan
Nim Siswa :
Nama Siswa :
Nilai Tugas I :
Nilai Tugas II :
Nilai Tugas III :
Layar Keluaran
2. Buatlah program untuk menghitung nilai akhir seorang siswa dari kursus
yang diikutinya. Dengan ketentuan sebagai berikut :
Nama Siswa, Nilai Keaktifan, Nilai Tugas dan Nilai Ujian diinput.
Proses yang dilakukan untuk mendapatkan nilai murni dari masing-masing
nilai, adalah
Nilai Murni Keaktifan = Nilai Keaktifaan dikalikan dengan 20%.
Nilai Murni Tugas = Nilai Tugas dikalikan dengan 30%
Nilai Murni Ujian = Nilai Ujian dikalikan dengan 50%
Nilai Akhir adalah Nilai Murni Keaktifan + Nilai Murni Tugas + Nilai
Murni Ujian
Tampilan yang diinginkan sebagai berikut :
Layar Masukkan
Nama Siswa :
Nilai Keaktifan :
Nilai Tugas :
Nilai Ujian :
Layar Keluaran
Unary
Sifat Unary pada operator adalah hanya melibatkan sebuah operand pada suatu
operasi aritmatik
Contoh : -5
Binary
Sifat Binary pada operator adalah melibatkan dua buah operand pada suatu
operasi aritmatik
Contoh : 4 + 8
Ternary
Sifat Tenary pada operator adalah melibatkan tiga buah operand pada suatu
operasi aritmatik
Contoh :
(10 % 3) + 4 + 2
Operator Keterangan
Tingkatan operator sama, penggunaan
* atau / nya tergantung letak, yang didepan
didahulukan
% Sisa Pembagian
Tingkatan operator sama, penggunaan
+ atau - nya tergantung letak, yang didepan
didahulukan
Contoh A=8+2*3/6
Langkah perhitungannya :
A=8+6/6 (6/6=1)
A=8+1
A=9
Contoh :
A = (8 + 2) * 3 / 6
Langkah perhitungannya :
A = 10 * 3 / 6
A = 30 / 6
A=5
main( )
{
int a, b;
clrscr( );
a = 8 + 2 * 3 / 6;
b = (8 + 2) * 3 / 6;
cout<<" A = 8 + 2 * 3 / 6"<<endl;
cout<<" B = (8 + 2) * 3 /6"<<endl;
cout<<endl;
cout<<" Hasil dari A = "<<a<<endl;
printf(" Hasil dari B = %i ",b);
getch( );
}
Contoh Penambahan:
int x=5;
y = ++x;
(nilai saat ini: y = 6, x=6)
int x=5;
y = x++;
(nilai saat ini : y = 5, x=6)
Pengurangan:
int x=5;
y = --x;
(nilai saat ini: y = 4, x=4)
int x=5;
y = x--;
(nilai saat ini: y = 5, x=4)
main( )
{
int a = 10, b = 5;
clrscr( );
main( )
{
float a, b, c, d, e, f, x, y;
clrscr( );
a = x = = y;
b = x != y;
c = x > y;
d = x < y;
e = x >= y;
f = x <= y;
cout<<endl;
cout<<"Hasil dari "<<x<<" == "<<y<<" = "<<a<<endl;
cout<<"Hasil dari "<<x<<" != "<<y<<" = "<<b<<endl;
cout<<"Hasil dari "<<x<<" > "<<y<<" = "<<c<<endl;
cout<<"Hasil dari "<<x<<" < "<<y<<" = "<<d<<endl;
cout<<"Hasil dari "<<x<<" >= "<<y<<" = "<<e<<endl;
cout<<"Hasil dari "<<x<<" <= "<<y<<" = "<<f<<endl;
getch( );
}
// Proses
d = a + 4 < 10;
e = b > a + 5;
f = c - 3 >= 4;
g = d && e && f;
cout<<endl<<endl;
cout<<"Program Ekspresi AND"<<endl<<endl;
cout<<"Hasil dari d = a + 4 < 10 adalah " <<d<<endl;
cout<<"Hasil dari e = b > a + 5 adalah " <<e<<endl;
cout<<"Hasil dari f = c - 3 >= 4 adalah " <<f;
cout<<endl<<endl;
cout<<"Hasil dari g = d && e && f adalah " <<g;
cout<<endl;
getch( );
}
Tabel Logika Or
A B A || B
T T T
T F T
F T T
F F F
Dilihat ekspresi diatas salah satu ekspresi tersebut mempunyai nilai BENAR, maka
ekspresi tersebut tetap bernilai BENAR.
A+4 < 10 || B>A+5 || C3 > 4 BENAR = 1
main()
{
float a, b, c, d, e, f, g, h;
clrscr( );
cout<<"Masukan Nilai A = "; cin>>a;
cout<<"Masukan Nilai B = "; cin>>b;
cout<<"Masukan Nilai C = "; cin>>c;
d = a + 5 > 10;
e=b>5+a;
f = c - 4 <= 7;
g = d || e || f;
cout<<endl<<endl;
clrscr( );
cout<<"Masukan Nilai A = "; cin>>a;
// Proses
d = a + 4 < 10;
e = b > a + 5;
f = c - 3 >= 4;
g = d && e && f;
cout<<endl<<endl;
cout<<"Program Ekspresi AND / OR"<<endl<<endl;
cout<<"Hasil dari d = a + 4 < 10 adalah " <<d<<endl;
Contoh :
Ekspresi Relasi A + 4 < 10
Penggunaan Operator Logika NOT diatas menjadi;
Dilihat ekspresi diatas salah satu ekspresi tersebut mempunyai nilai BENAR dan jika
digunakan operator logika NOT, maka ekspresi tersebut akan bernilai SALAH
!(A+4 < 10) !(BENAR) = SALAH = 0
/* Proses */
b = (a + 4 < 10);
c = !(b);
cout<<"Nilai A = "<<a<<endl;
cout<<"Nilai b = (a + 4 < 10) = "<<b<<endl;
cout<<"Nilai c = !(b) = "<<c;
getch( );
}
Operator Keterangan
~ Bitwise NOT
<< Bitwise Shift Left
>> Bitwise Shift Right
& Bitwise AND
^ Bitwise XOR
| Bitwise OR
0000000011001001 = 201
//////// digeser 1 bit ke kiri
0000000110010010 = 402
Contoh-10 #include<iostream.h>
#include<stdio.h>
#include<conio.h>
main()
{
int x;
clrscr();
getch();
}
0000000011001001 = 201
\\\\\\\\ digeser 1 bit ke kanani
0000000001100100 = 100
Contoh-11 #include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main( )
{
int x;
clrscr( );
cout<<"Masukan Nilai X = ";
cin>>x;
cout<< Nilai Awal : <<x<<endl;
x = x >> 1;
Contoh :
Contoh-12 #include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main( )
{
int a, x, y;
clrscr( );
cout<<\n;
cout<<"Hasil dari "<<x<<" & "<<y<<" = "<<a<<endl;
getch( );
}
Contoh :
11001001 = 201
01100100 = 100
OR
11101101 = 237
Contoh-13 #include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main( )
{
int a, x, y;
clrscr( );
a = x | y;
cout<<\n;
cout<<"Hasil dari "<<x<<" | "<<y<<" = "<<a<<endl;
getch( );
}
Contoh :
11001001 = 201
01100100 = 100
XOR
10101101 = 137
Contoh-14 #include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main( )
{
int a, x, y;
clrscr( );
cout<<"Masukan Nilai X = ";
cin>>x;
cout<<"Masukan Nilai Y = ";
cin>>y;
a = x ^ y;
cout<<\n;
cout<<"Hasil dari "<<x<<" ^ "<<y<<" = "<<a<<endl;
getch( );
}
Contoh :
00001000 = 8
||||||||
11110111 = 247 = -9
Contoh-15 #include<iostream.h>
#include<stdio.h>
#include<conio.h>
void main()
{
int a, x, y;
clrscr();
cout<<"Masukan Nilai X = ";
cin>>x;
a = ~x;
cout<<\n;
3.7. Tugas
1. Tentukan apa hasil numerik dari ekspresi relasi dan logika dibawah ini. Diberikan
nilai A = 3; B = 6 ; C = 2 ; K = 5; L = 4; M = 3
#include<stdio.h>
#include<conio.h>
main( )
{
int a = 21;
clrscr( );
printf("\n Nilai a = %d",a);
printf("\n Nilai a++ = %d",a++);
printf("\n Nilai ++a = %d",++a);
printf("\n Nilai --a = %d",--a);
printf("\n Nilai a = %d",a);
a+=3;
printf("\n Nilai a = %d",a);
printf("\n Nilai ++a = %d",++a);
printf("\n Nilai a++ = %d",a++);
printf("\n Nilai --a = %d",--a);
printf("\n Nilai a-- = %d",a--);
getch( );
}
Modul Algoritma Pemrograman I
Modul Algoritma Pemrograman I
BORLAND C++
Operasi
String 4
Operasi string selalu dijumpai didalam bahasa pemrograman, dikarenakan
hampir semua bahasa pemrograman menggunakan manual inputnya adalah string,
terutama pada pemrograman visualisasi. Pada bab ini akan dibahasa beberapa
perintah dan fungsi string.
main()
{
char a1[20];
char a2[20];
clrscr();
cout<<"Masukkan Kata - 1= ";
cin>>a1;
cout<<"Masukkan Kata - 2= ";
cin>>a2;
strcat(a1, a2);
cout<<"Hasil Penggabungannya "<<a1;
getch();
}
strcpy(tujuan, asal);
main( )
{
char huruf[20];
char pindah[20];
clrscr( );
main( )
{
char huruf[20];
char pindah[20];
clrscr( );
main( )
{
char kata[20];
clrscr();
cout<<"Masukan Sembarang Kata = ";
gets(kata);
strrev(kata);
cout<<"Hasil Perubahan = "<<kata;
main( )
{
char kata[20];
float angka, a, b;
clrscr( );
cout<<"Masukan Sembarang Kata berupa angka = ";
gets(kata);
angka = atof(kata);
a = angka + 5;
cout<<"Hasil Perubahan ditambah dengan 5 = "<<a;
getch( );
}
Output yang akan dihasilkan, dari program contoh-6 diatas adalah:
main( )
{
char kata[20];
float angka, a, b;
clrscr( );
angka = atoi(kata);
a = angka + 5;
main( )
{
char kata[20];
clrscr( );
angka = atol(kata);
a = angka + 2500;
main( )
{
char kata[20];
clrscr( );
main( )
{
char kata[20];
clrscr( );
cout<<Masukkan Sembarang Kata dengan Huruf Besar: ;
gets(kata);
strupr(kata);
cout<<Hasil Perubahan : <<kata<<endl;
getch( );
}
Operasi
Penyeleksian Kondisi 5
5.1. 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
if (kondisi)
pernyataan;
Penulisan kondisi berada di dalam tanda kurung kurawal jika pemakaian if diikuti
dengan pernyataan majemuk, bentuk penulisannya sebagai berikut :
if (kondisi)
{
pernyataan;
}
Contoh-1 #include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
kondisi Salah
i
Benar
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 :
if (kondisi)
{
perintah-1;
...
}
else
{
perintah-2;
...
}
Contoh
Menentukan besarnya gaji pokok dan jabatan dari golongan, dengan kriteria :
- jika golongan=1, Jabatan= Direktur, gapok =5000000
- Jika golongan =2, jabatan=Manajer, gapok=4000000
main( )
{
char gol, jab[10];
long gapok=0;
clrscr( );
cout<<endl<<" Data Jabatan"<<endl
<<" = = = = = = = = = = = = = = = ="<<endl;
cout<<" Masukan Golongan [1/2]: ";cin>>gol;
if(gol=='1')
{ strcpy(jab,"Direktur");
gapok=5000000;
}
else if(gol=='2')
{
strcpy(jab,"Manajer");
gapok=4000000;
}
cout<<" Jabatan = "<<jab<<endl
cout<<" Gaji Pokok = "<<gapok<<endl;
getch ( );
}
if(syarat)
{
if(syarat)
perintah;
else
perintah;
}
else
{
if(syarat)
perintah;
else
perintah;
}
Contoh
Suatu perusahaan menjual pakaian dengan ketentuan sebagai berikut:
Jika kode baju=1 maka Merk Baju = H&R, dengan ukuran baju=S,maka
harganya 45000, Jika ukuran baju=M, maka harganya 60000.
Jika kode baju=2 maka Merk Baju = Adidas, dengan ukuran baju=S, maka
harganya 65000, Jika ukuran Baju=M, maka harganya 75000.
Contoh-3 #include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
char kode,ukuran,merk[15];
long harga=0;
clrscr( );
if (kode=='1')
{
strcpy(merk,"H & R");
if (ukuran=='S' || ukuran =='s')
harga=45000;
else
harga=60000;
}
else if (kode=='2')
{
strcpy(merk," Adidas");
if (ukuran=='S' || ukuran == 's')
harga=65000;
else
harga=75000;
}
else
cout<<Salah Kode Baju<<endl;
cout<<"------------------------"<<endl;
cout<<"Merk Baju : "<<merk<<endl;
cout<<"Harga Baju : "<<harga<<endl;
getch();
}
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.
Contoh-4 #include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
float pendapatan, jasa=0, komisi=0, total=0;
clrscr( );
else if(pendptan<=500000)
{
jasa=20000;
komisi=0.15*pendapatan;
}
else
{
jasa=30000;
komisi=0.2*pendapatan;
}
/* menghitung total */
total = komisi+jasa;
getch( );
}
Setiap pilihan 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 pilihan-pilihan yang
lainnya.
Contoh-5 #include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
int kode;
clrscr();
cout<<"Masukkan Kode Jurusan [11/12/13] : ";
cin>>kode;
switch(kode)
{
case 11 :
cout<<"Komputerisasi Akuntansi";
break;
case 12 :
cout<<"Manajemen Informatika";
break;
Contoh-6 #include<stdio.h>
#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:
5.3. Tugas
1. Buatlah program untuk menghitung nilai rata-rata dari seorang siswa, dengan
ketentuan sebagai berikut :
Nama Siswa, Nilai Pertandingan I, Nilai Pertandingan II, Nilai
Pertandingan III diinput.
Nilai Rata-rata merupakan hasil dari Nilai Pertandingan I, II dan III
dibagi dengan 3.
Ketentuan Juara
Jika nilai rata-rata yang dihasilkan lebih besar dari 80, maka menjadi
Juara I
Jika nilai rata-rata yang dihasilkan lebih besar dari 75, maka menjadi
Juara II
Jika nilai rata-rata yang dihasilkan lebih besar dari 65, maka menjadi
Juara III
Selain itu tidak juara
Tampilan yang diinginkan sebagai berikut:
Layar Masukkan
Nama Siswa :
Nilai Pertandingan I :
Nilai Pertandingan II :
Nilai Pertandingan III :
2. Buatlah program untuk menghitung nilai akhir seorang siswa dari kursus
yang diikutinya. Dengan ketentuan sebagai berikut :
Nama Siswa, Nilai Keaktifan, Nilai Tugas dan Nilai Ujian diinput.
Proses yang dilakukan untuk mendapatkan nilai murni dari masing-
masing nilai, adalah
Nilai Murni Keaktifan = Nilai Keaktifaan dikalikan dengan 20%.
Nilai Murni Tugas = Nilai Tugas dikalikan dengan 30%
Nilai Murni Ujian = Nilai Ujian dikalikan dengan 50%
Nilai Akhir adalah Nilai Murni Keaktifan + Nilai Murni Tugas + Nilai
Murni Ujian
Ketentuan Nilai Huruf
Jika nilai Akhir yang dihasilkan lebih besar dari 80, maka mendapat
grade A
Jika nilai Akhir yang dihasilkan lebih besar dari 70, maka mendapat
grade B
Jika nilai Akhir yang dihasilkan lebih besar dari 56, maka mendapat
grade C
Jika nilai Akhir yang dihasilkan lebih besar dari 46, maka mendapat
grade D
Selain itu mendapat grade E
Tampilan yang diinginkan sebagai berikut :
Layar Masukkan
Layar Keluaran
Jadi Siswa yang bernama ... memperoleh nilai akhir sebesar .... dengan grade ...
Golongan Persentase
1 5%
2 10%
3 15%
Jika seorang karyawan tersebut dengan golongan 3, maka mendapatkan
tunjangan sebesar 15% * Rp. 300,000
Tunjangan Pendidikan
Tingkat Persentase
Pendidikan
SMA 2.5%
D1 5%
D3 20%
S1 30%
Jika seorang karyawan tersebut dengan golongan 3, maka mendapatkan
tunjangan sebesar 15% * Rp. 300,000
Honor Lembur
Jumlah jam kerja normal sebanyak 8 jam, Honor lembur diberikan jika jumlah
jam kerja lebih dari 8 jam, maka kelebihan jam kerja tersebut dikalikan dengan
Rp. 3500 untuk setiap kelebihan jam kerja karyawan tersebut.
Tampilan yang diinginkan sebagai berikut :
Layar Masukkan
Layar Keluaran
Contoh :
Sebagai contoh program untuk mencetak bilangan dari 1 hingga 10 secara menaik,
secara menurun dan menampilkan bilangan ganjil, sebagai berikut:
Contoh-1 /* --------------------------- */
/* Program for - bilangan naik */
/* --------------------------- */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
Contoh-2 /* ---------------------------- */
/* Program for - bilangan turun */
/* ---------------------------- */
# include <stdio.h>
# include <conio.h>
#include<iostream.h>
main( )
{
int a;
clrscr( );
for(a = 10; a >= 1; --a)
cout<<a;
getch( );
}
Contoh-3 /* ----------------------------- */
/* Program for - bilangan ganjil */
/* ----------------------------- */
#include <stdio.h>
#include <conio.h>
#include<iostream.h>
main( )
{
int a;
clrscr( );
for(a = 1; a <= 10; a+=2)
cout<<a;
getch( );
}
Contoh-4 /* ------------------------- */
/* Program for - Nested for */
/* ------------------------- */
#include<stdio.h>
#include<conio.h>
main( )
{
int a, b;
clrscr( );
Contoh-5 /* ------------------------- */
/* Program for Tdk Berhingga */
/* ------------------------- */
#include<stdio.h>
#include<conio.h>
main( )
{
int bil;
clrscr( );
for (bil = 60; bil >=10; bil++)
printf("%d", bil);
getch( );
}
Output yang akan dihasilkan, dari program contoh-6 diatas adalah :
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
printf("%d", bil);
Contoh-6 /* ------------------------------ */
/* Program dengan pernyataan goto */
/* ------------------------------ */
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
main( )
{
int a, b;
char lagi;
atas:
clrscr( );
getch( );
}
while ( syarat )
Pernyataan / perintah ;
Bentuk umum perulangan while, dengan lebih dari perintah / pernyataan, sebagai
berikut:
while ( syarat )
{
Pernyataan / perintah ;
Pernyataan / perintah ;
}
Contoh-7 /* ------------------- */
/* Program while01.cpp */
/* ------------------- */
#include <stdio.h>
#include <conio.h>
main( )
{
int bil=1;
clrscr( );
while(bil<=10)
{
printf(" %d ",bil);
++bil;
}
getch( );
}
Contoh-8 /* ------------------- */
/* Program while02.cpp */
/* ------------------- */
#include <stdio.h>
#include <conio.h>
main( )
{
int bil=2;
clrscr( );
while(bil<=10)
{
printf(" %d ",bil);
bil+=2;
}
getch( );
}
Output yang akan dihasilkan, dari program contoh-10 diatas adalah :
Contoh-9 /* ------------------ */
/* Program do - while */
/* ------------------ */
#include <stdio.h>
#include <conio.h>
main( )
{
int bil=2;
clrscr( );
do
{
printf(" %d ",bil);
bil+=2;
}
while(bil<=10);
getch( );
}
Contoh-10 /* ------------------------------- */
/* Program do - while dengan break */
/* ------------------------------- */
#include <stdio.h>
#include <conio.h>
main( )
{
int bil = 1;
clrscr( );
do
{
if (bil >= 6)
break;
printf(" %d ",bil);
}
while(bil++);
getch( );
}
Contoh-11 /* ----------------------------- */
/* Perulangan FOR dengan break; */
/* ----------------------------- */
#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( );
}
Output yang akan dihasilkan, dari program contoh-11 diatas adalah :
Contoh-12 /* ----------------------------- */
/* Perulangan FOR dengan coninue */
/* ----------------------------- */
#include <stdio.h>
#include <conio.h>
main( )
{
int bil;
clrscr( );
6.7. Tugas
Buatlah beberapa program seperti petunjuk berikut :
1 =1
1*3 =3
1*3*5 = 15
1*3*5*7 = 105
1*3*5*7*9 = 945
Array 7
Keterangan :
Type Data : Untuk menyatakan type data yang digunakan.
Ukuran : Untuk menyatakan jumlah maksimum elemen array.
float Nil_Akhir[6];
Suatu array dapat digambarkan sebagai kotak panjang yang berisi kotak-
kotak kecil didalam kotak panjang tersebut.
1 2 3 4 5 6
0 1 2 3 4 5 Subcript/Index
ARRAY NIL_AKHIR
Subscript atau Index array pada C++, selalu dimulai dari Nol ( 0 )
Contoh-1 /* ---------------------------------- */
/* Inisialisasi Array Dimensi 1 */
/* ---------------------------------- */
#include <conio.h>
#include <iostream.h>
main()
{
char hari[7][10]=
{"Minggu","Senin","Selasa","Rabu","Kamis","jum'at","Sabtu"};
clrscr();
cout<<"Nama-nama hari:"<<endl;
cout<<hari[0]<<endl<<hari[1]<<endl<<hari[2]<<endl<<hari[3]
<<endl<<hari[4]<<endl;
getch();
}
Contoh Nil_Akhir[3];
Nil_Akhir[1];
Nil_Akhir[0];
Contoh-2 /* ---------------------------- */
/* Program Array Satu Dimensi */
/* ---------------------------- */
#include<conio.h>
#include<stdio.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 MidTest : "; cin>>nilai1[i];
cout<<"Nilai Final : "; cin>>nilai2[i];
hasil[i] = (nilai1[i] * 0.40)+ (nilai2[i] * 0.60);
cout<<endl;
}
cout<<"------------------------------------------"<<endl;
cout<<"No. Nama Siswa Nilai Nilai ";
cout<<"Hasil"<<endl;
cout<<" MidTest Final ";
cout<<"Ujian"<<endl;
cout<<"------------------------------------------"<<endl;
for(i=1;i<=2;i++)
{
cout<<setiosflags(ios::left)<<setw(4)<<i;
cout<<setiosflags(ios::left)<<setw(10)<<nama[i];
int data_jual[3][3];
Jumlah Kolom
Jumlah Baris
Nama Array
Tipe data elemen array
main()
{
char nama[2][3][10]={{"Pak","BU","Mas"},
{"Andi","Budi","Carli"}};
clrscr();
cout<<nama[0][0]<<ends<<nama[1][0]<<endl;
cout<<nama[0][1]<<ends<<nama[1][2]<<endl;
cout<<nama[0][2]<<ends<<nama[1][1]<<endl;
getch();
}
Contoh-4 /* -------------------- */
/* Array Dimensi 2 */
/* -------------------- */
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<iomanip.h>
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 2007 2008 2093"<<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( );
}
Contoh-5 /* -------------------------------- */
/* Selection sort dengan C++ */
/* -------------------------------- */
#include<conio.h>
#include<stdio.h>
int main() {
int i, j, iMin;
int n, Urut;
int Tmp, code;
int Arr[100];
printf("\nInputkan banyak data yang akan diurutkan : ");
scanf("%i", &n);
Urut = 1;
for(i = 0; i < n; i++) {
printf("Masukan data ke %i : ", i + 1);
scanf("%i", &Arr[i]);
}
for(i = 0; i < n - 1; i++) {
iMin = i;
for(j = Urut; j < n; j++) {
if(Arr[j] < Arr[iMin]) {
iMin = j;
if(Arr[i] != Arr[iMin]) {
Tmp = Arr[i];
if(Arr[i] > Arr[iMin]) {
Arr[i] = Arr[iMin];
Arr[iMin] = Tmp;
}
}
}
}
Urut = Urut + 1;
}
printf("\nSetelah Pengurutan\n");
for(i = 0; i < n; i++) {
printf("Elemen ke %i : %i\n", i + 1, Arr[i]);
}
getch();
}for(i = 0; i < n - 1; i++) {
iMin = i;
for(j = Urut; j < n; j++) {
if(Arr[j] < Arr[iMin]) {
iMin = j;
if(Arr[i] != Arr[iMin]) {
Tmp = Arr[i];
if(Arr[i] > Arr[iMin]) {
Arr[i] = Arr[iMin];
} Arr[iMin] = Tmp;
}
}
}
Urut = Urut + 1;
}
printf("\nSetelah Pengurutan\n");
for(i = 0; i < n; i++) {
printf("Elemen ke %i : %i\n", i + 1, Arr[i]);
}
getch(); }
b. Buble 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.
#include<conio.h>
#include<stdio.h>
int main() {
int i, j, iMin;
int n, Urut;
int Tmp, code;
int Arr[100];
printf("\nInputkan banyak data yang akan diurutkan : ");
scanf("%i", &n);
for(i = 0; i < n; i++) {
printf("Masukan data ke %i : ", i + 1);
scanf("%i", &Arr[i]);
}
for(i = 1; i < n; i++) {
for(j = 0; j < n - 1; j++) {
if(Arr[j] > Arr[j + 1]) {
Tmp = Arr[j];
Arr[j] = Arr[j + 1];
Arr[j + 1] = Tmp;
}
}
}
printf("\nSetelah Pengurutan\n");
for(i = 0; i < n; i++) {
printf("Elemen ke %i : %i\n", i + 1, Arr[i]);
}
getch();
}
c. Insertion Short
Prinsip dasar Insertion adalah secara berulang-ulang menyisipkan / memasukan
setiap elemen. ke dlm posisinya / tempatnya yg benar.
1. Prinsip Kerja Insertion Sort adalah
2. Pengecekan mulai dari data ke-1 sampai data ke-n
3. Bandingkan data ke-I ( I = data ke-2 s/d data ke-n )
4. 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
5. Lakukan langkah 2 dan 3 untuk bilangan berikutnya ( I= I+1 ) sampai
didapatkan urutan yg optimal.
#include "conio.h"
#include "stdio.h"
int main( ) {
int i, j, iMin;
int n, Urut;
int Tmp, code;
int Arr[100];
printf("\nInputkan banyak data yang akan diurutkan : ");
scanf("%i", &n);
for(i = 0; i < n; i++) {
printf("Masukan data ke %i : ", i + 1);
scanf("%i", &Arr[i]);
}
for(i = 1; i < n; i++) {
Tmp = Arr[i];
j = i - 1;
while(Arr[j] >= Tmp && j > 0) {
Arr[j + 1] = Arr[j];
j = j - 1;
}
if(Tmp >= Arr[j]) {
Arr[j + 1] = Tmp;
} else {
Arr[j + 1] = Arr[j];
Arr[j] = Tmp;
}
}
printf("\nSetelah Pengurutan\n");
for(i = 0; i < n; i++) {
printf("Elemen ke %i : %i\n", i + 1, Arr[i]);
}
getch();
}
7.4. Latihan
1. Sebuah perusahaan ayam goreng dengan nama GEROBAK FRIED
CHICKEN yang telah lumayan banyak pelanggannya, ingin dibantu dibuatkan
program untuk membantu kelancaran usahaannya.
GEROBAK FRIED CHICKEN mempunyai daftar harga ayam sebagai
berikut :
Layar Keluaran
GEROBAK FIRED CHICHEN
-------------------------------------------------------------
No. Jenis Harga Bayak Jumlah
Potong Satuan Beli Harga
-------------------------------------------------------------
... ....... .... .... Rp ....
... ....... .... .... Rp ....
------------------------------------------------------------
Jumlah Bayar Rp ....
Pajak 10% Rp ....
Total Bayar Rp ....
Tunjangan Jabatan
Golongan Persen
tase
1 5%
2 10%
3 15%
Honor Lembur Jumlah jam kerja normal dalam satu bulan sebanyak 240 Jam
Kerja. Honor lembur diberikan jika jumlah jam kerja sebih dari 240 jam,
maka kelebihkan jam kerja tersebut dikalikan dengan honor lembur perjam
sebesar Rp. 2,500 untuk setiap kelebihan jam kerja dalam satu bulannya.
Tampilan yang diinginkan sebagai berikut :
Macro
Dan File Header 8
Didalam penyusunan suatu makro ada beberapa hal yang perlu dipelajari
adalah:
8.1.1. # define
Digunakan untuk mendefinisikan suatu nilai tertentu kepada suatu nama
konstanta. Bentuk umum dari preprocessor directive #define ini adalah:
#define nama_konstanta teks
Contoh :
Teks
#define A 6
Nama_Konstanta
Contoh-1 /* ----------------------------------- */
/* Program Penggunaan #define */
/* ------------------------------------ */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#define PI 3.141592
#define L(n) PI*n*n
main( )
{
clrscr();
cout<<"Luas Lingkaran dengan : "<<endl;
cout<<"Jari-jari = 5 adalah "<<L(5)<<endl;
cout<<"Jari-jari = 10 adalah "<<L(10)<<endl;
getche( );
}
Output yang akan dihasilkan, dari program contoh-1 diatas adalah:
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 masuk cin
#define hapus() clrscr()
#define tahan() getch()
#define LS_KUBUS (sisi*sisi)
mulai( )
awal
int sisi, ls_kubus;
hapus( );
cetak<<"Program Penggunaan #define"<<endl;
cetak<<"Masukkan Nilai Sisi Kubus = ";
masuk>>sisi;
ls_kubus = LS_KUBUS;
cetak<<"Luas Kubus adalah : "<<ls_kubus;
tahan( );
akhir
10.1.2. # include
Preprocessor #include telah dibahas pada bab sebelumnya, yaitu berfungsi
untuk memasukkan atau menyertakan file-file header kedalam program yang akan
dibuat. Dalam penulisan #include ada dua bentuk penulisan :
#include "nama_file_header"
atau
#include <nama_file_header>
10.1.3. # if - #endif
Preprocessor #if - #endif digunakan untuk mengkompilasi jika pernyataan
kondisi pada #if bernilai benar, jika tidak maka, diabaikan. Pernyataan kondisi
berupa ekspresi konstanta yang dideklarasikan dengan #define.
Benuk Penulisan #if ekspresi-konstanta
penyataan;
#endif
Contoh-3 /***********************
Penggunaan #if - #endif
***********************/
#include <conio.h>
#include <stdio.h>
#define N 4
main( )
{
#if N > 0
printf("Lebih Besar dari Nol");
#endif
getch( );
}
Contoh-4 /******************************
Penggunaan #if - #else - #endif
******************************/
#define N -4
main( )
{
#if N > 0
printf("Lebih Besar dari Nol");
#else
printf("Lebih Kecil dari Nol");
#endif
}
Modul Algoritma Pemrograman I
10.1.5. # elif
Preprocessor #elif digunakan untuk mengkompilasi dari pernyataan
bertingkat. Dalam hal ini #elif sama halnya seperti #elseif, 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.
Benuk Penulisan #if ekspresi-konstanta-1
Penyataan-1;
#elif ekspresi-konstanta-2
Penyataan-2;
# elif ekspresi-konstanta-n
Penyataan-n;
#endif
Contoh-5 /*****************
Penggunaan #elif
******************/
#define N 12
main( )
{
#if N > 10
printf("Lebih Besar dari Sepuluh");
#elif N == 10
printf("Sama Dengan Sepuluh ");
#else N < 10
printf("Lebih Kecil dari Sepuluh");
#endif
}
10.1.6. #undef
Preprocessor #undef digunakan untuk menghilangkan nilai yang telah
didefiniskan dari daftar definisi.
Contoh-6 /****************
Penggunaan #undef
*****************/
#include<iostream.h>
#define LEBAR_MAKS 100
#if LEBAR_MAKS>200
#undef LEBAR_MAKS //--> menghilangkan LEBAR_MAKS
#define LEBAR_MAKS 200
#elsif LEBAR_MAKS <50
#undef LEBAR_MAKS //--> menghilangkan LEBAR_MAKS
#define LEBAR_MAKS 50
#else
#undef LEBAR_MAKS //--> menghilangkan LEBAR_MAKS
#define LEBAR_MAKS 50
#endif
main( )
{
char str[LEBAR_MAKS];
cout<<LEBAR_MAKS;
}
main( )
{
#ifdef ANAK1
cout<<"Pagi ini "<<ANAK1<<" pergi Kesekolah";
#else
#ifndef ANAK2
cout<<"Hari ini "<<ANAK1<<" "<<ANAK2;
cout<<" pergi Kesekolah";
#else
cout<<"Pagi ini "<<ANAK2<<"pergi Kesekolah";
#endif
#endif
getche();
}
#ifndef TIME_T
#define TIME_T
typedef long time_t;
#endif
Sebagai latihan berikut ini akan dibuatkan suatu file header sendiri yang akan
digunakan pada file editor.
Buatlah program file heder dibawah ini, kemudian simpan dengan nama : atur.h,
pada folder kerja anda folder include.
Contoh-8 /* atur.h
contoh pembuatan file header untuk
pengaturan.
Copyright (c) Frieyadie 2001
All Rights Reserved.
*/
#define awal {
#define akhir }
#define mulai( ) main( )
#define cetak cout
#define tampil cprintf
#define masuk scanf
#define hapus( ) clrscr( )
#define jika if
#define warna textcolor
#define tahan getche( )
Contoh-9 /* ---------------------------------- */
/* program dengan file header sendiri */
/* ---------------------------------- */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include"atur.h"
mulai( )
awal
int a, b, c;
hapus( );
warna(4);
tampil("\nPROGRAM PENJUMLAHAN\n");
cout<<endl;
cout<<"Masukkan Nilai A = ";
cin>>a;
cout<<"Masukkan Nilai B = ";
cin>>b;
c=a+b;
cout<<"Hasil dari "<<a<<" + "<<b<<" = "<<c;
tahan;
akhir
Modul Algoritma Pemrograman I
10.3. Latihan
1. Buatlah program menghitung pangkat dua serta pangkat tiga dari sebuah bilangan
bulat dengan makro. Sebagai input adalah bilangan itu sendiri, sedangkan sebagai
output adalah pangkat dua serta pangkat tiga dari bilangan bulat tersebut.
2. Buatlah program menghitung luas dan keliling lingkaran. Proses berada didalam
file header, nama file header yang diinginkan : lingkaran.h
Tampilan Yang Diinginkan:
Untuk proses penilaian dilakukan didalam file header dan simpan nama file
header tersebut hitnilai.h.
Tampilan yang diinginkan:
Pointer 9
Contoh-1 //----------------------------------//
//Pendeklarasian Pointer Konstanta //
//----------------------------------//
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main( )
{
char *const nama = "Borland C++";
Pada program diatas, terdapat kesalahan dan tidak dapat dijalankan, penyebabnya
pada pernyataan nama = "Borland C++";. Karena variabel nama, merupakan
pointer konstanta, yaitu tidak dapat diubah-ubah. Pesan Kesalahan Yang Tampil
adalah:
Cannot modify a const object
Error Message yang akan dihasilkan, dari program contoh-1 diatas adalah:
Contoh-2 //-------------------------------//
//Penggunaan Pointer Dereference //
//-------------------------------//
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
int ilham, amir, *raka;
clrscr( );
ilham = 75;
amir = ilham;
raka = &ilham;
cout<<"Nilai ILHAM = "<<ilham<<endl;
Contoh-3 //-----------------------------//
//Penggunaan Pointer Reference //
//-----------------------------//
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
int ilham, *raka, rafli;
clrscr( ); ilham
= 75; raka =
&ilham; rafli =
*raka;
cout<<"Nilai ILHAM = "<<ilham<<endl;
cout<<"Nilai RAKA = "<<raka<<endl;
cout<<"Nilai RAFLI = "<<rafli<<endl;
getch( );
}
Contoh-5 // -----------------------------//
//Penggunaan Pointer to Pointer //
//------------------------------//
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
int ilham;
int *raka; //pointer ke variabel
int **amir; //pointer pada pointer
clrscr( );
ilham = 75;
cout<<"Nilai ILHAM = "<<ilham<<endl;
//-> Penugasan Ke Alamat Memori
raka = &ilham;
amir = &raka;
cout<<"Nilai RAKA Hasil Mengakses ILHAM = ";
cout<<*raka<<endl;
cout<<"Nilai AMIR Hasil Mengakses ILHAM = ";
cout<<**amir<<endl;
getch( );
}
Output yang akan dihasilkan, dari program contoh-5 diatas adalah:
Contoh-6 //------------------------------//
//Penggunaan Pointer to Array //
//------------------------------//
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
int i;
int nilai[5]; int
*ptrnilai; ptrnilai
= nilai;
for(i=1;i<=5;i++)
{
cout<<"Masukan Nilai Pertama = ";
cin>>nilai[i];
}
cout<<endl;
cout<<"Hasil Pengaksesan Elemen Array Lewat";
cout<<"Pointer";
cout<<endl<<endl;
for(i=1;i<=5;i++)
{
cout<<"Elemen "<<i<<". Nilai "<<nilai[i];
cout<<", Menempati Alamat Memori = ";
cout<<&ptrnilai[i];
cout<<endl;
}
getche( );
}
Output yang akan dihasilkan, dari program contoh-6 diatas adalah:
Contoh-7 /* ------------------- */
/* Pointer pada String */
/* ------------------- */
#include <iostream.h>
#include <conio.h>
main( )
{
char band_metal[ ] = "SEPULTURA";
char *band_punk = "RANCID";
cout<<"Nama Band Metal = "<<band_metal<<endl;
cout<<"Nama Band Punk = "<<band_punk;
band_punk+=3; //menambah nilai penunjuk / pointer
cout<<"Nama Band Metal = "<<band_metal<<endl;
cout<<"Nama Band Punk = "<<band_punk;
getche( );
}
Pada program diatas, terdapat perubahan nilai pointer band_punk , yang di tunjukkan
oleh penambahan nilai pointer pada band_punk+=3, secara default, pembacaan
dilakukan mulai dari pointer pertama, karena sudah terjadi penambahan dengan 3,
maka pembacaan berpindah ke alamat ke.4, sehingga tercetak kata CID.
R A N C I D \0
1 2 3 4 5 6
Fungsi 10
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.
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 { }.
Prototipe fungsi dituliskan di atas blok program utama dan diakhiri dengan
tanda qualifier titik koma ( ; ), sedangkan blok program fungsi yang mengandung
perintah-perintah atau pernyataan-pernyataan dari program berada di bawah blok
program utama yang memiliki keuntungan sebagai berikut:
Kompiler akan melakukan konversi antara tipe parameter dalam definisi dan
parameter fungsi.
Jika jumlah parameter yang digunakan dalam definisi fungsi dan pada saat
pemanggilan fungsi berbeda atau tidak sama, maka akan menunjukkan kesalahan.
main( )
{
char lagi,c[30];
int i;
atas:
clrscr( );
{
cout<<"Masukkan nilai = ";cin>>i;
coment(c,i); //paramater formal
cout<<c;
cout<<"\n\nIngin input lagi [Y/T]: ";cin>>lagi;
}
if (lagi=='Y' || lagi=='y')
goto atas;
else
getch( );
}
Di dalam bahasa C++ ada dua cara untuk melewatkan nilai-nilai parameter ke
dalam fungsi dari nilai-nilai variabel, yaitu:
Contoh-3 /* ------------------------ */
/* Penggunaan Call By Value */
/* Program Tambah Nilai */
/* ------------------------ */
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
main( )
{
int a, b;
a = 5; b
= 9;
clrscr( );
cout<<"Nilai Sebelum Fungsi Digunakan ";
cout<<"\na = "<<a<<" b = "<<b;
tambah(a,b);
cout<<"\nNilai Setelah Fungsi Digunakan";
cout<<"\na = "<<a<<" b = "<<b;
getch( ) ;
}
tambah(int m, int n)
{
m+=5;
n+=7;
cout<<"\n\nNilai di dalam Fungsi Tambah()";
cout<<"\nm = "<<m<<" n = "<<n;
cout<<endl;
}
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
main( )
{
int a, b;
a = 4; b
= 6;
clrscr( );
cout<<"Nilai Sebelum Pemanggilan Fungsi";
cout<<"\na = "<<a<<" b = "<<b;
tambah(&a,&b);
cout<<endl;
cout<<"\nNilai Setelah Pemanggilan Fungsi";
cout<<"\na = "<<a<<" b = "<<b;
getch( );
}
tambah(int *c, int *d)
{
*c+=7;
*d+=5;
cout<<endl;
cout<<"\nNilai di Akhir Fungsi Tambah()";
cout<<"\nc = "<<*c<<" d = "<<*d;
}
Contoh-6 /* -------------- */
/* Variabel Lokal */
/* -------------- */
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
lokal( );
main( )
{
int a = 15;
clrscr( );
lokal( )
{
int a = 10;
cout<<"\nNilai a didalam fungsi lokal( ) = "<<a;
}
Contoh-7 /* ------------------------------ */
/* Variabel Eksternal atau Global */
/* ------------------------------ */
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
void lokal( );
void main( )
{
clrscr( );
cout<<"Penggunaan Variabel Eksternal"<<endl;
cout<<"\nNilai didalam funsi main() = : "<<a;
lokal ( ); //--> pemanggilan fungsi local
cout<<"\nNilai Setelah penggilan fungsi local() = ";
cout<<a;
getch( );
}
void lokal( )
{
a+=10;
}
Contoh-8 /* -------------------------- */
/* Penggunaan Variabel Statis */
/* -------------------------- */
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
walah( ); //--> prototipe fungsi walah
main( )
{
int k = 5;
clrscr( );
walah( );
walah( );
cout<<"\nNilai K didalam fungsi main() = "<<k;
getch( );
}
walah( )
{
static int k; // --> deklarasi variabel statis
k += 4;
cout<<"\nNilai K didalam fungsi() = "<<k;
}
Hal ini terlihat bahwa :
Pada pada prototipe fungsi walah( ) tidak tedapat nilai awal,
maka secara otomatis variabel k = 0.
Pada pemanggilan fungsi walah( ) pertama, tercetak nilai
variabel k = 4, didapat dari k=0+4.
Pada pemanggilan fungsi walah( ) kedua, tercetak nilai
variabel k = 8, didapat dari k=4+4, karena nilai k yang
terbaru adalah 4.
Pada pencetakan k didalam fungsi main( ), adalah 5, karena
variabel k, didalam fungsi main( ) bersifat lokal.
Contoh-10 /* -------------------------- */
/* Penggunaan inlide function */
/* -------------------------- */
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
int main( )
{
{
cout << "Kami Sedang Belajar, ";
cplusplus( );
cout << "Sedang Kami Pelajari.\n\n";
}
{
cout << "Mari Belajar, ";
cplusplus( );
cout << "Mudah Untuk Dipelajari.\n\n";
}
{
cout << "Jika Sudah Mengerti, ";
cplusplus( );
cout << "Berarti Sudah Anda Kuasai";
}
getche( );
}
void main( )
{
clrscr( );
cout<< "Hasilnya Fungsi overload -1 : ";
cout<<hitung(4)<<endl;
cout<< "Hasilnya Fungsi overload -2 : ";
cout<<hitung(2)<<endl;
cout<< "Hasilnya Fungsi overload -3 : ";
cout<<hitung(3)<<endl;
getch( );
}
int hitung(int b)
{
return(b*b);
}
long hitung(long c)
{
return(c*c);
}
double hitung(double d)
{
return(d*d);
}
Fungsi yang harus dibuat potong() untuk menghitung besar potongan yang akan
diberikan. Dengan tampilan yang diinginkan sebagai berikut:
c = (f - 32.0) * 5 / 9;
Contoh :
Jika nilai Fahrenheit = 100
c = (100 - 32) * 5 / 9;
c = (68) * 5 / 9;
c = 37,7778
Petunjuk Proses :
Buatlah Fungsi Tarif untuk menentukan terif penyewaan
Gunakan Pernyataan If Else
Perpustakaan ".Kecil-Kecilan".
----------------------------
Nama Penyewa Buku : .... <diinput>
Kode Buku [C/K/N] : .... <diinput>
Banyak Pinjam : .... <diinput>
Structure 11
Atau
struct
{
elemen_struktur;
.....
.....
} nama_tipe_struktur;
#include<conio.h>
#include<iostream.h>
main( )
{
struct
{
char nim[5];
char nama[15];
} mahasiswa;
clrscr( );
cout<<"masukan NIM = ";
cin>>mahasiswa.nim;
cout<<"masukan Nama = ";
cin>>mahasiswa.nama;
cout<<"masukan Nilai Akhir = ";
cin>>mahasiswa.nilai;
cout<<"\n\nData Yang di Inputkan adalah : \n\n";
cout<<"NIM = "<<mahasiswa.nim<<endl;
cout<<"Nama = "<<mahasiswa.nama<<endl;
cout<<"Nilai Akhir = "<<mahasiswa.nilai<<endl;
getch( );
}
clrscr( );
data mahasiswa;
cout<<"masukan NIM : ";cin>>mahasiswa.nim;
cout<<"masukan NAMA : ";cin>>mahasiswa.nama;
cout<<"masukan NILAI AKHIR : ";cin>>mahasiswa.nilai;
cout<<"\n\n Data yang Anda Inputkan Adalah : "<<endl<<endl;
cout<<"NIM : "<<mahasiswa.nim<<endl;
cout<<"NAMA: "<<mahasiswa.nama<<endl;
cout<<"NILAI AKHIR: "<<mahasiswa.nilai<<endl;
getch( );
}
Output yang akan dihasilkan, dari program contoh-2 diatas adalah :
Contoh-2 /* ------------------------------------------ */
/* Program Penggunaan structure pada function */
/* Nama File : struct4.cpp */
/* ------------------------------------------ */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main( )
{
int i, j=1, k=1;
struct
{
char nim[5];
char nama[15];
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;
char ket(float n)
{
11.3. Latihan
Kerjakan tugas-tugas dibawah ini sesuai dengan petunjuk dan ketentuan pengerjaan
yang telah diberikan :
1. Buatlah program untuk menghitung nilai Hasil dari nilai UTS, UAS dan
menampilkan nilai huruf yang akan didapat.
Ketentuan :
Masukan banyak data yang diinginkan untuk menentukan banyak data yang
akan diproses.
Buatlah sebuah function untuk menghitung nilai Hasil
Nilai Hasil = (Nilai UAS * 40%) + (Nilai UTS * 60%)
Jika Nilai Huruf = A, maka Nilai Hasil >= 80
Jika Nilai Huruf = B, maka Nilai Hasil >= 70
Jika Nilai Huruf = C, maka Nilai Hasil >= 56
Jika Nilai Huruf = D, maka Nilai Hasil >= 47
Jika Nilai Huruf = E, maka Nilai Hasil < 47
2. Buatlah program untuk menghitung honor pegawai honorer dari suatu perusahaan
dengan menghitung kelebihan jumlah jam kerja pegawai tersebut. Honor harian
pegawai honorer sebesar Rp. 15000
Ketentuan :
Masukan banyak data yang diinginkan untuk menentukan banyak data yang
akan diproses.
Buatlah sebuah function untuk menghitung honor lembur
Ketentuan lembur dihitung dari kelebihan jam kerja pegawai tesebut. Jam kerja
normal pegawai sebanyak 8 jam
Jika jumlah jam kerja lebih dari 8 jam, maka kelebihan jam kerja dikalikan
Rp. 5000 + Honor harian
Jika jumlah jam kerja hanya 8 jam tidak mendapat honor lembur, hanya
mendapat honor harian saja.
Object Oriented
Programming (OOP) 12
12.1. Pengertian OOP
Object Oriented Programming atau yang lebih dikenal dengan OOP adalah
pemrograman yang menitikberatkan kepada objek-objek untuk menyelesaikan tugas
atau proses dari program tersebut. Sedangkan penitikberatkan ini dimaksudkan
adanya interaksi pengiriman nilai, pesan atau pernyataan antar objek. Kemudian
objek yang merespon hasil dari interaksi tersebut akan membentuk suatu tindakan
atau aksi (methode).
Class
Calss merupakan gambaran atau abstraksi karakter dan sifat dari suatu objek. Class
juga dapat mendefinisikan ciri dan perilaku objek tersebut.
Object
Object (objek) adalah suatu data atau entitas yang berwujud maupun tidak berwujud,
memiliki sifat (karakteristik) tertentu sesuai dengan kondisi atau status dari
penggunaannya. Data atau entitas di dalam pemrograman dapat disebut dengan blok
fungsi.
Contoh pensil adalah suatu objek yang memiliki attribute (karakter) jenis, warna,
panjang dan lain-lain.
Methode
Metoda merupakan tata cara objek tersebut diperlakukan, atau penggunaan atau
manfaat dari objek tersebut.
Pensil juga memiliki methode (perilaku) seperti diruncingkan, digunakan dan lain-
lain.
public:c
data element_class;
method;
protype function;
};
Object Declaration;
Contoh deklarasi :
Nama class
class motor
{
char merk [50];
float harga ; Nama Anggota Data
int stok ;
};
motor sport;
Pendefinisian Objek
Pernyataan diatas digunakan untuk mendefinisikan variabel bernama sport.
Pada C++ variabel seperti sport berkedudukan sebagai variabel kelas yang biasa
disebut dengan objek.
Pada sebuah kelas, item-item di dalamnya bisa bersifat private atau public. Secara
default, semua item di dalam kelas bersifat private. Jadi tanpa menuliskan kata kunci
private, semua item di dalam kelas sudah private.
garis( )
{
cout<<"==============================\n";
}
class siswa
{
public :
char nis[9],nama[20];
float nilai;
};
main( )
{
clrscr( );
siswa sekolah;
garis( );cout<<endl;
cout<<"\t Program Nilai Siswa"<<endl
<<"\t -------------------"<<endl;
cout<<" Input NIS = ";cin>>sekolah.nis;
cout<<" Input Nama Siswa = ";cin>>sekolah.nama;
cout<<" Input Nilai Akhir = ";cin>>sekolah.nilai;
clrscr( );
garis( );cout<<endl;
cout<<"\t Nilai Siswa"<<endl
<<"\t ------------"<<endl<<endl
<<" NIS = "<<sekolah.nis<<endl
<<" Nama Siswa = "<<sekolah.nama<<endl
<<" Nilai Akhir = "<<sekolah.nilai<<endl;
garis( );
getch( );
}
class tabung
{
private :
int j,t;
float v,k;
public :
tabung( );
void keluaran( );
};
void main( )
{
clrscr( );
tabung s;
s.keluaran( );
getch( );
}
tabung :: tabung( )
{
cout<<"\n Menghitung Tabung"<<endl
<<" -----------------"<<endl<<endl;
cout<<" Masukan Jari-jari = ";cin>>j;
cout<<" Masukan Tinggi = ";cin>>t;
v=(pi*j*j)*t;
k=(2*(pi*2*j))+t;
}
12.2. Konstruktor
Konstruktor (constructor) merupakan suatu fungsi dari anggota suatu kelas
yang memiliki nama yang sama dengan nama kelas fungsi itu berada.
Konstruktor ini digunakan untuk mengalokasikan ruang untuk suatu objek dan untuk
memberikan nilai awal.
public:
int inta( );
int intb( );
hitung(int mudah); //deklarasi constructor
};
Contoh-3 //Konstruktor
#include <conio.h>
#include <iostream.h>
class bilangan
{
private :
int bulat;
double nyata;
public :
bilangan( ); //konstruktor
void info( );
};
void main( )
{
clrscr( );
bilangan a;
a.info( );
bilangan b;
b.info( );
getch( );
}
bilangan :: bilangan( )
{
cout<<"\n Konstruktor dijalankan ... "<<endl;
bulat = 5.2;
nyata = 3.6;
}
void bilangan :: info( )
{
cout<<"\n Jenis Bilangan: "<<endl
<<" Bulat = "<<bulat<<endl
<<" Nyata = "<<nyata<<endl;
}
Output yang dihasilkan dari program contoh-3 di atas adalah:
Gambar 12.4 Hasil Contoh-3
12.3. Destruktor
Destruktor merupakan suatu fungsi anggota yang dijalankan secara otomatis
manakala suatu objek akan terbebas dari memori karena lingkup keberadaannya telah
menyelesaikan tugasnya.
Destruktor harus mempunyai nama yang sama dengan kelas dan diawali
karakter tilde(~) atau karakter tak terhingga.
Destruktor digunakan secara khusus manakala suatu objek menggunakan
memori dinamis selama keberadaannya dan kemudian melepaskan memori itu
setelah tidak menggunakannya lagi.
Contoh-4 //Destruktor
#include <conio.h>
#include <iostream.h>
#include <string.h>
class motor
{
private :
char *merk;
float cc_mesin; long harga;
public :
motor(char *nama, float cc, long hrg);//konstruktor
~motor();//destruktor
void keterangan( );
};
void main( )
{
clrscr( );
motor sport("Honda CBR",500,30500000);
motor matic("Honda Vario",125,14500000);
sport.keterangan( );
matic.keterangan( );
getch( );
}
motor :: motor(char *nama, float cc, long hrg)
{
merk = new char[25];//merubah data karakter menjadi string
strcpy(merk,nama);
cc_mesin=cc;
harga=hrg;
}
motor :: ~motor( )
{
delete [ ] merk;//menghapus memori karakter pd merk
}
void motor :: keterangan( )
{
cout<<"\n Informasi Motor:"<<endl
main( )
{
int x,y,a=1,b=1;
double grand=0;
kerja kary[15];
cout<<endl<<"Jumlah Data :";cin>>y;
for(x=0;x<y;x++)
{
cout<<endl<<" Data Ke-:"<<a++<<endl;
cout<<" NIK :";cin>>kary[x].nik;
cout<<" Nama Karyawan :";cin>>kary[x].nm;
cout<<" Jumlah Jam :";cin>>kary[x].jam;
}
clrscr( );
gotoxy(14,3);cout<<"Daftar Gaji Mingguan\n";
gotoxy(16,4);cout<<"Karyawan Honorer\n";
cout<<" -------------------------------------------------\n"
<<" No. NIK Nama Jumlah Upah Total\n"
<<" Karyawan Jam Lembur Gaji\n"
<<" -------------------------------------------------\n";
for(x=0;x<y;x++)
{ gotoxy(3,wherey());cout<<b++<<".";
gotoxy(7,wherey());cout<<kary[x].nik;
gotoxy(15,wherey());cout<<kary[x].nm;
gotoxy(30,wherey());cout<<kary[x].jam;
gotoxy(36,wherey());cout<<kary[x].lembur(kary[x].jam);
kary[x].total=(40*20000)+kary[x].lembur(kary[x].jam);
gotoxy(44,wherey());cout<<kary[x].total<<endl;
grand=grand+kary[x].total;
}
cout<<" -------------------------------------------------\n";
cout<<" Total Keseluruhan Karyawan :";
gotoxy(44,wherey());cout<<grand<<endl;
getch( );
}
float kerja::lembur(int l)
{
if (l>40)
return(l-40)*30000;
else
return 0;
}
12.5.1. Inheritance
Inheritance memungkinkan programmer untuk "menurunkan" sebuah class
menjadi class lain yang lebih spesifik dan memiliki fungsi yang lebih komplit.
Inheritance merepresentasikan hubungan "seperti" atau "sejenis" (a kind of). Sebagai
contoh, sebuah perahu motor adalah seperti perahu namun dengan kemampuan lebih,
yakni memiliki motor. Contoh lain adalah kendaraan jenis mobil (sebagai super
class) dan memiliki tipe sport (sebagai subclass), bila digabung menjadi mobil sport.
Ketika kita menurunkan sebuah class dari class yang lain, class yang baru
akan mewarisi semua attribute dan method dari class yang sudah ada. Class yang
sudah ada disebut dengan base class atau super class atau parent class dan class
yang baru disebut dengan derived class atau subclass, atau child class. Dengan
inheritance, kita dapat men daur ulang program kita atau bahkan men daur ulang
program orang lain agar sesuai dengan kebutuhan kita.
Tanpa inheritance, kelas merupakan sebuah unit yang berdiri sendiri.
Inheritance akan membentuk suatu konsep dimana jika konsep yang diatas berubah
maka perubahan akan juga berlaku pada yang ada dibawahnya. Inherate sangat mirip
dengan hubungan orang tua dengan anak. Manakala suatu kelas menerima warisan,
semua anggota data dan fungsi juga akan menerima warisan, walalupun tidak
semuanya akan dapat di akses oleh anggota fungsi dari kelas.
Di dalam C++ penentuan akses pada inheritance ada tiga macam, yaitu :
1. Public
Penentuan akses berbasis public menyebabkan anggota dari public dari sebuah
kelas utama akan menjadi anggota public kelas turunan dan menyebabkan juga
anggota protect kelas utama menjadi anggota protect kelas turunan, namun untuk
anggota kelas private tetap pada private kelas utama.
2. Private
Penentu akses berbasis private menyebabkan anggota dari anggota public dari
kelas utama akan menjadi anggota protect kelas turunan, dan menyebabkan
anggota dari kelas utama menjadi anggota protect kelas turunan, namun untuk
anggota kelas private tetap pada private kelas utama.
3. Protected
Penentu akses berbasis protect menyebabkan anggota dari anggota protect dan
public dari kelas utama akan menjadi anggota private dari kelas turunan.
Anggota private dari kelas utama selalu menjadi anggota private kelas utama.
Pada waktu mendeklarasikan suatu kelas, anda dapat menandai bahwa suatu
kelas berasal dari mana, yaitu dengan tanda titik dua (:) setelah nama kelas, tipe
asalnya bias berupa public atau yang lainnya dan dari kelas mana berasal. Berikut
penulisan sintaksisnya:
Class kucing_besar : Public predator
class Predator
{
public:
// constructors
Predator( ):Usianya(10), Bobotnya(5){}
//accessors
int Umurnya( ) const {return Usianya; }
void SetUmur (int Umur) { Usianya = Umur; }
int Beratnya ( ) const { return Bobotnya; }
void SetBerat(int Berat) { Bobotnya=Berat; }
// method lainnya
void Meraung( ) const { cout<< "Meraung ... suara
Predator!\n";}
void Tidur( ) const {cout<< "ssshhh Predator Tidur.\n";}
protected:
int Usianya;
int Bobotnya;
};
//Accessors
KETURUNAN DptKeturunan() const {
return Keturunannya; }
//other methods
void Melompat( ) { cout<<" Melompat ...\n"; }
void Berburu( ) { cout<<" Berburu ... ingin makan \n"; }
private:
KETURUNAN Keturunannya;
};
int main( )
{
Kucing_besar Sibelang;
Sibelang.Meraung( );
Sibelang.Berburu( );
cout<<" Umur Raja Hutan adalah: "<<Sibelang.Umurnya();
cout<<" Tahun Usianya \n";
getch( );
}
12.5.2. Polymorphism
Polymorphisms adalah kemampuan 2 buah object yang berbeda untuk
merespon pesan permintaan yang sama dalam suatu cara yang unik. Contoh, saya
melatih lumba-lumba saya dengan perintah untuk meloncat dan juga saya melatih
burung untuk merespon perintah saya untuk berkicau. Saya lakukan latihan untuk
merespon kepada mereka dengan perintah lisan. Melalui polymorphism saya tahu
bahwa anjing dan burung akan merespon dengan gonggongan atau kicauan.
Dengan cara dan kemampuan seperti ini, jenis akses tertentu dapat
diterapakan dengan berbagai cara oleh objek-objek yang memiliki tipe yang berbeda
atau memiliki banyak bentuk. Fungsi virtual merupakan dasar dari polymorphism
yang berkerja hanya dengan pointer-pointer dan referensi dan hanya
mendeklarasikan method sebagai virtual.
Adapun aturan dari virtual function sebagai berikut:
1. Virtual function harus anggota class.
2. Anggota class bukan anggota yang bersifat statis.
3. Anggota class dapat diakses dengan pointer objek.
4. Virtual function tidak dapat memiliki virtual constructor, akan tetapi dapat
berupa virtual destructor.
class HewanPeliharaan
{
public:
void lucu( )
{
cout<<" Lucunya hewan peliharaan"<<endl;
}
virtual void makan( )// anggota class
{
cout<<" Makan... dibutuhkan hewan peliharaan"<<endl;
}
};
void main( )
{
//definisi Objek Jinak dan Kucing puma
Jinak jinak;
Kucing puma;
hewan=&jinak;
hewan->lucu( );
hewan->makan( );
cout<<" -----------------------------"<<endl;
hewan = &puma;
hewan->lucu( );
hewan->makan( );
getch();
}
12.5.3. Encapsulation
Ciri penting lainnya dari OOP adalah encapsulation. Encapsulation adalah
sebuah proses dimana tidak ada akses langsung ke data yang diberikan, bahkan
hidden. Jika ingin mendapat data, maka harus berinteraksi dengan objek yang
bertanggung jawab atas dara tersebut. Berikut cirri dari encapsulation:
1. Variabel dan method dalam suatu obyek dibungkus agar terlindungi
2. Untuk mengakses, variabel dan method yang sudah dibungkus tadi perlu
interface
3. Setelah variabel dan method dibungkus, hak akses terhadapnya dapat ditentukan.
4. Konsep pembungkusan ini pada dasarnya merupakan perluasan dari tipe data
struktur
Dua hal dalam enkapsulasi :
1. Information hiding
2. Menyediakan perantara (method) untuk mengakses data
class satu_kandang
{
int kandang;
void main( )
{
satu_kandang ayam1, ayam2, ayam3;
int bebek;
ayam1.atur(5);
ayam2.atur(7);
ayam3.atur(2);
bebek=20;
12.6 Latihan
Seorang manager ingin dibuatkan sebuah program perhitungan gaji pegawai
staff honor sederhana. Anda sebagai staff programmer harus membuatkan program
tersebut.
Adapun ketentuan perhitungan gaji pegawai honorer adalah sebagai berikut :
Honorer per hari yang diterima pegawai honorer sebesar Rp. 25.000
Jam kerja selama 8 Jam setiap harinya
Jam bekerja lebih dari 8 jam, maka kelebihan jam dikalikan dengan honor
lembur perjam sebesar Rp. 1.500.
Petunjuk : Gunakan kelas pegawai.
Desain masukan yang diinginkan adalah sebagai berikut
Jumlah :..
Tanggal Input :..
----------------------------------------------------------------------------------------
Data Ke-1
Nama Pegawai :..
Jumlah Jam Kerja :Jam
Data Ke-2
Nama Pegawai :..
Jumlah Jam Kerja :Jam
.
.
<terus mengulang sesuai jumlah pegawai yang diinputkan>
Tanggal : ..
==========================================================
No. Nama Honor Jumlah Honor Total
Pegawai Jam Kerja Lembur Honor
==========================================================
.. .. .. ..
.. .. .. ..
.. .. .. ..
Total Honor Pegawai Sebesar ..
Bentuk Input
Bentuk Output