Egész adattípusok. Pascal

Az adat egy általános fogalom mindenre, amivel operál. Számológép. Bármely adattípus meghatározza azt az értékkészletet, amelyet egy adott változó felvehet, és a rájuk alkalmazható műveleteket. A programban talált minden változót csak egy típushoz kell társítani.

A Pascalban kétféle egyszerű típus létezik: sorszámú és valós típus. Az ordinális típust vagy a programozó határozza meg (felsorolás típusa vagy tartomány típusa), vagy a három előre meghatározott sorszámtípus egyikének neve jelöli: Boolean, Integer vagy Char. A valós típust a Real előíró típusnévvel jelöljük.

Egy felsorolt ​​típust a benne található sokféle érték jellemzi, amelyek között lineáris sorrend van meghatározva. Magukat az értékeket nevek jelölik ennek a típusnak a definíciójában.

A tartomány (korlátozott) típusa a korábban leírt sorszámtípushoz kapcsolódó minimális és maximális értékek használatával van megadva. Így jön létre egy új sorszámtípus.

Ordinális adattípusok

Az ordinális adattípus véges és rendezett értékkészletet ír le. Ezek az értékek a 0,1,2,... sorszámok sorozatára vannak leképezve; kivételt csak az önmagukra leképező ordinális egész számok tesznek. Minden sorszámtípusnak van minimális és maximális értéke. A minimum kivételével minden értékhez van egy előző érték, és minden értékhez a maximum kivételével van egy következő érték.

Az előírt succ, pred, ord függvények bármelyik sorszámú argumentumot elfogadják:
succ(X) - az X után következő sorszámot adja meg
pred(X) - az X előtti sorszámot adja meg
ord(X) - megadja X sorszámát

Minden ordinális típushoz vannak = , = és > relációs operátorok, feltéve, hogy mindkét operandus azonos típusú.

Logikai típus

A logikai érték a két igazságérték egyike, amelyeket az előre meghatározott false és true nevek jelölnek.

A következő logikai műveletek adnak logikai érték logikai operandusokra alkalmazva:
és - logikai ÉS
vagy - logikai VAGY
nem - logikus NEM

Ezenkívül bármely relációs művelet (= , = , > , in) logikai eredményt ad.

Ezenkívül a logikai típus úgy van meghatározva, hogy hamis

Vannak előre meghatározott logikai függvények is (azaz olyan függvények, amelyek logikai eredményt adnak):
páratlan(F) - igaz, ha az egész szám F-páratlan és az eredmény hamis, ha F-páros
eoln(F) - sorvégi ellenőrzés
eof(F) - fájlvégi ellenőrzés

Egész típusú

Az egész típus számos egész számot tartalmaz.

Egész számú operandusokkal való munka során a következők aritmetikai műveletek egész értékeket adjunk meg:
* - szorzás
div - osztásból származó egész rész
mod - az osztás maradéka
+ - kiegészítés
- - kivonás

A Pascalban van egy előre definiált MaxInt konstans is, amely egy Integer típusú egész szám maximális értékét tartalmazza, és egyenlő 32767-tel.

A teljes eredményt négy fontos előírt funkció is eléri:
abs(I) - az I egész érték abszolút értéke
sgr(I) - az I egész értéke négyzetben, ha I trunc(R) - megadja az R valós szám egész részét
round(R) – kerekített egész számot ad vissza. Ebben az esetben: R>0 esetén trunc(R+0.5) , R esetén pedig

Ha I egy egész érték, akkor:
succ(I) - megadja a következő egész értéket (I+1)
pred(I) - az előző egész értéket adja meg (I-1)

Karaktertípus (Char)

A char értékek egy véges és rendezett karakterkészlet elemei. Az ilyen típusú értékeket egyetlen karakter jelöli, egyetlen idézőjelbe (aposztróf) zárva. Ha magára az aposztrófra van szükség, kétszer írják le.
Példák: "*" "G" "3" """" "X"

    A Char típusra a következő minimális feltételezések érvényesek:
  1. A 0-tól 9-ig terjedő decimális számjegyek numerikus értékük szerint vannak rendezve, és követik egymást (például succ("5") = "6").
  2. Lehetnek nagybetűk "A"-tól "Z"-ig; ha igen, akkor betűrendben vannak, de nem feltétlenül követik egymást (pl. "A"
  3. Lehetnek kisbetűk "a"-tól "z"-ig; ha igen, akkor betűrendben vannak, de nem feltétlenül követik egymást (pl. "a"

Egy adott karakterkészlet sorozatszámra és vissza leképezéséhez két előre meghatározott funkció van:
ord(C) - megadja a C karakter sorszámát az említett rendezett karakterkészletben
chr(I) - az I. sorszámú karaktert adja meg

Char típusú argumentumokhoz az előre meghatározott pred és succ függvények a következők szerint definiálhatók:
pred(C) = chr(ord(C)-I)
succ(C) = chr(ord(C)+I)

Megjegyzés. Az előző vagy a következő szimbólum a megadott szimbólumkészlettől függ, így mindkét kapcsolat csak akkor érvényes, ha az előző vagy a következő szimbólum létezik.

Igazi típus

A valós típusú értékek a valós számok implementáció által meghatározott részhalmazának elemei.

Valós mennyiségekkel végzett összes művelet hozzávetőleges, pontosságukat az a megvalósítás (gép) határozza meg, amellyel éppen foglalkozik. A valódi típus arra utal egyszerű típus, ez nem egy sorszámú típus. A valós értékeknek nincs sorszáma, és egyikhez sem tartozik megelőző vagy követő érték.

Ha legalább az egyik operandus valós típusú (a másik lehet egész szám), akkor a következő műveletek valós eredményt adnak:
* - szorzás
/ - osztás (mindkét operandus lehet egész szám, de az eredmény mindig valós)
+ - kiegészítés
- - kivonás

Vannak előírt függvények, amelyek valódi eredményt adnak valós argumentum mellett:
abs(R) – R abszolút értéke
sqr(R) - R négyzet, ha az eredmény a valós számok tartományán belül van

És ezek az előírt függvények valós eredményt adnak egész vagy valós argumentummal:
sin(X) - X szinuszát adja; X radiánban van kifejezve
cos(X) - megadja X koszinuszát; X radiánban van kifejezve
arctan(X) - az X arctangensét adja meg radiánban kifejezve
ln(X) - megadja a természetes (e bázis) logaritmus értékét X-re, X>0
exp(X) - megadja az exponenciális függvény értékét (azaz X hatványához)
sqrt(X) - X négyzetgyökének értékét adja meg, X>=0

Figyelem. A pred, succ függvények nem használhatók valós argumentumokhoz Nem használhatunk valós típusú értékeket tömbök indexelésekor, paraméteres hurokban történő vezérlésre, halmazok alaptípusának meghatározására, variáns operátorban való indexelésre.

Leggyakrabban a matematikában numerikus típusok- Ezt egész számok, amelyek végtelen számú diszkrét értéket képviselnek, és érvényes számok, amelyek az értékek korlátlan kontinuumát képviselik.

Pascal numerikus adattípusainak leírása (egész számok)

Ugyanazon a nyelven belül az egész számok halmazának különböző részhalmazai valósíthatók meg. Az egész számtípusok lehetséges értékeinek tartománya a belső reprezentációjuktól függ, amely lehet egy, két vagy négy bájt. Így a Pascal 7.0-ban a következő egész szám numerikus adattípusok használatosak:

Egészben numerikus adattípusok A Pascal a következő műveleteket tudja végrehajtani:

  • Számtan:
    összeadás(+);
    kivonás(-);
    szorzás(*);
    részleg maradéka (mod);
    hatványozás;
    egységes plusz (+);
    egységes mínusz (-).
  • Kapcsolati műveletek:
    egyenlőségi viszony (=);
    egyenlőtlenségi összefüggés (<>);
    az arány kisebb (<);
    arány nagyobb, mint (>);
    reláció nem kisebb, mint (>=);
    hozzáállás nincs többé (<=).

Amikor fellép egész szám numerikus adattípusok az eredmény típusa az operandusok típusának felel meg, ha pedig az operandusok különböző egész típusúak, akkor a maximális teljesítményű operandus típusának (maximális értéktartomány). Az eredmény esetleges túlcsordulása semmilyen módon nem szabályozott (fontos!) , ami hibákhoz vezethet.

Különös figyelmet kell fordítani az egész szám numerikus adattípusok osztási műveletére. A Pascal két osztási műveletet tesz lehetővé, amelyeket ennek megfelelően jelölünk "/" És div. Tudnod kell, hogy a "/" osztás eredménye nem egész szám, hanem valós szám(ez akkor is igaz, ha 8-at elosztunk 2-vel, azaz 8/2=4,0). Az osztás div egész osztás, azaz az eredmény típusa egész szám.

Pascal numerikus adattípusainak leírása (reals)

A valós numerikus adattípus a valós számok egy olyan részhalmazára vonatkozik, amely fix számú számjegyű, úgynevezett lebegőpontos formátumban ábrázolható. A lebegőpontos használatával minden numerikus adattípus két számjegycsoportként jelenik meg. Az első számcsoportot mantisszának, a másodikat kitevőnek nevezzük. Általában egy numerikus adattípus lebegőpontos formában a következőképpen ábrázolható: X= (+|-)MP (+ | -) r, ahol M a szám mantisszája; r – számsorrend (r – egész); P – a számrendszer alapja. Például a tizedesalap esetében a 2E-1 ábrázolás (itt E a tizedes számrendszer alapja) így fog kinézni: 2*10 -1 =0,2, az 1.234E5 ábrázolás pedig a következőnek felel meg: 1.234*10 5 =123400.0.

A Pascal a következő típusú valós számokat használja, amelyek tetszőleges számot csak bizonyos véges pontossággal határoznak meg, a valós szám belső formátumától függően:

Amikor egy real típusú valós változót írunk le, egy 4 bájtos változó jön létre a számítógép memóriájában. Ebben az esetben 3 bájt a mantisszának és egy bájt a rendelésnek.

Valós numerikus adattípusokon a következő műveletek hajthatók végre:

  • Számtan:
    összeadás (+);
    kivonás(-);
    szorzás(*);
    osztály(/);
    hatványozás;
    egységes plusz (+);
    egységes mínusz (-).
  • Kapcsolati műveletek:
    egyenlőtlenségi összefüggés (<>);
    az arány kisebb (<);
    arány nagyobb, mint (>);
    reláció nem kisebb, mint (>=);
    hozzáállás nincs többé (<=).

Mint látható, a Pascalt a valós típusok gazdag skálája jellemzi, de a numerikus adattípusokhoz való hozzáférés egyetlen, kettősÉs kiterjedt csak speciális fordítási módokban lehetséges. Ezeket a numerikus adattípusokat a lebegőpontos aritmetika hardveres támogatására tervezték, és a hatékony használatukhoz a számítógépnek tartalmaznia kell egy matematikai társprocesszort.

A numerikus adattípus különleges helyet foglal el a Pascalban. comp, amelyet valós számként kezelünk exponenciális és tört részek nélkül. Tulajdonképpen, comp egy „nagy” előjelű egész szám, amely megtartja a 19...20 jelentős tizedesjegyet. Ugyanakkor a numerikus adattípus comp kifejezésekben teljesen kompatibilis a többi valós típussal: minden valós művelet definiálva van rajta, használható matematikai függvények argumentumaként stb.

Pascal numerikus adattípusainak konvertálásáról

Pascalban a numerikus adattípusok implicit (automatikus) átalakítása szinte lehetetlen. Kivétel csak a típusra vonatkozik egész szám, amely megengedett olyan kifejezésekben, mint igazi. Például, ha a változók így vannak deklarálva:

Var X: egész szám; Y: valódi;

Ez az operátor

szintaktikailag helyes lesz, bár a hozzárendelési jeltől jobbra egy egész szám, balra pedig egy valós változó található, a fordító automatikusan konvertálja a numerikus adattípusokat. A fordított konverzió automatikusan beírásra kerül igazi típusban egész szám Pascalban lehetetlen. Emlékezzünk arra, hogy hány bájt van lefoglalva a típusváltozókhoz egész számÉs igazi: egész számú adattípushoz egész szám 2 bájt memória van lefoglalva, és valós esetén 6 bájt. Átalakít igazi V egész szám Két beépített funkció van: kerek(x) a valós x-et a legközelebbi egész számra kerekíti, trunc(x) levág egy valós számot a tört rész elvetésével.

Ahhoz, hogy egy gép bármilyen bemeneti adatot feldolgozhasson, „meg kell értenie”, hogy azok a változók milyen típusba tartoznak, amelyekben az értékeket tárolják. Az adatformátumra vonatkozó információk hiányában a számítógép nem fogja tudni megállapítani, hogy ez vagy az a művelet megengedett-e egy adott esetben: például intuitív módon egyértelmű, hogy lehetetlen betűt hatalomra emelni vagy elvenni. egy karakterlánc integrálja. Így a felhasználónak meg kell határoznia, hogy az egyes változókkal milyen műveletek hajthatók végre.

Más magas szintű programozási nyelvekhez hasonlóan a Pascal változótípusai is különféle típusú feladatok végrehajtására vannak optimalizálva, eltérő értéktartományúak és bájtban kifejezett hosszuk van.

Változótípusok felosztása

A Pascal változótípusai egyszerűek és strukturáltak. Az egyszerű típusok közé tartoznak a valós és az ordinális típusok. A strukturált tömbök, rekordok, készletek és fájlok közé tartoznak. Külön-külön megkülönböztetünk mutatókat, objektumokat és eljárási típusokat.

Nézzük az ordinális és a valós típusokat. Az ordinális típusok közé tartozik az 5 egész típus, a felsorolás típusa és a tartomány típusa.

Rendes típusok

5 egész típus létezik, amelyek bájthosszban és értéktartományban különböznek egymástól.

A Byte és a ShortInt hossza 1 bájt. A különbség közöttük az, hogy a Byte csak nem negatív értékeket tárol, míg a ShortInt lehetővé teszi a negatív értékek tárolását (-128-tól +127-ig). A Word és Integer típusok hasonló módon viszonyulnak egymáshoz, azzal a különbséggel, hogy méretük 2 bájt.

Végül a LongInt lehetővé teszi negatív és pozitív értékek tárolását is 4 bájt használatával - a numerikus dimenzió 16. hatványában a nulla mindkét oldalán. A Pascal különböző típusú változói hozzájárulnak a felhasználói feladatok hatékony megoldásához, mivel minden konkrét esetben kis és nagy értéktartományra is szükség lehet, és korlátozások is lehetnek a lefoglalt memória mennyiségére vonatkozóan.

Fontos megérteni, hogy a nulla annyi memóriaterületet foglal el, mint bármely más szám. Így egy értéktartomány kialakításakor a minimális negatív szám abszolút értékben eggyel nagyobb lesz, mint a pozitív: például -128 és +127 között.

A hozzá tartozó változók IGAZ (igaz) vagy FALSE (hamis) értéket vehetnek fel, és 1 bájt memóriát igényelnek.

A CHAR típus lehetővé teszi a számítógép memóriájában található számos karakter bármelyikének tárolását. Ugyanakkor a Pascal szimbolikus változóiban ténylegesen csak a jel kódja van eltárolva, aminek megfelelően a grafikus formája megjelenik.

Valódi típusok

A Pascal változótípusai között több olyan numerikus is található, amelyek képesek tört részt írni. Az Single, Real, Double és Extended típusok közötti különbségek az elfogadott értékek tartományától, a tizedesvessző utáni jelentős számjegyek számától és a bájtokban megadott mérettől függenek.

A fent bemutatott sorrendnek megfelelően minden típusú változó 4, 6, 8 vagy 10 bájtot foglal el.

Tömbök

A strukturált adattípusok összetettek, és lehetővé teszik számos egyszerű érték kombinálását egyetlen változón belül. Elsődleges példa egy tömb, amely a következőképpen definiálható:

String=karakter tömb;

Így kaptunk egy String nevű típust, amivel akár 100 karakter hosszú változókat is definiálhatunk. Az utolsó sor közvetlenül egy String típusú egydimenziós Y tömböt ad meg. A Pascal változóit úgy írjuk le, hogy az azonosítót a bal oldalon, a változó értékét pedig a jobb oldalon, az egyenlőségjel után helyezzük el.

A beírt indexek tartománya lehetővé teszi a hozzáférést a tömb minden egyes eleméhez:

Ebben az esetben a korábban létrehozott Y tömb második elemét olvassuk be.

A Pascal karakterlánc-változói az egydimenziós tömb speciális esetei is, mivel a string karakterek sorozata, azaz char típusú elem.

Hozzászólások

Egy rekord több mezőből áll, amelyek bármilyen típusú adattal vannak kitöltve, kivéve a fájlt. Általában az ilyen típusú változó hasonlít egy adatbáziselemhez. Például megadhatja egy személy nevét és telefonszámát:

type NTel = Record

A bal oldali első sor a típus nevét, a jobb oldalon pedig a szolgáltatás szórekordját jelzi. A második sor egy mezőt tartalmaz egy névvel, a harmadik - egy telefonszámot. A „vége” szó azt jelenti, hogy megadtuk az összes kívánt mezőt, és ezzel befejeződik a rekord létrehozásának folyamata.

Végül az utolsó sorban definiáljuk az One változót, amely NTel típusú.

Hozzáférhet mind a rekord egészéhez, mind az egyes összetevőihez, például: one.NAME (azaz változó_neve. rekord_mező_neve).

Fájlok

A Pascal lehetővé teszi, hogy szöveges, gépelt és nem gépelt fájlokkal dolgozzon, amelyek azonos típusú összetevők strukturált sorozata.

Fájlból való olvasáskor vagy fájlba íráskor a teljes cím vagy annak rövid formája használható:

„C:\Mappa\Fájl2.txt”

A rövid űrlapot akkor használjuk, ha a fájl abba a mappába kerül, ahol az azt elérő program tárolja. A teljes űrlap bármilyen körülmények között használható.

A következőképpen állíthat be egy fájltípus változót:

f1: egész szám fájlja;

A fájlokkal való munkavégzéshez különféle funkciókat és eljárásokat használnak, amelyek egy változót társítanak egy lemezen lévő fájlhoz, megnyitják olvasásra, írásra és felülírásra, majd bezárják, ha elkészült, lehetővé téve új név létrehozását és a fájl törlését a számítógépről.

Végül

A különböző típusú változók Pascalban való használatának képessége nélkül a felhasználó még a legegyszerűbb feladatot sem tudja végrehajtani. Ahhoz, hogy a program hibamentesen végrehajthassa az algoritmust, mind a függvényszavakat, mind a szintaxist meg kell tanulni, hiszen a gép csak akkor tudja „megérteni” a parancsokat, ha azokat az egyetlen helyesen írják.

Az ordinális típusok közé tartoznak (lásd a 4.1. ábrát) az egész, logikai, karakteres, felsorolt ​​és tartomány típusokat. Bármelyikre alkalmazható az ORD(X) függvény, amely az X kifejezés értékének sorszámát adja vissza. Egész típusú típusoknál az ORD(X) függvény magának X értékét adja vissza, azaz. ORD(X) = X bármely héjtípushoz tartozó X esetén. Az ORD(X) logikai, karakteres és felsorolási típusokra történő alkalmazása pozitív egész számot eredményez a 0 és 1 (logikai), 0 és 155 (karakter), 0 és 65535 (felsorolás) tartományban. Egy tartománytípus megtartja az alapul szolgáló ordinális típus összes tulajdonságát, így az ORD(X) függvény rá történő alkalmazásának eredménye az adott típus tulajdonságaitól függ.

Függvényeket is alkalmazhat sorszámú típusokra:

PRED (X) - a sorszámtípus előző értékét adja vissza (az ORD(X) - 1 sorszámnak megfelelő értéket), azaz.

ORD(PRED(X)) = ORD(X) - 1;

SUCC (X) - a következő sorszámot adja vissza, amely megfelel az ORD(X) +1 sorszámnak, azaz.

ORD(SUCC(X)) = ORD(X) + 1.

Például, ha egy program definiál egy változót

akkor a PRED(C) függvény a „4” értéket, a SUCC(C) függvény pedig a „6” értéket adja vissza.

Ha bármelyik sorszámtípust balról jobbra növekvő, a számtengely egy bizonyos szakaszát elfoglaló, rendezett értékhalmazként képzeljük el, akkor a PRED(X) függvény nincs definiálva a balra, és a SUCC(X) a jobbra. vége ennek a szegmensnek.

Egész típusok. Az egész típusok lehetséges értékeinek tartománya a belső ábrázolásuktól függ, amely lehet egy, két vagy négy bájt. táblázatban A 4.1 mutatja az egész típusok nevét, a belső ábrázolásuk hosszát bájtban és a lehetséges értékek tartományát.

4.1. táblázat

Az egész paraméterű eljárások és függvények használatakor a típusok „beágyazódásától” kell vezérelni, pl. ahol a WORD használható, ott a BYTE használható (de nem fordítva), a LONGINT „beleérti” az INTEGER-t, ami viszont tartalmazza a SHORTINT-et.

Az egész típusokra alkalmazható eljárások és függvények listáját a 4.2. táblázat tartalmazza. Levelek b, s, w, i, l a BYTE, SHORTINT, WORD, INTEGER és LONGINT típusú kifejezéseket rendre kijelöljük, x ezen típusok bármelyikének kifejezése; leveleket vb, vs, vw, vi, vl, vx a megfelelő típusú változókat jelöli. Egy opcionális paraméter szögletes zárójelben van feltüntetve.

4.2. táblázat

Teljes típusokra alkalmazható szabványos eljárások és funkciók
Fellebbezés Az eredmény típusa Akció
abs(x) x Az x modult adja vissza
chr(b) Char Egy karaktert a kódja alapján ad vissza
dec(vx[, i]) - A vx értékét i-vel, i hiányában pedig 1-gyel csökkenti
inc(vx[, i]) - A vx értékét i-vel, i hiányában pedig 1-gyel növeli
Szia(i) Byte Az argumentum magas bájtját adja vissza
szia (w) Azonos Azonos
Lo(i) " Az argumentum alacsony bájtját adja vissza
Alacsony) " Azonos
páratlan (l) Boolean Igaz értéket ad vissza, ha az argumentum páratlan szám
Véletlenszerű (w) Ugyanaz, mint a paraméter Egy pszeudovéletlen számot ad eredményül, amely egyenletesen eloszlik a 0...(w-l) tartományban
sgr(x) x Az argumentum négyzetét adja vissza
csere(i) Egész szám Egy szóban bájtokat cserél
csere(w) Szó

Egész számokkal végzett művelet esetén az eredmény típusa az operandusok típusának felel meg, ha pedig az operandusok különböző egész típusúak, akkor annak az operandusnak a típusa, amelyiknek a maximális teljesítménye (maximális értéktartománya) van. Az eredmény esetleges túlcsordulását semmilyen módon nem szabályozzák, ami félreértésekhez vezethet, például:

a:= 32767; (Maximális INTEGER érték)

x:= a + 2; (Túlcsordulás a kifejezés kiértékelése közben !}

y:= LongInt(a)+2; (Nincs túlcsordulás a változó erősebb típusba adása után)

WriteLn(x:10:0, y:10:0)

A program futtatásának eredményeként azt kapjuk

Logikai típus. A logikai értékek lehetnek az előre deklarált FALSE vagy TRUE állandók. A szabályok vonatkoznak rájuk:

Hamis< True;

succ(False)= Igaz;

pred(Igaz) = Hamis.

Mivel a logikai típus sorszámú, használható megszámlálható típusú operátorban, például:

for 1:= False to True do ....

Karakter típus. Egy karaktertípus értéke az összes PC-karakter halmaza. Minden karakterhez egy egész szám van hozzárendelve a 0...255 tartományban. Ez a szám a szimbólum belső reprezentációjának kódjaként szolgál, amelyet az ORD függvény adja vissza.

ASCII kódot használnak a kódoláshoz ( Amerikai szabványos információcsere kód- Amerikai szabványos információcsere kód). Ez egy 7 bites kód, pl. csak 128 karaktert tud kódolni a 0 és 127 közötti tartományban. Ugyanakkor a Turbo Pascalban egy karakter tárolására kijelölt 8 bites bájtban kétszer annyi karakter kódolható a 0 és 255 közötti tartományban. A 0...127 kódú PC karakterek első fele az ASCII szabványnak felel meg (4.3. táblázat). A 128...255 kódú karakterek második felét nem korlátozza a szabvány merev kerete, és különböző típusú PC-ken változtatható (a 2. melléklet néhány gyakori kódolási lehetőséget mutat be ezekre a karakterekre).

4.3. táblázat

Karakterkódolás az ASCII szabvány szerint
Kód Szimbólum Kód Szimbólum Kód Szimbólum Kód Szimbólum
NUL B.L. ® "
ZON ! A a
STX " BAN BEN b
ETX # VAL VEL Val vel
EOT $ D d
ENQ % E e
KÉRDEZ & F f
BEL " G g
B.S. ( H h
NT ) én én
LF * J j
VT + k k
FF , L én
CR - M m
ÍGY . N n
S.I. / RÓL RŐL
DEL p P
DC1 K q
DC2 R r
DC3 S s
DC4 T t
N.A.K. U u
SYN V V
ETB w w
TUD x x
E.M. U U
ALATTI : z z
KILÉPÉS / [ {
FS < \ l
G.S. = ] }
R.S. > ^ ~
MINKET ? - n

A 0...31 kódú karakterek szervizkódokra vonatkoznak. Ha ezeket a kódokat használja a program karakterszövegében, akkor ezek szóköznek minősülnek. Ha I/O műveletekben használjuk, a következő független jelentésük lehet:

Szimbólum Kód Jelentése
BEL Hívás; Ennek a szimbólumnak a kijelzését hangjelzés kíséri
NT Vízszintes táblázatozás; amikor megjelenik a képernyőn, a kurzort olyan pozícióba mozgatja, amely 8 plusz 1 többszöröse (9, 17, 25 stb.)
LF Vonalfordítás; a képernyőn való megjelenítéskor az összes következő karakter ugyanabból a pozícióból indul ki, de a következő sorban
VT Függőleges fül; amikor megjelenik a képernyőn, egy speciális karakter helyettesíti
FF Oldal futtatása; a nyomtatóra történő kiadáskor egy lapot képez a képernyőre történő kiadáskor, egy speciális karakterrel helyettesíti
CR kocsi vissza; Az Enter billentyű lenyomásával lehet beírni (a READ vagy READLN használatával az „Enter” parancsot jelenti, és nem kerül a beviteli pufferbe; kimenetnél a „Kimenet folytatása az aktuális sor elejétől” parancsot jelenti)
ALATTI fájl vége; a billentyűzetről a Ctrl-Z billentyűkombinációval léphet be; kimenetkor speciális jelre cseréljük
SSC Munka vége; a billentyűzetről az ESC billentyű megnyomásával beírva; kimenetkor speciális jelre cseréljük

A relációs műveletek, valamint a beépített függvények a CHAR típusra vonatkoznak: СНR(В) - a CHAR típusú függvény; a BYTE típusú B kifejezést karakterré alakítja, és visszaadja az értékével;

UPCASE(CH) - CHAR típusú funkció; a nagybetűt adja vissza, ha a CH kisbetűs latin betű, egyébként magát a CH karaktert adja vissza, például:

cl:= UpCase("s") ;

c2:= UpCase ("Ф") ;

WriteLn(cl," ",c2)

Mivel az UPCASE függvény nem dolgozza fel a cirill betűt, ennek futtatásának eredménye

programok megjelennek a képernyőn

Enum típus. A felsorolt ​​típust az általa fogadható értékek felsorolása határozza meg. Minden értéket valamilyen azonosító nevez el, és egy zárójelekkel körülvett listában található, például:

színek =(piros, fehér, kék);

A felsorolt ​​típusok használata vizuálisabbá teszi a programokat. Ha például a program az év hónapjaihoz tartozó adatokat használ, akkor a program következő részlete:

TípusHónap=(janu.,febr.,márc.,ápr.,május.,jún.,júl.,aug.,szept.,okt.,nov.,dec.);

hónap: TípusHónap;

if month = Aug then WriteLn("Jó lenne a tengerhez menni!");

Látod, nagyon világos lenne. Jaj! A Turbo Pascalban nem lehet cirill betűt használni az azonosítókban, ezért kénytelenek vagyunk így írni:

TypeHónap=(jan,febr.márc,május,jún.júl,aug,szept.okt.nov.dec);

hónap: TípusHónap;

if month = aug then WriteLn("Jó lenne a tengerhez menni!");

A felsorolt ​​típusok értékei és ezeknek az értékeknek a sorszámai közötti megfelelést a felsorolási sorrend határozza meg: a lista első értéke a 0 sorszámot kapja, a második - 1 stb. Egy felsorolt ​​típus maximális kapacitása 65536 érték, tehát valójában egy felsorolt ​​típus a teljes WORD típus egy bizonyos részhalmazát határozza meg, és egy egész szám konstansok csoportjának kompakt deklarációjának tekinthető 0, 1 stb. értékekkel.

A felsorolt ​​típusok használata növeli a programok megbízhatóságát, mivel lehetővé teszi a megfelelő változók által kapott értékek szabályozását. Adjuk meg például a következő felsorolt ​​típusokat:

színek = (fekete, piros, fehér);

ordenal= (egy, kettő, három);

napok = (hétfő, kedd, szerda);

A hatalom és a belső reprezentáció tekintetében mindhárom típus egyenértékű:

ord(fekete)=0, ..., ord(fehér)=2,

ord(egy)=0, ...ord(három)=2,

ord(hétfő)=0, ...ord(szerda)=2.

Ha azonban a változók definiáltak

col:colors; szám:sorrend;

akkor az operátorok engedélyezettek

szám:= succ(kettő);

nap:= pred(kedd);

de elfogadhatatlan

Amint már említettük, egy-egy megfeleltetés van egy felsorolt ​​típus értékei és az ORD(X) függvény által meghatározott egész számok halmaza között. A Turbo Pascal lehetővé teszi a fordított konverziót is: bármely WORD típusú kifejezés enum típusú értékké konvertálható, amennyiben az egész kifejezés értéke nem haladja meg a felsorolási típus power1™ értékét. Ez az átalakítás egy automatikusan deklarált függvény használatával történik a felsorolt ​​típus nevével (lásd a 4.4 fejezetet). Például a fent tárgyalt típusdeklarációhoz a következő hozzárendelések egyenértékűek:

col:= színek(0);

Természetesen megbízás

elfogadhatatlan lesz.

Bármilyen felsorolt ​​típusú változó deklarálható anélkül, hogy előzetesen deklarálnánk a típust, például:

col: (fekete, fehér, zöld);

Típus-tartomány. A tartománytípus az alaptípusának egy részhalmaza, amely a tartománytípus kivételével bármilyen sorszámú lehet. A tartománytípust az alaptípuson belüli értékeinek határai határozzák meg:

<мин.знач.>..<макс.знач.>

Itt<мин.знач. >- a típustartomány minimális értéke;

<макс.знач.>- maximális értéke.

Például:

számjegy = "0".."9";

A tartomány típusát nem kell leírni a TÍPUS részben, hanem közvetlenül megadható változó deklarálásakor, pl.

Ichr: "A".."Z";.

A tartomány típusának meghatározásakor a következő szabályokat kell követnie:

  • két ".." karaktert a rendszer egy karakterként kezel, ezért a köztük lévő szóköz nem megengedett;
  • a tartomány bal határa nem haladhatja meg a jobb szélét. A tartománytípus örökli alaptípusának összes tulajdonságát, de kisebb teljesítményének korlátaival. Különösen, ha egy változó definiálva van

napok = (mo,tu,we,th,fr,sa,su);

WeekEnd = sa .. su;

akkor az ORD(W) az 5 értéket adja vissza, míg a PRED(W) hibát eredményez.

A Turbo Pascal szabványkönyvtár két olyan funkciót tartalmaz, amelyek támogatják a tartománytípusokkal való munkát:

HIGH(X) - annak a tartománytípusnak a maximális értékét adja vissza, amelyhez az X változó tartozik;

LOW(X) - a tartománytípus minimális értékét adja vissza.

A következő rövid program kinyomtatja a sort

WriteLn(Alacsony(k),"..",Magas(k))

Az egész számok halmaza végtelen, de mindig megválaszthatjuk, hogy egy adott probléma megoldása során tetszőleges egész számot reprezentáljon a bitek száma. A valós számok halmaza nemcsak végtelen, hanem folytonos is, így akárhány bitet veszünk, óhatatlanul találkozunk olyan számokkal, amelyeknek nincs pontos ábrázolása. A lebegőpontos számok a valós számok ábrázolásának egyik lehetséges módja, ami kompromisszum a pontosság és az elfogadott értékek tartománya között.

A lebegőpontos szám egyedi számjegyek halmazából áll, amelyeket hagyományosan előjelre, kitevőre és mantisszára osztanak. A kitevő és a mantissza egész számok, amelyek az előjellel együtt egy lebegőpontos szám következő ábrázolását adják:

Matematikailag így van leírva:

(-1) s × M × B E, ahol s az előjel, B a gyök, E a kitevő és M a mantissza.

Az alap határozza meg a számjegyrendszert. Matematikailag bebizonyosodott, hogy a B=2 bázisú (bináris ábrázolás) lebegőpontos számok ellenállnak leginkább a kerekítési hibáknak, ezért a gyakorlatban csak 2-es, ritkábban 10-es bázissal találkozunk a további bemutatáshoz mindig B=-t feltételezünk 2, és a lebegőpontos szám képlete így fog kinézni:

(-1) s × M × 2 E

Mi a mantissza és a rend? Mantissa egy rögzített hosszúságú egész szám, amely egy valós szám legjelentősebb bitjeit jelenti. Tegyük fel, hogy a mantisszánk három bitből áll (|M|=3). Vegyük például az „5” számot, amely a bináris rendszerben 101 2 lesz. A legjelentősebb bit 2 2 =4-nek, a középső bitnek (ami egyenlő nullával) 2 1 =2, a legkisebb jelentőségű bitnek pedig 2 0 =1. Rendelés– ez a legmagasabb számjegy alapjának (kettőjének) hatványa. Esetünkben E=2. Az ilyen számokat célszerű az úgynevezett „tudományos” szabványos formában írni, például „1.01e+2”. Azonnal világos, hogy a mantissza három jelből áll, a sorrend pedig kettő.

Tegyük fel, hogy törtszámot szeretnénk kapni a mantissza ugyanazon 3 bitjének felhasználásával. Ezt akkor tudjuk megtenni, ha mondjuk E=1-et veszünk. Akkor a számunk egyenlő lesz

1,01e+1 = 1×2 1 +0×2 0 +1×2 -1 =2+0,5=2,5

Nyilvánvaló, hogy így ugyanaz a szám különböző módon ábrázolható. Tekintsünk egy példát a mantissza hosszával |M|=4. A „2” szám a következőképpen ábrázolható:

2 = 10 (binárisan) = 1.000e+1 = 0.100e+2 = 0.010e+3.

Ezért már a legelső gépeknél a számokat az ún normalizált forma, amikor a mantissza első bitjét mindig eggyel egyenlőnek feltételezték.

Ez megtakarít egy bitet (mivel az implicit nem kell a memóriában tárolni), és biztosítja a szám egyedi megjelenítését. Példánkban a „2” egyetlen reprezentációval rendelkezik („1.000e+1”), és a mantissza „000”-ként kerül tárolásra a memóriában, mert a vezető egység implicit módon szerepel. De egy új probléma merül fel a számok normalizált ábrázolásában - ebben a formában lehetetlen a nullát ábrázolni.

  • Adatelemzés a Paraméterválasztás és a Megoldáskeresés parancsokkal
  • Kísérleti pszichológiai kutatási adatok elemzése, értelmezése.
  • A forrásadatok elemzése. Műszaki szabványok városi utakra.
  • A MEGSZERZETT ADATOK ELEMZÉSE. AZ ÖNTÖZŐRENDSZER IGÉNYEIRE VONATKOZÓ VÍZELLÁTÁSI JELLEMZŐK ELÉGSÉGÉRŐL VAGY ELÉGTELENSÉGÉRŐL DÖNTÉS HOZÁSA.
  • Kommunikációs vonali berendezések: adatátviteli berendezések, végberendezések, közbenső berendezések.

  • A típus fogalma minden programozási nyelv egyik alapfogalma. Azok az objektumok (konstansok, változók, függvények, kifejezések), amelyekkel a program operál, egy adott típushoz tartoznak.

    típus olyan értékek halmaza, amelyeket a programobjektumok felvehetnek, és az ezeken az értékeken engedélyezett műveletek halmaza.

    Például, az 1 és 2 értékek egész típusúak, összeadhatók, szorozhatók és egyéb aritmetikai műveletek. A „monitor” és a „Pascal” jelentése nyelvi jellegű. A leggyakrabban használt nyelvekben csak szigorúan meghatározott, előre ismert típusok használhatók. A Pascal a más magas szintű nyelvekben megtalálható szabványos típusokkal együtt lehetővé teszi a programozó számára, hogy saját típusokat készítsen.

    A Pascal nyelvben engedélyezett összes típus két nagy csoportra osztható: egyszerű és összetett (strukturált).

    típus Hatótávolság Mantisza, jelek Szükséges memória (byte)
    IGAZI 2.9*10E-39..1.7*10E38 11-12
    EGYETLEN 1,5*10E-45..3,4*10E38 7-8
    KETTŐS 5.0*10E-324..1.7*10E308 15-16
    KITERJEDT 1.9*10E-4951..1.1*10E4932 19-20
    COMP -2E+63+1..2E+63-1 10-20

    A SINGLE, DOUBLE, EXTEND, COMP típusok hatékony használata csak akkor lehetséges, ha a ($N+) direktíva engedélyezett. Alapértelmezés szerint ki van kapcsolva. A mérnöki és gazdasági problémák megoldásához a REAL típusú értékek elegendőek.

    Példa

    Var Res, Summa, Itog: igazi;

    Boolean az adattípust a BOOLEAN azonosító írja le. Az ilyen típusú változók és állandók két érték közül csak az egyiket vehetik fel: IGAZ (igaz) vagy FALSE (hamis).

    Példa

    Var Sel1, Sel2: logikai érték;

    A,B,C,D: logikai érték;

    A logikai kifejezések 1 bájt memóriát foglalnak el, és logikai és relációs kifejezésekben, valamint a programutasítások végrehajtási sorrendjének szabályozására használatosak.

    Szó szerinti (karakter) a típust a szabványos CHAR azonosító írja le. Az ilyen típusú állandók és változók felvehetik az ASCII kódtábla egyik értékét. Az ilyen típusú állandó vagy változó jelentése aposztrófok közé van zárva.

    Például, Var Bukva, Znak, Szimbólum: char;

    Bukva:=’A’; Znak:=’+’; Szimbólum:=’!’

    A karakter típusú változók 1 bájtot foglalnak el a memóriában. A char adatok használata aritmetikai kifejezésekben tilos. Az összehasonlító műveleteket literális értékekre lehet alkalmazni, az eredmény a literális változó vagy konstans számától függ a kódtáblázatban.

    A szabványos adattípusokon kívül a Pascal támogatja a skaláris típusokat, felhasználó által meghatározott. Ezek tartalmazzák felsorolhatóÉs intervallum típusok. Az ilyen típusú adatok 1 bájtot foglalnak el a memóriában, így egyetlen felhasználói típus sem tartalmazhat 255 elemnél többet. Használatuk jelentősen javítja a program láthatóságát, megkönnyíti a hibakeresést és memóriát takarít meg.

    Enum típus közvetlenül adható meg, felsorolva az összes értéket, amelyet egy adott típusú változó felvehet. Az egyes értékeket vessző választja el, és a teljes lista zárójelben van.

    Formátum

    típus<имя типа>=(<значение1, значение2, ..., значениеN>);

    Var<идентификатор, ...>: < имя типа>;

    Példa

    Típus Szezon =(tavasz, nyár, ősz, tél);

    Var S1, S2: Szezon;

    Ősz: (szeptember, október, mostember);

    Ez a példa egy kifejezetten meghatározott szezon felhasználói adattípust mutat be. Jelentésük meghatározott - az évszakok megjelölése. Az S1 és S2 változók a felsorolt ​​értékek közül csak egyet vehetnek fel. Bármilyen más érték hozzárendelésére tett kísérlet szoftvermegszakítást okoz. A harmadik típusú felsorolás névtelen (nincs neve), és a Var részben található értékek felsorolása határozza meg. Az Autumn egy ilyen típusú változó, és a következő értékeket veheti fel: szeptember, október, mostember. Így bármilyen típus megadható, de ez nem mindig elfogadható. Az első módszer minden bizonnyal érthetőbb és jobban összhangban van a Pascal nyelv természetével.

    Intervallum típusa lehetővé teszi két állandó megadását, amelyek meghatározzák egy adott változó értéktartományának határait. Az intervallumváltozón végzett minden egyes művelethez a fordító ellenőrző rutinokat generál annak meghatározására, hogy a változó értéke a megadott tartományon belül marad-e. Mindkét konstansnak a valóstól eltérő standard típushoz kell tartoznia. Az első állandó értékének szükségszerűen kisebbnek kell lennie, mint a másodiké.

    Formátum

    típus<имя типа> = <константа1> .. <константа2>;

    Var<идентификатор>: < имя типа>;

    Példa

    Típus Napok = 1.. 31;

    Var Munka_d, Szabad_d: Napok;

    Ebben a példában a változók Munka_d, Szabad_d van típusa Napokés tetszőleges értéket vehet fel az 1-es tartományból. . 31.

    A tartományból való kilépés szoftvermegszakítást okoz.

    Intervallumtípust úgy határozhat meg, hogy a tartományhatárokat nem az állandók értékével, hanem a nevükkel határozza meg:

    Állandó min = 1; Max = 31;

    Típus Napok = Min .. Max;

    Var Munka_d, Szabad_d: Napok;

    Strukturált típusok Az adattípusok skaláris típusokon alapulnak, és ezek különféle kombinációit tartalmazhatják. Ezek a skaláris elemek rendezett gyűjteményét határozzák meg, és komponenseik típusa jellemzi őket. A Pascal nyelv a következő strukturált adattípusokat biztosítja:

    vonal - aposztrófokba zárt karaktersorozat;

    tömb - strukturált adattípus, amely meghatározott számú azonos típusú elemből áll, és index segítségével érhető el ;

    Egy csomó - valamilyen jellemző vagy jellemzőcsoport szerint kiválasztott objektumok összessége, amelyek egésznek tekinthetők;

    rekord - meghatározott számú, különböző típusú összetevőből álló halmaz;

    fájlt- azonos típusú és azonos hosszúságú összetevők sorozata.

    Két további strukturált típus – procedurális és objektum – nehezen leképezhető adatokra a hagyományos ábrázolásban.

    1. kép- A Pascal nyelv alaptípusainak halmaza



    Betöltés...
    Top