LSP Telematika. Cover
|
|
|
- Ridwan Lesmono
- 9 tahun lalu
- Tontonan:
Transkripsi
1 LSP Telematika Cover
2 Daftar Isi Daftar Isi... 2 Kata Pengantar... 5 C Bab I Pengenalan C Konsep Kompilasi dan Eksekusi Progam Kerangka Program C Komentar /(Comment) Fungsi Input dan Output Soal Latihan Soal Praktek BAB II Dasar Pemrograman C Identifier Konstanta Variabel Tipe Data Keyword pada C Pointer dan Reference Soal Latihan Soal Praktek BAB III Pemrograman Lanjut Operator Array Struktur Percabangan Struktur Pengulangan Pemrograman Jaringan Soal Latihan Soal Praktek BAB IV Pemrograman Berorientasi Objek Konsep Dasar OOP Kelas dan Objek Pewarisan Sifat Objek Polimorfisme (Polymorphism) Fungsi Soal Latihan Soal Praktek Borland Delphi BAB I Borland Delphi Programming Menjalankan Borland Delphi Pemrograman dalam Lingkungan Visual Soal Latihan BAB II Pemrograman Borland Delphi Komentar Pada Kode Identifier Kata Kunci (Reserved Word) dan Directive Compiler Directive Unit Initialization dan Finalization Konstanta Variabel LSP Telematika
3 2.9 Tipe Data Struktur Percabangan dan Pengulangan Array Pemrograman Berorientasi Objek Soal Latihan Soal Praktek BAB III FORM Property Bekerja dengan Banyak Form Komponen Dalam Delphi Soal Latihan Soal Praktek BAB IV Aplikasi Basis Data di Delphi Tipe Database Aplikasi MyBase Manipulasi Data dbexpress Soal Latihan Soal Praktek Visual Basic.NET BAB I Pengenalan VB.NET Apa itu VB.NET Fitur Baru dalam VB.NET NET Framework Lingkungan Pemrograman VB.NET Soal Latihan BAB II Forms dan Kontrol Mengenal Kontrol Form Windows Aplikasi MDI (Multiple Document Interface) Kotak Pesan dan Kotak Input Soal Latihan Soal Praktek BAB III Pemrograman VB.NET Variabel Tipe Data dan Structure Operator Penanganan Kesalahan (Error Handling) Alur Percabangan (Selection) Struktur Pengulangan (Iteration) Debugging COM dan ActiveX Soal Latihan Soal Praktek BAB IV Pemrograman Lanjut Array Prosedur dan Subrutin Fungsi Pemrograman Berorientasi Objek ADO.NET Soal Latihan Soal Praktek LSP Telematika
4 Visual Basic BAB I VISUAL BASIC Menjalankan Visual Basic Konsep Soal Latihan BAB II Form dan Kontrol Dasar-dasar Penggunaan Kontrol (Program Hello World ) Menu dan Kotak Dialog Menggunakan Objek Common Dialog Soal Latihan Soal Praktek BAB III Pemrograman Visual Basic Variabel Fungsi Bekerja dengan Tipe Data Tertentu Operator Struktur Keputusan Struktur Perulangan Soal Latihan Soal Praktek BAB IV Pemrograman Lanjut Modul Menulis Prosedur Function Bekerja dengan Koleksi Array Soal Latihan Soal Praktek Jawaban Soal Daftar Pustaka LSP Telematika
5 Kata Pengantar Jenis bahasa pemrograman yang berkembang dewasa ini salah satunya adalah bahasa pemrograman desktop. Beberapa bahasa yang termasuk jenis ini adalah C++, delphi, Visual Basic.NET dan Visual Basic. Buku ini akan membahas mengenai seluk beluk bahasa-bahasa tersebut, selain itu buku ini juga dilengkapi dengan tujuan serta tik akan diperoleh pembaca. Daftar tik yang dipenuhi oleh materi yang ada di buku ini adalah : TIK.PR Membuat algoritma pemrograman lanjut. TIK.PR Membuat struktur data. TIK.PR Menggunakan spesifikasi program. TIK.PR Menulis program dasar. TIK.PR Menulis program lanjut. TIK.PR Mengoperasikan pemrograman terstruktur. TIK.PR Mengoperasikan bahasa pemrograman berorientasi obyek. TIK.PR Membuat program aplikasi berbasis Delphi TIK.PR Membuat program aplikasi berbasis VB dan VB.NET TIK.PR Membuat program aplikasi berbasis C++ Sedangkan gambaran umum dari materi yang dibahas dalam buku ini ditunjukkan pada gambar di bawah ini : Harapan penulis, kiranya buku ini akan berguna untuk memperdalam pengetahuan pembaca mengenai bahasa C++, Delphi, Visual Basic serta Visual Basic.NET. Penulis LSP Telematika
6 LSP Telematika C++
7 Bab I Pengenalan C++ Tujuan Instruksional Umum : 1. Siswa dapat menyebutkan berbagai tipe data C++ 2. Siswa dapat menjelaskan fungsi dalam C++ 3. Siswa dapat menjelaskan konsep OOP Tujuan Instruksional Khusus : 1. Siswa dapat membuat program C++ 2. Siswa dapat membuat program C++ dengan operator 3. Siswa membuat program dengan fungsi Materi yang ada di bab ini memenuhi : TIK.PR Membuat algoritma pemrograman. TIK.PR Membuat struktur data. TIK.PR Menggunakan spesifikasi program. TIK.PR Menulis program dasar. TIK.PR Menulis program lanjut. TIK.PR Mengoperasikan bahasa pemrograman terstruktur. TIK.PR Mengoperasikan bahasa pemrograman berorientasi obyek. TIK.PR Membuat program aplikasi berbasis C++ Berikut ini adalah gambaran umum dari materi yang ada di bab ini : LSP Telematika
8 Bahasa C++ didasarkan pada bahasa pemrograman C sehingga kita dapat melakukan kompilasi program-program yang ditulis dalam bahasa C dengan menggunakan Compiler C++. Keistimewaan dari bahasa C++ adalah karena bahasa ini mendukung pemrograman berarah objek atau yang lebih sering dikenal dengan istilah Object Oriented Programming (OOP). Sejak dikembangkan, bahasa C++ banyak digunakan untuk mengembangkan program-program aplikasi di bidang telekomunikasi, finansial atau bisnis dan sistem operasi. 1.1 Konsep Kompilasi dan Eksekusi Progam Berikut ini gambar yang mengilustrasikan proses kompilasi dan eksekusi program di dalam C/C++. kode program (source code) preprocessor compiler Kode assembly assembler library Kode objek Link editor File EXE 1.2 Kerangka Program C++ Setiap program yang ditulis dalam bahasa C/C++ pasti akan memiliki sebuah fungsi utama dengan nama main(). Selanjutnya jika kita ingin mendefinisikan fungsi-fungsi lain maka kita akan melakukannya di luar fungsi utama 8
9 tersebut. Dalam C++, kode yang dibaca adalah kode-kode yang terdapat pada fungsi utama. Jika ternyata terdapat pemanggilan fungsi lain, maka progam akan mencari nama fungsi tersebut untuk dieksekusi. Setelah mengeksekusi fungsi tersebut, maka program akan kembali ke dalam fungsi utama, begitu seterusnya. Sebagai bahan perbandingan, dibawah ini akan diberikan kerangka umum yang ditulis dalam bahasa C++. Sintaks untuk fungsi utama dapat dilihat pada kode program berikut ini: int main(){ Statement_yang_akan_dilakukan;... return 0; } Adapun kerangka lengkap dari program yang ditulis dalam C++ adalah seperti terlihat dibawah ini #include<iostream.h> //Prototype fungsi tipe_data nama_fungsi1(parameter1, parameter2,...) tipe_data nama_fungsi2(parameter1, parameter2,...)... //Fungsi utama int main(){ Statement_yang_akan_dilakukan;... return 0; } tipe_data nama_fungsi1(parameter1, parameter2,...){ Statement_yang_akan_dilakukan;... } tipe_data nama_fungsi2(parameter1, parameter2,...){ Statement_yang_akan_dilakukan;... } Perlu untuk diperhatikan bahwa file header yang digunakan dalam bahasa C++ untuk proses input/output(i/o) standar adalah iostream.h, sedangkan di dalam bahasa C file header yang digunakan untuk keperluan yang sama adalah stdio.h. 9
10 Berikut ini program sederhana yang ditulis dalam bahasa C++ (Cin_Cout.cpp) #include<iostream.h> int main(){ int x; //menampilkan teks untuk informasi cout<< Masukkan sebuah bilangan bulat: ; //membaca nilai dari keyboard dan //menyimpannya ke dalam variabel x cin>>x; //menampilkan nilai yang telah dimasukkan cout<< Bilangan yang telah Anda masukkan adalah <<x; } return 0; Hasil yang akan diberikan dari program di atas adalah sebagai berikut: Masukkan sebuah bilangan bulat: 10 Bilangan yang telah Anda masukkan adalah 10 File header (file dengan ekstensi.h) adalah file yang berisi fungsi-fungsi dan telah dikompilasi sebelumnya. Apabila kita akan menggunakan suatu file header tertentu, maka kita akan mendaftarkannya melalui directive #include. Sebagai contoh, di kode program, kita akan menggunakan fungsi getch. Fungsi tersebut terdapat dalam file header conio.h, maka kita akan melakukan pendaftaran dalam program kita melalui sintaks berikut: #include<conio.h> Setiap kita menggunakan fungsi tertentu maka kita harus mendaftarkan file header-nya. 1.3 Komentar /(Comment) Dalam proses pengembangan sebuah program, tentunya kita disibukkan dengan penulisan sintaks-sintaks yang begitu banyak dan tampak rumit sehingga akan sulit untuk dipahami oleh orang lain. Untuk menangani masalah ini, sebagai programmer sebaiknya kita menambahkan komentar 10
11 untuk menjelaskan algortima dan keterangan-keterangan yang diperlukan dalam program. Hal ini akan membantu dalam proses pemeliharaan (maintenance) dari program yang telah kita buat. Secara definisi, komentar adlaah bagian dari sintaks program yang tidak ikut dibaca pada saat proses kompilasi. Dengan kata lain, komentar tidak akan mempengaruhi jalannya program. Dalam bahasa C++, komentar dibagi menjadi dua jenis yaitu komentar yang hanya terdiri dari satu baris dan komentar yang terdiri dari beberapa baris. Berikut ini penjelasannya. Menggunakan tanda // Tanda ini digunakan untuk menuliskan komentar yang banyaknya hanya satu baris. Gaya penulisan komentar seperti ini hanya terdapat pada C++, sedangkan pada bahasa C tidak akan dikenali. Jika kita menggunakan tanda ini untuk menuliskan komentar yang lebih dari satu baris, maka teks di belakang tanda // tetap menjadi komentar tapi teks yang terdapat pada baris selanjutnya akan tetap dibaca oleh compiler sehingga akan menyebabkan terjadinya kesalahan (error) pada saar proses kompilasi program. Berikut ini adalah contoh penggunaannya. //Ini adalah komentar untuk satu baris Namun perhatikan, bagaimana jika komentar di atas dituliskan seperti berikut: //Ini adalah komentar untuk satu baris Penulisan di atas akan menyebabkan kesalahan, karena teks untuk satu baris tidak akan dianggap sebagai komentar melainkan akan dianggap sebagai tiga buah identifier yang tidak dikenal. Menggunakan tanda /*...*/ Berbeda dengan tanda //, tanda ini dapat digunakan untuk menuliskan komentar yang banyaknya satu baris atau lebih. Komentar dimulai dari tanda /* sampai ditemukan tanda */. Contoh penggunaannya dapat dilihat di bawah ini: /* Ini adalah komentar yang banyaknya satu baris*/ /* Ini adalah komentar panjang yang banyaknya 11
12 lebih dari satu baris*/ Dengan menggunakan tanda ini kita juga dapat menggunakan komentar yang berupa sisipan. Misalnya pada penulisan sintaks di bawah ini: int /* file ini digunakan untuk proses I/O pada C++*/ x; 1.4 Fungsi Input dan Output Cin dan Cout Cin merupakan suatu stream yang akan merespon proses input yang dilakukan. Stream ini hanya tersedia jika kita memasukkan file header iostream.h di dalam program yang kita buat. Adapun operator yang digunakan adalah operator >>. Dalam C++, untuk melakukan output ke peralatan standar, yaitu layar (screen) adalah dengan cara menggunakan stream cout. Adapun operator yang digunakan adalah operator <<. Operator ini juga telah di overload sehingga dapat digunakan untuk berbagai macam tipe data. Sebagai contoh, berikut ini contoh program yang menunjukkan penggunaan stream cin dan cout. Cin_Cout2.cpp #include<iostream.h> int main(){ int x,y,z; cout<< Masukkan nilai x: ; cin>>x; cout<< Masukkan nilai y: ; cin>>y; cout<< Masukkan nilai z: ; cin>>z; cout<< Nilai x : <<x<<endl; cout<< Nilai y : <<y<<endl; cout<< Nilai z : <<z<<endl; return 0; Input dan Output pada File } 12
13 Dalam bahasa C++, kita membuka file dengan menghubungkannya dengan sebuah stream. Setelah mendeklarasikan variabel stream, langkah selanjutnya adalah menghubungkannya ke file dengan cara memanggil fungsi open. Untuk membaca dan menuliskan teks ke file sama mudahnya dengan melakukan input dan output terhadap I/O console dengan menggunakan stream yang kita deklarasikan sendiri dan telah terhubung dengan sebuah file. Berikut ini adalah contoh kode untuk membuat sebuah file : ReadFile.cpp #include<iostream.h> #include<fstream.h> int main() { // Mendeklarasikan strem untuk proses output ofstream output; output.open( coba.txt ); // Melakukan pencegahan terhadap terjadinya error if(!output) { cout<< File tidak dapat dibuka ; return 1; } // Menuliskan teks ke dalam file tersebut output<< Menulis ke sebuah file ; // Menutup file output.close(); } return 0; Untuk melakukan proses penulisan dan pembacaan data, kita menggunakan fungsi put dan get. Fungsi put untuk menuliskan data sedangkan fungsi get untuk membaca data. Untuk data biner, terdapat cara lain untuk proses penulisan dan pembacaan yaitu dengan fungsi write dan read. Berikut ini adalah contoh kode untuk penggunaan fungsi put dan get : ReadWrite.cpp #include<iostream.h> #include<fstream.h> int main() { ofstream output; ifstream input; 13
14 output.open("h:/test.txt"); if(!output ) { cout<<"file tidak dapat dibuka"; return 1; } int C = 65; while(char(c) <= 'Z') { output.put(char(c)); C++; } output.close(); input.open("h:/test.txt"); if(!input) { cout<<"file tidak dapat dibuka"; return 1; } char B; while(input) { input.get(b); if(input) cout<<b; } input.close(); } return 0; Soal Latihan 1. Sebuah fungsi yang akan ada di setiap program C++ dinamakan fungsi : a. compile() b. count() c. directive() d. main() 2. Untuk menuliskan komentar yang panjangnya hanya satu baris dengan simbol: a. // 14
15 b. /*... */ c. << d. <! > 3. fungsi Cin dan Cout dapat digunakan jika file... diikutsertakan dalam program: a. conio.h b. iostream.h c. stdio.h d. stdlib.h Soal Praktek 4. Buatlah sebuah program C++ yang menerima input berupa umur user dan menampilkan kembali input dari user. 5. Buatlah sebuah file yang berisi nama-nama buah kemudian buat program C++ untuk menampilkan isi file tersebut. 15
16 BAB II Dasar Pemrograman C Identifier Identifier adalah suatu pengidentifikasian yang berfungsi untuk menampung sebuah nilai yang digunakan dalam program. Identifikasi ini dilakukan untuk mempermudah proses penanganan data atau nilai, misalnya untuk memasukkan dan menampilkan nilai. Sebagai gambaran, di bawah ini adalah sebuah contoh program yang menggunakan dua buah identifier di dalamnya. #include<iostream.h> int main() { char Teks[20]; int x; cout<< Masukkan sebuah kata : ; cin>>teks; cout<< Masukkan sebuah angka : ; cin>>x; //bisa ditulis dengan cout<<x<< \n ; } cout<<x; return 0; Pada program di atas kita mempunyai dua buah identifier, yaitu Teks dan x. Pada saat program dijalankan, identifier tersebut akan digunakan untuk menyimpan nilai yang dimasukkan dari keyboard. Dalam C++, proses penyimpanan nilai seperti ini dinyatakan dengan statemen cin. Berbeda dengan statemen cout yang menggunakan operator <<, pada statement cin operator yang digunakan adalah operator >>. Dalam menentukan atau membuat identifier dalam program, kita harus memperhatikan hal-hal berikut: 1. Karena bahasa C++ bersifat case sensitive, maka C++ juga akan membedakan variabel yang ditulis dengan huruf kapital dan huruf kecil. Misalnya variabel A tentunya akan berbeda dengan variabel a. 16
17 2. Identifier tidak boleh berupa angka atau diawali dengan karakter berupa angka Contoh: long 1000; //SALAH karena identifier berupa angka long 2x; // SALAH karena identifier diawali oleh karakter berupa angka long x2; //BENAR karena identifier tidak diawali oleh angka 3. Identifier tidak boleh mengandung spasi Contoh: int Bilangan Bulat; //SALAH karena identifier mengandung spasi int Bilangan_Bulat; //BENAR int BilanganBulat; //BENAR int _BilanganBulat; //BENAR 4. Identifier tidak boleh menggunakan karakter-karakter simbol $, dll) Contoh: long!satu; // SALAH long //SALAH long ti#ga; // SALAH 5. Identifier tidak boleh menggunakan kata kunci (keyword) yang terdapat pada C++. Contoh: long break; // SALAH karena menggunakan keyword break long return; // SALAH karena menggunakan keyword return 6. Nama identifier sebaiknya disesuaikan dengan kebutuhannya, artinya jangan sampai orang lain bingung hanya karena salah dalam penamaan identifier. Sebisa mungkin, hindarilah penggunaan nama identifier yang sama dengan identifier yang digunakan oleh C++. Berdasarkan jenisnya, identifier sendiri dibagi ke dalam dua bagian yaitu konstanta dan variabel. Adapun penjelasan lebih detilnya dapat Anda dapat lihat pada sub bab berikut ini. 2.2 Konstanta Konstanta adalah jenis identifier yang bersifat konstan atau tetap, artinya nilai dari konstanta di dalam program tidak dapat diubah. Konstanta berguna 17
18 untuk menentukan nilai yang merupakan tetapan, misalnya nilai phi, kecepatan cahaya dan lainnya. Dengan mendefinisikan konstanta yang bersifat global, maka kita dapat menggunakannya di setiap bagian program. Dengan C++, terdapat dua buah cara untuk membuat sebuah konstanta, yaitu dengan menggunakan preprocessor directive #define dan menggunakan keyword const. 1. Menggunakan Preprocessor Directive #define Kita dapat menggunakan makro untuk mendefinisikan sebuah konstanta, yaitu dengan menggunakan preprocessor directive #define. Untuk mengetahui lebih jauh tentang manfaat penggunaan konstanta, perhatikan program di bawah ini. #include<iostream.h> int main(){ int A[5]; for (int C=0; C<5;C++){ A[C] = C * 10; } for (int c=0;c<5;c++){ cout<<a[c]; } return 0; } Untuk sintaks lainnya akan dijelaskan pada bagian berikutnya. Yang perlu diperhatikan adalah, angka 5 pada program di atas beberapa kali muncul. Jika kita hendak mengubah angka 5 tersebut dengan angka 10 maka akan terjadi beberapa pergantian angka tersebut. Untuk itu, dalam kasus ini sebaiknya kita menjadikan bilangan 5 tersebut ke dalam suatu konstanta sehingga jika terjadi perubahan kita hanya melakukan perubahan nilai terhadap konstantanya saja. Berikut ini merupakan program perbaikan dari program sebelumnya. #include<iostream.h> #define MAX 5; int main(){ int A[MAX]; 18
19 for (int C=0; C< MAX; C++){ A[C] = C * 10; } for (int c=0;c< MAX;c++){ cout<<a[c]; } return 0; } 2. Menggunakan keyword Const Selain dari car di atas, dalam C++ kita dapat mendefinisikan sebuah konstanta dengan menggunakan keyword const. Berikut ini adalah bentuk umumnya. const tipe_data nama_konstanta = nilai_tetapan; Contoh pendeklarasian konstanta-konstanta adalah sebagai berikut: const double PI = 3.14; const int NILAI_MAX = 100; const char MyChar = A ; Untuk lebih memahaminya, berikut ini dituliskan sebuah sintaks program yang merupakan implementasi dari penggunaan keyword const. #include<iostream.h> const int MAX 5; int main(){ int A[MAX]; for (int C=0; C< MAX; C++){ A[C] = C * 10; } for (int c=0;c< MAX;c++){ cout<<a[c]<<endl; } return 0; } 19
20 2.3 Variabel Berbeda dengan konstanta yang mempunyai nilai tetap, variabel adalah sebuah identifier yang mempunyai nilai dinamis. Arti kata dinamis disini bermaksud bahwa nilai variabel tersebut dapat kita ubah sesuai kebutuhan dalam program. Berikut ini adalah bentuk umum pendeklarasian sebuah variabel dalam C++. tipe_data nama_variabel; Sebenarnya bentuk umum ini sudah dijelaskan pada bagian awal yakni pada bagian yang menerangkan pendeklarasian identifier, hanya disini lebih dikhususkanlagi, yaitu hanya untuk variabel. Jika kita mendeklarasikan beberapa variabel yang bertipe sama maka kita dapat menyingkat penulisannya dengan menggunakan bentuk umum di bawah ini. tipe_data nama_variabel1, nama_variabel2, nama_variabel3; Contoh: int A, B, C; sedangkan kalo kita ingin melakukan inisialisasi, maka sintaksnya dapat di ganti dengan menggunakan sintaks berikut; int A=10, B=15, C=25; 1. Variabel Global Jika kita sedang membuat program dan kita membutuhkan sebuah variabel yang dapat dikenali oleh semua lingkungan dalam program kita, maka kita harus mendefinisikan variabel tersebut sebagai variabel yang bersifat global. Kita telah mengetahui bahwa program dalam bahasa C++ selalu terdapat fungsi utama dengan nama main. Jika kita mendeklarasikan sebuah variabel di luar fungsi, maka dengan sendirinya compiler akan menganggap variabel tersebut sebagai variabel global. Berikut ini adalah contoh program yang menunjukkan penggunaan variabel yang bersifat global. 20
21 #include<iostream.h> int A; /*vaiabel A adalah variabel global karena dideklarasikan di luar fungsi*/ //Membuat fungsi utama int main(){ A=10; cout<< Nilai A= <<A; return 0; } 2. Variabel Lokal Berbeda dengan variabel global, variabel lokal adalah variabel yang hanya dikenal oleh lingkungan luar di dalam program yang kita buat. Adapun bentuk pendeklarasian variabel yang bersifat lokal ini harus berada dalam lingkup fungsi yang dimaksud. Berikut ini contoh pendeklarasian variabel yang bersifat lokal. #include<iostream.h> //Membuat fungsi utama int main(){ int A; /*vaiabel A bersifat lokal dan hanya dikenali oleh fungsi main*/ } A=10; cout<< Nilai A= <<A<<endl; return 0; Jika kita menambahkan fungsi lain di dalam program, dan kita mengakses variabel A yang telah dideklarasikan di dalam fungsi main, maka program tidak akan dijalankan karena fungsi baru yang kita tambahkan tentu tidak dapat mengenali variabel A di atas. Hal ini merupakan bukti nyata bahwa variabel A di atas bersifat lokal Inisialisasi Variabel Dalam penulisan program ada saatnya kita harus melakukan inisialisasi nilai terhadap sebuah variabel yang dideklarasikan. Artinya jika kita tidak melakukan pengisian nilai terhadap variabel tersebut, maka variabel masih 21
22 berisi nilai default. Hal ini sebenarnya sudah disinggung di atas, namun disini akan dibahas melalui contoh program. Berikut ini merupakan contoh program yang tidak melakukan inisialisasi nilai awal. nilai #include<iostream.h> int main(){ int x; /*menampilkan nilai x sebelum dilakukan pemasukan (assignment) */ cout<< Nilai x sebelum dilakukan assignment: ; x=10; cout<< Nilai x setelah dilakukan assignment: ; return 0; } Hasil dari program di atas adalah sebagai berikut: Nilai x sebelum dilakukan assignment: 0 Nilai x sesudah dilakukan assignment:10 Pada hasil di atas dapat kita lihat bahwa jika kita tidak melakukan inisialisasi dan kita sudah memanggil variabel tersebut, maka nilai yang akan ditampilkan oleh compiler adalah nilai 0. Variabel Statis Variabel statis adalah variabel yang menempati ruang memori komuter secara permanen, artinya nilai terakhir dari variabel ini akan terus disimpan. Dalam C++, untuk menyatakan variabel statis adalah dengan menggunakan keyword static. Adapun bentuk umum pendeklarasiannya adalah sebagai berikut: static tipe_data nama_variabel; Seperti halnya variabel biasa, variabel statis ini juga dibagi ke dalam dua jenis, yaitu variabel lokal dan variabel statis global. 1. Variabel statis lokal Variabel statis lokal ini diterapkan di dalam suatu fungsi sehingga nama variabelnya hanya akan dikenali di dalam fungsi saja. Namun perlu diperhatikan bahwa nilai terakhir yang dihasilkan akan terus disimpan. 22
23 Dengan demikian setiap pemanggilan fungsi yang sama pasti akan memberikan hasil yang berbeda. Untuk melihat perbedaan penggunaan variabel statis ini perhatikan kedua program ini dan output kedua program: Menggunakan variabel biasa: #include<iostream.h> //Membuat fungsi dengan nama contoh int contoh(){ int A =0; //mendeklarasikan variabel biasa A = A + 10; return A; } int main(){ int x,y,z; //mendeklarasikan variabel x, y, z x = contoh(); //memanggil fungsi contoh untuk pertama y = contoh(); //memanggil fungsi contoh untuk kedua z = contoh(); //memanggil fungsi contoh untuk ketiga //menampilkan nilai yang telah diproses di dalam fungsi cout<< Nilai fungsi pada pemanggilan pertama: <<x; cout<< Nilai fungsi pada pemanggilan kedua: <<y; cout<< Nilai fungsi pada pemanggilan ketiga: <<z; } return 0; Hasil yang akan diperoleh dapat dilihat di bawah ini: Nilai fungsi pada pemanggilan pertama: 10 Nilai fungsi pada pemanggilan kedua: 10 Nilai fungsi pada pemanggilan ketiga: 10 23
24 Menggunakan variabel statis #include<iostream.h> //Membuat fungsi dengan nama contoh int contoh(){ static int A =0; //mendeklarasikan variabel statis lokal A = A + 10; return A; } //fungsi utama int main(){ int x,y,z; //mendeklarasikan variabel x, y, z x = contoh(); //memanggil fungsi contoh untuk pertama y = contoh(); //memanggil fungsi contoh untuk kedua z = contoh(); //memanggil fungsi contoh untuk ketiga //menampilkan nilai yang telah diproses di dalam fungsi cout<< Nilai fungsi pada pemanggilan pertama: <<x<<endl; cout<< Nilai fungsi pada pemanggilan kedua: <<y<<endl; cout<< Nilai fungsi pada pemanggilan ketiga: <<z<<endl; } return 0; Hasil yang akan diperoleh dapat dilihat di bawah ini: Nilai fungsi pada pemanggilan pertama: 10 Nilai fungsi pada pemanggilan kedua: 20 Nilai fungsi pada pemanggilan ketiga: 30 Jika kita amati hasil program di atas, nilai dari setiap pemanggilan fungsi akan memberikan hasil yang berbeda. Konsepnya sederhana yaitu pemanggilan fungsi yang pertama kali nilai variabel A masih bernilai 0. Fungsi akan menambahkan nilai tersebut dengan 10, maka nilai yang dikembalikan fungsi contoh adalah 10. Sampai disini, karena variabel A adalah variabel statis maka pada saat pemanggilan fungsi yang kedua, variabel A masih menyimpan nilai 10, bukan 0. Dengan demikian pemanggilan fungsi kedua tentu akan menambahkan nilai A dengan nilai 10, sehingga nilai yang dikembalikan adalah 20 dan begitu seterusnya. 2. Variabel statis global Dalam memprogram dengan bahasa C++, kita diizinkan untuk melakukan pembuatan fungsi-fungsi dalam file yang terpisah dari program utama. 24
25 Untuk kasus-kasus tertentu dimana variabel statis lokal tidak dapat digunakan, kita dapat membuat file terpisah yang mempunyai variabel statis global. Sebagai gambaran dari pemahaman materi ini, perhatikanlah contoh penggunaannya dalam potongan sintaks program di bawah ini. static int A; //mendeklarasikan variabel statis global void set_nilaia(int aa); int get_nilaia(); void set_nilaia(int aa){ A = aa; } Int get_nilaia(){ A = A + 10; Return A; } 2.4 Tipe Data Tipe data berfungsi untuk merepresentasikan jenis dari sebuah nilai yang terdapat dalam program. Sebagai contoh kita mempunya suatu data dengan nilai 2, maka 2 termasuk ke dalam tipe bilangan bulat. Begitupun dengan data yang bernilai Makan yuk, maka data tersebut dikategorikan ke dalam tipe teks (string). Kesalahan dalam menyebutkan tipe data akan menyebabkan program yang kita buat tidak dapat dijalankan. Oleh karena itu, kita harus pandai dalam menentukan tipe data yang akan digunakan sesuai kebutuhan program yang kita buat. Dalam bahasa C++ tipe data dibagi menjadi tiga bagian besar yaitu tipe dasar, tipe bentukan, dan tipe enumerasi. 25
26 1. Tipe Data Dasar Dalam C++ terdapat beberapa tipe data dasar yang telah didefinsikan, yaitu yang digolongkan ke dalam tipe bilangan bulat (integer), bilangan desimal (floating-point), tipe logika (boolean), tipe karakter/teks (character/string). Tipe-tipe ini adalah tipe yang siap digunakan tanpa adanya proses manipulasi terlebih dahulu. Tipe Bilangan Bulat Tipe data ini digunakan untuk data-data angka yang tidak mengandung angka di belakang koma, misalnya 2, 21, 78, dll. Tipe data yang termasuk ke dalam kategori ini dapat dilihat pada tabel di bawah ini: Tabel : Daftar Tipe Bilangan Bulat Tipe Data Ukuran (dalam bit) Rentang int 16 atau sampai unsigned int 16 atau 32 0 sampai sign int 16 atau 32 Sama seperti int short int sampai unsigned short int 16 0 sampai signed short int 16 Sama seperti short int long int sampai signed long int 32 sama seperti long int unsigned long int 32 0 sampai Tipe Bilangan Desimal Tipe ini adalah tipe yang merepresentasikan data-data bilangan yang mengandung angka di belakang koma, misalnya 3.21, 2.88, dll. Adapun tipe data yang termasuk ke dalam kategori ini adalah: Tabel : Daftar Tipe Bilangan Desimal Tipe Data Ukuran (dalam bit) Rentang float 32 Enam digit presisi double 64 Sepuluh digit presisi long double 80 Sepuluh digit presisi 26
27 Tipe Logika Tipe ini meprepresentasikan data-data yang hanya mengandung dua buah nilai, yaitu logika (boolean). Nilai logika itu sendiri hanya terdiri dari nilai benar (direpreenasikan dengan nilai selain 0, biasanya nilai 1) dan salah (direpresentasikan dengan nilai 0). Tipe Karakter/String Tipe ini merepresentasikan data-data yang berupa karakter. Tipe data ini dinyatakan dengan tipe char, sedangkan untuk string dinyatakan sebagai pointer dari tipe char, yaitu yang dituliskan dengan char*. Sebagai contoh adalah karakter A, a,, 1, dll merupakan tipe char, sedangkan Dia, Pergi, ke Glodok adalah contoh dari tipe char*. Untuk lebih memudahkan Anda dalam membedakan tipe karakter dan string adalah tanda yang mengapitnya. Dalam C++, tipe karakter diapit oleh tanda petik tunggal, sedangkan tipe string diapit oleh tanda petik ganda. Adapun tipe data dalam kategori ini adalah: Tabel : Daftar Tipe Char Tipe Data Ukuran (dalam bit) Rentang char sampai 127 unsigned char 8 0 sampai 256 signed char sampai Tipe Data Bentukan Tipe data bentukan adalah tipe data yang dibuat sendiri sesuai kebutuhan dalam program yang akan kita buat. Tipe ini lebih dikenal dengan sebutan dalam bahasa asing, yaitu user defined types. Adapun yang termasuk ke dalam tipe bentukan adalah array,struktur dan enumerasi. Struktur Sesuai dengan namanya, struktur adalah tipe data bentukan yang menyimpan lebih dari satu variabel bertipe sama maupun berbeda. Untuk membuat tipe data struktur dalam C++, kita harus mendeklarasikannya dengan menggunakan keyword struct. Berikut ini bentuk umum pendeklarasian tipe data struktur di dalam C++. struct nama_struktur{ tipe_data variabel1; tipe_data variabel2;... } 27
28 Jika kita telah membuat tipe data bentukan baru yang berjenis struktur tentu kita akan menggunakannya di dalam pendeklarasian sebuah variabel. Pada saat itu, kita harus melakukan pengaksesan terhadap isi dari stuktur tersebut dengan menggunakan operator titik (.). Sebagai contoh sederhana untuk menerangkan tipe data struktur adalah dengan melihat suatu objek, misalnya siswa. Kita tahu bahwa siswa pasti mempunyai NIS, nama, alamat, serta data pribadi lainnya. Kasus ini dapat kita implementasikan ke dalam tipe struktur, adapun contoh bentuk implementasinya adalah sebagai berikut: #include <iostream.h> int main(){ struct SISWA{ char NIS[8]; char Nama[25]; char Alamat[20]; char Kota[15]; }; SISWA A; //Mendeklarasikan variabel A yang bertipe siswa. } A.NIS = D ; A.Nama = Desta ; A.Alamat = Margonda ; A.Kota = Depok ; Enumerasi Tipe enumerasi merupakan tipe data yang nilainya terbatas pada nilai-nilai yang telah didefinisikan saja. Tipe enumerasi digunakan untuk membentuk tipe data yang nilainya bersifat pasti. Misalnya untuk mendefinisikan tipe jenis kelamin, nama hari, warna printer dan sebaginya. Kita tahu bahwa jenis kelamin hanya terdiri dari pria dan wanita saja, maka jenis kelamin dapat kita bentuk ke dalam tipe enumerasi. Dalam bahasa C++, untuk mendefinisikan tipe enumerasi adalah dengan menggunakan keyword enum. Berikut ini adalah bentuk umum untuk mendefinisikannya. enum nama_tipe{nilai_1, nilai_2,...}; 28
29 Sebagai contoh, di bawah ini dituliskan contoh-contoh pendefinisian tipe enumerasi. enum JENIS_KELAMIN{Pria, Wanita}; enum HARI{Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu}; Penggunaannya dalam program dapat dilihat pada program berikut ini: #include<iostream.h> enum JENIS_KELAMIN{Pria, Wanita}; int main(){ struct SISWA{ char NIS[8]; char Nama[25]; JENIS_KELAMIN gender; }A; A.NIS = D ; A.Nama = Desta ; A.gender = Wanita; } cout<< NIS ; <<A.NIS; cout<< Nama : <<A.Nama; cout<< Gender : <<A.gender; return 0; Output dari program tersebut adalah: NIS : D Nama : Desta Gender : 1 Nilai 1 di atas menunjukkan indeks dari nilai yang terdapat dalam tipe JENIS_KELAMIN. Sebagai catatan bahwa indeks diawali dari 0, maka nilai Wanita pada tipe JENIS_KELAMIN di atas adalah 1 sedangkan Pria akan bernilai 0. 29
30 2.5 Keyword pada C++ Keyword adalah suatu kata yang telah tersedia dalam komputer. Kita tidak dapat menggunakannya sebagai nama variabel, konstanta, fungsi maupun nama kelas di dalam kode program yang kita tulis Adapun beberapa keyword yang terdapat dalam C++ adalah seperti terlihat dibawah ini; auto break case catch char class const continue default delete do double else enum extern float for friend goto if int long mutable new operator private protected public register return short signed sizeof static struct switch template this throw typedef union unsigned virtual void volatile while 2.6 Pointer dan Reference Salah satu kelebihan dari bahasa C/C++ adalah karena bahasa ini mendukung sepenuhnya untuk pemanipulasian memori dengan mendukung pointer. Namun di balik itu, pointer juga merupakan salah satu fitur C++ yang berbahaya karena dapat mengakibatkan sistem operasi pada komputer kita menjadi crash (rusak). Penggunaan pointer dengan cara yang salah juga dapat menyebabkan bug yang sangat sulit untuk ditemukan pada program kita. Variabel Pointer Secara definisi, pointer dapat dikatakan sebagai suatu variabel yang menyimpan alamat memori. Pada bab-bab sebelumnya kita telah membahas 30
31 penggunaan variabel, tapi variabel-variabel tersebut hanya berisi nilai, bukan alamat. Jika kita mempunyai sebuah variabel dengan tipe data tertentu, maka untuk mendapatkan alamat dari variabel tersebut adalah dengan menggunakan opertor &(ampersand). Alamat inilah yang kemudian akan disimpan ke dalam variabel yang bertipe pointer. Sedangkan untuk mendeklarasikan variabel sebagai pointer, kita hanya menambahkan tanda asterisk(*) di depan nama variabel. Berikut ini bentuk umum dari pendeklarasian variabel yang bertipe pointer. tipe_data *nama_pointer; Sebagai catatan bahwa penulisan di atas dapat diganti dengan tipe_data* nama_pointer atau tipe_data * nama_pointer. Tipe data di atas berguna untuk menyatakan bahwa pointer yang kita deklarasikan tersebut akan ditempati oleh data dengan tipe tertentu. Sebagai contoh, kita akan mendeklarasikan pointer P yang akan ditempati oleh tipe data long, maka bentuk pendeklarasiannya adalah sebagai berikut: long *P; //mendeklarasikan pointer P yang akan merujuk ke tipe long jika kita mempunyai sebuah variabel yang bertipe long (misalnya x), maka kita dapat memerintahkan pointer P di atas untuk menunjuk ke alamat yang ditempati oleh variabel x. Adapun sintaks untuk melakukan hal tersebut adalah seperti yang terlihat di bawah ini. long x; //mendeklarasikan variabel x dengan tipe long long *P; P = &x; //memerintahakan P untuk menunjuk alamat dari variabel x Apabila kita analisis potongan sintaks di atas, sebenarnya konsepnya sangat sederhana. Kita tahu bahwa P adalah pointer (berisi alamat) dan &x juga berisi alamat, maka kita dapat menyimpan alamat dari variabel x tersebut ke dalam pointer P. Kita tidak diizinkan untuk memasukkan sebuah nilai (bukan 31
32 alamat) ke dalam pointer P. Misalnya dengan menuliskan sintak seperti berikut: P = x; //SALAH, karena x berupa nilai (bukan berupa alamat) Jika kita memang ingin mengisikan nilai ke dalam alamat yang disimpan oleh Pointer P, maka seharusnya kita menggunakan tanda astersik (*) di depan nama pointer tersebut, yaitu dengan mengubah sintaks di atas menjadi: *P = x; //BENAR, karena *P adalah nilai yang berada pada pointer P Sebagai catatan bahwa *P ini disebut dengan dereference pointer. Untuk dapat lebih memahami konsep pointer. Berikut ini gambar yang mengilustrasikan kasus di atas. Pointer P Alamat x (&x) 10 Alamat 2 20 Alamat 3 30 Alamat 4 40 Memori Komputer Nilai Pada gambar di atas alamat 1 dari memori di tempati oleh variabel x yang bertipe long. Adapun nilai dari variabel x tersebut adalah 10. Di atas kita mempunyai pointer P yang menunjuk ke alamat x, maka untuk mendapatkan nilai x kita dapat menggunakan dereference pointer, yaitu dengan *P. Dengan demikian dapat disimpulkan bahwa jika: P =&x // keduanya meyimpan alamat Maka: *P = x; //keduanya menyimpan nilai Untuk membuktikan hal di atas, di sini kita akan mengimplementasikannya ke dalam sebuah program sederhana. Adapun sintaks program tersebut adalah sebagai berikut: 32
33 #include<iostream.h> int main(){ long *P; long x; P = &x; x = 10; //mengisikan nilai 10 ke dalam variabel x cout<< Nilai x : <<x<<endl; cout<< Nilai *P : <<*P<<endl; cout<< Nilai P : <<P<<endl; cout<< Nilai &x : <<&x<<endl; *P = 200; //mengisikan nilai 200 ke dalam *P cout<< Nilai x : <<x<<endl; cout<< Nilai *P : <<*P<<endl; cout<< Nilai P : <<P<<endl; cout<< Nilai &x : <<&x<<endl; } return 0; Contoh hasil yang akan diberikan dari program di atas adalah sebagai berikut: Nilai x : 10 Nilai *P : 10 Nilai P : 0065FDFC Nilai &x : 0065FDFC Nilai x : 200 Nilai *P : 200 Nilai P : 0065FDFC Nilai &x : 0065FDFC Jika kita amati hasil program di atas, pada saat kita mengisikan variabel x dengan nilai 10, *P juga akan bernilai 10. Sedangkan pada saat kita memasukkan nilai ke dalam *P dengan nilai 200, variabel x juga akan berubah nilainya menjadi 200. Hal ini menunjukkan bahwa *P akan selalu sama dengan x, dan ini semua disebabkan karena *P dan variabel x tersebut menempati alamat yang sama. Memasukkan Nilai pada Pointer Nilai yang dimaksud disini tentu berupa alamat, bukan berupa nilai data. Walaupun tampak mudah tapi kita juga harus berhati-hati dalam melakukan 33
34 hal ini. Perlu diperhatikan bahwa tipe data dari pointer harus sama dengan tipe data dari variabel yang akan menempatinya. Hal ini merupakan hal yang biasa terabaikan oleh para programmer pemula. Misalnya kita mendeklarasikan pointer P ke tipe double dan kita juga memiliki variabel x yang bertipe int. Pada kasus ini kita tidak diizinkan untuk menyimpan alamat dan variabel x ke pointer P karena tipenya berbeda. Berikut ini sintaks programnya. double *P; int x; //mendeklarasikan variabel yang bertipe int P = &x; /*SALAH, karena P hanya dapat menyimpan alamat dari variabel-variabel yang bertipe double saja*/ Pointer Tanpa Tipe Pada bagian sebelumnya kita telah mengetahui bahwa pointer harus diisikan dengan alamat dari variabel yang bertipe sama dengan tipe pointer tersebut. Sebenarnya ada cara khusus yang untuk membuat pointer yang kita deklarasikan tersebut dapat menunjuk ke semua tipe data, yaitu dengan mendeklarasikan pointer tersebut sebagai pointer tanpa tipe. Pointer semacam ini sering dinamakan dengan void pointer. Adapun bentuk umum untuk mendeklarasikan pointer tanpa tipe ini adalah sebagai berikut: void *nama_pointer; Berikut ini contoh program yang dapat membuktikan bahwa pointer tanpa tipe (void pointer) dapat menyimpan alamat dari variabel-variabel yang bertipe apapun. #include<iostream.h> int main(){ void *P; /*mendeklarasikan pointer P sebagai pointer tanpa tipe*/ //mendeklarasikan variabel x, y, dan z dengan tipe berbeda int x; long y; double z; 34
35 x //memerintahkan P untuk menunjuk ke alamat dari variablel P = &x; x = 10; //mengisikan nilai 10 ke dalam variabel x cout<< Nilai x : <<x; cout<< Nilai P : <<P; cout<< Nilai &x : <<&x; cout; y //memerintahkan P untuk menunjuk ke alamat dari variabel P = &y; y = 2000; //mengisikan nilai 200 ke dalam y cout<< Nilai y : <<y; cout<< Nilai P : <<P; cout<< Nilai &y : <<&y; cout; z //memerintahkan P untuk menunjuk ke alamat dari variabel P = &z; Z = ; // mengisikan nilai ke dalam y cout<< Nilai z : <<z; cout<< Nilai P : <<P; cout<< Nilai &z : <<&z; cout; } return 0; Hasil yang akan diberikan dari program di atas adalah sebagai berikut: Nilai x : 10 Nilai P : 0065FDFC Nilai &x : 0065FDFC Nilai y : 2000 Nilai P : 0065FDF8 Nilai &y : 0065FDF8 Nilai z : Nilai P : 0065FDF0 Nilai &z : 0065FDF0 Seperti kita lihat di atas bahwa P dapat menunjuk ke tipe data yang berbedabeda. Sebagai bukti dair hal ini adalah nilai P yang berbeda, yaitu sesuai dengan alamat dari variabel yang ditunjuk. 35
36 Melakukan Inisialisasi pada Pointer Setiap kita mendeklarasikan sebuah pointer, maka pointer tersebut akan menunjuk lokasi acak di memori. Oleh karena itu kita harus mengeset pointer yang kita deklarasikan tersebut dalam keadaan NULL, atau tidak menunjuk lokasi manapun. Untuk membuktikan hal ini, jalankan program di bawah ini; #include<iostream.h> int main(){ int *P; /* mendeklarasikan pointer P yang akan menunjuk tipe data int */ P = NULL; //menset pointer P dengan nilai NULL } cout<< Alamat yang ditunjuk oleh pointer P: <<P; return 0; Hasil yang didapat adalah sebagai berikut: Alamat yang ditunjuk oleh pointer P: Sebelumnya jika baris P = NULL; dihilangkan maka hasil yang diperoleh adalah: Alamat yang ditunjuk oleh pointer P: A4 Pointer ke Pointer (Multiple Indirection) Dalam C/C++, kita dapat mempunyai pointer yang menunjuk ke pointer lain yang telah menunjuk ke alamat tertenu. Situasi ini sering disebut dengan multiple indirection atau pointer ke pointer. Konsep dari pointer ke pointer ini sederhana, kita tahu bahwa pointer normalnya berisi alamat dari sebuah objek (variabel) yang menyimpan nilai berupa data. Sekarang kita mempunyai pointer lagi yang akan menunjuk ke pointer tadi. Sebagai gambaran, perhatikan gambar ilustrasi di bawah ini. 36
37 Pointer Variabel Alamat Nilai Singel Indirection Pointer Pointer Variabel Alamat Alamat Nilai Mutliple Indirection Untuk mendeklarasikan sebuah pointer yang akan menunjuk ke pointer lain adalah dengan menggunakan tanda asterisk sebanyak dua kali (**). Sebagai contoh, jika kita mendeklarasikan pointer seperti pada potongan sintaks di bawah ini: int **P; Maka P bukan pointer yang menunjuk ke tipe data int, melainkan pointer yang menunjuk pointer ke tipe data int. Untuk dapat lebih memahaminya, perhatikan program di bawah ini; #include<iostream.h> int main(){ int x = 25; //mendeklarasikan variabel x dengan nilai 25 int *P1; //mendeklarasikan pointer P1 yang menunjuk ke tipe int int **P2; // mendeklarasikan pointer P2 yang menunjuk ke pointer P1 P1 = &x; P2 = &P1; //menampilkan nilai cout<< Nilai x : <<x<<endl; cout<< Nilai *P1 : <<*P1<<endl; cout<< Nilai *P2 : <<*P2<<endl; cout<< Nilai **P2: <<**P2<<endl; //menampilkan alamat cout<< Nilai &x : <<&x<<endl; cout<< Nilai P1 : <<P1<<endl; cout<< Nilai P2 : <<P2<<endl; } return 0; 37
38 Hasil yang akan diperoleh dari program di atas adalah sebagai berikut; Nilai x : 25 Nilai *P1 : 25 Nilai *P2 : 0065FE00 Nilai **P2 : 25 Nilai &x Nilai P1 Nilai P2 : 0065FE00 : 0065FE00 : 0065FDFC Seperti yang kita lihat bahwa nilai x dapat diakses dengan menggunakan *P1 atau **P2 sedangkan alamat dari variabel x dapat diakses dengan menggunakan &x, P, ataupun *P2 (catatan: *P2 merupakan nilai yang menempati alamat yang ditunjuk oleh pointer P2). Hal ini membuktikan bahwa pointer P2 tidak menunjuk ke tipe data int, melainkan menunjuk ke pointer P1. Dan yang terakhir, P2 sendiri menyimpan alamat dari pointer P1. Untuk contoh di atas, P2 menyimpan alamat 0065FDFC. Reference Reference digunakan untuk membuat alias atau nama lain dari sebuah variabel. Sebagai contoh jika terdapat seseorang yang bernama Roy Marten, maka kita dapat membuat alias atau julukan dari nama tersebut, misalnya dengan alias RM. Oleh karena Roy Marten dan RM sebenarnya adalah satu orang, maka apa yang dilakukan terhadap Roy Marten, berarti itu juga terjadi pada RM. Setelah mendapat gambaran tersebut, sekarang kita kembali ke pokok permasalahan kita tentang reference. Untuk membuat reference adalah dengan menggunakan tanda & di belakang tipe data yang akan diacu. Berikut ini bentuk umum dari pembuatan reference. tipe_data& nama_alias = nama_variabel; Untuk dapat memahami lebih jauh mengenai reference ini, perhatikan contoh program di bawah ini. #include<iostream.h> int main(){ 38
39 int x; //mendeklarasikan variabel x //membuat alias dari variabel x dengan nama AliasX int& AliasX = x; //mengisikan nilai ke dalam variabel x x = 12; //menampilkan nilai yang disimpan dalam variabel x dan AliasX cout<< Nilai x : <<x; cout<< Nilai AliasX : <<AliasX; cout<< \n ; //mengisikan nilai ke dalam AliasX AliasX = 35; //menampilkan kembali nilai yang disimpan dalam variabel x dan AliasX cout<< Nilai x cout<< Nilai AliasX : <<x; : <<AliasX; } return 0; Hasil yang diperoleh dari program di atas adalah sebagai berikut; Nilai X : 12 Nilai AliasX : 12 Nilai X : 35 Nilai AliasX : 35 Apabila kita analisis hasil dari program di atas, tampak bahwa pada saat kita memasukkan nilai 12 ke dalam variabel x, AliasX juga akan bernilai 12. Begitu juga sebaliknya, pada saat kita memasukkan nilai 35 ke dalam AliasX, variabel X juga akan bernilai 35. Alamat dari Reference Nama alias dan variabel menempati alamat yang sama di memori, jadi keduanya bukanlah dua buah variabel yang berbeda, melainkan satu variabel yang mempunyai dua nama. 39
40 Soal Latihan 1. Jika kita membutuhkan variabel yang dapat dikenali oleh semua lingkungan dalam program kita, maka mendefinisikan variabel tersebut sebagai : a. Variabel statis b. Variabel global c. Variabel lokal d. Variabel register 2. Berikut ini yang termasuk dalam user defined types kecuali a. array b.struktur c. enumerasi d.char 3. Untuk mendapatkan alamat dari sebuah variabel, dapat digunakan operator : a. $ b. & c. * d. "" Soal Praktek 3. Buatlah program C++ untuk menampilkan alamat dari 3 variabel yang berbeda tipe datanya. 4. Buatlah sebuah struktur yang berisi nama, alamat dan nomor telepon. Kemudian isi dan tampilkan isi struktur tersebut. 40
41 BAB III Pemrograman Lanjut Operasi adalah suatu aksi yang dijalankan pada satu atau lebih nilai baik untuk memodifikasi nilai tersebut yang dilakukan oleh satu atau kedua variabel atau untuk menghasilkan sebuah nilai baru dengan mengkombinasikan variabel. Oleh karena itu, sebuah operasi dijalankan menggunakan paling sedikit satu simbol dan satu nilai. Simbol yang digunakan pada operasi disebut sebuah operator. Sebuah variabel atau sebuah nilai dilibatkan pada sebuah operasi disebut operan. 3.1 Operator Operator Assignment Operator assignment adalah operator yang berfungsi untuk memasukkan (assign) nilai ke dalam suatu variabel ataupun konstanta. Operator ini dilambangkan dengan tanda sama dengan (=). Berikut ini contoh program #include<iostream.h> int main(){ //mendeklarasikan konstanta melakukan assignment dengan nilai 3.14 const PI = 3.14; //mendeklarasikan variabel-variabel char MyChar; char MyString; int MyInteger; double MyDouble; //melakukan assignment terhadap variabel di atas MyChar = P ; MyString = Saya semangat sekali ; MyInteger = 21; MyDouble = ; //menampilkan nilai dari variabel di atas cout<< MyChar : <<MyChar<<endl; cout<< MyString : <<MyString<<endl; cout<< MyInteger : <<MyInteger<<endl; cout<< MyDouble : <<MyDouble<<endl; return 0; yang menggunakan operator tersebut: Hasil yang akan diberikan dari program di atas adalah: MyChar : P MyString : Saya semangat sekali MyInteger : 21 MyDouble :
42 Operator Unary Dalam ilmu matematika yang disebut dengan operator unary adalah operator yang hanya melibatkan sebuah operan. Adapun yang termasuk ke dalam operator unary adalah seperti tampak pada tabel di bawah ini. Tabel : Operator Unary Operator Jenis Operasi Contoh + Membuat nilai positif +7 - Membuat nilai negatif Increament C++ -- Decrement C-- o Increament Increament adalah suatu penambahan nilai yang terjadi pada sebuah variabel. Adapun opeartor yang digunakan untuk melakukan Increament adalah operator ++. Operator ini akan menambahkan nilai dari suatu variabel dengan nilai 1. Terdapat dua buah jenis Increament yang terdapat dalam bahasa C++, yaitu pre-increament dan post-increament. Arti dari pre-increament adalah melakukan penambahan nilai sebelum suatu variabel itu diproses, sedangkan post-increament merupakan kebalikannya, yaitu melakukan proses terlebih dahulu sebelum dilakukan penambahan nilai. Adapun bentuk umum dari pre-increament dan post-increament dapat dilihat di bawah ini. //Melakukan pre-increament ++nama_variabel; //Melakukan post-incarement Berikut Nama_variabel++; ini contoh program yang membedakan antara pre-increament dan post-increament. #include<iostream.h> int main(){ int C; //mendeklarasikan variabel C //mengisikan nilai ke dalam variabel C dengan nilai 5 C = 5; //melakukan pre-increament cout<< Nilai awal C : <<C<<endl; 42
43 cout<< Nilai ++C : <<++C<<endl; cout<< Nilai C akhir : <<C<<endl; cout<< \n ; //mengubah nilai dalam variabel C dengan nilai 10 C = 10; //melakukan post-increament cout<< Nilai awal C : <<C<<endl; cout<< Nilai C++ : <<C++<<endl; cout<< Nilai C akhir : <<C<<endl; cout<< \n ; } return 0; Hasil yang akan diberikan program di atas adalah: Nilai C awal : 5 Nilai ++C : 6 Nilai C akhir : 6 Nilai C awal : 10 Nilai C++ : 10 Nilai C akhir : 11 Pada saat kita melakukan pre-increament, nilai C dinaikkan dulu sebelum diproses (dalam hal ini ditampilkan ke layar) sehingga yang tampil adalah nilai 6. Sedangkan pada saat melakukan post-increament nilai dari variabel C diproses (ditampilkan) lebih dahulu sebelum dinaikkan nilainya. Hal ini menyebabkan nilai yang ditampilkan masih tetap 10. Namun pada saat pemanggilan nilai C setelah proses post-increament, nilai C tentu telah bertambah satu, sehingga yang ditampilkan adalah 11. o Decrement Decrement merupakan kebalikan dari proses Increament, yaitu menurunkan (mengurangi) nilai dari suatu variabel. Sama juga seperti pada Increament, decrement juga dibagi ke dalam dua jenis yaitu pre decrement dan post decrement Operator Binary 43
44 Operator binary adalah operator yang digunakan dalam operasi yang melibatkan dua buah operan. Dalam bahasa C++, operator binary ini dikelompokkan lagi ke dalam empat jenis. o Operator Aritmatika Operator aritmatika adalah operator yang digunakan untuk melakukan operasi-operasi aritmatika seperti penjumlahan, pengurangan dan sebagainya. Adapun yang termasuk dalam operator aritmatika di dalam C++ adalah seperti yang tampak pada tabel di bawah ini; Tabel : Operator Aritmatika Operator Jenis Operasi Contoh + Penjumlahan = 5 - Pengurangan 5 3 = 2 * Perkalian 2 * 3 = 6 / Pembagian 10 / 3 = 3.33 % Sisa bagi (modulus) 10 % 3 = 1 o Operator Logika Operator logika adalah operator yang digunakan untuk melakukan operasi dimana nilai yang dihasilkan dari operasi tersebut hanya berupa nilai benar (true) atau salah (false). Nilai ini disebut dengan nilai boolean. Dalam bahasa C++ nilai benar tersebut direpresentasikan dengan bilangan selain 0 (biasanya nilai 1), sedangkan nilai salah direpresentasikan dengan nilai 0. Adapun yang termasuk ke dalam operator logika dalam C++ adalah seperti yang tampak pada tabel di bawah ini. Tabel : Operator Logika Operator Jenis Operator Contoh && AND (dan) 1 && 1 = 1 OR (atau) 1 0 = 1 NOT (negasi)!0 = 1 Berikut tabel hasil dengan menggunakan operator logika Tabel : Hasil Operator Logika 44
45 x y X && Y X Y!X o Operator Relasional Operator rasional adalah operator yang digunakan untuk menentukan relasi atau hubungan dari dua buah operan. Operator ini ditempatkan di dalam sebuah ekspresi yang kemudian akan menentukan benar atau tidaknya sebuah eskpresi. Adapun yang termasuk dalam operator relasional di dalam C++ adalah seperti yang tampak pada tabel di bawah ini. Tabel : Operator Relasional Operator Jenis Operator Contoh > Lebih besar (5>2) = 1 < Lebih kecil (5<2) = 0 >= Lebih besar sama dengan (5>=5) = 1 <= Lebih kecil sama dengan (5<=2) = 0 == Sama dengan (5==2) = 0!= Tidak sama dengan (5!=2) = 1 o Operator ini banyak digunakan untuk melakukan pengecekan sebuah ekspresi (kondisi) dalam struktur percabangan. Operator Bitwise C++ mendukung penuh operator-operator bitwise. Operator bitwise sendiri berguna untuk melakukan operasi-operasi yang berhubungan dengan pemanipulasian bit. Sebagai catatan bahwa operator bitwise ini hanya dapat dilakukan pada operan yang bertipe char dan int saja karena ini berkoresponden dengan tipe byte atau word di dalam bit. Adapun yang termasuk dalam operator bitwise dalam C++ adalah seperti tampak pada tabel di bawah ini. Tabel : Operator Bitwise 45
46 Operator Jenis Operator Contoh & AND 1 & 0 = 0 OR 1 0 = 1 ^ Exclusive OR (XOR) 1 ^ 1 = 0 ~ NOT ~1 = 0 >> Shift Right 5<<1 = 10 << Shift Left 10>>1 = 5 Fungsi dari operator &, dan ~ di atas sama dengan operator &&, dan! pada operator logika, perbedaannya hanya operator bitwise ini bekerja bit demi bit, sedangkan pada operasi logika bekerja untuk setiap nilai. Operator Ternary Operator Ternary adalah operator yang digunakan dalam operasi yang melibatkan tiga buah operan. Adapun operator yang digunakan untuk menyatakannya adalah operator?:. Konsep yang mendasari operasi ini adalah suatu percabangan (pemilihan) yang didasarkan atas kondisi tertentu. Berikut ini bentuk umum dari penggunaan operator ternary. Ekspresi1? Ekspresi2 : Ekspresi3; Jika ekspresi1 bernilai benar, maka program akan mengeksekusi ekspresi2. Sedangkan jika ekspresi bernilai salah maka yang dieksekusi adalah ekspresi3. Operator SizeOf Kita telah melihat bahwa ketika mendeklarasikan sebuah variabel, compiler mengalokasikan suatu bagian dari lokasi memori untuk menyimpan variabel tersebut. C++ menyediakan suatu operator sizeof untuk melihat berapa banyak ruang yang disediakan untuk suatu jenis tipe data atau variabel tertentu pada program yang menggunakannya. Ada empat metode yang dapat Anda gunakan dengan operator sizeof; menggunakan variabel atau tipe data. Sintaks umum dari operator sizeof adalah: sizeof NamaVariabel; sizeof TipeData; 46
47 sizeof (NamaVariabel); sizeof (TipeData); Alasan Anda harus menggunakan operator sizeof pada variabel adalah karena, jika Anda mengubah variabel tersebut yaitu, jika anda menjalankan operasi pada variabel tersebut, operator sizeof akan memberitahukannya dan mengeluarkan hasil yang tepat. Kadang dan hampir selalu, jika anda menggunakan sizeof pada tipe data, Anda mungkin akan mendapatkan bug, atau program tersebut tidak akan di compile. Berikut ini adalah contoh programnya: #include <iostream> using namespace std; int main() { double Periode = ; int sizeof = sizeof Periode; cout << "Ukuran dari Periode adalah " << sizeof << " bytes\n\n"; } return 0; 3.2 Array Array adalah sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama. Setiap data tersebut menempati lokasi atau alamat memori yang berbeda-beda dan selanjutnya disebut dengan elemen array. Elemen array itu kemudian dapat diakses melalui indeks yang terdapat di dalamnya. Namun penting sekali untuk diperhatikan bahwa dalam C++, indeks array selalu dimulai dari 0, bukan 1. Berikut ini gambar yang mengilustrasikan sebuah array. Nilai ke-1 Nilai ke-2... Nilai ke-n Nilai elemen array Alamat ke-1 Alamat ke-2... Alamat ke-n Alamat elemen array N Indeks elemen array 47
48 Untuk mendeklarasikan sebuah array dalam C++, kita harus menggunakan tanda [ ]. Adapun bentuk umum dari pendeklarasiannya adalah sebagai berikut; tipe_data nama_array[jumlah_elemen]; Sebagai contoh jika kita ingin mendeklarasikan sebuah array (misalnya dengan nama BUKU) yang memiliki 25 elemen dengan tipe data int, maka pendeklarasiannya adalah seperti yang tampak di bawah ini. int BUKU[25] Ruang memori yang dibutuhkan untuk pendeklarasian array tersebut adalah 100 byte, yang berasal dari 25 x 4 byte (4 merupakan ukuran dari tipe data int). Sedangkan cara yang digunakan untuk mengakses elemennya adalah dengan menuliskan indeksnya. Misalnya kita ingin mengambil nilai yang terdapat pada elemen ke-10 dan menampung nilai tersebut ke dalam sebuah variabel yang bertipe int juga (misal x), mka kita harus menuliskan sintaks dibawah ini. x = BUKU[9] Mengisikan Nilai ke dalam Elemen Array Untuk mengisikan nilai ke dalam elemen-elemen array, kita dapat melakukannya langsung untuk setiap elemen, misalnya seperti berikut. A[0] = 10 A[1] = 20 A[2] = 13...dst Namun cara ini tidak direkomendasikan karena tidak efisien. Cara yang lebih umum dan banyak digunakan oleh para pemrogram untuk mengisikan nilai ke dalam elemen-elemen array adalah dengan menggunakan pengulangan (looping). Cara ini akan jauh lebih cepat dibandingkan cara manual seperti di atas. Sebagai contoh jika kita ingin melakukan pengisian 25 elemen array, maka kita dapat menuliskan sintak seperti di bawah ini. for (int C; C<25; C++){ cout<< A[ <<C<< ]= ; cin>>a[c]; 48
49 } Berikut ini contoh program yang di dalamnya terdapat proses pengisian array dengan menggunakan proses pengulangan. #include<iostream.h> int main(){ //mendeklarasikan array A dengan 5 buah elemen bertipe int int A[5]; } //memasukkan nilai ke dalam elemen array for (int C; C<5; C++){ cout<< A[ <<C<< ]= ; cin>>a[c]; } return 0; Menampilkan Nilai yang Terdapat pada Array Setelah memahami cara mengisikan nilai ke dalam elemen array sekarang kita akan membahas bagaimana cara untuk mengakses atau menampilkan nilai-nilai tersebut. Konsepnya sama seperti di atas, kita akan menggunakan pengulangan untuk menampilkannya. Berikut ini program yang akan mengisikan dan menampilkan nilai yang terdapat pada elemen array. #include<iostream.h> int main(){ //mendeklarasikan array A dengan 5 buah elemen bertipe int int A[5]; //memasukkan nilai ke dalam elemen array Cout<< Masukkan nilai yang diinginkan ; for (int C; C<5; C++){ cout<< A[ <<C<< ]= ; cin>>a[c]; } cout<< \n //menampilkan nilai yang terdapat dalam elemen array cout<< Menampilkan nilai yang telah dimasukkan ; for (int J=0; J<5; J++){ cout<< Nilai yang terdapat pada elemen ke- <<J+1<< : <<A[J]; } return 0; 49
50 Contoh hasil yang akan diberikan dari progam di atas adalah sebagai berikut; Masukkan nilai yang diinginkan A[0] = 10 A[1] = 21 A[2] = 13 A[3] = 35 A[4] = 28 Menampilkan nilai yang telah dimasukkan Nilai yang terdapat pada elemen ke-1 : 10 Nilai yang terdapat pada elemen ke-2 : 21 Nilai yang terdapat pada elemen ke-3 : 13 Nilai yang terdapat pada elemen ke-4 : 35 Nilai yang terdapat pada elemen ke-5 : 28 Melakukan Inisialisasi Array Pada saat kita mendeklarasikan sebuah array, kita dapat langsung melakukan inisialisasi nilai terhadap elemen-elemen array di dalamnya. Hal ini dimaksudkan untuk mengisikan nilai default pada elemen array sehingga jika elemen bersangkutan tidak diisi dengan nilai baru, maka nilai yang digunakan adalah nilai yang telah ada. Adapun bentuk umum dari inisialisasi array adalah seperti yang tampak di bawah ini. tipe_data nama_array[n] = {nilai1, nilai2,..., nilain}; Berikut ini adalah contoh program yang menunjukkan proses inisialisasi nilai pada elemen-elemen array. #include<iostream.h> int main(){ /* mendeklarasikan array dengan langsung menginisialisasi nilainya */ int A[5] = {10, 20, 30, 40, 50}; //menampilkan nilai yang terdapat pada elemen array cout<< Sebelum dilakukan perubahan nilai <<endl; cout<< A[0] = <<A[0]<<endl; cout<< A[1] = <<A[1]<<endl; cout<< A[2] = <<A[2]<<endl; cout<< A[3] = <<A[3]<<endl; cout<< A[4] = <<A[4]<<endl; //mengubah elemen ke-1 dan ke-2 A[0] = 12; A[1] = 25; 50
51 //menampilkan kembali nilai yang terdapat pada elemen array cout<< Setelah dilakukan perubahan nilai <<endl; cout<< A[0] = <<A[0]<<endl; cout<< A[1] = <<A[1]<<endl; cout<< A[2] = <<A[2]<<endl; cout<< A[3] = <<A[3]<<endl; cout<< A[4] = <<A[4]<<endl; } return 0; Hasil yang akan diberikan dari program di atas adalah sebagai berikut; Sebelum dilakukan perubahan nilai Setelah dilakukan perubahan nilai Array yang Bersifat Konstan Nilai dalam elemen array dapat dibuat tetap, yaitu dengan mendefinisikannya sebagai konstanta. Caranya sama seperti pada saat kuta membuat konstanta dari identifier, yaitu dengan menggunakan keyword const di depan nama array yang didefinisikan. Berikut contoh programmnya. #include<iostream.h> int main(){ /* mendeklarasikan array dengan langsung menginisialisasi nilainya */ const int A[5] = {10, 20, 30, 40, 50}; } //menampilkan nilai yang terdapat pada elemen array A for (int C=0; C<5; C++){ cout<< A[<<C<<] = <<A[C]; } return 0; Hasil yang akan diberikan dari program di atas adalah sebagai berikut; 51
52 A[0] = 10 A[1] = 20 A[2] = 30 A[3] = 40 A[4] = 50 Nilai-nilai yang ditampilkan di atas akan bernilai tetap karena kita mendefinisikan array A tersebut dengan nilai konstan. Array Sebagai Tipe Data Bentukan Dalam C++, array juga dapat digunakan sebagai tipe data bentukan seperti halnya struktur dan enumerasi. Untuk melakukan hal ini kita harus menggunakan keyword typedef, dimana berfungsi untuk memberikan nama lain dari array yang dideklarasikan. Berikut ini bentuk umum untuk membuat array sebagai tipe data bentukan. typedef tipe_data nama_array[jumlah_elemen]; Untuk lebih memahaminya, perhatikan contoh program di bawah ini dimana terdapat sebuah array yang didefinisikan sebagai tipe data bentukan; #include<iostream.h> int main(){ /* mendeklarasikan tipe data berbentuk array dengan nama BUKU */ typedef int BUKU[5]; /* menggunakan tipe data BUKU untuk mendeklarasikan variabel A */ BUKU A; int C; //variabel Bantu untuk melakukan pengulangan //mengisikan nilai elemen ke dalam variabel A for (C=0; C<5; C++){ A[C] = (C+1) * 100; } //menampilkan nilai elemen yang terdapat pada variabel A for (C=0; C<5; C++){ cout<< A[ <<C<< ] = <<A[C]; } return 0; 52
53 } Program di atas akan memberikan hasil seperti berikut; A[0] = 100 A[1] = 200 A[2] = 300 A[3] = 400 A[4] = 500 Seperti yang kita lihat di atas bahwa sebuah array dapat digunakan untuk mendeklarasikan variabel lain. Pada kasus ini kita membuat sebuah tipe data bentuk dengan nama BUKU, selanjutnya kita menggunakan tipe tersebut untuk mendeklarasikan variabel A. Apabila kita amati, sebenarnya kita dapat langsung mendeklarasikan variabel A tersebut dengan tipe array, yaitu dengan sintaks di bawah ini. int A[5]; Mungkin anda bingung kenapa harus dituliskan sebagai tipe data? Jawabnya adalah karena tipe tersebut dapat digunakan untuk mendeklarasikan variabel dengan cepat. Misalnya kita akan mendeklarasikan lima buah variabel (dengan nama A, B, C, D, dan E) yang bertipe array dari tipe int dan terdiri dari 5 elemen, maka jika ditulis dengan deklarasi biasa, sintaksnya adalah seperti berikut. int A[5]; int B[5]; int C[5]; int D[5]; int E[5]; Namun, jika sebelumnya kita mendefinisikan sebuah tipe data yang berbentuk array (misalnya dengan nama BUKU), maka sintaksnya akan terlihat lebih rapi, yaitu seperti di bawah ini. typedef BUKU[5]; //membuat tipe data dengan nama buku Array BUKU Multidimensi A, B, C, D, E; Array multidemensi yaitu array yang terdiri dari beberapa subskrip array. Sebagai contoh, array 2 dimensi adalah array yang mempunyai 2 subskrip array, 3 dimensi mempunyai 3 subskrip array dan seterusnya. Array seperti ini sering digunakan untuk pemrosesan matrik. Pada bagian ini kita akan 53
54 mempelajari bagaimana C++ dapat memproses sebuah array yang terdiri dari dua subskrip array atau lebih. Array Dua Dimensi Array dua dimensi adalah array yang memiliki dua subskrip, yaitu baris dan kolom. Bentuk umum pendeklarasian sebuah array dua dimensi di dalam C++ adalah sebagai berikut; tipe_data nama_array[jumlah_elemen_baris][jumlah_elemen_kolom]; Misalnya kita akan melakukan penjumlahan 2 buah matriks ordo 3x2, maka contoh sintaks program yang akan kita tuliskan adalah seperti yang terlihat di bawah ini. #include<iostream.h> int main(){ //mendefinsikan tipe data yang berbentuk array dua dimensi typedef int MATRIK32[3][2]; //mendeklarasikan array A sebagai array dua dimensi MATRIK32 A, B, C; int j,k; //mendeklarasikan variabel untuk indeks pengulangan //mengisikan nilai ke dalam elemen-eleman array A for(j=0; j<3; j++){ for(k=0; k<2; k++){ cout<< A[ <<j<< ][ <<k<< ] = ;cin>>a[j][k]; } } cout<< \n ; //mengisikan nilai ke dalam elemen-elemen array B for(j=0; j<3; j++){ for(k=0; k<2; k++){ cout<< B[ <<j<< ][ <<k<< ] = ;cin>>b[j][k]; } } cout<< \n ; /* melakukan penjumlahan A dan B dan menyimpan hasilnya ke dalam array C*/ for(j=0; j<3; j++){ for(k=0; k<2; k++){ C[j][k]= A[j][k] + B[j][k]; } } 54
55 } //Menampilkan hasil penjumlahan for(j=0; j<3; j++){ for(k=0; k<2; k++){ cout<< C[ <<j<< ][ <<k<< ] = <<C[j][k]; } } return 0; Contoh hasil yang akan diberikan dari program di atas adalah sebagai berikut; A[0][0] = 1 A[0][1] = 2 A[1][0] = 3 A[1][1] = 4 A[2][0] = 5 A[2][1] = 6 B[0][0] = 1 B[0][1] = 2 B[1][0] = 3 B[1][1] = 4 B[2][0] = 5 B[2][1] = 6 C[0][0] = 2 C[0][1] = 4 C[1][0] = 6 C[1][1] = 8 C[2][0] = 10 C[2][1] = 12 Secara matematis, contoh hasil dari program di atas dapat dituliskan seperti di bawah ini: =
56 Inisialisasi pada Array Multidimensi Sama seperti array satu dimensi, pada array multidimensi juga dapat dilakukan inisialisasi nilai ke dalam elemen-elemennya. Adapun cara melakukannya adalah seperti contoh yang terlihat di bawah ini. int A[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; Namun untuk memudahkan proses inisilaisasi, C++ menizinkan kita untuk melakukan pengelompokan untuk setiap baris, yaitu dengan sintaks berikut. int A[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 3.3 Struktur Percabangan Salah satu permasalahan yang pasti ditemui dalam pembuatan program adalah suatu percabangan. Percabangan yang dimaksud disini tidak lain adalah suatu pemilihan pernyataan yang akan dieksekusi dimana pemilihan tersebut didasarkan atas kondisi tertentu. Di dalam C++, terdapat dua buah jenis struktur yang digunakan untuk mengimplementasikan suatu percabangan, yaitu dengan menggunakan struktur if dan struktur switch. Pernyataan-pernyataan yang terdapat dalam sebuah blok percabangan akan dieksekusi hanya jika kondisi yang didefinisikan terpenuhi (bernilai benar). Artinya jika kondisi tidak terpenuhi (bernilai salah), maka pernyataanpernyataan tersebut juga tidak ikut dieksekusi atau dengan kata lain akan diabaikan oleh compiler. Struktur Satu Kondisi Struktur ini merupakan struktur yang paling sederhana karena hanya melibatkan satu buah ekspresi yang akan diperiksa. Bentuk umum dari struktur percabangan yang memiliki satu kondisi adalah sebagai berikut: // jika terdapat lebih dari satu pernyataan if (kondisi){ Pernyataan1; Pernyataan2; } //jika hanya terdapat satu pernyataan if(kondisi) pernyataan; 56
57 Pada kondisi Anda dapat menggunakan operator atau && dalam menentukan sebuah ekspresi. Berikut ini contoh program dengan satu kondisi. #include<iostream.h> int main(){ int bilangan; char huruf; //meminta user untuk memasukkan sebuah bilangan cout<< Masukkan sebuah bilangan bulat: ; cin>>bilangan; if ((bilangan < 0)&&(bilangan < 10)) cout<<bilangan<< lebih besar dari nol dan lebih kecil dari sepuluh //meminta user untuk memasukkan sebuah huruf cout<< Masukkan sebuah huruf: ; cin>>huruf; if((huruf == A ) (huruf == I ) (huruf == U ) (huruf == E ) (huruf == O ) (huruf == a ) (huruf == i ) (huruf == u ) (huruf == e ) (huruf == o )){ cout<<huruf<< adalah salah satu huruf vokal ; } return 0; } Contoh hasil yang diberikan oleh program adalah sebagai berikut; Masukkan sebuah bilangan bulat : 6 6 lebih besar dari nol dan lebih kecil dari sepuluh Masukkan sebuah huruf : A A adalah salah satu huruf vokal Struktur Banyak Kondisi Struktur percabangan jenis ini sedikit lebih kompleks dibandingkan dengan struktur yang hanya mempunyai satu kondisi. Adapun bentuk umum dari struktur percabangan jenis ini adalah sebagai berikut; if (kondisi1){ Pernyataan1; // jika kondisi satu terpenuhi } else if (kondisi2){ Pernyataan2; // jika kondisi dua yang terpenuhi } else { pernyatann; // jika semua kondisi tidak ada yang memenuhi } 57
58 Berikut ini adalah contoh program yang menggunakan struktur banyak kondisi. #include<iostream.h> int main(){ double nilai; char indeks; /* meminta user untuk menentukan nilai yang diperoleh dalam bentuk bilangan */ cout<< Masukkan nilai yang diperoleh: ; cin>>nilai; //melakukan konversi nilai menjadi nilai indeks if (nilai>=85){ indeks = A ; } else if (nilai >= 70){ indeks = B ; } else if (nilai >= 55){ indeks = C ; } else if (nilai >= 40){ indeks = D ; } else { indeks = E ; } //menampilkan nilai indkes yang didapatkan cout<< Nilai indkes dari nilai <<nilai<< adalah <<indeks; } return 0; Contoh hasil dari program di atas adalah sebagai berikut: Masukkan nilai yang diperoleh : 76 Nilai indeks dari nilai 76 adalah B Pemilihan Menggunakan Keyword switch Selain menggunakan struktur if, C++ juga menawarkan kepada kita untuk dapat melakukan pemilihan dengan menggunakan keyword switch. Bentuk umum dari struktur percabangan yang menggunakan keyword switch ini adalah sebagai berikut: 58
59 switch(ekspresi){ case nilai_konstan1; pernyatan; break; case nilai_konstan2; pernyatan; break; case nilai_konstann; pernyatan; break; } default pernyatan_pernyataan_alternatif; Tipe data dari ekspresi di atas haruslah bilangan bulat atau karakter. Selain tipe tersebut, C++ tidak mengijinkan. Sedangkan pernyataan default berguna untuk mengeksekusi pernyataan alternatif, yaitu nilai yang kita masukkan ternyata tidak sesuai dengan nilai-nilai konstan yang telah didefinisikan. Kita dapat mendefinisikan nilai konstan tersebut dengan menggunakan pernyataan case. Dalam bahasa C standar kita diizinkan untuk menuliskan 257 buah pernyataan case dalam sebuah struktur percabangan yang menggunakan keyword switch. Sedangkan C++ menijinkan buah. Namun pada prakteknya sebaiknya kita membatasi pemilihan tersebut untuk efisiensi program yang kita buat. Pernyataan break di atas berfungsi sebagai pernyataan peloncatan. Berikut ini contoh program implementasi konsep percabangan dengan menggunakan keyword switch. Contoh berikut menentukan nama hari dari nilai bilangan yang dimasukkan. Sintaksnya dapat dilihat pada program di bawah ini. 59
60 #include<iostream.h> int main(){ int bil; cout<< Masukkan sebuah bilangan (1 7): ; cin>>bil; switch(bil){ case 1: cout<< Hari ke- <<bil<< : adalah Minggu ;break case 2: cout<< Hari ke- <<bil<< : adalah Senin ;break case 3: cout<< Hari ke- <<bil<< : adalah Selasa ;break case 4: cout<< Hari ke- <<bil<< : adalah Rabu ;break case 5: cout<< Hari ke- <<bil<< : adalah Kamis ;break case 6: cout<< Hari ke- <<bil<< : adalah Jumat ;break case 7: cout<< Hari ke- <<bil<< : adalah Sabtu ;break default : cout<< Tidak terdapat nama hari ke- <<bil; } } return 0; Contoh hasil yang diberikan program di atas adalah sebagai berikut; Masukkan sebuah bilangan (1 7) : 3 Hari ke-3 adalah Selasa Jika Anda memasukkan angka 7 pada program, maka program akan mengeksekusi pernyataan default. Sama seperti struktur percabangan yang menggunakan statement if, struktur yang menggunakan pernyataan switch juga dapat dituliskan secara bersarang. Hal tersebut dapat digambarkan pada gambar di bawah ini. switch(ekspresi){ case nilai_konstan1;{ switch(ekspresi2){ case nilai_konstana; pernyataan ; break; case nilai_konstanb; pernyataan ; break; } Break; } case nilai_konstan2;{ pernyataan; break; 60
61 } } 3.4 Struktur Pengulangan Pengulangan adalah suatu proses yang melakukan pernyataan-pernyatan dalam sebuah program secara terus-menerus sampai terdapat kondisi untuk menghentikannya. Struktur pengulangan akan sangat membantu dalam efisiensi program. o Struktur For Struktur pengulangan jenis ini digunakan untuk melakukan pengulangan yang telah diketahui banyaknya. Jenis ini merupakan jenis struktur pengulangan yang paling mudah dipahami. Untuk melakukan pengulangan dengan menggunakan struktur ini, kita harus memiliki sebuah variabel sebagai indeksnya. Namun perlu sekali untuk diperhatikan bahwa tipe data dari variabel yang akan digunakan sebagai indeks haruslah tipe data yang mempunya urutan yang teratur, misalnya tipe data int(0, 1, 2,...) atau char( a, b, c,...). Adapun bentuk umum dari struktur for adalah seperti yang tampak dibawah ini: //untuk pengulangan yang sifatnya menaik (increment) for (variabel = nilai_awal; kondisi; variabel++){ pernyataan_yang_akan_diulang; } //untuk pengulangan yang sifatnya menurun (decrement) for (variabel = nilai_awal; kondisi; variabel--){ pernyataan_yang_akan_diulang; } Sebagai catatan bahwa jika kita melakukan pengulangan yang sifatnya menaik(increament) maka nilai awal dari variabel yang kita definisikan haruslah lebih kecil dari nilai akhir yang dituliskan dalam kondisi (ekspresi). 61
62 Sebaliknya jika kita akan melakukan pengulangan yang sifatnya menurun (decrement) maka nilai awal harus lebih besar dari nilai akhir. Berikut ini contoh program yang menggunakan pengulangan dengan struktur for. Program ditulis dalam dua tipe yakni Increament dan decreament. #include<iostream.h> int main(){ cout<< Pengulangan Menaik <<endl; for(c=0; C<5; C++){ cout<<c+1<<endl; } } //membuat spasi vertical cout<< \n ; //dapat ditulis cout<<end; cout<< Pengulangan Menurun <<endl; for(j=0; J<5; J--){ cout<<j<<endl; } return 0; Hasil yang akan diberikan dari program di atas adalah sebagai berikut: Pengulangan Menaik Pengulangan Menurun Secara default, struktur for akan menaikkan atau menurunkan nilai dari sebuah variabel indeks dengan nilai1; namun kita juga dapat menaikkan nilai variabel dengan nilai yang kita tentukan sendiri, berikut ini contoh program yang menaikkan nilai variabel indeks dengan nilai 5. 62
63 #include<iostream.h> int main(){ for(c=0; C<25; C+5){ cout<<c+1<,endl; } return 0; } Hasil yang diberikan progam di atas adalah sebagai berikut; o Struktur For Bersarang Sama halnya seperti pada percabangan, pada struktur pengulangan juga dapat diterapkan pengulangan bersarang (nested looping). Berikut ini bentuk umum dari struktur bersarang untuk struktur pengulangan for. Konsepnya sangat sederhana, dimana dalam sebuah pengulangan terdapat pengulangan yang lainnya. Pada struktur for bersarang, pada setiap pengulangan pertama, program akan menyelesaikan pengulangan kedua. Begitu juga pada setiap pengulangan kedua, program akan menyelesaikan pengulangan ketiga, begitu seterusnya. for (variabel1 = nilai_awal; kondisi1; variabel1++){ for (variabel2 = nilai_awal; kondisi2; variabel2++){ for (variabel3 = nilai_awal; kondisi3; variabel3++){ pernyataan_yang_akan_diulang; } } } Contoh program yang menggunakan struktur bersarang. 63
64 #include<iostream.h> int main(){ for(int j=1; j<=10; j++){ for(int k=1; k<=j; k++){ cout<<k*j<< ; } cout<< \n ; } return 0; } Jika dijalankan, program di atas akan memberikan hasil sebagai berikut: o Struktur While Struktur pengulangan jenis ini adalah pengulangan yang melakukan pengecekan kondisi di awal blok struktur. Kita bahwa pengulangan hanya akan dilakukan jika kondisi yang didefinisikan di dalamnya terpenuhi (bernilai benar). Hal ini berarti jika kondisi yang didefinisikan tidak terpenuhi (bernilai salah) maka pernyataan-pernyataan yang terdapat dalam blok pengulangan pun tidak akan pernha dieksekusi oleh program. Adapun bentuk umum dari struktur pengulangan while ini seperti yang tampak di bawah ini. while(kondisi){ pernyataan_pernyataan_yang_akan_diulang; } Berikut ini contoh program while; #include<iostream.h> yang ditulis dengan menggunakan struktur int main(){ 64
65 int C; //mendeklarasikan variabel C sebagai indeks C = 0; //melakukan inisialisasi nilai terhadap variabel C } while(c<10){ cout<< Ini menyenangkan ; C++; /* statement ini berguna untuk menaikkan nilai dan setelah bernilai 10 maka pengulangan akan dihentikan */ } return 0; o Struktur do-while Berbeda dengan struktur while yang melakukan pengecekan kondisi di awal blok perulangan, pada struktur do-while kondisi justru ditempatkan di bagian akhir. Hal ini tentu menyebabkan struktur pengulangan ini, minimal akan melakukan satu kali proses walaupun kondisi yang didefinisikan tidak terpenuhi (bernilai salah). Berikut ini bentuk umum dari struktur do-while. do { pernyataan_yang_akan_diulang; } while (kondisi); Berikut ini contoh program menggunakan struktur do-while dari contoh sebelumnya. #include<iostream.h> int main(){ int C = 0; } do{ cout<< Ini menyenangkan <<endl; C++; } while(c<10) return 0; 65
66 3.5 Pemrograman Jaringan Socket Library socket C++ adalah event-driven client/server networking framework. STL, openssl dan pthread (linux) termasuk dalam komponen/methods/library eksternal. Selain itu kelas socket memiliki kemampuan untuk berjalan sendiri dengan thread tersendiri. Sebuah program (client atau server) terdiri dari kelas SocketHandler yang dapat menangani satu atau lebih kelas Socket. SocketHandler menjaga daftar socket, dan memanggil select() untuk event selanjutnya (membaca/menulis/eksepsi). Selain itu juga melacak progress dari koneksi yang ada. Ketika SocketHandler menerima event untuk sebuah socket, event tersebut dilaporkan langsung ke kelas Socket dengan method callback. Method callback yang dasar diantaranya adalah OnRead(), OnWrite(), OnConnect(), OnAccept(). Library socket C++ terdiri dari berbagai spesialisasi kelas seperti TcpSocket, UdpSocket, SSLSocket. Untuk menambah fungsionalitas, untuk sebenarnya membuat socket membaca serta menulis data, sebuah kelas baru akan dibuat yang mewariskan salah satu kelas socket. Kebanyakan waktu, kelas SocketHandler dengan sendirinya dapat menangani banyak barang untuk membuat program client/server. tetapi ketika socket harus berinteraksi, praktis untuk membuat kelas SocketHandler. Kelas Socket hanya hanya memiliki 1 method (selain konstruktor). OnRead() dipanggil oleh SocketHandler ketika data ada di TcpSocket input buffer. Berikut ini adalah contoh kode penggunaan kelas Socket untuk menampilkan input ke layar. DisplaySocket.h #include <TcpSocket.h> #include <SocketHandler.h> 66
67 class DisplaySocket : public TcpSocket { public: DisplaySocket(SocketHandler& ); Void OnRead(); }; DisplaySocket.cpp #include "DisplaySocket.h" // the constant TCP_BUFSIZE_READ is the maximum size of the standard input // buffer of TcpSocket #define RSIZE TCP_BUFSIZE_READ DisplaySocket::DisplaySocket(SocketHandler& h) : TcpSocket(h) { } void DisplaySocket::OnRead() { // OnRead of TcpSocket actually reads the data from the socket // and moves it to the input buffer (ibuf) TcpSocket::OnRead(); // get number of bytes in input buffer size_t n = ibuf.getlength(); if (n > 0) { char tmp[rsize]; // <--- tmp's here ibuf.read(tmp,n); printf("read %d bytes:\n",n); for (size_t i = 0; i < n; i++) { printf("%c",isprint(tmp[i])? tmp[i] : '.'); } printf("\n"); } } UDP Socket Berikut ini adalah contoh kode untuk UDP Socket : udpserver.cpp #include <StdoutLog.h> #include <SocketHandler.h> #include "UdpTestSocket.h" int main(int argc,char *argv[]) { 67
68 SocketHandler h; StdoutLog log; h.regstdlog(&log); UdpTestSocket s(h); port_t port = 5000; } if (s.bind(port, 10) == -1) { printf("exiting...\n"); exit(-1); } else { printf("ready to receive on port %d\n",port); } h.add(&s); h.select(1,0); while (h.getcount()) { h.select(1,0); } udpclient.cpp #include <StdoutLog.h> #include <SocketHandler.h> #include "UdpTestSocket.h" int main(int argc,char *argv[]) { SocketHandler h; StdoutLog log; h.regstdlog(&log); UdpSocket s(h); s.sendto("localhost", 5000, "Using SendTo with address to send"); if (!s.open(" ", 5000)) { printf("exiting...\n"); exit(-1); } for (int i = 0; i < argc; i++) { s.send(argv[i]); } } TCP Socket Kemampuan khusus dari kelas TcpSocket adalah mengembalikan beberapa baris dengan informasi dari kelas SocketHandler. Jika method OnAccept() diimplementasikan maka akan bertindak sebagai server socket dan OnAccept 68
69 akan dipanggil oleh SocketHandler ketika ada koneksi yang terbentuk. Berikut ini adalah contoh kode untuk mengembalikan status socket : StatusSocket.h #ifndef _STATUSSOCKET_H #define _STATUSSOCKET_H #include <TcpSocket.h> #include <SocketHandler.h> class StatusSocket : public TcpSocket { public: StatusSocket(SocketHandler& ); }; void OnAccept(); #endif // _STATUSSOCKET_H StatusSocket.cpp #include <Utility.h> #include "StatusSocket.h" StatusSocket::StatusSocket(SocketHandler& h) :TcpSocket(h) { } void StatusSocket::OnAccept() { Send("Local hostname : " + Utility::GetLocalHostname() + "\n"); Send("Local address : " + Utility::GetLocalAddress() + "\n"); Send("Number of sockets in list : " + Utility::l2string(Handler().GetCount()) + "\n"); Send("\n"); } 69
70 Soal Latihan 1. Nilai a = 3, setelah diberikan operator ini, nilai a = 4. Operator apakah yang digunakan : a. -- b. c. && d Dalam switch...case jika nilai yang dimasukkan tidak sesuai dengan semua nilai konstan yang didefinisikan maka pernyataan yang akan dieksekusi adalah pernyataan dalam blok : a. if b.default c. for d.else 3. Struktur pengulangan yang akan melakukan minimal satu kali proses adalah struktur : a. while b. for c. if..else d. do..while Soal Praktek 3. Buatlah program C++ yang meminta input dari user untuk memasukkan sebuah angka dan mengkuadratkan angka tersebut kemudian menampilkan hasilnya. 4. Buatlah program C++ untuk meminta input dari user angka dengan kisaran 1-12 yang menunjukkan nama bulan. Kemudian, tampilkan nama bulan yang menjadi representasi dari input user. 70
71 BAB IV Pemrograman Berorientasi Objek 4.1 Konsep Dasar OOP Salah satu alasan Bjarne Stroustrup (orang yang menciptakan bahasa C++) menciptakan bahasa C++ adalah untuk menambahkan kemampuan OOP (object oriented programming) di dalam bahasa C, sehingga mulu-mula dia menyebut bahasa C dengan kelas. OOP bukanlah sebuah bahasa pemrorgraman melainkan sebuah cara untuk menjadikan program yang kita buat menjadi lebih modular karena suatu permasalahan akan dikumpulkan dalam satu objek, yang selanjutnya akan disebut dengan kelas. Ciri-ciri dasar OOP Semua bahasa pemrograman yang mendukung OOP haruslah mempunyai kemampuan untuk dilakukan abstraksi, pembungkusan pewarisan sifat dan polimorfisme. Karena alasan itu, item-item di atas kemudian dijadikan sebagai ciri dari bahasa yang mendukung OOP. o Abstraksi (Abstraction) Abstraksi adalah proses pengabstrakan atau penyembunyian detail program yang sangat rumit sehingga kita tidak perlu untuk mempermasalahkan pembuatannya. Kita hanya perlu objek tersebut dapat kita gunakan sesuai fungsinya. Sebagai contoh, lihatlah sebuah objek di sekitar kita, misalnya mobil. Pembuat mobil tidak perlu mendefinisikan cara pembuatannya, di sini berarti dia telah mengabstraksikan proses yang terdapat di dalamnya. Yang penting bagi kita adalah mobil tersebut dapat kita gunakan sebagaimana mestinya. Hal ini tidaklah berbeda dengan pengabstrakan suatu fungsi yang terdapat pada sebuah kelas di dalam program. o Pembungkusan (Encapsulation) Pembungkusan yang dimaksud disini adalah sebuah proses penggabungan antara data-data dan fungsi-fungsi yang berkaitan ke dalam sebuah objek. Dengan demikian, kita dapat membuat program yang terintegrasi, tanpa harus mendeklarasikan variabel-variabel yang bersifat eksternal. Adapun 71
72 istilah yang digunakan untuk menyebut data-data yang terdapat dalam suatu objek adalah data members; sedangkan fungsi-fungsi yang terdapat di dalamnya dikenal dengan istilah member functions. Untuk lebih memahaminya perhatikan gambar dibawah ini. Objek Data1... Data Members Data2 o o Fungsi1... Member Functions FungsiN Pewarisan (Inheritance) Dalam OOP, kita dapat menciptakan objek baru yang diturunkan dari objek lain. Objek baru ini sering disebut dengan objek turunan (derived class) sedangkan objek induknya sering disebut dengan ancestor (base class). Sifat yang terkandung pada objek turunan adalah sifat hasil pewarisan dari sifat-sifat yang terdapat pada objek induk. Maka dari itu proses seperti ini sering dikenal istilah pewarisan (inheritance). Dengan fitur seperti ini, kita dapat membuat objek baru yang memiliki kemampuan lebih dibanding objek induknya, yaitu dengan cara menambahkan sifat-sifat baru ke dalam objek tersebut. Polimorfisme (Polymorphism) Polimorfisme adalah proses kebanyakrupaan, artinya kita dapat mengimplementasikan sesuatu hal yang berbeda melalui satu cara yang sama. Untuk mengerti hal ini, coba Anda perhatikan suatu objek, misalnya penyanyi. Sebagai contoh terdapat 5 orang penyanyi (di dalam prorgam di anggap sebagai lima buah objek), kemudian kelimanya kita perintahkan untuk bernyanyi, maka hasil atau implementasinya tentu akan berbeda sesuai dengan karakteristik suara dari masing-masing penyanyi tersebut. Dalam OOP, hal ini disebut dengan istilah polimorfisme. 72
73 4.2 Kelas dan Objek Kelas dibuat untuk merepresentasikan sebuah objek tertentu sehingga akan membantu dalam proses penyelesaian masalah-masalah kompleks. Apabila kita amati, pendefinisian sebuah kelas itu sebenarnya sama saja dengan pembuatan tipe data baru. Sebagai contoh, kita dapat membuat tipe-tipe yang berkaitan dengan suatu objek, seperti mobil, rumah, karyawan, dan banyak lagi lainnya. Kita bisa saja menggunakan tipe data dasar seperti int dan char tanpa membuat sebuah kelas, namun hal itu tentu akan menyulitkan dalam proses penulisan kode program. C++ menawarkan sebuah metode baru yang tidak dimiliki oleh bahasa C, yaitu kemampuan untuk melakukan pembungkusan data-data dan fungsifungsi tertentu yang saling berkaitan dengan suatu objek ke dalam satu kelas khusu. Sebagai contoh, kita akan membuat kelas mobil, maka semua data dan kelakuan-kelakuan yang dimiliki oleh mobil akan dibungkus ke dalam kelas tersebut. Kelas adalah bentuk penyederhanaan dari suatu permasalahan yang berkaitan dengan objek. Maka dari itu kelas dapat didefinisikan sebagai sesuatu yang mempunyai data (sifat) dan fungsi (kelakuan). Kelas masih bersifat abstrak, maka dari itu kita harus melakukan instansiasi dari kelas tersebut, selanjutnya instance (contoh nyata atau perwujudan) dari kelas tersebut juga sering dinamakan dengan objek. Sebagai contoh, manusia adalah suatu kelas, maka instance atau objek dari kelas manusia adalah Udin, Dewi, Sandra, dan yang lainnya. Membuat Kelas Dalam C++, kelas dibuat dengan menggunakan keyword class. Adapun bentuk umum pembuatannya adalah seperti tampak di bawah ini. class nama_kelas{ access_specifier1; data_members; members_function; access_specifier2; 73
74 } data_members; members_function; Untuk mendefinisikan atau membuat implementasi fungsi-fungsi yang terdapat dalam sebuah kelas, kita menggunakan operator ::. Berikut ini bentuk umum dari pendefinisian fungsi tersebut. tipe_data nama_kelas::nama_fungsi(daftar_parameter){ pernyatan_yang_akan_dilakukan; Sedangkan } untuk mengakses data atau fungsi yang terdapat di dalam kelas tersebut, kita menggunakan tanda titik. Berikut ini bentuk umum dari proses pengaksesan data atau fungsi dari sebuah kelas. nama_instance.data; atau nama_instance.nama_fungsi(daftar_parameter) Constructor dan Destructor Constructor adalah sebuah fungsi yang otomatis akan dipanggil setipa kali melakukan instansiasi terhadap suatu kelas. Constructor digunakan untuk melakukan inisialisasi nilai dari data-data yang terdapat di dalam kelas bersangkutan. Sama halnya seperti fungsi biasa, pada constructor juga dapat ditambahkan parameter ataupun dilakukan overload. Namun perlu diperhatikan bahwa nama dari fungsi constructor haruslah sama dengan nama kelasnya. Destructor adalah fungsi yng merupakan kebalikan dari destructor, yaitu berguna untuk menghancurkan atau membuang sebuah objek (kelas) dari memori. Fungsi ini juga akan dipanggil secara otomatis ketika program telah 74
75 selesai dijalankan. Adapun nama dari fungsi destructor adalah sama seperti nama kelas maupun nama constructor, hanya di depannya ditambahkan tanda tilde ( ~ ). Berikut ini contoh program yang mengimplementasikan fungsi constructor dan destructor. #include<iostream.h> //membuat kelas dengan nama Contoh class Contoh{ int*x; public: //membuat fungsi constructor Contoh(int xx){ x = new int; *x = xx; } //membuat fungsi destructor ~Contoh(){ delete x; //menghapus pointer x; } void ShowX(){ cout<< Nilai X: <<*x<<endl; } // }; //fungsi utama int main(){ Contoh O(10); O.ShowX(); Return 0; } Apabila program dijalankan, maka program akan menghasilkan seperti berikut: Nilai x : 10 Kelas Abstrak Kelas abstrak memiliki fungsi virtual murni, selain itu kita tidak dapat melakukan instansiasi dari kelas abstrak. Berikut ini adalah contoh kode yang mencoba melakukan instansiasi dari kelas abstrak : #include<iostream.h> 75
76 class KARYAWAN { public: virtual void Bekerja() = 0; }; class PROGRAMMER: public KARYAWAN { public: void Bekerja() { cout<< Bekerja dengan membuat program di komputer ; cout<<end1; } }; class GURU: public KARYAWAN { public: void Bekerja() { cout<< Bekerja mengajar di depan kelas ; cout<<end1 } }; // Fungsi utama int main() { // Melakukan instansiasi terhadap kelas KARYAWAN KARYAWAN A; // salah, tidak diizinkan oleh karyawan // Melakukan instansiasi terhadap kelas PROGRAMMER PROGRAMMER B; // Melakukan instansiasi terhadap kelas GURU GURU C; } return Pewarisan Sifat Objek Salah satu ciri dari OOP, seperti yang telah disebut sebelumnya, adalah kemampuan suatu objek atau kelas untuk mewariskan sifat-sifat yang terdapat di dalamnya ke kelas turunannya. Hal ini dinamakan dengan inheritance. Kelas Dasar dan Kelas Turunan Kelas dasar yang dimaksud di sini adalah sebuah kelas yang akan dijadikan sebagai induk dari kelas lain. Kelas dasar ini masih lebih dikenal dengan 76
77 istilah dalam bahasa asing yaitu base class. Sedangkan kelas baru yang merupakan hasil dari proses penurunan tersebut disebut dengan kelas turunan, atau sering juga diebut dengan derived class. Dalam program, kelas dapat dijadikan sebagai kelas dasar (induk) untuk meudian diturunkan menjadi kelas-kelas selanjutnya. Misalnya terdapat kelas A yang diturunkan menjadi kelas B, selanjutnya kelas B diturunkan menjadi kelas C, begitu seterusnya. Disini, kelas B dan kelas C tentu akan memiliki sifat-sifat yang terdapat pada kelas A. Begitu juga kelas C, pasti akan mewarisi sifat-sifat yang terdapat pada kelas B. Sintaks yang umum dipakai untuk membuat suatu kelas turunan adalah sebagai berikut: class nama_kelas_turunan: hak_akses nama_kelas_dasar{ //data-data dan fungsi-fungsi } Berikut ini adalah contoh program yang melakukan proses penurunan, dimana penurunan dilakukan dua kali seperti penjelasan di atas. Pada program ini kita akan melihat pewarisan dari sifat yang dimiliki kelas induk oleh kelas turunan. #include<iostream.h> //membuat kelas dasar dengan nama Induk class Induk{ int x; public: void SetX(int xx){ x = xx; } int GetX(){ return x; } }; //membuat kelas turunan dari kelas Induk dengan nama Turunan1 class Turunan1; public Induk{ int y; public: void SetY(int yy){ y = yy; } int GetY(){ 77
78 }; } return y; //membuat kelas turunan dari kelas Induk dengan nama Turunan2 class Turunan2; public Turunan1{ int z; public: void SetZ(int zz){ z = zz; } int GetZ(){ return z; } }; //fungsi utama int main(){ //melakukan instansiasi terhadap kelas Turunan2 Turunan2 A; //melakukan pengesetan nilai x,y,z melalui kelas Turunan2 A.SetX(20); A.SetY(30); A.SetZ(40); <<A.GetX(); cout<< Nilai y yang dipanggil dari kelas Turunan2: <<A.GetY(); cout<< Nilai z yang dipanggil dari kelas Turunan2: <<A.GetZ(); } return 0; Hasil yang akan diberikan dari program di atas adalah sebagai berikut: Nilai x yang dipanggil dari kelas Turunan2: 20 Nilai y yang dipanggil dari kelas Turunan2: 30 Nilai z yang dipanggil dari kelas Turunan2: 40 Hasil di atas menunjukkan bahwa kelas Turunan2 akan memiliki fungsi-fungsi yang dimiliki oleh kelas induknya (kelas Turunan1), yaitu fungsi SetY dan GetY. Namun perlu diperhatikan, di sini kelas Turunan1 adalah turunan dari kelas Induk, maka dari itu secara otomatis kelas Turunan2 juga akan memiliki fungsi-fungsi yang dimiliki oleh kelas Induk, yaitu fungsi SetX dan GetX. Walaupun demikian, sebuah kelas turunan tetap tidak dapat mewarisi data atau fungsi-fungsi yang bersifat private pada kelas induknya. Hak Akses pada Proses Pewarisan Dalam proses penurunan sebuah kelas, kita harus benar-benar pandai dalam memberikan hak akses data atau fungsi terhadap kelas turunan. Berikut ini 78
79 hal-hal yang perlu Anda ketahui dalam membuat sebuah kelas turunan. Apabila kelas diturunkan sebagai public dari kelas induknya, maka: o Bagian public yang terdapat pada kelas induk tetap akan menjadi bagian public pada kelas turunannya. o Bagian protected yang terdapat pada kelas induk tetap akan menjadi bagian protected pada kelas turunannya. o Bagian private yang terdapat pada kelas induk tetap tidak dapat diakses oleh kelas turunannya. Apabila kelas diturunkan sebagai private dari kelas induknya, maka: o Bagian public yang terdapat pada kelas induk tetap akan menjadi bagian private pada kelas turunannya. o Bagian private yang terdapat pada kelas induk tetap akan menjadi bagian protected pada kelas turunannya. o Bagian private yang terdapat pada kelas induk tetap tidak dapat diakses oleh kelas turunannya. Jika kita lihat program di atas, bagian public dari kelas induk (yaitu fungsi SetX dan GetX) tetap akan menjadi bagian public pada kelas Turunan1, sedangkan variabel X yang terdapat pada bagian private tetap tidak dapat diakses oleh kelas Turunan1. Sampai disini, berarti kelas Turunan1 telah mempunyai empat buah fungsi yang bersifat public (yaitu fungsi SetY. GetY, SetX, GetX). Selanjutnya kelas Turunan1 akan diturunkan lagi secara public terhadap kelas Turunan2. Hal ini menyebabkan bagian public yang terdapat pda kelas Turunan1 akan diwariskan semuanya kepada kelas Turunan2 sehingga kelas Turunan2, akan mempunyai enam buah fungsi yang bersifat public (yaitu fungsi SetZ, GetZ, SetY. GetY, SetX, GetX). Itulah sebabnya pada program di atas kita dapat mengakses fungsi-fungsi yang terdapat pada kelas Induk dan kelas Turunan1 melalui suatu objek (instance) dari kelas Turunan2. Multiple Inheritance Salah satu kelebihan dari C++ dibandingkan bahasa-bahasa pemrograman lain yang juga mendukung OOP adalah karena C++ mendukung adanya multiple inheritance. Adapun multiple inheritance yang dimaksud disini adalah suatu proses pembuatan kelas baru dimana kelas tersebut diturunkan dari 79
80 dua kelas induk atau lebih. Sebagai contoh, kita memiliki kelas A dan B yang masing-masing berdiri sendiri. Kemudian kita ingin membuat kelas C yang merupakan turunan dari kelas A dan B. Dengan demikian, kelas C tentu akan mewarisi sifat-sifat yang terdapat pada kelas A dan kelas B. Sebenarnya kita bisa juga melakukannya dengan proses yang berulang, yaitu dengan menurunkan kelas A menjadi kelas B, kemudian baru menurunkan kelas B menjadi kelas C. Namun hal ini tentu akan memakan waktu yang cukup lama dibandingkan kita menurunkannya dari beberapa induk secara langsung. Adapun bentuk umum dari pembuatan kelas melalui proses multiple inheritance adalah sebagai berikut: class nama_kelas_turunan: hak_akses nama_kelas_induk1, hak_akses nama_kelas_induk2, hak_akses nama_kelas_indukn, { //data-data dan fungsi-fungsi }; #include<iostream.h> //membuat kelas dasar dengan nama Induk1 class Induk1{ int x; public: void SetX(int xx){ x = xx; } int GetX(){ return x; } /* membuat kelas dengan nama Induk2 yang tidak berkaitan dengan kelas Induk1 */ class Induk2{ int y; public: void SetY(int yy){ y = yy; } 80
81 }; int GetY(){ return y; } // membuat kelas Turunan dari kelas Induk1 dan Induk2 class Turunan; public Induk1, public Induk2{ int z; public: void SetZ(int zz){ z = zz; } int GetZ(){ return z; } }; //fungsi utama int main(){ //melakukan instansiasi terhadap kelas Turunan Turunan A; //memanggil fungsi-fungsi yang terdapat pada kelas Turunan A.SetX(100); A.SetY(200); A.SetZ(300); //menampilkan nilai yang diset cout<< Nilai x : <<A.GetX(); cout<< Nilai y : <<A.GetY(); cout<< Nilai z : <<A.GetZ(); } return 0; Apabila program dijalankan, program akan memberikan hasil seperti di bawah ini: Nilai x : 100 Nilai y : 200 Nilai z : 300 Seperti yang telah dijelaskan di atas bahwa kelas Turunan akan memiliki fungsi-fungsi yang terdapat di bagian public atau protected pada kelas-kelas induknya. Pada contoh ini, fungsi-fungsi yang akan dimiliki kelas Turunan adalah fungsi SetZ, GetZ, SetY, GetY, SetX, dan GetX. 81
82 4.4 Polimorfisme (Polymorphism) Secara definisi, polimorfisme dapat diartikan sebagai kemampuan mengungkap suatu hal yang berbeda melalui satu cara yang sama. Untuk mengetahui konsep yang terdapat di dalamnya perhatikan contoh program di bawah ini (halaman berikutnya). Hasil dari program tersebut adalah: Bekerja dengan membuat program pada komputer Bekerja dengan cara mengajar di depan kelas Pada program tersebut kita hanya melakukan pendeklarasian pointer terhadap kelas Karyawan (yang merupakan kelas induk), namun kita dapat mengakses fungsi-fungsi yang terdapat di dalam kelas Programmer dan kelas Guru (yang merupakan kelas-kelas turunan). Perhatikan juga pernyataan: P -> Bekerja(); Dengan menggunakan pernyataan tersebut, kita dapat mengungkap dau hal yang berbeda. Hal ini tentu tergantung dari nilai P yang ada pada waktu itu. Artinya, jika P sedang menunjuk ke tipe Programmer, maka pernyataan di atas akan mengakses fungsi Bekerja yang terdapat pada kelas Programmer. Sebaliknya jika P menunjuk ke tipe Guru, maka yang akan diakses adalah fungsi Bekerja yang terdapat dalam kelas Guru. Hal itualah yang menyebabkan pernyatan di atas dapat memberikan hasil yang berbeda. Konsep seperti inilah yang dinamakan dengan polimorfisme. #include<iostream.h> class Karyawan{ public: virtual void Bekerja() = 0; }; class Programmer: public Karyawan{ public: void Bekerja(){ cout<< Bekerja dengan membuat program pada komputer ; cout<<endl; } }; 82
83 class Guru: public Karyawan{ void Bekerja(){ cout<< Bekerja dengan cara mengajar di depan kelas ; cout<<endl; } }; //fungsi utama int main(){ Karyawan *P; P = new Programmer; P -> Bekerja(); delete P; /* menghapus pointer P yang menunjuk ke tipe Programmer */ P = new Guru; P -> Bekerja(); } return 0; 4.5 Fungsi Dalam C++, program merupakan kumpulan dari fungsi-fungsi, baik itu yang didefinisikan langsung dalam program maupun yang disimpan dalam suatu file header. C/C++ sendiri mempunyai fungsi utama yang disebut fungsi main. Fungsi main ini selalu ada dalam setiap program C/C++ dan compiler akan menjalankan program melalui perintah-perintah yang terdapat dalam fungsi ini. Berikut ini gambar yang mengilustrasikan keberadaan fungsi dalam sebuah program. 83
84 Program int main(){ Fungsi1(); pernyataan1; Fungsi2(); pernyataan2; return 0; } Fungsi1 return Fungsi2 Fungsi3() return Fungsi3 return Fungsi merupakan subprogram dan berguna untuk menjadikan program dapat lebih bersifat modular sehingga akan mudah dipahami dan dapat digunakan kembali, baik untuk program itu sendiri maupun untuk program lain yang memiliki proses yang sama. Dalam C++, fungsi dibedakan menjadi dua, yaitu user-defined function dan built-in function. User-defined function adalah fungsi-fungsi yang didefinisikan sendiri, sedangkan built-in function adalah fungsi-fungsi siap pakai yang telah disediakan oleh compiler. Fungsi dengan Nilai Balik Berbeda dengan fungsi yang bertipe void, fungsi ini berguna untuk melakukan suatu proses yang dapat mengembalikan sebuah nilai. Dalam membuat fungsi ini kita harus mendefinisikan tipe data dari nilai yang akan dikembalikan. Berikut ini adalah bentuk umum dari pembuatan fungsi yang memiliki nilai balik: tipe_data nama_fungsi(parameter1, parameter2, ){ pernyataan_yang_akan_dilakukan; return nilai_yang_akan_dilakukan; } 84
85 Fungsi dengan Parameter Sekarang kita akan membuat fungsi dengan parameter sehingga hasil yang diberikan dapat bersifat dinamis, tentunya tergantung dari nilai parameter yang dimasukkan. Secara teori, parameter yang terdapat pada pendefinisian sebuah fungsi disebut dengan parameter formal, sedangkan parameter yang terdapat pada saat pemanggilan disebut dengan parameter aktual. Jumlah serta tipe data antara parameter formal dan parameter aktual haruslah sesuai, jika tidak maka compiler akan menampilkan pesan kesalahan. Terdapat dua buah cara untuk melewatkan parameter di dalam sebuah fungsi, yaitu berdasarkan nilai (pass by value) dan berdasarkan alamat (pass by reference). Melewatkan Parameter Berdasarkan Nilai (Pass By Value) Sesuai dengan namanya fungsi ini akan melewatkan nilai parameter ke dalam sebuah fungsi untuk digunakan sesuai proses yang terdapat di dalam fungsi tersebut. Jika kita melewatkan parameter dengan cara ini maka nilai yang dihasilkan oleh fungsi tidak akan mempengaruhi nilai yang terdapat pada program (di luar fungsi tersebut). Hal ini disebabkan karena pada saat pemanggilan fungsi compiler hanya akan membuat salinan (copy) dari nilai yang terdapat pada parameter aktual ke parameter formal. Dengan kata lain, yang akan berubah adalah nilai di dalam fungsi saja. Di bawah ini adalah contoh program yang mengimplementasikan melewatkan parameter berdasarkan nilai. Hasil dari porgam dapat dilihat seperti di bawah ini. Masukkan sebuah bilangan bulat : 10 Nilai awal : 10 Nilai di dalam fungsi : 20 Nilai akhir : 10 85
86 #include <iostandar.h> void Kali2(int x){ x = x * 2; cout<< Nilai di dalam fungsi: <<x<<endl; } int main(){ int Bilangin; cout<< Masukakn sebuah bilangan bulat: ; cin>>bilangan; cout<<endl; cout<< Nilai awal : <<Bilangan<<endl; } //memanggil fungsi kali2 Kali2(Bilangan); cout<< Nilai akhir: <<Bilangan<<endl; return 0; Jika kita amat hasil program di atas, maka kasus tersebut dapat diilustrasikan dengan gambar di bawah ini: Nilai awal di-copy ke variabel x Bilangan = 10 X =10 Dilewatkan ke fungsi Dipanggil kembali Proses di dalam fungsi Kali2 menghasilkan Bilangan = 10 X = 20 Nilai akhir Nilai di dalam fungsi Pada kasus di atas, variabel Bilangan dan variabel x menempati alamat memori yang berbeda sehingga pada saat pemangilan fungsi, nilai dari keduanya tentu akan berbeda. Disini, yang berubah hanya nilai dari variabel x, sedangkan variabel Bilangan bernilai tetap karena kita memang tidak melakukan apa-apa terhadap variabel tersebut. 86
87 Melewatkan Parameter Berdasarkan Alamat (Pass By Reference) Berbeda dengan pass by value, pass reference adalah melewatkan parameter ke sebuah fungsi berdasarkan alamatnya. Kita tahu bahwa jika kita membuat alias dari sebuah variabel maka alamat dari variabel dan alias tersebut adalah sama. Hal inilah yang menjadi konsep dasar pengiriman parameter berdasarkan alamat. Melewatkan parameter dengan cara seperti ini akan menyebabkan nilai yang terdapat di dalam fungsi akan sama persis dengan nilai yang terdapat pada program (di luar fungsi). Hal ini tentunya disebabkan karena alamat dari variabel yang berperan sebagai parameter formal sama dengan alamat dari variabel yang berperan sebagai parameter aktual. Untuk lebih memahaminya perhatikan program di bawah ini: #include <iostandar.h> void Kali2(int& x){ x = x * 2; cout<< Nilai di dalam fungsi: <<x<<endl; } int main(){ int Bilangin; cout<< Masukakn sebuah bilangan bulat: ; cin>>bilangan; cout<<endl; cout<< Nilai awal : <<Bilangan<<endl; } //memnaggil fungsi kali2 Kali2(Bilangan); cout<< Nilai akhir: <<Bilangan<<endl; return 0; Hasil dari contoh program di atas adalah sebagai berikut: Masukkan sebuah bilangan bulat : 10 Nilai awal : 10 Nilai di dalam fungsi : 20 Nilai akhir : 20 Kenapa hasilnya berbeda? Jawabnya adalah karena x bukanlah sebuah varibel melainkan sebuah alias atau reference dari variabel Bilangan. Maka dari itu, alias x dan variabel Bilangan tentu mempunyai alamat yang sama karena keduanya sebenarnya merupakan objek yang sama. Dengan demikian, jika 87
88 nilai x berubah, maka nilai yang terdapat pada variabel Bilangan pun akan ikut berubah. Berikut ini gambar yang akan mengilustrasikan kasus tersebut. Nilai awal Bilangan x = 10 alias x dilewatkan ke fungsi Proses di dalam fungsi Kali2 dipanggil kembali menghasilkan Bilangan = 20 X = 20 Nilai akhir Nilai di dalam fungsi Berbeda denga pass by value, di sini nilai x dari nilai yang terdapat pada variabel Bilangan akan saling mempengaruhi. Memanggil Fungsi Satu alasan utama penggunaan fungsi yang berbeda dalam suatu program adalah untuk memisahkan tugas; hal ini memperbolehkan Anda untuk membagi pekerjaan antar entiti yang berbeda supaya jika sesuatu yang salah terjadi, Anda mungkin dengan mudah mengetahui dimana letak masalah tersebut. Fungsi saling mempercayai, artinya satu fungsi tidak perlu mengetahui bagaimana fungsi lain mengerjakan tugasnya. Satu fungsi perlu mengetahui apa yang dikerjakan fungsi lain, dan apa yang dibutuhkan fungsi lain. Sekali sebuah fungsi telah didefinisikan, fungsi lain dapat menggunakan hasil dari tugas yang dikerjakannya. Bayangkan ada dua fungsi A dan B. 88
89 Jika fungsi A membutuhkan hasil dari fungsi B, fungsi A harus menggunakan nama fungsi B. Artinya Fungsi A memanggil Fungsi B: Ketika memanggil satu fungsi dari fungsi lainnya, secara sederhana ketik nama dari fungsi tersebut dan daftar argumennya, jika ada. Contohnya, untuk memanggil sebuah fungsi yang diberi nama Welcome() dari fungsi main(), cukup ketikkan seperti di bawah ini: int main() { Message(); } return 0; Compiler memperhatikan pemanggilan suatu fungsi bergantung pada dimana fungsi tersebut dideklarasikan. Anda dapat mendeklarasikan suatu fungsi sebelum Anda memanggilnya. Berikut ini contohnya: #include <iostream> using namespace std; void Pesan() { cout << Ini adalah bentuk dari C++. ; } int main() { Pesan(); // memanggil function Message() } return 0; 89
90 Soal Latihan 1. Proses penggabungan data dan fungsi ke sebuah objek dinamakan : a. encupsulation b. abstraction c. inheritance d. polymorphism 2. Operator yang digunakan untuk membuat implementasi dari fungsi yang ada di sebuah kelas adalah : a. :: b. "" c. & d. * 3. Kita membuat kelas A dan B yang berdiri sendiri. Selain itu kita juga ingin membuat kelas C yang merupakan turunan dari kelas A dan kelas B. Konsep ini dinamakan : a. polymorphism b. encupsulation c.multiple inheritance d. abstraction Soal Praktek 4. Buatlah program C++ yang mendukung inheritance. Pertama, buatlah kelas RekeningBank dengan method untuk menangani pengambilan uang, penambahan uang dan melihat jumlah saldo. Kemudian buatlah kelas lain yaitu kelas RekeningTabungan dengan method perhitungan bunga. Jika saldo awal adalah Rp dengan bunga 1.5% perbulan, hitung dan tampilkan jumlah saldo di awal bulan baru dengan program ini. 5. Buatlah program yang menerima 2 input user berupa angka, kemudian menghitung perkalian dan menampilkan angka-angka tersebut. 90
91 Borland Delphi 91
92 BAB I Borland Delphi Programming Tujuan Instruksional Umum : 1. Siswa dapat menyebutkan bagian dari lingkungan pemrograman 2. Siswa dapat menjelaskan cara pemrograman di Delphi 3. Siswa dapat menjelaskan cara pemrograman basis data di Delphi Tujuan Instruksional Khusus : 1. Siswa dapat membuat program Delphi 2. Siswa dapat membuat aplikasi basis data sederhana dengan Delphi 3. Siswa dapat membuat program dengan Form Materi yang dibahas di bab ini memenuhi : TIK.PR Membuat algoritma pemrograman lanjut. TIK.PR Membuat struktur data. TIK.PR Menggunakan spesifikasi program. TIK.PR Menulis program dasar. TIK.PR Menulis program lanjut. TIK.PR Mengoperasikan pemrograman terstruktur. TIK.PR Mengoperasikan bahasa pemrograman berorientasi obyek. TIK.PR Membuat program aplikasi berbasis Delphi Berikut ini adalah gambaran umum dari materi : 92
93 Lingkungan Pemrograman 1.1 Menjalankan Borland Delphi Untuk menjalankan program Visual Basic ikuti langkah-langkah berikut ini: 1. Pada Miicrosoft Windows, klik tombol Start, pilih Programs, lalu pilih folder Borland Delphi 8. Icon-icon yang terdapat pada folder Borland Delphi 8 akan ditampilkan. 2. Klik Icon program Delphi 8. Tampilan depan akan muncl dan pilih New. Maka akan muncul kotak dialog seperti gambar di bawah ini; Gambar Kotak Dialog New 3. Klik Open untuk menerima proyek baru yang default, yaitu aplikasi standar Delphi. Sebuah proyek baru akan dibuka pada lingkungan pemrograman Delphi, bersamaan dengan beberapa jendela dan tool yang ditampilkan pada gambar di bawah ini 93
94 Gambar Kotak Dialog Open Lingkungan pemrograman Delphi 8 mengandung sarana prmorgaman yang dapat membantu Anda membangun program Delphi. Baris menu menyediakan akses kepada sebagian besar perintah yang mengendalikan lingkungan pemrograman ini. Menu dan perintah sama fungsinya seperti pada program-program berbasis Windows lainnya, dan Anda bisa mengaksesnya menggunakan keyboard atau mouse. Di bawah baris menu terdapat toolbar, yaitu sekumpulan tombol yang berfungsi sebagai tombol cepat untuk menjalankan perintah dan mengendalikan lingkungan pemrograman Delphi. Untuk mengaktifkan tombol pada toolbar, klik pada tombol tersebut menggunakan mouse. Di bagian bawah layar terdapat taskbar Windows. Anda bisa menggunakan taskbar ini untuk berpindah antara berbagai komponen Delphi dan untuk mengaktifkan program Windows lainnya. Sarana lain yang ada pada Delphi adalah toolbox, jendela Object Inspector, Project Manager, Tool Pallete, jendela WinForm. Ukuran dan bentuk semua jendela ini bergantung pada konfigurasi sistem Anda. 94
95 Menu dan Toolbar Window utama Delphi terdiri atas menu, toolbar dan Component Palette. Menu yang ada dalam Delphi berisi sejumlah besar peintah yang sebagaian diantaranya memiliki shortcut key yang dapat dipergunakan untuk akses cepat menggunakan keyboard. Item-item yang ada dalam menu tersebut secara bertahap akan dibahas sesuai konteksnya. Toolbar yang ada dalam Delphi berupa sekumpulan tombol untuk fungsifungsi yang sering dipergunakan. Toolbar tersebut dikelompokkan dalam beberapa kelompok, yaitu Standard Toolbar, View Toolbar, Desktop Toolbar, Debug Toolbar, serta Internet Toolbar. Component Palette Component Palette berisi komponen-komponen Delphi yang dapat dipergunakan untuk menyusun tampilan program dalam Form. Komponen yang ada dalam komponen palette disusun dan dikelompokkan dalam page sesuai fungsinya. Bila kita letakkan mouse pointer di atas sebuah komponen dalam component palette dan kita diamkan beberapa saat, maka akan muncl nama komponen tersebut dalam bentuk tooltip. Gambar Tool Palette 95
96 Form Desinger Form designer adalah form tempat kita mengatur komponen sesuai kebutuhan tampilan program yang kita buat. Cara meletakkan komponen ke dalam form ada beberapa macam yaitu, o Click komponen palette, kemudian click atau drag pada Form o Double click komponen pada component palette, maka komponen tersebut akan terletak pada tengah Form. o Shift Click pada component palette, kemudian click pada form beberapa kali untuk meletakkan beberapa komponen. Untuk menormalkan kembali status click, tekan tombol panah pada bagian kiri component palette. Objek yang sudah ada dalam form dapat diatur posisinya sesuai kebutuhan cukup dengan click-drag pada objek tersebut. Objek yang terseleksi akan ditandai dengan delapan kotak kecil di bagian tepi dan sudutnya. Beberapa objek dapat diseleksi secara bersamaan. Caranya dengan menekan tombol shift sambil click pada objek lain, atau menekan tombol Ctrl sambil melakukan drag. Beberapa objek yang terseleksi dapat dipermudah pengaturan posisinya dengan melakukan align. Pilih menu Edit Align. Fungsi align ini sangat bermanfaat karena dapat memudahkan programmer dalam menyusun tampilan yang rapi. Object Inspector Object Insector dipergunakan untuk mengubah nilai property dari objek terseleksi yang ada dalam Form Designer. Object Inspector terdiri dari dua page, yaitu property dan event. Setiap jenis komponen akan memiliki property dan event yang berbeda dengan jenis komponen lainnya. Pada bagian atas Object Inspector terdapat nama dan tipe objek yang sedang terseleksi. Pada gambar di atas, objek yang sedang terseleksi adalah objek dengan tipe/kelas TwinForm dan objek tersebut bernama Form1. Untuk mengganti nama Objek tersebut dapat dilakukan melalui property Name dalam Object Inspector. 96
97 Gambar Object Inspector Code Editor Ketika menyusun komponen dalam form, Delphi akan membangkitkan kode program dalam bahaas Object Pascal. Kita dapat mengedit kode program kita menggunakan code editor yang merupakan suatu editor teks yang memiliki banyak fitur. Salah satu fungsi yang sangat membantu programmer dalam menyusun program adalah adanya syntax highlighting yaitu adanya perbedaan style dan warna font untuk kata kunci, identifier, konstanta, dll. 97
98 Pada bagian kiri terdapat Code Explorer, yang berisi daftar variabel, procedure, use list, dll yang ditampilkan dalam bentuk tree. Pada bagian kanan adalah Code Editor. Dengan code editor kita dapat membuka lebih dari satu file text, yang masing-masing dapat kita pilih dengan page selector. Pada bagian bawah code editor terdapat status bar yang berisi informasi tentang posisi kursor (baris dan kolom), status modifikasi file, serta status Insert/Overwrite dari code editor. Disebelah kanannya terdapat Code/diagram selector yang dapat digunakan untuk mengganti tampilan kode menjadi diagram dan sebaliknya. Gambar Code Editor 1.2 Pemrograman dalam Lingkungan Visual Sejak awal kemunculannya, Delphi menawarkan rapid Application Development (RAD), dimana pemrogram dapat menghasilkan aplikasi dengan cepat pada lingkungan visual. Programmer banyak bekerja dengan menyusun form, banyak menggunakan mouse dengan sedikit menggunakan keyboard. 98
99 Dalam memrogram di lingkungan visual menggunakan Delphi, kita akan bekeerja dengan komponen-komponen yang ada dalam Component Palette, dan kita akan melakukan tiga hal penting, yaitu Componen Pallete, dan kita akan melakukan tiga hal penting, yaitu: o Pertama kita akan meletakkan komponen dari komponen palette ke dalam form. o Kedua kita akan mengubah property yang dimiliki oleh komponen tersebut agar sesuai dengan kebutuhan kita. o Ketiga kita akan membuat kode program untuk mengerjakan sesuatu ketika event tertentu terjadi. Aplikasi, Form dan Unit Untuk membuat aplikasi bari di Delphi, kita tinggal panggil menu New Application. Delphi akan menyiapkan aplikasi baru yang terdiri atas tiga file, yaitu project1.dpr, unit1.pas dan unit1.dfm. File dpr adalah file projek dan merupakan program utama (bukan form utama) aplikasi. Unit1.pas dan unit1.dfm mewakilik Form1 yang muncul, dimana Unit1.pas berisi kode program sedangkan unit1.dfm berisi data property dari Form dan objek-objek yang ada di dalamnya. File dfm tersebut akan disimpan dalam bentuk teks. Kita dapat melihat isi teks dari file dfm dengan click kanan pada form dan pilih menu View as Text. Untuk mengembalikannya lagi, click kanan dan pilih View As Form. Contoh Program Hello World Sekarang kita akan membuat sebuah program yang sangat terkenal dalam pengajaran bahasa pemrograman, yaitu program yang menampilkan tulisan Hello, World!. 1. Pertama kita buat sebuah aplikasi baru dengan memanggilmeni File New Application. 2. Delphi akan menyediakan sebuah Form kosong sebagai tempat kita membuat tampilan program. 3. Letakkan sebuah komponen Button (dari page Standard) ke dalam Form kita. Ubah ukuran dan posisinya sesuai keinginan. 4. Ubah propertu Caption yang ada di Object Inspector dengan Tampilkan Hello World. Untuk menampilkan Object Inspector bisa menggunakan 99
100 tombol F11. Form yang kita buat tampilannya kurang lebih seperti di bawah ini. Gambar Form Berikutnya kita akan mengetikkan kode untuk menampilkan pesan Hello, World!. 5. Click tab Events pada Object Inspector. Kemudian double click pada kolom isian event onclick. Secara otomatis Delphi akan mendefinisikan sebuah procedure kosong yang siap kita isi. 6. Ketikkan kode ShowMesage( Hello, World! ); Function ShowMessage di atas digunakan untuk menampilkan pesan sederhana dalam bentuk suatu dialog dengan sebuah tombol OK. 7. Jalankan program dengan menu Run-Run atau dengan tombol F9. Tekan tombol yang ada dalam form, maka akan muncul Hello World. Komponen Property dan Event Selain sebagai tempat meletakkan komponen, form itu sendiri juga merupakan komponen. Setiap komponen akan memiliki property yang nilainya dapat diatur sesuai kebutuhan. Selain itu, komponen memiliki event yang harus di-link dengan method (procedure/function) tertentu. Method tersebut akan dipanggil ketika event tertentu terjadi. Delphi menyediakan berbagai event untuk setiap komponen yang ada. Kita dapat mengetikkan kode untuk setipa event. Dalam pemrograman visual, hal penting yang perlu kita tahu adalah kapan event itu dijalankan. Untuk mengisikan property tertentu atau untuk me-link event tertentu dengan method tertentu, kita dapat menggunakan Object Inspector. 100
101 Sering kali kita menginginkan agar ketika event tertentu dari beberapa komponen berbeda terjadi, program akan melakukan hal yang sama. Kita dapat menggunakan sebuah procedure untuk event yang berbeda (baik objek yang berbeda maupun objek yang sama). Syaratnya adalah procedure yang akan kita link dengan event tersebut harus kompatibel (memiliki daftar parameter dan tipe parameter yang sama). Object Inspector sudah memfilter hanya procedure/function yang kompatibel saja yang dapat di-link dengan event tertentu. Soal Latihan 1. Sekumpulan tombol yang berfungsi sebagai tombol cepat disebut : a. toolbar b. menu c. form d. komponen 2. Komponen-komponen delphi yang dipergunakan untuk menyusun tampilan program dalam form terletak di sebuah : a. toolbar b. menu c. component palette d. Tooltip 3. Melakukan double click pada komponen akan meletakkan komponen tersebut di : a. kanan b. kiri c. atas d. tengah 4. Untuk mengubah nilai property dari objek terseleksi yang ada dalam form designer digunakan : 101
102 a. Object Inspector b. Component Pallete c. Code Editor d. Code Explorer 5. Informasi mengenai posisi kursor terletak di a. page selector b. status bar c. code explorer d. code editor 102
103 BAB II Pemrograman Borland Delphi Bahasa prmorgaman yang digunakan dalam Delphi adalah suatu varian dari bahasa Pascal, yang oleh Delphi disebut sebagai objek Pascal karena varian ini mengimplementasikan Object Oriented Programming (OOP). 2.1 Komentar Pada Kode Komentar adalah tulisan pada kode yang digunakan untuk kepentingan dokumentasi. Compiler tidak akan menterjemahkan komentar. Pada Delphi, komentar ditandai dengan kurung kurawal { } dan kurung biasa dan tanda bintang (* *) untuk komentar yang bisa lebih dari satu baris, serta garis miring ganda // untuk komentar yang hanya satu baris. 2.2 Identifier Identifier adalah nama untuk mengidentifikasikan konstanta, tipe data, variabel, procedure, function, unit, program, dan field pada record. Pendefinisian identifier harus memenuhi ketentuan sebagai berikut: o Panjang nama suatu identifier maksimum 63 karakter. Selebihnya akan diabaikan oleh compiler. o Identifier harus diawali dengan abjad, atau karakter garis bawah (_). o Karakter berikutnya bisa abjad, karakter garis bawah, atau angka o Identifier tidak dapat mengandung karakter spasi ataupun simbol-simbol seperti $, #, &, %, dll o Nama identifier tidak boleh sama dengan kata kunci (reserved word) 2.3 Kata Kunci (Reserved Word) dan Directive Kata kunci (reserved word) adalah kata yang memiliki peran khusus dalam bahasa Delphi Pascal. Kata yang termasuk kata kunci tidak boleh menjadi identifier. Selain itu, Delphi juga memiliki sejumlah kata yang termasuk dalam kelompok directive, yaitu kata yang punya peran khusus tergantung lokasinya. 103
104 Berikut ini adalah daftar kata yang termasuk reserved word dan ditampilkan dalam urutan alfabet. and array as asm begin case class const constructor destructor disinterface div do downto else end except exports file finalization finally for function goto if implementation in inherited initialization inline interface is label library mod nil not object of or out packed procedure program property raise record repeat resourcestring set shl shr string then threadvar to try type unit until uses var while with xor Berikut ini adalah beberapa directive yang ditampilkan dalam urutan alfabet: at automated message on private protected published public 2.4 Compiler Directive Compiler Directive adalah informasi yang diberikan kepada compiler tentang bagaimana compiler akan meng-compile program. Compiler directive berbentuk sintaks khusus pada blok komentar yang diawali dengan karakter $. Compiler directive dapat dikelompokkan menjadi tiga kelompok, yaitu o Switch directive, yaitu directive yang digunakan untuk menghidupkan atau mematikan fitur khusus yang dimiliki compiler. Untuk setiap directive yang digunakan, kita biasanya menggunakan tanda + atau on untuk menghidupkan fitur tersebut, dan menggunakan tanda atau off untuk mematikannya. Beberapa directive jenis ini dapat dipanggil dalam satu perintah dengan dibatasi oleh tanda koma. 104
105 o Parameter directive, yaitu directive yang menentukan parameter tertentu yang berpengaruh terhadap proses compile. o Conditional directive, adalah kompilasi berdasarkan kondisi, dimana kondisi ditentukan oleh keberadaan suatu konstanta tertentu. $DEFINE digunakan untuk menentukan bahwa konstanta tersebut eksis, sedangkan $UNDEF digunakan untuk menentukan bahwa konstanta tersebut tidak (lagi) eksis. Untuk menentukan conditional compilation-nya gunakan $IFDEF, #IFNDEF, $ELSEIF, $ELSE, $ENDIF, serta $IFEND Compiler directive dapat dikirimkan melalui command line parameter jika kita menggunakan command line parameter untuk melakukan compile, bisa juga diletakkan dalam configuration file (file dengan ekstension.cfg). Semua compiler directive yang diletakkan dalam program akan meng-override compiler directive dari fiel.cfg maupun command line. 2.5 Unit Delphi Pascal merupakan bahasa modular sehingga memungkinkan modul program yang di-compile secara terpisah-pisah. Modul ini disebut sebagai unit. Penggunaan unit akan membuat program menjadi terstruktur dan memungkinkan reusability kode program dalam proyek yang berbeda. Kita dapat membuat sebuah unit yang berdiri sendiri dan dapat dipergunakan oleh proyek apapun. Ketika program di-compile, di-run atau sedang dilakukan syntax checking, delphi akan membentuk sebuah file biner dengan nama yang sama dan berakhiran dcu. Struktur Unit Sebuah unit selalu diawali dengan kata kunci unit<namaunit> dan diakhiri dengan end. (enda dan tanda titik). Nama unit harus sama dengan nama file (tanpa ekstension) serta mengikuti ketentuan sebagai identifier. Unit akan terbagi menjadi dua bagian yaitu interface dan implementation. Pada bagian implementation, kita dapat menyisipkan blok initialization dan finalization. Blok initialization berisi kode program yang akan dijalankan sesaat setelah unit dimuat ke memory, sedangkan finalization adalah blok yang dijalankan sesaat sebelum unit dibuang dari memory. 105
106 Definisi unit Bagian interface unit Nama_Unit; interface uses Unit1, Unit2,, UnitN; function Testing: Integer; Uses Uses list Bagian implementation implementation var Nilai: Integer; uses UnitA, UnitB,, unitz; function Testing: Integer; begin result := 0; end; initialization nilai := 100; finalization end. Kata kunci uses digunakan untuk mendaftarkan unit-unti lain yang identifiernya akan digunakan dalam unit yang bersangkutan. Uses bersifat optional dan jika dipergunakan harus berada pada bagian awal interface atau bagian awal implementaion. Unit yang disebut terakhir memiliki prioritas paling tinggi untuk digunakan. Contoh: uses SysUtils, Windows; procedure HapusFile(NamaFile: string); begin DeleteFile(NamaFile); end; Function DeleteFile ada di unit SysUtils dan unit Windows. Dalam contoh di atas, DeleteFile yang akan dipanggil adalah hapus file yang ada di unit Windows karena unit ini disebut belakangan dalam uses. 106
107 2.6 Initialization dan Finalization Initialization adalah bagian yang dijalankan ketika aplikasi atau library (DLL) dipanggil ke memory oleh windows. Delphi menggunakan metode depth-first traversal untuk menjalankan kode initialization, yaitu sebelum blok initalization suatu unit dijalankan, blok initialization setiap unit yang di-uses akan dijalankan terlebih dahulu. Blok initialization setiap unit hanya dijalankan sekali. Bila ada unit lain yang melakukan uses terhadap unit tersebut, kode initialization tidak akan dijalankan lagi. Finalization adalah bagian yang akan dijalankan ketika keluar dari aplikasi atau ketika library dibuang dari memory. Urutan pemanggilan blok finalization adalah kebalikan dari pemanggilan blok initialization. Sebagai catatan sebuah unit harus memiliki blok initialization untuk dapat memiliki blok finalization. Meskipun demikian bagian blok initialization bisa saja kosong. Berikut ini contoh yang menggambarkan initialization dan finalization. o Panggil menu File New Other o Pada Page New, pilih Console Application dan tekan tombol OK o Kemudian pilih menu File-New-Unit sebanyak tiga kali, sehingga kita memiliki sebuah porgam utama dan tiga buah unit. Untuk masing-masing unit, ketikkan kode berikut (halaman berikutnya) o Compile pgroam tersebut (Ctrl + F9). Untuk menjalankannya masuk ke DOS Window, dan jalankan program tersebut dari DOS Window, sehingga tampilan program bisa terlihat seluruhnya. program Project1; {$APPTYLE CONSOLE} uses Unit1 in Unit1.pas, Unit2 in Unit2.pas, Unit3 in Unit3.pas ; begin Writeln( Main Program ); end. 107
108 unit Unit1; interface uses Unit2, Unit3; implementation initialization Writeln( Inizialitation Unit1 ); finalization Writeln( Finalization Unit1 ); end. unit Unit2; interface uses Unit3; implementation initialization Writeln( Inizialitation Unit2 ); finalization Writeln( Finalization Unit2 ); end. unit Unit3; interface implementation initialization Hasilnya Writeln( Inizialitation adalah sebagai berikut: Unit3 ); finalization Writeln( Finalization Unit3 ); end. Initialization Unit3 Initialization Unit2 Initialization Unit1 Main Program Tekan Enter Finalization Unit1 Finalization Unit2 Finalization Unit3 108
109 Perhatikan bagian uses list dari Project1.dpr. Terlihat bahwa uses dimulai dari Unit1, diikuti Unit2 dan Unit3. Karena unit1 berada diurutan pertama useslist, maka Porject1 akan meminta Unit1 untuk menjalankan bagian initializationnya. Tetapi sebelum Unit1 menjalankan initializaton dirinya, Unit1 tersebut akan memeriksa apakah ada uses list. Ternyata ada uses ke Unit2 dan Unit3 secara beruurutan. Maka Unit1 akan meminta Unit2 untuk menjalankan initialization. Ternyata unit2 pun ada uses ke unit3, sehingga unit2 akan meminta unit3 menjalankan initialization. Karena unit3 tidak ada uses ke unit apapun, maka unit3 akan menjalankan bagian initialization-nya dan mengembalikan kendali kepada unit2. Unit2 akan menjalankan initalization dan mengembalikan kendali kepada unit1. Unit1 akan meminta unit3 untuk memanggil initialization.tetapi karena initialization unit3 sudah pernah dipanggil, maka kendali diberikan kepada unit1. Selanjutnya unit1 akan menjalankan bagian initializationnya, dan mengembalikan kendalai ke project Konstanta Konstanta adalah identifier yang bersifat tetap selama program berjalan. Pendefinisian konstanta dilakukan pada blok yang diawali dengan kata kunci const. Bagian definisi konstanta dapat diletakkan pada bagian interface, implementation, atau dimana saja dalam kode program. Peletakan konstanta akan berpengaruh terhadap dikenalnya konstanta dari bagian lain program. Sebagai contoh, misalkan konstanta diletakkan pada bagian interface, maka konstanta tersebut akan dikenal oleh unit lain. Bila diletakkan pada bagian implementation,maka konstanta tersebut hanya dikenal oleh unit tersebut. Dikenalinya suatu identifier dari suatu lokasi tertentu dalam program biasa disebut dengan scope. Delphi secara otomatis akan menentukan tipe konstanta berdasarkan nilai yang didefinisikan untuk konstanta tersebut. Meskipun demikian, kita bisa mendefinsiikan tipe konstanta kita secara eksplisit. 109
110 Kita bisa mengisi nilai konstanta dengan ekspresi yang memenuhi syarat tertentu. Ekspresi untuk konstanta biasanya disebut sebagai constant expression. Ekspresi ini mencakup angka, karakter, True, False, atau null, opeartor untuk numerik maupun string, serta bisa juga konstanta lain, asal sudah didefinisikan sebelumnya. unit Unit2; interface const AppCaption = Programku ; procedure HitungData; implementation const xdata = 10; ydata = 100; procedure HitungData; const A: real = 10; begin {Kode untuk hitung data} end; end. 2.8 Variabel Sebelum suatu variabel dapat digunkan, variabel tersebut harus didefinisikan terlebih dahulu.untuk mendefinisikan variabel gunakan kata kunci var yang menandai area pendefinisian variabel. Peletakan area pendefinsian variabel ini dapat dilakukan dimana saja dalam program, dan akan berpengaruh terhadap scope-nya. Setiap variabel yang didefinisikan harus mempunyai tipe. Untuk mendefinsikan tipe satu variabel, gunakan tanda titik dua (:). Berikut ini adalah contoh pendefinisian variabel. var Karena Value: Integer; dan Sum bertipe sama, penulisannya bisa dilakukan sebagai Sum: Integer; berikut: Line: string; 110
111 var Value, Sum: Integer; Line: string; 2.9 Tipe Data Dalam Delphi ada beberapa kelompok tipe data, yaitu o Boolean Boolean adalah tipe data yang nilainya adalah True atau False. Dalam Delphi, Tipe data boolena disimpan dengan lebar 1 byte. Operasi Boolean Operasi Boolean memerlukan operan dengan tipe boolean (True atau False) dan menghasilkan nilai boolean juga. Operator yang digunakan dalam operasi boolean adalah sebagai berikut: Tabel : Operator Boolean Operator Operasi Contoh not Negasi not(a>10) and Menghasilkan nilai true bila kedua operan A and B bernilai True. Bila salah satu operan False maka hasilnya pasti False or Menghasilkan nilai True bila salah satu operan bernilai True. Bila keduanya False hasilnya adalah False A or B xor Menghasilkan nilai True bila hanya satu A xor B operan yang True. Bila keduanya True atau keduanya False, maka hasilnya False o Integer Integer adalah bilangan bulat. Dalam Delphi, terdapat beberapa tipe data yang merupakan Integer dan dikelompokkan sebagai generik dan fundamental. Tabel : Tipe generik Tipe Data Range Format Integer -2,147,483,648 sampai Signed 32-bit 111
112 2,147,483,647 Cardinal 0 sampai 4,294,967,295 Unsigned 32-bit Tabel : Tipe Fundamental Tipe Data Range Format ShortInt -128 sampai 127 Singed 8-bit SmallInt -32,768 sampai 32, 767 Singed 16-bit LongInt -2,147,483,648 sampai Singed 32-bit 2,147,483,647 Int64 -(2^63)..(2^63)-1 Singed 64-bit Byte 0 sampai 255 unsinged 8-bit Word 0 sampai 65,535 unsinged 16-bit LongWord unsinged 32-bit Operasi Aritmetik Operasi aritmatik digunakan untuk melakukan penghitungan aritmatik. Operan dan hasil dari operasi arimetik adalah Integer atau Real. Operator yang digunakan dalam operasi aritmatik adalah sebagai berikut: Tabel : Operasi Aritmetik Operator Operasi Tipe Operan Tipe Hasil + Penjumlahan Integer, Real Integer, Real Jika salah satu operan real, maka hasilnya real - Pengurangan Integer, Real Integer, Real Jika salah satu operan real, maka hasilnya real * Perkalian Integer, Real Integer, Real Jika salah satu operan real, maka hasilnya real / Pembagian real Integer, Real Real div Pembagian Integer Integer, hasil akan integer dibulatkan ke bawah 112
113 Mod Pembagian sisa Integer Integer + (unary) Tanda + Integer, Real Integer, Real - (unary) Tanda - Integer, Real Integer, Real Secara umum, operasi aritmatika terhadap integer akan menghasilkan tipe integer atau kardinal. Operasi Bitwise Operasi Bitwise adalah pengoperasian dua operan dengan tipe integer yang dipandang sebagai kumpulan bit. Tabel : Operasi Bitwise Operator Operasi Contoh not and or xor shl Bitwise not Untuk setiap bit 0 menjadi 1 dan setiap bit 1 menjadi 0 Bitwise and Bila dua bit bernilai 1, maka bit hasilnya bernilai 1. Jika salah satu bit bernilai 0,maka bit hasilnya bernilai 0 Bitwise or Bila salah satu bit bernilai 1, maka bit hasilnya bernilai 1. Jika kedua bit bernilai 0,maka bit hasilnya bernilai 0 Bitwise xor Bila salah satu bit bernilai 1 dan bit lainnya bernilai 0, maka bit hasilnya bernilai 1. Bila keduanya 0 atau keduanya 1, maka bit hasilnya adalah 0 Bitwise shift left Menggeser semua bit ke kiri dari operan pertama sebanyak A := 5; B := not A; A not B = 250 A := 5; B := 12; C := A and B; A B and C = 4 A := 5; B := 12; C := A or B; A B or C = 13 A := 5; B := 12; C := A xor B; A B xor C = 9 A := 5; B := 2; C := A shl B; A
114 shr operan kedua shl 2 C = 20 Bitwise shift right Menggeser semua bit ke kanan dari operan pertama sebanyak operan kedua A := 5; B := 2; C := A shr B; A shr 2 C = 1 o o o Real Tipe generik Real pada Delphi didefinsikan sebagai Double. Enumerated Tipe data Enumerated adalah tipe data yang isinya terbatas pada nilainilai yang telah didefinisikan. Untuk mendefinsikan tipe data jenis ini digunakan kurung buka sebagai awal, kurung tutup sebagai akhir, serta setiap nilai yang mungkin dibatasi dengan koma Contoh: type TKartu = (Club, Diamond, Heart, Spade); TjenisKelamin = (Pria, Wanita); Nilai ordinal dari tipe enumerated menunjukkan posisi nilai yang ada pada definisi mulai dari nol. Misalnya Ord(Pria) bernilai nol, dan Ord(Wanita) bernilai 1. Tipe data ini seringkali berhubugan dengan tipe data set. Set Tipe data set adalah kumpulan elemen data yang masing-masing memiliki tipe yang sama. Set merupakan implementasi himpunan data. Untuk mendefinsikannya dapat dilihat pada contoh berikut; type TSetHuruf = set of Char; var Vokal: TSetHuruf; Konsonan : TSetHuruf; Angka : TSetHuruf; Kosong: TSetHuruf; o Char dan Wide Char Tipe fundamental dari karakter adalah AnsiChar dan WideChar. AnsiChar berukuran 1 byte sedangkan WideChar berukuran lebih dari 1 byte. Char 114
115 adalah tipe ordinal, sehingga memliki sifat-sifat tipe ordinal, misalnya di- Increament, decreament, dan dapat menjadi pilihan dalam Case. Untuk melihat nilai byte dari karakter, dapat menggunakan Ord(x), dimana x adalah char. o String Short String : string dengan panjang maksimum 255 karakter Ansi String/Long String (atau hanya string saja) adlah string yang dialokasikan secara dinamik sesuai kebutuhan. Panjang Ansi String hanya dibatasi oleh memory yang tersedia. Variabel yang bertipe string sendiri sebenarnya adalah sebuah pointer yang berisi alamat di heap memory. Mekanisme alokasi dan dealokasinya dikelola oleh Delphi Struktur Percabangan dan Pengulangan Percabangan adalah mengontrol program sehingga perintah yang dijalankan mengikuti alur tertentu berdasarkan suatu kondisi tertentu. Yang termasuk dalam pencabangan adalah perintah if then else, dan perintah case. Elemen program lain yang juga penting adalah pengulangan atau loop. Loop adalah pengulangan perintah sesuai dengan kondisi tertentu. Dalam object pascal terdapat 3 jenis loop, yaitu for, while, dan repeat, yang masing-masing memiliki ciri tersendiri. If, Then, Else Salah satu kata kunci yang memiliki peran sangat besar dalam pemrograman adalah kelompok kata kunci If, Then, Else. Kata kunci ini digunakan untuk melakukan suatu proses tertentu bila kondisi tertentu dipenuhi, dan menjalankan proses lain jika kondisi tidak terpenuhi. Bentuk dasarnya: if <ekspresi boolean> then <pernyataan> [else <pernyataan>]; 115
116 Ekspresi adalah sekumpulan perintah dalam objek pascal yang memberikan nilai tertentu. Ekspresi boolean dalam if diatas adalah ekspresi yang hasilnya data boolean (True atau False). Pernyataan adalah sekumpulan perintah dalam objek pascal yang mewakili aksi tertentu dan akan dijalankan. Sekumpulan pernyatan yang diawali dengan begin dan diakhiri dengan end disebut statement block /blok pernyataan, dan selalu dapat dianggap sebagai pernyataan tunggal. Kata kunci else<pernyataan>, bersifat opsional, artinya boleh tidak diikutkan. Sebelum kata kunci else tidak ada titik koma. Kita lihat contoh berikut: if a > 0 then x:= 100 else x := 200; Pada contoh di atas, variabel a akan diperiksa untuk menentukan nilai yang akan diisikan pada varibael x. Jika variabel a nilainya 0, maka x akan diisi dengan 100, jika tidak maka x akan diisi dengan 200. Case Kalau if-then-else adalah pencabangan yang memiliki dua alternatif, Case adalah percabangan yang memiliki lebih dari dua alternatif. Bentuknya adalah sebagai berikut: case <ekspresi> of <nilaicase>: <pernyataan>; <nilaicase>: <pernyataan>; else <pernyataan> end Ekspresi adalah suatu ekspresi yang menghasilkan nilai ordinal, nilaicase adalah nilai konstan yang akan dibandingkan dengan ekspresi ordinal tersebut. Contohnya case Ch of A.. Z, a.. z : Label1.Caption := Huruf ; : Label1.Caption := Angka ; else Label1.Caption := Special karakter ; end; 116
117 For Loop jenis ini dilakukan untuk pengulangan dengan banyaknya pengulangan yang sudah diketahui. Bentuk loop jenis ini adalah sebagai berikut: for <nilai_awal> to <nilai_akhir> do <pernyataan> Untuk end; for yang nilai akhir < nilai awal, gunakan bentuk berikut: for <nilai_awal> downto <nilai_akhir> do Nilai_awal <pernyataan> dan nilai_akhir adalah ekspresi dengan tipe Integer. Contoh end; penggunaan for adalah sebagai berikut: var i : Integer; x : Integer; begin x:= 0; for i := 0 to 9 do begin Writeln( Nilai iterasi: + IntToStr(x)); Inc(x, 10); end; end. While Loop jenis ini digunakan untuk melakukan pengulangan selama suatu kondisi tertentu terpenuhi. Bentuknya adalah sebagai berikut: while <kondisi> do begin <pernyatan> end; Contohnya adalah sebagai berikut: var i := Integer; begin i := 5; while i > -1 do begin Writeln( Nilai iterasi: + IntToStr(i)); Dec(i); end; Memo1.Lines.Add( Selesai ); end; 117
118 Repeat Loop jenis ini digunakan untuk melakukan pengulangan sampai suatu kondisi terpenuhi. Perbedaan mendasar antara while dengan repeat adalah bahwa pada while pengecekan dilakukan pertama kali, sedangkan pada repeat pengecekan dilakukan terakhir. Akibatnya adalah bahwa pada repeat proses akan dilakukan paling sedikit satu kali. Bentuk repeat adalah sebagai berikut: Contohnya adalah sebagai berikut. repeat <pernyatan> until<kondisi> var I := Integer; Begin I := 5; Memo1.Clear; repeat Memo1.Lines.Add( Iterasi ke + IntToStr(I)); Dec(I); until I = -1; Memo1.Lines.Add( Selesai ); end; 2.11 Array Array adalah kumpulan data yang bertipe sama. Elemen array dapat diakses dengan menggunkan indeks yang berada pada kurung siku ([]). Delphi menyediakan beberapat tipe array, yaitu static array, dynamic array, serta open array. Bentuk umum definisi array adalah: <NamaArray> = array [Tipe Indeks] of <Tipe Dasar>; <NamaArray> = array [Tipe Indeks, ] of <Tipe Dasar>; <NamaArray> = array of <Tipe Dasar>; Tipe indeks adalah tipe yang digunakan untuk melakuakn indeksing array. Tipe indeks yang paling sering digunakan adalah [min.. maks], min adalah indeks minimum, maks adalah indeks maksimum. Tipe indeks lain yang dapat 118
119 digunakan adalah [Byte], [ShortInt], [Char], atau Tipe ordinal lainnya. Indeks minimum dan maksimumnya tergantung range masing-masing tipe. Contoh: var MyArray: array[0..4] of integer Array Multidimensi Kita juga dapat mendefinisikan array lebih dari satu dimensi dengan cara var MultiDimArray: array[0..5, 0..3] of integer Untuk mengaksesnya kita dapat melakukannya dengan cara: x:= MultiDimArray[2, 3] + MultiDimArray[1, 2]; atau BAB III FORM x:= MultiDimArray[2][3] + MultiDimArray[1][2]; Dalam Delphi, Form merupakan bagian sangat penting dalam user interface, didefinisikan dalam unit Forms sebagai kelas Tform. Tform adalah turunan dari TwinControl melalui TscrollingWinControl dan TCustomForm Pemrograman Berorientasi Objek Ciri dasar dari pemrograman berorientasi objek adalah adanya : kelas yang adalah definisi data dan fungsi yang terbungkus secara abstrak Encapsulation merupakan proses menyembunyikan bagian dari program Inheritance yang adalah hubungan antar objek Polymorphism yaitu kemampuan untuk melakukan hal yang sama dengan cara yang berbeda 119
120 Kelas dan Instance Kelas adalah cetakan atau abstraksi dari objek, sedangkan instance adalah contoh nyata objek dari kelas tertentu. Dalam konteks pemrograman, kelas adalah tipe data, sedangkan contoh nyata adalah tempat dalam memori dimana objek dibuat. Berikut ini adalah contoh kode pendefinisian kelas sebagai tipe objek yang terletak pada bagian implementasi : type MyClass = class private mydata1: Integer; mydata2: Integer; public function GetMyData1: Integer; function GetMyData2: Integer; function GetMyData3: Integer; end; Kelas TObject dan Variabel Bertipe Object Kelas TObject memiliki posisi tertinggi dalam struktur hirarki objek di Delphi. Semua kelas adalah turunan dari kelas TObject. Selain itu, semua variabel bertipe TObject maupun turunannya adalah variabel pointer. Oleh sebab itu sebelum variabel dipakai harus disiapkan memory untuk objek yang dimaksudkan dengan cara memanggil constructornya. var begin end obj1, obj2:myclass; obj1 := MyClass.Create; // Alokasi memori untuk Obj1 obj2 := obj1; // obj1 dan obj2 mengacu pada alamat yang sama obj1.mydata1 := x; Method Method didefinisikan sebagai member dari suatu kelas. Cara pendefinisian dan perilakunya sangat mirip dengan function atau procedure biasa, perbedaanya terletak pada bagian implementasi method. Berikut ini adalah cara pendefinisian objek : TmyObject = class public procedure MyProc(x: Integer); function MyFunc(y: Double): Double; end; 120
121 Kedua method di atas diimplementasikan seperti contoh berikut ini : function TmyObject.MyFunc(y:Double) : Double; begin result := y; end; procedure TmyObject.MyProc(x: Integer); begin // kode... end; Sedangkan, cara penggunaannya seperti di bawah ini : z := y.myfunc(10); Event Event adalah property yang bertipe method dan memiliki visibility published. Karena itu, event memiliki RTTI sehingga dapat muncul di Object Inspector. Sebagai property, kita dapat meng-assign event seperti halnya kita mengassign properti biasa, tentu saja asal tipenya sesuai. Exception Delphi menyediakan pengelolaan error dengan konsisten. Ketika error muncul maka terbentuklah sebuah tipe objek dengan tipe exception. Saat exception muncul, Delphi akan menampilkan kesalahan dan menghentikan program di titik tersebut. Tetapi, terkadang kita ingin melakukan sesuatu ketika error muncul, kita dapat mendefinisikan respon terhadap munculnya exception tertentu dengan try...except dengan bentuk dasarnya seperti di bawah ini : try [blok program yang dilindungi] except on ExceptionTertentu do [statemen bila ExceptionTertentu terjadi] end; Debugging Ketika menjalankan program di editor Delphi (misalnya: menekan suatu tombol ) maka kita menjankan program tersebut dalam debugger. Ketika error terjadi maka program berhenti dan menunjuk baris tempta error. Tetapi untuk mempelajari exception, kita ingin tahu apakah exception sudah ditangani dengan benar, kita dapat menjalankan file exe-nya melalui Windows 121
122 Explorer, atau mematikan sementara Stop On Delphi Exception yang kita tampilkan dari menu Tools Debugger Option pada page Language Exception. Soal Latihan 1. Identifier digunakan untuk mengidentifikasi berikut ini, kecuali : a. konstanta b. tipe data c. nama file d. function 2. Identifier yang bersifat tetap selama program berjalan disebut : a. konstanta b. tipe data c. function d. procedure 3. Pendefinisian variabel dengan menggunakan kata kunci : a. asm b. begin c. const d. var Soal Praktek 4. Buatlah program Delphi untuk memeriksa apakah sebuah bilangan merupakan bilangan genap atau bilangan ganjil pada daftar bilangan berikut ini : 23, 3, 1, 4, 6, 11, 10, 8, 2, 7, Buatlah program Delphi untuk melakukan pengurutan terhadap bilangan-bilangan berikut ini : 0,4,2,7,6,8,3,5,1,9. 122
123 BAB III FORM 3.1 Property Property FormStyle Property yang digunakan untuk mengatur perilaku form ini memiliki pilihan nilai fsmdichild, fsmdiform, fsnormal, serta fsstayontop. Property fsnormal adalah property form pada umumnya. Property fsdmichild dan fsmdiform berkaitan dengan mekanisme Mulitple Document Interface (MDI), dimana fsdmichild akan berperan sebagai form anak dan fsmdiform akan berperan sebagai form induknya.property terakhir yaitu fsstayontop, bila form yang bukan form utama memiliki nilai ini, maka form tersebut akan berada di atas semua form lainnya. Tetapi bila form utama yang memiliki property fsstayontop, maka aplikasi akan selalu berada di atas aplikasi lainnya, kecuali bila aplikasi lain yang juga stay on top. Property BorderStyle Property ini digunakan untuk mengatur bentuk pinggiran dari form, termasuk juga bagian kepala form. Isi property ini adalah sebagai berikut: o bsnone, mengakibatkan form tidak memiliki pinggiran dan tidak bisa diresize o bssingle, mengakibatkan form memiliki pinggiran yang agak tipis dan tidak dapat di-resize o bssizeable, yang merupakan nilai default, mengakibatkan form memiliki pinggiran yang sedikit agak tebal dibanding bssingle dan dapat di resize o bsdialog, mengakibatkan pinggiran form, berbentuk dialog standar windows dan tidak dapat di resize o bstoolwindow, mengakibatkan form berbentuk mirip bssingle tetapi dengan kepala form berukuran kecil o bssizetoolwin, mengakibatkan form berbentuk mirip bssizeable, tetapi dengan kepala form berukuran kecil. 123
124 Property BorderIcons Normalnya, sebuah form akan memiliki sebuah icon yang terhubung dengan system menu di sebelah kiri atas. Di bagian kanan atas terdapat tiga buah icon, yaitu minimize, maximize/restore, dan Close. Icon-icon tersebut kenampakannya dapat diatur dengan suatu property yang bernama BorderIcons. Nilai property ini adalah set dari (bisystemmenu, biminimize, bimaximize, bihelp) yang masing-masing berperan sebagai berikut: o bisystemmenu, digunakan untuk menampilkan atau tidak menampilkan system menu. Bila bisystemmenu tidak termasuk dalam property ini, maka icon system menu (di sebelah kiri kepala form) dan icon lainnya tidak akan dimunculkan. Bile elemen set ini termasuk dalam property BorderIcon tersebut, maka icon system menu akan dimunculkan, dan icon lainnya akan tergantung dari elemen set lainnya. o biminimize, digunakan untuk menampilkan atau tidak menampilkan icon minimize. Bila elemen ini termasuk dalam nilai property, maka icon minimize akan ditampilkan. Sebaliknya, bila tidak termasuk dalam nilai property, maka icon tidak akan ditampilkan. o bimaximize, digunakan untuk menampilkan atau tidak menampilkan icon maximize. Bila elemen ini termasuk dalam nilai property, maka icon maximize akan ditampilkan. Sebaliknya, bila tidak termasuk dalam nilai property, maka icon tidak akan ditampilkan o bihelp, digunakan untuk menampilkan sebuah icon berbentuk tanda tanya di bagian kanan, yang hanya muncul bila biminimize tidak termasuk dalam property atau property BorderStyle bernilai bsdialog. Dalam Delphi bila icon Help muncul, sedangkan aplikasi sudah di-link dengan sebuah file help, serta komponen-komponen yang ada dalam form memiliki nilai help konteks, maka ketika tombol ini ditekan dan kita click salah satu komponen di atas form, maka help berkaitan dengan form tersebut (sesuai help context) akan ditampilkan. Property Position Maskipun kita bisa meletakkan posisi form di tempat yang kita inginkan dengen menggunakan property Left dan Top, Delphi menyediakan pengaturan posisi yang bersifat instant dengan menggunakan property 124
125 Position. Property ini bertipe Tposition yang merupakan enumerated type dengan kemungkinan isi sebagai berikut o podesigned, yang merupakan nilai default, digunakan untuk menampilkan form sesuai dengan pada sat design time. Perlu diberikan catatan disini adalah ketika aplikasi sedang berjalan dan ukuran maupun posisi form berubah, misalnya dengan merubah nilai position menjadi posscreencenter, kemudian kita mengubah nilai property position menjadi podesigned, maka posisi form tidak akan berubah. Jadi podesign hanya akan menggunakan posisi dan ukuran form sesuai dengan design time pad saat awal form di-create. o podefault, digunakan untuk menampilkan form dimana posisi dan ukurannya sesuai dengan nilai yang diberikan oleh windows. Mengubah nilai property ini menjadi podefault pada saat run-time akan selalu menyebabkan perubahan posisi, meskipun nilai sebelumnya juga podefault. o podefaultposonly, digunakan untuk menampilkan form dimana posisinya (left dan top) sesuai dengan nilai yang diberikan oleh windows, sedangkan width dan height sesuai dengan design time. Perilaku perubahan posisi seperti podefault, sedangkan perilaku perubahan ukuran sama dengan podesigned. o podefaultsizeonly, digunakan untuk menampilkan form dimana ukurannya (width dan height) sesuai dengan nilai yang diberikan oleh windows, sedangkan left dan top sesuai design time. Perilaku perubahan sama dengan podefault, sedangkan perilaku perubahan posisi sama dengan podesigned. o poscreencenter, digunakan untuk menampilkan form dimana ukuran form sesuai dengan design time, sedangkan poisis form persis ditengah layar. Bila menggunakan multi monitor, maka form akan disesuaikan/dipindahkan ke monitor tertentu sesuai nilai property DefaultMonitor o podesktopcenter, digunakan untuk menampilkan form dimana ukuran form sesuai dengan design time, sedangkan posisi form persis ditengah layar. Untuk menggunakan multi monitor tidak dilakukan penyesuaian monitor yang digunakan. 125
126 o o pomainformcenter, digunakan untuk meletakkan form ditengah form utaman (main form) poownerformcenter, digunakan untuk meletakkan form ditengah form yang memilikinya (property owner). Bila property owner tidak di-set, perilakunya sama dengan pomainformcenter. Property ScreenSnap Property ini baru di Delphi 7 dan digunakan untuk memindahkan form ke tepi layar bila cukup dekat dengan tepi layar. Jarak yang menjadi acuan untuk cukup dekat denga tepi layar adalah property SnapBuffer. Sebagai contoh bila nilai SnapBuffer adalah 10, kita pindahkan form ke atas hingga jarak posisi atas form dengan posisi atas layar kurang atau sama dengan 10,maka secara otomatis posisi atas form akan ditempelkan dengan tepian layar. Demikian juga bila form kita gerakkan ke tepi kiri, kanan ataupun bawah. Bila taskbar berada di bawah, yang menjadi batas bawah adalah taskbar. 3.2 Bekerja dengan Banyak Form Menampilkan Form Lain Setiap form memiliki method yang bernama Show dan ShowModal, yang digunakan untuk menampilkan form. ShowModal artinya menampilkan Form, dimana program akan berhenti sementara hingga Form ditutup. Show artinya Form ditampilkan, sedangkan program akan terus berjalan. Bila suatu form dipanggil secara modal, maka form lain tidak dapat diaktifkan sampai form tersebut di-close. Contoh Menampilkan Form Berikut ini kita akan membuat sebuah aplikasi dengan banyak form. Pada latihan ini akan ditunjukkan perbedaan penggunaan perintah Show dan ShowModal. o Buatlah sebuah project baru. o Tambahkan sebuah form baru dengan menu New-Form, akan muncul form baru dengan nama Form2. o Pada Form2, tambahkan beberapa komponen sesuai keinginan. 126
127 o o o o o Tambahkan form baru lagi, maka akan muncul form dengan nama Form3. Pada Form3, tambahkan beberapa komponen sesuai dengan keinginan. Selanjutnya pilih Form1. Kita dapat menggunakan window list form dengan menekan Shift-F12. Pada Form1, tambahkan dua tombol, Button1 dan Button2. Definisikan respon dari event onclick pada Button1, sebagai berikut. procedure TForm1.Button1Click(Sender: TObject); begin Form2.ShowModal; end; o o o o Definisikan respon dari event onclick pada Button2, sebagai berikut. procedure TForm1.Button2Click(Sender: TObject); begin Form3.Show; end; Simpan project Sampai disini Form1 belum dihubungkan dengan Form2 dan Form3, melalui Uses List. Bila kita jalankan program maka akan muncul pertanyaan yang isinya kurang lebih konfirmasi pendefinisian Form2 dan Form3 melalui uses list. Jalankan Aplikasi, jawab pertanyaan dengan Yes. Jalankan Aplikasi sekali lagi. Bila kita menekan tombol1. maka Form2 akan muncul. Tetapi kita tidak dapat mengaktifkan Form1 sebelum Form2 di-close. Bila kita menekan tombol2. maka Form3 akan muncul. Kita dapat mengaktifkan Form1 walaupun Form3 tidak di-close. Auto-Create, Available Form,serta Main Form Auto-create Form adalah form yang langsung dicreate pada saat aplikasi dijalankan. Secara default, form yang dibuat akan berjenis auto-create. Available Form adalah form yang tidak langsung dicreate pada saat aplikasi akan dijalankan. Sebelum Form dapat digunakan, kita harus meng-create terlebih dahulu form ini. 127
128 Setiap Form dapat diubah statusnya sebagai Auto-Create atau Available melalui Project-Options(Pilih menu Project-Options). Main Form adalah form yang pertama dipanggil ketika aplikasi dijalankan. Yang menjadi Main Form adalah form yang pertama kali di-create. Setiap aplikasi hanya memiliki satu main form. 3.3 Komponen Dalam Delphi Application framework adalah library yang berisi objek-objek yang dapat digunakan oleh programmer dalam membuat program. Delphi menyediakan dua macam application framework yang dapat digunakan, yaitu CLX (Component Library for Cross Platform) yang digunakan untuk membangun program yang portable antar Delphi dan Kylix, serta VCL (Visual Component Library) yang digunakan hanya untuk mengembangkan aplikasi dengan platform Windows. VCL memiliki ribuat objek, beberapa diantaranya adalah : TObject adalah moyang dari semua objek yang ada di Delphi TPersistent adalah turunan lain dari TObject yang berperan sangat penting dalam VCL. Objek ini di compile dengan compiler directive {$M+}, sehingga objek ini dan turunannya memiliki RTTI (Run-time Type Information). Turunan dari TPersistent diantaranya adalah TComponent, yaitu semua objek dari Component. Selanjutnya, kita akan membuat program untuk mendaftarkan semua komponen yang dimiliki form diatas sebuah memo dengan property Components. Buat aplikasi baru, pada form tambahkan beberapa visual komponen ataupun non visual komponen. Buatlah tombol yang akan kita gunakan event OnClick-nya. Pada event OnClick tombol, tuliskan kode berikut ini : procedure TForm1.Button1Click(Sender: TObject); var i : Integer; begin Memo1.Clear; for i := 0 to ComponentCount-1 do begin 128
129 Memo1.Lines.Add(Components[i].ClassName+ _ +Components[i].Name); end; end; Jalankan program dan tekan tombol. Maka pada memo akan didaftarkan komponen yang dimiliki form. CLX (Component Library for Cross Platform) CLX adalah library kelas pertama yang cross-platform, dirancang untuk perilisan Kylix 1 pada bulan Maret Jika kita hendak membuat code hanya untuk Window, kita gunakan aplikasi dengan VCL tetapi jika kita hendak menulis aplikasi yang kode sumbernya dapat di kompilasi baik di aplikasi Windows atau aplikasi Linux, kembangkan aplikasi dengan CLX. CLX terdiri dari 4 komponen, diantaranya yaitu : BaseCLX Basic run-time library bersama dengan unit-unit lain yang secara historis dianggap sebagai bagian dari VCL. Tabel di bawah ini menunjukkan beberapa unit dari BaseCLX : Unit Name Tabel : Beberapa Unit BaseCLX Keterangan SysUtils SysConst RTLConsts Types Variants VarUtils Math DateUtils Utiliti yang umum dan kelas eksepsi String constants yang digunakan di SysUtils String constants yang digunakan di berbagai unit RTL Definisi tipe umum Implementasi Portable Variant Platform-netral Variant yang mendukung rutin Rutin matematika Utiliti untuk manipulasi Tanggal 129
130 Gambar : Library BaseCLX VisualCLX Framework VisualCLX adalah sekumpulan kelas-kelas yang merepresentasikan visual control tetapi harus bekerja dimanapun baik di Microsoft Windows dan X Windows di Linux. Kontrol yang direpresentasikan dengan komponen VisualCLX diimplementasikan dengan library kelas C++ yang disebut QT. NetCLX Bagian NetCLX dari library CLX merupakan bagian yang paling sedikit berubah. NetCLX juga mengikusertakan komponen Internet Direct Suite (Indy). Komponen ini bersifat freeware yang bekerja di Delphi, C++Builder dan Kylix dan bekerja baik dengan library VCL dan CLX. Soal Latihan 1. Untuk mengatur bentuk pinggiran dari form digunakan properti : a. FormStyle b. BorderStyle c. Position 130
131 d. BorderIcons 2. Properti yang baru di Delphi 7 dan digunakan untuk memindahkan form ke tepi layar adalah a. FormStyle b. Position c. BorderIcons d. ScreenSnap 3. Komponen dalam Delphi yang digunakan untuk membangun program yang portable antar Delphi dan Kylix adalah komponen a. CLX b. VCL c. Form d. RTTI Soal Praktek 4. Buatlah Form seperti gambar di bawah ini : 5. Buatlah form seperti pada soal no. 4, jika button1 di klik maka akan ditampilkan kalimat : Selamat Datang pada kotak pesan. 131
132 BAB IV Aplikasi Basis Data di Delphi Aplikasi database memungkinkan user berinteraksi dengan informasi yang tersimpan dalam sebuah database. Tidak seperti sistem pengembangan aplikasi yang lain, Delphi memberikan banyak pilihan teknologi kepada developer dalam membangun aplikasi database. Dengan banyak pilihan tersebut, developer dapat mengembangkan aplikasi dengan mekanisme akses data yang paling tepat menurut kebutuhan. 4.1 Tipe Database Tipe Database Management System Database adalah informasi yang diorganisasikan dan disimpan dengan cara tertentu. Jenis sistem database yang paling banyak digunakan pada masa kini adalah Database Relasional. Database Relasional mengorganisasikan informasi dalam bentuk tabel-tabel logika yang saling berelasi. Sistem yang digunakan untuk mengelola database biasanya disebut Database Management Systems (DBMS). DBMS yang mengelola database relasional biasa disebut Relational Database Management Systems (RDBMS). Setiap DBMS mempunyai cara tersendiri bagaimana menyimpan informasi dan bagaimana menyediakan interface ke user untuk mengaksesnya. Delphi mempunyai dukungan terhadap dua jenis server database relasional. o Remote Database Server, yaitu DBMS yang memiliki sistem independen yang terpisah dari aplikasinya. Remote database server biasanya berada pada mesin yang terpisah. Data dari remote database server bahkan mungkin tidak berada dalam satu mesin tetapi terdistribusi pada beberapa server. Walaupun remote database server bervariasi dalam menyimpan informasi, remote database server menyediakan interface yang seragam bagi user untuk mengakses informasi yang tersimpan di dalamnya yaitu Structured Query Langauge (SQL). Karena anda mengaksesnya menggunakan SQL, remote database server sering disebut SQL Server. Contoh remote database server pada saat ini misalnya Firebird, Oracle, IBM UDB DB2, MS SQL Server, InterBase, Sybase, Informix, PstgreSQL, dan lain-lain. 132
133 o Database Lokal, yaitu DBMS yang berada pada system yang sama dengan aplikasinya. Aplikasi dapat bersifat sub-ordinat dari DBMS dan sebaliknya DBMS-nya yang merupakan sub-ordinat dari aplikasi. Biasanya memiliki proprietary API untuk mengakses data dan hanya optimal untuk singel user. Jika database di share untuk beberapa user, biasanya menggunakan mekanisme file-based locking, karena itu sering disebut file-based database. Contoh databse lokal adalah Paradox, dbase, FoxPro, Access dan lain-lain. Tipe Aplikasi Database di Delphi Aplikasi database di Delphi mempunyai banyak tipe, yaitu o Sistem Tunggal/Stand_Alone Pada arsitektur ini database dan aplikasi database ditempatkan pada mesin (komputer) yang sama. Arsitektur ini adalah arsitektur yang paling sederhana dan dirancang untuk single-user. Database yang digunakan adalah database lokal. o Sistem File-Share Arsitektur ini sama dengan aplikasi database stand-alone kecuali database dapat diakses dari beberapa client yang terhubung dalam jaringan. Jadi aplikasi database ditempatkan di masing-masing client untuk mengakses database yang sama yang diletakkan di suatu komputer dalam jaringan. Atau dapat juga aplikasi berada pada server yang sama dengan data dan dijalankan oleh client melalui dumb terminal. Arsitektur ini hanya cocok untuk aplikasi dengan jumlah user yang sedikit. Database yang digunakan adalah database lokal. Aplikasi database stand-alone atau file-share termasuk dalam aplikasi single-tiered application, karena aplikasi dan database berbagi file system yang sama. o Sistem Client-Server Arsitektur ini terdiri dari dua komponen utama yaitu client dan server. Aplikasi database berada pada mesin client. Sedangkan pada server terdapat remote database server dan databaae yang akan diakses. Aplikasi jenis ini juga sering disebut sebagai two-tiered application. Jika aplikasi database juga ditempatkan di mesin yang sama dengan server yang berisi remote database server, aplikasi ini juga tetap disebut two- 133
134 o tiered application, karena aplikasi dan database server beroperasi pada dua system independen yang berbeda. Sistem Multi-tier Arsitektur ini merupakan perluasan dari sistem client-server. Arsitektur ini terdiri dari remote database server, aplikasi server yang mengakses remote database server dan aplikasi client yang mengakses aplikasi server. Jumlah tier dalam aplikasi dapat ditambah sesuai kebutuhan. Mekanisme Data Akses Untuk mengakses database, Delphi menyediakan banyak pilihan mekanisme akses data. Diantaranya adalah: o BDE (Borland Database Engine) o IBExpress o dbgo o dbexpress Semua mekanisme data akses di atas tersedia juga dalam platform.net di Delphi for.net. Delphi for.net juga menyediakan mekanisme data akses baru yang membungkus ADO.NET sehingga dapat lebih seragam dalam mengakses berbagai RDBMS yaitu BDP.NET (Borland Data Provider for.net). Selain itu Delphi for.net juga menawarkan framework baru untuk mengembangkan aplikasi database dengan pendekatan Model Driven Architecture yaitu Enterprise Core Object. Selain mekanisme data akses yang disediakan Delphi, banyak juga mekanisme data akses yang ditawarkan oleh pihak lain, baik yang bersifat komersial ataupun non-komersial yang dapat Anda gunakan di Delphi. Borland Database Engine BDE merupakan teknologi database standar yang diperkenalkan pada versi awal Delphi dan pada saat itu merupakan satu-satunya teknologi akses database yang ditawarkan Delphi. BDE awalnya adalah Paradox Engine untuk mengakses database Paradox yang kemudian dikembangkan agar dapat mengakses database lokal lainnya seperti dbase, Foxpro, Access dan text file. BDE juga dikembangkan agar dapat mengakses remote database server. 134
135 Delphi menyertakan beberapa DBE driver yang dikenal dengan nama SQL Links untuk mengakses SQL Server seperti Oracle, DB2, Sybase, Informix, MS SQL Server dan InterBase. BDE juga dapat mengakses database lain lewat ODBC driver. Membuat aplikasi dengan BDE sangat mudah dan seragam untuk berbagai jenis database. Ini membuat porting aplikasi dari suatu database ke database lain sangat mudah. BDE juga terdokumentasi dengan baik. Walaupun begitu BDE juga banyak kelemahan. BDE adalah engine yang besar dengan banyak file yang dibutuhkan ketika instalasi dan membutuhkan banyak memori. Arsitektur Dasar Aplikasi Database di Delphi Delphi menyediakan berbagai macam komponen dataset untuk mengakses data. Dataset adalah representasi data dalam aplikasi yang kita buat. Ketika akan mengakses suatu data dari sebuah sumber data maka kita membutuhkan komponen dataset agar kita dapat berinteraksi dengan data tersebut. Untuk menampilkan data di dataset pada user interface aplikasi, kita membutuhkan komponen-komponen yang dapat menampilkan data pada dataset. Komponen-komponen ini kita sebut sebagai data control. Dataset tidak dapat berhubungan langsung dengan data control. Keduanya dihubungkan oleh sebuah komponen yang bernama DataSource. Dataset dapat memperoleh data dari sumber data dengan berbagai cara. Arsitektur dasar aplikasi database di Delphi terdiri atas: User Interface Data Source Data Module Dataset Connection to data 135
136 User Interface User Interface berisi berbagai data control yang menampilkan data dari database yang direpresentasikan oleh dataset. Data Source Data source adalah penghubung antara user interface dan komponen dataset yang merupakan representasi dari data di database. Beberapa komponen data control pada sebuah form dapat berbagi sebuah data source. Dataset Inti dari aplikasi database adalah dataset. Komponen ini merepresentasikan sekumpulan record dari suatu database. Kumpulan record ini dapat berupa record-record dari sebuah tabel database, subset dari field atau record suatu tabel atau informasi yang berasal lebih dari satu tabel yang digabungkan membentuk singel view. Connection Dataset mengkoneksikan diri ke database dengan berbagai macam cara bergantung dengan tipe dataset yang digunakan. Beberapa jenis dataset dapat mengakses langsung data tanpa komponen connection Data Module Data module adalah kontainer tempat seluruh komponen data akses diletakkan. Data module berfungsi untuk melakukan sentralisasi seluruh business-rule dari aplikasi database Anda. 4.2 Aplikasi MyBase Dataset adalah inti dari aplikasi database di Delphi. Salah satu komponen dataset yang disediakan Delphi adalah ClientDataSet. ClientDataSet adalah dataset terpenting di Delphi dan merupakan inti dari sebagian besar dari aplikasi database di Delphi. ClientDataSet dapat memperoleh data secara langsung dari sumber data berupa file dengan format data paket. File data paket dapat berbentuk file 136
137 binary atau file text. Data paket dalam bentuk file binary biasanya berekstensi cds. Sedangkan data paket dalam bentuk text ditulis dalam bentuk XML. File data paket dalam bentuk text biasanya berukuran lebih besar dari pada file data paket dalam bentuk binary. Anda dapat membuat aplikasi database dengan menggunakan komponen ClientDataSet dengan database berupa kumpulan tabel yang disimpan dalam file-file data packet. Aplikasi yang dibuat menggunakan ClientDataSet dan mengakses file secara langsung disebut file-based database application. Delphi menyebut teknologi ini dengan MyBase. Untuk membuat aplikasi database sederhana single-user yang hanya megelola data dalam jumlah yang tidak besar, aplikasi MyBase sangat tepat digunakan. Aplikasi MyBase sangat ringan dan cepat karena seluruh isi tabel di-load ke memory. Oleh karena itu besarnya tabel dibatasi oleh kapasitas memori komputer Anda. Arsitektur aplikasi MyBase dapat digambarkan seperti diagram dibawah ini. User Interface Data Module Data Source DataSet File Dengan membandingkannya dengan diagram arsitektur data aplikasi database di Delphi sebelumnya, tampak bahwa dataset yang digunakan dalam aplikasi MyBase adalah ClientDataSet dan koneksi ke sumber data dilakukan dengan cara mengaksesnya langsung dari file. 137
138 Contoh Aplikasi MyBase Untuk memperjelas pembahasan, kita akan mmebuat program sederhana yang akan menampilkan data dari sebuah file data paket. o Buat aplikasi bari dan beri nama form utama aplikasi dengan nama MainForm o Letkkan sebuah komponen ClinetDataSet dari component palette Data Access pada MainForm. Beri nama cdsemployee. Isi property Filename dengan file data yang akan ditampilkan. Anda dapat mengisikannya dengan salah satu file dengan ekstensi.xml atau.cds. Contohnya isikan dengan file Employee.xml lengkap dengan path-nya. o Letakkan sebuah komponen DataSource dari component aplette Data Access pada MainForm. Beri nama dsemployee. o Isi property Dataset dengan komponen ClientDataSet yang telah diletakkan sebelumnya yaitu cdsemployee. o Letakkan sebuah komponen DBGrid dari component aplette Data Controls pada MainForm. Beri nama dbgemployee. Isi property DataSource dengan dsemployee. o Set property Active dari cdsemployeemenjadi True o Jalankan program. Program akan menampilkan grid yang berisi data data tabel yang tersimpan pada file Employee.xml Gambar Grid Data Tabel 138
139 Mengaktifkan Dataset Untuk membaca data atau menuliskan data ke dataset, dataset yang bersangkutan harus diaktifkan terlebih dahulu. Anda dapat mengaktifkan dataset dengan dua cara: o Set property Active menjadi True baik saat design-time lewat Object Inspector atau saat runtime melalui kode program. ClientDataSet1.Active:=True; o Memanggil method Open pada saat runtime. ClientDataSet1.Active:=Open; Setelah Anda tidak menggunakan data pada sebuah dataset lagi, Anda dapat menonaktifkan dataset yang bersangkutan dengan dua cara: o Set property Active menjadi False baik saat design-time lewat Object Inspector atau saat runtime melalui kode program. ClientDataSet1.Active:=False; o Memanggil method Close pada saat runtime. ClientDataSet1.Active:=Close; o Mengakses Field Dataset Setelah dataset aktif, Anda dapat mengakses filed-field dari record yang aktif dengan mangakses object fieldnya. Ada beberapa cara mengakses filed-field dari record yang aktif. Menggunakan property default FieldValues Dataset mempunyai property default FieldValues yang bertipe variant. Contoh: Karena FieldValues adalah property yang bersifat default, maka Anda dapat mengaksesnya tanpa nama property-nya. Contoh: ClientDataSet1[ Customer ]:=edit1.text; ClientDataSet1.FieldValues1[ Customer ]:=Edit1.text; 139
140 o Menggunakan property Fields Anda harus mengetahui urutan field yang ada di dataset yang akan diakses. Field pertama mempunyai indeks 0. Jadi untuk mengakses field keempat yang bertipe string dari dataset, Label1.Text:=ClientDataSet1.Fields[5].AsString; o Method AsString adalah method dari TField untuk membaca nilai dari TField sebagai string. Ada banyak method serupa dari TField untuk berbagai tipe data seperti AsInteger, AsFloat, AsBoolean, dan lain-lain, Menggunakan Method FieldByName Method FieldByName dari dataset menghasilkan objek field yang diinginkan dan gunakan method konversi nilai sesuai dengan tipe data yang diinginkan seperti AsString atau AsInteger. Contoh: SpinEdit1.Value:= ClientDataSet1.FieldByName( QTY ).AsInteger 4.3 Manipulasi Data Modifikasi Data Aplikasi database dapat melakukan perubahan data pada database. Perubahan data dapat berupa penambahan data, pengeditan data, atau penghapusan data. Semuanya dilakukan melalui dataset. Setiap jenis dataset mempunyai perilaku khusus yang berbeda dalam menangani modifikasi data. Dataset menyediakan beberapa method untuk keperluan modifikasi data. Method Edit Append Insert Post Tabel : Method untuk Modifikasi Data Keterangan Mengubah state dari dataset menjadi dsedit jika state dari dataset bukan dsedit atau dsinsert. Posting semua data yang dipending, menggerakkan pointer record aktif ke aakhir dataset dan mengubah state dari dataset menjadi dsinsert. Posting semua data yang dipending dan mengubah state dari dataset menjadi dsinsert Mencoba untuk memposting data record aktif ke database. Jika 140
141 Cancel Delete sukses state dari dataset menjadi dsbrowser; Jika tidak sukses, state tidak berubah Membatalkan operasi dataset yang sedang berlangsung dan mengubah state dari dataset menjadi bsbrowse Menghapus record aktif dan mengubah state dari dataset menjadi dsbrowse. Operasi Editing Data o Menambah Record Ubah state dari dataset menjadi dsinsert menggunakan method Insert atau Append. Isi data field-field dari record baru. Gunakan method Post untuk menuliskan record baru tersebut dan kembali ke mode dsbrowse, atau gunakan method Cancel untuk membatalkan penambahan record. Contoh: ClientDataSet1.Insert; ClientDataSet1.FieldValue[ CustNo ]:= 1250; ClientDataSet1.FieldValue[ CustName ]:= SDDN ; ClientDataSet1.Post; o Method Insert menambahkan record baru ke dataset pada posisi tepat sebelum record aktif. Sedangkan method Append menambahkan record baru ke dataset pada posisi setelah record terakhir. Mengedit Record Dataset harus dalam state dsedit sebelum dapat diedit. Gunakan method Edit untuk mengubah state dari dataset menjadi dsedit. Setelah itu record aktif dapat diedit. Gunakan method Post untuk menuliskan hasil modifikasi atau ClientDataSet1.Edit; gunakan ClientDataSet1.FieldValue[ CustNo ]:= 1234; ClientDataSet1.Post; o method Cancel untuk membatalkan pengeditan data. Contoh: Menghapus Record Gunakan method Delete untuk menghapus record aktif. Contoh: ClientDataSet1.Delete; 141
142 Structured Query Language SQL adalah singkatan dari Structured Query Language. SQL adalah bahasa yang digunakan program aplikasi untuk berkomunikasi dengan RDBMS. SQL digunakan untuk membuat objek-objek database dan memanipulasi data pada database. Program aplikasi yang mengakses database tidak memberitahu bagaimana mengerjakan suatu perintah ke RDBMS tetapi cukup mendeskripsikan seperti hasil yang diharapkan dalam pernyataan SQL. Perintah-perintah SQL dikelompokkan menjadi dua bagian besar yaitu DML (Data Manpulation Language) dan DDL (Data Definition Language). Data Definition Language merupakan perintah SQL yang berhubungan dengan pembentukan objek-objek databse, seperti: database, tabel, domain, trigger, stored procedure dan lain-lain. RDBMS biasanya menyediakan aplikasi bantu untuk membantu user dalam pembentukan objek-objek database dengan user interface yang lebih mudah digunakan, sehingga sebagaian besar developer tidak lagi berurusan dengan Data Definition Language secara langsung. Data Manipulation Language merupakan perintah SQL yang berhubungan dengan memanipulasi data seperti: memperoleh data, memasukkan data, meng-update data dan menghapus data. SQL mempunyai pernyataan-pernyataan untuk memanipulasi data berikut ini: SELECT, untuk memperoleh data dari tabel-tabel INSERT, untuk menambah data ke tabel UPDATE, untuk memodifikasi data yang ada pada tabel DELETE, untuk menghapus data yang ada pada tabel Permintaan suatu data tertentu dari database biasa disebut query. Query dilakukan oleh program aplikasi dengan menggunakan perintah SQL. Perintah SQL yang digunakan adalah perintah select. Hasil dari query adalah sekumpulan record yang biasa disebut record set. Jumlah record dalam record 142
143 set yang dihasilkan dapat berjumlah nol, bila kriteria yang didefinsikan dalam perintah select tidak dapat terpenuhi. Perintah insert, update, dan delete tidak menghasilkan record set. Perintah insert, update, dan delete menyebabkan beberapa record dibuat, diubah atau dihapus atau tidak sama sekali jika kriteria record yang ingin dimanipulasi tidak ada yang memenuhi. Query Dasar o Memperoleh Data Perintah select digunakan untuk menampilkan field-field tertentu dari suatu tabel atau dari beberapa tabel. Perhatikan perintah berikut: select name, capital from country o o Name dan Capital adalah nama field yang akan ditampilkan, Country adalah nama tabelnya. Memperoleh Semua Data Apabila anda ingin menampilkan seluruh field dalam suatu tabel maka nama-nama field-nya dapat diganti dengan tanda wildcard asterik. Contoh: Mengeliminasi select * from Baris-Baris countrydata yang Sama Bila perintah select diikuti distinct, record yang terduplikasi tidak akan ditampilkan. select distinct continent from country o Memfilter Data Gunakan klausa where untuk memperoleh data yang diinginkan. Contoh untuk menampilkan semua negara yang memiliki penduduk lebih besar dari 100 juta gunakan perintah; select * from country where population > Gunakan operator logika dan tanda kurung untuk secukupnya untuk menggabungkan beberapa kriteria. select * from country where (population >= ) and (population <= ) 143
144 o Mengurutkan Data Klausa ORDER BY digunakan untuk mengurutkan data berdasarkan satu field atau lebih. select * from country order by capital Setiap field yang digunakan untuk pengurutan dipisahkan oleh koma. select * from country order by capital, continent Untuk mengurutkan secara terbalik digunakan kalusa desc. select * from country order by capital desc 4.4 dbexpress dbexpress merupakan sekumpulan library untuk mengakses database relasional dengan cepat. Untuk setiap database server yang didukung, dbexpress menyediakan library driver untuk mengakses basis data yang bersangkutan. dbexpress driver juga banyak dibuat oleh pihak ketiga untuk berbagai database server yang tidak disediakan drivernya oleh Borland dalam produk Delphi. Untuk mengakses data ke database server, dbexpress menggunakan sebuah komponen connection yaitu SQLConnection. Untuk menghubungkan SQLConnection ke database server, Delphi telah menyediakan Connection Editor. Selanjutnya, kita akan membuat aplikasi yang akan menampilkan data hasil query ke database server menggunakan dataset SQLDataSet. Pembuatan Aplikasi Buatlah folder baru bernama Aplikasi Pilih File New Application dari menu utama Delphi untuk membuat project baru. Beri nama form utama aplikasi dengan nama FormUtama Komponen-komponen akses data akan diletakkan pada suatu container khusus bernama data module. Untuk menambahkan data 144
145 module ke aplikasi, pilih File New Data Module. Beri nama dmemployee Pilih File Save All untuk menyimpan file ke disk. Pada Save Dialog Box arahkan folder penyimpanan file-file project ke folder Aplikasi yang baru dibuat. Beri nama masing-masing DemoDBExpress.dpr, FUtama.pas dan DEmployee.pas untuk nama file project, form utama dan data modul yang telah dibuat. Pastikan anda telah menginstall InterBase Server Setting Komponen SQLConnection Letakkan sebuah komponen SQLConnection pada data module. Beri nama cntemployee. Set property LoginPrompt menjadi false Klik ganda komponen cntemployee untuk menampilkan Connection Editor Buat koneksi baru dengan nama Employee dengan jenis database server InterBase. Pada contoh program ini, kita akan melakukan koneksi database ke contoh database InterBase yaitu employee.gdb yang telah disediakan oleh Delphi. Isi Database, User_Name dan Password pada Connection Settings di Connection Editor. Klik tombol OK untuk menutup Connection Editor. Setting Komponen SQLDataSet Letakkan sebuah komponen SQLDataSet pada data module. Beri nama sqlemployee, set properti SQLConnection ke cntemployee Set properti CommandText dengan menuliskan kalimat SQL berikut ini: select * from employee User Interface SQLDataSet tidak dirancang untuk dihubungkan ke data control, kita akan menampilkan hasil dari query ke dalam komponen Memo. Letakkan sebuah komponen Memo ke Form dan beri nama mememployee Letakkan sebuah komponen Button ke Form dan beri nama btnopen. Isi properti Caption dengan Open Tulis kode untuk event OnClick dari btnopen seperti di bawah ini. procedure TformUtama.btnOpenClick(Sender: TObject); begin 145
146 dmemployee.mememployee.clear; dmemployee.sqlemployee.open; while not dmemployee.sqlemployee.eof do begin mememployee.lines.add( dmemployee.sqlemployee.fieldbyname ( FULL_NAME ).asstring; dmemployee.sqlemployee.next; end; dmemployee.sqlemployee.close; end; Jalankan program. Klik tombol Open. Soal Latihan 1. Tipe aplikasi basis data di delphi yang merupakan perluasan dari tipe client-server adalah a. stand-alone b. file sharing c. client-server d. multi-tier 2. Teknologi basis data standar yang diperkenalkan di versi awal delphi adalah a. BDE b. IBExpress c. dbgo d. dbexpress 3. Kontainer yang menjadi tempat seluruh komponen data akses diletakkan disebut a. data source b. dataset c. connection d. data module 146
147 Soal Praktek 4. Buatlah tabel Barang untuk menyimpan data id_barang, nama_barang dan harga_barang. Isilah tabel tersebut dengan data-data. Kemudian buatlah aplikasi basis data di Delphi untuk menampilkan semua nama barang yang ada. 5. Buatlah aplikasi basis data untuk menampilkan nama barang yang diawal huruf N dari tabel Barang. 147
148 Visual Basic.NET 148
149 BAB I Pengenalan VB.NET Tujuan Instruksional Umum : 1. Siswa dapat menyebutkan bagian dari Lingkungan Pemrograman VB.NET 2. Siswa dapat menjelaskan fitur-fitur dalam VB.NET 3. Siswa dapat menjelaskan konsep form 4. Siswa dapat menjelaskan mengenai ASO.NET Tujuan Instruksional Khusus : 1. Siswa dapat membuat program dengan bahasa VB.NET 2. Siswa dapat membuat form dan kontrol 3. Siswa dapat membuat program yang berorientasi Objek 4. Siswa dapat membangun aplikasi sederhana dengan ADO.NET Materi yang dibahas di Bab ini memenuhi : TIK.PR Membuat algoritma pemrograman lanjut. TIK.PR Membuat struktur data. TIK.PR Menggunakan spesifikasi program. TIK.PR Menulis program dasar. TIK.PR Menulis program lanjut. TIK.PR Mengoperasikan pemrograman terstruktur. TIK.PR Mengoperasikan bahasa pemrograman berorientasi objek. TIK.PR Membuat program aplikasi berbasis VB dan VB.NET Berikut ini adalah gambaran umum dari materi pada bab ini: 149
150 1.1 Apa itu VB.NET VB.NET merupakan generasi berikutnya dari Visual Basic, dan merupakan bagian penting dari generasi sebelumnya. Pengembang yang berpengalaman dengan Visual Basic akan merasa nyaman dengan kode (code dalam baris program) Visual Basic.NET dan akan mengenali strukturnya. Bagaimanapun, Microsoft telah membuat beberapa perubahan untuk membuat Visual Basic.NET menjadi bahasa yang lebih baik dan menjadi pemain yang setara dalam dunia.net. Perubahan ini termasuk seperti penambahan keyword (kata kunci) Class untuk mendefenisikan kelas dan sebuah keyword Inherits untuk objek inheritance, dan yang lainnya. Kode Visual Basic 6 tidak dapat dicompile dengan Visual Basic.NET compiler tanpa melakukan perubahan yang signifikan. Berita baiknya dalah Microsoft telah menyediakan suatu alat untuk dapat melakukan migrasi untuk mengatasi tugas ini. Kode untuk migrasi akan dijelaskan nanti. 1.2 Fitur Baru dalam VB.NET Walaupun kebanyakan kode Visual Basic yang ada pada saat ini akan sesuai tanpa melakukan banyak perubahan ke Visual Basic, ada juga terdapat beberapa perubahan dari bahasa ini. Mengerti kapabilitas dari Visual Basic.NET akan membantu anda untuk menulis program dalam VB.NET secara efisien. Berikut ini adalah beberapa perubahan yang signifikan pada bahasa pemrogramanvb.net: o Inheritance Inheritance adalah sesuatu yang sederhanan tetapi merupakan suatu ide yang luar biasa (dan merupakan suatu yang kurang dari Visual Basic selama bertahun-tahun). Itu didasarkan pada suatu notion bahwa kelas dari sesuatu datang dalam suatu hirarki yang alami, berdasar pada hubungan is a. Contohnya adalah sebagai berikut: Kuda adalah hewan Domba adalah hewan 150
151 Jika anda mengetahui aturan umum tentang bagaimana perilaku hewan, anda mengetahui sesuatu mengenai perilaku kuda atau domba. Pada sisi lain, ada hal yang lebih khusus mengenai kuda dan domba (misalnya makanannya) yang membedakan mereka dari hewan lainnya. Visual Basic.NET mengandung kata kunci yang baru untuk pengimplementasian dari inheritance. Untuk inheritance akan dibahas pada bagian selanjutnya. o Shared members Kadang-kadang adalah hal yang tepat untuk membagi (shared) suatu instance yang single dari suatu property atas semua instance dari semua kelas. Jika property yang dibagi tersebut merujuk pada suatu kelas dasar, itu akan dibagi atas semua instance dari kelas yang ada dibawa dari kelas dasar. Contohnya, dalam khayalan saya mengenai dunia hewan, saya mungkin menentukan lokasi untuk peternakan saya. Jika saya ingin mengubah lokasi tersebut, saya ingin mengubahnya hanya sekali dan perubahan tersebut berlaku ke semua hewan di peternakan tersebut. Visual Basic.NET menggunakan kata kunci Shared untuk mengindikasikan shared members. o Overloading dan overriding Overloading dan overriding adalah dua cara untuk menyediakan perilaku yang berbeda untuk method yang sama digunakan pada dua object berbeda. Pada dasarnya, overriding digunakan pada class, sementara overloading digunakan untuk method. Pada pembahasan inheritance sebenarnya anda telah melihat konsep overloading. Jika sebuah method dari kelas dasar overrodable, kelas pembawanya dapat menggunakan kata kunci Overrides. Overloading pada sisi lain mengijinkan anda untuk menentukan suatu nama fungsi yang dapat dipanggil dengan parameter yang berbeda. Ini sangat berguna, contohnya, pada kasus dimana anda membutuhkan dua jenis objek untuk diperlakukan secara berbeda. 151
152 o Explicit constructor and destructors Constructor adalah suatu prosedur yang dipanggil ketika sebuah objek pertama kali dibuat, dan destructor adalah suatu prosedur yang dipanggil ketika suatu objek dihilangkan. Visual Basic 6 mengijinkan anda untuk menulis constructor dan destructor secara eksplisit dalam suatu kelas dengan menggunakan prosedur Initialize dan Terminate. Visual Basic.NET berjalan selangkah lebih maju dengan menyediakan constructor dan destructor untuk semua objek, termasuk system object seperti WinForms dan instance lainnya pada kelas.net Framework. Satu perbedaan utama antara Visual Basic 6 dan Visual Basic.NET berada pada ketika destructor untuk suatu kelas dipanggil. Pada Visual Basic 6, destructor dipanggil ketika reference terakhir pada suatu objek di-drop. Ini membawa kepada suatu masalah ketika reference yang sirkular mencegah objek dari proses terminasi (berhenti) dengan baik. Visual Basic.NET (dan bahasa.net lainnya) menggunakan skema yang disebut garbage collection. Dengan garbage collection, Common Language Runtime (CLR) menjaga objek, dan ketika tidak ada lagi reference ke suatu objek dari aplikasi anda, garbage collection akan membersihkan reference tersebut, walaupun jika mereka dilibatkan pada suatu reference yang sirkular. Kerugian dari garbage collection adalah bahwa anda tidak pernah tahu tepatnya ketika destructor dari suatu objek akan dipanggil. Visual Basic.NET menggunakan prosedur Sub New sebagai suatu constructor, dan prosedur Sub Finalize sebagai sebuah destructor. o Declaring and implementing interfaces Interface menentukan sekumpulan method, property, dan event yang dapat digunakan pada berbagai kelas. Visual Basic 6 memiliki kata kunci Implement supaya kelas Visual Basic dapat menggunakan interface yang didefenisikan oleh komponen lainnya. Visual Basic.NET menambahkan kata kunci Interface, yang mengijinkan anda untuk menentukan interface secara langsung dengan Visual Basic.NET. 152
153 o Structured exception handling Visual Basic.NET menambahkan sejumlah peningkatan terhadap error handling, jika dibandingkan dengan versi sebelumnya. Contohnya adalah pengunaan structured exception handling, diimplementasikan pada blok Try...Catch... Finally. Kata kunci Try memberitahu Visual Basic.NET bahwa itu adalah permulaan dari blok structured exception handling. Kata kunci Catch mengindikasikan kode yang mana yang akan dijalankan jika terjadi error. Kata kunci Finally menandakan sebuah blok kode yang akan selalu dijalankan, baik jika terjadi error maupun tidak. o Delegates Delegates menyediakan Visual Basic.NET dengan sebuah cara untuk menuju pada prosedur pada saat run-time (delegates kadang disebut type-safe function pointers). Anda dapat menggunakan delegate pada berbagai situasi dimana anda ingin menentukan runtime prosedur yang mana yang dipanggil sebagai respon terhadap suatu event tertentu. Walaupun delegates merupakan konsep yang umum, mereka lebih berguna pada Visual Basic.NET sebagai suatu cara untuk mengatasi event secara dinamik pada saat runtime. Visual Basic.NET mengandung pernyataan AddHandler dan RemoveHandler. AddHandler menghubungkan suatu event dengan suatu prosedur dengan membuat sebuah delegate yang baru; kemudian nantinya RemoveHandler akan memutuskan hubungan (koneksi) tersebut antara event dan prosedur. o Namespaces Namespaces merupakan kumpulan objek yang menjalankan fungsi yang sama. Namespaces juga sangat berguna untuk mencegah adanya nama yang sama. Yaitu, dua kelas mungkin memiliki nama kelas yang sama tanpa menyebabkan error, selama mereka dialokasikan dengan namespaces yang berbeda. Untuk dapat menggunakan namespaces dari.net Framework class library, pada Visual Basic.NET, anda mungkin juga mendeklarasikan namespaces anda sendiri. 153
154 1.3.NET Framework Definisi dari.net Framework beraneka ragam. Diluar beragamnya definisi.net Framework,.NET Framework merupakan Man Behind The Gun dari VB.NET sehingga kita perlu mengetahui jeroan dari teknologi yang ada di dalamnya. Microsoft.NET adalah software yang menghubungkan informasi, orang, sistem, dan device/perangkat yang menjangkau client, server, dan tool pengembang. Microsoft.NET disusun oleh: o Dot Net Framework, yang digunakan untuk membangun dan menjalankan semua macam software termasuk aplikasi berbasis Web, aplikasi smart client, dan layanan web XML (Extensible Markup Language). Menyediakan komponen untuk berbagi data melalui Network menggunakan platform protokol independen seperti XML, SOAP, dan HTTP. o Tool-tool pengembang seperti Microsoft Visual Studio.NET yang menyediakan IDE (Integrated Development Environment) untuk memaksimalkan produktivitas pengembangan menggunakan.net Framework. o Serangkaian server termasuk Microsoft Windows Server 2003, Microsoft SQLServer dan Microsoft BizTalk Server terintegrasi, untuk menjalankan, mengoperasikan dan mengelola services Web dan aplikasi berbasis web. o Software client seperti Windows XP, Windows ME dan Microsoft Office XP yang membantu pengembang untuk menyebarkan dan mengelola aplikasinya. Dot Net Framework adalah lingkungan untuk membangun, deploying/ menyebarkan, dan menjalankan services Web dan aplikasi lainnya. Dot Net Framework disusun oleh dua komponen utama yaitu Common Language Runtime (runtime bahasa umum) dan.net Framework Class Library (pustaka class.net Framework). Secara sederhana.net Framework adalah platform tunggal di mana semua orang dapat mengembangkan aplikasi menggunakan suatu sistem yang mirip 154
155 dengan JVM (Java Virtual Machine). Hanya berbeda dengan Java, tidak ada penghalang bahasa dengan.net sehingga aplikasi dapat dikembangkan menggunakan bahasa: VB, C++, C#, J# dan bahasa pemrograman lainnya yang kompatibel dengan.net Framework. Tujuan dari.net Framework adalah: o Menyediakan lingkungan pemrograman berorientasi objek, apakah kode objek disimpan dan dijalankan secara lokal, dijalankan secara lokal tetapi disebarkan melalui Internet atau dijalankan secara remote (dijalankan dari suatu tempat). o Menyediakan lingkungan untuk menjalankan suatu kode yang meminimalkan konflik saat software disebarkan dan dibuat secara versi. o Menyediakan lingkungan untuk menjalankan suatu kode yang menjamin kemanan saat kode dijalankan, termasuk kode yang dibuat oleh pihak yang tidak diketahui atau pihak ketiga yang setengah dipercaya. o Menyediakan lingkungan untuk menjalankan suatu kode yang dapat mengeliminasi masalah performa dari lingkungan scripted dan interpreted. o Membuat pengembang memiliki pengalaman yang konsisten dalam berbagai tipe aplikasi seperti aplikasi berbasis Windows dan aplikasi berbasis Web. Gambar NET Framework Pada gambar di atas terlihat level tertinggi dari.net Framework adalah compiler Visual Basic dan bahasa-bahasa pemrograman lainnya. Di bawah compiler terdapat CLS (Common Language Spesification, spesifikasi/perincian 155
156 bahasa umum). Spesifikasi adalah serangkaian aturan yang menentukan fitur minimum yang harus mendukung dari suatu bahasa untuk memastikan bahwa bahasa tersebut akan interoperate dengan CLS-compliant (bahasa yang kompatibel dengan CLS) lainnya dan tool-tool. Sepanjang bahasa tersebut mendukung CLS, maka dapat dipastikan bahasa tersebut akan bekerja dengan CLR (Common Language Runtime). Seperti yang terlihat pada gambar di atas, VB.NET sejajar dengan C++, C#, J++, J#, dan bahasa-bahasa pemrograman lainnya yang mendukung.net. Sekarang VB.NET memiliki tipe variabel, array, UDF (user-defined types, tipe yang didefinisikan sendiri oleh pemakai), class, form grafikal, kontrol visual, dan antarmuka yang sama dengan bahasa pemrograman lainnya. Struktur umum tersebut membuat pemanggilan class dari satu bahasa.net ke bahasa.net lainnya akan lebih mudah. Dot Net Framework menyediakan banyak class untuk pengembang. Pustaka class (library class) tersebut dapat digunakan untuk mengembangkan aplikasi client yang kaya, sama seperti aplikasi berbasis Web. Pada gambar di atas, pustaka class dibagi menjadi empat area yang berwarna abu-abu muda yaitu: o ASP.NET menyediakan inti dari infrastruktur form-form Web untuk pengembangan berbasis User Interface (antar muka pengguna) dan Service Web untuk pengembangan antarmuka secara terprogram. o Pengembangan antarmuka pengguna pada platform Windows dapat dilakukan menggunakan Form-Form Windows. o Fungsi akses data disediakan oleh ADO.NET dan XML. o Akhirnya, inti dari pustaka base class menyediakan infrastruktur service/ layanan seperti sekuriti, pengelilaan transaksi dan lain-lain. Common Language Runtime (CLR) Common Language Runtime merupakan dasar dari.net Framework. Runtime adalah engine yang menjalankan aplikasi.net Framework. Runtime menyediakan sejumlah layanan, seperti berikut ini: 156
157 o o o o o o o o o o o Mengelola kode (loading dan menjalankan) Isolasi memori aplikasi Verifikasi untuk keamanan type Konversi dari Intermediate Language ke kode native (asli) Akses metadata Mengelola memori pada objek managed/terkelola Mengelola keamanan kode akses Menangani eksepsi (kejadian yang tidak diharapkan yang muncul saat kode dieksekusi) termasuk eksepsi lintas bahasa. Interoperation di antara managed code, objek COM, dan preexisting DLL (unmanaged code dan data) Otomatisasi layout objek Mendukung layanan pengembang (profiling, debugging, dan sebagainya) Gambar Arsitektur.NET Framework (sumber: Microsoft MSDN) Konsep pengelolaan kode program merupakan prinsip dasar dari runtime. Kode yang menjadi target dari runtime disebut managed code (kode terkelola), sedangkan kode yang tidak menjadi target runtime disebut unmanaged code (kode tidak terkelola). VB.NET akan menjalankan managed code apabila dalam sistem komputer tersebut terdapat CLR atau dengan kata lain pemakai tidak dapat menjalankan aplikasi VB.NET tanpa menginstal CLR terlebih dahulu. 157
158 CLR mengetahui apa yang akan dilakukan pada data khusus (disebut metadata) yang berada dalam aplikasi. Metadata berisi peta di mana menemukan class, kapan memanggil class dan kapan mengatur batas isi runtime, menghasilkan native code/kode asli, mengatur keamanan, menentukan class mana yang menggunakan metode dan memanggil class jika dibutuhkan. CLR juga menentukan kapan suatu objek digunakan dan dilepas. Semua itu disebut managed code. Kode yang dikompilasi dengan COM disebut unmanaged code. Ada dua cara yang dapat Anda lakukan dengan unmanaged code. Anda dapat mengekspor komponen COM ke.net Framework atau Anda dapat mengekpor komponen.net ke COM. Untuk melakukan kegiatan Runtime, dibutuhkan compiler bahasa yang mengikuti CLS (Common Language Spesification) yang menerangkan suatu subset tipe data yang didukung oleh runtime serta umum dipakai oleh semua bahasa dalam lingkup.net. Compiler bahasa akan mengkompilasi kode yang ditulis oleh pengembang menjadi bahasa tingkat menengah yang disebut MSIL (Microsoft Intermediate Language) atau disingkat IL saja, yang kemudian akan dikompilasi menjadi bahasa native/asli oleh runtime pada saat instalasi, atau dikompilasi menjadi JIT (Just-In-Time) pada awal eksekusi. Kode yang dikompilasi oleh MSIL dan dikelola oleh runtime merupakan managed code. Disebut managed code karena tanggung jawab pengelolaan eksekusinya dilakukan oleh runtime termasuk instansi objek, alokasi memori, dan pengumpulan sampah objek oleh memori. Komponen-komponen yang dikelola oleh runtime disebut managed assembly atau disingkat assembly. Assembly adalah unit dasar penerapan dalam dunia.net. Sebuah Assembly memiliki manifestasi yaitu serangkaian metadata yang menerangkan isi assembly. Salah satu kelebihan assembly adalah sifat menerangkan diri pada komponen.net artinya menjalankan komponenkomponen tersebut tidak perlu diregister pada komputer. 158
159 1.4 Lingkungan Pemrograman VB.NET Halaman Awal Ketika Anda menjalankan Visual Studio.NET untuk pertama kali, Anda akan melihat jendela seperti gambar berikut ini. Pada tab My Profile di kotak Profile, pilih Visual Basic Developer. Dua kotak berikutnya akan diisi secara otomatis. Pada sebelah bawah, di kontrol ComboBox pilihan At Startup, Anda dapat menentukan apa yang Anda inginkanketika memulai Visual Studio.NET. Pilihannya adalah: o Show start page. Setiap saat Anda memulai Visual Studio.NET, halaman start akan muncul. o Load Last Loaded Solution. Ketika Anda membuat proyek sungguhan (proyek yang penyelesaiannya membutuhkan waktu yang lama: mingguan atau bulanan). Pilih pilihan ini sehingga proyek secara otomatis akan di load setiap kali Anda menjalankan Visual Studio.NET. o Show Open Project Dialog Box. Setiap saat Anda memulai Visual Studio.NET, kotak dialog Open Project akan muncul di mana Anda dapat memilih proyek yang akan dibuka. o Show New Project Dialog Box. Setiap Anda memulai Visual Studio.NET, kotak dialog New Project akan muncul dimana Anda dapat memberi nama proyek baru. o Show Empty Environment. Pilihan ini akan menampilkan suatu solution baru yang kosong. Anda dapat menambahkan proyek baru atau proyek yang sudah ada ke solution dan item baru atau item yang sudah ada ke proyek. 159
160 Gambar Jendela Start Page Tipe Proyek Pada kotak dialog Visual Basic New Project terdapat pilihan templates yang menunjukkan tipe proyek sebagai berikut: Gambar Kotak Dialog New Project 160
161 o Window Application. Proyek untuk membuat aplikasi dengan antarmuka Windows. o Class Library. Class library adalah komponen untuk membuat kode dasar, di mana tidak ada antarmuka yang terlihat. Class adalah kumpulan dari fungsi yang dapat digunakan dalam proyek lainnya. Class library ekivalen dengan tipe proyek ActiveX DLL dan ActiveX EXE dari Visual Basic6. o Windows control library. Kontrol Windows seperti TextBox dan Label adalah elemen dasar untuk membuat antarmuka. Jika kontrol yang disediakan VB.NET yang terlihat di toolbox tidak dapat memenuhi kebutuhan Anda, Anda dapat membuat kontrol sendiri menggunakan Windows control library. Ekivalen dengan tipe proyek ActiveX pada Visual Basic 6. o Console Application. Aplikasi console akan menampilkan output pada jendela command prompt seperto model DOS. o Windows service. Windows service membuat aplikasi yang tidak memiliki antarmuka. Service dapat dijalankan secara otomatis ketika komputer dijalankan, pause, dan restart. Windows service dapat digunakan untuk proses file copy, membaca isi database dan sebagainya. o ASP.NET Web application. Aplikasi web adalah aplikasi yang ditempatkan di server web dan dapat ditampilkan di browser client dalam bentuk halaman HTML (Hyper Text Markup Language). Pilihan ini akan membuat aplikasi database web berbasis ASP NET (Active Server Page) o ASP.NET Web Service. Service web adalah program yang ditanamkan pada server Web, seperti aplikasi Web tetapi tidak menampilkan halaman HTML. Nilai kembaliannya adalah hasil dari perhitungan atau lookup database. o Web control library. Digunakan untuk membuat kontrol Web yang digunakan pada halaman Web. Tampilan Lingkungan VB.NET Lingkungan Visual Basic.NET terlihat sebagai berikut: 161
162 Gambar Lingkungan Visual Basic.NET Jendela Utama Jendela utama terdiri dari baris judul, menu, dan toolbar. Baris judul berisi nama proyek dan nama form yang aktif. Juga terlihat kata yang diapit dengan lambar bracket ([]) satu di antara tigas: Design, Run, atau Break yang menunjukkan mode operasi VB.NET. Mode Design untuk membuat aplikasi, mode Run untuk menjalankan aplikasi, dan mode Break untuk menghentikan aplikasi dan melakukan debug (melacak kesalahan) jika memungkinkan. Di bawah baris judul terdapat menu yang bersifat dinamis, berubah jika Anda mencoba hal yang berbeda dalam VB.NET. Berikutnya adalah toolbar berupa kumpulan icon dan label yang dapat digunakan untuk mengakses dengan cepat fitur yang ada di menu. Di bawah menu terdapat toolbar standar. Jendela Design Di tengah lingkungan VB.NET terdapat jendela desain. Jendela ini merupakan pusat pengembangan aplikasi VB.NET. Di bagian atas jendela terdapat tab 162
163 yang berisi form dengan nama NamaForm.vb [Design]. Form adalah tempat pemakai menggambar aplikasi. Kode yang berhubungan dengan form terdapat pada tab NamaForm.vb. Gambar Jendela Desain ToolBox Toolbox berisi kontrol yang akan digunakan pada aplikasi Anda. Toolbox akan aktif jika ada form dalam jendela desain. Gambar Toolbox 163
164 Jendela Solution Explorer Jendela Solution Explorer menampilkan daftar semua form, modul, dan file lainnya untuk membuat aplikasi. Untuk menampilkan suatu form di jendela, klik ganda pada nama file. Struktur isi jendela Solution Explorer mirip dengan panel TreeView pada Windows Explorer. Terdapat root yang berupa nama proyek dan cabang berupa: References yang berisi referensi ke namespaces, AssemblyInfo.vb yang berisi informasi assemblies dan berikutnya form, module, dan class (ketiganya menggunakan ekstensi yang sama yaitu.vb). Jendela Properties Jendela Properties digunakan pada mode desain untuk mengatur suatu nilai pada objek (kontrol). Kotak drop-down pada bagian atas jendela berisi daftar semua objek pada form sekarang. Disediakan dia tampilan yang dapat dipilih dengan cara mengklik tombol di bawah kota drop-down yaitu Alpabhetic (urut abjad) dan Categorized (dikelompokkan berdasarkan kategori tertentu). Di bawahnya terdapat properti yang disediakan untuk objek yang aktif (dipilih). Untuk membuka jendela Properties, Anda dapat menekan tombol fungsi F4 atau klik. Gambar Solution Explorer Gambar Properties 164
165 Jendela Task List dan Jendela Output Kedua jendela aktif ketika aplikasi berjalan. Jendela task list akan memberi hightlights/menandai error yang ditemukan ketika mencoba menjalankan aplikasi. Jendela akan menunjukkan ke Anda, bari dari kode yang diidentifikasi error. Jendela output menunjukkan langkah-langkah dalam mengompilasi aplikasi. Gambar Jendela Task List dan Jendela Output Untuk membuat program, jalankan VB.NET dari menu Start > Microsoft Visual Studio.NET > Microsoft Visual Studio.NET. Kemudian pilih menu File > New Project. Pada jendela New Ptoject, pilihlah Template dengan Windows Aplication. Ketika Anda akan memulai proyek baru, Anda diminta untuk mengisi Name dan memilih Location (lokasi folder/direktori). Input yang Anda ketik pada kota Name akan menjadi nama subfolder yang terletak pada location yang Anda pilih atau dengan kata lain VB.NET membuatkan subfolder baru untuk tiap proyek yang Anda buat. Subfolder tersebut berisi semua file solution, proyek, form, modul (ekstensi vb), dan file lainnya yang diperlukan oleh proyek. VB.NET akan membuat dua subfolder baru dalam subfolder Name yaitu: Obj dan Bin. Subfolder Obj berisi file yang digunakan untuk men-debug (mencari bug/kesalahan program) aplikasi Anda. Sedangkan subfolder Bin berisi file hasil kompilasi (file executable/dapat dijalankan dengan ekstensi.exe). Nanti, Anda dapat melihat bahwa subfolder Bin dianggap sebagai path aplikasi di mana file data, gambar, sound, dan file yang diperlukan lainnya berada. 165
166 Klik Jendela Properties, kemudian klik pada properti Text dari Objek Form1 dan isi dengan Hallo Windows. Gambar Properties Program Hallo Windows Jendela Kode Sebelum melanjutkan membuat aplikasi, akan dibahas terlebih dahulu isi jendela kode. Bukalah jendela kode dengan cara klik menu View > Code atau klik tab Form1.vb atau tekan tombol fungsi F7. Terlihat tampilan seperti gambar berikut: Gambar Jendela Kode Paling atas terdapat baris tab untuk mengelola jendela anak. Jendela anak dapat berisi file proyek (kode dan mode designer), Help MSDN, dan Start Page. Pada gambar di atas terlihat ada tiga tab, pertama adalah tab Start Page. Kedua adalah tab Form1.vb [Design] yang berisi jendela desainer form tempat Anda membuat antarmuka aplikasi. Ketiga adalah tab Form1.vb yang merupakan editor kode di mana nantinya Anda akan meletakkan kode. Tab ini yang sekarang aktif. 166
167 Di sebelah bawah tab terdapat dua ComboBox. Sebelah kiri berisi nama objek yang berada dalam form. Sebelah kanan berisi nama event untuk objek dipilih. Event atau kejadian adalah respons dari pemakai seperti tombol klik, menu dipilih dan sebagainya. Ketika Anda memiliki objek di sebelah kiri daftar, daftar sebeleh kanan menyesuaikan. Form sebagai Class Pada jendela kode Anda dapat melihat terdapat dua baris kode paling atas yang merupakan deklarasi awal dari form. Public Class Form1 Inherits System.Windows.Forms.Form Baris pertama mendeklarasikan class baru dengan nama Form1. Dalam VB.NET kita dapat mendeklarasikan class dalam sembarang tempat di file kode, tidak terbatas di modul class saja. Baris kedua menggunakan pernyataan Inherits yang menentukan dari mana class Form1 diturunkan yaitu dari namespace System.Windows.Forms.Form. Dari dua baris kode tersebut dapat disimpulkan bahwa form dalam VB.NET adalah class dan class form diturunkan dari class System.Windows.Forms.Form. Class yang menurunkan disebut sebagai base class sedangkan class turunan disebut derived class. Setelah form baru ditambahkan ke proyek, form tersebut dapat memiliki menu sendiri, menanggapi event, tempat kontrol diletakkan, dan sebagainya. Untuk mempermudah kita membuat aplikasi, kita dapat membuat class turunan yang inherit/mewarisi fungsionalitas dari base class form sehingga kita dapat dengan mudah memodifikasi form sesuai keinginan. Region Kode Sekarang perhatikan baris yang berisi tulisan Windows Form Designer generated code. Pada sebelah kiri dari kotak terdapat tanda plus (+). Baris tersebut merupakan fitur baru dalam VB.NET yang diberi nama region kode (bagian dari kode yang dikelompokkan dalam suatu region/daerah). Jika Anda mengklik tanda +, Anda akan melihat kode berikut: 167
168 #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() call 'Add any initialization after the InitializeComponent() End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.Icontainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 266) Me.Name = "Form1" Me.Text = "Halo Windows" End Sub #End Region Ketika Anda membuat proyek baru yang menggunakan template Windows Application, suatu region kode akan ditambahkan secara otomatis ke class form. Kalau Anda mengklik tanda -, maka kotak akan mengecil dan isi region kode akan tersembunyi. Region kode dapat Anda gunakan untuk mengorganisasikan daerah kode tertentu di mana Anda dapat 168
169 menyembunyikannya jika Anda tidak ingin melihatnya. Anda dapat membuat region kode sendiri menggunakan pernyataan #Region dan #End Region. Menggambar Antarmuka Pemakai Berikutnya adalah menempatkan kontrol dari Toolbox ke form. Kontrol adalah tampilan berbasis grafis yang dimasukkan ke form untuk membuat interaksi dengan pemakai. Setelah berada di form, kontrol tersebut berubah menjadi objek yaitu elemen perantara pemakai yang dapat diprogram seperti di atur nilai propertinya dan sebagainya. Ada dua cara untuk menempatkan kontrol di form: Pertama, dengan cara drag and drop. Klik tombol Label di toolbox kemudian pindahkan pointer mouse pada jendela form. Kursor akan berubah bentuk menjadi + (Crosshair) diikuti icon kontrol yang Anda pilih misalnya label. Tempatkan kursor disudut kiri atas posisi label seperti gambar di bawah ini. Klik dan tahan kemudian seret kursor ke sudut kanan bawah. Ulangi dengan cara yang sama untuk meletakkan kontrol Textbox di bawah label. Cara kedua, dengan cara klik-ganda pada kontrol di toolbox. Klik ganda pada icon Button di toolbox. Objek Button1 akan muncul di sebelah kiri atas form. Gunakan metode drag dan drop untuk menempatkan kontrol Button1 di sebelah kiri bawah form. Ulangi dengan cara yang sama untuk menempatkan kontrol Button2 ke form. Gambar Jendela form program Halo Windows 169
170 Untuk move/memindahkan kontrol caranya klik objek dalam form (akan muncul lambang + dengan tanda panah). Sekarang seret kontrol pada lokasi yang baru, kemudian lepaskan tombol. Untuk resize/mengubah ukuran kontrol caranya klik kontrol untuk memilih/mengaktifkan, (akan muncul sizing handle berbentuk kotak kecil di sudut dan di tengah kontrol). Gunakan cara seret bagian handle untuk mengubah ukuran objek. Untuk delete/menghapus kontrol caranya klik kontrol untuk mengaktifkan kemudian tekan tombol delete. Berikutnya adalah mengatur properti dari objek. Properti adalah nilai atau karakteristik yang dimiliki oleh sebuah objek VB.NET. Misalnya objek Label memiliki properti Name, Text, BackColor, BorderStyle dan sebagainya. VB.NET menerapkan properti default. Anda dapat mengubah properti saat mendesain program atau saat program dijalankan. Untuk mengubah properti pada objek yang spesifik di jendela Properties, Anda harus memilih terlebih dulu objek di form. Pilih objek Label1 dengan cara klik Kotak yang berisi tulisan Label1, kemudian klik jendela Properties atau tekan tombol fungsi F4. Atur properti Text dengan Masukkan Nama. Berikutnya pilih objek TextBox1 dengan cara mengkliknya kemudian atur properti sesuai Tabel berikut, juga atur properti objek lainnya. Tabel : Properti Objek Properti Pengaturan Label1 Text Masukkan Nama: TextBox1 Name txtnama Text Button1 Name Text btnok OK Button2 Name Text btnkeluar Keluar 170
171 Selanjutnya adalah menyisipkan kode. Klik-ganda pada objek Button1 (dengan teks OK ). Anda akan melihat jendela kode seperti gambar berikut: Gambar Jendela Kode Event klik adalah event default pada objek Button sehingga ketika Anda mengklik-ganda Button1( OK ) dalam form maka Anda akan masuk subrutin btnok-click seperti berikut: Private Sub btnok_click(byval sender As System.Object, _ ByVal e As System.EventArgs) Handles btnok.click End Sub Subrutin di atas merupakan event handle (menangani kejadian). Tiap kali tombol OK dalam form diklik, subrutin btnok_click akan diaktifkan. Untuk memberikan reaksi pada event click, Anda harus menyisipkan kode yang diperlukan pada subrutin. Nama Subrutin dibuat berdasarkan nama objek, diikuti dengan garis bawah dan nama event. Yang membuat subrutin menjadi event handle adalah kata kunci Handles pada bagian belakang pernyataan. Masing-masing objek memiliki beberapa event dan Anda dapat mengatur beberapa event sekaligus pada suatu objek. Sekarang kita menambahkan kode untuk menangani event click pada objek btnok dan btnkeluar. Sisipkan baris kode berikut di antara pernyataan Private Sub dan End Sub. 171
172 Private Sub btnok_click(byval sender As System.Object, _ ByVal e As System.EventArgs) Handles btnok.click MessageBox.Show("Halo, " & txtnama.text & _ "! Selamat datang di Visual Basic.NET" & vbcrlf & _ "Pesan Halo") 'vbcrlf adalah konstanta untuk memindahkan teks 'berikutnya ke baris baru End Sub Private Sub btnkeluar_click(byval sender As System.Object, _ ByVal e As System.EventArgs) Handles btnkeluar.click End Sub Me.Dispose() Kode di atas merupakan prosedur kejadian/event artinya kode yang berhubungan dengan suatu objek. Kode itu akan dijalankan ketika ada respon dari pemakai berupa event tertentu, di sini adalah tombol diklik. Pada prosedur btnok_click kode MessageBoxShow akan menampilkan pesan yang spesifik pada jendela kecil dengan tombol OK. Pemakai dapat melihat pesan dan mengklik tombol OK untuk menutup message box/kotak pesan. Ada dua parameter berupa teks yang berada dalam metode MessageBox.show yaitu: MessageBox.Show(isi pesan, judul MessageBox) Isi pesan yang bertipe teks pengetikannya diapit dengan tanda kutip. Pada bagian & txtnama.text &, ketika program berjalan akan ditampilkan teks yang berisi nama pemakai yang diinput pada objek textbox. Teks yang didahului dengan tanda kutip ( ) merupakan komentar. Komentar umumnya berisi penjelasan yang berkaitan dengan kode. Pada penggal baris Me.Dispose(). Me digunakan oleh VB.NET untuk menunjuk pada form. 172
173 Menjalakan Program Setelah mengembangkan proyek VB.NET langkah berikutnya adalah menjalankan program. Ada tiga cara untuk menjalankan program: o Klik tombol panah segitiga yang mirip tombol Play pada model CD Player yang terletak di toolbar o Klik menu Debug kemudian pilih Start o Tekan tombol fungsi F5 Akan muncul jendela seperti gambar di bawah ini. Sekarang VB.NET sedang berjalan pada mode run. Perhatikan pada baris judul VB.NET tulisan [Design] berubah menjadi [run]. Pada aplikasi kita, pointer terlihat pada suatu TextBox, Anda dapat memulai event dengan mengetik nama Anda pada TextBox. Berikutnya tekan tombol OK. Ketika kita mengklik tombol kita akan menjalankan event yang disebut Click event. Komputer akan mengenali event dan menjalankan perintah yang berada dalam kode event handle yaitu menampilkan kotak pesan yang berisi pesan halo. Gambar Kotak Pesan Gambar Aplikasi dan Hasil Keluarannya 173
174 Menghentikan Proyek Ada beberapa cara untuk menghentikan proyek VB.NET: o Dalam aplikasi tersebut terdapat menu atau tombol untuk keluar misalnya pada aplikasi kita dengan cara mengklik tombol Keluar. o o o Klik tombol Stop pada model CD Player Pilih menu Debug, kemudian klik pesan Stop Debugging Klik tombol Close yang terdapat di sudut kanan atas form aplikasi dengan bentuk seperti huruf X. Menyimpan Proyek dan Keluar dari VB.Net Jika aplikasi yang Anda buat, sudah dijalankan dan tanpa terjadi kesalahan, langkah berikutnya adalah menyimpan proyek. Caranya klik menu File > Save All untuk menyimpan semua perubahan yang Anda buat. Setelah Anda selesai bekerja dengan proyek VB.NET, Anda dapat keluar dari program dan lingkungan pengembangan VB.NET. Caranya sama pada kebanyakan aplikasi Windows yaitu: o Klik menu File > Exit o Klik tombol Close yang terdapat di sudut kanan baris judul VB.NET dengan bentuk seperti huruf X. Soal Latihan 1. Suatu prosedur yang dipanggil ketika objek pertama kali dibuat disebut: a. operator b. constructor c. destructor d. metode 2. Implementasi dari structured exception handling dengan menggunakan: a. if...else b. select...case c. loop d. try...catch...finally 174
175 3. Kode yang dikompilasi dengan COM disebut : a. unmanaged code b. managed code c. ordered code e. unordered code 4. Bagian dari lingkungan pemrograman VB.NET yang merupakan komponen untuk membuat kode dasar tanpa antarmuka yang terlihat disebut : a. Window Application b. Windows Control c. Class Library d. Console Application 5. Kontrol yang digunakan dalam aplikasi terletak di : a. Toolbox b. Jendela Properties c. Jendela Output d. Jendela design 175
176 BAB II Forms dan Kontrol 2.1 Mengenal Kontrol Form Windows adalah bagian dari.net Framework yang dapat Anda gunakan membuat antarmuka aplikasi. Bab ini difokuskan pada pengenalan kontrol dan komponen form Windows dasar dan penerapannya pada aplikasi. Kontrol dan komponen form Windows default yang terdapat di ToolBox, gambar dan tabel keterangannya sebagai berikut: Gambar Kontrol Tabel : Fungsi Kontrol Fungsi Nama Penjelasan Menampilkan Teks Label Menampilkan teks tetapi pemakai tidak dapat mengubahnya secara langsung LinkLabel Menampilkan teks dengan model link web dan akan memicu suatu event ketika pemakai mengkliknya Status Terletak di bagian bawah form 176
177 Edit Teks Memilih suatu daftar induk dan berisi informasi tentang keadaan aplikasi sekarang. Informasi ditampilkan dalam jendela yang memiliki frame/panel TextBox Menampilkan teks yang dapat diedit oleh pemakai pada saat program dijalankan atau diubah oleh program RichTextBox Menampilkan teks dengan format plain text atau rich-text document ListBox Menampilkan daftar teks dan imte gambar (icon) CheckListBox Menampilkan daftar item yang dapat digulung, masing-masing item disertai dengan kotak cek ComboBox Menampilkan daftar drop-down dari item ListView Menampilkan item dengan satu diantara empat cara:tampilkan teks saja, teks dengan iconkecil, teks dengan icon besar, dan tampilan report TreeView Menampilkan kumpulan hierarkial dari objek node yang selalu berisi teks dengan tambahan berupa kotak cek dengan icon DomainUpDown Menampilkan daftar item teks di mana pemakai dapat menggulung menggunakan tombol up dan down NumericUpDown Menampilkan daftar angka di mana pemakai dapat menggulung menggunakan tombol up dan down 177
178 Menangani Gambar Mengatur nilai Mengatur tanggal dan waktu Kotak Dialog PictureBox Menampilkan file gambar seperti btimap, png dan icon. ImageList Berfungsi sebagai tempat penyimpanan gambar. CheckBox Menampilkan kotak cek dan label teks. Umumnya digunakan untuk mengatur pilihan. RadioButon Menampilkan tombol yang dapat berganti antara off dan on TrackBar Digunakan untuk mengatur suatu nilai pada skala dengan cara menggerakkan petunjuk sepanjang skala DateTimePicker Menampilkan kalender secara grafikal dan pemakai dapat memilih tangga atau jam MonthCalendar Menampilkan kalender secara grafikal dan pemakai dapat memilih range tanggal Timer Untuk mengeksekusi waktu kejadian pada rutin program termasuk interval (selang waktu) OpenFileDialog Menampilkan kotak dialog di mana pemakai dapat melakukan navigasi dan membuka file SaveFileDialog Menampilkan kotak dialog di mana pemakai dapat memberi nama dan menyimpan file FontDialog Menampilkan kotak dialog di mana pemakai dapat mengatur font dan atributnya. ColorDialog Menampilkan kotak dialog untuk memilih warna sebagai bagian dari antarmuka 178
179 Membuat menu Command Mengelompokkan kontrol lain PrintDialog Menampilkan kotak dialog di mana pemakai dapat memilih pinter dan mengatur atributnya PrintPreviewDialog Menampilkan kotak dialog bagaimana tampilan objek PrintDocument terlihat ketika dicetak PageSetupDialog Mengatur detail halaman yang akan dicetak melalui kotak dialog yang sudah dikonfigurasi MainMenu Menyediakan antarmuka untuk mendesain menu secara langsung ContextMenu Menampilkan menu popup ketika pemakai mengklik mouse kanan pada suatu objek Button Digunakan untuk memulai, menghentikan atau menginterupsi suatu proses Toolbar Berisi kumpulan kontrol tombol NotifyIcon Menampilkan icon dalam daerah status notify dari taskbar yang mewakili aplikasi yang berjalan dalam background GroupBox Mengelompokkan kumpulan kontrol, bisa diberi label judul dan frame yang tidak dapat digulung. Panel Mengelompokkan kumpulan kontrol, tidak bisa diberi label judul dan frame yang dapat digulung TabControl Menyediakan halaman tab untuk mengorganisasiskan dan mengakses objek yang dikelompokkan secara efisien 179
180 Balok gulung HscrollBar Untuk mengubah nilai dengan menggerakkan balok gulung horizontal VscrollBar Untuk mengubah nilai dengan menggerakkan balok gulung vertikal Bantu HelpProvider Menggabungkan help HTML dengan aplikasi Windows Tooltip Menampilkan teks ketika pemakai menunjuk pada sautu kontrol. ErrorProvider Menampilkan informasi kesalahan ke pemakai Mengatur Print dan report PrintPreviewControl Menampilkan dokumen bagaimana akan terlihat ketika dicetak PrintDocument Mengatur properti mencetak dan mencetak dokumen dalam aplikasi Windows CrystalReportViewer Menampilkan jendela bagaimana tampilan objek Crystal Report terlihat ketika dicetak Pemisah Panel Splitter Untuk mengubah ukuran kontrol docking Visualisasi Proses ProgressBar Secara grafikal menunjukkan jalannya proses sampai selesai dari suatu aksi Menampilkan data DataGrid Menampilkan data secara tabular dari suatu dataset. 2.2 Form Windows Pada VB 6, form disimpan dalam file.frm yang merupakan objek yang dapat dibuat atau dihapus tetapi Anda tidak bisa melihat kode form. Sedangkan dalam VB.NET, form disimpan dalam file.vb seperti class lainnya dan Anda bisa melihat kode form. 180
181 Berikut ini beberapa pengaturan dan properti form yang penting. Form Modal Verus Modeless Form modal adalah form yang harus ditutup terlebih dahulu sebelum pemakai dapat mengakses form lainnya. Gunakan metode ShowDialog() untuk menampilkan form sebagai form modal. Sintaksnya: NamaForm.ShowDialog() Sebaliknya form modeless adalah form yang tidak harus ditutup terlebih dahulu ketika pemakai membuka form lainnya. Gunakan metode Show() untuk menampilkan form sebagai form modeless. Sintaksnya: NamaForm.Show() FormBorderStyle Form Windows memiliki beberapa model yang berbeda. Model diatur menggunakan properti FormBodyStyle. Model akan mengubah tampilan dasar jendela ketika form berjalan dengan beberapa cara, seperti: ada tidaknya border/bingkai dan bentuk border, icon akan ditampilkan atau tidak di baris judul atau taskbar, dan form dapat diubah ukurannya atau tidak. Tabel : pengaturan properti FormBorderStyle Pengaturan Tampilan None Jendela tanpa border dan pemakai tidak dapat mengubah ukuran jendela. Biasanya digunakan untuk layar splash/pembuka FixedSingle Jendela dengan border garis tunggal dan pemakai tidak dapat mengubah ukuran jendela Fixed3D Jendela dengan border efek 3D atau efek timbul dan pemakai tidak dapat mengubah ukuran jendela FixedDialog Mirip FixedSingle, kecuali border terlihat memiliki ceruk dan pemakai tidak dapat mengubah ukuran jendela. Model ini biasanya digunakan untuk membuat kotak dialog. Sizeable Pengaturan deafult, di mana pemakai dapat mengubah ukuran jendela dan tampilannya seperti FixedSingle 181
182 FixedToolWindow SizeableToolWindow Border tunggal, jendela yang tidak dapat diubah ukurannya, hanya ada tombol Close dan teks dengan ukuran kecil di baris judul. Tidak menampilkan icon di baris judul dan di taskbar. Seperti FixedToolWindow tetapi ukuran jendela dapat diubah Mengatur Warna Form Ada tiga cara untuk mengatur warna yaitu: Menggunakan Jendela Properti Palette Untuk mengatur nilai properti BackColor dan ForeColor dapat digunakan tiga pelette yang sudah ada di jendela properti VB.NET yaitu: palette Custom, palette Web, dan palette System. Untuk mengakses palette, dalam jendela Properties, pilih BackColor atau ForeColor. Selanjutnya klik panah bawah pada sebelah kanan jendela Properties untuk membuka palette dan memilih warna. Gambar Palette Warna Menggunakan Nilai Warna yang Sudah Didefinisikan Dalam VB 6, nilai warna dimasukkan dalam tipe data angkat long integer, sedangkan dalam VB.NET warna dimasukkan pada dua tipe data baru nama namaspace: System.Drawing.Color dan System.Drawing.Systemcolor (kedua tipe memiliki nilai kembalian berupa struktur warna berupa angkat 32 bit). Anda dapat menggunakan anggota dari class System.Drawing.Color dan System.Drawing.SystemColor untuk menerapkan nilai warna yang sudah didefinisikan ke aplikasi Anda. Contohnya: Color.Black adalah anggota dari System.Drawing.Color. 182
183 Anda dapat menemukan informasi mengenai konstanta warna VB.NET dalam sistem help. Browser Objek untuk melihat anggota dari class System.Drawing.Color dan System.Drawing.SystemColors. Caranya klik menu View > OtherWindows > Object Browser atau tekan tombol fungsi F2. Pada jendela Object Browser panel Objects, klik pada tanda + di pesan System.Drawing. Kemudian klik tanda + di {}System.Drawing dan terakhir klik tanda + di Color. Anda akan melihat members dari Color di panel sebelah kanan, seperti gambar berikut: Gambar Members Dari Color Panel Untuk menerapkan warna pada aplikasi, contoh kodenya sebagai berikut: Me.BackColor = Color.Azure mengubah warna latar form Mengatur Ukuran dan Posisi Form Ukuran form dapat diubah menggunakan properti Size dimana terdapat sepasang angka koordinat yang dipisahkan oleh (; atau, bergantung pada Regional Setting sistem Windows) yang menunjukkan lebar dan tinggi form dalam satuan pixel. Anda dapat memperluas properti Size dengan mengklik 183
184 icon + di mana Anda akan dibawa properti Width dan Height dari properti Size. Anda dapat juga mengatur ukuran form melalui kode yang akan dieksekusi ketika program berjalan. Contoh kodenya: New System.Drawing.Size (500, 600) Properti StartPosition menentukan posisi form ketika pertama kali dijalankan. Biasanya setelah form ditampilkan, pemakai dapat mengubah posisi form. Mengatur posisi form di tengah-tengah layar akan membuat aplikasi Anda terlihat profesional. Caranya pilih properti StartPosition dengan CenterScreen. Tabel berikut ini menunjukkan pengaturan properti StartPosition dan efeknya: Tabel : Properti StartPosition dan Efeknya Nilai StartPosition Efek Manual Posisi form disesuaikan dengan nilai yang didefinisikan dalam properti Location CenterScreen Menampilkan form di tengah layar WindowsDefaultLocation Menampilkan form pada lokasi default Windows WindowsDefaultBounds Menampilkan form pada lokasi default Windows dengan ukuran batas yang ditentukan oleh Windows default CenterParent Menampilkan form anak di tengah form induk Urutan Tampilan Kontrol Pada Form Ketika form Anda berisi banyak kontrol, mungkin Anda perlu untuk mengatur ulang urutan tampilan kontrol. Contohnya ketika Anda memiliki label kemudian di atasnya disisipkan GroupBox maka label menjadi tidak terlihat karena tertutup GroupBox. Urutan posisi kontrol tersebut disebut z-order di mana kontrol yang diletakkan paling belakang berada pada bagian paling atas form. Posisi kontrol disebut layer/lapisan. Gunakan metode BringToFront untuk meletakkan kontrol pada bagian paling atas dari z-order. Sebaliknya gunakan metode SendToBack untuk mengirimkan kontrol pada bagian paling bawah dari z-order. Contoh kodenya sebagai berikut: lbljudul.bringtofront Letakkan di depan atau GroupBox1.SendToBack Kirim ke belakang 184
185 Selain dengan kode, pada waktu desain urutan z-order bisa juga diubah dengan cara pilih objek kemudian klik menu Format > Order > Bring To Front untuk meletakkan di depan atau klik menu Format > Order > Send To Back untuk mengirimkan ke belakang. 2.3 Aplikasi MDI (Multiple Document Interface) Aplikasi MDI (antar muka dengan banyak dokumen) akan menampilkan banyak dokumen secara bersamaan, dengan masing-masing dokumen ditampilkan secara bersamaan, dengan masing-masing dokumen ditampilkan dalam Windows tersendiri. Aplikasi MDI terdiri dari satu form induk dan banyak form anak atau jendela dokumen. Anda dapat menentukan form anak mana yang aktif/fokus dengan klik mouse. Pada aplikasi MDI pemakai dapat dengan cepat berpindah antarjendela anak dengan susunan jendela anak:tile/berjajar atau cascade/menumpuk. Gambar Demo MDI Untuk membuat form induk, atur properti form IsMDIcontainer dengan Tree. Sedangkan untuk membuat form anak cukup dengan menambahkan form baru. 185
186 Form induk MDI didukung dengan menu Windows dengan submenu Arrange, Cascade, Tile Vertical, dan Tile Horizontal. Pemakai dapat mengklik menu tersebut untuk mengubah susunan form anak. Anda dapat menggunakan metode LayoutMDI pada form induk dengan pilihan sebagai berikut: Tabel : Pilihan Metode LayoutMDI Pengaturan Penjelasan ArrangeIcons Menampilkan icon dari form anak yang disusun sepanjang bagian bawah dari form induk Cascade Menampilkan form anak secara cascade/menumpuk satu dengan lainnya ke bawah TileHorizontal Menampilkan form anak secara tile/sejajar (tanpa menumpuk) dimana masing-masing jendela anak mengisi lebar dari form induk TileVertical Menampilkan form anak secara tile/berjajar dimana masingmasing jendela anak mengisi tinggi dari form induk Menu Window Aplikasi MDI memiliki menu dengan judul Window yang berisi dua kelompok perintah. Kelompok pertama berisi perintah untuk mengatur posisi jendela anak di form MDI. Sedangkan kelompok kedua berisi judul dari jendela anak yang dibuka. Lihat gambar berikut. Gambar Judul dan Jendela Anak 186
187 Untuk membuat agar menu Window secara otomatis menampilkan daftar judul file anak, caranya sebagai berikut. Pada form Induk pilih judul menu Window. Klik kanan mouse dan pada jendela popup yang muncul pilih Properties dan atur Properti MDIList dengan True. Membuat Program MDI 1. Jalankan VB.NET dan di jendela New Project, pilih Template dengan Windows Application dab beri Name dengan Demo MDI 2. Pada jendela Solution Explorer, klik pada Form1.vb dan ganti namanya menjadi frminduk.vb. Klik sembarang tempat di form kemudian pada jendela Properties atur properti IsMdicontainer menjadi True. Properti ini jika True akan membuat for menjadi form induk atau form MDI yang nantinya akan berisi form anak. Atur properti Text menjadi Demo MDI. 3. Tambahkan komponen MainMenu ke jendela komponen. Kemudian buat menu dengan struktur seperti tabel berikut: Tabel : Struktur Menu Text Name Properti Lain File mnufile MergeType = MergeItems New mnunew Open mnuopen - MergeOrder = 7 Exit mnuexit MergeOrder = 9 Window MnuWindow MDIList = True Tile Horizontal MnuTileH Tile Vertical MnuTileV Cascade MnuCascade 187
188 Gambar Menu 4. Tambahkan komponen OpenDialog ke jendela komponen. Atru properti Name menjadi dlgopen. 5. Langkah berikutnya adalah menambah form baru sebagai form anak. Caranya klik menu Project > Add Window Form dan pada daftar Local Project Items pilih template Window Form. Ubah Name Form2.vb menjadi frmanak.vb. Kemudian klik Open. 6. Tambahkan komponen MainMenu ke jendela komponen FormAnak. Kemudian buat menu dengan struktur seperti tabel berikut: 7. Tambahkan komponen PrintDocument dan SaveDialog ke jendela komponen. Atur properti Name dari SaveDialog1 menjadi dlgsave. Tambahkan kontrol TextBox ke form. Atru properti Name dengan txteditor. Font dengan Courier New 10, Scrollbars dengan Both, Multiline dengan True, dan Dock dengan Fill. 188
189 Gambar Tampilan Form Anak 2.4 Kotak Pesan dan Kotak Input Visual Basic menyediakan dua fungsi dasar untuk menampilkan pesan atau meminta informasi ke pemakai yaitu MsgBox() dan InputBox(). Kotak Pesan Kotak pesan (msgbox) gunanya untuk menampilkan kotak dialog berisi pesan dan menunggu pemakai untuk menutup dengan cara mengklik suatu tombol. MsgBox memiliki sintaks sebagai berikut: MsgBox(prompt[,tombol][,Judul]) Prompt merupakan string yang akan ditampilkan sebagai pesan dalam kotak pesan. Jika Prompt berisi lebih dari satu baris, Anda dapat menambahkan pemisah baris menggunakan karakter carriage return/pindah baris Chr(13), karakter linefeed Chr(10) atau kombinasi keduanya. 189
190 Tombol bersifat opsional merupakan angka yang menunjukkan nilai dari tombol yang ditampilkan, model icon yang digunakan, menentukan tombol default dan modalitas dari kotak pesan. Judul, bersifat opsional merupakan string yang ditampilkan pada baris judul kotak pesan. Tabel Nilai dari MsgBox Mengatur Konstanta Nilai Penjelasan Tombol OKOnly 0 Hanya menampilkan tombol OK OKCancel 1 Menampilkan tombol OK dan Cancel AbortRetryIgnore 2 Menampilkan tombol About, Retry dan Ignore YesNoCancel 3 Menampilkan tombol Yes, No dan Cancel YesNo 4 Menampilkan tombol Yes dan No RetryCancel 5 Menampilkan tombol Retry dan Cancel Icon Critical 16 Menampilkan icon pesan kritis Question 32 Menampilkan icon pertanyaan Exclamation 48 Menampilkan icon pesan peringatan Information 64 Menampilkan icon pesan informasi DefaultButton1 0 Tombol Pertama adalah tombol default Tombol Default DefaultButton2 256 Tombol Kedua adalah tombol default DefaultButton3 512 Tombol Ketiga adalah tombol default Modalitas AplicationModal 0 Pemakai harus memberi tanggapan ke kotak pesan 190
191 sebelum berpindah ke form lain dari aplikasi sekarang SystemModal 4096 Semua aplikasi ditunda sampai pemakai memberi tanggapan ke kotak pesan Fungsi MsgBox memiliki nilai kembalian berupa angka integer yang menunjukkan tombol apa yang ditekan pemakai dengan nilai sebagai berikut: Tabel : Nilai Tombol MsgBox Konstanta Nilai OK 1 Cancel 2 Abort 3 Retry 4 Ignore 5 Yes 6 No 7 Anda dapat menampilkan kotak pesan menggunakan metode Show dari class MessageBox seperti contoh kode berikut: MessageBox.Show( Proses telah selesai, Pesan ) Anda dapat juga menggunakan fungsi MsgBox seperto contoh berikut yang hasilnya sama dengan kode diatas. MsgBox( Proses telah selesai, Pesan ) Kotak Input Kotak input (InputBox) gunanya untuk menampilkan teks pada kotak dialog, menunggu pemakai untuk menginput teks, kemudian mengklik tombol OK atau Cancel dan selanjutnya memberi nilai kembalian yang berupa string yang berada dalam kotak teks. InputBox memiliki sintaks sebagai berikut: InputBox$(prompt[,judul][,default][,xpos][,ypos]) 191
192 Gambar Kotak Input Prompt merupakan string yang akan ditampilkan sebagai pesan dalam kotak input. Jika diperlukan prompt akan dipecah menjadi banyak baris secara otomatis. Untuk mengatur pindah baris melalui kode gunakan karakter carraige return Chr(13),karakter linefeed Chr(10) atau kombinasi keduanya. Judul merupakan judul yang muncul di baris judul kotak dialog. Jika Anda tidak mengisi argumen Judul maka yang digunakan sebagai judul adalah judul aplikasi. Default merupakan input default yang dapat Anda gunakan untuk mengantisipasi respon dari pemakai. Gunakan argumen ini untuk ditamplikan ketika kotak dialog pertama kali dibuka. Xpox dan Ypos merupakan kordinat dari sudut kiri atas kotak dialog dalam satuan pixel. Contoh penggunaan kotak input adalah: Nama = InputBox$( Masukkan nama:, Nama, Katijo, 100, 100) Teks yang dimasukkan pemakai dalam kotak dialog diberikan ke variabel Nama. Nilai kembalian selalu string walaupun pemakai memasukkan informasi berupa angka. Anda dapat melakukan cek dari input yang diberikan pemakai menggunakan fungsi IsNumeric() jika input yang diinginkan berupa angka dan IsDate() jika input yang diinginkan berupa tanggal. 192
193 Soal Latihan 1. Kontrol dan komponen form windows terletak di : a. Toolbox b. Jendela Properties c. Jendela Output d. Jendela design 2. Kontrol berupa Kotak dialog yang berfungsi menampilkan kotak dialog tampilan objek PrintDocument yang terlihat ketika dicetak bernama : a. PrintDialog b. PrintPreviewDialog c. PageSetupDialog d. FontDialog 3. Properti yang mengatur model bernama : a. FixedSingle b. FixedDialog c. Sizeable d. FormBorderStyle Soal Praktek 4. Buatlah form seperti tampilan di bawah ini : 5. Buatlah kotak input yang akan menampilkan Have fun With VB.NET 193
194 BAB III Pemrograman VB.NET 3.1 Variabel Variabel adalah lokasi di memori yang diberi nama. Variabel digunakan untuk memasukkan data berupa nilai sementara ke dalam memori selama menghitung, memberi informasi dan sebagainya. Anda dapat memberi nama pada lokasi memori dengan mendeklarasikan variabel dan menentukan tipe data. Ketika memberi nama variabel, Anda harus mengikuti ketentuan berikut: Karakter pertama harus huruf Yang diperbolehkan adalah huruf, angka dan garis bawah _ Tidak boleh ada spasi Tidak boleh lebih dari 255 karakter Haruslah unik dalam suatu scope/jangkauan. Artinya Anda tidak boleh memiliki nama variabel yang sama dalam subrutin yang sama. Deklarasi Variabel Deklarasi variabel adalah proses untuk menyebutkan karakteristik variabel seperti nama, tipe data, jangkauan, masa hidup, dan nilai awal. Contoh deklarasi variabel adalah sebagai berikut: Dim Jawab As String Dim I as Integer = 13 Kata kunci Dim menunjukkan deklarasi variabel. Dim adalah singkatan dari Dimension. Kode kedua di atas menggabungkan deklarasi variabel dengan operator penugasan. Kode mendeklarasikan I dengan tipe data Integer dan diberi nilai awal 13. Dalam VB.NET anda dapat mendeklarasikan beberapa variabel yang tipenya sama tanpa melakukan pengulangan penulisan untuk tiap variabel. Contohnya sebagai berikut: Dim Panjang, Lebar, Tinggi As Integer 194
195 Pernyataan berikut akan membuat variabel tipe Integer tiga buah dan tipe Double dua buah. Dim Panjang, Lebar, Tinggi As Integer, Luas, Isi As Double Anda dapat belajar melakukan inisialisasi dengan memberi nilai awal pada deklarasi variabel sebagai berikut: Dim Jarak As Integer = 100, Waktu As Single = 90 Jangkauan Variabel Scope/jangkauan adalah wilayah kode yang variabelnya bisa diakses. Jangkauan bergantung pada tempat variabel dideklarasikan, yang jenisnya: o Tingkat Blok Suatu Variabel,sekarang dapat dideklarasikan di dalam suatu blok pernyataan seperti pernyataan If... Then, For...Next atau Do...Loop. Variabel tersebut memiliki jangkauan hanya di dalam blok di mana ia dideklarasikan. o Tingkat Prosedur Jangkauannya hanya ada dalam prosedur tempat variabel dideklarasikan. Disebut juga variabel lokal. o Tingkat Modul Variabel yang dideklarasikan di luar prosedur dalam modul, class atau structure disebut variabel tingkat modul. Akses ke variabel modul bergantung pada kata kunci aksesibilitas yang dipakai dalam deklarasinya. o Tingkat Namespace Variabel yang dideklarasikan pada tingkat modul tetapi diberi aksesibilitas publik (Public atau Friend) disebut variabel tingkat namespace. Variabel seperti ini ada di tiap prosedur dalam satu namespace yang berisi modul tempat variabel dideklarasikan. Contoh kode: Public x As Double variabel tingkat namespace Private y As Integer variabel tingkat modul Private Sub btnhitung_click(byval sender As _ System.Object, ByVal e As System.EventArgs) _ 195
196 Handles btnhitung.click Dim bselesai AS boolean = False Variabel tingkat prosedur Dim r As New Random() Variabel tingkat prosedur Do While Not bselesai Dim z As Integer Variabel tingkat blok z = r.next(1, 100) bselesai = (z < 10) Loop MsgBox( Hasil Akhir= & z)... Kode lainnya End Sub... Prosedur lainnya Aksesibilitas Variabel Selain Dim terdapat atribut variabel lainnya seperti Public, Private, dan sebagainya yang menunjukkan aksesibilitas variabel. Aksesibilitas variabel menentukan apakah variabel tersebut dapat diakses dari modul luar (atau aplikasi) tempat variabel itu dideklarasikan. Atribut berikut bersifat opsional artinya boleh digunakan atau tidak, yang jenisnya: o Dim Variabel yang dideklarasikan dengan kata kunci Dim memiliki akses yang terbatas. Jika dideklarasikan pada prosedur maka jangkauannya hanya di prosedur itu saja. Jika prosedur selesai dijalankan maka nilai variabel Dim akan hilang. o Public Variabel yang dideklarasikan dengan kata kunci Public memiliki akses yang bebas. Tiada ada pengaturan untuk mengaksesnya. Anda dapat menggunakan Public hanya pada level modul, namespace dan file, artinya Anda dapat mendeklarasikan variabel Public dalam file sumber atau di dalam modul, class atau structure, tetapi tidak bisa di dalam prosedur. o Protected Variabel yang dideklarasikan dengan kata kunci Protected memiliki akses terproteksi. Yang dapat mengaksesnya hanya dari class yang sama atau yang mewarisi class tersebut. Akses Protected bukanlah superset dari akses Friend. 196
197 Anda hanya dapat menggunakan Protected pada level class untuk mendeklarasikan anggota dari class, artinya Anda dapat mendeklarasikan variabel Protected dalam suatu class tetapi tidak dalam suatu prosedur, tidak dalam level modul, namespace,dan file. o Friend Variabel yang dideklarasikan dengan kata kunci Friend memiliki akses Friend. Yang dapat mengaksesnya dari program yang berisi deklarasi ini dan dari manapun dalam assembly yang sama. Anda hanya dapat menggunakan Friend pada level modul, namespace, atau file, artinya Anda dapat mendeklarasikan variabel Friend dalam file sumber atau dalam modul, class atau structure tapi tidak dalam prosedur. o Protected Friend Variabel yang dideklarasikan dengan kata kunci Protected Friend memiliki akses gabungan antara Protected dengan Friend. Variabel ini dapat digunakan oleh kode di manapun pada assembly yang sama, pada kode dalam class itu sendiri, dan pada kode yang diwarisi dari suatu class. Anda hanya dapat menggunakan Protected Friend pada level class, artinya anda dapat mendeklarasikan variabel Protected Friend di dalam suatu class tetapi tidak dalam suatu prosedur, dan tidak pada level modul, namespace atau fil. Anda dapat menggunakan Protected Friend hanya untuk mendeklarasikan anggota dari class. o Private Variabel yang dideklarasikan dengan kata kunci Private memiliki akses terbatas. Yang dapat mengaksesnya hanya dari dalam isi deklarasi, termasuk anggota dari tipe bersarang seperti prosedur. Anda dapat menggunakan Private hanya pada level modul, artinya anda dapat mendeklarasikan variabel Private di dalam modul, class atau structure, tetapi tidak dalam namespaces atau level file dan tidak di dalam prosedur. 197
198 o Konstanta Konstanta mirip dengan variabel tetapi nilainya tidak berubah selam program berjalan. Konstanta dideklarasikan dengan kata kunci Const. Sintaks lengkapnya sebagai berikut: Const namakonstanta As tipe = nilai Konstanta memiliki jangkauan tertentu dan dapat dideklarasikan menggunakan kata kunci Public atau Private. Deklarasi konstanta dapat juga berisi konstanta lainnya seperti pada contoh berikut ini: Public Const pi As Double = Public Const pi2 As Double = 2 * pi 3.2 Tipe Data dan Structure Tipe data dalam variabel menentukan tipe data yang bisa disimpan di dalamnya, format data yang disimpan dan berapa banyak memori yang dialokasikan untuk menyimpan data. VB.NET memiliki beberapa tipe data built-in/terpasang yang ditentukan dalam CLR (Common Language Runtime).Structure adalah tipe data buatan sendiri. Tipe Data Tabel : Tipe data pada VB.NET. Tipe Ukuran Jangkauan Boolean 4 bytes True atau False Date 8 bytes 1/1/1 sampai 31/12/9999 String 10 bytes 0 sampai 2 juta karakter unicode User Defined Jumlah Jangkauannya tergantung dari tipe data Type Ukurannya untuk tiap anggotanya Byte 1 byte 0 sampai 255 unsigned Char 2 bytes 0 sampai unsigned Short (Int16) 2 bytes sampai Short(Int32) 2 bytes sampai Long (Int64) 8 bytes sampai
199 Single (Presisi 4 bytes 3, E+38 sampai -1,401298E-45 tunggal nilai untuk nilai negatif; 1,401298E-45 float/pecahan) sampai 3, E+38 untuk nilai positif Double (Presisi 8 bytes -1, E+308 sampai - ganda nilai 4, E-324 untuk nilai float/pecahan) negatif; 4, E-324 sampai 1, E+308 untuk nilai positif. Decimal 16 bytes 0 sampai +/ tanpa nilai desimal; 0 sampai +/- 7, dengan 28 tempat disebelah kanan desimal; +/-1E-28 untuk nilai yang lebih kecil dari 0. Pada VB versi sebelumnya, semua variabel yang tidak dideklarasikan secara eksplisit mempunyai tipe data Variant. VB.NET tidak lagi menggunakan tipe data Variant. Sekarang semua tipe data adalah Object dan harus dideklarasikan terlebih dahulu. Structure Untuk membuat tipe data sendiri, Anda dapat menggunakan Structure. Structure berisi satu atau lebih anggota yang dapat berisi tipe data yang sama atau berbeda. Masing-masing anggota dari Structure memiliki nama di mana Anda dapat melakukan referensi ke anggota secara individual melalui nama sekalipun Structure secara keseluruhan dianggap sebagai entiti tunggal. Dalam VB.NET kata kunci Structure digunakan untuk mendefinisikan Structure dengan sintaks sebagai berikut: [Public][Private][Friend] Structure namavariabel Deklarasi nonmetode 199
200 Deklarasi metode End Structure 3.3 Operator Operator adalah simbol (karakter atau kata kunci) yang secara spesifik mengoperasikan satu atau dua operan. Operator yang menangani satu operan disebut operator unary. Oprator ini menggunakan notasi prefik/awalan, (contoh dari -9). Operator yang menangani dua operan disebut operator binary (contoh + dari 3 + 2). Operator Aritmatika Operator aritmatika melakukan operasi matematika standar pada nilai numerik. Jenisnya sebagai berikut: Tabel Operator Aritmatika Operator Keterangan * Perkalian di mana hasilnya adalah nilai dari operan pertama dikali operan kedua / Pembagian reguler dimana hasilnya adalah nilai dari operan pertama dibagi operan kedua. Contohnya 5/2 = 2.5 \ Pembagian integer dimana hasilnya adalah nilai dari operan pertama dibagi operan kedua kemudian dibulatkan ke bawah. Contoh 5\2 = 2 ^ Pemangkatan, untuk operan dengan tipe Double. Hasilnya operan pertama pangkat operan kedua + Penjumlahan, dimana hasilnya operan pertama ditambah operan kedua _ Pengurangan, dimana hasilnya operan pertama dikurang operan kedua Mod Modulus digunakan untuk operan Integer (Byte, Short, Integer dan Long) dimana hasilnya merupakan sisa pembagian. Contoh 5 mod 2 nilainya 1 200
201 Operator Logika Operator relasi akan membandingkan di antara dua operan dan nilai kembaliannya berupa boolean sebagai hasil pembandingan. Jenisnya sebagai berikut: Tabel Operator Logika Operator Keterangan = Sama dengan. Hasilnya True jika nilai dua operan adalah sama, False jika tidak. <> Tidak sama. Hasilnya True jika nilai dua operan tidak sama, jika sama hasilnya False. < Lebih kecil. Untuk operasi numerik. Hasilnya True jika operan pertama lebih kecil dari operan kedua. False jika sebaliknya. > Lebih besar. Untuk operasi numerik. Hasilnya True jika operan pertama lebih besar dari operan kedua. False jika sebaliknya. <= Lebih kecil atau sama dengan. Untuk operasi numerik. Hasilnya True jika operan pertama lebih kecil atau sama dengan dari operan kedua. False jika sebaliknya. >= Lebih besar atau sama dengan. Untuk operasi numerik. Hasilnya True jika operan pertama lebih besar atau sama dengan dari operan kedua. False jika sebaliknya. Operator Bitwise Guna dari operator bitwise adalah memanipulasi bit secara individual untuk membuat nilai dari tipe integer (Byte, Short, Integer, dan Long). Berikut adalah jenis dari operator Bitwise. Tabel Operator Bitwise Operator Kependekan dari Artinya Contoh Hasil And Bitwise And Baik sisi kanan maupun sisi kiri 1 And 0 0 dari operator adalah 1 Or Inklusif Bitwise Or Salah satu atau kedua sisi dari 1 Or 0 1 operator adalah 1 Xor Ekslusif Bitwise Or Salah satu dari sisi kanan atau kiri dari operator adalah 1, tapi tidak keduanya 1 Xor
202 Operasi Bitwise bekerja dengan menerapkan pemberian operasi Boolean pada tiap bits yang berhubungan dalam dua operan. Contohnya: 37 And 148 Untuk menghitung nilai pada ekspresi di atas, ubah menjadi bynari pada tiap operan sehingga menjadi: (37) (148) Berikutnya terapkan operasi boolean And pada bits tiap kolom: (37) And (148) (4) Jadi 37 And 148 hasilnya adalah 4. Operator Logika Opeator Logika adalah operator yang membandingkan ekspresi Boolean. Jenisnya adalah sebagai berikut: Tabel Operator Logika Operator Keterangan And Hasilnya True jika kedua operan bernilai True. Selain itu hasilnya False Or Hasilnya True jika salah satu atau kedua operan bernilai True. Selain itu hasilnya False Xor Hasilnya True jika hanya salah satu operan bernilai True. Selain itu hasilnya False AndAlso Hasilnya True jika kedua operan bernilai True. Selain itu hasilnya False OrElse Hasilnya True jika salah satu atau kedua operan bernilai True. Selain itu hasilnya False Not Merupakan operator unary. Hasilnya True jika operan False. False jika operan True. Operator AndAlso dan OrElse disebut evaluasi sirkuit pendek karena operator tersebut ketika melakukan evaluasi hanya sampai mengetahui benar atau salah saja. Contohnya: 202
203 (JenisKelamin = P AndAlso <=30) Proses pengujian pada pernyataan di atas dihentikan segera jika JenisKelamin tidak sama dengan P, jadi kondisi kedua tidak dievaluasi lagi. Sebaliknya jika JenisKelamin sama dengan P maka akan diuji kondisi kedua. Operator logika And dan Or mirip dengan operator AndAlso dan OrElse, tetapi bedanya And dan Or akan menguji semua kondisi. Berikut ini adalah tabel dari operator logika. Ekspresi 1 Ekspresi 2 Hasil Ekspresi 1 Ekspresi 2 Hasil True True False True True True True False True True False False False True True False True False False False False False False False Operator XOR Operator And Ekspresi 1 Ekspresi 2 Hasil Ekspresi 1 Ekspresi 2 Hasil True True True True Tidak True dievaluasi True False False False True True False Tidak False False False False dievaluasi Operator AndAlso Operator OrElse Ekspresi 1 Ekspresi 2 Hasil True True True True False True False True True False False False Operator Or Memperpendek Operator Meminjam dari keluarga bahasa pemrograman C, sekarang anda dapat memperpendek kode: x = x + 1 menjadi 203
204 x += 1 Operator dasar lainnya yang memiliki prinsip kerja seperti di atas dapat dilihat pada tabel berikut ini; Tabel Memperpendek Operator Operator Diperpendek Artinya x = x + y x += y x ditambah y dan letakkan hasilnya di x x = x y x -= y x dikurangi y dan letakkan hasilnya di x x = x * y x *= y x dikali y dan letakkan hasilnya di x x = x / y x /= y x dibagi y dan letakkan hasilnya di x x = x \ y x \= y x dibagi y dan letakkan hasilnya di x pada pembagian integer x = x ^ y x ^= y x pangkat y dan letakkan hasilnya di x x = x & y x &= y Concatenate (digabungkan) x dengan y dan letakkan hasilnya di x (pada string) 3.4 Penanganan Kesalahan (Error Handling) Ada tiga macam kesalahan yang mungkin muncul ketika mengembangkan aplikasi VB.NET: Kesalahan Sintaks. Yaitu kesalahan yang melanggar aturan VB.NET seperti salah ejaan pada kata kunci atau nama variabel, kesalahan meletakkan tanda baca dan adanya kata yang hilang (misalnya blok If tanpa ditutup dengan End If). Pada waktu desain, VB.NET akan mencek kode yang Anda ketik dan jika ada kode yang memiliki kesalahan sintaks, kode tersebut akan ditandai dengan garis bawah tipe wave/gelombang sehingga saat itu juga Anda dapat langsung mengetahui dan memperbaikinya. Kesalahan run time. Merupakan kesalahan yang muncul ketika kode anda dikompilasi atau dijalankan. Kesalahan run time disebabkan kode yang kelihatannya benar oleh kompiler, tetapi tidak bisa jalan untuk 204
205 nilai-nilai tertentu. Contohnya adalah hitungan yang membagi angka dengan 0. Kesalahan logika. Yaitu kesalahan pemrograman yang memberikan hasil yang tidak sesuai dengan yang diharapkan atau tidak diduga. Tipe kesalahan ini sulit dilacak dan diperbaiki karena keaslahan ini tidak menghentikan eksekusi program. Contoh kesalahan logika: jikai nilai lebih besar atau sana dengan 60 diberi predikat lulus dibuat kode: IF Nilai > 60 Then seharusnya If Nilai >= 60 Then Untuk mengatasi kesalahan, Anda dapat melakukan pencegahan dengan menambahkan kata kunci Option Strict On dan Option Explicit On yang mdiletakkan di bagian awal modul. Dengan memakai Option Strict On, akan tampil kesalahan sintaks jika Anda membuat konversi tipe data secara eksplisit yang bisa menyebabkan hilangnya data. Dengan memakai Option Explicit On, akan tampil kesalahan sintaks jika Anda memakai variabel sebelum mendeklarasikannya. Contoh kodenya: Option Strict On Dim X As Integer Dim Y As INteger Y = X = Y Baris ini menyebabkan error saat dikompilasi Penanganan Error Menggunakan On Error Untuk menangani error dapat dibuat error handler dengan pernyataan On Error yang merupakan perangkap kesalahan dengan contoh berikut: Sub cmdbuka_click() On Error GoTo TanganiError Kode yang mungkin menyebabkan error Exit Sub TanganiError: Kode untuk menangani error Resume Next End Sub Jika terjadi error, pernyataan On Error akan memindahkan eksekusi kode ke bagian yang ditunjuk oleh label TanganiError. Setelah kode error handler dieksekusi, pernyataan Resume Next mengakibatkan eksekusi dikembalikan ke pernyataan setelah baris kode yang menimbulkan kesalahan. Pernyataan 205
206 Exit Sub sebelum label TanganiError mencegah dijalankannya error handler jika tidak terjadi kesalahan. Pernyataan On Error merupakan penanganan kesalahan tak terstruktur sehingga sulit di-debug dan dikelola. Sekarang VB.NET menyediakan penanganan kesalahan berstruktur menggunakan Try...Catch...Finally. Penanganan Exception Menggunakan Try...Catch...Finally Kode dengan struktur Try...Catch...Finally merupakan penanganan eksepsi (kejadian yang tidak diharapkan yang muncul saat kode dieksekusi) berstruktur yang baru pada VB.NET. Letakkan kode yang mungkin akan menghasilkan eksepsi dalam bagian Try, dan kemudian catch/tangkap atau temukan eksepsi. Di dalam bagian Catch, letakkan kode untuk menangani eksepsi. Sedangkan di bagian Finally akan menjalankan kode yang terjadi setelah pernyataan Catch selesai dijalankan. 3.5 Alur Percabangan (Selection) Ketika program berjalan, mungkin hanya blok kode tertentu yang diperlukan saja yang akan dijalankan dengan kondisi tertentu. Hal itu dapat diatur menggunakan alur percabangan. Ada tiga pernyataan yang berkaitan dengan alur percabangan program yaitu: If...Then, If...Then...Else dan Select Case. If...Then Pernyataan If...Then akan menguji suatu kondisi, jika True, program akan menjalankan pernyataan yang mengikutinya. Struktur If...Then bisa memiliki sintaks satu baris atau banyak baris. Sintaksnya adalah: If kondisi Then Pernyataan Untuk perintah 1 baris If Kondisi Then untuk perintah banyak baris Pernyataan End If Contoh kode dalam satu baris adalah: If Nilai >= 60 Then Hasil = Lulus Contoh kode dalam banyak baris adalah: 206
207 If snamafile = Then SaveFileAs() ExitSub End If If...Then...Else Variasi dari pernyataan If...Then adalah pernyataan If...Then...Else yang akan menjalankan sebuah blok pernyataan jika kondisi bernilai True dan blok pernyataan lainnya jika kondisi False. Sintaks pernyataan If...Then...Else sebagai berikut: If Kondisi Then BlokPernyataan1 Else End If BlokPernyataan2 VB akan menguji kondisi, jika bernilai benar maka VB akan menjalankan blok pernyataan pertama kemudian melompat pada pernyataan di bawah End If. Jika kondisi bernilai salah VB mengabaikan blok pernyataan pertama dan menjalankan blok di bawah kata kunci Else. Contoh kode: If Nilai >= 60 Then Hasil = Lulus Else Hasil = Tidak Lulus End If Variasi lain dari pernyataan If...Then...Else menggunakan ElseIf sebagai berikut: If Kondisi Then BlokPernyataan1 ElseIf Kondisi2 Then BlokPernyataan2 ElseIf Kondisi3 Then BlokPernyataan3... Else BlokPernyataanN End If 207
208 Contoh kode banyak If sebagai berikut: Dim Pesan As String Nilai = InputBox( Masukkan Nilai: ) If Nilai < 50 Then Pesan = D ElseIf Nilai < 75 Then Pesan = C ElseIf Nilai < 90 Then Pesan = B Else Pesan = A End If MsgBox(Pesan) Select Case Pernyataan Select Case mirip dengan pernyataan If...Then...Else, pada dasarnya keduanya gunanya sama, tetapi menggunakan Select Case akan mempermudah menulis dan mengelola kode. Ketika pernyataan If...Then...Else memiliki banyak blok kode, kode menjadi sulit dibaca dan diikuti. Struktur Select Case akan menguji ekspresi tunggal yang dievaluasi sekali pada bagian atas dari struktur. Hasil dari pengujian kemudian dibandingkan dengan beberapa nilai dan jika salah satu ada yang cocok, blok pernyataan yang berhubungan akan dijalankan. Berikut adalah sintaks pernyataan Select Case: Select Case Ekspresi Case Nilai1 BlokPernyataan1 Case Nilai2 BlokPernyataan2... Case Else BlokPernyataanN End Select 208
209 Contoh kode sebagai berikut: Dim Pesan As String Select Case Now.DayOfWeek Case DayOfWeek.Sabtu Or DayOfWeek.Minggu Pesan = Libur! Case DayOfWeek.Senin Pesan = I Love Monday! Case Else Pesan = Kerja lagi, kerja lagi! End Select MsgBox(Pesan) 3.6 Struktur Pengulangan (Iteration) Struktur pengulangan/looping digunakan untuk menjalankan satu atau banyak baris kode secara berulang-ulang. Jenisnya adalah Do...Loop, While...End While, For...Next dan For...Each...Next. Pernyataan Do...Loop dapat anda gunakan jika belum tahu berapa kali pengulangan blok pernyataan. Jika Anda sudah tahu berapa kalo pengulangan blok pernyataan digunakan For...Next. Do...Loop Do...Loop memungkinkan anda mengeksekusi serangkaian pernyataan berulang-ulang selama kondisi pengujian tetap benar. VB akan mengevaluasi ekspresi dan jika bernilai benar, pernyataan akan dijalankan. Ketika sampai pada bagian akhir blok, ekspresi akan diuji lagi dan jika bernilai benar maka pernyataan akan diulang. Namun jika ekspresi bernilai salah maka program akan dilanjutkan ke pernyataan setelah loop. Ada empat variari Do...Loop, dua yang pertama memiliki model yang sama. Pengualan akan dilakukan ketika kondisi bernilai benar atau sampai kondisinya bernilai benar. Keduai variasi menggunakan kata kunci While dan Until untuk menunjukkan berapa lama kondisi menjadi benar. Untuk 209
210 menjalankan blok pernyataan While kondisi bernilai benar digunakan sintaks berikut. Do While Kondisi BlokPernyataan Loop Untuk menjalankan blok pernyataan Until kondisi menjadi benar digunakan sintaks berikut ini: Do Until Kondisi BlokPernyataan Loop Ketika VB menjalankan pengulangan di atas, yang pertama dilakukan adalah menguji kondisi, jika kondisi bernilai salah pernyataan pengulangan Do While akan dilewati tetapi pengulangan Do Until akan dijalankan. Ketika sampai pernyataan Loop, VB akan menguji ekspresi lagi dan mengulang blok pernyataan dari pengulangan Do While jika ekspresi bernilai salah dan pengulangan Do until jika ekspresi bernilai benar. Jika While akan berulang selama pengujian ekspresinya benar, sedangkan Until akan berulang selama kondisi ekspresinya salah. Pada contoh kode berikut, kode yang berada di dalam pengulangan Do While akan dijalankan berulang-ulang sampai diperoleh variabel Nilai menjadi lebih besar atau sama dengan 100: Dim Nilai As Integer = 0 Do While Nilai < 100 Nilai += 5 Loop Hasilnya 5, 10, 15, 20,... sampai 100 Pada contoh yang sama jika menggunakan Do Until menjadi: Dim Nilai As Integer = 0 Do Until Nilai >= 100 Nilai += 5 Loop Hasilnya sama seperti Do While di atas Variasi lain dari pengulangan Do Loop adalah menjalankan pernyataan dulu dan menguji kondisi setelah pernyataan dijalankan. Sintaksnya: Do BlokPernyataan Loop While Kondisi 210
211 atau Do BlokPernyataan LoopUntil Kondisi Contoh kode menggunakan Loop While: Dim Nilai As Integer = 0 Do Nilai += 5 Loop While Nilai < 100 Atau menggunakan Loop Until Dim Nilai As Integer = 0 Do Nilai += 5 Loop Until Nilai >= 100 While...End While Pengulangan While...End While akan menjalankan suatu blok pernyataan selama kondisi bernilai benar. Sintaksnya sebagai berikut: While Kondisi BlokPernyataan End While Jika kondisi bernilai benar, semua blok pernyataan akan dijalankan dan ketika mencapai End While, kontrol akan dikembalikan ke pernyataan While dan menguji kembali kondisi. Jika masih benar prosesnya akan diulang. Jika kondisinya bernilai salah, program akan dilanjutkan pada pernyataan setelah End While. Contoh kode berikut untuk menghitung faktorial dari nilai. Lihat Program berikut ini; While (Nilai > 1) Jumlah *= Nilai Nilai -= 1 End While For... Next Pada pengulangan For...Next, Anda harus mengetahui berapa kali pernyataan dalam pengulangan akan dijalankan. Pengulangan For...Next menggunakan suatu variabel (disebut counter) yang nilainya akan bertambah atau 211
212 berkurang selama proses tiap pengulangan dari loop. Pengulangan For...Next memiliki sintaks sebagai berikut: For Counter = awal To Akhir [Step penambahan/pengurangan] Pernyataan Next [counter] Argumen counter, awal, akhir dan penambahan/pengurangan semuanya adalah numerik. Pengulangan akan terus dijalankan sampai mencapai nilai counter. Contoh pengulangan For...Next adalah sebagai berikut: Dim n As Integer For n = 1 To 10 Step 2 Menambahkan item ke daftar ListBox lstdata.items.add( Item ke & n) Next For Each...Next Pernyataan For Each mirip dengan pernyataan For...Next, kecuali variabel pengulangan yang diperlukan bukan numerik melainkan array dan collection. Pernyataan For Each akan mengulang untuk tiap-tiap elemen dalam array atau collection. Sintaksnya sebagai berikut: For Each elemen In grup [pernyataan] [Exit For] [Pernyataan] Next Elemen harus sama tipe datanya dengan tiap-tiap item dalam array atau collection. Grup adalah array atau collection. Langkah pengulangan secara otomatis melalui tiap-tiap elemen dalam array atau collection dan keluar dari pengulangan setelah mencapai akhir dari array atau collection. Contoh: Dim NamaHewan As String Dim Hewan() As String={ Kucing, Anjing, Monyet } Array For Each NamaHewan In Hewan tambahkan masing-masing data ke listbox LstHasil.Items.Add(NamaHewan) Next 212
213 3.7 Debugging Tracing Untuk membangun aplikasi yang baik, kita harus memberikan perhatian dalam hal mekanisme diagnosa dan troubleshooting permasalahan, sebelum dan sesudah aplikasi di-deploy. Hal ini sangat berlaku untuk aplikasi server yang kompleks. Dalam situasi seperti ini, kita tidak ingin menampilkan trace message di setiap waktu, hanya ketika ditemukan kesalahan, maka kita mendefinisikan pesan seperti Tracing, Warning dan Error. Tracing membutuhkan pendaftaran dari event source dan pembuatan pesan untuk loging. Framework.NET mengikutsertakan kelas dan tipe data yang mempermudah untuk log trace messages. Kelas-kelas untuk tracing merupakan bagian dari namespace System.Diagnostic. Kelas Trace mengeluarkan method-method yang statis. Method Write untuk log pesan tertentu, sementara method Assert akan log sebuah pesan jika kondisi tertentu tidak terpenuhi. Ada beberapa cara untuk mengontrol tracing, diantaranya, kita dapat mendefinisikan constant compilation TRACE dan mengeset nilainya menjadi True, memberitahukan compiler untuk menyimpan kode tracing di file hasil kompilasi. Hal ini dapat dilakukan dengan menggunakan parameter command-line /d:trace=true atau dengan memeriksa constant box TRACE di dialog properti project, seperti yang ditunjukkan di gambar berikut ini : Gambar Menghidupkan Tracing di Visual Studio.NET 213
214 Namespace System.Diagnostics Menyediakan kelas-kelas yang memungkinkan untuk melakukan interaksi dengan system processes, event logs, dan performave counters. Komponen EventLog menyediakan fungsionalitas untuk menulis ke event logs, membaca event log dan membuat serta menghapus event log dan event sources dari jaringan. Kelas Process menyediakan fungsionalitas untuk memonitor system processes lewat jaringan dan memulai serta menghentikan system processes lokal. Kelas PerformanceCounter memungkinkan kita untuk memonitor kinerja sistem dan kelas PerformaceCounterCategory menyediakan cara untuk membuat counter dan kategori baru. Selain itu namespace System.Diagnostic juga menyediakan kelas-kelas untuk mendebug aplikasi dan melacak eksekusi dari kode sumber. Kelas Debug Kelas ini menyediakan berbagai method serta property untuk membantu men-debug kode. Kelas ini tidak bisa diwariskan. [Visual Basic] NotInheritable Public Class Debug Apabila kita menggunakan method di kelas Debug untuk menampilkan informasi debugging dan memeriksa logic dengan assertion. Kode yang dibuat akan lebih robus tanpa mempengaruhi kinerja dan ukuran kode dari produk yang telah jadi. Kita dapat mengubah level identasi dengan menggunakan method Indent atau property IndentLevel. Untuk mengubah indent spacing, gunakan property IndentSize. Kita dapat menentukan apakah hendak flush secara otomatis keluaran buffer setelah setiap penulisan dengan mengubah property AutoFlush mnjadi true. Untuk mengubah AutoFlush dan IndentSize dari Debug, kita dapat mengubah file konfigurasi yang berkaitan dengan nama aplikasi. Berikut ini adalah format dari file konfigurasi : <configuration> 214
215 <system.diagnostics> <trace autoflush="true" indentsize="7" /> </system.diagnostics> </configuration> Contoh Berikut ini adalah contoh penggunaan Debug untuk menandai awal dan akhir dari eksekusi program. Contoh ini juga menggunakan Indent dan Unindent untuk membedakan keluaran tracing. [Visual Basic] Public Shared Function Main(args() As String) As Integer Debug.Listeners.Add(New TextWriterTraceListener(Console.Out)) Debug.AutoFlush = True Debug.Indent() Debug.WriteLine("Entering Main") Console.WriteLine("Hello World.") Debug.WriteLine("Exiting Main") Debug.Unindent() Return 0 End Function 'Main KELAS TRACE Menyediakan sekumpulan method dan property untuk membantu melacak eksekusi dari kode. Kelas ini tidak bisa diwariskan. [Visual Basic] NotInheritable Public Class Trace Kita dapat menggunakan property dan method dari kelas Trace untuk melengkapi versi release builds. Dengan instrumentasi maka kita dapat memonitor kesehatan dari aplikasi yang berjalan. Tracing dapat membantu untuk mengisolasi masalah dan memperbaikinya tanpa menggangu system yang berjalan. Kita dapat mengkustomisasi keluaran tracing dengn menambah TraceListener instances atau mengubah instances dari koleksi Listeners. Secara default, keluaran trace di emittes dengan menggunakan kelas DefaultTraceListenet. Kelas Trace menydiakan property untuk mendapat atau menentukan level Indent, IndentSize dan menentukan AutoFlush setelah 215
216 tiap penulisan. Unutk menentukan AutoFlush dan IndentSize dari Trace, kita dapat mengubah file konfigurasi yang berkaitand dengan nama aplikasi. Berikut ini adalah format dari file konfigurasi : <configuration> <system.diagnostics> <trace autoflush="false" indentsize="3" /> </system.diagnostics> </configuration> Contoh Berikut ini adalah contoh penggunaan Trace untuk menandai awal dan akhir dari eksekusi program. Contoh ini juga menggunakan Indent dan Unindent untuk membedakan keluran Tracing : [Visual Basic] Public Shared Sub Main() Trace.Listeners.Add(New TextWriterTraceListener(Console.Out)) Trace.AutoFlush = True Trace.Indent() Trace.WriteLine("Entering Main") Console.WriteLine("Hello World.") Trace.WriteLine("Exiting Main") Trace.Unindent() End Sub 'Main Runtime Debugger Runtime Debugger menyediakan alat bagi vendor maupun pengembang aplikai untuk mencari dan memperbaiki bug dalam program. Alat ini menggunakan runtime Debug API untuk jasa debugging. Sampai saat ini, kita hanyda dapat menggunakan Cordbg.exe untuk mendebug managed code; tidak ada support untuk mendebug unmanaged code. Perhatikan kode di bawah ini, gunakan baris pertama untuk memulai session Cordbg.exe dan gunakan baris kedua untuk masuk kedalam session Cordbg.exe cordbg [ProgramName[Program arguments]][optional arguments ] command [command arguments] Berikut ini adalah contoh dari penggunaan Runtime Debugger : 216
217 Memulai sesi Cordbg.exe Perintah di bawah ini memulai sesi Cordbg.exe untuk aplikasi MyApplication.exe dengan argumen a dan 2 dengan pilihan perintah sebagai berikut : mengeset nilai breakpoint di MyApplication pada baris 42; melanjutkan aplikasi dan menampilkan simbol di MyApplication.exe yang sesuai dengan string tertentu. cordbg MyApplication.exe a 2!b MyApplication.cs:42!g!x MyApplication.exe\!SomeString Menjalankan file executable dalam sesi Cordbg.exe Perintah di bawah ini dimasukkan dari sesi Cordbg.exe, menjalankan MyApplication.exe dengan argumen program a dan 2 run MyApplication.exe a 2 Menggunakan perintah print Perintah di bawah ini menunjukkan bahwa simbol (.) dapat digunakan dengan perintah print untuk menentukan variabel dalam objek print obj.var1 print obj1.obj2.var1 Apabila kelas meng-ekstend kelas lain, perintah print akan menunjukkan field baik dari kelas yang di ekstend maupun yang meng-ekstend. Sebagai contoh, jika kelas m1 memiliki field a,b dan c. Kemudian kelas m2 meng-ekstend m1 dan memiliki field d,e,w maka instance myinstance dari m2 akan menampilkan seperti dibawah ini : myinstance = <addr> <m2> a = 1 b = 2 c = 3 m2::d = 4 m2::e = 5 m2::f = 6 217
218 Kita dapat mendefinisikan variabel statis dengan menaruh awal dari nama variabel dengan nama kelas seperti contoh di bawah ini : print MyClass::StaticVar1 print System::Boolean::True Menggunakan perintah Set Ketika menggunakan perintah set, nilai yang di-assign ke variabel tertentu dapa berupa literal atau variabel lain, berikut ini adalah contoh penggunaan dari perintah set : set int1 0x2a set float set char1 'a' set bool1 true set obj1 0x set obj1 obj2 set obj1.m_length[obj1.m_height] obj3.m_length[2] 3.8 COM dan ActiveX Microsoft Component Object Model (COM) Microsoft Component Object Model (COM) adalah system yang platformindependent, terdistribusi serta berorientasi objek untuk membuat binary software component yang dapat berinteraksi. COM merupakan teknologi dasar bagi Microsoft OLE, ActiveX dan lainnya. Persyaratan bahasa untuk COM adalah kode dihasilkan di sebuah bahasa yang dapat membuat struktur pointer dan secara eksplisit atau implisit, memanggil fungsi melalui pointer. Bahasa berorientasi objek seperti Microsoft Visual C++ dan Smalltalk menyediakan mekanisme pemrograman yang menyederhanakan implementasi dari objek COM, tetapi bahasa seperti C, Pascal, Ada, Java bahkan Basic dapat menggunakan objek COM. COM mendefinisikan sifat dasar dari objek COM. Pada umumnya, objek software dibuat dari sekumpulan data dan fungsi yang memanipulasi data. Objek COM adalah satu-satu yang dapat mengakses data objek melalui satu 218
219 atau lebih fungsi. Fungsi-fungsi ini disebut interface dan fungsi dari interface disebut method. COM mengharuskan bahwa satu-satunya cara untuk mengakses method dari interface melalui pointer ke interface. ActiveX ActiveX control adalah objek OLE yang sederhana dan mendukung IUnknown interface. ActiveX control mendukung berbagai interface dengan tujuan menawarkan fungsionalitas tetapi berbagai interface tersebut dapat dipandang sebagai pilihan sedemikian hingga sebuah container sebaiknya tidak bergantung pada interface tambahan apapun yang didukung. ActiveX control hanya sebutan lain dari OLE Objek atau lebih spesifik Component Object Model (COM) objek. Dengan kata lain, sebuah control, paling tidak adalah objek COM yang mendukung interface IUnknown dan juga self-registering. Melalui QueryInterface sebuah container dapat mengatur waktu hidup dari control, juga secara dinamis menemukan fungsionalitas penuh berdasarkan interface yang ada. Hal ini akan membuat control unutuk mengimplementasikan sedikit fungsionalitas seperlunya, daripada mendukung sejumlah besar interface yang sebenarnya tidak melakukan apapun. Selain IUnknown dan self-registration, tidak ada kebutuhan lain untuk control. Ada konvensi yang harus diikuti mengenai fungsionalitas yang disediakan oleh container control dan mendukung interface. Soal Latihan 1. Berikut ini yang bukan ketentuan dari penulisan variabel adalah : a. Karakter pertama harus huruf b. Tidak boleh ada spasi c. Tidak boleh lebih dari 256 karakter d. Yang diperbolehkan adalah huruf, angka dan geris bawah 2. Kata kunci Vb.NET untuk membuat tipe data sendiri adalah : a. array 219
220 b. structure c. scope d. char 3. Kesalahan yang muncul ketika kode dikompilasi atau dijalankan merupakan kesalahan a. kesalahan run time b. kesalahan sintaks c. kesalahan logika d. kesalahan workflow Soal Praktek 4. Buatlah program untuk menghitung perkalian 2 bilangan dan menampilkan hasilnya di messagebox. 5. Buatlah program yang menampilkan angka dari 1-12 kemudian menampilkan nama bulan yang merepresentasikan angka tersebut, mis : 1 adalah Januari. 220
221 BAB IV Pemrograman Lanjut 4.1 Array Array digunakan untuk menyimpan sekumpulan data yang sejenis dalam sebuah variabel dan nilai yang dimasukkan dapat diakses menggunakan indeks. Deklarasi Array Untuk mendeklarasikan variabel array, sintakasnya mirip dengan variabel lainnya. Anda dapat menggunakan pernyatan Dim atau aksesibilitas (Public, Private, Friend dan sebagainya), perbedaannya anda harus menambahkan parantheses/tanda kurung setelah nama variabel untuk menunjukkan bahwa itu adalah array. Sebagai contoh untuk mendeklarasikan array yang memiliki 10 data gunakan sintaks berikut: Dim Nomor (9) As Integer Array di atas memiliki 10 data dengan indeks 0 sampai 9. Jadi perhitungan indeks pada array dimulai dengan 0. Batas bawah array dapat dilihat menggunakan fungsi LBound(), lowe bound dan nilainya pasti 0. Sedangkan batas atas array dapat dilihat menggunakan fungsi UBound(), upper bound. Anda dapat memasukkan nilai ke elemen array seperti kode berikut: Dim Primata(3) As String Primata(0) = Orang Utan Primata(1) = Gorilla Primata(2) = Monyet Primata(3) = Babbon Semua elemen dalam array harus memiliki tipe data yang sama. Tetapi jika tipe datanya Objek, tiap-tiap elemen array dapat memiliki tipe data yang berbeda seperti string, angka, date dan sebagainya. Anda dapat melakukan inisialisasi variabel array pada baris yang sama di mana array dideklarasikan. Sintaksnya: Dim NamaArray() As Tipe = {item1, item2,..., itemn} 221
222 Contohnya: Dim NamaTeman As String = { Rosa, Yohana, Yulia } Untuk mengurutkan array, anda dapat menggunakan perintah Array.Sort seperti contoh berikut: Dim Motro(3) As String Motor (0) = Suzuki Motor (1) = Yamaha Motor (2) = Kawasaki Motor (3) = Beijing Mengurutkan array Array.Sort(motro) Urutannya menjadi Beijing, Kawasaki, Suzuki, Yamaha Array Multidimensi Kadangkala kita memerlukan memasukkan data pada array multidimensi seperti memasukkan data Nama dan Umur, Produk, Harga dan sebagainya. Keuntungan menggunakan array mutlidimensi adalah array akan lebih mudah dikelola. Tabel berikut membandingkan array satu dimensi dengan dua dimensi. Perbandingan array satu dimensi dengan multidimensi 0 Amelia 17 Amelia 17 1 Juki 25 Juki 25 2 Shepia 18 Shepia 18 3 Cecep 32 Cecep 32 4 Ramona 42 Ramona 42 Dua array satu dimensi Satu array dua dimensi Array dua dimensi memiliki dua pengenal.pertama adalah baris (urutan Nama dalam array). Dan pengenal kedua adalah kolom (Nama atau Umur). Contoh penerapannya: NamaUmur(3, 0) Hasilnya Nama keempat yaitu: Cecep NamaUmur(2, 1) Hasilnya umur ketiga yaitu: 18 Untuk melakukan inisialisasi array multidimensi pada pernyataan tunggal,anda harus menyisipkan koma di dalam kurung seperti contoh berikut: 222
223 Dim Angka(,) As Integer {{1, 2, 3}, {11, 12, 13}, _ {21, 22, 23}} Angka(0, 2) Hasil 3 Angka(2, 1) Hasil 22 Array Dinamik Jika anda belum tahu berapa jumlah elemen array, Anda dapat mendeklarasikan array sebagai array dinamik. Untuk membuat deklarasi array dinamik, kosongkan pada dimensi array contoh: Dim ArrayDinamik() As Integer Berikutnya dalam program jika Anda tahu berapa banyak elemen yang dimasukkan dalam array gunakan pernyataan Redim atau redimension dengan ukuran aktual. Contoh: Redim ArrayDinamik (9) Array dinamik dapat juga diterapkan pada array multidimensi seperti contoh berikut: Dim Matriks() As Double... Kode Redim Matriks(12, 12, 12) Kelemahan penggunaan Redim adalah tiap kali perintah dipanggil, semua nilai pada elemen sebelumnya akan hilang. Untuk mengatasinyavb membuat perintah Preserve untuk menambah elemen array tanpa menghapus nilai sebelumnya. Contoh: Dim Aktris() As String = { Bela Saphira, Dian Sastro, _ Tamara B., Kris Dajanti, Dian Nitami } menambah Aktris! Redim Preserve Aktris(6) Aktris(5) = Wulan Guritno Aktris(6) = Lulu Tobing 4.2 Prosedur dan Subrutin Prosedur Untuk mempermudah mengembangkan program, aplikasi yang besar dapat dipecah menjadi segmen kode yang lebih kecil atau disebut prosedur. 223
224 Contohnya adalah penanganan event mouse seperti, mouse over, klik, klik ganda dan klik mouse kanan. Masing-masing tugas ditampilkan pada prosedur yang terpisah yang ditulis dan diuji secara terpisah satu dengan lainnya. Prosedur juga digunakan untuk penerapan tugas yang diulang-ulang seperti perhitungan yang sering digunakan. Ada dua tipe prosedur yang akan dibahas dalam bagian ini yaitu subrutin dan fungsi. Subrutin dan fungsi merupakan bagian dari kode yang akan mengerjakan tugas tertentu dan dapat dipanggil dari berbagai bagian aplikasi untuk melakukan operasi yang sama, biasanya pada data yang berbeda. Perbedaan keduanya kalau fungsi return value/mengembalikan nilai sedangkan subrutin tidak. Pendekatan divide et empera aplikasi yang besar menjadi kode yang lebih kecil disebut pemrograman modular. Subrutin Subrutin adalah blok pernyataan untuk mengerjakan suatu tugas yang didefinisikan dengan baik. Blok pernyataan diletakkan di antara pernyataan Sub...End Sub. Subrutin dapat dipanggil melalui namanya. Contoh subrutin berikut akan menampilkan suatu pesan pada kotak pesan. Sub Pesan() MsgBox( Belajar VB.NET, siapa takut! ) End Sub Kebanyakan prosedur disertai dengan argumen. Subrutin TampilkanTgl() berikut akan menampilkan tanggal sekarang pada kotak pesan. Jika anda ingin menampilkan tanggal lainnnya Anda dapat mem-passing-kan (meneruskan) argumen dengan nilai yang berbeda: Sub TampilkanTgl(ByVal TglLahir As Date) MsgBox(TglLahir) End Sub TglLahir adalah variabel yang menangani tanggal yang akan ditampilkan dengan tipe Date. Kata kunci ByVal artinya subrutin tidak dapat mengubah nilai dari variabel TglLahir. 224
225 Untuk memanggil subrutin TglLahir ketik kode berikut di dalam program anda: TampilkanTgl() Ditampilkan tanggal sistem dalam kotak pesan Untuk menampilkan tanggal lain, Anda dapat memasukkan nilainya: TampilkanTgl(#12/23/1963#) 4.3 Fungsi Fungsi mirip dengan subrutin, bedanya fungsi menghasilkan return value/mengembalikan nilai. Suatu fungsi adalah blok kode yang dapat dipanggil untuk mengerjakan suatu tugas tertentu dan menghasilkan nilai kembalian. Fungsi berikut akan mengubah derajat menjadi radian. Math.PI adalah fungsi built-in/terpasang bawaan VB.NET. Private Function CRad(ByVal deg) Konversi derajat ke radian Return = deg * (Math.PI/180) End Function Untuk memanggil fungsi gunakan nama fungsi seperti contoh berikut: lblhasil.text = Math.Sin(CRad(lblHasil.Text)) Passing Parameter Perbedaan VB.NET dengan VB terdahulu adalah bagaimana parameter dipassing-kan (diteruskan) ke fungsi. Pada VB terdahulu default-nya adalah passing parameter melalui referensi (ByRef). Sedangkan di VB.NET defaultnya passing parameter melalui nilai/value (ByVal) artinya semua perubahan yang dibuat ke nilai parameter hanya efektif dalam fungsi yang memanggil. Nilai asli sekarang dalam fungsi yang dipanggil tidak terpengaruh. Sedangkan pada passing parameter melalui referensi, jika parameter di dalam fungsi berubah, perubahan juga dicerminkan di luar fungsi. 225
226 Fungsi Built-in VB.NET Berikut adalah daftar fungsi built-in bawaan VB.NET yang dikelompokkan berdasarkan kategori. Untuk melihat semua fungsi VB.NET termasuk argumen dan contoh, Anda dapat menggunakan file Help online. Fungsi Identifikasi Tipe Data Fungsi untu k mengidentifikasi tipe data. Jenisnya: Tabel : Fungsi Identifikasi Tipe Data Nama Fungsi Penjelasan IsArray(variabel) Nilai kembaliannya True jika argumen adalah array IsDate(ekspresi) Nilai kembaliannya True jika ekspresi merupakan date yang valid IsDBNull(ekspresi) Nilai kembaliannya True jika ekspresi adalah DBNull. Nilai DBNull adalah nilai nonvalid dan berbeda dengan nilai Nothing IsNothing(ekspresi) Nilai kembaliannya adalah Boolean yang menunjukkan apakah ekspresi mewakili suatu variabel objek yang sekarang belum diberi nilai IsNumeric(ekspresi) Nilai kembaliannya adalah True jika eskpresi adalah angka yang valid. Fungsi ini digunakan untuk mencek validitas dari string yang berisi data numerik IsReference(ekspresi) Nilai kembaliannya adalah Boolean yang menunjukkan apakah ekspresi mewakili variabel objek TypeName Nilai kembaliannya adalah string yang menunjukkan (nama_variabel) tipe variabel Fungsi Konversi Tipe Variabel Fungsi ini akan mengonversi tipe data hasil suatu operasi ke tipe data lainnya. Jenisnya: Tabel : Fungsi Konversi Tipe Data Fungsi Konversi argumen ke tipe data CBool(ekspresi) Boolean (True/False) CByte(ekspresi) Byte 226
227 CChar(ekspresi) CDate(ekspresi) CDec(ekspresi) CDbl(ekspresi) CInt(ekspresi) CLng(ekspresi) CObj(ekspresi) CShort(ekspresi) CSng(ekspresi) Sstr(ekspresi) Ctype(ekspresi, tipe) Char Date Decimal Double Integer Long Object Short Single String Tipe yang ditentukan Fungsi Matematika Untuk menggunakan fungsi matematika Anda harus mengimpor class Math atau menggunakan awalan nama Math. Misalnya Math.Sin, Math.Abs, dan sebagainya. Tabel : Fungsi Matematika Fungsi Penjelasan Abs(ekspresi) Mendapatkan nilai absolut dari suatu argumen. Abs(-1) hasilnya 1 Atan(ekspresi) Mendapatkan nilai arctangen pada suatu sudut. Nilai kembaliannya dalam radian Cos(ekspresi) Mendapatkan nilai cosinus pada suatu sudut. Nilai ekspresi harus dalam radian Exp(ekspresi) Mendapatkan bilangan eksponensial dari sebuah bilangan Int(ekspresi) Mendapatkan nilai integer. Int(7.98) hasilnya 7 Round(ekspresi {,jumlahdesimal}) Untuk membulatkan angka sampai desimal tertentu. Round(3.53, 1) hasilnya 3.5 Log(ekspresi) Mendapatkan bilangan logaritma natural basis e dari eskpresi angka Log10(ekspresi) Mendapatkan bilangan logaritma basis 10 dari ekspresi angka. Log 100 hasilnya 2 Hex(ekspresi) Mendapatkan nilai hexadecimal dari ekspresi angka 227
228 desimal. Hex(47) hasilnya 2F Oct(ekspresi) Mendapatkan nilai octal dari ekspresi angka desimal. Oct(47) hasilnya 57 Sin(ekspresi) Mendapatkan nilai sinus pada suatu sudut. Nilai ekspresi harus dalam radian Sqrt(ekspresi) Mendapatkan nilai akar kuadrat dari suatu ekspresi Tan(ekspresi) Mendapatkan nilai tangen pada suatu sudut. Nilai ekspresi harus dalam radian Catatan: Untuk mengkonversi nilai radian menjadi derajat, kalikan dengan (180/pi). Sebaliknya untuk konversi derajad menjadi radian kalikan dengan (pi/180). Fungsi Tanggal dan Waktu Fungsi untuk memanipulasi nilai tanggal dan waktu. Penjelasan dan contoh latihan menggunakan Regional Setting Indonesia. Pada tanggal dan waktu karakter yang digunakan untuk argumen pengaturannya sebagai berikut: Tabel : Fungsi Tanggal dan Waktu Karakter Penjelasan / Pemisah tanggal : Pemisah waktu d Menampilkan hari sebagai angka (1-31) dd Menampilkan hari sebagai angka dengan didahului 0 (01-31) ddd Menampilkan nama hari dengan singkatan(mng-sab) dddd Menampilkan nama hari secara penuh(minggu-sabtu) w Menampilkan hari dalam minggu sebagai angka (1 untuk Minggu sampai 7 untuk Sabtu) ww Menampilkan minggu dalam satu tahun (1-54) M Menampilkan bulan sebagai angka (1-12) MM Menampilkan bulan dengan angka dengan didahului 0 (01-12) MMM Menampilkan nama bulan dengan singkatan (Jan-Des) MMMM Menampilkan nama bulan secara penuh (Januari-Desember) q Menampilkan kuarter/seperempat tahun sebagai angka (1-4) y Menampilkan hari dalam 1 tahun sebagai angka (1-366) 228
229 yy Menampilkan tahun sebagai angka 2 digit (00-99) yyyy Menampilkan tahun sebagai angka 4 digit ( ) h Menampilkan jam sebagai angka (0-12) hh Menampilkan jam sebagai angka dengan didahului 0 (00-12) H Menampilkan jam sebagai angka dengan format 24 jam (0-24) HH Menampilkan jam sebagai angka dengan format 24 jam dengan didahului 0 (00-24) m Menampilkan menit tanpa didahului 0 (0-59) mm Menampilkan menit dengan didahului 0 (00-59) s Menampilkan detik tanpa didahului 0 (0-59) ss Menampilkan detik dengan didahului 0 (00-59) AM/PM Menggunakan format 12 jam dan menampilkan indikasi jam AM/PM Fungsi Random Generator VB.NET tidak hanya mendukung generator/pembangkit angka acak (random generator) seperti VB 6, tetapi juga menyediakan class untuk menghasilkan angka acak yaitu class System.Random. Rnd({Benih}), Randomize Fungsi Rnd( ) nilai kembaliannya adalah angka pseudo-random dalam kisaran 0 sampai 1. Argumen opsional yang disebut benih, digunakan sebagai titik awal menghitung dalam membangkitkan angka acak. Angka acak yang dihasilkan fungsi Rnd( ) disebut pseudo-random karena urutan angka acak yang dihasilkan VB.NET selalu sama. Ini bukan bug tetapi merupakan fitur VB yang biasanya digunakan untuk men-debug (mencari kesalahan pemrograman) aplikasi dengan menggunakan angka acak. Jika urutan angkanya berubah-ubah, Anda tidak bisa mengatasi masalah yang timbul. Untuk mengubahnya biar betul-betul acak tambahkan pernyataan Randomize pada awal kode. Pernyataan Randomize akan melakukan inisialisasi 229
230 pembangkit angka acak berdasarkan nilai dari Timer komputer dan menghasilkan angka acak yang akan berbeda tiap kali aplikasi dijalankan. Untuk menghasilkan angka acak dengan kisaran tertentu gunakan formula berikut: AngkaAcak = Int(Rnd() * (tertinggi terendah + 1) + terendah) Misalnya saja dalam aplikasi games permainan kartu diperlukan angka acak antara 1 sampai 13 maka kodenya adalah: AngkaAcakKartu = Int(Rnd() * ) 4.3 Pemrograman Berorientasi Objek Konsep Object Oriented Programming (OOP), pemrograman berorientasi objek pertama kali diperkenalkan oleh Ole Johan Dhal dan Kristen Nygaard dari Universitas Oslo, Norwegia pada tahun 1966 dalam suatu jurnal kertas kerja dengan judul SIMULA An Algol Based Simulation Language. Jadi, OOP bukanlah hal yang baru. Masalahnya adalah OOP tidak begitu populer pada VB6 dan versi-versi sebelumnya. Hanya sedikit pengembang VB6 yang membuat module class atau menerapkan pemrograman berorientasi objek pada aplikasi mereka. Sekarang dalam VB.NET, OOP bukanlah pilihat tetapi suatu kebutuhan. Setiap potongan kode yang anda buat, apakah berupa: class, enumerasi, interface dan lain-lain, walaupun terlihat seperti prosedur yang berdiri sendiri dalam modul VB.NET, sebenarnya merupakan implementasi dari OOP. Definisi OOP Ada dua metode dalam mendesain dan membuat konstruksi perangkat lunak yaitu pemrograman terstruktur dan pemrograman berorientasi objek. Pemrograman berorientasi objek (OOP) adalah metode pemrograman dimana pengembang tidak hanya mendefinisikan tipe data dari struktur data tetapi juga tipe dari operasi (fungsi) yang dapat diaplikasikan ke struktur data. 230
231 Pada cara ini struktur data menjadi objek yang memiliki data dan fungsi. Sebagai tambahan, pengembang dapat membuat relasi antara suatu objek dengan lainnya. Contohnya suatu objek dapat mewarisi karakteristik dari objek lainnya. Salah satu keunggulan OOP dibandingkan teknik pemrograman terstruktur adalah OOP memungkinkan pengembang untuk membuat modul yang tidak perlu berubah ketika suatu tipe objek yang baru ditambahkan. Pengembang dapat membuat suatu objek baru yang mewarisi beberapa fitur dari objek yang sudah ada. Hal ini membuat program yang berorientasi objek mudah dimodifikasi. Suatu bahasa pemrograman dikatakan mendukung secara penuh OOP jika memiliki semua fitur berikut ini: Abstraction/abstarksi. Abstraksi merupakan kemampuan suatu bahasa pemrograman untuk mengubah suatu konsep menjadi representasi abstrak dari konsep dalam suatu program. Contohnya objek pelanggan adalah representasi abstrak dari pelanggan dalam dunia nyata. Suatu objek RecordSet merupakan representasi abstrak dari sekumpulan data. Encapsulation/pembungkusan. Merupakan konsep untuk memisahkan interface (kumpulan dari method, property atau event yang saling berhubungan) dengan implementasinya. Encapsulation merupakan kemampuan untuk menyembunyikan implementasi aktual dari behavior(perilaku) objek sehingga Anda dapat mengubah implementasinya belakangan tanpa mempengaruhi kode client. Polymorphism/banyak bentuk. Memungkinkan pengembang memakai method dengan nama yang sama pada class-class yang berbeda dan memungkinkan method yang tepat dieksekusi berdasarkan konteks yang memanggilnya. Inheritance/pewarisan. Kemampuan untuk membuat class turunan yang mewarisi property dan method dari class induk (base class). Encapsulation, Polymorphism, dan Inheritance merupakan ciri-ciri utama pemrograman berorientasi objek. 231
232 Visual Basic versi 6 belum dapat dikatakan sebagai bahasa pemrograman berorientasi objek secara penuh karena walaupun sudah dapat membuat class, melakukan encapsulation dan polymorphism tetapi belum dapat melakukan inheritance. Keuntungan Menggunakan OOP Ada beberapa keuntungan menggunakan OOP yaitu: Maintainability (kemampuan untuk mudah dikelola). Aplikasi perangkat lunka modern cenderung membesar sehingga akan sulit untuk mengelolanya. Error baru sering muncul begitu Anda selesai memperbaiki error lainnya. Hal ini disebabkan adanya saling ketergantungan antara bagian yang berbeda dari program yang besar. Ketika anda mengubah suatu bagian dari program, Anda mungkin tidak tahu akibatnya pada bagian program lainnya. Solusinya adalah modularitas (memecah program yang besar menjadi modul-modul kecil). Modularitas inherent/melekat dalam OOP karena class-class merupakan modul. Class-class yang memiliki fungsionalitas sama akan disimpan pada namespace yang sama. Anda dapat menambah suatu class dalam namespace tanpa mempengaruhi members namespace lainnya. Extensibility (kemampuan untuk dapat diperluas). Anda dapat memperluas class yang ada dengan menambah method atau data, atau mengubah behavior/perilaku dari method. Extensibility berarti Anda masih dapat menggunakan class induk dan memperluasnya sesuai keinginan. Extensibility akan menghemat waktu karena Anda tidak perlu membuat kode dari awal. Reusability (kemampuan untuk dapat digunakan kembali). Reusability artinya kode yang sudah ditulis sebelumnya (class) dapat digunakan kembali oleh pembuat kode atau orang lin yang memerlukan fungsionalitas yang sama yang disediakan oleh kode. Objek, Class dan Field Class adalah blueprint/cetak biru atau template atau spesifikasi dari objek. Dengan kata lain class merupakan representasi abstrak dari objek, sedangkan objek adalah representasi nyata atau instance (perwujudan) dari class. 232
233 Class merupakan unit dasar pemrograman berorientasi objek. Class dapat bersi property, field, method, dan event dari objek. Gabungan property, field, methods, dan event umumnya disebut members dari class. Field and property berisi informasi atau atribut yang terdapat dalam suatu objek. Field mirip dengan variabel, yang dapat dibaca dan diset secara langsung. Property dapat dibaca dan diset seperti field, tetapi implementasinya menggunakan prosedur property Get dan property Set. Objek juga memiliki method yaitu tindakan yang dilakukan oleh objek. Sedangkan event adalah pemberitahuan yang diterima objek atau dikirimkan ke objek atau aplikasi lain. Event akan memicu suatu aksi. Suatu class dalam VB.Net dideklarasikan menggunakan kata kunci class. Contohnya: Class Pekerja [pernyataan] berupa method, field, property, event End Class Class dapat memiliki members seperti property, field, event, dan method. Behavior dari objek disebut sebagai method. Method dapat berbentuk subrutin atau fungsi. Pada contoh berikut class Pekerja memiliki Field UpahPerJam dan UangMakan, juga memiliki subrutin (method) UpahDibayar. Class Pekerja Dim UpahPerJam As Decimal = 3500 Dim UangMakan As Decimal = 3000 Public Sub UpahDibayar( ) Kode End Sub End Class Property Property merupakan informasi yang dapat disimpan dalam suatu objek. Property dapat dibuat menggunakan variabel public atau method property. Ketika suatu property dideklarasikan menggunakan variabel public, maka 233
234 property tersebut menunjukkan dirinya sebagai field. Cara ini tidak memiliki kemampuan untuk mengontrol atau melakukan validasi pembacaan dan penulisan nilai property. Method property memperbolehkan Anda untuk mengontrol operasi baca dan tulis dari property dalam suatu class. Potongan kode berikut menunjukkan bagaimana method property JamKerja() dibuat dalam class pekerja. Public Class Pekerja Variabel untuk memasukkan jam kerja Private indjamkerja As Double Property yang membolehkan fungsionalitas Get dan Set pada variabel indjamkerja Public Property JamKerja( ) As Double Get Return indjamkerja End Get Set (ByVal Value As Double) indjamkerja = Value End Set End Property End Class Mendeklarasikan property mirip dengan mendeklarasikan suatu fungsi, kecuali dengan menambahkan kata kunci Property. Tipe nilai kembalian pada contoh yaitu Double, menyediakan akses untuk memanggil dan mengatur nilai dari member indjamkerja melalui implementasi Get dan Set. Dalam deklarasi property, Get untuk mendefinisikan semua property yang membolehkan akses ke nilai data. Sedangkan Set untuk mendefinisikan semua property yang membolehkan mengubah nilai data. Constructor Constructor adalah bagian dari OOP yang harus dipanggil terlebih dahulu sebelum kode lainnya dalam class. Constructor adalah prosedur yang mengontrol inisialisasi/pemberian nilai awal objek baru. 234
235 Untuk membuat Constructor, Anda tinggal menambahkan prosedur Public dengan nama New( ). Contoh kode berikut menampilkan subrutin New( ) dari suatu class: Public Sub New (ByVal NamaFile As String) Selalu panggil Mybase.New( ) MyBase.New( ) Me.strNamaFile = NamaFile Read( ) End Sub Ketika Anda membuat contructor, baris pertama akan berisi prosedur yang memanggil constructor lainnya, baik berasal dari class yang sama maupun dari base class. Hal ini untuk memastikan bahwa semua objek dalam hierarki inheritance/pewarisan akan diinisialisasi dengan benar. Terlihat digunakan kata kunci MyBase untuk mengakses base class dari class yang berisi kata kunci. Pada kode di atas, constructor menugaskan argumen NamaFile ke member strnamafile dan memanggil subrutin Read( ) untuk inisialisasi lebih lanjut. Destructor Kapan pun objek dihancurkan atau dihapus dari memori, objek destructor akan dipanggil. Destructor akan memberi objek kesempatan terakhir untuk membersihkan lokasi memori di mana ia berada atau melakukan tugas lainnya yang harus diselesaikan sebelum objek dihancurkan. Seperti constructor, destructor didefinisikan sebagai subrutin dalam definisi class. VB.NET menggunakan dua method destructor yaitu: Subrutin Finalize( ) yang dipanggil secara otomatis oleh.net Framework jika didefinisikan dalam class objek. Subrutin Dispose( ) yang tidak dipanggil secara otomatis oleh.net Framework, karena itu aplikasi harus memanggil subrutin ini sebelum menghancurkan objek. 235
236 Suatu class akan menggunakan method Finalize( ), hanya jika objek harus menjalankan beberapa kode untuk membersihkan memori. Biasanya finalize didefinisikan sebagai Protected sehingga class lainnya tidak dapat memanggilnya secara langsung. Contoh penggunaan destructor Finalize( ) sebagai berikut: Overrides Protected Sub Finalize( ) Class untuk bersih-bersih memori Memanggil class my base Finalize( ) MyBase.Finalize( ) End Sub Jika objek akan menghapus suatu point tertentu, Anda dapat menggunakan subrutin Dispose( ). Contoh penggunaan destructor Dispose( ) sebagai berikut: Overrides Protected Sub Dispose(ByVal IsDisposing As Boolean) Class untuk bersih-bersih memori Memanggil class my base Dispose( ) MyBase.Dispose(IsDisposing) End Sub Interface Interface mirip dengan class, yang memiliki serangkaian property, method dan event. Bedanya dengan class, interface tidak memiliki implementasi sedangkan class dapat diimplementasikan. Perlunya membuat dan menggunakan interface dalam aplikasi adalah sebagai future proof dari kode Anda. Future proof artinya menyiapkan pengunaan di masa mendatang untuk menghindari masalah yang mungkin timbul. Jika semua kode Anda berdasarkan serangkaian class, dan terjadi perubahan pada definisi class induk seperti parameter, kode yang menggunakan class tersebut akan bermasalah. Di sisi lain, interface tidak dapat diubah setelah dipublikasikan, tetapi implementasi dari interface dapat berubah. 236
237 Untuk membuat interface gunakan pernyataan Interface, prosesnya mirip dengan mendefinisikan class tapi tanpa implementasi. Kode berikut menunjukkan definisi interface ienkripsi untuk interface kompresi dan dekompresi data: Interface ienkripsi Function Enkrip(ByVal NamaFile As String) As Boolean Function Dekrip(ByVal NamaFile As String) As Boolean End Interface Kedua fungsi Enkrip( ) dan Dekrip( ) tidak memiliki implementasi. Untuk membuat implementasi dari interface ikompresi, Anda dapat membuat class baru menggunakan kata kunci Implements seperti kode berikut: Class KompresiFile Implements ienkripsi Function Enkrip(ByaVal NamaFile As String) As Boolean Kode untuk enkripsi file End Function Function Dekrip(ByVal NamaFile As String) As Boolean Kode untuk dekripsi file End Function End Class Demo OOP Program ini akan membahas dan membuat contoh aplikasi dari konsep: inheritance, base class dan subclass, polymorphism menggunakan method overloading dan method overriding, shadowing, dan multi-level inheritance. Sebagai contoh, kita gunakan pengelolaan SDM (sumber daya manusia) pada suatu pabrik. Semua orang yang bekerja dalam pabrik tersebut disebut Karyawan. Karyawan dapat dibedakan menjadi dua: Pekerja/buruh yang menerima upah harian dan Pegawai yaitu manajer dan pegawai kantor lainnya yang menerima gaji bulanan. 237
238 Untuk menggambarkan model hubungan karyawan, pekerja dan pegawai akan dipakai standar notasi yang disebut UML (Universal Modeling Language). UML dapat digunakan untuk membuat diagram relasi antara class, objek, dan bagian dari konsep berorientasi objek lainnya. Hubungan karyawan, pekerja dan pegawai dapat dilihat pada diagram UML sebagai berikut: Karyawan Pekerja Pegawai Tiap kotak di atas mewakili class yaitu: Class Karyawan, Class Pekerja dan Class Pegawai. Panah ke atas menggambarkan class Pekerja dan Class Pegawai merupakan inherits/turunan dari class Karyawan (kelas induk). Inheritance Inheritance adalah kemampuan untuk membuat class turunan yang mewarisi property dan method dari class induk. Ketika kita membuat suatu class menggunakan inheritance, kita akan mewariskan behavior dan data dari class induknya (base class). Class yang kita buat menggunakan pewarisan dari class induk disebut subclass atau derived class. Proses pewarisan dari base class ke subclass disebut deriving. Membuat Base Class Langkah untuk membuat program sebagai berikut: 238
239 Jalankan VB.NET dan di jendela New Project, pilih template dengan Windows Application dan diberi Name dengan Demo OOP. Tambahkan class baru dengan cara klik menu Project > Add Class. Beri nama Karyawan.vb. Akan ditampilkan kode berikut: Public Class Karyawan End Class Sekarang kita menambah method, property, dan event pada class tersebut. Tambahkan kode berikut: Public Class Karyawan Private indnama As String Private indalamat As String Private indtgllahir As Date Public Property Nama( ) As String Get Return indnama End Get Set (ByVal Value As String) indnama = Value End Set End Property Public Property Alamat( ) As String Get Return indalamat End Get Set (ByVal Value As String) indalamat = Value End Set End Property Public Property TglLahir( ) As String Get Return indtgllahir End Get Set (ByVal Value As String) 239
240 indtgllahir = Value End Set End Property End Class Membuat Sub Class Untuk implementasinya inheritance kita perlu membuat class baru. Klik menu Project > Add Class. Beri nama class baru dengan Pekerja.vb. Selanjutnya ketik kode berikut: Public Class Pekerja Inherits Karyawan Private indjamkerja As Double Private indupahperjam As Double Public Property JamKerja( ) As Double Get Return indjamkerja End Get Set (ByVal Value As Double) indjamkerja = Value End Set End Property Public Property UpahPerJam( ) As Double Get Return indupahperjam End Get Set (ByVal Value As Double) indupahperjam = Value End Set End Property End Class Agar class Pekerja menjadi subclass dari class karyawan (base class) kita menambahkan kata kunci inherits seperti contoh kode berikut: 240
241 Public Class Pekerja Inherits Karyawan Diagram UML berikut akan menggambarkan hubungan class Karyawan sebagai base class dengan class Pekerja sebagai subclass: Karyawan -indnama:string -indalamat:string -indtgllahir:date +Nama():String +Alamat():String +TglLahir():Date Pekerja -indjamkerja:double -indupahperjam:double +JamKerja():Double +UpahPerJam():Double Dalam diagram UML sebuah kotak mewakili class. Bagian atas berisi nama class. Di bagian tengah terdapat daftar variabel atau atribut dari class dengan scope/jangkauan ditandai dengan jika Private dan + jika Public. Garis yang menggambarkan Pekerja kembali ke Karyawan melalui panah atas dalam UML menunjukkan inheritance/pewarisan. Garis itu menunjukkan bahwa class Pekerja juga memiliki semua fungsionalitas dan interface dari class Karyawan.Artinya objek yang dibuat dalam class Pekerja tidak hanya memiliki method property JamKerja dan UpahPerJam, tetapi juga Nama, Alamat, dan TglLahir. 241
242 Untuk menguji, tampilkan Form1 kemudian tambahkan label seperti gambar berikut dan kotrol lainnya, atur properti dan ketik kode berikut: Gambar Program Demo saat Dijalankan Tabel : Properti program Demo OOP Objek Properti Pengaturan Form1 Text Demo OOP TextBox1 Text Name txtnama TextBox2 Text Name txtalamat TextBox3 Text Name txttgllahir TextBox4 Text Name txtjamkerja TextBox5 Text Name txtupahperjam TextBox6 Text 242
243 Button1 Name Text Name txtupah OK btnok Kode: Private Sub btnok_click(byval sender As System.Object, ByVal _ e As System.EventArgs) Handles btnok.click Dim ObjPekerja As New Pekerja Dim Upah As Double With ObjPekerja.Nama = Sumanto.Alamat = Jalan Kanibal 13.TglLahir = #1/1/1978#.JamKerja = 7.UpahPerJam = 2500 txtnama.text =.Nama txtalamat.text =.Alamat txttgllahir.text = Format(.TglLahir, Short Date ) txtjamkerja.text =.JamKerja txtupahperjam.text= Format(.UpahPerJam, Rp.0,00 ) Upah =.JamKerja *.UpahPerJam txtupah.text = Format(Upah, Rp.0,00 ) End With End Sub Polymorphism Polymorphism adalah pemakaian method dengan nama yang sama pada class-class yang berbeda dan memungkinkan method yang tepat dieksekusi berdasarkan konteks yang memanggilnya. Polymorphism dapat diimplementasikan menggunakan method Overloading dan method Overriding. 243
244 Kita dapat memperluas fungsionalitas base class dengan menambahkan method pada subclass yang memiliki nama method dan property yang sama dari base class tetapi memiliki daftar parameter yang berbeda. Metode Overloading Overloading adalah pemakaian nema metode yang sama tetapi dengan daftar parameter yang berbeda. Method overloading dari base class dilakukan menggunakan kata kunci Overloads. Untuk contoh, class Karyawan memiliki property Nama. Pekerja selain memiliki nama, mungkin juga memiliki nama panggilan dan nama lengkap. Untuk memperluas Nama, kita ubah class Pekerja dengan menambahkan method overloading untuk property Nama. Buka file Pekerja.vb dan tambahkan enum berikut sebelum deklarasi class. Public Enum JenisNama Lengkap = 1 Panggilan = 2 End Enum Public Class Pekerja Kita dapat menambah Overloads pada property Nama di dalam class Pekerja: Public Class Pekerja Inherits Karyawan Private indjamkerja As Double Private indupahperjam As Double Private indkolnama As New Hashtable Public Overloads Property Nama(ByVal Type As _ JenisNama) As String Get Return indkolnama(type) End Get Set (ByVal Value As String) 244
245 indkolnama.add(type, Value) End Set End Property...kode lainnya Property Nama sebenarnya merupakan array property yang membolehkan kita memasukkan banyak nilai melalui property yang sama. Dalam contoh kita memasukkan nilai melalui objek Hashtable yang diindeks menggunakan nilai Enum yang sudah dibuat sebelumnya. Property Nama pada subclass memiliki nama yang sama pada base class, tetapi memiliki daftar parameter yang berbeda menggunakan overloading. Untuk menguji perubahan pada kode yang sudah dilakukan tampilkan Form1. Perbesar tinggi form, kemudian sisipkan dua baris kosong bawah label Nama dengan cara memilih beberapa kontrol sekaligus menggunakan shift dan klik lalu geser ke bawah. Berikutnya tambahkan label dengan Text Nama Lengkap dan textbox dengan nama txtnamalengkap. Dibawahnya tambahkan label dengan Text Nama Panggilan dan textbox dengan nama txtnamapanggilan. Gambar Program Demo OOP saat dijalanlkan setelah dimodifikasi Edit kode sehingga sesuai dengan kode berikut: 245
246 Private Sub btnok_click(byval sender As System.Object, ByVal _ e As System.EventArgs) Handles btnok.click Dim ObjPekerja As New Pekerja Dim Upah As Double With ObjPekerja.Nama = Sumanto.Nama(JenisNama.Lengkap) = Sumanto Katijo.Nama(JenisNama.Panggilan) = Ijo.Alamat = Jalan Kanibal 13.TglLahir = #1/1/1978#.JamKerja = 7.UpahPerJam = 2500 txtnama.text =.Nama txtnamalengkap.text =.Nama(JenisNama.Lengkap) txtnamapanggilan.text =.Nama(JenisNama.Panggilan) txtalamat.text =.Alamat txttgllahir.text = Format(.TglLahir, Short Date ) txtjamkerja.text =.JamKerja txtupahperjam.text= Format(.UpahPerJam, Rp.0,00 ) Upah =.JamKerja *.UpahPerJam txtupah.text = Format(Upah, Rp.0,00 ) End With End Sub Metode Overriding Suatu subclass dapat mendefinisikan ulang method yang ada di base class. Prosesnya disebut Overriding. Menggunakan kata kunci Overridable di base class dan Overrides dalam subclass, kita dapat membuat implementasi baru dari method yang inherited/diwarisi dari base class. Perbedaan Overriding dengan Overloading adalah pada method Overload, kita akan menambahkan method baru dengan nama yang sama tetapi memiliki daftar parameter yang berbeda, sedangkan pada method override, kita mengganti method asli dengan method yang baru. 246
247 Pada latihan berikut kita akan mengganti method TglLahir dari class Karyawan (base class) dalam subclass Pekerja dengan mengatur nilai usia pekerja harus sama atau lebih dari 17 tahun. Buka file Karyawan.vb dan ubah judul pada Property TglLahir dari: Public Property TglLahir( ) As Date menjadi Public Overridable Property TglLahir( ) As Date Dengan mengubah kata kunci Overridable ke deklarasi method, menunjukkan bahwa kita membolehkan sembarang subclass untuk override/menindih behavior dari method tersebut. Buka file Pekerja.vb dan tambahkan property TglLahir berikut: Public Class Pekerja Inherits Karyawan Private indjamkerja As Double Private indupahperjam As Double Private indkolnama As New Hashtable Private indtgllahir As Date Public Overrides Property TglLahir() As Date Get Return indtgllahir(type) End Get Set (ByVal Value As Date) If DateDiff(DateInternal.Year, Value,_ Now( )) >= 17 Then indtgllahir = Value Else MsgBox( Pekerja harus berusia sama _ atau & di atas 17 tahun! ) End IF End Set End Property...kode lainnya 247
248 Untuk menguji, tampilkan Form1. Buka jendela kode dan ubah bagian kode berikut, perhatikan apa yang terjadi ketika aplikasi dijalankan:.tgllahir = #1/1/1978# menjadi.tgllahir = #1/1/1998# Shadowing Ketika dua elemen pemrograman memiliki nama sama, satu di antaranya dapat disembunyikan atau menjadi shadow (bayangan) dari lainnya. Pada situasi itu shadowed element (element yang tersembunyi) tidak memungkinkan untuk menjadi referensi. Suatu elemen dapat menjadi shadow dari elemen lainnya melalui dua cara yang berbeda yaitu: Shadowing Melalui Scope (Ruang Lingkup). Ada kemungkinan dua elemen pemrorgaman yang terdapat dalam modul, class atau structure yang sama, memiliki nama yang sama tetapi scope yang berbeda. Elemen dengan scope tersempit akan memberikan bayangan pada elemen dengan scope yang lebih luas. Shadowing Melalui Inheritance. Jika elemen pada subclass yang inherited/diwarisi dari base class didefinisikan ulang, maka elemen hasil definisi (subclass) akan memberikan bayangan pada elemen di base class. Catatan Jangan bingung antara shadowing dengan overriding. Keduanya digunakan ketika suatu subclass inherits/diwarisi dari base class, dan keduanya melakukan definisi ulang sebuah deklarasi elemen ke lainnya, tetapi ada perbedaan antara keduanya. Tujuan Shadowing adalah memberi perlindungan untuk modifikasi lebih lanjut terhadap base class dari member yang dibuat dalam subclass. Sedangkan tujuan Overriding adalah menerapkan polymorphism dengan mendefinisikan implementasi yang berbeda dari sebuah prosedur atau property yang sama calling-sequence-nya. Calling sequence berisi type elemen (fungsi, sub atau property), nama, daftar argumen dan nilai balik. Anda tidak dapat meng-override prosedur dengan property atau sebaliknya. Juga Anda tidak dapat meng-override prosedur Fungsi dengan prosedur Sub atau sebaliknya. 248
249 Multi-Level Inheritance Pekerja pabrik dapat dikelompokkan menjadi dua yaitu pekerja tetap dan pekerja tak tetap. Pada musim tertentu misalnya menjelang perayaan hari besar keagamaan, pabrik banyak menerima pesanan yang jumlahnya melebihi kapasitas produksi harian. Untuk memenuhi pesanan, pabrik akan dijalankan 24 jam dalam sehari. Hal ini menyebabkan diperlukannya tambahan pekerja yang akan diisi oleh pekerja tak tetap. Hak pekerja tetap berbeda dengan hak pekerja tak tetap. Misalnya pekerja tetap selain menerima upah berdasarkan jam kerja juga akan menerima upah tambahan berupa uang makan dan uang transport. Pekerja tak tetap tidak menerima upah tambahan tersebut. Untuk mengakomodasikan pengelempokan baru dari pekerja tersebut kita akan menambahkan class PekerjaTetap dan class PekerjaTakTetap seperti pada diagaram UML berikut: Karyawan Pekerja Pekerja Tetap PekerjaTakTetap 249
250 Anda dapat melihat class Pekerja merupakan subclass dari class Karyawan. Class PekerjaTetap dan class PekerjaTakTetap merupakan subclass dari Pekerja. Struktur ini merupakan contoh model multi-level inheritance. Tambahkan class baru dengan nama PekerjaTetap.vb kemudian tambahkan property berikut: Public Class PekerjaTetap Inherits Pekerja Private indupahtambahan As Double Public Property UpahTambahan() As Double Get Return indupahtambahan End Get Set(ByVal Value As Double) indupahtambahan = Value End Set End Property End Class Untuk melihat bagaimana perubahan ini dapat bekerja, ubah Form1 dengan menyisipkan baris label Upah Tambahan dan textbox txtupahtambahan di antara Upah Per Jam dan Upah yang diterima seperti berikut: Sekarang ubah kode untuk event klik tombol OK sebagai berikut: Dim ObjPekerja As PekerjaTetap = New PekerjaTetap Dim Upah As Double With ObjPekerja.Nama = Sumanto.Nama(JenisNama.Lengkap) = Sumanto Katijo.Nama(JenisNama.Panggilan) = Ijo.Alamat = Jalan Kanibal 13.TglLahir = #1/1/1978#.JamKerja = 7 250
251 .UpahPerJam = 2500.UpahTambahan = 3500 txtnama.text =.Nama txtnamalengkap.text =.Nama(JenisNama.Lengkap) txtnamapanggilan.text =.Nama(JenisNama.Panggilan) txtalamat.text =.Alamat txttgllahir.text = Format(.TglLahir, Short Date ) txtjamkerja.text =.JamKerja txtupahperjam.text= Format(.UpahPerJam, Rp.0,00 ) txtupahtambahan.text= Format(.UpahTambahan, Rp.0,00 ) Upah = (.JamKerja *.UpahPerJam) +.UpahTambahan txtupah.text = Format(Upah, Rp.0,00 ) End With Gambar Demo OOP 251
252 4.4 ADO.NET Untuk mendukung berbagai aksi yang dapat dilakukan pada basis data Microsoft SQL Server, framework.net menyediakan kelas SqlCommand. Untuk menggunakannya, kita dapat mendeklarasi pointer ke SqlCommand menggunakan salah satu konstruktor. Apabila kita ingin studio mendeklarasi variabel SqlCommand, setelah membuat aplikasi Window Form, di Toolbox bagian Data section, kita dapat menge-click tombol SqlCommand dan menge-click form. Objek SqlCommand akan ditambahkan ke form dan kita dapat melakukan konfigurasi secara visual dengan properti window : Gambar SqlCommand Kelas SqlCommand dilengkapi dengan 4 konstruktor. Konstruktor default memungkinkan kita untuk menginisiasi command tanpa menentukan aksi yang dapat diambil. Aksi yang akan dilakukan dibuat sebagai string statement. Aksi ini direpresentasikan dengan properti SqlCommand.CommandText yang bertipe String. Jika kita akan menggunakan konstruktor default, kita dapat membuat string yang akan menjalankan aksi tersebut. Setelah string siap, kita dapat menambahkan properti dari CommandText. Hal ini dapat dilakukan dengan cara seperti di bawah ini: Imports System.Data 252
253 Imports System.Data.SqlClient Public Class Form1 Inherits System.Windows.Forms.Form... ' Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cmdsql As SqlCommand = New SqlCommand Dim strcommandtoexecute As String = "Blah Blah Blah" cmdsql.commandtext = strcommandtoexecute End Sub End Class Setelah membuat aksi yang akan dilakukan, selanjutnya kita harus menentukan connection yang akan menjalankannya. Untuk melakukan hal ini, pertama kali buat objek SqlConnection. Untuk menyediakan SqlConnection dengan command, kelas SqlCommand dilengkapi dengan properti Connection yang bertipe SqlConnection. Setelah membuat objek SqlConnection, untuk menyediakannya dengan command, kita dapat menugaskan objek tersebut dengan properti SqlCommand.Connection. Daripada mendeklarasi sebuah variabel SqlCommand dan command teks secara terpisah, sebagai alternatif, kita dapat mendefinisikan command teks ketika mendeklarasi variabel SqlCommand. Untuk melakukan hal ini, kita dapat menggunakan konstruktor kedua dari kelas SqlCommand. Sintaks dari konstruktor ini adalah : Public Sub New(ByVal cmdtext As String) Setelah menggunakan konstruktor, kembali kita harus menentukan connection yang akan menjalankan aksi tersebut. Untuk melakukan hal ini, kita dapat menugaskan objek SqlConnection dengan properti Connection dari SqlCommand. Daripada menugaskan SqlConnection ke properti SqlCommand.Connection, kita dapat menentukan connection ketika mendeklarasi variabel SqlCOmmand, kita dapat menggunakan konstruktor ketiga, yang memiliki sintaks seperti dibawah ini : Public Sub New(ByVal cmdtext As String, ByVal connection As SqlConnection) Argumen kedua dari konstruktor ini dibentuk connection yang akan didefinisikan. Jika kita tidak menginisiasi aksi dengan menggunakan 253
254 konstruktor default dari kelas SqlCommand, kita menugaskan objek SqlConnection ke properti Connection dari kelas SqlCommand. Eksekusi Command Setelah membuat koneksi dan menentukan command yang akan dijalankan, kita dapat mengeksekusi command dengan method ExecuteNonQuery(), berikut ini adalah sintaksnya : Public Overridable Function ExecuteNonQuery() As Integer Implements _ IDbCommand.ExecuteNonQuery Command dan DataReader Objek ADO.NET Command memiliki kedekatan dengan ADO. Objek Command merepresentasikan sebuah string yang dapat dieksekusi melalui Connection. Sedangkan DataReader merepresentasikan cara tercepat tetapi kurang flexible untuk mendapat data dari basis data. Berikut ini adalah contoh kode dari penggunaan kelas DataReader dari sebuah form : Private Sub btncommand_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btncommand.click Dim cnn As New SqlClient.SqlConnection() Dim cmd As New SqlClient.SqlCommand() Dim dr As SqlClient.SqlDataReader Try lboresults.items.clear() cnn.connectionstring = Data Source=SKYROCKET; & Initial Catalog=Northwind; & Integrated Security=SSPI: cnn.open() cmd = cnn.createcommand cmd.commandtext = SELECT CustomerID, & CompanyName FROM Customers dr = cmd.executereader While dr.read lboresults.items.add(dr.getstring(0) & & dr.getstring(1)) End While 254
255 End Sub dr.close() cnn.close() Catch ex As Exception MsgBox( Error: & ex.source & : & ex.message, MsgBoxStyle.OKOnly, btndatareader ) End Try Objek DataSet Berbeda dengan objek data provider ADO.NET, hanya adaa satu objek DataSet yang diimplementasikan di System.Data namespace. Objek ini menyediakan cara yang abstrak dan terpisah untuk memanipulasi hampir segala data. DataSet mengandung berbagai objek yang diantaranya adalah : DataSet Objek ini merupakan representasi dari data di memori yang dirancang untuk mudah berpindah antara berbagai komponen dari aplikai.net. DataTable Objek ini merepresentasikan sebuah table dalam DataSet. Sebuah DataSet bisa memiliki berbagai DataTable. DataRelation Objek ini merepresentasikan relasi antara dua DataTable. Setiap DataTable memiliki relasi anak (ChildRelations) dan orang tua (ParentRelations) yang mengandung DataRelation. DataRow Objek ini menyediakan akses data secara baris demi baris yang ada di DataTable. DataColumn Objek ini merepresentasikan sebuah kolom di DataTable. DataView Objek ini merepresentasikan sebuah view data yang dimiliki DataTable. Constraint Objek ini terdiri dari dua jenis: objek ForeignKeyConstraint yang merepresentasikan foreign key dan objek UniqueContraint yang merepresentasikan contraint yang unik. 255
256 Memanipulasi Data Kunci untuk memungkinkan adanya komunikasi dua arah DataSet dan sumber data adalah dengan objek Command. Berikut ini adalah Command yang digunakan : SelectCommand Dipanggil oleh method DataAdapter.Fill untuk meload data ke DataSet UpdateCommand Dipanggil oleh DataAdapter.Update untuk menyimpan perubahan [ada baris di DataSet InsertCommand Dipanggil oleh DataAdapter.Update untuk menyimpan baris baru di DataSet DeleteCommand Dipanggil oleh DataAdapter.Update untuk menghapus baris di DataSet Berikut ini adalah contoh penggunaan DataAdapter dengan keempat Command di atas : Dim mda As New SqlClient.SqlDataAdapter() Dim mds As New DataSet() Private Sub frmupdate_load(byval sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cnn As SqlClient.SqlConnection = New SqlClient.SqlConnection("Data Source=SKYROCKET;" & "Initial Catalog=Northwind;Integrated Security=SSPI") Dim cmdselect As New SqlClient.SqlCommand() Dim cmdupdate As New SqlClient.SqlCommand() Dim cmdinsert As New SqlClient.SqlCommand() Dim cmddelete As New SqlClient.SqlCommand() Dim prm As SqlClient.SqlParameter Try cmdselect = cnn.createcommand cmdselect.commandtext = "SELECT CustomerID, "& "CompanyName, ContactName FROM Customers" mda.selectcommand = cmdselect 256
257 cmdupdate = cnn.createcommand cmdupdate.commandtext = "UPDATE Customers " & "SET CompanyName " & "ContactName "& "WHERE CustomerID prm = cmdupdate.parameters.add("@companyname", SqlDbType.NVarchar, 40, "CompanyName") prm = cmdupdate.parameters.add("@contactname", SqlDbType.NVarchar, 30, "ContactName") prm = cmdupdate.parameters.add("@customerid", SqlDbType.NVarchar, 5, "CustomerID") prm.sourceversion = DataRowVersion.Original mda.updatecommand = cmdupdate cmddelete = cnn.createcommand cmddelete.commandtext = "DELETE FROM Customers " & "WHERE CustomerID prm = cmddelete.parameters.add("@customerid", SqlDbType.NVarchar, 5, "CustomerID") prm.sourceversion = DataRowVersion.Original mda.deletecommand = cmddelete cmdinsert = cnn.createcommand cmdinsert.commandtext = "INSERT INTO Customers " & "(CustomerID, CompanyName, ContactName) " prm = cmdinsert.parameters.add("@companyname", SqlDbType.NVarchar, 40, "CompanyName") prm = cmdinsert.parameters.add("@contactname", SqlDbType.NVarchar, 30, "ContactName") prm = cmdinsert.parameters.add("@customerid", SqlDbType.NVarchar, 5, "CustomerID") mda.insertcommand = cmdinsert mda.fill(mds, "Customers") dgmain.datasource = mds dgmain.datamember = "Customers" Catch ex As Exception MsgBox("Error: "& ex.source & ":" & ex.message, MsgBoxStyle.OKOnly, "btnpopulatedatabase") End Try End Sub Private Sub btnsaveupdates_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnsaveupdates.click Try mda.update(mds, "Customer") 257
258 End Sub Catch ex As Exception MsgBox("Error: "& ex.source & ":" & ex.message, MsgBoxStyle.OKOnly, "frmupdate_load") End Try Soal Latihan 1. Kemampuan dari kelas turunan untuk mewarisi properti dari method kelas induk disebut : a. Encapsulation b. Polymorphism c. Inheritance d. Abstraction 2. Informasi yang dapat disimpan dalam objek disebut : a. class b. properti c. field d. method 3. Proses pendefinisian ulang dari method yang ada di base class disebut: a. Overiding b. Overloading c. Encupsulation d. Abstraction Soal Praktek 4. Buatlah program untuk menghitung saldo setelah ditambahkan bunga dan tampilkan hasilnya di layar. Perhitungan saldo dilakukan pada sebuah fungsi. 5. Buatlah sebuah program yang mengimplementasikan inheritance. 258
259 Visual Basic 259
260 BAB I VISUAL BASIC Tujuan Instruksional Umum : 1. Siswa dapat menyebutkan Lingkungan Pemrograman Visual Basic 2. Siswa dapat menjelaskan konsep form Tujuan Instruksional Khusus : 1. Siswa dapat membuat program dengan Visual Basic 2. Siswa dapat bekerja dengan kontrol 3. Siswa dapat membuat fungsi, modul dan prosedur 4. Siswa mengerti struktur perulangan dan keputusan Materi yang ada di bab ini telah memenuhi : TIK.PR Membuat algoritma pemrograman lanjut. TIK.PR Membuat struktur data. TIK.PR Menggunakan spesifikasi program. TIK.PR Menulis program dasar. TIK.PR Menulis program lanjut. TIK.PR Mengoperasikan pemrograman terstruktur. TIK.PR Mengoperasikan bahasa pemrograman berorientasi objek. TIK.PR Membuat program aplikasi berbasis VB dan VB.NET 260
261 Lingkungan Pemrograman 1.1 Menjalankan Visual Basic Untuk menjalankan program Visual Basic ikuti langkah-langkah berikut ini: 1. Pada Miicrosoft Windows, klik tombol Start, pilih Programs, lalu pilih folder Microsoft Visual Basic 6.0. Icon-icon yang terdapat pada folder Microsoft Visual Basic 6.0 akan ditampilkan. 2. klik Icon program Microsoft Visual Basic 6.0 Kotak dialog New Project muncul. Kotal dialog ini meminta Anda mengetikkan proyek pemrograman yang ingin dibuat. Gambar Kotak Dialog New Project 3. Klik Open untuk menerima proyek baru yang default, yaitu aplikasi standar Visual Basic. Sebuah proyek baru akan dibuka pada lingkungan pemrograman Visual Basic, bersamaan dengan beberapa jendela dan tool yang ditampilkan pada gambar di bawah ini 261
262 Gambar Jendela Baru Lingkungan pemrograman Visual Basic mengandung sarana prmorgaman yang dapat membantu Anda membangun program Visual Basic. Baris menu menyediakan akses kepada sebagian besar perintah yang mengendalikan lingkungan pemrograman ini. Menu dan perintah sama fungsinya seperti pada program-program berbasis Windows lainnya, dan Anda bisa mengaksesnya menggunakan keyboard atau mouse. Di bawah baris menu terdapat toolbar, yaitu sekumpulan tombol yang berfungsi sebagai tombol cepat untuk menjalankan perintah dan mengendalikan lingkungan pemrograman Visual Basic. Untuk mengaktif-kan tombol pada toolbar, klik pada tombol tersebut menggunakan mouse. Di bagian bawah layar terdapat taskbar Windows. Anda bisa menggunakan taskbar ini untuk berpindah antara berbagai komponen Visual Basic dan untuk mengaktifkan program Windows lainnya. Sarana lain yang ada pada Visual Basic adalah toolbox, jendela Project Container, jendela Form, jendela Project, jendela Immediate, jendela 262
263 Properties, dan jendela Form Layout. Ukuran dan bentuk semua jendela ini bergantung pada konfigurasi sistem Anda. Form Antarmuka Pada Visual Basic, form adalah jendela yang bisa diubah-ubah untuk membuat antarmuka program Anda. Form bisa mengandung menu, tombol, kotak daftar, baris penggulung, dan item-item lain yang bisa Anda lihat pada program berbasis Windows lainnya. Pada saat Anda menjalankan lingkungan pemrograman Visual Basic, sebuah form default yang bernama Form1 akan muncul. Pada form ini terdapat grid standar (sekumpulan titik-titik yang letaknya teratur) yang bisa Anda gunakan untuk membuat dan mensejajarkan elemen-elemen antarmuka Anda. Anda bisa mengatur ukuran form menggunakan mouse; form bisa memiliki ukuran sebesar layar. Anda bisa menambahkan form-form tambahan dengan mengklik perintah Add Form pada menu Project. Jika sebagian form tertutup tool pemrograman, Anda bisa menutup atau mengubah ukuran tool pemrograman tersebut agar ukurannya lebih kecil, atau Anda bisa mengklik baris judul form dan menggeser form sampai Anda bisa melihat bagian-bagian yang tersembunyi. Memindahkan form pada layar lingkungan pemrograman tidak mempengaruhi lokasi form pada layar sewaktu dijalankan. Karakteristik ini dikendalikan oleh jendela Form Layout. Untuk mengatur titik awal untuk form baru, geser form preview kecil yang terdapat pada jendela Form Layout pada lokasi yang Anda inginkan. Toolbox Untuk menambahkan elemen antarmuka program ke dalam form digunakan tool atau kontrol yang terdapat pada toolbox. Untuk membuka toolbox, klik tombol Toolbox pada toolbar. Toolbox biasanya terletak di sisi sebelah kiri layar. Toolbox mengandung kontrol-kontrol yang bisa digunakan untuk menambah gambar, label, tombol, kotak daftar, baris penggulung, menu, serta bentuk-bentuk geometris pada antarmuka. Setiap kontrol yang ditambahkan ke dalam form akan menjadi objek, atau elemen antarmuka yang bisa diprogram. 263
264 Toolbox juga mengandung kontrol-kontrol yang bisa digunakan untuk membuat objek yang bisa melakukan operasi di balik layar pada program Visual Basic. Objek ini melakukan pekerjaan yang bermanfaat tetapi tidak nampak oleh pemakai apabila program dijalankan. Objek ini di antaranya adalah objek untuk memanipulasi informasi pada basis data, objek untuk bekerja dengan aplikasi berbasis Windows, dan objek untuk menelusuri waktu program Anda. Jendela Properties Jendela Properties digunakan untuk mengubah karakteristik atau setting properti dari elemen yang terdapat pada form. Setting properti adalah kualitas objek-objek yang terdapat pada antarmuka. Anda bisa mengubah setting properti dengan mengunakan jendela Properties sewaktu membuat antarmuka atau Anda bisa menambahkan kode program melalui jendela Code untuk mengubah satu atau lebih setting saat program berjalan. Jendela Properties mengandung kotak daftar drop-down yang menampilkan semua elemen antarmuka (objek) pada form. Jendela Properties juga menampilkan setting-setting properti yang bisa diubah untuk setiap objek. Gambar Jendela Properties Jendela Project Program Visual Basic terbuat dari beberapa file yang disatukan atau dicompile pada waktu program tersebut sudah lengkap. Pada waktu Anda 264
265 membuat proyek, Anda perlu berpindah-indah antara komponen-komponen ini. Untuk membantu, perancang Visual Basic telah menyertakan jendel Project pada lingkungan pemorgaman. Jendela Project berisi semua file yang digunakan pada proses pemrograman dan menyediakan akses ke file tersebut menggunakan dua tombol khusus: View Code dan View Object. Apabila Anda menambah dan menyimpan atau menghapus file-file individual dari proyek menggunakan perintah pada menu File dan Project, perubahan ini akan direfleksikan pada jendela Project. Gambar Jendela Project 1.2 Konsep Berikut ini adalah daftar dan penjelasan beberapa terminologi pada buku ini: o Control Sebuah control (kontrol) adalah tool yang Anda gunakan untuk membuat objek pada form Visual Basic. Anda memilih kontrol dari toolbox dan menggunakannya untuk menggambar objek-objek pada form menggunakan mouse. Kontrol digunakan untuk membuat elemen antarmuka seperti misalnya tombol perintah, kotak image, dan kotak list. o Object Objek adalah nama elemen antramuka yang Anda buat pada form Visual Basic menggunakan kontrol toolbox. Anda bisa memindahkan, mengubah ukurat, dan mengatur objek menggunakan setting properti. Objek memiliki inherent functionality, yaitu setiap objek mengetahui cara 265
266 o o o o beroperasi dan merespon pada kondisi tertentu. Anda bisa memprogram objek-objek Visual Basic menggunakan event procedure buatan untuk situasi yang berbeda pada program. Pada Visual Basic, form juga merupakan sebuah objek. Properti Properti adalah nilai atau karakteristik yang dimiliki oleh objek Visual Basic, seperti misalnya Caption atau ForeColor. Properti bisa diset pada saat desain menggunakan jendela Properties atau pada saat program berjalan menggunakan kode program. Pada kode program, format untuk menset properti adalah sebagai berikut: Object.Property = Value Dimana Object adalah nama Objek yang diubah, Property adalah karakteristik yang ingin diubah, dan Value adalah setting properti yang baru. Sebagai contoh: Command1.Caption = Hello Bisa digunakan pada kode program untuk menset properti Caption dari objek Command1 menjadi Hello. Event Procedure Event procedure adalah satu blok kode program yang dieksekusi apabila ada objek yang dimanipulasi pada program. Sebagai contoh, apabila tombol perintah pertama pada program diklik, event procedure Command1_Click akan dijalankan. Event procedure biasanya memeriksa dan menset properti serta menggunakan pernyataan program lain untuk melakukan pekerjaan program. Program Statement Program statement atau pernyataan program adalah kata kunci pada kode program yang melakukan pekerjaan program. Pernyataan program pada Visual Basic menciptakan ruang penyimpanan untuk data, membuka file, melakukan perhitungan, dan melakukan beberapa tugas penting lainnya. Variabel Variabel adalah kontainer khusus yang digunakan untuk menyimpan data sementara pada program. Programmer menciptakan variabel untuk menyimpan hasil perhitungan, membuat nama file, memproses input, dan seterusnya. Angka, nama, dan nilai properti bisa disimpan dalam variabel. 266
267 o Metode Metode adalah pernyataan khusus yang melakukan aksi atau pelayanan untuk objek tertentu pada program. Pada kode program, notasi untuk menggunakan metode adalah sebagai berikut: Object.Method = Value dimana Object adalah nama dari objek yang ingin Anda ubah, Method adalah perintah yang ingin digunakan untuk mengubah objek, dan Value adalah argumen tambahan yang bisa digunakan oleh metode. Sebagai contoh, pernyataan berikut ini: List1.AddItem = Check menggunakan metode AddItem untuk meletakkan kata Check dalam kotak list List1. Soal Latihan 1. File yang digunakan pada proses pemrograman dan dapat diakses dengan tombol "View Code" dan "View Object" terletak di: a. Jendela Properties b. Jendela Project c. Toolbox d. Form Antarmuka 2. Berikut ini adalah sarana-sarana yang ada di lingkungan pemrograman Visual Basic kecuali : a. Toolbox b. Jendela Project c. Jendela Form d. Control 3. Tool yang digunakan untuk membuat objek pada form disebut : a. Toolbox b. Cotrol c. Variabel d. Method 267
268 4. Yang dimaksud dengan inherent functionality adalah : a. Objek mengetahui cara beroperasi dan merespon pada kondisi tertentu b. Variabel mengetahui cara beroperasi dan merespon pada kondisi tertentu c. Method mengetahui cara beroperasi dan merespon pada kondisi tertentu d. Prosedur mengetahui cara beroperasi dan merespon pada kondisi tertentu 5. Caption dan ForeColor merupakan contoh dari : a. Event Procedure b. Object c. Control d. Property 268
269 BAB II Form dan Kontrol 2.1 Dasar-dasar Penggunaan Kontrol (Program Hello World ) Program Hello World merupakan program pendek yang biasa digunakan pada latihan-latihan bahasa pemrograman. Program ini mendemonstrasikan utilitas yang bisa dibuat dan dijalankan pada bahasa pemrograman tertentu. Membuat Program Hello World 1. Jalankan Visual Basic, lalu klik tombol Open untuk membuat aplikasi standar Visual Basic 2. Klik kontrol TextBox pada toolbox 3. Pindahkan pointer mouse ke tengah-tengah form. Perhatikan pointer berubah menjadi bentuk silang jika diletakkan di atas form. Objek kotak teks atau text box digunakan untuk menampilkan teks pada form atau untuk menerima input dari pemakai pada saat program Visual Basic dijalankan. Cara kerja text box bergantung kepada propertinya dan bagaimana Anda menuliskan text box pada kode program. Pada program sederhana ini, objek text box akan digunakan untuk menampilkan pesan Hello, World! apabila Anda mengklik tombol perintah pada form. Gambar Objek Text Box 4. Klik kontrol CommandButton pada toolbox. 5. Pindahkan pointer mouse di bawah textbox pada form, lalu gambarlah sebuah tombol perintah. Form Anda akan tampak seperti gambar berikut: 269
270 Gambar Tombol Perintah Objek tombol perintah atau command button digunakan untuk menerima input dari pemakai. Apabila pemakai mengklik tombol perintah, tombol tersebut akan melakukan tindakan dengan segera. Tombol perintah yang umum digunakan adalah tombol OK, dimana pemakai mengkliknya untuk menerima serangkaian pilihan dan menunjukkan bahwa ia siap untuk melanjutkan. Tombol lainnya adalah tombol Cancel yang digunakan untuk membatalkan pilihan, dan tombol Quit untuk keluar dari program. 6. Ubahlah properti berikut ini untuk objek text box dan command button menggunakan jendela Properties. Setting (Empty) berarti Anda harus menghapus setting yang ada dan membiarkannya kosong. Setting perlu Anda ketik ditampilkan dalam tanda kutip. Tabel : Perubahan Properti dan Setting Kontrol Properti Setting Text1 Text (Empty) Command1 Caption OK 7. Klik ganda tombol perintah OK, lalu ketikkan program berikut di antara Private Sub dan End Sub pada jendela Code. Text1.Text = Hello, World! Kode yang Anda ketikkan akan mengubah properti Text pada text box menjadi Hello, World! apabila pemakai mengklik tombol perintah pada saat program dijalankan. 8. Gunakan jendela Form Layout untuk mengatur posisi form pada saat program dijalankan. (Jika jendela Form Layout tidak nampak, klik perintah Form Layout Window dari menu View) Secara default, jendela Form Layput memposisikan form di pojok kiri atas layar. Tetapi Anda bisa mengaturnya dengan menggeser icon form kecil 270
271 yang terdapat dalam jendela Form Layout. Sarana ini sangat bermanfaat pada program yang menampilkan lebih dari satu jendela. Untuk menjalankan dan menyimpan program tersebut: 1. Klik tombol Start pada toolbar. Program Hello World dijalankan dalam lingkungan pemrograman Visual Basic. 2. Klik tombol perintah OK Program akan menampilkan salam Hello, World! dalam kotak teks seperti gambar berikut ini: Gambar Hasil Keluaran Program 3. Klik tombol End pada toolbar ( ) untuk menghentikan program. Anda juga dapat mengklik tombol Close pada form program untuk menghentikan program. 4. Pada menu File, klik perintah Save Project As, kemudian tentukan nama file, kemudian tekan tombol Save. 2.2 Menu dan Kotak Dialog Menu Editor adalah sebuah sarana grafis yang berfungsi mengelola menu pada program Anda. Dengan Menu Editor, Anda bisa menambah menu baru, mengubah dan mengatur urut-urutan menu yang sudah ada, serta menghapus menu lama. Menu Editor juga bisa digunakan untuk menambahkan efek-efek khusus ke dalam menu, seperti misalnya tombol akses, tanda cek, serta tombol cepat. Setelah menambahkan menu ke dalam 271
272 form, Anda bisa menggunakan event procedure untuk memproses perintah menu. Membuat Menu 1. Jalankan Visual Basic lalu buka proyek standar baru. Jika lingkungan pemrograman sudah berjalan, pada menu File, klik New Project untuk membuka proyek standar yang baru. 2. Klik tombol Menu Editor pada toolbar. Menu Editor muncul seperti gambar di bawah ini; Gambar Menu Editor Menu Editor menampilkan perintah untuk membuat menu dalam kotak dialog. Anda bisa menentukan judul untuk menu (nama menu yang tampak pada layar) pada kotak teks Caption. Anda menentukan nama untuk menu (nama yang digunakan pada kode program) pada kotak teks Name. Dua hal ini adalah setting yang paling penting untuk menu. Setting tambahan seperti Index, HelpContextID, Shortcut, serta Checked adalah plihan saja. Apabila Anda mengklik tombol Next pada kotak dialog Menu Editor, Menu Editor akan membersihkan kotak dialog agar Anda bisa mengetikkan item menu berikut. Kotak daftar menu di bagian bawah kotak dialog 272
273 menampilkan item-item menu yang Anda buat dan menampilkan struktur keseluruhan dari menu tersebut. 3. Ketikkan Clock pada kotak teks Caption, lalu tekan Tab. Kata Clock dijadikan caption atau judul menu pertama Anda, dan kursor berpindah ke kotak teks Name. Saat Anda mengetikkan caption menu, caption tersebut juga muncul pada kotak daftar menu di bagaian bawah. 4. Ketikkan mnuclock pada kotak teks Name. Kata mnuclock dijadikan sebagai nama menu Anda pada program. Sesuai aturan,awalan mnu digunakan untuk mengenali objek menu pada kode program. 5. Klik tombol Next untuk menambahkan judul menu Clock pada program Anda. Menu Clock ditambahkan pada baris menu, dan Menu Editor membersihkan kotak dialog agar Anda bisa menambahkan item menu berikutnya. Judul menu masih muncul pada kotak daftar menu di bagian bawah kotak dialog. Sewaktu Anda membuat menu, setiap item menu akan ditambahkan ke dalam kotak daftar menu agar Anda bisa melihat struktur menu tersebut. 6. Ketikkan Date pada kotak teks Caption, tekan Tab, lalu ketikkan mnudateitem pada kotak teks Name. Perintah Date muncul pada kotak daftar menu. Karena Anda ingin membuat Date sebagai perintah bukan sebagai judul menu, gunakan aturan penamaan yang lain. Tambahkan kata Item di akhir nama pada kotak teks Name. Dengan begini Anda bisa membedakan perintah menu dengan judul menu pada jendela Code. 7. Dengan menerangi item Date pada kotak daftar menu, klik tombol panah kanan pada Menu Editor. Perintah Date berpindah satu indentasi (empat spasi) ke kanan pada kotak daftar menu, yang menunjukkan bahwa item tersebut merupakan perintah menu. Posisi item pada kotak daftar menentukan apakah ia merupakan judul menu (rata kiri), perintah menu (satu indentasi), judul submenu (dua indentasi), atau perintah submenu (tiga indentasi). Tombol panah kanan pada Menu Editor digunakan untuk memindahkan item ke kanan, dan tombol panah kiri digunakan untuk memindahkan item ke kiri. 8. Klik tombol Next, ketikkan Time, tekan Tab, lalu ketikkan mnutimeitem. 273
274 Perintah Time muncl pada kotak daftar menu seperti gambar di bawah ini. Gambar Pembuatan Menu 9. Klik OK untuk menutup Menu Editor. Menu Editor ditutup dan form Anda muncul pada lingkungan pemrograman dengan sebuah baris menu dan sebuah menu Clock. Kini Anda akan membuka menu Clock untuk melihat isinya. 10. Klik Menu Clock Perintah Date dan Time muncul 11. Klik pada form menutup menu Clock. Perintah Menu Sesuai aturan, setiap judul menu dan perintah menu pada aplikasi untuk Microsoft Windows memiliki aturan huruf kapital. File dan Edit adalah merupakan dua nama menu pertama pada baris menu, sedangkan Help yang terakhir. Nama-nama menu lainnya yang umum diantaranya, seperti View, Format, dan Window. Apapun menu dan perintah yang Anda gunakan pada aplikasi, cobalah agar tetap jelas dan konsisten. Menu dan perintah haruslah mudah digunakan dan sedapat mungkin mirip dengan aplikasi berbasis Windows lainnya. Gunakan panduan berikut untuk membuat menu: o Gunakan caption atau judul yang singkat, yang hanya mengandung satu atau dua kata saja. o Berikan tombol akses yang unik untuk setiap item menu. Gunakan huruf pertama dari menu jika mungkin. 274
275 o o o Jika perintah menu digunakan sebagai tombol on/off, letakkan tanda cek di sebelah item menu tersebut apabila ia sedang aktif. Anda bisa menambahkan tanda cek dengan mengklik kotak cek Checked pada Menu Editor atau dengan menset properti Checked menjadi True. Letakkan tanda elipsis (...) sesudah perintah menu untuk meminta masukan lebih banyak dari pemakai sebelum melaksanakan perintah menu. Gunakan aturan penamaan menu seperti awalan mnu dan akhiran Item sewaktu membuat nama menu. Menambahkan Tombol Akses pada Perintah Menu Visual Basic memudahkan Anda menambahkan tombol akses untuk menu dan perintah menu. Tombol akses untuk perintah menu adalah tombol keyboard yang bisa ditekan oleh pemakai untuk mengaktifkan suatu perintah. Apabila pemakai membuka sebuah menu pada saat program dijalankan, tombol akses untuk perintah menu tersebut akan ditunjukkan dengan huruf bergaris bawah pada nama perintahnya. Untuk menambahkan tombol akses pada item menu, Anda perlu menjalankan Menu Editor dan memberi awalan huruf pada judul menu dengan simbol ampersand (&). Setelah diberi simbol ini, program Anda akan mendukung tombol akses. 2.3 Menggunakan Objek Common Dialog Objek common dialog berguna untuk menampilkan lima kotak dialog standar pada program Anda. Masing-masing kotak dialog ini bisa ditampilkan dari dalam satu objek common dialog menggunakan metode objek common dialog yang berhubungan dengan kotak tersebut. Anda mengendalikan isi dari kotak dialog dengan mengatur propertinya. Apabila pemakai mengisi sebuah kotak dialog pada program, hasilnya akan dikembalikan melalui properti yang terdapat pada kotak dialog tersebut, yang kemudian dapat digunakan pada program untuk melakukan tugas-tugas tertentu. Lima kotak dialog umum yang disediakan oleh objek common dialog ditampilkan dengan metodemetode yang dapat Anda gunakan pada tabel berikut ini: 275
276 Tabel : Kotak Dialog oleh Objek Common Dialog Kotak Dialog Tujuan Metode Open Mendapatkan drive, nama folder, dan nama ShowOpen file untuk file yang sudah ada Save As Mendapatkan drive, nama folder, dan nama ShowSave file untuk file baru Print Memberikan pilihan pencetakan untuk ShowPrinter pemakai Font Memberikan pilihan jenis dan gaya font ShowFont Color Memberikan pilihan jenis-jenis warna dan ShowColor palet. Menambah Objek Common Dialog Kina Anda akan menggunakan kontrol CommonDialog untuk menambahkan objek common dialog ke dalam form. Objek common dialog akan muncul dalam satu ukuran saja dan tidak akan nampak oleh pemakai pada saat program dijalankan. (Karena objek tersebut tidak nampak, ia bisa diletakkan di mana saja pada form). Meletakkan objek pada form mengizinkan Anda menggunakan salah satu dari lima kotak dialog pada program Anda. Menambahkan kontrol CommonDialog ke dalam toolbox Jika kontrol CommonDialog tidak terdapat pada toolbox, Anda bisa menambahkannya dengan mengklik perintah Components pada menu Project. Langkah-langkahnya berikut ini: 1. Pada menu Project, klik perintah Components. 2. Klik tab Controls, lalu letakkan tanda cek pada kotak cek di sebelah Microsoft Common Dialog Control
277 Gambar Microsoft Common Dialog Control 3. Klik OK, Kontrol CommonDialog muncul pada toolbar, seperti pada gambar berikut ini; Kontrol CommonDialog Gambar Kontrol CommonDialog 277
278 Menambahkan objek common dialog 1. Klik kontrol CommonDialog pada toolbox. 2. Gambarlah sebuah objek common dialog pada sudut kiri bawah form. Apablia Anda telah selesai menggambar objek tersebut, objek akan mengatur ukurannya secara otomatis. Objek common dialog kini siap digunakan pada program Anda. Event Procedure untuk Mengelola Kotak Dialog Untuk menampilkan kotak dialog pada program, Anda perlu memanggil objek common dialog menggunakan metode objek yang tepat pada event procedure. Jika perlu, Anda juga harus menset satu atau lebih properti kotak dialog sebelum memanggilnya dari kode program. Setelah pemakai melakukan pemilihan pada kotak dialog, Anda dapat memproses pilihan tersebut menggunakan kode program pada event procedure. Contoh berikut ini merupakan event procedure untuk menu Open, rutin ini akan dijalankan apabila perintah Open diklik. Anda akan menset properti Filter pada objek CommonDialog1 untuk mendefinisikan jenis file pada kotak dialog Open. Kemudian Anda akan menggunakan metode ShowOpen untuk menampilkan kotak dialog Open. Setelah pemakai memilih file dan menutup kotak dialog, Anda akan menampilkan file tersebut pada objek image dengan menset properti Picture dari objek Image1 menjadi nama file yang dipilih oleh pemakai. Yang terakhir Anda harus menyalakan perintah Close agar pemakai bisa menghapus gambar tersebut. Menyunting event procedure Open 1. Klik tombol View Code pada jendela Project 2. Klik kotak daftar Object, lalu klik objek mnuopenitem Event Procedure mnuopenitem_click muncul pada jendela code 3. Ketikkan pernyataan program berikut ini pada event procedure, di antara pernyataan Private Sub dan End Sub. Indentasi setiap baris dengan empat spasi untuk menentukan baris-baris tersebut sebagai event procedure. Pastikan untuk mengetik dengan tepat seperti dibawah ini: 278
279 Gambar Kode Event Procedure Tiga baris pertama pada event procedure merujuk kepada tiga properti yang berbeda dari objek CommandDialog1. Baris pertama menggunakan properti Filter untuk mendefinisikan daftar file-file yang valid. (Dalam hal ini, daftar hanya mengandung satu item saja yaitu *.WMF). Ini pentung untuk kotak dialog Open karena objek Image hanya mengenal enam buah jenis file yaitu: bitmap (.bmp), Windows metafile (.wmf), icon (.ico), kursor (.cur), format JPEG(*.jpg), dan format GIF (.gif). Jika Anda mencoba menampilkan file.txt pada objek image dapat menyebabkan runtime error. Untuk menambah itemitem tambahan ke dalam daftar Filter, Anda bisa mengetikkan simbol ( ) di antara setiap item. Sebagai contoh: CommonDialog1.Filter = Bitmaps (*.BMP) *.BMP Metafiles (*.WMF) *.WMF Baris kedua pada event procedure menampilkan kotak dialog Open dalam program. Setiap kotak dialog ditampilkan menggunakan metode objek yang berbeda; metode untuk menampilkan kotak dialog Open adalah ShowOpen. Ini adalah pernyataan khusus untuk event procedure. Karena nama perintah tersebut adalah Open, prosedur perlu menampilkan kotak dialog Open dan memproses hasilnya. Baris ketiga menggunakan nama file yang dipilih oleh pemakai pada kotak dialog. Apabila pemakai memilih sebuah drive, folder, dan nama file, lalu mengklik OK, nama path yang lengkap akan dikirimkan kepada program melalui properti CommonDialog1.FileName. Fungsi LoadPicture, yaitu sebuah rutin yang fungsinya me-load gambar elektronik, kemudian digunakan untuk meng-copy Windows metafile yang ditentukan ke dalam objek Image1. 279
280 Baris terakhir pada prosedur berfungsi menyalakan perintah Close pada menu File. Kini setelah ada file yang dibuka pada program, perintah Close harus dinyalakan agar pemakai bisa menutup file tersebut. Kini Anda akan mengetikkan kode program untuk event procedure mnutxtcoloritem_click, yaitu rutin yang berjalan apabila perintah Text Color pada menu Clock diklik. Soal Latihan 1. Sarana grafis yang berfungsi mengelola menu adalah : a. Event Procedure b. Common Dialog c. Menu Editor d. Control 2. Berikut ini adalah contoh Kotak dialog dari Objek Common Dialog kecuali : a. Open b. Color c. Print d. Window 3. Beberapa tambahan item dalam daftar Filter dipisahkan dengan simbol: a. ; b., c. d. ( ) Soal Praktek 4. Buatlah form dalam Visual Basic yang terdiri dari sebuah button dan dua buah textbox. Ketika button di klik maka pada textbox1 akan muncul pesan Hello World sedangkan pada textbox2 akan muncul pesan Selamat datang dunia. 280
281 5. Buatlah form dalam Visual Basic yang terdiri dari menu Salam dan dua textbox. Ketika menu dipilih maka pada textbox1 akan muncul pesan Hello World sedangkan pada textbox2 akan muncul pesan Selamat datang dunia. 281
282 3.1 Variabel BAB III Pemrograman Visual Basic Variabel adalah lokasi penyimpanan sementara untuk data dalam program Anda. Anda bisa menggunakan satu atau banyak variabel pada kode program, dan variabek dapat mengandung kata-kata, angka, tanggal, atau properti. Variabel sangat berguna karena dengan variabel Anda bisa menggunakan nama yang singkat dan mudah diingat untuk setipa data yang ingin Anda gunakan. Variabel bisa menyimpan informasi yang dimasukkan oleh pemakai pada saat program dijalankan, hasil dari perhitungan tertentu, atau data yang ingin ditampilkan pada form Anda. Singkatnya, variabel adalah sarana yang sederhana yang bisa digunakan untuk menyimpan hampir semua jenis informasi. Deklarasi Variabel Untuk mendeklarasikan variabel sebelum menggunakannya (pada umumnya di awal sebuah event procedure), Anda harus mengetikkan nama variabel tersebut setelah pernyataan Dim. Dim merupakan singkatan dari dimension. Deklarasi ini akan memesan tempat pada memori untuk variabel apabila program dijalankan, dan memberi tahu Visual Basic tipe data yang akan ditangani kemudian. Sebagai contoh, pernyataan berikut ini membuat tempat untuk variabel bernama NamaBelakang pada program: Dim NamaBelakang Setelah nama variabel, Anda bisa menentukan jenis variabel jika Anda mau. Visual Basic mengizinkan Anda menentukan jenis variabel di muka agar Anda bisa mengenadailkan berapa besar memori yang akan digunakan oleh program. Sebagai contoh, jika variabel akan menampung nilai yang kecil tanpa desimal (angka integer), Anda bisa mendeklarasikan variabel tersebut sebagai integer dan dapat menghemat ruang memori. Tetapi secara default, Visual Basic telah menyediakan tempat untuk jenis variabel yang disebut variant, yang merupakan variabel yang dapat menyimpan data dalam ukuran dan format apa saja. Variabel variant ini sangatlah fleksibel, dan mungkin merupakan satu-satunya variabel yang akan Anda gunakan pada program Anda. 282
283 Setelah mendeklarasikan variabel, Anda bebas mengisikan informasi ke dalamnya melalui kode program. Sebagai contoh, pernyataan program berikut ini menugaskan nama belakang Freddly ke dalam variabel NamaBelakang: NamaBelakang = Freddly Setelah penugasan ini variabel NamaBelakang dapat digunakan menggantikan nama Freddly dalam kode Anda. Sebagai contoh, pernyataan berikut ini: Label1.Caption = NamaBelakang akan menampilkan Freddly pada label pertama (Label1) pada form Anda. Deklarasi Variabel tanpa pernyataan DIM Anda juga bisa mendeklarasikan variabel tanpa pernyataan Dim. Proses ini disebut implicit declaration. Untuk mendeklarasikan variabel dengan cara ini, Anda hanya perlu menggunakan variabel langsung tanpa menggunakan pernyataan Dim: NamaBelakang = Purnamasari Implicit declaration memiliki kelebihan dalam hal kecepatan karena Anda tidak perlu lagi mengetikkan pernyataan Dim. Tetapi manajemen terkadang tidak menyukai penggunaan implicit declaration karena Visual Basic tidak bisa menampilkan pesan error apabila Anda salah mengetikkan nama variabel nanti. Menggunakan Variabel pada Program Variabel bisa menyimpan nilai yang sama di sepanjang program atau nilainya bisa berubah-ubah beberapa kali, tergantung pada kebutuhan. Pada contoh berikut ini, akan diperlihatkan bagaimana sebuah variabel bernama NamaBelakang bisa mengandung teks dan angka, dan bagaimana variabel bisa ditugaskan ke dalam properti objek. Mengubah Nilai Variabel 1. Jalankan Visual Basic 2. Pada menu File, klik perintah Open Project 3. Buatlah form seperti pada gambar berikut ini: 283
284 Gambar Form 4. Klik tombol perintah Show. Event Procedure Command1_Click muncul pada jendela code. 5. Ketikkan pernyataan program berikut ini untuk mendeklarasikan dan menggunakan variabel NamaBelakang: Dim NamaBelakang NamaBelakang = Sujono Label1.Caption = NamaBelakang NamaBelakang = 88 Label2.Caption = NamaBelakang Pernyatan program di atas dikelompokkan ke dalam tiga bagian. Pernyataan pertama mendeklarasikan variabel NamaBelakang menggunakan pernyataan Dim. Karena disini tidak ditentukan jenisnya, variabel ini dideklarasikan sebagai bertipe variant (variabel yang bisa menyimpan teks dan angka). Baris kedua dan ketiga menugaskan nama Sujono ke dalam variabel NamaBelakang lalu menampilkan nama ini pada objek label pertama. Baris ke empat menugaskan angka 88 ke dalam variabel NamaBelakang (dengan kata lain, dia merubah isi variabel). Operasi ini menghapus string teks variabel dan menggantinya dengan sebuah angka. Angak tersebut tidak ditulis dengan tanda kutip. String teks memerlukan tanda kutip, tetapi angka tidak. 284
285 Layar Anda akan tampak seperti gambar berikut: Gambar Kode Form 6. Klik tombol Start pada toolbar untuk menjalankan program. 7. Klik tombol Show. Program mendeklarasikan variabel, memberikan dua nilai ke dalamnya, lalu menyalin setiap nilai ke label yang sesuai pada form. Program ini menghasilkan output sebagai berikut: Gambar Hasil Keluaran 8. Klik tombol Quit untuk menghentikan program. Aturan Penamaan Variabel Berikut adalah aturan-aturan penamaan variabel yang ditujukan agar program Anda lebih teratur dan mudah dibaca. 1. Mulailah setiap nama variabel dengan huruf. Ini adalah kebutuhan Visual Basic. Nama variabel panjangnya harus kurang dari 256 karakter dan tidak boleh mengandung tanda titik. 285
286 2. Buatlah nama variabel yang jelas dengan menggabungkan satu atau lebih kata agar mudah dimengerti. Sebagai contoh, nama variabel SalesTaxRate akan jauh lebih jelas dibanding Tax atau Rate saja. 3. Gunakanlah kombinasi karakter huruf kapital dan kecil atau angka. Sebuah aturan yang sering digunakan adalah awal setiap kata pada variabel dibuat dengan huruf kapital. Sebagai contoh TanggalLahir. 4. Jangan gunakan kata-kata kunci, objek, atau properti milik Visual Basic untuk nama variabel. 5. Mulailah setiap nama variabel dengan dua atau tiga singkatan karakter yang sesuai dengan tipe data yang disimpan pada variabel tersebut. Sebagai contoh, gunakanlah strname untuk menunjukkan bahwa variabel Name mengandung data bertipe string. Walaupun Anda tidak perlu memikirnkan detail ini sekarang, Anda perlu mencatatnya untuk pemakaian nanti. Namun aturan ini opsional bagi Anda. Tujuannya adalah agar Anda selalu mengetahui tipe data dari variabel tersebut sehingga dalam penggunaannya tidak melakukan kesalahan. Menggunakan Variabel untuk Menyimpan Input Salah satu kegunaan praktis variabel adalah untuk menyimpan input dari pemakai. Walaupun Anda bisa sering menggunakan objel seperti kotak daftar file atau kotak teks untuk mengambil informasi ini, kadangkala Anda perlu berinteraksi langsung dengan pemakai dan menyimpan input ke dalam variabel daripada ke dalam properti. Salah satu cara melakukan ini adalah menggunakan fungsi InputBox untuk menampilkan sebuah kotak dialog pada layar lalu menyimpan teks yang diketikkan oleh pemakai ke dalam variabel. Anda akan mencoba pendekatan ini pada latihan berikut ini. Mengambil Input Menggunakan InputBox 1. Buka jendela Visual Basic dan buatlah form seperti gambar dibawah ini 286
287 Gambar Form 2. Klik ganda tombol perintah InputBox. Event Procedure Command1_Click muncul pada jendela Code. 3. Ketikkan pernyataan program berikut ini untuk mendeklarasikan dua variabel dan memanggil fungsi InputBox. Dim Prompt, NamaLengkap Prompt = "Silahkan isi nama lengkap Anda" NamaLengkap = InputBox$(Prompt) Label1.Caption = NamaLengkap Disini Anda mendeklarasikan dua buah variabel menggunakan pernyataan Dim: Prompt dan NamaBelakang. Baris kedua pada event procedure menugaskan sekelompok karakter atau text string ke dalam variabel Prompt. Pesan ini akan digunakan sebagai argumen teks untuk fungsi InputBox. (Argumen adalah suatu nilai atau ekspresi yang dikirimkan ke sebuah subprosedur atau fungsi). Baris berikutnya memanggil fungsi InputBox dan memberikan hasil dari pemanggilan prosedur (string teks yang diketikkan oleh pemakai) ke dalam variabel NamaLengkap. InputBox adalah sebuah fungsi Visual Basic khusus yang menampilkan kotak dialog pada layar dan meminta input dari pemakai. Selain itu, fungsi InputBox juga mendukung argumen-argumen lain yang terkadang perlu Anda gunakan. Setelah InputBox mengembalikan string teks kepada program, pernyataan keempat pada prosedur akan meletakkan nama pemakai pada properti Caption dari objek Label1, yang akan ditampilkan pada form. 4. Klik tombol Start pada toolbar untuk menjalankan program. 5. Klik tombol Input Box. 287
288 Visual Basic menjalankan event procedure Command1_Click, dan kotak dialog InputBox muncul pada layar monitor Anda. Gambar Input Box 6. Ketikkan nama lengkap Anda, lalu klik OK. Fungsi InputBox mengembalikan nama Anda ke dalam program dan meletakkannya pada variabel NamaBelakang. Program kemudian menggunakan variabel tersebut untuk menampilkan nama Anda pada form seperti ditunjukkan pada gambar berikut ini. Gambar Hasil Keluaran InputBox Gunakanlah fungsi InputBox pada program setiap kali Anda ingin meminta informasi dari pemakai. Anda bisa menggunakan fungsi ini bersama dengan kontrol input lainnya untuk mengatur aliran data dari dan ke dalam program. 7. Tekan tombol Quit untuk menghentikan program. Menggunakan Variabel untuk Output Anda bisa menampilkan isi variabel dengan menugaskan variabel tersebut ke dalam properti (seperti properti Caption dari objek label) atau dengan mengirimkan variabel tersebut sebagai argumen kepada fungsi kotak dialog. Salah satu fungsi kotak dialog yang berguna untuk menampilkan output adalah fungsi MsgBox. Sama seperti InputBox, fungsi MsgBox mengambil satu 288
289 atau lebih argumen sebagai inputnya, lalu hasil fungsi tersebut bisa diberikan kepada variabel. Sintaks untuk fungsi MsgBox adalah sebagai berikut: ButtonClicked = MsgBox(Message, NumberOfButtons, Title) dimana Message adalah teks yang akan ditampilkan pada layar, NumberOfButtons adalah nomor style dari tombol (1 sampai 5), dan Title adalah teks yang ditampilkan pada baris judul kotak pesan. Variabel ButtonClicked menyimpan hasil yang didapat oleh fungsi tersebut, yang menunjukkan tombol mana yang diklik oleh pemakai pada kotak dialog. Jika Anda hanya menampilkan pesan pada MsgBox, operator penugasan (=), variabel ButtonClicked, serta argumen NumberOfButtons sifatnya opsional. Sekarang kita akan menambahkan fungsi MsgBox ke dalam program sebelumnya untuk menampilkan nama yang diketikkan oleh pemakai pada kotak dialog InputBox. Menampilkan pesan menggunakan MsgBox 1. Buka kembali program InputBox sebelumnya. Klik ganda tombol Input Box. Kemudian arahkan mouse pada event procedure berikut ini: Label1.Caption = NamaLengkap Ini adalah pernyataan yang menampilkan isi variabel NamaLengkap pada label. 2. Tekan Del untuk menghapus baris tersebut 3. Ketikkan baris berikut ini ke dalam event procedure untuk menggantikannya: MsgBox (NamaLengkap),, Input Results Pernyataan baru ini akan memanggil fungsi MsgBox, menampilkan isi variabel NamaLengkap pada kotak dialog, dan meletakkan kata Input Result pada baris judul. Event procedure Anda tampak seperti gambar berikut ini. 289
290 Gambar Kode Event Procedure 4. Klik tombol Start pada toolbar. 5. Klik tombol Input Box, ketikkan nama Anda pada kotak input, lalu klik OK Input disimpan pada program pada variabel NamaLengkap, dan kemudian ditampilkan pada kotak pesan. Layar Anda tampak seperti berikut. Gambar Hasil Keluaran 6. Klik OK untuk menutup kotak pesan. Lalu klik Quit untuk menutup program. Bekerja dengan Variabel Publik Mendeklarasikan variabel global atau variabel publik dalam modul standar adalah langkah yang mudah; Anda tinggal mengetikkan kata Public yang diikuti dengan nama variabel. Setelah Anda mendeklarasikan variabel, Anda bisa membacanya, mengubahnya, atau menampilkannya dalam semua prosedur pada program Anda. Sebagai contoh, pernyataan program berikut ini: Public RunningTotal akan mendeklarasikan sebuah variabel publik bernama RunningTotal dalam modul standar. 290
291 Secara default, variabel publik dideklarasikan sebagai tipe variant dalam modul, tetapi Anda bisa menentukan tipe lain menggunakan perintah As dan menentukan tipenya. Sebagai contoh: Public NamaBelakang As String Pernyataan di atas akan mendeklarasikan variabel publik bertipe String dan bernama NamaBelakang dalam progam Anda. 3.2 Fungsi Fungsi adalah suatu pernyataan yang melakukan pekerjaan yang bermanfaat (seperti meminta informasi dari pemakai atau melakukan perhitungan matematis) lalu mengembalikan hasilnya ke dalam program. Nilai yang dikembalikan oleh form bisa diberikan ke dalam variabel, seperti pada program MyInputBox, atau bias diberikan ke dalam properti atau pernyataan atau fungsi lainnya. Fungsi Visual Basic seringkali menggunakan satu atau lebih argumen untuk mendefinisikan aktifitasnya. Sebagai contoh, fungsi InputBox yang Anda jalankan menggunakan variabel Prompt untuk menampilkan petunjuk kotak dialog untuk pemakai. Apabila suatu fungsi menggunakan lebih dari satu argumen, argumen tersebut harus dipisahkan dengan tanda koma, dan seluruh argumen harus ditutup dengan tanda kurung. Pernyataan berikut ini menunjukkan sebuah fungsi yang memiliki dua argumen. NamaLengkap = InputBox$(Prompt, Title) Nama Variabel Nama Fungsi Argumen 3.3 Bekerja dengan Tipe Data Tertentu Pada umumnya, tipe data variant adalah satu-satunya tipe data yang Anda butuhkan. Variabel variant dapat menyimpan semua tipe data dasar Visual Basic (yang sudah didefinisikan) dan dapat berpindah-pindah format secara otomatis. Variabel juga mudah digunakan dan Anda tidak perlu memikirkan ukuran variabel apabilan Anda mendeklarasikannya. Namun, jika Anda ingin 291
292 membuat progam yang sangat cepat dan teliti, Anda perlu menggunakan jenis tipe data yang sesuai dengan kebutuhan. Sebagai contoh, jika variabelnya hanya akan mengandung nilai integer kecil (angka tanpa tanda titik desimal), Anda bisa menghemat ruang memori pada saat program dijalankan dengan mendeklarasikan variabel integer daripada variabel variant. Anda juga akan mendapatkan peningkatan kinerja jika program Anda melakukan perhitungan karena variabel integer dapat meningkatkan operasi aritmatik. Tabel :Jenis tipe data dasar pada Visual Basic. Tipe Data Ukuran Kisaran Integer 2 byte -32,768 sampai 32,767 Long Integer 4 byte -2,147,483,648 sampai 2,147,483,647 Single-precision floating point 4 byte E38 sampai E38 Doubleprecision 8 byte D308 sampai D308 floating point Currency 8 byte sampai String 1 byte per karakter 0 sampai 65,535 Boolean 2 byte True atau False Date 8 byte 1 Januari 1000 sampai 31 Desember 9999 Variant 16 byte (untuk Semua tipe data angka); 22 byte + 1 byte perkarakter (untuk string) Tipe Data Buatan Sendiri Variabel juga mengizinkan Anda untuk membuat tipe data sendiri. Sarana ini sangat bermanfaat apabila Anda menangani sekelompok data yang menyatu tetapi terbagi ke dalam beberapa kategori data yang berbeda. Anda bisa membuat tipe data buatan (pemakai menentukan tipe data) menggunakan 292
293 pernyataan Type, lalu mendeklarasikan semua variabel yang berhubungan dengan tipe data yang baru pernyataan Dim. Pernyataan Type harus terletak pada bagian Declaration dari modul standar. Sebagai contoh, deklarasi berikut ini membuat tipe data buatan yang bernama Employee yang bisa menyimpan nama, tanggal lahir, dan tanggal bekerja yang berhubungan dengan pekerja. Type Employee Name As String DateOfBirth As Date HireDate as Date End Type Setelah Anda membuat tipe data baru, Anda bisa menggunakannya pada kode program. Pernyataan berikut ini menggunakan tipe data Employee yang baru. Pernyataan pertama membuat sebuah variabel bernama ProductManager, dari jenis Employee, dan pernyataan kedua menugaskan nama Steven Gerrard ke dalam komponen Name dari variabel tesebut. Dim ProductManager As Employee ProductManager.Name = Steven Gerrard Visual Basic menggunakan notasi yang sama untuk hubungan antarobjek dan properti serta hubungan antara tipe data buatan dan variabel komponen. Konstanta: Variabel yang Tidak Berubah Jika variabel pada progam Anda mengandung suatu nilai yang tidak pernah berubah (misalnya phi, suatu entiti matematika yang tetap), Anda perlu menyimpan nilai tersebut sebagai konstanta daripada variabel. Konstanta adalah nama yang berarti yang berfungsi mengambil tempat dari angka atau string teks yang tidak berubah. Konstanta sangat bermanfaat karena mampu meningkatkan tingkat pembacaan kode program, mampu menghemat memori, dan mudah dilakukan perubahan global. Cara kerja konstanta mirip dengan variabel, tetapi Anda tidak bisa mengubah nilainya pada saat program dijalankan. Konstanta dideklarasikan dengan kata Const, seperti ditunjukkan pada contoh berikut ini: Const Pi = Pernyataan di atas akan menciptakan sebuah konstanta bernama Pi yang bisa digunakan untuk menggantikan nilai phi pada program. Agar konstanta dapat digunakan oleh semua objek dan event procedure pada form, letakkan pernyataan di atas pada bagian Declaration pada form Anda (pada baris 293
294 teratas pada jendela code). Agar konstanta dapat digunakan oleh semua form dalam modul pada program, buatlah konstanta dalam modul standar, dengan kata kunci Public di depannya. Sebagai contoh; Public Const Pi = Operator Rumus atau formula adalah pernyataan yang menggabungkan angka, variabel, operator, dan kata kunci untuk membuat suatu nilai baru. Visual Basic mengandung beberapa elemen bahasa yang dirancang untuk digunakan dalam rumus-rumus. Pada bagian ini, akan dibahas penggunaan operator matematika, yaitu simbol yang digunakan untuk menggabungkan bagian dari formula. Dengan beberapa pengecualian, simbol matematika yang akan Anda gunakan adalah simbol yang digunakan sehari-hari, dan operasinya sangat mudah. Visual Basic menyediakan operator-operator berikut ini: Tabel Operator Matematika Operator Operasi Matematika + Penjumlahan - Pengurangan * Perkalian / Pembagian \ Pembagian Integer Mod Sisa Pembagian ^ Pangkat & Penggabungan string Operator Matematika : +, -, *, dan / Operator untuk penjumlahan, pengurangan, perkalian, dan pembagian sangatlah sederhana dan bisa digunakan pada semua rumus di mana angka atau variabel numerik digunakan. 294
295 Berikut ini contoh program yang menggunakan operator matematika 1. Buatlah form seperti gambar berikut ini Gambar Form 2. Kemudian dobel klik tombol calculate dan tuliskan kode berikut ini. Gambar Kode Event Procedure 3. Kemudain klik tombol Start untuk menjalankan program 4. Anda dapat melihat hasil dari keempat operator matematika yang tersedia pada program. Isi kedua variabel dengan angka, kemudain pilih jenis opeartor dan klik tombol Calculate untuk melakukan perhitungan. Hasil akan muncul di Result. 295
296 Pada baris kode program, pernyataan pertama pada prosedur mendeklarasikan dua variabel umum dari jenis variant. Variant akan menyimpan nilai-nilai yang diketikkan ke dalam kotak teks, dan variabel variant tersebut cukup fleksibel untuk menangani semua tipe data numerik yang Anda ingin gunakan. Dua pernyataan berikutnya me-load data dari kotak teks ke dalam variabel dan mengubah string teks menjadi angka menggunakan fungsi Val; First = Val(Text1.Text) 'fetch and convert numbers Second = Val(Text2.Text) Fungsi Val adalah rutin khusus yang mengubah argumen teks menjadi nilai numerik. Perubahan ini penting agar operasi penambahan bekerja dengan baik pada program. Tipe data default yang dikembalikan oleh kotak teks berupa teks. Hal ini tidak masalah untuk ketiga operator. Operator -, *, dan / hanya bekerja dengan angka, jadi apabila pemakai memilih salah satu dari ketiga operator ini pada program, Visual Basic secara otomatis akan mngubah nilai yang dimasukkan ke dalam variabel First dan Second menjadi angka. Operator Matematika : \, Mod, ^, dan & Selain keempat operator matematika dasar, Visual Basic juga memiliki empat operator tingkat lanjut, yang mampu melakukan pembagian integer (\), sisa pembagian (mod), pangkat (^), dan penggabungan string (&). Opeartoropeartor in sangat bermanfaat pada rumus-rumus matematik khusus serta aplikasi pemrosesan teks. Program berikut mendemonstrasikan penggunaan operasi tingkat lanjut; 1. Buatlah form seperti gambar berikut ini 296
297 Gambar Form 2. Kemudian dobel klik tombol calculate dan tuliskan kode berikut ini. Gambar Kode Event Procedure 3. Kemudain klik tombol Start untuk menjalankan program Urutan Operator Perhatikan contoh perhitungan berikut: Total = * 2 / 4 ^ 2 Rumus akan memproses beberapa nilai dan memberikan hasilnya kepada variabel bernama Total. Permasalahannya adalah opeartor matematik mana yang akan dijalankan terlebih dahulu oleh program? Visual Basic menyelesaikan perhitungan ini dengan menentukan urutan-urutan operator untuk operasi matematik. Daftar ini memberi tahu operator mana saja yang 297
298 dilakukan lebih dulu apabila mengevaluasi sautu ekspresi yang mengandung lebih dari satu operator. Tabel berikut ini menampilkan urutan operator dari awal hingga akhir. Tabel : Urutan Operator Operator Urutan ( ) Nilai di dalam tanda kurung selalu dievaluasi terlebih dahulu ^ Pangkat dievaluasi kedua - Negasi (membuat angkat negatif) dievaluasi ketiga * / Perkalian dan pembagian dievaluasi keempat \ Pembagian integer dievaluasi kelima Mod Sisa pembagian dievaluasi keenam + - Penjumlahan dan pengurangan dievaluasi terakhir Jika mengikuti tabel urutan di atas, ekspres Total = * 2 / 4 ^ 2 akan dievaluasi oleh Visual Basic dengan langkah-langkah berikut ini. Total = * 2 / 4 ^ 2 Total = * 2 / 16 Total = / 16 Total = Total = Menggunakan Tanda Kurung dalam Rumus Anda bisa menggunakan satu atau lebih tanda kurung pada rumus untuk menentukan urutan-urutan opeartor. Sebagai contoh, Visual Basic akan menghitung rumus Jumlah = (8 5 * 3) ^ 2 Dengan menentukan nilai dalam tanda kurung (-7) sebelum melakukan pemangkatan, walaupun pemangkatan urutannya lebih tinggi daripada perkalian dan pengurangan. Anda bisa menyempurnakan perhitungan dengan meletakkan tanda kurung bersarang pada rumus. Sebagai contoh: Jumlah = ((8 5) * 3) ^ 2 Rumus ini memerintahkan Visual Basic pertama-tama menghitung pengurangan dalam tanda kurung dalam, berikutnya operasi pada tanda 298
299 kurung luar, lalu melakukan pemangkatan. Hasil yang dihasilkan oleh kedua rumus di atas berbeda: rumus pertama menghasilkan nilai 49 sedang yang kedua 81. Tanda kurung bisa mengubah hasil dari operasi matematikan serta memudahkan pembacaan. 3.5 Struktur Keputusan Pemrograman Event-Driven Program yang telah Anda tulis pada bagian sebelumnya memiliki menu, objek, serta kotak dialog pada layar, dan program-progam tersebut mendorong pemakai agar memanipulasi elemen-elemen layar pada setiap urutan yang ia lihat. Program yang mengendalikan pemakai, menunggu respon, lalu memproses input yang telah diduga sebelumnya. Pada siklus pemrograman, metodologi ini dikenal dengan istilah event-driven programming. Program dibuat dengan menciptakan sekelompok objek pintar yang tahu apa yang harus dilakukan apabila pemakai berinteraksi dengannya, lalu Anda memproses input menggunakan event procedure yang bersesuaian dengan objek-objek tersebut. Diagram berikut ini menunjukkan bagaimana cara kerja program event-driven pada Visual Basic. Input prorgam juga bisa datang dari sistem komputer itu sendiri. Sebagai contoh, program Anda mungkin akan diberitahu apabila ada tiba atau apabila telah melampaui waktu tertentu. Event-event ini dipicu oleh komputer, bukan oleh pemakai. Bagaimanapun cara event dipicu, Visual Basic beraksi dengan memanggil event procedure yang sesuai dengan objek yang memanggil event tersebut. Sejauh ini, Anda telah menggunakan event Click dan Change. Tetapi objek-objek Visual Basic juga bisa merespon beberapa jenis event yang lain. Sifat event-driven dari Visual Basic berarti bahwa sebagian besar proses perhitungan dalam program Anda akan dilakukan oleh event procedure. Kodekode program ini memproses input, menghitung nilai baru, menampilkan output, serta menangani tugas-tugas lainnya. 299
300 Menggunakan Ekspresi Kondisi Salah satu sarana yang bermanfaat untuk memproses informasi pada event procedure adalah ekspresi berkondisi. Ekspresi berkondisi adalah sebagian dari pernyataan program yang lengkap yang menanyakan pertanyaan True atau False (benar atau salah) mengenai properti, variabel, atau data lain pada kode program. Sebagai contoh ekspresi kondisi berikut: Harga < 1000 akan menghasilkan nilai True (benar) apabila variabel Harga mengandung nilai yang kurang dari 1000, dan menghasilkan nilai False (salah) jika Harga mengandung nilai yang lebih besar atau sama dengan Anda bisa menggunakan operator perbandingan di bawah ini pada ekspresi berkondisi. Tabel : Operator Perbandingan Operator Perbandingan Arti = Sama dengan < > Tidak sama dengan > Lebih besar dari < Lebih kecil dari >= Lebih besar dari atau sama dengan <= Lebih kecil dari atau sama dengan Ekspresi yang dapat menghasilkan nilai True atau False juga dikenal dengan istilah ekspresi Boolean, dan hasil True atau False bisa dikirimkan ke variabel atau properti bertipe boolean. Anda bisa mengirimkan nilai Boolean kepada properti objek tertentu, variabel variant, atau variabel Boolean yang telah dibuat menggunakan pernyataan Dim dan kata As Boolean. Tabel : Ekspresi berkondisi dan hasilnya. Ekspresi berkondisi Hasil 10 <> 20 True (10 tidak sama dengan 20) Skor < 20 True jika Skor kurang dari 20; jika tidak False Skor = Label1.Caption True jika properti Caption dari objek Label1 mengandung nilai yang sama dengan variabel Skor;jika tidak False Text1.Text = Cornelia True jika kata Cornelia terdapat pada kotak teks pertama;jika tidak False 300
301 Menggunakan Operator Logikal pada Ekspresi Berkondisi Visual Basic mengizinkan Anda menguji lebih dari satu ekspresi berkondisi pada klausa If...Then dan ElseIf jika Anda ingin menyertakan lebih dari satu kriteria pemilihan pada struktur keputusan Anda. Kondisi tambahan ini disatukan menggunakan satu atau lebih operator logikal berikut ini: Operator Logikal And Or Not Xor Tabel : Operator Logika Keterangan Jika kedua ekspresi nilainya True, hasilnya akan True Jika salah satu dari ekspresi nilainya True, hasilnya akan True Jika eskpresi nilainya False, hasilnya akan True, dan sebaliknya Jika satu dan hanya satu dari ekspresi nilainya True, hasilnya akan True. Jika keduanya nilainya True atau False, hasilnya akan False Struktur Keputusan If...Then Ekspresi berkondisi digunakan pada blok pernyataan khusus yang disebut dengan struktur keputusan, dan fungsinya mengendalikan apakah pernyataan lain pada program Anda dijalankan dan bagaimana urut-urutan dijalankannya. Struktur keputusan If...Then mengizinkan Anda mengevaluasi sebuah kondisi pada program dan melakukan tindakan berdasarkan hasilnya. Dalam bentuk yang paling sederhana, struktur keputusan If...Then ditulis dalam baris tunggal: If Condition Then Statement dimana condition adalah ekspresi berkondisi dan statement adalah pernyataan program Visual Basic yang valid. Sebagai contoh: If Skor >=80 Then Label1.Caption = Nilai A adalah sebuah struktur keputusan If...Then yang menggunakan ekspresi berkondisi Skor >=
302 untuk menentukan apakah program harus menset properti Caption dari Objek Label1 menjadi Nilai A. Jika variabel Skor mengandung nilai yang lebih besar atau sama dengan 80, Visual Basic akan menset properti Caption; jika tidak Visual Basic akan melompati pernyataan penugasan tersebut dan menjalankan baris berikutnya pada event procedure. Perbandingan semacam ini selalu menghasilkan nilai True atau False. Sebuah ekspresi berkondisi tidak pernah memberikan hasil mungkin. Menguji Beberapa Kondisi pada Struktur Keputusan If...Then Visual Basic juga mendukung struktur keputusan If...Then dimana Anda bisa menyertakan beberapa ekspresi berkondisi. Blok pernyataan ini panjangnya bisa beberapa baris dan mengandung kata-kata kunci yang penting seperti Elseif, Else, dan End If. If Kondisi1 Then Pernyataan akan dijalankan jika Kondisi1 bernilai True ElseIf Kondisi2 Then Pernyataan akan dijalankan jika Kondisi2 bernilai True [Kondisi ElseIf tambahan dan pernyataannya dapat ditambah disini] Else Pernyataan akan dijalankan jika tidak ada kondisi yang True End If Pada struktur ini, Kondisi1 diperiksa lebih dahulu. Jika ekspresi ini True, blok pernyataan di bawahnya akan dijalankan, satu demi satu. Anda bisa menyertakan satu atau lebih pernyataan program. Jika kondisi pertama tidak true (False), ekspresi kedua (Kondisi2) akan diperiksai. Jika kondisi kedua True, blok pernyataan kedua akan dijalankan. Jika tidak ada kondisi yang True, pernyataan dibawah kata Else akan dijalankan. Yang terakhir, seluruh struktur ini ditutup dengan kata End If. Kode program berikut ini menunjukkan bagaimana struktur If...Then banyak baris bisa digunakan untuk menentukan jumlah pajak yang dikenakan (data merupakan data dummy) If AdjustedIncome <= Then TaxDue = AdjustedIncome *
303 Else If AdjustedIncome <= Then TaxDue = ((AdjustedIncome 20000) * 0.28) Else If AdjustedIncome <= Then TaxDue = ((AdjustedIncome 40000) * 0.31) Else If AdjustedIncome <= Then TaxDue = ((AdjustedIncome 60000) * 0.36) Else Then TaxDue = ((AdjustedIncome 80000) * 0.39) End If Struktur keputusan yang bermanfaat ini menguji variabel AdjustedIncome pada tingkat pendapatan pertama dan tingkat pendapatan berikutnya sampai salah satu dari ekspresi berkondisi bernilai True dan kemudian menentukan pajak pendapatan setiap pembayar pajak dengan tepat. Urutan ekspresi berkondisi pada klausa If...Then dan ElseIf menjadi penting. Bagaimana jika kondisi pada kasus di atas diubah dan menampilkan tarif dari yang terbesar ke yang terkecil? Pembayar pajak pada kategori 15 persen, 28 persen, 31 persen semua akan diletakkan pada kategori 36 persen karena semuanya memiliki pemasukan lebih kecil dari Karena semua ekspresi berkondisi pada contoh ini menguji variabel yang sama, mereka perlu ditampilkan pada urutan menaik agar para pembayar pajak masuk ke dalam kategori yang tepat. Intinya, apabila Anda menggunakan lebih dari satu ekspresi berkondisi, pertimbangkanlah urutannya dengan teliti. Struktur Keputusan Select Case Visual Basic juga mengijinkan Anda mengendalikan eksekusi dari pernyataan program menggunakan struktur keputusan Select Case. Struktur Select Case serupa dengan If...Then...ElseIf, tetapi lebih efesien apabila percabangan bergantung kepada satu variabel kunci atau test case. Anda juga bisa menggunakan struktur Select Case agar program Anda lebih mudah dibaca. Sintaks untuk struktur Select Case dapat dilihat berikut ini; Select Case variabel Case value1 Pernyataan program akan dijalankan jika value1 sesuai dengan nilai variabel 303
304 Case value2 Pernyataan program akan dijalankan jika value2 sesuai dengan nilai variabel Case value3 Pernyataan program akan dijalankan jika value3 sesuai dengan nilai variabel... End Select Struktur Select Case dimulai dengan kata Select Case dan diakhiri dengan kata End Select. Anda dapat menggantikan variabel, properti, atau ekspresi lain yang akan dijadikan nilai kunci atau test case. Value1, Value2, Value3 diganti dengan angka, string, atau nilai lain yang berhubungan dengan test case. Jika salah satu nilai sesuai dengan variabel, pernyataan di bawah klausa Case akan dijalankan dan Visual Basic akan melanjutkan mengeksekusi program setelah pernyataan End Select. Anda bisa menyertakan sebanyak mungkin klausa Case pada struktur Select Case, dan Anda bisa menyertakan lebih dari satu nilai pada klausa Case. Jika Anda menampilkan banyak nilai setelah case, pisahkan dengan tanda koma. Struktur Select Case juga mendukung klausa Case Else yang bisa digunakan untuk menampilkan pesan apabila tidak ada nilai yang tepat. Contoh di bawah ini menunjukkan bagaimana struktur Select Case bisa digunakan untuk mencetak sebuah pesan mengenai umur seseorang. Jika variabel Umur sesuai dengan nilai Case, sebuah pesan tertentu akan muncul sebagai label. Select Case Umur Case 16 Label1.Caption = You can drive now! Case 18 Label1.Caption = You can vote now! Case 21 Label1.Caption = You can drink wine! 304
305 Case 65 Label1.Caption = Time to retire and have fun Case Else Label1.Caption = You re a great age! Enjoy it End Select Menggunakan Operator Perbandingan dengan Struktur Select Case Visual Basic mengizinkan Anda menggunakan operator perbandingan untuk menyertakan sekumpulan nilai tes pada struktur Select Case. Operator perbandingan Visual Basic yang bisa digunakan adalah =, <, >, <>, <=, dan >=. Untuk menggunakan operator perbandingan, Anda perlu menyertakan kata Is atau To pada ekspresi untuk menentukan perbandingan yang Anda buat. Kata Is memberitahu compiler untuk membandingkan variabel tes dengan ekspresi yang ditampilkan setelah kata tersebut. Kata To menentukan kisaran nilai. Struktur berikut ini menggunakan Is, To, dan beberapa operator perbandingan untuk memeriksa variabel Umur dan untuk menampilkan salah satu dari lima pesan: Select Case Umur Case Is < 13 Label1.Caption = Enjoy your youth! Case 13 To 19 Label1.Caption = Enjoy your teens! Case 21 Label1.Caption = You can drink wine! Case Is > 100 Label1.Caption = Looking Good Case Else Label1.Caption = That s a nice age to be End Select Struktur keputusan Select Case biasanya lebih jelas daripada struktur If...Then dan lebih efisien apabila Anda membuat keputusan percabangan tiga atau lebih berdasarkan pada satu variabel atau properti. Tetapi apabila Anda menggunakan kurang dari dua perbandingan, atau apabila Anda bekerja 305
306 dengan beberapa nilai yang berbeda, Anda lebih baik menggunakan struktur keputusan If...Then. Mencari dan Memperbaiki Error Ada tiga jenis error yang umum didapati pada program. Berikut ini adalah ketiga jenis error yang biasa muncul pada program Visual Basic: Syntax Error (atau compiler error) adalah kesalahan pemrograman (seperti misalnya kesalahan mengetikkan properti atau kata kunci) yang melanggar aturan Visual Basic. Visual Basic menunjukkan beberapa jenis sintax error pada program Anda sewaktu Anda mengetikkan pernyataan program, dan tidak akan menjalankan program sampai setiap syntax error diperbaiki. Runtime error adalah kesalahan yang menyebabkan program berhenti tiba-tiba pada saat dijalankan. Runtime error muncul apabila ada event luar atau syntax error yang tidak diketahui memaksa program berhenti pada saat dijalankan. Nama file yang salah pada fungsi LoadPicture atau floopy drive yang salah adalah kondisi-kondisi yang bisa menghasilkan runtime error. Logic Error adalah kesalahan manusia, yaitu kesalahan pemrograman yang menjadikan kode program menghasilkan hasil yang salah. Kebanyakan upaya debugging difokuskan untuk menelusuri logic error yang dilakukan oleh programmer. Contoh sebuah program error. If Age > 13 AND Age < 20 Then Text2.Text = You re a teenager Else Text2.Text = You re not a teenager End if Pada program di atas seorang remaja adalah orang yang usianya antara 13 dan 19 tahun, tetapi struktur tersebut gagal menentukan orang yang usianya tepat 13 tahun. (Untuk usia ini struktur akan menampilkan pesan You re not a teenager ). Kesalahan semacam ini bukanlah syntax error; tetapi kesalahan 306
307 logic error. Struktur keputusan yang tepat haruslah menggunakan operator lebih besar atau sama dengan (>=) pada perbandingan pertama setelah pernyataan If...Then. If Age >= 13 AND Age < 20 Then Menggunakan Break Mode Salah satu cara untuk menentukan logic error adalah dengan menjalankan kode program Anda baris demi baris dan memeriksa isi setiap variabel atau properti setiap kali berubah. Untuk melakukan ini, Anda bisa menggunakan break mode pada saat program Anda dijalankan lalu melihat kode program pada jendela Code. Break Mode menampilkan program pada saat dijalankan oleh compiler Visual Basic. Sewaktu melakukan debugging, Anda mungkin perlu membuka toolbar Debug, yaitu sebuah toolbar khusus yang memiliki tombol-tombol khusu untuk menelusuri error. Anda mungkin juga perlu membuka jendela Watches, yang bisa menampilkan isi variabel penting yang ingin Anda lihat. Untuk mengetikkan pernyataan program dan melihat pengaruh langsungnya, gunakan jendela Immediate. Gambar berikut ini menampilkan toolbar debugging, dimana Anda bisa membuka dengan memilih perintah Toolbars pada menu View lalu mengklik Debug. Gambar Debug 307
308 3.6 Struktur Perulangan Loop For...Next Loop For...Next berfungsi mengeksekusi sekelompok pernyataan program selama beberapa kali dalam suatu event procedure. Pendekatan ini sangat bermanfaat apabila Anda ingin melakukan beberapa perhitungan yang berhubungan, bekerja dengan elemen pada layar, atau memproses beberapa input dari pemakai. Loop For...Next sebenarnya hanyalah merupakan penulisan singkat dari pernyataan program yang panjang. Karena setiap kelompok pernyataan program tesebut pada dasarnya melakukan hal yang sama, Visual Basic mengizinkan Anda mendefinisikan hanya satu kelompok pernyataan program dan meminta apakah ia akan dieksekusi sebanyak mungkin yang Anda inginkan. Sintaks untuk Loop For...Next adalah sebagai berikut: For Variabel = start To End Next Variabel Statements to be repated Pada sintaks ini, For, To dan Next adalah kata kunci yang dibutuhkan dan operator sama dengan (=) juga dibutuhkan. Variabel dapat diganti dengan nama variabel numerik yang menyimpan jumlah loop saat ini, dan gantilah start dan end dengan nilai numerik yang merepresentasikan titik awal dan akhir dari loop. Baris antara di antara For dan Next adalah instruksi yang diulang setiap kali loop dijalankan. Sebagai contoh, loop For...Next berikut ini akan mencetak kata Saya empat kali berturut-turut pada layar Anda: For i = 1 To 4 Saya Next i Loop ini setara dengan menulis pernyataan Beep empat kali pada sebuah prosedur. Bagi compiler program di atas sama dengan: Saya Saya Saya 308
309 Saya Variabel yang digunakan pada loop adalah i, sebuah huruf yang (sesuai aturan) merupakan counter integer pertama pada loop For...Next. Setiap kali loop dijalankan, variabel counter akan dinaikkan satu. Variabel counter fungsinya sama seperti variabel lain pada event procedure. Ia bisa dikirimkan kepada properti, digunakan pada perhitungan, atau ditampilkan pada program. Anda dapat menggunakan kata Step pada counter untuk menaikkan counter dengan interval yang berbeda. Contoh penggunaan counter dengan penggunaan kata Step: For i = 5 To 25 Step 5 Print i Menggunakan metode Print untuk mencetak hasil Next i Program di atas akan mencetak angka pada layar yang dimulai dengan angka 5 dan berakhir pada angka 25 Hasil cetakan yang terlihat pada layar akan seperti ini: Anda juga dapat keluar dari loop For...Next sebelum loop selesai dieksekusi. Anda dapat menggunakan pernyataan Exit For. Dengan cara ini Anda bisa merespon event tertentu yang terjadi setelah loop dijalankan sesuai jumlahnya yang telah ditentukan. Sebagai contoh, pada loop For...Next berikut ini: For i 1 To 10 InpName = InputBox( Silahkan masukkan nama atau ketik Selesai untuk keluar. ) If InpName = Selesai Then Exit For Print InpName Next i 309
310 Loop meminta pemakai memasukkan 10 nama dan mencetaknya pada form, kecuali kata Done diketikkan (dalam hal ini program akan melompat ke pernyataan di bawah pernyataan Next). Pernyataan Exit For biasanya digunakan dengan pernyataan If. Pernyataan ini sangat berguna untuk menangani kasus tertentu yang muncul pada loop, seperti berhenti apabila telah mencapai batas yang telah ditentukan. Loop Do Alternatif lain dari penggunaan loop For...Next, Anda bisa menggunakan loop Do yang menjalankan sekelompok pernyataan sampai kondisi tertentu nilainya True pada loop tersebut. Loop Do sangat bermanfaat karena sering kali Anda tidak tahu berapa banyak loop yang harus diulangi. Sebagai contoh, Anda mungkin ingin mengizinkan pemakai mengetikkan nama pada database sampai ia mengetikkan kata Done pada kotak input. Dalam hal ini, Anda bisa menggunakan loop Do untuk mengulang terus-menerus sampai string teks Done dimasukkan. Loop Do memiliki beberapa format, tergantung pada dimana dan bagaimana kondisi loop dievaluasi. Sintaks yang paling umum adalah sebagai berikut: Do While condition Block of statement to be executed Loop Sebagai contoh, loop Do berikut ini akan memproses input sampai kata Done diketikkan. Do While InpName <> Done InpName = InputBox( Silahkan masukkan nama atau ketik Selesai untuk keluar. ) If InpName <> Selesai Then Print InpName Loop Pernyataan berkondisi pada loop ini adalah InpName <> Selesai, yang diterjemahkan oleh compiler Visual Basic sebagai lakukan loop selama variabel InpName tidak mengandung kata Selesai. Di sini kita mengetahui sifat loop Do: jika kondisi di bagian atas loop tidak True pada waktu pernyataan Do pertama kali diperiksa, loop Do tidak akan dijalankan. Disini variabel InpName tidak mengandung string teks Done sebelum loop dimulai, Visual Basic akan melompati loop dan 310
311 melanjutkan baris di bawah kata Loop. Perhatikan jenis loop ini membutuhkan If...Then tambahan untuk mencegah nilai exit ditampilkan apabila pemakai mengetikkannya. Jika Anda ingin agar loop dijalankan setidaknya sekali pada program, letakkanlah pengujian kondisi di bagian bawah loop. Sebagai contoh: Do InpName = InputBox( Silahkan masukkan nama atau ketik Selesai untuk keluar. ) If InpName <> Selesai Then Print InpName Loop While InpName <> Selesai Program di atas sebenarnya sama dengan loop Do sebelumnya, tetapi disini kondisi loop diuji setelah nama diterima dari fungsi InputBox. Cara ini memiliki keuntungan yaitu dapat meng-update variabel InpName sebelum pengujian kondisi pada loop, jadi nilai Selesai yang sudah ada sebelumnya tidak akan menyebabkan loop dilompati. Menguji kondisi loop di bagian bawah memastikan agar loop Anda dijalankan setidaknya satu kali, tetapi terkadang hal ini membutuhkan beberapa pernyataan tambahan untuk memproses data. Menghindari Loop Tak Berhingga Karena sifat loop Do, Anda harus merancang kondisi pengujian agar setiap loop memiliki titik keluar yang sah. Jika pengujian loop tidak pernah menghasilkan nilai False, loop akan dijalankan terus menerus dan program Anda tidak akan merespon input apa pun. Perhatikan cotoh berikut ini Do Angka = InputBox( Silahkan masukkan angka. Ketik -1 untuk keluar. ) Angka = Angka * Angka Print Angka Loop While Angka >= 0 Pada loop ini, pemakai mengetikkan angka secara terus-menerus, dan program memangkatkan setiap angka dan mencetaknya pada layar. Sayangnya, apabila pemakai merasa sudah cukup, ia tidak bisa keluar karena kondisi keluar tidak 311
312 berfungsi. Apabila pemakai mengetikkan angka -1, program memangkatkannya dan variabel Angka akan berisi nilai 1. (Masalah ini bisa diatasi dengan menset kondisi keluar yang berbeda). Memperhatikan loop tak berhingga sangatlah penting apabila menulis loop Do. Loop Do yang Anda gunakan sejauh ini telah menggunakan kata While untuk menjalankan sekelompok pernyataan selama kondisi loop True. Visual Basic juga mengizinkan Anda menggunakan kata Until pada loop Do untuk terus dijalankan sampai (until) kondisi tertentu dipenuhi. Kata Until bisa digunakan di bagian atas atau bawah loop Do untuk memeriksa suatu kondisi, sama seperti While. Sebagai contoh, loop Do, berikut ini menggunakan Until untuk melakukan loop berulang kali sampai pemakai mengetikkan kata Selesai pada kotak input. Do InpName = InputBox( Silahkan masukkan nama atau ketik Selesai untuk keluar. ) If InpName <> Selesai Then Print InpName Loop Until InpName = Selesai Seperti yang bisa Anda lihat, loop yang menggunakan Until serupa dengan loop yang menggunakan While, kecuali kondisi tes biasanya mengandung operator yang berlawanan (tidak sama dengan). Jika Anda merasa lebih mudah menggunakan Until, gunakanlah untuk menguji kondisi pada loop Do Anda. Soal Latihan 1. Deklarasi variabel tanpa pernyataad Dim disebut dengan istilah : a. Explicit declaration b. Implicit declaration c. Numbered declaration d. Random declaration 2. Tipe data buatan programmer dinyatakan dengan : a. int b. double c. type 312
313 d. string 3. Salah dalam penulisan kata kunci termasuk jenis kesalahan : a. sytax error b. runtime error c. logic error d. mistype error Soal Praktek 4. Buatlah sebuah program yang meminta user memasukkan angka dari 1 hingga 12 kemudian program akan menampilkan nama bulan yang sesuai dengan angka pilihan user di sebuah textbox. Aksi menampilkan bulan dipicu oleh button. 5. Buatlah sebuah program yang meminta user memasukkan sebuah angka kemudian program akan menampilkan hasil perhitungan kuadrat, mod dan penjumlahan dengan dirinya sendiri pada sebuah message box. 313
314 BAB IV Pemrograman Lanjut 4.1 Modul Bekerja dengan Modul Standar Apabila Anda menulis program yang panjang, program Anda mungkin akan membutuhkan beberapa form dan event procedure yang menggunakan beberapa variabel dan rutin yang sama. Secara default, variabel sifatnya lokal untuk sebuah event procedure, artinya variabel tersebut hanya bisa dibaca atau diubah dalam event procedure di mana ia dibuat. Begitu juga, event procedure sifatnya lokal untuk form tempat ia diciptakan. Sebagai contoh, Anda tidak bisa memanggil event procedure cmdquit_click dari Form2 apabila event procedure tersebut berhubungan dengan Form1. Untuk membagi variabel dan prosedur untuk semua form dan event procedure pada sebuah proyek. Anda perlu mendeklarasikannya pada salah satu modul standar atau standard module untuk proyek tersebut. Modul standar atau code module adalah sebuah file khusus yang memiliki ekstensi.bas dan mengandung variabel dan prosedur yang bisa disimpan ke dalam disk menggunakan perintah Save Module1 As pada menu File. Tetapi tidak seperti form modul standar tidak mengandung objek atau setting properti, hanya kode-kode yang bisa ditampilkan dan disunting pada jendela Code. Membuat Modul Standar Untuk membuat sebuah modul standar baru dalam program, klik panah bawah pada tombol Add Form pada toolbar, lalu klik Module, atau klik perintah Add Module pada menu Project. Apabila Anda membuat modul standar yang baru, modul akan langsung nampak pada jendela Code. Modul standar yang pertama dalam program akan diberi nama Module1, tetapi Anda bisa mengubah nama ini sewaktu menyimpannya ke dalam disk. 314
315 Membuat dan Menyimpan Modul Standar 1. Jalankan Visual Basic dan bukalah sebuah proyek standar baru, lalu klik perintah Add Module pada menu Project dan klik Open. Visual Basic menambahkan sebuah modul standar bernama Module1 ke dalam proyek Anda. Modul tersebut muncul dalam jendela Code seperti gambar berikut ini: Gambar Jendela Kode Kotak daftar Objek dan Procedure menunjukkan bahwa bagian deklrasi umu (general declaration) modul standar sedang terbuka. Variabel dan prosedur yang dideklarasikan di sini akan dapat digunakan oleh seluruh bagian program. (Anda akan mendeklarasikan variabel dan prosedur nanti.) 2. Klik ganda baris judul jendela Project untuk melihat keseluruhan jendela Project. Jendela Project muncul seperti gambar berikut ini. Gambar Jendela Project Jendela project menampilkan modul standar yang Anda tambahkan ke dalam program dalam sebuah folder baru. Nama Module1 dalam tanda kurung menandakan nama file default untuk modul tersebut. Nama objek Module (nama modul dalam program) tampak di sebelah kiri tanda kurung. Anda akan mengubah kedua setting ini pada langkah berikutnya. 315
316 3. Pada menu File, klik perintah Save Module1 As untuk menyimpan modul standar yang kosong ke dalam disk. 4. Klik ganda baris judul jendela Properties. Jendela Properties muncul berukuran penuh, seperti gambar di bawah ini: Gambar Jendela Properties Karena modul standar tidak memiliki objek, satu-atunya properti yang ia meiliki adalah Name. Properti Name berfungsi menentukan nama objek untuk modul tersebut, yang bisa Anda gunakan untuk membedakan satu modul dengan modul lainnya jika Anda membuat lebih dari satu modul. Sesuai aturan, nama modul diberi awalan mod. 5. Ubahlah properti Name menjadi modvariables lalu tekan Enter. Nama objek dan modul standar telah diubah pada jendela Properties, jendela Project, dan jendela Code. Membuat Prosedur General Purpose Selain sebagai tempat untuk menyimpan variabel publik, modul standar juga bisa digunakan untuk menyimpan prosedur general-purpose yang bisa dipanggil dari mana saja dalam program. Prosedur general-purpose (prosedur umum) tidak sama seperti event procedure karena tidak berhubungan dengan event atau objek yang Anda buat menggunakan kontrol toolbox. Prosedur general-purpose mirip dengan pernyataan bulit-in (yang sudah disediakan) pada Visual Basic; tinggal dipanggil namanya, bisa menerima argumen, dan masing-masing melakukan tugas tertentu. 316
317 Sebagai contoh, bayangkan sebuah program yang memiliki tiga mekanisme untuk mencetak bitma yaitu: sebuah perintah menu bernama Print, sebuah tombol toolbar Print, dan sebuah icon printer drag-and-drop. Anda bisa meletakkan rutin pencetakan yang sama pada masing-masing dari ketiga event-procedure tersebut, atau Anda bisa menangani permintaan pencetakan dari ketiga sumber menggunakan satu prosedur dalam modul standar. Prosedur general-purpose dapat menghemat waktu Anda, tidak perlu mengetik ulang, mengurangi kemungkinan error, membuat ukuran program menjadi lebih kecil dan lebih mudah ditangani, serta membuat event procedure lebih mudah dibaca. Anda bisa membuat tiga jenis prosedur general-purpose dalam modul standar: Prosedur Function. Prosedur ini dipanggil berdasarkan namanya dari dalam event procedure atau prosedur lain. Prosedur ini bisa menerima argumen dan selalu mengembalikan suatu nilai dalam nama fungsinya. Biasanya digunakan untuk perhitungan. Prosedur Sub. Prosedur ini dipanggil berdasarkan namanya dari dalam event procedure atau prosedur lain. Bisa menerima argumen, dan juga bisa digunakan untuk melakukan tugas dalam prosedur dan mengembalikan nilai. Tetapi tidak seperti fungsi, Sub tidak mengembalikan nilai yang berhubungan dengan nama Sub tertentu (walaupun bisa mengembalikan nilai melalui nama variabel). Prosedur Sub biasanya digunakan untuk menerima atau memproses input, menampilkan output, atau menset properti. Prosedur Property. Prosedur ini digunakan untuk membuat dan memanipulasi properti buatan dalam program. Ini adalah sarana yang bermanfaat di mana Anda bisa mengubah kontrol Visual Basic yang sudah ada dan meningkatkan bahasa Visual Basic dengan membuat objek, properti, serta metode baru. Keuntungan Prosedur General-Purpose Prosedur general purpose mengizinkan Anda menghubungkan rutin yang sering digunakan dengan nama yang dikenali pada modul standar. Prosedur general purpose memiliki manfaat sebagai berikut: Menghilangkan baris yang berulang. Anda bisa mendefinisikan prosedur sekali saja dan program dapat menjalankannya berulang kali. 317
318 Membuat program lebih mudah dibaca. Program yang terbagi ke dalam sekumpulan bagian-bagian kecil lebih mudah dipilah dan dipahami dari pada program yang terbuat dari satu bagian yang besar. Menyederhanakan pengembangan program. Program yang dipisahkan ke dalam unit-unit logikal lebih mudah dirancang, ditulis, dan di-debug. Selain itu, jika Anda menulis sebuah program dalam setting kelompok, Anda bisa saling menukar prosedur dan modul. Bisa digunakan kembali oleh program lain. Anda bisa dengan mudah memasukkan prosedur modul standar ke dalam proyek pemrograman yang lain. Meningkatkan bahasa Visual Basic. Prosedur terkadang bisa melakukan tugas-tugas yang tidak bisa dilaksanakan oleh perintah-perintah Visual Basic yang sudah ada. 4.2 Menulis Prosedur Function Prosedur Function adalah sekelompok pernyataan yang terletak di antara pernyataan Function dan End Function dalam sebuah modul standar. Pernyataan dalam fungsi ini melakukan suatu tugas, biasanya memproses teks, menangani input, atau menghitung nilai numerik. Anda menjalankan (atau memanggil) sebuah fungsi dalam program dengan meletakkan nama fungsi tersebut dalam pernyataan program dengan argumen yang dibutuhkan. (Argumen adalah data yang digunakan untuk membuat fungsi bekerja). Dengan kata lain, menggunakan prosedur Function sama seperti menggunakan fungsi built-in seperti Time, Int, atau Str. Sintaks Fungsi Sintaks dasar dari fungsi adalah sebagai berikut: Function FunctionName([argument]) [As Type] function statement End Function keterangan: FunctionName adalah nama fungsi yang Anda buat dalam modul standar Arguments adalah daftar argumen opsional (dipisahkan oleh koma) yang akan digunakan dalam fungsi. 318
319 Type adalah pilihan yang menentukan tipe fungsi (defaultnya adalah variant) Function statements adalah blok pernyataan yang akan melakukan pekerjaan fungsi tersebut. Fungsi selalu mengembalikan suatu nilai kepada prosedur yang memanggilnya dalam nama fungsi (FunctionName). Untuk alasan ini, pernyataan terakhir dalam fungsi seringkali merupakan pernyataan penugasa yang meletakkan perhitungan akhir dari fungsi dalam Function Name. Sebagai contoh, prosedur Function bernama TotalPajak yang ditunjukkan di bawah menghitung pajak untuk sebuah item lalu memberikan hasilnya ke nama TotalPajak: Function TotalPajak(Biaya) PajakNegara = Biaya * 0.05 PajakKota = Biaya * TotalPajak = PajakNegara + PajakKota End Function Memanggil Prosedur Function Untuk memanggil fungsi TotalPajak pada event procedure, Anda harus menggunakan pernyataan yang serupa dengan berikut ini: lblpajak.caption = TotalPajak(500) Pernyataan ini menghitung total pajak yang dibutuhkan untuk item $500 lalu mengirimkan hasilnya ke properti Caption dari objek lblpajak. Fungsi TotalPajak juga bisa menggunakan variabel sebagai argumennya, seperti ditunjukkan pada pernyataan berikut ini: TotalBiaya = HargaJual + TotalPajak(HargaJual) Baris ini menggunakan fungsi TotalPajak untuk menentukan pajak untuk nilai pada variabel HargaJual lalu menambahkannya ke dalam HargaJual untuk mendapatkan biaya total dari sebuah item. Anda bisa lihat sekarang betapa jelasnya kode jika menggunakan fungsi. Menulis Prosedur Sub Prosedur Sub mirip dengan prosedur Function, kecuali Sub tidak mengembalikan nilai yang berhubungan dengan namanya. Sub biasanya digunakan untuk mendapatkan input dari pemakai, menampilkan atau mencetak informasi, atau memanipulasi beberapa properti yang berhubungan dengan suatu kondisi. Sub juga 319
320 digunakan untuk memproses dan mengembalikan beberapa variabel selama pemanggilan fungsi.sebagian besar fungsi hanya mengembalikan satu nilai, tetapi prosedur Sub bisa mengembalikkan banyak nilai. Sintaks Prosedur Sub Sintaks dasar dari prosedur Sub adalah sebagai berikut: Sub ProcedureName([arguments]) Procedure statements End Sub Keterangan: ProcedureName adalah nama prosedur Sub yang Anda buat Arguments adalah daftar argumen opsional (dipisahkan oleh koma, jika ada lebih dari satu) yang akan digunakan dalam Sub. Procedure Statements adalah blok pernyataan yang melaksanakan tugas dari prosedur. Pada pemanggilan prosedur, nilai, dan tipe argumen yang dikirimkan ke dalam prosedur Sub harus sesuai dengan nilai dan tipe dari argumen yang berada dalam deklarasi Sub. Jika variabel yang dikirimkan ke dalam Sub diubah selama prosedur, variabel yang diubah tersebut akan dikembalikan ke dalam program. Secara default, prosedur Sub yang dideklarasikan dalam modul bersifat publik, juga bisa dipanggil oleh semua event procedure. Anda bisa menggunakan prosedur Sub berikut ini untuk menambahkan nama ke dalam kotak daftar pada form pada saat program berjalan. Prosedur tersebut menerima satu variabel string yang dikirimkan berdasarkan referensi. Jika prosedur Sub ini dideklarasikan dalam modul standar, ia bisa dipanggil dari semua event procedure pada program: Sub TambahNamaKeDaftar(orang$) If orang$ <> Then Form1.List1.AddItem orang$ Pesan$ = orang$ & ditambahkan ke kotak daftar 320
321 Else Pesan$ = Nama tidak ditentukan End If MsgBox (Pesan$).. Tambah Nama End Sub Prosedur TambahNamaKeDaftar menerima nama yang akan ditambahkan menggunakan argumen orang$, sebuah variabel string yang diterima berdasarkan referensi selama pemanggilan prosedur. Jika nilai orang$ tidak kosong atau null, nama yang ditentukan akan ditambahkan ke dalam objek kotak daftar List1 menggunakan metode AddItem, dan pesan konfirmasi ditampilkan oleh fungsi MsgBox. Jika argumen itu null, prosedur melompati metode AddItem dan menampilkan pesan Nama tidak ditentukan. Memanggil Prosedur Sub Untuk memanggil prosedur Sub pada program, Anda perlu menentukan nama prosedur tersebut lalu menampilkan argumen yang dibutuhkan oleh Sub. Sebagai contoh, untuk memanggil prosedur TambahNamaKeDaftar menggunakan string literal (memanggilnya berdasarkan nilai), Anda bisa mengetikkan pernyataan berikut ini: TambahNamaKeDaftar Jono Katijo Hal yang sama, Anda bisa memanggil prosedur menggunakan variabel (memanggilnya berdasarkan referensi) dengan mengetikkan pernyataan berikut: TambahNamaKeDaftar NamaBaru$ Pada kedua kasus di atas, prosedur TambahNamaKeDaftar akan menambahkan nama yang ditentukan ke dalam kotak daftar. Pada prosedur Sub ini, pemanggilan berdasarkan nilai dan referensi akan menghasilkan hasil yang sama karena argumennya tidak dimodifikasi dalam prosedur. Keuntungan penghematan menggunakan prosedur Sub menjadi jelas apabila memanggil prosedur ini berulang kali, seperti ditunjukkan pada contoh di bawah ini: TambahNamaKeDaftar Jono Katijo TambahNamaKeDaftar Suharmin Katimin Do 321
322 NamaBaru$ = InputBox( Masukkan nama kotak daftar., Tambah Nama ) TambahkanNamaKeDaftar NamaBaru$ Loop Until NamaBaru$ = Disini pemakai diizinkan memasukkan sebanyak mungkin nama ke dalam kotak list. Mengirimkan Argumen Berdasarkan Nilai Pada pembahasan mengenai prosedur Sub, Anda telah belajar bahwa argumen bisa dikirimkan ke dalam prosedur berdasarkan referensi atau berdasarkan nilai. Apabila variabel dikirimkan berdasarkan referensi (default), semua perubahan yang dilakukan kepada variabel akan dikirimkan kembali ke prosedur pemanggilnya. Mengirimkan argumen berdasarkan referensi memiliki beberapa keuntungan, asalkan Anda berhati-hati tidak mengubah variabel tersebut secara tidak sengaja dalam prosedur. Sebagai contoh perhatikanlah deklarasi dan pemanggilan prosedur Sub berikut ini. Sub BiayaBungaTambahan(Biaya, Total) Biaya = Biaya * 1.05 Total = Int(Biaya) buat menjadi integer dan kembalikan End Sub... Harga = 100 Total = 0 BiayaBungaTambahan Harga, Total Print Harga; pada bunga 5% adalah ; Total Pada contoh ini, programmer mengirimkan dua buah variabel berdasarkan referensi kepada prosedur BiayaBungaTambahan yaitu Harga dan Total. Programmer berencana menggunakan variabel Total yang di-update pada metode Print berikutnya, tetapi sayangnya ia lupa kalau variabel Harga juga ikut di-update pada langkah berikutnya dalam prosedur. (Karena Harga dikirimkan berdasarkan referensi, perubahan pada Biaya secara otomatis akan menghasilkan perubahan 322
323 yang sama pada Harga). Hal ini menghasilkan hasil error berikut ini apabila program dijalankan: 105 pada 5% bunganya adalah 105. Perintah ByVal Cara yang jelas untuk menghindari masalah ini adalah dengan tidak memodifikasi variabel yang dikirimkan kepada prosedur. Tetapi solusi ini membutuhkan kode program yang banyak dan tidak baik digunakan jika Anda bekerja dengan beberapa programmer lain. Cara yang lebih baik adalah menggunakan perintah ByVal pada daftar argumen pada waktu Anda mendeklarasi sebuah prosedur. Dengan cara ini, Visual Basic akan menyimpan salinan dari argumen asli dan mengembalikannya dengan tidak berubah apabila prosedur berakhir (bahkan jika variabel tersebut dimodifikasi dalam prosedur). ByVal digunakan pada daftar argumen dengan cara berikut ini: Sub BiayaBungaTambahan(ByVal Biaya, Total) Apabila argumen Cost dideklarasikan menggunakan ByVal, program menghasilkan output yang benar: 100 pada bunga 5% adalah 105 Mengirimkan Variabel Berdasarkan Nilai Jika Anda tidak ingin menggunakan perintah ByVal, Anda bisa menggunakan cara lain untuk mencegah perubahan pada variabel yang dikirimkan: Anda bisa mengubahnya menjadi nilai literal dengan meletakkannya dalam tanda kutip. Trik yang jarang dipakai ini selalu berhasil pada Visual Basic, dan membuat pemanggilan prosedur Anda lebih mudah. Jika Anda mengirimkan variabel berdasarkan nilai, Anda lebih akan tahu apa yang Anda maksudkan. Ini juga terkadang merupakan cara yang efisien untuk mengirimkan variabel berdasarkan nilai. Sintaks untuk memanggil prosedur BiayaBungaTambahan dan mengirimkan variabel Harga berdasarkan nilai adalah: BiayaBungaTambahan (Harga), Total Jika program contoh dipanggil dengan cara ini, hasil yang tepat dihasilkan 100 pada bunga 5% adalah
324 4.3 Bekerja dengan Koleksi Bekerja dengan Koleksi Objek Anda telah mengetahui bahwa objek-objek pada form disimpan bersama-sama dalam file yang sama. Tetapi apakah Anda juga mengetahui bahwa Visual Basic menganggap objek-objek tersebut merupakan anggota dari grup atau kelompok yang sama. Pada terminologi Visual Basic, seluruh kelompok objek pada form disebut dengan Controls Collection atau koleksi Controls. Kontrol Controls diciptakan secara otomatis pada saat Anda membuka form baru dan menambahkan objek ke dalam for. Pada kenyataannya, Visual Basic memelihara beberapa koleksi objek standar yang bisa Anda gunakan apabila Anda menulis program. Notasi Koleksi Setiap koleksi pada program memiliki namanya sendiri, jadi Anda bisa memanggilnya sebagai unit yang terpisah pada kode progam. Sebagai contoh, seperti yang Anda pelajari, koleksi yang mengandung semua obejk pada form disebut koleksi Controls. Tetapi karena Anda bisa memiliki lebih dari satu form pada program (dan oleh karena itu bisa memiliki lebih dari satu koleksi Controls), Anda perlu menyertakan nama form apabila menggunakan kontrol Controls pada program yang mengandung lebih dari satu form. Anda harus menggunakan nama berikut ini pada kode program: Form1.Controls Tanda titik di antara nama objek Form1 dan Controls membuat Controls nampak seperti properti pada notasi ini, tetapi programmer Visual Basic menjelaskan koleksi Controls sebagai objek yang dikandung oleh objek Form1. Hubungan (atau hirarki) antara objek-objek sama seperti hubungan antara folder pada nama path.selain bekerja dengan objek dan koleksi, Visual Basic juga mengizinkan Anda menjelajahi sistem untuk objek aplikasi lain dan menggunakannya pada program. Anda bisa merujuk setiap objek pada koleksi, atau anggota individual dari koleksi dengan beberapa cara. Cara pertama adalah dengan menentukan objek menggunakan nama mereka langsung pada pernyataan penugasan. Sebagai contoh, pernyataan berikut ini: Form1.Controls!Label1.Caption = Pekerja 324
325 akan merujuk kepada objek Label1 pada koleksi Controls dan mengubah properti Caption menjadi Pekerja.. Tanda seru(!) digunakan untuk menghubungkan objek Label1 dengan koleksi Control. Walaupun pernyataan ini mungkin rumit, tetapi dapat menjelaskan hirarki dalam koleksi tersebut. Cara kedua untuk merujuk objek dalam koleksi adalah dengan menentukan posisi indeks dari objek tersebut dalam grup. Visual Basic menyimpan objek koleksi dalam urutan terbalik pada saat mereka diciptakan, jadi Anda bisa menggunakan uruturutan kelahiran objek untuk merujuk beberapa objek secara individual, atau Anda bisa menggunakan loop untuk merujuk beberapa objek sekaligus. Sebagai contoh, untuk mengenali objek terakhir yang dibuat pada form, Anda harus menentukan indeks 0 (nol) seperti contoh berikut ini: Form1.Controls(0).Caption = Bisnis Pernyataan ini mengubha properti Caption dari objek terakhir pada form menjadi Bisnis. (Objek terakhir keuda yang dibuat memiliki indeks 1, objek terakhir ketiga yang dibuat memiliki indeks 2, dan seterusnya). Menulis Loop For Each... Next Walaupun Anda bisa merujuk anggota individual dari suatu koleksi, cara paling bermanfaat untuk memanipulasi objek dalam koleksi adalah dengan memprosesnya sebagai grup. Pada kenyataannya, alasan kenapa koleksi digunakan adalah agar Anda bisa memproses kelompok objek secara efisien. Sebagai contoh, Anda mungkin menampilkan, memindahkan, mengurutkan, mengubah nama, atau mengubah ukuran seluruh koleksi objek sekaligus. Untuk menangani tugas-tugas ini, Anda bisa menggunakan sebuah loop khusus bernama For Each...Next untuk berputar melewati objek dalam koleksi satu persatu. Loop For Each... Next serupa dengan loop For... Next. Apabila loop For Each... Next digunakan dengan koleksi Controls, tampak seperti ini: For Each Control in NamaForm.Controls Proses objek Next Control Control adalah sebuah variabel khusus yang merepresentasikan objek saat ini dalam koleksi, dan NamaForm adalah nama form. Badan loop ini digunakan untuk memproses objek-objek individual dari koleksi. Sebagai contoh, Anda mungkin ingin 325
326 mengubah properti Enabled, Left, Top, Caption, atau Visible dari objek-objek dalam koleksi, atau Anda ingin menampilkan nama setiap objek dalam kotak list. Menggunakan Koleksi Visual Basic Visual Basic menyediakan dukungan built-in untuk koleksi-koleksi berikut ini selain koleksi Controls. Tabel : Koleksi Dalam Visual Basic Koleksi Keterangan Koleksi Forms Koleksi semua form yang di-load ke dalam program. Menggunakan loop For Each...Next, Anda bisa mengatur karakteristik dari satu atau lebih form atau satu atau lebih objek yang terdapat dalam form. Koleksi Printers Koleksi semua printer yang tersedia pada sistem komputer Anda. Menggunakan For Each...Next dan metode AddItem, Anda bisa menampilkan nama-nama dari semua printer yang tersedia pada kotak list, lalu menizinkan pemakai memilih salah satu printer untuk digunakan mencetak. Koleksi Database Berbagai koleksi yang berhubungan dengan akses data dan pengelolaan database. Koleksi database yang sangat berguna di antaranya mencakup Columns, Containers, Indexes, dan Databases. 4.4 Array Bekerja dengan Array Variabel Pada bagian ini, Anda akan belajar cara menggunakan teknik yang sama untuk menyimpan variabel dalam array. Sama seperti array kontrol dan koleksi, array variabel (disebut array saja) mengizinkan Anda merujuk seluruh kelompok nilai menggunakan satu nama lalu memproses setiap nilai secara individual atau sebagai grup menggunakan loop For...Next atau loop Do. Array dibuat atau dideklarasikan dengan cara yang sama seperti variabel. Tetapi letak pendeklarasian array menentukan di mana array tersebut bisa digunakan pada program. Jika array dideklarasikan secara lokal, ia hanya bisa digunakan pada 326
327 prosedur tempat ia dideklarasikan. Jika array dideklarasikan secara publik pada modul standar, ia bisa digunakan di mana saja pada program. Apabila Anda mendeklarasikan array, Anda perlu menyertakan informasi berikut ini pada pernyataan deklarasi: Nama Array : Nama yang Anda gunakan untuk merepresentasikan array dalam program. Secara umum, nama array mengikuti aturan yang sama dengan nama variabel. Tipe Data : Tipe data yang akan Anda simpan dalam array. Dalam kebanyakan kasus, semua variabel dalam array memiliki tipe yang sama. Anda bisa menentukan salah satu dari tipe data dasar, atau jika Anda tidak yakin tipe data yang akan disimpan pada array atau Anda ingin menyimpan lebih dari satu tipe data, gunakanlah tipe variant. Jumlah Dimensi : Jumlah dimensi yang akan dikandung oleh array. Kebanyakan array berupa satu dimensi atau dua dimensi, tetapi Anda bisa menambahkan dimensi lagi jika Anda bekerja dengan model matematika kompleks bentuk tiga dimensi. Jumlah Elemen : Jumlah elemen yang akan dikandung oleh array. Elemen pada array berhubungan dengan indeks array. Secara default, index array pertama adalah 0 (nol), sama seperti array kontrol. Mendeklarasikan Array Berukuran Tetap Sintaks dasar untuk Array berukuran tetap adalah sebagai berikut: Public NamaArray(Dim1Elements, Dim2Elements,...)As TipeData Keterangan: Public adalah perintah yang menciptakan array global. NamaArray adalah nama variabel array. Dim1Elements adalah jumlah elemen pada dimensi pertama array Dim2Elements adalah jumlah elemen pada dimensi kedua array (dimensi tambahan bisa disertakan) TipeData adalah perintah yang berhubungan dengan tipe data yang akan disertakan dalam array. Sebagai contoh, untuk mendeklarasikan sebuah array publik string satu dimensi bernama Karyawan yang memiliki ruang untuk 10 nama pegawai, Anda bisa mengetikkan pernyataan berikut ini pada modul standar: 327
328 Public Karyawan(9) As String Apabila Anda membuat Array, Visual Basic akan menyediakan ruang untuk array tersebut dalam memori. Gambar di bawah ini menunjukkan bagaimana array diorganisir. Kesepuluh elemen array diberi nomor 0 sampai 9, bukan dari 1 sampai 10, karena indeks array dimulai dari 0 keculai jika Anda menggunakan pernyataan Option Base. Karyawan Untuk mendeklarasikan sebuah array publik dua dimensi bernama PapanNilai yang memiliki ruang 2 baris dan 9 kolom data bertipe variant, Anda harus mengetikkan pernyataan berikut ini pada modul standar. Public PapanNilai(1, 8) As Variant Apabila Anda mendeklarasikan array dua dimensi, Visual Basic menyediakan ruang dalam memori. Anda lalu bisa menggunakan array ini pada program sama seperti tabel nilai seperti ditunjukkan pada gambar dibawah ini Baris 0 1 Papan Nilai Kolom
329 Bekerja Dengan Elemen Array Setelah Anda mendeklarasikan array menggunakan perintah Static atau Public, Anda siap menggunakan array tersebut pada program. Untuk merujuk elemen dari suatu array, Anda harus menggunakan nama array dan indeks array dalam tanda kutip. Indeks tersebut harus berupa nilai integer. Sebagai contoh, indeks bisa berupa angka sederhana atau variabel integer. Pernyataan berikut ini akan menugaskan nilai Sutrisno ke elemen 5 dari array Karyawan: Karyawan(1) = Megawati Karyawan(5) = Sutrisno Ini menghasilkan hasil seperti gambar di bawah ini pada array Karyawan. Karyawan 0 1 Megawati Sutrisno Begitu juga pernyataan berikut ini akan menugaskan angka 4 ke dalam bari 0, kolom 2 pada contoh array PapanNilai; PapanNilai(0, 2) = 4 PapanNilai(1, 2) = 6 PapanNilai(0, 6) = 3 PapanNilai(1, 6) = 7 Ini akan menghasilkan seperti gambar berikut ini Papan Nilai Kolom Baris
330 Anda bisa menggunakan teknik pengindeksan ini untuk menugaskan atau mengambil setiap elemen array. Contoh program membuat array berukuran tetap untuk menyimpan temperatur. Program ini menggunakan sebuah array publik satu dimensi bernama Temperatur untuk mencatat temperatur selama seminggu. Program ini mendemonstrasikan bagaimana Anda bisa menggunakan array untuk menyimpan dan memproses sekumpulan nilai yang saling berhubungan dalam program. Temperatur disimpan dalam array menggunakan fungsi InputBox dan loop For...Next. Counter loop digunakan untuk merujuk setiap elemen array. Isi array lalu ditampilkan pada form menggunakan loop For...Next dan metode Print, dan temperatur rata-rata dihitung dan ditampilkan. Langkah-langkahnya adalah sebagai berikut; 1. Pada menu file, klik perintah New Project, lalu klik OK. 2. Gunakan kontrol CommandButton untuk membuat tiga buah tombol perintah pada bagian bawah form. 3. Ubahlah properti berikut ini untuk objek tombol perintah dan form: Tabel : Perubahan Properti Objek Properti Setting Command1 Caption Name Masukkan temperatur cmdmasuktemp Command2 Caption Name Tampilkan temperatur cmdtampiltemp Command3 Caption Name Keluar cmdkeluar Form1 Caption AutoReDraw Temperatur True 4. Form tampak sebagai berikut: 330
331 Gambar Form 5. Pada menu Project, klik perintah Add Module, lalu klik Open untuk membuat sebuah modul standar untuk deklarasi array. 6. Ketikkan pernyataan berikut ini pada modul standar: Option Base 1 Public Temperatur(7) As Variant Pernyataan Option Base mengubah indeks elemen pertama array dari 0 menjadi 1 untuk semua array dalam program. Pernyataan kedua membuat sebuah array publik bernama Temperatur (yang bertipe variant) yang memiliki tujuh buah elemen. Karena array ini telah dideklarasikan secara publik, ia akan dapat digunakan pada seluruh bagian program. 7. Tutuplah jendela Code modul standar, lalu klik ganda tombol Masukkan Temperatur Event procedure cmdmasuktemp_click muncul pada jendela code. 8. Ketikkan pernyataan program berikut ini untuk meminta pemakai memasukkan temperatur dan me-load input ke dalam array: Cls Prompt$ = Masukkan derajat temperatur For i% = 1 To 7 Title$ = Hari & i% Temperatur(i%) = InputBox(Prompt$, Title$) Next i% Loop For...Next menggunakan variabel counter i% sebagai indeks array untuk me-load temperatur ke dalam elemen array 1 sampai 7. Input diterima dari 331
332 fungsi InputBox, yang menggunakan variabel Prompt$ dan Title$ sebagai argumennya. 9. Bukalah kotak daftar Object pada jendela Code, lalu klik objek cmdtampiltemp. Ketikkan pernyataan berikut ini pada event procedure cmdtampiltemp_click: Print Derajat Temperatur minggu ini: Print For i% = 1 To 7 Print Hari ; i%, Temperatur(i%) Total! = Total! + Temperatur(i%) Next i% Print Print Rata-rata derajat temperatur: ; Total! / 7 Event procedure ini menggunakan metode print untuk menampilkan informasi yang disimpan dalam array Temperatur pada form. Ia menggunakan loop For...Next untuk memutar elemen dalam array, dan menghitung total dari semua temperatur menggunakan pernyataan: Total! = Total! + Temperatur(i%) Baris terakhir pada event procedure menampilkan temperatur rata-rata dari seminggu, hasil dari membagi total temperatur dengan jumlah hari. 10. Bukalah kotak daftar Objek pada jendela Code, lalu klik objek cmdkeluar. Ketikkan pernyataan berikut ini pada event procedure cmdkeluar_click: End 11. Jalankan proyek dengan menekan tombol Start. 12. Klik tombol Masukkan Temperatur, lalu ketikkan tujuh temperatur yang berbeda sewaktu diminta oleh fungsi InputBox. Kotak dialog fungsi InputBox tampak seperti gambar di bawah ini: Gambar Input Box 13. Setelah Anda mengetikkan temperatur, klik tombol Tampilkan Temperatur. 332
333 Visual Basic menggunakan metode Print untuk menampilkan setiap temperatur pada form dan mencetak rata-rata di bagian bawah. Layar Anda akan tampak seperti gambar berikut ini: Gambar Hasil Keluaran Program 14. Klik tombol Keluar untuk keluar dari program. Membuat Array Dinamis Seperti terlihat pada contoh di atas, array sangat bermanfaat untuk memanipulasi serangkain angka, terutama jika Anda memprosesnya menggunakan loop For...Next. Tetapi bagaimana jika Anda tidak yakin seberapa besar array yang akan Anda gunakan sebelum menjalankan program? Visual Basic menangani masalah ini dengan kontainer yang fleksibel bernama array dinamis. Array dinamsi berubah ukurannya pada saat program berjalan, baik sewaktu pemakai menentukan ukuran array berdasarkan kondisi tertentu. Mengubah ukuran array dinamis membutuhkan beberapa langkah karena walaupun ukuran array tidak ditentukan sampai program berjalan. Anda perlu menyediakan tempat untuk array pada saat desain. Untuk membuat array dinamis ikuti langkah-langkah berikut ini: o Tentukan nama dan tipe dari array pada saat desain, abaikan jumlah elemen dalam array. Sebagai contoh, untuk membuat sebuah array dinamis publik bernama Temperatur, ketikkanlah: Public Temperatur() As Variant o Tambahkan kode program untuk menentukan jumlah elemen yang harus berada dalam array pada saat program berjalan. Anda bisa meminta masukan dari 333
334 o o pemakai menggunakan fungsi InputBox, atau Anda bisa menghitung ruang yang dibutuhkan oleh program menggunakan properti atau logika lain. Sebagai contoh, pernyataan berikut ini mendapatkan ukuran array dari pemakai dan menugaskannya ke dalam variabel Hari: Hari = InputBox( Berapa hari?, Membuat Array ) Gunakanlah variabel pada pernyataan ReDim untuk mengubah dimensi array. Sebagai contoh, pernyataan berikut ini mengubah ukuran array Temperatur pada saat program berjalan menggunakan variabel Hari: ReDim Temperatur(Hari) Gunakanlah angka sebagai batas teratas pada loop For...Next untuk memproses elemen array jika perlu. Sebagai contoh, loop For...Next berikut ini menggunakan variabel Hari sebagai batas teratas dari loop. For i% = 1 To Hari Temperatur (i%) = InputBox(Prompt$, Title$) Next 1% Contoh Program Array Dinamis 1. Buatlah program baru seperti pada progam Temperatur sebelumnya. 2. Klik Moduel1 pada jendela Project, lalu klik tombol View Code untuk membukanya pada jendela Code. 3. Ketikkan kode program berikut, sehingga terlihat pada gambar berikut: 4. Public Temperatur() As Variant Gambar Kode Program 334
335 Berbeda dengan contoh sebelumnya dimana pada deklarasi array diisikan angka 7 yang menyatakan banyaknya array yang dibuat. Penghapusan angka 7 ini membuat array menjadi array dinamis. Public Hari As Integer Variabel integer publik Hari akan digunakan untuk menerima input dari pemakai dan mengubah ukuran array dinamis pada saat program berjalan. 5. Tutuplah modul standar. Tutuplah Klik Form1 pada jendela Project, klik tombol View Object, lalu klik ganda tombol Masukkan Temperatur. Ubahlah event procedure cmdmasuktemp_click agar tampak seperti kode berikut: Cls Hari = InputBox( Berapa hari?, Buat Array ) If Hari > 0 Then ReDim Temperatur(Hari) Prompt$ = Masukkan derajat temperatur For i% = 1 To Hari Title$ = Hari & i% Temperatur(i%) = InputBox(Prompt$, Title$) Next i% Baris kedua dan ketiga meminta jumlah temperatur yang akan disimpan oleh pemakai, lalu menggunakan input untuk mengubah ukuran array dinamis. Pernyataan If...Then digunakan untuk memastikan bahwa jumlah hari lebih besar dari 0. Variabel Hari juga digunakan sebagai batas teratas untuk loop For...Next. 6. Bukalah kotak daftar Object, lalu klik objek cmdtampiltemp. Ubahlah event procedure cmdtampilhasil_click agar tampak seperti kode di bawah ini: Print Derajat Temperatur: Print For i% = 1 To Hari Print Hari ; i%, Temperatur(i%) Total! = Total! + Temperatur(i%) Next i% Print Print Rata-rata derajat temperatur: ; Total! / Hari 7. Klik tombol Start untuk menjalankan proyek 8. Klik tombol Masukkan Temperatur, lalu ketikkan 5 apabila Anda diminta memasukkan jumlah hari yang ingin dicatat. 9. Masukkan kelima temperatur seperti yang diminta. 335
336 10. Apabila sudah selesai memasukkan temperatur, klik tombol Tampilkan Temperatur. Program menampilkan kelima temperatur pada form beserta rataratanya. Layar yang dihasilkan seperti berikut: Gambar Hasil Keluaran Program 11. Klik tombol End pada toolbar untuk mengakhiri program. Soal Latihan 1. Nama modul diawali dengan : a. sum b. mod c. sub d. min 2. Berikut ini adalah keuntungan dari prosedur General Purpose kecuali : a. menghilangkan baris yang berulang b. menyederhanakan pengembangan program c. program lebih mudah dibaca d. program terhindar dari error 3. Untuk mencegah perubahan pada variabel dapat digunakan kata perintah : a. ByVal b. Form c. Caption 336
337 d. Statis Soal Praktek 4. Buatlah program untuk melakukan pengurutan 10 bilangan. 5. Buatlah program untuk melakukan perhitungan bunga dengan rumus saldo di kali dengan bunga. Perhitungan ini dilaksanakan di sebuah fungsi tersendiri. Mintalah input dari user untuk saldo awal dan bunga 1.5%. Tampilkan hasil perhitungan saldo. 337
338 Jawaban Soal VB.NET BAB I Soal Latihan 1. b 2. d 3. a 4. c 5. a BAB II Soal Latihan 1. a 2. b 3. d Soal Praktek 4. Langkah langkah : Buat File baru dengan nama Form Pada Toolbox pilih MonthCalender, TextBox, ListBox dan Button Susun ketiga item seperti di soal Click TextBox, ubah property Text dengan nilai Masukkan Keterangan. Klik tanda panah kecil lalu pilih Multiline Click ListBox, ubah property Text dengan nilai Komputer dan Size dengan nilai 100, Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MessageBox.Show("Have Fun With VB", "Pesan") End Sub End Class BAB III Soal Latihan 1. c 2. b 3. a Soal Praktek 4. Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim angka1 As Integer Dim angka2 As Integer angka1 = 4 338
339 End Sub End Class angka2 = 3 angka1 = angka1 * angka2 MessageBox.Show(angka1, "pesan") 5. Langkah-langkah Buat File Windows Application Pilih Button pada Toolbox dan click properti Text, lalu ganti dengan nama Bulan Klik ganda button Tuliskan kode di bawah ini : Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Angka As Integer Angka = 8 Select Case Angka Case 1 MsgBox("Bulan Januari") Case 2 MsgBox("Bulan Februari") Case 3 MsgBox("Bulan Maret") Case 4 MsgBox("Bulan April") Case 5 MsgBox("Bulan Mei") Case 6 MsgBox("Bulan Juni") Case 7 MsgBox("Bulan Juli") Case 8 MsgBox("Bulan Agustus") Case 9 MsgBox("Bulan September") Case 10 MsgBox("Bulan Oktober") Case 11 MsgBox("Bulan November") Case 12 MsgBox("Bulan Desember") End Select End Sub End Class 339
340 BAB IV Soal Latihan 1. d 2. a 3. d Soal Praktek 4. Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim bunga As String bunga = HitungBunga(50000, 1.5) MessageBox.Show("Perhitungan bunga anda " & bunga, "Pesan") End Sub Function HitungBunga(ByVal saldo As Double, ByVal bunga As Double) As String bunga = saldo * bunga saldo = saldo + bunga Return (saldo.tostring) End Function Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class 5. RekeningTabungan Public Class RekeningTabungan Dim saldo As Double Sub setsaldo(byval saldobaru As Double) saldo = saldobaru End Sub Sub hitungtabung(byval plus As Double) saldo = saldo + plus End Sub Sub hitungambil(byval minus As Double) saldo = saldo + minus End Sub Function hitungsaldo() As Double 340
341 Return saldo End Function End Class RekeningDeposit Public Class RekeningDeposit Inherits RekeningTabungan Function hitungbunga(byval bungabaru As Double, ByVal Saldo As Double) As Double Dim hb As Double = Saldo * bungabaru Return hb End Function End Class Kelas Utama Module Module1 Sub main() Dim rt As RekeningTabungan Dim rd As RekeningDeposit Dim saldobunga As Double Dim saldo As Double rt = New RekeningTabungan rd = New RekeningDeposit rd.setsaldo(50000) saldo = rd.hitungsaldo() saldobunga = rd.hitungbunga(1.5, saldo) rd.hitungtabung(saldobunga) saldo = rd.hitungsaldo Console.WriteLine(saldo) End Sub End Module BAB I Soal Latihan 1. b 2. d Visual Basic 341
342 3. b 4. a 5. d BAB II Soal Latihan 1. c 2. d 3. c Soal Praktek 4. Langkah-langkah Buat file EXE baru Pilih TextBox dan Button dari Toolbox Susun Form sepeti gambar di bawah ini : Klik ganda tombol, kemudian isi dengan kode seperti dibawah ini : Private Sub Command1_Click() Text1.Text = "Hello World" Text2.Text = "Selamat Datang Dunia" End Sub 5. Langkah-langkah Buat file EXE baru Pilih TextBox dari Toolbox Pilih MenuEditor dari ToolBar 342
343 Isi Caption dengan Salam dan Name dengan mnusalam Pilih Next Isi Caption dengan Pilih dan Name dengan mnupilihitem Hitamkan Pilih lalu tekan tombol Klik OK, tampilannya akan seperti di bawah ini Klik Ganda menu item Pilih dan masukkan kode di bawah ini : Private Sub mnupilihitem_click() Text1.Text = "Hello World" Text2.Text = "Selamat Datang Dunia" End Sub BAB III Soal Latihan 1. b 2. c 3. a Soal Praktek 4. Langkah-langkah Buat file EXE baru Pilih TextBox dan Button dari Toolbox dan susun di Form Klik Ganda pada Button kemudian tuliskan kode di bawah ini : Private Sub Command1_Click() Dim angka As Integer 343
344 angka = InputBox$("Masukkan sebuah angka dengan kisaran nilai 1 hingga 12") Select Case angka Case 1 Text1.Text = "Januari" Case 2 Text1.Text = "Februari" Case 3 Text1.Text = "Maret" Case 4 Text1.Text = "April" Case 5 Text1.Text = "Mei" Case 6 Text1.Text = "Juni" Case 7 Text1.Text = "Juli" Case 8 Text1.Text = "Agustus" Case 9 Text1.Text = "September" Case 10 Text1.Text = "Oktober" Case 11 Text1.Text = "November" Case 12 Text1.Text = "Desember" End Select End Sub 5. Langkah-langkah Buat file EXE baru Klik ganda pada Form Masukkan kode di bawah ini : Private Sub Form_Load() Dim input_user As Double Dim hslkali As Double Dim hslmod As Double Dim hsljumlah As Double Dim tampil As String angka = Val(InputBox$("Masukkan sebuah Angka")) hslkali = angka * angka hslmod = angka Mod 2 hsljumlah = angka + angka 344
345 MsgBox ("Hasil Kali " & hslkali) MsgBox ("Hasil Mod " & hslmod) MsgBox ("Hasil Jumlah " & hsljumlah) End Sub BAB IV Soal Latihan 1. b 2. d 3. a Soal Praktek 4. Private Sub Form_Load() Static unsorted(10) As Integer Dim temp As Integer Dim tmpstr As String tmpstr = "" unsorted(0) = 3 unsorted(1) = 2 unsorted(3) = 1 unsorted(4) = 9 unsorted(5) = 7 unsorted(6) = 4 unsorted(7) = 8 unsorted(8) = 6 unsorted(9) = 5 For p% = 0 To 10 tmpstr = tmpstr & unsorted(p%) & " " Next p% MsgBox (tmpstr) For i% = 0 To 10 For j% = 0 To i% - 1 If unsorted(j%) > unsorted(j% + 1) Then temp = unsorted(j%) unsorted(j%) = unsorted(j% + 1) unsorted(j% + 1) = temp End If Next j% Next i% MsgBox ("Setelah diurutkan") tmpstr = "" 345
346 For p% = 0 To 10 tmpstr = tmpstr & unsorted(p%) & " " Next p% MsgBox (tmpstr) End Sub 5. Private Sub Form_Load() Dim saldo_awal As Double saldo_awal = InputBox$("Masukkan saldo awal:") saldo_awal = saldo_awal + hitungsaldo(saldo_awal, 1.5) MsgBox ("Saldo Akhir setelah ditambahkan bunga : " & saldo_awal) End Sub Function hitungsaldo(saldo As Double, bunga As Double) As Double hitungsaldo = saldo * bunga End Function BAB I Soal Latihan 1. a 2. c 3. d 4. a 5. b BAB II Soal Latihan 1. c 2. a 3. d Soal Praktek 4. program GenapGanjil; {$APPTYPE CONSOLE} uses SysUtils; Delphi var bilarray: array [0..10] of Integer = (23, 3, 1, 4, 6, 11, 10, 8, 2, 7, 19); 346
347 a: Integer; b: Integer; begin { TODO -ouser -cconsole Main : Insert code here } for a:=low(bilarray) to High(bilArray) do begin b:= bilarray[a]; if b mod 2 = 0 then writeln(bilarray[a], ' adalah bilangan genap') else writeln(bilarray[a], ' adalah bilangan ganjil'); end; end. 5. program UrutArray; {$APPTYPE CONSOLE} uses SysUtils; var arrangka: array[0..9] of integer = (0,4,2,7,6,8,3,5,1,9); i: Integer; j: Integer; k: Integer; begin Write('Isi awal dari array: ['); for i:=low(arrangka) to High(arrAngka) do begin if i>low(arrangka) then write(','); Write(arrAngka[i]); end; Writeln(']'); for i:=0 to High(arrAngka) do begin for j:=0 to High(arrAngka)-1 do begin if arrangka[j] > arrangka[j+1] then begin k:= arrangka[j]; arrangka[j]:= arrangka[j+1]; arrangka[j+1]:= k; end; end; end; Write('Setelah di urutkan menjadi: ['); for i:=low(arrangka) to High(arrAngka) do begin if i>low(arrangka) then write(','); Write(arrAngka[i]); end; Writeln(']'); end. 347
348 BAB III Soal Latihan 1. b 2. d 3. a Soal Praktek 4. Langkah-langkah : Buat file baru Pada form designer pilih textbox, combobox, button dan Label Atur posisi komponen sesuai dengan permintaan soal Ubah properti label pada object inspector dengan cara mengganti properti name menjadi bernilai keterangan, Bulan dan Tahun 5. Ikuti langkah pembuatan form seperti soal no.4. Lalu pada event dari button1 tambahkan kode di bawah ini : procedure Tform1.ButtonClick(Sender: Tobject); begin ShowMessage( Selamat Datang ); end; end; BAB IV Soal Latihan 1. d 2. a 3. d Soal Praktek Untuk soal no.4 dan 5 buatlah terlebih dahulu form bernama form_utama untuk menampung data seperti gambar di bawah ini : Misalnya data yang ada di basis data adalah : Id_barang Nama_barang Harga_barang 1 pensil buku
349 3 pulpen 2500 Yang perlu diingat buatlah sebuah data modul, tambahkan komponen SQLConnection pada data module dan juga tambahkan komponen SQLDataset. Pada jawaban no 4. dan 5. data modul dinamakan data_modul, komponen SQLConnection dinamakan kompsql dan komponen data set dinamakan KompData 4. Pada CommandText tulis perintah SQL dibawah ini : Select nama_barang from barang 5. Pada CommandText tulis perintah SQL dibawah ini : Select nama_barang from barang where nama_barang like n% Untuk menampilkan data, pada event onclick dari button di form tulis kode di bawah ini : procedure Tform_utama.btnOpenClick(Sender: TObject); begin data_modul.memo1.clear; data_modul.kompdata.open; while not data_modul.kompsql.eof do begin Memo1.Lines.Add( data_modul.kompsql.nama_barang ( FULL_NAME ).asstring; data_modul.kompsql.next; end; data_modul.kompsql.close; end; 349
350 Daftar Pustaka 1. Kusnassriyanto Saiful Bahri & Wawan Sjachriyanto. Pemrograman Delphi. Penerbit Informatika: Bandung Michael Halvorson. Step by Step Microsoft Visual Basic 6.o Profesisional. PT Gramedia: Jakarta Visual Basic.NET complete. Sybex: USA Drs. Ario Suryo Kusumo. Buku Latihan Visual Basic.NET versi 2002 dan PT Elex Media Komputindo Jakarta Budi Raharjo. Mengungkap Rahasia Pemrograman dalam C++. Penerbit Informatika Bandung Bradley.Millspaugh. Advanced Programming using Visual Basic.NET. McGraw Hill msdn.microsoft.com 350
Pengenalan C++ Oleh : Dewi Sartika
Pengenalan C++ Oleh : Dewi Sartika Pendahuluan Bahasa Pemrograman C++ merupakan bahasa tingkat menengah dimana bahasa ini didasarkan atas bahasa C, keistimewaan dari bahasa C++ adalah bahasa ini mendukung
FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA
Hal 1 dari 12 A. KOMPETENSI 1. Mampu membuat komentar dalam kode program 2. Memahami konstanta, variabel dalam C++ 3. Mampu membuat inisialisasi nilai ke dalam variabel B. ALAT DAN BAHAN 1. PC/ Laptop
Tipe Data dan Operator
Tipe Data dan Operator Dasar Algoritma dan Pemrogrman Eka Maulana, ST, MT, MEng. Klasifikasi Tipe Data 1 Tipe Data Tipe data adalah jenis data yang dapat diolah oleh komputer untuk memenuhi kebutuhan dalam
Komentar, Identifier, Konstanta dan Variabel
PEMROGRAMAN BERORIENTASI OBJEK Komentar, Identifier, Konstanta dan Variabel Budhi Irawan, S.Si, M.T KOMENTAR PROGRAM Dalam proses pengembangan sebuah program, pasti akan disibukan dengan penulisan kode-kode
Pointer dan Referensi
PEMROGRAMAN BERORIENTASI OBJEK Pointer dan Referensi Budhi Irawan, S.Si, M.T PENDAHULUAN Pointer merupakan salah satu fitur C++ yang relatif cukup berbahaya karena dapat mengakibatkan sistem operasi pada
Bahasa C-M6 By Jamilah, Skom 1
BAB 1 KONSEP DASAR BAHASA C 1.1 SEJARAH DAN STANDAR C Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin Richard pada tahun 1967. Bahasa ini memberkan ide kepada ken thompson yang kemudian
Keg. Pembelajaran 2 : Mengenal Bahasa C++
Keg. Pembelajaran 2 : Mengenal Bahasa C++ 1. Tujuan Kegiatan Pembelajaran Setelah mempelajari materi kegiatan pembelajaran ini mahasiswa akan dapat : 1) Mengenal secara baik sintak-sintak dalam bahasa
Chapter 1 KONSEP DASAR C
Chapter 1 KONSEP DASAR C Sejarah Dan Standar C Akar dari bahasa C adalah BCPL (dikembangkan oleh Martin Richard tahun 1967). Kemudian Tahun 1970, Ken Thompson mengembangkan bahasa tersebut yang di kenal
BAHASA PEMROGRAMAN C
BAHASA PEMROGRAMAN C A. Pengenalan Bahasa C diciptakan oleh Dennis Ritchie tahun 1972 di Bell Laboratories. Kelebihan Bahasa C: - Bahasa C tersedia hampir di semua jenis computer. - Kode bahasa C sifatnya
PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T
PEMROGRAMAN BERORIENTASI OBJEK Tipe Data Budhi Irawan, S.Si, M.T TIPE DATA Tipe Data berfungsi untuk merepresentasikan jenis dari nilai yang terdapat dalam program. Contoh apabila mempunyai suatu data
PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh
PRAKTIKUM 2 1. Variabel Pengenal (identifier) merupakan nama yang biasa digunakan untuk suatu perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh pemrogram. Variabel adalah suatu
Konsep Dasar Pemrograman Dan Pengenalan C++
PRAKTIKUM 1 DAN 2 Konsep Dasar Pemrograman Dan Pengenalan C++ I. KONSEP DASAR PEMROGRAMAN Program adalah deretan instruksi yang digunakan untuk mengendalikan komputer, sehingga komputer dapat melakukan
Tipe Data, Variabel, Input/Output
Tipe Data, Variabel, Input/Output Pendahuluan Untuk membuat program dengan bahasa pemrograman C harus memperhatikan struktur dasarnya. Strukturnya diawali dengan bagian preprocessor directive yang biasanya
Achmad Solichin.
Pemrograman Bahasa C dengan Turbo C [email protected] Lisensi Dokumen: Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit),
SUMBER BELAJAR PENUNJANG PLPG
SUMBER BELAJAR PENUNJANG PLPG 2017 [TIK] BAB VIII PEMROGRAMAN BERORIENTASI OBJEK [Alfa Faridh Suni] KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL GURU DAN TENAGA KEPENDIDIKAN 2017 BAB VIII
Struktur Bahasa C dan C++
Elemen Program Struktur Bahasa C dan C++ Bahasa C merupakan bahasa pendahulu dari bahasa C++. Pencipta C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. C adalah bahasa pemrograman
Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.
Sejarah C Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs. Pengembangan dari bahasa BCPL(Martin Richard, 1967) dan bahasa B (Ken Thompson, 1970) Dibantu Brian W. Kernighan, Ritchie menulis buku
ELEMEN DASAR C++ C++ mempunyai cara untuk menyatakan karakter-karakter yang tidak mempunyai kode tombol (seperti karakter tombol) misalnya \n.
1 ELEMEN DASAR C++ HIMPUNAN KARAKTER Himpunan karakter pada C++ terdiri huruf, digit maupun simbol-simbol lainnya (termasuk spasi dan karakter kontrol). Huruf, contoh : A s/d Z dan a s/d z Digit, contoh
Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia
Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia Tipe Data 1. Tipe data karakter 2. Tipe data bilangan bulat 3. Tipe data
Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman
Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman Apa itu Program? Program adalah deretan instruksi yang digunakan untuk mengendalikan komputer, sehingga komputer dapat melakukan tindakan sesuai
KONSEP DASAR BAHASA C
. SEJARAH DAN STANDAR C KONSEP DASAR BAHASA C Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin Richard pada tahun 967. Bahasa ini memberkan ide kepada ken thompson yang kemudian mengembangkan
LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++
I.PENDAHULUAN 1. 1. ALGORITMA Algoritma adalah urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu untuk memecahkan suatu masalah dalam rentang waktu tertentu. Setiap aksi harus dapat dikerjakan
3. Elemen Dasar C++ S. Indriani S. L., M.T L.,
3. Elemen Dasar C++ S. Indrianii L., M.T Himpunan karakter Suatu pengenal berupa satu atau beberapa karakter Huruf A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q
Bab 2. Dasar-Dasar Pemrograman C
Bab 2. Dasar-Dasar Pemrograman C Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 Overview Tipe Data Standar (Standart Data Type) Aturan Pendefinisian Identifier Variabel Mendeklarasikan
Badiyanto, S.Kom., M.Kom. PBO java
Badiyanto, S.Kom., M.Kom PBO java Apa yang Disebut Java? Bahasa pemrograman berorientasi objek murni yang dibuat berdasarkan kemampuankemampuan terbaik bahasa pemrograman objek sebelumnya (C++, Ada, Simula).
Struktur Program Bahasa C
Struktur Program Bahasa C Struktur Program Bahasa C /* Komentar */ main( ) { statemen-statemen; } fungsi_tambahan( ) { statemen-statemen } program utama fungsi tambahan yang dapat dipanggil oleh program
Elemen Bahasa Pemrograman. Aditya Rizki Yudiantika, M.Eng.
Elemen Bahasa Pemrograman Aditya Rizki Yudiantika, M.Eng. Algoritma dan Struktur Data (SI063) Ganjil 2017/2018 Outline Pengenalan bahasa C++ Struktur penulisan kode dan elemen Tipe data Konstanta Operator
SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009
SOAL C++ 1. Penulisan Preprocessor yang benar di awali dengan tanda pound atau tanda : a. # c. @ b. & d. = 2. Contoh penulisan file header yang benar yaitu : a. &include c. =include
DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom
DASAR PEMROGRAMAN PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom https://www.facebook.com/groups/dasarpemrogramanc TUJUAN Mengenal sejarah, struktur, sintaks
VARIABEL, TIPE DATA DAN EKSPRESI Bab 2
VARIABEL, TIPE DATA DAN EKSPRESI Bab 2 2.1 IDENTIFIER Indentifier adalah nama yang diberikan untuk nama objek, nama fungsi, nama variable, dll ( sifatnya case sensitive ). Identifier pada C++ terdiri dari
Desain dan Analisis Algoritma. Pengenalan Bahasa C. I Ketut Resika Arthana, S.T., M.Kom.
Desain dan Analisis Algoritma Pengenalan Bahasa C I Ketut Resika Arthana, S.T., M.Kom [email protected] http://www.rey1024.com Intro Sadarilah Kawan, Pemrograman Itu Indah Bahasa Pemrograman mudah
elemen Dasar Bahasa Pemrograman C
Elemen-elemen elemen Dasar Bahasa Pemrograman C Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN - 2008 Identifier : Elemen Dasar C Nama pengenal (identifier) adalah nama-nama yang ditentukan
Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti
KONSTANTA Menghitung besaran-besaran fisis dalam bidang fisika memerlukan suatu konstantakonstanta. Bahasa C dan C++ menyediakan tipe data tambahan sehingga variabel yang kita gunakan merupakan konstanta
PEMROGRAMAN BERORIENTASI OBJEK. Operator. Budhi Irawan, S.Si, M.T
PEMROGRAMAN BERORIENTASI OBJEK Operator Budhi Irawan, S.Si, M.T OPERATOR Operator adalah tanda yang digunakan untuk melakukan operasi operasi tertentu didalam program. Dengan adanya operator maka dapat
MODUL 2 TIPE DATA, KONSTANTA DAN VARIABEL
MODUL 2 TIPE DATA, KONSTANTA DAN VARIABEL Program yang dijalankan dengan menggunakan aplikasi console pada Visual C++ 2008 akan membaca data dari command line dan hasilnya akan ditampilkan dalam command
Elemen Dasar Dalam Bahasa Java
Elemen Dasar Dalam Bahasa Java 1. Kata Kunci Kata kunci adalah kata-kata yang didefenisikan oleh compiler dan memiliki arti dan tujuan spesifik. Java tidak mengizinkan kata-kata tersebut dipakai sebagai
Algoritma & Pemrograman
Algoritma & Pemrograman Bahasa Pemrograman C Oleh: Supatman HP: 081578865611 Bahasa C Ditemukan Oleh: Dennis M. Ritche (1972) Kemampuan C Portable Kecepatan Library Programming Sistem Operasi (Unix, MicroShell,
MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1
MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1 Disusun oleh : Tim Asisten JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA YOGYAKARTA 2011 0 A. Pengantar
FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LABSHEET ALGORITMA DAN STRUKTUR DATA
Hal 1 dari 14 A. KOMPETENSI 1. Mampu memahami jenis-jenis dan penggunaan tipe dasar di dalam C++ 2. Mendefinisikan tipe data bentukan (array, struktur, dan enumerasi) 3. Memahami null terminated string
BAB 3 TYPE DATA, VARIABLE DAN OPERATOR
BAB 3 TYPE DATA, VARIABLE DAN OPERATOR Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai bahasa pemrograman
BAB II STRUKTUR BAHASA C
BAB II STRUKTUR BAHASA C 2.1. StrukturPenulisanBahasa C Sebagaimanatradisidalambelajarbahasakomputeradalahdimulaidenganmembuat program Hello World, perhatikankodingberikut : // Menampilkantulisan Hello
Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C
1. Pendahuluan Lingkungan Turbo C++ 4.5 Turbo C++ 4.5 adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C++ 4.5. 1 2 3 4 1 : Menu Utama
Identifier dan Tipe Data
Identifier dan Tipe Data Identifier Identifier atau pengenal merupakan nama yang biasa digunakan untuk : - Variable - Konstanta bernama - Fungsi - Dll Aturan yang berlaku bagi suatu pengenal secara umum
BAB II VARIABEL DAN TIPE DATA
BAB II VARIABEL DAN TIPE DATA Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai atau data. Sedangkan Java sendiri dikenal sebagai bahasa pemrograman dengan
PEMROGRAMAN TERSTRUKTUR OLEH : IR. H. SIRAIT, MT
PEMROGRAMAN TERSTRUKTUR C++ OLEH : IR. H. SIRAIT, MT PEMROGRAMAN C++ C sebagai bahasa pendahulunya C++ C merupakan termasuk bahasa pemrograman tingkat menengah. Pencipta C adalah Brian W. Kernighan dan
ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com
ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom [email protected] dahlia74march.wordpress.com Struktur program dalam C++ C sebagai bahasa pendahulunya C++ C merupakan termasuk bahasa pemrograman
Pendahuluan Pemrograman Mikrokontroler
Pendahuluan Pemrograman Mikrokontroler Pokok Bahasan: 1. Pemrograman C 2. Pengalokasian Memory Tujuan Belajar: Setelah mempelajari dalam bab ini, mahasiswa diharapkan mampu: 1. Memahami dan Menjelaskan
BAB 4 PENGENALAN BAHASA C
Bab 4 Pengenalan Bahasa C 35 BAB 4 PENGENALAN BAHASA C TUJUAN PRAKTIKUM 1. Mengetahui sejarah perkembangan bahasa C. 2. Mengerti struktur program bahasa C. 3. Mengerti konsep tipe data, variabel, & operator
2 TIPE DATA DAN VARIABEL
BAB 2 TIPE DATA DAN VARIABEL Kompetensi Dasar dan Indikator : Setelah mengikuti materi kuliah ini mahasiswa mampu menggunakan tipe data dan variable yang ada dalam Java, dengan indikator mahasiswa mampu:
Tipe Data. Adri Priadana
Tipe Data Adri Priadana http://ilkomadri.com/ Pengertian Tipe data adalah jenis data atau pola representasi data yang mempunyai batasan tempat dan karakteristik sesuai dengan interprestasi data dan dapat
BUKU PETUNJUK PRAKTIKUM DASAR ALGORITMA DAN PEMROGRAMAN
BUKU PETUNJUK PRAKTIKUM DASAR ALGORITMA DAN PEMROGRAMAN BUKU PETUNJUK LABORATORIUM KOMPUTASI DAN JARINGAN JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA MALANG PERATURAN PRAKTIKUM PERATURAN
Modul 1 Dasar Dasar Bahasa Pemrograman C
Modul 1 Dasar Dasar Bahasa Pemrograman C 1. C dan Pengolahan Sinyal Digital C adalah bahasa pemrograman tingkat tinggi. Sebab bahasa pemrogramannya menggunakan keyword dan syntax yang mudah dimengerti
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO Ramos Somya Identifier Merupakan nama yang digunakan untuk menamai class, variabel, method dan interface. Aturan: - Tidak ada batasan
PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA
PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA Asep Herman Suyanto [email protected] http://www.bambutechno.com Bahasa pemrograman pada umumnya, mengenal adanya variabel yang digunakan untuk menyimpan nilai
PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).
PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C++ 6.0 STRUKTUR BAHASA C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama). Setiap program akan dieksekusi dimulai dari statement
PENGENALAN C++ Bab 1
PENGENALAN C++ Bab 1 1.1 SEJARAH C++ Bahasa C++ diciptakan oleh Bjarne Stroustrup di AT&T Bell Laboratories awal tahun 1980-an berdasarkan C ANSI (American National Standard Institute). Pertama kali, prototype
IT234 - Algoritma dan Struktur Data. Ramos Somya
IT234 - Algoritma dan Struktur Data Ramos Somya Asal kata Algoritma berasal dari nama seorang ilmuan Persian yang bernama Abu Ja far Mohammed lbn Musa al-khowarizmi, yang menulis kitab al jabr w al-muqabala
Instalasi Code::Blocks, Tipe Data, Variabel, Konstanta, Operator, Input-Output dan Flowchart
Instalasi Code::Blocks, Tipe Data, Variabel, Konstanta, Operator, Input-Output dan Flowchart Pertemuan ke-1 Praktikum Algoritma dan Pemrograman Laboratorium Pemrograman dan Informatika Teori Pengumuman
Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :
1 Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu : Contoh Program : { int x; float y; char z; double w; clrscr(); /* untuk membersihkan layar */ x = 10; /* variable
1.4 Struktur Program Pada C++ Program C maupun C++ secara umum tersusun dari beberapa bagian utama, yaitu :
1.2 Dasar Teori 1.2.1 Sejarah Bahasa C/C++ Bahasa C++ diciptakan oleh Bjarne Stroustrup di AT&T Bell Laboratories awal tahun 1980-an berdasarkan C ANSI (American National Standard Institute). Pertama kali
Dasar Pemrograman Mikrokontroler dengan Bahasa C
Dasar Pemrograman Mikrokontroler dengan Bahasa C Pokok Bahasan: 1. Penggunaan Fungsi (Using Functions) 2. Penanaman bahasa rakitan di dalam Program 'C' Tujuan Belajar: Setelah mempelajari dalam bab ini,
Algoritma & Pemrograman #3
Algoritma & Pemrograman #3 by antonius rachmat c, s.kom, m.cs Tentukan nama variabel yang benar : 1. 9kepala 2. _nilaimax 3. data nilai 4. _4445 5. a_b Review: Deklarasi Identifier Variabel Bentuk umum:
PEMROGRAMAN BERORIENTASI OBJEK. Input / Output. Budhi Irawan, S.Si, M.T
PEMROGRAMAN BERORIENTASI OBJEK Input / Output Budhi Irawan, S.Si, M.T PENDAHULUAN Sejauh ini sudah sering digunakan cout untuk menuliskan ke layar dan cin untuk membaca nilai dari keyboard tanpa membahas
PERTEMUAN II Tipe Data, Variabel, Konstanta, Operator
PERTEMUAN II Tipe Data, Variabel, Konstanta, Operator 1. Tipe Data Dasar 2. Pengertian Variabel 3. Pengertian Konstanta 4. Operator Penugasan 5. Operator Operasi Bit 6. Operator Logika Pertemuan II ELEMEN
PENGERTIAN VARIABEL, KONSTANTA DAN TIPE DATA
PENGERTIAN VARIABEL, KONSTANTA DAN TIPE DATA Haida Dafitri, ST, M.Kom Ta. 2016 2017 T. Informatika STT Harapan Medan TUJUAN PEMBELAJARAN Setelah menyelesaikan bab ini, anda diharapkan : Mengenal dan Mengetahui
Dasar Pemrograman Java
Dasar Pemrograman Java Tessy Badriyah, SKom. MT. http://lecturer.eepis-its.edu/~tessy Tujuan Pembelajaran Penggunaan Komentar dalam program Memahami perbedaan identifier yang valid dan yang tidak valid
P 4 Bab 3 : Dasar Pemrograman C
Kampus II, Jl. Jembatan Merah, Nomor.C. Gejayan, Yogyakarta, Telp: (0), Fax (0) 00 P Bab : Dasar Pemrograman C. Tujuan Mahasiswa mampu mengetahui dan memahami identifier, keyword, variable, tipe data,
Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).
TIPE DATA Penggunaan tipe data pada bahasa c++ erat kaitannya dengan penggunaan memori, perlu diperhatikan dalam penggunaanya. Terdapat tiga tipe data dalam bahasa C++ yaitu : 1. Tipe Data Dasar terdiri
PENGANTAR BAHASA C++
PENGANTAR BAHASA C++ SEJARAH SINGKAT BAHASA C Program C merupakan bahasa komputer yang sangat singkat & tidak memiliki kepanjangan. Bahasa ini diciptakan oleh Dennis Ritchie sekitar tahun 1972. Hingga
LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom
LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom BAB III DASAR-DASAR PEMROGRAMAN Tipe Data Data adalah sekumpulan kejadian/fakta yang dipresentasikan dengan huruf, angka,
Variabel, Tipe Data, dan Operator. Oleh : Edi Sugiarto, S.Kom, M.Kom
Variabel, Tipe Data, dan Operator Oleh : Edi Sugiarto, S.Kom, M.Kom 1 Pendahuluan Program merupakan kumpulan instruksi yg akan dikerjakan oleh komputer. Program yg kita tulis merupakan urutan perintah
INSTRUKSI. TTH2D3 Mikroprosesor
INSTRUKSI TTH2D3 Mikroprosesor AT Mega 32 pin diagram Port B Port A Port D Port C ATMega32 Pin out & Descriptions Mega32/Mega16 (XCK/T0) PB0 PA0 (ADC0) (T1) PB1 PA1 (ADC1) (INT2/AIN0) PB2 PA2 (ADC2) (OC0/AIN1)
Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.
Pertemuan 1 STRUKTUR DATA Struktur Data adalah : suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya. Pemakaian Struktur Data yang
MODUL V POINTER DAN STRING
MODUL V POINTER DAN STRING I TUJUAN 1 Mahasiswa dapat menjelaskan tentang konsep dari variabel pointer 2 Mahasiswa dapat menjelaskan tentang pointer dan string 3 Mahasiswa dapat menjelaskan tentang pointer
PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR
1 PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR Siti Mukaromah, S.Kom TEKNIK PENYAJIAN ALGORITMA Teknik Tulisan Structure English Pseudocode Teknik Gambar Structure Chart HIPO Flowchart 2 PSEUDOCODE Kode
MODUL 1 Alur Seleksi dengan C++
1 MODUL 1 Alur Seleksi dengan C++ Teori Singkat C++ merupakan perluasan bahasa C dengan tambahan fasilitas kelas (Class). Dengan fasilitas ini, maka C++ mendukung teknik pemrograman berorientasi objek
VARIABEL & TIPE DATA PEMROGRAMAN C++
VARIABEL & TIPE DATA PEMROGRAMAN C++ [email protected] VARIABEL Suatu nama yang menyatakan tempat dalam memori komputer Menyimpan nilai yang dapat diubah VARIABEL Pengenal (identifier) yang digunakan
TIPE DATA, VARIABLE, dan OPERATOR DELPHI
TIPE DATA, VARIABLE, dan OPERATOR DELPHI A. TIPE DATA Delphi merupakan bahasa pemrograman tingkat tinggi yang mendukung perancangan terstruktur dan berorientasi Object. Bahasa pemrograman ini berdasarkan
AP 2B: PENGENALAN PADA C++ Isram Rasal S.T., M.M.S.I, M.Sc. Program Studi Teknik Informatika Fakultas Teknologi Industri Universitas Gunadarma
AP 2B: PENGENALAN PADA C++ Isram Rasal S.T., M.M.S.I, M.Sc. Program Studi Teknik Informatika Fakultas Teknologi Industri Universitas Gunadarma 1 Tujuan Perkuliahan Mahasiswa dapat memahami: Mahasiswa mengetahui
MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER)
MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER) I. TUJUAN 1. Mahasiswa mengenal struktur bahasa pemrograman C dan C++ 2. Mahasiswa mengenal perintah-perintah dasar C dan C++ 3. Mahasiswa
MODUL II. OBJECK, PROPERTY, METHOD dan EVENT
MODUL II OBJECK, PROPERTY, METHOD dan EVENT Dalam bahasa pemrograman berbasis obyek OOP, kita harus memahami istilah Object, Property, Method, dan Event sebagai berikut. 1) Object Komponen dalam sebuah
Tipe Data Dasar. Data bisa dinyatakan dalam bentuk konstanta atau variabel.
Dasar Pemrograman C Objectives Menjelaskan tentang beberapa tipe data dasar Menjelaskan tentang Variabel Menjelaskan tentang konstanta Menjelaskan tentang berbagai jenis operator dan pemakaiannya Menjelaskan
Pengenalan Bahasa C week 1
Desain dan Analisis Algoritma Pengenalan Bahasa C week 1 I Ketut Resika Arthana, S.T., M.Kom [email protected] http://www.rey1024.com Perkenalan I Ketut Resika Arthana, M.Kom Resika Rey [email protected]
MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN
MODUL PRAKTIKUM ALGORITMA DAN PEMROGRAMAN PROGRAM STUDI TEKNIK KOMPUTER FAKULTAS TEKNIK UNIVERSITAS ISLAM 45 BEKASI 2015 1 Peraturan : 1. Mahasiswa harus berpakaian rapi dalam mengikuti praktikum. 2. Mahasiswa
BAHASA C CodeVisionAVR (CVAVR)
BAHASA C CodeVisionAVR (CVAVR) mohammad iqbal [email protected] Teknik Elektro Universitas Muria Kudus Mengapa Bahasa C Bahasa C lebih mudah dan membutuhkan waktu cepat dibandingkan assembly. Walaupun
P3 Pengantar Pemrograman C
P3 Pengantar Pemrograman C A. Sidiq Purnomo Prodi Teknik Informatika & Prodi Sistem Informasi Universitas Mercu Buana Yogyakarta Tujuan Mahasiswa dapat mengetahui dan memahami sejarah bahasa C, struktur
Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut
Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut 1. Pengenalan Bahasa C++ a. Elemen Bahasa C+ Bahasa C++ ditulis dari beberapa elemen, antara lain: Pernyataan Satu atau beberapa ekspresi
KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK
KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK Farah Zakiyah Rahmanti, M.T 2015 Overview Definisi Teknologi Java Konsep Pemrograman Procedural dan OOP Struktur Java, Identifier, Kata Kunci, Tipe Data, Operator,
Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom
Pengenalan Bahasa C++ Oleh : Agus Priyanto, M.Kom Tujuan Pembelajaran Mahasiswa dapat memahami konsep dasar pemrograman dengan bahasa C++ Mahasiswa dapat membuat aplikasi sederhana menggunakan bahasa C++,
P - 3 Bab 2 : Pengantar Pemrograman C
P - 3 Bab 2 : Pengantar Pemrograman C 2.1 Tujuan Mahasiswa dapat mengetahui dan memahami sejarah bahasa C, struktur program C dan alur eksekusi program C 2.2 Materi 1. Sejarah C 2. Interprenter dan Compiler
BAHASA PEMROGRAMAN. Untuk SMK. Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto. : Ratu Amilia Avianti. Perancang Kulit
BAHASA PEMROGRAMAN Untuk SMK Penulis Editor Perancang Kulit Ukuran Buku : Suprapto Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto : Ratu Amilia Avianti : Tim : 18,2 x 15,7 cm Direktorat Pembinaan
Sekilas C DAN C++ DISUSUN OLEH. Sebuah bahasa, yaitu: 1. Bahasaa tingkat tinggi. High. dapat. lunak
DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S..Kom. DIKTAT MATAA KULIAH PEMROGRAMAN I BAB I PENDAHULUAN C DAN C++ IF Sekilas Tentang C dan C+ ++ Sebuah bahasa pemrograman dapat dikategorikan ke dalam tiga level
Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom
Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom Pengantar Bahasa Pemrograman Pascal Page 1 / 11 Pengenalan Pascal Pascal merupakan salah satu bahasa pemrograman tingkat tinggi. Pemrograman
SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN
SEKOLAH TINGGI MANAJEMEN INFORMAA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN Mata Kuliah : PEMROGRAMAN BAHASA C++ Kode Mata Kuliah : MI - 24203 Jurusan / Jenjang : S1 SISTEM KOMPUTER Tujuan Instruksional
Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel
Chapter 5 Pointer dan References Agenda Pada chapter ini kita akan membahas beberapa topik yang berhubungan dengan pointer dan reference yaitu: Penggunaan Pointer. Pointer dan Array. Mengalokasikan memory
Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA
Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA TUJUAN Menjelaskan tentang beberapa tipe data dasar Menjelaskan tentang Variabel Menjelaskan tentang konstanta Menjelaskan tentang berbagai jenis
KU-1072 PENGENALAN TEKNOLOGI INFORMASI B (PTI B)
KU-1072 PENGENALAN TEKNOLOGI INFORMASI B (PTI B) 2008 MATERI I PENGENALAN BAHASA C++ Materi Praktikum Durasi TIU/TIK Referensi Pengenalan Bahasa C++ 180 menit 1. Pendahuluan 2. Instruksi Output Sederhana
Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN
Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN I. Elemen-Elemen Dalam Bahasa Pemrograman Berikut adalah elemen-elemen pada bahasa pemrograman: Berikut adalah element-element pada bahasa pemrograman: 1. Aturan
Data bisa dinyatakan dalam bentuk konstanta atau variabel.
Dasar Pemrograman C Objectives Menjelaskan tentang beberapa tipe data dasar Menjelaskan tentang Variabel Menjelaskan tentang konstanta Menjelaskan tentang berbagai jenis operator dan pemakaiannya Menjelaskan
Algoritma dan Pemrograman
Algoritma dan Pemrograman bagian 2 2009 Modul ini menjelaskan tentang bahasa C dan apa saja yang dibutuhkan bila kita akan menulis suatu program dengan bahasa C. Editor yang dipakai adalah Turbo C++ 4.5.
