Anda di halaman 1dari 8

BAB XI

MASUKKAN DARI KEYBORD, JAM, SUARA, DAN PEMBANGKIT BILANGAN


ACAK

A. Tujuan

Setelah perkuliahan ini mahasiswa diharapkan dapat:


1) Membuat program aplikasi yang datanya diinputkan dari keyboard;
2) Membuat program untuk mendeteksi penekanan tombol keyboard;
3) Membuat program untuk mengambil tanggal dari sistem operasi;

B. Landasan Teori

1. Membaca Kode Tombol

Bahasa C/C++ menyediakan sejumlah fungsi untuk membaca data dari keyboar, antara
lain fungsi:
- getch();
- getche();
- scanf();
- cin;

Fungsi yang digunakan untuk mendetekasi penekanan tombol keyboar adalah getch().
Fungsi ini dapat mendetekasi seluruh tombol keyboard, termasuk tombol perluasan
(seperti:Panah Atas, Home, Alt W dan sebagainya). Ketika fungsi getch() digunakan
dalam pemrograman, fungsi ini tidak menampakan karakter maupun kode karakter
kelayar, tetapi kita dapat menyimpan karakter atau kode tombol yang ditekan kedalam
sebuah bariabel. Kode program di bawah ini merupakan salah satu contoh cara
mendapatkan kode dari tombol yang ditekan.

kar = getch();
if(kar == 0)
kar = 256 + getch();

Penjelasan kode program di atas:


- Jika tombol yang ditekan adalah tombol perluasan (extended keyboard) maka kode
yang dibangkitkan berupa dua buah karakter, dengan karakter pertama bernilai ASCII
nol. Karakter kedua menyatakan kode yang spesifik bagi tombol perluasan.
- Sebaliknya, jika tombol biasa (seperti A atau ENTER) yang ditekan, kode yang
dibangkitkan berupa sebuah karakter.

Tabel 11.1 Kode Kedua dari tombol perluasan

Nilai Kode Kedua Tombol yang Ditekan


15 SHIFT Tab
16 - 25 ALT Q, W, E, R, T, Y, U, I, O, P
30 - 38 ALT A, S, D, F, G, H, J, K, L
44 - 50 ALT Z, X, C, V, B, N, M
59 - 68 F1, F2, F3, F4, F5, F6, F7, F8, F9, F10
71 Home

[dosen: Dr. Suartin, MT] Algoritma & Pemrograman Komputer” Halaman: 11-1
Nilai Kode Kedua Tombol yang Ditekan
72 Panah Atas
73 Pg Up
75 Panah Kiri
77 Panah Kanan
79 – 83 Pg Up, Panah Bawa, Pd Dn, Ins, Del
84 – 93 SHIFT F1 … F10
94 – 103 CTRL F1 … F10
104 – 113 ALT F1 … F10
114 CTRL PrtSc
115 – 116 CTRL Panah Kiri, Panah Kanan
117 – 119 CTRL End, PgDn, Home
120 – 131 ALT 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =
132 CTRL PgUp
160 CTRL Panah Atas
164 – 166 CTRL Panah Bawa, Ins, Del
174 – 176 ALT Home, Panah Atas, PgUp
178 ALT Panah Kiri
180 ALT Panah Kanan
182 ALT End
184 – 186 ALT PgDn, Ins, Del

Untuk mendapatkan karakter dari tombol yang ditekan pada kode program di atas adalah
dengan menambahkan nilai 256 terhadap kode karakter kedua khusus tombol perluasan.
Kode kedua dari tombol perluasan, dapat dilihat pada Table 11.1 di atas.

Contoh program di bawah ini menggambarkan cara membaca kode tombol panah.
Eksekusi program akan dihentikan jika tombol ESC ditekan.

Contoh 11.1:

#include <conio.h>
#include <stdio.h>
#include <dos.h>

#define PANAH_ATAS (256 + 72)


#define PANAH_KIRI (256 + 75)
#define PANAH_KANAN (256 + 77)
#define PANAH_BAWAH (256 + 80)
int main(){
unsigned int kar;
clrscr();
cputs("Tekan salah satu tombol panah\r\n");
do{
kar = getch();
if(kar == 0)
kar = 256 + getch();

switch(kar){

[dosen: Dr. Suartin, MT] Algoritma & Pemrograman Komputer” Halaman: 11-2
case TOMBOL_A:
sound(....);
sleep(1);
nosound();
break;
case PANAH_BAWAH:
cputs("Tombol yang anda tekan\r\n");
cputs("adalah PANAH BAWAH\r\n");
break;
case PANAH_KIRI:
cputs("Tombol yang anda tekan\r\n");
cputs("adalah PANAH KIRIS\r\n");
break;
case PANAH_KANAN:
cputs("Tombol yang anda tekan\r\n");
cputs("adalah PANAH KANAN\r\n");
break;
}
} while(kar != 27);
Sound(400);
}

Latihan 11.1
- Modifikasi program contoh 11.1 di atas sehingga:
a) Tombol untuk mengakhiri program adalah tombol ALT + X (bukan tombol ESC)
b) Tombol yang dideteksi oleh program ditambah dengan tombol “CTRL + Panah
Kanan, CTRL + Panah Kiri, CTRL + Panah Atas dan CTRL + Panah Bawah”.

2. Mengetahui Ada Tidaknya Tombol yang Ditekan

Turbo C menyediakan fungsi bernama kbhit(), yang digunakan untuk memeriksa ada-
tidaknya tombol keyboard yang ditekan. Jika tidak ada tombol yang ditekan maka fungsi
ini akan mengirim nilai balikan 0. Sebaliknya, jika ada tombol yang ditekan maka fungsi
ini akan mengirim nilai balikan selain 0 (sesuai kode tombol tersebut). Bentuk deklarasi
fungsi kbhit() adalah sebagai berikut:

int kbhit(void);

Fungsi kbhit dalam bahasa pemrograman sangat bermanfaat untuk game. Jika tidak ada
tombol yang ditekan, permainan (game) tetap bisa dijalankan. Sedangkan jika ada tombol
tertentu yang ditekan, langkah tertentu akan dilaksanakan. Program di bawah ini
memberikan contoh pemakaian fungsi kbhit(), dengan menggunakan fungsi ini eksekusi
program dapat di atur, misalnya dalam selang waktu tertentu tidak ada tombol yang
ditekan program akan memberitahu bahwa tak ada tombol yang ditekan. Sebaliknya jika
ada tombol yang ditekan kode tombol akan dibangkitkan di layar.

Contoh 11.2:

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

int main(){

[dosen: Dr. Suartin, MT] Algoritma & Pemrograman Komputer” Halaman: 11-3
unsigned i;
char kar;
clrscr();
puts("Tekan salah satu tombol panah");

for(i=0; i<20000; i++){


if(kbhit()){
kar = getch();
break;
} else{
clrscr();
puts("Anda tidak menekan tombol apa pun...!!!\r\n");
sleep(2);
}
}

puts("Anda menekan tombol");


if(kar == 0){
kar = 256 + getch();
printf(" perluasan. Kode kedua = %d\r\n", kar);
} else {
printf(" biasa. Kode = %d\r\n", kar);
}
getch();
}

Latihan 11.2
- Kembangkan program contoh 11.2 dengan menambahkan:
a) Definisi kontanta untuk tombol-tombol pengembangan sehingga ketika tombol
keyboard pengembangan ditekan akan ditampilkan nama tombol tersebut (bukan
kode seperti output contoh program 11.2)
b) Tambhakan juga penggulanan sehingga program baru akan berhenti jika pemakai
menekan tombol ESC.

3. Memasukkan String dari Keyboard

Memasukkan data string dari keyboard dengan panjang yang terbatas dapat dilakukan
dengan menggunakan fungsi cgets(). Bentuk pendeklarasian fungsi ini adalah:

char *cgets(char *str);

File header yang harus di-include-kan untuk menggunakan fungsi ini adalah conio.h.

Sebelum memanggil fungsi cgets(), str[0] perlu diisi dengan panjang maksimal string
masukkan yang diperbolehkan. Setelah memasukkan string (yang diakhiri dengan
ENTER), str[1] akan diisi panjang string masukan. Sedangkan string masukkan akan
ditempatkan mulai dari str[2] dan diakhiri dengan karakter null (\0).

[dosen: Dr. Suartin, MT] Algoritma & Pemrograman Komputer” Halaman: 11-4
Diisi dengan panjang maksimal dari string masukkan,
sebelum pemanggilan fungsi cgets()

1 2 3 4 1 2 3 4 5 6 7 8

Panjang string maksimal + 1 byte

Diisi dengan panjang maksimal dari string masukkan,


sebelum pemanggilan fungsi cgets()

Gambar 11.1. Peta Lokasi yang Ditunjuk oleh Pointer


Argumen dari Fungsi cgets()

Contoh program dengan data masukkan string dari keyboard dapat dilihat pada kode di
bawah ini (contoh 11.3).

Contoh 11.3:

#include <conio.h>
#include <stdio.h>

int main(){
clrscr();
char st[27];
char *ptr;
cprintf("Nama (Maks. 24 karakter) :");
st[0] = 25;
ptr = cgets(st);
cprintf("\nNama yang anda masukkan adalah: %s\r\n", ptr);
cprintf("Jumlah karakter = %d\r\n", st[1]);
}

4. Menghapus Isi Penampungan Keyboard

Untuk menghapus data tombol yang berada pada penampungan keyboard, perintah yang
dipakai adalah:

while(kbhit())
getch();

yang berarti “Baca tombol dari penampungan keyboard selama ada data padanya.”

Program berikut merupakan kode program lengkap untuk menghapus penampungan


keyboard.

Contoh 11.4:

#include <conio.h>
#include <stdio.h>
#include <dos.h>

[dosen: Dr. Suartin, MT] Algoritma & Pemrograman Komputer” Halaman: 11-5
#define PANJANG_STR 15;

int main(){
clrscr();
int const panjang = PANJANG_STR + 3;
char st[panjang];
char *ptr;

cputs("Program akan menunggu sekitar 6 detik.\r\n");


cputs("Jika sebelum waktu tersebut ada tombol ");
cputs("yang ditekan\r\n");
cputs("tombol tersebut akan akan dibasa oleh fungsi cgets().\r\n");

sleep(4);
while(kbhit())
getch();

cputs("\nMasukkan Nama Anda: ");


st[0] = PANJANG_STR + 1;

cgets(st);

printf("\nNama yang anda ketikkan adalah : %s\n", st);


printf("Panjang karakter nama tersebut adalah: %d\n", st[1]);
}

5. Menunda Eksekusi

Untuk keperluan menunda eksekusi program dalam selang waktu tertentu digunakan
fungsi delay() dan sleep(). Bentuk deklarasinya adalah

void delay(unsigned n);


void sleep(unsigned n);

Nilai n menyatkan selang waktu penundaan eksekusi dlam satuan milidetik. Untuk
menggunakan kedua fungsi ini harus dipanggil file header dos.h.

6. Memperoleh Data Tanggal

Untuk mendapatkan data tanggal system operasi digunakan fungsi getdate(). Bentuk
deklarasi fungsi ini adalah

void getdate(struct date *ptgl);

definisi struktur date adalah sebagai berikut:

struct date{
int da_year;
char da_day;
char da_mon;
}

Program di bawah ini merupakan contoh untuk mendapatkan tanggal dari system operasi.

[dosen: Dr. Suartin, MT] Algoritma & Pemrograman Komputer” Halaman: 11-6
Contoh 11.5:

#include <conio.h>
#include <stdio.h>
#include <dos.h>

int main(){
struct date tanggal;
clrscr();
getdate(&tanggal);
cprintf("Tanggal sekarang: %d-%d-%d", tanggal.da_day, tanggal.da_mon,
tanggal.da_year);
getch();
}

7. Memperoleh Data Jam

Untuk mendapatkan data tanggal system operasi digunakan fungsi gettime(). Bentuk
deklarasi fungsi ini adalah

void gettime(struct time *pwaktu);

dengan time merupakan type struktur (didefinisikan pada file dos.h), dengan deklarasi
struktur sebagai berikut:

struct time{
unsigned char ti_min;
unsigned char ti_hour;
unsigned char ti_hund;
unsigned char ti_sec;
}

Program di bawah ini merupakan contoh untuk mendapatkan jam dari system operasi.

Contoh 11.6:

#include <conio.h>
#include <stdio.h>
#include <dos.h>

int main(){
struct time waktu;
clrscr();
while(!kbhit()){
clrscr();
gettime(&waktu);
cprintf("Sekarang Jam: %d:%d:%d", waktu.ti_hour, waktu.ti_min, waktu.ti_sec);
sleep(1);
}

[dosen: Dr. Suartin, MT] Algoritma & Pemrograman Komputer” Halaman: 11-7
}
8. Membangkitkan Bilangan Acak

Contoh 11.7:

#include <conio.h>
#include <stdlib.h>
#include <time.h>

int main(){
clrscr();
int i;
srand(100);

cputs("5 bilangan acak yang dihasilkan oleh fungsi randomize()\r\n");


for(i=0; i<5; i++)
cprintf("%d ", random(50));

getch();
}

9. Membunyikan Speaker

Contoh 11.7:

#include <conio.h>
#include <dos.h>

int main(){
clrscr();
sound(440);
delay(500);
nosound();
}

C. Latihan Soal

1. Buatlah program untuk menghitung umur, dengan data masukkan tanggal lahir, kemudian
program akan menjawab umur dari seseorang tersebut. Simpan program ini dengan nama
lat11a.cpp!
2. Buatlah program untuk menghitung waktu mundur dengan data masukkan adalah lama
waktu yang dibutuhkan. Setelah cacahan waktu mencapai angka 0 maka program akan
berhenti. Simpan program ini dengan nama lat11b.cpp
3. Modifikasi program contoh 11.1, sehingga jika pemakai menekan tombol ENTER
program akan mengeluarkan suara di loadspeaker. Simpan program ini dengan nama
lat11b.cpp

[dosen: Dr. Suartin, MT] Algoritma & Pemrograman Komputer” Halaman: 11-8

Anda mungkin juga menyukai