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.
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:
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:
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:
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:
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:
Üzemeltetési prioritási szintek:
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:
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ó:
A Turbo Pascal standard típusai a következők:
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:
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.)
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:
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.
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.
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)
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:
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.
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)
Az egyedi típusok halmazából csak akkor vesszük figyelembe
Erre a két típusra lesz szükségünk a tömbök tanulmányozásakor.
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:
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.
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:
<минимальное значение>..<максимальное значение>
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á
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)
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.
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';
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:
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 .
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
igaz és igaz = igaz igaz és hamis = hamis hamis és igaz = hamis hamis és hamis = hamis
igaz vagy igaz = igaz igaz vagy hamis = igaz hamis vagy igaz = igaz hamis vagy hamis = hamis
nem igaz = hamis nem hamis = igaz
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.
Ellenkező esetben ezek a függvények hamisra értékelődnek.