Tutorial Turbo Pascal Part 2

Bajay X Generation -->
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 :

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 bajay-x.blogspot.com');
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);
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;
     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











Informasi :
- Modified by Ajay Batubara
- Sumber : indoprog : Indonesia Programmer.
- www.freewebs.com/salim_web

Read Users' Comments (0)

0 Response to "Tutorial Turbo Pascal Part 2"

Post a Comment

Sign up for PayPal and start accepting credit card payments instantly.