Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

Laborszám 3

Tantárgy: Logikai típus (boolean).

A Pascalban két logikai állandó van: IGAZ (igaz) és HAMIS (hamis). A logikai változó ezen értékek bármelyikét felveheti, és logikai típusú. A logikai adatokat széles körben használják bizonyos feltételek érvényességének ellenőrzésére és az értékek összehasonlítására. Az eredmény lehet "igaz" vagy "hamis". A logikai adatokon a következő műveletek engedélyezettek:

Logikai műveletek:

Operátor

Művelet

Operandus típusa

Az eredmény típusa

tagadás

logikus ÉS

logikai VAGY

logikai XOR

A logikai adatokkal végzett műveletek eredményeit a táblázat foglalja össze:

(A) és (B)

(A) vagy (B)

Logikai adatok, összehasonlítási műveletek és logikai műveletek logikai értékekkel rendelkező logikai kifejezések létrehozására szolgálnak. Például: (c10) vagy (d

A logikai kifejezések értékeinek értékelésekor figyelembe kell venni a logikai műveletek végrehajtásának sorrendjét. A NOT operátornak van a legmagasabb prioritása, utána az ÉS operátornak, majd az OR operátornak. Az összehasonlító operátorok a legalacsonyabb prioritásúak.

A logikai típusú változókat a változódeklarációs részben a szabványos BOOLEAN azonosítóval deklarálják.

Példa: a, R1, f: logikai érték;.

A Pascalban vannak olyan függvények, amelyek logikai típusúak:

1. ODD(A)- az érték akkor igaz, ha A nem páros szám.

2. EOLN- az érték igaz, ha a karakterlánc vége szöveges fájl.

3. EOF- az érték igaz, ha a szövegfájl vége.

Program példa:

var a,b,c:integer;

writeln('Írjon be három egész számot');

write('s=',s);

A programvégrehajtás eredményeként az s változó IGAZ vagy FALSE értéket kap attól függően, hogy a logikai kifejezés hamis vagy igaz volt, és az s változó értéke jelenik meg, azaz. IGAZ vagy HAMIS felirat jelenik meg a képernyőn.

Laboratóriumi munkák feladatai 3. sz.

A végrehajtáshoz laboratóriumi munka olyan programokat kell írnia, amelyek igaz vagy hamis értéket nyomtatnak, attól függően, hogy a megadott feltételek teljesülnek-e vagy sem:

    Tetszőleges a, b és c valós számok esetén határozza meg, hogy a másodfokú egyenletnek van-e legalább egy valós megoldása.

    Határozza meg, hogy egy adott négyjegyű szám első két számjegyének összege megegyezik-e az utolsó két számjegyének összegével!

    Határozzuk meg, hogy egy adott háromjegyű szám négyzete egyenlő-e a számjegyei összegének kockájával!

    Határozzuk meg, hogy egy adott pozitív valós szám tört részének első három számjegye között van-e 0 számjegy!

    Határozza meg, hogy egy adott háromjegyű szám számjegyei megegyeznek-e!

    Három tetszőleges szám van megadva. Határozza meg, hogy lehetséges-e ilyen oldalhosszúságú háromszöget készíteni!

    Állítson össze egy logikai egyenletet az összes logikai művelettel egy logikai változó megjelenítésével.

    Határozza meg, hogy egy négyzet nagyobb-e adott szám négyzetgyök másik megadott szám.

    Egy konvex négyszög oldalainak hosszát fejezzük ki számok a,b,c,d. Határozza meg, hogy kör írható-e bele.

Laboratóriumi munkák feladatai 3. sz.

A labor befejezéséhez olyan programokat kell írnia, amelyek igaz vagy hamis értéket nyomtatnak, attól függően, hogy a következő feltételek teljesülnek-e vagy sem:

    Tetszőleges a, b és c valós számok esetén határozza meg, hogy a másodfokú egyenletnek van-e legalább egy valós megoldása.

    Határozza meg, hogy egy adott négyjegyű szám első két számjegyének összege megegyezik-e az utolsó két számjegyének összegével!

    Határozzuk meg, hogy egy adott háromjegyű szám négyzete egyenlő-e a számjegyei összegének kockájával!

    Határozzuk meg, hogy egy adott pozitív valós szám tört részének első három számjegye között van-e 0 számjegy!

    Határozza meg, hogy egy adott háromjegyű szám számjegyei megegyeznek-e!

    Három tetszőleges szám van megadva. Határozza meg, hogy lehetséges-e ilyen oldalhosszúságú háromszöget készíteni!

    Állítson össze egy logikai egyenletet az összes logikai művelettel egy logikai változó megjelenítésével.

    Határozzuk meg, hogy egy adott szám négyzete nagyobb-e egy másik adott szám négyzetgyökénél!

    Egy konvex négyszög oldalainak hosszát a,b,c,d számok fejezik ki. Határozza meg, hogy kör írható-e bele.

Szoftver - Pascal Pascal nyelvi műveletek

Pascal nyelvi műveletek

A műveletek műveleteket határoznak meg az operandusokon. A Pascalban vannak bináris és unáris műveletek. Az unáris műveletek 1 operandust tartalmaznak, amelyet a művelet jele előz meg. A bináris műveleteknek 2 operandusa van, ezek közé kerül a művelet jele vagy szimbóluma. A cselekvés természeténél fogva A Pascal nyelvi műveletek 7 csoportra oszthatók:

  • számtan;
  • kapcsolat;
  • összerakós játékaik;
  • húr;
  • bit, shift;
  • készleteken végzett műveletek;
  • címfelvételi műveletek.

Aritmetikai műveletek. A Pascalnak van egy unáris művelete, amelyet mínuszjel hozzárendelésnek neveznek, és egy második pluszjel hozzárendelés. A binárisok a következők:

  • összeadás (+);
  • kivonás (-);
  • szorzás (*);
  • valós osztás (/);
  • egész osztás (div);
  • az egész osztás maradéka (mod).

A Pascalnak három osztási művelete van, az osztás (/) művelet eredménye egy törtrészes szám, a div művelet eredménye csak egy egész szám, a mod művelet eredménye pedig egy egész osztás maradéka. Példák:

Az aritmetikai műveletekben csak numerikus típusú operandusok vehetnek részt. Az eredményük is szám lesz. A szám lehet egész vagy valós szám.

kapcsolati műveletek. Ezek magukban foglalják az összes bináris műveletet:

  • több;
  • Kevésbé;
  • több vagy egyenlő;
  • kisebb vagy egyenlő
  • egyenlő
  • nem egyenlő.

A relációs műveletek eredménye csak logikai változó lehet, vagy igaz (True) vagy false (False) értéket vehet fel. A relációs operátorokban szereplő operandusok lehetnek numerikus vagy numerikusra redukálható típusok. Numerikus típusok:

  • karakter - a relációs műveletekben a karakterkódok összehasonlítása a kódtáblázat szerint történik;
  • logikai - az igaz és hamis értékeket használják, amelyek az 1 - igaz és a 0 - hamis értékeket veszik fel;
  • A string egy karaktertípusból álló összetett típus. Ezért karakterláncok használatakor két karakterlánc egymást követő karaktereit hasonlítják össze.

Például:

5,6 > 7 - Hamis;

'P'< ‘Б’ — False;

„Petrov” > „Ivanov” – igaz;

"Ivanov"< ‘Иван’ — False.

eredmény logikai műveletek igaz vagy hamis logikai érték lesz.

Unary: NEM – tagadás.

Bináris: ÉS - szorzás (és); VAGY - összeadás (vagy); XOR – modulo 2 kiegészítés (kizárólagos VAGY).

Egy logikai kifejezés operandusai csak logikai műveletek lehetnek.

String műveletek. Az összefűzés (láncolás) bináris művelet. Az operandusok csak karakterlánc típusú változók lehetnek. Az eredmény egy karakterlánc, és a művelet lényege, hogy két karakterláncot fűz össze:

A:='Ivanov'

B:= 'Alexander'

Eredmény: Ivanov Alexander.

A Pascal műveleteinek sorrendjét 3 tényező határozza meg:

  • működési prioritás;
  • műveletek sorrendje;
  • zárójelek használata.

Üzemeltetési prioritási szintek:

  • az első prioritású műveletek végrehajtása;
  • a legalacsonyabb prioritású műveletek végrehajtása utoljára történik;
  • Az egyenlő prioritású műveletek balról jobbra haladva, írási sorrendben kerülnek végrehajtásra.

Ugyanakkor a fordító néha átrendezheti az azonos prioritású operandusokat. A zárójelek a prioritás megváltoztatására (növelésére) szolgálnak. A zárójelben lévő kifejezést először a rendszer értékeli, majd a zárójelen kívül.

Bármely adatot - konstansokat, változókat, függvényértékeket - Pascalban adattípus jellemzi.

Határozzuk meg a fogalmat adattípus. Mint már ismert, minden programobjektumot (változók, konstansok stb.) deklarálni kell.

A leírások egyrészt tájékoztatják a fordítót a változók és egyéb felhasznált objektumok létezéséről, másrészt jelzik ezen objektumok tulajdonságait. Például egy olyan változó leírása, amelynek értéke szám, jelzi a számok tulajdonságait. Formálisan a számok lehetnek egészek és valósok (törtek). A Pascalban, akárcsak más programozási nyelvekben, a számokat két típusra osztják: egész(fenntartott szó egész szám) és igazi(fenntartott szó igazi).

Az egész számok külön típusként való kiválasztását az magyarázza, hogy az egész számok és a valós számok eltérő módon jelennek meg egy számítógépben: egy egész szám abszolút pontosan ábrázolható, míg a valós szám elkerülhetetlenül valamilyen véges hibával ábrázolható, amit a a fordító tulajdonságai.

Legyen például az x változó real típusú, és az értéke egyenlő eggyel: x=1 . A megfelelő érték a számítógép memóriájában 0,999999999, 1,000000001 vagy 1,000000000 lehet. De ha az x változót egész típusú változóként deklarálják, akkor az egység abszolút pontosan lesz ábrázolva a számítógépben, és az x változó nem tud valós (tört) értékeket felvenni - végül is deklarálták. egész típusú változóként.

Tehát az adattípus meghatározza:

  • adatok belső megjelenítése a számítógép memóriájában;
  • az értékkészlet, amelyet az ilyen típusú értékek felvehetnek;
  • az ilyen típusú értékeken végrehajtható műveletek.

Az adattípusok bevezetése a Pascal nyelv egyik alapfogalma, ami abban áll, hogy egy hozzárendelési művelet végrehajtásakor érték változó kifejezéseknek, változóknak és kifejezéseknek azonos típusúaknak kell lenniük. Ezt az ellenőrzést a fordító végzi el, ami nagymértékben leegyszerűsíti a hibakeresést és növeli a program megbízhatóságát.

A Turbo Pascal adattípusok készlete két csoportra osztható:

  • szabványos (előre meghatározott) típusok ;
  • felhasználó által definiált típusok (felhasználó által definiált típusok) .

A Turbo Pascal standard típusai a következők:

  • integer type - integer ;
  • valódi típus - valódi ;
  • karakter típusa - char ;
  • logikai típus - boolean ;
  • string type - string ;
  • pointer type - pointer ;
  • a szöveg típusa szöveg .

Az egyéni adattípusok a szabványos típusok különféle kombinációi.

Az egyéni típusok a következők:

  • felsorolt ​​típus;
  • intervallum típusa;
  • mutató típusa;
  • strukturált típusok;
  • eljárási típus.

Megjegyzés. Az adattípusok egy másik osztályozása is lehetséges, amely szerint a típusokat egyszerű és összetett típusokra osztják.

Az egyszerű típusok a következők: egész típus, valós típus, karaktertípus, logikai típus, felsorolt ​​típus és intervallumtípus.

A komplex típus sokféle kombináció egyszerű típusok(tömbök, rekordok, halmazok, fájlok stb.)

Szabványos típusok

A szabványos adattípust maga a Pascal nyelv határozza meg. A szabványos típusok programban való használatakor elegendő a szükséges típusok alszakaszait (const , var) feltüntetni, majd leírni a programban használt állandókat és változókat. Nincs szükség a Típus alszakasz használatára.

Például, ha a program csak változókat használ:

i,j - egész szám (egész számok);

x,y - valós (valós);

t,s - char (karakter);

a,b - logikai érték (logikai),

akkor csak a változók alszakaszra van szükség - Var . Ezért a program leíró részében a változódeklarációkat a következőképpen írjuk:

Egész típusok

Az ilyen típusú adatok csak egész számokat vehetnek fel. Egy számítógépben az egész típusú értékek pontosan vannak ábrázolva. Ha a változó negatív, akkor azt a „-” jelnek kell megelőznie, ha a változó pozitív, akkor a „+” jel elhagyható. Ez a típus akkor szükséges, ha valamely érték nem ábrázolható közelítőleg - valós számmal. Például az emberek, állatok száma stb.

Példák egész értékek írására: 17, 0, 44789, -4, -127.

Az egész típusú adatok tartományát az öt szabványos egész típus határozza meg, és a táblázat mutatja be:

típus Hatótávolság Méret bájtban
Shortint -128...+128 1
Egész szám -32768...32767 2
Longint -2147483648...2147483647 4
bájtok 0...255 1
Szó 0...65535 2

Az utolsó két típus csak pozitív számok ábrázolására szolgál, az első három pedig pozitív és negatív számokat is.

A program szövegében vagy egész típusú adatok bevitelekor az értékek beírásra kerülnek tizedesvessző nélkül . Aktuális változó értékek nem haladhatja meg a megengedett értékeket annak a típusnak (Shortint , Integer , Longint , Byte , Word), amelyet a változó leírására használtunk. A számítások esetleges túlzásait semmilyen módon nem ellenőrzik, ami a program helytelen működéséhez vezet.

Példa egész típusú változó használatára

var a:integer; b:szó; c:byte; Kezdje a:=300; (a értéke 300) b:=300; (b 300-ra állítva) c:=200; (c értéke 200) a:=b+c; (a értéke 500) c:=b; (Hiba! A c változó 255-nél nem nagyobb értéket vehet fel. Itt a c változóhoz 500 van hozzárendelve, ami az eredmény túlcsordulását okozza.) Vége.

Valódi típusok

A valós típusok értékeit a számítógépben hozzávetőlegesen ábrázolják. A valós típusú adatok tartományát öt standard típus határozza meg: valós (Real), egyszeres pontosságú (Single), kettős pontosságú (Double), fokozott pontosságú (Extended), összetett (Comp), és a táblázatban látható:

típus Hatótávolság A jelentős számjegyek száma Méret bájtban
Igazi 2,9E-39...1,7E+38 11-12 6
Egyetlen 1,5E-45...3,4E+38 >7-8 4
Kettős 5E-324...1.7E+308 15-16 8
Kiterjedt 3.4E-4951...1.1E+4932 19-20 10
Összeg -2E+63+1...+2E+63-1 19-20 8

A valós számokat két formátumban lehet ábrázolni: fix és lebegőpontos.

A fixpontos szám formátuma megegyezik a tört részt tartalmazó decimális számok szokásos matematikai jelölésével. A tört részt például ponttal választjuk el az egész résztől

34.5, -4.0, 77.001, 100.56

A lebegőpontos formátum nagyon nagy vagy nagyon kis számok írásakor használatos. Ebben a formátumban az „E” előtti számot megszorozzuk 10-zel az „E” után megadott hatványra.

1E-4 1*10-4
3,4574E+3 3.4574*10+3
4.51E+1 4.51*10+1

Lebegőpontos példák:

Szám Pascal nyelven írva
0,0001 1E-4
3457,4 34574E-1
45,1 451E-1
40000 4E+4
124 0,124E+3
124 1.24E+2
124 12.4E+1
124 1240E-1
124 12400E-2

Az 5-től 9-ig tartó táblázat ugyanazt a 124-es számot mutatja. A mantisszában a tizedesvessző helyének megváltoztatásával (a pont "lebeg", innen a "lebegőpontos szám rögzítése" elnevezés) és ezzel egyidejűleg a kitevőt, kiválaszthatja a legmegfelelőbb bejegyzési számokat.

Példa valós típusú változók deklarálására.

Karakter típus

A karaktertípus értékek olyan karakterek, amelyek a számítógép billentyűzetén írhatók be. Ezzel szöveget jeleníthet meg a programban, és különféle műveleteket hajthat végre rajta: beszúrhat, törölhet egyes betűket és szavakat, formázhat stb.

A karakter típusa meg van jelölve fenntartott szó Char és egyetlen karakter tárolására szolgál. A memóriában lévő karakter típusú adatok egy bájtot foglalnak el.

Szimbolikus változó deklarációs formátuma:

<имя переменной>:char;

Egy karakterváltozó értékének meghatározásakor a karaktert aposztrófokkal írjuk. Ezenkívül megadhatja a szükséges karaktert az ASCII-kód számértékének közvetlen megadásával. Ebben az esetben a szükséges karakter ASCII kódját jelölő szám elé # jelet kell írni.

Példa karakter típusú változók használatára:

varc:char; (c egy karakter típusú változó) Begin c:='A'; (az 'A' karakter a c változóhoz van rendelve) c:=#65; (a c változóhoz az A szimbólum is hozzá van rendelve. Az ASCII kódja 65) c:='5'; (a c változóhoz az 5 karakter van hozzárendelve, az End. itt az 5 már nem szám)

logikai típusú

A logikai adattípust George Boole angol matematikus, a matematika - matematikai logika terület megalkotója után Boole-nak nevezik.

Logikai változó deklarációs formátuma:

<имя переменной>: logikai;

Az ilyen típusú adatok csak két értéket vehetnek fel:

  • Igaz igaz;
  • Hamis – hamis.

A logikai adatokat széles körben használják bizonyos feltételek érvényességének ellenőrzésére és az értékek összehasonlítására. Az eredmény igaz vagy hamis lehet.

Az adatok összehasonlításához a következő relációs műveletek állnak rendelkezésre:

Példa a relációs műveletek használatára:

reláció 5>3 , eredmény igaz (igaz);

reláció 5=3 , az eredmény hamis (hamis).

Példa logikai változók használatára.

var a,b:boolean; (a,b logikai változók) Begin a:=True; (az a változó igazra van állítva) b:=false; (a b változó hamisra van állítva) End.

Állandók

Egész számok, valós számok, szimbólumok, karakterláncok, logikai állandók használhatók konstansként.

Az állandót a leíró részben a fenntartott const szó használatával kell deklarálni.

Állandó nyilatkozatformátum

Const<имя константы>= <значение>;

Ha egy programban több állandót használunk, akkor csak egy engedélyezett. kulcsszó Const , minden állandó leírása pontosvesszővel végződik. Az állandó blokk egy másik szakasz deklarálásával vagy végrehajtható utasítások blokkjának deklarálásával ér véget.

Const (konstans szakasz nyilatkozat) év=2003; (egész típusú konstans, mivel a rekordban nincs tizedesvessző) time=14,05; (valós típusú állandó) N=24; (egész típusú konstans, mivel a rekordban nincs tizedesvessző) P=3,14; (valós típusú állandó) A=igaz; (logikai állandó) str1='7'; (karaktertípus állandó) str2='A'; (karaktertípus állandó) str3='Turbó'; (karakterlánc típusú állandó) Var (változó szakasz deklaráció) X,y:integer; (egész típusú változók)

Egyedi típusok

Az egyedi típusok halmazából csak akkor vesszük figyelembe

  • felsorolt ​​típus;
  • intervallum típus.

Erre a két típusra lesz szükségünk a tömbök tanulmányozásakor.

Felsorolt ​​típus

A felsorolt ​​adattípusok olyan új adattípusokat írnak le, amelyek értékeit a programozó határozza meg. A felsorolt ​​típust az általa fogadható értékek felsorolásával határozzuk meg. Minden értéket valamilyen azonosító nevez el, és egy zárójelben lévő listában található. A felsorolt ​​típus egy felhasználó által definiált adattípus, így típusdeklarációja a TYPE fenntartott szóval kezdődik.

Felsorolt ​​típusformátum:

<имя типа>= (állandó1, állandó2,..., állandóN);

Ahol
konstans1 , állandó2 ,..., állandóN az azonosító értékek rendezett halmaza, amelyeket állandóként kezelünk.

Példa egy felsorolt ​​típusdeklarációra:

Type ball=(egy, kettő, három, négy, öt); vart:ball;

Itt a labda a felsorolt ​​típus neve; egy , kettő , három , négy , öt konstans; t olyan változó, amely bármilyen konstansértéket felvehet.

A felsorolt ​​típusban a konstans egy azonosító, ezért nem idézőjelek, és nem is lehet szám. Így egy felsorolt ​​típusban az állandó az állandók egy speciális fajtája, amely nem lehet:

  • numerikus típusú konstansok: 1, 2, 3, 4 stb.;
  • karakter típusú állandók: "a", "s", "1", "3" stb.;
  • karakterlánc típusú állandók: "első", "második" stb.

Ezenkívül az ilyen típusú értékek nem érvényesek aritmetikai műveletekés szabványos bemeneti és kimeneti eljárások Read , Write .

Példa felsorolt ​​típusú változók használatára:

Típus napok = (hétfő, kedd, szerda, csütörtök, péntek, szombat, vasárnap); Var nap: napok; begin if day = Sunday then writeln('Ma vasárnap van!'); vége.

A felsorolt ​​típusdefinícióban szereplő elemeket a rendszer a felsorolás sorrendjében rendezettnek tekinti. A számozás nulláról indul. Ezért a fenti példában a hét napjainak a következő sorszámai vannak

A sorszám programozott meghatározásához használja az Ord() függvényt.

Példánkban a sorozatszámok egyenlőek:

Ord(hétfő) = 0;

Ord(szombat) = 5;

Rend (vasárnap) = 6.

intervallum típus

Ha egy változó nem veszi fel a típusának összes értékét, hanem csak egy bizonyos tartományban lévő értékeket, akkor az ilyen adattípust intervallumtípusnak nevezzük. Az intervallumtípust gyakran korlátos típusnak és tartománytípusnak nevezik. Az intervallumtípust az értékeinek határai határozzák meg:

<минимальное значение>..<максимальное значение>

  • két ".." karaktert a rendszer egy karakterként kezel, ezért szóköz nem megengedett közöttük;
  • a tartomány bal vége nem haladhatja meg a jobb végét.

Az intervallumtípus egy felhasználó által meghatározott adattípus, ezért ennek a típusnak a deklarációja a TYPE kulcsszóval kezdődik.

Példa az intervallumtípus leírására:

típusszámjegy = 1..10; hónap = 1..31; lat = 'A'..'Z';

Leírás: varn: Boolean;

A logikai adatok csak két értéket vehetnek fel: igaz (igaz) és false (hamis). Logikai típusú értékek esetén összehasonlító műveletek, és igaz> hamis.Alkalmazd még 4 logikai műveletek:

és logikai szorzás

vagy logikus kiegészítés

xor exkluzív "vagy"

nem tagadás

A logikai műveletek végrehajtásának szabályait a következő igazságtáblázatok határozzák meg:

X és Y

Xxor Y


Példa 1:

not(5>2) = hamis

(5>2) és (3<10) = true

(8<>9) vagy (4>5) = igaz

nem (5=2) xor (3>2) = hamis

Példa 2:

A BOOLEAN típusú adatok összehasonlításakor figyelembe veszik a Turbo Pascal belső konvenciót, amely szerint a FALSE nulla bájt, a TRUE pedig egy bájt, amely a legkisebb jelentőségű bitben van. Figyeljük meg, hogy az ORD függvény nem csak szimbólumokat, hanem logikai értékeket is konvertál egész számmá

2.5 Korlátozott típusok

A szabványos típusok alapján saját típusokat építhet, korlátozva a lehetséges értékek tartományát: 1..10, -100..10, ‘a’..’z’ stb.

Példa:

b: ‘a’...’z’;

b:=0; (hiba: típuseltérés – a karakter típusú változóhoz egész szám van hozzárendelve)

a:=0; (hiba: kívül esik a 2...5 tartományon)

2.6 Felsorolt ​​típusok

Az összes lehetséges név által megadott érték explicit felsorolásával jön létre. Például egy közlekedési lámpa vezérlő programhoz a következő típus definiálható:

var svet: (piros, sárga, zöld);

opera: (plusz, mínusz);

A logikai típus egy felsorolt ​​típus speciális esete.

2.7 A típusok leírása

A Pascal új adattípusait a TYPE szóval kezdődő deklarációk határozzák meg. A leírás egy típusnévből és egy típusértékből áll, amelyek közé a "=" jel kerül.

Példa:

abc='A'..'z';

2.8 Típusátalakítás

Mint már említettük, egy változó típusa nem csak a belső reprezentáció hosszának beállítását teszi lehetővé, hanem a programban vele végrehajtott műveletek vezérlését is. A változók használatának szabályozása a programfordítás szakaszában a Turbo Pascal fontos előnye más programozási nyelvekkel szemben, amelyek lehetővé teszik az automatikus típuskonverziót. A Turbo Pascalban az implicit (automatikus) típuskonverzió szinte lehetetlen. Kivételt csak az INTEGER (egész számok) típusú konstansok és változók tesznek, amelyek a REAL (valós) típusú kifejezésekben használhatók. Ha például az X és Y változókat a következőképpen deklaráljuk:

var x: egész szám;

majd 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 elvégzi a szükséges átalakításokat. Ugyanakkor az üzemeltető

helytelen lesz, mivel a Turbo Pascalban tilos az automatikus konvertálás REAL típusról (a 2.0 konstans tizedesvesszőt tartalmaz, ezért a REAL típushoz tartozik) INTEGER típusra.

Így a változókhoz csak saját típusú értékeket lehet hozzárendelni; az egyetlen kivétel: egy valós típusú változó és egy egész szám értéke (ebben az esetben az egész számot valós számmá alakítjuk, amelynek törtrésze 0).

Természetesen az automatikus típuskonverzió tilalma nem jelenti azt, hogy a Turbo Pascalban nincsenek adatkonverziós eszközök. Természetesen vannak, de kifejezetten használni kell őket. Az adatok nyelven való konvertálásához olyan beépített függvények vannak, amelyek paraméterként egy típusú értéket kapnak, és az eredményt egy másik típusú értékként adják vissza. Konkrétan még két ilyen beépített függvény is létezik a REAL INTEGER-re való konvertálására: ROUND a REAL-t a legközelebbi egész számra kerekíti, a TRUNC pedig a REAL-t csonkolja a tört rész elvetésével (lásd 1.5. fejezet).

Például az operátor hibás lenne

de helyes

x:= kerek(y/x);

(lásd fent a változódeklarációkat).

Például az ORD függvény a CHAR (karakter) típusú adatokat egész számmá alakítja, míg az INTEGER CHAR-ra való fordított konvertálását a CHR függvény hajtja végre.

A két osztási művelet jelenléte a Turbo Pascal alapelvének újabb megnyilvánulása: a programozónak kifejezetten meg kell erősítenie a fordító felé, hogy készen áll a típusátalakítás lehetséges következményeire. Ha például a Fortran nyelvben az 1/2 kifejezést használjuk, akkor ennek a kifejezésnek az eredménye attól függ, hogy milyen típusú változóhoz lesz hozzárendelve: ha N egy egész típusú változó, X pedig egy valós típus, majd egy Fortran programban a hozzárendeléseket

N értéke 0, X esetén 0,5. A Turbo Pascalban nincs ilyen kétértelműség: az 1/2 kifejezésnek mindig 0,5 az értéke, így az operátor

egyszerűen elfogadhatatlan. Ugyanakkor a Turbo Pascalban engedélyezett operátorok a következők:

És végül a relációs és logikai műveletekről.

A következő relációs (összehasonlító) műveletek vannak definiálva REAL, INTEGER, CHAR, STRING típusú adatokon:

<>- nem egyenlő;

< - меньше;

> - több;

<= - меньше или равно,

>= - nagyobb vagy egyenlő.

Az összehasonlító műveleteknek azonos típusú operandusokat kell tartalmazniuk. Ismét kivételt képez a REAL és az INTEGER, amelyek összehasonlíthatók egymással. A relációs operátor bármely operandusra történő alkalmazásának eredménye BOOLEAN típusú.

Annak érdekében, hogy a program nemlineáris legyen (vagyis a helyzettől függően különböző utasításokat hajtottak végre), a programozási nyelvek logikai kifejezéseket használnak, amelyek eredménye igaz (igaz) vagy hamis (hamis) lehet. A logikai kifejezések eredményét általában a program végrehajtási útvonalának meghatározására használják.

Az egyszerű logikai kifejezések két operandus (érték) közötti relációs műveletek eredményei. Az alábbi példákban az operandusok x és y értékei. Az operandusok lehetnek számok, szimbólumok és egyéb adattípusok. Minden, ami összehasonlítható egymással. A valós számok összehasonlítása azonban nem javasolt a számítógép memóriájában való tárolásuk sajátosságai miatt.

A Pascal a következő relációs operátorokat biztosítja:

  • kevesebb, mint: x< y
  • nagyobb, mint: x > y
  • egyenlő: x = y
  • nem egyenlő: x<>y
  • kisebb vagy egyenlő: x<= y
  • nagyobb vagy egyenlő, mint: x >= y

Logikai típusok

A logikai kifejezés eredménye mindig egy logikai (boolean) érték. A logikai adattípus (boolean) csak két értéket vehet fel (igaz vagy hamis). Ezek az értékek a következőképpen vannak rendezve: false< true. Это значит, что данные булевого типа являются не только результатом операций отношения, но и могут выступать в роли операндов операции отношения. Также к ним можно применять функции ord, succ, pred, процедуры inc и dec.

Egy logikai érték 1 bájtot foglal el a memóriában.

A példában hat logikai változóhoz vannak hozzárendelve az egyszerű logikai kifejezések értékei. Az ilyen változókban tárolt értékek ezután megjelennek a képernyőn.

A logikai típuson kívül a Pascal további három logikai típust vezetett be: bytebool (1 bájtot foglal el), wordbool (2 bájtot foglal el) és longbool (4 bájtot foglal el).
Minden logikai típusnál a false értéke 0, az igaz pedig bármely nullától eltérő érték. A különböző logikai változókhoz tartozó logikai változók eltérően viselkednek, amikor műveleteket hajt végre rajtuk. Az alábbiakban egy FreePascal nyelven megvalósított példa látható (az eredmény a megjegyzésekben látható).

var b: logikai ; wb:wordbool; beginb:=false ; b:=pred(b) ; writeln (b, " " , ord (b) ) ; // IGAZ 255 writeln (b= igaz ) ; // IGAZ wb:= false ; wb :=pred(wb) ; writeln (wb, " " , ord (wb) ) ; // IGAZ -1 b:= igaz ; b:=succ(b) ; writeln (b, " " , ord (b) ) ; // IGAZ 2 wb:= igaz ; wb := succ(wb) ; writeln (wb, " " , ord (wb) ) ; // HAMIS 0 vége .

Boole-műveletek

A logikai operátorok segítségével összetett logikai kifejezéseket alkothatunk. A logikai operátorokat gyakran alkalmazzák egyszerű logikai kifejezésekre.

A nyelvben Pascal programozás a következő logikai műveletek állnak rendelkezésre:

igaz xor igaz = hamis
igaz xor hamis = igaz
hamis xor igaz = igaz
false xor false = hamis

  • Kötőszó (logikai szorzás, metszés) - és. Az a és b kifejezés csak akkor igaz, ha a és b egyaránt igaz. Minden más esetben az a és b kifejezés értéke hamis.

    igaz és igaz = igaz igaz és hamis = hamis hamis és igaz = hamis hamis és hamis = hamis

  • Diszjunkció (logikai összeadás, unió) - ill. Az a vagy b kifejezés hamisra értékelődik csak akkor, ha a és b is hamis. Minden más esetben az eredmény igaz.

    igaz vagy igaz = igaz igaz vagy hamis = igaz hamis vagy igaz = igaz hamis vagy hamis = hamis

  • Tagadás (inverzió) - nem. A nem a kifejezés az a-val ellentétes jelentéssel bír.

    nem igaz = hamis nem hamis = igaz

  • Exkluzív VAGY - xor. Az a xor b kifejezés csak akkor igaz, ha csak az egyik operandusa értékel ki igazat.

A logikai operátorok végrehajtási sorrendje: not, and, or.

Pascalban, első futás logikai operátorok(és, vagy, xor, not), és csak ezután a relációs operátorok (>, >=,<, <=, <>, =), ezért ne felejtsen el zárójeleket tenni az összetett logikai kifejezésekben.

Az összetett logikai kifejezések nem dolgozhatók fel a végéig, ha a számítás folytatása nem változtat az eredményen. Ha egy logikai kifejezést a végéig kell feldolgozni, akkor ezt a fordítási direktíva (B+) bevonásával biztosítjuk.

Szabványos logikai függvények

  • páratlan(x) = igaz, ha x páratlan (x egész típusú);
  • eoln(x) = igaz, ha az x szövegfájl sorának végét találtuk;
  • eof(x) = igaz, ha az x fájl végét találtuk.

Ellenkező esetben ezek a függvények hamisra értékelődnek.

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: