• Tidak ada hasil yang ditemukan

MODUL PRAKTIKUM ALGORITMA and STRUKTUR D

N/A
N/A
Protected

Academic year: 2018

Membagikan "MODUL PRAKTIKUM ALGORITMA and STRUKTUR D"

Copied!
61
0
0

Teks penuh

(1)

MODUL PRAKTIKUM

ALGORITMA & STRUKTUR DATA I

STMIK STIKOM BALI

(2)

BAB I

P EN GEN ALAN C/ C+ +

1.1 Algo ritm a & Pe m ro gra m a n

Algoritm a adalah urutan aksi-aksi yan g din yatakan den gan jelas dan tidak ran cu un tuk m em ecahkan suatu m asalah dalam ren tan g waktu terten tu. Setiap aksi harus dapat dikerjakan dan m em pun yai efek terten tu. Algoritm a m erupakan logika, m etode dan tahapan (urutan ) sistem atis yan g digun akan un tuk m em ecahkan suatu perm asalahan . Algoritm a dapat dituliskan den gan ban yak cara, m ulai dari m en ggun akan bahasa alam i yan g digun akan sehari-hari, sim bol grafik bagan alir (flowchart), sam pai m en ggun akan bahasa pem rogram an seperti bahasa C atau C++.

Program adalah kom pulan in struksi kom puter, sedan gkan m etode dan tahapan sistem atis dalam program adalah algoritm a. Program in i ditulis den gan m en ggun akan bahasa pem rogram an . J adi bisa kita sebut bahwa program adalah suatu im plem en tasi dari bahasa pem rogram an .

Beberapa pakar m em beri form ula bahwa:

program = struktur data + algoritm a

Bagaim an apun juga struktur data dan algoritm a berhubun gan san gat erat pada sebuah program . Algoritm a yan g baik tan pa pem ilihan struktur data yan g tepat akan m em buat program m en jadi kuran g baik, sem ikian juga sebalikn ya. Struktur data disin i bisa berupa list, tree, graph, dsb.

1.2 S e ja ra h C+ +

C++ adalah pen gem ban gan dari bahasa C, yan g m erupakan pen gem ban gan dari dua bahasa bahasa pem ogram an gen erasi sebelum n ya, yaitu BCPL dan B. BCPL dibuat pada tahun 1967 oleh Martin Richards sebagai bahasa un tuk m en ulis sistem operasi dan com piler. Ken Thom pson m em buat ban yak fitur pada bahasa B yan g dibuatn ya dan m en ggun akan B un tuk m em buat versi awal dari sistem operasi UNIX di Bell Loboratories pada tahun 1970 pada kom puter DEC PDP-7.

(3)

tahun 1972. C m en ggun akan ban yak kon sep pen tin g dari BCPL dan B sekaligus ada tam bahan jen is-jen is data dan fitur lain n ya. C kem udian diken al sebagai bahasa pen gem ban g sistem operasi UNIX. Pada m asa sekaran g, keban yakan sistem operasi ditulis den gan m en ggun akan C dan / atau C++. C tersedia un tuk ham pir sem ua kom puter.

Pada akhir dekade 1970 an , C telah berkem ban g dengan m en jadi sesuatu yan g sekaran g disebut “C tradision al”, “C klasik”, atau “C Kern ighan dan Ritchie”.

C++ adalah pen am bahan dari C, dikem bangkan oleh Bjarn e Stroustup pada awal dekade 198 0 an di Bell Laboratories. C++ m em berikan tam bahan fitur yan g m en in gkatkan kekuatan bahasa C, dan yan g lebih pen tin g lagi, kem am puan un tuk pem ogram an berbasis object (Object Orien ted Program m in g).

1.2 Ke le bih a n d a n Ke ku ra n ga n ™ Ke le b ih a n B a h a s a C/ C+ +

• Bahasa C++ tersedia ham pir di sem ua jen is com puter.

• Kode bahasa C/ C++ sifatn ya adalah portable dan fleksibel un tuk sem ua jen is kom puter.

• Proses executable program bahasa C/ C++ lebih cepat

• Dukun gan pustaka yan g ban yak.

• C adalah bahasa yan g terstruktur.

• C++ Sudah m en dukun g OOP (Object Orien ted Program m in g).

™ Ke ku ra n ga n Ba h a s a C/ C+ +

• Ban yakn ya Operator serta fleksibilitas pen ulisan program kadan g-kadan g m em bin gun gkan pem akai.

• Bagi pem ula pada um um n ya akan kesulitan m en ggun akan poin ter dan pen erapan kon sep OOP.

1.3 Ed ito r B a h a s a C/ C+ +

(4)

Note :

S e lu ru h s o u rce co d e p ro gra m ya n g a d a d i tu to ria l in i 10 0 % d ibu a t d a n

te la h d iu ji co b a m e n ggu n a ka n B o rla n d C+ + 5 .0 2

User In terface Borland C++ 5.0 2

1.4 La n gka h -la n gka h m e n u lis ka n p ro gra m d a la m B o rla n d C+ +

1. Bu ka la h Ed ito r Bo rla n d C+ + m e la lu i S TART m e n u . Tam pilan awal

Borlan d C++ tam pak seperti gam bar di atas.

2 . S o u rce Co d e p ro gra m C/ C+ + d a p a t d itu lis d i te xt e d ito r Bo rla n d

C+ +

File Æ N e w Æ Te xt Ed it

3 . U n tu k m e n yim p a n p ro je ct, P ilih m e n u S a ve As a ta u S a ve ( ctrl K +

ctrl S )

4 . Ko m p ile file d e n ga n ( ALT + F9 a ta u p ilih s u bm e n u Co m p ile )

(5)

5 . J a la n ka n Pro gra m d e n ga n ( CTRL+ F9 a ta u p ilih s u bm e n u Ru n )

Setelah kita kom pile file yan g berisi source code, m aka sebagai hasil kom pilasi tersebut kita akan m en dapatkan suatu file yan g bisa dijalan kan (executable file). Men jalan kan program yang kita buat berarti m en jalan kan file hasil proses kom pilasi tersebut.

Note :

S e b e lu m m u la i m e la ku ka n co d in g p ro gra m , s e b a ikn ya d iin ga t b a h w a

b a h a s a C/ C+ + b e rs ifa t “c a s e s e n s it iv e”, ya n g a rtin ya h u ru f b e s a r d a n

(6)

BAB II

S tru ktu r Ba h a s a C/ C+ +

Program Bahasa C/ C++ tidak m en gen al aturan penulisan di kolom / baris terten tu, jadi bisa dim ulai dari kolom / baris m an apun . Nam un dem ikian , un tuk m em perm udah pem bacaan program dan un tuk keperluan dokum en tasi, sebaikn ya pen ulisan program di bahasa C/ C++ diatur sedem ikian rupa sehin gga m udah dan en ak dibaca.

Berikut con toh pen ulisan Program Bahasa C/ C++

#include <header>

void main()

{

deklarasi variabel;

deklarasi konstanta;

perintah – perintah;

//komentar

}

Cara terbaik un tuk balajar bahasa pem rogram an adalah den gan lan gsun g m em praktikan n ya. Cobalah con toh program berikut :

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr();

cout<<"Hello World"<<endl;

cout<<"Selamat Belajar C/C++ ";

cout<<"enter my World";

getch();

(7)

Pe n je la s a n :

1. in clu d e

Adalah salah satu Pen garah Preprosesor (preprocessor directiv e) yan g tersedia pada C++. Preprocessor selalu dijalan kan terlebih dahulu pada saat proses kom pilasi terjadi. Ben tuk um um n ya :

# include <nama_file>

tid a k d ia kh iri den gan tan da sem icolon (;), karen a ben tuk tersebut bukan lah

suatu ben tuk pern yataan , tetapi m erupakan prepocessor directive. Baris tersebut m en gin strusikan kepada kom piler un tuk m en yisipkan file lain dalam hal in i file yan g berakhiran .h (file header) yaitu file yan g berisi C++ standard library . con tohn ya:

- #include <iostream.h> : diperlukan pada program yan g m elibatkan objek

co u t dan cin

- #include <conio.h> : diperlukan bila m elibatkan clrscr(), yaitu

perin tah un tuk m em bersihkan layar dan fun gsi getch() un tuk m en erim a sem baran g in put keyboard dari user.

- #include <iomanip.h> : diperlukan bila m elibatkan setw() yang

berm an faat un tuk m en gatur lebar dari suatu tam pilan data.

- #include <math.h> : diperlukan pada program yan g m en ggun kan operasi

sqrt() yan g berm an faat un tuk operasi m atem atika kuadrat.

2 .Fu n gs i m a in ( )

Program C++ terdiri dari satu atau lebih fun gsi, dan di an tara salah satun ya harus ada fun gsi m a in dan han ya boleh ada satu m a in pada tiap program C++. Setiap program C++ akan dan pasti akan m em ulai eksekusi program n ya pada fun gsi m a in in i, m eskipun m ain bukan fun gsi yan g pertam a ditulis di program .

Melihat ben tuk seperti itu dapat kita am bil kesim pulan bahwa batan g tubuh program utam a berada didalam fun gsi m a in ( ) . Berarti dalam setiap pem buatan program utam a, m aka dapat dipastikan seoran g pem rogram m en ggun akan m in im al sebuah fun gsi.

(8)

in i digun akan un tuk m en un jukkan cakupan (scope) dari sebuah fun gsi, dim an a un tuk m en un jukkan fun gsi in i dim ulai dan berakhir.

3 . Ko m e n ta r

Kom en tar tidak pernah dicom pile oleh com piler. Dalam C++ terdapat 2 jen is kom en tar, yaitu:

J en is 1 : / * Kom en tar an da diletakkan di dalam in i Bisa m en gapit lebih dari satu baris */

J en is 2 : / / Kom en tar an da diletakkan disin i ( han ya bisa sebaris )

Program m er serin g sekali m em asukkan kom en tar di dalam code agar program lebih m udah dibaca. Kom en tar juga m em ban tu oran g lain un tuk m em baca dan m en gerti isi dari code. Kom en tar tidak m en yebabkan kom puter m elakukan suatu in struksi ketika program dijalan kan .

4 .Ta n d a S e m ico lo n

Tan da sem icolon “ ; ” digun akan un tuk m en gakhiri sebuah pern yataan . Setiap pern yataan harus diakhiri den gan sebuah tan da sem icolon .

5 . Me n ge n a l In p u t/ Ou tp u t

Pern yataan cout (dibaca C out) m erupakan sebuah objek di dalam C++, yan g digun akan un tuk m en garahkan data ke dalam stan dar output (cetak pada layar). Sedan gkan un tuk m en gin putkan data, dapat digun akan cin (dibaca C in ).

Berikutn ya adalah operator << Operator in i digun akan sebagai pen ghubun g an tara stream den gan kalim at. Operator in i disesuaikan den gan fun gsion al dari cout. Un tuk sem en tara bayan gkan saja operator << sebagai arah dari aliran data. J adi karena kita in gin m en cetak kalim at ke layar, dan yan g m en ghubun gkan program kita den gan layar den gan cout, otom atis kita harus m en girim kan kalim at ke cout. Maka operator << digun akan , yan g berarti kalim at dialirkan ke arah cout, dan cout akan m en cetakn ya ke layar.

Sin taks yan g digun akan :

co u t < < d a fta r_ ke lu a ra n

(9)

e n d l m erupakan suatu fun gsi m an ipulator yan g digun akan un tuk m en yisipkan

karakter NewLin e atau m en gatur pin dah baris. Fun gsi in i san gat bergun a un tuk piran ti keluaran berupa file di disk. File header yan g harus disertakan adalah file header io s tre a m .h

Fun gsi ge tch ( ) (get character an d echo) dipakai un tuk m em baca sebuah karakter den gan sifat karakter yan g dim asukkan tidak perlu diakhiri den gan m en ekan tom bol ENTER, dan karakter yan g dim asukan tidak akan ditam pilkan di layar. File header yan g harus disertakan adalah co n io .h

La tih a n S o a l 1.

#include"iostream.h" //prepocessor #include<conio.h>

void main() //ada 3; void main(), main() & int main() {

cout<<"Hello world\n"; //cout untuk menampilkan ke layar //cout<<"Hello world"<<endl;

getch(); }

La tih a n S o a l 2 .

// programku

#include <iostream.h> int main ()

{

cout << "Selamat Belajar C++"; return 0;

(10)

BAB III

Id e n tifie r, Tip e D a ta , Va ria b e l, Ko n s ta n ta , Op e ra to r

3 .1 Id e n tifie r

Aturan pem berian n am a suatu pen gen al/ iden tifier :

• n am a pen gen al harus dim ulai den gan karakter berupa huruf (a…z, A…Z) atau karakter garis bawah ( _ )

• karakter berikutn ya dapat berupa huruf, an gka (0 ...9) atau karakter garis bawah ( _ )

• tidak boleh sam a den ga reserverd word (n am a – n am a yan g sudah digun akan dalam bahasa C++) seperti char, in t, float, double, void, dll.

• pan jan g karakter m aksim um adalah 32 karakter

• bersifat case sen sitive (huruf besar dan huruf kecil dibedakan )

3 .2 Tip e D a ta

(11)

3 .3 Ko n s ta n ta

Kon stan ta m erupakan suatu n ilai yan g tidak dapat diubah selam a proses program berlan gsun g. Kon stan ta n ilainya selalu tetap. Kon stan ta harus didefinisikan terlebih dahulu di awal program . Kon stan ta dapat bern ilai integer, pecahan , karakter dan strin g.

Pen deklarasian kon stan ta dapat dilakukan den gan 2 cara : 1. m en ggun akan (# d e fin e )

deklarasi kon stan ta den gan cara in i, lebih gam pan g dilakukan karen a akan m en yertakan # d e fin e sebagai preprocessor directive. Dan sin takn ya diletakkan bersam a – sam a den gan pern yataan # in clude (di atas m a in ( ) ).

Form at pen ulisan n ya adalah :

#define pengenal nilai

Con toh pen ggun aan :

#define phi 3.14159265

pen deklarasian den gan #define tan pa diperlukan adan ya tan da = un tuk

(12)

2. m en ggun akan (co n s t)

Sedan gkan den gan kata kun ci con st, pen deklarasian kon stan ta m irip den gan deklarasi variable yan g ditam bah kata depan con st

Con toh :

const int lebar = 100;

const char tab = ‘\t’;

3 .4 Va ria b e l

Variabel adalah suatu pen gen al (iden tifier) yan g digun akan un tuk m ewakili suatu n ilai terten tu di dalam proses program . Berbeda den gan kon stan ta yan g n ilain ya selalu tetap, n ilai dari suatu variable bisa diubah-ubah sesuai kebutuhan . Ben tuk um um pen deklarasian suatu variable adalah :

tipe_data nama_variabel;

Con toh :

int x; // Deklarasi x bertipe integer

char y, huruf, nim[10]; // Deklarasi variable bertipe char float nilai1; // Deklarasi variable bertipe float

double beta; // Deklarasi variable bertipe double int array[5][4]; // Deklarasi array bertipe integer char *p; // Deklarasi pointer p bertipe char

3 .5 Op e ra to r

1. Op e ra to r As s ign (=)

Operator (=), akan m em berikan n ilai ke dalam suatu variable.

(13)

Dalam C++, operasi aritm atika dapat disederhan akan pen ulisan n ya den gan form at pen ulisan operator m ajem uk.

Misaln ya : variable. Misaln ya :

a++; a+=1; a=a+1;

un tuk ketiga pern yataan tersebut, m em iliki arti yan g sam a yaitu m en aikkan 1 n ilai. Karakteristik dari operator in i adalah dapat dipakai di awal (++a) atau di akhir (--a) variable. Un tuk pen ggun aan biasa, m un gkin tidak akan ditem ui perbedaan hasil dari cara pen ulisan n ya. Nam un un tuk beberapa operasi n an tin ya harus diperhatikan cara peletakan operator in i, karen a akan berpen garuh terhadap hasil.

Con toh 1 : Con toh 2:

B=3; B=3;

A=++B; A=B++;

(14)

Dari con toh1, n ilai B din aikkan sebelum dikopi ke variable A. Sedan gkan pada con toh2, n ilai B dikopi terlebih dahulu ke variable A baru kem udian din aikkan .

Beda dari operator --/ ++ di sebelah kiri variabel dengan --/ ++ di sebelah kan an variabel bisa dilihat dari con toh berikut in i:

int i = 10;

cout << --i << endl; cout << i << endl;

hasil output: 9

9

int i = 10;

cout << i-- << endl; cout << i << endl;

hasil output: 10

9

J adi bisa diam bil kesim pulan , den gan operator --/ ++ (--i) di sebelah kiri variabel m aka operator tersebut akan m em pun yai prioritas lebih tin ggi un tuk dikerjakan terlebih dahulu. J adi i akan dikuran gi terlebih baru dicetak oleh cout. Sebalikn ya den gan operator --/ ++ (i--) di sebelah kan an variabel m aka operator tersebut akan m em pun yai prioritas lebih ren dah un tuk dikerjakan . Maka i akan dicetak terlebih dahulu, baru dikuran gi.

4. Op e ra to r Re la s io n a l (==, !=, >, <, >=, <=)

(15)

Con toh : float jari_jari, keliling, luas; jari_jari = 7.2;

luas = phi * jari_jari * jari_jari; keliling = 2 * phi * jari_jari;

cout<<"Luas lingkaran adalah " << luas << " satuan luas "<<endl; cout<<"Keliling lingkaran adalah " << keliling << " satuan panjang"; getch();

float data1,data2,tambah,kurang,kali,bagi; cout<<"Operasi aritmatika Dasar"<<endl;

cout<<"Masukkan data1: "; cin>>data1;

(16)

tambah=data1+data2; kurang=data1-data2; kali=data1*data2; bagi=data1/data2; cout<<endl;

cout<<data1<<" + " <<data2<<" = "<<tambah<<endl; cout<<data1<<" - " <<data2<<" = "<<kurang<<endl; cout<<data1<<" * " <<data2<<" = "<<kali<<endl; cout<<data1<<" : " <<data2<<" = "<<bagi;

//printf("%6.2f",bagi); getch();

}

La tih a n S o a l 3 .

Buatlah sebuah program un tuk m en ghitun g jum lah dan rata-rata dari 5 buah bilan gan bulat positip.

La tih a n S o a l 4 .

(17)

BAB IV

Fu n ctio n d a n Pro ce d u re

Procedure dan Fun ction disebut juga subroutin e, m erupakan blok statem en t yan g dapat dipan ggil dari lokasi yan g berbeda di dalam program . Yan g m em bedakan an tara fun ction dan procedure yaitu: suatu fun ction jika dijalan kan / dipan ggil akan m en gem balikan suatu n ilai.

Dalam PASCAL diken al istilah procedure dan fun ction , dalam Basic diken al sub dan fun ction , sedan gkan dalam C++, J ava, PH P, dan keturun an C lain n ya diken al han ya istilah fun ction . Apabila kita in gin m em buat subroutin e yan g tidak m en gem balikan n ilai, kita dapat m em beri n ilai kem balian berupa vo id .

Fun gsi (Fun ction ) m erupakan blok dari kode yan g diran can g un tuk m elaksan akan tugas khusus. Pada in tin ya fun gsi bergun a un tuk :

• Men guran gi pen gulan gan pen ulisan program yan g berulan gan atau sam a.

• Dapat m elakukan pen dekatan top-down dan divide-an d-con quer: program besar dapat dipisah m en jadi program -program kecil.

• Program m en jadi terstruktur, sehin gga m udah dipaham i dan dikem ban gkan .

• Kem udahan dalam m en cari kesalahan -kesalahan karen a alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu m odul terten tu saja.

• Modifikasi program dapat dilakukan pada suatu m odul terten tu saja tan pa m en ggan ggu program keseluruhan .

• Mem perm udah dokum en tasi.

(18)

Ka te go ri Fu n ctio n d a la m C/ C+ +

1. S ta n d a rd Libra ry Fu n ctio n

Yaitu fun gsi-fun gsi yan g telah disediakan oleh C/ C++ dalam file-file header atau libraryn ya. Misaln ya: clrscr(), prin tf(), getch()

Un tuk fun ction ini kita harus m en deklarasikan terlebih dahulu library yan g akan digun akan , yaitu den gan m en ggun akan preprosesor direktif.

2 . Pro gra m m e r-D e fin e d Fu n c tio n

Adalah fun ction yan g dibuat oleh program m er sen diri. Fun ction ini m em iliki n am a terten tu yan g un ik dalam program , letakn ya terpisah dari program utam a, dan bisa dijadikan satu ke dalam suatu library buatan program m er itu sen diri yan g kem udian juga di-in clude-kan un tuk pen ggun aan ya.

S tru ktu r Fu n ctio n

1. Fu n ctio n Pro to typ e

Prototipe fun gsi digun akan un tuk m en jelaskan kepada kom piler m en gen ai :

• Tipe keluaran fun gsi.

• J um lah param eter.

• Tipe dari m asin g-m asin g param eter.

(19)

Con toh lain :

long kuadrat (long l) ;

Pada contoh pertama, fungsi kuadrat ( ) mempunyai argumen/parameter bertipe long dan nilai balik bertipe long.

void garis ( );

Pada contoh kedua, fungsi garis ( ) tidakmemiliki argumen/parameter dan nilai baliknya tidak ada (void).

double maks (double x, double y)

Pada contoh ketiga, fungsi maks( ) mempunyai dua buah argumen/parameter, dengan masing-masing argumen bertipe double.

2 . Fu n ctio n D e fin itio n

tipe_data nama_fumgsi(arguman 1, argument 2,argument ...) {

Variabel_lokal; Statement_1; Statement_2; ...

return (variabel); }

3 . P a ra m e te r Fu n gs i

Terdapat dua m acam para param eter fun gsi, yaitu :

(20)

2. Pa ra m e te r Aktu a l adalah variabel yan g dipakai dalam pem an ggilan fun gsi.

Ben tuk pen ulisan Param eter Form al dan Param eter Aktual.

4 . Co n to h Pe n e ra p a n

Con toh 1.

/*Contoh penerapan function dg prototype tapi tidak memberikan nilai balik (void) */

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

void gaya(double m, double a); //prototype function

void main() //main function {

double m,a;

cout<<"Massa : "; cin>>m; cout<<"percepatan : "; cin>>a; cout<<"F : ";

gaya(m,a); //parameter aktual getch();

}

void gaya(double m, double a) //function definition {

double hasil; hasil=m*a; cout<<hasil; }

Selain m en ggun akan prototype, pen erapan fun gsi juga dim un gkin kan tan pa pen ggun aan protoype. Tetapi defin isi fun gsi harus diletakkan diatas fun gsi m ain ().

Con toh 2.

(21)

double gaya(double m, double a) //tanpa prototype {

double hasil; hasil=m*a;

return (hasil); //memberikan nilai balik bertipe data double }

void main() {

double m,a,f;

cout<<"Massa : "; cin>>m; cout<<"percepatan : "; cin>>a; f=gaya(m,a);

cout<<"F : "<<f; getch(); n ilai dari param eter aktual akan ditulis keparam eter form al. Den gan cara in i n ilai param eter aktual tidak bisa berubah, walaupun n ilai param eter form al berubah.

b. Pas by Referen ce

Pem an ggilan den gan referen ce m erupakan upaya un tuk m elewatkan alam at dari suatu variabel kedalam fun gsi. Cara in i dapat dipakai un tuk m en gubah isi suatu variabel diluar fun gsi den gan m elaksan akan pen gubahan dilakukan didalam fun gsi.

Con toh 3.

/* --- */ /* Penggunaan Pass By Reference */ /* Program Pertukaran Nilai */

cout<<"Nilai Sebelum Pemanggilan Fungsi"<<endl; cout<<"a = "<<a<<" b = "<<b<<endl;

(22)

cout<<"Nilai Setelah Pemanggilan Fungsi"<<endl; cout<<"a = "<<a<<" b = "<<b<<endl;

getch();

cout<<"Nilai di Akhir Fungsi Tukar()"<<endl; cout<<"x = "<<*x<<" y = "<<*y<<endl;

}

cout<<"Ubah menjadi= "<<*a<<endl; }

cout<<"Bil sebelum = "<<bil<<endl; Ubah(&bil);

cout<<"Bil sesudah = "<<bil<<endl; getch();

}

• Pem an ggilan secara Referen si m erupakan upaya un tuk m elewatkan alam at dari suatu variabel ke dalam fun gsi.

• Yan g dikirim kan ke fun gsi adalah alam at letak dari n ilai datanya, bukan n ilai datan ya.

• Fun gsi yan g m en erim a kirim an alam at in i m akan m en ggun akan alam at yan g sam a un tuk m en dapatkan n ilai datan ya.

• Perubahan n ilai di fun gsi akan m erubah n ilai asli di bagian program yan g m em an ggil fun gsi.

• Pen girim an param eter secara referen si adalah pen girim an dua arah, yaitu dari fun gsi pem an ggil ke fun gsi yan g dipan ggil dan juga sebalikn ya.

(23)

6 . Fu n gs i Re ku rs if

Fun gsi rekursif adalah suatu fun gsi yan g m em an ggil dirin ya sen diri, artin ya fun gsi tersebut dipanggil di dalam tubuh fun gsi itu sen diri. Salah satu kelem ahan fun gsi rekursif adalah waktu kom putasi yan g lebih lam a.

La tih a n S o a l.

(24)

BAB V

FILE d a n S TREAM

Operasi dasar file pada prin sipn ya terbagi m en jadi 3 tahap, yaitu: a. m em buka atau m en gaktifkan file

b. m elaksan akan pem rosesan file c. m en utup dile

5 .1 Me m bu ka file

Sebelum suatu file dapat diproses, file harus dibuka terlebih dahulu. Sebelum file dibuka, terlebih dahulu obyek file harus didefin isikan . Sin taksn ya:

ofstream nama_obyek;

perin tah ofstream dapat dijalan kan den gan m en yertakan file header fs tre a m .h Setelah itu, suatu file dapat dibuka den gan perin tah

nama_obyek.open(“nama file dan path”);

5 .2 Me n u lis ke File

Salah satu jen is pem rosesan pada file adalah m en ulis atau m erekam data ke file. Sin takn ya:

nama_obyek << ... ;

5 .3 Me n u tu p File

Setelah pem rosesan file selesai, file dapat ditutup m en ggun akan perin tah

nama_obyek.close();

Con toh 1. Program berikut in i un tuk m en ulis teks ke dalam file #include<iostream.h>

#include<fstream.h> void main()

(25)

fileteks<<“Untuk mencapai tujuan yg besar, maka tujuan itu ” <<endl;

fileteks << “harus dibagi-bagi menjadi tujuan kecil”<< endl; fileteks << “sampai tujuan itu merupakan tujuan yg dapat “ << “dicapai” << endl;

fileteks << “berdasarkan kondisi dan potensi yg dimiliki saat “ << itu “ << endl;

fileteks.close(); }

perin tah fileteks.open (“C:/ algo.txt”); akan m em buka file algo.txt yan g ada di C:\ Apabila file tersebut belum ada m aka akan dibuat secara otom atis, dan apabila sudah ada isi file algo.txt akan terhapus.

5 .4 Me n a m b a h D a ta p a d a File

Suatu file yan g sudah ada sebelum n ya dapat ditam bah data yan g baru (tidak m enghapus data lam a). Caran ya dengan m en am bahkan perin tah io s ::a p p

fileteks << “Oleh: Al Khowarizmi << endl; fileteks.close();

}

5 .5 Me m e riks a Ke b e rh a s ila n Op e ra s i File

Tidak selam an ya jalan yan g m ulus ditem ui. Ada kem un gkin an terjadi saat file dibuka, tern yata file tidak ada. Dalam C++ tersedia fun ction un tuk m em eriksa kon disi-kon disi pada operasi file, sehin gga kesalahan saat eksekusi dapat diken dalikan . Fun ction yan g dim aksud adalah fa il( ) .

Con toh 3:

(26)

{

ifstream fileteks; { ifstream digunakan u/ membaca file } fileteks.open(“C:/algo.txt”);

if (fileteks.fail()) cout << “Maaf file takdapat dibuka/” << “tidak ditemukan”;

fileteks.close(); }

5 .6 . Op e ra s i Be rba s is Ka ra kte r

Operasi file dapat dilakukan dalam ben tuk karakter. Misaln ya proses pen yim pan an data ke file dilakukan setiap karakter, atau m em baca data file karakter per karakter. Operasi ini didukun g oleh fun ction p u t( ) dan ge t( ) . Con toh

Con toh 5. Program un tuk m em baca file karakter per karakter

(27)

La tih a n S o a l.

1. Buatlah program C++ un tuk m en ghitun g jum lah karakter dalam suatu file.

In putn ya adalah n am a file dan pathn ya. J an gan lupa error han dlin g!

2. Buatlah program C++ un tuk m en ghitun g jum lah karakter terten tu, m isaln ya karakter ‘A’. In put berupa n am a file dan karakter yan g akan dihitun g. J an gan lupa error han dlin g!

(28)

BAB VI

S tru ktu r Ko n tro l Ko n d is io n a l & Pe ru la n ga n

6 .1 S tru ktu r Ko n d is io n a l

6 .1.1 S ta te m e n t IF

Pern yataan Percaban gan digun akan un tuk m em ecahkan persoalan dalam m en gam bil suatu keputusan dian tara sekian kon disi yan g ada.

Syn tax n ya

Pern yataan IF diatas m em pun yai pen gertian , “ Jika kondisi bern ilai benar, m aka perin tah/ perny ataan akan dikerjakan dan jika tidak m em en uhi sy arat

m aka akan diabaikan”.

J ika ’pernyataan ’ yan g dijalan kan han ya sebaris, m aka tan da {} bo le h d itia d a ka n . Statem en t ’kon disi’ harus m erupakan statem en t Relasion al ataupun

logika! (Baca kem bali BAB 3.5.4 & 3.5.5) Con toh 1:

cout << "Berapa usia Anda : "; cin >> usia;

if (usia < 17)

(29)

if (usia < 17) {

cout << "Anda tidak boleh menonton bioskop"<<endl; cout << "Kerjakan PR anda...";

}

getch(); }

Statem en t IF juga dapat ditam bahkan ELSE sebagai kon sekuen si altern atif jika kon disi tidak dipen uhi (FALSE). Sin taksn ya:

Perin tah-1 dan perin tah-2 dapat berupa sebuah pern yataan tun ggal, pern yataan m ajem uk atau pern yataan koson g. J ika pem akaian if-else diikuti den gan pern yataan m ajem uk, ben tuk pen ulisan n ya sebagai berikut :

Pern yataan if diatas m em pun yai pen gertian , “ Jika kondisi bernilai benar, m aka perin tah-1 akan dikerjakan dan jika tidak m em en uhi sy arat m aka perin tah-2

y an g akan dikerjakan ”.

Con toh 3:

#include <conio.h> #include <iostream.h> void main()

{

(30)

clrscr();

cout << "Berapa usia Anda : "; cin >> usia;

if (usia < 17) {

cout << "Anda tidak boleh menonton bioskop"<<endl; cout << "Kerjakan PR anda...";

} else {

cout << "Anda Boleh ke Bioskop."<<endl; cout << "Belikan 1 Tiket Buat ASDOS"; }

getch(); }

Selain form at pen ulisan statem en t IF diatas, berikut adalah beberapa form at pen ulisan statem en t IF lain n ya:

(31)

• Nested IF (IF Bersaran g)

Nested if m erupakan pern yataan if berada didalam pernyataan if yang lain n ya.

Ben tuk pen ulisan pern yataan Nested if adalah :

6 .1.2 S ta te m e n t S W ITCH – CAS E

Pern yataan s w ich adalah pern yataan yan g digun akan un tuk m en jalan kan salah satu pern yataan dari beberapa kem un gkin an pern yataan , berdasarkan n ilai dari sebuah un gkapan dan n ilai pen yeleksian .

(32)

H a l – h a l ya n g p e rlu d ip e rh a tika n a d a la h :

1. Dibelakan g keyword case harus diikuti oleh sebuah kon stan ta, tidak boleh diikuti oleh kon dision al.

2. Kon stan ta yan g digun akan bertipe in t atau char

3. J ika ben tukn ya seperti diatas m aka apabila ekspresi sesuai den gan kon stan ta2 m aka pern yataan 2, pern yataan 3 sam pai den gan pern yataan lain dieksekusi. Un tuk m en cegah hal tersebut, gun akan keyword bre a k;. J ika keyword b re a k digun akan m aka setelah pern yataan 2 dieksekusi program lan gsun g keluar dari pern yataan s w itch . Selain digunakan dalam s w itch , keyword break ban yak digun akan un tuk keluar dari pern yataan yan g berulan g ( loopin g ).

4. pern yataan ’default’ dieksekusi jika kon stan ta1 sam pai kon stan taN tidak ada yan g m em en uhi ekspresi.

(33)

{

int bil; clrscr();

cout << "Masukkan bilangan : "; cin >> bil;

Tidak setiap IF bisa dijadikan Switch. Tapi sem ua Switch dapat dijadikan IF

Con toh 5:

(34)

Latihan Soal.

1. Buatlah program un tuk m en getahui bilan gan tersebut gen ap atau gan jil! 2. Buatlah program un tuk m en en tukan ban yakn ya uan g pecahan yan g

dibutuhkan , urut dari pecahan terbesar! In put: jum lah uan g dalam rupiah

Perulan gan digun akan un tuk m en gerjakan suatu perin tah secara berulan g-ulan g sesuai den gan yan g diin ginkan .

Struktur pen gulan gan terdiri atas dua bagian :

1. Kon disi pen gulan gan yaitu ekspresi boolean yan g harus dipen uhi un tuk m elaksan akan pen gulan gan

2. Isi atau badan pen gulan gan yaitu satu atau lebih pern yataan (aksi) yan g

akan diulan g.

(35)

• Syarat Pen gulan gan : m em egang kon trol terhadap pen gulan gan , karena bagian in i yan g akan m en en tukan suatu perulan gan diteruskan atau dihen tikan .

• Pen gubah n ilai pen cacah m erupakan statem en t con trol un tuk perulan gan. Um um n ya m en gatur ken aikan atau pen urun an n ilai pen cacah. Bila pern yataan didalam for lebih dari satu m aka pern yataan -pern yataan tersebut harus diletakan didalam tan da kurun g.

Con toh 1.

Selain berupa an gka, pen cacah perulan gan juga dapat berupa karakter. Con toh 3.

for (huruf = ‘Z’; huruf >= ‘A’; huruf--) {

(36)

N e s te d Fo r

Perulan gan bertum puk secara sederhan a dapat diartikan : terdapat satu atau lebih loop di dalam sebuah loop. Ban yakn ya tin gkatan perulan gan , tergan tun g dari kebutuhan . Biasan ya, n ested loops digun akan un tuk m em buat aplikasi m atem atika yan g m en ggun akan baris dan kolom . Loop luar, biasan ya

(37)

b a ris = 4 ; kolom = 1; cetak 1

cout<<"Inputkan Jumlah Bintang = "; cin>>bil; for (int i=1; i<=bil; i++) m em proses suatu pern yataan atau beberapa pern yataan beberapa kali. Pern yataan w h ile m em un gkin kan statem en -statem en yan g ada didalam n ya tidak diakukan

(38)

Karakteristik while() adalah:

1. Dilakukan pen gecekan kon disi terlebih dahulu sebelum dilakukan perulan gan . J ika kon disi yan g dicek bern ilai benar (true) m aka perulan gan akan dilakukan .

2. Blok statem en t tidak harus ada. Struktur tan pa statem en t akan tetap dilakukan selam a kon disi m asih true.

Pe n tin g!!!

J ika An da m en ggun akan WH ILE, pastikan bahwa suatu saat bagian kon disi sam pai bern ilai FALSE. Apabila tidak, proses perulan gan akan terus berjalan selam an ya. ♂♀

Con toh 6.

#include<iostream.h> #include<conio.h> void main()

{

cout<<"Program Konversi angka ke huruf"<<endl; cout<<endl;

cout<<"Masukkan Angka : "; int angka,i;

char huruf; cin>>angka; cout<<endl;

i=1;

huruf='A';

while (i<=angka) {

cout<<i<<" --> "<<huruf<<endl; i++;

huruf++; }

(39)

6 .2 .3 S ta te m e n t d o … w h ile

Karakteristik do ... while() adalah:

1. Perulan gan akan dilakukan m in im al 1x terlebih dahulu, kem udian baru dilakukan pen gecekan terhadap kon disi, jika kon disi be n a r m aka perulan gan m asih akan tetap dilakukan .

2. Perulan gan den gan do...while() akan dilakukan sam pai kon disi fa ls e .

Perbedaan den gan WH ILE sebelum n ya yaitu bahwa pada DO WH ILE statem en t perulan gan n ya dilakukan terlebih dahulu baru kem udian di cek kon disin ya. Sedan gkan WH ILE kon disi dicek dulu baru kem udia statem en t perulan gan n ya dijalan kan . Akibat dari hal in i adalah dalam DO WH ILE m in im al terdapat 1x perulan gan . Sedangkan WH ILE dim un gkin kan perulan gan tidak pern ah terjadi yaitu ketika kon disin ya lan gsun g bern ilai FALSE.

Con toh 7.

#include<iostream.h> #include<conio.h> void main()

{

int angka=0; do

{

angka++;

if (angka % 2 ==0) cout<<angka<<" "; }

while (angka<30); getch();

(40)

6 .3 S tru ktu r Ko n tro l Lo m p a ta n

6 .3 .1 P ERN YATAAN c o n t in u e d a n b r e a k

Pern yataan break akan selalu terlihat digun akan bila m en ggun akan pern yataan sw itch. Pern yataan in i juga digun akan dalam loop. Bila pern yataan in i dieksekusi, m aka akan m en gakhiri loop dan akan m en ghen tikan itrasi pada saat tersebut. Pern yataan continue digun akan un tuk pergi ke bagian awal dari blok loop un tuk m em ulai iterasi berikutn ya. Den gan kata lain , perin tah con tin ue akan m elewati satu iterasi yan g sesuai den gan syarat terten tu, dan m elan jutkan ke iterasi berikutn ya.

Con toh 8 .

Pen jelasan :

(41)

6 .3 .2 P ERN YATAAN g o t o

Pern yataan go to , diperlukan un tuk m elakukan suatu lom patan ke suatu pern yataan berlabel yan g ditan dai den gan tan da “ : “

Con toh 9.

La tih a n S o a l 1.

Buatlah sim ulasi m en u program den gan tam pilan di bawah in i m en ggun akan Do … WH ILE.

MENU PILIHAN

1. Baca Data

2. Ubah Data

3. Hapus Data

4. Exit

Pilihan Anda (1/2/3/4) ? ...

---

(42)

pilihan akan m un cul kem bali, dst. Akan tetapi bila yan g dipilih m en u 4 (EXIT), program lan gsun g berhen ti.

La tih a n S o a l 2 .

Buatlah program dengan loopin g un tuk m en am pilkan hasil seperti berikut: P Q P o r Q P a n d Q N o t P P xo r Q

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

1 1 1 1 0 0

1 0 1 0 0 1

0 1 1 0 1 1

0 0 0 0 1 0

============================================

La tih a n S o a l 3 .

Buatlah program un tuk m en am pilkan deret ’Gossip Girls’: Untuk n = 5

X O X O X

X O X O

X O X

X O

X

La tih a n S o a l 4 .

Buatlah program un tuk m en am pilkan bilan gan fibon acci pada deret ke-n ! Bilan gan fibon acci adalah bilan gan seperti: 1 1 2 3 5 8 13 ... dst

J adi jika inputan n = 7, m aka hasil adalah 13

La tih a n S o a l 5 .

Buatlah program un tuk m en am pilkan bilan gan prim a sam pai deret ke-n !

(43)

BAB VII

ARRAY d a n S TRIN G

7.1 Arra y

Ilustrasi

o Selam a in i kita m en ggun akan satu variabel un tuk m en yim pan 1 buah n ilai den gan tipe data terten tu. Misaln ya :

int a1, a2, a3, a4, a5;

Deklarasi variabel diatas digunakan un tuk m en yim pan 5 data in teger dim an a m asin gm asin g variabel diberi n am a a1, a2, a3, a4, dan a5.

o J ika kita m em iliki 10 data, 10 0 data in teger bahkan m un gkin data yan g

in gin kita proses tidak kita ketahui atau bersifat din am is? Kita tidak m un gkin m en ggun akan variabel seperti diatas.

o Di dalam C dan pem rogram an yan g lain , terdapat suatu fasilitas un tuk

m en yim pan data-data yan g bertipe data sam a den gan suatu n am a terten tu.

S o lu s i?? Æ Arra y

Array m erupakan kum pulan dari n ilai-n ilai data yan g bertipe sam a dalam urutan terten tu yan g m en ggun akan n am a yan g sam a. Den gan m en ggun akan array, sejum lah variabel dapat m em akai n am a yan g sam a. Letak atau posisi dari elem en array ditun jukkan oleh suatu in dex. Dilihat dari dim en sin ya array dapat dibagi m en jadi Array dim en si satu, array dim en si dua dan array m ulti-dim en si.

Ben tuk Um um pen deklarasian array :

Con toh :

(44)

Nilai suatu variabel array dapat juga diin isialisasi secara lan gsun g pada saat deklarasi, m isaln ya:

int nil[5] = { 1,3,6,12,24 };

Maka di pen yim pan an ke dalam array dapat digam barkan sebagai berikut:

Me n ga ks e s n ila i a rra y

Un tuk m en gakses n ilai yan g terdapat dalam array, m em pergun akan sin tak:

nama_array[index];

Pada con toh di atas, variabel n il m em iliki 5 buah elem en yan g m asin g-m asin g berisi data. Pen gaksesan tiap-tiap elem en data adalah:

Misal, un tuk m em berikan n ilai 75 pada elem en ke 3, m aka pern yataan n ya adalah: nil[2] = 75;

atau jika akan m em berikan n ilai array kepada sebuah variabel a, dapat ditulis: a = nil[2];

Con toh Pen erapan :

(45)

ujian[0] = 90;

ujian[1] = 95;

ujian[2] = 78;

ujian[3] = 85;

Em pat pern yataan diatas m em berikan n ilai kepada array ujian . Tetapi sebelum kita m em berikan n ilai kepada array, kita harus m en deklarasikan n ya terlebih dahulu, yaitu :

int ujian[4];

Perhatikan bahwa n ilai 4 yan g berada didalam tan da kurun g m en ujukkan jum lah elem en larik, bukan m en un jukkan elem en larik yan g ke-4. J adi elem en larik ujian dim ulai dari an gka 0 sam pai 3. Pem rogram juga dapat m en gin isialisasi larik sekaligus m en deklarasikan n ya, sebagai con toh :

int ujian[4] = {90,95,78,85};

Con toh 1.

cout<<"masukkan data nilai ujian["<<k<<"] = "; cin>>ujian[k];

}

//tampil data array for (int j=0;j<5;j++) {

cout<<"data nilai ujian["<<j<<"] = "<<ujian[j]<<endl; }

(46)

Con toh 2.

cout<<"masukkan data["<<k<<"] = "; cin>>data[k];

}

//menghitung total nilai pada array for (int j=0;j<5;j++)

{

total = total + data[j]; }

//menghitung rata - rata rata = total / 5;

cout<<"rata - rata data pada array = "<<rata<<endl; getch();

(47)

Modifikasi program diatas sehin gga user dapat m en en tukan / m en gin putkan sen diri jum lah dan n ilai datan ya!

Arra y D u a D im e n s i

Struktur array yan g dibahas di atas, m em pun yai satu dim ensi, sehin gga variabeln ya disebut den gan variabel array berdim en si satu. Pada bagian in i, ditun jukkan array berdim en si lebih dari satu, yan g serin g disebut den gan array berdim en si dua.

Serin g kali digam barkan / dian alogikan sebagai sebuah m atriks. dim an a in deks pertam a m en un jukan baris dan in deks kedua m en un jukan kolom .

ILU S TRAS I ARRAY 2 D IMEN S I

Gam bar array berdim en si (baris x kolom = 3 x 4):

Con toh 4.

#include <iostream.h> #include <conio.h> void main()

{

int matrix[3][4] = {{5,10,1,11},{4,7,67,-9},{9,0,45,3}}; for (int i = 0; i<3; i++)

{

for (int j=0;j<4; j++) {

cout<<matrix[i][j]<<" "; }

(48)

}

cout<<"Program Penjumlahan Matrix"<<endl;

cout<<"======================================"<<endl; cout<<endl;

cout<<"Input Matrix A "<<endl;

cout<<"Jml baris Matrix A: "; cin>>bara; cout<<"Jml kolom Matrix A: "; cin>>kola; cout<<endl;

cout<<"Input Matrix B "<<endl;

cout<<"Jml baris Matrix B: "; cin>>barb; cout<<"Jml kolom Matrix B: "; cin>>kolb; }

while ((kola!=kolb) || (bara!=barb));

cout<<endl;

for (i=1; i<=bara; i++) {

for (j=1; j<=kola; j++) {

cout<<"Data A ["<<i<<","<<j<<"]: "; cin>>data1[i][j]; }

(49)

cout<<endl;

cout<<"Hasil Penjumlahan Matrix A + Matrix B: "<<endl; for (i=1; i<=bara; i++)

{

for (j=1; j<=kola; j++) {

cout<<hasil[i][j]<<" "; }

cout<<endl; }

getch(); cout<<endl;

cout<<"Mau Melakukan Perhitungan Lagi [Y/T] = "; cin>>jawab; }

while ((jawab == 'y') || (jawab == 'Y')); }

La tih a n S o a l 1.

Modifikasi program pen jum lahan array diatas dengan m en am bahkan fasilitas pen guran gan dan perkalian m atrix! Perhatikan error han dlin g n ya!

La tih a n S o a l 2 .

Buatlah sebuah program un tuk m en en tukan n ilai m axim um dan m in im um dari n ilai elem en m atrix.

7.2 S trin g

(50)

Un tuk m en deklarasikan suatu variabel m erupakan strin g, m aka perin tahn ya:

char variabel[maks_karakter];

con toh:

char teks[20];

Perin tah di atas berm akn a bahwa teks m erupakan variabel strin g den gan jum lah karakter yan g dapat disim pan m aksim al adalah 20 (sudah term asuk karakter NULL). Misalkan suatu variabel strin g katakan lah kalim at[30 ] akan diberi n ilai “SAYA BELAJ AR C++”, m aka perin tahn ya:

char kalimat[30] = “SAYA BELAJAR C++”;

Con toh 1.

#include <iostream.h> #include <conio.h> void main()

{ int a; a = 20;

char kalimat[30] = "SAYA BELAJAR C++"; cout << "Nilai a = " << a << endl;

cout << "Nilai kalimat = " << kalimat << endl; getch();

(51)

#include<iostream.h>

cout << "Masukkan nama Anda : "; cin.getline(nama, sizeof(nama)); cout << "Masukkan alamat Anda : "; cin.getline(alamat, sizeof(alamat)); cout << "Nama Anda : " << nama << endl; cout << "Alamat Anda : " << alamat << endl; getch();

}

™ Be be ra p a Fu n ctio n u n tu k Op e ra s i S trin g.

Me n g-Co p y S trin g

strcpy(kata2, kata1); // mengcopy isi dari kata1 ke kata2

Me n ge ta h u i p a n ja n g s trin g d e n ga n s trle n ( )

Men gubah huruf kecil dari strin g ke huruf kapital. Con toh;

char string1[30] = “aBcDefgHIJKLmno”;

strupr(string1);//string1 menjadi “ABCDEFGHIJKLMNO”

Me n gko n ve rs i ke h u ru f ke cil d e n ga n s trlw r( )

strlwr(string)

(52)

Me n ca ri S u bs trin g d e n ga n s trs tr( )

Misalkan diberikan suatu strin g “J AKARTA KOTA METROPOLITAN”. Apakah strin g “METRO” terdapat dalam strin g tersebut?

Un tuk m en getahui hal in i den gan C++, kita dapat m en ggun akan fun ction s trs tr( ) .

Sin taks:

strstr(string1, string2);

Fun ction tersebut akan m ereturn n ilai 1 jika strin g2 m erupakan substrin g dari strin g1, dan akan m ereturn 0 jika tidak.

Con toh:

if (strstr(“JAKARTA KOTA METROPOLITAN”, “METRO”) == 1) cout << “Merupakan substring”;

else cout << “Bukan merupakan substring”;

Me m ba lik s trin g d e n ga n s trre v( )

Bagaim an a cara m em balik strin g “C++” supaya diperoleh “++C”? Berikut in i perin tah dalam C++, m en u seperti berikut:

1. In put karakter 2. Cari karakter 3. H apus karakter

4. Ubah karakter terten tu

5. Tam pilkan karakter-karakter tersebut

(53)

Note :

Gun akan Con toh program berikut sebagai referen si!

#include <iostream.h> #include <conio.h> void main()

{

char string [20]="contoh program"; char *hasil;

hasil=strchr(string,'m'); *hasil = 'L';

(54)

BAB VIII

P OIN TER

Poin ter sesun gguhn ya berisi alam at dari suatu data, bukan data sebagaim an a pada variable yan g sudah an da ken al. P o in te r (variabel pen un juk) adalah suatu variabel yan g berisi alam at m em ori dari suatu variabel lain . Alam at in i m erupakan lokasi dari obyek lain (biasan ya variabel lain ) di dalam m em ori. Con toh, jika sebuah variabel berisi alam at dari variabel lain , variabel pertam a dikatakan m en un juk ke variabel kedua.

Op e ra to r Po in te r a d a d u a , ya itu :

1. Operator & (D e r e fe r e n c e O p e r a t o r )

• Operator & m en ghasilkan alam at dari operan dn ya.

• Setiap variabel yan g dideklarasikan , disim pan dalam sebuah lokasi m em ori dan pen ggun a biasan ya tidak m en getahui di alam at m an a data tersebut disim pan . Dalam C++, un tuk m en getahui alam at tem pat pen yim pan an data, dapat digun akan tan da am persan d(&) yan g dapat diartikan “alam at”. Con toh :

Bil1 = &Bil2;

d ib a ca : isi variabel bil1 sam a den gan alam at bil2

2. Operator * (R e fe r e n c e O p e r a t o r )

• Operator * m en ghasilkan n ilai yan g berada pada sebuah alam at.

• Pen ggun aan operator in i, berarti m en gakses n ilai sebuah alam at yan g ditun juk oleh variabel poin ter. Con toh :

Bil1 = *Bil2;

d ib a ca : bil1 sam a den gan n ilai yan g ditun juk oleh bil2

Me n d e fin is ika n Va ria b e l P o in te r

(55)

tipe_ data dapat berupa sebaran g tipe seperti haln ya pada pen defin isian variabel n on -poin ter.

n am a_ v ariabel adalah n am a variabel poin ter.

//contoh program menggunakan pointer #include<iostream.h>

#include<conio.h> void main()

{

int x, y; // x dan y bertipe int

int *px; // px pointer yang menunjuk objek clrscr();

x = 87;

px = &x; // px berisi alamat dari x

y = *px; // y berisi nilai yang ditunjuk px

cout<<"Alamat x pd Memori = "<<&x<<endl; cout<<"Isi px = "<<px<<endl;

cout<<"Isi x = "<<x<<endl;

cout<<"Nilai yang ditunjuk oleh px = "<<*px<<endl; cout<<"Alamat y pd Memori = "<<&y<<endl;

cout<<"Nilai y = "<<y<<endl; getch();

}

Guided 2.

//mengubah nilai melalui suatu pointer #include<conio.h>

#include<iostream.h> void main()

{

int vint = 55; //variabel bukan pointer int *pint; //variabel pointer

clrscr();

(56)

pint = &vint; //pointer menunjuk ke vint

*pint = 69; //Nilai yang ditunjuk diubah menjadi 69

cout<<"vint sekarang = "<<vint<<endl; getch();

//operasi aritmatika pada pointer #include<iostream.h>

#include<conio.h> void main()

{ int nilai[3], *penunjuk; clrscr();

nilai[0] = 125; nilai[1] = 345; nilai[2] = 750;

penunjuk = &nilai[0];

cout<<"Nilai "<<*penunjuk<<" ada di alamat memori "<<penunjuk<<endl;

cout<<"Nilai "<<*(penunjuk+1)<<" ada di alamat memori "<<(penunjuk+1)<<endl;

cout<<"Nilai "<<*(penunjuk+2)<<" ada di alamat memori "<<(penunjuk+2)<<endl;

(57)

Perhatikan den gan seksam a program diatas. Tidak ada tan da & di depan data1. padahal kita ketahui un tuk m en gakses poin ter m em erlukan form at berikut:

Ptr = &variabel;

In i disebabkan array seben arn ya sudah m en yatakan alam at. Oleh karen a itu tan da & tidak diperlukan . Tan da & digun akan jika variabel tidak berupa array.

//guided 1

//mengakses elemen array via pointer

#include <conio.h>

#include <iostream.h>

void main() {

char data1[] = {'A', 'I', 'U', 'E', 'O'}; clrscr();

char *pdata;

pdata = data1; // pdata menunjuk ke array for (int i=0; i<5; i++)

{

cout<<*(pdata + i)<<" "; }

getch(); }

Seluruh elem en array data1 dapat ditam pilkan juga m elalui pern yataan :

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

{

cout<<data1[i])<<" ";

(58)

Me m b e ri n ila i p a d a a rra y

//memberi nilai suatu data array #include<iostream.h>

cout<<"Array Stelah diisi = "<<endl; cout<<endl;

//pointer menunjuk ke string #include<conio.h>

char *ptr = "STIKOM";

(59)

• Men galokasikan ptr sebagai variable poin ter yan g m enun juk ke data dirubah. Yan g dapat diubah adalah elem en array-n ya.

Perbedaan in i ditun jukkan oleh program berikut : //pointer menunjuk ke string #include<conio.h> char vptr[] = "STIKOM";

cout<<"vptr = "<<vptr<<endl; cout<<"ptr = "<<ptr<<endl;

//tokoh++; //tidak diperkenankan!!!!!!

ptr = ptr + 3; //diperkenankan!!!

cout<<"ptr sekarang = "<<ptr; getch();

(60)

clrscr();

cout<<"String sebelum proses adalah "<<string<<endl; proses(string);

cout<<"String setelah proses adalah "<<string<<endl; getch();

}

void proses(char *s) {

while ( *s != ' ' ) //’ ‘ sama denga ‘\0’ yg artinya null

{

if ( *s >= 'a' && *s <= 'z' ) *s -= 32;

(61)

D AFTAR P U S TAKA

Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta : Penerbit ANDI Yogyakarta

Sanjaya, Dwi. 2003. Asyiknya Belajar Struktur Data di Planet C++. Jakarta : PT. Elex Media Komputindo

Utami, Erna & Sukrisno. 2005. 10 Langkah Belajar Logika dan Algoritma, Menggunakan Bahasa C dan C++ di GNU/Linux. Yogyakarta : Penerbit ANDI Yogyakarta

Gambar

Gambar array berdimensi (baris x kolom = 3 x 4):

Referensi

Dokumen terkait

Ada juga pendapat, mungkin saja Sukjong mengukuhkan Jang Ok Jung sebagai selir raja Joseon yang pertama dan terakhir mencapai gelar ratu serta tidak ada selir lain yang mencapai

Daftar Sidik Ragam Rasio Bobot Kering Tajuk Akar. SK db JK KT

Model Peramalan time series secara statistik yang telah ada selama ini belum dapat secara efektif diterapkan untuk data historis dalam jumlah yang sedikit, maka metode

Reading practice will consistently lead people not to completely satisfied reading Here's Looking At You By Mhairi McFarlane , an e-book, 10 publication, hundreds books, and more..

Dengan demikian dapat disimpulkan bahwa hipotesis pertama yang menyatakan variabel LDR, IPR, NPL, APB, IRR, PDN, FBIR, dan BOPO secara bersama-sama memiliki pengaruh yang

Wilayah di luar pulau Jawa memiliki potensi sumber daya alam yang belum dikelola secara baik dan merata. Misalnya, potensi perikanan di Indonesia timur, potensi emas dan batu bara

Pembinaan keagamaan untuk memberikan bekal bagi narapidana agar kelak setelah bebas menjalani masa pidana menjadi orang yang lebih baik, maka pihak Lembaga Pemasyarakatan

Fermentasi dengan minyak kelapa sawit sebagai sumber karbon dan menggunakan alat fermentor (bioreaktor) dengan kapasitas 15 liter ternyata menghasilkan P(3HB) dalam