You are on page 1of 73

MODUL

MATA KULIAH PEMROGRAMAN KOMPUTER

JURUSAN PENDIDIKAN TEKNIK ELEKTRO FAKULTAS TEKNIK

UNIVERSITAS NEGERI YOGYAKARTA 2006

MODUL KULIAH PEMROGRAMAN KOMPUTER


DAFTAR ISI
BAB 1. PENDAHULUAN BAHASA C++

1.1 Struktur Bahasa C++ 1.2 Obyek Dasar Dalam C++ 1.3 Memberi Nilai Ke Variabel (Penugasan) 1.4 Operator Aritmatika 1.5 Operator Relasional 1.4 Strlen Latihan Soal
BAB 2. STRUKTUR KENDALI PROGRAM (Control Structure)

2.1 Seleksi Kondisional Memakai If 2.2 Seleksi Kondisional Memakai if . . else 2.3 If Bersarang (Nested If) 2.4 Struktur Selektif Menggunakan Switch Latihan Soal
BAB 3. PERULANGAN/ITERASI

3.1 3.2 3.3 3.4

Loop While Loop Do . . while Loop For Statement Jump 3.4.1 Statement : Break 3.4.2. Statement : Continue 3.4.3. Statement : Goto Latihan Soal
BAB 4. FUNGSI

4.1 Manfaat Penggunaan Fungsi 4.2 Format Penggunaan Fungsi 4.3 Pelewatan Parameter 4.4. Variabel Lokal Dan Variabel Global 4.5 Fungsi Yang Tidak Mengembalikan Nilai 4.6 Arguments Dilewatkan Melalui Nilai dan Referensi. 4.7 Fungsi Overload 4.8 Rekursif Latihan Soal
BAB 5. ARRAY

5.1 Definisi Array 5.2 Inisialisasi Nilai Array 5.3 Mengakses Elemen Array 5.4 Array Multidimensi 5.5 Array Tipe Char 5.6 Inisialisasi Array Tipe Char Latihan Soal

BAB 6. PEMROGRAMAN PORT PARALEL

6.1 Port Serial Dan Paralel 6.2 Pengalamatan Port Paralel Latihan Soal
BAB 7. OBJECT-ORIENTED PROGRAMMING (OOP)

7.1 7.2 7.3 7.4 7.5 7.6

Memandang Sesuatu Sebagai Objek Dunia Tersusun Dari Objek-Objek Objek Abstrak Dan Instant Inheritance (Pewarisan) Objek Di Dunia Nyata Serta Pemrograman Berorientasi Objek Bekerja Dengan Class 7.6.1 Definisi Class 7.6.2 Variabel Dan Class 7.7. Method Latihan Soal
BAB 8. OOP 2

8.1 Pemakaian Struktur 8.2 Pemakaian Konsep OOP dalam program Latihan Soal

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 1 PENDAHULUAN BAHASA C++


Bahasa C++ merupakan perkembangan dari bahasa pendahulunya, yaitu bahasa C. Bahasa C diciptakan oleh Brian Kernighan dan Dennis Ritchie, sedangkan C++ diciptakan oleh Bjarne Stroustrup. Bahasa C ini banyak digunakan untuk membangun perangkat lunak seperti Microsoft Windows, Microsoft Office, dsb. Linux yang merupakan sistem operasii bersifat open source juga dikembangkan oleh programmer di seluruh dunia menggunakan C. Bahasa C++ memiliki kelebihan dibandingkan dengan Bahasa C, karena C++ memiliki kemampuan dalam hal OOP (Object Oriented Programming/Pemrograman Berorienrtasi Obyek) yang merupakan trend masa kini dalam bidang pemrograman. Dibandingkan dengan Java yang hanya berorientasi pada OOP, C++ mengadopsi kemampuan bahasa C (pemrograman terstruktur) plus kemampuan OOP. Jadi, C++ tidak murni OOP.
1.1 STRUKTUR BAHASA C++

Sebelum membahasa mengenai OOP, terlebih dahulu diperkenalkan struktur umum dan perintah-perintah dasar yang digunakan pada C++. Apabila anda telah menguasai bahasa C, maka sangat mudah bagi anda untuk menguasai C++. Untuk menguasai bahasa C++, terlebih dahulu harus kita pahami struktur umum kode program C++. Untuk memahami struktur umum bahasa C++, kita coba dengan membuat sebuah program sederhana sebagai berikut.
// program pertama dalam C++ //dibuat tanggal 25 Maret 2006 #include <iostream> int main () { cout << "Hello World!"<<endl; return 0; }

Program di atas akan menghasilkan keluaran : "Hello World!" pada layar. Umumnya, para programmer yang ingin menguasai C++ memulai membuat program dengan program sederhana seperti di atas, mengingat dalam program tersebut telah mengandung komponen dasar dari sebuah program C++. Catatan : Keluaran program yang dihasilkan setelah anda mengcompile program di atas umumnya tidak terlihat karena layar akan segera menutup setelah menampilkan tulisan "Hello World!". Agar anda dapat melihat keluaran, tambahkan baris : getch(); pada akhir program. Penjelasan program di atas adalah : 1. // my first program in C++ Merupakan baris komentar yang digunakan untuk memberi penjelasan kode program yang dibuat (seperti : tanggal pembuatan program, pencipta program, serta Page 1 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) tujuan dibuatnya program). Baris komentar selalu diawali dengan tanda (//) . baris komentar tidak akan dieksekusi oleh compiler/diabaikan. 2. #include <iostream> Merupakan pengarah preprocessor. #include <iostream> berarti bahwa memberi perintah kepada preprocessor untuk melibatkan (include) file standar iostream. File iostream ini merupakan file yang didalamnya berisi deklarasi pustaka standar inputoutput pada C++, dan oleh karenanya dilibatkan karena fungsi ini selanjutnya akan dipergunakan oleh program. 3. int main () Merupakan awal dari fungsi utama pada C++. Fungsi utama ini merupakan awal dimana program C++ akan mulai dieksekusi. Di dalam fungsi utama ini, bisa jadi terdapat juga fungsi-fungsi lain (seperti yang telah anda ketahui, bahwa sebuah program yang sangat besar akan lebih mudah untuk ditulis dengan membaginya/dipecah menjadi beberapa fungsi). Ibarat anda menulis sebuah buku, anda membagi isi buku menjadi beberapa bab, demikian juga dengan kode program. 4. Kurung kurawal buka ({ ) dan tutup (}) Blok program pada fungsi utama diawali dengan kurung kurawal buka ({) dan berakhir hingga ditemukan kurung kurawal tutup (}). Semua statement yang berada pada blok program fungsi utama inilah yang akan dieksekusi oleh compiler. 5. Cout<< "Hello World" Merupakan statement pada C++. statement merupakan ekspresi (sederhana atau kompleks) yang akan menghasilkan efek tertentu saat dieksekusi. Statement cout (baca : C-out) akan menampilkan keluaran pada layar. cout dideklarasikan pada file iostream. Oleh karena itulah file iostream dilibatkan melalui perintah #include
<iostream>.

Tanda << dalam C++ berarti meyisipkan string "Hello World"ke dalam aliran keluaran. 6. Endl Merupakan perintah untuk berganti baris setelah menuliskan "Hello World". Biasakan anda selalu menggunakan perintah ganti baris, yang menandakan bahwa anda siap memberikan instruksi pada compiler untuk mengeksekusi baris program selanjutnya. 7. Return 0; statement return menyatakan akhir dari fungsi utama. return umumnya diikuti dengan kode tertentu (dalam contoh ini, kode return adalah 0). return 0 menyatakan bahwa program bekerja sebagaimana yang diinginkan tanpa adanya error selama eksekusi. Kode ini juga melakukan terminalisasi (menutup berkas-berkas yang digunakan) serta mengembalikan kendali program ke sistem operasi. Return 0 umumnya digunakan untuk mengakhiri program C++. Anda bisa juga menuliskan kode program di atas sebagai berikut :
int main () { cout << "Hello World"<< endl;return 0; }

Namun penulisan dengan cara kedua tersebut sangat tidak dianjurkan, karena kode program menjadi sulit dibaca, dan sulit dipahami. Usahakan untuk selalu berpindah ke baris baru setelah anda mendeklarasikan fungsi utama, dan setelah ada tanda titik koma (;).

Page 2 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) LATIHAN I. 1. Tuliskan kalimat berikut pada layar komputer : Nama : (isi nama anda) NIM : (isi NIM anda) Jurusan : (isi sesuai jurusan anda) Program yang telah anda buat hanya melibatkan perintah keluaran. Tentu saja kita tidak mempelajari bahasa pemrograman hanya untuk menampilkan keluaran teks seperti program di atas. Program yang baik umumnya melibatkan interaksi dengan user. Jadi, ada masukan yang dberikan oleh user. Program di bawah ini melibatkan perintah masukan, yaitu cin.
// program kedua dalam C++ //dibuat tanggal 25 Maret 2006 #include <iostream> int main () { float ipk; cout <<"masukkan ipk anda = "<<flush; cin >> ipk; cout <<"nilai IPK anda adalah = "<<ipk <<"(apik tenan)"; return 0; }

Catatan : Flush merupakan perintah yang mirip dengan endl, namun tidak mengakibatkan ganti baris baru. Program di atas akan meminta user memasukkan nilai IPK. Saat user mengetik nilai IPK, maka nilai yang diketik tersebut (merupakan masukan) akan disimpan pada buffer (memori) komputer hingga penuh. Dalam hal ini, flush digunakan untuk memerintahkan komputer mengosongkan isi buffer dan menuliskannya ke layar monitor. Digunakan cin >> sebagai perintah meminta masukan dari user, perhatikan bahwa cin diikuti dengan tanda >>, sedangkan cout selalu diikuti dengan <<. Jangan sampai terbalik !!
Float IPK

Merupakan pernyataan deklarasi variabel. Saat anda mengetik nilai IPK, nilai tersebut disimpan pada memori komputer, dengan nama IPK. Ilustrasinya sebagai berikut.
Memori

IPK

Gambar 1.1 Penyimpanan variabel ke dalam memori

Page 3 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) cout <<"nilai IPK anda adalah = "<<ipk <<"(apik tenan)"; Akan menghasilkan keluaran : nilai IPK anda adalah ...(apik
tenan)

dengan titik-titik terisi sesuai dengan nilai IPK yang anda ketik sebelumnya lewat keyboard. Perhatikan dan pahami benar konsep ini !!. LATIHAN 2. 1. Buatlah sebuah program dengan keluaran sebagai berikut : A= B= Jika A= ...ditambah dengan B=....., maka hasilnya adalah C = (A, B, dan C adalah variabel bertipe integer . A dan B merupakan masukan dari user.)
1.2 OBYEK DASAR DALAM C++

Dalam beberapa literatur, obyek dasar ini dimaksudkan sebagai tipe data. Obyek dasar dalam C++ dibagi menjadi 3 kelompok : 1. Tipe obyek Integer Dalam deklarasi, disingkat menjadi int. Tipe ini digunakan untuk menampung bilangan bulat (seperti : 1, 200, 509, dll). Ukuran memori untuk meyimpan data jenis int umumnya adalah 16 bit (2 byte). Int memiliki jangkauan data : -32686 hingga +32686. Jika A dan B merupakan variabel bertipe integer, anda bisa mendeklarasikannya dengan 2 cara : a. Dipisah : int A; b. Digabung:
int B; int A, B;

Tipe data integer ini memiliki beberapa variasi, seperti : short int, long int, int, unsigned int, unsigned short int, dst. Tapi untuk memudahkan, kita pergunakan int saja.
signed

2. Tipe obyek floating point Tipe ini digunakan untuk mewakili tipe data yang berupa bilangan pecahan desimal. Contoh : 3.1418. (menuliskan pecahan desimal menggunakan tanda titik, bukan koma!) Seperti juga tipe integer, tipe floating point memiliki beberapa variant yaitu : float, double, dan long double, dengan masing-masing jangkauan data yang berbeda. Data tipe float memiliki jangkauan data terkecil , sedangkan long double memiliki jangkauan data paling besar. (Mengenai jangakauan data ini, anda bisa lihat pada modul bahasa C sebelumnya). Untuk selanjutnya, kita akan memakai float saja dengan alasan kemudahan. Contoh deklarasi : float A; 3. Tipe obyek charakter Tipe ini digunakan untuk menampung data bertipe karakter. Deklarasinya adalah :
char A ;

Kumpulan dari karakter membentuk string. Anda bisa mendeklarasikannya sebagai berikut : string A;

Page 4 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Catatan : Aturan penamaan variabel sesuai dengan aturan penamaan pada bahasa C. Tidak dibahas disini. Silahkan dipelajari kembali. Variabel memiliki atribut sendiri. Apabila variabel terletak di luar fungsi utama, maka merupakan variabel global, sedangkan variabel yang terletak di dalam fungsi merupakan variabel lokal.

Gambar 1.2 Variabel Global dan lokal

1.3 MEMBERI NILAI KE VARIABEL (PENUGASAN) int a = 5; Int a(5); a = a + 3; hasil = a - b;

Perhatikan beberapa aturan pemberian nilai berikut ini : : a adalah variable tipe integer, bernilai 5. : idem : nilai a ditambahkan dengan 3, hasilnya disimpan di variabel a : variable result berisi pengurangan a dengan b : variabel B bertipe string, berisi string : Hello Word

string B="Hello Word"

MENDEFISIKAN KONSTANTA

Konstanta merupakan nilai yang tidak pernah berubah. Oleh karenanya, agar nilai ini tidak termodifikasi /berubah, harus dideklarasikan sebagai konstanta. Bentuk deklarasinya adalah : #define pi 3.1415 : konstanta pi, bernilai 3.1415 , atau const float pi = 3.1415; : idem; atau dengan memakai bentuk literal :
float pi; pi=3.1415; 1.4 OPERATOR ARITMATIKA

Operator yang digunakan pada C++ sama dengan operator yang digunakan pada C, sepbagaimana ditunjuikkan pada tabel berikut :
Tabel 1.1. Operator Aritmatika yang digunakan dalam C++ Operasi Operator Penambahan + Pengurangan Perkalian *

Page 5 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


Pembagian Sisa Hasil Bagi / %

Tabel berikut adalah aturan hasil operasi dari 2 operand yang berbeda beda
Tabel 1.2 Aturan hasil operasi dari 2 operand yang berbeda beda Operand 2 Operator +, hasilnya -, hasilnya : *, hasilnya /, hasilnya : : : Int Int long Float double Long float double Long double Long float double Long double Long float double Long double Float float double Long double double double double Long double

Operand 1

Int Long float double Long double

%, hasilnya : Long double Long double Long double Long double Long double

Selain operator binary di atas, dikenal juga operator unary. Contoh : c++; c+=1; dua statement di atas sama dengan statament : c=c+1;
1.5 OPERATOR RELASIONAL Tabel 1.3. Operator relasional dalam C++ OPERATOR == <= < >= > != 1.4 STRLEN OPERASI Sama dengan Lebih kecil atau sama dengan Lebih kecil Lebih besar atau sama dengan Lebih besar Tidak sama dengan

Fungsi strlen digunakan untuk mengitung panjang string. String literal ABC memiliki panjang 3. apabila fungsi ini digunakan, maka harus menyertakan file header string.h. contoh program :
#include <iostream.h> #include <string.h> int main (){ char B[]="ABCDE"; char nama[30]; cout<<"panjang string B adalah= "<< strlen(B)<<endl; cout<<"masukkan nama anda = "; cin>>nama; cout<<"nama anda terdiri dari "<<strlen(nama)<<" karakter"; }

Page 6 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) LATIHAN 4 a. Buatlah sebuah program menghitung luas dan keliling lingkaran. Gunakan konstanta pi = 3.14 dalam perhitungan. Nilai jari-jari merupakan masukan dari user. b. Buatlah program konversi jarak, dari satuan mil ke kilometer. 1 mil = 5280 feet. 1 feet = 12 inchi 1 inchi = 2,54 cm 1 km = 100.000 cm (program anda harus menampilkan satuan2 di atas). Masukan dari user ! c. Tuliskan Nama dan NIM anda di tengah-tengah layar monitor. d. Apa yang dimaksu dengan operator unary e. Buat program , jika flow chart sebagai berikut :

main( )

tampilkan judul program. D_luar dan D_dalam adalah masukan user

float D_luar float D_dlm float luas pi = 3.1415

D_luar <=0?

Pesan " Error, input harus > 0"

D_dlm
rasio D<.3 ? Pesan " Error, D_dlm terlalu kecil"

D_luar Rumus mencari luas antara Luas = pi (D_luar 2 D_dlm 2)/4

rasio D >.9 ?

Pesan " Error, D_dlm terlalu kecil"

luas = pi(D_luar2 - D-dlm2)/4 tampilkan nilai D_luar, D_dlm, & luas

return

Page 7 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 2 STRUKTUR KENDALI PROGRAM (CONTROL STRUCTURE)


Sebuah program tidak hanya dibatasi hanya untuk menjalakan instruksi-instruksi yang bersifat linear. Sebuah program adakalanya melakukan percabangan, mengulang kode program tertentu, atau mengambil sebuah keputusan. Untuk keperluan tersebut, C++ menyediakan struktur kendali yang mengatur apa yang harus dilakukan di dalam pogram yang dibuat oleh programmer, kapan, dan dalam kondisi apa struktur kendali ini dijalankan/dieksekusi. Di dalam program, seringkali kita akan menemui blok program (compoundstatement), yang merupakan kumpulan dari statement-statement yang dipisahkan oleh tanda titik koma (;) seperti halnya statement-statement pada C++. Akan tetapi statement tersebut digabung dalam kurung kurawal buka dan tutup : { }
{ statement1; statement2; statement3; }

Sebuah statement dapat berupa statement sederhana (statemen sederhana yang diakhiri dengan tanda titik koma) atau statement majemuk (beberapa instruksi yang tergabung dalam satu blok). Jika statement yang dimaksud adalah statement sederhana, maka tidak perlu berada dalam tanda kurung kurawal ({}). Jika statemen yang dimaksudkan adalah statement majemuk/blok, maka perlu diletakkan dianatara tanda kurung kurawal ({}) sehingga membentuk sebuah blok program.
2.1 SELEKSI KONDISIONAL MEMAKAI IF

Keyword If digunakan untuk mengekskusi sebuah statement atau blok program hanya jika kondisi yang dipersyaratkan terpenuhi. Format penggunaan if adalah sebagai berikut :
if (kondisi) statement

dengan kondisi merupakan ekspresi yang akan diuji. Jika hasil pengujian kondisi terpenuhi (bernilai benar), maka statement akan dikesekusi. Jika hasil pengujian kondisi tidak terpenuhi (bernilai salah), maka statement tidak akan dijalankan (diabaikan), dan program akan melanjutkan mengeksekusi statement-statement program selanjutnya. Sebagai contoh : program berikut akan menuliskan x bernilai seratus apabila nilai yang tersimpan pada variabel x adalah 100.
if (x == 100) cout<<"x bernilai 100";

Apabila statement yang akan dijalankan tidak hanya satu, namun terdiri dari beberapa statement (atau blok), maka statemen- statement tersebut diletakkan diantara tanda titik koma.
if (x == 100) { cout<<"x bernilai "; cout<<x;

Page 8 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


}

Berikut adalah contoh program membandingkan 2 buah nilai.


#include <iostream.h> #include <string.h> int main (){ int m,n; cout<<"masukkan nilai M = "; cin>>m; cout<<"masukkan nilai N = "; cin>>n; if (m>n) cout<<"M lebih besar dari N"<<endl; else cout<<"M lebih kecil dari N"; }

Pertanyaan : Analisislah program di atas. Apa keluarannya ? mengapa demikian ?


2.2 SELEKSI KONDISIONAL MEMAKAI IF . . ELSE

Selanjutnya, anda juga dapat mengatur tindakan apa yang akan dijalankan oleh program seandainya kondisi yang dipersyaratkan tidak terpenuhi. Dalam hal ini, anda menggunakan keyword else, yang digunakan bersama-sama dengan if. Hal ini berbeda dengan pemakaian sintaks if saja. Pada pemakaian hanya dengan sintaks if, apabila pengujian kondisi bernilai salah, maka program akan keluar dari struktur if dan menjalankan statement-statement berikutnya dalam program. Bentuk pemakaian keyword if .. else adalah :
if (kondisi ) statement1 else statement2

Perhatikan contoh program berikut :


if (x == 100) cout<<"x bernilai 100"; else cout<<"x bukan 100";

Statement cout << "x bernilai 100" akan dicetak di layar monitor apabila nilai variabel x adalah 100. apabila nilai variabel x tidak sama dengan seratus, maka di layar monitor akan tercetak tulisan : x bukan 100.
2.3 IF BERSARANG (NESTED IF)

Struktur if + else dapat dijadikan bentuk concatenated dengan pengujian sejumlah kondisi. Berikut ini adalah kode program yang akan menguji apakah nilai yang tersimpan pada variabel x merupakan bilangan : positif, negatif, atau nol.
if (x>0) cout<<"x adalah positif"; else if (x<0) cout<<"x adalah negatif"; else cout<<"x adalah 0";

Page 9 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Jangan sampai anda lupakan, apabila anda menginginkan lebih dari satu statement yang akan dieksekusi oleh program, maka letakan statement-statement tersebut dalam tanda kurung kurawal { }. Logika C++ dari pemakaian seleksi kondisi sama dengan logika pada C. Yang membedakan adalah sintaksnya saja. Seleksi kondisional pasti menggunakan operator relasional (==. !=, <, <=, >, dan >=) dan kadangkala digabung dengan operator logika (and , or). Seleksi kondisi digunakan untuk membandingkan dua atau lebih variabel yang terlibat.
2.4 STRUKTUR SELEKTIF MENGGUNAKAN SWITCH

Penggunaan sintaks switch adalah untuk mengecek kemungkinan ekspresi. Bentuk umum penggunaan switch adalah :
switch (ekspresi) { case constant1 : kumpulan statement 1; break; case constant2 : kumpulan statement 2; break; . . default : kumpulan statement default }

sejumlah/beberapa

Switch bekerja sebagai berikut. Switch akan mengevaluasi ekspresi dan akan mengecek nilai ekspresi. Jika hasil pengecekan ekspresi bernilai sesuai dengan konstanta1, maka program akan menjalankan kumpulan statement1 hingga dijumpai statement break. Program selanjutnya akan melompat ke akhir switch dan menjalankan statement-statement program di luar struktur switch. Jika ekspresi tidak sesuai dengan constant1, maka akan dicek apakah ekspresi bernilai sesuai dengan constant2. Jika ya, maka program akan menjalankan kumpulan statement 2 hingga ketemu dengan pernyataan break. Program selanjutnya akan melompat ke bagian akhir struktur switch, dan menjalankan perintah selanjutnya. Demikian seterusnya. Tabel berikut ini menghasilkan eksekusi program yang sama
Tabel 2.1. Pemakaian switch dan If..else Pemakaian switch Pemakaian if-else

switch (x) { if (x == 1) { case 1: cout << "x adalah 1"; cout << "x adalah 1"; } break; else if (x == 2) { case 2: cout << "x adalah 2"; cout << "x adalah 2"; } break; else { default: cout << " nilai x tak diketahui "; cout << "nilai x tak diketahui"; } }

Page 10 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Pengunaan sintaks switch memerlukan perhatian khusus karena sintaks ini menggunakan label, sehingga diperlukan perintah break yang akan memaksa program untuk keluar dari struktur switch apabila kumpulan statement yang sesuai dengan ekspresi telah selesai dieksekusi. Jika pernyataan break tidak diikutsertakan, maka sisa statement yang berada setelahnya akan dieksekusi juga oleh program. Sebagai contoh, apabila pernyataan break tidak dikutsertakan pada case1, maka setelah kumpulan statement yang bersangkutan dijalankan, program tidak akan keluar dari struktur switch, dan akan melanjutkan mengeksekusi baris-baris statement yang berada di bawahnya hingga ditemui instruksi break atau hingga menjumpai bagian akhir dari struktur switch. Kira kira output bagaimanakah yang ditampilkan setelah program berikut ini dieksekusi ? switch (x) { case 1: case 2: case 3: cout << "x adalah 1, 2 atau 3"; break; default: cout << "x bukan 1, 2 atau 3"; }

LATIHAN 1
1. Apakah perbedaan antara pernyataan if dan if-else? 2. Ini memanfaatkan tanda ! yang mengandung trik yang perlu anda jauhi. (Anda akan tahu penyebabnya setelah melihat masalah ini.) Akankah cout berikut mengeksekusinya?
if (!1) { cout << This is tricky << endl; }

3. Apa yang keliru pada pernyataan berikut ini?


if age == 18 { cout << You can vote << endl; }

4. Apa yang keliru pada pernyataan berikut ini?


if (amt = 2); { flag = 1; cout << Everything is not as well << endl; }

5. Buatlah program untuk menghitung upah dan upah lembur berdasarkan kondisi berikut : a. Upah Rp. 50.000,- untuk masing-masing jam sampai dan termasuk 40 jam kerja. b. Upah satu setengah kali untuk jam kerja diatas 40 sampai dengan 50. c. Upah dua kali untuk jam kerja diatas 50. 6. Buatlah program untuk toko makanan sehat yang menghitung harga dari tabel berikut yang berdasar pada jumlah vitamin yang dijual: Jumlah Dijual Harga per vitamin

Page 11 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) 25 atau kurang 26 sampai 49 50 keatas Rp. 5 per vitamin Rp. 4 per vitamin diatas 25 Rp. 3 per vitamin diatas 49

LATIHAN 2
. Berapa nilai a setelah menjalankan perintah berikut ini?
int a = 6; b = ++a 1;

2. Berapa nilai a setelah menjalankan perintah berikut ini?


int a = 6; b = a++ 1;

3. Berapa nilai b setelah kode pada soal diatas (soal no.2) selesai dijalankan? 4. Apakah yang salah pada pernyataan kondisional berikut ini?
r = (u < 100) ? (r = 12) : (r = 13);

5. Apakah yang salah pada pernyataan kondisional berikut ini?


(9 > i || u <= 8) ? (p = 12) ; (p = 13);

6. Buatlah program yang meminta agar pemakai memasukkan angka tahun, dari 1 sampai 40, yang menyatakan lama dia bekerja. Bila pemakai memasukkan angka diluar batas tadi, tampilkan sebuah pesan kesalahan dan akhirilah program dengan segera. Jika termasuk dalam jangkauan tersebut, tampilkan pesan sebagai berikut (misalnya pengguna memasukkan angka 13) :
Anda Telah bekerja selama 13 tahun.

Bila pengguna memasukkan angka 1, tampilkan pesan berikut :


Anda Telah bekerja cuma 1 tahun

Pergunakanlah suatu kondisi untuk memperhitungkan apakah lama kerja Cuma 1 tahun atau lebih. 7. Buatlah program yang akan menampilkan jumlah yang harus dibayarkan pada sebuah toko yang menjual segala sesuatu seharga 1 dolar tepat. Tanyakanlah jumlah barang yang dibeli. Perhitungkan pajak penjualan sebesar 8% jika pemakai membeli kurang dari $100 dan 7,5% jika pembeliannya lebih besar atau sama dengan $100. Jika pembelian lebih dari $500 , berikan diskon sebesar 10% setelah pajak. Cetak jumlah pembelian, jumlah pajak, besar diskon ($0,00 jika tidak ada diskon yang diberikan) dan total yang harus dibayarkan. Jangan pergunakan pernyataan if pada program tersebut. Gunakanlah operator kondisi saja jika program Anda memang harus melakukan pilihan.

LATIHAN 3
a. Buatlah program yang menanyakan apakah user setuju atau tidak? Jika user menekan huruf y atau Y, maka ditampilkan pesan : Anda setuju. Jika selain huruf di atas, maka user tidak setuju. b. Buatlah program menghitung biaya registrasi dari sebuah LPK yang menyediakan kursus MS Office. Biaya per peserta adalah Rp. 99.000,- dan kursus hanya dapat terlaksana apabila terdapat lebih dari 8 orang. Terdapat 2 jenis kategori kursus, intensif course atau reguler. Tarif intensif course lebih mahal 30 %. c. Buatlah program menghitung rata-rata dari nilai mhs yang didapat dari rumus : Page 12 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Nilai akhir = (nilai teori + nilai praktek + nilai MID)/3 Dengan ketentuan : 1. jika nilai akhir >= 60, maka dinyatakan LULUS, jika <60 maka TIDAK LULUS 2. berikan predikat untuk setiap nilai dengan ketentuan : skor >=100, tampilkan pesan eror. Skor >=90, nilai A Skor antara 80 90: nilai B Skor antara 70 80 : nilai C Skor antara 60 70 : nilai C Skor antara 40 60 : nilai D Skor <40 : nilai E Skor < 0 : pesan error.

LATIHAN 4
Apa keluaran dari pernyataan switch berikut?
switch (A): { case (A) case (B) case (C) default } : : : : cout cout cout cout << << << << Apple << endl; Bananas << endl; Carrots << endl; Onion << endl;

2. Meskipun switch berikut tak berisi kesalahan sintaks apapun, stiap baris kode pada case tak memiliki sepasang karakter khusus yang nantinya mungkin akan berguna. Apa yang dapat anda tambahkan agar membantu dalam pemeliharaan switch ini di masa yang akan datang?
switch (ans) { case (1) : cout << The answer is 1 << endl; default : cout << The switch statement is not finished. << endl; }

3. Berikut adalah program untuk mengendalikan laporan tugas departemen yang muncul pada suatu saat. Pada program berikut ini pernyataan switch-nya tidak bekerja. Buat ulang program sehingga setiap blok case dieksekusi tak tergantung kepada blok lainnya.
switch (ans) { case (2) : { cout case (5) : { cout ; } case (9) : { cout default : { cout konferensi.; } } cout << << endl; << Departemen anda sedang libur.; } << Departemen anda mulai bekerja jam 4 pm << Departemen anda harus lembur.; } << Departemen anda sedang mengadakan

4. Apakah yang keliru pada pernyataan switch berikut ini?


switch (choice) case (1) : {ans =34*penjualan; break; } case (2) : {ans =56*penjualan; break; } case (3) : {ans =78*penjualan; break; }

Page 13 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


default : {ans =penjualan; break; }

5. Mintalah pemakai memasukkan angka dari 1 sampai 5. Dengan menggunakan sebuah pernyatan switch. Tampilkan kata-kata dari nomor tersebut dalam bahasa inggris. (sebagai contoh, tampilkan two bila pengguna mengetik 2). Sertakan sebuah kalang pemeriksaan kesalahan untuk memasukkan sebuah angka dalam batas 1 sampai 5. 6. Berikut adalah kode pernyataan if-else bersarang. Tulis ulang pernyataan berikut dengan menggunakan switch untuk membantu pemeliharaan program kelak.
if (num == 1) { cout << France << endl; } else if (num == 2) { cout << Italy << endl; } else if (num == 3) { cout << England << endl; } else { cout << Greece << endl; }

7. Meskipun pernyataan switch tidak dapat menangani langsung suatu daerah nilai, Anda dapat menampilkan sebuah menu dengan suatu jangkauan, mulai dari nomor 1 sampai jumlah angka dari menu pilihan sampai ke bagian kiri dari setiap jangkauan, dan pernyataan switch pada daerah menu. Tulislah sebuah program yang menghitung bonus penjualan, $0 bila pengguna menjual kurang dari 100 produk, $50 bila pengguna menjual antara 101 sampai 200 produk, dan $100 bila pengguna menjual lebih dari 200 produk. 8. Buatlah sebuah program yang menghitung tarif gerbang tol antarnegara bagian. Tanyakan apakah pengemudi mengendarai mobil atau truk. Perhitungkan biaya $3.00 bila pengemudi menggunakan jalan bebas hambatan sepanjang 75 mil, $3.50 bila pengemudi menggunakan jalan bebas hambatan sepanjang 125 mil, $4.00 bila pengemudi menggunakan jalan bebas hambatan sepanjang lebih dari 125 mil. Bila kendaraan berupa truk, dikenakan biaya tambahan $1.00 untuk setiap berat tambahan. (Petunjuk : Pergunakan satu switch dan satu pernyataan if) 9. Buatlah program menghitung nilai kapasitansi 2 buah kapasitor, dengan pilihan : a. Menu 1 : kapasitor seri b. Menu 2 : kapasitor paralel c. Default : tampilkan pesan kesalahan.

Page 14 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 3 PERULANGAN/ITERASI
Loops/perulangan/kalang bertujuan untuk mengulang statement selama beberapa kali atau selama kondisi terpenuhi. Terdapat beberapa bentuk perulangan, yaitu :
3.1 LOOP WHILE

Format loop menggunakan while adalah sebagai berikut :


while (ekspresi) statement

Fungsi penggunaan while di atas adalah untuk menjalankan perintah yang terdapat dalam statement apabila ekspresi yang dipersyaratkan terpenuhi. Jika ekspresi yang dipersyaratkan tidak terpenuhi (bernilai salah), maka statement tidak akan dijalankan (diabaikan), dan program akan melanjutkan mengeksekusi statementstatement program selanjutnya yang berada di luar struktur while. contoh, kita akan membuat program yang akan menghitung mundur :
int main() { int n; cout << "masukkan angka mulai = " > "; cin >> n; while(n>0) { cout<<n<< ", "; --n; } cout<<"FIRE!"; return 0; }

Output :
masukkan angka mulai = > 8 8, 7, 6, 5, 4, 3, 2, 1, FIRE!

Pada saat program mulai dijalankan, user akan dihadapkan dengan perintah untuk memasukkan sembarang nilai angka yang akan dihitung mundur. Setelah input dimasukkan, loop while akan dimulai. Jika nilai angka yang dimasukkan oleh user memenuhi kondisi n>0 (lebih besar dari nol) maka blok program dalam statement kondisi akan dieksekusi dan akan diulang terus menerus selama kondisi (n>0) terpenuhi, dan akan berakhir jika kondisi (n>0) tidak terpenuhi. Keseluruhan proses program yang telah dibuat di atas dapat diterjemahkan ke dalam algoritma sebagai berikut : 1. User diminta memasukkan sembarang nilai angka. 2. Kondisi while akan diuji (n>0). Terdapat 2 kemungkinan pengujian : * kondisi bernilai benar : statement dieksekusi (dan lanjutkan ke langkah 3) * kondisi bernilai salah : abaikan statement dan lanjutkan setelahnya (ke langkah 5) 3. eksekusi statement :

Page 15 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) cout<<n<<","; --n; (cetak nilai n pada layar dan kurangi dengan 1) 4. Akhir blok. Kembali ke blok 2 5. Lanjutkan program yang ada setelah block: ketik FIRE! Dan akhiri program. Yang harus diperhatikan dalam menggunakan loop while adalah : anda harus meyakinkan bahwa perulangan yang dilakukan oleh program suatu saat akan berakhir pada titik tertentu, sehingga kita harus menyediakan perintah yang akan memaksa program untuk menghentikan eksekusi , yaitu saat kondisi salah terjadi. Jika tidak, loop akan berlanjut hingga tak terhingga. Dalam hal ini, nilai n akan dikurangi dengan 1 (melalui perintah n) sehingga pada suatu saat akan dijumpai kondisi n<0, sehingga loop akan berhenti setelah melakukan sejumlah pengulangan. Tentu saja, dengan kecepatan komputer saat ini, tindakan sederhana seperti program di atas akan dieksekusi secara seketika tanpa adanya waktu tunda yang berarti.
3.2 LOOP DO . . WHILE

Format pengulangan menggunakan do .. while adalah :


do statement while (kondisi);

Fungsi loop do .. while adalah sama dengan loop while, kecualai bahwa nilai kondisi yang dipersyaratkan akan akan dievaluasi setelah minimal satu kali statement setelah do dijalankan. Jadi, minimal satu statement akan dieksekusi oleh program. Program berikut akan meminta user untuk memasukkan input, hingga user menekan huruf 0.
#include <iostream.h> int main () { unsigned long n; do { cout << "Masukkan angka (0 untuk mengakhiri): "; cin >> n; cout << "Anda menekan: " << n << "\n"; } while (n != 0); return 0; }

output :
Masukkan angka (0 untuk mengakhiri): 12345 Anda menekan: 12345 Masukkan angka (0 untuk mengakhiri): 160277 Anda menekan: 160277 Masukkan angka (0 untuk mengakhiri):0 Anda menekan: 0

Loop do-while umumnya digunakan jika kondisi yang harus dipenuhi agar terjadi perulangan telah ditentukan di dalam statement loop itu sendiri. Seperti halnya pada contoh program di atas, input user yang berada di dalam blok program akan menentukan apakah perulangan masih akan dijalankan ataukah tidak. Selama user belum memberi input 0, perulangan tidak akan berhenti. Page 16 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

3.3 LOOP FOR

Format perulangan mengunakan for adalah sebagai berikut :


for (inisialisasi; kondisi; increase) statement;

Fungsi penggunaan for ini adalah untuk melakukan perulangan jika kondisi yang dipersyaratkan terpenuhi, sebagaimana yang dijumpai pada loop yang lain. Perbedaannya adalah : pada loop menggunakan for telah ditentukan nilai awal dan akhir suatu perulangan, dan juga kenaikan (atau penurunan) yang harus dilakukan antara nilai awal dan akhir yang diberikan. Kode program tersebut akan memiliki algoritma sebagai berikut berikut. 1. Kondisi akan diperiksa terlebih dahulu. Jika bernilai benar, loop akan berlanjut (kontinyu). Jika tidak, maka loop akan berakhir. 2. Statement dieksekusi. Statemen dapat berupa : single statement ataupun blok program yang tergabung dalam tanda kurung kurawal. { }. 3. Kenaikan/penurunan akan dieksekusi dan loop akan kembali ke langkah 2. Berikut ini adalah contoh program untuk menghitung mundur :
#include <iostream> int main () { for (int n=10; n>0; n--) { cout << n << ", "; } cout << "FIRE!"; return 0; }

output :
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, FIRE!

Catatan : Inisialisasi dan field kenaikan/penurunan bersifat opsional, dalam arti dapat juga dikosongkan dengan catatan, tanda titik koma yang berada diantaranya tetap ditulis. 3.4 STATEMENT JUMP
3.4.1 STATEMENT : BREAK

Dengan menggunakan perintah break, loop dapat ditingalkan/dilompati meskipun kondisi akhir masih belum terjadi. Hal ini dapat dilakukan sebagai strategi untuk menghindari loop yang tak terhingga atau memaksa program untuk menghentikan operasi perulangan. Sebagai contoh, kita ingin menghentikan perulangan sebelum kondisi akhir perulangan terpenuhi.
#include <iostream> int main () { int n; for (n=10; n>0; n--) {

Page 17 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


cout << n << ", "; if (n==3) { cout << "hitung mundur dibatalkan!"; break; } } return 0; }

Pertanyaan : Analisislah program di atas. Apa keluarannya ? mengapa demikian ?


3.4.2. STATEMENT : CONTINUE

Statement continue menyebabkan program men-skip sisa loop yang sedang dijalankan (seperti telah menemui akhir loop) dan menyebabkan program melompat ke awal perulangan/iterasi. Sebagai contoh, kita ingin men-skip saat n = 5 dalam program berikut : #include <iostream> int main () { for (int n=10; n>0; n--) { if (n==5) continue; cout << n << ", "; } cout << "FIRE!"; return 0; } Pertanyaan : Analisislah program di atas. Apa keluarannya ? mengapa demikian ?
3.4.3. STATEMENT : GOTO

Goto mengakibatkan program melompat secara mutlak ke titik/bagian lain pada program. Anda dapat mengunakan fitur ini dengan pengunaan goto. Dengan catatan bahwa goto menyebabkan kondisi lompatan tanpa memperdulikan batas/limitasi nestingnya. Kode program yang menjadi tujuan dari lompatan goto diidentifikasi dengan label, yang kemudian digunakan sebagai argumen bagi statement goto. Sebuah label merupakan sebuah identifier yang diikuti dengan tanda titik dua (:). Secara umum perintah goto ini sudah ditinggalkan, baik dalam pemrograman terstruktur aupun dalam pemrograman berorientasi objek. Berikut adalah contoh program perhitungan langkah mundur menggunakan goto.
#include <iostream> int main () { int n=10; loop: cout << n << ", "; n--; if (n>0) goto loop; cout << "FIRE!"; return 0;

Page 18 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


}

Pertanyaan : Analisislah program di atas. Apa keluarannya ? mengapa demikian ?

LATIHAN 1
1. Berapa kali X ditampilkan ?
for (count = 0; count < 5; count++) { cout << X; break; }

2. Berapa kali X ditampilkan ?


for (count = 0; count < 5; count++) { cout << X; continue; }

3. Berikut adalah kode sphagetti! Apa keluarannya?


#include <iostream.h> void main() { goto a; e: goto f; c: cout << a << endl; goto d; b: cout << d << endl; goto c; d: cout << c << endl; goto b; a: cout << b << endl; goto e; f: return; }

4. Berapa kali X muncul pada kalang for bersarang berikut?


for (luar = 0; luar < 5; luar++) { for (dalam = 0; dalam < 3; dalam++) { cout << X; } }

5. Hamid melakukan kalang for bersarang, tetapi tampaknya tidak bekerja dengan benar. Perbaiki masalahnya! Berkut adalah bagian program yang membuat masalah:
for (ctr1 = 1; ctr1 <= 10; ctr1++); { for (ctr2 = 1; ctr2 <= 5; ctr2++) { nilai = ctr1 * ctr2; cout << nilai << endl; } }

Page 19 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) 6. Tuliskan kembali kode berikut menggunakan pernyataan while :
TanyaLagi: cout << Apa nama pertama Anda? ; cin >> fnama; if ((fnama[0] < A) || (fnama[0] > Z)) { goto TanyaLagi; } //Memastikan pemakai memasukkan kata //dan bukan karakter khusus

7. Tulislah program dengan dua kalang bersarang yang menghasilkan keluaran sebagai berikut: ABCD ABC AB A 8. Tulislah program yang menanyakan pemakai untuk skor tes. Masukkan semua nilai tes sebagai integer untuk membuatnya sederhana. Program berlanjut sampai pemakai memasukkan -99 untuk memperoleh nilai rata-ratanya atau sampai ia memasukkan 5 buah nilai (hanya ada 5 tes). Kalau pemakai memasukkan -99, ini berarti bahwa ia mengambil lebih sedikit daripada 5 tes dan siap menghitung rata-rata lebih awal. (Bantuan break barangkali membantu dengan menghentikan lebih awal). Saat pemakai memasukkan masing-masing nilai tes, tambahkan nilai tersebut ke variabel total dan naikkan variabel pencacah (variabel pencacah kalang akan bekerja untuk mencacah tes). Begitu pemakai memasukkan 5 buah nilai atau -99 (menunjukkan tak ada lagi skor tes), hitunglah rata-rata (titik-mengambang) dan menampilkan hasilnya. Pastikan bahwa Anda memberi selamat kepada pemakai kalau rata-ratanya lebih dari 90%! 9. Tulislah program yang menanyakan pemakai mengenai pembacaan temperatur untuk 10 hari terakhir. Hitunglah rata-rata temperaturnya. Jika pemakai memasukkan temperatur di bawah titik beku, pastikan bahwa continue membuat program mengabaikan pembacaan (rata-rata hanya untuk temperatur diatas titik beku). Catatlah banyaknya temperatur diatas temperatur titik beku yang dimasukkan pemakai (via variabel pencacah) dan hitunglah rata-rata berdasarkan jumlah nilai yang valid yang dimasukkan.

Page 20 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 4 FUNGSI
4.1 MANFAAT PENGGUNAAN FUNGSI

Dengan menggunakan fungsi, kode program yang ditulis dapat dijadikan bentuk modular (kode program yang tersusun dari modul-modul) sehingga program yang besar dan kompleks dapat kita breakdown menjadi modul-modul program. Cara ini memberikan keuntungan dalam hal : Kemudahan dalam memahami kode program Kemudahan dalam membuat program Memudahkan dalam pengecekan kesalahan
4.2 FORMAT PENGGUNAAN FUNGSI

Sebuah fungsi merupakan sekumpulan statement yang akan dieksekusi apabila fungsi tersebut dipanggil/diakses pada titik tertentu dalam program. Format penggunaan fungsi dalam program C++ adalah sebagai berikut :
tipe nama( parameter1,parameter2, ...){ statement }

dengan :

Tipe merupakan tipe data yang nilainya dikembalikan oleh fungsi yang

bersangkutan (opsional). Nama : identifier yang digunakan untuk memanggil fungsi yang bersangkutan Parameter (sejumlah yang dibutuhkan): setiap parameter terdiri dari tipe data dan identifier, seperti halnya deklarasi variabel yang umumnya diapakai dalam C++. (sebagai contoh : int x) dan bertindak sebagai variabel lokal dalam fungsi tersebut. Parameter-parameter yang berbeda dipisahkan dengan tanda koma. Statements merupakan tubuh fungsi, yang berupa blok program yang berada diantara tanda { }. Berikut adalah contoh program C++ menggunakan fungsi :
#include <iostream> int addition (int a, int b) { int r; r=a+b; return (r); } int main () { int z; z = addition (5,3); cout << "hasilnya adalah " << z; return 0; }

4.3 PELEWATAN PARAMETER

ouput : Hasilnya adalah 8 Analisis kode programnya adalah sebagai berikut :

Page 21 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Sebagaimana yang sudah anda pelajari hingga saat ini, kode program C++ umumnya diawali dengan eksekusi fungsi main. Terlihat dalam program bahwa fungsi main diawali dengan deklarasi variabel z yang bertipe int. Selanjutnya, terlihat ada perintah pemanggilan fungsi bernama addition. Perhatikan kesamaan struktur pemanggilan fungsi dengan deklarasi fungsi yang bersangkutan sebagaimana ditunjukkan di bawah ini.

Terlihat bahwa terdapat korespondensi yang bersesuaian antara parameter dan argumen. Di dalam fungsi main dijumpai pemanggilan fungsi addition yang melewatkan dua buah nilai : 5 dan 3, yang berkorespondensi dengan deklarasi parameter int a dan int b pada fungsi addition. Pada titik pemanggilan fungsi di dalam fungsi main, nilai kedua argumen yang dilewatkan melalui fungsi (5 dan 3) akan disalin ke variabel lokal int a and int b di dalam fungsi. Fungsi addition juga mendeklarasikan variabel,lokal lainnya (int r), dengan adanya ekpresi : r=a+b. Oleh karena parameter aktual yang dilewatkan untuk a dan b adalah 5 dan 3, maka r bernilai 8. Kode berikut :
return (r);

merupakan akhir dari fungsi addition, yang berfungsi mengembalikan kendali program ke fungsi main, dan selanjutnya akan mengikuti statement-statement yang ada setelah pemanggilan fungsi. Dalam hal ini, statement return pada fungsi addition berisi sebuah nilai yaitu 8.

jadi, setelah nilai pada fungsi dilewatkan ke fungsi main, variabel z akan di-set sesuai dengan nilai yang dlewatkan pada fungsi, yaitu hasil penambahan 5 dan 3. Oleh karenanya, kode program :
cout << "hasilnya adalah " << z;

akan mencetak nilai z yang merupakan nilai dari hasil pelewatan fungsi addition
4.4. VARIABEL LOKAL DAN VARIABEL GLOBAL

Variabel yang dipakai dalam fungsi hanya berfungsi dalam fungsi tersbut dan tidak bisa digunakan di luar fungsi yang bersangkutan. Variabel ini merupakan variabel lokal. Dalam contoh sebelumnya, variabel a, b atau r tidak bisa digunakan secara langsung di dalam fungsi main, oleh karena variabel-variabel tersebut merupakan variabel lokal. Variabel z juga tidak dapat digunakan secara langsung di dalam fungsi

Page 22 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) addtion oleh karena variabel ini merupakan variabel lokal dari fungsi main.

Disamping jenis variabel lokal, terdapat juga jenis variabel global yang bisa dipergunakan secara umum oleh semua bagian program, baik di dalam fungsi maupun di luar fungsi. Variabel global terletak di luar fungsi atau blok, dalam artian : variabel global diletakkan di dalam tubuh program.
#include <iostream> int subtraction (int a, int b) { int r; r=a-b; return (r); } int main () { int x=5, y=3, z; z = subtraction (7,2); cout << "The first result is " << z << \n; cout << "The second result is " << subtraction (7,2) << \n; cout << "The third result is " << subtraction (x,y) << \n; z= 4 + subtraction (x,y); cout << "The fourth result is " << z << \n; return 0; }

Pada contoh program ini, terdapat sebuah fungsi bernama subtraction yang berisi pengurangan dan melewatkan hasil dari operasi pengurangan ke fungsi main, namun dilakukan beberapa kali dengan beberapa cara. Analisisnya : Kode program berikut akan menghasilkan nilai 5 z = subtraction (7,2); cout << "The first result is " << z; Jika kita menggantikan nilai z dengan 5, maka kode tersebut akan sama dengan : z = 5; cout << "The first result is " << z; Sebagaimana akan sama juga dengan kode : Page 23 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) cout << "The second result is " << subtraction (7,2); (mengunakan pemanggilan fungsi secara langsung). Juga akan sama dengan : cout << "The second result is " << 5; Oleh karena 5 merupakan nilai yang dilewatkan dari fungsi subtraction ke fungsi main Pada kode program cout << "The third result is " << subtraction (x,y); Bagian yang dilewatkan adalah variabel, bukan nilai/angka. Bentuk seperti ini juga termasuk bentuk yang valid, dimana nilai x dan y adalah 5 dan 3. z = 4 + subtraction (x,y); Dapat juga ditulis : z = subtraction (x,y) + 4;
4.5 FUNGSI YANG TIDAK MENGEMBALIKAN NILAI

di muka sudah dijelaskan bentuk pemakaian fungsi dalam C++ adalah :


tipe nama( argument1,argument2...)statement

Terlihat bahwa deklarasi sebuah fungsi diawali dengan tipe fungsi tersebut. Pada contoh program di atas, fungsi yang dibuat melewatkan nilai-nilai yang bersangkutan ke fungsi main yang memanggilnya. adakalanya, fungsi tidak perlu melewatkan nilai apapun ke fungsi yang memanggilnya. Dalam hal ini, digunakan tipe VOID sebagai tipe fungsi yang tidak melewatkan parameter/nilai. Perhatikan contoh program menggunakan gungsi dengan tipe void berikut :
#include <iostream> void printmessage () { cout << "Im a function!"; } int main () { printmessage (); return 0; }

Bagaimana output program setelah dieksekusi ? Void juga dapat disebutkan di dalam daftar parameter untuk menegaskan bahwa pemanggilan fungsi tidak perlu melewatkan parameter aktual-nya. Sebagai contoh fungsi printmessage dapat dideklarasikan sebagai berikut :
void printmessage (void) { cout << "Im a function!"; }

Page 24 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) bagaimana jika kata void di dalam parameter dihilangkan ? apakah terdapat perubahan output ? yang harus diperhatikan adalah sintaks yang dipergunakan dalam memanggil sebuah fungsi. Untuk fungsi printmessage di atas dapat dipanggil dengan statement : printmessage (); Tanda kurung menyatakan bahwa statement tersbut merupakan pemanggilan terhadap fungsi. Contoh pemanggilan fungsi yang keliru : printmessage; 4.6 ARGUMENTS DILEWATKAN MELALUI NILAI DAN REFERENSI. Pada saat pemanggilan fungsi memakai parameter, nilai yang dilewatkan adalah nilai salinan dari parameter fungsi tersebut, dan bukan variabelnya. Oleh karenanya, kode program int x=5, y=3, z; z = addition ( x , y ); Adalah melewatkan parameter fungsi bernama addition dengan nilai x dan y adalah 5 dan 3, dengan x dan y adalah variabel lokal.

Adakalnya parameter dilewatkan melalui referensi. Dalam hal ini, argumen harus memakai tanda ampersand (&) sebagaimana contoh berikut :
#include <iostream> void duplicate (int& a, int& b, int& c) { a*=2; b*=2; c*=2; } int main () { int x=1, y=3, z=7; duplicate (x, y, z); cout << "x=" << x << ", y=" << y << ", z=" << z; return 0; }

output x=2, y=6, z=14 Analisis : Jika sebuah variabel dilewatkan dengan referensi, maka yang dilewatkan adalah bukan salinan nilainya, tapi variabelnya. Sehingga, apabila variabel lokalnya kita modifikasi, maka akan berpengaruh pada saat fungsi tersebut dipanggil.

Page 25 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

a, b dan c adalah argumen yang dilewatkan pada saat pemanggilan fungsi. Perubahan yang dilakukan di dalam fungsi akan berpengaruh terhadap nilai argumen yang dilewatkan keluar. LATIHAN 1 1. Bagaimanakah output program berikut setelah dieksekusi ? 2. Berikan analisis anda terhadap program tersebut
#include <iostream> void prevnext (int x, int& prev, int& next) { prev = x-1; next = x+1; } int main () { int x=100, y, z; prevnext (x, y, z); cout << "Previous=" << y << ", Next=" << z; return 0; }

NILAI DEFAULT PADA PARAMETER.

Pada saat deklarasi, kita dapat memberikan nilai default pada parameter, jika pemanggilan fungsi yang dilakukan tidak menspesifikasi argumen yang dilewatkan nilainya. Jika nilai dari parameter tidak dilewatkan saat fungsi dipanggil, maka digunakan nilai defaultnya. Apabila pemanggilan fungsi memakai sebuah nilai, maka nilai default akan diabaikan. Perhatikan contoh program berikut :

#include <iostream> int divide (int a, int b=2) { int r; r=a/b; return (r); } int main () { cout << divide (12); cout << endl; cout << divide (20,4); return 0; }

ouput : 6 5

Page 26 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Pada kode : divide (12), hanya terdapat satu argumen yang diminta. Maka akan diasumsikan parameter keduanya bernilai 2 (yaitu nilai b). Sehingga hasil pemanggilan fungsi divide adalah 6 (12/2). Pada pemanggilan fungsi kedua : divide (20,4), terdapat 2 parameter. nilai default pada b = 2 akan diabaikan dan diganti dengan b=4, sehingga hasil dari eksekusinya bernilai 5 (20/4).
4.7 FUNGSI OVERLOAD

Pada C++, anda dapat membuat beberapa fungsi dengan nama yang sama, asalkan tipe atau jumlah parameter yang digunakan berbeda. Analisalah contoh program berikut ini, dan bagaimanakah outputnya setelah dieksekusi. #include <iostream> int operate (int a, int b) { return (a*b); } float operate (float a, float b) { return (a/b); } int main () { int x=5,y=2; float n=5.0,m=2.0; cout << operate (x,y); cout << "\n"; cout << operate (n,m); cout << "\n"; return 0; }
4.8. REKURSIF

Rekursiivitas merupakan sifat fungsi yang memanggil dirinya sendiri. Sifat ini bermanfaat pada program yang melakukan operasi sorting, atau menghitung nilai faktorial suatu bilangan. Sebagai contoh : carilah (n!). N! dapat ditulis secara matematis : n! = n * (n-1) * (n-2) * (n-3) ... * 1 secara konkrit, 5! Berarti : 5! = 5 * 4 * 3 * 2 * 1 = 120 programnya dalam C++ dengan menggunakan fungsi ditunjukkan dalam contoh berikut :

#include <iostream> long factorial (long a) { if (a > 1) return (a * factorial (a-1)); else return (1);

Page 27 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


} int main () { long number; cout << "Ketik sembarang angka: "; cin >> number; cout << number << "! = " << factorial (number); return 0; }

LATIHAN 2 : 1. Bagaimana flowchart dan algoritma program tersebut ? 2. bagaimanakah output setelah program dieksekusi ? LATIHAN 3 : Perhatikan kode program berikut :
#include <iostream> void odd (int a); void even (int a); int main () { int i; do { cout << "ketik sebuah angka: (0 to exit) "; cin >> i; odd (i); } while (i!=0); return 0; } void odd (int a) { if ((a%2)!=0) cout << "angka ganjil.\n"; else even (a); } void even (int a) { if ((a%2)==0) cout << "angka genap.\n"; else odd (a); }

Pertanyaan : 1. Bagaimana flowchart dan algoritma program tersebut ? 2. bagaimanakah output setelah program dieksekusi ? LATIHAN 4 1. Apa keluaran dari program berikut?
//Nama file: U16OUT1.CPP #include <iostream.h> void DoubleIt(int i); void main()

Page 28 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


{ int i = 19; DoubleIt(i); cout << i sekarang sama dengan << i << endl; return; } //************************************* void DoubleIt(int i); { i *= 2; return; }

2. Apa keluaran dari program berikut?


#include <iostream.h> void DoubleIt(int *i); void main() { int i = 19; DoubleIt(&i); cout << i sekarang sama dengan << i << endl; return; } //************************************* void DoubleIt(int *i); { *i *= 2; return; }

3. Apa yang salah dengan fungsi berikut?


void SqThem(i, j) { i = i * i; j = j * j; cout << i kuadrat = << i << endl; cout << j kuadrat = << j << endl; return; }

4. Tulislah program yang menampilkan, pada main (), luas lingkaran berpresisi-ganda, berdasarkan radius (jari-jari) berpresisi-ganda dari pemakai yang dilewatkan ke fungsi. Rumus untuk menghitung luas lingkaran: 5. Tulislah kembali fungsi berikut untuk menerima dan memproses parameterparameternya dengan alamat, bukannya dengan nilai:
void Gandakan(float x, float y) { x *= 2.0; y *= 2.0; cout << Parameter pertama : << x << endl; cout << Parameter kedua : << y << endl; return; }

Page 29 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) 6. Tulislah kembali fungsi berikut untuk menerima dan memproses parameterparameternya dengan referensi, bukannya dengan nilai: void Gandakan(float x, float y) { x *= 2.0; y *= 2.0; cout << Parameter pertama : << x << endl; cout << Parameter kedua : << y << endl; return; } 7. Buatlah program dengan fungsi main() memanggil sebuah fungsi yang meminta pemakai bilangan dari 1 sampai dengan 80. (Pertahankan kalang jika pemakai memasukkan nilai di luar jangkauan tersebut.) Kembalilah ke main() dan lewatkan nilai tersebut ke fungsi bernama asterisk(), yang menampilkan sejumlah tanda * pada sebuah baris. 8. Buatlah program yang pada main(), meminta pemakai untuk memasukkan jumlah hari libur yang belum diambil selama ia bekerja tahun ini. Begitu pemakai memasukkan jumlah hari tersebut, lewatkan nilai tersebut ke fungsi kedua. Pada fungsi yang dipanggil, tampilkan jumlah jam libur yang masih ia miliki (1 hari = 24 jam). Tampilkan pesan Selamat bersenang-senang! jika pemakai memiliki lebih dari 5 libur. Kembali ke main() dan akhiri program seperti biasa. 9. Buatlah sebuah fungsi yang menerima 2 buah integer dengan alamat. Tukarkan kedua nilai integer tersebut di dalam fungsi. Karena pelewatannya dengan alamat, saat fungsi yang dipanggil mengembalikan kontrol ke fungsi pemanggil, nilai keduanya tetap dipertukarkan pada fungsi pemanggil.

Page 30 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 5 ARRAY
5.1 DEFINISI ARRAY

Array merupakan sederetan elemen-elemen data dengan tipe yang sama yang ditempatkan dalam lokasi memori yang berurutan/berdekatan dan dapat diakses dengan cara menyebutkan indek lokasinya. Sebagai contoh, dengan menggunakan array, kita dapat menyimpan enam buah data bertipe integer dalam satu arry, daripada harus mendeklarasikan masing-masing enam buah variabel bertipe integer. Misalkan ke-enam data array tersebut kita beri nama/identifier sebagai : data. Hal ini dapat diilustrasikan sebagai berikut :
1 Data Int 2 3 4 5 6

Gambar . Data tipe array Gambar 5.1. Data tipe array

Setiap kotak pada gambar di atas merepresentasikan elemen-elemen array (dalam hal ini terdapat enam elemen) dengan tipe integer. Penomoran elemen-elemen array dimulai dari 0, sehinga masing-masing elemen array-nya adalah : elemen 0, 1, 2, 3, 4, dan 5. Jadi : Array data elemen pertama ditulis sebagai data[0] Array data elemen kedua ditulis sebagai data[1] Array data elemen ketiga ditulis sebagai data[2] Array data elemen keempat ditulis sebagai data[3] Array data elemen kelima ditulis sebagai data[4] Array data elemen keenam ditulis sebagai data[5] Seperti halnya variabel, data tipe array harus dideklarasikan terlebih dahulu sebelum dipergunakan dalam program. Bentuk deklarasi array adalah :
type nama [elemen];

dengan tipe adalah tipe data array, (seperti int, float, char, dst), nama merupakan nama identifier array, dan diikuti dengan jumlah elemen array yang berada di anatara tanda kurung [ ]. Jadi, untuk array bernama data bertipe integer dengan jumlah elemen array sebanyak enam buah dideklarasikan sebagai :
Int data [6]; 5.2 INISIALISASI NILAI ARRAY

Elemen-elemen array dapat kita inisialisasi dengan cara berikut :


Int data [6] = {60, 70, 80 ,30 ,20 ,100}

Artinya bahwa : array dengan indeks 0 bernilai 60, atau dituliskan : data[0]=60 array dengan indeks 1 bernilai 70, atau dituliskan : data[1]=70 array dengan indeks 2 bernilai 80, atau dituliskan : data[2]=80

Page 31 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) array dengan indeks 3 bernilai 30, atau dituliskan : data[3]=30 array dengan indeks 4 bernilai 20, atau dituliskan : data[4]=20 array dengan indeks 5 bernilai 100, atau dituliskan : data[5]=100

hal ini dapat diilustrasikan sebagai berikut :


Data[0] Data[1]Data[2]Data[3]Data[4] Data[5] 1 2 3 4 5 6 Data

60
Int

70

80

30

20

100

Gambar 5.2 . Data tipe array dengan 6 elemen

atau dapat juga kita inisialisasi secara satu persatu :


data[0]=60; data[1]=70; data[2]=80; data[3]=30; data[4]=20; data[5]=100;

Nilai inisialisasi yang kita berikan pada data array harus sama dengan jumlah elemen array yang bersangkutan. Jika jumlah elemen array adalah enam buah, maka inisialisai-nya juga enam buah, masing-masing bersesuaian. Jadi bentuk inisialisasi berikut ini adalah salah :
int data[3]={2, 4} int data[3]={2, 3, 90, 7}

pada C++, anda tidak harus menuliskan jumlah elemen array pada deklarasinya, sebagai contoh, bentuk deklarasi berikut adalah benar :
int data[]={10, 20, 3, 4}

Dalam hal ini, compiler akan mengasumsikan ukuran array yang sesuai dengan kriteria. Dalam hal ini, ukuran memori yang dialokasikan secara otomatis oleh kompiler adalah integer dengan panjang 2 digit. Catatan : bedakan bentuk statement berikut :
Int data[6]; Data[1]=50; //deklarasi array bernama data dengan jumlah elemen enam buah // inisialisasi elemen kedua array dengan nilai 50

5.3 MENGAKSES ELEMEN ARRAY

Elemen array dapat kita akses dengan menyebutkan identifier array beserta indeks yang akan diakses :
nama[index]

Misalkan, array dengan elemen data[1] akan kita akses dan kita berikan nilainya ke variabel bernama a, maka sintaksnya dalam C++ adalah :
a=data[2]

Page 32 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


#include <iostream.h> int data[]={1,2,7,40,121}; int n, hasil=0; int main () { for ( n=0 ; n<5 ; n++ ) { cout<<data[n]<<endl; } cout << hasil; return 0; }

Pertanyaan : 1. Bagaimana ouput program ? 2. Analisalah Program di atas.


5.4 ARRAY MULTIDIMENSI

Array multidimensi dapat dideskripsikan sebagai array dari array. Sebagai contoh, array dua dimensi dapat dibayangkan sebagai sebagai tabel dua dimensi dengan masingmasing elemen terdiri dari elemen baris dan kolom, serta memiliki tipe data yang sama. Sebagai contoh, array 2 dimensi dengan deklarasi :
Int data [3,4] ;

Dapat diilustrasikan sebagai berikut :


0 0 1 2 1 2 3

[0,0] [1,0] [2,0]

[0,1] [1,1] [2,1]

[0,2] [1,2] [2,2]

[0,3] [1,3] [2,3]

Gambar 5.3 . Data array dua dimesi

Inisialisasi array dapat dilakukan dengan menyebutkan indeksnya. Sebagai contoh, elemen [1,0] akan diisi dengan bilangan 7, maka statementnya :
Data[1,0]=7; 0 1 2 0 1 2 3

[0,0] [1,0] [2,0]

[0,1] [1,1] [2,1]

[0,2] [1,2] [2,2]

[0,3] [1,3] [2,3]

Gambar 5.4 . Data array dimesi [3,4] dengan elemen [1,0] yang diinisialisasi

Akses array dapat dilakukan dengan menyebutkan indeks elemen yang akan diakses. Sebagai contoh, nilai elemen [2,1] akan diberikan ke variabel a, maka elemen [2,1] dapat diakses dengan statement :
A=data[2,1]

Array Multidimensi tidak hanya terbatas dalam 2 dimensi. Namun hendaknya pemakaian array multidimensi mempertimbangkan kebutuhan. Semakin banyak dimensi array yang kita pakai, alokasi ke memori semakin besar, sehingga program menjadi relatif lebih lambat untuk di\jalankan

Page 33 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


5.5 ARRAY TIPE CHAR

Libarry standard C++ juga memiliki standard untuk manipulasi data tipe string. Oleh karena string merupakan deretan/kumpulan karakter-karakter, maka data tipe string diperlakukan sebagai data array dengan tipe char. Sebagai contoh, variebel tipe string dengan identifier nama, dengan maksimal karakter yang diperbolehkan adalah 16 karakter dapat dideklarasikan sebagai : char nama [16]; yang dapat direpresentasikan sebagai : Nama[16] Walaupun array diatas memiliki 16 elemen, kita dapat mengisinya dengan data char kurang dari 16 elemen. Misalkan string : Michael akan disimpan di dalam array tersebut. Maka :
H a l l o \0

Gambar 5.5 . Penyimpanan string Hallo di dalam array

oleh karena hanya ditempatkan 5 karakter di dalam array, maka akhir dari karakter tersebut akan diisi dengan null character, yang dapat ditulis sebagai \0 (backslash, nol).
5.6 INISIALISASI ARRAY TIPE CHAR

Inisialisasi array dengan karakter dapat dilakukan secara langsung. Misalkan kita mengisi array nama dengan karakter : H, a, l, l, o dan null character. Dalam hal ini terdapat dua cara yang dapat ditempuh : Maka dapat dituliskan sebagai : Char nama[]={H,a,l,l,o,\0}; Dalam hal ini, terdapat enam karakter yang kita inisialisasikan, termasuk akarakter null-nya. Inisialisasi dilakukan dengan memakai tanda petik tunggal dari karakter-karakter. Inisialisasi juga dapat dilakukan dengan menggunakan literal string, yang diapit dengan tanda petik ganda sebagai berikut : Char nama[]={Hallo}; Apakah output program berikut setelah dikompilasi ? analisislah !
#include <iostream.h> int main () { char question[] = "Please, enter your first name: "; char greeting[] = "Hello, "; char yourname [80]; cout << question; cin >> yourname; cout << greeting << yourname << "!"; return 0; }

Page 34 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Pertanyaan : 1. Bagaimana output program di atas ? 2. Analisalah kode program tersebut. Berapa array yang digunakan ? dalam kondisi apakah anda harus menyebutkan julah elemen array ?

LATIHAN 3 : 1. Selain dari char, tipe data jenis apa lagi yang dapat anda simpan dalam array? 2. Berapa banyak elemen array yang telah dipesan oleh pendefinisian array berikut ini?
double values[16];

3. Berapa banyak elemen array yang telah dipesan oleh pendefinisian array berikut ini?
int ages[] = {23, 54, 32, 39, 40, 69, 74, 57, 12};

4. Mengapakah pendefinisian array berikut ini akan gagal memesan tempat penyimpanan?
float weights[];

5. Dengan pendefinisian dan penginisialisasian array seperti ini :


int ara[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

apa yang dihasilkan oleh kode berikut


for (c = 8; c >= 0; c--) {cout << ara[c] << end}

6. Mike telah menulis sebuah rutin untuk mencari dalam array, yang tak bekerja dengan konsisten. Temukan penyebabnya!
cin >> keyVal; for (i=0; i<Num; i++) {if ara[i] == keyVal) {found = 1;} // Menemukan ada yang cocok else {found = 0} // Tidak pada elemen ini }

Page 35 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 6 Pemrograman Port Paralel Menggunakan Bahasa C


Komputer tersusun atas beberapa perangakat keras yang terhubung dengannya. Secara sederhana, komputer berfungsi sebagai piranti untuk mengolah data. Secara visual komputer dapat digambarkan sebagai sebuah kotak hitam (black box) yang menerima masukan (input) dan menghasilkan keluaran (output). Dari sudut pandang ini, kita dapat mengklasifikasikan piranti yang berhubungan dengan komputer sebagai : 1. Piranti masukan 2. Piranti keluaran 3. Piranti pengolah data (CPU).
input output

komputer

Gambar 6.1 ilustrasi yang menghubungkan input, ouput, dan komputer

Komunikasi antara CPU dengan piranti masukan dan keluaran dilakukan melalui konektor, sehingga CPU dapat menerima input dari piranti masukan dan mengeluarkan hasil pemrosesan pada piranti keluaran. CPU (Central Processing Unit) terbungkus dalam casing. Apabila kita lihat pada bagian konektor, dapat kita temui beberapa port antara lain : port paralel (port LPT) untuk komunikasi CPU dengan printer, dua buah COM ports (port RS_232), port untuk joystick, serta port USB
6.1 PORT SERIAL DAN PARALEL

Port digunakan untuk melakukan 2 fungsi utama, yaitu sebagai alat komunikasi dan kontrol piranti keluaran. Port paralel yang biasanya terhubung dengan printer dapat kita program sesuai denngan aplikasi yang kita butuhkan. Pemrograman melalui port paralel sangat mudah dilakukan dan lebih cepat dibandingkan komunikasi melalui port serial, namun komunikasi dengan poert serial memerlukan beberapa jalur transmisi, sehingga port ini tidak sesuai digunakan pada komunikasi jarak jauh. Untuk mengetahui perbedaaan komunikasi serial dan paralel, terlebebih dahulu harus dipahami bagaimana komunikasi secara serial terjadi. Komunikasi jenis ini menggunakan 2 jalur data (line), masing-masing digunakan untuk pengiriman dan penerimaan. Bit bit data dikirm satu persatu secara runtut, diawali dengan start bit, kemudian diikuiti oleh bit-bit data, bit paritas (untuk deteksi error) dan diakhiri dengan stop bit. Pada port paralel, 8 bit data (1byte) dikirim sekaligus pada saat yang bersamaan, sehingga oleh karenanya terdapat beberapa jalur data serta beberapa jalur untuk control komunikasi. Gambar di bawah ini menunjukkan bagaimana bit 11111011 11011110 01111100 dikirim secara serial dan paralel.
Start Stop

Gambar 6.2. Pengiriman bit 11111011 11011110 01111100 secara serial

Page 36 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Byte Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 8

Byte Byte

Gambar 6.3. Pengiriman bit 11111011 11011110 01111100 secara paralel

Port paralel tersusun dari : a. 8 bit data output b. 5 bit kontrol input c. 5 bit kontrol output Port paralel pada CPU bertipe D-25 female dengan 25 pins, sedangkan port pada printer bertipe 36 pin Centronics. Fungsi masing-masing pin dijelaskan pada tabel di bawah ini.
Pin 13 Pin 1

Pin 25

Pin 14

Gambar 6.4 Port Paralel tipe D-25 female Tabel 6.1. Fungsi masing-masing pin pada port paralel D-25 female Pin No 1 2-9 11 11 12 13 14 15 16 Fungsi Strobe Data Lines Acknowledgement (ACK) Busy Out of Paper Select Auto feed Error Init Input/Ouput In/Out In/Out In In In In In/Out In In/Out

Page 37 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


17 18-25 Select In (SLCT) GND In/Out GND

Pin nomor 2 hingga 9 berturut-turut digunakan untuk data ke-1 hingga data ke-8. Tabel 6.2. Fungsi masing-masing pin pada port paralel D-25 female
PIN 2 3 4 5 6 7 8 9 Bit D0 D1 D2 D3 D4 D5 D6 D7 Fungsi Data 1 Data 2 Data 3 Data 4 Data 5 Data 6 Data 7 Data 8

Semua bit pada port paralel menggunakan logika level TTL. Berikut adalah penjelasan masing-masing fungsi pada pin port paralel D-25 female.
OUTPUT

STROBE: digunakan untuk sinyal yang memberitahukan printer bahwa data 8 bit siap dibaca, dan mengubahnya ke level logika rendah (low logic level). INIT: me-reset printer. SLCT IN: menseleksi printer saat printer berada pada level logika rendah (low logic level). AUTO FEED: memerintahkan printer untuk mencetak sebuah garis kosong yang diikuti dengan perpindahan baris. D0-D7: digunakan untuk komunikasi bit data.

INPUT

ACK : menginformasikan kepada bahwa data telah diterima secara benar BUSY: digunakan apabila buffer telah penuh sehingga menghentikan pengirimanan data daro komputer. SLCT: memberitahu komputer bahwa komputer terhubungn dengan sebuah printer. ERROR/: digunakan untuk memberitahukan apabila terjadi error, oleh karenanya CPU harus mengehentikan pengiriman data. PE: memberitahukan bahwa printer sedang out of paper.

6.2 PENGALAMATAN PORT PARALEL

MS-DOS mendukung sistem pengalamatan 3 port paralel, yaitu LPT1, LPT2, dan LPT3, sehingga pada peta memori komputer terdapat 3 alamat untuk masing-masing port tersebut. Tiap port paralel menggunakan 3 alamat pada peta I/O (Input/Output) Alamat I/O untuk LPT1 adalah 378H, 379H dan 37AH (pengalamatan menggunakan bilangan heksadesimal). a. Port 378H merupakan port OUTPUT yang digunakan oleh CPU untuk menulis data yang akan dicetak ke printer. 8 pin pada konektor yang digunakan untuk pengiriman data ouput 8bit (D0-D7) diperlihatkan pada tabel.

Page 38 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) b. Port 379H Merupakan port INPUT yang digunakan oleh CPU untuk mengetahui kondisi printer. Pin yang digunakan sebagaimana pada tabel.
Tabel 6.3 Status Bit BIT D0 D1 D2 D3 D4 D5 D6 D7 FUNCTION not used not used not used ERROR/ SLCT/ PE ACK/ BUSY/ PIN

15 17 12 11 11

c. Port 37AH Merupakan port OUTPUT yang digunakan sebagai kontrol komunikasi. Pin konektor yang digunakan dapat dilihat pada tabel berikut.
Tabel 6.4 Control Bit BIT D0 D1 D2 D3 D4 D5 D6 D7 FUNCTION STROBE AUTO FD INIT/ SLCT IN/ Habilitation IRQ7 not used not used not used PIN 1 14 16 17

Oleh karena terdapat 3 LPT pada komputer (LPT1, LPT2, dan LPT3), masing-masing LPT memiliki alamat I/O sebagai berikut :
Tabel 6.5. Alamat I/O port paralel pada CPU komputer port LPT1 LPT2 LPT3 Data 378H 278H 3BCH Alamat LPT Status 379H 279H 2BDH

Control 37AH 27AH 3BEH

Pada Turbo C, fungsi-fungsi berikut ini digunakan sebagai perintah untuk akses port paralel : outportb ( PORTID, data); data = inportb( PORTID); outport( PORTID, data); data = inport( PORTID); Fungsi outport() mengirim satu word ke port paralel

Page 39 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Fungsi inport() membaca satu word dari port. Fungsi outportb() mengirim satu byte ke port Fungsi inportb() membaca satu byte dari port. Berikut adalah program dengan menggunakan akses port paralel
#include"stdio.h" #include"conio.h" #include"dos.h" #define PORT 0x378 void main() { int data; clrscr(); while(!kbhit()) { data=inportb(PORT+1); gotoxy(3,11); printf("Data available in status register: %3d (decimal), %3X (hex)\n", data, data); printf("\n Pin 15: %d",(data & 0x08)/0x08); printf("\n Pin 13: %d",(data & 0x11)/0x11); printf("\n Pin 12: %d",(data & 0x20)/0x20); printf("\n Pin 11: %d",(data & 0x80)/0x80); printf("\n Pin 11: %d",(data & 0x40)/0x40); delay(11); } }

Penjelasan : 1. Port bernilai 0x378h 2. while(!kbhit()) menyatakan bahwa statement yang berada pada while akan dieksekusi hingga terdeteksi penekanan tombol pada keyboard 3. data=inportb(PORT+1) menyatakan bahwa variabel data adalah data pada port beralamat 0x379h , port status register.pada saat dieksekusi, bernilai 223 ( 1 1 0 1 1 1 1 1). Dapat dituliskan pada tabel :
Tabel 6.5 Nilai pin-pin pada port BIT FUNCTION PIN NILAI D0 not used 1 D1 not used 1 D2 not used 1 D3 ERROR/ 15 1 D4 SLCT/ 17 1 D5 PE 12 0 D6 ACK/ 11 1 D7 BUSY/ 11 1

sehingga tampilan keluaran program adalah :

Page 40 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


Data available in status register:223 (decimal), DF (hex) Pin 15 : 1 Pin 13 : 1 Pin 12 : 0 Pin 11 : 1 Pin 11 : 1

Perhatikan bahwa untuk mendapatkan nilai dari masing-masing port, harus digunakan operasi bit sebagai berikut. Misalkan ingin diketahui status register pin no. 15, maka kita AND kan bit D3 dengan 0 x 08 sehingga :

bit no. data (0x08) di AND kan bit no. data (0x08)

7654 XXXX 0 000 0 000

3210 1XXX 10 00 10 00

7654 3210 XXXX 1XXX 0 0 0 0 1 0 0 0 (0x08 ) 0 0 0 0 0 0 0 0 (0x00 bit 3 is low)

Gambar 11.4 LED yang terhubung ke port paralel

Untuk menyalakan lampu 8 LED, anda dapat memberikan logika 1pada pin LED yang bersangkutan. Contoh program untuk menyalakan LED :
#include <stdio.h> #include <dos.h> #include <conio.h> /********************************************/ /*This program set the parallel port outputs*/ /********************************************/

Page 41 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


void main (void) { clrscr(); outportb(0x378,0xff); outportb(0x37a,0xff); getch();}

LATIHAN : 1. Bagaimana cara mematikan nyala LED ? 2. Bagaimana cara menyalakan LED ganjil ? 3. Bagaimana cara menyalakan LED genap ? 4. Bagaimana cara menyalakan LED agar tampil menyala dari D0 ke D7 ? 5. Buatlah program yang menawarkan pilihan menu 1-4 kepada user.

Page 42 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 7 OBJECT-ORIENTED PROGRAMMING (OOP)


OOP merupakan sebuah cara pandang pada bidang pemrograman untuk memecahkan suatu masalah. Konsep dan ide dari OOP bermula di Norwegia pada tahun 1960. Pada saat itu dikembangkan sebuah program bernama Simula oleh Christian Nygaard dan rekan-rekannya di Universitas Oslo (University of Oslo). Simula menggunakan metode beorientasi objek dan menjadi inspirasi bagi terciptanya program Smalltalk-80 yang murni berorientasi obyek. Smalltalk-80 diiciptakan pada tahun 1970 di Xerox PARC (Palo Alto Research Center) dan dirilis mulai tahun 1980. Pada tahun 1980 diadakan seminar tentang object-oriented programming. Pada saat itu telah muncul bahasa pemrograman beorientasi obyek yang lain yaitu Eiffel. Bertrand Meyer menulis sebuah buku berjudul Object-Oriented Software Construction (Prentice-Hall, 1988; Second Edition, 1997) yang menjelaskan empat prinsip pada pemrograman berorientasi obyek, serta konsep-konsep lain pada pemrograman berorientasi objek yang hingga saat ini masih berlaku. Bahasa Eiffel menerapkan prinsipprinsip Pemrograman beorientasi objek dan merupakan bahasa pemrograman yang murni OOP. OOP menjadi semakin terkenal ketika AT&T Bell Labs. Membangun sebuah bahasa pemrograman hybrid bernama C++ pada tahun 1980. bahasa C++ ini dikembangkan dari bahasa pendahulunya, yaitu bahasa C yang saat itu sangat popular. Sintaks bahasa C++ menjadi sangat kompleks karena bahasa ini harus mempertahanakan bentuk sintaks bahasa sebelumnya (yaitu C) serta kompatibilitas. Bahasa C++ mengalami perbaikan dan perkembangan hingga akhirnya distandarkan pada tahun 1990. C++ hingga saat ini dikenal sebagai bahasa pemrograman yang paling kompleks. Kebanyakan program C menggunakan compiler C++ pada saat kompilasinya.
7.1 MEMANDANG SESUATU SEBAGAI OBJEK

Dalam kehidupan sehari hari, kita tidak akan terlepas dengan cara pandang kita terhadap sesuatu hal. Cara pandang ini akan sangat berpengaruh terhadap aksi/tindakan yang kita lakukan. Seseorang yang memiliki pandangan bahwa kesuksesan hanya dapat diraih dengan usaha dan kerja keras cenderung aktif dan bekerja dengan sungguh. Berbeda dengan seseorang yang berpandangan bahwa kesuksesan merupakan nasib/takdir yang ditentukan. Orang tersebut cenderung pasif dan menerima apa adanya. Demikian juga dalam bidang pemrograman. Bagaimana cara menyelesaikan suatu permasalahan juga menjadi titik tolak bagi solusi yang dipecahkan melalui kode program. Trend masa kini dalam pemrograman telah mengarah ke pemrograman berorientasi obyek/OOP. Apakah maksud dari OOP ? bagaimana konsep OOP serta implementasinya? Untuk itulah anda harus membaca bab-bab selanjutnya.
7.2 DUNIA TERSUSUN DARI OBJEK-OBJEK

Sudut pandang OOP adalah : memperlakukan dunia ini sebagai kumpulan dari objek-objek. di lingkungan sekitar, kita dapat menjumpai objek-objek yang beraneka jenis, seperti : lautan, matahari, bulan, rumah, sungai, sepeda, sepatu, arloji, dlsb. Manusia juga merupakan sebuah objek. Umumnya, sebuah objek tersusun dari objekobjek lain yang lebih kecil. Misal : rumah, terdiri dari : jendela, pintu, atap, langit, kamar mandi, ruang tidur, kasur, kompor, kulkas, dlsb.

Page 43 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Sebuah objek, memiliki 2 cari khas yang membedakannya dengan objek lain, yaitu : 1. atribut (attributes) atribut merupakan karakteristik dari sebuah objek. misalkan : kuda, memiliki atribut : kaki, ekor, warna kulit, dlsb. Demikian juga manusia, memiliki atribut : nama, jenis kelamin, berat, tinggi, dlsb. 2. tingkah laku (behavior) tingkah laku merupakan tindakan yang dapat dilakukan oleh objek yang bersangkutan. Kuda, memiliki behavior : meringkik, berlari, mendengus, dlsb. Manusia, meiliki behavior : berjalan, berlari, makan, tidur, bernafas, dlsb. LATIHAN : Sebutkan atribut dan behavior dari objek berikut : 1. Sepeda motor atribut : behavior : 2. Karyawan atribut : behavior :
7.3 OBJEK ABSTRAK DAN INSTANT

Yang dimaksud dengan objek abstrak (abstract object): deskripsi dan model dari objek sesungguhnya (real object). Objek abstrak menyembunyikan detil dari objek aslinya. Misalkan : real objek adalah manusia dengan atribut : Rini, wanita, tinggi 165 cm, berat 50 kg. Sedangkan atribut dari objek abstrak adalah : nama, jenis kelamin, tinggi, dan berat badan. Dalam bidang pemrograman, programmer membuat objek abstrak terlebih dahulu, kemudian membuat objek riil dari objek abstrak. Objek riil yang dibuat dari objek abstrak dinamakan : instan (instance). Dalam hal ini, programmer tidak melibatkan semua atribut dan behavior dari objek, namun terbatas pada atribut-atribut tertentu saja yang akan diolah/diproses selanjutnya. Hal ini analog seperti anda menggunakan komputer. Pada saat anda membuat sebuah dokumen/naskah, anda hanya memperhatikan papan keyboard serta layar monitor yang ada di hadapan anda. Anda tidak perlu mengurus VGA, Lan card, atau CDROM jika anda ingin membuat dokument menggunakan MS Word.
7.4 INHERITANCE (PEWARISAN)

Inheritance merupakan salah satu sifat dari OOP. Misalkan kita buat sebuah objek : manusia, dengan atribut dan behavior sebagai berikut (tidak semua atribut dan behavior manusia disebutkan disini) : Atribut : nama, jenis kelamin, tanggal lahir Behavior : berjalan, makan, tidur. Kemudian kita ciptakan objek lain, yaitu : mahasiswa. Mahasiswa memiliki atribut dan behavior sebagai berikut : Atribut : NIM, jurusan, IPK Behavior : belajar, praktikum, diskusi, mengerjakan PR Oleh karena mahasiswa juga adalah manusia, maka atribut dan behavior pada manusia juga diwariskan pada mahasiswa, sehingga atribut selengkapnya dari mahasiswa adalah : nama, jenis kelamin, tanggal lahir, NIM, jurusan, dan IPK. Behavior

Page 44 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) selengkapnya dari mahasiswa adalah : berjalan, makan, tidur, belajar, praktikum, diskusi, dan mengerjakan PR. Selanjutnya, anda dapat menciptakan objek-objek lain yang masih berada dalam lingkup mahasiswa, seperti : dosen, petugas administrasi, petugas perpustakaan, serta pembantu umum. Tiap objek yang anda ciptakan ini tentu saja masing-masing memiliki atribut dan behavior yang khas, namun kesemuanya memiliki atribut dan behavior dari objek manusia. Sifat ini dinamakan : pewarisan (inheritance) Inheritance ini analogi dengan klasifikasi pada biologi.
7.5 OBJEK DI DUNIA NYATA SERTA PEMROGRAMAN BERORIENTASI OBJEK

Bahasa pemrograman muncul dikarenakan kecerdasan manusia untuk menciptakan sebuah alat yang berguna untuk membantu pekerjaan mereka, terutama dalam hal otomasi. Permintaan dan kebutuhan akan adanya program semakin meningkat ketika manusia benar-benar merasakan manfaat dari program. Seiring dengan laju permintaan terhadap program, maka kode program menjadi semakin besar dan kompleks, dengan tuntutan kemampuan yang juga kompleks . Bahasa pemrograman pada periode-periode awal umumnya bersifat prosedural/terstruktur. Sebuah program dibagi menjadi beberapa bagian yang disebut dengan prosedur/fungsi/methods (bahasa pascal mengenal prosedur dan fungsi, sedangkan dalam C hanya dikenal prosedur saja). Ini analog dengan menulis sebuah buku tebal dengan membaginya menjadi beberapa Bab. Tiap prosedur yang ditulis akan melaksanakan suatu tindakan spesifik tertentu, sehingga apabila tindakan tersebut dibutuhkan beberapa kali, maka tidak perlu menulis ulang kode program yang sama, namun cukup dengan menulis kode program untuk tindakan tersebut dalam sebuah prosedur, dan memanggilnya apabila dibutuhkan. Penggunaan prosedur ini sangat membantu programmer dalam hal mengurangi kompleksitas program, serta membuat kode program menjadi lebih pendek, dan mudah dilakukan pengecekan kesalahan apabila terjadi bug (kesalahan) Contoh sederhana, misalkan programmer membuat program identifikasi wilayah berdasarkan kode pos. Pada profgram, User memasukkan angka kode pos. Program akan mencocokkan angka kode pos dengan database yang dimiliki, dan kemudian menampilkan wilayah dari kode pos tersebut. Apabila user menginginkan untuk melakukan pekerjaan ini berulang kali, maka cukup diperlukan sebuah prosedur berisi kode program yang mecocokkan kode pos dengan nama wilayah, dan cukup dipanggil apabila diperlukan. Walaupun penggunaan prosedur sangat membantu dalam membangun sebuah program, namun tetap dirasakan terdapat perbedaan antara dunia nyata dengan dunia pemrograman. Seperti yang telah kita ketahui bahwa dunia nyata tersusun dari objekobjek (dengan atribut dan behaviornya), dan bukan tersusun dari prosedur-prosedur, sehingga paradigma pemrograman juga mulai beralih dari pemrograman prosedur/terstruktur ke pemrograman berorientasi objek. Hal itu juga yang melatarbelakangi terciptanya C++ sebagai bahasa pemrograman dengan kemampuan pemrograman berorientasi objek, namun masih kompatibel dengan bahasa C yang bersifat prosedural/terstruktur. LATIHAN SOAL 1. Apakah yang dimaksud dengan objek ? 2. Apakah yang dimaksud dengan atribut ? 3. Apakah yang dimaksud dengan behavior ? 4. Jelaskan latar belakang munculnya pemrograman berorientasi objek

Page 45 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) 5. Apakah yang membedakan antara pemrograman terstruktur dengan pemrograman berorientasi objek ? 6. Jelaskan yang dimaksud dengan pewarisan 7.6 BEKERJA DENGAN CLASS
7.6.1 DEFINISI CLASS

Class merupakan template/wadah dari atribut dan behavior dari objek yang kita ciptakan. Dalam pemrograman berorientasi objek, kita tidak bekerja secara langsung dengan objek, namun menggunakan class. Programmer menciptakan instance dari class, beserta atribut dan behaviornya. Untuk membuat class, anda harus mendefiniskannya terlebih dahulu. Bentuk definisi class tergantung dari bahasa pemrograman yang digunakan. Misalkan kita mendefinisikan sebuah kelas bernama : FormRegistrasi. Dalam bahasa Java :
class FormRegistrasi { int NoSiswa; int NoKursus; }

di C++ sebagai berikut :


class FormRegistrasi { int NoSiswa; int NoKursus; };

Penjelasan : a. Keyword class memberitahu kepada kompiler bahwa anda mendefinisikan sebuah class bernama : FormRegistrasi. b. Tanda kurung kurawal buka dan tutup merupakan tubuh class, tempat anda mendefinisikan atribut dan behavior. Dalam contoh di atas, anda mendefiniskan 2 buah atribut, yaitu : NoSiswa dan NoKursus yang masing-masing bertipe integer. c. Yang membedakan antara java dan C++ dalam pendefinisian class adalah : adanya tanda titik-koma setelah kurung kurawal tutup.
7.6.2 VARIABEL DAN CLASS

Dalam pemrograman, variabel merupakan referensi tempat anda menyimpan data ke dalam memori. Di dalam pemrograman berorientasi objek juga dikenal adanya 2 macam variabel : 1. variabel instance Dalam hal ini, variabel di dalam tubuh class disebut juga : variabel instance. Pada contoh di atas, terdapat 2 variabel instance yang berupa atribut, yaitu : NoSiswa dan NoKursus 2. variabel biasa yaitu variabel di dalam program yang bukan merupakan variabel instance. Pada saat anda mendeklarasikan variabel class, anda terlebih dahulu menentukan tipe/jenis data yang akan anda simpan di memori. Tipe data ini akan memberitahu kepada komputer berapa besar memori yang diperlukan untuk menyimpan data dan bagaimana data tersebut ditangani jika sudah tersimpan di memori. Hasil perlakuan dari komputer akan berbeda untuk jenis data yang berbeda pula. Sebagai contoh : anda dapat menyimpan 1 ke dalam komputer. 1 dapat diperlakukan sebagai data tipe angka, dan bisa

Page 46 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) juga diperlakukan sebagai data tipe karakter. Apabila anda ingin melakukan operasi aritmatika (menambah, mengurang, membagi, mengali), maka anda memerlukan data tipe angka. Tabel berikut menunjukkan beberapa tipe data beserta jangkauan data yang umum digunakan dalam bahasa pemrograman.
Table 2-1: Primitive Data Types Data Type byte short int long char float double boolean 7.7 METHOD Range of Values 128 to 127 32,768 to 32,767 2,147,483,648 to 2,147,483,647 9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 65,000 (Unicode) 3.4e038 to 3.4e+038 1.7e308 to 1.7e+308 true or false

Disamping atribut, objek juga memiliki behavior. Method juga perlu didefiniskan/dideklarasikan terlebih dulu. Defdinisi method diletakkan di dalam definisi class. Bayangkan bahwa method ini seperti kumpulan statement yang melakukan tindakan tertentu. Setiap instance dari kclass dapat mengakses method manakala behavior perlu dilakukan dalam program. Sebagai contoh, kita definisikan method dengan nama : AmbilKursus.
class RegistrationForm { int NoSiswa; int NoKursus; void AmbilKursus(int NoSiswa, NoKursus) { //berisi statement-statement dari method AmbilKursus } }

Dari contoh di atas, tampak bahwa method AmbilKursus memiliki 2 argumen : NoSiswa dan NoKursus. Argumen yang digunakan di dalam method merupakan data yang diambil di luar method, agar behavior pada method dapat terlaksana. Dalam hal ini, method AmbilKursus memerlukan argumen : NoSiswa dan NoKursus untuk menyimpan daftar kursus yang diambil oleh siswa. Catatan : Argumen ditulis bersama dengan tipe datanya. Apabila terdapat 2 atau lebih argumen, masing-masing argumen dipisah dengan tanda koma. Keyword void pada method AmbilKursus menyatakan bahwa setelah statementstatement pada method dijalankan, tidak ada nilai yang dikembalikan ke program yang memanggil ke method tersebut. Dalam hal ini, method AmbilKursus akan menyimpan informasi nomer siswa dan kursus yang diambil. Tidak ada informasi lain yang nilainya perlu dikembalikan. Apabila diinginkan kondisi, apabila data sudah tercatat maka bernilai 1(true) sedangkan apabila gagal maka bernilai 0 (false), maka gunakan tipe data boolean di depan nama method, sehingga definisinya menjadi : boolean AmbilKursus (int NoSiswa, NoKursus).

Page 47 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 8 OOP II
8.1 STRUKTUR

Untuk dapat memahami pemrograman OOP pada C++, diharapkan anda sudah memahami konsep penggunaan tipe data struktur. Misalkan sebuah tipe struktur dalam program C++ sebagai berikut:
#include <iostream.h> #include <conio.h> #include <stdio.h> struct atribut { char nama[20]; char alamat[30]; float ipk; } ; int main () { atribut mhs; cout<<"nama anda = ";gets(mhs.nama); cout<<"alamat = ";gets(mhs.alamat); cout<<"IPK = "; cin>>(mhs.ipk); clrscr(); cout<<" SELAMAT DATANG "<<(mhs.nama)<<endl; cout<<" IPK ANDA = "<<(mhs.ipk); cout<<" alamat anda di : "<<(mhs.alamat); getch(); }

1. Bagaimanakah hasil tampilan program ? 2. Apa beda fungsi gets dan cin ? OOP melakukan pemrograman menggunakan class. Apabila program di atas dijadikan OOP, maka deklarasi tipe data struktur diubah sebagai berikut :
class atribut { public: char nama[20]; char alamat[30]; float ipk; } ;

Kata public menyatakan bahwa anggota kelas dapat diakses secara umum. Apabila anda menginginkan anggota class tidak dapat diakses di luar class secara langsung, maka anda jadikan sebagai private. Dalam OOP, setiap objek dalam anggota kelas dapat memiliki method (behavior) tertentu. Untuk objek class atrribut di atas, terdapat beberapa method (behavior) yang dapat kita lakukan, antara lain :

Page 48 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) 1. Masukkan data mhs. 2. Tampilkan data mhs. Maka program OOP selengkapnya adalah sebagai berikut :
#include <iostream.h> #include <conio.h> #include <stdio.h> class atribut { private: char nama[20]; char alamat[30]; float ipk; public: void isi_data() { cout<<"nama = "; gets(nama); cout<<"alamat = "; gets(alamat); cout<<"ipk = "; cin>>ipk; } void tampil() { cout<<"nama anda adalah = "<<nama<<endl; cout<<" beralamat di = "<<alamat<<endl; cout<<"IPK = anda ternyata "<<ipk<<endl; } }; int main () { clrscr(); atribut mhs; mhs.isi_data(); clrscr(); mhs.tampil(); getch(); }

Analisis : 1. Class atribut memiliki 3 anggota yang bersifat private , yaitu : nama, alamat dan ipk. Class ini memiliki 2 method/fungsi anggota yang bersifat public, yaitu : isi_data() dan tampil(). 2. Objek bernama mhs memiliki class atribut, ditunjukkan pada deklarasi : atribut mhs 3. Selanjutnya, fungsi anggota dapat dipanggil di dalam fungsi main() Pada program di atas, kita memiliki 1 objek bernama mhs dengan class atribut. Kita dapat membentuk beberapa objek dengan class yang sama (fungsi inheritance?). tentu saja data anggota masing-masing objek akan berbeda. Misal, kita buat objek menjadi 2, yaitu : mhs_S1 dan mhsD3.

Page 49 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Dalam hal ini, deklarasi anggota class dan method/behavior/fungsi anggotanya tetap. Potongan fungsi di dalam main sebagai berikut.
int main () { clrscr(); atribut mhs_S1, mhsD3; mhs_S1.isi_data(); mhsD3.isi_data(); clrscr(); mhs_S1.tampil(); mhsD3.tampil(); getch(); }

Pertanyaan : 1. Bagaimana keluaran program ? 2. Apa yang terjadi jika di dalam main terdapat kode berikut :
int main () { clrscr(); atribut mhs_S1, mhsD3; mhs_S1.isi_data(); mhsD3=mhs_S1; //apa maksudnya ? clrscr(); mhsD3.tampil(); getch(); }

Pada OOP, terdapat 2 cara mendefinisikan method/behavior/fungsi anggota. Cara pertama adalah seperti yang sudah kita gunakan, dimana fungsi anggota class kita definiskan secara langsung di dalam class. Keuntungan bentuk semacam ini adalah : semua kode terkumpul dalam class, sehingga mempercepat pengeksekusian, namun memiliki kelemahan karena kode program yang dibangkitkan menjadi besar, terutama apabila banyak fungsi anggota yang didefinisikan dan banyak objek yang terlibat. Bentuk yang kedua, kita definisikan fungsi class di luar class seperti di bawah ini. Umumnya, bentuk ke dua ini paling banyak digunakan, terutama apabila fungsi class sangat panjang dan kompleks. Dengan cara pertama ataupun kedua, akan didapatkan keluaran yang sama.
#include <iostream.h> #include <conio.h> #include <stdio.h> class atribut { private: char nama[20]; char alamat[30]; float ipk; public:

Page 50 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)


void isi_data(); void tampil(); }; int main () { clrscr(); atribut mhs; mhs.isi_data(); clrscr(); mhs.tampil(); getch(); } void atribut::isi_data() { cout<<"nama = "; gets(nama); cout<<"alamat = "; gets(alamat); cout<<"ipk = "; cin>>ipk; } void atribut::tampil() { cout<<"nama anda adalah= "<<nama<<endl; cout<<"anda beralamat di= "<<alamat<<endl; cout<<"IPK anda ternyata= "<<ipk<<endl; }

Catatan : kata void pada fungsi anggota berarti tidak ada nilai baliknya (void). Pelajari kembali : function.

Page 51 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

BAB 9 PENDAHULUAN VISUAL C++


Pemrograman berbasis windows bukanlah pemrograman yang sulit dipelajari, ketimbang manfaat yang bisa diperoleh darinya. Satu-satunya hal yang perlu dikuasai pada pemrograman Visual C++ 2005 --sebelum anda benar-benar memahami dan menguasai pemrograman windows-- adalah penguasaan terhadap bahasa C++, terutama pada konsep Pemrograman Berorientasi Objek (OOP, Object-Oriented Language), mengingat salah satu faktor dikembangkannya C++ dari bahasa pendahulunya, yaitu bahasa C adalah dalam hal pemrograman dari sudut pandang berorientasi objek, dan bukan lagi pemrograman yang bersifat terstruktur (structured language). Melalui modul ini, kompetensi yang diharapkan dapat dikuasai oleh mahasiswa adalah : Pemahaman konsep.NET Framework, unsur-unsurnya, serta manfaat yang diperoleh dari penggunaan .NET Framework Membuat projek, dan mencari solusi suatu permasalahan menggunakan Visual C++ Menggunakan program console Membuat dan mengedit program Melakukan kompilasi (compile), link, dan mengeksekusi program konsol C++ Membuat dan mengeksekusi dasar pemrograman windows
9.1 .NET FRAMEWORK

Salah satu konsep utama pada Visual C++ 2005 adalah penggunaan .NET Framework. .NET Framework terdiri dari dua elemen : 1. Common Language Runtime (CLR), dimana aplikasi kode program anda dieksekusi 2. Class Library .NET Framework, yang menyediakan dukungan fungsional pada saat kode dalam CLR dieksekusi, tidak peduli kode program ditulis dalam bahasa apa. Oleh karenanya, pemrograman .NET yang ditulis dalam bahasa C++, C#, atau bahasa lainnya yang support terhadap.NET Framework, semuanya menggunakan library.NET yang sama Anda dapat menuliskan 2 tipe kode C++ pada Visual C++ 2005, yaitu : 1. Native C++. Yaitu C++ yang telah ditentukan/distandarkan oleh ISO/ANSI. Salah satu cara membangun aplikasi C++ berbasis GUI (Graphical User Interface) dengan native C++ adalah menggunakan Microsoft Foundation Classes (MFC). MFC meng-enkapsulasi Windows Application Programming Interface (API) pada pembuatan dan kontrol GUInya, sehingga memudahkan program dibuat. Namun demikian, Windows API tidak mendukung penggunaan pemrograman berorientasi objek (yang telah menjadi tren pemrograman saat ini) 2. Program CLR, atau program C++/CLI. Program ini mengacu pada manfaat yang diberikan dari penggunaan .NET Framework. Kemampuan ini menjadikan kode C++ terintegrasi dengan sekitar 20 kode program lainnya yang menggunakan .NET Framework. Untuk aplikasi windows dengan target CLR, digunakan Form Windows sebagai basis GUI yang disediakan oleh library .NET Framework. Dengan menggunakan Form Window, anda dapat menggunakan komponen-komponen standar yang telah disediakan (kode program komponen-komponen ini akan diciptakan secara otomatis oleh Page 52 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Visual C++) dan menambahkan kode program sesuai dengan kebutuhan. Kode C++ yang dieksekusi dengan CLR juga disebut sebagai Managed C++, karena data dan kode program dikelola/diatur oleh CLR. Pada program yang mengikutsertakan CLR, pembebasan memori yang telah dialokasikan secara dinamis untuk menyimpan data diperlakukan secara otomatis, sehingga menghilangkan kesalahan-kesalahan umum (common source of error ) pada aplikasi C++. Kode C++ yang dieksekusi di luar CLR dinamakan oleh Microsoft sebagai unmanaged C++, sebab CLR tidak diikutsertakan.
9.2 CLR

CLR adalah lingkungan tempat eksekusi program. Jenis kode program yang ditulis dapat bervariasi, termasuk didalamnya : Visual Basic, C#, dan C++. Spesifikasi CLR telah dimasukkan dalam standar European Computer Manufacturers (ECMA) tentang Common Language Infrastructure (CLI) sehingga C++ dalam CLR ditulis sebagai C++/CLI, yaitu C++ untuk CLI (Common Language Infrastructure), CLI merupakan virtual machine yang memungkinkan aplikasi yang ditulis dalam level bahasa pemrograman yang berbeda dapat dieksekusi dalam lingkungan lain tanpa harus mengubah kode sumber (original source code) dan atau mengkompilasinya lagi.

Gambar 9.1. Beberapa pilihan dalam membangun aplikasi C++

Untuk menciptakan aplikasi berbasis windows, anda harus memahami 2 aspek dasar : a. Dibutuhkan kode untuk menciptakan Graphical User Interface (GUI). GUI berfungsi sebagai interaksi antara program dengan user. b. Dibutuhkan kode untuk memproses interaksi tersebut, yaitu fungsi-fungsi yang dijalankan oleh aplikasi yang dibuat. Visual C++ 2005 menyediakan kemudahan-kemudahan 2 aspek di atas. Anda dapat menciptakan program dalam GUI tanpa harus menuliskan kode GUI-nya (kode GUI diciptakan secara otomatis oleh Visual C++). Namun demikian, anda perlu memahami bagaimana kode tersebut diciptakan, oleh karena dalam langkah selanjutnya, anda perlu memperluas/memodifikasinya agar menjalankan fungsi sesuai dengan yang anda perintahkan.
9.3 IDE (INTEGRATED DEVELOPMENT ENVIRONMENt)

IDE (Integrated Development Environment) pada Visual C++ 2005 meruapakan lingkungan terintegrasi tempat anda membangun/menciptakan program, mengkompilasi, linking,

Page 53 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) dan melakukan testing program. Terdapat beberapa komponen dalam lingkungan IDE Visual C++ 2005, yaitu : Editor Compiler Linker Library Komponen-komponen ini merupakan tool dasar yang digunakan dalam menulis dan mengeksekusi kode program C++. Adapun fungsi masing-masing komponen tersebut antara lain :

1. Editor
Editor merupakan tempat/lingkungan anda membuat dan mengedit source code C++. Lingkungan editor disertai dengan beberapa fasiltas yang memudahkan anda dalam menulis dan mengedit kode program C++, yaitu menu Cut dan Paste, juga warna yang berbeda-beda untuk memudahkan dalam membedakan elemen-elemen program yang berbeda. editor akan mengenali secara otomatis sintaks dan perintah dalam C++ dan menandai mereka dengan warna tertentu. Hal ini memudahkan dalam pembacaan program, dan pengecekan kesalahan 2. Compiler Compiler akan mengubah kode program menjadi kode objek, serta mendeteksi dan memberikan laporan apabila terjadi kesalahan/error pada saat kompilasi. Kesalahan program dapat dibedakan menjadi 2 jenis : kesalahan pemakaian sintaks/statement dan kesalahan logika/struktural. Kode objek hasil dari kompilasi disimpan dalam file-file objek, dengan ekstensi .obj. 3. Linker Linker akan menggabungkan modul-modul yang dihasilkan dari kompilasi kode program, menambahkan modul tambahan yang diperlukan dari library program C++, dan menyatukannya menjadi bentuk file yang dapat dieksekusi (executable). Linker juga dapat mendeteksi dan melaporkan kesalahan, jika misalnya di dalam kode program terdapat kesalahan atau penggunaan komponen library yang tidak dikenal. 4. Library Library adalah kumpulan dari rutin-rutin yang mendukung serta memperluas fungsi program C++ dengan kode unit yang dapat disertakan dalam program. Contoh dari library dalam C++ adalah library .NET Framework. 9.5 MEMULAI VISUAL C++ 2005 Apabila Visual C++ 2005 sudah terinstal di komputer, anda dapat membukanya lewat menu : Start<<Program<<Visual C++ 2005 Express Edition<<Microsoft Visual C++ 2005 Express Edition. Maka akan tampil tampilan Visual C++ 2005 dalam lingkungan Pengembangan Terintegrasi/IDE.

Page 54 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.2 Lingkungan IDE Visual C++ 2005

Berikut adalah penjelasan lingkungan IDE Visual C++ 2005 : Jendela yang berada di sebelah kiri disebut sebagai Solution Explorer window. Di jendela ini anda dapat menjalankan navigasi file-file program dan menampilkan isi/content-nya pada jendela Editor, serta membuat file program baru. Jendela ini memiliki tiga tab : Class View, Resource View, dan Property Manager yang dapat anda pilih untuk ditampilkan. Jendela di kanan atas dengan judul tab : Start Page disebut Editor window. Di jendela ini anda dapat membuat dan memodifikasi kode program serta komponen lainnya dari aplikasi yang anda buat. Jendela di bagian bawah merupakan Output window. Jendela ini menampilkan pesan yang dihasilkan dari proses kompilasi (compiling) dan linking program. Menu-menu Visual C++ 2005 yang berada di atas disebut sebagai toolbar. Anda dapat mengatur tampilan toolbar ini dengan cara mengklik kanan pada toolbar, sehingga tampil daftar menu popup sebagai berikut :

Gambar 1.3 menu pop-up tampilan toolbar

Page 55 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Anda dapat mengaktifkan menu toolbar dengan cara mengklik menu yang bersangkutan. Pada gambar di atas, terdapat 2 menu yang aktif, yaitu : Debug, dan Standard (menu aktif ditandai dengan adanya tanda chek/centang). Apabila anda ingin me-nonaktifkan menu yang telah aktif, cukup dengan mengklik menu aktif tersebut, sehingga tanda chek akan hilang.
9.6 MEMBUAT PROJECT DAN SOLUTION

Langkah pertama anda membuat program dalam Visual C++ adalah membuat sebuah projek baru. Projek berisi file-file yang diperlukan dalam membangun aplikasi program. Program dapat berupa program berbasis window atau program jenis lainnya. Projek biasanya terdiri dari satu atau lebih file sumber (source file) yang berisi kode program serta file yang berisi data tambahan lainnya yang diperlukan. Semua file dalam satu projek harus disimpan dalam folder Projek, sedangkan informasi detail dari projek disimpan dalam file XML dengan ekstensi .vcproj yang juga berada dalam folder projek. Folder projek juga berisi folder-folder yang digunakan untuk menyimpan keluaran/output dari kompilasi dan linking projek. Solution/Solusi adalah mekanisme menggabungkan semua resources dan program yang menyusun aplikasi. Adakalanya aplikasi yang dibuat tersusun dari beberapa bagian program yang masing-masing program dapat dibuat sebagai sebuah projek tersendiri. Oleh karenanya, Solusi meruapakan sebuah folder dimana informasi tentang satu atau beberapa projek tersimpan di dalamnya. Informasi tentang projek dalam folder Solution disimpan dalam 2 ekstensi, yaitu ekstensi .sln dan .suo. Pada saat anda menciptakan sebuah projek, sebuah solusi juga akan dibuat secara otomatis, terkecuali anda menambahkan projek yang anda buat pada solusi yang sudah ada.
9.6.1 MEMBUAT PROJEK BARU

Untuk membuat projek baru, pilih menu : File>>New>>Project, atau anda tekan Ctrl+Shift+N. maka akan muncul box dialog New Project :

Gambar 9.4 Application wizard dari pilihan New Project

Page 56 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Panel di sebelah kiri menampilkan tipe projek yang dapat anda buat. Terdapat 3 pilihan tipe projek, yaitu : 1. CLR 2. Win32 3. General Untuk saat ini, pilih tipe projek Win32. Panel di sebelah kanan menampilkan daftar template yang tersedia dari pilihan projek yang telah anda pilih di panel sebelah kiri. Template yang anda pilih akan digunakan oleh aplikasi untuk menciptakan file yang membangun sebuah projek. Dalam hal ini, untuk tipe projek Win32 hanya terdapat sebuah template, yaitu Win32 Console Application. Jangan lupa untuk memberi nama file projek anda,dan juga file Solutionnya. Misalkan bernama Projek1. Jangan lupa untuk mengelola file projek anda ke dalam folder khusus, misalkan anda tempatkan di drive D dengan nama folder : @MyProjek. Setelah anda mengklik OK, maka akan muncul box dialog Win32 Application Wizard seperti berikut :

Gambar 9.5 Win32 Application wizard

Jika anda langsung mengklik tombol Finish, maka akan semua file projek akan diciptakan. Dalam hal ini, pilih terlebih dahulu menu Applications Settings pada panel sebelah kiri sehingga muncul halaman pada gambar 9.6. Di sini anda dapat memilih opsi yang ingin anda terapkan pada projek yang anda buat. Untuk saat ini, anda bisa memilih Empty project oleh karena anda ingin belajar bahasa C++/menggunakan Visual C++ untuk pertama kali. Akan tetapi, kali ini biarkan saja menu tersebut, dan langsung anda klik tombol finish. Application wizard kemudian akan menciptakan projek dengan semua file yang dibutuhkan.

Page 57 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.6 Application Settings Win32 Application

Gambar 9.7 Tampilan Project baru yang telah dibuat

Jika anda membuka windows explorer di folder projek yang anda buat, akan terdapat 3 file Solution, dan sebuah folder Projek. Nama Projek dan nama Solution umumnya sama, kecuali anda memberi nama berbeda. Terdapat 3 file projek (secara default akan tertampil dua file, tetapi anda dapat mengaktifkan menu : Show Hidden Files and Folders dari menu : Tools<<Folder Option, kemudian pilih tab : View), yaitu : Sebuah file dengan ekstensi .sln yang berfungsi merekam informasi tentang projek di dalam solusi. Sebuah file dengan ekstensi .suo yang berisi informasi opsi-opsi yang dipilih user. Sebuah file dengan ekstensi .ncb yang merekam data Intellisense bagi solution. Intellisense merupakan fasilitas yang menyediakan auto-completion dan prompting bagi jendela Editor.

Page 58 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.8. Tiga buah file solution pada folder projek1

Apabila anda browse ke folder Projek, maka didalamnya terdapat enam file, termasuk file bernama ReadMe.txt yang berisi rangkuman content file-file yang menyusun projek. Ke enam file projek ini juga akan tertampil pada jendela solution explorer. Sedangkan pada solution explorer visual C++ 2005 akan tampil :Header files, Resource Files, dan Source Files sebagaimana diperlihatkan dalam gambar.

Gambar 9.9. Enam buah file projek pada folder projek1

Gambar 9.10. Header files, Resource Files, dan Source Files pada jendela solution explorer

Adapun masing-masing tab pada solution explorer adalah : 1. Tab Solution. Pada tab ini akan ditampilkan isi file : header, resource, dan source. 2. Tab Class View menampilkan class-class dan juga content-nya pada projek yang anda buat. Saat ini anda tidak memiliki satu class-pun, sehingga kosong. Penggunaan class ini merupakan salah satu ciri khas dari Pemrograman Berorientasi Objek Page 59 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) 3. Tab Property Manager menampilkan properties yang telah diatur untuk the Debug dan rilis versi dari projek anda. Melalui tab ini anda dapat mengubah property dari projek yang anda buat dengan cara klik kanan, pilih properties. Atau dengan menekan tombol Alt+F7 untuk menampilkan dialog box properties. Tab ini aktif apabila anda telah membuka sebuah file projek.
9.6.2 MODIFIKASI KODE PROGRAM

Pada saat anda membuat sebuah projek baru, pada jendela editor seharusnya tertampil kode program dari projek1.cpp (file ini termasuk ke dalam Resource file). Apabila belum tampil, terlihat, maka anda dapat men-dobel klik pada file projek1.cpp pada folder Resource file yang berasa di jendela Solution explorer.

Gambar 9.11. Jendela editor projek1.cpp

anda dapat menampilkan kode editor memiliki line number seperti berikut :

Gambar 9.12. Jendela editor dengan line number.

Caranya adalah sebagai berikut : pilih menu Tools << Options dari menu utama. Pilih menu : Text Editor, sub menu : All Language, pilih General, dan beri tanda centang pada Line number seperti gambar berikut :

Page 60 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.13. Pengaturan tampilan editor kode dengan line number.

Keuntungan dari tampilnya line number pada jendela editor adalah untuk memudahkan programmer dalam membuat dan mengedit kode program. Berikut adalah penjelasan dari kode program projek1.cpp sebagaimana diperlihatkan pada Gambar 1.12.

Baris 1-2 diawali dengan tanda //, yang merupakan komentar dari program yang bersangkutan, dan tidak akan dieksekusi oleh program. Komentar ini umumnya selalu ada dalam program, untuk memudahkan programmer mengenali kembali baris-baris program yang telah dibuat, ataupun hanya sekedar informasi tentang program tersebut (pembuat program, hari dan tanggal penciptaan program, dan seterusnya). Baris ke-4 : #include stdafx.h merupakan pengarah praprosesor ke file header bernama stdafx.h Baris ke-7 : int _tmain(int argc, _TCHAR* argv[]) merupakan sebuah fungsi, awal kode yang akan dieksekusi. C++ dapat tersusun dari satu atau lebih fungsi. Anda dapat menuliskan kode program anda diantara tanda kurung kurawal buka dan tutup. Pada kode program saat ini, hanya terdapat satu statement, yaitu return 0. perlu anda biasakan untuk menulis tanda titik koma setelah statement, terkecuali statement-statement yang tidak membutuhkan titik koma.

Pada projek pertama ini, anda akan membuat program yang menampilkan tulisan :Halo. Mencoba Visual C++ . Tambahkan baris/kode program sehingga seperti di bawah ini :
// Projek1.cpp:Defines entry point for the console application. // #include "stdafx.h" #include<iostream> int _tmain(int argc, _TCHAR* argv[]) { cout<<"Halo. Mencoba Visual C++\n"; return 0; }

Selanjutnya, anda harus membangun program anda menjadi sebuah aplikasi. Pilih menu Build<<Build Solution, atau tekan tombol F7. Jendela output akan menampilkan pesan dari kode

Page 61 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) program yang dibangun. Apabila tidak ada kesalahan, maka di jendela output akan tertampil pesan sebagai berikut :
Projek1.cpp Compiling manifest to resources... Linking... Embedding manifest... Build log was saved at "file://d:\@MyProjek\Projek1\Projek1\Debug\BuildLog.htm" Projek1 - 0 error(s), 0 warning(s) ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

setelah anda membangun sebuah projek, maka di folder projek1 akan dibuat sebuah folder baru bernama Debug, yang berisi 3 file output dari perintah build yang anda jalankan. Salah satu file yang tercipta adalah file dengan ekstensi .exe (executable). Berikut adalah penjelasan dari ekstensi file yang digunakan dalam Visual C++ 2005.
Tabel 9.1 Deskripsi file yang dibuat setelah perintah build program dijalankan Ekstensi File .exe .obj Penjelasan File executable, yang akan didapatkan apabila tidak terdapat kesalahan saat kompilasi dan linking program Kompiler menciptakan file objek ini, yang berisi kode mesin dari file kode program yang dibuat. File .obj bersama-sama dengan file-file dari library membentuk file ekstensi .exe File ini digunakan oleh Linker pada saat anda me-rebuikd projek dengan cara menghubungkan file objek yang dihasilkan dari kode program yang dimodifikasi dengan file .exe yang telah ada, sehingga tidak perlu lagi me-re-link semua file pada saat kode program berubah/dimodifikasi File ini merupakan file header pre-compiled yang berfungsi mengurangi waktu yang dibutuhkan untuk me-rebuild program. File ini berisi informasi debugging yang digunakan pada saat eksekusi program pada mode debug. File ini berisi informasi yang digunakan saat rebuild solution.

.ilk

.pch .pdb .idb

Setelah anda membangun program lewat menu buil, anda dapat mengeksekusi program lewat menu : CTRL+F5. file yang anda jalankan seharusnya memiliki keluaran sebagai berikut :

Gambar 9.14. Pengaturan tampilan editor kode dengan line number. 9.6.3 VERSI DEBUG DAN VERSI RILIS

Pada saat anda membuat sebuah projek, Visual C++ 2005 menyediakan 2 jenis versi aplikasi, yaitu versi Debug dan versi Release. Pada versi debug, anda dapat melakukan edit/modifikasi kode program yang salah apabila djumpai kesalahan. Pada versi release, tidak

Page 62 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) terdapat informasi debug, namun memiliki opsi optimisasi kode bagi compiler untuk menciptakan file executable secara efisien. Anda dapat mengatur 2 jenis versi aplikasi ini lewat menu : Build << Configuration Manager, sehingga tampil dialog box seperti ditunjukkan pada gambar 1.1.5.
9.6.4 MENYIMPAN DAN MENUTUP FILE

Untuk menyimpan program yang telah dibuat, pilih menu : File<<Save projek1 atau menekan Ctrl+S. Atau bisa juga dengan pilhan : File<<Save projek1 As, apabila anda ingin mengubah nama projek yang telah anda buat.

Gambar 9.15. Dua versi aplikasi : versi Debug dan versi Release 9.7 MEMBUAT PROJEK KONSOL CLR

Untuk membuat projek baru, yaitu Projek konsol CLR, pilih menu : File<<New<<Projek, atau tekan tombol CTRL+SHIFT+N. Pada dialog box new projek, pilih Project Types : CLR, dengan template : CLR Console Application. Beri nama projek anda dengan projek2. Nama solution secara otomatis akan sama dengan nama projek, kecuali anda membuat nama yang berbeda untuk solusi-nya. Apabila anda periksa di jendela solution explorer akan terdapat bebarapa file baru. Pada folder Resource Files terdapat 2 file, yaitu : appp.ico yang berfungsi menyimpan icon aplikasi yang ditampilkan saat program di-minimize, dan file app.rc yang merekan resource aplikasi, sebagaimana ditunjukkan pada gambar :9.16 Pada folder Source Files terdapat file AssemblyInfo.cpp. Setiap program CLR terdiri dari satu atau lebih assembly, yang merupakan kumpulan kode dan resources yang menyusun unit fungsional program. CLR juga meyimpan informasi versi kode program, tipe data yang digunakan, serta informasi apakah isi dari file assembly dapat diakses oleh assembly yang lain. Di jendela editor, akan tampak kode program sebagaimana ditunjukkan dalam gambar 9.17.

Page 63 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.16. Jendela Solution Expolrer dari projek tipe aplikasi konsol CLR

Gambar 9.17. Kode Program Visual C++

Apabila dibandingkan dengan aplikasi win32, terdapat baris program : using namespace System penggunaan fasilitas library.NET selalu menggunakan statement : namespace, dan semua standard yang digunakan untuk membangun program tersimpan di System. Penggunaan namespace ini berfungsi untuk menghindari pemakaian nama (data, variable, atau blok kode) yang sama. Contoh : sebuah nama : data1 pada library merupakan : system::data1, sehingga apabila nama data1 ini digunakan di dalam blok kode program, maka anda dapat merujuk data1 yang berada pada library sebagai system::data1. Di kode editor juga terdapat perintah :
Console::WriteLine(L"Hello World");

Tanda kolon :: disebut sebagai scope resolution operator. Perintah ini akan menampilkan tulisan Hello World , identik dengan :
cout<<"Halo. Program dibuat menggunakan Visual C++\n";

Pada native C++. Apabila dijalankan (tekan CTRL+F5), maka tampilan program adalah sebagai berikut :

Page 64 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 1.16. Tampilan ouput program Projek2 9.8 MEMBANGUN APLIKASI WINDOWS

Pada latihan ketiga ini, anda akan membuat aplikasi windows menggunakan Windows Form application. Tutuplah projek2 yang telah anda buat dengan pilihan menu : File<<Close Solution. Kemudian buatlah projek baru bernama projek3, dengan tipe projek : Windows Form Application. Beri nama file projek dan solution dengan nama projek3.

Gambar 9.17. Membuat projek baru dengan template : Windows Form Application

Di bagian solution explorer, anda akan menjumpai file-file projek3 sebagimana ditunjukkan pada gambar.

Gambar 9.18. jendela Solution Explorer projek bertipe Windows Form Application

Apabila anda periksa folder projek3, maka akan dijumpai total 15 files yang tercipta, termasuk 3 file solution.

Page 65 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.19. File-file yang tercipta pada folder Projek3

Pada kode editor, anda akan menjumpai tampilan sebagai berikut :

Gambar 9.20. jendela Kode Editor

Jendela kode editor akan menampilkan jendela untuk membangun aplikasi berbasis window. dan bukan kode program. Hal ini dikarenakan trend bahasa pemrograman yang engarah ke bentuk visual, dibanding membuat program hanya berbasis text saja. Pada jendela kode editor ini, anda dapat meletakkan komponen-komponen GUI dengan cara drag and place. Visual C++ secara otomatis akan membangkitkan kode bagi komponen GUI yang dipergunakan/dipasang pada jendela editor. Jika anda menekan tombol Ctrl+Alt+X atau pilih View <<Toolbox, maka akan ditampilkan daftar lengkap komponen GUI yang dapat anda letakkan pada program yang sedang anda buat. Jendela Toolbox menampilkan seluruh komponen GUI Visual C++ 2005. Anda dapat memilih komponen GUI yang akan anda taruh pada jendela aplikasi di jendela kode editor dengan cara mengklik komponen tersbut, dan mengklik pada jendela kode editor (pada posisi yang anda sukai). Anda juga dapat mengubah letak dan ukuran tombol dengan mengarahkan mouse pada pinggiran tombol, sehingga membentuk tanda palang dengan ujung-ujungnya berbentuk ujung anak panah, kemudian anda seret tombol tersebut ke tempat yang anda sukai. Untuk mengubah ukuran tombol, cukup anda klik tombol tersebut, sehinga muncul kotak putih kecil di pinggir tombol, anda dapat memperbesarnya dengan menahan klik dan menyeretnya sesuai dengan ukuran yang sesuai.

Page 66 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.21. Menu Toolbox komponen GUI

Gambar 9.22. Tanda kotak kecil untuk mengubah ukuran tombol

untuk merubah nama tombol, anda harus mengubahnya lewat Property dari tombol yang bersangkutan. Caranya : Klik kanan pada tombol, pilih Properties, sehingga tampil menu property sbb :

Page 67 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.23. Mengubah nama tombol dengan menu property

pada bagian text, tulis Start, dan tekan enter. Maka tulisan pada tombol akan berubah menjadi start. Tambahkan satu lagi tombol bertuliskan Stop dengan cara yang sama, sehingga didapatkan program aplikasi windows yang anda buat sbb :

Gambar 9.24. Ouput program

Review Kode Program C++


Untuk mengenal elemen-elemen program dalam C++, Buatlah projek baru dengan nama : projek2_1 dengan memilih menu : File < New < Project atau menekan tombol CTRL+SHIFT+N. Pilih tipe projek : Win32, dengan template : Win32 Console Application. Setelah anda menekan tombol OK, maka akan mucul dialog box Win32 Application Wizard. Pilih menu Aplication Settings (berada di bawah menu overview sehingga tampil sebagai berikut :

Page 68 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF)

Gambar 9.25. Win32 application Wizard

Secara default, akan terpilih console application pada application type, dan precompiled header pada additional option. Untuk memahami elemen-elemen program C++, pilih Empty Projek, dan klik Finish. Jendela solution explorer pada visual C++ 2005 akan tampil sebagai berikut :

Gambar 9.25. jendela Solution Explorer projek2_1

tidak ada satu filepun pada folder : Header Files, Resource Files, dan folder Source Files. Anda akan menambahkan file baru pada folder Source Files. Caranya : klik kanan pada folder Sources Files, pilih Add < New Item, maka akan tampil :

Gambar 2.3. Pilihan menu Add Item

Page 69 of 70

0RGXO 3HPURJUDPDQ .RPSXWHU (ARF) Pastikan anda memilih template C++ File (.cpp), selanjutnya beri nama item baru dengan projek2_01. file yang dibuat secara otomatis akan berkestensi .cpp. file projek akan memiliki ekstensi .vcproj. Selanjutnya, tuliskan kode program berikut dalam file projek2_01.cpp
// projek2_01.cpp // Contoh Program Sederhana #include <iostream> using std::cout; using std::endl; int main() { float keliling,luas; // deklarasi variabel tipe integer int jari2; // deklarasi variabel tipe float jari2=10; luas=3.14*jari2*jari2; // menghitung luas lingkaran keliling=2*3.14*jari2; // menghitung keliling lingkaran cout << endl; // Start output on a new line cout << "luas lingkaran = " <<luas<< endl; cout << "keliling lingkaran = " <<keliling<<endl; cout << endl; // Output a new line character return 0; // Exit the program }

Page 70 of 70

You might also like