640 likes | 791 Views
Knižnice Pascalu. Štandardné knižnice DOS. System - obsahuje všetky štandardné procedúry a funkcie. CRT - knižnica pre prácu s obrazovkou. DOS - knižnica pre komunikáciu s operačným systémom. Graph - jednotka pre grafické aplikácie. Overlay - podpora vytvárania prekrývaných modulov.
E N D
Štandardné knižnice DOS • System - obsahuje všetky štandardné procedúry a funkcie. • CRT - knižnica pre prácu s obrazovkou. • DOS - knižnica pre komunikáciu s operačným systémom. • Graph - jednotka pre grafické aplikácie. • Overlay - podpora vytvárania prekrývaných modulov. • Printer - jednotka pre práci s tlačiarňou. Pascal 2006
Borland Pascal for Windows • wincrt – unit CRT pre windows • windos – unit DOS pre windows • winprn– unit Printer pre windows • winprocs – procedúry a funkcie prostredia • wintypes – typy, konštanty a objekty prostredia • winapi – rozhranie pre windows • strings spracovanie reťazcov Pascal 2006
Knižnica SYSTEM • Aritmetické operácie a matematika • Operácie a pamäťou a smerníkmi • Operácia nad súbormi a adresármi • Operácie nad reťazcami a množinami • Riadiace procedúry a funkcie Pascal 2006
SYSTEM- matematika • znižovanie alebo zvyšovaniehodnoty premennej - dec, inc • matematické operácie - Abs, Exp, Ln, Pi, Sqr, Sqrt • goniometrickéfunkcie - ArcTan, Cos, Sin • funkcie zaokrúhľovania a zmeny typu - Frac, Int, Round, Trunc, Odd Pascal 2006
Dec (X[,n : longint]); Znižuje hodnotu premennej X, ktorá musí byť ordinárneho typu a n je výraz typu integer, ktorý definuje hodnotu znižovania. X sa znižuje o 1 alebo o n, pokiaľ sa n definuje. Tzn., Dec(X) zodpovedá výrazu X:=X-1 a Dec(X,n) zodpovedá výrazu X := X - n. Procedúra Dec generuje, na rozdiel od výrazu, optimalizovaný kód. Pascal 2006
Inc (var X [, n : longint]); Zvyšuje hodnotu premennej X ordinárneho typu, n je výraz typu integer. X sa zvyšuje o 1 alebo o n, ak je n uvedené. Funkciu Inc(X) je možné vyjadriť výrazom X := X + 1; Funkciu Inc(X,n) je možné ako: X := X + n; pričom funkcia generuje optimalizovaný kód a preto je vhodné ju používať v cykloch miesto výrazov X:=X+1 alebo X:=X+n. Pascal 2006
var IVar: Integer; LVar: Longint; Begin ivar:=10; Inc(IVar); Inc(LVar, 5); end. { ivar := ivar+1; lvar := lvar+5; } var IntVar: Integer; LongVar: Longint; begin Intvar := 10; LongVar := 10; Dec(IntVar); Dec(LongVar, 5); end. {intvar:=intvar-1; longVar:=longVar-5;} dec / int ukážka Pascal 2006
Abs (x : integer|real) : integer|real; Funkcia vracia absolútnu hodnotu argumentu. Výsledok vykonania funkcie je rovnakého typu ako parameter. X môže byť výraz typu integer alebo real. var r: Real; i: Integer; begin r := Abs(-2.3); { 2.3 } i := Abs(-157); { 157 } end. Pascal 2006
Exp (X : real) : real; Vracia hodnotu exponenciálnej funkcie argumentu - X je výraz typu real. Výsledok je hodnota základu prirodzeného logaritmu povýšená na X-tú. begin Writeln('e = ',Exp(1.0)); end. Pascal 2006
Ln (X : real) : real; Vracia prirodzený logaritmus argumentu. X je výraz typu real. Výsledok je prirodzený logaritmus parametru X a je typu real. var e : real; begin e := Exp(1.0); Writeln('ln(e) = ',ln(e)); end. Pascal 2006
Pi : real; Vráti hodnotu Pi(3.1415926535897932385). Výsledok funkcie je typu real. Presnosť výsledku závisí na tom, či prekladač využíva matematický koprocesor alebo nie. begin Writeln(' HodnotaPi = ',Pi); end. Pascal 2006
Sqr (X :..) : integer|word|byte|real Vracia druhú mocninu argumentu. Parameter X je ľubovolného číselného typu. Výsledok vykonania funkcie je rovnakého typu ako parameter. Matematicky je možné funkciu vyjadriť výrazom X*X. Pascal 2006
Sqrt (X : real) : real; Vracia druhú odmocninu argumentu. X je výraz typu real. Výsledkom funkcie je druhá odmocnina X. begin Writeln('5 na druhú je ', Sqr(5)); Writeln('Odmocnina z 2 je ',Sqrt(2.0)); end. Pascal 2006
Cos (X : real) : real; Vracia kosínus argumentu funkcie X je výraz typu real. Výsledok funkcie je kosínus parametra X a je typu real. Predpokladá sa, že parameter definuje uhol v radiánoch. var R: Real; begin R := Cos(Pi); end. Pascal 2006
Sin (X : real) : real; Vracia sínus argumentu. X je výraz typu real. Výsledok funkcie je sínus X a je typu real. Predpokladá sa, že X reprezentuje uhol v radiánoch. var R: Real; begin R := Sin(Pi); Writeln ('Sínus Pi je ', R); Readln; end. Pascal 2006
Round (X : real); Zaokrúhli hodnotu typu real na hodnotu typu integer. X je výraz typu real. begin Writeln( 1.4, ' zaokrúhli ako ', Round(1.4)); 1 Writeln( 1.5, ' zaokrúhli ako ', Round(1.5)); 2 Writeln(-1.4, ' zaokrúhli ako ', Round(-1.4)); -1 Writeln(-1.5, ' zaokrúhli ako ', Round(-1.5)); -2 end. Pascal 2006
Trunc (X : real) : longint; Skráti hodnotu typu real na hodnotu typu integer. X je výraz typu real. begin Writeln( 1.4, ' upraví na ', Trunc(1.4)); 1 Writeln( 1.5, ' upraví na ', Trunc(1.5)); 1 Writeln(-1.4, ' upraví na ', Trunc(-1.4)); -1 Writeln(-1.5, ' upraví na ', Trunc(-1.5)); -1 end. Pascal 2006
Odd (X : longint) : longint; Testuje, či je argument párne číslo. X je výraz typu longint. Výsledok funkcie je true, keď je X párne číslo a false, keď je X nepárne číslo. begin ifOdd(5) then Writeln('5 je nepárne') else Writeln('Iné sú nepárne '); end. Pascal 2006
SYSTEM – matematika • práca s ordinárnym typom, stanovenie poradia prvku - Hi, Lo, Swap, Ord, Pred, Succ, Low, High, • práca s náhodnými číslami - Randomize a Random, Pascal 2006
Hi (X) : byte ; Lo (X) : byte; Vráti rádovo najvyšší nižší byte argumentu - X je výraz typu integer alebo word. var B: Byte; begin B := Hi($1234); { $12 } B := Lo($1234); { $34 } end. Pascal 2006
Swap (X : integer|word) : integer|word; Vymieňa rádovo najvyšší a rádovo najnižší byte argumentu. Výsledok je rovnakého typu ako parameter, X je výraz typu integer alebo word. var X: Word; begin X := Swap($1234); { $3412 } end. Pascal 2006
Ord : longint; Vracia ordinárne číslo hodnoty ordinárneho typu. X je výraz ordinárneho typu. Výsledok funkcie je typu longint a jeho hodnota je ordinalitou parametru X. type Colors = (cervena,modra,zelena); begin Writeln('modrá je na pozícii ',Ord(modra)); {1} Writeln('Hodnota ASCII kódu pre "c" je ',Ord('c'), 'dekadicky'); end. Pascal 2006
Pred (X) : anytype; Succ (X) : anytype; Vracia predchodcu/následníka argumentu. Výsledok funkcie je rovnakého typu ako parameter X. X je výraz ordinárneho typu. type Color = (RED,BLUE,GREEN); begin Writeln('Predchodca 5 je ',Pred(5)); Writeln('Následník 10 je ',Succ(10)); ifSucc (RED) = BLUE then Writeln('V type Color je RED pred BLUE.'); end. Pascal 2006
High (X); Low (X); • High vráti vyššiu hodnotu v rozsahu argumentu. X, alebo index typeof X. X môže byť identifikátor typu alebo premenná. Výsledok je závislý od typu X • Low najnižšiu hranicu v rozsahu daného typu. Výsledný typ je X, alebo index typu of X kde X buď identifikátor typu alebo premenná. Pascal 2006
High (X); Low (X); Pascal 2006
Random [(range : real|word)] : real|word; Vracia náhodné číslo. Výsledok je rovnakého typu ako typ parametru. Pokiaľ sa nedefinuje range, je výsledok náhodné číslo typu real, ktoré patrí do intervalu 0<=X<1. Pokiaľ sa uvedie range<= 0, funkcie vracia hodnotu 0. Generátor náhodných čísel sa musí pred použitím inicializovať vyvolaním procedúry Randomize. uses Crt; begin Randomize; repeat Writeln (Random(1000)); until KeyPressed; end. Pascal 2006
Knižnica SYSTEM - pamäť a smerník • stavové informácie o objekte, adresa, prevod adresy - Addr, assigned, Ofs, Ptr, Seg, TypeOf, • funkcie pre prácu s registrami - Sprt, Sseg, Cseg, Dseg, • funkcie pre správu pamäti, pridelenie a uvoľnenie - Dispose, FreeMem, GetMem, New, Mark, Release, • zisťovanie veľkosti pamäti - MaxAvail, MemAvail Pascal 2006
Knižnica SYSTEM - súbory • otvorenie a uzavretie súboru – Assign, Append, Reset, Rewrite, Close, Truncate, • čítanie a zápis do súboru – Read, Write, ReadLn, WriteLn, BlockRead, BlockWrite • operácienad súborom - Eof, EoLn, FilePos, FileSize, • testovanie stavu - Seek, SeekEof, SeekEol Pascal 2006
Assign (F; meno : string); Priraďuje meno externého súboru premennej typu súbor F, pričom sa môže jednať o ľubovoľný typ súboru. Meno diskového súboru môže byť maximálne 8 znakov dlhé, po ňom môže nasledovať bodka a rozšírení o dĺžke tri znaky. Maximálne je možné definovať 79 znakov. var F: Text; begin Assign(F, ''); {štandardný výstup} Rewrite(F); Writeln(F, ' štandardný výstup ...'); Close(F); end. Pascal 2006
Append (var F : text); Otvára existujúci súbor pre vkladanie dát. F je premenná typu textový súbor, ktorá sa musí vopred priradiť k externému diskovému súboru procedúrou Assign. var F: Text; begin Assign(F, 'TEST.TXT'); Append(F); {pridá záznam na koniec} end; Pascal 2006
Reset (var F : file; recsize : word); Otvorí existujúci súbor. F je premenná súboru ľubovoľného typu, ktorý sa musí najskôr pridružiť k externému diskovému súboru pomocou procedúry Assign. Recsize je voliteľný výraz typu slovo, ktorý sa môže definovať len vtedy, ak sa jedná o súbor bez udaného typu. Recsize definuje dĺžku záznamu, ktorá sa používa pri prenose dát zo súboru. Pascal 2006
Rewrite (var F : file; recsize : word); Vytvorí a otvorí nový súbor na disku. F je premenná súboru ľubovoľného typu, ktorá sa musí pridružiť k externému súboru pomocou procedúry Assign. Recsize je voliteľný parameter typu slovo a definuje veľkosť jedného záznamu pri súbore bez udania typu. var F: Text; begin Assign(F, 'NEWFILE.$$$'); Rewrite(F); Writeln(F, 'Súbor sa len vytvoril ... '); Close(F); end. Pascal 2006
Close ( f ); Uzatvára otvorený diskový súbor. F je premenná súboru, ktorý bol predtým otvorený procedúrami Reset, Rewrite alebo Append. Výsledok uzavretia sa môže testovať pomocou funkcie IOResult. var F: file; begin Assign(F, '\AUTOEXEC.BAT'); {otvor súbor} Reset(F, 1); Writeln('Veľkosť = ', FileSize(F)); Close(F); {uzavri súbor} end. Pascal 2006
IOResult : word; Vracia celočíselnú hodnotu, ktorá udáva stav poslednej vstupnej/výstupnej operácie var F: fileof Byte; begin { Názov súboru s príkazového riadku} Assign(F, ParamStr(1)); {$I-} Reset(F); {$I+} if IOResult = 0 then Write('Veľkosť : ', FileSize(F)) else Write('Súbor sa nenašiel'); end. Pascal 2006
BlockRead (var F : file; var buf; count : word[; result : word]); Prečíta jeden alebo viac záznamov z externého súboru do premenné. Používa sa pre čítanie zo súboru bez udaného typu F je premenná typu súbor - file, buf je ľubovolná premenná, count je výraz typu word a result je nepovinná premenná typu slovo. Procedúra prečíta count alebo menej záznamov zo súboru F do pamäti a uloží ich od prvého byte premenné buf. Skutočný počet prečítaných záznamov (menej alebo rovno než count) sa vracia vo voliteľnom parametre result. Pascal 2006
program CopyFile; var FromF, ToF: file; NumR, NumW: Word; Buf: array[1..2048] of Char; begin Assign(FromF, ParamStr(1)); { Otvorí vstupný súbor } Reset(FromF, 1); { veľkosť = 1 } Assign(ToF, ParamStr(2)); { Otvorí výstupný súbor } Rewrite(ToF, 1); { veľkosť = 1 } Writeln('Kopírujem ', FileSize(FromF), ' bytov...'); repeat BlockRead(FromF, Buf, SizeOf(Buf), NumR); BlockWrite(ToF, Buf, NumR, NumW); until (NumR = 0) or (NumW <> NumR); Close(FromF); Close(ToF); end. Pascal 2006
Eof (F) : boolean; Vracia stav konce súboru - F je premenná súboru ľubovoľného typu. Funkcia vracia logickú hodnotu true, keď je smerník v súbore za poslednou položkou súboru alebo keď súbor neobsahuje žiadne položky. Vo všetkých ostatých prípadoch vracia funkcie hodnotu false. Pascal 2006
Príklad funkcie eof() var F: Text; Ch: Char; begin Assign(F, ParamStr(1)); Reset(F); whilenot Eof(F)dobegin Read(F, Ch); Write(Ch); { Výpis súboru } end; end. Pascal 2006
Knižnica SYSTEM - adresáre • ostatné operácie nad súborom – Flush, SetTextBuf, Erase, Rename • práca s adresármi - ChDir, GetDir,MkDir, RmDir Pascal 2006
ChDir (St : string); Mení aktuálny adresár na disku. St je výraz typu reťazec. Súčasný adresár sa zmení na adresár definovaný parametrom St procedúry. begin {$I-} ChDir(ParamStr(1)); {$I+} if IOResult <> 0 then write('adresár sa nenašiel ...'); end. Pascal 2006
GetDir (D : byte; var S : string); Vracia aktuálny adresár definovanej diskové jednotky. D je výraz typu byte, S je premenná typu reťazec. Meno aktuálneho adresára definované výrazom D sa vracia v premennej S. Disketová jednotka A: sa označuje ako 0, B ako 1, C ako 2 atd. var s : String; begin GetDir(0,s); { na aktuálnom disku } Writeln('Aktuálny adresár je ',s); end. Pascal 2006
Knižnica SYSTEM - reťazce • funkcie pre spracovanie reťazcov - Concat, Copy, Length, Pos,Delete, Insert, Str, Val, SizoeOf , Move, UpCase, FillChar • množinové operácie – Exclude aInclude • spracovanie parametru z príkazového riadku - ParamCount a ParamStr, Pascal 2006
Copy (S : string; index : integer; count : integer) : string; Vracia podreťazec reťazca. S je výraz typu reťazec. Index a count sú výrazy typu integer. Funkcia copy vracia count znakov začínajúcich znakom v S, ktorého poradie je dané výrazom index. var S: String; begin S := 'ABCDEF'; S := Copy(S, 2, 3); { 'BCD' } end. Pascal 2006
Lenght (S : string) : integer; Vracia skutočnúdĺžku reťazca - S je výraz typu reťazec. Výsledkom funkcie je číslo typu integer, ktoré vyjadruje počet znakov reťazca S. var S: String; begin Readln (S); Writeln('"', S, '"'); Writeln('dĺžka je ', Length(S)); end. Pascal 2006
Pos (substr, S : string) : byte; Vyhľadá podreťazec v reťazci. Substr a S sú výrazy typu reťazec. Pos hľadá výraz substr vo vnútri reťazca S a vracia celočíselnú hodnotu, ktorá je indexom prvého znaku substr vo vnútri S. Pokiaľ sa substr v S nenájde, vráti funkcia Pos nulu. var S: String; begin S := ' 123.5'; { konverzia medzier na nulu } while Pos(' ', S) > 0 do S[Pos(' ', S)] := '0'; end. Pascal 2006
Delete (var S : string; index : integer;count : integer); Delete odstráni count znakov z reťazca S, pričom odstránenie začína na pozícii, ktorou udáva výraz index. Keď je index väčší než dĺžka reťazca, neodstránia sa žiadne znaky. Keď count špecifikuje viac znakov, než zvyšok reťazca, odstránia sa znaky do konca reťazca. var s: string; begin s := 'Honest Abe Lincoln'; Delete(s,8,4); Writeln(s); { 'Honest Lincoln' } end. Pascal 2006
Insert (Source : string; var S : string; Index : integer); Procedúra insert vkladá reťazec source do reťazca S na pozíciu definovanú výrazom index. Keď je výsledný reťazec dlhší než 255 znakov, nadbytočné znaky sa z reťazca vypustia. var S: String; begin S := 'Honest Lincoln'; Insert('Abe ', S, 8); { 'Honest Abe Lincoln' } end. Pascal 2006
Str (X [ : width [ : decimals]]; var S : string); Prevedie číselnú hodnotu na jej reťazcové zobrazenie. • X je výraz typu integer alebo real. • width a decimals sú výrazy typu integer. • S je premenná typu reťazec. Pri X je možné použiť formátovanie, napr.: • Real x:12:2 – celkový počet a desatinné • Integer x:2 – len celkový počet Pascal 2006
Ukážka str Program prevod; function IntToStr(I: Longint): String; var S: string[11]; begin Str(I, S); IntToStr := S; end; begin Writeln(IntToStr(-5322)); end. Pascal 2006