Modul 2 - Belajar Pascal Pemula
Modul 2
Unit apa yang perlu saya cantumkan pada bagian
uses, kalau saya ingin melakukan pengaturan layar ?
Turbo Pascal menyediakan suatu unit CRT, yang berisi perintah-perintah
pengaturan layar seperti membersihkan
layar, mengatur warna tulisan, warna background, memindahkan posisi cursor, mode layar, dan membuat window
Ok, saya sudah tahu perintah Clrscr, apa perintah untuk mengatur warna tulisan ?
Pada prinsipnya ada dua cara untuk mengatur warna tulisan yang dicetak dengan
perintah Write dan Writeln, yang pertama adalah perintah :
TextColor(nomor warna);
Dan yang kedua adalah variabel internal dari unit CRT:
Textattr := nomor warna;
Hallo, anda belum
memberitahukan kepada
saya nomor warna
yang dapat saya gunakan !
Baiklah, berikut ini adalah nomor warna yang mewakili masing-masing warna: 0
(black), 1 (blue), 2 (green), 3 (cyan),
4 (red), 5 (magenta), 6 (brown), 7 (lightgray), 8
(darkgray), (9) lightblue, 10 (lightgreen), 11 (lightcyan),
12
(lightred), 13 (lightmagenta), 14 (yellow), 15 (White).
Saya pernah melihat tulisan
warna berkedip-kedip, dapatkah hal tersebut dilakukan ?
Anda dapat saja melakukan hal tersebut dengan menambahkan angka
128
pada nomor warna yang anda inginkan, misalnya :
TextColor(4 + 128);
Writeln('Merah dan berkedip-kedip');
Atau :
TextColor(Red + Blink);
Writeln('Merah dan berkedip-kedip');
Pada prinsipnya
anda dapat menggunakan konstanta dari masing-masing nomor warna
seperti black, blue, green, dll, untuk menggantikan pemakaian nomor.
Ok, saya sudah mengerti, bagaimana pula dengan warna latar belakang ?
Pengaturan warna latarbelakang dapat menggunakan perintah :
7
TextBackground(nomor warna);
Dalam hal ini nomor warna yang berlaku hanya 0 s/d 7.
Tadi anda ada menyinggung
tentang memindahkan posisi cursor, apa gunanya dan apa perintahnya ?
Pada lingkungan dos, posisi tulisan dilayar dicetak berdasarkan
posisi cursor yang sedang aktif, misalnya sekarang
posisi cursor berada di kolom 10, baris 5, maka perintah :
Writeln('Sedang belajar Pascal di PentaCOM');
Akan menampilkan tulisan tersebut mulai kolom 10 di baris 5.
Jadi misalnya anda ingin mencetak tulisan tersebut pada kolom 20, baris 13, maka
anda harus memindahkan
cusor keposisi kolom 20, baris 13, diikuti dengan perintah pencetakan tulisan tersebut, contoh :
GotoXY(20,13);
Writeln('Tulisan ini dicetak mulai kolom 20, di baris 13);
Bisakah saya mendapatkan nilai posisi cursor yang sedang aktif ?
Bisa, anda bisa menggunakan variabel internal unit CRT, yaitu WhereX, dan WhereY.
GotoXY(5,5); Write('Turbo');
GotoXY(WhereX+10,3); Write('Pascal');
Ngomong-ngomong, berapa sih jumlah kolom dan baris pada layar normal ?
Normalnya 80 kolom, 25 baris.
Saya pernah
melihat tulisan layar komputer di bandara Polonia yang lebih besar dari tulisan normal, bagaimana hal tersebut dapat dilakukan ?
Oh, ya. Hal tersebut dapat dilakukan dengan mengatur Mode layar dengan perintah :
TextMode(CO40); Dan TextMode(CO80);
Untuk menormalkannya.
Contoh :
Uses CRT;
begin
TextMode(CO40);
Writeln('A Real BIG Characters
on screen !');
Readln; TextMode(CO80); Writeln('Back to normal'); Readln;
end.
He-he-he, saya sudah mengerti trik yang mereka gunakan.
Tunggu dulu, ada
satu
hal
lagi
yang
belum
diberitahu, yaitu membatasi dari pencetakan
dilayar
berdasarkan koordinat kiri atas
dan
koordinat
kanan
bawah
dengan perintah :
Window(x1, y1, x2, y2);
Dimana x1, y1 adalah koordinat kiri atas dan x2, y2
adalah koordinat kanan bawah. Contoh :
uses Crt;
begin
ClrScr;
WriteLn('Creating a window from 30,10 to 50,20');
Window(30,10,50,20);
WriteLn('We are now writing
in this small window we just created,
we'+
'can''t get outside it when writing
long lines like this one'); Write('Press any key to clear the window');
ReadKey; ClrScr;
Write('The window is cleared,
press any key to restore to fullscreen');
ReadKey;
{Full Screen
is 80x25} Window(1,1,80,25);
Clrscr;
Writeln('Back in Full Screen');
end.
Ok, apakah anda sudah selesai ?
Belum, sebenarnya masih banyak perintah yang terdapat pada unit CRT, seperti :
Sound(frekuensi); Delay(milidetik); NoSound;
Apa pula fungsinya itu ?
Fungsi perintah
Sound
untuk membunyikan
speaker
komputer dengan frekuensi tertentu.
Contoh :
Sound(500);
Tolong, bunyinya tidak berhenti, walaupun programnya sudah selesai !
He-he-he, anda tidak menggunakan perintah NoSound untuk menghentikan efek dari perintah Sound.
Contoh :
Sound(500);
9
NoSound;
Kok sekarang speaker komputer tidak berbunyi sama sekali ?
Oh, ya, saya lupa menyisipkan delay diantara Sound dan NoSound.
Contoh : Sound(500);
Delay(1000); NoSound;
Sebagai programer
pemula pascal, saya sering mendapatkan
peringatan
compiler akan kesalahan Type Mismatch, dapatkah anda menjelaskan hal tersebut ?
Ok, masalah ini sering saya dengar dari orang yang baru belajar pascal. Memang pascal adalah
bahasa yang sangat ketat dalam variabel dan type data. Berikut ini saya akan menerangkan konvensi perhitungan dan type data yang dihasilkan :
Konvensi Penjumlah (+), Pengurangan (-), dan Perkalian (*) :
integer dengan integer = integer
integer dengan real =
real
real dengan real = real
Konvensi Pembagian (/) : Selalu menghasilkan real.
Pembagian bulat dengan Div :
Menghasilkan Integer.
Latihan di Lab :
(*Hangman.pas*)
uses crt;
const havetry=10;
s: array[0..18] of string=
('hello', 'mouse',
'hacher', 'programmer', 'killer', 'teacher',
'splotchier',
'butcher', 'computer', 'pascal', 'house', 'poor', 'children', 'museum',
'security', 'spillway', 'stupidity', 'corrigenda', 'freebooter');
var ch: char; gue,b,nowwrd,trynow: byte;
s1,wrs,alr: string;
r: boolean;
win: integer;
begin win:=0; clrscr;
Writeln('A.Larkin Hangman ESC for exit');
writeln;
10
randomize;
repeat
writeln; nowwrd:=random(18); s1:=s[nowwrd]; gue:=0;
wrs:=''; alr:=''; trynow:=havetry;
for b:=1 to length(s[nowwrd]) do write('_');
repeat gotoxy(20,wherey);
write('You have ',trynow,'
tries ');
ch:=readkey;
r:=false;
if ch<>#0 then repeat
b:=pos(ch,s1);
if (b<>0) and (s1[b]<>#0) then
begin
gotoxy(b,wherey); write(s1[b]); alr:=alr+ch; s1[b]:=#0;
gue:=gue+1; gotoxy(40,wherey);
write(' ');
r:=true;
end else
if (pos(ch,alr)<>0) and (r=false) then
begin
gotoxy(40,wherey); write('Already tried!');
end else
if (b=0) and (r=false)
then
begin trynow:=trynow-1; alr:=alr+ch; wrs:=wrs+ch; gotoxy(57,wherey); write('Wrong: ',wrs);
gotoxy(40,wherey);
write(' ');
end;
until (b=0) or (trynow=0);
until (ch=#27) or (gue=length(s1)) or (trynow=0);
if (trynow=0)
then
begin
win:=win-1; delline;
gotoxy(1,wherey); write(s[nowwrd]); gotoxy(20,wherey);
write('You lost! Your scores is ',win);
end else
if (gue=length(s1)) then begin
win:=win+1;
delline;
gotoxy(1,wherey);
write(s[nowwrd]);
gotoxy(20,wherey);
write('You win! Your scores is ',win);
end;
until ch=#27;
end.
Daftar Frekuensi
Nada
|
Frekuensi
|
C
|
262
|
D
|
294
|
E
|
330
|
F
|
350
|
G
|
392
|
A
|
440
|
B
|
494
|
Kembali Ke Modul 1 Lanjut Ke Modul 3
Comments
Post a Comment