Praktikum Pv 8

22
LAPORAN PRAKTIKUM VIII PEMROGRAMAN VISUAL Judul Timer & PaintBox Oleh: Nurwahyuddi 12022038 PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS AHMAD DAHLAN

Transcript of Praktikum Pv 8

Page 1: Praktikum Pv 8

LAPORANPRAKTIKUM VIII

PEMROGRAMAN VISUAL

Judul

Timer & PaintBox

Oleh:

Nurwahyuddi12022038

PROGRAM STUDI TEKNIK ELEKTRO

FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS AHMAD DAHLAN

YOGYAKARTA

2013

Page 2: Praktikum Pv 8

I. TUJUAN PRAKTIKUM

1. Mahasiswa dapat menggunakan komponen Timer dan PaintBox

2. Mahasiswa dapat membuat program menggunakan komponen Timer dan

PaintBox

II. DASAR TEORI

Komponen Timer digunakan untuk menghitung waktu tertentu dan kemudian

memanggil event handler OnTimer. Dirasi antara pemanggilan event OnTimer

tersebut diatur dengan property Interval (dalam satuan milidetik). Timer adalah

komponen novisual yang memberikan informasi pewaktuan dalam komputer atau

aplikasi anda. Pada setiap periode waktu tertentu yang dapat diset, komponen ini

mengirimkan sebuah pesan ke system operasi.

Komponen PaintBox (pada palet System) digunakan untuk menyediakan kanvas

untuk tempat menggambar secara bebas.

Page | 1

Page 3: Praktikum Pv 8

III. LANGKAH PERCOBAAN

Menggunakan komponen Timer

1. Buatlah proyek baru dan tambahkan komponen berikut serta uahlah nilai

propertinya. Sesuaikan ukuran dan posisi obyek dengan gambar 1.

Komponen Properti Isi

Form Text Menggunakan Timer

Label

Name labelAngka

Text 0

Font.Size 32

RightToLeft Yes

AutoSize False

ButtonName ButtonReset

Text &Reset

ButtonName buttonStartStop

Text &Start

Timer

Name Timer1

Interval 1000

Enabled False

Gambar 1. Tampilan penataan komponen

Page | 2

Page 4: Praktikum Pv 8

2. Pada program, tambahkan definisi variable Angka di bawah #pragma

endregion#pragma endregion

int Angka;

3. Buatlah event handler Load untuk obyek Form1private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

Angka = 0;}

4. Buatlah event handler Click untuk obyek buttonResetprivate: System::Void buttonReset_Click(System::Object^ sender, System::EventArgs^ e) {

Angka = 0;labelAngka->Text=Convert::ToString(Angka);

}5. Buatlah event handler Click untuk obyek buttonStartStop

private: System::Void buttonStartStop_Click(System::Object^ sender, System::EventArgs^ e) {

if (buttonStartStop->Text->Equals("&Start")){timer1->Enabled = true;buttonStartStop->Text = "&Stop";

}else {

timer1->Enabled = false;buttonStartStop->Text = "&Start";

}}

6. Buatlah event handler Tick untuk obyek timer1private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {

Angka++;labelAngka->Text = Convert::ToString(Angka);

}7. Jalankan.

8. Ubahlah properti Interval pada timer1 menjadi 100. Jalankan.

Page | 3

Page 5: Praktikum Pv 8

Menambah komponen PictureBox

1. Perbesar ukuran form program diatas dan tambahkan komponen berikut:

Komponen Properti Isi

PictureBox Name PictureBox1

Height 100

Width 100

Gambar 2. Penambahan PictureBox

2. Buat event handler untuk Paint pada pictureBox1 sebagai berikut:private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { e->Graphics->DrawEllipse(System::Drawing::Pens::Red,

5, 5, 90, 90);e->Graphics->DrawLine(System::Drawing::Pens::Blue, 50, 50,Math::Round(50+40*Math::Sin(Angka*Math::PI/180)),Math::Round(50-40*Math::Cos(Angka*Math::PI/180)));

}

3. Modifikasi event handler Tick untuk obyek temer1private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {

Angka++; labelAngka->Text = Convert::ToString(Angka); pictureBox1->Refresh();

}

4. Jalankan.

Page | 4

Page 6: Praktikum Pv 8

IV. HASIL DAN PEMBAHASAN

Menggunakan komponen Timer

Pada praktikum ini akan dibuat sebuah program pewaktuan menggunakan Timer.

Timer adalah komponen novisual yang memberikan informasi pewaktuan dalam

komputer dan bisa juga dugunakan dalam pewaktuan aplikasi. Dalam program

ini, Label digunakan sebagai komponen yang menunjukkan pewaktuan tersebut.

Ada beberapa komponen pedukung lainnya yang akan digunakan, antara lain:

Form

2 buah Button

1 buah Timer

Untuk memulai membuat program, buat terlebih dahulu sebuah form baru dan

beri nama form tersebut dengan nama yang berbeda agar form tidak saling

tertimpa dengan form yang telah ada (misalnya beri nama Form Menggunakan

Timer). setelah form baru muncul, masukkan komponen-komponen yang

digunakan dan tata komponen-komponen tersebut seperti yang terlihat pada

gambar 1, kemudian ubah properti-propertinya sesuai tabel pada langkah

percobaan.

Langkah selanjutnya yakni memasukkan event handler masing-masing untuk

setiap komponen dan sebelumnya tambahkan terlebih dahulu Int Angka;

untuk mendefinisikan nilai/variabel angka yang digunakan. Int angka;

ditambahkan tepat berada dibawah #pragma endregion dan Untuk event

handler yang digunakan sebelumnya telah tercantum pada langkah percobaan.

Page | 5

Page 7: Praktikum Pv 8

Berikut penjelasannya:

Event handler Load untuk obyek Form1

Penjelasan:

Event handler digunakan untuk mendefinisikan Angka = 0 ketika dimuat dalam Form.

Event handler Click untuk obyek ButtonReset

Penjelasan :

Angka dimulai dengan kondisi Nol;Teks pada labelAngka akan dikonversi ke tipe data String;

Event handler Click untuk obyek buttonStartStop

Penjelasan :

Jika teks pada buttonStartStop yang bertuliskan “Start” di klik, maka timer akan berjalan sesuai interval yang diberikan dan teks pada buttonStartStop berubah menjadi “Stop”.Jika tidak maka timer tidak berjalan dan teks pada buttonStartStop bertuliskan “Start”. Berarti ini dalam kondisi stop.

Page | 6

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {Angka = 0;}

private: System::Void buttonReset_Click(System::Object^ sender, System::EventArgs^ e){Angka = 0; labelAngka->Text = Convert::ToString(Angka);}

private: System::Void buttonStartStop_Click(System::Object^ sender, System::EventArgs^ e)

{if(buttonStartStop->Text->Equals("&Start")){timer1->Enabled = true;buttonStartStop->Text = "&Stop";}else {timer1->Enabled = false;buttonStartStop->Text = "&Start";}}

Page 8: Praktikum Pv 8

Event handler Tick untuk obyek Timer1

Penjelasan :

Nilai angka selalu bertambah dan tak terbatas.Teks pada labelAngka di convert menjadi string yaitu Angka.

Setelah semua event handler dimasukkan pada setiap komponen, maka program telah

dapat dijalankan, dan berikut hasil debuggingnya:

Tampilan awal:

Gambar 3. Tampilan awal setelah Debugging

Setelah Button Start diKlik

Gambar 4. Tampilan setelah buttonStart diklik

Setelah button Reset diKlik

Gambar 5. Tampilan setelah button Reset diklik

Page | 7

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {Angka++;labelAngka->Text = Convert::ToString(Angka);}

Page 9: Praktikum Pv 8

Ketika mengubah nilai interval dari 1000 menjadi 100 maka kecepatan perubahan

angka pada labelAngka menjadi bertambah semakin cepat.

Menambahkan komponen PictureBox

Sesuai dengan judul diatas, maka pada program yang telah dibuat sebelumnya akan

dimodifikasi yakni dengan menambahkan komponen PictureBox dan mengubah

property seperti yang telah terlihat pada langkah percobaan. Setelah PictureBox

ditambahkan dan diubah nilai propertinya, selanjutnya yaki memasukkan event

handler agar pictureBox dapat bekerja sesuai prosedur. Berikut event handler serta

penjelasannya:

Event handler untuk paint pada pictureBox1:

Penjelasan :

Digunakan untuk membuat gambar lingkaran berwarna merah. Penulisan angka “5, 5” berfungsi untuk penempatan posisi lingkaran terhadap sumbu X dan sumbu Y. Angka yang pertama adalah nilai untuk sumbu X, sedangkan angka ke dua untuk sumbu Y. Jika angka diganti maka posisi lingkaran juga akan berubah

Modifikasi event hadler Tick untuk obyek Timer1:

Page | 8

private: System::Void pictureBox1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { e->Graphics->DrawEllipse(System::Drawing::Pens::Red,

5, 5, 90, 90);e->Graphics->DrawLine(System::Drawing::Pens::Blue, 50, 50,Math::Round(50+40*Math::Sin(Angka*Math::PI/180)),Math::Round(50-40*Math::Cos(Angka*Math::PI/180)));

}

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {

Angka++;labelAngka->Text = Convert::ToString(Angka);pictureBox1->Refresh();

}

Page 10: Praktikum Pv 8

Penjelasan :

Program sebelumnnya hanya ditambahkan event yang telah dilingkari (ditanndai) yang fugsinnya yaitu untuk merefresh (menyegarkan) kembali obyek pada pictureBox1.

Setelah event handler telah dimasukkan dan dimodifikasi, maka program

menggunakan pictureBox telah dapat dijalankan, dan berikut tampilannya:

Tampilan awal setelah proses Debugging

Gambar 6. Tampilan awal sebelum di debug

Tampilan setelah tombol Start diklik:

Gambar 7. Tampilan setelah tombol Start diklik

Tampilan setelah tombol Reset diklik

Gambar 8. Tampilan setelah tombol Reset diklik

Page | 9

Page 11: Praktikum Pv 8

Seperti yang telah terlihat, bahwa pada program yang telah dibuat masih memliki

banyak kekurangan pada fungsinya. Misalnya seperti apabila kita mengklik

tombol Reset. Ketika mengklik tombol reset sedangkan tombol stop belum diklik,

maka Timer yang digunakan akan terus berjalan walaupun tombol reset telah

diklik. Hal tersebut dikarenakan kurangnya dalam hal pemasukkan event handler

untuk fungsi tersebut. Apabila dilogikakan jika diklik tombol reset, maka

Timerpun akan berhenti. Pelogikaan tersebut harusnya dimasukkan juga pada

source code untuk ButtonReset sendiri.

V. TUGASProgram menggerakkan tulisan ke kiri dan ke kanan (Tulisan Berjalan)

Komponen Properti Isi

Form Text Tulisan Berjalan

Label

Name label1

Text Nurwahyuddi

Font Matura MT Script Capital

Font.Size 50

Timer

Name timer1

Enabeld True

Interval 10

Komponen-komponen dan properti-properti yang tertera pada label diatas

digunakan untuk membuat aplikasi Tulisan Berjalan.

Page | 10

Page 12: Praktikum Pv 8

Dan dengan menambahkan event handler sebagai berikut agar aplikasi dapat

dijalankan yang telah disesuaikan dengan location pada property dengan besarnya

form sehingga Label dapat berjalan.

Penjelasan Event handler :

a. Penetapan variabel dengan integer. Lokasi sumbu X pada label dinamakan

x. lokasi sumbu Y pada label dinamakan y.

b. Angka 698 adalah posisi batas akhir label terlihat pada form bagian kanan.

Angka -446 adalah posisi batas akhir label terlihat pada form bagian kiri.

c. Sistem pemindahan label agar bisa bergerak terus dengan cara mengurangi

titik / pixel pada sumbu X.

Page | 11

Form

Timer

Label

#pragma endregionprivate: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) {int x = label1->Location.X;int y = label1->Location.Y;if (x < -446) {

x =698;}label1->Location = System::Drawing::Point(x-1, y);

}

Page 13: Praktikum Pv 8

Hasil debugging yang didapat adalah seperti berikut beserta penjelasannya :

Gambar 9. Tampilan tulisan Berjalan

Setelah dilakukan debugging, label pada aplikasi langsung bergerak ke kiri

sejajar sumbu X berkurang 1 titik / pixel dengan interval waktu dari satu titik

ke titik berikutnya adalah 10 mS.

Mengubah Jalannya Label menjadi bergerak maju

Mengubah program dari :if (x < -446){x = 698;}label1->Location = System::Drawing::Point(x-1, y);

menjadi :if (x > 698){x = -446;}label1->Location = System::Drawing::Point(x+1, y);

Page | 12

Page 14: Praktikum Pv 8

Sistem pemindahan label agar bisa bergerak terus dengan cara menambah titik / pixel

pada sumbu X. Sehingga bergerak ke kanan.

Hasil debugging yang didapat adalah seperti berikut beserta penjelasannya :

Gambar 10. Tulisan berjalan maju

a. Setelah dilakukan debugging, label pada aplikasi langsung bergerak ke kanan

sejajar sumbu X bertambah 1 titik / pixel dengan interval waktu dari satu titik

ke titik berikutnya adalah 10 mS.

Page | 13

Page 15: Praktikum Pv 8

VI. KESIMPULAN Komponen Timer digunakan untuk menghitung waktu tertentu dan kemudian

memanggil event handler OnTimer.

Komponen PaintBox digunakan untuk menyediankan kanvas untuk tempat

menggambar secara bebas.

Tanda (+) dan (-) pada aplikasi Menggunakan Timer dengan tampilan akhir

menyerupai jam dinding, berpengaruh terhadap arah putaran jarum. Jika tanda

(+) dan (+) atau (-) dan (-) maka jarum akan berputar berlawanan jarum jam

dan searah dengan putaran rotasi bumi atau putaran sudut. Jika tanda (+) dan

(-) atau (-) dan (+) maka jarum akan berputar searah jarum jam atau

berlawanan dengan putaran rotasi bumi atau putaran sudut.

Cara menggerkkan tulisan ke kiri adalah dengan mengurangi nilai lokasi

sumbu X titik / pixel lokasi tulisan pada form dengan intercal tertentu.

Cara menggerkkan tulisan ke kanan adalah dengan menambah nilai lokasi

sumbu X titik / pixel lokasi tulisan pada form dengan intercal tertentu.

VII. JAWABAN PERTANYAANSoal :

1. Mengapa jika button Reset ditekan = 0, tetapi kembali berjalan dan tidak

berhenti ?

2. Bagaimana jika button reset maka Timer berhenti ?

3. Kenapa label berjalan mundur ?

Page | 14

Page 16: Praktikum Pv 8

Jawab :

1. Karena pada event yang digunakan tidak terdapat fungsi jika button Reset

diklik maka Timer berhenti. Sebagai solusinnya, pada buttonReset bisa

ditambahkan event handler timer1->Stop(); dimana berfungsi untuk

menghentikan kerja timer ketika ButtonReset diklik.

2. Sama halnya dengan pertanyaan sebelumnya, maka solusinya yakni dengan

menambahkan event handler timer1->Stop(); dimana fungsinya yakni

untuk mengkondisikan agar Timer berhenti saat ButtonReset diklik.

3. Label bisa berjalan mundur karena event memang disetting agar Label

berjalan mundur. Cara membuat Label berjalan menjadi maju / bergerak ke

kanan :

Pertama : Tentukan dulu batas akhir tulisan terlihat pada form yang

digunakan.

Kedua : Mengubah program sebagai berikut :

Mengubah program dari :if (x < -446){x = 698;}label1->Location = System::Drawing::Point(x-1, y);menjadi :if (x > 698){x = -466;}label1->Location = System::Drawing::Point(x+1, y);

yang berubah dari event yang digunakan sebelumnya yaitu tanda (<) menjadi

(>), pertukaran tempat/nilai antara pendefinisian IF, dan perubahan tanda (–)

menjadi (+).

Sistem pemindahan label agar bisa bergerak terus dengan cara menambah titik

/ pixel pada sumbu X. Sehingga bergerak ke kanan.

VIII. REFERENSIKartika Firdausy, S.T., M.T., Petunjuk Praktikum Pemrograman Visua. Yogyakarta

Page | 15