Typy proměnných Pascal. Ordinální datové typy v Pascalu. Booleovský formát deklarace proměnné

Koncept dat je jedním z klíčových v programování a obecně v informatika. Zhruba řečeno, data v informatice jsou informace, které jsou ve stavu uložení, zpracování nebo přenosu po určitou dobu. V Turingových strojích má informace svůj typ a ten zase závisí na typu informace.

Datové typy v Pascalu definují možné hodnoty proměnné, konstanty, výrazy a funkce. Jsou vestavěné a na zakázku. Vestavěné typy jsou zpočátku přítomny v programovacím jazyce a vlastní typy vytváří programátor.

Podle způsobu prezentace a zpracování jsou datové typy:

  • jednoduchý
  • strukturovaný
  • ukazatele
  • objektů
  • postupy

Tento článek se bude zabývat pouze tím nejvíce jednoduché typyúdaje, od počáteční fázeškolení, bude pro váš program snazší obejít se například bez souborů a záznamů než bez celočíselných nebo řetězcových proměnných.

Celočíselný typ

To zahrnuje několik celočíselné typy, které se liší rozsahem hodnot, počtem bajtů přidělených pro jejich uložení a slovem, kterým je typ deklarován.

Typ Rozsah Velikost v bajtech
zkratka -128…127 1
celé číslo -32 768…32 767 2
longint -2 147 483 648…2 147 483 647 4
byte 0…255 1
slovo 0…65 535 2

V sekci Var můžete deklarovat celočíselnou proměnnou, například:

Proměnné v této kategorii lze použít k provádění všech aritmetických a logické operace S výjimkou dělení (/) vyžaduje skutečný typ. Některé lze také aplikovat standardní funkce a postupy.

Skutečný typ

V Pascalu jsou následující skutečné typy data:

Typ Rozsah Paměť, byte Počet číslic
Nemovitý 2,9e-39 … 1,7e38 6 11-12
Singl 1,5e-45 … 3,4e38 4 7-8
Dvojnásobek 5,0e-324…1,7e308 8 15-16
Rozšířené 3,4e-4932 … 1,1e493 10 19-20
Comp -9,2e63…(9,2e63)-1 8 19-20

Dá se na nich udělat více operací a funkcí než na celých číslech. Například tyto funkce vrátí skutečný výsledek:

sin(x) – sinus;

cos(x) – kosinus;

arctan(x) – arkustangens;

ln(x) – přirozený logaritmus;

sqrt(x) – druhá odmocnina;

exp(x) – exponent;

Booleovský typ

Proměnná typu Boolean může nabývat pouze dvou hodnot: true a false. Zde true odpovídá hodnotě 1 a false odpovídá nule. Booleovskou proměnnou můžete deklarovat takto:

S daty tohoto typu lze provádět porovnávání a logické operace: not, a, nebo, xor.

Typ postavy

Znakový datový typ je kolekce znaků používaných v konkrétním počítači. Proměnná tohoto typu nabývá hodnoty jednoho z těchto znaků a zabírá 1 bajt v paměti počítače. Slovo Char definuje hodnotu tohoto typu. Existuje několik způsobů, jak zapsat znakovou proměnnou (nebo konstantu):

  1. jako jeden znak uzavřený v apostrofech: ‚W‘, ‚V‘, ‚p‘;
  2. zadáním kódu znaku, jehož hodnota musí být v rozsahu od 0 do 255.
  3. pomocí konstrukce ^K, kde K je kód řídicího znaku. Hodnota K musí být o 64 větší než odpovídající kód řídicího znaku.

Relační operace a následující funkce jsou použitelné pro hodnoty znakového datového typu:

Succ(x)- vrátí další znak;

Před(x)- vrátí předchozí znak;

Ord(x)- vrátí hodnotu kódu znaku;

Chr(x)- vrátí hodnotu symbolu jeho kódem;

Velká písmena (x)- převádí písmena z intervalu ‚a‘...‘z‘ na velká písmena.

Pro efektivní práci s typem postavy doporučuji používat .

Typ řetězce

Řetězec v Pascalu je posloupnost znaků uzavřená v apostrofech a je označena slovem Řetězec. Počet znaků (délka řádku) nesmí přesáhnout 255. Pokud není délka řádku uvedena, bude automaticky určena na 255 znaků. Celkový pohled Deklarace proměnné řetězce vypadá takto:

Var<имя_переменной>:string[<длина строки>];

Každý znak v řádku má svůj vlastní index (číslo). Index prvního bajtu je 0, ale neukládá první znak, ale délku celého řetězce, což znamená, že proměnná tohoto typu bude zabírat 1 bajt další číslo proměnné v něm. Číslo prvního znaku je 1, máme-li například řetězec S=‘stroka‘, pak S=s;. V jedné z následujících lekcí bude datový typ string probrán podrobněji.

Výčtový datový typ

Výčtový datový typ představuje omezený počet identifikátorů. Tyto identifikátory jsou uzavřeny v závorkách a odděleny čárkami.

Typ Den=(pondělí, úterý, středa, čtvrtek, pátek, sobota, neděle);

Proměnná A může nabývat pouze hodnot specifikovaných v části Typ. Můžete také deklarovat proměnnou výčtového typu v sekci Var:

Var A: (pondělí, úterý);

NA tento typ jsou použitelné relační operace a je předem určeno, že pondělí

Datový typ intervalu

Když je potřeba zadat rozsah hodnot, pak se v takových situacích použije datový typ interval. Konstrukce použitá pro prohlášení je m..n, Kde m je minimální (počáteční) hodnota a n– maximální (konečná); zde m a n jsou konstanty, které mohou být celé číslo, znak, výčet nebo booleovský typ. Hodnoty typu interval lze popsat jak v sekci typy, tak v sekci popis proměnných.

Celkový pohled:

TYP<имя_типа> = <мин. значение>..<макс. значение>;

Znalost a pochopení datových typů je nedílnou součástí programování.

V této lekci se seznámíme s datovými typy v programovacím jazyce Turbo Pascal.

V jazyce Pascal jsou libovolné objekty, tzn. konstanty, proměnné, funkční hodnoty nebo výrazy jsou charakterizovány svými typy. Typ definuje sadu platných hodnot pro objekt a také sadu operací, které se na něj vztahují. Typ navíc určuje formát vnitřní reprezentace dat v paměti počítače. Pokud jde o typy objektů, Pascal je statický jazyk. To znamená, že typ objektu, například proměnné, je určen při jeho deklaraci a nelze jej později změnit.

Struktura datových typů v Pascalu:

Jednoduché typy jazyků
Mezi jednoduché typy patří ordinální, reálný, řetězcový a adresový (ukazatel). Všechny definují typ pouze jedné jediné hodnoty.

Řadové typy vyznačující se tím, že každá z nich má konečný počet možných hodnot, mezi nimiž je stanoven lineární řád. Každá hodnota může být spojena s určitým celým číslem - jeho pořadovým číslem.

Celočíselné typy- označují množiny celých čísel v různých rozsazích. Existuje pět celočíselných typů, které se liší rozsahem platných hodnot a velikostí paměti RAM, kterou zabírají. Integer typy jsou určeny identifikátory: Byte, ShortInt, Word, Integer, LongInt; jejich charakteristiky jsou uvedeny v následující tabulce.

Hodnoty celočíselných typů se zapisují do programu obvyklým způsobem:
123 4 -3 +345 -699
Přítomnost desetinné čárky v zápisu celého čísla je nepřijatelná. Bylo by chybou napsat celé číslo takto:
123.0
Kromě obvyklé desítkové formy zápisu je možné zapsat celá čísla v hexadecimálním formátu pomocí předpony $, například:
$01AF $FF $1A $F0A1B
Na velikosti písmen A, B, ..., F nezáleží.

Platné operace:

  • - zadání;
  • - všechny aritmetiky: +, - ,*, /, div, mod (s obyčejným dělením [/] je výsledek skutečný!);
  • - srovnání<, >, >=, <=, <>, =.
Booleovský typ- sestává pouze ze dvou hodnot: False (false) a True (true). Slova False a True jsou v jazyce definována a jsou to ve skutečnosti logické konstanty. Velikost písmen v jejich psaní není důležitá: FALSE = false. Hodnoty tohoto typu jsou výsledkem vyhodnocení podmíněných a logických výrazů a účastní se všech druhů podmíněných operátorů jazyka.
Platné operace:
  • - zadání;
  • - srovnání:<, >, >=, <=, <>, =;
  • - logické operace: NOT, OR, AND, XOR
Typ postavy (Char) je datový typ skládající se z jednoho znaku (znak, písmeno, kód). Hodnota znaku může být libovolný znak ze znakové sady ASCII. Pokud má symbol grafické znázornění, pak je v programu napsán v jednoduchých uvozovkách (apostrofech), například:
"w" "s" "." "*" " "-(mezera)
Pro znázornění samotného apostrofu je jeho obraz zdvojen: """".
Pokud znak nemá grafické znázornění, například znak tabulátoru nebo znak pro návrat vozíku, můžete použít ekvivalentní formu zápisu hodnoty znaku, která se skládá z předpony # a kódu ASCII znaku:
#9 #32 #13
Platné operace:
  • - zadání;
  • - srovnání:<, >, >=, <=, <>, =. Největší znak je znak s větším číslem ASCII.
Typ řetězce (String, String[n])- Tento datový typ definuje sekvence znaků - řetězce. Parametr n určuje maximální počet znaků na řádek. Pokud není specifikováno, předpokládá se n=255. Hodnota typu „string“ v programu je zapsána jako sekvence znaků uzavřených v jednoduchých uvozovkách (apostrofech), např.
"Toto je řetězec"
"1234" je také řetězec, nikoli číslo
"" - prázdný řetězec

Platné operace:
  • - zadání;
  • - sčítání (zřetězení, sloučení); například S:= "Zima"+" "+"přišla!";
  • - srovnání:<, >, >=, <=, <>, =. Řetězce jsou považovány za rovnocenné, pokud jsou stejně dlouhé a jsou ekvivalentní znak po znaku.
Skutečné typy- označují množiny reálných čísel v různých rozsazích. Existuje pět skutečných typů, které se liší rozsahem přípustných hodnot a velikostí obsazené paměti RAM. Reálné typy jsou určeny identifikátory: Real, Single, Double, Extended, Comp; jejich charakteristiky jsou uvedeny v následující tabulce.

Typ komp ačkoli je klasifikován jako skutečný typ, je to ve skutečnosti celé číslo s velmi velkým rozsahem hodnot.
Hodnoty reálných typů lze v programu zapsat několika způsoby:
1.456 0.000134 -120.0 65432
+345 0 -45 127E+12
-1,5E-5 -1,6E+12 5E4 0,002E-6

Bylo by chybou napsat reálné číslo takto:
0,5 (správně 0,5)
12. (správně 12.0 nebo 12)

Reálné číslo ve formě s plovoucí desetinnou čárkou (vědecká forma) se zapisuje jako dvojice
<мантисса>E<порядок>
Toto označení je chápáno jako „mantisa vynásobená deseti na sílu rovnou řádu“. Například,
-1,6E+12 odpovídá -1,6 1012

Platné operace:
- zadání;
- všechny aritmetiky: +, - ,*, /;
- srovnání:<, >, >=, <=, <>, =.

Při porovnávání reálných čísel byste měli pamatovat na to, že kvůli nepřesnosti jejich znázornění v paměti počítače (kvůli nevyhnutelnosti zaokrouhlování) byste se měli vyhnout pokusům o stanovení striktní rovnosti dvou reálných hodnot. Existuje šance, že rovnost bude falešná, i když ve skutečnosti není.

Rozsah nebo (omezený typ) není předdefinovaným jazykovým typem (jako je Integer nebo Char), a proto k němu není přidružen žádný identifikátor. Tento typ je uživatelským vstupem. Pomocí něj můžeme definovat nový typ, který bude obsahovat hodnoty pouze z omezeného podrozsahu nějakého základního typu. Základním typem může být pouze celočíselný typ, typ Char (znak) a jakýkoli typ výčtu zavedený programátorem.

Chcete-li zavést nový typ - rozsah - musíte v bloku popisu typu TYP označit název zadávaného typu a hranice rozsahu pomocí speciálního symbolu rozsahu ".." (dvě tečky za sebou):
TYP
Století = 1..21; (podrozsah celočíselného typu)
CapsLetters = "A"."Z"; (podrozsah typu Char)

Typy strukturovaných jazyků

Mezi strukturované typy patří: pole, záznam, sada, soubor atd. Všechny definují typ (nebo typy) nějaké datové struktury.

Pole- uspořádaná struktura dat stejného typu, která je ukládá sekvenčně. Pole musí mít rozměry, které určují, kolik prvků je ve struktuře uloženo. K jakémukoli prvku v poli lze dosáhnout jeho indexem.

Typ pole je určen konstrukcí:
Pole [rozsah] ElementType;

Rozsah v hranatých závorkách označuje hodnoty indexu prvního a posledního prvku ve struktuře. Příklady deklarací typů a proměnných:

TYPE Vector = pole Real; VAR V1: Vektor;
V2: pole Byte;

Zde je proměnná V1 definována pomocí výše popsaného typu Vector; typ proměnné V2 je konstruován přímo ve fázi jejího popisu.
Jako typ prvku pole můžete také zadat pole, čímž vytvoříte vícerozměrné struktury. Například popis dvourozměrné struktury (matice) bude vypadat takto:
VAR M1: pole pole Byte; Totéž lze napsat mnohem kompaktněji: VAR M2: pole Byte;

K prvku pole se přistupuje zadáním jeho indexu, například:

Writeln(V1); (zobrazení prvního prvku pole V1) readln(M2) (zadání třetího prvku druhého řádku matice M2);
Tím končí lekce o datových typech, text byl téměř kompletně zkopírován a vložen (odkaz bude níže), protože Nevidím smysl vyprávět tento materiál vlastními slovy. Pokud je rozdíl mezi datovými typy alespoň trochu jasný, je to již dobré.

Při popisu proměnné musíte uvést její typ. Typ proměnné popisuje sadu hodnot, které může nabývat, a akce, které s ní lze provádět. Deklarace typu určuje identifikátor, který představuje typ.

Jednoduché typy se dělí na standardní (ordinální) a výčtové (omezené).

Standardní typy

Turbo Pascal má čtyři vestavěné standardní typy: integer, real, boolean a char.

Typ celého čísla (integer)

Turbo Pascal má pět vestavěných celočíselných typů: shortint, integer, longint, byte a word. Každý typ označuje určitou podmnožinu celých čísel, jak ukazuje následující tabulka.

Vestavěné celočíselné typy.

Rozsah

Formát

8 bitů se znaménkem

16 bitů se znaménkem

2147483648 +2147483647

32 bit podepsaný

8 bitů bez znaménka

16 bitů bez znaménka

Aritmetické operace s operandy celočíselného typu se provádějí podle následujících pravidel:

  1. Typ celočíselné konstanty je vestavěný celočíselný typ s nejmenším rozsahem, který zahrnuje hodnotu této celočíselné konstanty.
  2. V případě binární operace (operace, která používá dva operandy) jsou oba operandy převedeny na svůj společný typ předtím, než je s nimi operace provedena. Běžným typem je vestavěný celočíselný typ s nejmenším rozsahem, který zahrnuje všechny možné hodnoty obou typů. Například společný typ pro celé číslo a celé číslo o délce bajtů je celé číslo a společný typ pro celé číslo a celé číslo o délce slova je dlouhé celé číslo. Akce se provádí podle přesnosti generického typu a typem výsledku je generický typ.
  3. Výraz napravo od operátoru přiřazení je vyhodnocen bez ohledu na velikost proměnné vlevo.

Operace prováděné na celých číslech:

"+" - sčítání

"-" - odčítání

"*" - násobení

SQR - kvadratura

DIV - po dělení zahodí zlomkovou část

MOD - získání celočíselného zbytku po dělení

ABS - číselný modul

RANDOM(X) - získání náhodného čísla od 0 do X

A:=100; b:=60; a DIV b výsledek - 1 a MOD b výsledek - 40

Proměnné typu integer jsou popsány takto:

var seznam proměnných: typ;

Například: var а,р,n:integer;

Skutečný typ (skutečný)

Typ reál je podmnožinou reálných čísel, která mohou být reprezentována ve formátu s plovoucí desetinnou čárkou s pevným počtem číslic. Zápis hodnoty ve formátu s plovoucí desetinnou čárkou obvykle zahrnuje tři hodnoty – m, b a e – takové, že m*b e, kde b je vždy 10 a mae jsou celočíselné hodnoty v reálném rozsahu. Tyto hodnoty m a e dále určují rozsah a přesnost skutečného typu.

Existuje pět typů reálných typů: real, single, double, exnende, comp. Skutečné typy se liší v rozsahu a přesnosti hodnot s nimi spojených

Rozsah a desetinné číslice pro reálné typy

Rozsah

Čísla

2,9x10E-39 až 1,7x10E 38

1,5x10E-45 až 3,4x10E 38

5,0x10E-324 až 1,7x10E 308

3,4x10E-493 až 1,1x10E 403

2E 63 až 2E 63

Operace prováděné na reálných číslech:

  • Všechny operace jsou platné pro celá čísla.
  • SQRT(x) je druhá odmocnina z x.
  • SIN(X), COS(X), ARCTAN(X).
  • LN(X) je přirozený logaritmus.
  • EXP(X) je exponent X (e x).
  • EXP(X*LN(A)) - umocňování (A x).
  • Typ převodních funkcí:
    • TRUNC(X) - zahodí zlomkovou část;
    • ROUND(X) - zaokrouhlení.
  • Některá pravidla aritmetických operací:
    • Pokud aritmetická operace obsahuje čísla typu real a integer, bude výsledek typu real.
    • Všechny součásti výrazu se zapisují na jeden řádek.
    • Používají se pouze závorky.
    • Nemůžete dát dvě aritmetická znaménka za sebou.

Proměnné reálného typu jsou popsány takto:

var seznam proměnných: typ;

Například:

var d,g,k:real ;

Typ znaku (znak)

Typ char je jakýkoli znak uzavřený v apostrofech. Chcete-li reprezentovat apostrof jako znakovou proměnnou, musíte jej uzavřít do apostrofu: ''''.

Každý znak má svůj kód a číslo. Sériová čísla číslic 0,1..9 jsou řazena vzestupně. Sériová čísla písmen jsou také řazena vzestupně, ale nemusí nutně následovat za sebou.

Pro znaková data platí následující znaky porovnání:

> , < , >=, <=, <> .

Například: 'A'< ‘W’

Funkce, které se vztahují na znakové proměnné:

  1. ORD(X) - určuje pořadové číslo symbolu X. ord (‘a‘) =97 ;
  2. CHR(X) - identifikuje znak číslem.
  3. chr(97) ='a';
  4. PRED(X) - vrátí znak předcházející znaku X pred (‘B’) =’A’;

SUCC(X) - vrátí znak následující za znakem X succ (‘A‘) =‘B‘;

Výčtový datový typ je tak pojmenován, protože je specifikován jako seznam konstant v přesně definovaném pořadí a v přesně definovaném množství. Výčtový typ se skládá ze seznamu konstant. Proměnné tohoto typu mohou nabývat hodnoty kterékoli z těchto konstant. Popis typu výčtu vypadá takto:

Typ<имя типа>=(seznam konstant) ; Var<имя переменной>:<имя типа>;

Kde<список констант>- jedná se o speciální typ konstant, které se oddělují čárkami a mají vlastní pořadové číslo, začínající od 0.

Například:

typ direction=(sever, jih, zapad, vychod) ; měsíc=(červen, červenec, srpen, leden) ; kapacita=(kbelík, sud, kanystr, nádrž) ; var rotace:směr; odjezd:měsíc; objem:kapacita;

var turn:(sever, jih, západ, východ) ; odjezd: (červen, červenec, srpen, leden) ; objem: (kbelík, sud, kanystr, nádrž);

Můžete provádět následující operátory přiřazení:

Rotace:=jih; odjezd:=srpen; objem:=nádrž;

ale nemůžete dělat smíšené úkoly:

Odjezd:=jih; svazek:=srpen;

Následující funkce platí pro proměnné výčtového typu:

1. ORD - sériové číslo

2. PRED - předchozí prvek

3. SUCC - následný prvek.

PRED (hlaveň) = vědro; SUCC (jih) =západ; ORD (červenec) =1;< юг, июнь < январь имеют значения TRUE, а юг>Proměnné výčtového typu lze porovnávat, protože jsou seřazeny a očíslované. Tedy výrazy: sever<бочка значение FАLSE.

západ a tank

Omezený typ

Pokud proměnná nepřijímá všechny hodnoty svého typu, ale pouze v určitém rozsahu, lze ji považovat za proměnnou omezeného typu. Každý typ s omezeními je definován uložením omezení na základní typy.

Je popsán následovně:<имя типа>TYP

=konstanta1 ..konstanta2

  1. V tomto případě je třeba dodržovat následující pravidla:
  2. Obě omezené konstanty musí být stejného typu.
  3. Jako základní typ lze použít jakýkoli jednoduchý typ kromě skutečného.
Počáteční hodnota při definování omezeného typu nesmí být větší než konečná hodnota.

index typu =0 ..63 ; písmeno=’a’..’z’; var char1,char2:dopis; a,g:index ;

Můžete ji ihned popsat v sekci popis proměnné:

var a,g:0 ..63 ; char1,char2:'a'...'z'.

Stejně jako v jiných programovacích jazycích na vysoké úrovni jsou typy proměnných v Pascalu optimalizovány pro provádění úkolů různých typů, mají různý rozsah hodnot a délku v bajtech.

Rozdělení typů proměnných

Typy proměnných v Pascalu se dělí na jednoduché a strukturované. Jednoduché typy zahrnují skutečné a ordinální typy. Strukturované zahrnují pole, záznamy, sady a soubory. Samostatně se rozlišují ukazatele, objekty a procedurální typy.

Podívejme se na ordinální a reálné typy. Ordinální typy zahrnují 5 celočíselných typů, typ výčtu a typ rozsahu.

Řadové typy

Existuje 5 celočíselných typů, které se liší délkou bajtu a rozsahem hodnot.

Délka Byte a ShortInt je 1 bajt. Rozdíl mezi nimi je v tom, že Byte ukládá pouze nezáporné hodnoty, zatímco ShortInt umožňuje ukládat záporné (od -128 do +127). Typy Word a Integer spolu souvisí podobným způsobem, jen s tím rozdílem, že jejich velikost je 2 bajty.

A konečně, LongInt umožňuje ukládat záporné i kladné hodnoty pomocí 4 bajtů - v 16. mocnině číselné dimenze na obou stranách nuly. Různé typy proměnných v Pascalu přispívají k efektivnímu řešení uživatelských úloh, protože v každém konkrétním případě může být vyžadován malý i velký rozsah hodnot a také může existovat omezení na množství přidělené paměti.

Je důležité pochopit, že nula zabírá tolik místa v paměti jako jakékoli jiné číslo. Při vytváření rozsahu hodnot bude tedy minimální záporné číslo v absolutní hodnotě o jednu větší než kladné: například od -128 do +127.

Proměnné patřící do mohou mít hodnotu TRUE (true) nebo FALSE (false) a vyžadují 1 bajt paměti.

Typ CHAR umožňuje uložit libovolný z mnoha znaků, které existují v paměti počítače. Přitom v symbolických proměnných v Pascalu je skutečně uložen pouze kód znaku, podle kterého se zobrazuje jeho grafická podoba.

Skutečné typy

Mezi typy proměnných v Pascalu existuje několik číselných s možností zápisu zlomkové části. Rozdíly mezi typy Single, Real, Double a Extended spočívají v rozsahu přijatých hodnot, počtu platných číslic za desetinnou čárkou a velikosti v bajtech.

Podle výše uvedeného pořadí bude proměnná každého typu zabírat 4, 6, 8 nebo 10 bajtů.

Pole

Strukturované datové typy jsou složité a umožňují kombinovat řadu jednoduchých hodnot v rámci jedné proměnné. Ukázkovým příkladem je pole, které lze definovat takto:

String=pole znaků;

Získali jsme tak typ nazvaný String, který nám umožňuje definovat proměnné dlouhé až 100 znaků. Poslední řádek přímo určuje jednorozměrné pole Y typu String. Proměnné v Pascalu jsou popsány umístěním identifikátoru na levou stranu a hodnoty proměnné napravo za rovnítko.

Rozsah zapsaných indexů umožňuje přístup ke každému konkrétnímu prvku pole:

V tomto případě čteme druhý prvek dříve vytvořeného pole Y.

Řetězcové proměnné v Pascalu jsou také speciálním případem jednorozměrného pole, protože řetězec je posloupnost znaků, tedy prvků typu char.

Příspěvky

Záznam se skládá z několika polí vyplněných daty libovolného typu kromě souboru. Obecně je tento typ proměnné podobný databázovému prvku. Můžete například zadat jméno a telefonní číslo osoby:

typ NTel = Záznam

První řádek vlevo označuje název typu a vpravo záznam servisního slova. Druhý řádek obsahuje pole se jménem, ​​třetí - telefonní číslo. Slovo „end“ znamená, že jsme zadali všechna pole, která jsme chtěli, a tím je proces vytváření záznamu dokončen.

Nakonec v posledním řádku nastavíme proměnnou One, která je typu NTel.

Můžete přistupovat jak k záznamu jako celku, tak k jeho jednotlivým komponentám, například: one.NAME (tj. název_proměnné. název_pole_záznamu).

Soubory

Pascal umožňuje pracovat s textem, psanými a nepsanými soubory, což je strukturovaná sekvence komponent, které mají stejný typ.

Při čtení nebo zápisu do souboru lze použít buď celou adresu, nebo její zkrácenou formu:

„C:\Složka\Soubor2.txt“

Krátká forma se používá, když je soubor umístěn ve složce, kde je uložen program, který k němu přistupuje. Plnou formu lze použít za jakýchkoliv okolností.

Proměnnou typu souboru můžete nastavit následovně:

f1: soubor celého čísla;

Pro práci se soubory se používají různé funkce a procedury, které přidruží proměnnou k souboru na disku, otevřou ji pro čtení, zápis a přepis, po dokončení zavřou, umožní vytvořit nový název a soubor z počítače smazat.

Na závěr

Bez možnosti používat různé typy proměnných v Pascalu nebude uživatel schopen realizovat ani ten nejjednodušší úkol. Aby program mohl provést algoritmus bez chyb, je nutné se naučit funkční slova i syntaxi, protože stroj „rozumí“ příkazům pouze tehdy, jsou-li napsány jediným správným způsobem.

Federální agentura pro vzdělávání

Abstraktní

"TYPY DAT V PASCALU"

1. Datové typy

Jakékoliv údaje, tzn. konstanty, proměnné, vlastnosti, funkční hodnoty nebo výrazy jsou charakterizovány svými typy. Typ definuje sadu platných hodnot, které může objekt mít, a také sadu platných operací, které na něj lze použít. Kromě toho typ určuje také formát vnitřní reprezentace dat v paměti PC.

Obecně se jazyk Object Pascal vyznačuje rozvětvenou strukturou datových typů (obr. 1.1). Jazyk poskytuje mechanismus pro vytváření nových typů, díky němuž může být celkový počet typů použitých v programu libovolně velký.

Data zpracovávaná v programu jsou rozdělena na proměnné, konstanty a literály:

Konstanty reprezentují data, jejichž hodnoty jsou nastaveny v sekci deklarace konstant a během provádění programu se nemění.

Proměnné jsou deklarovány v sekci deklarace proměnných, ale na rozdíl od konstant dostávají své hodnoty během provádění programu a tyto hodnoty lze měnit. Na konstanty a proměnné lze odkazovat jménem.

Doslovný nemá žádný identifikátor a je reprezentován přímo hodnotou v textu programu.

Typ definuje množinu hodnot, které mohou datové prvky nabývat, a množinu operací s nimi povolených.

Tato a čtyři následující kapitoly poskytují podrobné popisy každého typu.

1.1 Jednoduché typy

Jednoduché typy zahrnují ordinální, reálné a datum a čas.

Řadové typy se liší tím, že každá z nich má konečný počet možných hodnot. Tyto hodnoty mohou být určitým způsobem seřazeny (odtud název typů), a proto může být každá z nich spojena s nějakým celým číslem - pořadovým číslem hodnoty.

Skutečné typy, přísně vzato, mají také konečný počet hodnot, který je určen formátem vnitřní reprezentace reálného čísla. Počet možných hodnot reálných typů je však tak velký, že ke každé z nich není možné přiřadit celé číslo (jeho počet).

Typ data a času navržený pro ukládání data a času. Ve skutečnosti pro tyto účely používá skutečný formát.

1.1.1 Pořadové typy

K ordinálním typům patří (viz obrázek 1.1) celočíselné, logické, znakové, výčtové a rozsahové typy. Na kteroukoli z nich lze aplikovat funkci Ord(x), která vrací pořadové číslo hodnoty výrazu X.


Rýže. 1.1 - Struktura datových typů

Pro celý typů, funkce ord(x) vrací hodnotu samotného x, tj. Ord(X) = x pro x patřící libovolnému celý typ. Použití Ord(x) na logický , symbolické a vyčíslitelné typy dává kladné celé číslo v rozsahu 0 až 1 ( booleovský typ), od 0 do 255 ( symbolický), od 0 do 65535 ( spočítatelný). Typová řada zachovává všechny vlastnosti základního ordinálního typu, takže výsledek aplikace funkce ord(x) na něj závisí na vlastnostech tohoto typu.

Funkce můžete také použít na řadové typy:

před(x)- vrátí předchozí hodnotu ordinálního typu (hodnotu, která odpovídá ordinálnímu číslu ord(x) -1, tj. ord(pred(x)) = ord(x) - 1;

succ(x)- vrátí další hodnotu ordinálního typu, která odpovídá řadovému číslu ord(x) +1, tedy ord(Succ(x)) = ord(x) + 1.

Například pokud program definuje proměnnou

pak funkce PRED(c) vrátí znak "4" a funkce SUCC(c) vrátí znak "6".

Představíme-li si jakýkoli ordinální typ jako uspořádanou množinu hodnot, rostoucí zleva doprava a zabírající určitý segment na číselné ose, pak funkce pred(x) není definována pro levou a succ (x) pro pravou konec tohoto segmentu.

Celočíselné typy . Rozsah možných hodnot celočíselných typů závisí na jejich vnitřní reprezentaci, která může být jeden, dva, čtyři nebo osm bajtů. V tabulce 1.1 ukazuje názvy celočíselných typů, délku jejich vnitřní reprezentace v bajtech a rozsah možných hodnot.

Tabulka 1.1 - Typy celých čísel

Jméno Délka, bajty Rozsah hodnot
Kardinál 4 0. .. 2 147 483 647
Byte 1 0...255
Shortint 1 -128...+127
Smallint 2 -32 768...+32 767
Slovo 2 0...65 535
Celé číslo 4
Longint 4 -2 147 483 648...+2 147 483 647
Int64 8 -9*1018...+9*1018
LongWord 4 0. . .4 294 967 295

Typy LongWord A Int64 byly poprvé představeny ve verzi 4 a typy Smallint A Kardinál není k dispozici v Delphi 1. Typ celé číslo pro tuto verzi trvá 2 bajty a má rozsah hodnot od -32768 do +32767, tedy stejný jako Smallint .

Při používání procedur a funkcí s celočíselnými parametry byste se měli řídit „vnořováním“ typů, tzn. kdekoli jej lze použít slovo, povoleno používat Byte(ale ne naopak), v Longint"vstoupí" Smallint, což zase zahrnuje Shortint .

Seznam procedur a funkcí použitelných pro celočíselné typy je uveden v tabulce. 1.2. Písmena b, s, w, i, l označují výrazy následujících typů: Byte , Shortint, Word, Integer a Longint ,

x je výraz kteréhokoli z těchto typů; písmena vb, vs, vw, vi, vl, vx označují proměnné odpovídajících typů. Nepovinný parametr je uveden v hranatých závorkách.

Tabulka 1.2 - Standardní postupy a funkce platné pro celé typy

Odvolání Typ výsledku Akce
abs(x) x Vrátí modul x
chr(b) Char Vrátí znak podle jeho kódu
dec(vx[,i]) - Snižuje hodnotu vx o i, a pokud není i - o 1
inc(vx[,i]) - Zvýší hodnotu vx o i, a v nepřítomnosti i - o 1
ahoj(w) Byte Vrátí nejvyšší úklon argumentu
ahoj (já) Stejný Vrátí třetí bajt
Lo(i) Vrátí dolní bajt argumentu
Nízký) Stejný
lichý(l) Boolean Vrátí hodnotu True, pokud je argumentem liché číslo
Náhodné (w) Stejné jako parametr Vrátí pseudonáhodné číslo rovnoměrně rozložené v rozsahu 0...(w-l)
sqr(x) X Vrátí druhou mocninu argumentu
vyměnit (i) Celé číslo Vymění bajty ve slově
vyměnit (w) Slovo Stejný

Při práci s celými čísly bude typ výsledku odpovídat typu operandů, a pokud jsou operandy různých celočíselných typů, společný typ, který zahrnuje oba operandy. Například při provozu s zkratka A slovo běžný typ bude celé číslo. Ve výchozím nastavení kompilátor Delphi nevytváří kód pro kontrolu, zda je hodnota mimo rozsah, což může vést k nedorozuměním.

Booleovské typy . Mezi logické typy patří Boolean, ByteBool, Bool, wordBool A LongBool. Ve standardním Pascalu je definován pouze typ Boolean, jsou do Object Pascal zavedeny další logické typy kvůli kompatibilitě s Windows: typy Boolean A ByteBool každý zabírá jeden bajt, Bool A WordBool- 2 bajty každý, LongBool- 4 bajty. Booleovské hodnoty mohou být jednou z předem deklarovaných konstant False nebo True.

Protože booleovský typ je ordinální typ, lze jej použít v příkazu smyčky počitatelného typu. V Delphi 32 pro Boolean význam

Ord (True) = +1, zatímco pro ostatní typy ( Boole, WordBool atd.)

Ord(True) = -1, takže tyto druhy operátorů je třeba používat opatrně! Například pro verzi Delphi 6 je spustitelný příkaz showMessage(" --- ") v následující smyčce pro nikdy nebude provedeno:

for L:= False to True do

ShowMessage("--);

Pokud nahradíme parametr smyčky typu L v předchozím příkladu za Boolean, smyčka se spustí a zpráva se na obrazovce objeví dvakrát. [Pro verze Delphi 1 a 2 ord (True) =+1 pro jakýkoli booleovský typ.]

Typ postavy . Hodnota typu znaku je množina všech znaků PC. Každému znaku je přiřazeno celé číslo v rozsahu 0...255. Toto číslo slouží jako kód pro interní reprezentaci symbolu, je vráceno funkcí ord.

Pro kódování ve Windows se používá kód ANSI (pojmenovaný podle American National Standard Institute, amerického standardizačního institutu, který tento kód navrhl). První polovina znaků PC s kódy 0...127 odpovídá tabulce 1.3. Druhá polovina znaků s kódy 128...255 se pro různá písma liší. Standardní písma Windows Arial Cyr, Courier New Cyr a Times New Roman používají posledních 64 kódů (od 192 do 256) k reprezentaci znaků azbuky (bez písmen „ё“ a „Ё“): „A“... „Z“ jsou zakódovány hodnoty 192..223, „a“... „i“ - 224...255. Symboly „Ё“ a „е“ mají kódy 168 a 184.

Tabulka 1.3 - Kódování znaků v souladu se standardem ANSI

Kód Symbol Kód. Symbol Kód. Symbol Kód Symbol
0 NUL 32 B.L. 64 @ 96 "
1 ZON 33 ! 65 A 97 A
2 STX 34 66 V 98 b
3 ETX 35 # 67 S 99 S
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 E
6 ACK 38 & 70 F 102 F
7 BEL 39 " 71 G 103 d
8" B.S. 40 ( 72 N 104 h
9 HT 41 ) 73 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 NA 107 k
12 FF 44 F 76 L 108 1
13 ČR 45 - 77 M 109 m
14 TAK 46 78 N 110 n
15 S.I. 47 / 79 0 111 Ó
16 DEL 48 0 80 R 112 P
17 DC1 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC 4 52 4 84 T 116 t
21 N.A.K. 53 5 85 U 117 u
22 SYN 54 6 86 PROTI 118 proti
23 ETB 55 7 87 W 119 W
24 CAN 56 8 88 X 120 x
25 E.M. 57 9 89 Y 121 U
26 SUB 58 : 90 Z .122 z
27 ESC 59 ; 91 t 123 {
28 FS 60 < 92 \ 124 1
29 G.S. 61 = 93 ] 125 }
30 R.S. 62 > 94 L 126 ~
31 NÁS 63 F 95 127 r

Znaky s kódy 0...31 odkazují servisní kódy. Pokud jsou tyto kódy použity ve znakovém textu programu, jsou považovány za prázdné znaky.




Nahoru