Rabu, 29 Juni 2016

Contoh 16 (Coding) dan Gambarnya

#include <math.h> /* Deklarasi prototype atof */
#include <stdlib.h> /* Deklarasi prototype gcvt */
#include "screen.cpp" /* Fungsi anggota writeString */
#define KEY_INT 0x16 /* Nomor interupsi keyboard */
#define KEY_BACKSPACE 0x08 /* Tombol Backspace */
#define KEY_RETURN 0x0d /* Tombol Enter */
#define KEY_TAB 0x09 /* Tombol Tab */
#define KEY_SPACE 0x20 /* Tombol spasi */
#define NULL 0x00 /* ASCII 0 */
#define TRUE 1
UCHAR *getString(Screen *scr, UCHAR *str, UCHAR max);
int main(void)
{
Screen *layar = new Screen();
double luas, keliling, jari2;
UCHAR *str, str2[16];
layar->setMode(0x03);
layar->setCursorPos(5, 10);
layar->writeString("Luas dan Keliling Lingkaran");
layar->setCursorPos(6, 10);
layar->writeString("---------------------------");
layar->setCursorPos(8, 10);
layar->writeString("Panjang jari-jari =");

layar->setCursorPos(8, 30);
/* Input jari-jari ke dalam variabel str */
str = getString(layar, str, 15);
/* Ubah str menjadi numerik double lalu simpan di jari2 */
jari2 = atof(str);
/* Hitung luas dan keliling lingkaran */
luas = M_PI * pow(jari2, 2);
keliling = 2 * M_PI * jari2;
layar->setCursorPos(9, 10);
layar->writeString("Luas =");
layar->setCursorPos(9, 30);
/* Ubah menjadi string, maks. angka 10 digit */
gcvt(luas, 10, str2);
layar->writeString(str2);
layar->setCursorPos(10, 10);
layar->writeString("Keliling =");
layar->setCursorPos(10, 30);
/* Ubah menjadi string, maks. angka 10 digit */
gcvt(keliling, 10, str2);
layar->writeString(str2);
layar->setCursorPos(12, 10);
layar->writeString("Tekan ENTER ...");
getString(layar, str2, 0);
delete layar; return EXIT_SUCCESS;
}
UCHAR *getString(Screen *scr, UCHAR *str, UCHAR max)
{
UCHAR key, i, x, y;
key = i = 0;
while (TRUE)
{
asm mov ah, 0x00;
asm int KEY_INT;
asm mov key, al;
if ((key == KEY_BACKSPACE) && (i > 0))
{
scr->getCursorPos(&y, &x);
scr->setCursorPos(y, --x);
scr->writeChar(KEY_SPACE);
*(str + i) = NULL; i--;
}

if ((key >= 32) && (key <= 126) && (i < max))
{
scr->getCursorPos(&y, &x);
scr->writeChar(key);
scr->setCursorPos(y, ++x);
*(str + i) = key; i++;
}
if ((key == KEY_TAB) && (i < max))
{
scr->getCursorPos(&y, &x);
scr->writeChar(KEY_SPACE);
scr->setCursorPos(y, ++x);
*(str + i) = KEY_SPACE; i++;
}
if (key == KEY_RETURN)
{
*(str + i) = NULL;
break;
}
if (i == max) *(str + i) = NULL;
}
return str;
}


Gambarnya Sebagai Berikut : 



Penjelasannya : 


Perhatikanlah baris 35 pada program contoh16.cpp! Pada baris tersebut, nilai str yang sebelumnya dimasukkan menggunakan fungsi getString diubah menjadi nilai numerik yang sesungguhnya lalu disimpan dalam variabel jari2. Kemudian perhatikan baris 46. Pada baris 46 tertulis gcvt(luas, 10, str). Maksudnya adalah nilai dari variabel luas akan diubah menjadi representasi stringnya yang disimpan pada variabel str. Banyak karakter yang dapat ditampung adalah 10 karakter. Demikian juga yang dilakukan pada baris 54.

0 komentar:

Posting Komentar

Posting Lebih Baru Posting Lama Beranda

Diberdayakan oleh Blogger.

Facebook

Popular Posts

Formulir Kontak

Nama

Email *

Pesan *

Subscribe Here

Ad Home

Random Posts

Recent Posts

Recent

Header Ads

Popular Posts

Flickr

Newsletter

Subscribe Our Newsletter

Enter your email address below to subscribe to our newsletter.

Ad Banner

About Us

Random Posts

Popular Posts

 

Followers

 

Social Share Icons

Templates by Nano Yulianto | CSS3 by David Walsh | Powered by {N}Code & Blogger