|
O unitate de program se define?te ca o colec?ie de constante, tipuri de date, variabile proceduri ?i func?ii, în mod normal legate între ele, plasate ?i compilate într-un alt fi?ier surs? al programului. Folosirea unit??ilor se realizeaz? prin precizarea numelui unit??ii într-o declara?ie uses.
Avantajele folosirii unit??ilor sunt urm?toarele:
- se realizeaz? o mai bun? structurare a programului;
- se economise?te timp la compilare, deoarece unit-urile se compileaz? separat (generând fi?iere TPU);
- se faciliteaz? colaborarea mai multor persoane la realizarea programului.
Unit-ul Crt con?ine o serie de subprograme (proceduri ?i func?ii) folosite în aplica?ii în care ecranul este utilizat în mod text. Programele care utilizeaz? acest unit trebuie s? con?in? directiva uses crt.
Ecranul în mod text are 25 de linii ?i 80 de coloane (ele pot fi schimbate prin apelul procedurii TextMode ), având coordonatele (valorile x cresc spre dreapta, iar a lui y în jos ): col?ul stânga sus (0,0), col?ul stânga jos (0,24), col?ul dreapta sus (79,0), col?ul dreapta jos (79,24).
S? consider?m “write(‘abc’);”
În modul text, instruc?iunea va l?sa cursorul în coloana care va urma dup? ultima liter? (ex: C). Dac? ultima liter? (ex: C) a fost scris? pe coloana 79, atunci cursorul va trece în coloana 0 a liniei urm?toare. Dac? ultima liter? (ex: C) a fost scris? pe coloana 79 a liniei 24, atunci întregul ecran va defila cu o linie în sus ?i cursorul va trece în coloana 0 a liniei 24.
Subporg. bibliotecii Crt pot fi clasificate astfel:
- de interes general
- supbrog. destinate gestiunii ferestrelor;
- supbrog. orientate pt culori;
- supbrog. destinate gener?ri sunt ?i intensit??ii video;
1.Subprograme de interes general:
TextMode Procedura TextMode asigur? selectarea unui mod text specificat ea este definit? prin: procedure TextMode(tm:integer);
Unde tm define?te tipul modului text, ?i poate lua ca valori urm?toarele constante predefinite :
Constant? Valoare Descriere mod Adaptor
BW40 0 40x25 Alb/Negru CGA
CO40 1 40x25 Color CGA
BW80 2 80x25 Alb/Negru CGA
CO80 3 80x25 Color CGA
MONO 7 80x25 Alb/Negru HGC
Font8x8 256 43 linii / 50 linii EGA/VGA
EXEMPLU:
program crttm;
uses crt;
var modoring:word;
begin
clrscr;{sterge ecranul}
modoring:=lastmod;{savare mod original}
{…}
Textmode(modoring);{reface tip original}
{…}
end.
Variabila LastMode de tip Word salveaz? modul video actual, ea este ini?ializat? cu modul video activ în momentul respectiv.
Keypressed Func?ia ~ returneaz? valoarea true dac? pe tastatur? s-a ap?sat o tast?, false în caz contrar. Func?ia se define?te prin :
function keypressed:boolean;( func?ia ~ nu sesizeaz? ap?sarea tastelor Shift, Alt, Numlock)
ReadKey Func?ia ~ returneaz? un caracter care sa tastat la tastatur?. Caracterul citit nu apare pe ecran. Dac? keypressed este true înaintea apelului Readkey, func?ia returneaz? automat caracterul tastat, în caz contrar Readkey a?teapt? tastarea unui caracter.
Func?ia se define?te astfel:
function WhereX:byte – returneaz? abscisa cursorului curent function ReadKey:char ;
Unul din avantajele utiliz?rii unitu-lui Crt este cre?terea flexibilit??ii ?i vitezei opera?iilor de ie?ire. Programele care nu utilizeaz? unit-ul Crt trimit datele de ie?ire pe ecran prin intermediul DOS-ului. Folosind unit-ul Crt, datele de ie?ire sunt trimise direct la BIOS, s-au prin opera?ii ?i mai rapide direct la memoria video.
AssignCrt Procedura ~ ata?eaz? ecranului (CRT-ului) un fi?ier text. procedure AssignCrt(var f: text); (unde f este fi?ierul care se ata?eaz?)
În sec?iunea de interfa?? a unit-ului crt sunt definite variabilele CheckBreak, CheckEof, DirectVideo care permit stabilirea unor facilit??i suplimentare.
CheckBreak variabila predefinit? ~ de tip boolean valideaz? sau invalideaz? utilizare întreruperii Crtl-Break. Dac? variabila este ini?ializat? cu true, prin ap?s. simultan? a tastelor Crtl ?i Break programul- la prima tentativ? de scriere pe ecran – va fi abortat. Dac? variabila este ini?ializat? cu false ap?s. tastelor nu are nici un efect.
CheckEof Variabila ~ de tip boolean valideaz? sau invalideaz? caracterul de sfâr?it de fi?ier. Dac? variabila este ini?ializat? cu true, prin ap?sarea simultan? a tastelor Crt-Z se generez? un caracter de sfâr?it de fi?ier în timpul citirii dintr-un fi?ier asignat ecranului. Dac? var. este ini?ializat? cu false, ap?sarea simultan? a tastelor Crtl-Z nu are nici un efect.
DirectVideo Variabila ~ de tip boolean valideaz? sau invalideaz? accesul direct al memoriei pt. opera?iunile Write ?i Writeln care afi?eaz? pe ecran. Dac? variabila este init. cu true, opera?iunile Write ?i Writeln la fi?iere asociate cu Crt vor memora caracterele direct în memoria video (?i nu vor apela BIOS-ul pt. aceast? opera?iune de afi?are). Dac? este init. cu false, toate caracterele vor fi scrise prin apelul BIOS-ului ?i va fi mai lent.
Toate variabilele au val. implicite true.
2.Subprograme destinate gestiuni ferestrelor
Unitul pune la dispozi?ia utilizatorului posibilitatea de a defini ferestre pe ecran (Zone ale ecranului); definirea de ferestre se face cu procedura Window. Atunci când se efectueaz? o înscriere într-o astfel de fereastr?, fereastra se comport? exact ca ?i cum s-ar folosi întreg: în interiorul ferestrei se pot insera ?i ?terge linii, iar când cursorul ajunge la marginea din dreapta, va trece automat la liniei urm?toare. Dac? cursorul a ajuns la sfâr?itul ultimei linii, toate liniile din ecran se vor deplasa automat cu o linie mai sus ?i înscrierea se va face în linia de la baz? (defilare automat?).
Window Procedura ~ este definit? :
procedure window(x1,y1,x2,y2:bzte); unde (x1,y1) sunt coordonatele coltului stânga sus ale ferestrei, iar (x2,y2) sânt coordonatele coltului dreapta jos ale ferestrei. Fereastra implicita depinde de modul text utilizare; de exemplu C080 (80x25 color pe adaptor color) este Window (0,0
|