Upload
meriyatullusidah
View
72
Download
15
Embed Size (px)
Citation preview
PEMROGRAMAN VISUAL
(C ++ BUILDER)
SEMESTER II
(2 SKS/ 4 Jam/Minggu)
Penyusun:
Drs. Yoyok Heru P.I., MTNIP. 196807081994031002
JURUSAN TEKNIK ELEKTROPROGRAM STUDI JARINGAN TEKNIK DIGITAL
POLITEKNIK NEGERI MALANG2015
YHPI -> hal : 1
KATA PENGANTAR
Segala puji dan syukur disampaikan kepada Allah SWT, atas limpahan rahmat, karunia
dan cahaya petunjuk-Nya yang tiada tara, sehingga buku “PEMROGRAMAN VISUAL
DENGAN BAHASA C++ BUILDER” untuk matakuliah Pemrograman Visual di Program Studi
Jaringan Teknik Digital Telekomunikasi POLINEMA. Buku ini sebenarnya hanya dipakai untuk
kalangan internal POLINEMA, namun apabila ada dari saudara kita di luar POLINEMA yang
berminat menggunakan buku ini, dengan senang hati kami persilahkan. Sholawat dan salam
semoga tetap terkunjuk pada junjungan Nabi Agung Muhammad SAW, keluarga, sahabat,
thabiit, dan thabiin, dengan ghirroh perjuangan yang tinggi dan keikhlasan yang mendalam
dalam memberantas kebodohan dan menegakkan kebenaran di muka bumi ini.
Buku ajar ini dimaksudkan untuk membantu dan memfasilitasi peserta didik dalam
mempelajari pemrograman komputer lanjut khususnya menggunakan bahasa C++ Builder.
Salah satu faktor yang menentukan keberhasilan sebuah pembelajaran di kelas adalah buku
ajar oleh karena itu keberadaan dan pemberdayaan buku ini menjadi penting dan merupakan
salah satu rujukan dalam menempuh matakuliah pemrograman visual. Sistem yang
ditekankan dalam buku ini proses latihan dalam menuangkan dan mengurai permasalahan ke
dalam desain sebuah program, dengan tujuan membangkitkan daya nalar dan logika
Mahasiswa.
Penulis berharap semoga buku ini dapat bermanfaat bagi mahasiswa program studi T.
Telekomunikasi yang menempuh matakuliah Pemrograman Komputer Lanjut maupun semua
pembaca buku ini. Terimaksih bagi siapa saja yang sudi memberikan saran dan kritik atas
penulisan buku ini, karena kami yakin bahwa masih banyak kekurangan alam penuisan buku
ini.
Malang, September 2015
Penulis
YHPI -> hal : 2
DAFTAR ISI
LEMBAR PENGESAHANKATA PENGANTAR 1DAFTAR ISI 2PENDAHULUAN 5BAB I VCL, FORMS, DAN KOMPONEN-KOMPONEN PADA C++ BUILDER 7
I.1 Tujuan 7I.2 Teori Dasar 7I.2.1 Project dalam Program C++ Builder 7I.2.2 Form 8I.2.3 SpeedBar 8I.2.4 Komponen Palete 8I.2.5 Events dan Event Handlers 8I.3 LATIHAN PROGRAM 10I.3.1 Membuat desain project operasi matematika, dengan
menggunakan bentuk menu dan memanfaatkan multiform 10I.4 SOAL (UJI KEMAMPUAN) 15
BAB II MANIPULASI STRINGGRID, LISTBOX DAN COMBOBOX 16II.1. Tujuan 16II.2. Teori Dasar OverView StringGrid 16II.2.1 Properties Cells 17II.2.2 ComboBox dan ListBox 18II.3 LATIHAN PROGRAM 19II.3.1 Latihan pertama memanipulasi StringGrid, dengan merubah lebar,
jumlah baris dan jumlah kolom dalam coding, dan juga merubah cells menjadimodifable, sehingga cells dapat ditulisi 19
II.3.2 Latihan ini mengajarkan bagaimana membuat dan membuat VCL padacombobox dan listbox 21
II.4. SOAL (UJI KEMAMPUAN) 22BAB III VARIABEL ARRAY 23
III.1. Tujuan 23III.2. Teori Dasar 23III.2.1 Console Wizard 23III.2.2 Variabel Array 24III.3. Latihan Program 26III.3.1 Melatih logika array, menghitung nilai pangkat 3, dan menghitung
masing-masing nilai faktorialnya 26III.3.2 Menentukan nilai terbesar dan nilai terkecil dari sejumlah data yang
diinputkan => perhatikan caranya! 28III.4. SOAL (UJI KEMAMPUAN), 31
BAB IV SORTIR DATA 32IV.1. Tujuan 32IV.2. Teori Dasar Teknik Sortir Data 32IV.3. LATIHAN PROGRAM 34IV.4. SOAL (UJI KEMAMPUAN) 38
BAB V OOP, STRUKTUR DAN CLASS 39V.1. Tujuan 39V.2. Teori Dasar 39V.2.1 Variabel Obyek atau dikenal sebagai OOP (Object – Oriented Programming) 39V.2.2. STRUKTUR dan CLASS 40V.3. LATIHAN PROGRAM 41V.3.1 Mengimplementasikan type class dengan menggunakan desain VCL 41
YHPI -> hal : 3
V.4. SOAL (UJI KEMAMPUAN) 44BAB VI PENGANTAR DATABASE 45
VI.1. Tujuan 45VI.2. Teori Dasar Pengantar DataBase, Arsitktur Database 45VI.3. LATIHAN PROGRAM 47VI.3.1. Membuat database sederhana dengan bantuan database desktop 47X.4. SOAL (UJI KEMAMPUAN) 51
BAB VII APLIKASI DATABASE I 52VII.1. Tujuan 52VII.2. Teori Dasar Command Dasar Berkaitan dengan Field dan Record 52VII.3. LATIHAN PROGRAM 52VII.3.1. Membuat Table “Stok” dengan bantuan database desktop 52VII.4. SOAL (UJI KEMAMPUAN) 57
BAB VIII APLIKASI DATABASE II 58VIII.1. Tujuan 58VIII.2. Teori Dasar 58VIII.3. LATIHAN PROGRAM 58VIII.3.1.Buat desain seperti di bawah ini dengan menggunakan
tabel barang yang sudah pernah dibuat pada BAB VII 58
VIII.4. SOAL (UJI KEMAMPUAN) 67
BAB IX s.d. XV PRESENTASI 69BAB XVI GRAFIK 70
XVI.1. Tujuan 70XVI.2 Teori Dasar 70XVI.2.1 Review Grafik 70XVI.2.2 Komponen Pembentuk Grafik 71XV.3 LATIHAN PROGRAM 74XV.3.1 Latihan Pengenalan Pola Grafik Primitiv 74XV.3.2 Latihan Penggunaan Pixel 76XV.4. SOAL (UJI KEMAMPUAN) 79
BAB XVII OPERASI GEOMETRI SEDERHANA PADA GRAFIK 80XVII.1. Tujuan 80XVII.2 Teori Dasar 80XVII.2.1 Operasi Geometri 80XVII.2.2 Pergeseran atau Translasi 80XVII.2.3 Penskalaan atau Stretching 81XVII.2.4 Perputaran atau Rotasi 82XVII.3 LATIHAN PROGRAM 82XVII.3.1 Latihan operasi geometri translasi / pergeseran 82XVII.3.2 Latihan operasi geometri Rotasi dan Penskalaan 86XV.4. SOAL (UJI KEMAMPUAN) 90
BAB XVIII, XIX 92DAFTAR PUSTAKA 93
YHPI -> hal : 4
YHPI -> hal : 5
PENDAHULUAN
Pemrogram Visual
Pemrograman visual adalah kelompok pemrograman yang metode pembuatannya
terdapat hubungan antara komponen objek yang biasanya berbentuk gambar atau icon
dengan coding yang merupakan statement, kendali, function, class, type, dan yang lainnya
pada sebuah media User Interface (UI). Dimana user interface pada pemrograman visual
berupa GUI (Graphical User Interface) yang berisi desain visual program dan Text Coding
yang berisi kode-kode program atau sintak program yang mengendalikan GUI. Yang intinya
adalah bahwa pemrograman visual mempunyai hasil running program sesuai dengan bentuk
desain, yang biasanya media desainnya disebut dengan Form dan tempat mengetik program
disebut code editor. Contoh pemrograman visual adalah : C++ Builder, Visual C, Delphi, Visual
Basic, dan masih banyak lagi.
Buku ini merupakan lanjutan dari buku Pemrograman Lanjut yang sudah di gunakan di
program studi JTD POLINEMA, dimana bahasa yang digunakan adalah C++ Builder. Ada
beberapa alasan pemilihan bahasa program tersenut diantaranya adalah:
1. C++ Builder merupakan pengembangan dari bahasa C++, dan C++ merupakan
pengembangan dari bahasa C standar.
2. Bahasa C merupakan akar dari bahasa pemrograman yang lain seperti Java, Android, dan
yang lain.
3. Keberlanjutan antar matakuliah Algoritma, Pemrograman Lanjut, Pemrograman Visual,
dan Interfacing yang kesemuanya menggunakan basis bahasa C
4. Banyak operating sistem yang dibuat dengan menggunakan bahasa C, seperti linux, unix,
Android, dan yang lain.
Alasan tersebut yang menjadikan landasan mengapa buku ini menggunakan bahasa C++
Builder, dan buku ini di gunakan sebagai buku paket pendukung matakuliah pemrograman
visual, walau dalam implementasinya nanti tidak menutup kemungkinan untuk dimanfaatkan
oleh matakuliah yang lain.
YHPI -> hal : 6
YHPI -> hal : 7
BAB IBEKERJA DENGAN MULTI FORM
Asumsi:Mahasiswa dianggap sudah pernah menempuh matakuliah Pemrograman Lanjut, sehingga
pelajaran dasar tentang pemrograman visual yang melibatkan OOP dan komponen sudah
dipahami.
I.1 TUJUANTujuan latihan program pertemuan pertama ini adalah,
1. Mahasiswa mampu membuat desain program dengan menggunakan lebih dari satu
Form.
2. Mahasiswa mampu me lingkan antar Form dalam sebuah projek.
3. Mahasiswa mempu mengendalikan (menampilkan, menyembunyikan, meremove) antar
Form.
I.2 TEORI DASARI.2.1 Project dalam Program C++ Builder
Setelah kita me-running C++ Builder maka kita akan melihat tampilan penuh C Builder
seperti nampak pada gambar 1.1 di bawah, dan tampilan semacam ini lebih di kenal dengan
IDE(Integrated Development Environment). IDE mempunyai segala hal yang kita butuhkan
untuk mendesain program dalam satu tampilan, tampak seperti pada gambar di bawah.
Gambar 1.1
YHPI -> hal : 8
IDE juga merupakan area kerja dalam mendesain program dalam Project kita, disini kita dapat
melakukan manipulasi komponen, mengetik coding program, mengkonfigurasi C Builder, dan
mungkin mengeset properties dalam sebuh project.
VCL adalah sebuah repository dari komponen2 yang digunakan untuk membuat aplikasi
program. Sedangkan komponen adalah sebuah object yang tampil dalam bentuk gambar
seperti Label, Edit, Button, dan yang lainnya, yang kita pilih dengan klik mouse kiri, dan
meletakkannya di area form kerja kita. Komponen2 VCL adalah coding yang kita tuliskan pada
area editor code (unit area) untuk menjalankan operasi dari komponen tersebut.
1.2.2 FormForm adalah sebuah jendela yang disediakan oleh C Builder yang diguakan untuk
membuat desain tampilan program kita. Ketika kita membuat sebuah aplikasi baru dalam C
Builder secara otomatis akan terbuat sebuah form baru. Untuk membangun user interface
dalam form, kita tinggal menambahkan visual componen kemudian meletakkan posisi
componen dan mengatur ukurannya. Disamping itu kita juga bisa menambahkan komponen
non-visual seperti komponen timer. Secara default, ketika kita me-running aplikasi, maka form
akan terletak di tengah2 layar monitor kita, namun kita juga bisa mengatur tampilan form
sesuai dengan kebutuhan kita.
1.2.3 SpeedBarSpeedBar menyediakan akses cepat untuk fungsi2 menu, yang paling sering digunakan
seperti menyimpan data, menampilkan unit dan form, me-running program, menambah
roject,dan yang lain. Kita dapat memilih speedbar yang kita kehendaki, yaitu dengan
menambah, menghapus speedbar yang ada lewat view->toolbars->customize.
1.2.4 Komponen PaleteKomponen palete diletakkan di bawah baris menu utama, masing-masing komponen di
kelompokkan dalam beberapa kategori. Nama-nama kelompok diletakkan tepat di atas dari
nama-nama komponen, seperti Standart, Additional, ...Untuk mengambil/membuka komponen
kita harus meng klik nama group dengan klik mouse kiri, dan untuk mengambilnya kita harus
mengklik komponen yang kita inginkan dan meletakkan pada area form yang kita kehendaki.
1.2.5 Events dan Event HandlersUntuk memhami sub ini kita buat terlebih dahulu sebuah komponen “button”, dimana
komponen ini berada pada group komponen atau komponen palete “Standart”. Silahkan buat
komponen seperti gambar di bawah ini:
YHPI -> hal : 9
Gambar 1.2
Jika kita running project ini maka sebuah event akan digenerate oleh C Builder, agar aplikasi
ini merespon event ini maka kita perlu membuat sebuah event handler. Event handler adalah
sebuah fungsi sederhana yang secara otomatis dibuat oleh C Builder, pada saat kita mengklik
salah satu item yang ada pada form ini. Atau kita mengklik salah satu bagian dari Event pada
Object Inspector. Untuk mencoba silahkan double klik kiri mouse pada komponen “button1”
yang sudah di letakkan di Form. Maka C builder akan menampilkan code seperti di bawah ini:
//---------------------------------------------------------------------------
#include <vcl.h>#pragma hdrstop
#include "Unit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender){
}//---------------------------------------------------------------------------
Coding ini secara otomtis akan generate oleh C Builder, dan jika program ini di running maka
belum ada pengaruh apa-apa jika tombol button di klik. Sekarang coba isikan coding di bawah
ini :
YHPI -> hal : 10
void __fastcall TForm1::Button1Click(TObject *Sender){
ShowMessage(“Hello world! This is a test application! Press OK”);Close();
}//---------------------------------------------------------------------------
Kemudian jalankan apa yang terjadi jika tombol button di ubah!
I.3 LATIHAN PROGRAM :Mahasiswa wajib mengerjakan latihan program ini, dengan cara membuat dasain form dan
menuliskan masing-masing listing program pada editor C++ Builder, menyimpannya
(sesuaikan nama file dengan yang diminta), setelah itu menjalankan program, kemudian
mempelajari proses logika dilanjutkan dengan membandingkan antara output hasil logika
terhadap output hasil running komputer.
I.3.1 Membuat desain project operasi matematika, dengan menggunakan bentuk menudan memanfaatkan multiform
Buat project aplikasi baru -> ”File, New, application” kemudian buat desain Form sebagaiberikut:
Gambar 1.3Langkah-langkah pembuatan desain sebagai berikut: Masukkan komponen main menu pada form kosong Klik 2x main menu yang sudah dimasukkan pada form kosong tersebut Ketikkan “Operasi Matematika” pada bagian caption di object inspector Geser kekanan dan tuliskan “Deret Bilangan”; Tutup jendela menu dengan menekan tombol “X” Kemudian simpanlah project ini dengan mengklik ”Save ALL”, untuk unit->beri nama
”Latihan1_1.cpp”, sedangkan untuk Project beri nama ”Platihan1_1”
Berikutnya buatlah form kedua dengan cara : File->New->pilih Form, buatlah desainberikut :
YHPI -> hal : 11
Gambar 1.4
Langkah-langkah pembuatan desain sebagai berikut: Masukkan komponen label1, Label2, dan label3 pada form, di tempat seperti pada
gambar 1.3. Ubahlah caption label1 dan label2 pada object inspector, menjadi ”Input Bilangan
Pertama” dan ”Input Bilangan Kedua” Masukkan Komponen Edit1 dan Edit2 pada form, di tempat seperti pada gambar 1.4. Hapus tulisan di Text Edit1 dan Edit2 pada object inspector, sehingga tulisan Edit1 dan
Edit2, pada masing-masing komponen hilang, tampak seperti gambar 1.4 Masukkan komponen GroupBox pada Form, ubah captiannya dengan tulisan ”operasi
matematika” Masukkan komponen RadioButton1 – 5, di dalam komponen GroupBox, dan ubah
masing-masing captionnya seperti pada gambar 1.4 Masukkan komponen Button, dan ubah captionnya sesaui dengan gambar 1.4 Langkah berikutnya tuliskan codingnya pada masing-masing komponennya, dengan
cara men-double Click pada komponen RadioButton1-5, dan Button1. Codingnyaadalah sebagai berikut:
//---------------------------------------------------------------------------
YHPI -> hal : 12
float hasil,bil1,bil2;
void __fastcall TForm2::RadioButton1Click(TObject *Sender){
bil1=StrToFloat(Edit1->Text);bil2=StrToFloat(Edit2->Text);hasil=bil1*bil2;Label3->Caption="Hasilnya adalah : "+FloatToStr(hasil);
}//---------------------------------------------------------------------------void __fastcall TForm2::RadioButton2Click(TObject *Sender){
bil1=StrToFloat(Edit1->Text);bil2=StrToFloat(Edit2->Text);hasil=bil1/bil2;Label3->Caption="Hasilnya adalah : "+FloatToStr(hasil);
}//---------------------------------------------------------------------------
void __fastcall TForm2::RadioButton3Click(TObject *Sender){
bil1=StrToFloat(Edit1->Text);bil2=StrToFloat(Edit2->Text);hasil=pow(bil1,bil2);Label3->Caption="Hasilnya adalah : "+FloatToStr(hasil);
}//---------------------------------------------------------------------------
void __fastcall TForm2::RadioButton4Click(TObject *Sender){
bil1=StrToFloat(Edit1->Text);bil2=StrToFloat(Edit2->Text);hasil=int(bil1)%int(bil2);Label3->Caption="Hasilnya adalah : "+FloatToStr(hasil);
}//---------------------------------------------------------------------------
void __fastcall TForm2::RadioButton5Click(TObject *Sender){
bil1=StrToFloat(Edit1->Text);bil2=StrToFloat(Edit2->Text);hasil=int(bil1)/int(bil2);Label3->Caption="Hasilnya adalah : "+FloatToStr(hasil);
}//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender){
Close();}
//--------------------------------------------------------------------------- Setelah mengetik sour code, kemudian simpanlah project ini dengan mengklik ”Save
ALL”, untuk unit->beri nama ”Latihan1_OM.cpp”.
Apabila mengalami kesulitan silahkan bertanya pada Dosen yang mendampingi !
YHPI -> hal : 13
Berikutnya buatlah form ketiga dengan cara : File->New->pilih Form, buatlah desainberikut :
Gambar 1.5
Langkah-langkah pembuatan desain sebagai berikut:a. Masukkan semua komponen yang dibutuhkan pada form, di tempat seperti pada
gambar 1.5.b. Ubah semua caption maupun Text untuk masing-masing komponen seperti pada
gambar1.5c. Hasil akhir desain adalah seperti nampak pada Gambar 1.5d. Kemudian Doubel-Click pada masing-2 komponen yang diperlukan untuk menuliskan
coding di bawah ini:
void __fastcall TForm3::FormCreate(TObject *Sender){
StringGrid1->Hide();Button2->Hide();
}//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender){
Label1->Hide();Label2->Hide();Label3->Hide();Edit1->Hide();
YHPI -> hal : 14
Edit2->Hide();Edit3->Hide();Button1->Hide();StringGrid1->Show();Button2->Show();StringGrid1->ColCount=6;StringGrid1->RowCount=StrToInt(Edit3->Text)+1;StringGrid1->Cells[0][0]="No.";StringGrid1->Cells[1][0]="Bilangan (x)";StringGrid1->Cells[2][0]="x^3";StringGrid1->Cells[3][0]="x!";StringGrid1->Cells[4][0]="Sin(x)";StringGrid1->Cells[5][0]="Cos(x)";int i,j,bil,it,jd;float cs,sn,fak,pkt;i=1;bil=StrToInt(Edit1->Text);it=StrToInt(Edit2->Text);jd=StrToInt(Edit3->Text);while (i<=jd){ pkt=pow(bil,3);
fak=1;for (j=1;j<=bil;j++)
fak=fak*j;sn=sin(bil*3.14/180);cs=cos(bil*3.14/180);StringGrid1->Cells[0][i]=IntToStr(i);StringGrid1->Cells[1][i]=IntToStr(bil);StringGrid1->Cells[2][i]=FloatToStr(pkt);StringGrid1->Cells[3][i]=FloatToStr(fak);StringGrid1->Cells[4][i]=FloatToStr(sn);StringGrid1->Cells[5][i]=FloatToStr(cs);i=i+1;bil=bil+it;
}
}//---------------------------------------------------------------------------
void __fastcall TForm3::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------
e. Setelah Menuliskan Coding, aturlah tempat StringGrid, sehingga hasil running aplikasiprogram akan propoesional dan terletak di tengah.
f. Simpan unit ”Latihan1_DB.cpp”.
Berikutnya aktivkan atau pindah pada Form1, kemudian double klick pada menu keluar -> ketikan codingnya, tambahkan coding #include "operasi.h", #include "deret.h",ketikan coding untuk menu operasi matematika, dan deret bilangan pada tempatmasing-masing, seperti pada coding di bawah, ini :
//---------------------------------------------------------------------
#include <vcl.h>#pragma hdrstop
YHPI -> hal : 15
#include "Latihan1_1.h"#include "Latihan1_OM.h"#include "Latihan1_DB.h"//--------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//----------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){}//----------------------------------------------------------------
void __fastcall TForm1::Keluar1Click(TObject *Sender){
Close();}//-------------------------------------------------------------------
void __fastcall TForm1::Operasi1Click(TObject *Sender){
Form2->Show();}//------------------------------------------------------------------
void __fastcall TForm1::DeretBilangan1Click(TObject *Sender){
Form3->Show();}//-------------------------------------------------------------------
I.4 SOAL (UJI KEMAMPUAN),Kerjakan setiap soal pada buku anda dengan cara membuat flowchart dan listingprogram, masing-masing soal simpan dengan nama file SOALI_1.cpp/bpr, danSOALI_2 .cpp/bpr!1. Buat desain seperti latihan 1.3.1, dengan hanya merubah radiobutton diubah ke dalam
bentuk checklist.
2. Buat desain aplikasi untuk memasukkan nilai Resistor sebanyak 5 Resistor, kemudian
buat output berupa nilai pengganti R paralel dan R seri.
YHPI -> hal : 16
BAB IIMANIPULASI STRINGGRID, LISTBOX DAN COMBOBOX
II.1. TUJUANMateri pertemuan kedua dititik beratkan optimalisasi penggunaan komponen stringgrid dan
combobox, adapun tujuan latihan program pertemuan kedua ini adalah,
1. Mahasiswa mampu menggunakan stringgrid sebagai tampilan data
2. Mahasiswa mampu memodifikasi stringgrid, sehingga stringgrid dapat digunakan untuk
entry data
3. Mahasiswa mampu menggunakan combobox untuk membuat desain untuk
kepentingan listing pilihan.
II.2. TEORI DASAROverView StringGrid
StringGrid adalah sebuah teknik penggunaan baris dan kolom untuk merepresentasikan
data dalam bentuk visual. Tidak ada aturan yang sangat keras dalam mengontrol penggunaan
stringgrid ini. Untuk menangani isinya sebuah grid dibuat dalam baris vertikal dan horizontal.
Baris-baris ini menggunakan pemisah, yang vertikal disebut kolom sedangkan yang horizontl
disebut baris.
Gambar 2.1
Pertemuan antara baris dan kolom disebut Cells, untuk membuat sebuah grid data, VCL
menyediakan beberapa kontrol, diantaranya adalah TstringGrid class.
Jika kita ingin menentukan baris dan kolom fix-nya, kita bisa mengatur nilai FiedRows atau
FixedCols,.
YHPI -> hal : 17
Gambar 2.2
II.2.1. Properties CellsSecara default cells pada stringgrid dibedakan menjadi dua, yaitu cells yang dapat
dilalui oleh pointer, bahkan dapat diubah-ubah nilainya, dan cells yang tidak dapat dilalui oleh
pointer, dan nilainya juga tidak dapat di ubah. Cells-cells yang tidak bisa di lalui pointer secara
umum berada kawasan baris dan kolom yang Fixed. Warna dari cells-cells ini juga berbeda,
pada tulisan ini dibedakan warna biru untuk cells yang modifable dan yang berwarna sama
dengan warna form nya.
Gambar 2.3
Kita juga bisa merubah warna fixed cells, dan, modifable cells, dengan menggunakan code
berikut://---------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender){TStringGrid *StatRates = new TStringGrid(this);StatRates->Parent = this;StatRates->Color = TColor(RGB(255, 230, 204));StatRates->FixedColor = TColor(RGB(255, 128, 0));}//---------------------------------------------------------------------------
Hasilnya tampak seperti gambar 2.4 di bawah :
Gambar 2.4
YHPI -> hal : 18
II.2.2 ComboBox dan ListBoxListBox dan ComboBox adalah komponen yang sangat penting dan sangat sering
digunakan dalam membuat sebuah desai aplikasi. Komponen listBox merepresentasikan
jendela listBox standar, yang mana menampilkan simple listing dalam bentuk pilihan. Sebagai
contoh adalah tuliskan coding di bawah, dan jangan lupa menyiapkan komponen ListBox pada
form ://---------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender){
ListBox1->Items->Add("Senegal");ListBox1->Items->Add("Botswana");ListBox1->Items->Add("Morocco");ListBox1->Items->Add("Suddan");ListBox1->Items->Add("Kenya");ListBox1->Items->Add("Libya");ListBox1->Items->Add("Angola");ListBox1->Items->Add("Ghana");
}//---------------------------------------------------------------------------
Hasilnya adalah:
Gambar 2.5
ComboBox merupakan bentuk dari ListBox Khusus, sebenarnya combobox merupakan
kobinasi dari sebuat listbox dan edit control. User dapat memilih dari listing yang disedian
dalam porsi yang disediakan. Ketika user memilih sebuah item maka item tersebut akan
diletakkan pada edit kontrol. Sebagai contoh kita akan menambahkan list data pada combobox
sebagai berikut :
================TelekomunikasiElektronikaListrikInformatika=================
Maka coding yang bisa kita buat adalah sebagai berikut, dan juga harus menyiapkan
komponen ComboBox di Form://---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
YHPI -> hal : 19
{ComboBox1->Items->Add("Telekomunikasi");ComboBox1->Items->Add("Elektronika");ComboBox1->Items->Add("Listrik");ComboBox1->Items->Add("Informatika");
}//---------------------------------------------------------------------------
Hasilnya tampak seperti gambar 2.6 berikut:
Gambar 2.6
II.3. LATIHAN PROGRAM,II.3.1 Latihan pertama memanipulasi StringGrid, dengan merubah lebar, jumlah baris dan
jumlah kolom dalam coding, dan juga merubah cells menjadi modifable, sehinggacells dapat ditulisi.Langkah-langkah yang harus dilakukan adalah :a. Buat aplikasi baru, File-New-Applicationsb. Buat Desain form seperti pada gambar di bawah ini:
Gambar 2.7
YHPI -> hal : 20
c. Ubah Caption pada masing-masing komponen sehingga tampilan sama persisdengan gambar 2.7
d. Klik 1x pada stringgrid, kemudain klik properties pada object inspector, dan pilihoption, kemudian gantilah nilai ”false” menjadi ”true” pada item ’goEditing’ dan’goTabs’.
e. Langkah berikutnya adalah ketikkan coding berikut ini pada masing-masing VCL,sesuai dengan tempatnya!
//============================================void __fastcall TForm1::FormCreate(TObject *Sender){
StringGrid1->Hide();
}//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender){
StringGrid1->Show();StringGrid1->ColCount=7;StringGrid1->FixedCols=2;if (Trim(Edit1->Text)=="")Edit1->Text = '0';
int n,jr;jr=StrToInt(Edit1->Text)+1;StringGrid1->RowCount=jr;for (n=1;n<=jr;n++)
StringGrid1->Cells[0][n]=IntToStr(n);StringGrid1->ColWidths[0]=25;StringGrid1->ColWidths[1]=55;StringGrid1->ColWidths[2]=80;StringGrid1->ColWidths[3]=60;StringGrid1->ColWidths[4]=85;StringGrid1->ColWidths[5]=90;StringGrid1->ColWidths[6]=90;
StringGrid1->Cells[0][0]="No.";StringGrid1->Cells[1][0]="Router";StringGrid1->Cells[2][0]="Media";StringGrid1->Cells[3][0]="Jarak (m)";StringGrid1->Cells[4][0]="Bandwith Kbit/s";StringGrid1->Cells[5][0]="Throughput Kbit/s";StringGrid1->Cells[6][0]="Delay Alat (s)";StringGrid1->SetFocus();int rt,asci,i=1,k=0;AnsiString tasci,awal="";for (rt=1;rt<=jr;rt++){ asci=i%26;
tasci=awal+char(i+64);if (asci==0){ i=0;
k=k+1;awal=char(k+64);
}i=i+1;StringGrid1->Cells[1][rt]=tasci;
}
}//---------------------------------------------------------------------------
YHPI -> hal : 21
f. Coba running aplikasi ini, kemudian isi masing-masing celnyag. Simpan aplikasi ini dengan nama unit Latihan2_1.cpp, dan Project dengan nama
Platihan2_1.bpr
II.3.2. Latihan ini mengajarkan bagaimana membuat dan membuat VCL pada comboboxdan listbox,
Langkah-langkah yang harus dilakukan adalah :a. Buat aplikasi baru, File-New-Applicationsb. Buat Desain form seperti pada gambar di bawah ini:
Gambar 2.8c. Ubah Caption pada masing-masing komponen sehingga tampilan sama persis dengan
gambar 2.8d. Langkah berikutnya adalah ketikkan coding berikut ini pada masing-masing VCL,
sesuai dengan tempatnya!//========================================void __fastcall TForm1::FormCreate(TObject *Sender){
ComboBox1->Items->Add("SEMESTER 1");ComboBox1->Items->Add("SEMESTER 2");ComboBox1->Items->Add("SEMESTER 3");ComboBox1->Items->Add("SEMESTER 4");ComboBox1->ItemIndex = 0;
}//---------------------------------------------------------------------------
YHPI -> hal : 22
void __fastcall TForm1::ComboBox1Change(TObject *Sender){
if (ComboBox1->ItemIndex==0){ ListBox1->Clear();
ListBox1->Items->Add("QMS & KWU-1");ListBox1->Items->Add("Alat Ukur dan Pengukuran");ListBox1->Items->Add("Metematika Dasar");ListBox1->Items->Add("Rangkaian Listrik 1");ListBox1->Items->Add("Teknik Digital Dasar");ListBox1->Items->Add("Sistem Telekomunikasi Analog");ListBox1->Items->Add("Arsitektur Komputer");ListBox1->Items->Add("Elektronika Dasar");ListBox1->Items->Add("Praktikum Alat Ukur dan Pengukuran");
}elseif (ComboBox1->ItemIndex==1){ ListBox1->Clear();
ListBox1->Items->Add("Pemrograman Lanjut");ListBox1->Items->Add("Alat ukur");ListBox1->Items->Add("Bahasa inggris 2");ListBox1->Items->Add("Praktikum Fiber Optik");ListBox1->Items->Add("Teori Mobile");ListBox1->Items->Add("Praktikum Interfacing");ListBox1->Items->Add("Komunikasi data");ListBox1->Items->Add("Propagasi Antena");
}if (ComboBox1->ItemIndex==2){ ListBox1->Clear();
ListBox1->Items->Add("Sistem Mikrokontroller Dasar");ListBox1->Items->Add("Elektronika Telekomunikasi");ListBox1->Items->Add("Elektronika Telekomunikasi");
}
}//---------------------------------------------------------------------------
e. Coba running aplikasi ini, kemudian perhatikan hasilnyaf. Simpan aplikasi ini dengan nama unit Latihan2_2.cpp, dan Project dengan nama
Platihan2_2.bpr.
II.4. SOAL (UJI KEMAMPUAN),Kerjakan setiap soal di bawah ini dengan membuat flowchart dan listingprogram, masing-masing soal simpan dengan nama file SOALII_1.cpp.1. Buatlah desain aplikasi dengan menggunakan dua stringgrid, dimana stringgrid1 digunakan
untuk menginputkan Nama, Nilai 1, Nilai 2, dan Nilai 3, dengan jumlah siswa yang
diinputkan dengan menggunakan Edit->Text, simpan masing-masing cells ke dalam variabel
array dimensi2. Sedangkan Stringgrid2 digunakan untuk menampilkan hasil perhitungan
nilai rata-rata=(nilai1+nilai2+nilai3)/3, dimana isi kolom stringgrid2 adalah nama, dan nilai
rata-rata.
YHPI -> hal : 23
BAB IIIVARIABEL ARRAY
III.1. TUJUANPada dasarnya sebuah variabel hanya mampu menampung sebuah nilai, dengan
menggunakan variabel array maka variabel tersebut mampu menampung lebih dari satu nilai,
tujuan dari pertemuan ini adalah,
1. Mahasiswa mampu membedakan antara variabel tunggal dengan variabel array
2. Mahasiswa mampu menggunakan variabel array dalam mendesain sebuah program
III.2. TEORI DASARIII.2.1 Console WizardProgram C++ Builder menyediakan vasilitas bahasa C++, yaitu ”Console”. Aplikasi console
memberikan fasilitas kepada kita untuk membuat coding C Standart atau C++. Untuk
menjalankan editor console pada C++ Builder ver 6.0 adalah ->”File, New, Other, kemudian
pilih Console Wizard”, type kita bisa pilih C++ atau C. Tampilan dari editor console adalah
Gambar 3.1
Untuk memasukkan coding kita bisa menghapus coding yang tersedia di editor console
tersebut.
YHPI -> hal : 24
II.2.2 VARIABEL ARRAYVariabel array adalah sebuah variabel yang mampu menampung data lebih dari satu nilai,
karena di dalam variabel tersebut diberi indeks yang berfungsi sebagai pemembeda antara
satu dengan yang lain. Salah satu teknik buffering adalah dengan cara menggunakan variabel
array. Struktur variabel array secara umum adalah:
nama_variabel[indeks]
contoh penggunaan variabel bil (bukan dalam bentuk array) dalam bahaca C++ :
Jika cuplikan program di atas di jalankan dengan masukan berikut,
Bandingkan dengan contoh berikut (variabel bil sebagai variabel array):
Jika cuplikan program di atas di jalankan dengan masukan berikut,
Untuk memahami penggunaan variabel array tersebut coba implementasikan padapemrograman visual dengan desain berikut:
- Simpan dengan nama file Unit : latihan3_0.cpp dan Project : Platihan3_0.bpr
Int bil,i;for (i=1; i<=3; i++){ cout<<i;
cout<<”. Masukkan sebuah bilangan”;cin>>bil
}cout<<”Nilai dari variabel bil adalah : ”;for (i=1; i<=3; i++) cout<<setw(5)<<bil;
1. Masukkan sebuah bilangan : 5 (inputkan)2. Masukkan sebuah bilangan : 4 (inputkan)3. Masukkan sebuah bilangan : 8 (inputkan)
Nilai dari variabel bil adalah: 8 8 8
Int bil[5],i,j;for (i=1; i<=3; i++){ cout<<i;
cout<<”. Masukkan sebuah bilangan”;cin>>bil[i]
}cout<<”Nilai dari variabel bil adalah : ”;for i=1; i<=3; i++) cout<<setw(5)<<bil[i];
1. Masukkan sebuah bilangan : 5 (inputkan)2. Masukkan sebuah bilangan : 4 (inputkan)3. Masukkan sebuah bilangan : 8 (inputkan)
Nilai dari variabel bil adalah: 5 4 8
YHPI -> hal : 25
Gambar 3.2Listing Code adalah:TForm1 *Form1;int i;AnsiString nim[10],nm[10],alm[10]; //Variabel array!//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender){
StringGrid1->ColCount=4;StringGrid1->RowCount=10;StringGrid1->Cells[0][0]="NO.";StringGrid1->Cells[1][0]="N I M";StringGrid1->Cells[2][0]="NAMA";StringGrid1->Cells[3][0]="ALAMAT";StringGrid1->ColWidths[0]=50;StringGrid1->ColWidths[1]=80;StringGrid1->ColWidths[2]=100;StringGrid1->ColWidths[3]=100;StringGrid1->Hide();Button3->Hide();Label5->Hide();
}//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender){
Edit1->SetFocus();}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){
Label1->Hide();Label2->Hide();Label3->Hide();Label5->Show();Edit1->Hide();
YHPI -> hal : 26
Edit2->Hide();Edit3->Hide();Button1->Hide();Button2->Hide();Button3->Show();StringGrid1->Show();int j,k,n,m;i=i-1;for (j=0;j<=i;j++){ StringGrid1->Cells[0][j+1]=IntToStr(j+1);
StringGrid1->Cells[1][j+1]=nim[j];StringGrid1->Cells[2][j+1]=nm[j];StringGrid1->Cells[3][j+1]=alm[j];
}
}//---------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){
nim[i]=Edit1->Text;nm[i]=Edit2->Text;alm[i]=Edit3->Text;i=i+1;Edit1->Text="";Edit2->Text="";Edit3->Text="";Edit1->SetFocus();
}//---------------------------------------------------------------------------
III.3. LATIHAN PROGRAM,Gunakan editor Console pada C++ Builder, dengan cara seperti yang sudah di jelaskan
terdahulu, kemudian ketikkan coding pada latihan berikut, mohon diperhatikan hasil dan
struktur logikanya, check hasilnya secara manual!
III.3.1 Melatih logika array, dengan mengimplementasikan input bilangan pada stringgridsesuai dengan jumlah data yang dimasukkan, kemudian menghitung nilai pangkat3, dan menghitung masing-masing nilai faktorialnya, simpan file unit dengan nama“Latihan3_1.cpp” dan nama project :Platihan3_1.bpr”
- Buat desain seperti berikut:
YHPI -> hal : 27
Gambar 3.2- Klik 1x StringGrid1, sehingga akan nampak bahwa komponen yang sedang aktiv
adalah StringGrid1, pada Object Inspector-> Properties->Option, (pada goEditing dangoTabs ) ubahlah nilainya menjadi true.
- Kemudian ketikkan coding berikut, sesuaikan dengan komponennya, dengan caramengklik 2x komponen yang dimaksud untuk menuliskan codingnya.
//==================================================void __fastcall TForm1::FormCreate(TObject *Sender){
StringGrid1->ColCount=2;StringGrid1->RowCount=11;StringGrid1->Cells[0][0]="NO.";StringGrid1->Cells[1][0]="BILANGAN";StringGrid1->ColWidths[0]=50;StringGrid1->ColWidths[1]=150;int i;for (i=1;i<=10;i++){ StringGrid1->Cells[0][i]=IntToStr(i);}StringGrid2->ColCount=5;StringGrid2->RowCount=11;StringGrid2->Cells[0][0]="NO.";StringGrid2->Cells[1][0]="BILANGAN (X)";StringGrid2->Cells[2][0]="X ^2";StringGrid2->Cells[3][0]="X!";StringGrid2->ColWidths[0]=50;StringGrid2->ColWidths[1]=150;StringGrid2->ColWidths[2]=150;StringGrid2->ColWidths[3]=150;
StringGrid2->Hide();Label2->Hide();Button2->Hide();
}//---------------------------------------------------------------------------
YHPI -> hal : 28
void __fastcall TForm1::Button1Click(TObject *Sender){
Button1->Hide();Button2->Show();StringGrid1->Hide();StringGrid2->Show();Label1->Hide();
int i,bil[10],j,k,l;float f,x2;AnsiString b;for(i=1;i<=10;i++){ b=StringGrid1->Cells[1][i];
StringGrid2->Cells[0][i]=IntToStr(i);if (Trim(b)!="")
bil[i] = StrToInt(StringGrid1->Cells[1][i]);else bil[i] = 0;
}for (l=1;l<=9;l++){ if (bil[l]!=0)
{ StringGrid2->Cells[1][l]=IntToStr(bil[l]);x2=pow(bil[l],2);f=1;for (k=1;k<=bil[l];k++)
f=f*k;StringGrid2->Cells[2][l]=FloatToStr(x2);StringGrid2->Cells[3][l]=FloatToStr(f);
}}
}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------
III.3.2 Menentukan nilai terbesar dan nilai terkecil dari sejumlah data yang diinputkan =>perhatikan caranya! simpan file unit dengan nama “Latihan3_2.cpp” dan namaproject :Platihan3_2.bpr”
- Buat desain seperti berikut:
YHPI -> hal : 29
- Kemudian ketikkan coding berikut, sesuaikan dengan komponennya, dengan caramengklik 2x komponen yang dimaksud untuk menuliskan coding berikut,
TForm1 *Form1;int jd=0;int i,bil[10],ntt,ntk,j=1;AnsiString b;
//-----------------------------------------------------#ifdef __cplusplus
int max (int value1, int value2);int max(int value1, int value2){
return ( (value1 > value2) ? value1 : value2);}int min (int value1, int value2);int min(int value1, int value2){
return ( (value1 < value2) ? value1 : value2);}
#endif
//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender){StringGrid1->ColCount=2;
StringGrid1->RowCount=11;StringGrid1->Cells[0][0]="NO.";StringGrid1->Cells[1][0]="BILANGAN";
YHPI -> hal : 30
StringGrid1->ColWidths[0]=50;StringGrid1->ColWidths[1]=150;int i;for (i=1;i<=10;i++){ StringGrid1->Cells[0][i]=IntToStr(i);}Button2->Hide();Label2->Hide();Label3->Hide();Label4->Hide();Label5->Hide();
}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){
Button2->Show();Label2->Show();Label3->Show();Label4->Show();Label5->Show();for(i=1;i<=10;i++){ b=StringGrid1->Cells[1][i];
if (Trim(b)!=""){ bil[i] = StrToInt(StringGrid1->Cells[1][i]);
jd=jd+1;}else bil[i] = 0;
}ntt=bil[1];ntk=bil[1];
while (j<=jd-1){
ntt=max(ntt,bil[j+1]);ntk=min(ntk,bil[j+1]);j=j+1;
}Label4->Caption=IntToStr(ntt);Label5->Caption=IntToStr(ntk);
}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){
Button2->Hide();Label2->Hide();Label3->Hide();
YHPI -> hal : 31
Label4->Hide();Label5->Hide();for(i=1;i<=10;i++){ StringGrid1->Cells[1][i]= "";}j=1 ;jd=0;
}//---------------------------------------------------------------------------
III.4. SOAL (UJI KEMAMPUAN),Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama file SOAL3_1.cpp/bpr, danSOAL3_2.cpp/bpr1. Gunakan stringgrid untuk input data, tentukan nilai tengah, nilai yang sering muncul, total,
dan rata-rata nilai yang diinputkan.
2. Inputkan sejumlah bilangan, dengan jumlah deret yang diinputkan, kelompokkan data
sesuai dengan tingkat kemiripan data, dengan VCL.
YHPI -> hal : 32
BAB IVSORTIR DATA
IV.1. TUJUANMengurutkan (sorting) data dari kecil ke besar atau sebaliknya sangat dibutuhkan dalam
merangking, mengelompokkan, maupun teknik pencarian data. Adapun tujuan dari pertemuan
ini adalah,
1. Mahasiswa mampu menyusun algoritma pensortiran data dengan metode insertion sot,
selection sort, dan exchange sort.
2. Mahasiswa mampu mengimplementasikan salah satu metode pensortiran data dalam
menrancang program.
IV.2. TEORI DASARTEKNIK SORTIR DATAPada Modul Pemrograman Lanjut telah disampaikan bahwa teknik dasa pensortiran ada tiga
macam yaitu: penyisipan, pemilihan, dan penukaran. Ada dua hal yang dapat mempengaruhi
kecepatan Algoritma Sortir yaitu, jumlah operasi perbandingan yang dilakukan, dan jumlah
operasi pemindahan data yang dilakukan. Proses sortir data harus diperhatikan jumlah
pemindahan data atau data movement yang dilakukan. Hal ini penting karena pada proses
sortir, isi data input akan berubah menjadi data output yang sudah terurut. Oleh karena itu
teknik pemindahan data yang dilakukan jelas akan mempengaruhi kecepatan Algoritma.
Secara umum ada 3 teknik utama yang dapat dilakukan dalam melakukan Sortir. Ketiga teknik
tersebut adalah :
1. Sortir Penyisipan atau Insertion Sort, dengan algoritma sebagai berikut:
2. Sortir Pemilihan atau Selection Sort, mempunyai algoritma sebagai berikut,
Keterangan:i : adalah variabel counterjum_dat : adalah jumlah data keseluruhanx : variabel temporer sebagai buffer data
sementaraa : vaiabel buffering data (dalam bentuk
array)
YHPI -> hal : 33
3. Sortir Penukaran atau Exchange Sort, secara logika mempunyai algoritma berikut,
Masing-masing teknik pensortiran data tersebut secara logika mempunyai beberapa kelebihan
dan kekurangan.
Keterangan:i ,k,j : adalah variabel counterjum_dat : adalah jumlah data keseluruhanx : variabel temporer sebagai buffer data
sementaraa : vaiabel buffering data (dalam bentuk
array)
Keterangan:I,j : adalah variabel counterjum_dat : adalah jumlah data
keseluruhantemp : variabel temporer sebagai buffer
data sementaraa : vaiabel buffering data (dalam bentuk
array)
YHPI -> hal : 34
IV.3. LATIHAN PROGRAM,Pada latihan ini anda diminta untuk membuat desai seperti pada layout yang ada,
perhatikan dengan seksama metode dan codingnya, jangan asal mengetik saja, belajar
pemrograman dibutukan ketelitian, latihan/ketrampilan, dan logika.
IV.3.1. Mensortir data atau mengurutkan data, menggunakan metode penyisipan, yaitumensortir/mengurutkan data dengan membuffer data untuk hasil sortir dankemudian disisipi oleh data hasil seleksi berikutnya.
- Buat desain seperti layout di bawah ini!, simpan dengan nama Latihan4_1.cpp,dan Platihan4_1.bpr !
- Ketikkan coding di bawah ini sesuaikan dengan letak komponen yang di maksud!
TForm1 *Form1;int data[20];//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender){
StringGrid1->RowCount=11;StringGrid1->ColCount=2;StringGrid1->ColWidths[0]=30;StringGrid1->ColWidths[1]=90;
YHPI -> hal : 35
StringGrid1->Cells[0][0]="No.";StringGrid1->Cells[1][0]="Bilangan";int i;for (i=1;i<=10;i++)
StringGrid1->Cells[0][i]=IntToStr(i);
StringGrid2->RowCount=11;StringGrid2->ColCount=2;StringGrid2->ColWidths[0]=30;StringGrid2->ColWidths[1]=90;StringGrid2->Cells[0][0]="No.";StringGrid2->Cells[1][0]="Bilangan";int j;for (j=1;j<=10;j++)
StringGrid2->Cells[0][j]=IntToStr(j);Label2->Hide();StringGrid2->Hide();
}//---------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){ int j;
for (j=1;j<=10;j++)StringGrid1->Cells[1][j]="";
Label2->Hide();StringGrid2->Hide();
}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){
if (Trim(StringGrid1->Cells[1][1])=="")ShowMessage("Data Harus Diisi Dulu!, Press OK");
else{ Label2->Show();
StringGrid2->Show();int j,jd=0,temp;AnsiString b;//simpan data ke variabel memory array !for (j=1;j<=10;j++){ b=StringGrid1->Cells[1][j];
if (Trim(b)!=""){ data[j]= StrToInt(StringGrid1->Cells[1][j]);
jd=jd+1;}
YHPI -> hal : 36
else data[j] = 0;}
// Proses Pensortiran Metode penyisipanint i,k;for (i=2;i<=jd;i++){ temp=data[i];
data[0]=temp;k=i-1;while (temp<data[k]){ data[k+1]=data[k];
k=k-1;}data[k+1]=temp;
}
// Proses Menampilkan data hasil pensortiranint m ;for (m=1;m<=jd;m++)
StringGrid2->Cells[1][m] = IntToStr(data[m]);}
}//---------------------------------------------------------------------------
IV.3.2. Mensortir data atau mengurutkan data, menggunakan metode penukaran, yaitumensortir/mengurutkan data dengan cara menukar hasil seleksi.
- Buat desain seperti layout di bawah ini!, simpan dengan nama Latihan4_2.cpp,dan Platihan4_2.bpr !
YHPI -> hal : 37
- Kemudian ketikkan coding berikut, sesuaikan dengan komponennya, dengan caramengklik 2x komponen yang dimaksud untuk menuliskan coding berikut,
TForm1 *Form1;int data[20];//----------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){}//----------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender){
if (Trim(StringGrid1->Cells[1][1])=="")ShowMessage("Data Harus Diisi Dulu!, Press OK");
else{ Label2->Show();
StringGrid2->Show();int j,jd=0,temp,i;AnsiString b;//simpan data ke variabel memory array !for (j=1;j<=10;j++){ b=StringGrid1->Cells[1][j];
if (Trim(b)!=""){ data[j]= StrToInt(StringGrid1->Cells[1][j]);
jd=jd+1;}else data[j] = 0;
}
// Proses Pensortiran Metode penukarani=1;j=1;do{ for(j=i+1;j<=jd;j++)
if (data[i]>data[j]){ temp=data[i];
data[i]=data[j];data[j]=temp;
}i=i+1;
}while (i<=jd);
// Proses Menampilkan data hasil pensortiranint m ;for (m=1;m<=jd;m++)
StringGrid2->Cells[1][m] = IntToStr(data[m]);}
}//----------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender){
YHPI -> hal : 38
StringGrid1->RowCount=11;StringGrid1->ColCount=2;StringGrid1->ColWidths[0]=30;StringGrid1->ColWidths[1]=90;StringGrid1->Cells[0][0]="No.";StringGrid1->Cells[1][0]="Bilangan";int i;for (i=1;i<=10;i++)
StringGrid1->Cells[0][i]=IntToStr(i);
StringGrid2->RowCount=11;StringGrid2->ColCount=2;StringGrid2->ColWidths[0]=30;StringGrid2->ColWidths[1]=90;StringGrid2->Cells[0][0]="No.";StringGrid2->Cells[1][0]="Bilangan";int j;for (j=1;j<=10;j++)
StringGrid2->Cells[0][j]=IntToStr(j);Label2->Hide();StringGrid2->Hide();
}//----------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){ int j;
for (j=1;j<=10;j++)StringGrid1->Cells[1][j]="";
Label2->Hide();StringGrid2->Hide();
}//----------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){
Close();}//----------------------------------------------------------------------
IV.4. SOAL (UJI KEMAMPUAN),Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama file SOAL4_1.cpp dan PSoal4_1.bpr!1. Buat Sortir Data dengan metode pemilihan, atur layout sesuai dengan keinginan anda!
2. Buat kesimpulan kelebihan dan kekurangan dari ketiga metode sortir data tersebut!
YHPI -> hal : 39
BAB VOOP, STRUKTUR DAN CLASS
V.1. TUJUANPemrograman berorientasi objek merupakan paradigma pemrograman yang semua data dang
fungsi dibungkus dalam kelas-kelas atau obyek-obyek. Tujuan dari BAB lima ini adalah,
1. Mahasiswa mampu membandingkan pemrograman antara logika terstrukur dengan
logika berorientasi obyek.
2. Mahasiswa mampu menyusun permasalahan dalam struktur dan kelas.
3. Mahasiswa mampu mendesain sebuah program dengan memanfaatkan struct dan
class sebagai elemen OOP.
V.2. TEORI DASARV.2.1 Variabel Obyek atau dikenal sebagai OOP (Object – Oriented Programming)C++ mempunyai keistimewaan, yaitu bahasa ini mendukung pemrograman yang berorientasi
objek atau OOP (Object Oriented Programming). Yang di maksud dengan objek disini
sebenarnya mencerminkan pola kerja manusia dalam kehidupan sehari-hari. Sebuah objek
dapat diibaratkan sebagai departemen-departemen di dalam sebuah institusi pendidikan.
Contoh departemen :
1. akademik
2. personalia
3. kemahasiswaan
4. perawatan
5. jurusan
6. dan yang lain
Pembagian departemen institusi pendidikan merupakan upaya untuk memudahkan
pengoperasian kerja institusi. Sebagai gambaran, jika anda seorang KABAG AKADEMIK di
Kantor Pusat ingin mengetahui data tentang biodata dari seorang mahasiswa, apa yang anda
lakukan? Langkah yang anda tempuh pasti tidak datang secara langsung ke ruang
kemahahasiswaan dan mencari data pada berkas-berkas yang ada pada departemen tersebut.
Untuk memudahkan tugas anda, anda cukup mengutus sekretaris anda untuk meminta
informasi dari departemen kemahasiswaan sesuai yang anda butuhkan. Masalah bagaimana
dan siapa yang mencarikan laporan yang diperlukan bukanlah menjadi urusan anda. Analogi
dengan hal ini, kalau seseorang bermaksud menggunakan objek, ia cukup mengirim suatu
pesan ke objek dan objek itu sendiri yang akan menanganinya.
Sebuah gambaran tentang objek yang berisi data dan fungsi yang memanipulasi data dapat
dilihat pada gambar di bawah ini :
YHPI -> hal : 40
Adapun gambar yang melukiskan hubungan antar objek yang menganalogikan struktur di
institusi :
V.2.2. STRUKTUR dan CLASSDalam C++/Visual Struct dan class mempunyai penulisan yang sama. Secara konsep class
merupakan struktur data dari obyek atau elemen dasar dari OOP. Deklarasi class dan struct
memiliki anggota dengan akses public kecuali jika dinyatakan lain. C ++/Visual tidak
membedakan nama class dan nama tag, paling tidak dari sudut pandang pemprogram dan
tetap menerima deklarasi structure. Kompatibilitas C ++/Visual tidak sebatas pada perbedaan
nama class dan nama type karena C++/Visual masih memerlukan definisi type POD (Plain Old
Data). C++/Visual mendefinisikan POD Type sebagai objek suatu class yang tidak mempunyai
userdefined constructor, anggota protected maupun private, tidak memiliki base class dan tidak
memiliki fungsi virtual.
Struktur bertujuan untuk mengelompokkan sejumlah data dengan tipe yang berlainan, sebagai
contoh:
struct data_biodata
{ char nama[30];
int tanggal_lahir;
YHPI -> hal : 41
int bulan_lahir;
int thn_lahir;
char hobi[20];
}
contoh calss:
class biodata
{ static :
int th_lahir;
public:
void umur();
}
V.3. LATIHAN PROGRAM :Gunakan VCL dan API milik C++ Builder untuk membuat desai dan menuliskan
codinynya, perhatikan hasilnya cek secara manual, jika masih ada kesalahan silakan dirunut
algoritma dari codingnya!
V.3.1. Mengimplementasikan type class dengan menggunakan desain VCL,buatlah desain form seperti gambar 5.1 berikut:
Gambar 5.1
Langkah-langkah pengerjaan adalah sebagai berikut:
YHPI -> hal : 42
Buka aplikasi program baru, letakkan masing-masing komponen sesuai dengantempatnya seperti pada gambar 9.1
Ubahlah masing-masing caption yang diperlukan sehingga tampilan sesuai dengangambar 9.1
Kemudian Doubel-Click pada masing-2 komponen yang diperlukan untuk menuliskancoding di bawah ini:
//---------------------------------------------------------------------------class biodata{ public:
AnsiString nim[15];AnsiString nama[30];AnsiString alamat[35];AnsiString umurS[30];
};biodata data[10],temp;//AnsiString nim[10][10],nm[10][10], alm[10][10],um[10][10];DATE tgl;int i;TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender){StringGrid1->ColCount=5;
StringGrid1->RowCount=10;StringGrid1->Cells[0][0]="NO.";StringGrid1->Cells[1][0]="N I M";StringGrid1->Cells[2][0]="NAMA";StringGrid1->Cells[3][0]="ALAMAT";StringGrid1->Cells[4][0]="U M U R";StringGrid1->ColWidths[0]=50;StringGrid1->ColWidths[1]=80;StringGrid1->ColWidths[2]=100;StringGrid1->ColWidths[3]=100;StringGrid1->ColWidths[4]=70;StringGrid2->ColCount=5;StringGrid2->RowCount=10;StringGrid2->Cells[0][0]="NO.";StringGrid2->Cells[1][0]="N I M";StringGrid2->Cells[2][0]="NAMA";StringGrid2->Cells[3][0]="ALAMAT";StringGrid2->Cells[4][0]="U M U R";StringGrid2->ColWidths[0]=50;StringGrid2->ColWidths[1]=80;StringGrid2->ColWidths[2]=100;StringGrid2->ColWidths[3]=100;StringGrid2->ColWidths[4]=70;
StringGrid1->Hide();StringGrid2->Hide();Label5->Hide();Label6->Hide();Button3->Hide();
YHPI -> hal : 43
i=1;
}//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender){
data[i].nim[0]=Edit1->Text;data[i].nama[0]=Edit2->Text;data[i].alamat[0]=Edit3->Text;tgl=StrToDate(Edit4->Text);data[i].umurS[0]=FormatDateTime("yy",Date()-tgl);i=i+1;Edit1->Text="";Edit2->Text="";Edit3->Text="";Edit4->Text="";Edit1->SetFocus();
}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){
Label1->Hide();Label2->Hide();Label3->Hide();Label4->Hide();Label5->Show();Label5->Caption="DATA SEBELUM DISORTIR";Label6->Show();Label6->Caption="DATA SESUDAH DISORTIR";
Edit1->Hide();Edit2->Hide();Edit3->Hide();Edit4->Hide();Button1->Hide();Button2->Hide();Button3->Show();StringGrid1->Show();StringGrid1->RowCount=i;StringGrid2->Show();StringGrid2->RowCount=i;
int j,k,n,m;i=i-1;for (j=0;j<=i;j++){ StringGrid1->Cells[0][j+1]=IntToStr(j+1);
StringGrid1->Cells[1][j+1]=data[j+1].nim[0];StringGrid1->Cells[2][j+1]=data[j+1].nama[0];StringGrid1->Cells[3][j+1]=data[j+1].alamat[0];StringGrid1->Cells[4][j+1]=data[j+1].umurS[0];
}// PROSES PENSORTIRAN
for (k=1;k<=i-1;k++)for (j=k+1;j<=i;j++){ n=StrToInt(data[k].nim[0]);
m=StrToInt(data[j].nim[0]);if (n>m){ temp=data[k];
YHPI -> hal : 44
data[k]=data[j];data[j]=temp;
}}
// MENAMPILKAN DATA HASIL SORTIRfor (j=0;j<=i;j++){ StringGrid2->Cells[0][j+1]=IntToStr(j+1);
StringGrid2->Cells[1][j+1]=data[j+1].nim[0];StringGrid2->Cells[2][j+1]=data[j+1].nama[0];StringGrid2->Cells[3][j+1]=data[j+1].alamat[0];StringGrid2->Cells[4][j+1]=data[j+1].umurS[0];
}
}//---------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------void __fastcall TForm1::FormActivate(TObject *Sender){
Edit1->SetFocus();}//--------------------------------------------------------------------------- Aturlah letak masing-masing komponen sehingga pada saat di running desain akan
lebih proporsional. Setelah mengetik source code dan mengatur tempat yang proporsional, kemudian
simpanlah project ini dengan mengklik ”Save ALL”, untuk unit->beri nama”Latihan5_1.cpp”, sedangkan untuk Project beri nama ”Platihan5_1”
Apabila mengalami kesulitan silahkan bertanya pada Dosen yang mendampingi !
IX.4. SOAL(UJI KEMAMPUAN)Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,masing-masing simpan dengan nama SOAL5_1.cpp; PSOAL5_1.bpr, danSOAL5_2.cpp, P SOAL5_2.bpr.1. Buat program dengan basis struct seperti latih5_1.cpp, dengan mensortir NIM
berdasarkan pilihan ascending atau descending sesuai dengan pilihan, pilihan gunakan
bentuk radiobutton. Desain dengan mode VCL.
2. Buat program dengan basis class seperti latih5_3.cpp, dengan mensortir pilihan field,
masukkan pilihan ke dalam komponen combobox, buat dalam VCL.
YHPI -> hal : 45
BAB VIPENGANTAR DATABASE
VI.1. TUJUANDatabase adalah kumpulan dari data yang biasanya diletakkan dalam beberapa tabel,
sedangkan tabel adalah bagian dari database yang berisi tentang record (baris) dan field
(kolom). Tujuan dari BAB keenam ini adalah,
1. Mahasiswa mampu membuat tabel sederhana pada database desktop.
2. Mahasiswa mampu membuat desain program aplikasi database sederhana dan
melinkkan dengan tabel yang.dibuat lewat desktop
3. Mahasiswa mampu membedakan komonen visual dan komponen non visul.
VI.2. TEORI DASARPengantar Data BaseC++Builder sebagai salah satu pengembang aplikasi yang bersifat RAD (Rapid Application
Development menyediakan aplikasi database (basis data), walaupun core dari C++Builder
bukan merupakan program database. Sehingga berdasarkan beberapa pengembang
database, pemrograman database dengan C++Builder agak sedikit lebih sulit dan ribet. Untuk
membuat program aplikasi database harus melibatkan komponen non visual (Table,
DataSource, dan yang lain) untuk me-link-kan tabel data dengan program User Interface (UI)
atau Form. Lingkungan database sering dikenal dengan istilah Back End, sedangkan
lingkungan User Interface dikenal dengan istilah Front End. BDE (Borland Database Engine)
adalah software yang disediakan C++Builder untuk membuat komunikasi antara database
dengan user interface.
Arsitektur Data BaseSebuah aplikasi database dibagun menggunakan Borlan DataBase Development Tools,
Borland data-access component, dan data-aware GUI components. Sebuah aplikasi database
menggunakan komponen-komponen Builder untuk berkomunikasi dengan Borland Database
Engine (BDE) yang mengaktivkan komunikasi database. Gambar berikut menjelaskan
arsitektur dari database;
YHPI -> hal : 46
Gambar 5.1 Arsitektur Database C++Builder
Berikut adalah tabel penjelasan gambar 5.1;
Tabel (5.1)
No. Tool Tujuan
1 Data Access Component Akse database, tabel, store procedure,
memilih editor komponen
2 Data Componen Control Menyediakan user interfasce ke tabel
database
3 Database Desktop (DBD) Membuat dan mengindeks tabel (dbase,
paradox,...) dan SQL database,
mengakses dan mengedit data dari
semua sumber
4 Report Smith Membuat, menampilkan, dan mencetak
laporan
5 Borland Database Engine (BDE) Mengakses data dari file paradox, tabel
Dbase,... dan dari lokal interbase server
YHPI -> hal : 47
databases.
6 BDE Configuration Utility Membuat dan memenage koneksi alias
database yang digunakan oleh BDE
7 Local Interbase Server Menyediakan single user, multiuser,
desktop SQL server untuk membangun
dan menguji aplikasi Cbuilder.
8 Interbase SQL Link Sebagai driver yang digunakan untuk
mengkoneksikan aplikasi database ke
Local Interbase Server
Contoh struktur tabel:
VI.3. LATIHAN PROGRAM :Yang perlu diperhatikan adalah data disimpan dalam file tersendiri dalam bentuk tabel,
sedangkan program disimpan dalam kelompok file Project. Sebagai perkenalan pada latihan ini
kita akan mencoba membuat tabel melalui “database desktop”.
Buatlah folder ->”Data”, yang diletakkan pada folder anda, yang sring anda gunakan untuk
latihan membuat program, dimana folder “data” akan dipakai sebagai ruang untuk
mengumpulkan tabel-tabel yang akan kita buat.
VI.3.1. Membuat database sederhana dengan bantuan database desktopIkuati langkah-langkah di bawah ini
- Pilih menu “tools -> database desktop
YHPI -> hal : 48
- Setelah database desktop aktiv pilih menu “File->New->Table”, kemudian pilih tipedatabase, misalnya pilih “Visual Dbase”, lihat gambar di bawah!
- Isikan field name, type, size, dan Decimal (sesuaikan dengan tabel yang akan kitabuat), ikuti pengisian dibawah ini!
YHPI -> hal : 49
Kemudian simpan (tekan SaveAs), dengan nama “biodata1”, letakkan dalam folder“data” yang telah kita buat, hasil tampak seperti di bawah:
- Kemudian buat nama alias, sebagai pengganti nama database, dengan memilih menu“Tools->Alias Manager”, kemudian pilih (klik) tombol “New”, pada “Database alias”,isikan “datasiswa”, kemudian tekan tombol “Browse”, pilih folder “data” yang sudahkita buat, hasilnya tampak seperti gambar di bawah:
YHPI -> hal : 50
Terakhir tekan tombol “Ok”, akan muncul convirmasi sebagai berikut:
Tekan saja tombol “Yes”.
- Berikutnya tutup database desktop, dan kembali ke program C++Builder- Buat desain seperti di bawah ini!
YHPI -> hal : 51
- Pada komponnen “DataSource” klik sekali saja (Klik1X), kemudian pada “ObjectInspector-> properties-> Dataset” Pilih “Table1”, seperti gb dibawah!
- Pada komponnen “Table1” klik1X, kemudian “Object Inspector-> properties->Database Name” pilih “datasiswa”, dan pada “Object Inspector-> properties->TableName” pilih “Biodata1.dbf”.
- Kemudian pada komponnen “DBGrid1” klik 1X, dan pada “Object Inspector->properties-> DataSource” pilih “DataSource1”.
- Kemudian pada komponnen “DBNavigator1” klik 1X, dan pada “Object Inspector->properties-> DataSource” pilih “DataSource1”.
- Kemudian isikan coding berikut, dengan meng-klik-2X tempat kosong pada form,
void __fastcall TForm1::FormCreate(TObject *Sender){
Table1->Active=true;}
- Kemudian simpan dengan menekan “File->Save All”, untuk unit beri nama“Latihan6_1.cpp” dan untuk project beri nama “PLatihan6_1.bpr”
- Kemudian jalankan projek, isikan biodata teman anda sekelas! Bentuk tampilan:
VI.4. SOAL (UJI KEMAMPUAN)Ubahlah latihan VI.3.1 diatas dengan menambah opsion sortir dengan pilihan ascending dandescending menggunakan raddio button.
YHPI -> hal : 52
BAB VIIAPLIKASI DATABASE I
VII.1. TUJUANAplikasi Database I berisi tentang pengembangan awal dari pengantar database yang menitik
beratkan pada penggunaan edit text umum untuk pengisian data tabel. Tujuan dari BAB ke
tujuh ini adalah,
1. Mahasiswa mampu meling kan table dengan komponen edit text umum.
2. Mahasiswa mampu menyimpan data ke dalam file tabel dan menambahkan data ke
dalam file tabel dengan desain by desain
3. Mahasiswa mampu menampilkan data tabel pada form yang berbeda
VII.2. TEORI DASARCommand Dasar Berkaitan dengan Field dan Record
No. Command Pengertian
1 TableX->First Pointer menuju awal record
2 TableX->Prior Pointer menuju record sebelumnya
3 TableX->Next Pointer menuju record Sesudahnya
4 TableX->Last Pointer menuju record Akhir recod
5 TableX->BOF Awal File
6 TableX->EOF Akhir File
7 TableX->Post Menyimpan data pada disk
8 TableX->Append Meminta tempat kosong pada record
9 TableX->Active Mengaktivkan tabel
10 TableX->Close() Menutup tabel
VII.3. LATIHAN PROGRAM :Pada BAB ini kita akan berlatih membuat data yang inputnya didesain seperti pada
latihan 2 s.d. 5 sedangkan data akan disimpan pada file tabel “Stok”, database/nama alias
akan dibuat dengan nama “Barang”, untuk lebih jelas ikuti latihan berikut
VII.3.1. Membuat Table “Stok” dengan bantuan database desktop- Buatlah tabel “stok” melalui database desktop, dan isikan fieldnya sesuai dengan
contoh berikut:
YHPI -> hal : 53
Kemudian simpan (tekan SaveAs), dengan nama “stok”, letakkan dalam folder “data”yang telah kita buat
- Kemudian buat nama alias, sebagai pengganti nama database, dengan memilih menu“Tools->Alias Manager”, kemudian pilih (klik) tombol “New”, pada “Database alias”,isikan “barang”, kemudian tekan tombol “Browse”, pilih folder “data” yang sudah kitabuat, hasilnya tampak seperti gambar di bawah:
Terakhir tekan tombol “Ok”, akan muncul convirmasi sebagai berikut:
Tekan saja tombol “Yes”.
- Berikutnya tutup database desktop, dan kembali ke program C++Builder- Buat desain seperti di bawah ini!
YHPI -> hal : 54
- Kemudian buatlah link untuk komponen table dan datasource, seperti latihan 6- Kemudian isikan semua field pada komponen table1, dengan cara : Click X 2 (double
Click, kemudian pada jendela Table1 yang masih kosong tekan “klik kanan” kemudian“pilih add all fields”, hasilnya akan tampak seperti berikut:
YHPI -> hal : 55
- Langkah berikutnya, isikan kode program berikut sesuaikan dengan komponen yangdibutuhkan://===============================================================void __fastcall TForm1::FormCreate(TObject *Sender){
Table1->Active=true;Edit1->Text="";Edit2->Text="";Edit3->Text="";CheckBox1->Checked=false;CheckBox2->Checked=false;CheckBox3->Checked=false;
}//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender){
// if (Button1->ModalResult==mrOk){ Table1->Append();
Table1KODE->Value = Edit1->Text;Table1NM_BARANG->Value = Edit2->Text;Table1JUMLAH->Value = StrToInt(Edit3->Text);if (CheckBox1->Checked==true)
Table1SATUAN->Value = "Dos/Pak";else if (CheckBox2->Checked==true)
YHPI -> hal : 56
Table1SATUAN->Value = "Buah";else if (CheckBox3->Checked==true)
Table1SATUAN->Value = "Gross";Table1TGL_STOK->Value = FormatDateTime("mm/dd/yyyy",DateTimePicker1-
>Date);Table1JUM_STOK->Value = Table1JUM_STOK->Value + StrToInt(Edit3->Text);//===========Table1->Post();Edit1->Text="";Edit2->Text="";Edit3->Text="";CheckBox1->Checked=false;CheckBox2->Checked=false;CheckBox3->Checked=false;
}}void __fastcall TForm1::CheckBox1Click(TObject *Sender){
if (CheckBox1->Checked==true){ CheckBox2->Checked=false;
CheckBox3->Checked=false;}
}//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox2Click(TObject *Sender){
if (CheckBox2->Checked==true){ CheckBox1->Checked=false;
CheckBox3->Checked=false;}
}//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox3Click(TObject *Sender){
if (CheckBox3->Checked==true){ CheckBox2->Checked=false;
CheckBox1->Checked=false;}
}//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender){
Form2->Show();}//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------
- Kemudian buatlah form baru: File->New->Form, buat desain seperti berikut:
YHPI -> hal : 57
- Buat link table1 dan datasource1, dan dbgrid1
- Pada button tutup: isikan ->Close();
VII.4. SOAL (UJI KEMAMPUAN)1. Pada latihana di atas jumlah stok masih kacau, betulkan sesuai dengan logika pen stok
an, dan tambahkan pula isian untuk harga satuan pada desain input!
2. Buat Input dengan desain yang anda buat sendiri untuk memasukkan data biodata
mahasiswa telekomunikasi
3. untuk tampilannya tambahkan menu sortir berdasarkan nim, nama, jurusan, secara
ascendingh, descending, dan kembalikan normal
YHPI -> hal : 58
BAB VIIIAPLIKASI DATABASE II
VIII.1. TUJUANAplikasi Database II berisi tentang pencarian, penambahan, dan pengeditan data record, .
Tujuan dari BAB ke delapan ini adalah,
1. Mahasiswa mampu mebuat desain dan membuat coding untuk menambah,
menyisipkan, dan mengedit data record pada tabel.
2. Mahasiswa mampu mebuat desain dan membuat coding untuk mencari data record
berdasarkan field kunci pada tabel
3. Mahasiswa mampu mebuat desain dan membuat coding untuk mensortir data record
dengan teknik index field pada tabel
VIII.2. TEORI DASAR- Menambah data record : untuk menambah data record, gunakan perintah Append,
perintah ini bertujuan meminta record kosong pada table database yang dituju.
Kemudian untuk memindahkan record yang sudah diisi dari memori komputer ke disk
gunakan peritah Post.- Menyisipkan data record : pada intinya menyisipkan data record sama dengan
menambah data record, hanya penempatan pointer yang berbeda, kalau menambah
record pointer diletakkan pada akhir file (eof), sedangkan untuk menyisipkan record
pointer diarahkan pada record yang di tuju.
- Mencari dan mengedit data : untuk mencari data gunakan perintah FindKey, perintah ini
bertujuan mendata data dengan kolom (field) pencarian berdasarkan field yang
diindex, sedangkan untuk mengedit data melanjutkan model mencari data, dan
menampilkan data yang sudah ditemukan, keudian update data kemudian simpan data
hasil update.
VIII.3. LATIHAN PROGRAM :Gunakan Tabel “Barang” yang sudah dibuat pada latihan Bab VII, untuk memvasilitasi
tabel pada latihan di bawah ini
VIII.3.1. Buat desain seperti di bawah ini dengan menggunakan tabel barang yangsudah pernah dibuat pada BAB VII.Latihan ini berisi tentang : menambah data, menghapus data, mencari data,
menyisipkan data, dan mensortir data.
Nama-nama file yang diperlukan pada saat Save All:
o Latihan8_F1.cpp (form1)
o Latihan8_F2.cpp (form2)
YHPI -> hal : 59
o Latihan8_F3.cpp (form3)
o Latihan8_F4.cpp (form4)
o Latihan8_F5.cpp (form5)
o Latihan8_F6.cpp (form6)
o ....... (silakan dilengkapi sendiri)
o Dan Platihan8_01.bpr
Bentuk Desain dan koding :
a. Form1, berisi menu utama, desain :
Isikan koding berikut pada form1://---------------------------------------------------------------------------
#include <vcl.h>#pragma hdrstop
#include "Latihan8_F1.h"#include "Latihan8_F2.h"#include "Latihan8_F3.h"#include "Latihan8_F4.h"#include "Latihan8_F5.h"#include "Latihan8_F6.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::Keluar1Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------void __fastcall TForm1::TambahData1Click(TObject *Sender){
Form2->Show();}//---------------------------------------------------------------------------void __fastcall TForm1::BukaData1Click(TObject *Sender){
YHPI -> hal : 60
Form3->Show();}//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Click(TObject *Sender){
Form4->Show();}//---------------------------------------------------------------------------
void __fastcall TForm1::MengeditData1Click(TObject *Sender){
Form5->Show();}//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2Click(TObject *Sender){
Form6->Show();}//---------------------------------------------------------------------------
b. Form2 berisi penambahan data, bentuk desain:
isikan koding berikut pada form2://---------------------------------------------------------------------------
#include <vcl.h>#pragma hdrstop
#include "Latihan8_F2.h"//---------------------------------------------------------------------------
YHPI -> hal : 61
#pragma package(smart_init)#pragma resource "*.dfm"TForm2 *Form2;//---------------------------------------------------------------------------__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender){
Table1->Append();Table1KODE->Value = Edit1->Text;Table1NM_BARANG->Value = Edit2->Text;Table1JUMLAH->Value = StrToInt(Edit3->Text);if (CheckBox1->Checked==true)
Table1SATUAN->Value = "Dos/Pak";else if (CheckBox2->Checked==true)
Table1SATUAN->Value = "Buah";else if (CheckBox3->Checked==true)
Table1SATUAN->Value = "Gross";Table1TGL_STOK->Value = FormatDateTime("mm/dd/yyyy",DateTimePicker1->Date);Table1JUM_STOK->Value = Table1JUM_STOK->Value + StrToInt(Edit3->Text);//===========Table1->Post();Edit1->Text="";Edit2->Text="";Edit3->Text="";CheckBox1->Checked=false;CheckBox2->Checked=false;CheckBox3->Checked=false;
}//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender){
Edit1->Text="";Edit2->Text="";Edit3->Text="";CheckBox1->Checked=false;CheckBox2->Checked=false;CheckBox3->Checked=false;Table1->Active=true;
}//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------
c. Form3 berisi Listing data, bentuk desain:
YHPI -> hal : 62
Kemudian isikan kodingnya://---------------------------------------------------------------------------
#include <vcl.h>#pragma hdrstop
#include "Latihan8_F3.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm3 *Form3;//---------------------------------------------------------------------------__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm3::FormCreate(TObject *Sender){
Table1->Active=true;Table1->Refresh();
}//---------------------------------------------------------------------------void __fastcall TForm3::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------void __fastcall TForm3::Button1Click(TObject *Sender){
Table1->Refresh();}//---------------------------------------------------------------------------
d. Form4 berisi Pencarian data, bentuk desain:
YHPI -> hal : 63
Kemudian isikan koding berikut://---------------------------------------------------------------------------
#include <vcl.h>#include <String.h>#pragma hdrstop
#include "latihan8_F4.h"#include "math.h"
//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm4 *Form4;//---------------------------------------------------------------------------__fastcall TForm4::TForm4(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm4::Button3Click(TObject *Sender){
TVarRec cari=Trim(Edit1->Text);boolean hc;Table1->First();hc=Table1->FindKey(&cari,0);if (hc==true){
Edit2->Text=Table1NM_BARANG->Value;Edit3->Text=Table1JUMLAH->Value;Edit4->Text=Table1SATUAN->Value;Edit5->Text=Table1TGL_STOK->Value;
}else
YHPI -> hal : 64
{ShowMessage("Data yang dicari tidak ditemukan");
}
/* TVarRec a=Trim(Edit1->Text);if (Table1->FindKey(&a,0)==false)
ShowMessage("Data Yang dicari tidak ada");*/
}
//---------------------------------------------------------------------------
void __fastcall TForm4::FormCreate(TObject *Sender){
Edit1->Text="";Edit2->Text="";Edit3->Text="";Edit4->Text="";Edit5->Text="";Table1->Active=true;
}//---------------------------------------------------------------------------
void __fastcall TForm4::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------
e. Form5 berisi Mengupdate isi data, bentuk desain:
Kemudian isikan koding berikut://---------------------------------------------------------------------------
#include <vcl.h>
YHPI -> hal : 65
#pragma hdrstop
#include "Latihan8_F5.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm5 *Form5;//---------------------------------------------------------------------------__fastcall TForm5::TForm5(TComponent* Owner)
: TForm(Owner){}//---------------------------------------------------------------------------
void __fastcall TForm5::Button3Click(TObject *Sender){
TVarRec cari=Trim(Edit4->Text);boolean hc;Table1->First();hc=Table1->FindKey(&cari,0);if (hc==true){ Edit1->Text=Table1KODE->Value;
Edit2->Text=Table1NM_BARANG->Value;Edit3->Text=Table1JUMLAH->Value;if (Table1SATUAN->Value == "Dos/Pak")
CheckBox1->Checked=true;else if (Table1SATUAN->Value == "Buah")
CheckBox2->Checked==true;else if (Table1SATUAN->Value == "Gross")
CheckBox3->Checked==true;
}else{
ShowMessage("Data yang dicari tidak ditemukan");
}
}//---------------------------------------------------------------------------
void __fastcall TForm5::FormCreate(TObject *Sender){
Edit1->Text="";Edit2->Text="";Edit3->Text="";Edit4->Text="";CheckBox1->Checked=false;CheckBox2->Checked=false;CheckBox3->Checked=false;Table1->Active=true;
}//---------------------------------------------------------------------------void __fastcall TForm5::Button1Click(TObject *Sender){ Table1->Edit();
Table1KODE->Value = Edit1->Text;Table1NM_BARANG->Value = Edit2->Text;Table1JUMLAH->Value = StrToInt(Edit3->Text);if (CheckBox1->Checked==true)
YHPI -> hal : 66
Table1SATUAN->Value = "Dos/Pak";else if (CheckBox2->Checked==true)
Table1SATUAN->Value = "Buah";else if (CheckBox3->Checked==true)
Table1SATUAN->Value = "Gross";Table1TGL_STOK->Value = FormatDateTime("mm/dd/yyyy",DateTimePicker1->Date);//Table1JUM_STOK->Value = Table1JUM_STOK->Value + StrToInt(Edit3->Text);//===========Table1->Post();Edit1->Text="";Edit2->Text="";Edit3->Text="";Edit4->Text="";CheckBox1->Checked=false;CheckBox2->Checked=false;CheckBox3->Checked=false;Edit1->SetFocus();
}//---------------------------------------------------------------------------void __fastcall TForm5::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------
f. Form6 berisi Sortir isi data, bentuk desain:
Kemudian buat koding berikut pada form6://---------------------------------------------------------------------------
#include <vcl.h>#pragma hdrstop
#include "Latihan8_F6.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm6 *Form6;//---------------------------------------------------------------------------__fastcall TForm6::TForm6(TComponent* Owner)
: TForm(Owner)
YHPI -> hal : 67
{}//---------------------------------------------------------------------------
void __fastcall TForm6::FormCreate(TObject *Sender){
Table1->Active=true;Table1->IndexName="Kode";RadioButton1->Checked=true;
}//---------------------------------------------------------------------------void __fastcall TForm6::Button2Click(TObject *Sender){
Close();}//---------------------------------------------------------------------------void __fastcall TForm6::RadioButton1Click(TObject *Sender){
if (RadioButton1->Checked==true)Table1->IndexName="";
else if (RadioButton2->Checked==true)Table1->IndexName="Kode";
else if (RadioButton3->Checked==true)Table1->IndexName="kodeAscend";
}//---------------------------------------------------------------------------void __fastcall TForm6::RadioButton3Click(TObject *Sender){
if (RadioButton1->Checked==true)Table1->IndexName="";
else if (RadioButton2->Checked==true)Table1->IndexName="Kode";
else if (RadioButton3->Checked==true)Table1->IndexName="kodeAscend";
}//---------------------------------------------------------------------------
void __fastcall TForm6::RadioButton2Click(TObject *Sender){
if (RadioButton1->Checked==true)Table1->IndexName="";
else if (RadioButton2->Checked==true)Table1->IndexName="Kode";
else if (RadioButton3->Checked==true)Table1->IndexName="kodeAscend";
}//---------------------------------------------------------------------------
VIII.4. SOAL (UJI KEMAMPUAN)Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,masing-masing simpan dengan nama SOAL8_1, SOAL8_2
YHPI -> hal : 68
1. Gunakan operasi file (tulis data ke disk) untuk permasalahan pelanggan baru pengguna
jasa telephon kabel (PT. TELKOM) dengan data sebagai berikut:
Nama, alamat, pekerjaan, alamat kantor,
Kemudian memberikan data no.telephon yang masih tersedia pada area tersebut,
kemudian includkan ke data di atas.
2. Gunakan operasi file (baca data dari disk) untuk mengedit data no. 1 dengan proses
pencarian berdasarkan no. Telephon
YHPI -> hal : 69
BAB IX(PERTEMUAN KETIGA BELAS)
s.d.
BAB XV(PERTEMUAN KELIMA BELAS)
Presentasi
Implementasikan Materi bab I s.d. VIII kemudian desailah sebuah project,dimana masing-masing mahasiswa wajib membuat project, kemudiandikumpulkan dan di presentasikan!
YHPI -> hal : 70
BAB XVIGRAFIK
XVI.1. TUJUANC Builder mempunyai dua penekanan dalam menyediakan fasilitas grafik, yaitu model primitv
atau lebih dikenal gravik sistem vektor dan modern atau lebih dikenal sistem image. Tujuan
dari BAB keenam belas ini adalah,
1. Mahasiswa mampu mengenal cara membuat grafik dengan model primitiv.
2. Mahasiswa mampu mengimplementasikan rekayasa grafik klasik ke dalam sebuah
desain program desain VCL
XVI.2. TEORI DASARXVI.2.1 Review Grafik
Grafik model primitiv dikembangkan sudah cukup lama yaitu sekitar tahun 1960, bentuk
ini di awali dari pengembangan tampilan titik, tampilan garis dan tampilan karakter. Dalam
teknologi konverter tampilan ini merupakan proses konversi tegangan analog ke tegangan
digital, dan sebaliknya. Jika dijelaskan mulai dari tampilan titik atau garis maka proses ini dapat
dijelaskan bahwa pengolah tampilan akan mengubah data digital menjadi data analog yang
digunakan untuk memancarkan elektron yang bisa mengenal tabung monitor berlapis phospor,
yang akan menyebabkan phospor berpendar dan terlihat pada screen monitor. Untuk
mengatasi kedip atau fliker maka elektron tersebut harus ditembakkan minimal 30 kali dalam
satu detik, peristiwa ini dikenal dengan electron refreshing.
Tampilan berdasarkan teknologi TV dan disebut raster display. Dikembangkan tahun
sekitar 1970. Tampilan dalam bentuk garis, karakter dan bentuk-bentuk lain selalu digambar
berdasar komponen terkecilnya yaitu titik, dan biasa disebut sebagai pixel atau pel(picture
element). Sebuah titik pada layar tampilan bisa dihidup matikan dengan mudah dalam
pengingat digital karena 0 untuk titik mati dan 1 untuk titik yang menyala. Didalam pengingat
digital, citra grafis yang akan ditampilkan disimpan sebagai pola-bit dengan mengubah pola bit
(piksel) yang ada dalam pengingat digital, bisa dibentuk gambar sesuai dengan keinginan.
Untuk gambar hitam-putih, warna hitam disajikan menggunakan bit 1, dan warna putih
menggunakan bit 0. Untuk gambar berwarna pengaturan yaitu lebih rumit. Yang dimaksud
dengan raster atau resolusi layar (screen resolution) adalah matrix piksel yang menutup
seluruh permukaan layar tampilan. Semakin besar ukuran matrix pikxel yang dibentuk pada
suatu layar tampilan, semakin bagus dan halus pula gambar yang bisa dihasilkan oleh layar
tersebut.
YHPI -> hal : 71
XV.2.2 Komponen Pembentuk Grafik Titik (Pixel)
Titik merupakan satuan gambar/grafis yang terkecil. Dengan menggambar titik maka kita
dapat menggambar obyek apapun. Termasuk bentuk geometri dibawah merupakan bentuk
–bentuk yang pada dasarnya berasal dari titik-titik. Operasi titik ini sering digunakan pada
pengolahan citra (Image processing). Setiap titik pada monitor memiliki parameter
koordinat dan warna. Koding titik adalah:
Canvas->Pixel[x][y]=warna
Dengan x : koordinat horizontal
y : koordinat vertikal
warna : warna default dari C, atau menggunakan RGB()
Garis (Line)Garis adalah kumpulan titik-titik/pixel yang tersusun secara lurus dan linier dari titik awal
sampai titik akhir.
Kodingnya adalah :
Canvas->MoveTo(x0,y0)-> meletakkan atau memindahkan pointerCanvas->LineTo(x1,y1) -> menggambar garis dimulai dari moveTo…..Canvas->LineTo(xn,yn)
Garis ini dimulai dari titik koordinat (x0,y0) kemudian ke (x1,y1), dilanjutkan ke (x2,y2) dan
selanjutnya ke (xn,yn).
Kotak (Box)Kotak merupakan bentuk tertutup dari kumpulan empat buah garis yang saling sejajar
pada panjang dan saling sejajar pada lebar, dan mempunyai dua titik acuan, yaitu titik
pojok kiri atas dan titik pojok kanan bawah.
Koding kotak adalah :
Canvas->Rectangle(x1,y1,x2,y2)
Dengan : X1,Y1 : titik pojok kiri atas
YHPI -> hal : 72
X2,Y2 : titik pojok kanan bawah
Lingkaran atau Elips (Circle / Ellipse)Lingkaran adalah sekumpulan titik yang membentuk putaran dengan diameter horizontal
sama panjang dengan diameter vertikal, sedangkan elips mempunyai panjang diameter
horizontal berbeda dengan diameter vertikal.
Kodingnya adalah
Canvas->Ellipse(x1,y1,x2,y2)
Busur (Arc)Busur adalah curva dalam bentuk garis lengkung.
Kodingnya adalah:
Canvas->Arc(x1,y1,x2,y2,x3,y3,x3,x4,y4)
Tembereng (Chord)Tembereng adalah bentuk curva lengkung dengan garis penghubung pada ujung curva
tersebut.
Kodingnya adalah :
Canvas->Chord(x1,y1,x2,y2,x3,y3,x3,x4,y4);
YHPI -> hal : 73
Juring (Pie)Juring adalah bentuk curva lengkung dengan garis pada masing-masing ujung curva
terhadap pusat lengkung tersebut.
Garis Segi Banyak (Polygon)Kodingnya secara umum adalah :
//==========================
POINT variable[n]; //deklarasi variabelvariable[0]=Point(x,y);variable [1]=Point(x,y);….variable [n]=Point(x,y);Canvas->Polygon((TPoint*) variable ,n);
//==========================
YHPI -> hal : 74
PolylineBentuk polyline hampir sama dengan plygon, hanya polyline tidak harus dalam bentuk
curva tertutup.
XVI.3. LATIHAN PROGRAM :XVI.3.1. Latihan Pengenalan Pola Grafik Primitiv.
Langkah-langkahnya adalah :
Buat aplikasi baru
Tempatkan komponen kanvas pada form dan komponen lainnya yang diperlukan
tampak seperti gambar 16.1 berikut :
Gambar 16.1
YHPI -> hal : 75
Ubah caption masing-masing komponen sesaui dengan gambar 16.1
Double klick komponen button kemudain isikan masing-masing coding VCL pada
masing-masing komponen yang sesuai, coding adalah berikut:
//============================================void __fastcall TForm1::Button2Click(TObject *Sender)
{
PaintBox1->Canvas->Brush->Style= bsSolid;
PaintBox1->Canvas->Brush->Color = clWhite;
PaintBox1->Canvas->FillRect(Rect(0,0,ClientWidth, ClientHeight));
Canvas->Pen->Width = 1;
Canvas->Pen->Mode = pmCopy;
Canvas->Pen->Style = psSolid;
Canvas->Pen->Color = clBlack;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// penggunaan moveTo dan LineTo
// Hasilnya adalah koordinat kartesian X dan Y
PaintBox1->Canvas->MoveTo(5,320);
PaintBox1->Canvas->LineTo(550,320);
PaintBox1->Canvas->MoveTo(20,10);
PaintBox1->Canvas->LineTo(20,340);
// Penggunaan rectangle
PaintBox1->Canvas->Rectangle(30,250,150,310);
// Rectangle dengan pengisiannya, dengan pola solid warna merah
PaintBox1->Canvas->Brush->Style=bsSolid;
PaintBox1->Canvas->Brush->Color=clRed;
PaintBox1->Canvas->Rectangle(30,180,150,240);
// Ellipse dengan pengisiannya, dengan pola cross warna biru
PaintBox1->Canvas->Brush->Style=bsCross;
PaintBox1->Canvas->Brush->Color=clBlue;
PaintBox1->Canvas->Ellipse(30,110,150,170);
YHPI -> hal : 76
// Polygon dengan pengaturan Pen, dengan pola sama seperti sebelumnya
PaintBox1->Canvas->Pen->Style=psDashDot;
PaintBox1->Canvas->Pen->Width=2;
POINT poli[5]; //deklarasi variabel poli sebagai polygon
poli[0]=Point(170,310);
poli[1]=Point(210,310);
poli[2]=Point(250,270);
poli[3]=Point(250,200);
poli[4]=Point(210,160);
poli[5]=Point(170,160);
PaintBox1->Canvas->Polygon((TPoint*) poli ,5);
// Polyline dengan pengaturan Pen,
PaintBox1->Canvas->Pen->Style=psDash;
PaintBox1->Canvas->Pen->Width=3;
POINT pline[4];
pline[0]=Point(270,310);
pline[1]=Point(340,310);
pline[2]=Point(300,250);
pline[3]=Point(270,160);
pline[4]=Point(270,300);
PaintBox1->Canvas->Polyline((TPoint*) pline,4);
}
//---------------------------------------------------------------------------
//============================================
Jalankan program, amati hasilnya
Simpanlah project ini dengan nama Latihan16_1.cpp dan Platihan16_1.bpr
XVI.3.2. Latihan Penggunaan pixel,Pixel atau titik sebenarnya merupakan komponen dasar pembentuk segala macam
bentuk grafik. Sebagi latihan di bawah ini adalah latihan membuat gambar bentuk sinus
dan cosinus yang dibentuk oleh pixel
Langkah-langkahnya adalah :
Buat aplikasi baru
Tempatkan komponen kanvas pada form dan komponen lainnya yang diperlukan
tampak seperti gambar 15.2 berikut :
YHPI -> hal : 77
Gambar 16.2
Ubah caption masing-masing komponen sesaui dengan gambar 16.2
Double klick komponen button kemudain isikan masing-masing coding VCL pada
masing-masing komponen yang sesuai, coding adalah berikut://============================================
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int xm,ym;
xm=PaintBox1->Width;
ym=PaintBox1->Height;
PaintBox1->Canvas->Pen->Color=RGB(100,0,255);
PaintBox1->Canvas->Pen->Width=2;
PaintBox1->Canvas->MoveTo(10,ym/2);
PaintBox1->Canvas->LineTo(xm-50,ym/2);
PaintBox1->Canvas->MoveTo(100,10);
PaintBox1->Canvas->LineTo(100,ym-10);
float Y,A,f,teta,pi,ypos,xpos;
int y0,x0,t;
A = 140; f=1/(3.14*2); teta=0; pi=3.14;
y0=ym/2;x0=100;
for(t=0;t<=360;t++)
{ Y=A * sin((2*pi*f*t+teta)*pi/180);
YHPI -> hal : 78
ypos=y0-Y;
xpos=x0+t;
PaintBox1->Canvas->Pixels[int(xpos)][int(ypos)]=RGB(0,0,255);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int xm,ym;
xm=PaintBox1->Width;
ym=PaintBox1->Height;
PaintBox1->Canvas->Pen->Color=RGB(100,0,255);
PaintBox1->Canvas->Pen->Width=2;
PaintBox1->Canvas->MoveTo(10,ym/2);
PaintBox1->Canvas->LineTo(xm-50,ym/2);
PaintBox1->Canvas->MoveTo(100,10);
PaintBox1->Canvas->LineTo(100,ym-10);
float Y,A,f,teta,pi,ypos,xpos;
int y0,x0,t;
A = 140; f=1/(3.14*2); teta=0; pi=3.14;
y0=ym/2;x0=100;
for(t=0;t<=360;t++)
{ Y=A * cos((2*pi*f*t+teta)*pi/180);
ypos=y0-Y;
xpos=x0+t;
PaintBox1->Canvas->Pixels[int(xpos)][int(ypos)]=RGB(0,100,100);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
Jalankan program, amati hasilnya
Simpanlah project ini dengan nama Latihan16_2.cpp dan Platihan16_2.bpr
YHPI -> hal : 79
XVI.4. Soal (UJI KEMAMPUAN)Kerjakan setiap permasalahan dengan membuat flowchart dan listing program, masing-masing simpan dengan nama SOAL16_1.cpp/bpr, dan SOAL16_2.cpp/bpr:1. Ubahlah latihan16_2, dengan membuat parameter input (amplitudo, frekuensi, dan sudut
awal)
2. Buatlah desain grafik bentuk gelombang kotak dan gelombang segitiga.
YHPI -> hal : 80
BAB XVIIOPERASI GEOMETRI SEDERHANA PADA GRAFIK
XVII.1. TUJUANOperasi geometri merupakan dasar operasi yang sangat penting dalam memanipulasi grafik.
topik yang dibahas dalam bab ini diantaranya adalah rotasi, translasi, dan penskalaan. Tujuan
dari BAB ketujuh belas ini adalah,
1. Mahasiswa mampu mengenal operasi geometri dasar.
2. Mahasiswa mampu mengimplementasikan logika operasi geometri pada
pemanipulasian grafik.
XVII.2. TEORI DASAR
XVII.2.1 Operasi GeometriOperasi geometri merubah hubungan spasial antara objek dalam sebuah grafik
termasuk citra. Operasi ini bekerja dengan menggerakkan sekitar object-object dan mengubah
ukuran dan bentuk dari objek. Operasi geometri membantu mengatur kembali sebuah grafik
atau citra sehingga kita dapat melihat apa yang kita inginkan sedikit lebih jelas. Ada tiga
operasi dasar geometri yaitu pergeseran, penskalaan, dan pemutaran objek, dan yang
keempat merupakan manipulasi dari ke tiga dasar operasi yaitu ”cross product” yaitu
menunjukkan bagimana mendistorsi sebuah objek menggunakan pengaturan orde tinggi.
XVII.2.2 Pergeseran atau TranslasiPergeseran atau translasi adalah menggerakkan atau menggeser objek kearah vertikal
atau kearah horizontal, gambar 12.1 di bawah menunjukkan proses translasi ke arah (a)
horizontal, (b) vertikal, (c) diagonal.
(a)Translasi horizontal (b) Translasi vertikal
YHPI -> hal : 81
(c) Translasi diagonal
Gambar 12.1Persamaan translasi yang sering digunakan adalah:
Dengan tx : vektor translasi X, dan ty : vektor translasi Y
XVII.2.3 Penskalaan atau StretchingPenskalaan atau stretching adalah proses memperbesar atau memperkecil sebuah
objek ke dalam arah vertikal atau arah horizontal. Persamaan yang digunakan untuk
penskalaan adalah sebagai berikut:
X = X * Sx
Y = Y * Sy
dengan Sx = skala koordinat X, dan Sy : skala koordinat Y
Adapun gambar 12.2 adalah contoh bentuk penskalaan,
Gambar 12.2
YHPI -> hal : 82
XVII.2.4 Perputaran atau RotasiPerputaran adalah proses memutar sebuah objek ke arah sudut dengan pusat
perputaran yang ditentukan. Yang harus diperhatikan adalah dalam memutar sebuah obyek
pusat perputaran tidak harus berada pada koordinat (0,0), sering dilakukan bawa pusat
perputaran berada pada koordinat tertentu (x,y). Sehingga dalam bab ini diberikan formula
untuk perputaran pada koordinat (0,0) sebagai berikut:
X’ = X Cos() – YSin()
Y’ = X sin() + YCos()
dan pusat perputaran pada koordinat (xc,yc), sebagai berikut :
X’ = Xc+ (X- Xc)Cos() – (Y – Yc)Sin()
Y’ = Yc + (X - Xc) sin() +(Y – Yc) Cos()
Dan berikut gambar 12.2 adalah contoh untuk rotasi objek dengan sudut putar -90o.
Gambar 12.3
XVII.3. LATIHAN PROGRAM :XVII.3.1. Latihan operasi geometri translasi / pergeseran
Buat aplikasi baru
Tempatkan komponen kanvas pada form dan komponen lainnya yang diperlukan
tampak seperti gambar 17.1 berikut :
YHPI -> hal : 83
Gambar 17.1
Ubah caption masing-masing komponen sesaui dengan gambar 17.2
Aktifkan header ”unit1.h” dengan menekan ”CTRL + F6” secara bersamaan, kemudian
tambahkan deklarasi fungsi buatan pada bagian __published:, seperti berikut:__published: // IDE-managed Components
TPaintBox *PaintBox1;TButton *Button1;TButton *Button2;TButton *Button3;TButton *Button4;TButton *Button5;void __fastcall Hapus(); //ini yang ditambahkan
void __fastcall Kotak(); //ini yang ditambahkan
Double klick komponen button kemudain isikan masing-masing coding VCL pada
masing-masing komponen yang sesuai, coding adalah berikut://============================================
// posisi zero point perhitungan
int x0,y0 ;
//variabel posisi awal kotak dalam layar
int x1=30,y1=230,x2=150,y2=310;
//variabel posisi awal hasil perhitungan (xp--yp)
int xp1,xp2,yp1,yp2;
//variabel posisi hasil translasi dalam perhitungan
YHPI -> hal : 84
int xh1,xh2,yh1,yh2;
//variabel posisi hasil translasi dalam layar
int xl1,xl2,yl1,yl2;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ Hapus();
Kotak();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//posisi zero point perhitungan
x0=20;y0=320;
//posisi dalam perhitungan (xp--yp)
xp1=x1-x0; xp2=x2-x0;
yp1=y0-y1; yp2=y0-y2;
//posisi (xh--yh) setelah mengalami pergeseran dalam perhitungan dengan tx=15,ty=0
int tx=300,ty=0;
xh1=xp1+tx; xh2=xp2+tx;
yh1=yp1+ty; yh2=yp2+ty;
//posisi hasil pergeseran pada layar
xl1=x0+xh1; xl2=x0+xh2;
yl1=y0-yh1; yl2=y0-yh2;
// kotak hasil pergeseran;
Hapus();
PaintBox1->Canvas->Rectangle(xl1,yl1,xl2,yl2);
}
//---------------------------------------------------------------------------
YHPI -> hal : 85
void __fastcall TForm1::Button4Click(TObject *Sender)
{ Hapus();
PaintBox1->Canvas->MoveTo(5,320);
PaintBox1->Canvas->LineTo(550,320);
PaintBox1->Canvas->MoveTo(20,10);
PaintBox1->Canvas->LineTo(20,340);
PaintBox1->Canvas->Rectangle(x1,y1,x2,y2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//posisi zero point perhitungan
x0=20;y0=320;
//posisi dalam perhitungan (xp--yp)
xp1=x1-x0; xp2=x2-x0;
yp1=y0-y1; yp2=y0-y2;
//posisi (xh--yh) setelah mengalami pergeseran dalam perhitungan dengan tx=0,ty=100
int tx=0,ty=100;
xh1=xp1+tx; xh2=xp2+tx;
yh1=yp1+ty; yh2=yp2+ty;
//posisi hasil pergeseran pada layar
xl1=x0+xh1; xl2=x0+xh2;
yl1=y0-yh1; yl2=y0-yh2;
// kotak hasil pergeseran;
Hapus();
PaintBox1->Canvas->Rectangle(xl1,yl1,xl2,yl2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Hapus()
{ PaintBox1->Canvas->Brush->Style= bsSolid;
PaintBox1->Canvas->Brush->Color = clBtnFace;
PaintBox1->Canvas->FillRect(Rect(0,0,ClientWidth, ClientHeight));
Canvas->Pen->Width = 1;
Canvas->Pen->Mode = pmCopy;
Canvas->Pen->Style = psSolid;
PaintBox1->Canvas->Brush->Style=bsSolid;
PaintBox1->Canvas->Brush->Color=clRed;
YHPI -> hal : 86
PaintBox1->Canvas->MoveTo(5,320);
PaintBox1->Canvas->LineTo(550,320);
PaintBox1->Canvas->MoveTo(20,10);
PaintBox1->Canvas->LineTo(20,340);
}
void __fastcall TForm1::Kotak()
{ PaintBox1->Canvas->Rectangle(x1,y1,x2,y2);
}
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
Jalankan program, amati hasilnya, dalam latihan ini mempergunakan pembuatan fungsi
buatan sendiri.
Simpanlah project ini dengan nama Latihan16_2.cpp dan Platihan16_2.bpr
XVII.3.2. Latihan operasi geometri Rotasi dan Penskalaan
Buat aplikasi baru
Tempatkan komponen kanvas pada form dan komponen lainnya yang diperlukan
tampak seperti gambar 17.1 berikut :
Gambar 17.2
YHPI -> hal : 87
Ubah caption masing-masing komponen sesaui dengan gambar 17.2
Aktifkan header ”unit1.h” dengan menekan ”CTRL + F6” secara bersamaan, kemudian
tambahkan deklarasi fungsi buatan pada bagian __published:, seperti berikut:__published: // IDE-managed Components
TPaintBox *PaintBox1;TButton *Button1;TButton *Button2;TButton *Button3;TButton *Button4;TButton *Button5;void __fastcall Hapus();void __fastcall GambarAsli();void __fastcall Skala();void __fastcall Rotasi();
Double klick komponen button kemudain isikan masing-masing coding VCL pada
masing-masing komponen yang sesuai, coding adalah berikut://============================================
// koordinat titik potong sumbu:
int xs=100, ys=320;
// posisi zero point perhitungan
int x0,y0,xl0,yl0 ;
//variabel posisi awal kotak dalam layar
int x1=130,y1=200,x2=200,y2=200,
x3=200,y3=310,x4=130, y4=310;
//variabel posisi awal hasil perhitungan (xp--yp)
int xp1,xp2,yp1,yp2,xp3,yp3,xp4,yp4;
//variabel posisi hasil translasi dalam perhitungan
float xh1,xh2,yh1,yh2,xh3,yh3,xh4,yh4;
//variabel posisi hasil translasi dalam layar
int xl1,xl2,yl1,yl2,xl3,yl3,xl4,yl4;
// Faktor Skala
int tx,ty;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Hapus();
YHPI -> hal : 88
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Hapus()
{ PaintBox1->Canvas->Brush->Style= bsSolid;
PaintBox1->Canvas->Brush->Color = clBtnFace;
PaintBox1->Canvas->FillRect(Rect(0,0,ClientWidth, ClientHeight));
Canvas->Pen->Width = 1;
Canvas->Pen->Mode = pmCopy;
Canvas->Pen->Style = psSolid;
PaintBox1->Canvas->Brush->Style=bsSolid;
PaintBox1->Canvas->Brush->Color=clRed;
PaintBox1->Canvas->MoveTo(5,ys);
PaintBox1->Canvas->LineTo(550,ys);
PaintBox1->Canvas->MoveTo(xs,10);
PaintBox1->Canvas->LineTo(xs,340);
}
//==============================
void __fastcall TForm1::GambarAsli()
{ PaintBox1->Canvas->Rectangle(x1,y1,x3,y3);
}
//=====================================
void __fastcall TForm1::Skala()
{ PaintBox1->Canvas->Rectangle(xl1,yl1,xl3,yl3);
}
//=====================================
void __fastcall TForm1::Rotasi()
{// PaintBox1->Canvas->MoveTo(xl1,yl1);
// PaintBox1->Canvas->LineTo(xl2,yl2);
// PaintBox1->Canvas->LineTo(xl3,yl3);
// PaintBox1->Canvas->LineTo(xl4,yl4);
POINT kotak[3]; //deklarasi variabel poli sebagai polygon
kotak[0]=Point(xl1,yl1);
kotak[1]=Point(xl2,yl2);
kotak[2]=Point(xl3,yl3);
kotak[3]=Point(xl4,yl4);
PaintBox1->Canvas->Polygon((TPoint*) kotak ,3);
}
YHPI -> hal : 89
//=====================================
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Hapus();
GambarAsli();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
tx=2;ty=2;
//posisi zero point perhitungan
xl0=xs;
yl0=ys;
//posisi dalam perhitungan (xp--yp)
xp1=x1-xl0; xp3=x3-xl0;
yp1=yl0-y1; yp3=yl0-y3;
//posisi (xh--yh) setelah mengalami pergeseran dalam perhitungan dengan tx=10,ty=5
xh1=xp1*tx; xh3=xp3*tx;
yh1=yp1*ty; yh3=yp3*ty;
//posisi hasil pergeseran pada layar
xl1=xl0+xh1; xl3=xl0+xh3;
yl1=yl0-yh1; yl3=yl0-yh3;
// kotak hasil pergeseran;
Hapus();
Skala();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
tx=1;ty=1;
//posisi zero point perhitungan
xl0=x4;yl0=y4;
x0=(x2-x1)/2;y0=(y3-y1)/2;
//posisi dalam perhitungan (xp--yp)
xp1=x1-xl0; xp2=x2-xl0;
xp3=x3-xl0; xp4=x4-xl0;
yp1=yl0-y1; yp2=yl0-y2;
yp3=yl0-y3; yp4=yl0-y4;
YHPI -> hal : 90
int teta=45;
//posisi (xh--yh) setelah mengalami pergeseran dalam perhitungan dengan tx=10,ty=5
xh1=x0+(xp1-x0)*cos(teta*3.14/180)-(yp1-y0)*sin(teta*3.14/180);
xh2=x0+(xp2-x0)*cos(teta*3.14/180)-(yp2-y0)*sin(teta*3.14/180);
xh3=x0+(xp3-x0)*cos(teta*3.14/180)-(yp3-y0)*sin(teta*3.14/180);
xh4=x0+(xp4-x0)*cos(teta*3.14/180)-(yp4-y0)*sin(teta*3.14/180);
yh1=y0+((xp1-x0)*sin(teta*3.14/180)+(yp1-y0)*cos(teta*3.14/180));
yh2=y0+((xp2-x0)*sin(teta*3.14/180)+(yp2-y0)*cos(teta*3.14/180));
yh3=y0+((xp3-x0)*sin(teta*3.14/180)+(yp3-y0)*cos(teta*3.14/180));
yh4=y0+((xp4-x0)*sin(teta*3.14/180)+(yp4-y0)*cos(teta*3.14/180));
/*
xh1=(xp1)*cos(teta*3.14/180)-(yp1)*sin(teta*3.14/180);
xh2=(xp2)*cos(teta*3.14/180)-(yp2)*sin(teta*3.14/180);
xh3=(xp3)*cos(teta*3.14/180)-(yp3)*sin(teta*3.14/180);
xh4=(xp4)*cos(teta*3.14/180)-(yp4)*sin(teta*3.14/180);
yh1=((xp1)*sin(teta*3.14/180)+(yp1)*cos(teta*3.14/180));
yh2=((xp2)*sin(teta*3.14/180)+(yp2)*cos(teta*3.14/180));
yh3=((xp3)*sin(teta*3.14/180)+(yp3)*cos(teta*3.14/180));
yh4=((xp4)*sin(teta*3.14/180)+(yp4)*cos(teta*3.14/180));
*/
//posisi hasil pergeseran pada layar
xl1=int(xl0+xh1); xl2=int(xl0+xh2);
xl3=int(xl0+xh3); xl4=int(xl0+xh4);
yl1=int(yl0-yh1); yl2=int(yl0-yh2);
yl3=int(yl0-yh3); yl4=int(yl0-yh4);
// kotak hasil pergeseran;
Hapus();
Rotasi();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
XVII.4. Soal (UJI KEMAMPUAN)Kerjakan setiap permasalahan dengan membuat flowchart dan listing program, masing-masing simpan dengan nama SOAL17_1.cpp/bpr, dan SOAL17_2.cpp/bpr:
YHPI -> hal : 91
1. Ubahlah latihan17_1, dengan membuat parameter translasi dalam bentuk input
2. Ubahlah latihan17_2, dengan membuat parameter skala, sudut rotasi, pusat rotasi dalam
bentuk input!
YHPI -> hal : 92
BABXVIII, XIX
Buat sebuah proyek dengan kriteria program seperti di bawah ini!1. Memuat fungsi2. Memuat struct dan class3. Terdapat pengolahan Grafik
Setiap Mahasiswa wajib mempresentasikan hasil karyanya!
SELAMAT BEKERJA, BELAJAR DAN SEMOGA ALLAHSELALU MELIMPAHKAN ILMU YANG BERMANFAAT
DUNIA DAN AKHIRAT KEPADA KITA SEMUAAMIN 99X
YHPI -> hal : 93
DAFTAR PUSTAKA
C++ Builder 5 Developer’s Guide, Jarrod Hollingworth, Butterfield, SAMS, USA, 2001
C Plus Plus, 2001, Abdul Kadir, PT Elex Media Komputindo, Jakarta.
Open MP C and C++ Aplication Program Interface, OpenMP Architecture Review Board,WWW.OpenMP.Org