Anda di halaman 1dari 73

Perkembangan Bahasa C++

Bahasa C++ merupakan perkembangan dari bahasa C yang merupakan bahasa tingkat menengah, yang dikembangkan oleh Bjarne Stroustrup pada tahun 1980 dan me-releasenya pada tahun 1983. Bahasa C sendiri ditulis oleh Brian W. Kernighan dan Denies M. Ricthie pada tahun 1972 yang merupakan pengembangan dari bahasa B yang ditulis oleh Ken Thompson pada tahun 1970. Bahasa C sendiri sudah terjamin kehandalannya, terbukti dengan terciptanya perangkat lunak, seperti dBase, WordStar, dan system operasi UNIX, Windows, LINUX. Sementara itu Bahasa C yang dikembangkan oleh B. Stroustrup diberi nama pertama kali C with Classes, yang kemudian digantinama menjadi C++.

Contoh Sederhana Program Bahasa C++


Program sederhana C++: #include <stdio.h> #include <conio.h> #include <iostream.h> int main() { //deklarasi variabel int a, b, c; //clsrcr(); a = 5; b = 7; c = a + b; cout << "Nilai C = " << c; //getche(); return 0; } Sampel ke-2 #include <stdio.h> #include <conio.h> #include <iostream.h> void main() { //deklarasi variabel int a = 7; char b = 'G';

printf("%c Merupakan Abjad Yang ke - %d", b, a); getche(); } Dari contoh sederhana program bahasa C++ di atas, bisa kita tentukan struktur Program C++, yaitu: # include <file_include> int main () { pernyataan; . . return 0; } Komentar Untuk Komentar di awal dengan tanda // atau /* -- */ Tipe Data Tipe Data Char Int Short Long Float Double Long Double

Ukuran Memori 1 Byte 2 Byte 2 Byte 4 Byte 4 Byte 8 Byte 10 Byte

Jangkaun Nilai -128 s/d 127 -32,768 s/d 32,767 -32,768 s/d 32,767 -2,147,435,648 s/d 2,147,435,647 3.4 x 10-38 s/d 3.4 x 10+38 1.7 x 10-308 s/d 1.7 x 10+308 3.4 x 10-4932 s/d 1.1 x 10+4932

Jumlah Digit

5-7 15-16 19

Tambahan untuk tipe data lainnya dengan memberikan kata unsigned didepan nama tipe data yang digunakan untuk hanya data yang positif saja, seperti: Unsigned Integer 2 Byte 0 - 65535 Unsigned Character 1 Byte 0 - 255 Unsignet Long Integer 4 Byte 0 4,294,967,295 Variabel Variabel merupakan komponen di dalam program untuk menyimpan suatu nilai yang sifatnya berubah-ubah Bentuk mendefinisikan: Type Daftar_Variabel; Contoh : int jumlah, nomor, panjang, luas; float harga, total; Memberikan nilai pada variable: Variabel = nilai; Contoh: jumlah = 10; harga = 1700; Bisa diwakili dengan int jumlah = 10;

Konstanta Konstanta merupakan komponen di dalam program untuk menyimpan suatu nilai yang sifatnya tetap. Bentuk mendefinisikan: const tipe_data nama_konstanta = nilai; Contoh : const float phi = 2.141592; Input dan Output (Perintah Masukan dan Keluaran) Perintah Keluaran, di antaranya: - printf() berada dalam file header: <STDIO.H> Perintah printf() merupakan fungsi keluaran yang paling umum digunakan untuk menampilkan informasi ke layar. Bentuk penulisan: printf(string-kontrol, argumen1, argumen2, dst); String-kontrol dapat berupa keterangan yang ditampilkan ke layar beserta penentu format untuk argumen2nya, seperti: %d untuk argument yang bertipe data integer %c untuk argument yang bertipe data character %s untuk argument yang bertipe data string %f untuk argument yang bertipe data floating point %e untuk argument yang bertipe data floating point dengan berpangkat %u untuk argument yang bertipe data integer tak bertanda %x untuk argument yang bertipe data integer dalam bentuk hexadesimal %p untuk argument yang bertipe data pointer Contoh : a = -5[ printf(Nilai Integer = %d \n, a); printf(Nilai Integer Tak Bertanda = %u \n, a); - puts() berada dalam file header: <CONIO.H> Perintah puts() yang berarti PUT STRING fungsinya hampir sama dengan printf(), bedanya puts() tidak perlu penentu tipe data string karena fungsi ini khusus untuk tipe data string. Dan juga tidak perlu mencetak pindah baris karena sudah otomatis pindah baris. Contoh : puts (Saya kuliah di STMIK); a[6] = Padang; puts (a); - putchar() berada dalam file header: <CONIO.H> Perintah putchar() digunakan untuk menampilkan sebuah karakter ke layar. Contoh : putchar(S); putchar(T);putchar(M); putchar(I); putchr(K); - cout() berada dalam file header: <IOSTREAM.H> Perintah cout() juga digunakan untuk menampilkan suatu data ke layar. Contoh : cout << Nilai A = << a; cout << STMIK INDONESIA; Perintah Masukan, di antaranya: - scanf() berada dalam file header: <STDIO.H> Perintah scanf() digunakan untuk memasukkan berbagai jenis data dari keyboard. Perintah scanf() ini merupakan lawan dari perintah printf(). Bentuk umum fungsi ini: scanf(penentu format, &nama_variabel);

Simbil & di depan nama variabel merupakan pointer penunjuk ke alamat variabel memori dialokasikan.. Contoh : printf (Masukkan Nilai A = ); scanf(%d, &a); - gets() berada dalam file header: <STDIO.H> Perintah gets() digunakan untuk memasukkan data string, terutama untuk string yang banyak mengandung blank. Bentuk umum fungsi ini: gets(nama-variabel-array); Contoh : char nama[35]; printf(Nama Anda? ); gets(nama); printf(Nama Anda adalah %s \n, nama); - cin() berada dalam file header: <IOSTREAM.H> Perintah cin() digunakan untuk memasukkan suatu data. Contoh : cout << Masukkan Nilai A =; cin << a; - getch() berada dalam file header: <CONIO.H> Perintah getch()digunakan untuk membaca sebuah karakter tanpa perlu menekan enter, dan karakter tersebut tidak akan ditampilkan di layar. - getche() berada dalam file header: <CONIO.H> Perintah getche() sama dengan getch() tapi bedanya adalah karakter yang ditekan itu akan ditampilkan dilayar. Contoh : char kar; printf(Masukkan sembarang karakter bebas ? ); kar = getche(); printf(\n Tadi anda memasukkan karakter %c, kar); Penggunaan ESCAPE SEQUENCES Escape Sequences merupakan suatu karakter khusus yang menggunakan notasi \ (back slash) yang mempunyai arti khusus. ESCAPE SEQUENCES PENGERTIAN \0 Ber-ASCII nol (karakterl Null) \a Bel \b Backspace \f Form feed (ganti halaman) \n New line (ganti baris baru) \r Carriage return (ke awal baris) \t Tab horizontal \v Tab Vertical \\ Karakter \ \ Karakter \ Karakter \? Karakter ?

Operator
Operator merupakan symbol yang biasa dilibatkan dalam program untuk melakukan suatu operasi atau manipulasi, seperti penjumlah, pengurangan, dan lain-lain.

Sifat Operator : 1. Unary : Operator ini hanya melibatkan sebuah operand, misal : -a, -1; 2. Binary : Operator ini melibatkan 2 buah operand, misal: a + b; 3. Ternary : Operator ini melibatkan 3 buah operand, missal: (a > b )? a : b; Dimana: (a > b), merupakan kondisi, a nilai benar, b nilai salah Operator ARITMATIKA, bisa digolongkan: A. Operator Binary Aritmatika: Operator Keterangan * Perkalian / Pembagian % Sisa Bagi + Penjumlahan Pengurangan B. Operator Unary Aritmatika: + atau - contoh : -2 ; +4; Operator RELASI Operator relasi digunakan untuk membandingkan dua buah nilai. Dimana hasil perbandingannya memberikan nilai 1 (true) atau 0 (false) Operator Keterangan == Sama dengan (bukan pemberi nilai) != Tidak sama dengan > Lebih dari < Kurang dari >= Lebih dari dan sama dengan <= Kurang dari dan sama dengan Operator LOGIKA Operator Logika digunakan untuk menghubungkan dua atau lebih ekspresi relasi, menjadi sebuah ungkapan kondisi. Dimana hasil perbandingannya memberikan nilai 1 (true) atau 0 (false) Operator Keterangan && Operator Logika AND || Operator Logika OR ! Operator Logika NOT Operator PENUGASAN Operator yang berupa simbol sama dengan (=) berguna untuk memberikan nilai ke suatu variabel. Contoh: a = 1; b = 2 + a; a = b = c = d = e = 1 ; // Penugasan Berganda Operator PENAIKAN(++)/PENURUNAN(--) Operator Penaikan (++) digunakan untuk menaikkan nilai variabel sebesar 1. Contoh : x = x + 1; bisa ditulis x++; atau ++x;

Contoh 2*3 7/2 7%2 5+4 54

Operator Penurunan(--) digunakan untuk menurunkan nilai variabel sebesar 1. Contoh: y = y -1; bisa ditulis y--; atau --y; Pada kedua penempatan operator penaikan/penurunan pada variabel tidak ada bedanya, tapi akan kelihatan bedanya pada waktu penempatan dalam program. Sample Program: (1) #include <iostream.h> void main( ) { int r = 10; int s; s = 10 + r ++; cout << r = << r << \n; cout << s = << s << \n; } Kesimpulan: s = 10 + r++; Identik => s = 10 + r; r = r + 1; Hasil : r = 11, dan s = 20 (2) #include <iostream.h> void main( ) { int r = 10; int s; s = 10 + ++ r; cout << r = << r << \n; cout << s = << s << \n; } Kesimpulan: s = 10 + ++ r; Identik => r = r + 1; s = 10 + r; Hasil : r = 11, dan s = 21 Operator MAJEMUK C++ menyediakan operator yang dimaksudkan untuk memendekkan penulisan operasi, seperti: Y = Y + 2; menjadi: Y + = 2; X = X * 4; menjadi: X * = 4; Operator Contoh Keterangan += X += 2; X = X + 2; -= X -= 2; X = X -2; *= X *= 2; X = X * 2; /= X /= 2; X = X / 2; %= X %=2; X = X % 2; Operator KONDISI

Dipergunakan untuk mendapatkan sebuah nilai dari 2 buah kemungkinan, berdasarkan suatu kondisi. Formasi : UNGKAPAN-1 ? UNGKAPAN2 : UNGKAPAN3 Contoh : X % 2 ! = 0 ? GANJIL : GENAP; Struktur Kontrol - Struktur Kondisional - Struktur Pengulangan - Struktur Percabangan & Pelompatan - Struktur Seleksi Struktur IF SEDERHANA Pernyataan IF mempunyai pengertian Jika Kondisi bernilai benar, maka perintah akan dikerjakan dan jika tidak memenuhi syarat maka akan diabaikan. Bentuk Umum: if (kodisi) pernyataan; // untuk 1 pernyataan if (kondisi) { pernyataan1; // untuk beberapa pernyataan pernyataan2; . }

Kon disi?

T perintah

Sampel : if (bil % 2 != 0) cout << Bil. Genap << endl; Struktur IF ELSE Pernyataan IF - ELSE mempunyai pengertiaan Jika kondisi bernilai benar, maka perintah-1 akan dikerjakan dan jika tidak memenuhi syarat makan akan mengerjakan perintah-2. Bentuk Umum: False if (kondisi) Kon pernyataan1; disi? else True pernyataan2;
perintah-1

perintah-2

atau if (kondisi) { penyataan1; ; } else { pernyatan2;

; } Sampel : if (tot_beli >= 50000) potongan = 0.2 * tot_beli; else potongan = 0.05 * tot_beli; Struktur NESTED IF - (IF BERSARANG) Pernyataan NESTED-IF merupakan pernyataan if yang berada di dalam pernyatan if yang lain. Bentuk pernyataan Nested-If adalah: if (syarat) if (syarat) . perintah; else . perintah; else if (syarat) . perintah; else . perintah; Contoh : Suatu perusahaan memberikan komisi kepada para salesman dengan ketentuan sebagai berikut: a. Bila salesman dapat menjual barang hingga Rp. 200.000,- maka akan diberikan uang jasa sebesar Rp. 10.000 ditambah dengan uang komisi 10% dari pendapatan yang diperoleh hari itu. b. Bila salesman dapat menjual barang di atas Rp. 200.000,- maka akan diberikan uang jasa sebesar Rp. 20.000 ditambah dengan uang komisi 15% dari pendapatan yang diperoleh hari itu. c. Bila salesman dapat menjual barang di atas Rp. 500.000,- akan diberikan uang jasa sebesar Rp. 30.000 di tambah dengan uang komisi 20% dari pendapatan yang diperoleh hari itu Permintaan : Selesaikan masalah diatas dengan struktur nested if? Struktur Switch Case: Bentuk Switch-Case merupakan pernyataan yang dirancang khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah atau banyak alternative. Pernyataan switch-case ini memiliki kegunaan yang sama seperti if else bertingkat, tetapi untuk memeriksa data yang bertipe karakter atau integer. Bentuk Penulisan: Switch (ekspresi integer atau karakter) { case konstanta-1: . perintah ; break;

case konstanta-2: . perintah; break; case konstanta-3: . perintah; break; defaulut: . perintah; break; } Sampel: Switch (kode_hari) { case 1 : cout << Senin << endl; break; case 2 : cout << Selasa << endl; break; case 3 : cout << Rabu << endl; break; ---default : cout << Minggu << endl; break; } STRUKTUR PENGULANGAN (REPETITION ATAU LOOP) Struktur Pengulangan secara umum terdiri atas 2 bagian: 1. Kondisi pengulangan, yaitu ekspresi Boolean yang harus dipenuhi untuk melaksanakan pengulangan. 2. Badan (body) pengulangan, yaitu bagian algorithma yang diulang. Struktur Pengulangan itu diantaranya : A. STRUKTUR FOR B. STRUKTUR NESTED FOR C. STRUKTUR WHILE D. STRUKTUR DO-WHILE E. PERNYATAAN GO TO F. PERNYATAAN BREAK G. PERNYATAAN CONTINUE STRUKTUR FOR B.U : for (Inisialisasi; Syarat Pengulangan; Pengubah Nilai Pencacah) Pernyataan; // Jika hanya terdiri dari 1 pernyataan Inisialisasi: bagian untuk memberikan nilai awal untuk variabel-variabel tertentu. Syarat Pengulangan: memegang kontrol terhadap pengulangan, karena bagian ini yang akan menentukan suatu perulangan diteruskan atau dihentikan. Pengubah Nilai Pencacah: mengatur kenaikan atau penurunan nilai pencacah.

Bila pernyataan di dalam for lebih dari satu maka pernyataan-pernyataan diletakkan di dalam tanda kurung: for (Inisialisasi; Syarat Pengulangan; Pengubah Nilai Pencacah) { Pernyataan1; Pernyataan2; Pernyataan3; } Contoh: Untuk mencetak bilangan 1 sampai dengan 10 secara menaik: int a; for (a = 1; a <= 10; ++a) cout << a; Untuk mencetak bilangan 1 sampai dengan 10 secara menurun: for (int a = 10; a >= 1; --a) cout << a; Untuk mencetak bilangan ganjil antara 1 sampai dengan 10: for (int a = 1; a <= 10; a+=2) cout << a; STRUKTUR NESTED FOR Suatu perulangan for di dalam perulangan for lainnya. B.U : for (Inisialisasi; Syarat Pengulangan; Pengubah Nilai Pencacah) { for (Inisialisasi; Syarat Pengulangan; Pengubah Nilai Pencacah) { Pernyataan; } } Contoh: Untuk mencetak format angka berikut : 11111 2222 333 44 5 int a, b; for (a = 1; a <= 5; a++) { cout << \n; for (b = a; b <= 5; b++) cout << a << ; } Kalau ditelusuri; a a<=5 ? \n b=a b<=5 ?a b++ a++ 1 1<=5 1 1<=5 1 2 2 2<=5 1 3 3 3<=5 1 4 4 4<=5 1 5

2<=5

3<=5

4<=5

5<=5 6<=5

5 6 2 3 4 5 6 3 4 5 6 4 5 6 5

5<=5 1 6<=5 2<=5 2 3<=5 2 4<=5 2 5<=5 2 6<=5 3<=5 3 4<=5 3 5<=5 3 6<=5 4<=5 4 5<=5 4 6<=5 5<=5 5 Proses Perulangan Selesai

6 3 4 5 6 4 5 6 5 6 6

STRUKTUR WHILE Suatu perulangan akan terus dilakukan selama syarat terpenuhi. B.U : while ( syarat ) pernyataan; // Jika 1 pernyataan atau: while ( syarat ) { pernyataan1; pernyataan2; } Contoh: Untuk mencetak bilangan 1 sampai dengan 10 secara menaik: int a = 1; while (a <= 10) { cout << a; ++a; } Untuk mencetak bilangan 1 sampai dengan 10 secara menurun: int a = 10; while (a >= 1) { cout << a; --a; } Untuk mencetak bilangan genap antara 1 sampai dengan 10: int a = 2; while (a <= 10) { cout << a; a+=2; }

STRUKTUR DO-WHILE Bentuk perulangan yang melaksanakan perulangan terlebih dahulu dan pengujian perulangan dilakukan belakangan. B.U : do pernyataan; // Jika 1 pernyataan while ( syarat ); atau: do { pernyataan1; pernyataan2; } while ( syarat ); Contoh: Untuk mencetak bilangan 1 sampai dengan 10 secara menaik: int a = 1; do { cout << a; ++a; } while (a <= 10) Untuk mencetak bilangan 1 sampai dengan 10 secara menurun: int a = 10; do { cout << a; --a; } while (a >= 1) Untuk mencetak bilangan genap antara 1 sampai dengan 10: int a = 2; do { cout << a; a+=2; } while (a <= 10)

PERNYATAAN GO TO Merupakan instruksi untuk mengarah eksekusi program ke pernyataan yang diawali dengan suatu label sebagai tanda pengenal yang diakhiri dengan titik dua (:). Bentuk Pemakaian: goto label; Contoh: int a, b; char lagi; ulangi: cout << Masukan suatu bilangan: ;

if (lagi = = Y || lagi = = y) goto ulangi; PERNYATAAN BREAK Merupakan instruksi untuk keluar dari struktur seleksi if dan switch maupun struktur pengulangan for, while, ataupun do-while. Bentuk Pemakaian: break; Contoh: int bil = 1; do { if (bil >= 6) break; cout << bil << ; } while (bil++); PERNYATAAN CONTINUE Merupakan instruksi untuk mengarahkan eksekusi ke iterasi (proses) berikutnya pada loop yang sama. Dengan kata lain, mengembalikan proses yang sedang dilaksanakan ke awal loop tanpa menjalankan sisa perintah yang ada dalam loop tersebut. Bentuk Pemakaian: continue; Contoh: int bil; for (bil = 1; bil <= 10; ++bil) { if (bil = = 6) continue; cout << bil << ; } LATIHAN: 1. Tampilkan deret bilangan 1-100 yang habis dibagi dengan 2 dan habis dibagi dengan 3. 2. Buatkan program untuk mencetak 10 bilangan prima pertama. (2 3 5 7 11 13 17 . 3. Buatkan Program untuk mencetak format berikut ********** * ********* ** ******** *** ******* **** ****** ***** ***** ****** **** ******* *** ******** ** ********* * **********

Fungsi
Fungsi (Function) merupakan blok dari kode yang dirancang untuk melaksanakan tugas khusus. Pada intinya fungsi berguna untuk : - Mengurangi pengulangan penulisan program yang berulangan atau sama. - Program menjadi terstruktur, sehingga mudah dipahami dan dikembangkan. Fungsi-fungsi yang sudah kita kenal sebelumnya adalah fungsi main(), yang bersifat mutlak, karena fungsi ini program akan dimulai, sebagai contoh yang lainnya fungsi printf() yang mempunyai tugas untuk menampilkan informasi atau data kelayar dan masih banyak lainnya. Penjelasan

6.1. Struktur Fungsi


Penjelasan Sebuah fungsi sederhana mempunyai bentuk penulisan sebagai berikut : nama_fungsi(argumen) { pernyataan / perintah; pernyataan / perintah; pernyataan / perintah; } Keterangan: Nama fungsi, boleh dituliskan secara bebas dengan ketentuan, tidak menggunakan spasi dan nama-nama fungsi yang mempunyai arti sendiri. Argumen, diletakan diantara tanda kurung ( ) yang terletak dibelakang nama fungsi. Argumen boleh diisi dengan suatu data atau dibiarkan kosong. Pernyataan / perintah, diletakkan diantara tanda kurung { }.

Pada pemanggilan sebuah fungsi, cukup dengan menuliskan nama fungsinya. Contoh pembuatan fungsi sederhana Contoh-1 /* pembuatan fungsi garis() */

void garis() { printf("\n----------------------\n"); }

/* program utama */ void main() { clrscr(); garis(); cout<<"STMIK INDONESIA - Padang"<<endl;; garis();

getche(); }

6.2. Prototipe Fungsi


Penjelasan Prototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai : Tipe keluaran fungsi. Jumlah parameter. Tipe dari masing-masing parameter. Salah satu keuntungan pemakai prototipe, kompiler akan melakukan konversi antara tipe parameter dalam definisi dan parameter saat pemanggilan fungsi tidak sama atau akan menunjukkan kesalahan jika jumlah parameter dalam definisi dan saat pemanggilan berbeda. Contoh prototipe fungsi : Nama-fungsi float total ( float a, float b); di-akhiri titik koma

Tipe parameter kedua Tipe parameter pertama Tipe keluaran fungsi

Jika dalam penggunaan fungsi yang dideklarasikan dengan menggunakan prototipe, maka bentuk definisi harus diubah. Sebagai contoh pada pendefinisian berikut : float total(a, b) float a, y; Bentuk pendefinisian diatas harus diubah menjadi bentuk modern pendefinisian fungsi : Nama fungsi

float total(float a, float b)

Tidak menggunakan titik koma

parameter b Tipe parameter b parameter a Tipe parameter a Tipe keluaran fungsi

6.3. Parameter Fungsi

Penjelasan Terdapat dua macam para parameter fungsi, yaitu : Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. Parameter Aktual adalah variabel yang dipakai dalam pemanggilan fungsi. Bentuk penulisan Parameter Formal dan Parameter Aktual.

Ada dua cara untuk melewatkan parameter ke dalam fungsi, yaitu berupa :

6.3.1. Pemanggilan dengan nilai ( Call by Value )


Penjelasan Pemanggilan dengan nilai merupakan cara yang dipakai untuk seluruh fungsi buatan yang telah dibahas didepan. Pada pemanggilan dengan nilai, nilai dari parameter aktual akan ditulis keparameter formal. Dengan cara ini nilai parameter aktual tidak bisa berubah, walaupun nilai parameter formal berubah. /* /* /* /* -----------------------Penggunaan Call By Value Program Pertukaran Nilai -----------------------*/ */ */ */

Contoh-2

#include<conio.h> #include<stdio.h> #include<iostream.h> tukar(int x, int y); void main() { int a, b; a = 88; b = 77; clrscr(); cout<<"Nilai Sebelum Pemanggilan Fungsi"; cout<<"\na = "<<a<<" b = "<<b; tukar(a,b); cout<<"\nNilai Setelah Pemanggilan Fungsi"; cout<<"\na = "<<a<<" b = "<<b;

getch(); }

tukar(int x, int y) { int z; z = x; x = y; y = z; cout<<"\n\nNilai di dalam Fungsi Tukar()"; cout<<"\nx = "<<x<<" y = "<<y; cout<<endl; }

6.3.2. Pemanggilan dengan Referensi (Call by Reference)


Penjelasan Pemanggilan dengan reference merupakan upaya untuk melewatkan alamat dari suatu variabel kedalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel diluar fungsi dengan melaksanakan pengubahan dilakukan didalam fungsi.

Contoh-3

/* /* /* /*

---------------------------Penggunaan Call By Reference Program Pertukaran Nilai ----------------------------

*/ */ */ */

#include<conio.h> #include<stdio.h> #include<iostream.h> tukar(int *x, int *y); void main() { int a, b; a = 88; b = 77; clrscr(); cout<<"Nilai Sebelum Pemanggilan Fungsi"; cout<<"\na = "<<a<<" b = "<<b; tukar(&a,&b); cout<<endl; cout<<"\nNilai Setelah Pemanggilan Fungsi"; cout<<"\na = "<<a<<" b = "<<b; getch(); }

tukar(int *x, int *y) { int z; z = *x; *x = *y; *y = z; cout<<endl; cout<<"\nNilai di Akhir Fungsi Tukar()"; cout<<"\nx = "<<*x<<" y = "<<*y; }

Pengiriman Data Ke Fungsi 6.5.1. Pengiriman Data Konstanta Ke Fungsi.


Penjelasan Mengirimkan suatu nilai data konstanta ke suatu fungsi yang lain dapat dilakukan dengan cara yang mudah, dapat dilihat dari program berikut : /* ------------------------ */ /* Pengriman data Konstanta */ /* ------------------------ */ #include<conio.h> #include<stdio.h> #include<iostream.h> luas(float sisi); void main() { float luas_bs; clrscr(); luas_bs = luas(4.25); cout<<"\nLuas Bujur Sangkar = "<<luas_bs; getch(); }

Contoh-5

luas(float sisi) { return(sisi*sisi); } Keterangan : Dalam struktur program diatas dilihat bahwa, pernyataan luas_bs(4.25), akan dikirimkan kepada fungsi luas(), untuk diolah lebih lanjut, yang nilai tersebut akan ditampung pada variabel sisi.

6.5.2. Pengiriman Data Variabel Ke Fungsi

Penjelasan Bentuk pengiriman data Variabel, sama seperti halnya pengiriman suatu nilai data konstanta ke suatu fungsi, hanya saja nilai yang dikirimkan tersebut senantiasa dapat berubah-ubah. Bentuk pengiriman tersebut dapat dilihat dari program berikut : Contoh-6 /* ------------------------ */ /* Pengriman data Konstanta */ /* ------------------------ */ #include<conio.h> #include<stdio.h> #include<iostream.h> luas(float sisi); main() { float luas_bs, sisi_bs; clrscr(); cout<<"\nMenghitung Luas Bujur Sangkar"<<endl; cout<<"\nMasukan Nilai Sisi Bujur Sangkar : "; cin>>sisi_bs; luas_bs = luas(sisi_bs); cout<<"\nLuas Bujur Sangkar = "<<luas_bs<<" Cm"; getch(); } luas(float sisi) { return(sisi*sisi); }

Lingkup Variabel pada Fungsi


Ada beberapa jenis variabel yang digunakan dalam penulisan suatu fungsi: 1. Variabel Lokal 2. Variabel Eksternal atau Global 3. Variabel Statis

Variabel Lokal
adalah variabel yang dideklarasikan di dalam fungsi dan hanya dikenal oleh fungsi yang bersangkutan contoh : void lokal() { int a = 10; cout << Nilai A di dalam fungsi Lokal() = <<a; }

Variabel Eksternal/Global

adalah variabel yang dideklarasikan di luar fungsi dan bersifat global yang berarti digunakan bersama-sama tanpa harus dideklarasikan berulangulang. contoh : int a = 6 void lokal() { cout << Nilai A di dalam fungsi Lokal() = <<a; }

Variabel Statis
adalah variabel yang dapat berupa variabel lokal ataupun variabel eksternal. a. Jika variabel statis bersifat lokal maka variabel hanya dikenal oleh fungsi tempat variabel tersebut dideklarasikan. b. Jika variabel statis bersifat eksternal maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama di tempat variabel statis dideklarasikan. c. Jika tidak ada inisialisasi oleh pemogram maka secara otomatis akan diberikan nilai awal nol(0). Suatu variabel statis diperoleh dengan menambahkan kata kunci static di depat tipe variabel pada pernyataan pendifinisian. contoh : static int x; void abba() { Static int a = 10; cout << Nilai A di dalam fungsi Stats = <<a; }

Bab 7 : Array
Variabel Larik atau lebih dikenal dengan ARRAY adalah adalah Tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Suatu Array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu larik ditunjukan oleh suatu indek untuk membedakan variabel yang satu dengan variabel yang lainnya. Variabel array dalam Borland C++, dapat digolongkan menjadi tiga buah dimensi : Array Berdimensi Satu. Array Berdimensi Dua Array Berdimensi Tiga. Pembahasan ini, hanya dibatasi pada Array Berdimensi Dua saja : Penjelasan

7.1. Array Berdimensi Satu


Penjelasan Sebelum digunakan, variabel array perlu dideklarasikan terlebih dahulu. Cara mendeklarasikan variabel array sama seperti deklarasi variabel yang lainnya, hanya saja diikuti oleh suatu indek yang menunjukan jumlah maksimum data yang disediakan. Bentuk Umum pendeklarasian array :

Deklarasi Array

Tipe-Data Nama_Variabel[Ukuran]
Keterangan : Type Data : Untuk menyatakan type data yang digunakan. Ukuran : Untuk menyatakan jumlah maksimum elemen array. Contoh Pendeklarasian Array

float Nil_Akhir[6];
Jumlah Elemen Array Nama Array

Tipe data elemen array Suatu array dapat digambarkan sebagai kotak panjang yang berisi kotak-kotak kecil didalam kotak panjang tersebut. Elemen Array

elemen

elemen

elemen

elemen

elemen

elemen

1
0

2
1

3
2

4
3

5
4

6
5 Subscript / Index

ARRAY NIL_AKHIR Subscript atau Index array pada Borland C++, selalu dimulai dari Nol ( 0 ) Mengakses Elemen Suatu array, dapat diakses dengan menggunakan subscript atau index nya: Bentuk umum pengaksesan dengan bentuk :

Nama_Array[Subscript/Index]

Contoh

Nil_Akhir[3]; Nil_Akhir[1]; Nil_Akhir[0]; /* ---------------------------- */ /* Program Array Satu Dimensi */ /* ---------------------------- */ #include<conio.h> #include<stdio.h> #include<iostream.h>

Contoh-1

#include<iomanip.h> main() { int i; char nama[5][20]; float nilai1[5]; float nilai2[5]; float hasil[5]; clrscr(); for(i=1;i<=2;i++) { cout<<"Data Ke - "<<i<<endl; cout<<"Nama Siswa : "; gets(nama[i]); cout<<"Nilai Teori : "; cin>>nilai1[i]; cout<<"Nilai Praktek : "; cin>>nilai2[i]; hasil[i] = (nilai1[i] * 0.40)+ (nilai2[i] * 0.60); cout<<endl; } cout<<"------------------------------------------"; cout<<"-------"<<endl; cout<<"No. Nama Siswa Nilai Nilai "; cout<<"Hasil"<<endl; cout<<" Mid Tes FInal "; cout<<"Ujian"<<endl; cout<<"------------------------------------------"; cout<<"-------"<<endl; for(i=1;i<=2;i++) { cout<<setiosflags(ios::left)<<setw(4)<<i; cout<<setiosflags(ios::left)<<setw(20)<<nama[i]; cout<<setprecision(2)<<" "<<nilai1[i]; cout<<setprecision(2)<<" "<<nilai2[i]; cout<<setprecision(2)<<" "<<hasil[i]<<endl; } cout<<"------------------------------------------"; cout<<"-------"<<endl; getch(); }

Inisialisasi Array

Inisialisasi adalah memberikan nilai awal terhadap suatu variabel. Bentuk pendefinisian suatu array dapat dilihat dari contoh berikut : Tipe_data nama_array[jml_elemen] = { nilai array };

Contoh

float nilai[5] = {56.5, 66.7, 87.45, 98,5, 78.9 };

Contoh-2

/* ----------------------------- */ /* Inisialisasi Array Dimensi 1 */ /* ----------------------------- */

#include<conio.h> #include<iostream.h> #include<iomanip.h> void main() { float nilai[5] = {56.4, 67.6, 57.7, 76.3, 72.5}; int i; clrscr(); for(i=0; i<5; i++) { cout<<"Nilai Array Index ke - "<<i<<" = "; cout<<setprecision(1)<<nilai[i]<<endl; } getch(); }

7.2. Array Berdimensi Dua


Penjelasan Array dimensi dua tersusun dalam bentuk baris dan kolom, dimana indeks pertama menunjukan baris dan indeks kedua menunjukan kolom. Array dimensi dua dapat digunakan seperti pendatan penjualan, pendataan nilai dan lain sebagainya. Bentuk Umum pendeklarasian array :

Deklarasi Array

Tipe-Data Nama_Variabel[index-1][index-2]
Keterangan :

Type Data : digunakan. Index-1 : Index-2 :

Untuk menyatakan type data yang Untuk menyatakan jumlah baris Untuk menyatakan jumlah kolom

Contoh Pendeklarasian Array Sebagai contoh pendeklarasian yang akan kita gunakan adalah pengolahan data penjualan, berikut dapat anda lihat pada tabel berikut : Data Penjualan Pertahun Tahun Penjualan Jenis Barang 2001 2002 2003 Printer 150 159 230 Monitor 100 125 150 Keyboard 210 125 156 Tabel 7.1. Tabel Data Penjualan Pertahun

Jika anda lihat dari tabel 7.1 diatas maka dapat dituliskan kedalam array dimensi dua berikut :

int

data_jual[3][3];
Jumlah Kolom Jumlah Baris Nama Array Tipe data elemen array

Mengakses Elemen

Suatu array, dapat diakses dengan menggunakan subscript atau index nya: Bentuk umum pengaksesan dengan bentuk :

Nama_Array[index-1][index-2]

Contoh Contoh-3

data_jual[2][2]; data_jual[1][2]; /* ---------------- */ /* Array Dimensi 2 */ /* ---------------- */ #include<conio.h> #include<stdio.h> #include<iostream.h> #include<iomanip.h> main() { int i, j; int data_jual[4][4]; clrscr(); for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { cout<<"Data Ke - "<<i<<" "<<j<<endl; cout<<"Jumlah Penjulan : "; cin>>data_jual[i][j]; } } cout<<"Data Penjualan Pertahun"<<endl; cout<<"-----------------------"<<endl; cout<<"NO 2001 2002 2003"<<endl; cout<<"-----------------------"<<endl; for(i=1;i<=3;i++) { cout<<setiosflags(ios::left)<<setw(5)<<i;

for(j=1;j<=3;j++) { cout<<setiosflags(ios::right)<<setw(4); cout<<data_jual[i][j]; cout<<" "; } cout<<endl; } cout<<"-----------------------"<<endl; getch(); }

Inisialisasi Array

Inisialisasi adalah memberikan nilai awal terhadap suatu variabel. Bentuk pendefinisian suatu array dapat dilihat dari contoh berikut : Tipe_data nama_array[jml_elemen] = { nilai array };

Contoh

float data[2][5] = { {2, 3, 4, 5, 2}, {4, 2, 6, 2, 7}, };

Contoh-3

/* /* /* /* /*

---------------Array Dimensi 2 Copyright 1995 Abdul Kadir ----------------

*/ */ */ */ */

#include<conio.h> #include<stdio.h> #include<iostream.h> void main() { int i, j; int huruf[8][8] = { {1,1,1,1,1,1,0,0}, {1,1,0,0,0,1,0,0}, {1,1,0,0,0,1,0,0}, {1,1,1,1,1,1,1,0}, {1,1,0,0,0,0,1,0}, {1,1,0,0,0,0,1,0}, {1,1,0,0,0,0,1,0}, {1,1,1,1,1,1,1,0}, };

clrscr(); for(i=0;i<8;i++) { for(j=0;j<8;j++)

if (huruf[i][j] == 1) cout<<'\xDB'; else cout<<'\x20'; cout<<endl; } getch(); }

FUNGSI MANIPULASI STRING


Beberapa fungsi yang umum digunakan untuk keperluan manipulasi string, adalah sebagai berikut: 1. fungsi strcat() Fungsi ini digunakan untuk menambahkan string sumber ke bagian akhir dari string tujuan. File header yang harus diikut sertakan adalah <string.h> Bentuk umum : strcat(tujuan, sumber); Contoh: #include <conio.h> #include <string.h> #include <ctype.h> #include <iostream.h> void main() { char a[20]; char b[20]; cout << Masukkan kata 1 = ; cin >> a; cout << Masukkan lata 2 = ; cin >> b; strcat(a, b); cout << Hasil penggabungannya << a; getch(); } 2. fungsi strcmp() Fungsi ini digunakan untuk membandingkan string pertama dengan string kedua. Hasil dari fungsi ini bertipe data integer (int). File header yang harus diikut sertakan adalah <string.h> Bentuk umum : var_int = strcmp(str1, str2); Contoh : // Definisi Fungsi Tunjangan Jabatan float TJ(char *gol, int ht) { if (strcmp(gol,"1") = = 0)

return (float) 5/100 * ht; else if (strcmp(gol,"2") = = 0) return (float) 10/100 * ht; else if (strcmp(gol,"3") = = 0) return (float) 15/100 * ht; else return 0; } 3. fungsi strcpy() Fungsi ini digunakan untuk menyalin string asal ke variable string tujuan dengan syarat string tujuan harus mempunyai tipe data dan ukuran yang sama dengan string asal. File header yang harus diikut sertakan adalah <string.h> Bentuk umum : strcpy(tujuan, asal); Contoh: #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> void main() { char huruf[30]; char pindah[30]; cout << Masukkan Sembarang Kata = ; gets(huruf); strcpy(pindah, huruf); // Proses menyalin

cout << Pemindahannya = << pindah; getch(); } 4. fungsi strlen() Fungsi ini digunakan untuk memperoleh banyaknya karakter dalam string. Hasil dari fungsi ini bertipe data integer (int). File header yang harus diikut sertakan adalah <string.h> Bentuk umum : var_int = strlen(str); Contoh: #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> void main() {

char huruf[30]; int pjg_huruf; cout << Masukkan Sembarang Kata = ; gets(huruf); cout << Panjang Kata Yang Diinputkan = ; pjg_huruf = strlen(huruf); // Proses menghitung panjang karakter

cout << pjg_huruf << Karakter.; getch(); } 5. fungsi strrev() Fungsi ini digunakan untuk membalikkan letak urutan pada string. String urutan paling akhir dipindahkan ke urutan paling depan dan seterusnya. File header yang harus diikut sertakan adalah <string.h> Bentuk umum : strrev(str); Contoh: #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> void main() { char kata[30]; cout << Masukkan Sembarang Kata = ; gets(kata); strrev(kata); // Proses membalikkan letak urutan string cout << Hasil Perubahan = << kata; getch(); } 6. fungsi strlwr() Fungsi ini digunakan untuk mengubah setiap huruf kapital dalam string menjadi huruf kecil. File header yang harus diikut sertakan adalah <string.h> Bentuk umum : strlwr(str); Contoh: #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h>

void main() { char kata[30]; cout << Masukkan Sembarang Kata dengan huruf besar = ; gets(kata); strlwr(kata); // Proses merubah menjadi huruf kecil cout << Hasil Perubahan = << kata; getch(); } 7. fungsi strupr() Fungsi ini digunakan untuk mengubah setiap huruf kecil dalam string menjadi huruf kapital. File header yang harus diikut sertakan adalah <string.h> Bentuk umum : strupr(str); Contoh: #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> void main() { char kata[30]; cout << Masukkan Sembarang Kata dengan huruf kecil = ; gets(kata); strupr(kata); // Proses merubah menjadi huruf besar cout << Hasil Perubahan = << kata; getch(); }

FUNGSI KONVERSI STRING


Beberapa fungsi yang umum digunakan untuk keperluan manipulasi string, adalah sebagai berikut: 8. fungsi atof() Fungsi ini digunakan mengubah string (teks) angka menjadi bilangan numerik float. File header yang harus diikut sertakan adalah <math.h> Bentuk umum : var_float = atof(string); Contoh:

#include <stdio.h> #include <conio.h> #include <math.h> #include <iostream.h> void main() { char kata[20]; float angka, a, b; cout << Masukkan Sembarang Kata berupa angka = ; gets(kata); angka = atof(kata); a = angka + 5; // Proses pengkonversian string menjadi bil float

cout << Hasil Perubahan ditambah dengan 5 = << a; getch(); } 9. fungsi atoi() Fungsi ini digunakan mengubah string (teks) angka menjadi bilangan numerik integer. File header yang harus diikut sertakan adalah <stdlib.h> Bentuk umum : var_int = atof(string); Contoh: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <iostream.h> void main() { char kata[20]; int angka, a; cout << Masukkan Sembarang Kata berupa angka = ; gets(kata); angka = atoi(kata); // Proses pengkonversian string menjadi bil integer a = angka + 5; cout << Hasil Perubahan ditambah dengan 5 = << a; getch(); } 10. fungsi atol()

Fungsi ini digunakan mengubah string (teks) angka menjadi bilangan numerik long integer. File header yang harus diikut sertakan adalah <stdlib.h> Bentuk umum : var_long = atol(string); Contoh: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <iostream.h> void main() { char kata[20]; long int angka, a; cout << Masukkan Sembarang Kata berupa angka = ; gets(kata); angka = atol(kata); // Proses pengkonversian string menjadi bil float a = angka + 5; cout << Hasil Perubahan ditambah dengan 5 = << a; getch(); }

Macro
Penjelasan Didalam penyusunan suatu makro ada beberapa hal yang perlu dipelajari adalah :

9.1. Preprocessor Directives


Penjelasan Adalah instruksi yang diberikan kepada kompiler, sesaat sebelum proses kompilasi berlangsung. Didalam penggunaan preprocessor directive selalu dimulai dengan tanda : # (number sign) Ada beberapa preprocessor directive, diantaranya adalah :

9.1.1. # define
Penjelasan Digunakan untuk mendefinisikan suatu nilai tertentu kepada suatu nama konstanta. Bentuk umum dari preprocessor directive #define ini adalah : #define nama_konstanta teks Contoh : Teks

#define A 6 Nama_Konstanta Dalam pendeklarasian preprocessor directive #define, Nama_Konstanta sebaiknya ditulis dengan menggunakan huruf besar, guna untuk membedakannya dengan nama_variabel. Sedangkan Teks merupakan suatu nilai yang diberikan pada nama_konstanta. Teks dapat berupa : Numerik #define PI 3.14 Karakter #define HURUF B String #define JABATAN Direktur Pernyataan #define CETAK (Turbo C) Fungsi Sederhana #define LUAS_KUBUS (n*n) Setelah #define ditentukan didalam program cukup dituliskan nama_konstantanya saja. # define akan mengganti semua nama konstanta tadi dengan teksnya sebelum proses kompilasi dimulai. Contoh-1 /* -------------------------/* Program Penggunaan #define /* Nama File : define01.cpp /* -------------------------#include<stdio.h> #include<conio.h> #include<iostream.h> #define PI 3.141592 #define L(n) PI*n*n main() { clrscr(); cout<<"Luas Lingkaran dengan : "<<endl; cout<<"Jari-jari = 5 adalah "<<L(5)<<endl; cout<<"Jari-jari = 10 adalah "<<L(10)<<endl; getche(); } */ */ */ */

Contoh-2

/* /* /* /*

-------------------------Program Penggunaan #define Nama File : define02.cpp --------------------------

*/ */ */ */

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

#define #define #define #define #define #define #define #define

awal { akhir } mulai() main() cetak cout masuk cin hapus() clrscr() tahan() getch() LS_KUBUS (sisi*sisi)

mulai() awal int sisi, ls_kubus; hapus(); cetak<<"Program Penggunaan #define"<<endl; cetak<<"Masukkan Nilai Sisi Kubus = "; masuk>>sisi; ls_kubus = LS_KUBUS; cetak<<"Luas Kubus adalah : "<<ls_kubus; tahan(); akhir

9.1.2. # include
Preprocessor #include telah dibahas pada bab sebelumnya, yaitu berfungsi untuk memasukkan atau menyertakan file-file header kedalam program yang akan dibuat. Dalam penulisan #include ada dua bentuk penulisan : #include nama_file_header atau #include <nama_file_header> Pada bentuk penulisan #include mempunyai arti yang berbeda, yaitu : #include "nama_file_header" Pertama kali compiler akan mencari file header yang disebutkan pada directory yang sedang aktif dan apa bila tidak ditemukan akan mencari pada directory dimana file header tersebut berada . #include <nama_file_header> Pertama kali compiler akan mencari file header yang disebutkan pada directory yang ada file headernya, kecuali pada directory yang sedang aktif.

9.1.3. #if - #endif


Preprocessor #if - #endif digunakan untuk mengompilasi jika pernyataan kondisi pada #if bernilai BENAR, dan jika tidak maka akan diabaikan. Pernyataan kondisi berupa ekspresi konstanta dideklarasikan dengan #define. Bentuk Penulisan: #if ekspresi-konstanta pernyataan; #endif Contoh penerapan:

#define N -4 int main( ) { # if N > 0 printf(Nilai Lebih Besar dari Nol); # endif return 0; }

9.1.4. #if - #else - #endif


Preprocessor #if - #else - #endif digunakan untuk mengompilasi jika pernyataan kondisi pada #if bernilai BENAR. Jika #if bernilai SALAH maka pernyatan #else dikompilasi. Pernyataan kondisi berupa ekspresi konstanta yang dideklarasikan dengan #define. Bentuk Penulisan: #if ekspresi-konstanta pernyataan-1; #else pernyataan-2; #endif Contoh penerapan: #define N -4 int main( ) { # if N > 0 printf(Nilai Lebih Besar dari Nol); # else printf(Nilai Lebih Kecil dari Nol); # endif return 0; }

9.1.5. #elif
Preprocessor #elif digunakan untuk mengompilasi pernyataan #if bertingkat. Dalam hal ini #elif sama halnya seperti #elseif, merupakan kombinasi dari #if dan #else. Perintah dijalankan sesuai dengan kondisi yang telah ditentukan. Hasilnya hanya dapat dijalankan sesuai dengan ketentuan yang benar. Bentuk #elif diikuti oleh ekspresi konstanta. Bentuk Penulisan: #if ekspresi-konstanta-1 pernyataan-1; #elif ekspresi-konstanta-2 pernyataan-2; . . #elif ekspresi-konstanta-n pernyataan-n; #endif

Contoh penerapan: #define N 12 int main( ) { # if N > 10 printf(Nilai Lebih Besar dari Sepuluh); # elif N == 10 printf(Nilai Sama dengan Sepuluh); # elif N < 10 printf(Nilai Lebih Kecil dari Sepuluh); # endif return 0; }

9.1.6. #undef
Preprocessor #undef digunakan untuk menghilangkan nilai yang telah didefinisikan dari daftar definisi. Contoh penerapan: #include<iostream.h> #define LEBAR_MAKS 100 #if LEBAR_MAKS>200 #undef LEBAR_MAKS #define LEBAR_MAKS 200 #elif LEBAR_MAKS<50 #undef LEBAR_MAKS #define LEBAR_MAKS 50 #else #undef LEBAR_MAKS #define LEBAR_MAKS 50 #endif

9.1.7. #ifdef - #ifndef


Preprocessor #ifdef dan #ifndef memberikan bagian dari program yang akan dikompilasi. Hal ini dapat dilakukan jika konstanta sudah didefinisikan pada bagian #define. Hal ini merupakan parameter yang khusus yang harus terdefinisi. Bentuk Penulisan: #ifdef nama-konstanta pernyataan; #endif Bentuk Penulisan: #ifndef nama-konstanta pernyataan; #endif Contoh Penerapan: #ifndef LEBAR_MAKS /*JikaTidakTerdefinisi #define LEBAR_MAKS 10 #endif

atau

Contoh Penerapan: #ifdef LEBAR_MAKS /* Jika Terdefinisi char str(LEBAR_MAKS); #endif

char str[LEBAR_MAKS];

9.2. Pembuatan File Header


File Header adalah suatu file dengan akhiran .h . File ini sebenarnya berisikan deklarasi fungsi dan definisi konstanta. Selain file-file header standar yang disediakan oleh Turbo C, kita dapat juga membuat file header sediri, dengan cara yang sama seperti membuat file editor. Yang harus diperhatikan pada saat menyimpan file header yang telah dibuat harus digunakan akhiran .h . Berikut contoh file header standar yang disediakan oleh Borland C++. /* types.h Types for dealing with time. Copyright (c) Borland International 1987,1988 All Rights Reserved. */ #ifndef __TIME_T #define __TIME_T typedef long time_t; #endif Penjelasan

Berikut kita akan membuat suatu file header sendiri yang akan digunakan pada file editor. Buatlah program file heder dibawah ini, kemudian simpan dengan nama : atur.h Contoh-3

/*

atur.h contoh pembuatan file header untuk pengaturan. Copyright (c) Virusland Corp 2001 All Rights Reserved.

*/ #define #define #define #define #define #define #define #define #define awal { akhir } mulai() main() cetak cout tampil cprintf masuk scanf hapus() clrscr() jika if warna textcolor

Buatlah program dibawah ini, kemudian gunakan file header yang sudah anda buat dan simpan dengan nama : sendiri.cpp Contoh-4

/* ---------------------------------- */ /* program dengan file header sendiri */ /* ---------------------------------- */


#include<stdio.h> #include<conio.h>

#include<iostream.h> #include"atur.h" mulai() awal int a, b, c; hapus(); warna(4); tampil("\nPROGRAM PENJUMLAHAN\n"); cout<<endl; cout<<"Masukkan Nilai A = "<<; cin>>a; cout<<"Masukkan Nilai B = "<<; cin>>b; c=a+b; cout<<"Hasil dari "<<a<<" + "<<b<<" = "<<c; tahan(); akhir

Tugas: 1. Buatlah program menghitung pangkat dua serta pangkat tiga dari sebuah bilangan bulat dengan makro. Sebagai input adalah bilangan itu sendiri, sedangkan sebagai output adalah pangkat dua serta pangkat tiga dari bilangan bulat tersebut. 2. Buatlah program menghitung luas dan keliling lingkaran. Proses berada di dalam file header. Nama file header yang diinginkan adalah lingkaran.h 3. Buatlah program menghitung nilai akhir perkuliahan pada suatu matakuliah dengan ketentuan sebagai berikut: Nilai Absensi * 10% Nilai Tugas * 20% Nilai U.T.S * 30% Nilai U.A.S * 40% Proses penilaian dilakukan di dalam file header dan disimpan dalam file header tersebut dengan nama hitnilai.h

Layar Masukan dan Keluaran yang diinginkan: Program Hitung Nilai Akhir Mata Kuliah Masukkan Nilai Absensi Masukkan Nilai Tugas Masukkan Nilai U.T.S Masukkan Nilai U.A.S Nilai Murni Absensi Nilai Murni Tugas Nilai Murni U.T.S Nilai Murni U.A.S = = = = : : : : ..... <di entri lewat keyboard> ..... <di entri lewat keyboard> ..... <di entri lewat keyboard> ..... <di entri lewat keyboard> = <hasil-proses> = <hasil-proses> = <hasil-proses> = <hasil-proses>

<data-input> * 10% <data-input> * 20% <data-input> * 30% <data-input> * 40%

Nilai Akhir yang diperoleh Sebesar = ...... <hasil-proses>

Bab 10 : Structure
Penjelasan Structure digunakan untuk mengelompokan sejumlah data yang mempunyai tipe data yang berbeda. Variabel-variabel yang membentuk sebuah struktur dinamakan elemen struktur. Struktur sama seperti Record di dalam Bahasa Pemrograman Pascal

10.1. Deklarasi Structure


Penjelasan Structure dapat deklarasikan seperti berikut

struct nama_tipe_struktur { elemen_struktur; ..... ..... };


atau

struct { elemen_struktur; ..... ..... } nama_tipe_struktur;

Contoh Deklarasi

struct { char nim[5]; char nama[15]; float nilai; } mahasiswa;

Contoh-1

/* /* /* /*

---------------------------Program Penggunaan structure Nama File : struct1.cpp ----------------------------

*/ */ */ */

#include<stdio.h> #include<conio.h> #include<iostream.h> main() { struct { char nim[5]; char nama[15]; float nilai; } mahasiswa; clrscr(); cout<<"masukan NIM = "; cin>>mahasiswa.nim; cout<<"masukan Nama = "; cin>>mahasiswa.nama; cout<<"masukan Nilai Akhir = "; cin>>mahasiswa.nilai; clrscr(); cout<<"NIM = "<<mahasiswa.nim<<endl; cout<<"Nama = "<<mahasiswa.nama<<endl; cout<<"Nilai Akhir = "<<mahasiswa.nilai<<endl; getch(); }

10.2. Nested Structure


Penjelasan Nested Structure merupakan suatu Structure dapat digunakan didalam structure yang lainnya. Hal seperti ini anda dapat lihat pada program berikut ini :

Contoh-2

/* /* /* /*

----------------------------------Program Penggunaan Nested structure Nama File : struct2.cpp -----------------------------------

*/ */ */ */

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

main() { struct dtmhs { char nim[5];

char nama[15]; }; struct dtnil { float nil1; float nil2; }; struct { struct dtmhs mhs; struct dtnil nil; } nilai; clrscr(); //-> masukan data cout<<"masukan NIM = cout<<"masukan Nama = cout<<"masukan Nilai UTS = cout<<"masukan Nilai UAS = cout<<endl;

"; "; "; ";

cin>>nilai.mhs.nim; cin>>nilai.mhs.nama; cin>>nilai.nil.nil1; cin>>nilai.nil.nil2;

//-> menampilkan hasil masukan cout<<"masukan NIM = "<<nilai.mhs.nim<<endl; cout<<"masukan Nama = "<<nilai.mhs.nama<<endl; cout<<"masukan Nilai UTS = "<<nilai.nil.nil1<<endl; cout<<"masukan Nilai UAS = "<<nilai.nil.nil2<<endl; cout<<endl; getch(); return(0); }

10.3. Structure dengan Array


Penjelasan Penggunaan Array sering dikaitkan dengan Structure, sehingga membentuk Array dari Structure. Berikut bentuk deklarasi array structure :

struct { elemen_struktur; ..... ..... } nama_tipe_struktur[jml_index];


Contoh-3 /* /* /* /* ---------------------------------Program Penggunaan array structure Nama File : struct3.cpp ---------------------------------*/ */ */ */

#include<stdio.h> #include<conio.h> #include<iostream.h> main() { int i, j=1; struct { char nim[5]; char nama[15]; float nilai; } mhs[5]; clrscr(); for(i=0; i<2; i++) { cout<<"masukan NIM = "; cin>>mhs[i].nim; cout<<"masukan Nama = "; cin>>mhs[i].nama; cout<<"masukan Nilai Akhir = "; cin>>mhs[i].nilai; } for(i=0; i<2; i++) { cout<<"Data Ke - "<<j++<<endl; cout<<"NIM = "<<mhs[i].nim<<endl; cout<<"Nama = "<<mhs[i].nama<<endl; cout<<"Nilai Akhir = "<<mhs[i].nilai<<endl; cout<<endl; } getch(); }

10.4. Structure dengan Function


Penjelasan Suatu elemen-elemen dari suatu Structure dapat dikirimkan ke dalam suatu function dengan cara yang sama seperti mengirimkan suatu variabel sederhana kedalam suatu function. Berikut contoh sederhana yang anda dapat lihat pada contoh program berikut :

Contoh-4

/* /* /* /*

-----------------------------------------Program Penggunaan structure pada function Nama File : struct4.cpp ------------------------------------------

*/ */ */ */

#include<stdio.h> #include<conio.h> #include<iostream.h> char* ket(float n);

main() { int i, j=1, k=1; struct { char nim[5]; char nama[15]; float nilai; } mhs[5]; clrscr(); for(i=0; i<2; i++) { cout<<"Data Ke cout<<"masukan cout<<"masukan cout<<"masukan cout<<endl; }

- "<<j++<<endl; NIM = "; cin>>mhs[i].nim; Nama = "; cin>>mhs[i].nama; Nilai Akhir = "; cin>>mhs[i].nilai;

clrscr(); for(i=0; i<2; i++) { cout<<"Data Ke - "<<k++<<endl; cout<<"NIM = "<<mhs[i].nim<<endl; cout<<"Nama = "<<mhs[i].nama<<endl; cout<<"Nilai Akhir = "<<mhs[i].nilai<<endl; cout<<"Keterangan yang didapat = "; cout<<ket(mhs[i].nilai)<<endl; cout<<endl; } getch(); } char* ket(float n) { if(n > 65) return Lulus; else return Gagal; } Contoh Stuktur dengan pointer: #include <iostream> using namespace std; struct koordinat { int x; int y; }; int main() { koordinat struk;

koordinat *ptr; struk.x = 12; struk.y = 15; ptr = &struk; cout<< ptr->x; cout<< ptr->y; cin.get(); return 0; } Tugas: Sebuah perusahaan ayam goreng dengan nama AYAM GORENG RAKYAT telah lumayan banyak pelanggannya. Perusahaan ini ingin dibuatkan program penjualannya. AYAM GORENG RAKYAT mempunyai daftar harga ayam goreng per potong sbb: Kode Jenis Harga D Dada Rp. 3000 P Paha Rp. 2500 S Sayap Rp. 2000 Buatlah programmnya dengan ketentuan sebagai berikut: 1. Gunakan structure dalam program ini 2. Banyak Jenis, Jenis Potong dan Banyak Beli diinput Tampilan yang diinginkan sebagai berikut: GEROBAK FRIED CHIKEN -----------------------------------Kode Jenis Harga -----------------------------------D Dada Rp. 3000 P Paha Rp. 2500 S Sayap Rp. 2000 -----------------------------------Banyak Jenis : . <diinput> Jenis ke - .<proses counter> Jenis Potong [D/P/S] : .<diinput> Banyak Potong yang dibeli : .<diinput> <<Terus berulang tergantung banyaknya jenis>> Tampilan Keluaran: --------------------------------------------------------------------------------AYAM GORENG RAKYAT --------------------------------------------------------------------------------No. Jenis Harga Banyak Jumlah Potong Satuan Beli Harga --------------------------------------------------------------------------------. . Rp. ,,,,, . . Rp. ,,,,, . . Rp. ,,,,, --------------------------------------------------------------------------------Jumlah Bayar Rp. . Pajak 10% Rp. ,,,,, Total Bayar Rp. ,,,,

// gunakan & untuk structure dengan pointer // tanda -> acts somewhat like the *

/* ------------------------------------------------------- */ /* Program Penggunaan structure pada function */ /* Nama File : struktur.cpp */ /* ------------------------------------------------------- */ #include<iostream.h> float jumlah(char a, int n); int harga; void main() { int i, j, k=1, l=1; float jmlbyr=0,ppn=0,total=0; struct { char kode_jenis; int item; } ayam[3]; /*Layar Masukan*/ cout<<"\t\tGEROBAK FRIED CHIKEN\n"; cout<<"\t\t====================\n"; cout<<"\t\tKode Jenis Harga \n"; cout<<"\t\t--------------------\n"; cout<<"\t\t D Dada Rp.3000\n"; cout<<"\t\t P Paha Rp.2500\n"; cout<<"\t\t S Sayap Rp.2000\n"; cout<<"\t\t--------------------\n"; cout<<endl; cout<<"\tBanyak Jenis yang diinginkan = "; cin>>j; for(i=0; i<j; i++) { cout<<"\tJenis Ke - "<<k++<<endl; cout<<"\tJenis Potong [D/P/S] = "; cin>>ayam[i].kode_jenis; cout<<"\tBanyak Potong = "; cin>>ayam[i].item; cout<<endl; } /*Layar Keluaran*/ cout<<"\t\t AYAM GORENG RAKYAT\n"; cout<<"\t\t========================================\n"; cout<<"\t\tNo. Jenis Harga Banyak Jumlah\n"; cout<<"\t\t Potong Satuan Beli Harga \n"; cout<<"\t\t----------------------------------------\n"; for(i=0; i<j; i++) { cout<<"\t\t"<<l++; cout<<"\t"<<ayam[i].kode_jenis;

if (ayam[i].kode_jenis=='D') harga=3000; else if (ayam[i].kode_jenis=='P') harga=2500; else harga=2000; cout<<"\t"<<harga; cout<<"\t"<<ayam[i].item; cout<<"\t"<<jumlah(ayam[i].kode_jenis, ayam[i].item); cout<<endl; jmlbyr= jmlbyr+jumlah(ayam[i].kode_jenis, ayam[i].item); } cout<<"\t\t----------------------------------------\n"; ppn = (float) jmlbyr * (float) (0.1); total = jmlbyr - ppn; cout<<"\t\t\t\tJumlah Bayar Rp. "<<jmlbyr<<endl; cout<<"\t\t\t\tPajak 10% Rp. "<<ppn<<endl; cout<<"\t\t\t\tTotal Bayar Rp. "<<total<<endl; cout<<endl; } float jumlah(char a, int n) { if (a=='D') return (float) harga*n; else if (a=='P') return (float) harga*n; else return (float) harga*n; } Contoh kasus: Buatlah sebuah program menentukan bilangan terbesar dari 3 buah bilangan. Program: //--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------#pragma argsused int main(int argc, char* argv[]) { int a,b,c; printf("Masukkan bilangan A = ");scanf("%d",&a); printf("Masukkan bilangan B = ");scanf("%d",&b); printf("Masukkan bilangan C = ");scanf("%d",&c); if(a>=b&&a>=c) { printf("Bilangan %d terbesar",a); } else if(b>=a&&b>=c) { printf("Bilangan %d terbesar",b); } else {

printf("Bilangan %d terbesar",c); } getch(); return 0; } //--------------------------------------------------------------------------Contoh kasus: Menentukkan nama hari berdasarkan kode hari. Program: //--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------#pragma argsused int main(int argc, char* argv[]) int hari; printf("Menentukan nama hari dalam seminggu \n"); printf("1. Ahad 2. Senin 3. Selasa 4. Rabu "); printf("5. Kamis 6. Jum'at 7. Sabtu \n"); printf("Kode hari = ");scanf("%d",&hari); switch(hari) { case 1: printf("Hari Ahad"); break; case 2: printf("Hari Senin"); break; case 3: printf("Hari Selasa"); break; case 4: printf("Hari Rabu"); break; case 5: printf("Hari Kamis"); break; case 6: printf("Hari Jum'at"); break; case 7: printf("Hari Sabtu"); break; default: printf("Kode hari SALAH!"); } getch(); return 0; }

//--------------------------------------------------------------------------Contoh Kasus: Menampilkan deret dari 0 20. Program: //--------------------------------------------------------------------------#include <vcl.h>

#pragma hdrstop #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------#pragma argsused int main(int argc, char* argv[]) int i; i=0; while(i<=20) { printf("%d "); i++; } getch(); return 0; } //--------------------------------------------------------------------------Contoh Kasus: Menampilkan deret menurun dari 20 sampai 0. Program: //--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include <stdio.h> #include <conio.h> #pragma argsused int main(int argc, char* argv[]) { int i; i=0; do { printf("%d "); i++; } while(i<=20); getch(); return 0; } //--------------------------------------------------------------------------Contoh Kasus: Menampilkan deret bilangan 1 100 yang habis dibagi dengan 2 dan habis dibagi dengan 3. Program: //--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------#pragma argsused

int main(int argc, char* argv[]) { int i; for(i=1;i<=100;i++) { if(i%2==0&&i%3==0) { printf("%d ",i); } } getch(); return 0; } //--------------------------------------------------------------------------LATIHAN 1. Buatlah Program untuk mencetak tampilan sebagai berikut : ********** ********* ******** ******* ****** ***** **** *** ** * Gunakan perulangan while atau for..! 2. Buatlah Program untuk mencetak 10 bilangan prima pertama.

2 3 5 7 13 17.

Bab 11 : Pointer
Pointer: merupakan penunjukan suatu alamat memori dari suatu data. Setiap byte di dalam memori komputer memiliki sebuah alamat. Alamat memori dimulai dari 0. Pada komputer yang memiliki memori 640Kb, alamat memori tertinggi yaitu 655.359. Dimana suatu pointer di dalam program dimaksudkan untuk menunjuk ke suatu alamat memori. OPERATOR POINTER ada dua macam operator pointer yang dikenalkan: 1. operator dereference (&) 2. operator reference (*) Operator Dereference (&)

Pemberian operator dereference (&) pada variabel akan menghasilkan alamat lokasi memori, contoh: ILHAM = 75; AMIR = ILHAM; RAKA = &ILHAM; // Raka & Ilham sama alamat lokasi memori ILHAM --- Nama Variabel 75 -------- Nilai Variabel 0x0012ff88 -- Alamat Memori Operator Reference (*) Pemberian operator reference (*) pada variabel akan dihasilkan nilai yang berada suatu alamat lokasi memori, contoh: ILHAM = 75; RAKA = &ILHAM; RAFLI = *RAKA // Maka Rafli & Raka sama-sama 75

DEKLARASI POINTER
Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan. Bentuk Umum : Tipe_data *nama_pointer; Tipe data pointer mendefinisikan tipe dari obyek yang ditunjuk oleh pointer. Secara teknis, tipe apapun dari pointer dapat menunjukkan lokasi (dimanapun) dalam memori. Bahkan operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apapun yang ditunjuk. Contoh, ketika kita mendeklarasikan pointer dengan tipe int*, kompiler akan menganggap alamat yang ditunjuk menyimpan nilai integer - walaupun sebenarnya bukan (sebuah pointer int* selalu menganggap bahwa ia menunjuk ke sebuah obyek bertipe integer, tidak peduli isi sebenarnya). Karenanya, sebelum mendeklarasikan sebuah pointer, pastikan tipenya sesuai dengan tipe obyek yang akan ditunjuk. Contoh : int *px; char *sh; Contoh Program : #include stdio.h #include conio.h int main() { int x, y; /* x dan y bertipe int */ int *px; /* px pointer yang menunjuk objek */ x = 87; px = &x; /* px berisi alamat dari x */ y = *px; /* y berisi nilai yang ditunjuk px */ printf(Alamat x = %p\n, &x); printf(Isi px = %p\n, px); printf(Isi x = %i\n, x);

printf(Nilai yang ditunjuk oleh px = %i\n, *px); printf(Nilai y = %i\n, y); getch(); }

OPERASI POINTER
Operasi Penugasan Suatu variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi penugasan. Nilai dari suatu variable pointer dapat disalin ke variable pointer yang lain. Contoh Program : #include stdio.h #include conio.h int main() { float *x1, *x2, y; y = 13.45; x1 = &y; /* Alamat dari y disalin ke variabel x1 */ x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */ printf(Nilai variabel y = %.2f ada di alamat %p\n, y, x1); printf(Nilai variabel y = %.2f ada di alamat %p\n, y, x2); getch(); } Operasi Aritmatika Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Begitu juga operasi pengurangan. Contoh Program : #include stdio.h #include conio.h int main() { int nilai[3], *penunjuk; nilai[0] = 125; nilai[1] = 345; nilai[2] = 750; penunjuk = &nilai[0]; printf(Nilai %i ada di alamat memori %p\n, *penunjuk, penunjuk); printf(Nilai %i ada di alamat memori %p\n, *(penunjuk+1), penunjuk+1); printf(Nilai %i ada di alamat memori %p\n, *(penunjuk+2), penunjuk+2); getch(); } Operasi Logika

Suatu pointer juga dapat dikenai operasi logika. Contoh Program : #include stdio.h #include conio.h int main() { int a = 100, b = 200, *pa, *pb; pa = &a; pb = &b; printf(Alamat memori pa : %p, pa); printf(Alamat memori pb : %p, pb); if(pa < pb) printf(pa menunjuk ke memori lebih rendah dari pb\n); if(pa == pb) printf(pa menunjuk ke memori yang sama dengan pb\n); if(pa > pb) printf(pa menunjuk ke memori lebih tinggi dari pb\n); getch(); }

P O I N T E R D A N S T R I NG
Contoh Program 1 : #include stdio.h #include conio.h char *nama1 = SPIDERMAN; // ini sama dengan char nama1[] = SPIDERMAN char *nama2 = GATOTKACA; // ini sama dengan char nama2[] = GATOTKACA int main() { char *namax; puts(SEMULA :); printf(Saya suka >> %s\n, nama1); printf(Tapi saya juga suka >> %s\n, nama2); /* Penukaran string yang ditunjuk oleh pointer nama1 dan nama2 */ namax = nama1; nama1 = nama2; nama2 = namax; printf(SEKARANG :); printf(Saya suka >> %s\n, nama1); printf(Dan saya juga masih suka >> %s\n, nama2); getch(); } Contoh Program 2 : #include <stdio.h> void misteri(char *);

int main() { char string[] = "characters"; printf("String sebelum proses adalah %s", string); misteri(string); printf("String setelah proses adalah %s", string); } void misteri(char *s) { while ( *s != '\0' ) { if ( *s >= 'a' && *s <= 'z' ) *s = *s - 32; ++s; } }
P O I N T E R M E N U N J U K S U A T U A R R AY

Contoh Program : #include stdio.h #include conio.h int main() { static int tgl_lahir[] = { 13,9,1982 }; int *ptgl; ptgl = tgl_lahir; /* ptgl berisi alamat array */ printf(Diakses dengan pointer\n); printf(Tanggal = %i\n, *ptgl); printf(Bulan = %i\n, *(ptgl + 1)); printf(Tahun = %i\n, *(ptgl + 2)); printf(\nDiakses dengan array biasa\n); printf(Tanggal = %i\n, tgl_lahir[0]); printf(Bulan = %i\n, tgl_lahir[1]); printf(Tahun = %i\n, tgl_lahir[2]); getch(); }
M E M B E R I N I L A I A R R A Y D E N G A N P O I N T ER

Contoh Program : #include stdio.h #include conio.h int main() { int x[5], *p, k; p = x;

x[0] = 5; /* x[0] diisi dengan 5 sehingga x[0] = 5 */ x[1] = x[0]; /* x[1] diisi dengan x[0] sehingga x[1] = 5 */ x[2] = *p + 2; /* x[2] diisi dengan x[0] + 2 sehingga x[2] = 7 */ x[3] = *(p+1) 3; /* x[3] diisi dengan x[1] - 3 sehingga x[3] = 2 */ x[4] = *(x + 2); /* x[4] diisi dengan x[2] sehingga x[4] = 7 */ for(k=0; k<5; k++) printf(x[%i] = %i\n, k, x[k]); getch(); }
P O I N T E R D A N R E C O RD

Contoh: //--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include <stdio.h> #include <conio.h> #include <string.h> struct biodata { char nim[11]; char nama[25]; struct { char jalan[20]; char kota[15]; char kodepos[5]; } alamat; struct { int tanggal; int bulan; int tahun; } lahir; }; //--------------------------------------------------------------------------#pragma argsused int main(int argc, char* argv[]) { struct biodata *mahasiswa; /* Input Biodata Mahasiswa*/ printf("NIM : ");scanf("%s",mahasiswa->nim); printf("Nama Mahasiswa : ");scanf("%s",mahasiswa->nama); printf("\n"); printf("Alamat\n"); printf("Jalan : ");scanf("%s", mahasiswa->alamat.jalan); printf("Kota : ");scanf("%s", mahasiswa->alamat.kota); printf("Kode Pos : ");scanf("%s", mahasiswa->alamat.kodepos); printf("\n"); printf("Lahir\n"); printf("Tanggal(xx) : ");scanf("%i", &mahasiswa->lahir.tanggal);

printf("Bulan(xx) : ");scanf("%i", &mahasiswa->lahir.bulan); printf("Tahun(xxxx) : ");scanf("%i", &mahasiswa->lahir.tahun); printf("\n\n"); /* Output Biodata Mahasiswa*/ printf("NIM : %s\n",mahasiswa->nim); printf("Nama : %s\n",mahasiswa->nama); printf("Alamat : Jl. %s %s %s\n",mahasiswa->alamat.jalan, mahasiswa->alamat.kota, mahasiswa->alamat.kodepos); printf("Tanggal Lahir : %i - %i - %i \n",mahasiswa->lahir.tanggal, mahasiswa->lahir.bulan,mahasiswa->lahir.tahun); getch(); return 0; } //---------------------------------------------------------------------------

Bab 12 : Object Oriented Programmings (OOP)


OOP: merupakan suatu pendekatan yang menyediakan suatu cara dalam membuat modul program dengan membuat bagian-bagian memori disekat untuk data-data dan fungsi yang dapat digunakan sebagai suatu template untuk membuat salinan yang dapat digunakan kembali.

12.1 Kelas
Kelas (Class) merupakan suatu metode logis untuk mengorganisasikan data dan fungsi di dalam struktur yang sama. Struktur mempunyai persamaan dengan kelas, bisa kita lihat dari pendeklarasian struktur: struct buku { char judul[35]; char pengarang[25]; int jumlah; }; Sebuah kelas (class) yang mempunyai struktur diatas dapat dibuat dengan mengganti kata struct dengan class, seperti berikut: class buku { char judul[35]; char pengarang[25]; int jumlah; };

Setelah kelas seperti diatas dideklarasikan, kelas tersebut dapat dipakai sebagai tipe data bagi penciptaan variabel, misalnya: buku novel; // variabel novel biasa disebut sebagai obyek. Dari contoh diatas dapat dituliskan bentuk umum kelas (class), sbb: class nama_class { [ private: ] data elemen_class private; data elemen_class private; .. public: data elemen_class public; data elemen_class public; .. } nama_obyek; Contoh deklarasi: class motor // nama class { [ public: atau private: ] // tambahan public atau private char merk[50]; // nama-nama anggota data class char jenis[35]; float harga; int stok; }; motor sport; // pendefinisian obyek. Public pada kelas, adalah untuk menyatakan bahwa deklarasi variabel atau item-item yang ada di bawahnya bersifat public (dapat diakses di luar kelas), misalnya pada kelas main( ) Private pada kelas, adalah untuk menyatakan bahwa deklarasi variabel atau item-item yang ada di bawahnya bersifat private (tidak dapat diakses di luar kelas secara langsung), jadi tujuannnya adalah memproteksi anggota-anggota tertentunya agar tidak dapat diakses dari luar kelas secara langsung. Contoh program: /// ** Contoh sebuah kelas yang menggunakan public **/// #include <iostream.h> #include <conio.h> #include <string.h> class buku { public: char judul[35]; char pengarang[25]; int jumlah;

}; void main( ) { clrscr( ); // hapus layar buku novel; // pendefinisian obyek strcpy(novel.judul, Robohnya Surau Kami); strcpy(novel.pengarang, A. A. Navis); novel.jumlah = 12; cout<< novel.judul << endl; cout<<novel.pengarang << endl; cout<<novel.jumlah << endl; cin.get(); }

12.2 Menambahkan Fungsi Anggota


Konsep obyek pada C++ sebenarnya digunakan untuk menyatukan data dan fungsi yang mengakses data dalam suatu wadah. Obyek bisa terdiri : - anggota data - fungsi anggota Sehingga data yang terletak di dalam kelas biasa disebut anggota data, Dan fungsi yang terletak di dalamnya disebut fungsi anggota. Misalnya, bila terdapat data: - judul buku - nama pengarang - jumlah buku di awal perancangan harus dipikirkan fungsi-fungsi dasar yang digunakan untuk mengakses ketiga data tersebut. Fungsi-fungsi yang dimaksud dapat berupa, misalnya: - mengisikan data - menampilkan data Kemudian juga perlu direncanakan, data atau fungsi mana saja yang boleh diakses di luar obyek dan yang hanya dipergunakan secara internal oleh obyek itu sendiri. Dalam hal ini penentu akses public atau private yang menentukan. Sehingga pada kelas dapat dideklarasikan sbb: class buku { private: char judul[35]; char pengarang[25]; int jumlah; public: void inisialisasi(char *Judul, char *Pengarang, int Jumlah)

{ strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; } void tampil( ) { cout << Judul : << judul << endl; cout << Pengarang : << pengarang << endl; cout << Jumlah buku : << jumlah << endl; } }; Sehingga didalam program khususnya dikelas utama (main) dapat dipanggil sbb: void main( ) { clrscr ( ); buku novel; // pendefinisian obyek Novel novel.inisialisasi(Robohnya Surau Kami, A. A. Navis, 12); novel.tampil(); } Sehingga dari contoh diatas dapat dituliskan bentuk pendefinisian kelas (class) BUKU, bersama anggota data dan fungsi-fungsi anggota sbb: class buku { private: char judul[35]; .. .. public: void inisialisasi( ) // fungsi anggota { } void tampil( ) // fungsi anggota { } .. } nama_obyek; Dimana bentuk pemanggilan fungsi anggota, sbb: nama_obyek.nama_fungsi_anggota(argumen)

12.3 Mendefinisikan Beberapa Obyek


Beberapa obyek dengan kelas sama dapat didefinisikan sebagaimana pendefinisian variabel biasa (bukan Obyek). Misalnya: buku novel, fiksi, roman;

merupakan pernyataan untuk mendefinisikan obyek bernama Novel, Fiksi dan Roman. Dimana kelasnya sama, yaitu Buku. Contoh: void main( ) { clrscr ( ); buku novel, fiksi, roman; // pendefinisian obyek Novel, Fiksi dan Roman novel.inisialisasi(Robohnya Surau Kami, A. A. Navis, 12); fiksi.inisialisasi(Ketika Cinta Bersemi , Marga T., 15); roman.inisialisasi(Layar Terkembang, S.T. Alysahbana, 10); novel.tampil(); fiksi.tampil(); roman.tampil(); }

12.4 Penugasan Nilai Antar Obyek


C++ memungkinkan penyalinan nilai antar obyek dapat dilakukan dengan mudah, yaitu cukup menggunakan operator sama dengan (=). Misalnya: buku novel, fiksi, roman; Dengan menggunakan pernyataan : fiksi = novel; Maka semua anggota data pada obyek fiksi akan diisi sesuai dengan anggota data pada obyek novel. Contoh: void main( ) { clrscr ( ); buku novel, fiksi, roman; // pendefinisian obyek Novel, Fiksi dan Roman novel.inisialisasi(Robohnya Surau Kami, A. A. Navis, 12); fiksi = novel; // Penugasan Obyek fiksi.tampil(); }

12.5 Alternatif Penulisan Fungsi Anggota


Cara mendefinisikan fungsi anggota sebenarnya dapat dilakukan dengan 2 cara: 1. Fungsi anggota didefinisikan di dalam deklarasi kelas: class buku { private: char judul[35]; char pengarang[25]; int jumlah; public: void inisialisasi( ) // fungsi anggota { } void tampil( ) // fungsi anggota

{ } .. } nama_obyek; 2. Fungsi anggota didefinisikan di luar deklarasi kelas: class buku { private: char judul[35]; .. .. public: void inisialisasi( ); // fungsi anggota void tampil( ); // fungsi anggota .. } nama_obyek; void buku::inisialisasi(char *Judul, char *Pengarang, int Jumlah) { strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; } void buku::tampil() // :: operator resolusi lingkup { cout<<Judul : <<judul<<endl; cout<<Pengarang : <<pengarang<<endl; cout<<Jumlah Buku : <<jumlah<<endl; } Contoh program: /// ** Contoh sebuah kelas dengan pendefinisian fungsi diluar kelas **/// #include <iostream.h> #include <conio.h> #include <string.h> class buku { private: char judul[35]; char pengarang[25]; int jumlah; public: void inisialisasi(char *Judul, char *Pengarang,int Jumlah); void tampil(); };

void main( ) { buku novel, fiksi, roman; // pendefinisian obyek Novel, Fiksi dan Roman novel.inisialisasi("Robohnya Surau Kami", "A. A. Navis", 12); fiksi.inisialisasi("Ketika Cinta Bersemi ", "Marga T.", 15); roman.inisialisasi("Layar Terkembang", "S.T. Alysahbana", 10); novel.tampil(); fiksi.tampil(); roman.tampil(); cin.get(); } void buku::inisialisasi(char *Judul, char *Pengarang,int Jumlah) { strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah; } void buku::tampil() { cout << "Judul : "<< judul << endl; cout << "Pengarang: "<< pengarang << endl; cout << "Jumlah buku : "<< jumlah << endl; }

12.2 Konstruktor
Konstruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelasnya. Kegunaannya: - mengalokasikan ruang bagi sebuah obyek - memberikan nilai awal terhadap anggota data suatu obyek - membentuk tugas-tugas umum lainnya Sebagai contoh: Class Kompleks { private: double re; double mi; public: Kompleks(); // Konstruktur void info(); }; void main() { Kompleks a; // Mendefinisikan obyek a a.info(); Kompleks b; // Mendefinisikan obyek b

b.info(); } void Kompleks::Kompleks() { cout<<Konstruktur dijalankan <<endl; re = 5.2; mi = 3.6; } Syarat Konstruktur: - Nama konstruktor sama dengan nama kelassnya - Konstruktur tidak mempunyai nilai balik (bahkan tanpa void) - Konstruktur harus diletakkan pada bagian public.

12.3 Destruktor
Destruktor adalah fungsi anggota kelas yang akan dijalankan secara otomatis pada saat obyek akan sirna / keluar. Nama destroktor sama seperti nama konstruktor, hanya saja diawali dengan sebuah karakter tak berhingga(~). Sebagai contoh: class Bilangan { private: int i public: Bilangan(); //Konstruktor ~Bilangan(); //Destruktor void info_data(); }; Catatan: Konstruktor dan Destruktor sangat bermanfaat untuk melakukan pengalokasian memori secara dinamis dan pendealokasiannya (pembebasan memori)

Bab 13 : Operasi File


13.1 Tahapan Dasar Operasi File File adalah sebuah organisasi dari sejumlah record. Masing-masing record bisa terdiri dari satu atau beberapa field. Setiap field terdiri dari satu atau beberapa byte. A. Membuka File Agar file bisa diakses atau digunakan biasanya terlebih dahulu file harus dibuka atau diaktifkan terlebih dahulu. Di dalam bahasa C++ sebelum file dibuka, terlebih dulu kita membuat suatu obyek dengan menggunakan perintah:

ofstream nama_obyek;
Setelah obyek dibuat maka selanjutnya file dibuka dengan menggunakan perintah: nama_obyek.open(nama_file); Perintah ini akan membuat sebuah file baru bilamana di dalam disk belum ada file tersebut. Apabila nama tersebut sudah ada maka isi dari file yang lama akan tertimpa oleh isi file yang baru. Contoh: #include<iostream.h> #include<fstream.h> void main( ) { // Membuka file dataku.txt ofstream fileku fileku.open(dataku.txt) .. .. } Kedua perintah di atas dapat digabungkan menjadi lebih sederhana, yaitu: Contoh: #include<iostream.h> #include<fstream.h> void main( ) { // Membuka file dataku.txt ofstream fileku(dataku.txt) .. .. } Dengan bentuk sederhana ini, konstruktor dari obyek fileku akan membuatkan obyek file, file dan langsung mengaktifkannya. B. Memproses File Setelah file dibuka atau diaktifkan, selanjutnya kita bisa melakukan pemrosesan atau perekaman data ke dalam file, dengan format perintah sebagai berikut: nama_obyek << .....teks_ekspresi...; Contoh: fileku << Penggunaan file pada Fileku <<endl; fileku << Pertama kali <<endl; C. Menutup File Setelah file dibuka atau diaktifkan dan pemrosesan, selanjutnya kita harus menutup file tersebut, dengan format perintah: nama_obyek.close;

Contoh: fileku.close( ); D. Membaca Isi File Setelah data direkam ke dalam file, kita bisa melihat isi dari file. Untuk melihat isi file, kita harus membuat suatu obyek dengan menggunakan perintah:

ifstream nama_obyek;
Setelah obyek dibuat maka selanjutnya file dibuka dengan menggunakan perintah: nama_obyek.open(nama_file); Contoh: #include<iostream.h> #include<fstream.h> void main( ) { // Membuka file dataku.txt ifstream fileku fileku.open(dataku.txt) .. .. } Kedua perintah di atas dapat digabungkan menjadi lebih sederhana, yaitu: Contoh: #include<iostream.h> #include<fstream.h> void main( ) { // Membuka file dataku.txt ifstream fileku(dataku.txt) .. .. } Pada pembacaan isi suatu file, haruslah dilakukan pendeteksian thd akhir dari suatu file. Fungsi yang bisa digunakan untuk keperluan ini adalah: eof( ). Contoh: #include<iostream.h> #include<fstream.h> void main( ) { const int BACADATA = 100; char tampil(BACADATA); ifstream fileku(dataku.txt)

while(!fileku.eof()) { fileku.getline(tampil, BACADATA); cout<<tampil<<endl; } fileku.close( ); cout<<\nFile Selesai dibaca..; getche(); } E. Menambah Isi File Untuk menambah isi dari suatu file dilakukan dengan menggunakan perintah ios:app yang merupakan modus dari operasi file, perintah ini selain digunakan untuk menambah data, jika file yang dibuka belum ada di dalam disk, maka secara otomatis akan dibuatkan file yan baru. Perintah diatas diletakkan pada fungsi open(), menjadi argumen kedua di dalam fungsi open(), berikut penulisan sintaknya: nama_obyek.open(nama_file, ios::app); Beberapa modus dari operasi file, sebagai berikut: - ios::app berarti membuka file dengan modus output (juga dapat menambah data ke file) - ios::ate berarti membuka file dengan modus input/output. - ios::in berarti membuka file dengan operasi input. - ios::out berarti membuka file dengan operasi output. - ios::nocreate berarti membuka file yang sudah ada dalam disk. Jika file yang akan di buka tidak ada, maka file tidak akan dibuka atau dibentuk baru. - ios::noreplace berarti membuka file atau membuat file yang baru. Jika file yang akan di buka atau dibuat sudah ada maka tidak melaksanakan pembukaan file atau tidak membentuk file yang dimaksud. Modus ini dikombinasikan dengan ios::app/ios::ate - ios::trunc berarti menghapus file yang sudah ada di dalam disk dan membuat file yang baru. - ios::binary berarti membuka file dengan operasi input/output secara binary. F. Contoh Orientasi Obyek pada Operasi File 1. Membuka file Pertama kita harus membuka file terlebih dahulu dan kemudian membuat suatu obyek. ofstream dataku(myfile.dat, ios::app); jika ingin menggunakan lebih dari satu modus pembukaan file maka harus menggunakan tanda | (vertikal line), berikut contoh penggunaannya: ofstream dataku(myfile.dat, ios:nocreate | ios::app); 2. Merekam data Perintah yang digunakan untuk merekam obyek ke dalam file adalah fungsi write(). Bentuk perintah penulisan perekaman data ke dalam file adalah sebagai berikut: Nama_obyek.write((char *)&nama_objek, sizeof(nama_obyek));

3. Menampilkan data Perintah yang digunakan untuk merekam obyek ke dalam file adalah fungsi read(). Bentuk perintah penulisan perekaman data ke dalam file adalah sebagai berikut: Nama_obyek.read((char *)&nama_objek, sizeof(nama_obyek)); Contoh Aplikasi: - Buatkan Aplikasi mencatat data gaji karyawan dengan menggunakan file: Karyawan.dat, yang terdiri atas field: Nomor Induk Karyawan (NIK) dengan tipe data string panjang 10 karakter Nama Karyawan dengan tipe data string panjang 40 karakter Jabatan dengan tipe data string panjang 20 karakter Gaji Pokok dengan tipe data float Yang diminta: A. Buatkan formulir entrian data Karyawan dengan format berikut: ::: SIMPAN DATA KARYAWAN ::. -----------------------------------------------------N.I.K :_______ Nama Karyawan : _ _ _ _ _ _ _ _ _ _ _ _ _ _ Jabatan :_______ Gaji Pokok :_______ Ingin Input Data Lagi [Y/T] : _ B. Buatkan laporan data karyawan dengan format berikut: ::: TAMPIL DATA KARYAWAN ::. -----------------------------------------------------N.I.K :_______ Nama Karyawan : _ _ _ _ _ _ _ _ _ _ _ _ _ _ Jabatan :_______ Gaji Pokok :_______ N.I.K Nama Karyawan Jabatan Gaji Pokok N.I.K Nama Karyawan Jabatan Gaji Pokok :_______ :______________ :_______ :_______ :_______ :______________ :_______ :_______

N.I.K :_______ Nama Karyawan : _ _ _ _ _ _ _ _ _ _ _ _ _ _

Jabatan Gaji Pokok Dst

:_______ :_______

Contoh-Contoh Program C++: #include <stdio.h> #include <conio.h> #include <iostream.h> void main() { //deklarasi variabel long pj, lb, ls, kl; cout << "Masukkan Panjang Persegi: "; cin >> pj; cout << "Masukkan Lebar Persegi: "; cin >> lb; // Proses ls = pj * lb; kl = 2 * pj + 2 * lb; //Tampilan cout << "------------------------------\n"; cout << "Luas Persegi itu adalah: " << ls << "m2 \n"; cout << "Keliling Persegi iut adalah: " << kl << "m \n"; cout << "------------------------------\n"; //getche(); } -----------------------#include <stdio.h> #include <conio.h> void main() { float a = 7.50, b = 243.21; printf("Bilangan A = %4.1f meter persegi \n", a); printf("Bilangan B = %4.1f meter persegi \n", b); } ----------------------------

#include <stdio.h> #include <conio.h> void main() { char a[16] = "STMIK INDONESIA"; puts("Saya Kuliah di."); puts(a); } -----#include <stdio.h> #include <conio.h> void main() { putchar('S'); putchar('T'); putchar('M'); putchar('I'); putchar('K'); putchar(' '); putchar('I'); putchar('N'); putchar('D'); putchar('O'); putchar('N'); putchar('E'); putchar('S'); putchar('I'); putchar('A'); } -------// #include <stdio.h> #include <conio.h> #include <iostream.h> void main() { int a, b, c, d; a = 6; b = 5; c = a * b; d = a % b; cout<<"Hasil dari C = A * B adalah "<<c<<endl;

cout<<"Hasil dari D = A % B adalah "<<d<<endl; getch(); } --------#include <stdio.h> #include <conio.h> #include <iostream.h> void main() { char nama[50]; double abs, tgs, mid, fin, nilai; char grade; printf("Masukkan Nama Mahasiswa : "); scanf("%s", &nama); cout << "Masukkan Nilai Absensi : "; cin >> abs; cout << "Masukkan Nilai Tugas : "; cin >> tgs; cout << "Masukkan Nilai Mid Test : "; cin >> mid; cout << "Masukkan Nilai Final Test : "; cin >> fin; // Proses nilai = 0.1 * abs + 0.2 * tgs + 0.3 * mid + 0.4 * fin; if (nilai>80) grade = 'A'; else if (nilai > 65) grade = 'B'; else if (nilai > 55) grade = 'C'; else if (nilai > 45) grade = 'D'; else grade = 'E'; // Tampilan cout << "Jumlah Nilai Mahasiswa : " << nilai << "\n"; cout << "Nilai Grade : " << grade << "\n"; getch(); } ---#include<iostream.h> #include<stdio.h> #include<conio.h> void main() { int a, b;

char lagi; ulang: cout<<"Masukkan Bilangan = "; cin>>a; b = a % 2; printf("Nilai %d %% 2 adalah = %d", a, b); printf("\n\nIngin Hitung Lagi [Y/T] : "); lagi = getche(); if (lagi == 'Y' || lagi == 'y') { printf("\n"); goto ulang; } } ----#include <iostream> using namespace std; int a, t, ls, kl; void persegi(); int segitiga(int a, int t); void lingkaran(); int main() { int input; char lagi; Kembali: cout<<"1. Hitung Persegi\n"; cout<<"2. Hitung SegiTiga\n"; cout<<"3. Hitung Lingkaran\n"; cout<<"4. Keluar\n"; cout<<"Pilihan: "; cin>> input; switch ( input ) { case 1: // Note the colon, not a semicolon persegi(); break; case 2: // Note the colon, not a semicolon segitiga(a, t); break; case 3: // Note the colon, not a semicolon lingkaran(); break;

case 4: // Note the colon, not a semicolon cout<<"Terima Kasih.. !\n"; break; default: // Note the colon, not a semicolon cout<<"Salah input angka, keluar\n"; break; } cout << "Mengulangi Lagi [Y/T] : "; lagi = cin.get(); if (lagi=='Y' || lagi=='y') goto Kembali; return ls; } // Fungsi untuk mencari nilai persegi void persegi() { //deklarasi variabel long pj, lb, ls, kl; cout << "Masukkan Panjang Persegi: "; cin >> pj; cout << "Masukkan Lebar Persegi: "; cin >> lb; // Proses ls = pj * lb; kl = 2 * pj + 2 * lb; //Tampilan cout << "------------------------------\n"; cout << "Luas Persegi itu adalah : " << ls << "M^2 \n"; cout << "Keliling Persegi itu adalah: " << kl << "M \n"; cout << "------------------------------\n"; cin.get(); } int segitiga(int a, int t) { //deklarasi variabel int ls; cout << "Masukkan Alas Segitiga: "; cin >> a; cout << "Masukkan Tinggi Segitiga: "; cin >> t;

// Proses ls = (a * t) / 2; //Tampilan cout << "------------------------------\n"; cout << "Luas Segitiga itu adalah: " << ls << "M^2 \n"; cout << "------------------------------\n"; cin.get(); return ls; } void lingkaran() { //deklarasi variabel double jr; double phi = 22/7; double luas, keliling; cout << "Masukkan Panjang jari-jari Lingkaran: "; cin >> jr; // Proses luas = phi * (jr * jr); keliling = 4 * phi * (2 + jr); //Tampilan cout << "------------------------------------\n"; cout << "Luas Lingkaran itu adalah : " << luas << "M^2 \n"; cout << "Keliling Lingkaran itu adalah: " << keliling << "M \n"; cout << "------------------------------------\n"; cin.get(); } ----#include <iostream> //Untuk fungsi cout #include <cstring> //Untuk fungsi string using namespace std; int main() { char name[50]; char lastname[50]; char fullname[100]; // Big enough to hold both name and lastname cout<<"Silahkan Ketikkan Nama Anda: ";

cin.getline ( name, 50 ); if ( strcmp ( name, "Zulfendri" ) == 0 ) // Equal strings cout<<"Itu adalah Nama saya juga.\n"; else // Not equal cout<<"Itu bukan nama saya.\n"; // Find the length of your name cout<<"Nama Anda "<< strlen ( name ) <<" Panjang Hurufnya\n"; cout<<"Silahkan Ketikkan Nama Belakang Anda: "; cin.getline ( lastname, 50 ); fullname[0] = '\0'; // strcat searches for '\0' to cat after strcat ( fullname, name ); // Copy name into full name strcat ( fullname, " " ); // We want to separate the names by a space strcat ( fullname, lastname ); // Copy lastname onto the end of fullname cout<<"Nama Panjang Anda adalah "<< fullname <<"\n"; cin.get(); } ----#include <iostream> #include <cstring> using namespace std; void main() { char bp[10], nama[35], kode[5], jurusan[35], grade; double abs, tgs, mid, fin, nilai; // Masukan cout << "Masukkan Nomor BP : \a"; cin.getline(bp, sizeof(bp)); cout << "Masukkan Nama MHS : \a"; cin.getline(nama, sizeof(nama)); cout << "Masukkan Kode Jrs : \a"; cin.getline(kode, sizeof(kode)); cout << "Masukkan Nilai ABS : \a"; cin >> abs; cout << "Masukkan Nilai TGS : \a"; cin >> tgs; cout << "Masukkan Nilai MID : \a"; cin >> mid; cout << "Masukkan Nilai FIN : \a"; cin >> fin; // Proses jurusan[0]='\0'; // mengosongkan variabel jurusan if (strcmp(kode, "MI")==0) strcat(jurusan,"Manajemen Informatika"); else strcat(jurusan,"Sistem Informasi");

nilai = 0.1 * abs + 0.1 * tgs + 0.3 * mid + 0.5 * fin; if (nilai > 80) grade='A'; else if (nilai > 70) grade ='B'; else if (nilai > 60) grade ='C'; else if (nilai > 50) grade ='D'; else grade='E'; // Keluaran cout << bp << endl; cout << nama << endl; cout << jurusan << endl; cout << abs << endl; cout << tgs << endl; cout << mid << endl; cout << fin << endl; cout << nilai << endl; cout << grade << endl; }

Anda mungkin juga menyukai