algoritmaC__
-
Upload
azmi-rizki-lubis -
Category
Documents
-
view
215 -
download
0
description
Transcript of algoritmaC__
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 1/87
1
Modul Praktek Bahasa Pemrograman C++Dosen : Hadi Kusmara, M.komSTMIK Bani Saleh
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 2/87
2
Latihan I
•Pendeklarasian konstanta dapat dilakukan dengan 2 cara:menggunakan(# defne)
menggunakan( const)Simpan dengan nama fle latihan 1-------------------------------------------!:const""konstanta dengan const#include iostream$h%#include conio$h%main()&const a ' 1const * ' +
const c 'a - *coutcgetch(),-------------------------------------Simpan dengan nama fle latihan 1a
engunakan .aria*leSimpan dengan nama fle latihan 1a#include iostream$h%#include conio$h%Int main()&Int a/ *int hasil"" proses:a ' +* ' 2
hasil' a - *a ' a 0 1
"" cetakhasilna:cout hasil"" menunggupenekanan tom*ol padake*oard oleh usergetch()""mengakhiri programreturn ,
uat program dengan nama fle Latihan31* : 4itung Luas segitiga dgdeklarasi .aria*le dg ketentuan:a'5*'+ L'a 6 *"2
uat program dengan nama fle Latihan31c :tampilkan indentitas anda:7ama: 4asan 8urusan : Sistem In9ormasi7o 4P : +;555<<<=lamat : 8l$ >aa ?ali alang no <$
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 3/87
@
Latihan 2
A*e*erapa perintah output ang *ias digunakan:•print9
•puts•putchar•cout•cprint9
Statement Outut•print9 A9ungsi output ang paling umum digunakan$Aterdapat dalam fle header : stdio$hAsintaks:•print9(BCormatD/ arg1/ arg2/ E)
Aketerangan:•format *erupa keterangan ang akan ditampilkan kelaar *eserta penentu9ormatna$•penentu 9ormat digunakan untuk menentukan Fenis data apa ang akanditampilkan kelaar$•argumen dapat *erupa .aria*el/ konstanta/ atau ekspresi
Statement Outut•Penentu 9ormat pada print9Statement Gutput
•Penentu !ormat ada rint!
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 4/87
H
Penggunaan "s#ae Se$uen#e Chara#ter
Statement Outut Penggunaan "s#ae Se$uen#e Chara#terAkarakter dengan makna khusus ang menggunakan notasi(*ack slash)$
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 5/87
+
JontohProgramSimpan dengan nama fle latihan32
%& inut ' outut &%(in#lude )stdio.h*
(in#lude )#onio.h*
oid main-
Int a / 0123oat 4 / 5.612
#lrs#r-2
rint!7Bilangan 8 / 9d n;, a-2
rint!7BilanganB / 9! n;, 4-2
rint!7BilanganB / 91.<! n;, 4-2
get#h-2
==============
Jontoh Program
Statement Outut uts
Simpan dengan nama fle latihan32a
Adigunakan untuk mencetak string
kelaar$
Pencetakan akan diakhiri dengan
karakter
neKline(ke*aris *aru)$
Aterdapat dalam fle header :
stdio$h
•sintaks : puts(<string
ygditampilkan>);
Jontoh Program
Simpan dengan nama fle latihan32a
%& inut ' outut &%
(in#lude )stdio.h*
(in#lude )#onio.h*
oid main-
#har PT>? / 7Stmik Bani
Saleh;2
#lrs#r-2uts7Sa@a Kuliah di;-2
utsPT-2
get#h-2
A
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 6/87
;
%& inut ' outut &%
(in#lude )stdio.h*
(in#lude )#onio.h*
oid main-
#lrs#r-2ut#harS-2ut#harT-2
ut#harM-2ut#harI-2
ut#harK-2
get#h-2
A
Statement Outut #rint! Amemiliki 9ungsi ang mirip denganprint9$
Adapat menampil kantulisandengan Karna$Aterdapat dalam fle header :stdio.h
sintaks : cprintf(“<format>”,arg1, arg2, …);
Jontoh Program
%& inut ' outut
in#lude )stdio.h*
(in#lude )#onio.h*
oid main
#lrs#r-2
%%set Earna teks menFadi
kuning
teGt#olor"OJ-2
teGt4a#kgroundL""-2
rint!7HelloJorldn;-2#rint!
7HelloJorldn;-2get#h-2
A
Statement Outut #out
Amerupakan suatu o*Fect didalam J00 ang digunakan untuk menampilkandata kelaar$Aterdapat pada fle header : iostream.h
Adapat diga*ung kandengan penggunaan escape seuence character$•contoh:
#out)) 7Hello Jorld;)) endl2#out)) 7Pilihan8ndaSalahan;2
Statement Gutput•Cungsianipulator
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 7/87
5
Migunakan untuk mengatur tampilan data$
Nerdapat dalam fle header : iomanip.h
Statement Outut NungsiManiulator
Jara penulisan .aria*le
!:setK()
"6setK digunakan untuk mengatur le*ar
tampilan data$6"
#include iostream$h%
#include iomanip$h%
!:setfll()#include iomanip$h%
#include conio$h%
.oid main()
&Ooat Fum1 ' 12@$+
cout setK(1) Fum1
endl
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 8/87
#include conio$h%
.oid main()
&int Fum1 ' 1+
Int Fum2 ' 2@
Int Fum@ ' 1H1
cout 8umlah1 ' setK(+)
Fum1 endl
cout 8umlah2 ' setK(2)
Fum2 endl
cout 8umlah@ ' setK(1)
Fum@ endl
getch()
,
cout setfll(Q#Q) setK()
Fum1 endl
getch()
,
erguna untuk mengatur karakter
ang dipakai untuk memenuhi
*agian feld ang ditentukan$
ikangan *entuk Gct/4e!/ MecMata dalam *entuk desimal(decA*asis
1)/
oktal(octA*asis )/ dan
heksadesimal(he!A*asis 1;)$
"" contohpemakaiandec/ oct/ he!
#include iostream$h%
#include iomanip$h%
#include conio$h%
.oid main()
&int nilai' 2+
cout nilai endl
cout oct nilai endl
cout he! nilai endl
cout dec nilai endl
getch()
!:set*ase()
#include iostream$h%
#include iomanip$h%
#include conio$h%
.oid main()
&int nilai' 2+
cout nilai endl
cout set*ase() nilai
endl
cout set*ase(1;) nilai
endl
cout set*ase(1) nilai
endl
getch()
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 9/87
<
,
sama 9ungsina dengan
manipulator oct/ dec/ dan he!$
Statement Outut tanda !ormat 4uat setios3ags- dan
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 10/87
1
!:"" contoh pemakaian ios
::le9tdanios ::right
#include iostream$h%
#include iomanip$h%
#include conio$h%
.oid main()
&int a ' 2@H/ * ' +;5cout setK(+) a endl
cout setK(+) * endl
cout -------- endl
cout setiosOags(ios::le9t)
cout setK(+) a endl
cout setK(+) *
endlcout resetiosOags(ios::le9t)
cout -------- endL
cout setiosOags(ios::right)
cout setK(+) a endl
cout setK(+) * endl
getch()
,
"" contoh pemakaianios::le9tdanios::right#include iostream$h%#include iomanip$h%#include conio$h%.oid main()&cout setiosOags(ios::le9t)
setK(2+) 7 = = setiosOags(ios::right) setK() R = 8 I endlcout setiosOags(ios::le9t) setK(2+) >udi 4artonosetiosOags(ios::right) setK() 5+ endlcoutsetiosOags(ios::le9t) setK(2+)8okoSupriantosetiosOags(ios::right) setK()+ endl
cout setiosOags(ios::le9t) setK(2+) >ika S$ setiosOags(ios::right) setK() @+ endlgetch()
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 11/87
11
Statement Outut
tanda !ormat untuk setios3ags- dan resetios3ags-
Semua manipulator ang memiliki argument kecuali setK()/ Penggunaan manipulator selain dec/ he!/ oct/ endl/ Oush perlu mengikutsertakan preprocessor iomanip$h
JontohProgram%& inut ' outut &%
(in#lude )iostream.h*
(in#lude )iomani.h*
(in#lude )#onio.h*oid main -int8/01, B/<12
#lrs#r-2
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 12/87
12
#out)) heG )) setios3agsios::uer#ase-2
%%tlsnkaital#out)) setios3agsios::shoE4ase-2
%%menamilkan1#out)) 8 )) endl2
#out)) o#t2#out)) B )) endl2
get#h-2A
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 13/87
1@
Modul II
Statement Inut untuk menerima masukan dari user$e*erapa 9ungsi input ang dapat digunakan:
s#an! gets#inget#hget#he
Statement Inut s#an! Adigunakan untuk memasukkan *er*agai Fenis data$Aterdapat dalam fle header : stdio$h
•sintaks:scanf(“<format>”, &variabe);•keterangan:
sim*ol merupakan pointer ang digunakan untuk menunFuk kealamat
.aria*le memori ang dituFu$
Statement Inut enentu !ormat s#an!
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 14/87
1H
Jontoh Program%& inut ' outut &%(in#lude )stdio.h*(in#lude )#onio.h*oid main-
int a, 4, # / 12#lrs#r-2rint!7Masukkan ilai 8 : 7-2s#an!79d;, 'a-2rint!7MasukkanilaiB : 7-2s#an!79d;, '4-2# / a + 42rint!7HasilPenFumlahan/ 9d;, #-2get#h-2A
Statement Inut getsAdigunakan untuk memasukkan data string$!sintaks: gets(nama"variabe"arra#);
Jontoh Program%& inut ' outut &%
(in#lude )stdio.h*
(in#lude )#onio.h*
oid main-
#har nama>1?2
#lrs#r-2
rint!7Masukkan ama 8nda: 7-2
getsnama-2
rint!7nama 8nda : 9s;, nama-2
get#h-2A
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 15/87
1+
---------------------------------------------------Statement Input cinAmerupakan se*uah o*Fect didalam J00 ang digunakan untukmemasukkan data$Aterdapat dalam header fle : iostream$h
•sintaks: cin>> <var>;
•CatatanQ
ntuk mendapatkan se*uah inputan data ang mengandung spasi/ anda
*ias menggunakan #in. getline)ar*, siReo!)ar*--
JontohProgram%& inut ' outut &%
(in#lude )iostream.h*
(in#lude )#onio.h*
oid main-
int a, 4, # / 12
#lrs#r-2
#out )) 7Masukkan ilai 8 : 72
#in ** a2#out )) 7Masukkan ilai B : 72
#in ** 42
# / a + 42
#out)) 7HasilPenFumlahan/ ;)) # )) endl2get#h-2A
-----------------------------------------------------------------------
Statement Inut get#hAdigunakan untuk mem*aca se*uah karakter dengan si9atkarakter ang
dimasukkan tidak perlu diakhiri dengan menekan tom*ol nter/ dan karakterang dimasukkan tidak akan ditampilkan kelaar$Aterdapat dalam header fle : conio$h
Statement Inut get#heAdigunakan untuk mem*aca se*uah karakter dengan si9at karakter angdimasukkan tidak perlu diakhiri dengan menekantom*ol nter/ dan karakterang dimasukkan akan ditampilkan kelaar$
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 16/87
1;
Aterdapat dalam header fle : conio$h
!:#includeconio$h%
#includestdio$h%
main()
&char karakter
clrscr()
print9(?etikse*uahkarakter: )
karakter'getch()print9(n?arakterang andaketikadalah:
Tc/karakter)getche(),
Latihanuatlah program untuk menghitung nilai rata-rata dari seorang sisKa denganketentuan se*agai *erikut:Anama sisKa/ nilai pertandinganI/ nilai pertan dinganII/ nilai pertandingan IIIdiinput$Anilai rata-rata merupakan hasil dari nilai pertandinganI/ II danIII di*agidengan@$Atampilan ang diinginkan adalah se*agai *erikut:
a@arMasukan Program HitungilaiLata=LataamaSisEa: . . .)diinut*ilai Pertandingan I : . . .)diinut*ilai Pertandingan II : . . .)diinut*ilai Pertandingan III : . . .)diinut*a@arKeluaran SisEa @ang 4ernama. . . )tamildata*Memerolehnilairata=rata ...)hasilroses*dari hasil erlom4aan @ang diikutin@a
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 17/87
15
Modul III
Oerasi Kondisi
ahasa Pemrograman J00
Pern@ataan i!
Pernataan i9 dapat dipakai untuk mengam*il keputusan *erdasarkan suatu
kondisi$
entuk pernataan ini ada dua macam:
$$i9 saFa dan
$$elsePernataan i9 sederhana
Ne!t o!: i9 (kondisi)
pernataan
i9 (kondisi)
pernataan
?odisi digunakan untuk menentukan pengam*ilan keputusan$ Pernataandapat *erupa se*uah pernataan ataupun se*uah per ?odisi digunakan
untuk menentukan pengam*ilan keputusan Pernataan dapat *erupa se*uah
pernataan atau punse*uah pernataan maFemuk$
agian ini diFalankan kalaukondisi *ernilai *enar$
Jontoh program
#includeiostream$h%
#includeconio$h%
.oid main()&
int usia
clrscr()
cout asukan usia =nda U :
cin %%
#includeiostream$h%
intusia
clrscr()
cout asukan usia =ndaU :
cin%% usiai9(usia15)
cout =nda *elum cukup
umur VVV endl
getch()
,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 18/87
1
#includeconio$h%
.oid main()
&Pern@ataan else
Pernataan else tidak pernah sendiri selalu menggunakan i9$
erikut*entuk penggunaanna$
i9(kondisi)
pernataan1
else
pernataan2
i9(kondisi)
pernataan1
else
pernataan2Pernataan2 diFalankan apa*ila
kondisi *ernilai salah$
Jontohprogram
#includeiostream$h%
#includeconio$h%
.oid main()
&
intusia
clrscr()
cout asukanusia=ndaU :
cin%% usiai9 (usia15)
cout =nda *elum cukup umurVVV
endl
else
cout Selamat =nda sudah cukup
umurV endl
getch()
,
Jontoh lainna
----------------------------------------------------
--
: #includeiostream$h%
#includeconio$h%
.oid main()
&
int !
cout asukan *ilangan *ulat :
cin %% !
i9(!%
cout ! adalah *ilangan
tugas
$$uatlah program untuk menentukan
apakah se*uah *ilangan *ulat itu
adalah genap atau ganFil$
8aKa*:
--------------------------------------
#includeiostream$h%
#includeconio$h%
.oid main()
&
int a
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 19/87
1<
positi9 endl
else
cout !
adalah*ilangannegati9 endl
getch()
,
-------------------------------------------
coutmasukkan
*ilangant'cin%%a
i9(a'aT2V')
cout*ilangan ganFilendl
else cout*ilangan
genapendl
getch() ,
------------------------------------------
Pern@ataan i! didalam i!
Pernataan i9 ang terletak didalam
i9 sering dise*ut nested i! atau i!
4ersarang.
entuk penggunaana adalah s**:
i9(kondisi1)
Pernataan1
else i9(kondisi2)
Pernataan2
else i9(kondisi@)
Pernataan@
else
i9(kondisi1)
Pernataan1else i9(kondisi2)
Pernataan2
else i9(kondisi@)
Pernataan@
else i9(kondisi7)
pernataan7
else
""optionalpernataan
""optional
Jontohprogram
-------------------------------------------------------
----
#includeiostream$h%
#includeconio$h%
.oid main()
&
int kode3hari
clrscr()
cout B## enentukan 4ari ##
e
#includeiostream$h%
#includeconio$h%.oid main()
&
intkode3hari
clrscr()
coutB## enentukan4ari##
endl
cout 1'Senin @'>a*u +'8umat
5'inggu endl
cout 2'Selasa H'?amis ;'Sa*tu
endl
cout ?ode 4ari: cin%% kode3hari
""prosesseleksi
i9(kode3hari''1)
cout Senin endl
else i9(kode3hari''2)
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 20/87
2
cout Selasa endl
else i9(kode3hari''@)
cout >a*u endl
else i9(kode3hari''H)
cout ?amis endl
else i9(kode3hari''+)
cout 8umat endl
else i9(kode3hari'';)
coutSa*tu endl
else i9(kode3hari''5)
coutinggu endl
else
cout ?ode4ariSalah endl
getch()
,-------------------------------------------------------
-----
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 21/87
21
Modul I
Pern@ataan sEit#h
Pernataan ini merupakan pernataan pilihan *erganda$
entuk umum dari pernataan sKitch s** :
$Pernataan ini merupakan pernataan pilihan *erganda$ entuk umum dar
ipernataan sKitch s**:
$%ntak ::$itc'(nkapan)
case ngkapan1:
pern#ataan1;
break;
case ngkapan2:
pern#ataan2;
break;
*+
de9ault: ""optionalpernataanW""optional,
Jontoh program
#includeiostream$h%
#includeconio$h%
.oid main()
& int kode3hari
clrscr()
cout ## enentukan 4ari ## e
#includeiostream$h%
#includeconio$h%
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 22/87
22
.oid main()
& Int kode3hari
clrscr()
cout ## enentukan4ari## endl
cout 1'Senin @'>a*u +'8umat 5'ingguendl
cout 2'Selasa H'?amis ;'Sa*tu endl
cout ?ode 4ari: cin%% kode3hari
""prosesseleksi sKitch(kode3hari)
& case 1:
Jout Senin endl
*reak
case 2:
cout Selasa endl
*reak
case @:
cout >a*u endl
*reak
case H:
cout ?amis endl
*reak
case +:
cout 8umat endl
*reak
case ;:
cout Sa*tu endl
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 23/87
2@
*reak
case 5:
cout inggu endl
*reak
de9ault:
cout ?ode 4ari SalahV
endl
*reak
, ""akhirdarisKitchgetch()
,
Nugas
uatlah program BNe*ak =ngka Nak
erhadiahD$
Lat:
Suatu perusahaan mem*erikan komisi pada para salesman dengan
ketentuan se*agai *erikut:
$ila salesmen dapat menFual *arang hingga>p$2$/-maka akan
di*erikan uang Fasa se*esar >p$1$/-ditam*ah dengan uang komisi
>p$1T dari pendapatan ang diperoleh hari itu$
$ila salesman dapat menFual *arang diatas >p$2$ maka akan di*erikan
uang Fasa se*esar >p$2$/- ditam*ah dengan uang komisi >p$1T dari
pendapatan g diperoleh hari itu$
$ila salesman dapat menFual *arang diatas >p$+$/-/akan di*erikan
uang Fasa se*esar >p$@$/-ditam*ah dengan uang komisi >p$2T dari
pendapatan g diperoleh hari itu$
uatlah program untuk menghitung komisi g akan didapatkan oleh
salesmen terse*ut$
8aKa*
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 24/87
2H
#includeconio$h%
#includeiostream$h%
.oid main()
& Ooat pndptn/ Fasa'/ komisi'/ total'
char ulang'XYZ
Khile(
#includeconio$h%
#includeiostream$h%
.oid main()
& Ooat pndptn/ Fasa'/ komisi'/
total'
char ulang'XYZ
Khile(ulang''XYZ[[ ulang''XZ)
& clrscr()
coutpendapatan hari ini >p$
cin%%pndptn
i9(pndptn%' \\ pndptn'2)
& Fasa'1
komisi'$16pndptn
,
else i9 (pndptn'+)
& Fasa'2
komisi'$1+6pndptn
,
else&
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 25/87
2+
Fasa'@
komisi'$26pndptn
,
""menghitung total total'komisi0Fasa
coutang Fasa >p$ Fasaendl
coutang ?omisi >p$
komisiendl
cout'''''''''''''''''''''''''''''''endl
cout4asil total >p$ totalendl
coutBtam*ah data]Y"N^UD
lang'getche()
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 26/87
2;
Modul
Perulanganloos-
Perulangan dengan Ehile
Sintakna adalah:
'ie (konisi) pern#ataan;
pernataan akan diFalankan selama ekspresi *ernilaitrue$
Contoh: ""hitungan mundur menggunakan Khile
#includeiostream$h%#includeconio$h%intmain()& cin%%nKhile (n%)& cout n / --n ,coutSNGPVgetch(),
Contoh:""hitungan mundur menggunakan Khile#includeiostream$h%#includeconio$h%intmain()& int ncoutasukkan angka untuk mulaicin%%nKhile (n%) &cout n / --n ,
coutSNGPVgetch(),
latihan
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 27/87
25
Nampilkan *ilangan genap dari 2 s"p 1Perulangan dengan doEhile
Sintakna:o pernyataan'ie (kondisi);
konsep do...while mirip dengan Khile$ 7amun pernataan akan diFalankanterle*ih dahulu se*elum pengecekan kondisi $Contoh:
""sampai penekanan #includeiostream$h%#includeconio$h%intmain()& unsigned long n ""untuk tipe data positi9 aFa$Mo & coutmasukkan nomor(tekan untuk mengakhiri):
cin%%n coutanda memasukkan angka : n n ,Khile(nV')return getch()
,
Perulangan dengan !or
Sintakna: for (inisiaisasi; konisi; conter) pern#ataan;Pernataan akan diulangi Fika kondisi *ernilai true$ Sama sepertiperulangan dengan Ehile$ 7amun !or menetapkan inisialisasi danpenaikan *erada dalam( dan)$
PenFelasan adalah s**:
Inisialisasi: akan dieksekusi$ iasana merupakan .aria*le ang akandipakai se*agai counter atau pencacah$ agian ini akan dieksekusihanasekali$
Kondisi: akandi periksa/ Fika *ernilai true maka perulangan akandilanFutkan dan Fika *ernilai 9alse maka perulangan akan dileKati$Pernyataan: akandieksekusi$ iasana dapat terdiri dari se*uah instruksiatau *lok instruksi ang *er ada diantara& dan,$ Nerakhir/ apapun perintah dalam counter akan diFalankan dan kemudianperulangan kem*ali lagi kelangkah2$
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 28/87
2
Contoh:
"63333333333333333333336""6Program 9or-*ilangan naik6""63333333333333333333336"
#includeiostream$h%#includeconio$h%.oid main()& int a 9or(a'1a'100a) couta getch(),
at:uattampilan di*aKah ini dengan 9or
ested oos Perulangan Bertumuk-
Perulangan *ertumpuk secara sederhana dapat diartikan: terdapat satu ataule*ih loop didalam se*uah loop$ anakna tingkatan perulangan/tergantung dari ke*utuhan$iasana/ nested loops digunakan untuk mem*uat aplikasi matematika angmenggunakan *aris dan kolom$ Loop luar/ *iasana digunakan untukmendefnisikan *aris$ Sedangkan loop dalam/ digunakan untukmendefnisikan kolomContoh:
#includeiostream$h%#includeconio$h%Int main()& 9or(int*aris' 1 *aris' H *aris00) & 9or (intkolom' 1 kolom' + kolom00)
& coutkolom ,
coutendl , getch(),
at:
uatlam tampilan di*aKah ini UaEa4:
#includeconio$h%#includestdio$h%#includeiostream$h%
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 29/87
2<
.oid main()& int a/ * 9or(a'1a'+a00) & print9(n)
9or(*'a*'+*00) couta , getch() ,
Perintah 4reak
reak *er9ungsi untuk keluar dari loop/ Kalaupun kondisina *elumseluruhna terpenuhi$ iasana/ perintah ini digunakan untuk memaksaprogram keluar dari loop$ Jontoh *erikutakan *erhenti menghitung se*elum
terhenti secaranormal$ "G:
#includeiostream$h%#includeconio$h%Int main()& 9or (intn'1 n%n--) & coutn/ i9 (n''@) & coutpenghitungan dihentikanV *reak ,
,getch(),
Perintah #ontinue
#includeiostream$h%#includeconio$h%Int main()& 9or (int n'1 n%n--) & i9 (n''+) continue
coutn/ , coutSNGP V getch() , ,perintah ini akan meleKati satu iterasi ang sesuai dengan sarattertentu/ dan melanFutkan keiterasi *erikutna$
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 30/87
@
Pern@ataan go to
Pernataan go to merupakan instruksi untuk mengarahkan eksekusiprogram kepernataan g diaKali dengan suatu la*el$ La*el merupakan
suatu pengenal ang diikuti dengan tanda titikdua(:) $ entuk pemakaiango to adalah s**:
Ro to la*el"G:
#includeiostream$h%#includeconio$h%#includestdio$h%.oid main()
& int a/* char lagi atas: coutnasukkan *ilangan' cin%%a *'aT2 print9(7ilaiTd TT 2 adalah'Td/ a/ *) print9(nnIngin 4itung Lagi]Y"N^ : ) lagi'getche() i9 (lagi''QYQ [[ lagi''QQ) go to atas
getch(),
latuatlah program untuk menghitung 1 deret *ilangan genap denganhasilna:20H0;00101201H01;0102'11at:uatlah program untuk menghitung 1 deret *ilangan genap denganhasilna:10@0+050<01101@01+01501<'1
UaEa4:
(in#lude)#onio.h*(in#lude)iostream.h*oid main- int G, tot2 tot/12
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 31/87
@1
!orG/02G)/<12G+/<- #out))G2tot/tot+G2
i!G//0V-#out))W/W2A
else#out))W+W2A
A#out))tot2get#h-2A
at:uat tampilan di*aKah ini:
0.1 2 2 2 @ ; @H 2H 2<. UaEa4:0
#includeconio$h%#includeiostream$h%.oid main()& int a'1/*'1/cclrscr()Khile(a'H)& *'a6*
c'*-a couta * cendl a00, getch(),
UaEa4<:
#includeiostream$h%#includeconio$h%
.oid main()& int i/F 9or (i'1 i'+ i00)
& 9or (F'i F%'1 F--) & coutF
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 32/87
@2
, coutendl , getch() ,at:
UaEa4:
#include stdio$h%#include conio$h%.oid main ()& int a/ * char c
print9(asukkan karakterang akan diulang: )
scan9(Tc/ \c)print9(n)
print9(asukkan Fumlah pengulangan: )scan9(Td/ \a)
print9(n)print9(Nampilan =nda: n)9or(*' *a *00)&print9(Tc/ c),getch(),
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 33/87
@@
Modul I
8rra@
=rra merupakan struktur data ang sering digunakan dalam pemrograman
untuk menimpan data ang akan diolah kemudian ( misalna pada prosessorting )$
=rra adalah struktur data ang terdiri dari kumpulan .aria*le ang *ertipe
sama$
e*erapa *ahasa pemrograman mendukung struktur arra statis dan
dinamis$ Pada J"J00 arra ang didukung adalah arra statis$
Pada J"J00 arra merupakan pointer ang mempunai alokasi memor
tetap (pointer constant)$
Nopik ang di*ahas dalam pertemuan ini :
Meklarasi arra satu dimensi Penggunaan arra satu dimensi =rra satu dimensi se*agai parameter 9ungsi Meklarasi arra multi dimensi String
Deklarasi 8rra@ Satu Dimensi
=rra satu dimensi adalah arra ang sederhana/ masing-masing elemen
dapat terpisah dengan menggunakan inde!$
S@ntaG :
Npe arra3name]num*er o9 element^
Ketentuan :
- Inde! terkecil -% (nol)$- Inde! ter*esar -% Fumlah 3elemen A 1$
Contoh :
Int n=rra ]1^ "" 1 *uah *ilangan integer
Jhar name]@^ "" arra o9 character ( string )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 34/87
@H
Mou*le ! ]+^
W]^ ' 2$@
"" compile G?/ *ut access to ilegal memor area VVV
W]1^ ' 1$@
=rra31]^ ' 1
7ame]^ ' X J X
8rra@ Se4agai Parameter Nungsi
=rra dapat digunakan se*agai parameter untuk suatu 9ungsi$ J00
menetapkan dua alternati9 ukuran dari arra tertentu (f!ed) dan umum(general)$
S@ntaG XGed arra@
Npe parameter7ame] arraSi_e ^
Contoh :
Int miniarra( int arr]1^/ int n )
`oid sort(unsigner arr31]5^ )
S@ntaG oen arra@ :
Npe parameter7ame ] ^
=tau :
Npe 6 parameter7ame
Contoh :
int minarr( int arr ] ^/ int n )
.oid sort( unsigned da ] ^ )
=tau :
int minarr( int 6 arr / int n )
.oid sort( unsigned 6 da )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 35/87
@+
""Program J00 - arra se*agai parameter
#include iostream$h%
Jonst int =W ' 1
ain()
& int arr]=W^
int n
"" declare prototpes o9 9unctions
int getin ( int a]=W^/ int si_e )
int geta!( int a ]=W^/ int si_e )
do& cout B nter num*er o9 data ] 2 to B
=W B ^ : B
cin %% n cout B n B
, Khile ( n 2 n % ma! )
"" prompt user 9or data
9or ( int I ' I n i00 ) &
cout B arr] B // B ^ B cin %% arr]i^
,
Jout B Smallest .alue in arra is B
getin (arr/ n ) B n B
B iggest .alue in arra is B
geta!(arr/ n) B n X
Int getin( int a]=W^/ int si_e )
& int small ' a]^
"" search 9or the smallest .alue
9or( int I ' 1 I si_e i00 )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 36/87
@;
i9 (small % a]i^ small ' a]i^
return small
Int *ig ' a] ^/ int si_e )
& int *ig ' a]^
"" search 9or the *iggest .alue
9or( int I ' 1 I si_e i00 )
i9(*ig a]i^ ) *ig ' a]i^
return *ig ,
Deklarasi 8rra@ Multidimensi
ultidimensi arra merupakan superset dari single dimensional arra$ Setiap
penam*ahan dimensi akan diikuti penam*ahan attri*ut akses$ =rra dua
dimensi memiliki dua attri*ut *aris dan laFur sedangkan tiga dimensi
memiliki tiga attri*ut A *aris/ laFur dan tinggi$
S@ntaG :
6 Mua dimensi
tpe arra ]si_e1^ ]si_e2^
6 Niga dimensi :
tpe arra ]si_e1^ ]si_e2^ ]si_e@^
Contoh :
dou*le matrik3=]1^]1^
char ta*le]H1^]22^]@^
int inde!]5^]12^
Program :
"" program J 00 - arra dua dimensi
#include iostream$h%
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 37/87
@5
Jonst int =W3JGL ' 1
Jonst int =W3>G ' @
ain()
& dou*le !]=W3>G^]=W3JGL^
dou*le sum/ sum!/ mean
in roKs/ columns
"" get the num*er o9 roKs
do&cout Bnter num*er o9 column ]2 toD
=W3JGL B^ : B cin %% columns
, Khile (roes II 2 roKs % =W3>G)
"" get the num*er o9 columns
do&cout Bnter num*er o9 column ]1 toD
=W3JGL B^ : B cin %% columns
, Khile ( roKs II 1 columns % =W3JGL)
"" get the matri! elements
Cor ( int i ' i roKs i00 ) &
9or ( int F ' F columns F00 ) &
cout B W] B i B ^] B F
B ^ : B cin %% !]i^]F^ ,
Jout B n B ,
Sum ' roKs
"" o*tain the sum o9 each column
Cor ( int F' F columns F00 ) &
sum! '$
9or ( int i ' i roKs i00 )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 38/87
@
sum! 0 ' ! ]i^]F^
mean ' sum! " sum
cout B ean 9or column B F
B ' B mean B n B ,
>eturn ,
STLI
• String merupakan arra@ o! #hara#ter• Inde! dimulai dari • Miakhiri dengan karakter XZ (7LL String)
• ntuk menimpan n *uah charakter di*utuhkan deklarasi arrase*esar n + 0-
• J"J00 dilengkapi dengan li*rar ang lengkap untuk mengaksesstring/ seperti strlen()/ strcp()/ strcmp()/ strchr()/ dll$
• Meklarasi :char name]21^ "" pesan untuk 2
char amir]+^ ' & B =mir B ,
Contoh :
#include iostream$h%Int main()
& char name]1^ "" allocate 9or chars
cout B hat is our name U B
cin %% name
i9 ( strlen(name) % )
cout B 4ello/ B name B/
hoK are ouUnD
else
cout B 4mm/ I donZt knoK Khat our nameD
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 39/87
@<
return ,
Modul II
STYCTYL"
• Structure (struct) merupakan suatu struktur data ang terdiri dari 1atau le*ih .aria*le ang *ertipe data sama " *er*eda$
• Struct secara logik mem*uat suatu tipe data *aru (user defned) angdapat dipergunakan untuk menampung in9ormasi " data ang *ersi9atmaFemuk$
• isalna/ data seorang mahasisKa SNI? =7I S=L4/ dimana tiapmahasisKa mempunai : nim/ nama/ alamt/ nilai/ ipk$ Sks/ dll/ dansemua itu harus dipandang se*agai satu data mahasisKa$
Nopik ang di*ahas dalam pertemuan ini :
• Meklarasi struktur• Meklarasi .aria*el struktur• =kses anggota struktur• Penggunaan struktur• Struktur *ertingkat (7ested Structure)
Deklarasi Struktur
S@ntaG :
struct structNag &
list o9 mem*ers% ,
Contoh :
struct point &
dou*le !
dou*le ,
struct rectangle &
point upperLe9tJorner
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 40/87
H
point loKer>ightJorner
dou*le area ,
struct circle &
point center
point radius
dou*le area ,
Deklarasi aria4el Struktur
Struktur ang telah didefnisikan dapat dipergunakan se*agai tipe data
dalam mem*entuk satu .aria*le$
Contoh :
struct point &
dou*le !
dou*le
, p1/ p2/ p@
8tau
struct point &
dou*le !
dou*le ,
point p1/ p2/ p@
8tau
struct &
dou*le !
dou*le
, p1/ p2/ p@
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 41/87
H1
8kses 8nggota Struktur
J00 mem*erikan 9asilitas inisialisasi satu struktur serta akses anggota satu
struktur$
Contoh :
point p1 ' &1$/ $+,
8tau
p1$! ' <$
p1$ ' 12$+
p2$! ' +$
p2$ ' 5$2
Program
""program J00 menggunakan struktur
#include iostream$h%
#include stdio$h%
#include math$h%
Jonst =W3>JN ' H
Struct point &
dou*le !
dou*le ,
Struct rect &
point ulc "" upper le9t corner
point irc "" loKer right corner
dou*le area
int id ,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 42/87
H2
Npede9 rect rect=rr]=W3>J^
ain()
rect=rr r
rect temp
dou*le length/ Kidth
9or ( int i ' i =W3>JN i00 ) &
cout B nter (W/Y) coord$ 9or LJ o9 rect$ # B
i B : B
cin %% r]i^$ulc$! %% r]i^$ulc$
cout B nter (W/Y) coord$ 9or LJ o9 rect$ # B
i B : B
cin %% r]i^$ulc$! %% r]i^$ulc$
r]i^$area ' length 6 Kidth ,
"" sort the rectangles * areas
9or ( i ' i ( =W3>JN A 1 ) i00 )
9or ( int F ' i 0 1 F =W3>JN F00 )
i9 ( r ]i^$area % r ]i^$area)
& temp ' r]i^
r]i^ ' r]F^
r]F^ ' temp ,
""displa rectangle sorted * area$
Cor ( i ' i =W3>JN i00)
Print9(B>ect # Td/ area : T+$HI9nD/ r]i^$id/ r]i^$area)
>eturn ,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 43/87
H@
Struktur Bertingkat
Struktur dapat disusun dalam struktur ang lain$
Contoh :
struct Mistance &
int 9eet
Ooat inches,
struct >oom &
Mistance Length
Mistance Kidth ,
""Program J00 - struktur *ertingkat
#include iostream$h%
struct Mistance &
int 9eet
Ooat inches ,
struct >oom &
Mistance Length
Mistance Kidth ,
.oid main()
& >oom dining
dining$length$9eet ' 1@
dining$length$inches ' ;$+
dining$Kidth$9eet ' 1
dining$Kidh$inches ' +$
Ooat I ' dining$length$9eet 0 dining$length$inches"12
Ooat K ' dining$Kidth$9eet 0 dining$Kidh$inches"12
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 44/87
HH
cout B nMining room area is B I 6K
B suare 9eet B ,
Modul III
Nun#tion
erupakan sekumpulan instruksi ang mem*entuk satu unit setamemiliki nama$
Cungsi digunakan untuk mem*antu organisasi program danmengurangi *esar (si_e) program$
Nopik ang di*ahas : Meklarasi 9ungsi =rgumen dan de9ault argumen >eturn .alue Cunction o.erloading ( tri.ial polmorphism ) Inline Cunction
Normat Deklarasi Nungsi Se#ara Ymum :
Npe 9unction3name(argument3list%)
& statement3list% ,
tpe tipe dari return .alue$
9unction3name nama 9ungsi sesuai J00
argument3list .aria*le input
statement3list kumpulan instruksi
8rgument Nun#tion Parameter-
• =rgument merupakan data ang dikirim dari program ke 9ungsi danse*alikna$ =rguments dipergunakan untuk mengirim data ang akandiproses$
=da 2 Fenis cara untuk mengirimkan argumen aitu :
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 45/87
H+
1$ Passing 4@ alue
– Pada metode ini ang dikirimkan adalah nilai (.alue) dari .aria*leang dikirim se*agai argumen$
– Peru*ahan terhadap argumen ang terFadi didalam 9ungsi/ tidak
akan mempengaruhi nilai dari .aria*le terse*ut dari 9ungsipemanggil ( hana 1 arah/ masuk ke 9ungsi )
– Contoh :#includeiostream$h%
.oid print (int num)
.oid main()
&
int num ' 55
print(num) "" nilai .aria*le XnumZ tetap 55
,
.oid print (int num)
&
cout B7ilai *ilangan : B num00
endI
,
<. Passing 4@ Le!eren#e
–
Pada cara ini ang dikirimkan adalah reference (pointer) dari.aria*le ang dikirim se*agai argumen$ – Peru*ahan argumen di dalam 9ungsi/ akan mempengaruhi nilai
.aria*le pada pemanggil$ ?arena ang dikirimkan adalah pointer$ – 8enis data ang dikirim se*agai argumen harus *erupa *ilangan
konstan$
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 46/87
H;
– Pada J00 diperkenalkan reference parameter untukmenghindari penggunaan pointer untuk melakukan passing *>e9erence$
– Contoh :#include iostream$h%
.oid upperJase( char \ ch )
.oid main()
& char ch
Khile ( cin$get( ch ) ) &
upperJase ( ch )
cout ch
, ,
.oid upperJase( char \ ch )
& ch ' (ch%'XaZ \\ ch'X_Z)U (ch-@2): ch ,
De!ault 8rgumen
J00 mempunai 9asilitas default argument aitu suatu nilai tertentu ang
akan dipakai se*agai argumen *ila 9ungsi tidak dipanggil dengan argumen
lengkap$
Contoh :
#include stdio$h%
`oid printsg ( char6 msg ' BD/ CIL 6 stream ' stdout )
`oid main()
&
""print Brite rrorD to standard output (stout)
""using de9ault argument at parameter 2 printsg(B rite rror V B )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 47/87
H5
""print mesage to printer
""call printsg Kith complete argument
printsg(B Process completed$D/ stdprn)
""using de9ault argument 1 1 and 2
"" print B essage : B to standard output printsg()
,
`oid printsg( char 6 msg/ CIL 6 stream )
&
9print9(stream/ Bessage: Ts nD/ msg ) ,
Leturn alue
satu 9ungsi telah melaksanakan pekerFaan/ maka akan mengirimkan hasil/
hasil dari 9ungsi dikem*alikan dengan statement return.
""program J00 menghasilkan return .alue
#include iostream$h%
Cloat l*sokg( Ooat ) ""9unction declaration
`oid main()
& Ooatl*s/ kgs
cout %% l*s
cin %% l*s
kgs ' l*stokg( l*s ) "" calling 9unction
cout B Your Keight in ?ilograms is B
kgs ,
""l*sokg() 9unction defnition
Cloat l*stokg( Ooat pounds )
& Ooat kilograms ' $H+@+<2 6 pounds
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 48/87
H
return kilograms
,
Nun#tion Oerloading
• Satu 9ungsi ang dapat melakukan akti.itas ang *er*eda tergantungdari data ang diterima$
• Pada J00 9ungsi dapat mempunai nama ang sama namun dengantugas ang *er*eda/ hal ini dise*ut function o!erloading atau tri!ial polymorphism (semu)$
• Cunction o.erloading dapat diterapkan *ila tiap 9ungsi mempunaifunction signature (ciri khas 9ungsi) ang *er*eda$
Cunction signature terdiri atas :
• 8enis tipe data argumen• 8umlah argumen• rutan letak argumen
"" Program J00 menggunakan o.erload 9unction
#include iostream$h%
"" 9unction prototpes
`oid print( int i)
`oid print( char ch )
`oid print( int i/ char ch )
`oid main()
& print( 1 )
print(X = X)
print(X =/ 1 X)
print(5/X W X) ,
"" 9unction defnition
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 49/87
H<
`oid print( int i)
&cout B Integer : B i endI ,
`oid print( char ch )
& cout B Jharacter : B ch endI ,
`oid print( char ch/ int i )
& 9or ( int F ' Fi F00 )
cout ch
cout endI ,
`oid print(int i/ char ch)
& cout BInteger: i endI
cout BJharacter:D ch endI ,
Inline Nun#tion
Cungsi ini *erman9aat menghemat memori/ dengan cara mengga*ungkan
9ungsi kedalam program utama$
"" Program J00 menggunakan inline 9unction
#include iostream$h%
"" l*sokg() 9unction defnition
Inline Ooat l*stokg(Ooat pounds)
& return $H+@+<2 6 pounds ,
`oid main()
& Ooat l*s
cout Bnter our Keight pounds : B
cin %% l*s
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 50/87
+
cout BYour Keght in ?ilograms isD
l*stokg(l*s) ,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 51/87
+1
Modul IZ
POIT"L ' 8rra@
• Pointer merupakan satu .aria*le ang menimpan address dari.aria*le atau in9ormasi$ =ddress menatakan lokasi pada memorikomputer$
• Pointer merupakan alat untuk melakukan alokasi memor secaradinamis (on demand)
• Se*elum digunakan pointer harus dipastikan agar menunFuk areamemor ang legal/ aitu dengan menunFuk alamat dari .aria*le ataudengan lokasi memor dengan operator neE
•
Cara enggunaan ointer :0. =lokasikan memor dengan menggunakan neE2$ =kses data ang ditunFuk oleh pointer ts*$[. 4apus memor dengan operator delete
S@ntaG :
tpe 6 pointer7ame
tpe 6 pointer7ame ' \ .aria*le
Contoh :
int 6 nPtr
Dimana :
• nPtr merupakan pointer to integer (*erisi alamat)
• 6nPtr *erisi memor ang ditunFuk oleh nPtr ( *erisi nilai *ilanganinteger )
Pointer 8rra@
Migunakan untuk melakukan akses elemen arra$ isalkan poiter ptr
menimpan alamat arra !/
Ptr ' ! "" alamat arra@ G disimpan pada tr
aka alamat elemen arra !]i^/ adalah
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 52/87
+2
Ptr 0 i 6 si_eo9(tipe elemen arra)
Program
"" Program J00- penggunaan pointer untuk mengakses "" arra
#includeiostream$h%
Jons int =W ' @
Int main ()
& dou*le !]=W^
dou*le 6 realptr ' ! "" or$\!]^
dou*le sum/ sum! ' $/ mean
int n
do & cout B nter # data ]2 to B =W B ^: B
cin %% n cout BnD
, Khile ( n II2 n % =W)
9or (int i ' i n i00) &
cout X!]B i B^:D
cin %% 6 (! ' i ) ,
sum ' n
9or (i' i n i00)
sum! 0' 6(realptr 0i)
mean ' sum! " sum
cout Bnean ' B mean BnnD
return ,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 53/87
+@
Pointer Stru#ture
J00 mendukung deklarasi dan penggunaan poiter terhadap struktur "
record$ Penggunaan poiter pada struktur memerlukan operator B-%D untukakses anggota struktur$
S@ntaG
structPtr -% aem*er
Contoh
Struct point &
dou*le !
dou*le ,
Point p
Point6 ptr ' \p
Ptr -%! ' 2@$@
Ptr -% ' ptr -%! 0 12$@
Program
"" Program J00 - penggunaan pointer -%
Struktur
#include iostream$h%
#include stdio$h%
#include math$h%
Jont =W3>JN ' H
Struct point &
dou*le !
dou*le ,
Struct rect &
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 54/87
+H
point ulc "" upper le9t corner
point Irc "" loKer right corner
dou*le area
int id ,
Npede9 rect rect=rr]=W3>JN^
Int main()
& rect=rr r
rect temp
rect 6 pr ' r
rect 6 pr2
dou*le length/ Kidth
9or ( int i ' i ' =W3>JN i00/ pr00 ) &
cout Bnter (W/Y) coord$ Cor LJ o9 rect$ #
i B : B
cin %% pr-%ulc$! %% pr-%ulc$
cout Bnter (W/Y) coord$ Cor LJ o9 rect$ #
i B : B
cin %% pr-%ulc$! %% pr-%ulc$
pr -% id ' I
length ' 9a*s( pr -% ulc$! A pr -% Irc$! )
Kidth ' 9a*s( pr -% ulc$! A pr -% Irc$! )
pr -% area ' length 6 Kidth
pr -' =W3>JN
9or (i ' i (=W3>JN A 1) i00/ pr00)
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 55/87
++
& pr2 ' pr 0 1
9or(int F ' i 0 1 F =W3>JN F00/ pr200 )
i9 ( pr -% area % pr2 -%area ) &
temp ' 6pr
6pr ' 6pr2
6pr2 ' temp , ,
pr -'=W3>JN -1
Cor ( i ' i =W3>JN i00/ pr00 )
Print9(B >ect # Td has area T+$HI9nD/ pr-%id/ pr-%area)
>eturn ,
8lokasi Memori Dinamis
• =lokasi memori secara dinamis adalah cara untuk memakai memori/dimana memori dialokasikan pada saat program *erFalan sesuaidengan ke*utuhan pemakaian$
• ?asus : *ila penggunaan arra/ maka memori ang dipesan adalahstatis/ tidak dapat ditam*ah atau dikurangi Fumlah elemenna/aki*atna dapat terFadi kemungkinan dimana arra ang dipesan tidakcukup atau *erle*ih$ ntuk menghindari hal terse*ut maka digunakanteknik linked-list (alokasi memori dinamis)/ dimana Fumlah elemendapat disesuaikan menurut ke*utuhan saat program *erFalan$
• Jontoh :Jhar6name"" declare .aria*le name/ pointer to char
"" canZt access to name hereV
"" Step 1$ =locate memor
7ame ' neK char ]1^
"" Step 2$ 4a.e access to itV (use itV)
Strcp(name/ BSNI? =7I S=L4D) "" use itV
Jout name endI "" print the memor content
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 56/87
+;
""Step @$ Mealocate memor
Melete name "" dealocate memor
Module Z
OOP O4Fe#t Oriented Programming
• ?euntungan :1$ Pro*lem Griented =pproach2$ In9ormation 4iding (Mata =*straction)@$ >eusa*ilit \ !tensi*ilitH$ Impro.e maintena*ilit
• ?onsep utama dalam GPP:1$ ncapsulation2$ Inheritance@$ Polmorphism
• Pada GPP program terdiri atas o*Fect ang saling *erinteraksi$• GGP menggam*arkan hu*ungan interaksi antar o*Fek se*agai satu
peristiKa (e.ents)/ disertai pengiriman pesan (messages) antar o*Fect$• Se*uah o*Fect digunakan se*agai o*Fect dari dunia nata ang
mempunai :1$ Specifc properties
2$ Specifc *eha.ior• Siklus hidup o*Fect :
1$ orn (created)2$ Li9e (run/ do itZs Fo*)@$ Mead (destroed)
"n#asulation
O8 :
1$ 4iding data structure and comple!it (In9ormation 4iding)2$ Simpli9 data access@$ inimi_e error Khen accessing data
K"JOLD :
1$ Jlass : defnisi o*Fect dalam J00
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 57/87
+5
2$ ethod"mem*er 9unction : deklarasi 9ungsi ang *erada di dalamdeklarasi class$
@$ Mata feld"data mem*er : deklarasi data ( .eria*le) ang *erada didalam deklarasi class$
H$ essage : pesan ang dikirimkan ke o*Fect melalui method
-.$%/ /0/34 :
1$ Putting data and code together : class ' code 0 data2$ 7e.er direct access to data .ia method
Deklarasi Class
Pada J00 o*Fect dapat dideklarasikan dengan keKordclass struct dan
union. Pada deklarasi class/ semua anggota pada kondisi de9ault *ersi9at
riate, sedangkan pada union dan struct *ersi9at u4li#.
ntuk hampir semua kasus/ umumna digunakan deklarasi class untuk
mem*entuk o*Fect$
J00 menediakan @ Fenis tipe akses terhadap class :0. Priate
aitu *agian class ang hana dapat diakses oleh lingkungan internal
class itu sendiri$
0. Prote#ted : Yaitu *agian class ang hana dapat diakses oleh lingkungan internal
class itu sendiri dan class turunanna$
0. Pu4li# : aitu *agian class ang dapat diakses oleh umum/ *aik dari dalam
maupun dari luar class itu sendiri$
S@ntaG
Jlass class7ame
& pri.ate :
data mem*ers%
constructors%
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 58/87
+
mem*er 9unctions%
protected :
data mem*ers%
constructors%
mem*er 9unctions%
pu*lic :
data mem*ers%
constructors%
mem*er 9unctions%
,
COTOH :
"" Program J00 -- klas dan o*Fek sederhana$
#include iostream$h%
Jlass smallo*F "" speci9 a class
& pri.ate:
int somedata "" data mem*er
pu*lic :
"" mem*er 9unction
.oid setdata(int d) & somedata ' d ,
.oid shoKdata()
&cout B Mata is B somedata , ,
`oid main()
& smallo*F s1/ s2 "" defne tKo o*Fects
"" call mem*er 9unction to set data
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 59/87
+<
s1$shoKdata( 1;; ) s2$setdata( 155; )
s1$shoKdata() s2$shoKdata() "" displa data
,
Constru#tor ' Destru#tor
Constru#tor
• erupakan method ang pertama kali dikerFakan ketika suatuclass diciptakan$
– ertugas melakukan proses inisialisasi/ *aik internal dan maupunang ditulis oleh user$
– Niap class harus mempunai minimal 1 constructor/ *ila tidakdideklarasikan oleh user/ maka kompiler akan secara otomatismem*uat default constructor aitu constructor tanpa argument$
– 7ama harus sesuai dengan nama klas$ – Nidak *oleh mempunai return .alue atau .oid$
Contoh Constru#tor
Jlass class7ame
& pu*lic
class7ame() "" de9ault
class7ame(parameter list%"" non de9ault
class7ame(class7ame\ c)"" cop
,
D"STLYCTOL
• erupakan method ang selalu dieksekusi se*elum siklus hidupclass *erakhir (destroed)$
• er9ungsi untuk melakukan proses deinisialisasi/ clean up/dealokasi memor/ dll$
•
Niap class hana *oleh mempunai 1 destructor• 7ama destructor : bclass7ame()/ dan didefnisikan tanpa tpedan tanpa argument$
COTOH D"STLYCTOL
Jlass class7ame
& pu*lic :
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 60/87
;
class7ame() "" constructor
bclass7ame() "" constructor
,
COTOH PLOL8M
"" Program J00 - constructor \ destructor
#include iostream$h%
Jonst unsigned I73SI ' H
Jlass =rra
& protected :
dou*le 6 dataPtr unsigned si_e )
pu*lic :
"" contructor Kith de9ault argument
=rra( unsigned Si_e ' I73SI )
"" destructor
b=rra()
& delete ] ^ data Ptr ,
unsigned getSi_e() const
& return si_e ,
.oid store(dou*le !/ unsigned inde!)
&
data operator ] ^(unsigned inde!)
&
return dataPtr]inde!^
,
,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 61/87
;1
=rra::=rra(unsigned Si_e)
& si_e ' (Si_e I73SI) U I73SI : Si_e
dataPtr ' neK dou*le]si_e^ ,
`oid main()
& "" deklarasi arra dari o*Fect
arra arr( 1 ) dou*le !
9or( unsigned i ' =rr$getSi_e() i00)
& ! ' dou*le(i) ! ' ! 6 ! A + 6 ! 0 1
=rr$store(!/ i ) ,
cout B Mispla =rra element : nn B
9or( i ' i =rr$getSi_e() i00)
cout B =rr] B i B ^ ' B =rr]i^
B n B ,
8rgumen Nungsi ' Leturn O4Fe#t
G*Fect dapat dipakai se*agai argumen dari 9ungsi maupun return .alue dari
9ungsi$
"" Program J00 - =rgumen dan return o*Fect
#include iostream$h%
Jlass Mistance
& pri.ate :
in 9eet Ooat inches
pu*lic :
Mistance() "" constructor
& 9eet ' inches ' $ ,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 62/87
;2
Mistance( int 9t/ Ooat in )
& 9eet ' 9t inches ' in ,
.oid getdist()
& cout Bnnter Ceet : B
cin%%9eet
cout Bnnter Inch : B cin %% inches ,
.oid shoKdist()
& cout 9eet BZ-Dm inches XZD
"" o*Fect as argument and 9unction
retuen tpe
Mistance add3dist( Mistance ) ,
Mistance Mistance :: add3dist( Mistance d2 )
& Mistance temp
temp$inches ' inches 0 d2$inches
i9( temp$inches %' 12$ )
&
temp$inches -' 12$ temp$9eet ' 1
,
temp$9eet 0' 9eet 0 d2$9eet return temp
,
`oid main()
& Mistance dist1/ dist@
Mistance dist2( 11/;$2+ )
dist1$getdist()
dist@ ' dist1$add3dist( dist2 )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 63/87
;@
cout B ndist1 ' B dist1$shoKdist()
cout B ndist2 ' B dist2$shoKdist()
cout B ndist@ ' B dist@$shoKdist() ,
Module ZI
Stati# Data Mem4er
Mengan menggunakan static data mem*er/ maka hana ada satu nilai data
mem*er untuk seluruh klas$
"" Program J00 - static data mem*er
#include iostream$h%
Jlass 9oo
& pri.ete:
static int count
pu*lic:
9oo() & count00 ,
int getcount() & return count ,
,
"" inisialisasi static mem*er
Int 9oo :: count '
`oid main()
& 9oo 91/ 92/ 9@
cout B nJout is : B 91$getcout()
cout B nJout is : B 92$getcout()
cout B nJout is : B 9@$getcout() ,
IH"LIT8C"
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 64/87
;H
• Inheritance (peKarisan) adalah proses pem*entukan satu class(deri.ed class) dari class lainna (*ased class)/ proses ini mem*erikankeuntungan dalam daur ulang program (reusa*ilit)$
• J00 menFamin *ahKa semua class turunan akan diinisial dandilakukan proses clean-up dengan *enar melalui mekanime
constructor dan destructor.• ntuk melakukan re9erensi ke class itu sendiri dilakukan .aria*le this/
aitu suatu pointer ke class itu sendiri$• "e!ired class meKarisi semua kemampuan ang dimiliki oleh #ased
class aitu method dan data mem#er ang dideklarasikan denganakses u4li# atau rote#ted$
• 4u*ungan antar de.ired class dengan *ased class akan mem*entuksuatu hirarki class$
• Malam perancangan program *er*asiskan GGP/ perancangan hirarkiclass merupakan hal ang utama$
• Pada perancangan hirarki class ang mempunai si9at ( property ) ang
paling umum atau ang harus dimiliki oleh seluruh class turunanna$
Program C++ == klas dan klas turunan :
#include iostream$h%
Jlass Jounter
& protected :
unsigned int count
pu*lic :
Jounter() & count ' ,
unsigned int get3count() & return count ,
Jounter operator 00 ()
& count00
>eturn Jounter( count ), ,
Jlass JountMn : pu*lic Jounter
& pu*lic :
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 65/87
;+
Jounter operator A ()
& count --
return Jounter( count )
, ,
`oid main()
& JountMn a1
cout B nc1 ' B c1$get3count()
c1 -- c1 --
cout B nc1 ' B c1$get3count() ,
Konstruktor Klas Turunan
?ostruktor untuk klas turunan harus di*uat untuk melakukan initialisasi class
itu sendiri dan *ased class$
"" Program J00 - ?onstruktor ?las Nurunan
#include iostream$h%
Jlass Jounter
& protected :
unsigned int count
pu*lic :
counter() & count ' ,
counter(int c) & count ' c ,
in get3count() &return count,
counter operator 00 ()
&
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 66/87
;;
count00
return Jounter(count)
,
,
Jlass JountMn : pu*lic Jounter
& pu*lic:
JountMn() : Jounter() & ,
JountMn(int c) : Jonuter(c) & ,
Jounter operator A ()
& count--
return JountMn(count)
, ,
`oid main()
& JountMn c1
JountMn c2( 1 )
cout BD nc1 ' B c1$get3count()
cout BD nc2 ' B c2$get3count()
c100 c100 c100
cout Bnc1 ' B c1$get3count()
c200 c2 --
cout Bnc2 ' B c2$get3count()
countMn c@ ' 2 --
cout Bnc@ ' B c@$get3count()
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 67/87
;5
,
ModiXkasi Nungsi Klas Turunan
?las turunan (de.ired class) memiliki mem*er 9unctions ang sama dengan
klas utama (*ase class)
em*er 9unctions terse*ut dapat dimodifkasi disesuaikan ke*utuhan klasterse*ut
"" Program J00 - G.erload 9unctions ?las turunan
#include iostream$h%
#include process$h%
Jonst int =W ' 1
Jlass Stack
& protected :
int st]=W^
int top
pu*lic :
Stack() & top ' ,
.oid push( int .ar ) & st] 00top ^ ' .*ar ,
int pop() & return st]top -- ^ ,
,
Jlass Stack 2 : pu*lic Stack
& pu*lic :
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 68/87
;
.oid push( int .ar )
& i9(top =W )
Stack :: push(.ar)
else
& cout B nrror : stack is 9ullD
e!it(1) ,
int pop()
& i9(top % ) return Stack :: pop(
else
& coutBnrror : stack is emptD
e!it( 1 ) , ,
`oid main()
& Stack2 s1
s1$push(11) s1$push(22) s1$push(@@)
cout endI s1$pop()
cout endI s1$pop()
cout endI s1$pop()
cout endI s1$pop()
,
Hirarki Klas
Satu klas utama dapat memiliki *e*erapa klas turunan ang masing-masing
*er*eda$
"" Program J00 - 4irarki klas pegaKai
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 69/87
;<
#include iostream$h%
Jonst int L7 '
Jlass emploee
& pri.ate :
char name]L7^
unsigned long num*er
pu*lic :
.oid getdata()
& cout Bnnter Last 7ame : B
cin %% name
cout Bnnter 7um*er : B
cin %% num*er
,
.oid putdata()
& cout Bn 7ame : B name
cout Bn 7um*er : B num*er
, ,
Jlass manager : pu*lic emploee
& Pri.ate :
char title]L7^ dou*le dues
Pu*lic :
.oid getdata()
& emploee :: getdata()
cout Bnnter Nitle : B/ cin %% title
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 70/87
5
cout Bn Rol9 clu* dues : B dues
cin %% dues ,
.oid putdata()
& emploee :: putdata()
cout BnNitle : B dues ,
,
Jlass scientist : pu*lic emploee
& pri.ate :
int pu*s
pu*lic :
.oid getdata()
& emploee :: getadata()
cout Bnnter # pu*s : B/ cin %% pu*s ,
.oid putdata()
& emploee :: putdata()
cout B Bn# pu*lications : B pu*s ,
,
Jlass la*orer : pu*lic emploee
& ,
ain()
& manager m1/ m2
scients s1
la*orer [1
Jout Bnnter data 9or manager 1D
1$getdata()
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 71/87
51
Jout Bnnter data 9or manager 2D
2$getdata()
Jout Bnnter data 9or scientist 1D
s1$getdata()
Jout Bnnter data 9or la*orer 1D
[1$getdata()
cout BnMata on manager 1Z m1$putdata()
cout BnMata on manager 2Z m2$putdata()
cout BnMata on scientist 1Z s1$putdata()
cout BnMata on la*orer 1Z [1$putdata()
,
PeEarisan anda
Satu klas dapat diturunkan dari *e*erapa klas utama/ dise*ut peKarisan
ganda (multiple inheritance)$
"" Program J00 - peKarisan ganda
#include iostream$h%
Jonst int L7 '
Jlass student
& pri.ate :
char school]L7^
char degree]L7^
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 72/87
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 73/87
5@
Jlass manager : pri.ate emploee/ pri.ate student
& pri.ate :
char title]L7^ dou*le dues
pu*lic :
.oid getdata()
&
emploee :: getdata()
cout Bnnter Nitle: B cin %% title
cout Bnnter gol9 clu* dues : B
cin %% dues
student :: getdu() ,
.oid putdata ()
& emploee :: putdata ()
cout BnNitle : B title
cout BnRol9 clu* dues: B dues
student :: putedu() ,
,
Jlass scientist : pu*lic emploee/ pu*lic student
& pri.ate:
int pu*s
pu*lic:
.oid getdata()
& emploee::getdata()
cout Bnnter # pu*s: B cin %% pu*s
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 74/87
5H
student :: getedu() ,
.oid putdataD()
& emploee :: putdata()
cout Bn# pu*lications: B pu*s
student :: putedu() ,
,
Jlass la*orer : pu*lic emploee
& ,
`oid main()
& manager m1/ m2
scientist s1 la*orer [1
cout Bnnter data 9or manager 1D
m1$getdata()
cout Bnnter data 9or manager 2D
m2$getdata()
cout Bnnter data 9or scientist 1D
s1$getdata()
cout Bnnter data 9or la*orer 1D
[1$getdata()
Jout BnMata on manager 1D m1$putdata()
Jout BnMata on manager 2D m2$putdata()
Jout BnMata on scientist 1D s1$putdata()
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 75/87
5+
Jout BnMata on la*orer 1D [1$putdata()
,
POMOLPHISM
• Pol : B man B/ morph : B shape B• Pol 0 morph ' PGLYG>P4IS : B man shapes B• Polumorphism memungkinkan se*uah method ang mempunai nama
ang sama/ namun mempunai aksi ( tugas ) ang *er*eda$ ( analogidengan *unglon )$
• Mengan polmorphism dimungkinkan dirancang suatu 9ungsi angimplementasi detilna *elum ada$ ( isi 9ungsi *elum ditulis )$
"8L BIDI S 8T" BIDI :
• "arl@ 4inding :Pada proses pem*uatan program kon.ensional/ pada proses kompilasi
kompiler akan mengu*ah source program ke *entuk fle o*Fect ($o*F)/
kemudian linker akan mengga*ungkan ( lingking $ #inding ) 9ungsi ang
dipakai oleh program dengan li*rar$
Proses pengga*ungan deklarasi 9ungsi dengan isi 9ungsi (9unction
*od) terFadi pada saat kompilasi dise*ut early #inding.
Pada early #inding tugas dari suatu 9ungsi sudah dapat ditentukan pada saat
kompilasi$
• ate 4inding :Late *inding memungkinkan saat aksi (tugas) suatu 9ungsi ditentukan
pada saat program *erFalan (runtime)/ sesuai dengan ke*utuhan$ ntukmem*entuk late #indingn di*utuhkan !irtual method.
TLII8 POMOLPHISM
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 76/87
5;
Nri.ial polmorphism (Polimorfsme semu) merupakan *entik polmorphism
sederhana ang dapat diimplementasikan tana harus menggunakan
teknik encapsulation dan inheritance.
Implementasi dari Nri.ial Polmorphism pada J00 adalah function
o!erloading (pertemuan 1) dan operator o!erloading.
Jontoh program operator o.erloading :
"6 Program: counter$cpp
Purpose : G.erloading operator implementation
6"
#include conio$h%
#include limits$h%
Jlas JJounter&
int inde! "" pri.ate de9ault
Pu*lic :
JJounter(int i') &inde! ' i,
JJounter\ operator 00()
& i9 (inde!I7N3=W) inde!00
return 6this ,
JJounter\ operator --()
& i9 (inde!%) inde!--
return 6this ,
JJounter\ operator 0 (JJounter\ ctr)
& inde! 0' ctr$inde!
return 6this ,
JJounter\ operator 0 (JJounter\ ctr)
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 77/87
55
& inde! ' ctr$inde!
return 6this ,
9riend ostream\ operator (
ostream\ os/ JJounter\ c)
,
Gstream\ operator / (ostream\ os/ JJounter\ c)
os BJounter content : B
os dec c$inde! endl
return os ,
`oid main()
& JJounter c1/ c2/ c@
c@ ' 1 c1 ' 5
c2 ' c100 0 c@--
Jout c1 c2 c@
,
TLY" POMOLPHISM
• erupakan polimorfsme seFati ang pada implementasinamem*utuhkan teknik encapsulation dan inheritance.
• Mengan polmorphism dimungkinkan di*uat suatu 9ungsi ang generik/ang mampu menangani suatu o*Fect *aru ang dimasukkan kedalamsistem melalui teknik inheritance$
• Implementasi dalam *entuk !irtual method (dise*ut Fuga function
o!erriding)$
irtual Method
• `irtual ethod mempunai deklarasi (nama/ return tpe/ argumen)9ungsi ang sama/ namun tidak *erada pada lingkunganclass angsama dan aKali dengan keKord !irtual.
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 78/87
5
• Suatu class ang mempunai .irtual method/ maka compiler akanmem*uat suatu `N (`irtual ethod Na*le) ang spesifk untuk classterse*ut$
`irtual ethod terdiri atas 2 Fenis :
•
Pure irtual Method`irtual ethod hana mendeklarasikan 9unction prototipes saFa/ dan
tidak mempunai function #ody (tugas dari 9ungsi *elum didefnisikan)$
Suatu class ang mempunai pure .irtual method dise*ut a#stract
class. Instance (o*Fect) tidak dapat di*uat dari suatu a#stract class
karena masih ada 9ungsi ang tidak mempunai function #ody.
ciri dari pure .irtual method adalah pada deklarasi ditulis !ungsi- / 1
Contoh deklarasi :
class a*stract &
.irtual int compare(.oid6item1/ .oid6item2) '
,
• S$uasi irtual Method=dalah suatu .irtual method ang menediakan 9ungsi minimal ang
harus dikerFakan oleh suatu method$
Contoh Pol@morhism :
""Program : Polmorphism implementation
#include conio$h%
"" shape is a*stract class
Jlass JShape &
Protected :
.irtual .oid draK() ' "" pure .irtualPu*lic :
.oid draK!( int!/ int )
&
goto!( !/ )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 79/87
5<
draK()
,
,
Jlass Jcircle : pu*lic JShape &
Protected :
.oid draK() & cout BJircle :: draK() B ,
,
Jlass Jsuare : pu*lic Jshape &
Protected :
.oid draK() & cout B Suare :: draK() B , ,
Jlass Jtriangle : pu*lic JShape &
Protected :
.oid draK() & cout BNriangle :: draK() B ,
,
Jlass Jline : pu*lic JShape &
Protected :
.oid draK() & cout BLine :: draK() B , ,
`oid main ()
& "" JShape s "" errorV/ *ecause JShape is a*stract class
JShape 6list]H^ ' &neK JJircle/ neK JSuare/
neK JNriangle/ neK JLine,
"" call the same 9unction 9or draK all kind o9 o*Fect
9or ( int i ' [ H i00 )
list ]i^ -% draK!( /i )
,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 80/87
Nile dan Stream
?egiatan mem*aca dan menulis data ke dalam fle dilakukan dengan
menggunakan stream pada J00$
Stream merupakan nama umum untuk arus data ang meKakili klas
tertentu/ ang terdiri atas mem*er 9unctions dan defnisi dari klas terse*ut$
4irarki klas stream agak kompleks/ hirarki ini *erhu*ungan dengan
input"output fle program$
Hirarki Klas 8rus Data
?las arus data terdiri atas *e*erapa klas antara lainstream dan ostream+
Gperator ** merupakan anggota istream/ operator )) merupakan anggota
ostream$ ?edua klas diatas adalah turunan dari ios kas+
G*Fect #out adalah peKalian (instance) dari ostream5it'assign klas ang
diturunkan dari istream$
String I%O
Penulisan dan pem*acaan karakter dari fle dalam disk$
Proses ini menggunakan header fle NSTL"8M.H, dimana fle terse*ut
menangani arus data input dan output$
Jriting Strings
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 81/87
1
"" Program J00 -- store strings
#include 9stream$h%
ain()
&
o9stream outfle( B NSN$NWN B )
outfle B SNI? =7I S=L4 n B
outfle B 8l$ >aa ?ita/ B
outfle B ekasin B
outfle B ekasi H1@;1/ Indonesian B ,
Leading Strings
"" Program J00 -- retrie.e strings
#include stdio$h%
#include conio$h%
#include 9stream$h%
Int main( int argc/ char 6 arg. ] ^ )
& const in =W3J4=> '
char string]=W3J4=>01^
i9 ( argcV ' 2 ) &
pront9(Bsage: Ts flename$t!tnD/ arg.] )̂
return A 1
,
i9stream inCile( arg.]1^ )
int i '
Khile ( inCile ) &
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 82/87
2
inCile$getline( string/ =W3J4=> )
cout string B n B
i9 ( i00 '' 2 )
&
cout BnPress an ke to continue $$$ B
getch()
i ' , ,
return
Karakter I%O
Penimpanan dan pengam*ilan karakter dilakukan dengan 9ungsi put() dan
get()$
""Program J00 -- fle output Khit character
#include 9stream$h%
#include string$h%
`oid main()
& char str] ^ ' BG*Fect Griented ProgrammingD
o9stream outfle( B NSN$NWN B)
9or( int F ' F strlen(str) F00 )
outfle$put( str]F^)
,
""deta*$cpp A >eplace ta*s Kith spaces
#include iostream$h%
`oid main()
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 83/87
@
& const int ta*si_e '
char c
Khile( cin$get(c) ) &
i9 ( c '' X t X )
9or ( int i ' i ta*si_e i00 )
cout B B
else
cout$put(c) , ,
O4Fe#t I%O
G*Fect dapat disimpan dan di*aca dari disk$
"" Program J00 -- sa.es person o*Fect to disk
#include 9stream$h%
Jlass person
& protected :
char nama]H^
int age
pu*lic :
.oid getdata( .oid )
&
cout Bnter 7ame: B cin %% name
cout Bnter =ge: B cin %% age
,
,
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 84/87
H
`oid main()
person pers
pers$getdata()
o9stream outfle(B P>SG7$M=N B)
outfle$Krite((char6) \ pers/ si_eo9(pres))
,
"" Program J00 -- reads person o*Fect 9rom disk
#include 9stream$h%
Jlass person
& protected :
char name]H^
int age
pu*lic :
.oid shoKdata( .oid )
&cout Bn 7ame : B name
cout Bn =ge : B age ,
,
`oid main()
& person pers
i9stream infle(BP>SG7$M=ND)
infle$read((char6)\pers/ si_eo9(pers))
pers$shoKdata() ,
Nile Pointer
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 85/87
+
Setiap o*Fek fle *erhu*ungan dengan dua *ilang get pointer dan put pointer$
Pointer digunakan untuk mem*aca dan menimpan data dari aKal atau fle$
""Program J00 -- seeks particular person in fle
#include 9stream$h%
Jlass person
& protected :
char name]H^
int age
pu*lic:
.oid shoKdata( .oid )
& cout Bn 7ame : B name
cout Bn =ge : B age ,
,:
ain()
& person pers
i9stream infle
infle$open( BP>SG7$M=N B)
infle$seekg( / ios : end )
int endposition ' infle$ellg()
int n ' endposition " si_eo9 (person)
cout B Nhere areD n Bperson in fle B
cout Bnnter person num*er : B
cin %% n
int position ' ( n-1) 6 si_eo9( person ) B
infle$seekg( position )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 86/87
;
infle$read(( char6 )\pers/ si_eo9( pers ))
pers$shoKdata() ,
Ledire#tion
em*erikan kemampuan untuk mengalihkan standard I"G de.ices (monitor
dan ke*oard) ke fle$
"" Program J00 -- demonstrates rediction
#include iostream$h%
#include iomanip$h%
ain()
& char ch
Khile( Vcin$eo9()$)
& cin %% resetiosOags(ios::skipKs)%% ch
cout ch ,
,
Printer Outut
Pengiriman data ke printer dapat dilaksanakan sesuai dengan pengiriman
data ke disk
"" Program J00 -- imitates print command
#include 9stream$h%
#include process$h%
ain( int argc/ char 6 arg.] ^ )
& i9(argc V ' 2 )
7/21/2019 algoritmaC__
http://slidepdf.com/reader/full/algoritmac 87/87
5
& cerr Bn Cormat: oprint fle nameD
e!it(-1) ,
char ch
i9stream infle
infle$open( arg.]1^ )
i9( linfle )
& cerr BnJanZt open B arg.]1^
e!it(-1) ,
G9stream outfle
Gutfle$open(B P>7 B)
hile( infle$get(ch) V ' )
outfle$put(ch)
,