Escolar Documentos
Profissional Documentos
Cultura Documentos
: :
Bahasa Pemrograman C++ Builder Achmad Zulkifli 0611 3031 0145 0611 3031 0157
BAB I PENDAHULUAN
Pemrograman visual menerapkan konsep event-driven yaitu suatu program yang pengeksekusiannya didasarkan atas kejadian (event) tertentu. Kejadian-kejadian itu sendiri, mempunyai kode program sendiri yang disimpan dalam sebuah fungsi. Pada dasarnya, konsep pemrograman visual ini sama dengan pemrograman procedural, yaitu pemrograman yang memiliki input, proses dan output. Namun, ada satu penambahan yang berbeda, yaitu konsep pemilihan untuk mengeksekusi proses programnya. Konsep inilah yang digunakan untuk menjalankan eventnya. C++ Builder, merupakan bahasa pemrograman yang berkemampuan luas dan sangat canggih yang didukung oleh object-object yang sangat kuat, canggih dan lengkap. Hal itu dimaksudkan agar pengguna dapat lebih mudah dalam merancang, membuat dan menyelesaikan aplikasi yang diinginkan. I.1 Pengertian Pemrograman Berorientasi Objek (Object Oriented Programming) Object Oriented Programming (OOP) adalah suatu metode dalam pembuatan program, dengan tujuan untuk menyelesaikan kompleksnya berbagai masalah program yang terus meningkat. Ada dua bagian penting dalam Object Oriented Programming yaitu properties dan event. Properties memiliki nama dan nilai, sementara event hanya memiliki nama dan biasanya berhubungan dengan method, behavior, function dan action. Dalam melakukan pemecahan masalah Object Oriented Programming tidak memandang bagaimana cara memecahkan suatu masalah secara terstruktur, melainakn bagaimana suatu masalah itu dapat diselesaikan dengan menentukan objek-objek apa saja yang dapat memecahkan masalah tersebut. I.2 Konsep Dasar Pemrograman Berorientasi Objek Konsep dasar Object Oriented Programming lebih menekankan pada konsep-konsep berikut ini: I.2.1 Kelas Merupakan kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Misalnya kelas rumah yang menunjuk pada
berbagai macam objek yang lebih umum dari rumah itu sendiri (gambaran secara umum).
I.2.2 Objek Merupakan dasar dari sebuah modul dan struktur dalam sebuah program komputer yang berorientasi objek. Misalnya dari kelas rumah tadi yang dapat kita definisikan secara lebih spesifik dan mendetail, sesuai dengan ciri fisik yang nyata dari objek tersebut. I.2.3 Abstraksi Merupakan kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya atau kemampuan untuk mefokus pada inti. Setiap objek dalam sistem melayani sebagai model dari pelaku abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem. I.2.4 Enkapsulasi Merupakan sebuah metode yang memastikan pengguna tidak dapat mengubah sebuah objek secara leluasa, hanya metode dalam objek tersebut yang diizinkan untuk mengakses keadaannya. Dalam kata lain mengontrol hak akses pengguna dalam melakukan perubahan pada suatu objek. Karena antara objek yang satu dengan yang lainnya itu saling berinteraksi.
Sebuah fungsi pada C++ pada umumnya berisi sejumlah pernyataan C++ yang dikemas dalam sebuah nama, dan nama ini dapat dipanggil beberapa kali dalam suatu kode C++. Dalam suatu program sering kali lebih mudah kalau dipecah menjadi beberapa fungsi yang masing-masing fungsi melakukan satu/tugas tertentu saja. Fungsi yang telah dibuat 4
dapat dipakai berulang-ulang bahkan oleh programmer lain yang tidak mengerti cara kerjanya tapi tahu cara pakainya saja, jadi detil detil yang rumit, yang merupakan bagian operasi dari program, dapat disembunyikan (prinsip ini dikenal dengan information hiding). Dengan dipecah menjadi beberapa fungsi maka pembuatan program menjadi lebih mudah karena kesalahan-kesalahan yang terjadi terlokalisir dalam masing-masing fungsi. Juga organisasi program menjadi lebih baik karena tugas dari fungsi utama main() menjadi sangat sederhana yaitu melakukan pemanggilan dari fungsi-fungsi ini mengikuti urutan yang dikehendaki. Masing-masing fungsi melakukan tugasnya, setelah selesai lalu kembali ke main(). Pemecahan program menjadi fungsi-fungsi ini dikenal sebagai modular programming atau pemrograman tersetruktur. Fungsi-fungsi dalam C++ pada umumnya mempunyai sifat-sifat sebagai berikut: Masing-masing fungsi mempunyai nama, aturan penamaan fungsi sama seperti penamaan variabel. Nama fungsi ini diikuti sepasang tanda kurung yang oleh C++ dipakai untuk membedakan fungsi dengan variabel. Dalam tanda kurung ini dapat berisi argumen-argumen fungsi tersebut. Jika fungsi ini tidak memerlukan argumen maka dalam tanda kurung ini tidak berisi apa-apa. Jika fungsi memerlukan argumen maka argumen-argumennya dapat berupa variabel-variabel dari berbagai tipe, antara argumen yang satu dengan argumen yang lain dipisahkan dengan koma. Badan dari masing-masing fungsi, mulai segera setelah tanda kurung tutup dari nama fungsi, harus dimulai dengan tanda kurung { dan diakhiri dengan tanda kurung }. Badan dari fungsi ini berisi deklarasi variabel-variabel dan penyataan-pernyataan. Fungsi secara umum akan dibagi menjadi dua yaitu fungsi yang tidak memiliki keluaran formal (void function) dan fungsi yang memiliki keluaran formal. Void function ini pengertiannya sama dengan prosedur di bahasa pemrograman pascal dan clipper. C++ memperbolehkan pemanggilan fungsi oleh kode program yang ditulis sebelum fungsi yang dipanggil di buat. Untuk pemanggilan fungsi seperti ini maka fungsi tersebut harus memiliki prototipe. Prototipe diletakan di bagian awal program sehingga walaupun fungsi tersebut belum ditulis tetapi namanya sudah dikenal terlebih dahulu. Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan terlebih dahulu. Pendeklarasiannya yaitu : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement
statement } 2.1 HAL-HAL YANG PERLU DIPERHATIKAN DALAM PENGGUNAAN FUNGSI : 1. 2. 3. 4. 5. Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi dengan Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya. nilai keluaran bertipe integer. pendefinisian penentu tipe fungsi. dalam tipe void pernyataan return.
Contoh fungsi tanpa keluaran untuk mengkuadratkan bilangan-bilangan bulat adalah sebagai berikut: void hitung_pangkat3(int n) { int pangkat3= 0; kuadrat = n * n; cout << "pangkat 3 dari " << n << " adalah "<< pangkat3<< "\n"; return; } Dalam C++, argumen-argumen dari fungsi dapat mempunyai harga default. Jika pada saat fungsi yang mempunyai default argumen ini dipanggil namun argumennya dihilangkan maka kompiler otomatis akan memakai nilai default dari argumen yang dihilangkan tersebut. Jika pada saat dipanggil argumennya diisi maka isi ini yang dipakai. Default argumen ini membuat program menjadi lebih fleksibel, argumen-argumen yang nilai defaultnya tidak perlu diubah tidak perlu diisi namun ada aturan yang perlu diperhatikan.
Bila kita menghilangkan argumen yang pertama maka argumen-argumen selanjutnya juga harus dihilangkan. Kita dapat menghilangkan argumen yang kedua dan mengisi argumen yang pertama. Aturan ini tidak terikat padajumlah argumen. Secara umum aturannya adalah kalau kita menghilangkan suatu argumen maka kita harus menghilangkan semua argumen dikanannya.
2.2
Struktur penulisan bahasa C dapat dilihat dari contoh berikut : // komentar #include #include void main () { cout << "Program Pertama"; cout << "Selamat Belajar C++"; getch(); }
Program di atas, misalnya dapat disimpan dengan nama latih1.cpp. Cara untuk menyimpan dan mengkompile program berbeda-beda, tergantung kompiler yang dipakai. Ketika di-run, maka di layar akan muncul sebuah tulisan Selamat Belajar C++. // Komentar merupakan sebuah baris komentar. Semua baris, yang ditandai dengan dua buah tanda slash (//), akan dianggap sebagai baris komentar dan tidak akan berpengaruh pada hasil. Biasanya, baris komentar dipakai oleh programmer untuk memberikan penjelasan tentang program. Baris komentar dalam C++, selain ditandai dengan (//) juga dapat ditandai dengan (/*.*/) ini digunakan apabila komentar tersebut lebih dari satu baris #include pernyataan yang diawali dengan tanda (#) merupakan pernyataan untuk menyertakan preprocessor. Pernyataan ini bukan untuk dieksekusi. #include berarti memerintahkan kompiler untuk menyertakan file header iostream.h. Dalam file header ini, terdapat beberapa fungsi standar yang dipakai dalam proses input dan output. Seperti misalnya perintah cout yang dipakai dalam program utama.
void main () baris ini menandai dimulainya kompiler akan mengeksekusi program. Pernyataan main sebagai penanda program utama. Adalah suatu keharusan, dimana sebuah program yang ditulis dalam bahasa C++memiliki sebuah main. main diikuti oleh sebuah tanda kurung () karena main merupakan sebuah fungsi. Dalam bahasa C++ sebuah fungsi harus diikuti dengan tanda (), yang nantinya dapat berisi
argumen. Dan sintak formalnya, sebuah fungsi dimulai dengan tanda {}, seperti dalam contoh program.
cout << "Program Pertama"; cout << "Selamat Belajar C++"; perintah ini merupakan hal yang akan dieksekusi oleh compiler dan merupakan perintah yang akan dikerjakan. cout termasuk dalam file iostream. cout merupakan perintah untuk menampilkan ke layer. Perlu diingat, bahwa setiap pernyataan dalam C++ harus diakhiri dengan tanda semicolon (;) untuk memisahkan antara pernyataan satu dengan pernyataan lainnya. getch(); digunakan untuk meminta inputtan dari keyboard. return 0; pernyataan return akan menyebabkan fungsi main() menghentikan program dan mengembalikan nilai kepada main. Dalam hal ini, yang dikembalikan adalah nilai 0.
bool isi bilangan Boolean (True dan False) wchar_t wide character
2.4 VARIABEL
Berbeda dengan pendeklarasian variabel di bahasa pemrograman lain, dalam C++ sebelum mendeklarasikan variabel, hal pertama yang harus dideklarasikan adalah tipe data yang akan digunakan untuk menampung data. Format penulisannya adalah : Tipe_data pengenal = nilai ; Sebagai contoh : int a; float nomor; atau dapat juga pemberian nilai awal untuk variable dilakukan pada saat deklarasi, contoh : int a=10; char s=a; Jika hendak mendeklarasikan beberapa variabel sekaligus dengan tipe data yang sama, dapat dilakukan dengan 2 cara, yaitu : int a; int b; int c; atau dapat disederhanakan dengan deklarasi : int a,b,c; Perhatikan contoh berikut: // bekerja dengan variabel #include int main () {
// inisialisasi variabel : int a, b; int hasil; // proses : a = 5; b = 2; a = a + 1; hasil = a b; // cetak hasilnya : cout << hasil; // menghentikan program : return 0; }
2.5 KONSTANTA
Konstanta mirip dengan variable, namun memiliki nilai tetap. Konstanta dapat berupa nilai Integer, Float, Karakter dan String. Pendeklarasian konstanta dapat dilakukan dengan 2 cara : Menggunakan (#define)
deklarasi konstanta dengan cara ini, lebih gampang dilakukan karena akan menyertakan #define sebagai preprocessor directive. Dan sintaknya diletakkan bersama sama dengan pernyataan #include (di atas main()). Format penulisannya adalah : #define pengenal nilai Contoh penggunaan : #define phi 3.14159265 #define Newline \n #define lebar 100 pendeklarasian dengan #define tanpa diperlukan adanya tanda = untuk memasukkan nilai ke dalam pengenal dan juga tanpa diakhiri dengan tanda semicolon(;).
10
Menggunakan (const)
Sedangkan dengan kata kunci const, pendeklarasian konstanta mirip dengan deklarasi variable yang ditambah kata depan const. Contoh : const int lebar = 100; const char tab = \t; const zip = 1212; Untuk contoh terakhir, deklarasi variable zip yang tanpa tipe data, maka compiler akan secara otomatis memasukkannya ke dalam tipe int.
11
getch(); }
12
2.9 OPERATOR
Dalam C++, terdapat berbagai macam operator yang dapat dimanfaatkan dalam aplikasi. Operator Assign (=) Operator (=), akan memberikan nilai ke dalam suatu variable lvalue a = 5 rvalue artinya memberikan nilai 5 ke dalam variable a. Sebelah kiri tanda = dalam pernyataan di atas, dikenal dengan lvalue (left value) dan di sebelah kanan tanda = dikenal dengan rvalue (right value). lvalue harus selalu berupa variable, sedangkan rvalue dapat berupa variable, nilai, konstanta, hasil operasi ataupun kombinasinya Operator Aritmatika ( +, -, *, /, %) Untuk operator %, sama dengan modulus, yaitu untuk mengetahui sisa hasil bagi. Misalnya a = 11 % 3, maka variable a akan terisi nilai 2 karena sisa hasil bagi 11 dan 3 adalah 2. Operator Majemuk ( +=, -=, *=, /=, %=, <>=, &=, |= ) Dalam C++, operasi aritmatika dapat disederhanakan penulisannya dengan format penulisan operator majemuk. Misalnya : a += 5 sama artinya dengan menuliskan a = a+5 a *= 5 sama artinya dengan menuliskan a = a*5 a /= 5 sama artinya dengan menuliskan a = a/5 a %= 5 sama artinya dgn menuliskan a = a % 5 Operator Penaikan dan Penurunan (++ dan ) Operator penaikan (++) akan menaikkan atau menambahkan 1 nilai variable. Sedangkan operator () akan menurunkan atau mengurangi 1 nilai variable. Misalnya : a++; a+=1; a=a+1;
13
untuk ketiga pernyataan tersebut, memiliki arti yang sama yaitu menaikkan 1 nilai variable 1. Karakteristik dari operator ini adalah dapat dipakai di awal (++a) atau di akhir (a) variable. Untuk penggunaan biasa, mungkin tidak akan ditemui perbedaan hasil dari cara penulisannya. Namun untuk beberapa operasi nantinya harus diperhatikan cara peletakan operator ini, karena akan berpengaruh terhadap hasil. Operator Relasional (==, !=, >, =, 6)) mengembalikan nilai false, karena (true && false) untuk logika NOT (!), contohnya !(5==5) akan mengembalikan nilai false, karena !(true). Operator Kondisional ( ? ) Format penulisan operator kondisional adalah : kondisi ? hasil1 : hasil2 Jika kondisi benar maka yang dijalankan adalah hasil1 dan jika kondisi salah, maka akan dijalankan hasil2.
14
3.1 MAIN WINDOW Seperti pada gambar dibawah ini Main Window terdapat pada posisi paling atas dari C++ Builder IDE. Dan dibagi menjadi tiga kelompok yaitu :
1.1.1
Pada Baris Pertama : Main Menu Pada barisan menu (terdiri dari File, Edit, Search,...) berfungsi sebagai tempat mengatur dan menjalankan berbagai perintah dan fitur yang berhubungan dengan Borland C++ Builder 6, termasuk untuk perintah Compile dan Run Program.
1.1.2
Pada Baris Kedua : Komponen Pallete Pada barisan tab component pallete (terdiri dari Standard, Additional, Data Acces,...) berfungsi saat menggunakan aplikasi visual, yaitu untuk penambahan komponenkomponen input, proses dan output yang berbentuk visual.
1.1.3
Pada Baris Ketiga dan Keempat : Tools Panel Pada tools panel hanya berisi menu- menu yang sering digunakan saja dan ditamplikan dalam bentuk icon .Dan merupakan toolbar-toolbar yang juga berfungsi sebagai langkah cepat dalam menggunakan fitur di Borland C+ + Builder 6, seperti toolbar Run dan toolbar New 15
3.2 OBJECT TREEVIEW Object treeview akan menampilkan daftar komponen (baik visual maupun non visual) yang ditempatkan dalam form, data module, maupun frame. Yang ditampilkan dalam bentuk tree (pohon), yang menunjukkan hubungan logic antara komponen parent dan child. Berikut adalah tampilannya :
Gambar Treeview
3.3 FORM DESIGNER Form designer adalah bagian yang digunakan untuk pembuatan form yang kemudian akan ditampilkan dalam aplikasi. Form designer merupakan tempat komponenkomponen yang digunakan dalam C++ builder. Bagian ini merupakan induk dari komponen- komponen yang juga merupakan tempat mengatur logika berpikir secara visual.Berikut adalah tampilannya :
16
Gambar Form
3.4 OBJECT INSPECTOR Pada bagian ini menunjukkan properti-properti dan event-event proses yang terdapat di komponen yang digunakan untuk mengatur dan melakukan pengesetan terhadap property dan event suatu object dari C++ Builder. Berikut adalah tampilannya :
Gambar Object Inspector 3.5 SOURCE CODE Bagian ini tempat mengisikan sintak-sintak yang akan menjalankan aplikasi yang akan dibuat, yang berupa file *.cpp. Berikut adalah tampilannya :
17
3.6 HEADER UNIT Pada bagian ini akan terbentuk secara otomatis pada saat memilih aplikasi yang berbentuk visual. Bagian ini berfungsi sebagai tempat pembuatan class-class yang akan digunakan di bagian Source Code. Berikut adalah tampilannya :
BAB IV
18
KOMPONEN STANDAR YANG BIASA DIGUNAKAN DALAM PEMROGRAMAN VISUAL DENGAN C++ BUILDER
Komponen standar dan komponen yang sering digunakan terdapat dalam komponen palletes adapun komponen komponen tersebut sebagai berikut :
19
4.1 Button Default Name Button1. Fungsi dasar Proses/event, untuk membuat tombol yang memiliki method Contoh tombol hitung dengan method click. Komponen sejenis BitBtn, SpeedButton. 4.2 Edit Default Name edit1. Fungsi dasar Input/output berupa teks. Komponen sejenis MaskEdit, LabeledEdit, DBEdit.
4.3 ListBox Default name ListBox1. Fungsi dasar Input/output berupa pilihan. Komponen sejenis DBListBox, DBLookupListBox.
20
4.4 ComboBox Default name ComboBox1. Fungsi dasar Input berupa pilihan. Komponen sejenis DBComboBox, DBLookupComboBox.
4.5 Memo Default name Memo1. Fungsi dasar Input/output dengan length yang lebih panjang. Komponen sejenis DBMemo.
4.6 Label Default name Label1.Fungsi dasar Teks tetap, output. Komponen sejenis DBLabel. 4.7 CheckBox Default name CheckBox1. Fungsi dasar Input dengan nilai True or False. Komponen sejenis DBCheckBox. 4.8 RadioButton. Default name RadioButton1. Fungsi dasar Input berupa pilihan. Komponen sejenis RadioGroup, DBRadioGroup. 4.9 GroupBox Default name GroupBox1. Fungsi dasar Group beberapa komponen. Komponen sejenis Panel. 5.0 Panel Default name Panel1. Fungsi dasar Group beberapa komponen. Komponen sejenis GroupBox.
5.1 Image 21
Default Image1. Fungsi dasar Memasukkan gambar. Komponen sejenis DBImage . Posisi tab addtional 5.2 Shape Default Shape1. Fungsi dasar Membuat bentuk gambar bulat,lingkaran dll. Posisi tab additional.
5.3 Timer Default Timer1. Fungsi dasar Proses perulangan menggunakan satuan interval 1 mili detik. Posisi tab system. 5.4 MainMenu Default name MainMenu1. Fungsi dasar Membuat menu Aplikasi. Posisi tab standar. 5.5 UpDown Default name UpDown1. Fungsi dasar Menambahkan /mengurangkan nilai dengan step tertentu. Posisi tab Win32. komponen sejenis CSpinEdit.
22
BAB V OBJECT ORIENTED PROGRAMMING (OOP) DALAM PEMROGRAMAN VISUAL DENGAN C++ BUILDER
5.1 Konsep Pengembangan Aplikasi Visual Berbasis Object Oriented Programming Object Oriented Programming berperan dalam mendefinisikan pemrograman yang rutin dan bersifat terstruktur, sedangkan pemrograman visual mendefinisikan secara visual bagaimana programmer atau user menjalankan program tersebut sehingga tampilan nyata yang ada pada program tersebut dapat kita ketahui. Pemrograman visual memungkinkan pengguna untuk lebih fokus pada pemecahan masalah daripada cara menangani bahasa pemrograman. Pemrograman visual dapat menunjukkan objek-objek yang digunakan dalam mencari solusi atau pemecahan masalah secara grafis atau nyata. Objek-objek yang digunakan tersebut menggunakan konsep object oriented programming. Dengan adanya pemrograman visual kita dapat secara real melihat bagaimana sebuah program dapat dengan mudah dilihat dan dipahami melalui interface atau penghubung yang berbentuk nyata. Misal kita ingin membuat sebuah aplikasi sederhana dengan mengunakan C++ builder. Kita tinggal menggunakan objek-objek yang telah disediakan sesuai kebutuhan kita. Objek-objek tersebut nantinya akan dapat bekerja sesuai dengan fungsinya tergantung event yang kita berikan. Objek dalam hal ini adalah form, lebel, edit, button atau objek lain yang kita tambahkan pada aplikasi yang kita buat. 5.2 Pengenalan Object Oriented Programming dalam Pemrograman Visual
Menggunakan C++ Builder Berikut adalah sebuah contoh program yang akan membantu kita untuk lebih memahami Object Oriented Programming dalam Pemrograman Visual Menggunakan C++ Builder. Dalam pembuatan aplikasi diatas, kita membutuhkan: 1. Form1 a. Properties 23
2. Label1
b. Event
a. Properties 3. Label2 b. Properties 4. Label3 a. Properties 5. Label4 a. Properties 6. Edit1 a. Properties 7. Edit2 a. Properties 8. Edit3 a. Properties Name : Edit3 24 Name : Edit2 Text : Edit2 Name : Edit1 Text : Edit1 Caption : Kalkulator Sederhana Name : Label4 Caption : Hasil Name : Label3 Caption : Masukkan 2 Name : Label2 Caption : Masukkan 1 Name : Label1
Text : Edit3
b. Event
b. Event
b. Event
b. Event
b. Event 25
Onclick
b. Event
26
Inilah penjabaran singkat mengenai Object Oriented Programming dalam Pemrograman Visual menggunakan C++ Builder. Dengan contoh program yang sederhana diatas, dapat kita lihat bagaimana sebuah program divisualisasikan dalam bentuk objek-objek yang tersaji.
27
#include <iostream.h> void main() { int *px, x, y; x = 1000; px = &x; y = *px; cout << px; cout << endl; cout << y; } // mendeklarasikan variabel pointer px bertipe integer // memberikan nilai x sama dengan 1000 // dengan statement ini variabel pointer sekarang menunjuk ke alamat variabel x // mengakses variabel yang ditunjuk oleh pointer // menampilkan isi dari variabel pointer px berupa alamat // ganti baris baru // menampilkan isi dari variabel yang di tunjuk
28
Dari ilustrasi diatas dapat kita lihat bahwa px (yang merupakan variabel pointer) berisi alamat dari variabel x. Sedangkan jika kita hendak mengakses nilai dari variabel yang ditunjuk oleh variabel pointer (nilai dari variabel x) maka kita gunakan tanda asterik di depan variabel pointer. Seandainya pada program diatas tidak terdapat pernyataan : px = &x; Namun terdapat pernyataan : y = *px; maka, y tidaklah berisi nilai x, sebab px belum diatur agar menunjuk variabel x. hal seperti ini dapat menyebabkan komputer menjadi hang karena pointer belum di inisialisasikan. Satu hal lagi yang perlu diperhatikan lagi jika kita menggunakan pointer ialah tipe variabel pointer dengan tipe data variabel yang ditunjuknya haruslah sama contohnya pada program diatas variabel pointer px bertipe sama dengan variabel yang ditunjuknya yaitu x, sama-sama bertipe integer.
} pointer }
Dari program diatas dapat dilihat bahwa pengaksesan elemen array dapat dilakukan melalui alamat memori pada variabel pointer. *(pnilai + i) sama hal nya dengan nilai[] pada array biasa. Output dari program diatas akan menghasilkan nilai 10, 20 dan 30. untuk array dua, tiga dan n dimensi pun dapat kita buat dengan menggunakan pointer. Contoh untuk array dengan dimensi dua pendeklarasiannya adalah : *(*(pnilai + i) + j)
terdapat perbedaan diantara kedua statement diatas, pada array nilai[3] akan menyebabkan tiga buah tempat untuk nilai-nilai integer atau sebanyak 6 byte memori akan disiapkan untuk array ini (int = 2 byte dikali 3 tempat = 6 byte). Untuk array pointer, kompiler tidak secara otomatis menyiapkan tempat untuk nilai-nilainya, karena banyaknya nilai-nilai yang akan digunakan belum diketahui. Untuk mengatasi masalah ini, maka untuk menyiapkan sejumlah blok memori dapat digunakan cara alokasi dinamik (dynamic allocation). Cara alokasi dinamik ini menggunakan memori yang masih kosong di luar memori yang biasanya digunakan untuk data. Untuk menggunakan cara ini, perlu digunakan fungsi khusus didalam pointer yaitu menggunakan fungsi standar malloc() dengan prototypenya berada di header file stdlib.h. (ini hanya digunakan jika kita menggunakan bahasa C), jika kita menggunakan bahasa C++ maka fungsi standar yang digunakan ialah new. Contoh mengalokasikan suatu array dengan menggunakan fungsi-fungsi diatas adalah sebagai berikut : nilai = malloc(sizeof(int) * 3); // untuk mengalokasikan dengan C 30
hasil dari pengalokasian diatas ialah suatu alamat yang menunjukkan byte pertama dari memori yang dialokasikan di heap. Jika alokasi memori ini gagal, bisa dikarenakan tidak mencukupinya memori pada heap, maka fungsi diatas akan menghasilkan nilai NULL. Setelah kita mengalokasikan memori untuk array, ada baiknya jika kita menghapus / mende-alokasikan kembali array tersebut dari memori, sehingga ruang di memori heap dapat digunakan untuk keperluan yang lainnya. Untuk menghapus / mende-alokasikan sebuah array diperlukan sebuah fungsi standar free() dari header file stdlib.h untuk para pengguna bahasa C, jika kita menggunakan C++ kita menggunakan fungsi standar delete. Contohnya : free(nilai); delete [] nilai; // mendealokasikan dengan bahasa C // mendealokasikan dengan bahasa C++
selanjutnya pengalokasian diatas dapat dengan mudah kita membentuk suatu struktur data link list maupun double link list dengan menggunakan bahasa C/C++. Berikut ini akan diberikan contoh program dengan menggunakan fungsi standar diatas (langsung dengan menggunakan C++) : #include <iostream.h> #include <conio.h> struct mhs { char npm[9]; char nama[25]; char alamat[30]; int nilai; }; void main() { mhs *pmhs; int n; 31
clrscr(); cout << "PROGRAM DATA MAHASISWA" << endl; cout << "----------------------" << endl << endl; cout << "Masukkan Banyaknya Data : "; cin >> n; cout << endl; pmhs = new mhs[n]; for (int i=0; i<n; i++) { cout << "Input Data Mahasiswa Ke-" << i+1 << endl; cout << "Nama Anda cout << "NPM Anda : "; cin >> pmhs[i].nama; : "; cin >> pmhs[i].npm;
cout << "Alamat Anda : "; cin >> pmhs[i].alamat; cout << "Nilai SBP Anda : "; cin >> pmhs[i].nilai; cout << endl; } cout << "Tekan Sembarang tombol ... !"; getch(); clrscr(); cout << " << endl << endl; cout << "===========================================" << endl; cout << " No. Nama for (i=0; i<n; i++) { gotoxy(2, i+6); cout << i+1 << "."; gotoxy(7, i+6); cout << pmhs[i].nama; gotoxy(22, i+6); cout << pmhs[i].npm; gotoxy(33, i+6); cout << pmhs[i].alamat; gotoxy(53, i+6); cout << pmhs[i].nilai << endl; } cout << "===========================================" << endl; 32 NPM Alamat Nilai" << endl; cout << "===========================================" << endl; Output Data Mahasiswa"
6.3Pointer ke Pointer
Pointer ke pointer merupakan suatu pointer yang menunjuk ke alamat pointer yang lainnya. Dengan menggunakan dua buah asterik pada variabel pointer, maka variabel pointer tersebut dapat mengakses ke variabel pointer yang lainnya. Contohnya : #include <iostream.h> void main() { int a, *b, **c; a = 1000; b = &a; c = &b; cout << *b; cout << endl; cout << **c; } Hasil dari program diatas adalah : 1000 1000 Dari program diatas dapat disimpulkan bahwa dengan menggunakan pointer ke pointer, isi dari pointer yang terakhir merupaka alamat memori dari variabel pointer sesungguhnya. Pada contoh diatas, variabel b yang menunjuk ke variabel a ditunjuk kembali oleh variabel c sehingga nilai dari variabel c sebenarnya sama dengan variabel b dan variabel a. 33 // mendeklarasikan variabel pointer // memberikan nilai a sama dengan 1000 // dengan statement ini variabel pointer sekarang menunjuk ke alamat variabel a // dengan statement ini variabel pointer sekarang menunjuk ke alamat variabel a // menampilkan isi dari variabel pointer b berupa alamat // ganti baris baru // menampilkan isi dari variabel pointer c
BAB VII
MEMBUAT ARTIKEL TENTANG PEMILIHAN, PERULANGAN/ITERASI DAN REKURSIF DENGAN BAHASA PEMROGRAMAN C++ BUILDER
7.1 Pemilihan Pemilihan merupakan suatu proses pemilihan aksi diantara beberapa alternative yang di berikan. Suatu struktur dasar algoritma yang memiliki satu atau lebih kondisi tertentu dimana sebuah instruksi dilaksanakan jika sebuah kondisi/persyaratan terpenuhi. Fungsi penyeleksian kondisi penting artinya dalam penyusunan bahasa C, terutama untuk program yang kompleks. 7.1.1 Struktur kondisi If.... Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau bernilai benar, maka pernyataan yang ada di dalam kotak if akan di eksekusi dan di kerjakan. Bentuk umu dari if : if (kondisi) { .......... } Contoh program :
34
Outputnya :
Penjelasa program : Pengguna memasukkan nilai 2, maka program menampilkan pesan. Artinya, nilai yang di masukkan tersebut memenuhi kondisi yang yang telah di tentukan. Apabila tidak memenuhi kondisinya, maka program tidak menampilkan apa-apa.
7.1.2 Struktur Kondisi if.....else..... Dalam struktur kondisi if.....else..... minimal terdapat dua pernyataan. Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang di periksa bernilai salah maka pernyataan yang kedua yang dilaksanakan. Bentuk umum dari if.....else..... : if (kondisi) { .......... } else { .......... } Contoh program :
35
36
Penjelasan program : Pengguna memasukkan nilai yang kondisi pertama terpenuhi, maka program menjalan kan aksi yang pertama. Lalu penggu memasukkan nilai yang tidak memenuhi kondisi pertama, maka program menjalan kan aki yang ke dua. Berbeda dengan struktur kondisi if, jika kondisi pertama tidak terpenuhi maka program tidak menampilkan apaapa.
7.1.3 Struktur Kondisi switch....case....default.... Struktur kondisi switch....case....default digunakan untuk penyeleksian kondisi dengan kemungkinan terjadi cukup banyak. Struktur ini akan melaksanakan salah satu dari beberapa penyataan case tergantung nilai kondisi yang ada di dalam switch. Selanjutnya proses diteruskan hingga ditemukan pernyataan break. Jika tidak ada nilai pada case yang sesuai dengan nilai kondisi, maka proses akan diteruskan kepada pernyataan yang ada di bawah default. Bentuk umum switch....case....default....
37
Contoh programnya :
Outputnya :
Penjelasan program : Ketika program dijalankan, maka program akan meminta pengguna untuk memasukkan pilihan dari beberapa menu tersebut. Lalu program mencetak pilihan yang kita pilih tersebut. Dan jika pilihan tidak tersedia, maka program akan menampilkan pesan Menu yang di pilih tidak tersedia.
7.2 Perulangan/Iterasi Sebuah atau sekelompok instruksi diulang untuk jumlah pengulangan tertentu. Baik yang terdefinisikan sebelumnya ataupun dtidak. Struktur pengulangan terdiri atas dua bagian :
38
1. Kondisi pengulangan
yaitu
ekspresi boolean
yang
harus
dipenuhi
untuk
melaksanakanpengulangan 2. Isi atau badan pengulangan yaitu satu atau lebih pernyataan (aksi) yang akan diulang. Ada tiga cara yang umum untuk melakukan perulangan pada C++ yaitu : 1. 2. 3. for while do while
7.2.1 Perulangan for... Pernyataan for... digunakan untuk menghasilkan pengulangan(looping) beberapa kali tanpa penggunaan kondisi apapun. Pada umumnya looping yang dilakukan oleh for telah diketahui batas awal, syarat looping dan perubahannya. Selama kondisi terpenuhi, maka pernyataan akan terus di eksekusi. Bentuk umum for... : for (inisialisasi ; kondisi ; perubahan) { .......... } Contoh programnya :
Outputnya :
39
7.2.2 Perulangan while... Yaitu perulangan yang melakukan pengecekan kondisi di awal blok struktur, perulangan ini hanya akan dilakukkan jika kondisi yang di definisikan di dalamnya terpenuhi (bernilai benar) dan jika kondisi yang di definisikan tidak terpenuhi (bernilai salah) maka statement-statement yang terdapat di dalam blok perulanganpun tidak akan pernah dieksekusi oleh program. Pernyataan while merupakan salah satu pernyataan yang berguna untuk memproses suatu pernyataan atau beberapa kali. Pernyataan while memungkinkan statemen-statement yang ada didalamnya tidak dilakukan sama sekali. Bentuk umum while : while (kondisi) { .......... } Contoh programnya :
40
Outputnya :
7.2.3 Perulangan do....while.... Pernyataan do....while.... mirip seperti pernyataan while..., hanya saja pada do....while.... pernyataan yang terdapat di dalamnya minimal akan sekali dieksekusi. Struktur ini berbeda dengan struktur while yang melakukan pengecekan kondisi di awal blok perulangan, pada struktur do-while kondisi justru ditempatkan di bagian akhir. Biasanya struktur ini melakukkan perulangan terlebih dahulu dan pengujiannya dilakukan di belakang. Bentuk umum do....while.... : do { 41
Outputnya :
7.3 Rekursif Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri. Kelebihan perulangan rekursif sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar dan dapat melakukan perulangan dengan batasan fungsi.
42
Kekurangan perulangan rekursif : Tidak bisa melakukan nested loop atau looping bersarang. Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja, Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum). Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulangulang dan pemanggilan data yang ditumpuk.
Contoh program :
43
DAFTAR PUSTAKA
Heriyanto, Imam dan Raharjo, Budi. Pemrograman Borland C++ Builder. Informatika Bandung. 2003. Fachrurrozi, M dan Gustiawan, Ferry. Konsep Dan Aplikasi Pemrograman Menggunakan Borland C++ Builder 6(Modul Visual Revisi). Fakultas Ilmu Komputer Universitas Sriwijaya. 2006. http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek
Heryanto. Imam dan Raharjo. Budi, Pemrograman Borland C++ Builder, Informatika Bandung, 2006
44
45