100
BAB I Pendahuluan 1.1 LATAR BELAKANG C++ adalah suatu bahasa pemrograman yang sangat populer dan telah banyak digunakan untuk melakukan pengembangan aplikasi di berbagai bidang , seperti : telekomunikasi ,embedded,system,bisnis, hiburan, dalam bahasa C/C++, tanda ++ digunakan untuk menunjukkan suatu tingkat (+ 1) sehingga C ++ artinya c+1 atau dapat diartikan sebagai bahasa peningkatan dari bahasa sebelumnya, yaitu bahasa C. Bahasa C adalah bahasa computer yang semakin popular. Dikembangkan oleh Dennis Richie dan Ken Thompson pada tahun 1972. c merupakan perbaikan atas bahasa B yang disusun oleh Ken Thmpson pada tahun 1970. c itu sendiri baru mulai dikenal uas sejak 1978 setelah terbitnya buku The C Programming Language oleh Brian Kernighan dan Dennis Richie. Sejak itu C semakin berkembang dan banyak diminati oleh programmer hingga sekarang. Page | 1

tm c++

Embed Size (px)

DESCRIPTION

teknik informatika

Citation preview

Page 1: tm c++

BAB I

Pendahuluan

1.1 LATAR BELAKANG

C++ adalah suatu bahasa pemrograman yang sangat populer dan telah banyak

digunakan untuk melakukan pengembangan aplikasi di berbagai bidang , seperti :

telekomunikasi ,embedded,system,bisnis, hiburan, dalam bahasa C/C++, tanda ++

digunakan untuk menunjukkan suatu tingkat (+ 1) sehingga C ++ artinya c+1 atau dapat

diartikan sebagai bahasa peningkatan dari bahasa sebelumnya, yaitu bahasa C.

Bahasa C adalah bahasa computer yang semakin popular. Dikembangkan oleh

Dennis Richie dan Ken Thompson pada tahun 1972. c merupakan perbaikan atas bahasa

B yang disusun oleh Ken Thmpson pada tahun 1970. c itu sendiri baru mulai dikenal uas

sejak 1978 setelah terbitnya buku The C Programming Language oleh Brian Kernighan

dan Dennis Richie. Sejak itu C semakin berkembang dan banyak diminati oleh

programmer hingga sekarang.

Ditengah semaraknya bisnis dibidang teknologi informasi, saat ini banyak sekali

bermunculan bahasa pemrograman baru dan development toll yang dikembangkan dan

ditawarkan untuk memudahkan kita dalam pembuatan aplikasi / program . meskipun

demikian berdasarkan survey yang dilakukan oleh suatu badan diluar negeri pada akhir

2004 menyatakan bahwa beberapa bahasa pemrograman yang berada dijajaran atas dan

banyak sekali digunakan adalah java, C ++ , C, C#,php,dan delphi. Memang bagi

sebagian besar progremer pemula, tentu hal ini akan menjadi keadaan yang dilematis .

namun, dengan beberapa alasan yang kuat ternyata banyak progremer profesional

menjatuhkan pilihannya poada c++.

Page | 1

Page 2: tm c++

Abstrak – Perkembangan teknologi saat ini amatlah sangat cepat. Maka kebutuhan

akan barang elektronik seiring naik dengan perkembangan teknoologi tersebut. Untuk itu

manusia perlu menciptakan alat untuk membantunya dalam melakukan tugas – tugas

yang membebaninya. Dengan alat elektronik tersebut, manusia kan terbantu sedikit

meringankan beban pekerjaannya. Bkan hanya dalam perangkat keras saja tapi juga

perangkat lunaknya. Manusia akan sangat perlu suatu printah –perintah yang dapat

menghubungkan keinginanya dengan computer ataupun mesin sekalipun. Perintah

perintah itu diterjemahkan dalam bahasa – bahasa yang dimengerti mesin. Bahasa

manusia merupakan bahasa tingkat tinggi yang tidak dimengerti oleh mesin, sedangkan

bahasa yang dimengerti mesin adalah bahasa tingkat renddah yaitu bahasa assemble.

Salah satu bahasa mesin adalah bahasa C.

Saat ini, C++ telah mengalami evolusi melalui proses standarisasi yang dilakukan

oleh ANSI (american national standards intenational), ISO (international standard

organization), yaitu dengan menambahkan fitur-fitur baru yang belum didukung oleh C+

+ klasik (original).

1.2 Kelebihan dan kekurangan bahasa pemrograman C++

C++ itu pada dasarnya bahasa C juga, kemampuan C yang utama itu adalah seperti :

Kode bahasa C++ dengan portabilitas dan fleksibilitas yang tinggi untuk semua

jenis komputer.

bahasa Standard-nya ANSI bisa dipakai diberbagai platform.

kecepatan program jika dibanding dengan program yang sama buatan bahasa lain,

relatif lebih cepat.

Bahasa C++ tersedia hampir di semua jenis komputer.

Page | 2

Page 3: tm c++

Bahasa C++ hanya menyediakan sedikit kata-kata kunci (hanya terdapat 48 kata

kunci).

Dukungan pustaka fungsi dan kelas yang banyak sehingga memungkinkan

pembuatan aplikasi makro.

C++ adalah bahasa yang terstruktur, dengan demikian akan lebih mendukung OOP.

Bahasa C++ termasuk bahasa tingkat menengah dan lebih dekat dengan bahasa

mesin.

Kode program bersifat reuseable, sehingga dapat digunakan kembali pada project

lain dengan hanya menggunakan library dan file header.

C++ dapat membuat aplikasi graphic processor berkualitas tinggi.

Jika dibandingkan dengan VB atau Delphi C++ memang tidak se-RAD dua bahasa

tersebut , dan cenderung lebih rumit. Namun

dari perbandingan tersebut, sudah jelas pasti ada trade-off, seperti kecepatan, efisiensi

kode, pengstrukturan kode.

Tidak hanya kelebihan-kelebihan yang dimiliki oleh C++, tetapi juga memiki kekurangan

seperti:

C++ tidak murni OOP sehingga kurang cocok untuk mengajarkan Konsep OOP

karena kaidah-kaidah OOP dapat dilanggar. Dan

di C++ ada konsep pointer yang sangat membingunkan, ini salah satu alasan

mengapa C++ menjadi momok yg paling tidak disukai.

C++ walapun tidak terpengaruh oleh Sistem Operasi tetapi tool untuk

developmentnya harus spesific pada salah satu

sistem operasi contoh Visual Studio hanya dapat berjalan di Windows. Alasan ini

juga nantinya akan dapat menurunkan minat terhadap sistem operasi yang lain

contohnya Linux. Apabila dalam praktiknya menggunakan Visual Studio maka

otomatis akan menggunakannya juga dan pada akhirnya malas untuk mencoba

sistem operasi yang lain.

Page | 3

Page 4: tm c++

Implementasi C++ dalam teknologi IT pada saat sekarang sudah sangat sedikit

sekali.

“susah” untuk membuat sesuatu dengan C++ sehingga kepeminatannya dalam

memperdalam Programming akhirnya harus kandas.

kecuali dengan inisitif sendiri mempelajari bahasa/teknologi lain.

Page | 4

Page 5: tm c++

BAB II

Pembahasan

2.1 Pengenalan Model Data, Perintah Masukan dan Keluaran

Pada C++ terdapat 2 jenis I/O dasar, yaitu:

a. Cout (Character In) : standart masukkan

b. Cout (Character Out) : standart kekuaran

Pengenalan Tipe Data

Borland C++ memiliki 7 tipe data dasar

Tabel 2.1. Tipe Data

Tipe

Data

Ukuran

Memori Jangkauan Nilai

Jumlah

Digit

Char 1 Byte -128 s.d 127

Int 2 Byte -32768 s.d 32767

Page | 5

Page 6: tm c++

Short 2 Byte -32768 s.d 32767

Long 4 Byte -2,147,435,648 s.d 2,147,435,647

Float 4 Byte 3.4 x 10-38 s.d 3.4 x 10+38 5 – 7

Double 8 Byte 1.7 x 10-308  s.d 1.7 x 10+308 15 – 16

Long

Double 10 Byte 3.4 x 10-4932  s.d 1.1 x 10+4932 19

Tipe Data Tambahan

Unsigned digunakan bila data yang digunakan hanya data yang positif saja.

Tabel 2.2. Tipe Data Tambahan

Tipe

Data

Jumlah

Memori Jangkauan Nilai

Unsigned Integer 2 Byte 0 – 65535

Unsigned Character 1 Byte 0 – 255

Unsigned Long Integer 4 Byte 0 – 4,294,967,295

Page | 6

Page 7: tm c++

Konstanta

Konstanta adalah suatu nilai yang sifatnya tetap. Secara garis besar konstanta

dapat dibagi menjadi dua bagian, yaitu

Konstanta Bilangan

Konstanta Teks

 

Konstanta Bilangan

Dalam hal ini konstanta bilangan dibagi menjadi tiga kelompok, antara lain;

1. Konstanta Bilangan Bulat (Integer).

Adalah bilangan yang tidak mengandung nilai desimal.

Contoh : 1, 2, 3, 100

2. Konstanta Desimal Berpresisi Tunggal ( Floating Point )

Konstanta Floating Point, mempunyai bentuk penulisan, yaitu :

Bentuk Desimal ( contoh : 5.57 )

Bentuk Eksponensial / Bilangan Berpangkat ( contoh : 4.22e3 à 4.22 x

103 )

3. Konstanta Desimal Berpresisi Ganda ( Double Precision )

Konstanta Double Precision, pada prinsipnya sama seperti Konstanta Floating

Point, tetapi Konstanta Double Precision mempunyai daya tampung data lebih

besar.

Page | 7

Page 8: tm c++

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.

 

Deklarasi Konstanta

Bentuk deklarasi konstanta diawali dengan reserved word const.

Bentuk penulisannya :

 

 

 

 

 

 

 

 

Contoh                   const x = 89;

 

Page | 8

const nama-konstanta = nilai konstanta;

Page 9: tm c++

 

 

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 ;

Tidak boleh ada spasi ( contoh : gaji bersih ) dan dapat menggunakan tanda garis

bawah ( _ ) sebagai penghubung (contoh : gaji_bersih).

Tidak boleh diawali oleh angka dan menggunakan operator aritmatika.

variabel, dibagi menjadi dua jenis kelompok, yaitu :

1. a.    Variabel Numerik

2. b.    Variabel Teks

 

 

Variabel Numerik

Variabel numerik ini dibagi menjadi menjadi 3 (tiga) macam :

Bilangan Bulat atau Integer

Bilangan Desimal Berpresisi Tunggal atau Floating Point.

Bilangan Desimal Berpresisi Ganda atau Double Precision.

Variabel Text

Character ( Karakter Tunggal )

o String ( Untuk Rangkaian Karakter )

Page | 9

Page 10: tm c++

Deklarasi Variabel

Adalah proses memperkenalkan variabel kepada Borland C++ dan pendeklarasian

tersebut bersifat mutlak karena jika tidak diperkenalkan terlebih dulu 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 ( ; ).

Tabel 2.3. Deklarasi Variabel

TIPE VARIABEL SIMBOL DEKLARASI

Integer int

Floating Point float

Double Precision double

Karakter char

Unsigned Integer unsigned int

Unsigned Character unsigned char

Long Integer long int

Unsigned Long Integer unsigned long int

Bentuk penulisannya :

Page | 10

Page 11: tm c++

 

 

 

 

 

 

 

 

 

 

Contoh Deklarasi   int nama_mahasiswa;

                                 char grade;

                                 float rata_rata ;

             int nilai;

 

Page | 11

Tipe data  nama variabel;

Page 12: tm c++

BAB II

2.1 Pengenalan model perintah Masukan dan Keluaran

1. Perintah Masukan

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

scanf()

gets()

cout()

getch

getche()

a. scanf()

Fungsi scanf() digunakan untuk memasukkan berbagai jenis data.

Bentuk Umum dari fungsi ini adalah :

Page | 12

scanf(“penentu format”, &nama-

variabel);

Page 13: tm c++

Keterangan           simbol & merupakan pointer yang digunakan untuk

menunjuk kealamat variabel memori yang dituju.

Tabel 2.7. Penentu Format scanf()

TIPE DATA Penentu Format Untuk 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

Page | 13

Page 14: tm c++

Unsigned Hexadecimal Integer%x

Unsigned Octal Integer%o

Contoh-11             

# include <stdio.h>

# include <conio.h>

main()

{

int a, b, c = 0 ;

clrscr();

printf(“Masukan Nilai A = “); scanf(“%d”,&a);

printf(“Masukan Nilai B = “); scanf(“%d”,&b);

c = a + b;

printf(“Hasil Penjumlahan = %d”,c);

}

b. gets()

Page | 14

Page 15: tm c++

Fungsi gets() digunakan untuk memasukkan data string. Bentuk

Umum dari fungsi ini adalah :

Perbedaan antara scanf() dengan gets() adalah :

Tabel 2.8. Perbedaan scanf() dengan gets()

scanf() gets()

Tidak dapat menerima string yang

mengandung spasi atau tab dan dianggap

sebagai data terpisah

Dapat menerima string yang

mengandung spasi atau tab dan masing

dianggap sebagai satu kesatuan data.

Contoh-12               

# include <stdio.h>

# include <conio.h>

main()

{

char nm1[20];

char nm2[20];

clrscr();

puts(“Masukan nama ke – 1 = “);

gets(nm1);

Page | 15

gets(nama-variabel-array);

Page 16: tm c++

printf(“Masukan nama ke – 2 = “);

scanf(“%s”,&nm2);

printf(“\n\n”);

puts(“Senang Berkenalan Dengan Anda ..”);

puts(nm1);

printf(“Senang Berkenalan Dangan Anda ..%s”, nm1);

puts(“Senang Berkenalan Dangan Anda ..”);

puts(nm1);

printf(“\n\n”);

puts(“Senang Berkenalan Dangan Anda ..”);

puts(nm2);

printf(“Senang Berkenalan Dangan Anda ..%s”, nm2);

}

c. cout ()

Fungsi cin() merupakan sebuah objeck didalam C++ digunakan

untuk memasukkan suatu data. Untuk menggunakan fungsi cin() ini, harus

menyertakan file header iostream.h .

Contoh-13             

# include <stdio.h>

Page | 16

Page 17: tm c++

# include <conio.h>

# include <iostream.h>

main()

{

float a, b, c;

clrscr();

cout<<”Masukan Nilai A : “;

cin>>a;

cout<<”Masukan Nilai B : “;

cin>>b;

c = a + b;

cout<<”Masukan Nilai C : “<<c<<endl;

}

d. 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

Page | 17

Page 18: tm c++

tidak akan ditampilkan di layar. File header yang harus disertakan

adalah conio.h.

Contoh-14             

# include <stdio.h>

# include <conio.h>

main()

{

char kar;

clrscr();

printf(“Masukan Sebuah Karakter Bebas = “);

kar = getch();

printf(“\nTadi Anda Memasukan karakter %c”, kar);

getch();

}

e. getche()

Fungsi getche()dipakai untuk membaca sebuah karakter dengan

sifat karakter yang dimasukkan tidak perlu diakhiri dengan menekan

tombol ENTER, dan karakter yang dimasukan ditampilkan di layar. File

header yang harus disertakan adalah conio.h.

Contoh-15             

# include <stdio.h>

Page | 18

Page 19: tm c++

# include <conio.h>

main()

{

char kar;

clrscr();

printf(“Masukan Sebuah Karakter Bebas = “);

kar = getche();

printf(“\nTadi Anda Memasukan karakter %c”, kar);

getch ();

}

Selain itu kedua fungsi ini dapat digunakan untuk menahan agar

tidak langsung balik kembali kedalam listing program dan hasil dari

program yang di eksekusi dapat dilihat tanpa menekan tombol ALT – F5.

Karena fungsigetch() merupakan fungsi masukkan, jadi sebelum program

keluar harus menginputkan satu buah karakter.

2. Perintah Keluaran

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

printf()

puts()

putchar()

Page | 19

Page 20: tm c++

cout()

a. printf()

Fungsi printf() merupakan fungsi keluaran yang paling umum

digunakan untuk menampilkan informasi kelayar.

printf(“string-kontrol“, argumen-1, argumen-2, …);

Bentuk Penulisan

           

String-Kontrol dapat berupa keterangan yang akan ditampilkan pada layar

beserta penentu format. Penentu format dipakai untuk memberi tahu

kompiler mengenai jenis data yang dipakai dan akan ditampilkan.

Argumen ini dapat berupa variabel, konstanta dan ungkapan.

Tabel 2.4. Penentu Format Printf()

TIPE DATA

Penentu Format

Untuk printf()

Integer%d

Floating Point

Bentuk Desimal%f

Bentuk Berpangkat%e

Bentuk Desimal dan Pangkat %g

Page | 20

Page 21: tm c++

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-1               

#include <stdio.h>

#include <conio.h>

main()

{

Page | 21

Page 22: tm c++

int a = 7;

char b = ‘G’;

clrscr();

printf(“%c Merupakan Abjad Yang Ke – %d”, b, a);

}

Penggunaan Penentu Lebar Field

Bila ingin mencetak atau menampilkan data yang bertipe data FLOAT

atau pecahan, tampilan yang tampak biasanya kurang bagus. Hal tersebut

dapat diatur lebar field-nya dan jumlah desimal yang ingin dicetak.

Contoh-2              

 #include <stdio.h>

#include <conio.h>

main()

{

float a = 7.50, b = 243.21;

clrscr();

printf(“Bilangan A = %f \n”, a);

Page | 22

Page 23: tm c++

printf(“Bilangan B = %f”, b);

}

Output yang akan dihasilkan, jika tidak menggunakan panentu lebar field

adalah

Bilangan A = 7.500000

Bilangan B = 243.210007

Contoh-3               

#include <stdio.h>

#include <conio.h>

main()

{

float a = 7.50, b = 243.21;

clrscr();

printf(“Bilangan A = %4.1f \n”, a);

printf(“Bilangan B = %4.1f”, b);

Page | 23

Page 24: tm c++

}

Output yang akan dihasilkan, jika menggunakan panentu lebar field adalah

Bilangan A =   7.5

Bilangan B = 243.2

 Penggunaan Escape Sequences.

Escape Sequences menggunakan notasi “ \ ” ( back slash ) jika karakter

terdapat notasi “\” ini sebagai karakter “escape” ( menghindar).

Beberapa Escape Sequences lainnya antara lain :

Tabel 2.5. Escape Sequences

ESCAPE SEQUENCES PENGERTIAN

\bBackspace

\fFormfeed

\nBaris Baru

\rCarriage Return

\tTab ( default = 8 karakter )

Page | 24

Page 25: tm c++

\’Tanda kutip tunggal ( ‘ )

\”Tanda Kutip Ganda ( ” )

\\Backslash

\xaa

Kode ASCII dalam hexadecimal.

( aa menunjukkan angka ASCII ybs )

\aaa Kode ASCII dalam octal. (aaa menunjukkan

angka ASCII ybs )

Contoh-3             

 #include <stdio.h>

#include <conio.h>

main()

{

float a = 7.50, b = 43.21, c = 3.21;

float d = 17.50, e = 47.41, f = 3.1;

clrscr();

printf(“%8.2f\t %8.2f\t %8.2f “, a, b, c);

printf(“\n%8.2f\t%8.2f\t%8.2f “, d, e, f);Page | 25

Page 26: tm c++

 

b.   puts()

Perintah puts() sebenarnya sama dengan printf(), yaitu digunakan

untuk mencetak string ke layar. puts()berasal dari kata PUT STRING

Perbedaan antara printf() dengan puts() adalah :

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

printf() puts()

Harus menentukan tipe data untuk

data string, yaitu %s

Tidak Perlu penentu tipe data

string, karena fungsi ini

khusus untuk tipe data

string.

Untuk mencetak pindah baris,

memerlukan notasi ‘ \n ‘

Untuk mencetak pindah baris

tidak perlu notasi ‘ \n ‘ ,

karena sudah dibeikan

secara otomatis.

Contoh-4              

 #include <stdio.h>

#include <conio.h>

main()

{

Page | 26

Page 27: tm c++

char a[4] = “BSI”;

clrscr();

puts(“Saya Kuliah di. “);

puts(a);

}

c. putchar()

Perintah putchar() digunakan untuk menampilkan sebuah karakter

ke layar. Penampilan karakter tidak diakhiri dengan pindah baris.

Contoh-5               

#include <stdio.h>

#include <conio.h>

main()

{

clrscr();

putchar(‘B’);

putchar(‘S’);

putchar(‘I’);

}

Page | 27

Page 28: tm c++

d.   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 .

Contoh-6               

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

main()

{

float a, b, c;

a=7.5; b=8.4; c=0

clrscr();

cout<<”Masukan Nilai A : “<<a;

cout<<”Masukan Nilai B : “<<b;

c = a + b;

cout<<”Masukan Nilai C : “<<c;

getch();

Page | 28

Page 29: tm c++

}

Fungsi Manipulator

Manipulator pada umumnya digunakan untuk mengatur tampilan layar,

untuk mengguakan manipulator ini file header yang harus disertakan file

header iomanip.h . Ada beberapa fungsi manipulator yang disediakan oleh

Borland C++, antara lain.

endl

end

flush()

dec()

hex()

oct()

setbase()

setw()

setfill()

setprecision()

setosflags()

Berikut akan dibahas beberapa fungsi manipulator, diantaranya :

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-7              

 # include <stdio.h>

# include <conio.h>

# include <iostream.h>

main()

{

Page | 29

Page 30: tm c++

float a, b, c;

a=7.5; b=8.4; c=0

clrscr();

cout<<”Masukan Nilai A : “<<a<<endl;

cout<<”Masukan Nilai B : “<<b<<endl;

c = a + b;

cout<<”Masukan Nilai C : “<<c<<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 .

Contoh-8              

 # include <stdio.h>

# include <conio.h>

# include <iostream.h>

main()

{

Page | 30

Page 31: tm c++

int a, b, c, d;

clrscr();

cout<<”Masukan Nilai A : “; cin>>a;

cout<<”Masukan Nilai B : “; cin>>b;

c = a % b;

d = a * b;

cout<<”Hasil dari C = A % B adalah “<<c<<ends;

cout<<”Hasil dari D = A * B adalah “<<d<<ends;

getch();

}

c. dec, oct dan hex

Dec, oct dan hex  merupakan suatu fungsi manipulator yang digunakan

untuk menampilkan data dalam bentuk desimal, oktal dan hexadesimal.

File header yang harus disertakan adalah file header iomanip.h .

Contoh-9              

 # include <stdio.h>

# include <conio.h>

# include <iostream.h>

# include <iomanip.h>

void main()

Page | 31

Page 32: tm c++

{

int nilai = 10;

clrscr();

cout<<”Nilai = “<<nilai<<endl;

cout<<”Nilai ke Octal = “<<oct<<nilai<<endl;

cout<<”Nilai ke Hexadesimal = “<<hex<<nilai<<endl;

cout<<”Nilai ke Desimal = “<<dec<<nilai<<endl;

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 .

Contoh-10             

# include <stdio.h>

# include <conio.h>

# include <iostream.h>

# include <iomanip.h>

void main()

Page | 32

Page 33: tm c++

{

float a, b, c;

a = 25.77;

b = 23.45;

clrscr();

c = a * b;

cout<<setiosflags(ios::fixed);

cout<<setprecision(1)<<c<<endl;

cout<<setprecision(2)<<c<<endl;

cout<<setprecision(3)<<c<<endl;

cout<<setprecision(4)<<c<<endl;

cout<<setprecision(5)<<c<<endl;

getch();

Page | 33

Page 34: tm c++

2.2 Kondisi Pada C++

Kondisi digunakan untuk mengambl keputusan berdasarkan suatu kondisi yg

mMnuhi syarat yg telah ditentukan dlm suatu program jika suatu nilai memenuhi kondisi

maka nilai bernilai benar jika tidak maka bernilai salah. 

Penyeleksian kondisi dapat digunakan untuk mengambil keputusan berdasarkan

suatu kondisi yang memenuhi syarat yang telah ditentukan dalam suatu program jika

suatu nilai memenuhi kondisi maka nilai bernilai benar jika tidak maka nilai bernilai

salah. Untuk menguji setiap kondisi diperlukan pembanding yang biasa sama satu sama

lain, lebih besar, lebih kecil, atau tidak sama dengan yang lainnya. Untuk mengujinya

dibutuhkan operator yang dapat menyatakan kondisi tersebut.

Pernyataan kondisi “if…..”

Kondisi if digunakan untuk menyeleksi suatu kondisi tunggal. Bila proses yang

diseleksi terpenuhi atau bernilai benar, maka pernyataan yang ada di dalam blok if akan

diproses dan dikerjakan. Bentuk umum struktur kondisi if adalah:

if (kondisi)…..

Contoh program 1 :

Kondisi If Tunggal

/*contoh program kondisi if untuk memeriksa suatu kondisi*/

#include

Page | 34

Page 35: tm c++

#include

void main()

{

float nilai;

cout <> nilai;

if ( nilai >= 65 )

cout << “ Selamat ANDA LULUS !!!! ujian \n ”; getch(); }

Pernyataan kondisi “if……….Else………” Dalam structure kondisi if……..else

digunkan jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan

pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka

pernyataan yang kedua yang dilaksanakan. Bentuk umunya adalah sebagai berikut:

Contoh program :

#include #include void main( ) { float nilai; clrscr ( ); cout <> nilai;

if ( nilai > 65 )

cout << “ Selamat Anda LULUS !!!! ujian \n ”;

else

cout( “ Anda TIDAK LULUS !!!! ujian \n ”;

getch();

}

Bentuk If Tersarang (Nested If)

Dalam berbagai persoalan, seringkali suatu bentuk seleksi bertingkat diperlukan. Bentuk

seperti ini dinamakan Nested If.

Nested If berarti dalam satu blok statemet if terdapat statement If yang lain.Pernyataan If

tersaarang menyebabkan eksekusi sebuah pernyataan dikondisikan pada dua atau

Page | 35

Page 36: tm c++

beberapa klausa bersyarat, dimana kebeadaan blok If yang lebih dalam ditentukan oleh

blok If di luarnya.

Bentuk If Tersarang (Nested If)

Bentuk struktur penulisan If tersarang :

if (ekspresi pengujian 1)

{

if (ekspresi pengujian 2)

{

Pernyatan yang akan dieksekusi jika ekspresi 1 dan ekspresi 2 bernilai logika benar

}

}

Structur kondisi “switch… case…default…”

Struktur kondisi switch…case…default digunakan untuk penyeleksian kondisi dengan

kemungkinan yang terjadi cukup banyak. Struktur ini akan melaksanakan salah satu dari

beberapa pernyataan ‘case’ tergantung nilai kondisi yang ada di dalam switch.

Selanjutnya prose diteruskan hingga ditemukan pernyataan ‘break’. Jika tidak ada nilai

pada case yang sesuai dengan nilai kondisi, maka proses akan diteruskan kepada

pernyataan yang ada dibawah ‘default’.

Bentuk umum dari structure kondisi ini adalah:

switch(kondisi)

{

Page | 36

Page 37: tm c++

case 1 : pernyataan-1;

break;

case2 : pernyataan-2;

break;

….

….

case n : pernyataan-n;

break;

default : pernyataan-m

}

Page | 37

Page 38: tm c++

2.3 Perulangan Dalam Bahasa C++

Perulangan adalah suatu atau serangkaian bentuk kegiatan mengulang suatu

statement sampai batas yang diinginkan.

Macam-Macam Perulangan dan bentuk umumnya ada 3 yaitu:

Perulangan FOR

Digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya.

Bentuk umumnya:

for( awal ; kondisi ; counter )

{

Statementl;

Statement2;

}

Statement3;

Perulangan WHILE

Digunakan bila jumlah perulangannya belum diketahui.

Bentuk umumnya:

while( expression )

Page | 38

Page 39: tm c++

{

Statementl;

Statement2;

}

Statement3;

Perulangan DO WHILE

Perulangan DO WHILE dan WHILE hampir sama, perbedaannya dengan while, do ...

while memiliki pengecekan kondisi yang terletak setelah statement perulangan.

Bentuk umumnya:

do

{

Statementl;

Statement2;

}

while( expression )

Statement3;

Page | 39

Page 40: tm c++

2.4 ARRAY 

Variabel Larik atau lebih dikenal dengan ARRAY adalah adalah Tipe terstruktur

yang terdiri dari sejumlah komponenkomponen yang mempunyai tipe yang sama. Suatu

Array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam

suatu larik ditunjukan oleh suatu indek untuk membedakan variabel yang satu dengan

variabel yang lainnya. Variabel array dalam C++, dapat digolongkan menjadi tiga buah

dimensi :

1. Array Berdimensi Satu.

2. Array Berdimensi Dua

3. Array Berdimensi Tiga.

 

1. Array Berdimensi Satu

Cara mendeklarasikan variabel array sama seperti deklarasi variabel yang lainnya,

hanya saja diikuti oleh suatu indek yang menunjukan jumlah maksimum data

yang disediakan.

Bentuk umum pendeklarasian array :

Tipe-Data Nama_Variabel[Ukuran]

Keterangan :

Type Data : Untuk menyatakan type datayang digunakan.Page | 40

Page 41: tm c++

Ukuran : Untuk menyatakan jumlah maksimum elemen array.

Contoh Pendeklarasian Array

float Nil_Akhir[6];

float è type data, Nil_Akhir è elemen array, [6] èJumlah elemen Array

Suatu array dapat digambarkan sebagai kotak panjang yang berisi kotak-kotak

kecil didalam kotak panjang tersebut.

Subscript atau Index array pada C++, selalu dimulai dari Nol ( 0 )

Bentuk umum pengaksesan dengan bentuk :

Nama_Array[Subscript/Index]

Contoh :

Nil_Akhir[3];

Nil_Akhir[1];

Nil_Akhir[0];

 

Inisialisasi Array Dimensi Satu

Inisialisasi adalah memberikan nilai awal terhadap suatu variabel. Bentuk

pendefinisian suatu array dapat dilihat dari contoh berikut :

Tipe_data nama_array[jml_elemen] = { nilai array };

Contoah Program :

/* —————————- */

/* Program Array Satu Dimensi */

/* —————————- */

Page | 41

Page 42: tm c++

#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 Teori : “;

cin>>nilai1[i];

Page | 42

Page 43: tm c++

cout<<”Nilai Praktek : “;

cin>>nilai2[i];

hasil[i] = (nilai1[i] * 0.40)+

(nilai2[i] * 0.60);

cout<<endl;

}

cout<<”——————————————”;

cout<<”——-”<<endl;

cout<<”No. Nama Siswa Nilai Nilai “;

cout<<”Hasil”<<endl;

cout<<” Mid Tes FInal “;

cout<<”Ujian”<<endl;

cout<<”——————————————”;

cout<<”——-”<<endl;

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

{

cout<<setiosflags(ios::left)<<setw(4)<<i;

cout<<setiosflags(ios::left)<<setw(20)<<nama[i];

cout<<setprecision(2)<<” “<<nilai1[i];

Page | 43

Page 44: tm c++

cout<<setprecision(2)<<” “<<nilai2[i];

cout<<setprecision(2)<<” “<<hasil[i]<<endl;

}

cout<<”————————-

—————–”;

cout<<”——-”<<endl;

getch();

}

 

 

 

 

2. Array Berdimensi Dua

Array dimensi dua tersusun dalam bentuk baris dan kolom, dimana indeks

pertama menunjukan baris dan indeks kedua menunjukan kolom. Array dimensi

dua dapat digunakan seperti pendatan penjualan, pendataan nilai dan lain

sebagainya.

Bentuk Umum pendeklarasian array :

Tipe-Data Nama_Variabel[index-1][Index-2]

Keterangan :

Type Data : Untuk menyatakan type data yang digunakan.

Index-1 : Untuk menyatakan jumlah baris

Index-2 : Untuk menyatakan jumlah kolom

Inisialisasi Array Dimensi Dua

Page | 44

Page 45: tm c++

Inisialisasi adalah memberikan nilai awal terhadap suatu variabel. Bentuk

pendefinisian suatu array dapat dilihat dari contoh berikut :

Tipe_data nama_array[jml_elemen] = { nilai array };

Contoh Pendeklarasian Array

Sebagai contoh pendeklarasian yang akan kita gunakan adalah pengolahan data

penjualan, berikut dapat anda lihat pada tabel berikut :

Jenis

Barang

Tahun

2001 2002 2003

Printer 150 159 230

Keyboard 100 125 150

Monitor 210 125 156

 

Jika anda lihat dari tabel diatas maka dapat dituliskan kedalam array dimensi dua

berikut :

int data_jual[3][3];

Keterangan :

[3] Jumlah Kolom, [3] Jumlah Baris, data_jual : Nama Array, int : Tipe data

elemen array

Bentuk umum pengaksesan dengan bentuk :

Nama_Array[Index-1][Index-2]

Contoh Program :

/* —————- */

/* Array Dimensi 2 */

/* —————- */

#include<conio.h>Page | 45

Page 46: tm c++

#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;

Page | 46

Page 47: tm c++

cout<<”NO 2001 2002 2003″<<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();

}

Page | 47

Page 48: tm c++

3. Array Bredimensi 3"Array 3 dimensi" kedalam progam menampilkan daftar peserta klub eropa yang ikut berkompetisi dalam liga champions. Untuk bentuk umum array dimensi 3 pada bahasa C adalah sebagai berikut :tipe_data nama_variabel[jumlah_baris][jumlah_kolom][panjang_karakter];

Langsung saja ke pengimplementasiannya ke dalam kode program bahasa C. Lihat pada tabel kode program di bawah ini. :)

1234567891011121314151617181920212223242526

/**Judul Program : Array dimensi 3*Bahasa Program : Bahasa C*Pembuat Program : Hendro Pramana Sinaga*Tanggal Pembuatan : 5 Mei 2012*/

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

main(){ char h=64, nama[5][4][22] = { "AC Milan","Barcelona","Porto","Monaco", "Liverpool","Real Madrid","CSK Moskow","PSG", "Inter Milan","Arsenal","Atletico Madrid","Ajax", "AS Roma","Manchester United","Dortmund","Valencia", "Manchester City","Bayern Munich","Napoli","Vilareal" };

printf("Liga Champions : \n\n");

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

Page | 48

Page 49: tm c++

272829303132333435363738394041

++h; printf("Grup %c \n", h);

for(s=0; s<4; s++) { printf(" %d. %s \n", s+1, nama[i][s]); } printf("\n"); }

getch();

}

Jika contoh kode program di atas kita eksekusi, maka hasil yang ditampilkan seperti gambar di bawah ini

Page | 49

Page 50: tm c++

2.5 Structures

Pengertian Struktur pada C++

Pengetian Struktur pada C++ adalah koleksi variabel dibawah sebuah nama, Variabel-

variabel ini dapat berbentuk berbagai type, misalnya: int, float, char dan lain-lain.

Perbedaan utama antara struktur dan array adalah bahwa dalam array memiliki tipe data

yang sma, sedangkan struktueadalah sebuah koleksi dari variabel-variabel dibawah nama

yang sma, dimana setiap elemen dapat saja memiliki tipe yang berbeda.

Mendeklarasikan Struktur dalam C++

Struktur dalam C++ dideklarasikan menggunakan keyword struct diikuti dengan nama

struktur, atau sering disebut dengan tag. Variabel-variabel strukur dideklarasikan dalam

kurung kurawal { }, setiap elemennya dipisahkan dengan tanda titik koma atau semi

colon. Bentuk umum/sintaks deklarasi struktur :

struct nama_struct

{

anggota_struktur ;

} ;

Contoh pendeklarasian struktur untuk data tanggal yang terdiri dari 3 variabel, yaitu:

tahun, bulan, dan tanggal yang kebetulan memiliki tipe sama.

1 struct data_tanggal

2 {

3   int tahun;4   int bulan;5   int tanggal;

Page | 50

Page 51: tm c++

6 };

Struktur merupakan kumpulan berbagai tipe data yang memiliki ukuran yang berbeda di kelompokan dalam satu deklarasi unik, dengan format sbb :

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

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

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

products apple;products orange, melon;

Page | 51

Page 52: tm c++

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

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

Contoh :

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

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

Contoh :

// example about structures#include <iostream.h>#include <string.h>#include <stdlib.h>struct movies_t { char title [50]; int year;} mine, yours;

Page | 52

Page 53: tm c++

void printmovie (movies_t movie);

int main (){ char buffer [50];

strcpy (mine.title, "2001 A Space Odyssey"); mine.year = 1968;

cout << "Enter title: "; cin.getline (yours.title,50); cout << "Enter year: "; cin.getline (buffer,50); yours.year = atoi (buffer);

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

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

Output :

Enter title: Alien

Enter year: 1979

My favourite movie is:

2001 A Space Odyssey (1968)Page | 53

Page 54: tm c++

And yours:

 Alien (1979)

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

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

Contoh :

// array of structures#include <iostream.h>#include <stdlib.h>#define N_MOVIES 5

struct movies_t { char title [50]; int year;} films [N_MOVIES];

void printmovie (movies_t movie);

int main (){ char buffer [50]; int n; for (n=0; n<N_MOVIES; n++) { cout << "Enter title: "; cin.getline (films[n].title,50); cout << "Enter year: "; cin.getline (buffer,50);

Page | 54

Page 55: tm c++

films[n].year = atoi (buffer); } cout << "\nYou have entered these movies:\n"; for (n=0; n<N_MOVIES; n++) printmovie (films[n]); return 0;}

void printmovie (movies_t movie){

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

Output :

Enter title: Alien

Enter year: 1979

Enter title: Blade Runner

Enter year: 1982

Enter title: Matrix

Enter year: 1999

Enter title: Rear Window

Enter year: 1954

Enter title: Taxi Driver

Enter year: 1975

 You have entered these movies:

Alien (1979)

Page | 55

Page 56: tm c++

Blade Runner (1982)

Matrix (1999)

Rear Window (1954)

Taxi Driver (1975)

Pointer to structureSama seperti pada tipe lainnya, struktur juga dapat ditunjuk oleh pointer. Aturannya sama untuk setiap tipe data. Pointer harus dideklarasikan sebagai pointer untuk struktur :

struct movies_t { char title [50]; int year;};

movies_t amovie;movies_t * pmovie;

amovie merupakan object dari tipe struct movies_t dan pmovie adalah pointer untuk menunjuk ke objek dari tipe struct movies_t. maka, deklarasi dibawah ini juga benar

:

pmovie = &amovie;

Contoh :

// pointers to structures#include <iostream.h>#include <stdlib.h>

struct movies_t { char title [50]; int year;};

int main (){ char buffer[50];

Page | 56

Page 57: tm c++

movies_t amovie; movies_t * pmovie; pmovie = & amovie;

cout << "Enter title: "; cin.getline (pmovie->title,50); cout << "Enter year: "; cin.getline (buffer,50); pmovie->year = atoi (buffer); cout << "\nYou have entered:\n"; cout << pmovie->title; cout << " (" << pmovie->year << ")\n"; return 0;}

Output :

Enter title: Matrix

Enter year: 1999

 You have entered:

Matrix (1999)

Operator -> merupakan operator penunjuk yang digunakan secara khusus bersama dengan pointer untuk struktur dan pointer untuk class. Memungkinkan kita untuk tidak menggunakan tanda kurung pada setiap anggota struktur yang ditunjuk. Dalam contoh digunakan :

pmovie->title

Atau dalam penulisan yang lain :

(*pmovie).title

Page | 57

Page 58: tm c++

Kedua ekspresi tersebut diatas : pmovie->title dan (*pmovie).title benar dan berarti evaluasi elemen title dari struktur yang ditunjuk (pointed by) pmovie. Harus dibedakan dari :

*pmovie.title

Yang ekuivalen dengan : *(pmovie.title)

Dibawah ini merupaka tabel rangkuman, kombinasi yang mungkin terjadi antara pointer dan struktur:

Expression Description Equivalent

pmovie.title Element title of structure pmovie  

pmovie->titleElement title of structure pointed by pmovie

(*pmovie).title

*pmovie.titleValue pointed by element title of structure pmovie

*(pmovie.title)

Nesting structuresStruture juga dapat berbentuk nested (bersarang) sehingga suatu elemen dari suatu struktur dapat menjadi elemen pada struktur yang lain :

struct movies_t { char title [50]; int year;}

struct friends_t { char name [50];

Page | 58

Page 59: tm c++

char email [50]; movies_t favourite_movie; } charlie, maria;

friends_t * pfriends = &charlie;

Setelah deklarasi diatas, dapat digunakan ekspresi sbb :

charlie.namemaria.favourite_movie.titlecharlie.favourite_movie.yearpfriends->favourite_movie.year

(Dimana 2 ekspresi terakhir ekuivalen)

User defined data types

Definition of own types (typedef).

C++ memungkinkan kita untuk mendefinisikan tipe berdasarkan tipe data yang sudah ada. Untuk itu digunakan keyword typedef, dengan format :

typedef   existing_type   new_type_name ;

dimana existing_type adalah tipe data dasar pada C++ dan new_type_name adalah nama dari tipe baru yang didefinisikan. Contoh :

typedef char C;typedef unsigned int WORD;typedef char * string_t;typedef char field [50];

Contoh diatas telah mendefinisikan empat tipe data baru : C, WORD, string_t dan field sebagai char, unsigned int, char* dan char[50] yang akan digunakan nanti seperti berikut :

Page | 59

Page 60: tm c++

C achar, anotherchar, *ptchar1;WORD myword;string_t ptchar2;field name;

UnionUnion memungkinkan bagian dari memory dapat diakses sebagai tipe data yang berbeda, walaupun pada dasarnya mereka berada pada lokasi yang sama di memory. Pendeklarasian dan penggunaanya hampir sama dengan struktur tetapi secara fungsional berbeda :

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

Semua elemen pada deklarasi union declaration menempati tempat yang sama dimemory. Ukuran yang digunakan diambil dari tipe yang paling besar. Contoh :

union mytypes_t { char c; int i; float f; } mytypes;

Mendefinisikan tiga elemen :

mytypes.cmytypes.imytypes.f

Tiap data memiliki tipe yang berbeda, karena menempati lokasi yang sama dmemory, maka perubahan terhadap satu elemen akan mempengaruhi elemen yang lain.

Page | 60

Page 61: tm c++

Salah satu kegunaan union, memungkinkan untuk menggabungkan tipe dasar dengan suatu array atau struktur dari elemen yang lebih kecil. Contoh :

union mix_t{ long l; struct { short hi; short lo; } s; char c[4];} mix;

Mendefinisikan tiga nama yang memungkinkan kita untuk mengakses grup 4 bytes yang sama : mix.l, mix.s dan mix.c dan dapat digunakan menutut bagaimana kita akan mengaksesnya, sebagai long, short atau char. Tipe data yang sudah digabungkan, arrays dan structures dalam suatu union, maka dibawah ini merupakan cara pengakses-an yang berbeda :

Anonymous unionsPada C++ terdapat option unions tanpa nama (anonymous union). Jika disertakan union dalam structure tanpa nama objek(yang dituliskan setelah kurung kurawal { }) maka union akan tidak memiliki nama dan kita dapat mengakses elemennya secara langsung dengan namanya.

Page | 61

Page 62: tm c++

Contoh:

union

struct { char title[50]; char author[50]; union { float dollars; int yens; } price;} book;

anonymous union

struct { char title[50]; char author[50]; union { float dollars; int yens; };} book;

Perbedaan deklarasi diatas adalah program pertama diberi nama pada union (price) dan yang kedua tidak. Pada saat mengakses anggota dollars dan yens dari objek. Pada program pertama

:

book.price.dollarsbook.price.yens

Sedangkan untuk program kedua :

book.dollarsbook.yens

Page | 62

Page 63: tm c++

2.6 Kelas

Sebuah kelas merupakan pengembangan konsep dari struktur data: tidak hanya

data, tapi juga dapat menangani data dan fungsi.

Sebuah objek merupakan perwakilan dari sebuah kelas. Dalam perbandingan dengan

variabel, sebuah kelas akan menjadi tipe data dan objeknya menjadi variabel.

Kelas dideklarasi menggunakan kata kunci class, dengan format berikut:

class class_name

{

access_specifier_1:

member1;

access_specifier_2:

member2;

….

} object_names;

dimana class_name merupakan identifier sah untuk kelas, object_names merupakan

daftar nama opsional dari objek pada kelas ini. Isi deklarasi bisa mencakup anggota yang

meliputi deklarasi data atau fungsi, dan “optionally access specifiers“.

Seluruhnya sangat mirip dengan deklarasi pada struktur data, kecuali bahwa kita bisa

memasukkan fungsi dan anggota, tapi juga hal baru ini disebut access specifier. Access

specifier merupakan satu dari tiga kata kunci berikut: private, public, atau protected.

Page 64: tm c++

Specifiers ini mengatur hak akses dimana anggota dibutuhkan:

anggota private,

dapat diakses hanya oleh anggota pada kelas yang sama dan friends mereka

anggota protected bis

a diakses oelh anggota dari kelas yang sama dan friends mereka, namun juga dari

anggota turunan kelas mereka

anggota public dapat

diakses dari mana saja dimana objek terlihat.

Secara default, semua anggota kelas dideklarasi dengan kata kunci class memiliki

akses private untuk setiap anggotanya. Jadi, setiap anggota yang dideklarasi sebelum specifier

kelas lain memiliki akses private. Contohnya:

class CRectangle {

int x, y;

public:

void set_values (int,int);

int area (void);

} rect;

Deklarasi sebuah kelas(yakni tipe) CREctangle dan sebuah objek yang dinamakan

rect.Kelas ini berisi empat anggota: dua anggota data bertipe int(anggota x dan y) dengan

akses private(secara default) dan dua anggota fungsi dengan akses

publik:set_value() dan area(), di mana sekarang baru disertakan deklarasi, belum

definisinya.

Perhatikan perbedaan antara nama kelas dan nama objek: dalam contoh

sebelumnya,Crectangle adalah nama kelas, sedangkan rect adalah nama objek dengan

tipeCrectangle. Hal ini sama dengan hubungan int dan a pada deklarasi di bawah ini:

int

Page 65: tm c++

a;

Dimana int merupakan nama tipe(kelas) dan a merupakan nama variabel(objek).

Setelah deklarasi sebelumnya yakni Crectangle dan rect, kita bisa mengacu dalam isi

program untuk anggota publik dari objek rect seperti mereka fungsi dan variabel normal,

dengan menambahkan nama objek diikuti dengan dot(.) dan nama anggota. Selayaknya yang

kita lakulan pada struktur data sebelumnya. Contohnya:

rect.set_values(3,4);

myarea=rect.area();

Anggota rect yang tidak dapat diakses dari isi program kita diluar kelas adalah x dany,

karena mereka dalam akses private dan mereka hanya bisa diacu dari anggota lain pada

kelas yang sama.

Ini merupakan contoh lengkap dari kelas CRectangle:

// classes example

#include <iostream>

using namespace std;

class CRectangle {

int x, y;

public:

void set_values (int,int);

int area () {return (x*y);}

};

void CRectangle::set_values (int a, int b) {

x = a;

y = b;

}

Area: 12

Page 66: tm c++

int main () {

CRectangle rect;

rect.set_values (3,4);

cout << “area: ” << rect.area();

return 0;

}

Hal baru yang paling penting dalam koding adalah operator lingkup(::, titik dua)

yang mencakup definisi set_values(). Ini digunakan untuk mendefinisi anggota kelas dari

luar definisi kelas itu sendiri.

Anda dapat memperhatikan bahwa definisi dari fungsi anggota area() telah

meliputi langsing definisi kelas CRectangle yang diberikan secara sederhana,

dimanaset_value() hanya memiliki prototype yang dideklarasi di dalam kelas,namun

definisi ini berada diluarnya. Dalan deklarasi di luar, kita harus menggunakan operator

scope(::) untuk menjelaskan bahwa kita mendefinisi sebuah fungsi yang merupakan

anggota dari kelas Crectangle dan bukan fungsi global biasa.

Operator Scope(::) menjelaskan kelas dimana anggota tersebut dideklarasi,

memperbolehkan lingkup properti yang sama seakan definisi fungsi disertakan dalan

definisi kelas. Contohnya, dalam fungsi set_values() dari koding sebelumnya.. kita bisa

menggunakan variabel x dan y, yang merupakan anggota privat kelasCrectangle, yang

berarti mereka hanya dapat diakses oleh anggota lain dari kelas tersebut.

Perbedaan antara definisi fungsi anggota kelas meliputi kelas tersebut atau

mencakup prototype dan kemudian definisinya, adalah dalan kasus pertama, fungsi akan

secara otomatis dipertimbangkan dalam fungsi anggota inline oleh compiler, dan kasus

keduam merupakan fungsi anggota normal(not-inline) , dimana dalam kenyataannya,

tidak ada perbedaan dalam behavior.

Anggota x dan y memiliki hak akses private(ingat bahwa jika tidak ada yang

dikatakan, semua anggota kelas didefinisi dengan hak akses private). Dengan

Page 67: tm c++

deklarasi private, kita menolak mengakses mereka dari semua tempat diluar kelas. Ini

membuat masalah, sebah kita telah mendefinisikan fungsi anggota untuk mengatur nilai

anggota dalan objek: fungsi anggota set_values();. Untuk itu, sisanya dari program

tidakmembutuhkan akses langsung untuk mereka. Mungkin dalam contoh singkat, ini

sulit untuk melihat kegunaan melindungi dua variabel tersebut, namun dalan proyek lebih

besar, akan sangat penting bahwa nilai tidak dapat dimodifikasi dalam cara yang tidak

diharapkan( tidak diharapkan dari sudut pandang objek).

satu keuntungan besa dari kelas bahwa, dalam tipe yang lain, kita dapat mendefinisi beberapa

objek padanya. Misalnya, dalan contoh sebelumnya, pada kelas Crectangle, ita dapat

mendeklarasi object rectb sebagai tambahaan pada objek rect:

// example: one class, two objects

#include <iostream>

using namespace std;

class CRectangle {

int x, y;

public:

void set_values (int,int);

int area () {return (x*y);}

};

void CRectangle::set_values (int a, int b) {

x = a;

y = b;

}

int main () {

CRectangle rect, rectb;

rect.set_values (3,4);

rectb.set_values (5,6);

cout << “rect area: ” << rect.area() << endl;

rect area: 12

rectb area: 30

Page 68: tm c++

cout << “rectb area: ” << rectb.area() << endl;

return 0;

}

Dalam kasus nyata, kelas(tipe objek) yakni Crectangle, memiliki dua objek instan : rect

dan rectb. Setiapnya memiliki anggota dan fungsi variabel/

Perhatikan bahwa memanggil rect.area() tidak memberikan hasil yang sama

dengan memanggil rectb.area(). Ini dikarenakan setiap objek kelas Crectangle memiliki

variabel x dan y tersendiri, dan hal yang sama terjadi pada anggota fungsi set_value() dan

area() yang setiapnya menggunakan variabel objeknya untuk beroperasi.

Ini merupakan konsep dasar dari pemrograman berorientasi objek : data dan

fungsi merupakan anggota objek. Kita tidak mengg lagi variabel global yang dilewatkan

dari satu fungsi ke fungsi lain sebagai parameter, melainkan kita menangani objek yang

memiliki data dan fungsi tersendiri sebagai anggotanya. Perhatikan bahawa kita tidak

harus selalum memberikan parameter setiap kali memanggil rect.area atau rectb.area.

Fungsi anggota tersebut secara langsung menggunakan anggota data dari objek rect dan

rectb.

Konstraktor dan Destrakor

Objek secara umum membutuhkan inisialisasi variabel selama proses pembuatan untuk

menjadi operativ dan mencegah mengembalikan nilai yang tidak diharapkan selama

dieksekusi. Contohnya, apa yang terjadi jika dalam contoh sebelumnya,kita memanggil

Page 69: tm c++

fungsi anggota area() sebeum memanggil funsi set_values()? Mungikn ktia akan

mendapatkan hasil yang tidak pasti karena anggota x dan y belum diberikan sebuah nilai.

Untukmencegah itu maka sebuah kelas akan disertakan fungsi khusus yakni constraktor,

yang secara otomatis dipanggil ketika sebuah objek dari kelas dibuat. Fungsi konstraktor

harus memiliki nama yang sama dengan kelas dan tidak dapat mengembalikan sebuah

tipe data, tidak juga void.

Kita akan menunjukkan dalam contoh sebelumnya:

// example: class constructor

#include <iostream>

using namespace std;

class CRectangle {

int width, height;

public:

CRectangle (int,int);

int area () {return (width*height);}

};

CRectangle::CRectangle (int a, int b) {

width = a;

height = b;

}

int main () {

CRectangle rect (3,4);

CRectangle rectb (5,6);

cout << “rect area: ” << rect.area() << endl;

cout << “rectb area: ” << rectb.area() << endl;

return 0;

}

rect area: 12

rectb area: 30

Page 70: tm c++

Seperti yang dapat dilihat, hasil dari contoh tersebut sama dengan sebelumnya.

Namun kita telah memindahkan fugsi anggota set_values(), dan telah memasukkan

sebuah konstraktor yang menampilkan aksi yang sama: ia menginisialisasi nilai x dan y

dengan parameter yang diberikan padanya.

Perhatikan bagaimana argumen dipassing ke constraktor pada saat objek dibuat.

CRectangle rect

(3,4);

CRectangle rectb (5,6);

Konstraktor tidak bisa dipanggil langsung seperti fungsi anggota umum. Mereka

hanya bisa dijalankan ketika sebuah objek baru pada kelas dibuat.

Anda dapat melihat bagaimana deklarasi prototye konstraktor(dalam kelas) dan

definisi konstraktor tidak mengembalikan nilai, bahkan void pun tidak.

Destraktor memenuhi fungsi sebaliknya. Ini akan secara otomatis dipanggil ketika

sebuah objek dihancurkan, karena lingkup keberadaannya telah selesai(misalnya, ketika

kita mendefinisi sebagai objek lokal dalam sebuah fungsi dan akhir fungsi) atau karena

ini merupakan objek yang dinamik ditugasi, dan ini merilis menggunakan operator delete.

Destraktor harus memiliki nama yang sama dengan kelas, namun diawali dengan

tanda ~ dan tidak boleh mengembalikan nilai.

Penggunaan destraktor secara khusus cocok ketiak sebuah objek menjalankan memori

dinamis selama jalannya dan kemudian dihancurkan ketika kita ingin melepaskan memori objek

yang telah dialokasi.

Page 71: tm c++

// example on constructors and destructors

#include <iostream>

using namespace std;

class CRectangle {

int *width, *height;

public:

CRectangle (int,int);

~CRectangle ();

int area () {return (*width * *height);}

};

CRectangle::CRectangle (int a, int b) {

width = new int;

height = new int;

*width = a;

*height = b;

}

CRectangle::~CRectangle () {

delete width;

delete height;

}

int main () {

CRectangle rect (3,4), rectb (5,6);

cout << “rect area: ” << rect.area() << endl;

cout << “rectb area: ” << rectb.area() << endl;

return 0;

}

rect area: 12

rectb area: 30

Page 72: tm c++

Overloading Constructor

Seperti fungsi lainnya, sebuah konstraktor juga bisa dilebihkan dengan lebihd ari satu

fungsi yang memiliki nama yang sama namun tipe dan jumlah parameter yang berbeda. Ingat

bahwa pada fungsi overloading, kompiler akan memanggil satu dari parameter yang cocok

dengan argumen yang digunakan pada pemanggilan fungsi. Pada kasus konstraktor, yang secara

otomatis dipanggil ketika objek dibuat, satu dijalankan adalah yang paling cocok dengan

argumen yang dipassing pada deklarasi objek:

// overloading class constructors

#include <iostream>

using namespace std;

class CRectangle {

int width, height;

public:

CRectangle ();

CRectangle (int,int);

int area (void) {return (width*height);}

};

CRectangle::CRectangle () {

width = 5;

height = 5;

}

CRectangle::CRectangle (int a, int b) {

width = a;

height = b;

}

int main () {

CRectangle rect (3,4);

CRectangle rectb;

rect area: 12

rectb area: 25

Page 73: tm c++

cout << “rect area: ” << rect.area() << endl;

cout << “rectb area: ” << rectb.area() << endl;

return 0;

}

Dalam kasus ini, rectb harus dideklarasi tanpa argumen, jadi ini telah diinisialisasi

dengan konstraktor yang tidak memiliki parameter, dimana inisialisasi baik width dan

height dengan nilai 5.

Penting: perhatikan bahwa jika kita deklarasi sebuah objek baru dan kita ingin

menggunakannya sebagai konstraktor default( satu tanpa parameter) kita tidak perlu

menambahkan kurung kurawal();

CRectangle rectb; // right

CRectangle rectb(); // wrong!

Default Constructor

Jika anda tidak mendeklarasi sebuah konstraktor pada definisi kelas, kompiler mengasumsikan

kelas memiliki konstraktor default tanpa argumen. Jadi, setelah deklarasi kelas seperti berikut:

class CExample {

public:

int a,b,c;

void multiply (int n, int m) { a=n; b=m; c=a*b; };

};

Kompiler berasumsi bahwa Cexample memiliki konstraktor default, jadi Anda akan mendeklarasi

objek pada kelas ini dengan deklarasi singkat tanpa argumen apapun:

Cexample ex;

Page 74: tm c++

Namun sesaat setelah dideklarasi denga konstraktor sendiri pada sebuah kelas, kompiler

tidak menyediakan konstraktor default secara implisit. Jadi anda harus mendeklarasi

semua objek dari kelas sesuai dengan prototype konstraktor yand didefinisi pada kelas:

class CExample {

public:

int a,b,c;

CExample (int n, int m) { a=n; b=m; };

void multiply () { c=a*b; };

};

Kita telah mendeklarasi sebuah konstraktor yang meliputi dua parameter bertipe int. OKI

deklarasi objek berikut akan benar:

CExample ex (2,3);

tetapi

CExample ex;

akan salah, karena kita telah mendeklarasi kelas memiliki konstraktor eksplisit, jadi

menggantikan konstraktor default.

Tetapi kompiler tidak hanya membuat default konstraktor untuk anda jika anda

tidak membuatnya sendiri. Kompiler akan menyediakan tiga fungsi anggota khusus

bahwa jika tidak dideklarasi sendiri. Ini berupa copy constructor, copy assignment

operator, dan default destructor.

Copy constructor dan copy assignment operator menggandakan semua data yang

ada dalam objek lain pada anggota data di objek saat ini. Pada Cexample, konstraktor

kopi dideklarasi secara implisit oleh compiler seperti berikut:

Page 75: tm c++

CExample::CExample (const CExample& rv)

{

a=rv.a; b=rv.b; c=rv.c;

}

OKI, deklarasi objek berikut akan benar:

CExample ex (2,3);

CExample ex2 (ex); // copy constructor (data copied from ex)

Pointers To Classes

ini secara sempurna sah untuk membuat pointer yang menunjuk kelas. Secara

sederhana kita menyadari bahwa sekali dideklarasi, sebuah kelas menjadi bertipe valid, jadi kita

bisa menggunakan nama kelas sebagai tipe dari pointer. Misalnya:

Crectangle * prect;

Merupakan sebuah pointer pada objek kelas Crectangle/

Seperti terjadi pada struktur data, untuk menunjuk langsung anggota dari objek yang ditunjuk

oleh pointer, kita bisa menggunakan operator pana(->). Ini merupakan contoh dengan beberapa

kombinasi:

// pointer to classes example

#include <iostream>

using namespace std;

rect area: 12

rectb area: 25

Page 76: tm c++

class CRectangle {

int width, height;

public:

void set_values (int, int);

int area (void) {return (width * height);}

};

void CRectangle::set_values (int a, int b) {

width = a;

height = b;

}

int main () {

CRectangle a, *b, *c;

CRectangle * d = new CRectangle[2];

b= new CRectangle;

c= &a;

a.set_values (1,2);

b->set_values (3,4);

d->set_values (5,6);

d[1].set_values (7,8);

cout << “a area: ” << a.area() << endl;

cout << “*b area: ” << b->area() << endl;

cout << “*c area: ” << c->area() << endl;

cout << “d[0] area: ” << d[0].area() << endl;

cout << “d[1] area: ” << d[1].area() << endl;

delete[] d;

delete b;

return 0;

}

a area: 2

*b area: 12

*c area: 2

d[0] area: 30

d[1] area: 56

Page 77: tm c++

Berikut, ringkasan bagaimana membaca beberapa pointer dah operator kelas yang

muncul dalam contoh sebelumnya:

Pastikan bahwa Anda mengerti logika dalam ekspresi-ekspresi sebelumnya

sebelum memulai bagian berikut. Jika Andar ragu, baca kembali baigan ini dan/atau

konsultasi pada bagian sebelumnya soal pointer dan struktur data.

Classes defined with struct and Union

Kelas dapat didefinisi tidak hanya dengan kata kunci class tapi juga struct dan union.

Konsep kelas dan struktur data sama bahwa kedua kata kunci(struct dan class)

bisa digunakand alan C++ untuk deklarasi kelas. Perbedaannya hanyalah anggota kelas

dideklarasi dengan kata kuni struct memiliki hak akses public secara default, sedangkan

pada kelas dideklarasi secara default dengan hak akses private. Untutuk persoalan lain,

keduanya sama.

Konsep union berbeda dengan kelas dan struct, karena union hanya menyimpan

satu data anggota pada waktunya, walaupun begitu mereka juga merupakan kelas, dan

bisa jadi menangani anggota fungsi. Secara default hak akses dalam kelas union adalah

public.

BAB III

Penutup

Page 78: tm c++

Kesimpulan

C++ adalah suatu bahasa pemrograman yang sangat populer dan telah banyak digunakan untuk melakukan pengembangan aplikasi di berbagai bidang , seperti : telekomunikasi ,embedded,system,bisnis, hiburan, dalam bahasa C/C++, tanda ++ digunakan untuk menunjukkan suatu tingkat (+ 1) sehingga C ++ artinya c+1 atau dapat diartikan sebagai bahasa peningkatan dari bahasa sebelumnya, yaitu bahasa C.

Lampiran program Lucida Concole

Page 79: tm c++

Berikut adalah contoh program penghitung denda rental CD/DVD yang menggunakan Struct:

#include <iostream>#include <stdlib>

//pendeskripsian variabelchar nama[40],nomember[10];int banyak,bonus,lama,terlambat,denda,biaya=0,total;

//pendeskripsian Struct untuk data cd/dvdstruct dvd{char kode[10],judul[30];int jenis,genre;}dvd[20],bonuspinjam[5];

//Pendeskripsian Struct untuk tanggalstruct tanggal{int tgl,bulan,tahun;}pinjam,kembali,tempo;

//Fungsi yang dipakai untuk input data membervoid inputmember(){cout<<"\nNama Member...........................= ";cin>>nama;cout<<"No. Member............................= ";cin>>nomember;cout<<"Banyak CD/DVD yang Dipinjam (Maks 20) = ";cin>>banyak;}

Script tersebut nantinya akan menghasilkan output seperti di bawah ini:

Proses Input