Telefony 

Jaké datové typy se používají v jazyce Pascal. Ordinální datové typy v Pascalu. Výčtový datový typ

Ordinální typy zahrnují (viz obrázek 4.1) celočíselné, logické, znakové, výčtové a rozsahové typy. Na kteroukoli z nich je použitelná funkce ORD(X), která vrací pořadové číslo hodnoty výrazu X. U celočíselných typů vrací funkce ORD(X) samotnou hodnotu X, tzn. ORD(X) = X pro X patřící k libovolnému typu shellu. Použití ORD(X) na booleovské, znakové a výčtové typy vytvoří kladné celé číslo v rozsahu 0 až 1 (logická hodnota), 0 až 155 (znak), 0 až 65535 (výčet). Typ rozsahu si zachovává všechny vlastnosti základního ordinálního typu, takže výsledek použití funkce ORD(X) na něj závisí na vlastnostech tohoto typu.

Funkce můžete také použít na ordinální typy:

PRED (X) - vrací předchozí hodnotu ordinálního typu (hodnotu, která odpovídá ordinálnímu číslu ORD(X) - 1), tzn.

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

SUCC (X) - vrací další pořadovou hodnotu, která odpovídá pořadovému číslu ORD(X) +1, tzn.

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

Například pokud program definuje proměnnou

pak funkce PRED(C) vrátí hodnotu „4“ a funkce SUCC(C) vrátí hodnotu „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.

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

Tabulka 4.1

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 lze použít WORD, lze použít BYTE (ale ne naopak), LONGINT „zahrnuje“ INTEGER, což zase zahrnuje SHORTINT.

Seznam procedur a funkcí použitelných pro celočíselné typy je uveden v tabulce 4.2. Dopisy b, s, w, i, l jsou označeny výrazy typu BYTE, SHORTINT, WORD, INTEGER a LONGINT, x je výraz kteréhokoli z těchto typů; dopisy 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 4.2

Standardní postupy a funkce použitelné 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]) - Sníží 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(i) Byte Vrátí vysoký bajt argumentu
ahoj(w) Stejný Stejný
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)
sgr(x) X Vrátí druhou mocninu argumentu
vyměnit (i) Celé číslo Vymění bajty ve slově
vyměnit (w) Slovo

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ů, typu operandu, který má maximální mocninu (maximální rozsah hodnot). Případné přetečení výsledku není nijak kontrolováno, což může vést například k nedorozuměním:

a:= 32767; (Maximální možná hodnota INTEGER)

x:= a + 2; (Přetečení při vyhodnocování tohoto výrazu !}

y:= LongInt(a)+2; (Žádné přetečení po přetypování proměnné na výkonnější typ)

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

V důsledku spuštění programu dostaneme

Booleovský typ. Booleovské hodnoty mohou být jednou z předem deklarovaných konstant FALSE nebo TRUE. Platí pro ně pravidla:

Falešný< True;

succ(False)= True;

před(pravda) = nepravda.

Protože booleovský typ je ordinální typ, lze jej použít v operátoru počitatelného typu, například:

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

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.

ASCII kód ​​se používá pro kódování ( Americký standardní kód pro výměnu informací- Americký standardní kód pro výměnu informací). Jedná se o 7bitový kód, tzn. umí zakódovat pouze 128 znaků v rozsahu od 0 do 127. Zároveň v 8bitovém bajtu přiděleném pro uložení znaku v Turbo Pascalu můžete zakódovat dvakrát tolik znaků v rozsahu od 0 do 255. první polovina znaků PC s kódy 0...127 odpovídá standardu ASCII (tabulka 4.3). Druhá polovina znaků s kódy 128...255 není omezena rigidním rámcem normy a lze ji měnit na různých typech PC (v příloze 2 jsou uvedeny některé běžné možnosti kódování těchto znaků).

Tabulka 4.3

Kódování znaků podle standardu ASCII
Kód Symbol Kód Symbol Kód Symbol Kód Symbol
NUL B.L. ® "
ZON ! A A
STX " V b
ETX # S S
EOT $ D d
ENQ % E E
POŽÁDAT & F F
BEL " G G
B.S. ( H h
NT ) i
LF * J j
VT + k k
FF , L i
ČR - M m
TAK . N n
S.I. / O
DEL p P
DC1 Q q
DC2 R r
DC3 S s
DC4 T t
N.A.K. U u
SYN PROTI PROTI
ETB w w
CAN X X
E.M. U U
SUB : z z
ESC / [ {
FS < \ l
G.S. = ] }
R.S. > ^ ~
NÁS ? - n

Znaky s kódy 0...31 odkazují na servisní kódy. Pokud jsou tyto kódy použity ve znakovém textu programu, jsou považovány za prázdné znaky. Při použití v I/O operacích mohou mít následující nezávislý význam:

Symbol Kód Význam
BEL Volání; Zobrazení tohoto symbolu je doprovázeno zvukový signál
NT Horizontální tabulka; při zobrazení na obrazovce přesune kurzor na pozici, která je násobkem 8 plus 1 (9, 17, 25 atd.)
LF Řádkový posuv; při jeho zobrazení na obrazovce budou všechny následující znaky vypsány od stejné pozice, ale na dalším řádku
VT Vertikální záložka; při zobrazení na obrazovce je nahrazen speciálním znakem
FF Spuštění stránky; při výstupu na tiskárnu tvoří stránku, při výstupu na obrazovku je nahrazena speciálním znakem
ČR Návrat vozíku; zadává se stisknutím klávesy Enter (při zadávání pomocí READ nebo READLN to znamená příkaz „Enter“ a není umístěn ve vstupní vyrovnávací paměti; při výstupu to znamená příkaz „Pokračovat ve výstupu od začátku aktuálního řádku“)
SUB Konec souboru; zadává se z klávesnice stisknutím Ctrl-Z; při výstupu je nahrazen speciálním znakem
SSC Konec práce; zadává se z klávesnice stisknutím klávesy ESC; při výstupu je nahrazen speciálním znakem

Relační operace, stejně jako vestavěné funkce, jsou použitelné pro typ CHAR: СНR(В) - funkce typu CHAR; převede výraz B typu BYTE na znak a vrátí jej s jeho hodnotou;

UPCASE(CH) - funkce typu CHAR; vrátí velké písmeno, pokud je CH malé písmeno latinky, jinak vrátí samotný znak CH, například:

cl:= UpCase("s") ;

c2:= UpCase ("Ф") ;

WriteLn(cl," ",c2)

Protože funkce UPCASE nezpracovává azbuku, výsledkem je spuštění tohoto

programy se zobrazí na obrazovce

Typ výčtu. Výčtový typ je určen výčtem hodnot, které může přijímat. Každá hodnota je pojmenována nějakým identifikátorem a je umístěna v seznamu ohraničeném závorkami, například:

barvy =(červená, bílá, modrá);

Použití výčtových typů činí programy vizuálnějšími. Pokud například program používá data spojená s měsíci v roce, pak následující fragment programu:

TypeMonth=(leden,únor,březen,duben,květen,červen,červenec,srpen,září,říjen,listopad,prosinec);

měsíc: TypeMonth;

if month = Aug then WriteLn("Bylo by hezké jet k moři!");

Bylo by to, vidíte, velmi jasné. Běda! V Turbo Pascalu nemůžete v identifikátorech používat azbuku, takže jsme nuceni psát takto:

TypMěsíc=(leden,únor,březen,květen,červen,červenec,srpen,září,říjen,nov,dec);

měsíc: TypeMonth;

if month = aug then WriteLn("Bylo by hezké jet k moři!");

Korespondence mezi hodnotami výčtového typu a pořadovými čísly těchto hodnot je stanovena pořadím výčtu: první hodnota v seznamu obdrží pořadové číslo 0, druhá - 1 atd. Maximální kapacita výčtového typu je 65536 hodnot, takže ve skutečnosti výčtový typ definuje určitou podmnožinu celého typu WORD a lze jej považovat za kompaktní deklaraci skupiny celočíselných konstant s hodnotami 0, 1 atd.

Použití výčtových typů zvyšuje spolehlivost programů tím, že vám umožňuje řídit hodnoty, které odpovídající proměnné přijímají. Uveďme například následující vyjmenované typy:

barvy = (černá, červená, bílá);

ordenal= (jeden, dva, tři);

dny = (pondělí, úterý, středa);

Pokud jde o sílu a vnitřní reprezentaci, všechny tři typy jsou ekvivalentní:

ord(černá)=0, ..., ord(bílá)=2,

ord(jedna)=0, ...ord(tři)=2,

ord(pondělí)=0, ...ord(středa)=2.

Pokud jsou však proměnné definovány

col:colors; num:ordenal;

pak jsou operátoři povoleni

num:= succ(dva);

den:= před(úterý);

ale nepřijatelné

Jak již bylo zmíněno, existuje vzájemná korespondence mezi hodnotami výčtového typu a sadou celých čísel zadaných funkcí ORD(X). Turbo Pascal také umožňuje obrácený převod: jakýkoli výraz typu WORD lze převést na hodnotu výčtového typu, pokud hodnota výrazu celé číslo nepřekročí power1™ výčtového typu. Této konverze je dosaženo použitím automaticky deklarované funkce s názvem výčtového typu (viz část 4.4). Například pro výše uvedenou deklaraci typu jsou ekvivalentní následující přiřazení:

col:= barvy(0);

Samozřejmě zadání

bude nepřijatelné.

Proměnné libovolného výčtového typu lze deklarovat bez předchozího deklarování daného typu, například:

col: (černá, bílá, zelená);

Typová řada. Typ rozsahu je podmnožinou svého základního typu, což může být jakýkoli ordinální typ kromě typu rozsahu. Typ rozsahu je definován hranicemi jeho hodnot v rámci základního typu:

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

Zde<мин.знач. >- minimální hodnota typového rozsahu;

<макс.знач.>- jeho maximální hodnota.

Například:

číslice = "0".."9";

Typ rozsahu nemusí být popsán v sekci TYPE, ale lze jej zadat přímo při deklaraci proměnné, například:

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

Při určování typu rozsahu musíte dodržovat následující pravidla:

  • dva znaky ".." jsou považovány za jeden znak, takže mezery mezi nimi nejsou povoleny;
  • levý okraj rozsahu by neměl přesahovat jeho pravý okraj. Typ rozsahu zdědí všechny vlastnosti svého základního typu, ale s omezením jeho nižší síly. Zejména pokud je definována proměnná

dny = (po, út, st, čt, pá, so, ne);

WeekEnd = sa .. su;

pak ORD(W) vrátí hodnotu 5, zatímco PRED(W) způsobí chybu.

Standardní knihovna Turbo Pascal obsahuje dvě funkce, které podporují práci s typy rozsahů:

HIGH(X) - vrací maximální hodnotu typu rozsahu, do kterého proměnná X patří;

LOW(X) - vrací minimální hodnotu typu rozsahu.

Následující krátký program vytiskne řádek

WriteLn(Nízká(k),"..",Vysoká(k))

Množina celých čísel je nekonečná, ale vždy si můžeme zvolit počet bitů, které budou reprezentovat jakékoli celé číslo, které vznikne při řešení konkrétního problému. Množina reálných čísel je nejen nekonečná, ale také spojitá, takže bez ohledu na to, kolik bitů vezmeme, nevyhnutelně narazíme na čísla, která nemají přesné vyjádření. Čísla s plovoucí desetinnou čárkou jsou jedním z možných způsobů, jak reprezentovat reálná čísla, což je kompromis mezi přesností a rozsahem akceptovaných hodnot.

Číslo s plovoucí desetinnou čárkou se skládá ze sady jednotlivých číslic, běžně rozdělených na znaménko, exponent a mantisu. Exponent a mantisa jsou celá čísla, která spolu se znaménkem dávají následující reprezentaci čísla s plovoucí desetinnou čárkou:

Matematicky se to píše takto:

(-1) s × M × B E, kde s je znaménko, B je radix, E je exponent a M je mantisa.

Základ určuje číselnou soustavu číslic. Matematicky bylo prokázáno, že čísla s plovoucí desetinnou čárkou se základem B=2 (binární reprezentace) jsou nejodolnější vůči zaokrouhlovacím chybám, proto se v praxi setkáváme pouze se základy 2 a vzácněji 10 pro další prezentaci budeme vždy předpokládat B= 2 a vzorec pro číslo s plovoucí desetinnou čárkou bude vypadat takto:

(-1) s × M × 2 E

Co je mantisa a řád? Mantisa je celé číslo s pevnou délkou, které představuje nejvýznamnější bity reálného čísla. Řekněme, že naše mantisa se skládá ze tří bitů (|M|=3). Vezměme si například číslo „5“, které se v binárním systému bude rovnat 101 2. Nejvýznamnější bit odpovídá 2 2 =4, prostřední bit (který se rovná nule) je 2 1 =2 a nejméně významný bit je 2 0 =1. Objednávka– toto je mocnina základu (dvojky) nejvyšší číslice. V našem případě E=2. Je vhodné zapsat taková čísla v tzv. „vědeckém“ standardním tvaru, například „1.01e+2“. Okamžitě je jasné, že mantisa se skládá ze tří znaků a pořadí je dva.

Řekněme, že chceme získat zlomkové číslo pomocí stejných 3 bitů mantisy. Můžeme to udělat, pokud vezmeme, řekněme, E=1. Potom se naše číslo bude rovnat

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

Je zřejmé, že tímto způsobem může být stejné číslo reprezentováno různými způsoby. Uvažujme příklad s délkou mantisy |M|=4. Číslo „2“ může být reprezentováno následovně:

2 = 10 (binárně) = 1,000e+1 = 0,100e+2 = 0,010e+3.

Proto již u vůbec prvních strojů byla čísla zastoupena v tzv normalizovaná forma, kdy se vždy předpokládalo, že první bit mantisy je roven jedné.

Tím se ušetří jeden bit (protože implicitní se nemusí ukládat do paměti) a zajistí se, že číslo bude reprezentováno jednoznačně. V našem příkladu má „2“ jediné zastoupení („1.000e+1“) a mantisa je uložena v paměti jako „000“, protože vedoucí jednotka je implicitně zahrnuta. Ale v normalizované reprezentaci čísel vyvstává nový problém - v této podobě je nemožné reprezentovat nulu.

  • Analýza dat pomocí příkazů Výběr parametrů a Hledání řešení
  • Analýza a interpretace dat experimentálně psychologického výzkumu.
  • Analýza zdrojových dat. Technické normy pro městské komunikace.
  • ANALÝZA ZÍSKANÝCH ÚDAJŮ. ROZHODOVÁNÍ O DOSTATKU ČI NEDOSTATEČNOSTI CHARAKTERISTIKY ZÁSOBOVÁNÍ VODOU PRO POTŘEBY ZÁVLAHOVÉHO SYSTÉMU.
  • Zařízení komunikační linky: zařízení pro přenos dat, koncová zařízení, mezizařízení.

  • Základy programování
    Každý profesionál byl jednou čajník. Jistě znáte stav, kdy „nevíte, jak začít přemýšlet, abyste na něco takového přišli“. Určitě jste se již setkali se situací, kdy prostě nevíte, kde začít. Tato kniha je zaměřena právě na takové lidi, kteří by se chtěli stát programátorem, ale absolutně netuší, jak na tuto cestu začít.

    ...

    Téměř všechny celočíselné datové typy jsou . Tyto datové typy představují celá čísla v určitém rozsahu. Přesné názvy celočíselných typů a rozsahů hodnot závisí na konkrétním programovacím jazyku, kompilátoru a režimu kompilace. Více se o tom můžete dozvědět v dokumentaci kompilátoru. Například datový typ Celé číslo Například datový typ v Delphi má rozsah -2147483648…2147483647, zatímco v Turbo Pascalu je datový typ Například datový typ představuje čísla v rozsahu -35768…32767. Ve Free Pascalu rozsah hodnot typu

    určeno zvoleným režimem.

    Protože Lazarus používá kompilátor Free Pascal, vše, co bylo řečeno o datových typech ve vztahu k Free Pascalu, platí také pro Lazarus.

    Takže celočíselné datové typy Free Pascalu jsou uvedeny v tabulce 13.1.

    Tabulka 13.1. Volné datové typy Pascal Integer (Lazarus). Typ Velikost, bajty
    Rozsah hodnot 1 0…255
    Byte 1 -128…127
    Shortint 2 -35768…32767
    Smallint 2 0…65535
    Například datový typ Slovo 2 nebo 4
    Závisí na režimu kompilace 4 0…4294967295
    Kardinál 4 -2147483648…2147483647
    Longint 4 0...4294967295
    Dlouhé slovo 8 -9223372036854775808...9223372036854775807
    Int64 8 0...18446744073709551615

    QWord
    POZNÁMKA Dlouhé slovo Typy ve Free Pascalu Int64 nejsou! To znamená, že je nemůžete použít například pro indexové proměnné v cyklech. Nicméně jsem je zde uvedl, abych je v budoucnu nepopisoval samostatně a shromáždil všechny typy Free Pascal integer na jednom místě. Pokud některým slovům nerozumíte, nezoufejte. V pravý čas vám o všem řeknu podrobněji.

    A teď pár vysvětlení ke stolu.

    Ve sloupci TYP jsou uvedeny identifikátory datových typů (klíčová slova, která kompilátoru naznačují, do jakého typu konkrétní data patří). Jak tyto identifikátory používat, se naučíte v následujících lekcích.

    Ve sloupci VELIKOST označuje velikost, kterou datový typ zabírá v paměti počítače. Může být například reprezentováno kladné celé číslo různé typy: Rozsah hodnot, Smallint, Závisí na režimu kompilace atd. Nicméně číslo jako Závisí na režimu kompilace bude zabírat 4 bajty v paměti, zatímco číslo jako Rozsah hodnot– pouze 1 bajt. Pokud tedy s jistotou víte, že číslo, se kterým pracujete, nebude mít nikdy hodnotu větší než 255, pak je lepší jej definovat jako typ Rozsah hodnot, protože to ušetří místo v paměti vašeho počítače. I když zde není vše tak jednoduché (nuance distribuce paměti a dalších počítačových zdrojů jsou nad rámec).

    Ve sloupci ROZSAH určuje rozsah hodnot, se kterými datový typ pracuje. Například číslo jako Rozsah hodnot může nabývat hodnot od 0 do 255.

    Nyní k praxi. Pojďme napsat program, který zobrazí rozsahy hodnot všech celočíselných datových typů. Zdrojový kód tohoto programu je uveden níže:

    Výpis 13.1. Program pro zobrazení rozsahů celých čísel. program td; ($mode objfpc)($H+) používá ($IFDEF UNIX)($IFDEF UseCThreads) cthreads, ($ENDIF)($ENDIF) třídy (můžete přidat jednotky za tímto ); begin Writeln("Byte: ", Low(Byte), "..", High(Byte));

    Writeln("Shortint: ", Low(Shortint), "..", High(Shortint)); Writeln("Smallint: ", Low(Smallint), "..", High(Smallint)); Writeln("Slovo: ", Nízké(Slovo), "..", Vysoké(Slovo)); Writeln("Celé číslo: ", Nízké(Celé číslo), "..", Vysoké(Celé číslo)); Writeln("Kardinál: ", Nízký (Kardinál), "..", Vysoký (Kardinál)); Writeln("Longint: ", Low(Longint), "..", High(Longint)); Typy ve Free Pascalu Writeln("Dlouhé slovo: ", Nízké (Dlouhé slovo), "..", Vysoké (Dlouhé slovo)); Writeln("Int64: ", Nízká(Int64), "..", Vysoká(Int64));

    Nakonec vám řeknu, jak se v programu zapisují celočíselná data. Ano, stejně jako všude jinde – stačí napsat číslo, bez uvozovek nebo jakýchkoliv dalších symbolů. Například takto

    10
    178
    35278

    Pravda, to platí pro čísla v desítkové číselné soustavě. Jistě už víte, že existují i ​​jiné systémy. Nejpoužívanější číselné soustavy jsou binární, desítkové a šestnáctkové.

    Free Pascal podporuje čtyři celočíselné formáty:

    1. Desetinný zápis. Jen číslo, třeba 10.
    2. Hexadecimální zápis. Číslo s předponou $. Například šestnáctkové číslo $10 se rovná desetinnému číslu 16.
    3. Osmičková notace. Číslo s předponou &. Například osmičkové číslo &10 se rovná desetinné 8.
    4. Binární zápis. Číslo s předponou %. Například binární číslo %10 se rovná desítkovému číslu 2.

    Domácí úkol:

    Vytvořte program, který zobrazuje rozsahy celočíselných hodnot (výpis 13.1). Zkompilujte program a spusťte jej. Ujistěte se, že tyto hodnoty odpovídají hodnotám uvedeným v tabulce 13.1.

    Ve zdrojovém kódu programu najděte řádek, který nastavuje režim kompilace:

    ($mode objfpc)($H+)

    V tomto řádku místo slova objfpc napsat slovo tp. To znamená, že poslední řádek by měl vypadat takto:

    ($mode tp)($H+)

    Spusťte program. Podívejte se na rozsah hodnot typu Například datový typ. Vyvodit závěry.

    Naučte se myslet jako programátor, tedy logicky. Nikdo za vás do důchodu nebude žvýkat všechno, jako teď já. Musíte si zvyknout myslet na sebe. Jinak sklouznete k „principu učení opice“ a vaše šance stát se skvělým programátorem se pak budou blížit nule. Abych vám pomohl nesklouznout do „nacpané“ úrovně, budu ve vašem učení pravidelně nechávat mezery, abyste se na některé věci pokusili přijít sami.

    Je mnohem lepší, když na to přijdete sami špatné rozhodnutí, chybu najdete sami a sami ji opravíte, místo abyste vždy používali správná řešení jiných lidí a hloupě je kopírovali.

    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á identifikátor a je reprezentován přímo hodnotou v textu programu.

    Tabulka 13.1. Volné datové typy Pascal Integer (Lazarus). 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 ordinální 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 Velikost, bajty
    Závisí na režimu kompilace 4 0. .. 2 147 483 647
    Rozsah hodnot 1 0...255
    Byte 1 -128...+127
    Shortint 2 -32 768...+32 767
    Smallint 2 0...65 535
    Například datový typ 4
    Kardinál 4 -2 147 483 648...+2 147 483 647
    Dlouhé slovo 8 -9*1018...+9*1018
    LongWord 4 0. . .4 294 967 295

    Typy LongWord A Dlouhé slovo byly poprvé představeny ve verzi 4 a typy Shortint A Závisí na režimu kompilace 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 Shortint .

    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 Rozsah hodnot(ale ne naopak), v Kardinál"vstoupí" Shortint, což zase zahrnuje Byte .

    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 tohoto typu: Rozsah hodnot , 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]) - Sníží 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) Rozsah hodnot 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) Například datový typ Vymění bajty ve slově
    vyměnit (w) Smallint 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, 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ódované 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í na servisní kódy. Pokud jsou tyto kódy použity ve znakovém textu programu, jsou považovány za prázdné znaky.

    Pojem data je jedním z klíčových v programování a v informatice obecně. 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ých, konstant, výrazů a funkcí. 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 nejjednoduššími datovými typy, protože v počátečních fázích školení bude pro váš program snazší obejít se bez například 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ých typů, které se liší rozsahem hodnot, počtem bajtů přidělených pro jejich uložení a slovem, kterým je typ deklarován.

    Tabulka 13.1. Volné datové typy Pascal Integer (Lazarus). 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:

    S proměnnými v této kategorii lze provádět všechny aritmetické a logické operace s výjimkou dělení (/), které vyžaduje skutečný typ. Mohou také platit některé standardní funkce a postupy.

    Skutečný typ

    V Pascalu existují následující reálné datové typy:

    Tabulka 13.1. Volné datové typy Pascal Integer (Lazarus). 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

    Lze na nich provádět 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‘, ‚n‘;
    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ů. Obecná forma deklarace řetězcové proměnné vypadá takto:

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

    Každý znak v řádku má svůj vlastní index (číslo). Index prvního bytu je 0, ale neukládá první znak, ale délku celého řetězce, což znamená, že proměnná tohoto typu zabere o 1 bajt více, než je počet proměnných v ní. Čí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 celočíselného, ​​znakového, výčtového nebo booleovského typu. Hodnoty typu interval lze popsat jak v sekci typy, tak v sekci popis proměnných.

    Celkový pohled:

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

    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. SUCC(X) - vrátí znak následující za znakem X succ (‘A‘) =‘B‘;

    Typ výčtu

    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é: