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 inadalah 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

Popular posts from this blog

[2017] Cara Hack Instagram Terbaru-Tutorial Iphone like hack