Stránky neboli dlhú dobu aktualizované. Môžu obsahovať nepresné alebo neaktuálne informácie.
Hľadanie
Rozšírené vyhľadávanie
TOP 7 - stránky
Napaľovacie programy - 108 657x
Free Pascal - Úvod - 66 165x
Lazarus - Kreslenie - 47 678x
Free Pascal - Začiatky - 44 985x
Free Pascal - Podmienky - 37 301x
Free Pascal - Cykly - 36 543x
Internetové prehliadače - 36 476x
Nové v diskusii
Free Pascal - Cykly - štvrtok 31.3.
Lazarus - Začíname - piatok 25.3.
Anketa - streda 2.3.
Navigácia: Programovanie > Free Pascal - Práca s číslami

Free Pascal - Práca s číslami

Dnes si povieme niečo o rozsahu číselných premenných. Ukážeme si tiež niektoré užitočné funkcie, ktoré sme doteraz nespomínali. Slúžia na prácu s celými a desatinnými číslami.

Celé čísla

Každé celé číslo má určitý rozsah hodnôt, ktoré môže nadobúdať. Tu je prehľad celočíselných typov a ich rozsahov (platí pre 32-bitový Free Pascal):

Typ Rozsah (vrátane)
Byte 0 .. 255
ShortInt -128 .. 127
Word 0 .. 65 535
SmallInt -32 768 .. 32 767
LongWord 0 .. 4 294 967 295
LongInt (integer) -4 294 967 296 .. 4 294 967 295
QWord 0 .. 264-1
Int64 -263 .. 263-1

Vždy by sme mali použiť ten najmenší z číselných typov, ktorý dokáže uchovať všetky potrebné hodnoty. Napríklad, ak chceme do premennej uložiť číslo hodené na kocke, použijeme typ Byte. Ak máme v pláne použiť premennú ako počítadlo uplynutých mikrosekúnd, pravdepodobne zvolíme typ QWord.

Desatinné čísla

Na rozdiel od celých čísel, desatinné čísla majú zvyčajne veľký rozsah, ale obmedzenú presnosť. Rozsah bežne používaného typu Real závisí od platformy. Tieto typy čísel majú „plávajúcu“ desatinnú čiarku (presnosť závisí od veľkosti čísla): Single, Double, Comp, Extended (zoradené od najmenej presných po najpresnejšie). Typ Currencypevnú desatinnú čiarku - uchová vždy štyri desatinné čísla.

Miesto desatinnej čiarky používame bodku.

Ak vypíšeme desatinné číslo bežným spôsobom, pravdepodobne sa vypíše v tzv. vedeckej notácii. Preto použijeme špeciálne formátovacie parametre, ktoré majú nasledujúci tvar:

writeln(Cislo:PocetZnakov:Desatinne);

Cislo je číslo, ktoré chceme vypísať. PocetZnakov je minimálny počet znakov, ktoré sa vypíšu. Zvyšok sa vyplní medzerami - používa sa to na zarovnávanie. Desatinne je počet desatinných číslic. Príklad

writeln('Cislo:', 1.507:10:2);

vypíše:

Cislo:      1.51

Ak potrebujeme určiť iba počet desatinných miest, ktoré sa majú vypísať, môžeme ako prostredný parameter použiť nulu.

writeln('Prem = ', prem:0:4);

Pretečenie

Čo sa stane, ak premennej priradíme hodnotu, ktorá je mimo jej rozsahu? Ukážeme si to na príklade. Toto je kód jednoduchého bezchybného programu:

program rozsah;
var
 cislo: byte;
begin
 cislo := 255;
 writeln(cislo);
end.

Teraz kód upravíme. Skúsime zvýšiť hodnotu premennej cislo o 1.

cislo := 255;
Inc(cislo); // ako cislo := cislo + 1
writeln(cislo);

Ak sme nemenili nastavenia Free Pascalu, po spustení programu dostaneme správu o chybe. Premenná cislo je typu byte a preto nemôže nadobudnúť hodnotu 256.

Skúsime však vypnúť kontrolu takýchto chýb (Range checking). Najjednoduchšie direktívou {$R-} priamo v zdrojovom kóde:

 cislo := 255;
 {$R-} // vypneme kontrolu chyb
 Inc(cislo);
 writeln(cislo);

Program prekvapivo nevypíše ani číslo 256, ani chybovú hlášku, ale vypíše:

0

Z čísla 255 sa pričítaním jednotky stala nula. Je to typický príklad javu nazývaného „pretečenie“ - hodnota akoby pretiekla z najvyššej hodnoty späť na najnižšiu. Pretečeniu by sme sa mali vyhýbať, ale sú aj prípady, keď je užitočné.

Matematické funkcie

Pri rôznych výpočtoch sa nám určite zídu bežné matematické funckie. Niektoré môžeme používať ihneď, kvôli iným je nutné pridať jednotku math do sekcie uses.

Funkcia abs vráti absolútnu hodnotu čísla zadaného ako parameter. Sqrt je odmocnina.

Max vráti väčší z dvoch zadaných číselných parametrov, Min ten menší.

Trunc vráti celočíselnú časť desatinného čísla, Frac zas desatinnú. Round zaokrúhli číslo bežným spôsobom.

Význam funkcií sin, cos, tan a cotan určite nemusím vysvetľovať. Len dodám, že parameter je vždy v radiánoch (nie v stupňoch). Funkcia Pi (bez parametra) vráti hodnotu Ludolfovho čísla.

S použitím niektorej zo spomenutých funkcií skúsme vytvoriť program, ktorý zistí vzdialenosť dvoch desatinných čísel na číselnej osi. Čísla získame prečítaním z klávesnice.

Riešenie je v súbore vzdial.pas

Hodnotenie
1 2 3 4 5 (ako v škole)
Priemerná známka: 3,7
Diskusia k tejto stránke Uz to ide ale predtým to nešlo. myslým, že som pou...
Prejsť do diskusie»
2005-2012, Matúš Sulír, matus.sulir (zav) gmail bodka com. Gen.: 0,0195 s. Valid XHTML, CSS.