algoritmaC__

87
1 Modul Praktek Bahasa Pemrograman C++ Dosen : Hadi Kusmara, M.kom STMIK Bani Saleh

description

al C

Transcript of algoritmaC__

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

Page 2: algoritmaC__

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

Page 3: algoritmaC__

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! 

Page 4: algoritmaC__

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

Page 5: algoritmaC__

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

Page 6: algoritmaC__

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

Page 7: algoritmaC__

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

Page 8: algoritmaC__

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

Page 9: algoritmaC__

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

Page 10: algoritmaC__

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

Page 11: algoritmaC__

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

Page 12: algoritmaC__

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

Page 13: algoritmaC__

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! 

Page 14: algoritmaC__

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

Page 15: algoritmaC__

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$

Page 16: algoritmaC__

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

Page 17: algoritmaC__

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

,

Page 18: algoritmaC__

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

Page 19: algoritmaC__

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)

Page 20: algoritmaC__

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

,-------------------------------------------------------

-----

Page 21: algoritmaC__

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%

Page 22: algoritmaC__

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

Page 23: algoritmaC__

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*

Page 24: algoritmaC__

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&

Page 25: algoritmaC__

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

Page 26: algoritmaC__

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

Page 27: algoritmaC__

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$

Page 28: algoritmaC__

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%

Page 29: algoritmaC__

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$

Page 30: algoritmaC__

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

Page 31: algoritmaC__

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

Page 32: algoritmaC__

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(),

Page 33: algoritmaC__

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 )

Page 34: algoritmaC__

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 )

Page 35: algoritmaC__

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 )

Page 36: algoritmaC__

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%

Page 37: algoritmaC__

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 )

Page 38: algoritmaC__

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

Page 39: algoritmaC__

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

Page 40: algoritmaC__

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@

Page 41: algoritmaC__

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 ,

Page 42: algoritmaC__

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 ,

Page 43: algoritmaC__

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

Page 44: algoritmaC__

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 :

Page 45: algoritmaC__

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$

Page 46: algoritmaC__

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 )

Page 47: algoritmaC__

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

Page 48: algoritmaC__

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

Page 49: algoritmaC__

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

Page 50: algoritmaC__

7/21/2019 algoritmaC__

http://slidepdf.com/reader/full/algoritmac 50/87

+

cout BYour Keght in ?ilograms isD

  l*stokg(l*s) ,

Page 51: algoritmaC__

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

Page 52: algoritmaC__

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 ,

Page 53: algoritmaC__

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 &

Page 54: algoritmaC__

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)

Page 55: algoritmaC__

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

Page 56: algoritmaC__

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

Page 57: algoritmaC__

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%

Page 58: algoritmaC__

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

Page 59: algoritmaC__

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 :

Page 60: algoritmaC__

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

,

,

Page 61: algoritmaC__

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 ' $ ,

Page 62: algoritmaC__

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 )

Page 63: algoritmaC__

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"

Page 64: algoritmaC__

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 :

Page 65: algoritmaC__

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

&

Page 66: algoritmaC__

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

Page 67: algoritmaC__

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 :

Page 68: algoritmaC__

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

Page 69: algoritmaC__

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

Page 70: algoritmaC__

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

Page 71: algoritmaC__

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^

Page 72: algoritmaC__

7/21/2019 algoritmaC__

http://slidepdf.com/reader/full/algoritmac 72/87

Page 73: algoritmaC__

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

Page 74: algoritmaC__

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

Page 75: algoritmaC__

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

Page 76: algoritmaC__

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)

Page 77: algoritmaC__

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.

Page 78: algoritmaC__

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!( !/ )

Page 79: algoritmaC__

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 )

,

Page 80: algoritmaC__

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

Page 81: algoritmaC__

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

Page 82: algoritmaC__

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

Page 83: algoritmaC__

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

,

,

Page 84: algoritmaC__

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

Page 85: algoritmaC__

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 )

Page 86: algoritmaC__

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 )

Page 87: algoritmaC__

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)

,