Transcript Pertemuan 1

Workshop
Project II
Mohammad Zikky, S.ST, M.T
GBPP Perkuliahan
Aturan Pembuatan Laporan
• Dibuat setiap selesai habis workshop
• Meliputi:
• Dasar Teori
• Alat dan Bahan
• Analisa dan Penjelasan Per-bagian
• Pengembangan
• Kesimpulan
• Laporan tulisan harus ditulis tangan dan hasil yang berupa output praktikum di
computer bisa di screenshot, di print kemudian di temple bersama tulisan tangan di
buku laporan.
• Tidak boleh ada yang sama persis antar mahasiswa (baik gambar atau penulisan),
jika ditemukan, akan dikenakan pinalti nilai
Penilaian
• Knowledge
• Skill
• Attitude
=
=
=
25%
35%
40%
 Knowledge akan dilihat dari penjelasan ketika demo program/presentasi
 Skill dilihat dari profesionalisme keseharian mengerjakan praktikum dan cara
membuat laporan hasil praktikum
 Attitude dilahat dari sikap kepada teman dan dosen dalam keseharian di kampus
• Waktu maksimal keterlambatan: 15 menit setelah perkuliahan dimulai
Referensi
• N Utama, Didit . Widayanti, Rya. Algoritma & Pemrograman
dengan Borland C++. Graha Ilmu, 2005
• Dickheiser, Michael J. C++ for Game Programmer, Second Edition.
Charles River Media, 2007
• Allain, Alex. Jumping into C++. Alex Allain
(www.cprogramming.com), 2014
• Unity3d.com Tutorials
Instalasi
• Install Borland 6 Builder sebagai Compiler C++ di computer
• Pilih New  Consule Wizard OK
• Centang C++ dan Consule Application  OK
Masukkan source code program berikut:
#include<iostream>
#include<windows.h>
using namespace std;
//variabel global untuk menyimpan tombol informasi
//tombol yang ditekan
INPUT_RECORD InRec;
int main()
{
char tekan='X';
//perulangan ini akan diulang selama tekan TIDAK SAMA dengan 'x'
while(tekan!='x')
{
//cetak tulisan 'halo' pada kolom=20 & baris=10
gotoxy(20,10);
cout << "hallo";
//fungsi delay(), digunakan untuk menunda proses eksekusi
//selama beberapa millisecond
#define delay Sleep
//fungsi gotoxy(), digunakan untuk menempatkan kursor
//pada posisi KOLOM dan BARIS
void gotoxy(unsigned int kolom, unsigned int baris)
{
COORD posisi = {kolom,baris};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), posisi);
}
delay(1000);
//cetak tulisan kosong pada kolom=20 & baris=10
//untuk menimpa tulisan 'halo'
gotoxy(20,10);
cout << "
";
//cetak tulisan 'dunia' pada kolom=30 & baris=10
gotoxy(30,10);
cout << "dunia";
//fungsi kbhit(), digunakan untuk mendeteksi terjadinya
//penekanan tombol. Jika terdapat tombol yang ditekan maka fungsi ini
//akan mengembalikan nilai TRUE sebaliknya FALSE
bool kbhit()
{
DWORD EventCount,NumRead;
GetNumberOfConsoleInputEvents(GetStdHandle(STD_INPUT_HANDLE),
&EventCount);
if(EventCount>0)
ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &InRec, 1, &NumRead);
return (InRec.EventType == KEY_EVENT);
}
//fungsi getch(), digunakan untuk mengambil informasi tombol yang
//terakhir kali ditekan.
char getch()
{
return InRec.Event.KeyEvent.uChar.AsciiChar;
}
delay(1000);
//cetak tulisan kosong pada kolom=30 & baris=10
//untuk menimpa tulisan 'dunia'
gotoxy(30,10);
cout << "
";
//cek apakah terjadi penekanan tombol,
//jika 'ya', simpan tombol tersebut pada variabel TEKAN
if(kbhit()) tekan = getch();
}
}
Langkah berikutnya
•
•
•
•
File  Save Project as
Berinama file misalkan main.cpp
Kemudian berinama project, missal: project1
Save
• Setelah itu, coba jalankan dengan klik RUN
Penjelasan  Animasi Maju Mundur
• Animasi tulisan Maju-Mundur adalah animasi sederhana membuat tulisan bergerak maju dan
saat mencapai posisi tertentu tulisan tersebut akan bergerak mundur, begitu seterusnya.
Program akan berakhir jika pemakai menekan tombol 'x'.
• Program ini bisa dibuat dengan mudah menggunakan Turbo / Borland C++ for Dos, karena telah
tersedia fungsi-fungsi yang cukup mudah untuk digunakan seperti gotoxy(), delay(), kbhit()dan
getch().
• delay(): digunakan untuk menunda proses eksekusi selama beberapa millisecond
• gotoxy(): digunakan untuk menempatkan kursor pada posisi KOLOM dan BARIS
• kbhit(): digunakan untuk mendeteksi terjadinya penekanan tombol. Jika terdapat tombol
yang ditekan maka fungsi ini akan mengembalikan nilai TRUE sebaliknya FALSE
• getch(): digunakan untuk mengambil informasi tombol yang terakhir kali ditekan.
• Yang perlu dilakukan hanyalah menggunakan pusataka, conio.h & dos.h.
#include <conio.h>
#include <dos.h>
Langkah pertama
• Ide dasar dari animasi ini sebenarnya hanyalah "tulis" kemudian "hapus".
• Jika kita mempunyai program berikut :
gotoxy(10,20); cout << "Halo";
gotoxy(30,20); cout << "Dunia";
• maka tulisan "Halo" akan ditulis pada posisi kolom=10 dan baris=20 sedangkan
tulisan "Dunia" akan ditulis pada posisi kolom=20 dan baris=20.
• Jika kita ingin membuat animasi, tulisan "Halo" ditampilkan dulu kemudian
setelah beberapa saat baru tulisan "Dunia" ditampilkan, maka kita
membutuhkan fungsi delay()
gotoxy(10,20); cout << "Halo";
delay(1000); //tunda selama 1000ms = 1 detik
gotoxy(30,20); cout << "Dunia";
Langkah kedua
• Jika kita inginkan agar ketika tulisan "Dunia" ditampilkan maka tulisan "Halo"
harus dihapus maka idenya adalah kita menimpa tulisan "Halo" dengan tulisan
kosong " ". Tentu tulisan kosong harus ditulis pada posisi kolom dan baris yang
sama dengan tulisan "Halo".
gotoxy(10,20); cout << "Halo";
//tunda selama 1000ms = 1 detik
delay(1000);
//timpa tulisan "Halo" dengan tulisan kosong
gotoxy(10,20); cout << " ";
gotoxy(30,20); cout << "Dunia";
• Dengan ide sederhana seperti ini, kita bisa membuat animasi-animasi lain yang
lebih menarik
Percobaan Ke-2
#include<iostream>
#include<windows.h>
using namespace std;
//variabel global untuk menyimpan informasi
//tombol yang ditekan
INPUT_RECORD InRec;
//area animasi
unsigned int BATASKANAN = 45;
unsigned int BATASKIRI = 10;
unsigned int kolom
= 10;
unsigned int baris
= 10;
//teks yang akan dicetak
string teks = "PENS JOSS";
//perulangan ini akan diulang selama tekan TIDAK SAMA dengan 'x'
while(tekan!='x')
{
//kontrol posisi
if(maju==true)
{
//coba deh, ganti bagian ini dengan 'kolom>=BATASKANAN'
//apa yang terjadi ?
if (kolom>=BATASKANAN-teks.length())
{
maju=false;
} else
{
kolom++;
}
} else
{
if (kolom<=BATASKIRI)
{
maju=true;
} else
{
kolom--;
}
}
//fungsi delay(), digunakan untuk menunda proses eksekusi
//selama beberapa millisecond
#define delay Sleep
//fungsi gotoxy(), digunakan untuk menempatkan kursor
//pada posisi KOLOM dan BARIS
void gotoxy(unsigned int kolom, unsigned int baris)
{
COORD posisi = {kolom,baris};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), posisi);
}
//fungsi kbhit(), digunakan untuk mendeteksi terjadinya
//penekanan tombol. Jika terdapat tombol yang ditekan maka fungsi ini
//akan mengembalikan nilai TRUE sebaliknya FALSE
bool kbhit()
{
DWORD EventCount,NumRead;
GetNumberOfConsoleInputEvents(GetStdHandle(STD_INPUT_HANDLE), &EventCount);
if(EventCount>0)
ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &InRec, 1, &NumRead);
return (InRec.EventType == KEY_EVENT);
}
//TULIS teks
gotoxy(kolom,baris); cout<< teks;
//fungsi getch(), digunakan untuk mengambil informasi tombol yang
//terakhir kali ditekan.
char getch()
{
return InRec.Event.KeyEvent.uChar.AsciiChar;
}
//cek apakah terjadi penekanan tombol,
//jika 'ya', simpan tombol tersebut pada variabel TEKAN
if(kbhit()) tekan = getch();
delay(50);
int main()
{
gotoxy(10,4); cout << "===================================";
gotoxy(10,5); cout << "== Animasi Tulisan Maju Mundur 2 ==";
gotoxy(10,8); cout << "===================================";
//HAPUS teks
cout.width(teks.length());
//Coba deh, tambahkan titik di antara tanda kutip berikut
//apa yang terjadi ?
cout.fill(' ');
gotoxy(10,12); cout << " [ Tekan 'x' Untuk Keluar ] ";
//Diantara tanda kutip berikut, akan diisi dengan KARAKATER
//yang ditentukan lewat fungsi cout.fill(KARAKATER) diatas
gotoxy(kolom,baris); cout<<"";
char tekan='X';
//kontrol arah gerak tulisan
//kalau TRUE tulisan akan bergerak ke KANAN (MAJU)
//kalau FALSE tulisan akan bergerak ke KIRI (MUNDUR)
bool maju = true;
}
}
Percobaan lebih lanjut
• Silahkan modifikasi program tersebut misalkan menampilkan
tulisan naik turun, memberi hitungan berapa kali tulisan lewat,
atau lainnya.
• Analisa dan jelaskan hasil praktikumnya
• Buat laporan