Programovanie
PROGRAM_meno programu; USES_použité knižnice; CONST_definovanie konštánt programu; TYPE_definovanie nových typov premenných; VAR_definovanie premenných; BEGIN { hlavné begin - začiatok programu } príkaz_1; príkaz_2; .. END. { hlavné end - koniec programu }
Ďalej si popíšeme definičnú časť.
1.PROGRAM_meno programu; 2.USES_použité knižnice;
Programovací jazyk TP mal pri svojom vzniku niekoľko základných príkazov. Asi by bolo jednoduché sa toľko príkazov naučiť, ale náročnejšie s tak málo príkazmi programovať. Preto bola možnosť na základe už známych príkazov vytvárať nové a nové. To určite zo začiatku stačilo, ale po čase sa v tejto hŕbe príkazov nik nevyznal. Kvôli tomu vznikla myšlienka uskladňovať tieto do tzv. knižníc presne tak ako v knižniciach.
Takže ak idem programovať tlačiaren, použijem knižnicu PRINTER, ak grafiku, tak GRAPH. Preto než začnem písať program, musím určiť, z akej knižnice budem používať príkazy. My si popíšeme len tie základné.
CRT - práca s obrazovkou v textovom režime, práca s klávesnicou, práca s PC DOS - pre podporu funkcií DOSu (Windows) GRAPH - grafické rutiny pre prácu v grafickom režime PRINTER - príkazy pre prácu s tlačiarňou A ďalšie iné, ktorých je mnoho, pretože každý programátor si môže vytvoriť vlastnú knižnicu. 3.CONST_konštanty programu; 4.TYPE_definovanie nových premenných; 5.VAR_definovanie premenných; Procedúry a funkcie Vysvetlenie procedúry
Pri písaní programu sa často stáva, že niektoré príkazy, lepšie povedané sústava príkazov, sa opakuje. Aby sme sa tomu vyhli, sprehľadnili program a hlavne uľahčili si prácu, môžeme takéto príkazy zlúčiť do jedného a dať mu nové meno. Programátor tým vlastne vytvorí nový príkaz. Toto nám poskutujú procedúry (funkcie).
Procedúra je vlastne taký malý program v programe. Takže až na malé zmeny má tú istú štruktúru.
Štruktúra:
PROCEDURE_meno procedúry(definícia vstupných premenných);
V definícii vstupných premenných napíšem s akými typmi premenných môžeme volať procedúru. Ako príklad nám poslúži procedúra ktorá zlúči príkazy GotoXY a Write nazvime je WriteXY. Vstupné parametre budú súradnice X,Y a text aký sa ma na tieto súradnice vypísať. Preto napíšem:
procedure WriteXY(x,y:integer;s:string);
Ostatné je intuitívne jasné, preto prejdeme hneď k príkladu a napíšeme si program, ktorý bude nahradzovať sústavu príkazov GotoXY a Write jediným WriteXY.Príklad:
Program Moja_procedúra: Uses Crt,Dos; Var X,Y,Z:Integer;
Procedure WriteXY(X,Y:Integer; S:String); Var SucXY:Integer; Begin SucXY:=X+Y; GotoXY(X,Y); Write(S); End;
Begin { hlavne begin programu } ClrScr; WriteXY(10,4,’Ahoj ja som tvoje PC’); WriteXY(10,5,’Stlač kláves ak chceš pokracovať’); Readln; End. { hlavne end programu } Vysvetlenie funkcie
Napísali sme si už jednoduchú procedúru, ale často sa stáva že potrebujeme prenášať údaje medzi procedúrou a programom. Ináč povedané, aby ním procedúra vrátila nejaké číslo. Môžeme preto definovať funkciu, ktorá má skoro rovnakú štruktúru ako procedúra s jedným rozdielom, že naviac definujeme akú premennú nám bude dávať. V tele funkcie sa názov funkcie správa ako premenná, takže môžeme do nej zapisovať výsledok jednoduchým priradením.
Štruktúra:
FUNCTION_meno(definícia vstupných premenných):typ_výstupu;
BEGIN { begin - začiatok funkcie } príkaz; .. meno:=výsledok; END; { end - koniec funkcie } Príklad: Program Priklad_funkcie; Uses Crt,Dos; Var X,Vys:Integerl;
Function Moc(X:Integer):Integer; Var Pom:Integer; Begin Pom:=(X+X)*2; Moc:=Pom; End;
Begin ClrScr; X:=10; Vys:=Moc(X); End.Rozdiel medzi lokálnymi a globálnymi premennými.
Ak si podrobne preštudujeme príklad s procedúrami, všimneme si, že sú tam premenné X,Y definované dvakrát. Prvýkrát v hlavnej deklaračnej časti programu (hneď za USES) a druhýkrát v premenných, ktoré vstupujú do procedúry. Dôležitou otázkou je, akú hodnotu bude mať premenná SucXY. Bude sčítavať X,Y ktoré sú nadefinované hneď za hlavným begin, alebo čísla ktorými volám procedúru. A tu je vlastne rozdiel medzi globálnou a lokálnou premennou, pretože v procedúre platia hodnoty 10,4 pri prvom WriteXY a 10,5 pri druhom. Premenné X=4, Y=8 budú platné pre zbytok programu. Ale Z bude viditeľné aj v procedúre WriteXY. Naopak premenná SucXY sa dá použiť len v nej. Takže ak mám definovanú globálnu premennú, potom je viditeľná v celom programe, pokiaľ sa v niektorej časti nenachádza lokálna, ktorá má rovnaké meno.
Globálna premenná: Je definovaná v hlavnom tele programu a je viditeľná v celom programe aj v procedúrach a funkciách. Lokálna premenná: Jej definíciu píšem v záhlaví procedúry (funkcie) a je viditeľná len v tomto module. Ak má rovnaký názov ako globálna je viditeľná len lokálna.
Výhody Nevýhody Globálne Sú viditeľné v celom programe Zaberajú miesto v pamäti aj keď už nie sú potrebné Lokálne Sprehľadňujú program, takže stále vieme o akú premennú sa jedná a načo ju používame Môžu spôsobiť kolízie, ak majú rovnaký názov ako globálna premenná Zaberajú miesto v pamäti len počas behu procedúry
Z tabuľky vyplýva, že pokiaľ programátor chce mať správny a prehľadný program, mal by čo najčastejšie používať a definovať lokálne premenné.
Základné funkcie a rocedúry
Round – zaokrúhľuje....3,142....3 Int – odsekne desatinné číslo 3,142…3,0 Frac – vypíše desatinnú časť 3,142….0,142 Trunk – napíše celú časť 3,142…..3 Sqr – mocnina Sqrt – odmocnina Str – prevod čísla na reťazec Val – prevod reťazca na číslo
Premenná- pamäťové miesto, ktoré počas realizácie programu môže nadobúdať rôzne hodnoty jedného typu
Typy premenných
Typ Rozsah Počet cifier Veľkosť Shortint- 128.. 127 8 bitov Integer- 32768.. 32767 16 bitov Longint- 2147483648.. 2147483647 32 bitov Byte 0.. 255 8 bitov Word 0.. 65535 16 bitov Real 2.9e-39.. 1.7e3811-12 6 bitov Single 1.5e-45.. 3.4e387-8 4 bity Double 5.0e-324.. 1.7e30815-16 8 bitov Extended 3.4e-4932.. 1.1e493219-20 10 bitov Comp 9.2e18.. 9.2e1819-20 8 bitov BooleanTrue/False 1 bit Char1 znak ASCII 1 byte String 255 znakov ASCII 0-255
Premenné Shorint, Integer, Longint, Byte, Word sú celočíselné.
Real, Single, Double, Extendend, Comp sú reálnymi číslami (Zvláštnym typom je premenná Boolean. Má rozsah True/False. Môžeme do nej vložiť buď áno, alebo nie.
Posledné dve a to Char a String sú zase určené na uchovávanie znakov ASCII (ASCII v prílohe). Do Char uložíme iba jeden znak. Ak budeme chcieť uložiť celé meno (viac znakov) musíme použiť premennú ako typu String.
Operátory
1.NOT - negácia 2.{,},(,) 3.*./,AND - súčin 4.+,-,OR - súčet 5.>,=,
|