chika tutorial c++ - ver 3 2009 2

114
1 TUTORIAL PEMROGRAMAN C++ oleh : Marisa Widyastuti 2009 (ver.3.0)

Upload: marisa-paryasto

Post on 06-Dec-2014

2.555 views

Category:

Education


10 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Chika   tutorial c++ - ver 3 2009 2

1

TUTORIAL

PEMROGRAMAN C++

oleh :

Marisa Widyastuti

2009

(ver.3.0)

Page 2: Chika   tutorial c++ - ver 3 2009 2

2

Daftar Isi

Daftar Isi................................................................................................................................................................................2

Bab 1 Pengenalan Lingkungan Pemrograman C++ ..................................................................................................4

1. Memahami lingkungan dasar C++, IDE, serta cara meng-compile dan menjalankan program...............4

2. Membuat program C++ sederhana ...................................................................................................................8

Bab 2 Struktur Kontrol ....................................................................................................................................................13

1. Menggunakan perintah if dan if/else untuk memilih beberapa alternatif pilihan...............................14

3. Mengunakan perintah perulangan for untuk menjalankan perintah secara berulang...........................20

4. Menggunakan perintah perulangan switch untuk struktur dengan multiple-selection ...........................21

5. Mengunakan perintah perulangan do/while untuk menjalankan perintah secara berulang................24

6. Menggunakan perintah break dan continue ...............................................................................................25

Bab 3 Fungsi ...................................................................................................................................................................27

1. Membuat program secara modular dengan menggunakan fungsi............................................................27

2. Memahami variabel lokal dan variabel global ...............................................................................................28

3. Menggunakan fungsi dengan dan tanpa argumen ......................................................................................30

4. Menggunakan fungsi yang memanggil dirinya sendiri...................................................................................31

5. Membuat overloading fungsi.............................................................................................................................32

Bab 4 Array ....................................................................................................................................................................33

1. Memahami struktur data array ..........................................................................................................................33

2. Memahami cara mendeklarasikan array, menginisialisasi array dan memanggil elemen tertentu dari

suatu array .....................................................................................................................................................................33

3. Melewatkan array ke suatu fungsi.....................................................................................................................37

4. Memahami penggunaan array untuk menyimpan, mengurutkan dan mencari nilai pada suatu daftar

atau tabel ......................................................................................................................................................................38

5. Mendeklarasikan dan memanipulasi array multi-dimensi ..............................................................................40

Bab 5 Structure ..............................................................................................................................................................42

1. Memahami cara mendeklarasikan structure, menginisialisasi structure dan memanggil elemen tertentu

dari suatu structure........................................................................................................................................................42

2. Nested Structure ..................................................................................................................................................43

3. Mengirimkan structure ke suatu fungsi ..............................................................................................................44

4. Pointer dan Structure...........................................................................................................................................46

5. Mengatur alokasi memori suatu structure ........................................................................................................47

6. Linkage List............................................................................................................................................................48

Bab 6 Pointer dan String ...............................................................................................................................................49

1. Menggunakan pointer ........................................................................................................................................49

2. Menggunakan pointer untuk melewatkan argument ke fungsi sebagai referensi (pass by reference)..50

3. Memahami hubungan erat antara pointer, array dan string ........................................................................54

4. Memahami penggunaan pointer ke fungsi .....................................................................................................56

5. Mendeklarasikan dan menggunakan array string ..........................................................................................58

Bab 7 Pointer dan String (Lanjut).................................................................................................................................63

Page 3: Chika   tutorial c++ - ver 3 2009 2

3

1. Memahami konsep pointer konstan dan tidak konstan, data konstan dan tidak konstan .......................63

2. Memahami penggunaan perintah sizeof ........................................................................................................66

3. Memahami penggunaan pointer dengan array ............................................................................................68

4. Memahami penggunaan pointer fungsi ..........................................................................................................72

Bab 8 Kelas dan Data Abstraksi ..................................................................................................................................74

1. Membuat Objek dalam Bahasa Pemrograman C++ .....................................................................................74

2. Memahami konsep enkapsulasi dan abstraksi ................................................................................................77

3. Memahami konsep variabel statik dan fungsi statik .......................................................................................78

4. Memahami konsep akses friend .....................................................................................................................80

Bab 9 Constructor dan Destructor ..............................................................................................................................84

1. Mengidentifikasi kegunaan constructor ...........................................................................................................84

2. Mendeklarasikan constructor.............................................................................................................................85

3. Mengidentifikasi kegunaan destructor .............................................................................................................87

4. Mendeklarasikan destructor...............................................................................................................................87

5. Menggunakan scope resolution operator .......................................................................................................90

6. Menggunakan constructor dengan parameter .............................................................................................91

Bab 10 Polymorphism ....................................................................................................................................................95

1. Mengidentifikasi kegunaan constructor ...........................................................................................................95

2. Meng-overload fungsi .........................................................................................................................................95

3. Memahami perlunya melakukan overloading operator................................................................................99

4. Meng-overload operator unary.........................................................................................................................99

5. Meng-overload operator biner........................................................................................................................101

Bab 11 Inheritance......................................................................................................................................................105

1. Mendefinisikan apa yang dimaksud dengan konsep hubungan (relationship) antar kelas dan objek 105

2. Memahami konsep inheritance dan data hiding .........................................................................................108

Page 4: Chika   tutorial c++ - ver 3 2009 2

4

Bab 1 Pengenalan Lingkungan Pemrograman C++

1. Memahami lingkungan dasar C++, IDE, serta cara meng-compile dan menjalankan

program

IDE (Integrated Development Environment) yang digunakan dalam tutorial ini adalah CodeBlocks.

Langkah-langkah untuk membuat file program C++, meng-compile dan menjalankannya:

1. Klik Create a new Project

2. Pilih Console Application

Page 5: Chika   tutorial c++ - ver 3 2009 2

5

Lalu tekan Create

3. Simpan Project dengan nama (misalnya) MyFirstProject.cbp

Catatan : extension .cbp (code block program) adalah extension default untuk file-file project yang

dibuat menggunakan CodeBlocks

Page 6: Chika   tutorial c++ - ver 3 2009 2

6

4. CodeBlocks akan secara otomatis membuatkan file utama dengan nama main.cpp, yang jika sudah

ada, CodeBlocks akan memberikan pilihan untuk ditimpa atau tidak.

Pilih No.

5. Buat file baru dengan nama (misalnya) MyFirstCode.cpp.

Catatan : Pastikan file disimpan dengan extension .cpp. dengan mengetikkannya. Jika file tersimpan

dengan extension .c maka sintaks-sintaks C++ tidak akan bisa dijalankan.

6. CodeBlocks secara otomatis akan membuatkan program sederhana untuk mencetak "Hello World!"

ke layar

Page 7: Chika   tutorial c++ - ver 3 2009 2

7

7. Compile program dengan menekan Ctrl-F9

Page 8: Chika   tutorial c++ - ver 3 2009 2

8

Jika tidak ada kesalahan maka pada tab Build Log di bagian bawah jendela CodeBlock akan terlihat

bahwa terdapat 0 errors, 0 warnings

8. Jalankan program dengan menekan F9

2. Membuat program C++ sederhana

a. Buatlah program di bawah ini, lalu compile dan jalankan

1 //

2 // A first program in C++

3 #include <iostream.h>

4

5 int main()

6 {

7 cout << "Welcome to C++!\n";

8

9 return 0; // indicate that program ended successfully

10 }

Tulis hasil keluarannya :

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

b. Tulis pula hasil dari program di bawah ini :

1 //

2 // Printing a line with multiple statements

Page 9: Chika   tutorial c++ - ver 3 2009 2

9

3 #include <iostream.h>

4

5 int main()

6 {

7 cout << "Welcome ";

8 cout << "to C++!\n";

9

10 return 0; // indicate that program ended successfully

11 }

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

c. Tanpa mengetik, meng-compile dan menjalankan program, tebak keluaran program berikut ini!

1 //

2 // Printing multiple lines with a single statement

3 #include <iostream.h>

4

5 int main()

6 {

7 cout << "Welcome\nto\n\nC++!\n";

8

9 return 0; // indicate that program ended successfully

10 }

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

d. Ketik, compile dan jalankan program di bawah ini :

1 //

2 // Addition program

3 #include <iostream.h>

4

5 int main()

Page 10: Chika   tutorial c++ - ver 3 2009 2

10

6 {

7 int integer1, integer2, sum;

8

9 cout << "Enter first integer\n";

10 cin >> integer1;

11 cout << "Enter second integer\n";

12 cin >> integer2;

13 sum = integer1 + integer2;

14 cout << "Sum is " << sum << endl;

15

16 return 0; // indicate that program ended successfully

17 }

Jelaskan setiap baris program dengan menyebutkan nomor barisnya!

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

e. Berikut adalah contoh program penggunaan sederhana perintah if, operator relasional dan

operator persamaan.

1 //

2 // Using if statements, relational

3 // operators, and equality operators

Page 11: Chika   tutorial c++ - ver 3 2009 2

11

4 #include <iostream.h>

5

6 int main()

7 {

8 int num1, num2;

9

10 cout << "Enter two integers, and I will tell you\n"

11 << "the relationships they satisfy: ";

12 cin >> num1 >> num2; // read two integers

13

14 if ( num1 == num2 )

15 cout << num1 << " is equal to " << num2 << endl;

16

17 if ( num1 != num2 )

18 cout << num1 << " is not equal to " << num2 << endl;

19

20 if ( num1 < num2 )

21 cout << num1 << " is less than " << num2 << endl;

22

23 if ( num1 > num2 )

24 cout << num1 << " is greater than " << num2 << endl;

25

26 if ( num1 <= num2 )

27 cout << num1 << " is less than or equal to "

28 << num2 << endl;

29

30 if ( num1 >= num2 )

31 cout << num1 << " is greater than or equal to "

32 << num2 << endl;

33

34 return 0; // indicate that program ended successfully

35 }

Kesimpulan apa yang bisa diambil dari program di atas?

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

Page 12: Chika   tutorial c++ - ver 3 2009 2

12

f. Program berikut ini mendemonstrasikan penggunaan header file yang berbeda

1 //

2 // Using new-style header files

3 #include <iostream>

4

5 using namespace std;

6

7 int main()

8 {

9 cout << "Welcome to C++!\n";

10 std::cout << "Welcome to C++!\n";

11

12 return 0; // indicate that program ended successfully

13 }

Jelaskan apa yang dimaksud dengan file header :

______________________________________________________________________________________________________

______________________________________________________________________________________________________

Apa yang terjadi bila baris 10 di ubah menjadi

10 cout << "Welcome to C++!\n";

______________________________________________________________________________________________________

______________________________________________________________________________________________________

Jelaskan mengapa terjadi demikian :

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

Page 13: Chika   tutorial c++ - ver 3 2009 2

13

Bab 2 Struktur Kontrol

Berikut adalah flowchart untuk alur program sekuensial, dan struktur seleksi dengan menggunakan if, if-

else dan switch

Berikut ini adalah flowchart untuk alur program menggunakan struktur while, do/while dan for untuk

perulangan

Page 14: Chika   tutorial c++ - ver 3 2009 2

14

1. Menggunakan perintah if dan if/else untuk memilih beberapa alternatif pilihan

a. Buat program dengan struktur if atau if/else untuk menerima masukan suatu nilai ujian

mahasiswa, yang akan memberikan keluaran berupa tampilan "Lulus" jika nilai mahasiswa tersebut >=

60 dan menampilkan "Tidak Lulus" untuk nilai lainnya.

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

b. Buat program dengan struktur if atau if/else untuk menerima masukkan nilai ujian mahasiswa dan

menampilkan "A" untuk nilai >= 90, "B" untuk nilai >= 80, "C" untuk nilai >= 70, "D" untuk nilai >= 60, dan E

untuk nilai < 60 :

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

Page 15: Chika   tutorial c++ - ver 3 2009 2

15

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

2. Menggunakan perintah perulangan while, do/while dengan menggunakan counter, sentinel

dan nested control untuk menjalankan perintah secara berulang

Berikut adalah contoh program perulangan sederhana penggunaan perintah while dengan

menggunakan counter

1 //

2 // Counter-controlled repetition

3 #include <iostream.h>

4

5 int main()

6 {

7 int counter = 1; // initialization

8

9 while ( counter <= 10 ) { // repetition condition

10 cout << counter << endl;

11 ++counter; // increment

12 }

13

14 return 0;

15 }

Page 16: Chika   tutorial c++ - ver 3 2009 2

16

Perhatikan baris 11, jelaskan perbedaan antara

11 ++counter;

dengan

11 counter++;

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

a. Sebuah kelas dengan sepuluh orang mahasiswa mengikuti ujian. Nilai yang diberikan adalah dalam

skala (0 – 100). Buat program untuk menentukan nilai rata-rata kelas menurut algoritma pseudocode

di bawah ini , dengan menggunakan counter –controlled repetition :

Inisialisasi variabel total dengan nilai nol

Inisialisasi variabel counter_nilai dengan satu

while counter_nilai kurang atau sama dengan sepuluh

Masukkan nilai berikutnya

Tambahkan nilai ke total

Tambahkan counter_nilai dengan satu

Hitung rata-rata kelas dengan membagi nilai total dengan sepuluh

Cetak rata-rata kelas

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

Page 17: Chika   tutorial c++ - ver 3 2009 2

17

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

b. Buat program untuk menghitung rata-rata kelas yang menghitung nilai sejumlah angka yang

dimasukkan setiap kali program dijalankan. Gunakan sentinel-controlled repetition, sesuai algoritma

pseudocode di bawah ini :

Inisialisasi variabel total dengan angka nol

Inisialisasi variabel counter dengan angka nol

Masukkan nilai yang pertama

while user belum memasukkan sentinel

Masukkan nilai ke variabel total

Tambahkan counter_nilai dengan satu

Masukkan nilai berikutnya

if counter_nilai tidak sama dengan nol

Hitung rata-rata sebagai hasil dari total dibagi counter_nilai

Cetak rata-rata

else

Cetak "Tidak ada nilai yang dimasukkan"

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

Page 18: Chika   tutorial c++ - ver 3 2009 2

18

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

c. Sebuah universitas memberikan pelatihan untuk mempersiapkan mahasiswanya untuk mengikuti

suatu ujian tertentu. Tahun lalu beberapa mahasiswa yang telah mengikuti pelatihan ini mengambil

ujian tersebut. Pihak universitas ingin mengetahui berapa banyak mahasiswa yang berhasil. Buatlah

sebuah program untuk menampilkan hasil ujian, dengan data yang diberikan adalah daftar

mahasiswa yang disebelahnya ada angka 1 (lulus) dan 2 (tidak lulus).

Program yang dibuat harus dapat menganalisa hasil ujian seperti berikut ini :

1. Tampilkan pesan "Masukkan hasil : " (1 atau 2) untuk setiap data, sampai semua data dimasukkan

2. Hitung dan tampilkan jumlah mahasiswa yang lulus dan jumlah mahasiswa yang tidak lulus

3. Jika lebih dari 8 mahasiswa lulus, cetak "Naikkan biaya pelatihan"

Algoritma pseudocode-nya adalah sebagai berikut :

Inisialisasi variabel lulus dengan angka nol

Inisialisasi variabel tidak_lulus dengan angka nol

Inisialisasi variabel counter_mhs dengan angka nol

while counter_mhs kurang atau sama dengan sepuluh

masukkan nilai ujian

Page 19: Chika   tutorial c++ - ver 3 2009 2

19

if mahasiswa lulus

Tambahkan lulus dengan satu

else

Tambahkan tidak_lulus dengan satu

Tambahkan counter_mhs dengan satu

Cetak jumlah mahasiswa yang lulus

Cetak jumlah mahasiswa yang tidak lulus

if lebih dari delapan mahasiswa lulus

Cetak "Naikkan biaya pelatihan"

Buat program sesuai dengan algoritma di atas!

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

Page 20: Chika   tutorial c++ - ver 3 2009 2

20

_______________________________________________________________________________________________________

3. Mengunakan perintah perulangan for untuk menjalankan perintah secara berulang

Berikut adalah contoh penggunakan perintah for

Contoh diagram alur stuktur for yang menggunakan counter

Contoh program untuk diagram alur di atas

1 //

2 // Counter-controlled repetition with the for structure

3 #include <iostream.h>

4

5 int main()

6 {

7 // Initialization, repetition condition, and incrementing

8 // are all included in the for structure header.

9

10 for ( int counter = 1; counter <= 10; counter++ )

11 cout << counter << endl;

12

Page 21: Chika   tutorial c++ - ver 3 2009 2

21

13 return 0;

14 }

15

Setelah memahami contoh program di atas kerjakanlah tugas-tugas berikut ini :

Buat program untuk menghitung pangkat bilangan dari 1 – 100

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

4. Menggunakan perintah perulangan switch untuk struktur dengan multiple-selection

Berikut adalah diagram alir untuk perintah perulangan dengan switch

Page 22: Chika   tutorial c++ - ver 3 2009 2

22

Dan berikut adalah contoh program penggunaan perintah switch

1 //

2 // Counting letter grades

3 #include <iostream.h>

4

5 int main()

6 {

7 int grade, // one grade

8 aCount = 0, // number of A's

9 bCount = 0, // number of B's

10 cCount = 0, // number of C's

11 dCount = 0, // number of D's

12 fCount = 0; // number of F's

13

14 cout << "Enter the letter grades." << endl

15 << "Enter the EOF character to end input." << endl;

16

17 while ( ( grade = cin.get() ) != EOF ) {

18

19 switch ( grade ) { // switch nested in while

20

21 case 'A': // grade was uppercase A

22 case 'a': // or lowercase a

23 ++aCount;

24 break; // necessary to exit switch

25

26 case 'B': // grade was uppercase B

27 case 'b': // or lowercase b

Page 23: Chika   tutorial c++ - ver 3 2009 2

23

28 ++bCount;

29 break;

30

31 case 'C': // grade was uppercase C

32 case 'c': // or lowercase c

33 ++cCount;

34 break;

35

36 case 'D': // grade was uppercase D

37 case 'd': // or lowercase d

38 ++dCount;

39 break;

40

41 case 'F': // grade was uppercase F

42 case 'f': // or lowercase f

43 ++fCount;

44 break;

45

46 case '\n': // ignore newlines,

47 case '\ ': // tabs,

48 case ' ': // and spaces in input

49 break;

50

51 default: // catch all other characters

52 cout << "Incorrect letter grade entered."

53 << " Enter a new grade." << endl;

54 break; // optional

55 }

56 }

57

58 cout << "\n\nTotals for each letter grade are:"

59 << "\nA: " << aCount

60 << "\nB: " << bCount

61 << "\nC: " << cCount

62 << "\nD: " << dCount

63 << "\nF: " << fCount << endl;

64

65 return 0;

66 }

Jelaskan arti perintah default, dan break yang digunakan dalam program di atas!

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

Page 24: Chika   tutorial c++ - ver 3 2009 2

24

_______________________________________________________________________________________________________

5. Mengunakan perintah perulangan do/while untuk menjalankan perintah secara berulang

Perhatikan diagram alur dan contoh program untuk perintah do/while di bawah ini :

1 //

2 // Using the do/while repetition structure

3 #include <iostream.h>

4

5 int main()

6 {

7 int counter = 1;

8

9 do {

10 cout << counter << " ";

11 } while ( ++counter <= 10 );

12

13 cout << endl;

14

15 return 0;

16 }

Tanpa menjalankan program, tulis hasil keluaran dari program di atas

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

Jikaperintah di baris 11 di ubah menjadi

Page 25: Chika   tutorial c++ - ver 3 2009 2

25

11 } while ( counter++ < 10 );

Tulis keluaran program :

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

6. Menggunakan perintah break dan continue

Contah program penggunaan perintah break

1 //

2 // Using the break statement in a for structure

3 #include <iostream.h>

4

5 int main()

6 {

7 // x declared here so it can be used after the loop

8 int x;

9

10 for ( x = 1; x <= 10; x++ ) {

11

12 if ( x == 5 )

13 break; // break loop only if x is 5

14

15 cout << x << " ";

16 }

17

18 cout << "\nBroke out of loop at x of " << x << endl;

19 return 0;

20 }

Tuliskan hasil keluaran program :

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

Contah program penggunaan perintah continue

Page 26: Chika   tutorial c++ - ver 3 2009 2

26

1 //

2 // Using the continue statement in a for structure

3 #include <iostream.h>

4

5 int main()

6 {

7 for ( int x = 1; x <= 10; x++ ) {

8

9 if ( x == 5 )

10 continue; // skip remaining code in loop

11 // only if x is 5

12

13 cout << x << " ";

14 }

15

16 cout << "\nUsed continue to skip printing the value 5"

17 << endl;

18 return 0;

19 }

Tuliskan hasil keluaran program :

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

Beri kesimpulan singkat mengenai perintah break dan continue :

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

_______________________________________________________________________________________________________

Page 27: Chika   tutorial c++ - ver 3 2009 2

27

Bab 3 Fungsi

1. Membuat program secara modular dengan menggunakan fungsi

a. Ketik, compile dan jalankan program di bawah ini :

1 //

2 // Creating and using a programmer-defined function

3 #include <iostream.h>

4

5 int square( int ); // function prototype

6

7 int main()

8 {

9 for ( int x = 1; x <= 10; x++ )

10 cout << square( x ) << " ";

11

12 cout << endl;

13 return 0;

14 }

15

16 // Function definition

17 int square( int y )

18 {

19 return y * y;

20 }

Apa yang dilakukan oleh fungsi yang terdapat dalam program ini ?

__________________________________________________________________________________________________

Jelaskan deklarasi fungsi pada baris ke-5 :

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

1 //

2 // Finding the maximum of three integers

3 #include <iostream.h>

4

5 int maximum( int, int, int ); // function prototype

6

7 int main()

Page 28: Chika   tutorial c++ - ver 3 2009 2

28

8 {

9 int a, b, c;

10

11 cout << "Enter three integers: ";

12 cin >> a >> b >> c;

13

14 // a, b and c below are arguments to

15 // the maximum function call

16 cout << "Maximum is: " << maximum( a, b, c ) << endl;

17

18 return 0;

19 }

20

21 // Function maximum definition

22 // x, y and z below are parameters to

23 // the maximum function definition

24 int maximum( int x, int y, int z )

25 {

26 int max = x;

27

28 if ( y > max )

29 max = y;

30

31 if ( z > max )

32 max = z;

33

34 return max;

35 }

2. Memahami variabel lokal dan variabel global

Compile dan jalankan program di bawah ini!

1 //

2 // A scoping example

3 #include <iostream.h>

4

5 void a( void ); // function prototype

6 void b( void ); // function prototype

7 void c( void ); // function prototype

8

9 int x = 1; // global variable

10

11 int main()

12 {

13 int x = 5; // local variable to main

14

15 cout << "local x in outer scope of main is " << x << endl;

16

Page 29: Chika   tutorial c++ - ver 3 2009 2

29

17 { // start new scope

18 int x = 7;

19

20 cout << "local x in inner scope of main is " << x << endl;

21 } // end new scope

22

23 cout << "local x in outer scope of main is " << x << endl;

24

25 a(); // a has automatic local x

26 b(); // b has static local x

27 c(); // c uses global x

28 a(); // a reinitializes automatic local x

29 b(); // static local x retains its previous value

30 c(); // global x also retains its value

31

32 cout << "local x in main is " << x << endl;

33

34 return 0;

35 }

36

37 void a( void )

38 {

39 int x = 25; // initialized each time a is called

40

41 cout << endl << "local x in a is " << x

42 << " after entering a" << endl;

43 ++x;

44 cout << "local x in a is " << x

45 << " before exiting a" << endl;

46 }

47

48 void b( void )

49 {

50 static int x = 50; // Static initialization only

51 // first time b is called.

52 cout << endl << "local static x is " << x

53 << " on entering b" << endl;

54 ++x;

55 cout << "local static x is " << x

56 << " on exiting b" << endl;

57 }

58

59 void c( void )

60 {

61 cout << endl << "global x is " << x

62 << " on entering c" << endl;

63 x *= 10;

Page 30: Chika   tutorial c++ - ver 3 2009 2

30

64 cout << "global x is " << x << " on exiting c" << endl;

65 }

Jelaskan apa yang dimaksud dengan variable lokal :

______________________________________________________________________________________________________

______________________________________________________________________________________________________

Jelaskan pula apa yang dimaksud dengan variable global :

______________________________________________________________________________________________________

______________________________________________________________________________________________________

3. Menggunakan fungsi dengan dan tanpa argumen

a. Setelah mengetik, meng-compile dan menjalankan program di bawah ini , jelaskan apa yang

dimaksud dengan argumen :

___________________________________________________________________________________________________

___________________________________________________________________________________________________

1 //

2 // Functions that take no arguments

3 #include <iostream.h>

4

5 void function1();

6 void function2( void );

7

8 int main()

9 {

10 function1();

11 function2();

12

13 return 0;

14 }

15

16 void function1()

17 {

18 cout << "function1 takes no arguments" << endl;

19 }

20

21 void function2( void )

22 {

23 cout << "function2 also takes no arguments" << endl;

24 }

Page 31: Chika   tutorial c++ - ver 3 2009 2

31

b. Berikan kesimpulan yang bisa diambil dari dua fungsi berbeda yang terdapat pada program di atas!

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

4. Menggunakan fungsi yang memanggil dirinya sendiri

1 //

2 // Recursive factorial function

3 #include <iostream.h>

4 #include <iomanip.h>

5

6 unsigned long factorial( unsigned long );

7

8 int main()

9 {

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

11 cout << setw( 2 ) << i << "! = " << factorial( i ) << endl;

12

13 return 0;

14 }

15

16 // Recursive definition of function factorial

17 unsigned long factorial( unsigned long number )

18 {

19 if ( number <= 1 ) // base case

20 return 1;

21 else // recursive case

22 return number * factorial( number - 1 );

23 }

Buat program untuk menghitung faktorial tanpa menggunakan fungsi rekursif!

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

Page 32: Chika   tutorial c++ - ver 3 2009 2

32

______________________________________________________________________________________________________

______________________________________________________________________________________________________

______________________________________________________________________________________________________

5. Membuat overloading fungsi

1 //

2 // Using overloaded functions

3 #include <iostream.h>

4

5 int square( int x ) { return x * x; }

6

7 double square( double y ) { return y * y; }

8

9 int main()

10 {

11 cout << "The square of integer 7 is " << square( 7 )

12 << "\nThe square of double 7.5 is " << square( 7.5 )

13 << endl;

14

15 return 0;

16 }

a. Jelaskan apa yang dimaksud dengan overloading fungsi :

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

a. Sebutkan apa kegunaan meng-overloading suatu fungsi :

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

Page 33: Chika   tutorial c++ - ver 3 2009 2

33

Bab 4 Array

1. Memahami struktur data array

2. Memahami cara mendeklarasikan array, menginisialisasi array dan memanggil elemen

tertentu dari suatu array

1

2 // initializing an array

3 #include <iostream.h>

4 #include <iomanip.h>

5

6 int main()

7 {

8 int i, n[ 10 ];

9

10 for ( i = 0; i < 10; i++ ) // initialize array

Page 34: Chika   tutorial c++ - ver 3 2009 2

34

11 n[ i ] = 0;

12

13 cout << "Element" << setw( 13 ) << "Value" << endl;

14

15 for ( i = 0; i < 10; i++ ) // print array

16 cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << endl;

17

18 return 0;

19 }

Catat has i l ke lua ran dar i p rogram d i a tas :

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

1

2 // Initializing an array with a declaration

3 #include <iostream.h>

4 #include <iomanip.h>

5

6 int main()

7 {

8 int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };

9

10 cout << "Element" << setw( 13 ) << "Value" << endl;

11

12 for ( int i = 0; i < 10; i++ )

13 cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << endl;

14

15 return 0;

16 }

Je laskan perbedaan in s ia l i sas i p rogram d i a tas dengan p rogram sebe lumnya, la lu catat has i l

ke lua ran p rogram d i a tas ,

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

Page 35: Chika   tutorial c++ - ver 3 2009 2

35

________________________________________________________________________________________

________________________________________________________________________________________

1

2

3 #include <iostream.h>

4 #include <iomanip.h>

5

6 int main()

7 {

8 const int arraySize = 10;

9 int j, s[ arraySize ];

10

11 for ( j = 0; j < arraySize; j++ ) // set the values

12 s[ j ] = 2 + 2 * j;

13

14 cout << "Element" << setw( 13 ) << "Value" << endl;

15

16 for ( j = 0; j < arraySize; j++ ) // print the values

17 cout << setw( 7 ) << j << setw( 13 ) << s[ j ] << endl;

18

19 return 0;

20 }

Je laskan apa yang d i lakukan p rogram d i a tas dan catat has i l ke lua rannya!

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

1

2

3 #include <iostream.h>

4

5 int main()

6 {

7 const int arraySize = 12;

8 int a[ arraySize ] = { 1, 3, 5, 4, 7, 2, 99,

9 16, 45, 67, 89, 45 };

10 int total = 0;

Page 36: Chika   tutorial c++ - ver 3 2009 2

36

11

12 for ( int i = 0; i < arraySize ; i++ )

13 total += a[ i ];

14

15 cout << "Total of array element values is " << total << endl;

16 return 0;

17 }

Je laskan apa yang d i lakukan p rogram d i a tas dan catat has i l ke lua rannya!

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

1

2 // Histogram printing program

3 #include <iostream.h>

4 #include <iomanip.h>

5

6 int main()

7 {

8 const int arraySize = 10;

9 int n[ arraySize ] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 };

10

11 cout << "Element" << setw( 13 ) << "Value"

12 << setw( 17 ) << "Histogram" << endl;

13

14 for ( int i = 0; i < arraySize ; i++ ) {

15 cout << setw( 7 ) << i << setw( 13 )

16 << n[ i ] << setw( 9 );

17

18 for ( int j = 0; j < n[ i ]; j++ ) // print one bar

19 cout << '*';

20

21 cout << endl;

22 }

23

24 return 0;

25 }

Page 37: Chika   tutorial c++ - ver 3 2009 2

37

Catat has i l ke lua ran p rogram d i a tas dan sebutkan kes impu lan apa yang b i sa d iambi l dar i p rogram

d i a tas !

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

3. Melewatkan array ke suatu fungsi

1

2 // Passing arrays and individual array elements to functions

3 #include <iostream.h>

4 #include <iomanip.h>

5

6 void modifyArray( int [], int ); // appears strange

7 void modifyElement( int );

8

9 int main()

10 {

11 const int arraySize = 5;

12 int i, a[ arraySize ] = { 0, 1, 2, 3, 4 };

13

14 cout << "Effects of passing entire array call-by-reference:"

15 << "\n\nThe values of the original array are:\n";

16

17 for ( i = 0; i < arraySize; i++ )

18 cout << setw( 3 ) << a[ i ];

19

20 cout << endl;

21

22 // array a passed call-by-reference

23 modifyArray( a, arraySize );

24

25 cout << "The values of the modified array are:\n";

26

27 for ( i = 0; i < arraySize; i++ )

28 cout << setw( 3 ) << a[ i ];

29

30 cout << "\n\n\n"

31 << "Effects of passing array element call-by-value:"

32 << "\n\nThe value of a[3] is " << a[ 3 ] << '\n';

Page 38: Chika   tutorial c++ - ver 3 2009 2

38

33

34 modifyElement( a[ 3 ] );

35

36 cout << "The value of a[3] is " << a[ 3 ] << endl;

37

38 return 0;

39 }

40

41 void modifyArray( int b[], int sizeOfArray )

42 {

43 for ( int j = 0; j < sizeOfArray; j++ )

44 b[ j ] *= 2;

45 }

46

47 void modifyElement( int e )

48 {

49 cout << "Value in modifyElement is "

50 << ( e *= 2 ) << endl;

51 }

Catat has i l ke lua ran p rogram d i a tas , se r ta je laskan apa perbedaan pemangg i lan fungs i dengan

menggunakan pass by va lue dengan menggunakan pass by re fe rence !

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

4. Memahami penggunaan array untuk menyimpan, mengurutkan dan mencari nilai pada

suatu daftar atau tabel

1

2 // This program sorts an array's values into

Page 39: Chika   tutorial c++ - ver 3 2009 2

39

3 // ascending order

4 #include <iostream.h>

5 #include <iomanip.h>

6

7 int main()

8 {

9 const int arraySize = 10;

10 int a[ arraySize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };

11 int i, hold;

12

13 cout << "Data items in original order\n";

14

15 for ( i = 0; i < arraySize; i++ )

16 cout << setw( 4 ) << a[ i ];

17

18 for ( int pass = 0; pass < arraySize - 1; pass++ ) // passes

19

20 for ( i = 0; i < arraySize - 1; i++ ) // one pass

21

22 if ( a[ i ] > a[ i + 1 ] ) { // one comparison

23 hold = a[ i ]; // one swap

24 a[ i ] = a[ i + 1 ];

25 a[ i + 1 ] = hold;

26 }

27

28 cout << "\nData items in ascending order\n";

29

30 for ( i = 0; i < arraySize; i++ )

31 cout << setw( 4 ) << a[ i ];

32

33 cout << endl;

34 return 0;

35 }

Apa yang d i lakukan o leh program d i atas? Je laskan dengan s ingkat proses yang

d i lakukan dalam program tersebut .

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

Page 40: Chika   tutorial c++ - ver 3 2009 2

40

5. Mendeklarasikan dan memanipulasi array multi-dimensi

1

2 // Initializing multidimensional arrays

3 #include <iostream.h>

4

5 void printArray( int [][ 3 ] );

6

7 int main()

8 {

9 int array1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } },

10 array2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 },

11 array3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } };

12

13 cout << "Values in array1 by row are:" << endl;

14 printArray( array1 );

15

16 cout << "Values in array2 by row are:" << endl;

17 printArray( array2 );

18

19 cout << "Values in array3 by row are:" << endl;

20 printArray( array3 );

21

22 return 0;

23 }

24

25 void printArray( int a[][ 3 ] )

26 {

27 for ( int i = 0; i < 2; i++ ) {

28

29 for ( int j = 0; j < 3; j++ )

30 cout << a[ i ][ j ] << ' ';

31

32 cout << endl;

33 }

34 }

Ada berapa bar i s dan ko lom ar ray yang d idef in i s i kan pada p rogram d i a tas?

Catat ke luaran has i l p rogram!

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

Page 41: Chika   tutorial c++ - ver 3 2009 2

41

________________________________________________________________________________________

________________________________________________________________________________________

Page 42: Chika   tutorial c++ - ver 3 2009 2

42

Bab 5 Structure

Structure adalah kumpulan data yang saling berhubungan, yang disimpan dalam satu unit

penyimpanan. Misalkan pada suatu database peyimpanan data pegawai, dimana setiap pegawai akan

menyimpan nama, alamat dan gaji. Bila menggunakan array biasa, maka diperlukan tiga variable yang

bebas satu dengan yang lain, yaitu variabel nama, alamat dan gaji. Dengan menggunakan structure,

data tersebut diorganisasikan dalam satu kesatuan.

1. Memahami cara mendeklarasikan structure, menginisialisasi structure dan memanggil

elemen tertentu dari suatu structure

1 // Memasukkan dan menampilkan elemen-elemen variabel structure

2 #include <iostream.h>

3

4 struct data //Deklarasi structure

5 {

6 char name[20];

7 char address[20];

8 int salary;

9 };

10 data employee1; //Inisialisasi variabel structure

11

12 int main()

13 {

14 cout << "Employee's name : ";

15 cin >> employee1.name;

16 cout << "Employee's address : ";

17 cin >> employee1.address;

18 cout << "Employee's salary : ";

19 cin >> employee1.salary;

20

21 cout << endl << "Employee's data : ";

22 cout << employee1.name << ", ";

Page 43: Chika   tutorial c++ - ver 3 2009 2

43

23 cout << employee1.address << ", ";

24 cout << employee1.salary;

25

26 return 0;

27 }

Je laskan perbedaan in s ia l i sas i p rogram d i a tas dengan a r ray , la lu catat has i l ke lua ran p rogram,

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

2. Nested Structure

Nested structure adalah structure di dalam structure

1 #include <iostream.h>

2

3 struct data_students {

4 char name[20];

5 char NIM[8];

6 };

7

8 Struct student_groups {

9 struct data_students chief;

10 struct data_students member[2];

11 } group[3]; //Inisialisasi variabel structure dilakukan sekaligus dengan deklarasi structure

12

13 int main()

14 {

15 for(int i=0;i<3;++i) // i = no group

16 {

17 cout << "\n\nGROUP " << i+1;

18 cout << "\n\tCHIEF " << "\n\tName : ";

19 cin >> group[i].chief.name;

20 cout << "\tNIM : ";

21 cin >> group[i].chief.NIM;

22

23 for(int j=0;j<2;++j) // j = no member

Page 44: Chika   tutorial c++ - ver 3 2009 2

44

24 {

25 cout << "\n\tMEMBER " << j+1;

26 cout << "\n\tName : ";

27 cin >> group[i].member[j].name;

28 cout << "\tNIM : ";

29 cin >> group[i].member[j].NIM;

30 }

31 }

32

33 for(int i=0;i<3;++i)

34 {

35 cout << "\nGROUP " << i+1;

36 cout << "\nChief : " << group[i].chief.name;

37 cout << " (" << group[i].chief.NIM << ")";

38 cout << "\nMember : ";

39

40 for(int j=0;j<2;++j)

41 {

42 cout << "\n\t" << group[i].member[j].name;

43 cout << " (" << group[i].member[j].NIM << ")";

44 }

45 }

46 return 0;

47 }

Je laskan has i l ke lua ran p rogram,

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

3. Mengirimkan structure ke suatu fungsi

1 #include <iostream.h>

2

3 struct mailingListRecord{

4 char name[20];

5 char address[50];

6 char city[20];

Page 45: Chika   tutorial c++ - ver 3 2009 2

45

7 int zipcode;

8 };

9

10 void displayRecord(int, mailingListRecord);

11

12 int main()

13 {

14 //Create an array of mailingListRecord structures

15

16 mailingListRecord listArray[3];

17 int index = 0;

18

19 //Get three record

20 do

21 {

22 cout << "Name: ";

23 cin.getline(listArray[index].name,sizeof(listArray[index].name));

24 cout << "Address: ";

25 cin.getline(listArray[index].address,sizeof(listArray[index].address));

26 cout << "City: ";

27 cin.getline(listArray[index].city,sizeof(listArray[index].city));

28 char buff[10];

29 cout << "Zip Code: ";

30 cin.getline(buff, sizeof(buff));

31 listArray[index].zipcode = atoi(buff);

32 index++;

33 cout << endl;

34 }

35 while(index<3);

36

37 //Display the three records

38 for(int i=0;i<3;i++)

39 displayRecord(i, listArray[i]);

40

41

42

43 return 0;

44 }

45

46 void displayRecord(int num, mailingListRecord mlRec)

47 {

48 cout << "Record " << num+1 << " : " << endl;

49 cout << "Name : " << mlRec.name << endl;

50 cout << "Address : " << mlRec.address << endl;

Page 46: Chika   tutorial c++ - ver 3 2009 2

46

51 cout << "City : " << mlRec.city << endl;

52 cout << "Zip code: " << mlRec.zipcode << endl;

53 }

Je laskan perbedaan anta ra in s t ruks i c in dan c in .get l ine . Apa fungs i dar i s i zeof pada paramete r

kedua get l ine . Catat has i l ke lua ran p rogram,

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

4. Pointer dan Structure

1 #include <iostream.h>

2

3 main()

4 {

5 struct bin

6 {

7 char name[30];

8 int quantity;

9 int cost;

10 };

11 struct bin printer_cable_box = {"Printer cables",0,1295};

12 struct bin *pt_stru;

13

14 pt_stru=&printer_cable_box;

15

16 cout << "Name : " << pt_stru->name << endl;

17 cout << "Quantity : " << pt_stru->quantity << endl;

18 cout << "Cost : " << pt_stru->cost << endl;

19 return 0;

20 }

Je laskan a r t i i n s t ruks i pada bar i s 11 , 12 dan 14 .

Page 47: Chika   tutorial c++ - ver 3 2009 2

47

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

5. Mengatur alokasi memori suatu structure

Besar byte yang digunakan oleh suatu structure dapat dihitung dengan fungsi :

sizeof(nama_structure)

Alamat atau alokasi memori dari suatu structure dapat ditentukan dengan fungsi malloc( ), yang memiliki

bentuk : (nama_structure *) malloc (sizeof(nama_structure)

1 #include <iostream.h>

2

3 main()

4 {

5 struct pgw

6 {

7 char nama[20];

8 int gaji;

9 }*ptr;

10

11 //Menampilkan ukuran struktur dengan sizeof

12 cout << "Ukuran struktur pgw : " << sizeof(pgw);

13

14 //Menggerakkan pointer dengan malloc

15 cout << "\n\nLokasi memori untuk tiga data structure : ";

16 for(int i=0;i<3;++i)

17 {

18 ptr=(pgw *) malloc(sizeof(pgw));

19 cout << "\nLokasi memori structure ke " << i+1 << " adalah " << ptr;

20 }

21 return 0;

22 }

Je laskan ke luaran dar i p rogram

Page 48: Chika   tutorial c++ - ver 3 2009 2

48

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

________________________________________________________________________________________

6. Linkage List

Dalam suatu array, pada umumnya tidak seluruh elemen array digunakan. Misalkan didefinisikan 30 buah

elemen array, dan pada prakteknya hanya digunakan 10 elemen, berarti terdapat 20 elemen yang sia-

sia karena tidak digunakan.

Masalah ini dapat diatasi dengan menggunakan LINKAGE LIST, yang pada prinsipnya mencantumkan

alamat dari elemen berikutnya di dalam elemen sebelumnya.

Cara menentukan alamat dari elemen berikutnya menggunakan fungsi malloc(). Dengan fungsi malloc(),

array tidak perlu lagi dideklarasikan, komputer tidak perlu menyediakan sejumlah memori untuk elemen-

elemen array dengan kemungkinan tidak digunakan. Penggunaan memori sesuai dengan kebutuhan

saja.

Page 49: Chika   tutorial c++ - ver 3 2009 2

49

Bab 6 Pointer dan String

1. Menggunakan pointer

1

2 // Using the & and * operators

3 #include <iostream.h>

4

5 int main()

6 {

7 int a; // a is an integer

8 int *aPtr; // aPtr is a pointer to an integer

9

10 a = 7;

11 aPtr = &a; // aPtr set to address of a

12

13 cout << "The address of a is " << &a

14 << "\nThe value of aPtr is " << aPtr;

15

16 cout << "\n\nThe value of a is " << a

17 << "\nThe value of *aPtr is " << *aPtr;

18

19 cout << "\n\nShowing that * and & are inverses of "

20 << "each other.\n&*aPtr = " << &*aPtr

21 << "\n*&aPtr = " << *&aPtr << endl;

Page 50: Chika   tutorial c++ - ver 3 2009 2

50

22 return 0;

23 }

Setelah menjalankan program di atas, jelaskan apa yang dimaksud dengan karakter '*' dan '&' dalam

penggunaan pointer :

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

2. Menggunakan pointer untuk melewatkan argument ke fungsi sebagai referensi (pass by

reference)

Page 51: Chika   tutorial c++ - ver 3 2009 2

51

1

2 // Cube a variable using call-by-value

3 #include <iostream.h>

4

5 int cubeByValue( int ); // prototype

6

7 int main()

8 {

9 int number = 5;

10

11 cout << "The original value of number is " << number;

12 number = cubeByValue( number );

13 cout << "\nThe new value of number is " << number << endl;

Page 52: Chika   tutorial c++ - ver 3 2009 2

52

14 return 0;

15 }

16

17 int cubeByValue( int n )

18 {

19 return n * n * n; // cube local variable n

20 }

1

2 // Cube a variable using call-by-reference

3 // with a pointer argument

4 #include <iostream.h>

5

6 void cubeByReference( int * ); // prototype

7

8 int main()

9 {

10 int number = 5;

11

12 cout << "The original value of number is " << number;

13 cubeByReference( &number );

14 cout << "\nThe new value of number is " << number << endl;

15 return 0;

16 }

17

18 void cubeByReference( int *nPtr )

19 {

20 *nPtr = *nPtr * *nPtr * *nPtr; // cube number in main

21 }

Amati dua program diatas, kemudian jelaskan perbedaan penggunaan variabel dengan call-by-reference

dengan penggunaan variabel dengan call by value (sudah pernah dibahas di praktikum sebelumnya)!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

Page 53: Chika   tutorial c++ - ver 3 2009 2

53

1

2

3

4 #include <iostream.h>

5 #include <ctype.h>

6

7 void convertToUppercase( char * );

8

9 int main()

10 {

11 char string[] = "characters and $32.98";

12

13 cout << "The string before conversion is: " << string;

14 convertToUppercase( string );

15 cout << "\nThe string after conversion is: "

16 << string << endl;

17 return 0;

18 }

19

20 void convertToUppercase( char *sPtr )

21 {

22 while ( *sPtr != '\0' ) {

23

24 if ( *sPtr >= 'a' && *sPtr <= 'z' )

25 *sPtr = toupper( *sPtr ); // convert to uppercase

26

27 ++sPtr; // move sPtr to the next character

28 }

29 }

Jelaskan apa yang dilakukan program di atas, jelaskan juga mengapa perlu penggunaan library ctype.h!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

Page 54: Chika   tutorial c++ - ver 3 2009 2

54

3. Memahami hubungan erat antara pointer, array dan string

1

2

3

4 #include <iostream.h>

5 #include <iomanip.h>

6

7 void bubbleSort( int *, const int );

8

9 int main()

10 {

11 const int arraySize = 10;

12 int a[ arraySize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };

13 int i;

14

15 cout << "Data items in original order\n";

16

17 for ( i = 0; i < arraySize; i++ )

18 cout << setw( 4 ) << a[ i ];

19

20 bubbleSort( a, arraySize ); // sort the array

21 cout << "\nData items in ascending order\n";

22

23 for ( i = 0; i < arraySize; i++ )

24 cout << setw( 4 ) << a[ i ];

25

26 cout << endl;

27 return 0;

28 }

29

30 void bubbleSort( int *array, const int size )

31 {

32 void swap( int *, int * );

33

34 for ( int pass = 0; pass < size - 1; pass++ )

35

36 for ( int j = 0; j < size - 1; j++ )

37

38 if ( array[ j ] > array[ j + 1 ] )

39 swap( &array[ j ], &array[ j + 1 ] );

40 }

41

42 void swap( int *element1Ptr, int *element2Ptr )

43 {

44 int hold = *element1Ptr;

45 *element1Ptr = *element2Ptr;

46 *element2Ptr = hold;

47 }

Page 55: Chika   tutorial c++ - ver 3 2009 2

55

Catat hasil keluaran dari program di atas, dan jelaskan apa yang dilakukan program tersebut!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

1

2 // Copying a string using array notation

3 // and pointer notation.

4 #include <iostream.h>

5

6 void copy1( char *, const char * );

7 void copy2( char *, const char * );

8

9 int main()

10 {

11 char string1[ 10 ], *string2 = "Hello",

12 string3[ 10 ], string4[] = "Good Bye";

13

14 copy1( string1, string2 );

15 cout << "string1 = " << string1 << endl;

16

17 copy2( string3, string4 );

18 cout << "string3 = " << string3 << endl;

19

20 return 0;

21 }

22

23 // copy s2 to s1 using array notation

Page 56: Chika   tutorial c++ - ver 3 2009 2

56

24 void copy1( char *s1, const char *s2 )

25 {

26 for ( int i = 0; ( s1[ i ] = s2[ i ] ) != '\0'; i++ )

27 ; // do nothing in body

28 }

29

30 // copy s2 to s1 using pointer notation

31 void copy2( char *s1, const char *s2 )

32 {

33 for ( ; ( *s1 = *s2 ) != '\0'; s1++, s2++ )

34 ; // do nothing in body

35 }

Catat keluaran program di atas, kemudian jelaskan perbedaan proses menyalin string dengan menggunakan

array dibandingkan dengan menggunakan pointer!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

4. Memahami penggunaan pointer ke fungsi

1

2

3 #include <iostream.h>

4 void function1( int );

5 void function2( int );

6 void function3( int );

7

8 int main()

9 {

10 void (*f[ 3 ])( int ) = { function1, function2, function3 };

11 int choice;

12

Page 57: Chika   tutorial c++ - ver 3 2009 2

57

13 cout << "Enter (0/1/2), 3 to end: ";

14 cin >> choice;

15

16 while ( choice >= 0 && choice < 3 ) {

17 (*f[ choice ])( choice );

18 cout << "Enter a number between 0 and 2, 3 to end: ";

19 cin >> choice;

20 }

21

22 cout << "Program execution completed." << endl;

23 return 0;

24 }

25

26 void function1( int a )

27 {

28 cout << "You entered " << a

29 << " so function1 was called\n\n";

30 }

31

32 void function2( int b )

33 {

34 cout << "You entered " << b

35 << " so function2 was called\n\n";

36 }

37

38 void function3( int c )

39 {

40 cout << "You entered " << c

41 << " so function3 was called\n\n";

42 }

Jelaskan baris 10 dan baris 17 dari program di atas!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

Program di atas menggunakan array pointer atau array fungsi? Jelaskan!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

Page 58: Chika   tutorial c++ - ver 3 2009 2

58

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

5. Mendeklarasikan dan menggunakan array string

1

2 // Using strcpy and strncpy

3 #include <iostream.h>

4 #include <string.h>

Page 59: Chika   tutorial c++ - ver 3 2009 2

59

5

6 int main()

7 {

8 char x[] = "Happy Birthday to You";

9 char y[ 25 ], z[ 15 ];

10

11 cout << "The string in array x is: " << x

12 << "\nThe string in array y is: " << strcpy( y, x )

13 << '\n';

14 strncpy( z, x, 14 ); // does not copy null character

15 z[ 14 ] = '\0';

16 cout << "The string in array z is: " << z << endl;

17

18 return 0;

19 }

Catat keluaran program, lalu jelaskan penggunaan strcpy dan strncpy (untuk melakukan proses apa), dan

terangkan perbedaannya!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

1

2 // Using strcat and strncat

3 #include <iostream.h>

4 #include <string.h>

5

6 int main()

7 {

8 char s1[ 20 ] = "Happy ";

9 char s2[] = "New Year ";

10 char s3[ 40 ] = "";

11

12 cout << "s1 = " << s1 << "\ns2 = " << s2;

13 cout << "\nstrcat(s1, s2) = " << strcat( s1, s2 );

14 cout << "\nstrncat(s3, s1, 6) = " << strncat( s3, s1, 6 );

15 cout << "\nstrcat(s3, s1) = " << strcat( s3, s1 ) << endl;

16

17 return 0;

18 }

Page 60: Chika   tutorial c++ - ver 3 2009 2

60

Catat keluaran program, lalu jelaskan penggunaan strcat dan strncat, dan terangkan perbedaannya!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

1

2 // Using strcmp and strncmp

3 #include <iostream.h>

4 #include <iomanip.h>

5 #include <string.h>

6

7 int main()

8 {

9 char *s1 = "Happy New Year";

10 char *s2 = "Happy New Year";

11 char *s3 = "Happy Holidays";

12

13 cout << "s1 = " << s1 << "\ns2 = " << s2

14 << "\ns3 = " << s3 << "\n\nstrcmp(s1, s2) = "

15 << setw( 2 ) << strcmp( s1, s2 )

16 << "\nstrcmp(s1, s3) = " << setw( 2 )

17 << strcmp( s1, s3 ) << "\nstrcmp(s3, s1) = "

18 << setw( 2 ) << strcmp( s3, s1 );

19

20 cout << "\n\nstrncmp(s1, s3, 6) = " << setw( 2 )

21 << strncmp( s1, s3, 6 ) << "\nstrncmp(s1, s3, 7) = "

22 << setw( 2 ) << strncmp( s1, s3, 7 )

23 << "\nstrncmp(s3, s1, 7) = "

24 << setw( 2 ) << strncmp( s3, s1, 7 ) << endl;

25 return 0;

26 }

Catat keluaran program, lalu jelaskan penggunaan strcmp dan strncmp, dan terangkan perbedaannya!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

Page 61: Chika   tutorial c++ - ver 3 2009 2

61

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

1

2 // Using strtok

3 #include <iostream.h>

4 #include <string.h>

5

6 int main()

7 {

8 char string[] = "This is a sentence with 7 tokens";

9 char *tokenPtr;

10

11 cout << "The string to be tokenized is:\n" << string

12 << "\n\nThe tokens are:\n";

13

14 tokenPtr = strtok( string, " " );

15

16 while ( tokenPtr != NULL ) {

17 cout << tokenPtr << '\n';

18 tokenPtr = strtok( NULL, " " );

19 }

20

21 return 0;

22 }

Catat keluaran program, lalu jelaskan penggunaan strtok!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

1

2 // Using strlen

3 #include <iostream.h>

Page 62: Chika   tutorial c++ - ver 3 2009 2

62

4 #include <string.h>

5

6 int main()

7 {

8 char *string1 = "abcdefghijklmnopqrstuvwxyz";

9 char *string2 = "four";

10 char *string3 = "Boston";

11

12 cout << "The length of \\"" << string1

13 << "\\" is " << strlen( string1 )

14 << "\nThe length of \\"" << string2

15 << "\\" is " << strlen( string2 )

16 << "\nThe length of \\"" << string3

17 << "\\" is " << strlen( string3 ) << endl;

18

19 return 0;

20 }

Catat keluaran program, lalu jelaskan penggunaan strlen!

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

__________________________________________________________________________________________________________

Page 63: Chika   tutorial c++ - ver 3 2009 2

63

Bab 7 Pointer dan String (Lanjut)

1. Memahami konsep pointer konstan dan tidak konstan, data konstan dan tidak konstan

1

2 // Printing a string one character at a time using

3 // a non-constant pointer to constant data

4 #include <iostream.h>

5

6 void printCharacters( const char * );

7

8 int main()

9 {

10 char string[] = "print characters of a string";

11

12 cout << "The string is:\n";

13 printCharacters( string );

14 cout << endl;

15 return 0;

16 }

17

18 // In printCharacters, sPtr is a pointer to a character

19 // constant. Characters cannot be modified through sPtr

20 // (i.e., sPtr is a "read-only" pointer).

21 void printCharacters( const char *sPtr )

22 {

23 for ( ; *sPtr != '\0'; sPtr++ ) // no initialization

24 cout << *sPtr;

25 }

Jelaskan apa yang terjadi jika karakter konstanta di akses menggunakan sPtr?

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

1

2 // Attempting to modify data through a

3 // non-constant pointer to constant data.

Page 64: Chika   tutorial c++ - ver 3 2009 2

64

4 #include <iostream.h>

5

6 void f( const int * );

7

8 int main()

9 {

10 int y;

11

12 f( &y ); // f attempts illegal modification

13

14 return 0;

15 }

16

17 // In f, xPtr is a pointer to an integer constant

18 void f( const int *xPtr )

19 {

20 *xPtr = 100; // cannot modify a const object

21 }

Jelaskan apa yang terjadi jika pointer tidak konstan mencoba mengubah nilai data yang konstan?

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

20

21 // Attempting to modify a constant pointer to

22 // non-constant data

23 #include <iostream.h>

24

25 int main()

26 {

27 int x, y;

28

29 int * const ptr = &x; // ptr is a constant pointer to an

30 // integer. An integer can be modified

31 // through ptr, but ptr always points

32 // to the same memory location.

33 *ptr = 7;

34 ptr = &y;

35

36 return 0;

Page 65: Chika   tutorial c++ - ver 3 2009 2

65

37 }

Jelaskan apa yang terjadi jika pointer konstan menunjuk data yang tidak konstan?

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

1

2 // Attempting to modify a constant pointer to

3 // constant data.

4 #include <iostream.h>

5

6 int main()

7 {

8 int x = 5, y;

9

10 const int *const ptr = &x; // ptr is a constant pointer to a

11 // constant integer. ptr always

12 // points to the same location

13 // and the integer at that

14 // location cannot be modified.

15 cout << *ptr << endl;

16 *ptr = 7;

17 ptr = &y;

18

19 return 0;

20 }

Jelaskan juga apa yang terjadi jika pointer konstan menunjuk data yang juga konstan?

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

Page 66: Chika   tutorial c++ - ver 3 2009 2

66

2. Memahami penggunaan perintah sizeof

1

2 // Sizeof operator when used on an array name

3 // returns the number of bytes in the array.

4 #include <iostream.h>

5

6 size_t getSize( float * );

7

8 int main()

9 {

10 float array[ 20 ];

11

12 cout << "The number of bytes in the array is "

13 << sizeof( array )

14 << "\nThe number of bytes returned by getSize is "

15 << getSize( array ) << endl;

16

17 return 0;

18 }

19

20 size_t getSize( float *ptr )

21 {

22 return sizeof( ptr );

23 }

Informasi apa yang diberikan oleh perintah sizeof?

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

1

2 // Demonstrating the sizeof operator

3 #include <iostream.h>

4 #include <iomanip.h>

5

6 int main()

7 {

8 char c;

Page 67: Chika   tutorial c++ - ver 3 2009 2

67

9 short s;

10 int i;

11 long l;

12 float f;

13 double d;

14 long double ld;

15 int array[ 20 ], *ptr = array;

16

17 cout << "sizeof c = " << sizeof c

18 << "\ sizeof(char) = " << sizeof( char )

19 << "\nsizeof s = " << sizeof s

20 << "\ sizeof(short) = " << sizeof( short )

21 << "\nsizeof i = " << sizeof i

22 << "\ sizeof(int) = " << sizeof( int )

23 << "\nsizeof l = " << sizeof l

24 << "\ sizeof(long) = " << sizeof( long )

25 << "\nsizeof f = " << sizeof f

26 << "\ sizeof(float) = " << sizeof( float )

27 << "\nsizeof d = " << sizeof d

28 << "\ sizeof(double) = " << sizeof( double )

29 << "\nsizeof ld = " << sizeof ld

30 << "\ sizeof(long double) = " << sizeof( long double )

31 << "\nsizeof array = " << sizeof array

32 << "\nsizeof ptr = " << sizeof ptr

33 << endl;

34 return 0;

35 }

Catat hasil keluaran program di atas. Untuk apa kita perlu mengetahui ukuran dari setiap tipe data?

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

Page 68: Chika   tutorial c++ - ver 3 2009 2

68

_________________________________________________________________________________________

3. Memahami penggunaan pointer dengan array

1

2 // Using subscripting and pointer notations with arrays

3

4 #include <iostream.h>

5

6 int main()

7 {

8 int b[] = { 10, 20, 30, 40 };

9 int *bPtr = b; // set bPtr to point to array b

10

11 cout << "Array b printed with:\n"

12 << "Array subscript notation\n";

13

14 for ( int i = 0; i < 4; i++ )

15 cout << "b[" << i << "] = " << b[ i ] << '\n';

16

17

18 cout << "\nPointer/offset notation where\n"

19 << "the pointer is the array name\n";

20

21 for ( int offset = 0; offset < 4; offset++ )

22 cout << "*(b + " << offset << ") = "

23 << *( b + offset ) << '\n';

24

25

26 cout << "\nPointer subscript notation\n";

27

28 for ( i = 0; i < 4; i++ )

29 cout << "bPtr[" << i << "] = " << bPtr[ i ] << '\n';

30

31 cout << "\nPointer/offset notation\n";

32

33 for ( offset = 0; offset < 4; offset++ )

34 cout << "*(bPtr + " << offset << ") = "

35 << *( bPtr + offset ) << '\n';

36

37 return 0;

38 }

Jelaskan apa yang dimaksud dengan offset? Jelaskan penggunaan offset dalam program di atas!

_________________________________________________________________________________________

Page 69: Chika   tutorial c++ - ver 3 2009 2

69

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

1

2 // Card shuffling and dealing program

3 #include <iostream.h>

4 #include <iomanip.h>

5 #include <stdlib.h>

6 #include <time.h>

7

8 void shuffle( int [][ 13 ] );

9 void deal( const int [][ 13 ], const char *[], const char *[] );

10

11 int main()

12 {

13 const char *suit[ 4 ] =

14 { "Hearts", "Diamonds", "Clubs", "Spades" };

15 const char *face[ 13 ] =

16 { "Ace", "Deuce", "Three", "Four",

17 "Five", "Six", "Seven", "Eight",

18 "Nine", "Ten", "Jack", "Queen", "King" };

19 int deck[ 4 ][ 13 ] = { 0 };

20

21 srand( time( 0 ) );

22

23 shuffle( deck );

24 deal( deck, face, suit );

25

26 return 0;

27 }

28

29 void shuffle( int wDeck[][ 13 ] )

30 {

31 int row, column;

32

33 for ( int card = 1; card <= 52; card++ ) {

34 do {

35 row = rand() % 4;

36 column = rand() % 13;

37 } while( wDeck[ row ][ column ] != 0 );

38

Page 70: Chika   tutorial c++ - ver 3 2009 2

70

39 wDeck[ row ][ column ] = card;

40 }

41 }

42

43 void deal( const int wDeck[][ 13 ], const char *wFace[],

44 const char *wSuit[] )

45 {

46 for ( int card = 1; card <= 52; card++ )

47

48 for ( int row = 0; row <= 3; row++ )

49

50 for ( int column = 0; column <= 12; column++ )

51

52 if ( wDeck[ row ][ column ] == card )

53 cout << setw( 5 ) << setiosflags( ios::right )

54 << wFace[ column ] << " of "

55 << setw( 8 ) << setiosflags( ios::left )

56 << wSuit[ row ]

57 << ( card % 2 == 0 ? '\n' : '\ ' );

58 }

Jelaskan dengan singkat, apa yang dilakukan oleh program di atas? Apa yang dilakukan oleh fungsi rand()?

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

Page 71: Chika   tutorial c++ - ver 3 2009 2

71

Page 72: Chika   tutorial c++ - ver 3 2009 2

72

4. Memahami penggunaan pointer fungsi

1

2 // Multipurpose sorting program using function pointers

3 #include <iostream.h>

4 #include <iomanip.h>

5

6 void bubble( int [], const int, int (*)( int, int ) );

7 int ascending( int, int );

8 int descending( int, int );

9

10 int main()

11 {

12 const int arraySize = 10;

13 int order,

14 counter,

15 a[ arraySize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };

16

17 cout << "Enter 1 to sort in ascending order,\n"

18 << "Enter 2 to sort in descending order: ";

19 cin >> order;

20 cout << "\nData items in original order\n";

21

22 for ( counter = 0; counter < arraySize; counter++ )

23 cout << setw( 4 ) << a[ counter ];

24

25 if ( order == 1 ) {

26 bubble( a, arraySize, ascending );

27 cout << "\nData items in ascending order\n";

28 }

29 else {

30 bubble( a, arraySize, descending );

31 cout << "\nData items in descending order\n";

32 }

33

34 for ( counter = 0; counter < arraySize; counter++ )

35 cout << setw( 4 ) << a[ counter ];

36

37 cout << endl;

38 return 0;

39 }

40

41 void bubble( int work[], const int size,

42 int (*compare)( int, int ) )

43 {

Page 73: Chika   tutorial c++ - ver 3 2009 2

73

44 void swap( int *, int * );

45

46 for ( int pass = 1; pass < size; pass++ )

47

48 for ( int count = 0; count < size - 1; count++ )

49

50 if ( (*compare)( work[ count ], work[ count + 1 ] ) )

51 swap( &work[ count ], &work[ count + 1 ] );

52 }

53

54 void swap( int *element1Ptr, int *element2Ptr )

55 {

56 int temp;

57

58 temp = *element1Ptr;

59 *element1Ptr = *element2Ptr;

60 *element2Ptr = temp;

61 }

62

63 int ascending( int a, int b )

64 {

65 return b < a; // swap if b is less than a

66 }

67

68 int descending( int a, int b )

69 {

70 return b > a; // swap if b is greater than a

71 }

Jelaskan dengan singkat, apa yang dilakukan oleh program di atas? Fungsi swap() menggunakan call by value atau call

by reference?

_________________________________________________________________________________________

_________________________________________________________________________________________

_________________________________________________________________________________________

Page 74: Chika   tutorial c++ - ver 3 2009 2

74

Bab 8 Kelas dan Data Abstraksi

1. Membuat Objek dalam Bahasa Pemrograman C++

1 #include <iostream>

2

3 using namespace std;

4

5 class Car

6 {

7 char model[30];

8 float price;

9 int mileage;

10

11 public :

12 void accept()

13 {

14 cout << "\n\nEnter the model of the car : ";

15 cin >> model;

16 cout << "Enter the price of the model : ";

17 cin >> price;

18 cout << "Enter mileage : ";

19 cin >> mileage;

20 }

21 void display()

22 {

23 cout << "\nThe model of Car is " << model;

24 cout << "\nThe price is " << price;

25 cout << "\nThe average mileage is " << mileage;

26 }

27 };

28

29 int main()

20 {

31 Car c[2];

32

33 c[0].accept();

34 c[0].display();

35 c[1].accept();

36 c[1].display();

37

38 return 0;

39 }

class Car pada program diatas memiliki 3 member variable dan 2 member function, sebutkan :

Page 75: Chika   tutorial c++ - ver 3 2009 2

75

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Jelaskan apa yang dimaksud dengan keyword public pada program di atas :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

1 #include <iostream>

2

3 using namespace std;

4

5 class Customer

6 {

7 private :

8 char mobileNo[13];

9 char name[26];

10 char dateOfBirth[11];

11 char billingAdd[51];

12 char city[26];

13 char phoneNo[14];

14 float amountOutstanding;

15

16 public :

17 void get()

18 {

19 cout << "\nMobile phone number : ";

20 cin >> mobileNo;

21 cout << "Name : ";

22 cin >> name;

23 cout << "Date of Birth : ";

Page 76: Chika   tutorial c++ - ver 3 2009 2

76

24 cin >> dateOfBirth;

25 cout << "Billing Address : ";

26 cin >> billingAdd;

27 cout << "City : ";

28 cin >> city;

29 cout << "Phone Number : ";

30 cin >> phoneNo;

31 cout << "Amount due : ";

32 cin >> amountOutstanding;

33 }

34 void print()

35 {

36 cout << "\nMobile phone number : " << mobileNo;

37 cout << "\nName : " << name;

38 cout << "\nDate of Birth : " << dateOfBirth;

39 cout << "\nBilling Address : " << billingAdd;

40 cout << "\nCity : " << city;

41 cout << "\nPhone Number : " << phoneNo;

42 cout << "\nAmount due : " << amountOutstanding;

43 }

44 };

45

46 int main()

47 {

48 Customer c;

49

50 c.get();

51 c.print();

52

53 return 0;

54 }

Jelaskan keyword private pada program di atas :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 77: Chika   tutorial c++ - ver 3 2009 2

77

Jika member variables pada program di atas tidak memiliki access specifier (public,/private/protected),

seperti pada program sebelumnya, lalu access specifier apa yang akan berlaku pada member variabel

tersebut?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

2. Memahami konsep enkapsulasi dan abstraksi

1 #include <iostream>

2

3 using namespace std;

4

5 class Car

6 {

7 private :

8 char model[21];

9 void honk()

10 {

11 cout << "Paaarp paarrrp!" << endl;

12 }

13 public :

14 void setModel()

15 {

16 cout << "Enter the model name : ";

17 cin >> model;

18 }

19 void displayModel()

20 {

21 cout << "The model is : " << model << endl;

22 }

23 };

24

25 int main()

26 {

27 Car ford;

28 ford.setModel();

29 ford.displayModel();

30

31 ford.honk();

32 cin >> ford.model;

33

34 return 0;

35 }

Page 78: Chika   tutorial c++ - ver 3 2009 2

78

Jalankan program di atas, lalu catat apa yang terjadi (beserta pesan kesalahan jika terjadi kesalahan) :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Apa yang terjadi jika baris 31 dan 32 dihilangkan? Catat keluaran program, lalu jelaskan mengapa demikian :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

3. Memahami konsep variabel statik dan fungsi statik

1 #include <iostream>

2

3 using namespace std;

4

5 class myclass

6 {

7 void increment()

8 {

9 static int i = 0;

10 cout << i << endl;

11 i++;

12 }

13 public :

14 void display()

15 {

16 cout << "Before increment : ";

17 increment();

18 cout << "After the first increment : ";

19 increment();

20 cout << "After the second increment : ";

Page 79: Chika   tutorial c++ - ver 3 2009 2

79

21 increment();

22 }

23 };

24

25 int main()

26 {

27 myclass m;

28 m.display();

29 return 0;

30 }

Jalankan program di atas lalu catat hasilnya :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Jelaskan apa yang dimaksud dengan variabel statik :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Jelaskan apa yang terjadi jika program di atas tidak menggunakan variabel statik. Seperti apa hasil keluaran

program?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

1 #include <iostream>

2

3 using namespace std;

4

5 class StaticExample

6 {

7 int data;

8 static int staticVar;

9

Page 80: Chika   tutorial c++ - ver 3 2009 2

80

10 public :

11 static void display()

12 {

13 cout << "staticVar = " << staticVar;

14 cout << "data = " << data;

15 }

16 };

17

18 int StaticExample::staticVar = 9;

19

20 int main()

21 {

22 StaticExample::display();

23 return 0;

24 }

Jalankan program di atas lalu catat hasilnya :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Apa yang dimaksud dengan fungsi statik?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Kesimpulan apa yang dapat diambil dari program di atas?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

4. Memahami konsep akses friend

1 #include <iostream>

2

3 using namespace std;

4

5 class A

Page 81: Chika   tutorial c++ - ver 3 2009 2

81

6 {

7 private :

8 int a;

9 friend void f1();

10 };

11

12 void f1()

13 {

14 A obj;

15 obj.a = 5;

16 cout << obj.a;

17 }

18

19 void f2()

20 {

21 A obj;

22 obj.a = 5;

23 cout << obj.a;

24 }

25

26 int main()

27 {

28 f1();

29 f2();

30 return 0;

31 }

Program di atas menggunakan fungsi friend, jalankan program dan catat hasilnya :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Apakah terjadi kesalahan? Jika ya, catat pesan kesalahannya :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Apa yang terjadi jika baris 22 dan 23 dihilangkan?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 82: Chika   tutorial c++ - ver 3 2009 2

82

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Kesimpulan apa yang bisa diambil dari program di atas mengenai keyword friend?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

1 #include <iostream>

2

3 using namespace std;

4

5 class A

6 {

7 private :

8 int i;

9 public :

10 friend class B;

11 };

12

13 class B

14 {

15 public :

16 void func()

17 {

18 A a;

19 cout << "The value of i in class A is : " << a.i << endl;

20 }

21 };

22

23 int main()

24

25 B b;

26 b.func();

27

28 return 0;

29 }

Program di atas menggunakan kelas friend, jalankan program dan catat hasilnya :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 83: Chika   tutorial c++ - ver 3 2009 2

83

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Mengapa kelas B bisa mengakses member variable yang bersifat private pada kelas A? Jelaskan :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Kesimpulan apa yang bisa diambil dari program di atas?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 84: Chika   tutorial c++ - ver 3 2009 2

84

Bab 9 Constructor dan Destructor

1. Mengidentifikasi kegunaan constructor

Setiap suatu objek dibuat, maka sejumlah memori akan dialokasikan untuk objek tersebut. Tetapi proses

pengalokasian memori tidak melakukan inisialisasi terhadap variabel yang terdapat pada objek yang dibuat.

Variabel yang terdapat dalam suatu class tidak dapat diinisialisasi pada saat pendeklarasian.

Penginisialisasian variabel seperti dibawah ini tidak dapat dilakukan:

class Calculator

{

int number1 = 10;

int number2 = 20;

}

Hal ini dapat dipecahkan dengan membuat fungsi untuk menginisialisasi harga awal (initial value) setiap

variabel. Fungsi ini kemudian dapat dipanggil segera setelah objek dibuat.

1 #include <iostream>

2

3 using namespace std;

4

5 class Calculator

6 {

7 private:

8 int number1, number2, tot;

9 public:

10 void initialize()

11 {

12 number1 = 10;

13 number2 = 20;

14 }

15

16 void add()

17 {

18 tot = number1 + number2;

19 }

20

21 void display()

22 {

23 cout << "The total is " << tot << endl;

24 }

25 };

26

27 int main()

Page 85: Chika   tutorial c++ - ver 3 2009 2

85

28 {

29 Calculator c;

30 c.initialize();

31 c.add();

32 c.display();

33 return 0;

34 }

Ketik program di atas dan jalankan. class Calculator harus memanggil fungsi initialize() untuk

menginisialisasi number1 dan number2. Jelaskan apa yang terjadi jika fungsi initialize() tidak dipanggil?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

2. Mendeklarasikan constructor

Untuk memecahkan masalah pada program sebelumnya, C++ memungkinkan pembuatan suatu fungsi

khusus di dalam class yang akan selalu dijalankan setiap kali suatu objek dari class tersebut dibuat. Fungsi ini

disebut constructor. Constructor adalah member function dari suatu class yang akan dipanggil setiap suatu

instance dari class yang mendeklarasikan constructor tersebut dibuat. Yang membedakan constructor

dengan member function yang lain adalah constructor memiliki nama yang sama dengan nama class yang

mendeklarasikannya. Dalam mendeklarasikan constructor tidak perlu menspesifikasikan tipe nilai kembalian

(return value) karena constructor tidak mengembalikan nilai.

1 #include <iostream>

2

3 using namespace std;

4

5 class Calculator

6 {

7 private:

8 int number1, number2, tot;

9 public:

10 Calculator()

11 {

12 number1 = 10;

13 number2 = 20;

14 cout << "Constructor invoked\n";

15 }

16

17 void add()

18 {

Page 86: Chika   tutorial c++ - ver 3 2009 2

86

19 tot = number1 + number2;

20 }

21

22 void display()

23 {

24 cout << "The total is " << tot;

25 }

26 };

27

28 int main()

29 {

30 Calculator c;

31 c.add();

32 c.display();

33 return 0;

34 }

Bandingkan program di atas dengan program sebelumnya. Sebutkan baris mana saja yang berubah :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Tuliskan hasil keluaran program, dan kesimpulan apa yang dapat diambil dari program tersebut :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Ada satu keadaan dimana constructor dari suatu kelas tidak secara otomatis dipanggil iuntuk

menginisialisasi suatu objek class yang baru dibuat. Hal ini terjadi jika suatu objek digunakan untuk

menginisialisasi objek lain, seperti contoh dibawah ini :

Calculator obj1;

obj1.input();

Page 87: Chika   tutorial c++ - ver 3 2009 2

87

Calculator obj2 = obj1;

Dengan cara seperti di atas maka obj2 dibuat sebagai bit-by-bit copy dari obj1. Hal seperti ini disebut

sebagai memberwise initialization.

3. Mengidentifikasi kegunaan destructor

Destructor merupakan komplemen dari constructor. Destructor dipanggil pada saat sebuah instance dari

sebuah objek berakhir keberadaannya. Destructor melakukan de-inisialisasi suatu objek yang sudah tidak

digunakan lagi. Destructor akan secara otomatis dipanggil jika objek dari suatu kelas keluar dari scope-nya.

Dengan menggunakan destructor, programer tidak perlu membersihkan memori yang telah digunakan oleh

data member setiap kali suatu objek keluar dari scope.

4. Mendeklarasikan destructor

Destructor memiliki nama yang sama dengan kelas yang mendeklarasikannya, tapi diawali dengan

tanda ~ (tilde). Setiap class hanya boleh memiliki satu destructor. Destructor tidak dapat menspesifikasikan

nilai kembalian (return value) atau secara eksplisit mengembalikan nilai.

Berikut adalah contoh penggunaan destructor :

1 #include <iostream>

2

3 using namespace std;

4

5 class Calculator

6 {

7 private:

8 int number1, number2, tot;

9 public:

10 Calculator()

11 {

12 number1 = 10;

13 number2 = 20;

14 cout << "Constructor invoked";

15 cout << "\nNumber1 = " << number1;

16 cout << "\nNumber2 = " << number2;

17 }

18

19 void add()

20 {

21 tot = number1 + number2;

22 }

23

24 void display()

25 {

26 cout << "\nThe total is " << tot;

27 }

Page 88: Chika   tutorial c++ - ver 3 2009 2

88

28

29 ~Calculator()

30 {

31 number1 = 0;

32 number2 = 0;

33 cout << "\nDestructor invoked";

34 cout << "\nNumber1 = " << number1;

35 cout << "\nNumber2 = " << number2;

36 }

37 };

38

39 int main()

40 {

41 Calculator c;

42 c.add();

43 c.display();

44 return 0;

45 }

Tuliskan hasil keluaran dari program diatas :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Destructor juga dapat dipanggil secara eksplisit seperti contoh dibawah ini :

Calculator obj;

Obj.~Calculator();

Tapi sebenarnya destructor tidak perlu dipanggil secara eksplisit karena sistem akan secara otomatis

memanggil destructor ketika suatu objek keluar dari scope. Memanggil destructor secara eksplisit adalah

teknik yang digunakan pada skenario pemrograman lanjut, bukan ditujukan untuk pemula.

Berikut ini adalah contoh program untuk mengenali scope dari life cycle suatu objek :

1 #include <iostream>

2

3 using namespace std;

4

5 class Test

6 {

Page 89: Chika   tutorial c++ - ver 3 2009 2

89

7 public:

8 Test()

9 {

10 cout << "\nConstructor invoked";

11 }

12 ~Test()

13 {

14 cout << "\nDestructor invoked";

15 }

16 };

17

18 Test obj1;

19

20 int main()

21 {

22 cout << "\nmain begins";

23 Test obj2;

24 {

25 cout << "\nInner block begins";

26 Test obj3;

27 cout << "\nInner block ends";

28 }

29 }

Amati program diatas, tulis hasil keluarannya, serta beri penjelasan mengenai scope dan pemanggilan

constructor serta destructor :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 90: Chika   tutorial c++ - ver 3 2009 2

90

5. Menggunakan scope resolution operator

Sebelumnya member function dan constructor dari suatu program didefinisikan di dalam blok class.

Fungsi-fungsi ini sebenarnya bisa didefinisikan di luar blok class dengan menggunakan scope resolution

operator (::) untuk membuat program lebih mudah dibaca. Berikut adalah contoh penggunaan scope

resolution operator :

1 #include <iostream>

2

3 using namespace std;

4

5 class Calculator

6 {

7 private:

8 int number1, number2, tot;

9 public:

10 Calculator();

11 void add();

12 void display();

13 ~Calculator();

14 };

15

16 Calculator::Calculator()

17 {

18 number1 = 10;

19 number2 = 20;

20 cout << "Constructor invoked";

21 cout << "\nNumber1 = " << number1;

22 cout << "\nNumber2 = " << number2;

23 }

24

25 void Calculator::add()

26 {

27 tot = number1 + number2;

28 }

29

30 void Calculator::display()

31 {

32 cout << "\nThe total is " << tot;

33 }

34

35 Calculator::~Calculator()

36 {

37 number1 = 0;

38 number2 = 0;

39 cout << "\nDestructor invoked";

40 cout << "\nNumber1 = " << number1;

41 cout << "\nNumber2 = " << number2;

Page 91: Chika   tutorial c++ - ver 3 2009 2

91

42 }

43

44 int main()

45 {

46 Calculator c;

47 c.add();

48 c.display();

49 return 0;

50 }

Jelaskan apa kegunaan baris 10 – 13 pada program di atas?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

6. Menggunakan constructor dengan parameter

Suatu objek dapat diinisialisasi dengan menggunakan default constructor dengan nilai yang ditentukan

secara hard-coded di dalam program. Tetapi bisa saja berlaku suatu keadaan dimana variabel harus di set

dengan nilai yang dimasukkan oleh user. Untuk menangani masalah seperti ini sebuah constructor dapat

dimodifikasi untuk menerima nilai yang dimasukkan oleh user pada saat program dijalankan (run-time).

Berikut adalah contoh penggunaan constructor dengan parameter :

1 #include <iostream>

2

3 using namespace std;

4

5 class Calculate

6 {

7 private:

8 int num1, num2, total;

9 public:

10 Calculate(int, int);

11 void sum();

12 };

13

14 Calculate::Calculate(int x, int y)

15 {

16 num1 = x;

17 num2 = y;

18 total = 0;

19 }

Page 92: Chika   tutorial c++ - ver 3 2009 2

92

20

21 void Calculate::sum()

22 {

23 total = num1 + num2;

24 cout << "The sum of " << num1 << " + " << num2 << " = " << total;

25 }

26

27 int main()

28 {

29 int var1, var2;

30

31 cout << "Enter the first value : ";

32 cin >> var1;

33 cout << "Enter the second value : ";

34 cin >> var2;

35 Calculate c(var1, var2);

36 c.sum();

37 return 0;

38 }

Jalankan program di atas, lalu tuliskan keluarannya.

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Kesimpulan apa yang dapat diambil dari program di atas? Jelaskan perbedaan antara constructor dengan

parameter dengan constructor tanpa parameter. Apa yang dimaksud dengan default constructor?

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Seperti juga pada constructor, member function dari suatu class juga dapat menerima masukan nilai dari

fungsi main(), berikut contohnya :

1 #include <iostream>

Page 93: Chika   tutorial c++ - ver 3 2009 2

93

2

3 using namespace std;

4

5 class Add

6 {

7 int num1;

8 int num2;

9 int tot;

10

11 public:

12 void sum(int, int);

13 };

14

15 void Add::sum(int x, int y)

16 {

17 cout << "\nThe sum() function has started";

18 num1 = x;

19 num2 = y;

20 tot = num1 + num2;

21 cout << "\nSum is " << tot;

22 }

23

24 int main()

25 {

26 Add a;

27

28 cout << "\nThe main() function has started";

29 a.sum(17,14);

30 cout << "\nBack in main()";

31 a.sum(-9,-26);

32 cout << "\nThe main() function is now over";

33 return 0;

34 }

Jalankan program di atas, lalu tuliskan keluarannya.

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Amati dan jelaskan apa yang dilakukan program di atas

___________________________________________________________________________________________________________

Page 94: Chika   tutorial c++ - ver 3 2009 2

94

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 95: Chika   tutorial c++ - ver 3 2009 2

95

Bab 10 Polymorphism

1. Mengidentifikasi kegunaan constructor

Static Polymorphism

Misalkan seseorang ingin mengirim barang ke Alaska. Ia menggunakan jasa kurir untuk mengirim barang

tersebut. Jasa kurir kemudian akan melakukan kontak dengan cabang mereka yang berada di Alaska.

Misalkan orang tersebut terlalu sibuk, lalu ia memberitahu sekretarisnya untuk mengirimkan barang

tersebut, tentu sekretarisnya akan melakukan hal yang berbeda dibandingkan dengan yang dilakukan

oleh kurir (si sekretaris akan menelfon jasa kurir dan menyampaikan pesan dari bos-nya yang akan

mengirimkan barang ke Alaska). Jadi, pesan yang sama untuk mengirimkan barang ke Alaska

menghasilkan dua reaksi yang berbeda. Kesimpulannya adalah, setiap perintah/pesan akan

diinterpretasikan berbeda, tergantung dari si penerima perintah/pesan tersebut. Konsep seperti ini disebut

sebagai polymorphism, yang menggambarkan bagaimana suatu objek dengan nama yang berbeda

(jasa kurir dan sekretaris) memberikan respon yang berbeda pada suatu perintah/pesan yang sama.

Kesimpulan :

a. Jika objek A ingin objek B melakukan sesuatu, objek A memberitahu objek B dengan mengirimkan

pesan b. Objek B melakukan serangkaian pekerjaan untuk mencapai tujuan yang diminta oleh objek A;

dengan kata lain, sebuah objek merespon suatu pesan dengan menggunakan sebuah method c. Objek yang berbeda dapat menggunakan method yang berbeda untuk pesan yang sama

Dalam pemrograman, polymorphism secara umum dibagi menjadi dua bagian, static polymorphism dan

dynamic polymorphism (tidak di bahas dalam praktikum ini). Static polymorphism menggambarkan suatu

entity yang dapat memiliki bentuk fisik yang berbeda secara simultan. Konsep seperti ini analog dengan

seorang wanita yang menjadi istri, ibu, adik, anak dan direktur dalam waktu yang bersamaan.

2. Meng-overload fungsi

Function Overloading

Function overloading adalah suatu proses menggunakan nama yang sama untuk dua atau lebih fungsi.

Setiap definisi ulang dari fungsi yang di overloading harus menggunakan tipe parameter, urutan

parameter, atau jumlah parameter yang berbeda. Jumlah, tipe atau urutan parameter dari suatu fungsi

disebut function signature. Jika kita memiliki sejumlah fungsi dengan nama yang sama, compiler akan

mengidentifikasi fungsi-fungsi tersebut berdasarkan parameternya. Keuntungan memiliki beberapa fungsi

dengan nama yang sama dapat dilihat pada program berikut :

1 #include <iostream>

2

3 using namespace std;

4

5 class Overload

Page 96: Chika   tutorial c++ - ver 3 2009 2

96

6 {

7 public:

8 int max(int, int);

9 float max(float, float);

10 };

11

12 int Overload::max(int num1, int num2)

13 {

14 if (num1 > num2)

15 return num1;

16 else

17 return num2;

18 }

19

20 float Overload::max(float num1, float num2)

21 {

22 if (num1 > num2)

23 return num1;

24 else

25 return num2;

26 }

27

28 int main()

29 {

30 Overload o;

31

32 cout << o.max(5.4F,8.6F) << endl;

33 cout << o.max(19,12) << endl;

34

35 return 0;

36 }

Catat hasil keluaran program di atas dan berikan kesimpulan mengenai kegunaan dari polymorphism :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 97: Chika   tutorial c++ - ver 3 2009 2

97

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Function Signature

Signature dari suatu fungsi didefinisikan dengan

a. Jumlah parameter yang dimiliki fungsi Contoh :

void add(int);

void add(int, float);

Pada contoh ini dua fungsi bernama add() ini berbeda karena jumlah parameternya berbeda

b. Tipe data parameter fungsi Contoh :

void display(int)

void display(char)

Pada contoh ini dua fungsi bernama display() ini berbeda karena tipe parameternya berbeda

c. Urutan tipe data dari parameter fungsi Contoh :

void display(int, char)

void display(char, int)

Pada contoh ini dua fungsi bernama display() ini berbeda karena urutan tipe parameternya

berbeda

d. Nilai return suatu fungsi TIDAK membedakan 2 fungsi dengan nama yang sama. Karena itu

deklarasi fungsi di bawah ini tidak bisa diletakkan dalam satu class yang sama void display()

char display()

Constructor Overloading

1 #include <iostream>

2

3 using namespace std;

4

5 class Calculator

6 {

7 private:

8 int number1, number2, tot;

9 public:

10 Calculator();

11 Calculator(int, int);

12 void input(int, int);

13 void add();

14 void disp();

15 };

Page 98: Chika   tutorial c++ - ver 3 2009 2

98

16

17 Calculator::Calculator()

18 {

19 number1 = number2 = tot = 0;

20 }

21

22 Calculator::Calculator(int num1, int num2)

23 {

24 number1 = num1;

25 number2 = num2;

26 }

27

28 void Calculator::input(int num1, int num2)

29 {

30 number1 = num1;

31 number2 = num2;

32 }

33

34 void Calculator::add()

35 {

36 tot = number1 + number2;

37 }

38

39 void Calculator::disp()

40 {

41 cout << "The sum of two numbers is " << tot << endl;

42 }

43

44 int main()

45 {

46 Calculator cal1;

47 Calculator cal2(4,3);

48 Calculator *calptr;

49 calptr = new Calculator(5,10);

50

51 cal2.add();

52

53 cal2.disp();

54 calptr->add();

55 calptr->disp();

56

57 delete calptr;

58 return 0;

59 }

Catat hasil keluaran program di atas dan berikan kesimpulan mengenai program diatas :

___________________________________________________________________________________________________________

Page 99: Chika   tutorial c++ - ver 3 2009 2

99

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

3. Memahami perlunya melakukan overloading operator

Konsep overloding fungsi dapat juga diterapkan pada operator. Yang dimaksud dengan operator

overloading adalah menambah fungsi dari operator C++ normal jika digunakan pada tipe data yang

didefinisikan oleh user (user-defined data types). Hanya operator C++ yang bersifat predefined yang dapat di

overload.

Dengan menggunakan operator overloading maka user dapat memahami notasi dengan lebih mudah

daripada dengan menggunakan fungsi karena lebih mendekati implementasi sebenarnya.

4. Meng-overload operator unary

Operator unary dapat didefinisikan sebagai member function yang tidak mengambil parameter atau

non-member function yang mengambil 1 parameter.

Berikut ini adalah contoh program sederhana untuk meng-overloading operator '-' :

1 #include <iostream>

2

3 using namespace std;

4

5 class MyOp

6 {

7 private:

8 int a;

9 int b;

10 public:

11 void operator -();

12 void accept(int, int);

13 void print();

14 };

15

16 void MyOp::operator -()

Page 100: Chika   tutorial c++ - ver 3 2009 2

100

17 {

18 a = -a;

19 b = -b;

20 }

21

22 void MyOp::accept(int x, int y)

23 {

24 a = x;

25 b = y;

26 }

27

28 void MyOp::print()

29 {

30 cout << "a = " << a << endl;

31 cout << "b = " << b << endl;

32 }

33

34 int main()

35 {

36 MyOp m;

37

38 m.accept(26, -9);

39 m.print();

40

41 -m;

42

43 m.print();

44

45 return 0;

46 }

Catat hasil keluaran program di atas dan berikan kesimpulan mengenai program diatas :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 101: Chika   tutorial c++ - ver 3 2009 2

101

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

5. Meng-overload operator biner

Operator biner adalah operator yang bekerja dengan 2 operand. Meng-overloda operator biner sama

dengan meng-overload operator unary, hanya saja overloading operator biner memerlukan tambahan

parameter.

Berikut adalah contoh program overloading operator biner :

1 #include <iostream>

2

3 using namespace std;

4

5 class Matrix

6 {

7 private:

8 int n[2][2];

9

10 public:

11 Matrix();

12 Matrix(int, int);

13 void accept();

14 Matrix operator +(Matrix);

15 void display();

16 ~Matrix();

17 };

18

19 Matrix::Matrix()

20 {

21 int i, j;

22

23 for (i = 0; i < 2; i++)

24 for (j = 0 ; j < 2; j++)

25 n[i][j] = 0;

26 }

27

28 Matrix::Matrix(int row, int col)

29 {

30 for (i = 0; i < row; i++)

31 for (j = 0 ; j < col; j++)

32 n[i][j] = 0;

33 }

34

35 void Matrix::accept()

Page 102: Chika   tutorial c++ - ver 3 2009 2

102

36 {

37 int i, j;

38

39 for (i = 0; i < 2; i++)

40 for (j = 0 ; j < 2; j++)

41 {

42 cout << "Data[" << i+1 << "][" << j+1 << "] = ";

43 cin >> n[i][j];

44 }

45 }

46

47 Matrix Matrix::operator +(Matrix m)

48 {

49 int i, j;

50 Matrix r;

51

52 for (i = 0; i < 2; i++)

53 for (j = 0 ; j < 2; j++)

54 r.n[i][j] = n[i][j] + m.n[i][j];

55

56 return r;

57 }

58

59 void Matrix::display()

60 {

61 int i, j;

62

63 for (i = 0; i < 2; i++)

64 for (j = 0 ; j < 2; j++)

65 cout << "Data[" << i+1 << "][" << j+1 << "] = " << n[i][j] << endl;

66 }

67

68 Matrix::~Matrix()

69 {

70 }

71

72 int main()

73 {

74 int nRow, nCol;

75

76 Matrix A(nRow,nCol), B(nRow,nCol), C(nRow,nCol);

77

78 cout << "Number of row : ";

79 cin >> nRow;

80 cout << "Number of col : ";

81 cin >> nCol;

82

Page 103: Chika   tutorial c++ - ver 3 2009 2

103

83 cout << "\nMatrix A : \n";

84 A.accept();

85 cout << "\nMatrix B : \n";

86 B.accept();

87

88 cout << "\nMatrix A : \n";

89 A.display();

90 cout << "\nMatrix B : \n";

91 B.display();

92

93 C = A + B;

94

95 cout << "\nC = A + B";

96 cout << "\nMatrix C : \n";

97 C.display();

98

99 return 0;

100 }

Catat hasil keluaran program di atas :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Jelaskan mengenai apa yang dilakukan oleh program di atas, dan keuntungan apa yang diperoleh dengan

menggunakan operator overloading :

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 104: Chika   tutorial c++ - ver 3 2009 2

104

___________________________________________________________________________________________________________

___________________________________________________________________________________________________________

Page 105: Chika   tutorial c++ - ver 3 2009 2

105

Bab 11 Inheritance

1. Mendefinisikan apa yang dimaksud dengan konsep hubungan (relationship) antar kelas

dan objek

Dalam kehidupan sehari-hari terdapat banyak contoh hubungan (relationship) seperti hubungan ayah-

anak, ibu-anak atau kakak-adik. Demikian juga dalam aplikasi perangkat lunak, kelas-kelas dan objek-

objek terhubung satu sama lain. Kelas-kelas dan objek-objek saling memberi aksi dan reaksi.

Menggambarkan dinamika kelas dan objek dalam suatu program aplikasi membuat program tersebut

semakin mendekati apa yang terjadi di dunia nyata.

Dalam pendekatan berorientasi objek, objek melakukan aksi sebagai respon dari pesan yang diberikan

objek lain sebagai tingkah laku (behaviour) dari objek yang menerima pesan tersebut. Pendekatan ini

menspesifikasikan hubungan antar kelas menurut tingkah laku dari suatu kelas tertentu.

Perhatikan kemiripan dan perbedaan dari objek dan kelas berikut ini : kendaraan, mobil, supir atau mesin.

Lalu kita membuat pengamatan seperti berikut ini :

Truk adalah sejenis kendaraan

Mobil adalah jenis lain dari kendaraan

Mesin adalah bagian dari kendaraan

Supir mengendarai mobil

Dari pengamatan di atas telah diidentifikasi hubungan antar kelas dan objek.

Ada dua alasan utama untuk membuat hubungan. Pertama, hubungan antar kelas, dimana

hubungannya mengindikasikan bentuk sharing antar kelas. Sebagai contoh, truk dan mobil adalah jenis

kendaraan, berarti keduanya memiliki 4 buah roda, memiliki setir, mempunyai kapasitas penumpang dan

seterusnya. Mobil dan truk keduanya mewarisi sifat-sifat yang dimiliki oleh sebuah kendaraan. Karena itu,

hubungan antara mobil dan kendaraan, antara truk dan kendaraan adalah hubungan kelas-kelas.

Kedua, hubungan antar kelas, dimana hubungan tersebut mengindikasikan suatu keterkaitan

(connection). Contoh : salah satu bagian dari mobil adalah mesin, dan supir mengendarai sebuah mobil.

Coba perhatikan bentuk hubungan sebelumnya. Mesin adalah bagian dari kendaraan. Ketika kita

mengidentifikasi atribut dari suatu kendaraan, suatu instance dari kelas Mesin akan menjadi atribut dari

suatu kendaraan. Karena itu walaupun hubungannya terlihat seperti hubungan antar kelas, sebenarnya

itu adalah hubungan kelas-objek.

Sekarang perhatikan hubungan antara supir dengan mobil. Supir menggunakan mobil, dan tidak menjadi

bagian dari mobil seperti mesin. Bentuk seperti ini disebut hubungan kelas-kelas.

Jenis –jenis hubungan yang bisa diidentifikasi adalah :

Inheritance

Seseorang atau sesuatu mewarisi sejumlah atribut dari orang atau benda lain. Contoh :

Seorang anak mewarisi rambut hitam tebal dari ayahnya dan hidung mancung ibunya.

Composition

Sesuatu terdiri dari benda lain. Contoh : mobil terdiri dari ban, mesin, setir, pintu dan lain lain.

Page 106: Chika   tutorial c++ - ver 3 2009 2

106

Utilization

Suatu benda menggunakan benda lain. Contoh : supir mengendarai mobil, mahasiswa

menggunakan pensil gambar.

Instantiation

Hubungan antara suatu kelas dengan perwujudannya (instance). Contoh : D 1234 AB adalah

sebuah mobil, "Supernova" adalah sebuah buku.

a. Tentukan hubungan antara pasangan-pasangan kelas di bawah ini dan beri alasan singkat :

Televisi – Speaker

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

Mamalia – Harimau

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

Bahan – Kaus

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

Cangkir – Teh

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

Komputer – Mikroprosesor

_______________________________________________________________________________________________

_______________________________________________________________________________________________

_______________________________________________________________________________________________

Page 107: Chika   tutorial c++ - ver 3 2009 2

107

_______________________________________________________________________________________________

_______________________________________________________________________________________________

b. Untuk objek-objek di bawah ini buatlah hirarki dan generalisir yang mungkin : Mixer, VCR, TV Berwarna,

Mesin Cuci, Stereo

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

c. Identifikasi kelas dan hubungan utilization dari suatu department store berikut ini :

Terdapat beberapa counter barang, yang masing-masing dijaga oleh seorang penjual yang

menawarkan satu jenis produk tertentu. Pembeli menghampiri counter mana saja yang produknya

akan dibeli. Penjual akan memberikan barang tersebut dan menerima pembayarannya.

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

Page 108: Chika   tutorial c++ - ver 3 2009 2

108

___________________________________________________________________________________________________

___________________________________________________________________________________________________

___________________________________________________________________________________________________

2. Memahami konsep inheritance dan data hiding

Dalam C++, inheritance adalah properti dimana suatu objek dari kelas turunan (derived class) memiliki

salinan data dan fungsi yang dimiliki oleh kelas yang menurunkannya (base class). Dalam istilah orientasi-

objek, sebuah base class disebut superclass dan derived class disebut subclass.

Kelas yang mewarisi atau menurunkan atribut dari kelas lain disebut derived class and yang menurunkan

kelas tersebut disebut base class. Setiap instance dari derived class mewarisi atribut-atribut yang dimiliki

base class. Karena itu, derived class memiliki jumlah atribut yang lebih banyak daripada yang dimiliki oleh

base class. Sebuah derived class dapat saja memodifikasi sebagian atau semua atribut yang dimiliki oleh

base class.

Sebagai tambahan, lebih dari satu kelas dapat mewarisi atribut dari satu base class, dan derived class

bisa menjadi base class untuk kelas lain. Proses ini memungkinkan terjadinya proses reusability program.

Setelah sebuah kelas didefinisikan dan di-debug, kelas tersebut dapat digunakan untuk kelas turunannya,

hal ini menghemat waktu dan pekerjaan.

Kegunaan inheritance :

Mengurangi redundancy pada program

Memudahkan pengembangan program, karena program diletakkan pada satu tempat, yaitu base

class, sehingga perubahan pada base class akan secara otomatis mengubah sifat-sifat dari derived

class karena derived class secara otomatis akan mewarisi sifat-sifat baru dari base class.

Menambah fungsi dari kelas yang ada dengan menambahkan fungsi ke dalam subclass.

Untuk membatasi akses derived class pada data dan fungsi yang dimiliki oleh base class, terdapat

beberapa pembatas akses (access specifier) :

public

Dengan access specifier ini, semua anggota dari base class yang diturunkan pada derived

class, yang bersifat private akan tetap bersifat private, yang protected tetap protected dan

yang public tetap public. protected

Semua anggota dari base class yang diturunkan pada derived class, yang bersifat private

akan tetap private, yang protected tetap protector dan yang public akan menjadi

protected. Programer biasanya menggunakan bentuk ini untuk melakukan inheritance. private

Semua anggota dari base class yang diturunkan pada derived class, yang bersifat private,

protected dan public akan bersifat private. Bentuk inheritance seperti ini disebut komposisi

(composition) antara base class dengan derived class, yang berarti derived class hanya

memiliki satu instance dari base class.

Berikut adalah ilustrasi dari tiga jenis inheritance, untuk setiap kasus, access specifier-nya berbeda.

Page 109: Chika   tutorial c++ - ver 3 2009 2

109

CASE 1 CASE 2 CASE 3

class BASE

{

private :

int a, b;

protected :

int c, d;

public :

int e;

int Fn();

};

class BASE

{

private :

int a, b;

protected :

int c, d;

public :

int e;

int Fn();

};

class BASE

{

private :

int a, b;

protected :

int c, d;

public :

int e;

int Fn();

};

class DERIVED : public BASE

{

private :

int p, q;

protected :

int r, s;

public :

int t;

int D();

};

class DERIVED : protected

BASE

{

private :

int p, q;

protected :

int r, s;

public :

int t;

int D();

};

class DERIVED : private BASE

{

private :

int p, q;

protected :

int r, s;

public :

int t;

int D();

};

Berikut adalah representrasi visual dari objek dari derived class, dengan satu objek untuk tiap kasus.

a b p q private

members a b p q

private

members

a b c d p q

e Fn()

c d r s protected

members

c d e r s

Fn()

protected

members r s

e Fn() t D() public

members t D()

public

members t D()

Objek dari

Derived

Class pada

CASE 1 -

public

access

specifier

Objek dari

Derived

Class pada

CASE 1 -

protected

access

specifier

Objek dari

Derived

Class pada

CASE 1 -

private

access

specifier

Berikut ini adalah contoh program sederhana yang menggunakan inheritance :

1 #include <iostream>

2

Page 110: Chika   tutorial c++ - ver 3 2009 2

110

3 using namespace std;

4

5 class furniture

6 {

7 protected:

8 char color[12];

9 int width;

10 int height;

11 };

12

13 class bookshelf:public furniture

14 {

15 private:

16 int no_shelves;

17

18 public:

19 void accept()

20 {

21 cout << "\nEntering bookshelf details\n";

22 cout << "Enter color : ";

23 cin >> color;

24 cout << "Enter width : ";

25 cin >> width;

26 cout << "Enter height : ";

27 cin >> height;

28 cout << "Enter No. of shelves : ";

29 cin >> no_shelves;

30 }

31 void display()

32 {

33 cout << "\nDetails of the bookshelf\n");

34 cout << "Color is " << color << endl;

35 cout << "Width is " << width << endl;

36 cout << "Height is " << height << endl;

37 cout << "Number of shelves is " << no_shelves << endl;

38 }

39 };

40

41 class chair:public furniture

42 {

43 private:

44 int no_legs;

45

46 public:

47 void accept()

48 {

49 cout << "\nEntering chair details\n";

Page 111: Chika   tutorial c++ - ver 3 2009 2

111

50 cout << "Enter color : ";

51 cin >> color;

52 cout << "Enter width : ";

53 cin >> width;

54 cout << "Enter height : ";

55 cin >> height;

56 cout << "Enter No. of legs : ";

57 cin >> no_legs;

58 }

59 void display()

60 {

61 cout << "\nDetails of the chair\n");

62 cout << "Color is " << color << endl;

63 cout << "Width is " << width << endl;

64 cout << "Height is " << height << endl;

65 cout << "Number of legs is " << no_legs << endl;

66 }

67 };

68

69 int main()

70 {

71 bookshelf bs;

72 chair c;

73 bs.accept();

74 c.accept();

75 bs.display();

76 c.display();

77

78 return 0;

79 }

2.1 Jelaskan hirarki kelas di atas!

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

2.2 Jelaskan apa yang dilakukan program di atas :

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

Page 112: Chika   tutorial c++ - ver 3 2009 2

112

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

2.3 Seorang programmer menulis program di bawah ini untuk mengimplementasi program grafik untuk

menggambar bentuk grafik sederhana. Programmer tersebut sudah pindah ke tempat lain, dan

sekarang Anda yang harus menyelesaikan program yang belum selesai ini. Buatlah perubahan

yang diperlukan dan ujilah program yang Anda buat :

class Shape { protected: int length; int breadth; int area; public: Shape() { length=0; breadth=0; } void setParameters() { int length, breadth; cout << "Enter length and breadth : "; cin >> length >> breadth; this.length = length; this.breadth = breadth; } void displayParameters() { cout << "Length : " << length; cout << "Breadth : " << breadth; } void draw() {

cout << "Draw the shape"; } void calculateArea() { //bagian ini harus dilengkapi

Page 113: Chika   tutorial c++ - ver 3 2009 2

113

} }; class Rectangle: public Shape { //implement isi kelasnya }; class Circle:public Shape { //implement isi kelasnya }; int main() {

Shape *shape; cout <<”Specify what you want to draw:” cout <<”R for rectangle”<<endl; cout <<”C for circle”<<endl; char choice; cin>>choice; switch(choice) { case ‘R’: case ‘r’: shape= new Rectangle(); break; case ‘C’: case ‘c’: shape=new Circle(); } shape.setParameters(); shape.displayParameters(); shape.calculateArea(); shape.draw();

}

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

Page 114: Chika   tutorial c++ - ver 3 2009 2

114

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________

_____________________________________________________________________________________________________