Anda di halaman 1dari 51

Seri Komputasi Numerik dengan Bahasa C++

PEMROGRAMAN DENGAN C++


Oleh

DASAR-DASAR

Prof. Dr. Ir. Setijo Bismo, DEA.


bies1405@gmail.com

Lisensi Dokumen:
Copyright 2013 Dokumen ini dapat digunakan, dimodifikasi dan disebarluaskan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau mengubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari penulis.

BAB

I. PENDAHULUAN BAHASA C++

A. Bahasa Pemrograman C dan C++


Jika membbicarakan Bahasa-bahasa Pemrograman C++ dan C sebagai bahasa pendahulunya, maka keduanya sebenarnya termasuk ke dalam bahasa pemrograman tingkat menengah. Pencipta C adalah Brian W. Kernighan dan Dennis M. Ritchie pada tahun 1972. C merupakan bahasa pemrograman terstruktur yang membagi program ke dalam sejumlah blok (sub program). Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan C mudah sekali dipindahkan dari satu jenis mesin ke mesin lain. Hal ini karena adanya standarisasi C yaitu ANSI (American National Standards Institute) yang menjadi acuan para pembuat compiler C. Bahasa pemrograman C++ diperkenalkan satu dekade setelah C. Bahasa C++ dikembangkan oleh Bjarne Stroustroup dari Laboratorium Bell, AT&T pada tahun 1983. Pada awalnya C++ diberi nama A better C. Nama C++ sendiri diberi nama oleh Rick Mascitti. Adapun tanda ++ berasal dari operator increment pada bahasa C. 1

MS. Word to PDF converter using OpenOffice.org 1.1.4 Keistime2aan C++ adalah karena bahasa ini mendukung 55P &5b%ect 5riented Programming'. (u%uan utama pembuatan C++ adalah untuk meningkatkan produkti6itas pemrogram dalam membuat aplikasi. Kebanyakan pakar setu%u bah2a 55P dan C++ mampu mengurangi kompleksitas terutama program yang terdiri dari !7.777 baris lebih, bahkan dapat meningkatkan produkti6itas $8 lipat dari C, Pascal dan Basic.

B. O$%e&' Orien'e# Pro(rammin( )OOP*


-de dasar 55P adalah mengkombinasikan data dan 9ungsi untuk mengakses data men%adi sebuah kesatuan unit. :nit ini dikenal dengan obyek. ,ebagai gambaran untuk mempurmudah memahaminya, obyek sebenarnya dapat mencerminkan pola ker%a manusia sehari;hari. ,ebuah obyek dapat diibaratkan sebagai departemen di dalam sebuah perusahaan bisnis, misalnya departemen pen%ualan akunting personalia

Pembagian departemen dalam perusahaan merupakan upaya untuk memudahkan pengoperasian perusahaan. ,ebagai gambaran, %ika *nda seorang mana%er pen%ualan di kantor pusat ingin mengetahui data para salesmen di kantor cabang, apa yang *nda lakukan< .angkah yang *nda tempuh pasti bukan datang ke kantor cabang dan mencari data;data tersebut. :ntuk memudahkan tugas *nda cukup *nda menyuruh sekretaris untuk meminta in9ormasi. Masalah bagaimana dan siapa yang mencarikan bukanlah urusan *nda. *nalogi dengan hal itu, kalau seseorang bermaksud menggunakan obyek, ia cukup mengirim pesan ke obyek dan obyek itu sendiri yang akan menanganinya.

C. Pro(ram C++
Program C++ dapat dibuat menggunakan sebarang editor teks maupun editor sekaligus compilernya. Program utama berekstensi &.CPP'. Pada saat kompilasi program utama bersama dengan 9ile header &.h' akan diter%emahkan oleh compiler men%adi 9ile obyek &.5B='. ,elan%utnya 9ile obyek ini bersama;sama dengan 9ile obyek lain dan 9ile library &..-B' dikaitkan men%adi satu oleh linker. )asilnya adalah 9ile &.>?>' e8ecutable.

D. Com+iler C++
Compiler C++ yang telah beredar di pasaran antara lain Microso9t C@C++ dan Aisual C++. Keduanya dari Microso9t. ,ementara Borland international %uga mengeluarkan (urbo C++ dan Borland C++.

MS. Word to PDF converter using OpenOffice.org 1.1.4

BAB II. PENGENA"AN PROGRAM C++


A. ello ,orl#

Berikut ini contoh program C++ yang sederhana

#include <iostream.h> void main() { cout << Hello world.\n; }


,etelah dicompile dan dirun, hasilnya adalah muncul pada layar )ello World.

B. -un(si main)*
Program C++ memang tidak akan pernah lepas dari suatu 9ungsi@9unction. )al ini karena merupakan ciri 55P. ,ebuah program C++ minimal memiliki satu 9ungsi yaitu main&'. Bungsi ini merupakan a2al program utama. (ulisan main&' merupakan nama 9ungsi, sedangkan bagian yang diapit dengan C dan D disebut blok &tubuh 9ungsi'. Dalam hal ini C merupakan tanda a2al blok dan D adalah tanda akhir blok. ,eperti halnya dalam Pascal, C dalam Pascal identik dengan B>E-+, sedangkan D identik dengan >+D. Perintah 6oid bermakna bah2a 9ungsi main&' tidak mengembalikan nilai@6alue. Cara penulisan 9ungsi main&' tidak mutlak seperti di atas. Berikut ini cara penulisan yang lain

#include <iostream.h> int main() { cout << Hello world.\n; return 0; } C. S'a'emen'
Perintah cout << Hello world.\n; merupakan salah satu contoh statement. Perintah tersebut digunakan untuk mencetak tulisan pada layar. ,etiap statement harus diakhiri dengan F al .an( men%a#i &a'a'an +en'in( #i sini $ah/a +ro(ram C++ $ersi0a' Case Sensi'i1e, ar'in.a huru0 $esar #an 2e&il #ian((a+ $e#a. (anda Gn digunakan untuk pindah baris.

MS. Word to PDF converter using OpenOffice.org 1.1.4

D. -ile

ea#er

Pada contoh di atas, iostream.h disebut 9ile header. Bile header tersebut diperlukan agar perintah cout bisa di%alankan. *pabila 9ile header tersebut dihapus, maka akan ter%adi error. :ntuk mengakses 9ile header, digunakan perintah #include < ile header>, atau #include ile header. Dalam suatu program bisa %adi melibatkan lebih dari satu 9ile header. Ca'a'an: Perintah cout << Hello world.\n; dapat diganti dengan !rint (Hello world.\n); *kan tetapi untuk bisa menggunakan print9 diperlukan 9ile header s'#io.h

E. Men(ha+us "a.ar
Dalam C++, perintah clrscr&' F digunakan untuk menghapus@membersihkan layar. Perintah ini akan bisa di%alankan setelah ditambahkan 9ile header conio.h

#include <iostream.h> #include <conio.h> void main() { clrscr(); cout << Hello world.\n; } -. Komen'ar
*nda dapat menambahkan komentar pada program *nda. Berikut ini style untuk menambah komentar.

"" ################################## "" ini adalah $omentar$u %an& !ertama "" ##################################
atau

"' ################################## ini adalah $omentar$u %an& !ertama ################################## '"

MS. Word to PDF converter using OpenOffice.org 1.1.4

G. "a'ihan (. )uatlah !ro&ram se!erti di *awah ini #include <conio.h> #include <iostream.h> void main() { clrscr(); cout << +t is m% irst ,-- !ro&ram\n; cout << + am sure that + will *e amiliar with this; cout << ##########################\n; } .im!an den&an nama ile /012034(.,//

a. 5*ahlah salah satu huru men6adi huru *esar !ada !erintah include. ,om!ilelah7 a!a hasiln%a8 *. 9a$u$an hal %an& sama untu$ conio7 iostream7 void7 main7 clrscr7 cout7 \n. c. :ari$ $esim!ulan *erdasar$an a dan *. ;. <en&an men&&una$an !rintah cout atau !rint 7 *uatlah !ro&ram ,-- untu$ menam!il$an = huru terde!an nama 3nda. 4isal nama 3nda 325.7 ma$a *uatlah tam!ilan se!erti *eri$ut> 333333333 333333333 33 33 33 33 333333333 33 33 33 33 33 33 2222222222 2222222222 22 22 222222 22 222222 22 22 2222222222 2222222222 55 55 55 55 55 55 55 55 55 55 55 55 5555555555 5555555555

)erilah se*aran& $omentar !ada setia! *aris statement. .im!an den&an nama ?343@5.,//

MS Word to PDF Converter using OpenOffice.org 1.1.4

BAB III. ELEMEN DASAR C++


A. Identifier (Pengenal)
Pengenal adalah suatu nama yang biasa dipakai dalam pemrograman untuk menyatakan variabel, konstanta, tipe data, dan fungsi. Aturan untuk penulisan identifier sama dengan aturan dalam pascal, antara lain: - Tidak boleh dimulai dengan karakter non huruf - Tidak boleh ada spasi - Tidak boleh menggunakan karakter-karakter ~ ! @ # $ % ^ & * ( ) + ` - = { } [ ] : " ; ' < > ? , . / | - Tidak boleh menggunakan reserved words yang ada dalam C .

B. Tipe Data
!erikut ini tipe data yang ada dalam C Tipe data bilangan bulat: - char - int "integer# - short "short integer# - long "long integer# Tipe data bilangan real: - float "real# - double "real double# - long double $elain itu terdapat %uga tipe data unsigned Tipe data bilangan bulat: - unsigned char - unsigned int "integer# - unsigned short "short integer# - unsigned long "long integer# Tipe data unsigned mirip dengan yang bukan unsigned. !edanya adalah tipe data unsigned tidak mengenal bilangan negatif "nilainya selalu posisif#.

C. Deklarasi

aria!el

$eperti halnya Pascal, variabel yang digunakan dalam program harus dideklarasikan terlebih dahulu. Pengertian deklarasi di sini yaitu mengenalkan variabel ke program dan menentukan tipe datanya. !erikut ini contoh pendeklarasian variabel:

!" #$%&'(; )&*'" ('+,'-.'"$'!, /'+ '01&2; 3('+ .'4', 5'%$;


&

MS Word to PDF Converter using OpenOffice.org 1.1.4

D. Assign"ent
Proses assignment adalah proses pemberian nilai kepada suatu variabel yang telah dideklarasikan. !erikut adalah contoh assignment:

6$%&'( = 27; 8'+,'-.'"$'! = 9:.;<=; >'4' = ?@A; B'%$ = ?9A;

!erikut ini contoh program yang menggambarkan deklarasi variabel dan assignment.

# !3&$C1 < *."+1'%.(> # !3&$C1 <3*! *.(> /* C %' !() { !" /'+2, /'+9, /'+:; 3('+ 5'+'5"1+; /'+2 = 27; /'+9 = <; /'+: = /'+2 + /'+9; 5'+'5"1+ = ?DA; 3*$" << EF &' 3*$" << EF &' ,1"3((); } /'+: = G << /'+: << EH!G; 5'+'5"1+ = G << 5'+'5"1+;

contoh berikutnya yang melibatkan tipe data real dan memformat tampilan presisi.

# !3&$C1 "3*! *.("; # !3&$C1 " *."+1'%.("; # !3&$C1 " *%'! I.("; /* C %' !() { 3&+.3+(); C*$0&1 +1'&; +1'& = 2J9.92J9K2:=K;J92K;=; 3*$" << .1"I+13 . *!(29); 3*$" << "F &' +1'& = " << +1'&; ,1"3((); } E. #$nstanta
'ntuk pendeklarasian konstanta dalam C adalah: mirip dengan Pascal. $intaksnya

3*!." " I1-C'"' !'%'-5*!."'!"' = /'&$1;


(

MS Word to PDF Converter using OpenOffice.org 1.1.4

Contoh:

3*!." )&*'" I(

= :.2;2<L9;
untuk mencari luas dan keliling lingkaran dengan

!erikut ini contoh program C %ari-%ari (.)*

# !3&$C1 <3*! *.(> # !3&$C1 < *."+1'%.(> # !3&$C1 < *%'! I.(> /* C %' !() { 3*!." )&*'" I( = :.2;2<L9; )&*'" #'+ -#'+ , 51& & !,, &$'.; #'+ -#'+ = K.9; &$'. = I( * #'+ -#'+ * #'+ -#'+ ; 51& & !, = 9 * I( * #'+ -#'+ ; 3*$" << .1"I+1. 3 *!(<); 3*$" << EM$'. & !,5'+'! 'C'&'( G << &$'. << E.'"$'! &$'. H!G; 3*$" << EB1& & !, & !,5'+'! 'C'&'( G << 51& & !, << E.'"$'! I'!#'!, H!G; ,1"3((); } %. Lati&an
+. !uatlah program C ++, ))0 untuk mencari rata-rata , buah bilangan -., ,&, /+,

). 1iketahui - buah lingkaran dengan posisi saling menindih seperti pada gambar.

2ari-%ari lingkaran A adalah +3 cm, %ari-%ari lingkaran ! adalah +) cm, dan C adalah +. cm. 1engan menggunakan program C hitunglah luas bagian yang diarsir.

MS Word to PDF Converter using OpenOffice.org 1.1.4 -. $uatu ember berbentuk tabung dengan tutupnya terbuka berisi air penuh. 2ari-%ari alas ember adalah +3., cm, dan tingginya , cm. 5emudian sebuah kerucut dengan %ari-%ari alas yang berbentuk lingkaran adalah . cm dan tingginya ..( cm dimasukkan ke dalam ember. Akibatnya sebagian air dalam ember tumpah. 1engan menggunakan program C hitunglah berapa liter air yang tumpah6

MS Word to PDF Converter using OpenOffice.org 1.1.4

BAB IV. OPERATOR DAN STATEMENT

A. Pengantar Operator
Operator merupakan simbol yang biasa dilibatkan dalam program untuk melakukan suatu operasi atau manipulasi, misalnya untuk: - menjumlahkan dua nilai - memberikan nilai ke suatu variabel (assignment) - membandingkan kesamaan dua nilai.

B. Operator Aritmatika
Operator ini digunakan untuk perhitungan dasar aritmatika. Operator ini antara lain Operator * " $ ' Keterangan Perkalian Pembagian #odulo Penjumlahan pengurangan Contoh 2*3 ! 2 !"2 %$& %'&

C. Tingkat Presedensi Operator Aritmatika


Operator yang mempunyai prioritas tinggi akan diutamakan dalam hal pengerjaan dibandingkan dengan operator yang memiliki prioritas lebih rendah. (erikut ini tingkat presedensi operator aritmatika (semakin ke ba)ah prioritas makin rendah): ' (operator unary negati*) * " $'

D. Assignment an!"t
+ssignment merupakan proses pemberian nilai pada suatu variabel. (erikut ini ,ontoh',ontohnya:

a = 1; a = 2 + b; a = 2 + (b = 1);
-ontoh no. 3 di atas prosesnya adalah mula'mula b diberi nilai ., kemudian variabel a diisi dengan nilai penjumlahan 2 dan ..

a = b = c = d = e = 1;

./

MS Word to PDF Converter using OpenOffice.org 1.1.4 -ontoh tersebut identik dengan:

e d c b a

= = = = =

1; e; d; c; b;

E. Operator In#rement dan De#rement


(ahasa -$$ menyediakan operator yang disebut in,rement dan de,rement. Operator ini digunakan untuk menaikkan atau menurunkan nilai suatu variabel sebesar .. Operator $$ '' Keterangan Operator in,rement Operator de,rement

Penempatan operator tersebut dapat di a)al variabel atau di belakangnya. -ontoh:

x = x + 1; y = y 1;
dapat ditulis

++x; --y;
atau

x++; y--;
0e,ara sekilas tak ada perbedaan antara $$1 dan 1$$ atau ''y dan y2 Perhatikan ,ontoh berikut ini:

r = 10; s = 10 + r++; cout << Nilai r = << r << \n; cout << Nilai s = << s << \n;
bandingkan dengan

r = 10; s = 10 + ++r; cout << Nilai r = << r << \n; cout << Nilai s = << s << \n; $. Operator Ma!em"k
-$$ menyediakan operator yang dimaksudkan untuk memendekkan penulisan operasi assignment, misalnya:

x = x + 2;
..

MS Word to PDF Converter using OpenOffice.org 1.1.4

y = y !; " = " # $; % = % &;


dapat ditulis

x += 2; y = !; " #= $; % -= &; %. Operator Re&asiona&


Operator ini digunakan untuk membandingkan dua buah nilai. (erikut ini ma,am' ma,am operator yang termasuk jenis ini. Operator 33 43 6 8 63 83 Keterangan 0ama dengan (bukan assignment) 5idak sama dengan 7ebih besar 7ebih ke,il 7ebih besar atau sama dengan 7ebih ke,il atau sama dengan

9asil operasi relasi ini dihasilkan nilai benar atau salah. -ontoh:

nilai1 = ' ( 2; nilai2 = 1$ == 1); cout << Nilai1 = << nilai1 << \n; cout << Nilai2 = << nilai2 << \n;
9asil program di atas akan menampilkan nilai. adalah . (benar) dan nilai2 adalah / (salah).

'. Operator ogika


Operator ini digunakan untuk menghubungkan 2 atau lebih statement. (iasanya statement yang dihubungkan merupakan operasi relasional. Operator logika juga menghasilkan nilai logika benar atau salah. #a,am'ma,amnya adalah: Operator :: == 4 -ontoh: Keterangan +;< O> ;O5 (negasi)

nilai1 = (' ( 2) ** (! < 10); nilai2 = +(1$ == 1$); cout << Nilai1 = << nilai1 << \n; cout << Nilai2 = << nilai2 << \n;

.2

MS Word to PDF Converter using OpenOffice.org 1.1.4 0etelah di run, dihasilkan nilai. adalah . (benar) dan nilai2 adalah / (salah)

I. $"ngsi()"ngsi Matematika
-$$ menyediakan beberapa *ungsi khusus untuk perhitungan matematika. ?ungsi'*ungsi ini memerlukan *ile header math.h $"ngsi abs(1) ,os(1), sin(1), tan(1) e1p(1) log(1) po)(1,y) s@rt(1) Keterangan #en,ari nilai mutlak #en,ari nilai ,os, sin, tan (1 dalam radian) #en,ari nilai e1 #en,ari nilai log #en,ari nilai 1y #en,ari nilai akar kuadrat dari 1

.3

MS Word to PDF Converter using OpenOffice.org 1.1.4

BAB V. Inp"t dan O"tp"t


A. Cin
<alam -$$, perintah ,in digunakan untuk menginput suatu nilai dari suatu piranti masukan (keyboard) untuk selanjutnya diproses oleh program. 0intaknya adalah: ,in 66 variabelA ,ontohnya: ,out 88 B#asukkan suatu bilangan : CA ,in 66 bilA ,out 88 B+nda memasukkan bilangan B 88 bil BDnCA

B. get#h*+
Perintah get,h() ber*ungsi sama seperti ,in (perintah input), akan tetapi get,h() khusus untuk input berupa karakter. <isamping itu get,h() dapat memba,a input berupa spasi atau tab, sedangkan ,in tidak bisa. 0intaksnya: Eariabel 3 get,h()A ?ungsi ini juga dapat digunakan apabila tidak diinginkan penekanan F;5F> ketika input data karakter.

C. get#he*+
Perintah get,he() kegunaannya sama dengan get,h(), bedanya adalah: - get,h() tidak menampilkan karakter yang diiinput - get,he() menampilkan karakter yang diinput *ungsi get,h() dan get,he() sama'sama membutuhkan *ile header #onio.h (erikut ini ,ontoh penggunaan get,h() dan get,he() ,har karakterA ,out 88 Bmasukkan sebuah karakter : BA karakter 3 get,h()A ,out 88 B+nda mengetik karakter : C 88 karakterA ,out 88 Bmasukkan sebuah karakter : BA karakter 3 get,he()A ,out 88 B+nda mengetik karakter : C 88 karakterA NB, -nt"k inp"t .er"pa string/ akan di.ahas di .a. 0ang &ain.

.&

MS Word to PDF Converter using OpenOffice.org 1.1.4

D. #o"t
<alam ,$$, perintah ,out digunakan untuk menampilkan suatu in*ormasi ke piranti output (layar). -ontoh',ontoh penggunaannya telah banyak diberikan di bab'bab sebelumnya. (erikut ini perintah'perintah tambahan untuk mengatur tampilan output. endl Perintah ini ber*ungsi sama dengan Dn (ganti baris) -ontoh:

cout << ,allo << endl;


set)() Perintah ini digunakan untuk mengatur lebar tampilan data (rata kanan). -ontoh:

- = 12'; . = /&; 0 = 1; cout << Nilai - = << set%()) << - << endl; cout << Nilai . = << set%()) << . << endl; cout << Nilai 0 = << set%()) << 0 << endl;
(andingkan bila tanpa menggunakan set)(). set*ill() Perintah set*ill digunakan untuk menambahkan suatu karakter tertentu pada *ield yang kosong pada suatu data. Perhatikan ,ontoh berikut ini

- = 12'; . = /&; cout<< Nilai - = << set%()) << set1ill(2 3) << - << endl; cout<< Nilai . = << set%()) << set1ill(243) << . << endl;
Perintah set*ill() biasanya digunakan setelah penggunaan set)(). setpre,ision() 5elah dijelaskan di bab sebelumnya. ;(: Perintah'perintah tambahan pada ,out di atas memerlukan *ile header iomanip.h supaya dapat digunakan.

.%

MS Word to PDF Converter using OpenOffice.org 1.1.4

a. Session
.. (uatlah program menggunakan -$$ untuk menentukan harga barang setelah di diskon dengan tampilan sbb:

5asu66an 7ar8a baran8 9 :;4 1$0000 5asu66an discount (<) 9 124$ ---------------------------------------------,ar8a baran8 .esar dis6on ,ar8a bersi7 9 :;4 1$0000 9 :;4 1&=$0 ------------------ 9 :;4 1'12$0

2. (uatlah program -$$ untuk menghitung jarak peluru yang ditembakkan dari suatu lokasi dengan sudut penembakan 1o, dan ke,epatan a)al peluru Eo. <iketahui besar Pi 3 3..&.%G3 dan besar per,epatan gravitasi (g) adalah G.H m s 2. Input : 1 (dalam derajad), Eo (dalam m s). Output : jarak peluru (dalam meter) 9int: Junakan rumus 0 3 2 Eo sin(1) ,os(1) g

.K

BAB VI. STATEMENT CONTROL


A. Statement IF
Seperti halnya Pascal, perintah IF dalam C++ juga digunakan untuk menyatakan pernyataan kondisional (bersyarat). Sintaks sederhana IF adalah

if (kondisi) statement;
Statement pada sintaks di atas akan dilakukan jika kondisinya bernilai !"# (tidak sama dengan nol). $pabila statement yang akan dilakukan lebih dari satu, maka sintaksnya menjadi

if (kondisi) { statement1; statement2; . . }


Contoh sederhana penggunaan IF adalah untuk menentukan boleh tidaknya seseorang melihat %ilm bioskop. Seseorang diperbolehkan menonton jika usianya &' tahun ke atas. (erikut ini program C++ nya)

#include <iostream.h> #include <conio.h> void main() { int usia; clrscr(); cout << Bera a usia !nda " ; cin >> usia; if (usia < 1#) cout << !nda tidak $oleh menonton $iosko %; }
Statement IF juga dapat ditambahkan #*S# sebagai konsekuensi alternati% jika kondisi tidak dipenuhi (F$*S#). Sintaksnya)

if (kondisi) { statement1; statement2; . . } else { statement1;


&'

statement2; }
$nda dapat modi%ikasi program C++ untuk menentukan boleh tidaknya seseorang menonton bioskop seperti di ba+ah ini)

#include <iostream.h> #include <conio.h> void main() { int usia; clrscr(); cout << Bera a usia !nda " ; cin >> usia; if (usia < 1#) cout << !nda tidak $oleh menonton $iosko %; else cout << !nda $oleh menonton $iosko %; }
"ntuk menyatakan kondisi (syarat) yang akan dicek pada IF, $nda dapat menggunakan operator logika dan operator relasional seperti yang telah dijelaskan pada bab sebelumnya. Perhatikan contoh di ba+ah ini,

if ((a >& 2) '' ($ && ()) { . . }


-angan $nda tuliskan

if (a >& 2) '' ($ && () { . . }


atau

if ((a >& 2) '' ($ & ()) { . . }


Perintah b . / merupakan assignment bukan relasional. Catatan penting) C++ selalu memperlakukan nilai tidak sama dengan nol sebagai !"# dan nilai nol sama dengan F$*S#. 0leh karena itu, dua perintah di ba+ah ini adalah identik.

&1

if ($il ) 2 *& +) cout << Bilan,an ,an-il%; if ($il ) 2) cout << Bilan,an ,an-il%
Selain itu, IF juga dapat berbentuk seperti di ba+ah ini.

if (kondisi1) statement1; else if (kondisi2) statement2; else if (kondisi() statement(; . . else statement;
$nda tahu kan maksudnya2 Latihan: (uatlah program dengan C++ untuk menentukan hari menggunakan IF. 3esain tampilannya sbb) P!04!$5 5#6#6 "7$6 6$5$ 8$!I Pilihan) $ . S#6I6 ( . S#*$S$ C . !$(" 3 . 7$5IS # . -"59$ F . S$( " 4 . $8$3

5asukkan 7ode 8ari ($..4) ) Skenario) $pabila kode hari yang dimasukkan $ s:d 4, maka selanjutnya akan tampil nama hari sesuai kodenya. api apabila selain & s:d ', maka akan tampil ;5$$F 703# 8$!I6<$ S$*$8=. 7ode hari harus bisa juga membaca huru% kecil, artinya jika kode harinya >a9, maka akan tampil S#6I6, dst.

B. Statement SWITCH
Statement S?I C8 juga ber%ungsi sama dengan IF. Perintah S?I C8 sama dengan perintah C$S# 0F dalam P$SC$*. Sintaks)

s.itch (varia$el) { case value1 " statement1; $reak; case value2 " statement2; $reak; . .
&@

default }

" statement; $reak;

/0 o tional 0/

contoh penggunaan)

#include <iostream.h> #include <conio.h> void main() { int $il; clrscr(); cout << 1asukkan $ilan,an " ; cin >> $il s.itch ($il) { case 1 " cout << !nda memasukkan $reak; case 2 " cout << !nda memasukkan $reak; case ( " cout << !nda memasukkan $reak; default" cout << !nda memasukkan $reak; } }

$il. satu%; $il. dua%; $il. ti,a%; $il selain 12 22 dan (%;

Selanjutnya coba kalian hapus semua break program di atas dan kalian jalankan. $pa yang terjadi22 7eanehan akan muncul. ?hy 22 Latihan: 3engan soal yang sama dengan latihan sebelumnya, kalian coba buat program C++ nya menggunakan S?I C8.

C. Statement FOR
Statement F0! digunakan untuk menyatakan perulangan (seperti P$SC$*). Sintaksnya)

for (un,ka an1; un,ka an2; un,ka an() { . . }


"ngkapan& merupakan statement a+al (inisialisasi) "ngkapanA merupakan kondisi:syarat perulangan dilakukan "ngkapan/ merupakan statement control untuk perulangan

AB

Contoh)

for (a & 1; a <& 3; a44) { cout << 5ello .orld 6n%; }


6() tipe data Cariabel a adalah integer Perintah di atas akan menampilkan teks 8ello ?orld sebanyak D buah. Perhatikan tanda a++. $pa maksudnya2 Selain berupa angka, pencacah perulangan juga dapat berupa karakter. Contoh

for (huruf & 789; huruf >& 7!9; huruf::) { cout << 5uruf a$-ad& << huruf << 6n%; }
Perintah di atas akan menampilkan teks 8uru% abjad . ... mulai dari E sampai dengan $. Perhatikan perintah huruf--

for (an,ka & 1; an,ka <& ;; an,ka4&2) { cout << <si dari an,ka & << an,ka << endl; }
Perintah di atas akan menampilkan angka &, /, D. 7ok bisa2 Perhatikan perintah an !a+"#. 3i ba+ah ini adalah program untuk mencetak bilangan genap yang kurang dari n (n diperoleh dari input).

#include <iostream.h> #include <conio.h> void main() { int $il2 n; cout << 1asukkan n & ; cin >> n; for ($il & +; $il < n; $il44) { if ($il ) 2 && +) cout << $il << %; } }
Latihan: (uatlah program C++ untuk membuat tampilan segitiga seperti di ba+ah ini menggunakan F0!. F F F F F F FF FFF FFFF A&

. . dst Inputnya merupakan tinggi segitiga.

$. Statement WHILE
Statement ?8I*# juga digunakan untuk menyatakan perulangan. PenggunaanG nya mirip pada P$SC$*. Sintaksnya)

.hile (kondisi) { . . }
contoh) 3ua perintah di ba+ah ini adalah identik.

for (a & 1; a <& 3; a44) { cout << 5ello .orld 6n%; }


dengan

a & 1; .hile (a <& 3) { cout << 5ello .orld 6n%; a44; }


%entin &&& -ika $nda menggunakan ?8I*#, pastikan bah+a suatu saat bagian kondisi sampai bernilai F$*S#. $pabila tidak, proses perulangan akan terus berjalan selamanya. Contoh program di ba+ah ini digunakan untuk menjumlahkan sejumlah data angka. $ngka yang akan dijumlahkan diinputkan satuGpersatu. Proses pemasukan data angka akan berhenti ketika dimasukkan angka H&. Setelah itu tampil hasil penjumlahannya.

#include <iostream.h> #include <conio.h> void main() { int data2 -umlah2cacah; -umlah & +; data & +; cacah & +; .hile (data *& :1)
AA

} cout << =umlah data adalah " << -umlah% << endl; cout << >ata:rata " % << -umlah/cacah;

cout << 1asukkan data an,ka " ; cin >> data; -umlah 4& data; cacah44;

7ondisi dalam ?8I*# juga dapat menggunakan operator logika. 5isalnya

.hile ((kondisi1) '' (kondisi2)) { . . }


Latihan: (uatlah simulasi menu program dengan tampilan di ba+ah ini menggunakan ?8I*#. 5#6" PI*I8$6 &. (aca 3ata A. "bah 3ata /. 8apus 3ata I. #Jit Pilihan $nda (&:A:/:I) 2 ... $pabila dipilih menu no &, maka akan tampil teks ;$nda memilih menu &=. 3emikian pula untuk menu A dan /. 7emudian setelah itu muncul teks ; ekan #6 #! untuk kembali ke menu utama=. $rtinya begitu kita tekan #6 #! menu pilihan akan muncul kembali, dst. $kan tetapi bila yang dipilih menu I (#KI ), program langsung berhenti.

E. Statement $O ... WHILE


Perintah 30 ... ?8I*# hampir sama dengan ?8I*# sebelumnya. Sintaknya)

do

{ . . } .hile (kondisi);
Perbedaan dengan ?8I*# sebelumnya yaitu bah+a pada 30 ?8I*# statement perulangannya dilakukan terlebih dahulu baru kemudian di cek kondisinya. Sedangkan ?8I*# kondisi dicek dulu baru kemudia statement perulangannya dijalankan. $kibat dari hal ini adalah dalam 30 ?8I*# minimal terdapat &J A/

perulangan. Sedangkan ?8I*# dimungkinkan perulangan tidak pernah terjadi yaitu ketika kondisinya langsung bernilai F$*S#. Contoh)

a & 1; do { cout << 5ello .orld 6n%; a44; } .hile(a&&+)


Perintah di atas akan muncul satu buah 8ello ?orld. (andingkan dengan yang berikut ini)

a & 1; .hile(a&&+) { cout << 5ello .orld 6n%; a44; }


Perintah di atas sama sekali tidak menampilkan 8ello ?orld, karena kondisinya langsung F$*S#. T'(AS: &. (uatlah program dengan C++ untuk menampilkan semua penyelesaian dari persamaan J + y + L . AB. 3engan J, y, L bilangan bulat M. B. Contoh tampilan outputnya) GGGGGGGGGGGGGGGGGGGGGGGGGGGGG J y L GGGGGGGGGGGGGGGGGGGGGGGGGGGGG B B AB B & &@ B A &1 dst

AI

A. Seseorang punya rekening tabungan di bank sebesar !p. &B.BBB,G (saldo a+al). Selanjutnya ia dapat menyetor atau mengambil tabungannya. (uatlah program dengan C++ untuk keperluan transaksi di bank tsb. ampilan menu utamanya sbb) GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG P . ($67 S<$!I$8 (#6#!$6 GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG Saldo ) .... 5enu ransaksi &. Setor abungan A. $mbil abungan /. #Jit Pilihan menu (&:A:/) 2 ... 7etentuan) (ank membuat kebijakan bah+a saldo minimum yang harus disisakan di rekening adalah !p. &B.BBB,G

AD

BAB VII. FUNCTION


Dalam pemrograman, string merupakan kumpulan dari beberapa karakterkarakter. Untuk membedakan string dengan karakter, dalam C++ dibedakan penulisannya. Suatu nilai merupakan string apabila diapit dengan tanda petik ganda ..., misalnya SAYA. Sedangkan karakter ( !ar" diapit dengan tanda petik tunggal, misal #s$.

A. Pengantar Function
Sebua! %un tion berisi se&umla! pernyataan yang dikemas dalam sebua! nama. 'ama ini selan&utnya dapat dipanggil beberapa kali di beberapa tempat dalam program. (u&uannya) *. memuda!kan dalam mengembangkan program. +rogram dibagi men&adi beberapa subprogram ke il, se!ingga !al ini men&adi kun i dalam pembuatan program terstruktur. ,. meng!emat ukuran program, karena beberapa perinta! yang sama dan di&alankan beberapa kali dalam program dapat di&adikan satu kali sa&a dalam suatu %un tion, kemudian %un tion tersebut dapat dipanggil berulang kali. Conto! -un tion .)

#include <iostream.h> #include <conio.h> void garis(); // prototype function main function panggil function N"!" !"#"$ $%"& << endl; panggil function "! + #"!,"# << endl; ." !"N& << endl; panggil function

void main() // { clrscr(); garis(); // cout << N ! garis(); // cout << !'()*''( cout << !'()*''garis(); // /

void garis() // detail function { int i; for(i0';i<01';i22) { cout << 3&; / cout << endl; /
Conto! di atas menggambarkan bagaimana membuat %un tion untuk membuat garis. 'ama %un tionnya adala! garis. Untuk membuat suatu %un tion, diperlukan suatu prototype dari %un tion tersebut. +rototype %un tion memiliki sintaks sbb) ,/

returned01alue0data0type

nama0%un tion(argumen"2

Seperti !alnya dalam +as al, suatu %un tion dapat mengembalikan (return" suatu nilai (1alue" yang tergantung tipe datanya. (ipe data 1alue yang dikembalikan inila! yang dimaksud dengan returned01alue0data0type. Sedangkan argumen merupakan parameter-parameter yang akan diola! dalam %un tion tersebut. Argumen bole! ada bole! tidak, sesuai kebutu!an. Apabila parameter argumennya lebi! dari satu, ara penulisannya sbb) tipe0data param*, tipe0data param,, ... Conto! penulisan prototype %un tion) double kuadrat(int 3"2 %loat luas0segitiga(%loat alas, %loat tinggi"2 int &umla!0bil(int 3, int y, int 4"2

Apabila suatu %un tion tidak mengembalikan nilai, maka returned01alue0data0type nya diisi void. Setela! prototype %un tion dibuat, selan&utnya membuat %un tion tersebut se ara detail. Suatu %un tion disebut &uga subprogram, ole! karena itu strukturnya &uga sama dengan struktur program utama. +ada onto! %un tion garis(" di atas, detail dari %un tion tersebut adala!)

void garis() // detail function { int i; for(i0';i<01';i22) { cout << 3&; / cout << endl; /
5alau diper!atikan, strukturnya sama dengan program utama main(). Conto! -un tion ..)

#include <iostream.h> #include <conio.h> float luas(float alas4 float tinggi); void main() { clrscr(); a 0 ('.5; t 0 ((; cout << # 67N8 97"$ $:8 6 8"& << cout << .an;ang alas < << a << cout << 6inggi < << t << cout << 9uasnya < << / float luas(float alas4 float tinggi) {
,6

endl; endl; endl; luas(a4t) << endl;

float luas=segitiga; luas=segitiga 0 alas > tinggi > '.5; return luas=segitiga;

Detail %un tion luas di atas dapat ditulis sbb)

float luas(float alas4 float tinggi) { return (alas > tinggi > '.5); /
+erinta! return adala! untuk mengembalikan !asil operasi di sebela! kanannya ke perinta! pemanggilan %un tion.

B. Variabel Global dan Lokal


Setiap kali kita deklarasikan suatu 1ariabel, belum tentu 1ariabel tersebut dikenal di setiap %un tion yang kita buat. Conto!)

#include <iostream.h> #include <conio.h> void ceta?(); void main() { int a; a 0 ('; cout << Nilai a 0 << a << endl; ceta?(); / void ceta?() { a22; cout << Nilai a 0 << a << endl; /
5etika program di atas di ompile, akan terdapat error yaitu 1ariabel a dalam %un tion etak(" unde%ined. Artinya ba!7a 1ariabel a tidak dikenal dalam etak(". 8ariabel a !anya dikenal dalam program utama9 %un tion main(" sa&a. :aka dalam !al ini 1ariabel a disebut 1ariabel lokal (!anya dikenal dalam %un tion yang di dalamnya dide%inisikan a tersebut". Selan&utnya program di atas diuba! sbb)

#include <iostream.h> #include <conio.h> int a; void ceta?(); void main() {


,;

a 0 ('; cout << Nilai a 0 << a << endl; ceta?();

void ceta?() { a22; cout << Nilai a 0 << a << endl; /


Apabila program di atas di&alankan maka akan tampil) 'ilai a < *= 'ilai a < ** +ada program di atas, 1ariabel a disebut 1ariabel global karena 1ariabel tersebut dapat dikenali di setiap %un tion yang ada. >agaimana dengan yang ini???

#include <iostream.h> #include <conio.h> void ceta?(); void main() { int a; a 0 ('; cout << Nilai a 0 << a << endl; ceta?(); / void ceta?() { int a; cout << Nilai a 0 << a << endl; /
Apabila program di atas di&alankan, !asilnya adala!) 'ilai a < *= 'ilai a < 6@6 Aasil di atas menun&ukkan ba!7a meskipun nama 1ariabelnya sama-sama a, tapi kedua 1ariabel a tersebut berbeda. Setiap 1ariabel a tersebut !anya dikenali di %un tionnya masing-masing (tidak terkait satu dengan yang lain".

,B

Latihan:
*. >uatla! %un tion yang akan memberikan nilai * &ika nilai parameter yang dimasukkan !uru% #a$, dan akan memberikan nilai = &ika nilai parameter yang dimasukkan selain !uru% #a$. ,. >uatla! %un tion untuk men ari nilai %ungsi %(3" < ,3, C D3 + *2 +arameter %un tionnya adala! nilai 3 (tipe data %loat9double". Eeturn 1aluenya adala! nilai %(3". D. >uatla! %un tion untuk membuat tampilan seperti di ba7a! ini) F FF FFF FF F (ampilan di atas mun ul apabila dimasukkan n < D. F F F F F F F F FF FFF FF F

(ampilan di atas mun ul apabila dimasukkan n < @. +arameter %un tionnya adala! n (tipe datanya integer".

D=

BAB VIII. STRINGS


Dalam pemrograman, string merupakan kumpulan dari beberapa karakterkarakter. Untuk membedakan string dengan karakter, dalam C++ dibedakan penulisannya. Suatu nilai merupakan string apabila diapit dengan tanda petik ganda ..., misalnya SAYA. Sedangkan karakter ( !ar" diapit dengan tanda petik tunggal, misal #s$. Gantas bagaimana dengan s?? Dalam !al ini s &uga merupakan string, meskipun karakter penyusunnya terli!at !anya satu. Akan tetapi pada kenyataannya, s disusun tidak !anya karakter #s$ sa&a, melainkan terdapat pula karakter 'UGG atau #H=$, yang ber%ungsi sebagai tanda ak!ir dari string. Untuk mendeklarasikan suatu 1ariabel merupakan string, maka perinta!nya)

char varia@elAma?s ?ara?terB;


onto!)

char te?sA-'B;
+erinta! di atas bermakna ba!7a teks merupakan 1ariabel string dengan &umla! karakter yang dapat disimpan maksimal adala! ,= (suda! termasuk karakter 'UGG".

A. Inisialisasi

tring

:isalkan suatu 1ariabel string katakanla! kalimatID=J akan diberi nilai SAYA >KGALAE C++, maka perinta!nya)

char ?alimatAC'B 0 $"D" E:9"F"+ G22&;


+rogram lengkapnya sbb)

#include <iostream.h> #include <conio.h> void main() { int a; a 0 -'; char ?alimatAC'B 0 $"D" E:9"F"+ G22&; cout << Nilai a 0 << a << endl; cout << Nilai ?alimat 0 << ?alimat << endl;

D*

(idak bole! seperti di ba7a! iniMM

void main() { int a; char ?alimatAC'B; a 0 -'; ?alimat 0 $"D" E:9"F"+ G22&; // atau ?alimatAC'B 0 $"D" E:9"F"+ G22&; cout << Nilai a 0 << a << endl; cout << Nilai ?alimat 0 << ?alimat << endl;

!. "embaca

tring dari #e$board

Selan&utnya bagaimana ara memba a string yang berasal dari keyboard? >erikut ini onto!nya)

#include<iostream.h> #include<conio.h> void main() { char namaA-'B; char alamatAC'B; cout << !asu??an nama "nda < ; cin.getline(nama, sizeof(nama)); cout << !asu??an alamat "nda < ; cin.getline(alamat, sizeof(alamat)); cout << Nama "nda < << nama << endl; cout << "lamat "nda < << alamat << endl;

%. "engco&$

tring

5emudian bagaimana untuk mengassign suatu string dari 1ariabel ke 1ariabel lain? :isalnya kata' diberi string AAGGN. Selan&utnya kata( akan diberi string dari kata'. Untuk melakukan !al ini, Anda tidak bisa memberikan &erintah

?ata- 0 ?ata(;
+erinta! yang digunakan untuk keperluan di atas adala! dengan)

strcpy(?ata-4 ?ata();

// mengcopy isi dari ?ata( ?e ?ata-

D,

Conto!)

#include<iostream.h> #include<conio.h> #include<string.h> void main() { char ?ata(A-'B 0 #"99H&; char ?ata-A-'B; strcpy(kata2, kata ); cout << Iata(< << ?ata( << endl; cout << Iata-< << ?ata- << endl;

). Function untuk *&erasi

tring

-un tion-%un tion berikut ini dapat digunakan untuk memanipulasi string. Sebelum %un tion digunakan, tamba!kan %ile !eader string.h pada in lude. "engetahui &an+ang string dengan strlen() sintaks)

strlen(string)
akan mereturn bilangan bulat yang menyatakan pan&ang string. Conto!)

int pan;angte?s; char ?alimatAC'B 0 E:9"F"+ G22 6 J"I9"# $79 6&; pan;angte?s 0 strlen(?alimat); cout << .an;ang string < << pan;angte?s;
"enggabungkan string dengan strcat() Sintaks)

strcat(string(4 string-)
menamba!kan string, ke string*. Conto!)

char ?ata(A5B 0 $"67 &; char ?ata-A5B 0 J7"&; strcat(?ata(4 ?ata-); // nilai ?ata( men;adi $"67 J7"&

DD

"engkonversi ke huru, ka&ital dengan strupr() Sintaks)

strupr(string)
:enguba! !uru% ke il dari string ke !uru% kapital. Conto!2

char string(AC'B 0 aEcJefg# FI9mno&; strupr(string();


-

//nilai string( men;adi "EGJ:K8# FI9!NH&

"engkonversi ke huru, kecil dengan strl!r() Sintaks)

strlLr(string)
-un tion ini kebalikan dari strupr(". "encari ubstring dengan strstr()

:isalkan diberikan suatu string LA5AE(A 5N(A :K(EN+NG.(A'. Apaka! string :K(EN terdapat dalam string tersebut? Untuk mengeta!ui !al ini dengan C++, kita dapat menggunakan %un tion strstr(". Sintaks)

strstr(string(4 string-);
-un tion tersebut akan mereturn nilai * &ika string, merupakan substring dari string*, dan akan mereturn = &ika tidak. Conto!)

if (strstr(F"I"+6" IH6" !:6+H.H9 6"N&4 !:6+H&) 00 () cout << !erupa?an su@string&; else cout << Eu?an merupa?an su@string&;
"embalik string dengan strrev() >agaimana ara membalik string C++ supaya diperole! ++C? >erikut ini perinta! dalam C++, sintaks)

strrev(string);

D@

Conto!)

char ?ataA('B 0 G22&; strrev(?ata); cout << ?ata;

DO

BAB IX. ARRAY


Array adalah kumpulan data yang bertipe sama yang menggunakan nama yang sama. Dengan menggunakan array, sejumlah variabel dapat memakai nama yang sama. Antara satu variabel dengan variabel lain di dalam array dibedakan berdasarkan nomor elemen (subscript). Contoh 1. Penggunaan array dalam C++ Program di ba!ah ini untuk membaca data kemudian menampilkannya. "include#iostream.h$ "include#conio.h$ void main() % int data&'()* int elemen* clrscr()* ++ array dengan '( elemen bertipe integer

++ entri '( data ,or (elemen-(*elemen #- .*elemen++) % cout ## /Data ke 0 / ## elemen ## / /* cin $$ data&elemen)* 1 ++ tampilkan data setelah entri ,or (elemen-(*elemen #- .*elemen++) % cout ## /Data ke 0 / ## elemen ## / / ## data&elemen)* 1

23 Dalam C+C++ elemen array dimulai dari (. Contoh 2. Program untuk menampilkan data array dari hasil inisialisasi "include#iostream.h$ "include#conio.h$ void main() % int data&4) - %5, ', (, 6., 71* int elemen* clrscr()* ++ tampilkan data ,or (elemen-(*elemen #- 5*elemen++) % cout ## /Data ke 0 / ## elemen ## / / ## data&elemen)* 1

Contoh 3. Program untuk mencari data dari array, dan menampilkan nomor elemennya. "include#iostream.h$ "include#conio.h$ void main() % int data&'() - %5, ', (, 6., 7, 4, 6', 8, 9, 6:1* int elemen, ketemu* cout ## /Data yang dicari cin $$ ;* /*

ketemu - (* ,or(elemen-(* elemen#- .* elemen++) % i, (data&elemen) -- ;) % ketemu - < ketemu* break* 1 1 i, (ketemu -- () cout ## /Data tidak ditemukan /* else cout ## /Data ada di elemen / ## elemen*

Contoh 4. Program untuk menampilkan data terbesar (maks) dari suatu array. "include#iostream.h$ "include#conio.h$ void main() % int data&'() - %5, ', (, 6., 7, 4, 6', 8, 9, 6:1* int elemen, ma;* ma; - data&()* ,or(elemen-(* elemen#- .* elemen++) % i, (data&elemen)$ma;) ma; - data&elemen)* else ma; - ma;* 1 1 cout ## /2ilai maksimum adalah / ## ma;*

Array di atas adalah array dimensi satu. 3agaimana dengan array dimensi dua= 3erikut ini contoh penggunaan array dua dimensi

"include#iostream.h$ "include#conio.h$ void main() % int j, k* int data&4)&9) % %9, %8, %', %4, %>, 1*

5, 9, ', ., >,

6'1, (1, 81, 651, 81

,or (j - (* j#-5* j++) % ,or (k - (* k#-8* k++) cout ## /data&/ ## j ## /)&/## k ## /) - / ## data&j)&k) ## endl* 1

Latihan : '. Diberikan suatu array bertipe integer yang berukuran '( ruang+elemen yang setiap elemen sudah ada nilainya yang sudah terurut. 3uatlah program untuk mencari jangkauan (range) dari nilai dalam array tersebut. 8. Diberikan suatu n buah data statistik yang diisikan ke dalam larik bertipe real. ?tandard deviasi dari suatu data statistik dide,inisikan sebagai

d=

(X
n i =1

n 1

BAB X. STRUKTUR
?truktur berman,aat untuk mengelompokkan sejumlah data dengan tipe yang berlainan. Perhatikan contoh struktur berikut ini struct data@tanggal % int tahun* int bulan* int tanggal* 1* ?truktur di atas bernama data@tanggal, yang tersusun atas 9 unit penyusunnya yaitu tahun, tanggal, dan bulan. ?etelah dibuat struktur tanggal, selanjutnya struktur tersebut dapat digunakan sebagai tipe data suatu variabel, dalam hal ini disebut tipe data abstrak.

3erikut contoh programnya. Contoh 1. "include#iostream.h$ "include#conio.h$ void main() % struct data@tanggal % int tanggal* int bulan* int tahun* 1* data@tanggal tanggal@lahir* tanggal@lahir.tanggal - '* tanggal@lahir.bulan - .* tanggal@lahir.tahun - '.:.* cout 1 Cisalkan terdapat 8 buah variabel tgl' dan tgl8 sama6sama bertipe data@tanggal. ?elanjutnya diinginkan mengcopy isi dari tgl' ke tgl8, maka dapat dilakukan dengan perintah assignment biasa. Contoh Contoh 2. "include#iostream.h$ "include#conio.h$ void main() % struct data@tanggal % int tanggal* int bulan* int tahun* 1* data@tanggal tgl', tgl8* tgl'.tanggal - '* tgl'.bulan - .* tgl'.tahun - '.:.* tgl8 - tgl'* ++ atau ## tanggal@lahir.tanggal ## A+B ## tanggal@lahir.bulan ## A+B ## tanggal@lahir.tahun*

tgl8.tanggal - tgl'.tanggal* tgl8.bulan - tgl'.bulan* tgl8.tahun - tgl8.tahun* cout ## tgl'.tanggal ## A+B ## tgl'.bulan ## A+B ## tgl'.tahun ## endl*

cout 1

## tgl8.tanggal ## A+B ## tgl8.bulan ## A+B ## tgl8.tahun ## endl*

Dntuk membandingkan 8 buah struktur, masing6masing unit harus dibandingkan sendiri6sendiri, contoh i, ((tgl'.tanggal -- tgl8.tanggal) EE (tgl'.bulan -- tgl8.bulan) EE (tgl'.tahun -- tgl8.tahun)) cout ## /Fsi strukturnya samaG* else cout ## /Fsi struktur tak samaG* ?uatu struktur juga dapat digunakan untuk argumen+parameter suatu ,unction. Contoh 3. "include#iostream.h$ "include#conio.h$ struct data % int ;* int y* 1* void tampilkan(data nilai) void main() % data nilaiku* nilaiku.; - '(* nilaiku.y - '>* 1 tampilkan(nilaiku)*

void tampilkan(data nilai) % cout ## /2ilai ; - / ## nilai.; ## endl* cout ## /2ilai y - / ## nilai.y ## endl* 1 Latihan: '. 3uatlah program menggunakan ,unction untuk menentukan selisih antara dua !aktu (jam). Cisalkan selisih antara pukul 5.9( dengan >.(( adalah .( menit. Herdapat 8 argumen ,unction yaitu jam pertama dan jam kedua (lebih besar dari jam pertama). hint buat struktur jam (dengan unit jam, dan menit). 8. 3ilangan kompleks memiliki ,ormat a+b i, dengan a dan b adalah bilangan real. 2otasi a disebut juga bagian real, dan b disebut juga bagian imajiner. 3uatlah program menggunakan struktur untuk menjumlahkan, mengurangkan, dan mengalikan 8 buah bilangan kompleks. Contoh

(8+9 i) + (6' + 9i) - '+> i (8+9 i) 6 (6' + >i) - 9 0 9i (8+9 i) . (6' + 9i) - 68 0 9i + >i + . i8 - 68 0 9i + >i 0 . - 6'' + 9i

BAB XI. Operasi File


Operasi dasar file pada prinsipnya terbagi menjadi 3 tahap, yaitu: - membuka atau mengaktifkan file - melaksanakan pemrosesan file - menutup dile A. Membuka file Sebelum suatu file dapat diproses, file harus dibuka terlebih dahulu. Sebelum file dibuka, terlebih dahulu obyek file harus didefinisikan. Sintaksnya:

ofstream nama_obyek;
perintah ofstream dapat dijalankan dengan menyertakan file header fstream.h Setelah itu, suatu file dapat dibuka dengan perintah

nama_obyek.open(nama file dan path);


B. Menulis ke File Salah satu jenis pemrosesan pada file adalah menulis atau merekam data ke file. Sintaknya:

nama_obyek << ... ;


C. Menutup File Setelah pemrosesan file selesai, file dapat ditutup menggunakan perintah

nama_obyek.close();
Contoh 1. Program berikut ini untuk menulis teks ke dalam file

#include<iostream.h> #include<fstream.h> void main() ofstream fileteks; fileteks.open(!"#al$o.t%t); fileteks << << fileteks << fileteks << << fileteks << << * &ntuk mencapai tu'uan y$ besar( maka tu'uan itu endl; harus diba$i)ba$i men'adi tu'uan kecil<< endl; sampai tu'uan itu merupakan tu'uan y$ dapat dicapai << endl; berdasarkan kondisi dan potensi y$ dimiliki saat itu << endl;

fileteks.close();

perintah fileteks.open( C:!algo.t"t#$% akan membuka file algo.t"t yang ada di C:& 'pabila file tersebut belum ada maka akan dibuat se(ara otomatis, dan apabila sudah ada isi file algo.t"t akan terhapus. D. Menambah Data pada File Suatu file yang sudah ada sebelumnya dapat ditambah data yang baru (tidak menghapus data lama$. Caranya dengan menambahkan perintah ios::app pada open($.

nama_obyek.open(nama file( ios""app);


Contoh ).

#include<iostream.h> #include<fstream.h> void main() ofstream fileteks; fileteks.open(!"#al$o.t%t( ios""app); fileteks << endl; fileteks << +leh" ,l -ho.ari/mi << endl; * fileteks.close();

E. Memeriksa Keberhasilan Operasi File *idak selamanya jalan yang mulus ditemui. 'da kemungkinan terjadi saat file dibuka, ternyata file tidak ada. +alam C,, tersedia fun(tion untuk memeriksa kondisi-kondisi pada operasi file, sehingga kesalahan saat eksekusi dapat dikendalikan. .un(tion yang dimaksud adalah fail !. Contoh 3:

#include<iostream.h> #include<fstream.h> void main() ifstream fileteks; ifstream di$unakan u# membaca file * fileteks.open(!"#al$o.t%t); if (fileteks.fail()) cout << 0aaf file takdapat dibuka# << tidak ditemukan; fileteks.close();

F. Operasi Berbasis Karakter Operasi file dapat dilakukan dalam bentuk karakter. /isalnya proses penyimpanan data ke file dilakukan setiap karakter, atau memba(a data file karakter per karakter. Operasi ini didukung oleh fun(tion put ! dan "et !. Contoh 0: Program untuk menyimpan data karakter per karakter ke dalam file.

#include<iostream.h> #include<fstream.h> void main() ofstream fileteks; fileteks.open(!"#contoh.t%t); fileteks.put(1,2); fileteks.put(132); fileteks.put(1!2); fileteks.close();

Contoh 1. Program untuk memba(a file karakter per karakter

#include<iostream.h> #include<fstream.h> void main() char karakter; ifstream fileteks; * fileteks.open(!"#contoh.t%t); .hile(4fileteks.eof()) fileteks.$et(karakter); cout << karakter;

* *

fileteks.close();

#atihan. 1. 2uatlah program C,, untuk menghitung jumlah karakter dalam suatu file. 3nputnya adalah nama file dan pathnya. ). 2uatlah program C,, untuk menghitung jumlah karakter tertentu, misalnya karakter 4'5. 3nput berupa nama file dan karakter yang akan dihitung. 3. /isalkan suatu file teks berisi listing program C,,. 2uatlah program untuk menghitung pasangan kurung kura6al yang ada pada file teks tersebut. 0. 2uatlah program C,, untuk melakukan enkripsi shift (hiper suatu file teks (dengan asumsi semua karakter huruf adalah huruf kapital$. 3nputnya adalah file teks yang akan dienkripsi dan besar pergeseran (integer$. Outputnya adalah file teks hasil enkripsi.

7int: 3de dasar shift (hiper adalah mengubah setiap karakter huruf ke karakter huruf lain. /isalkan pergeserannya ), maka berikut ini karakter hasil enkripsi a6al hasil ' 2 C +8 . 97 3 : ; < /= OP >? S * @ A B C D E C +8 . 97 3 : ; < /= OP >? S * @ A B C D E ' 2

Sehingga misal diberikan suatu teks C,, 3S 8'SD, maka hasil enkripsinya adalah 8,, ;@ 9C@'

BAB XII. CLASS


Class merupakan struktur data dari obyek. Untuk menjelaskan tentang class, lihat perbandingannya dengan struktur berikut ini: Perhatikan program di bawah ini: Contoh 1.

#include <iostream.h> #include <conio.h> #include <string.h> struct mahasiswa { char nim[8]; char nama[20]; int umur; }; void main( { mahasiswa mhsd!; strc"#(mhsd!.nim$ %&0'()00'* ; strc"#(mhsd!.nama$ %+urhanudin ,araha"* ; mhsd!.umur - 20; cout << mhsd!.nim << endl; cout << mhsd!.nama << endl; cout << mhsd!.umur << endl;

Setelah program di atas dicompile, error tidak ada. Berikutnya struktur di atas kita ganti dengan class, menjadi Contoh .

#include <iostream.h> #include <conio.h> #include <string.h> class mahasiswa { char nim[8]; char nama[20]; int umur; }; void main( { mahasiswa mhsd!; strc"#(mhsd!.nim$ %&0'()00'* ; strc"#(mhsd!.nama$ %+urhanudin ,araha"* ; mhsd!.umur - 20; cout << mhsd!.nim << endl; cout << mhsd!.nama << endl; cout << mhsd!.umur << endl;

setelah program di atas di compile, ternyata error muncul. !rror tersebut muncul karena class tidak dikenal dalam main"#. $esalahan ini sekaligus menunjukkan perbedaan dengan struktur. Penggunaan PUBLIC %gar program di atas dapat dicompile, ditambahkan perintah public diikuti dengan tanda titik dua ":#, sehingga programnya menjadi Contoh &.

#include <iostream.h> #include <conio.h> #include <string.h> class mahasiswa { "u.lic/ char nim[8]; char nama[20]; int umur; }; void main( { mahasiswa mhsd!; strc"#(mhsd!.nim$ %&0'()00'* ; strc"#(mhsd!.nama$ %+urhanudin ,araha"* ; mhsd!.umur - 20; cout << mhsd!.nim << endl; cout << mhsd!.nama << endl; cout << mhsd!.umur << endl;

Perintah PUB'(C menyatakan bahwa perintah)perintah yang ada di bawahnya dapat diakses diluar class. Perintah PUB'(C merupakan termasuk access specifier "penentu akses#. Selain PUB'(C, terdapat perintah lain yang termasuk access speci*ier, yaitu P+(,%-!. Contoh ..

#include <iostream.h> #include <conio.h> #include <string.h> class mahasiswa { "rivate/ char nim[8]; char nama[20]; int umur; }; void main( { mahasiswa mhsd!; strc"#(mhsd!.nim$ %&0'()00'* ;

strc"#(mhsd!.nama$ %+urhanudin ,araha"* ; mhsd!.umur - 20; cout << mhsd!.nim << endl; cout << mhsd!.nama << endl; cout << mhsd!.umur << endl;

Setelah dicompile, error yang sama dengan sebelumnya muncul yaitu class tidak dapat diakses di main"#. Perintah P+(,%-! memberi pengertian bahwa perintah yang ada dibawahnya hanya dapat diakses dalam class tersebut, yang dalam hal ini adalah class mahasiswa. /ariabel nim, nama, dan umur dalam class mahasiswa disebut data anggota. Selain data anggota, kita juga dapat menambahkan *ungsi anggota. Contoh 0.

#include <iostream.h> #include <conio.h> #include <string.h> class mahasiswa { private : char nim[8]; char nama[20]; int umur; public : void inisialisasi(char 012&&,3$ char 014&4&,3$ int 5&56&,3 { strc"#(nim$ 12&&,3 ; strc"#(nama$ 14&4&,3 ; umur - 5&56&,3; } void tam"il7an( { cout << nim << endl; cout << nama << endl; cout << umur << endl; } }; void main( { mahasiswa mhsd!; mhsd!.inisialisasi(%&0'()00'*$ %+urhanudin ,araha"*$ 20 ; mhsd!.tam"il7an( ; }
Pada program di atas, *ungsi inisialisasi"# dan tampilkan"# merupakan *ungsi anggota dari class mahasiswa. $eduanya dibuat public karena akan diakses dari luar class, sedangkan data anggotanya "nim, nama, umur# dibuat pri/ate.

1ungkin %nda berpikir mengapa program terakhir "contoh 0# terlalu panjang, padahal akan diperoleh hasil yang sama dengan program sebelumnya "contoh 1#. %nda memang benar, tapi contoh 0 ini merupakan cara pemrograman berorientasi obyek "PB2#. Perhatikan program contoh 0, khususnya pada kedua *ungsi anggota. $edua *ungsi tidak punya prototype. $ita juga dapat memberikan prototype yang merupakan cara kedua dalam penulisan. Contoh 3.

#include <iostream.h> #include <conio.h> #include <string.h> class mhs { private : char nim[8]; char nama[20]; int umur; public : void inisialisasi(char 012&&,3$ char 014&4&,3$ int 5&56&,3 ; void tam"il7an( ;

};

void main( { mhs mhsd!; mhsd!.inisialisasi(%&0'()00'*$ %+urhanudin ,araha"*$ 20 ; mhsd!.tam"il7an( ; } void mhs//inisialisasi(char 012&&,3$ char 014&4&,3$ int 5&56&,3 { strc"#(nim$ 12&&,3 ; strc"#(nama$ 14&4&,3 ; umur - 5&56&,3; } void mhs//tam"il7an( { cout << nim << endl; cout << nama << endl; cout << umur << endl; }
Cara kedua inilah yang sering dipilih oleh para programmer C44. Berikut ini contoh)contoh program yang meman*aatkan class Contoh 5. Program untuk menyimpan data n data mahasiswa kemudian menampilkannya.

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

class mahasiswa { "u.lic/ char nim[20]; char nama[80]; int umur; void tam"il7an(char 012&&,3$ { cout << 912& &,3 cout << 914&4 &,3 cout << 95&56 } char 014&4&,3$ int 5&56&,3 / 9 << 12&&,3 << endl; / 9 << 14&4&,3 << endl; / 9 << 5&56&,3 << endl;

};

void main( { mahasiswa mhsd![80]; { ti"e data arra# } char tem"['0]; int n$ i; clrscr( ; cout << 9<< :1;62 <4;4 &4,4323=4 <! 9 << endl; cout << endl; cout << 9>umlah mahasiswa / 9; cin.getline(tem"$ si?eo@(tem" ; n - atoi(tem" ; @or (i-0;i<-nA';iBB { cout << 9<4;4 A 9 << iB' << endl; cout << 912& &4,4323=4 / 9 ; cin.getline(mhsd![i].nim$ si?eo@(mhsd![i].nim ; cout << 914&4 &4,4323=4 / 9 ; cin.getline(mhsd![i].nama$ si?eo@(mhsd![i].nama ; cout << 95&56 / 9; cin.getline(tem"$ si?eo@(tem" ; mhsd![i].umur - atoi(tem" ; cout << endl; } CC tam"il7an semua data cout << 9AAAAAAAAAAAAAAAAAAAAAAAAA9 << endl; cout << 9<4;4 D41E &435F9 << endl; cout << 9AAAAAAAAAAAAAAAAAAAAAAAAA9 << endl; @or (i-0;i<-nA';iBB { cout << 9<4;4 &4,4323=4 9 << iB' << endl; mhsd![i].tam"il7an(mhsd![i].nim$ mhsd![i].nama$ mhsd![i].umur ; cout << endl; } getch( ;

Contoh 6. Program untuk menjumlahkan dan mengurangkan

buah bilangan kompleks.

#include <iostream.h> #include <conio.h> class 7om"le7s { "rivate/ @loat real; @loat imaGiner; "u.lic/ void tam.ah(@loat real'$ @loat imaGiner'$ @loat real2$ @loat imaGiner2 { real - real' B real2; imaGiner - imaGiner' B imaGiner2; } @loat void 7urangi(@loat real'$ @loat imaGiner'$ real2$ @loat imaGiner2 { real - real' A real2; imaGiner - imaGiner' A imaGiner2;

};

void tam"il7an( { cout << 9,asiln#a adalah / 9 << real << 9B 9 << imaGiner << HiH << endl; }

void main( { clrscr( ; 7om"le7s .il7om"le7s; @loat elIreal'$ elIreal2$ elIimaG'$ elIimaG2; cout << 9+ilangan Fom"le7s "ertama9 << endl; cout << 9:lemen real / 9; cin >> elIreal'; cout << 9:lemen imaGiner / 9; cin >> elIimaG'; cout << 9+ilangan Fom"le7s 7edua9 << endl; cout << 9:lemen real / 9; cin >> elIreal2; cout << 9:lemen imaGiner / 9; cin >> elIimaG2; .il7om"le7s.tam.ah(elIreal'$elIimaG'$elIreal2$elIimaG2 ; .il7om"le7s.tam"il7an( ; .il7om"le7s.7urangi(elIreal'$elIimaG'$elIreal2$elIimaG2 ; .il7om"le7s.tam"il7an( ; getch( ;

Anda mungkin juga menyukai