Anda di halaman 1dari 32

BAHASA PEMOGRAMAN II / C++

Silabus :
1. Struktur Program, Variable, Operator
2. Stream Masukan Dan Keluaran
3. Struktur Kendali Pemilihan
4. Struktur Kendali Perulangan
5. Array
6. Struktur Record
7. Pointer
8. Function Dan Paratemer Passing
9. Paradigma Orientasi Obyek
- Obyek Dan Class
- Inheritance
- Polimorphism
10. File Dan Stream, multifile
BAB I
Struktur Program, Variable, Operator

Struktur Program C++

Preprocessor

void main()
{
Deklarasi variabel ;
Statement-1;
Statement-2;
.
Statement-n;
}

Pre-processor ( compiler directif) digunakan untuk mengarahkan processor untuk


membaca file header. File header ini berisi fungsi-fungsi standar yang sudah disediakan
oleh C++, seperti fungsi I/O, matematik dsb.
Fungsi main() merupakan fungsi utama (fungsi yang harus ada ) dalam sebuah
program C++. Sebuah program C++ yang sangat sederhana dapat terdiri atas satu fungsi
utama saja

Contoh :
void main()
{
}

Variabel (identifier)
Adalah pengenal (yang didefinisikan pemrogram) yang akan digunakan dalam
program. Beberapa syarat pemberian nama variable yaitu :
1. Dapat terdiri atas gabungan huruf dan angka tapi harus diawali dengan huruf
2. Tidak boleh mengandung spasi atau karakter khusus kecuali garis bawah
3. Tidak boleh menggunakan key-word C++

Tipe Data

Tipe Data Ukuran Rentang Nilai


(byte)
Char 1 -128 s/d 127
Unsigned char 1 0 s/d 255
int 2 -32,768 s/d 32,768
Unsigned int 2 0 s/d 65535
Short int 2 -32,768 s/d 32,768
long 4 -2,147,438,648 s/d
2,147,438,648
Unsigned long 4 0 s/d 4,294,967,295
float 4 3.4*10-38 s/d 3.4*1038
double 8 1.7*10-308 s/d 1.7*10308
Long double 10 3.4*10-4932 s/d 1.1*104932
void Data tidak bertipe

Tabel 1 : Tipe Data

Operator
1. Operator arithmatika
* Perkalian
/ Pembagian
% Sisa Pembagian
+ Penjumlahan
- Pengurangan

2. Operator Relasi
> Besar dari
< Kecil dari
>= Besar sama dengan
<= Kecil sama dengan
== Sama dengan
!= Tidak sama dengan

3. Operator Logika
&& and
|| atau
! tidak

4. Operator Penugasan
= Sama dengan

5. Operator penaikan dan penurunan


++ Penaikan
-- Penurunan

6. Operator Unary (gabungan)


+= Tambah
-= Minus
*= Perkalian
/= Perkalian

Contoh : x += 2
BAB II
Stream Masukan Dan Keluaran /
Statemen input output
Stream merupakan suatu abstraksi untuk menangani aliran data dari suatu sumber
ke tujuan lain. Baik sumber maupun tujuan dapat berupa buffer dimemori, string, file atau
layar monitor.

Stream Output
Untuk stream output kelayar monitor digunakan stream cout
Contoh :
#include <iostream.h>
void main()
{
cout << Turbo C++;
}

Stream Input
Untuk stream input digunakan stream cin
Contoh :
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int bil;
cout << input sebuah bilangan :;
cin >> bil;
cout << bilangan yang diinputkan adalah :<< bil;
getch()
}

statement input
- cin>>
- scanf()
- getch()// input data character
- gets()// input data string

statement output
- cout<<
- printf()

Operasi arithmatik
Dalam operasi arithmatik akan selalu berhubungan dengan penggunaan operator
arithmatik, perlu diingat bahwa setiap operator pada operasi arithmatik mempunyai
derajat yang berbeda. Dalam suatu proses arithmatik operator dengan derajat yang lebih
tinggi akan lebih dahulu diproses dibandingkan dengan operator dengan derajat yang
lebih rendah. Tanda kurung dapat digunakan untuk merubah prioritas operasi pengerjaan.
Contoh :
#include <conio.h>
#include <iostream.h>
main()
{
int a,b,c, Total;
cout <<"Input Nilai A"<<endl;
cin>>a;
cout <<"Input Nilai B"<<endl;
cin>>b;
cout <<"Input Nilai C"<<endl;
cin>>c;
Total = a+b+c;
cout <<"Total "<< Total<<endl;
getch();
return 0;
}

Untuk menunjang operasi-operasi arithmatik yang lain, C++ menyediakan fungsi


khusus untuk menangani masalah ini yang disimpan dalam file header math.h. Contoh,
fungsi pow() untuk perpangkatan, fungsi sqrt() untuk akar dsb.

Contoh :
# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <math.h>
void main()
{
clrscr();
float x;
int a,c;
cout << "input nilai A :";
cin >> a;
cout << "input nilai B :";
cin >> c;
x = 4*a*c;
cout <<" hasil:"<< sqrt(x);
getch();
}

Manipulator
Digunakan untuk mengatur tampilan data, ada beberapa manipulator yang
disediakan oleh C++, manipulator ini disimpan dalam file header iomanip.h, adapun
operator-operator ini yaitu :

Manipulator Keterangan
Dec Menampilkan bilangan dalam basis decimal (basis 10)
Endl Menyisipkan baris baru dan mengosongkan stream
Ends Menyisipkan karakter akhir string
Flush Mengosongkan ostream
Hex Menampilkan bilangan dalam basis hexadesimal
Oct Menampilkan bilangan dalam basis octal
Setbase (int n) Mengubah basis bilangan
Mengatur derajat ketelitian untuk bilangan floating
Setprecision (int n)
point
Setw (int n) Mengatur lebar output
Setfill(int c) Menyetel karakter pemenuh berupa c
Setiosflags(long f) Menyetel format tampilan (lihat tabel setiosflags)

Tabel 2: Manipulator

Contoh :
#include <iomanip.h>
#include <conio.h>
#include <iostream.h>
void main()
{
int x = 4321;
cout << nilai x dalam hexadecimal :;<<hex<<x<<endl;
cout << nilai x dalam octal : <<oct<<x;
getch();
}

contoh :
# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <math.h>
void main()
{
clrscr();
double x;
x = 9876.5436;
cout << "tampilan 4 presisi :"<< setw(20)<<setprecision(4)<<x;<<endl;
cout << "tampilan 5 presisi :"<< setw(20)<<setprecision(5)<<x;<<endl;
cout << "tampilan 6 presisi :"<< setw(20)<<setprecision(6)<<x;<<endl;
getch();
}

Jika program diatas dikompilasi dan kemudian dijalankan hasilnya adalah sebagai
berikut :

tampilan x dg 2 presisi : 9.88e+03


tampilan x dg 3 presisi : 9876.544
tampilan x dg 4 presisi : 9876.5436
Tanda format untuk setiosflags() dan resetiosflags()

Nama tanda Keterangan


format
ios::left Menyetel rata kiri terhadap field yang diatur
melalui setw()
ios::right Menyetel rata kanan terhadap field yang diatur
melalui setw()
ios::scientific Menformat keluaran dalam notasi eksponential
ios::fixed Menformat keluaran dalam notasi decimal
ios::dec Menformat keluaran dalam basis 10 (decimal )
ios::oct Menformat keluaran dalam basis 8 (oktal )
ios::hex Menformat keluaran dalam basis 16
(hexadecimal)
ios::uppercase Memformat huruf pada notasi heksadecimal
dalam bentuk huruf kapital
ios::showbase Menampilkan awalan 0x untuk bilangan
heksadecimal atau 0 (nol) untuk bilangan oktal
ios::showpoint Menampilkan titik decimal pada bilangan
pecahan yang tidak memiliki bagian pecahan
ios::showpos Untuk menampilkan tanda + pada bilangan positif

Tabel 3 : setiosflags() dan resetiosflags()

Contoh :
# include <iostream.h>
# include <conio.h>
# include <iomanip.h>
# include <math.h>
void main()
{
clrscr();
double x;
x = 9876.5436;
cout << "tampilan 2 presisi :";
cout << setw(20)<<setprecision(2)<<setiosflags(ios::left)<<x<<endl;
cout << "tampilan 3 presisi :";
cout << setw(20)<<setprecision(3)<<setiosflags(ios::left)<<x<<endl;
cout << "tampilan 4 presisi :";
cout << setw(20)<<setprecision(4)<<setiosflags(ios::left)<<x<<endl;
getch();
}

tampilan 2 presisi :9.88e+03


tampilan 3 presisi :9876.544
tampilan 4 presisi :9876.5436
Latihan :

1. x = ab

2. y = a5 sin(b)
cos(c)
BAB III
Struktur Kendali Pemilihan
Perintah percabangan / Penyeleksian kondisi

Statement ini digunakan untuk menyeleksi satu kondisi atau lebih, ada beberapa
stetement percabangan yang disediakan oleh C++ yaitu :
1. if
Digunakan untuk menyeleksi satu kemungkinan kondisi, baik kondisi benilai benar
atau bernilai salah
Sintaks :
If (kondisi )
{
statement_1;
statement_2;
.
staement_n;
}

Contoh :
#include <.h>

void main()
{
clrscr();
int n_angka;
char ket[5];
cout <<"input nilai angka :";cin>>n_angka;
if (n_angka >= 60)
strcpy(ket,"lulus");
cout <<"keterangan :";cout<<ket;
getch();
}

2. if..else..if
Digunakan untuk menyeleksi dua kemungkinan atau lebih, dimana masing-masing
kondisi baik bernilai benar atau bernilai salah akan melakukan suatu aksi
Sintaks :
If (kondisi_1)
{
statement_1;
statement_2;
.
staement_n;
}
else
If (kondisi_2 )
{
statement_1;
statement_2;
.
staement_n;
}
Contoh :
#include <.h>

void main()
{
clrscr();
int n_angka;
char ket;
cout <<"input nilai angka :";cin>>n_angka;
if (n_angka >= 60)
strcpy(ket,"lulus");
else
strcpy(ket,"gagal");
cout <<"keterangan :";cout<<ket;
getch();
}

latihan :
1. mencari titik kuadran
y
2
II I
1
x
-2 -1 0 1 2 3
III IV
-1

layout :
mencari posisi kuadran
input titik (p,x) :
input titik (p,y) :
titik p(x,y) :

2. Mencari bilangan terbesar dari 3 buah bilngan yang diinputkan


Layout :
Mencari bilangan maks
Input bilangan 1:
Input bilangan 2:
Input bilangan 3:
Bilangan terbesar : ?
3. switch()
Digunakan untuk menyeleksi beberapa kemungkinan nilai, dimana nilai yang akan
diseleksi hanya dapat berupa konstanta, baik konstanta karakter maupun konstanta
numerik.

Sintaks :
switch(kondisi)
{
case 1 : statement_1;
break;
case 2 : statement_2;
break;

default : statement_n;
break;
}

Contoh :
#include <.h>

void main()
{
clrscr();
int bobot;
gotoxy(20,5);cout <<"input nilai huruf :";cin>>n_huruf;
switch(n_huruf)
{
case 'a' : bobot = 4;
break;
case 'b' : bobot = 3;
break;
case 'c' : bobot = 2;
break;
case 'd' : bobot = 1;
break;
case 'e' : bobot = 0;
}
gotoxy(20,6);cout <<"bobot nilai :";cout<<bobot;
getch();
}
BAB IV
STRUKTUR KENDALI PERULANGAN / LOOPING

Digunakan untuk mengulang satu statemen atau satu blok statemen. C++
menyediakan tiga statement perulangan yaitu, for, while dan do..while.
1. for
Biasanya digunakan untuk perulangan yang bersifat tetap atau konstan (sudah
diketahui jumlah perulangannya.)

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

void main()
{
clrscr();
int x;
x = 0;
for(x=5;x>=0;x--)
cout << x <<endl;
getch();
}

2. do while
Biasanya digunakan untuk perulangan yang bersifat tetap atau tidak
tetap.

Contoh perulangan tetap;

void main()
{
clrscr();
int x=1;
do
{
cout << x <<endl;
x++;
}
while (x<=5);
getch();
}

3. while
Biasanya digunakan untuk perulangan yang bersifat tetap atau tidak
tetap.

Contoh perulangan tetap;


void main()
{
clrscr();
int x=1;
while (x<=5)
{
cout << x <<endl;
x+=2;
}
getch();
}
FILE

File adalah operasi untuk menyimpan data yang kita inputkan secara permanen.
Selanjutnya data yang kita simpan tersebut dapat kita panggil lagi jika di perlukan. Oprasi
dasar pada file umumnya terbagi atas 3 tahap, yaitu:
- membuka atau mengaktifkan file
- melaksanakan pemrosesan file
- menutup file

Membuka file
Sebelum file dapat diproses, file harus dibuka terlebih dahulu, bentuk
pernyataannya yaitu

fstream file;
file.open("nama_file.rtf",ios::app|ios::out|ios::in);

modus pembukaan file

Modus Pembukaan file


1. ios :: app
Membuka file dengan modus keluaran, tetapi memungkinkan operasi penambahan data
2. ios :: ate
Membuka file untuk keperluan masukan maupun keluaran dan secara otomatis
menempatkan penunjuk file ke posisi akhir file
3. ios :: in
Membuka file untuk operasi masukan.
4. ios :: out
Membuka file untuk operasi keluaran.
5. ios :: nocreate
Membuka file yang sudah ada. Sekiranya file belum ada, operasi pembukaan gagal
dilakukan
6. ios :: noreplace
Membuka file baru. Sekiranya file sudah ada, operasi pembukaan jadi gagal.
7. ios :: trunc
Menghapus file yang sudah ada dan menciptakan file baru.
8. ios :: binary
membuka file dengan operasi baca tulis secara biner

Menulis ke file
Salah satu bentuk pemrosesan pada file adalah menulis atau merekam data ke file,
bentuk pernyataannya yaitu :
file.write((char*)&obj,sizeof(obj));

Menutup file
Setelah pemrosesan file berakhir, file perlu ditutup, bentuk pernyataannya yaitu :
file.close()

Contoh :

// File obyek

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

char n_huruf;

class mahasiswa
{
public :
char nobp[10];
char nama[10];
int n_angka;
public:
void entri_data();
void info();
};

void mahasiswa ::entri_data()


{
clrscr();
cout<<"nobp :";cin>>nobp;
cout<<"\nnama :";cin>>nama;
cout<<"\nnilai c++ :";cin>>n_angka;
}

void mahasiswa ::info()


{
cout<<endl<<setw(1)<<"|"<<setw(8)<<nobp<<setw(1)<<"|"<<setw(12)<<nama
<<setw(1)<<"|"<<setw(9)<<n_angka<<setw(1)<<"|";
if (n_angka >= 80)
n_huruf ='a';
else
if (n_angka >=65)
n_huruf = 'b';
else
if(n_angka >= 55)
n_huruf = 'c';
else
if (n_angka >=40)
n_huruf = 'd';
else
n_huruf = 'e';
cout<<setw(9)<<n_huruf<<setw(1)<<"|";
cout<<"\n+-----------------------------------------+";
}

void main()
{
mahasiswa mhs;
int pilih=0;
char mad;
while (pilih < 3)
{
clrscr();
fstream file;
file.open("data.dat",ios::app|ios::out|ios::in);
cout<<"\nmenu utama";
cout<<"\n[1].entri data";
cout<<"\n[2].info";
cout<<"\n[3].exit";
cout<<"\ninput pilihan :";cin>>pilih;
switch(pilih)
{
case 1 :
do
{
mhs.entri_data();
file.write((char*)&mhs,sizeof(mhs));
cout<<"\nmasih ada data :";cin>>mad;
} while (mad =='y');
break;

case 2 :
clrscr();
cout<<"data mahasiswa ";
cout<<"\n+-----------------------------------------+";
cout<<"\n| nobp | nama | n.angka | n.huruf |";
cout<<"\n+-----------------------------------------+";

file.seekg(0);
file.read((char*)&mhs,sizeof(mhs));
while (!file.eof())
{
mhs.info();
file.read((char*)&mhs,sizeof(mhs));
}
getch();
break;

case 3 : exit;
file.close();
}
}
getch();
}
BAB V
FUNGSI

Sebuah fungsi berisi sejumlah pernyataan yang dikemas dalam sebuah nama. Nama
ini selanjutnya dapat dipanggil beberapa kali di beberapa tempat dalam program
Tujuan fungsi antara lain yaitu :
- Mempermudah dalam pengembangan program
- Menghemat dalam ukuran program

fungsi main()

fungsi A() fungsi B()

fungsi B1() fungsi B2()

Contoh :
#include <..>
void garis();

void main()
{
clrscr();
garis();
cout<<endl;
cout <<"c++ programming";
cout<<endl;
garis();
getch();
return ;
}

void garis()
{
for (int I=0;I<=15;I++)
cout<<"-";
}

Sebelum suatu fungsi dibuat, fungsi tersebut terlebih dahulu harus dideklarasikan
yang disebut dengan prototype fungsi. Prototype ini berupa :
- Nama fungsi
- Tipe nilai balik fungsi
- Jumlah dan type argumen
Contoh prototype fungsi

- float tambah(float A,float B);

- void garis();

Contoh
void segitiga();
void lingkaran();

void main()
{
int pilih;
clrscr;
gotoxy(20,5) ;cout<<"menu utama";
gotoxy(20,7) ;cout<<"[1].segitiga ";
gotoxy(20,8) ;cout<<"[2].lingkaran";
gotoxy(20,9) ;cout<<"[3].exit";
gotoxy(20,10);cout<<"input pilihan :"; cin>>pilih;
switch(pilih)
{
case 1 : segitiga();
break;
case 2 : lingkaran();
break;
default : exit;
}
getch();
}

void segitiga()
{
clrscr();
int alas,tgi;
float luas;
gotoxy(20,5) ;cout<<"input alas :";cin>>alas;
gotoxy(20,6) ;cout<<"input tinggi :";cin>>tgi;
luas = 0.5*alas*tgi;
gotoxy(20,7) ;cout<<"luas segitiga:";cout<<luas;
}

void lingkaran()
{
clrscr();
float luas_link;
int r;
gotoxy(20,5) ;cout<<"input jari-jari :";cin>>r;
luas_l = 3.14*r*r
gotoxy(20,7) ;cout<<"luas lingkaran :";cout<<luas_link;
}
Ada kalanya sebuah fungsi membutuhkan pertukaran informasi dengan fungsi lain,
pertukaran informasi ini dapat dilakukan dengan cara pertukaran nilai antar parameter.
Dalam pertukaran nilai antar parameter ini dapat dilakukan dengan dua cara yaitu secara
nilai(by value) atau secara acuan (by reference)
1. Pertukaran secara nilai
- Menyalin nilai dari parameter aktual ke parameter formal
- Pertukaran nilai ini bersifat satu arah yaitu dari parameter aktual ke parameter
formal, akibatnya jika terjadi perubahan nilai pada parameter aktual akan
mempengaruhi nilai pada parameter formal, tapi tidak untuk sebaliknya.

Contoh :
#include <.>

float tambah(float a,float b);


float main()
{
float x,y;
clrscr();
gotoxy(20,5);cout<<"input nilai x :";cin>>x;
gotoxy(20,6);cout<<"input nilai y :";cin>>y;
gotoxy(20,7);cout<<"hasil :";cout<<tambah(x,y);//parameter aktual
gotoxy(20, 9);cout<<"nilai x setelah pemanggilan fungsi tambah :";cout<<x;
gotoxy(20,10);cout<<"nilai y setelah pemanggilan fungsi tambah :";cout<<y;
getch();
return 0;
}

float tambah(float a, float b)//parameter formal


{
float c;
c = a + b;
a=a+2;
b=b+2;
return(c);
}

Hasil eksekusi program

input nilai x :2
input nilai y :2
hasil :4

nilai x setelah pemanggilan fungsi tambah :2


nilai y setelah pemanggilan fungsi tambah :2

2. Pertukaran secara acuan (by reference)


- Pertukaran nilai ini bersifat dua arah, yaitu dari parameter aktual ke parameter
formal dan dari parameter formal ke parameter aktual, akibatnya kalau terjadi
perubahan nilai pada salah satu parameter akan saling mempengaruhi.

Contoh :
#include <>

float tambah(float *a,float *b);


float main()
{
float hasil;
float x,y;
clrscr();
gotoxy(20,5);cout<<"input nilai x :";cin>>x;
gotoxy(20,6);cout<<"input nilai y :";cin>>y;
gotoxy(20,7);cout<<"hasil :";cout<<tambah(&x,&y);
gotoxy(20, 9);cout<<"nilai x setelah pemanggilan fungsi tambah :";cout<<x;
gotoxy(20,10);cout<<"nilai y setelah pemanggilan fungsi tambah :";cout<<y;
getch();
return 0;
}

float tambah(float *a, float *b)


{
float c;
c = *a + *b;
*a=*a+2;
*b=*b+2;
return(c);
}

Lingkup variabel
Lingkup variabel menentukan keberadaan suatu variabel tertentu dalam fungsi.
Ada tiga jenis variabel pada suatu fungsi :
1. Variabel otomatis atau disebut juga variabel lokal, variabel ini mempunyai sifat
- Variabel hanya diciptakan saat fungsi dipanggil dan saat fungsi berakhir (selesai
dieksekusi) maka variabel akan sirna
- Hanya dapat diakses pada fungsi yang mendefenisikannya
2. Variabel eksternal atau disebut juga variabel global, variabel ini mempunyai sifat
- Variabel ini mempunyai durasi selama program dieksekusi, dengan kata lain,
memori yang digunakan untuk variabel ini tetap dipertahankan selama program
belum berakhir
- Variabel ini dapat diakses pada semua fungsi
3. Variabel static, variabel ini mempunyai sifat
- Jika variabel lokal yang dibuat statis, maka variabel ini tetap hanya dapat diakses
pada fungsi yang mendefenisikannya, akan tetapi nilainya tidak hilang saat eksekusi
fungsi berakhir
- Jika variabel eksternal yang dibuat static, variabel ini dapat diakses oleh semua file
yang mendefenisikan pada file yang sama dengan variabel eksternal tsb (kode
program ditaruh pada beberapa file)
BAB VI
ARRAY

Array adalah kumpulan data yang bertipe sama yang menggunakan nama yang
sama. Setiap data ditandai dengan sebuah indeks, dan setiap data diakses melalui
indeksnya. Indeks array harus bertipe numerik bilangan bulat. C++ secara otomatis akan
memberi nilai awal nol terhadap array yang bersifat global. Tidak demikian halnya kalau
array didefenisikan secara lokal. Pemrogram harus mengatur sendiri nilai awal array
lokal.
Contoh :
#include <..>

void main()
{
clrscr();
char nobp[5][10];
char nama[5][15];
int n_angka[5];
int x,i
x= 0;
do
{
gotoxy(20,5);cout<<"input nobp :";cin>>nobp[x];
gotoxy(20,6);cout<<"input nama :";cin>>nama[x];
gotoxy(20,7);cout<<"nilai angka :";cin>>n_angka[x];
x++;
gotoxy(20,9);cout<<"masih ada data :";cin>>mad;
}
while (mad =='y');
getch();

clrscr();
gotoxy(10,5);cout<<"+-------------------------------------+";
gotoxy(10,6);cout<<"| no | nobp | nama | n angka |";
gotoxy(10,7);cout<<"+-------------------------------------+";
/* 01234567890123456789012345678901234567890 */
/* 1 2 3 4 5 */
baris = 7;
for (i=0;i<x;i++)
{
baris++;
gotoxy(10,baris);cout<<"|";
gotoxy(12,baris);cout<<i;
gotoxy(15,baris);cout<<"|";
gotoxy(18,baris);cout<<nobp[i];
gotoxy(26,baris);cout<<"|";
gotoxy(28,baris);cout<<nama[i];
gotoxy(38,baris);cout<<"|";
gotoxy(40,baris);cout<<n_angka[i];
gotoxy(48,baris);cout<<"|";
}
getch();
return;
}
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>

void main()
{
clrscr();
char nobp[5][10];
char nama[5][15];
int n_angka[5];
char mad;
int x,i ;
x= 0;
do
{
cout<<"input nobp :";cin>>nobp[x];
cout<<"input nama :";cin>>nama[x];
cout<<"nilai angka :";cin>>n_angka[x];
x++;
cout<<"masih ada data :";cin>>mad;
}
while (mad =='y');
getch();

clrscr();
gotoxy(10,5);cout<<"+-------------------------------------+";
gotoxy(10,6);cout<<"| no | nobp | nama | n angka |";
gotoxy(10,7);cout<<"+-------------------------------------+";
/* 01234567890123456789012345678901234567890 */
/* 1 2 3 4 5 */

for (i=0;i<x;i++)
{

cout<<"\n"<<setw(10)<<"|"<<setw(4)<<i<<"|"<<setw(10)<<nobp[i]<<"|"
<<nama[i]<<"|"<<n_angka[i]<<"|";
}
getch();
return;
}
BAB VII
STRUCTUR RECORD

Structur bermamfaat untuk mengelompokkan sejumlah data dengan tipe yang


berlainan. Contoh :

Tipe
data

Struct data
{
char nobp[10];
char nama[20];
int nilai;
}; data mhs;

tipe data variabel struktur

Contoh :
#include <stdio.h>

struct data
{
char nobp[10];
char nama[15];
int n_angka;
}; data mhs;
char mad;

void main()
{
do
{
clrscr();
gotoxy(20,5) ;cout<<"input nobp :";cin>>mhs.nobp;
gotoxy(20,6) ;cout<<"input nama :";cin>>mhs.nama;
gotoxy(20,7) ;cout<<"nilai angka :";cin>>mhs.n_angka;
if (mhs.n_angka >= 80)
n_huruf = 'A';
else
if (mhs.n_angka >= 65)
n_huruf = 'B';
else
if (mhs.n_angka >= 55)
n_huruf = 'C';
else
if (mhs.n_angka >= 40)
n_huruf = 'D';
else
n_huruf = 'E';
gotoxy(20,8) ;cout<<"nilai huruf :";cout<<n_huruf
gotoxy(20,10);cout<<"masih ada data :";cin>>mad;
}
while (mad =='y');
getch();
}
BAB VIII.a
OBJECT ORIENTED PROGRAMMING (OOP)

Object Oriented Programming (OOP) atau diterjemahkan menjadi Pemrograman


Berorientasi Obyek merupakan salah satu metoda dalam penulisan program. Tujuannya
adalah meningkatkan efektifitas dan efisiensi pemrogram dalam membangun suatu
aplikasi yang komplek.
Yang perlu dicatat disini adalah bahwa OOP hanya merupakan metoda baru,
bukan merupakan bahasa pemrograman baru. Untuk mengimplementasikan OOP dapat
dipakai beberapa bahasa pemrograman, antara lain C++, delphi, Simula76, java dsb.

Pengertian Obyek
Dalam kehidupan sehari-hari yang dimaksud dengan obyek adalah sesuatu,
sesuatu itu dapat berupa benda hidup dan benda mati, misalnya orang, mobil, meja dsb.
Dibidang biologi terdapat obyek hewan, obyek mobil, obyek sel dsb. Dibidang otomotif
ada obyek, mobil, obyek busi, obyek roda dsb.
Bila diperhatikan setiap obyek memiliki data dan metoda (fungsi). Sebagai
contoh, orang memiliki data tingi badan , berat badan, warna kulit dsb. Metoda(fungsi)
yang dapat dilakukan orang adalah bekerja, makan, tidur dsb.
Dibidang pemrograman yang dimaksud dengan obyek sebenarnya adalah metode
pemrograman yang menirukan keadaan dunia yang sebenarnya, yaitu dengan membuat
obyek-obyek untuk masalah yang dihadapi.

Metodologi OOP
Ada 3 metodologi atau konsep dasar dari OOP, yaitu :
1. Pemodulan (Encapsulation)
Adalah metoda untuk menggabungkan data dengan fungsi. Dalam konsep
pemodulan, data dan fungsi digabung menjadi satu kesatuan yang disebut dengan
obyek.
Konsep pemodulan ini erat kaitannya dengan konsep penyembunyian informasi
(information hiding). Apa yang dimaksud information hiding ?, contoh :
Mobil adalah sebuah obyek, seorang pengendara mobil tidak harus tahu
bagaimana proses kerja mesin mobil, sehingga mobil tersebut bisa berjalan. Dia tidak
harus tahu bagaimana proses pembakaran bahan bakar, pemindahan transmisi dsb.
Seorang pengendara hanya tahu bahwa setir untuk mengendalikan jalannnya mobil,
gas untuk menambah kecepatan, rem untuk mengurangi kecepatan dsb. Singkatnya
seorang pengendara hanya tahu bahwa mobilnya berjalan dengan baik.
Dari contoh diatas terlihat bahwa seseorang hanya tahu obyek tersebut digunakan
untuk apa dan bukan apa yang menyebabkan obyek tersebut bisa berbuat demikian.

2. Penurunan (Inheritance)
Penurunan merupakan metodologi OOP yang sangat penting. Dari konsep
penurunan ini sebuah obyek dapat diturunkan menjadi obyek baru yang mewarisi
sifat-sifat orang tuanya. Sebagai contoh, obyek dari kendaraan bermotor dapat
diturunkan beberapa obyek baru, misalnya sepeda motor, sedan, mini bus dsb.
Masing-masing kendaraan bermotor ini memiliki beberapa data yang sama, seperti
gigi persneling, kecepatan putaran mesin dsb. Namun masing-masing obyek baru ini
memiliki data dan metoda baru. Contoh sedan memiliki data AC, sedangkan sepeda
motor tidak. Karena sedan memiliki data AC maka terdapat juga metoda-metoda yang
berhubungan dengan AC, seperti menyalakan AC, mengubah suhu dsb.

3. Polimorfisme (Polymorphism)
Polimorfisme (Polymorphism) berarti obyek-obyek yang berbeda tapi berasal dari
satu orang tua dapat mempunyai metoda yang sama tapi cara pelaksanaannya
berbeda-beda.
Contoh pada obyek kendaraan bermotor dan obyek kendaraan tak bermotor,
masing-masing obyek ini memiliki fungsi untuk jalan. Pada kendaraan bermotor
fungsi ini dilakukan oleh mesin, sedangkan pada kendaraan tak bermotor fungsi ini
dikerjakan oleh tenaga manusia atau hewan.

Dasar-dasar OOP pada C++


Untuk membuat sebuah obyek pada C++ digunakan keyword class. Class
merupakan sebuah tipe data baru yang tidak memerlukan tempat dimemori, seperti
halnya tipe data int, char, float dsb. Sedangkan obyek adalah identifier yang dibuat
berdasarkan class tersebut, seperti halnya deklarasi variabel biasa. Contohnya int x,
berarti x adalah obyek dan int adalah class. Contoh lain manusia adalah suatu kelas, maka
objek dari manusia adalah Udin, Ali, Jihan dan sebagainya.

Contoh program berikut akan menghasilkan layout yang sama, sedangkan untuk
membuat program menggunakan metoda yang berbeda.

Program 1:
#include <..>

struct data
{
char judul[20];
char pengarang[20];
int jumlah;
}buku;

void input_data()
{
cout<<"input judul :"; cin >>buku.judul;
cout<<"input pengarang :"; cin >> buku.pengarang;
cout<<"input jumlah :"; cin >> buku.jumlah;
cout<< endl;
}

void info()
{
cout <<"judul buku :"; cout << buku.judul<<endl;
cout <<"pengarang :"; cout << buku.pengarang<<endl;
cout <<"jumlah buku :"; cout << buku.jumlah<<endl;
cout << endl;
}
void main()
{
clrscr();
input_data();
info();
getch();
}

Program 2:
#include <.>

class buku
{
public:
char judul[20];
char pengarang[20];
int jumlah;

public:
void input_data()
{
cout<<"input judul :"; cin>> judul;
cout<<"input pengarang :"; cin>> pengarang;
cout<<"input jumlah :"; cin>> jumlah;
return;
}

void info()
{
cout <<"judul buku :"; cout<< judul<<endl;
cout <<"pengarang :"; cout<< pengarang<<endl;
cout <<"jumlah buku :"; cout<< jumlah<<endl;
return;
}
};

void main()
{
clrscr();
buku novel;
novel.input_data();
novel.info();
getch();
}

Program 3:
#include <>

class buku
{
public:
char judul[20];
char pengarang[20];
int jumlah;
public:
void input_data();
void info();
};

void buku::input_data()
{
cout<<"input judul :";
cin >>judul;
cout<<"input pengarang :";
cin >> pengarang;
cout<<"input jumlah :";
cin >> jumlah;
return;
}

void buku::info()
{
cout <<"judul buku :";
cout << judul<<endl;
cout <<"pengarang :";
cout << pengarang<<endl;
cout <<"jumlah buku :";
cout << jumlah<<endl;
return;
}

void main()
{
clrscr();
buku novel;
novel.input_data();
novel.info();
getch();
}

Pada program 2 dan 3 menggunakan metoda OOP. Dalam program ini dibuat
sebuah class yang bernama buku, dari class buku ini selanjutnya akan dibuat sebuah
obyek yang bernama novel. terlihat bahwa data dan fungsi-fungsi yang berhubungan
dengan obyek novel dijadikan satu kesatuan (class).
OBJECT DALAM BENTUK ARRAY
int br = 9;
char n_huruf;

class mahasiswa
{
public :
char nobp[10];
char nama[10];
int n_angka;
public:
void entri_data();
void info();
};

void mahasiswa ::entri_data()


{
clrscr();
gotoxy(20,5);cout<<"nobp :";cin>>nobp;
gotoxy(20,6);cout<<"nama :";cin>>nama;
gotoxy(20,7);cout<<"nilai c++ :";cin>>n_angka;
}

void mahasiswa ::info()


{
gotoxy(10,br);cout<<'|';
gotoxy(12,br);cout<<nobp;
gotoxy(19,br);cout<<'|';
gotoxy(21,br);cout<<nama;
gotoxy(32,br);cout<<'|';
gotoxy(34,br);cout<<n_angka;
gotoxy(42,br);cout<<'|';
if (n_angka >= 80)
n_huruf ='a';
else
if (n_angka >=65)
n_huruf = 'b';
else
if(n_angka >= 55)
n_huruf = 'c';
else
if (n_angka >=40)
n_huruf = 'd';
else
n_huruf = 'e';

gotoxy(44,br);cout<<n_huruf;
gotoxy(52,br);cout<<'|';
}

void main()
{
mahasiswa *mhs;
mhs = new mahasiswa[50];
clrscr();
int x=0;
char mad;
do
{
mhs[x].entri_data();
x++;
gotoxy(20,9);cout<<"masih ada data :";cin>>mad;
} while (mad =='y');

clrscr();
gotoxy(10,4);cout<<"data mahasiswa ";
gotoxy(10,6);cout<<"+-----------------------------------------+";cout<<endl;
gotoxy(10,7);cout<<"| nobp | nama | n.angka | n.huruf |";cout<<endl;
gotoxy(10,8);cout<<"+-----------------------------------------+";cout<<endl;
/* 01234567890123456789012345678901234567890123 */
/* 1 2 3 4 5 */

for (int y=0;y<x;y++)


{
mhs[y].info();
br++;
delete [] mhs;
}
getch();
}

secara logic pembuatan object diatas dapat digambarkan sebagai berikut :

mahasiswa *mhs
mhs = new mahasiswa[50]
objek
array
mhs

0
1
2
...
49
BAB X
INHERITANCE (PEWARISAN / PENURUNAN)

C++ memungkinkan suatu kelas mewarisi data ataupun fungsi anggota kelas lain.
Sifat seperti ini disebut pewarisan (inheritance). Kelas yang mewarisi kelas lain disebut
kelas turunan (derived class), sedangkan kelas yang mewariskan sifat ke kelas lain
disebut kelas dasar (base class).

Kelas dasar

Sifat A

Sifat B

Kelas Turunan

Sifat A

Sifat B

Sifat C

Contoh :
// turunan dengan pointer menunjuk obyek dinamis

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

int br = 10;
class mahasiswa
{
private:
char nobp[10];
char nama[10];
public:
void entri_data_mhs()
{
clrscr();
gotoxy(20,4);cout<<"entri data mahasiswa";
gotoxy(20,5);cout<<"nobp :";cin>>nobp;
gotoxy(20,6);cout<<"nama :";cin>>nama;
}

void info_mhs()
{
gotoxy(13,br);cout<<'|';
gotoxy(14,br);cout<<nobp;
gotoxy(21,br);cout<<'|';
gotoxy(22,br);cout<<nama;
}
};

class nilai : public mahasiswa


{
private :
char kode_mtk[5];
int n_angka;
char n_huruf;
public :
void entri_data_nilai()
{
mahasiswa::entri_data_mhs();
gotoxy(20,9) ;cout<<"entri nilai";
gotoxy(20,10);cout<<"input kode matakuliah :";cin>>kode_mtk;
gotoxy(20,11);cout<<"input nilai angka :";cin>>n_angka;
}

void info_data_nilai()
{
mahasiswa::info_mhs();
gotoxy(31,br);cout<<'|';
gotoxy(32,br);cout<<kode_mtk;
gotoxy(38,br);cout<<'|';
gotoxy(39,br);cout<<n_angka;
if (n_angka >= 80)
n_huruf = 'A';
else
if (n_angka >= 65)
n_huruf = 'B';
else
if (n_angka >= 55)
n_huruf = 'C';
else
if (n_angka >= 40)
n_huruf = 'D';
else
n_huruf = 'E';
gotoxy(45,br);cout<<"|";
gotoxy(46,br);cout<<n_huruf;
gotoxy(51,br);cout<<"|";
}
};

main()
{
nilai *nl;
nl = new nilai[50];
clrscr();
int x=1;
char mad;
do
{
nl[x].entri_data_nilai();
x++;
gotoxy(20,13);cout<<"masih ada data :";cin>>mad;
} while (mad =='y');

clrscr();
gotoxy(10,4);cout<<"data mahasiswa ";
gotoxy(10,6);cout<<"+----------------------------------------+";
gotoxy(10,7);cout<<"|no|nobp | nama | kode |nilai |nilai|";
gotoxy(10,8);cout<<"| | | | mtk |angka |huruf|";
gotoxy(10,9);cout<<"+----------------------------------------+";
/* 012345678901234567890123456789012345678901234567890123 */
/* 1 2 3 4 5 */

for (int y=1;y<x;y++)


{
gotoxy(10,br);cout<<"|";
gotoxy(11,br);cout<<y;
nl[y].info_data_nilai();
br++;
delete [] nl;
}
getch();
}

Anda mungkin juga menyukai