Google PageRank

 

Fontosabb változók

Az előző fejezetet ott fejeztük be, hogy négy (tulajdonképpen öt) alapműveletet tárgyaltunk az egész számok halmazán. Most áttekintünk néhány változótípust, köztük a "real"-t is, ami a leggyakrabban használt valós változó.

Egészszámváltozók

típusnév helyfoglalás (bájt) maximális értelmezési tartomány
byte 1 0255
shortint 1 -128127
word 2 065535
integer 2 -3276832767
longint 4 -21474836482147483647

Valósszámváltozók

típus értékkészlet értékes számjegyek helyfoglalás(byte)
single 1,5*10-453,4*1038 78 4
real 2,9*10-391,7*1038 1112 6
double 5,0*10-3241,7*10308 1516 8
comp -2-64+1263-1 1920 8
extended 3,4*10-49321,1-104932 1920 10

A valós változóknál nem használható a div és mod művelet, csak az osztás.

Szöveges típusok

típus értelmezési tartomány helyfoglalás(byte)
char 1 karakter 1
string 1255 karakter 1256

Láthatod, hogy annak ellenére, hogy a "string" 256 bájtot használ el, maximum 255 karaktert tud tárolni. Ez azért van, mert az első bájt, amit nem ír ki, a karakterlánc hasznos (kiírandó) bájtjainak mennyiségét tartalmazza.

Logikai típus

Ilyen csak egy van, ezért semmi értelme nincs annak, hogy táblázatba foglaljam. Ez az egy a "boolean". Értéke két féle lehet: "true" és " false", azaz igaz és hamis. Összesen egy bájtot foglal el a memóriából.

Mutató (pointer) típus

Erre most nem térek ki bővebben, de fontos megemlítenem, hogy mi is ez. Amint a neve mutatja, mutat valahova. Hogy hova is? A memóriában egy címre (helyre), azaz segít a memóriában elérni adatokat.

Egy demonstráló program

Programunk bekéri a neved, köszönt, bekéri a korod, végül számol egy alsó, meg egy felső határt az életedből eltelt napokból.

program valtozok;

uses crt;

var

nev:string;

kor:byte;

{Nem árt, ha a var címszó alatt található összes változót ugyancsak bennebb kezdjük. Próbáld ki annélkül is. Ugye mennyivel átláthatóbb?}

begin

writeln('Mi a kereszteved? '); readln(nev);

writeln('Szia ',nev,'! Hány éves vagy?'); readln(kor);

write('Ha nem számoltam el, akkor te nem kevesebb, mint ',kor*255.25,' napja születtél, de még nem vagy ',(kor+1)*255.25,' napos.');

readkey;

end.

Forráskód letöltése

Program letöltése

Hupsz. A számok helyett valami egészen más értelmetlen szöveget írt ki a gép. Ez az alapértelmezett valósszám-ábrázolása a gépnek, amin tudunk változtatni. A gép azért így jelenítette meg a számot, mert tizedes számmal szoroztam be.

Mivel vannak olyan nevek, hogy a hajam égnek áll tőle, olyan hosszú, ezért nem mondom, hogy fejleszteni lehet a programot, de azt meg lehet oldani, hogy kevesebb memóriát használjon. Eddig 256 bájtot foglalt a memóriában a név. Most kevesebbet fog.

Akkor lássuk a progit!

program valtozok2;

uses crt;

var

nev:string[20];

{Ez a szögletes zárójelbe tett 20-as azt jelenti, hogy csak 20 karakternyi lehet maximum a bejegyzett név, tehát 21 bájtot foglal a memóriából.}

kor:byte;

begin

writeln('Mi a kereszteved? '); readln(nev);

writeln('Szia ',nev,'! Hány éves vagy?'); readln(kor);

write('Ha nem számoltam el, akkor te nem kevesebb, mint ',kor*255.25:8:2,' napja születtél, de még nem vagy ',(kor+1)*255.25:8:2,' napos.');

{Bebiggyesztettem még két-két számot pontosvesszőkkel elválasztva. Az első szám azt jelenti, hogy a szám összesen hány karaktert foglal el (beleértve a tizedes előtti számok mennyiségét, a tizedespontot, ami egy karakter és a tizedespont utáni számjegyeket), a második pedig, hogy hány tizedes pontossággal jelenjen meg. Ha így marad üres hely abból a 8 karakterből, akkor azok a szám elejére kerülnek.}

readkey;

end.

Forráskód letöltése

Program letöltése