buku ajar pemrogramanvisual vers cetak

94
PEMROGRAMAN VISUAL (C ++ BUILDER) SEMESTER II (2 SKS/ 4 Jam/Minggu) Penyusun: Drs. Yoyok Heru P.I., MT NIP. 196807081994031002 JURUSAN TEKNIK ELEKTRO PROGRAM STUDI JARINGAN TEKNIK DIGITAL POLITEKNIK NEGERI MALANG 2015

Upload: meriyatullusidah

Post on 05-Dec-2015

63 views

Category:

Documents


15 download

TRANSCRIPT

Page 1: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 2: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 3: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 4: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 5: Buku Ajar PemrogramanVisual Vers Cetak

YHPI -> hal : 4

Page 6: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 7: Buku Ajar PemrogramanVisual Vers Cetak

YHPI -> hal : 6

Page 8: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 9: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 10: Buku Ajar PemrogramanVisual Vers Cetak

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 :

Page 11: Buku Ajar PemrogramanVisual Vers Cetak

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 :

Page 12: Buku Ajar PemrogramanVisual Vers Cetak

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:

//---------------------------------------------------------------------------

Page 13: Buku Ajar PemrogramanVisual Vers Cetak

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 !

Page 14: Buku Ajar PemrogramanVisual Vers Cetak

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();

Page 15: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 16: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 17: Buku Ajar PemrogramanVisual Vers Cetak

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,.

Page 18: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 19: Buku Ajar PemrogramanVisual Vers Cetak

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)

Page 20: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 21: Buku Ajar PemrogramanVisual Vers Cetak

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;

}

}//---------------------------------------------------------------------------

Page 22: Buku Ajar PemrogramanVisual Vers Cetak

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;

}//---------------------------------------------------------------------------

Page 23: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 24: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 25: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 26: Buku Ajar PemrogramanVisual Vers Cetak

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();

Page 27: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 28: Buku Ajar PemrogramanVisual Vers Cetak

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();

}//---------------------------------------------------------------------------

Page 29: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 30: Buku Ajar PemrogramanVisual Vers Cetak

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";

Page 31: Buku Ajar PemrogramanVisual Vers Cetak

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();

Page 32: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 33: Buku Ajar PemrogramanVisual Vers Cetak

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)

Page 34: Buku Ajar PemrogramanVisual Vers Cetak

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)

Page 35: Buku Ajar PemrogramanVisual Vers Cetak

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;

Page 36: Buku Ajar PemrogramanVisual Vers Cetak

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;}

Page 37: Buku Ajar PemrogramanVisual Vers Cetak

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 !

Page 38: Buku Ajar PemrogramanVisual Vers Cetak

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){

Page 39: Buku Ajar PemrogramanVisual Vers Cetak

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!

Page 40: Buku Ajar PemrogramanVisual Vers Cetak

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 :

Page 41: Buku Ajar PemrogramanVisual Vers Cetak

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;

Page 42: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 43: Buku Ajar PemrogramanVisual Vers Cetak

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();

Page 44: Buku Ajar PemrogramanVisual Vers Cetak

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];

Page 45: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 46: Buku Ajar PemrogramanVisual Vers Cetak

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;

Page 47: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 48: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 49: Buku Ajar PemrogramanVisual Vers Cetak

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!

Page 50: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 51: Buku Ajar PemrogramanVisual Vers Cetak

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!

Page 52: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 53: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 54: Buku Ajar PemrogramanVisual Vers Cetak

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!

Page 55: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 56: Buku Ajar PemrogramanVisual Vers Cetak

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)

Page 57: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 58: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 59: Buku Ajar PemrogramanVisual Vers Cetak

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)

Page 60: Buku Ajar PemrogramanVisual Vers Cetak

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){

Page 61: Buku Ajar PemrogramanVisual Vers Cetak

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"//---------------------------------------------------------------------------

Page 62: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 63: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 64: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 65: Buku Ajar PemrogramanVisual Vers Cetak

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>

Page 66: Buku Ajar PemrogramanVisual Vers Cetak

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)

Page 67: Buku Ajar PemrogramanVisual Vers Cetak

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)

Page 68: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 69: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 70: Buku Ajar PemrogramanVisual Vers Cetak

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!

Page 71: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 72: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 73: Buku Ajar PemrogramanVisual Vers Cetak

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);

Page 74: Buku Ajar PemrogramanVisual Vers Cetak

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);

//==========================

Page 75: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 76: Buku Ajar PemrogramanVisual Vers Cetak

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);

Page 77: Buku Ajar PemrogramanVisual Vers Cetak

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 :

Page 78: Buku Ajar PemrogramanVisual Vers Cetak

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);

Page 79: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 80: Buku Ajar PemrogramanVisual Vers Cetak

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.

Page 81: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 82: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 83: Buku Ajar PemrogramanVisual Vers Cetak

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 :

Page 84: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 85: Buku Ajar PemrogramanVisual Vers Cetak

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);

}

//---------------------------------------------------------------------------

Page 86: Buku Ajar PemrogramanVisual Vers Cetak

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;

Page 87: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 88: Buku Ajar PemrogramanVisual Vers Cetak

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();

Page 89: Buku Ajar PemrogramanVisual Vers Cetak

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);

}

Page 90: Buku Ajar PemrogramanVisual Vers Cetak

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;

Page 91: Buku Ajar PemrogramanVisual Vers Cetak

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:

Page 92: Buku Ajar PemrogramanVisual Vers Cetak

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!

Page 93: Buku Ajar PemrogramanVisual Vers Cetak

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

Page 94: Buku Ajar PemrogramanVisual Vers Cetak

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