Datové typy Pascalu se dělí na: Pascal. Jednoduché datové typy. Alokace a uvolnění dynamické paměti

Data jsou obecný koncept za vše, s čím operuje počítač. Jakýkoli datový typ definuje sadu hodnot, které může konkrétní proměnná nabývat, a operace, které na ně lze použít. Každá proměnná, se kterou se program setká, musí být přidružen pouze k jednomu typu.

V Pascalu existují dva typy jednoduchých typů: ordinální typy a skutečné typy. Pořadový typ je buď definován programátorem (typ výčtu nebo typ rozsahu) nebo je označen názvem jednoho ze tří předdefinovaných pořadových typů: Boolean, Integer nebo Char. Skutečný typ se označuje normativním názvem typu Real.

Výčtový typ je charakterizován souborem prvků, které jsou v něm obsaženy. různé významy, mezi nimiž je definován lineární řád. Samotné hodnoty jsou v definici tohoto typu označeny názvy.

Typ rozsahu (omezený) je specifikován pomocí minimálních a maximálních hodnot souvisejících s dříve popsaným ordinálním typem. Takto se generuje nový ordinální typ.

Ordinální datové typy

Pořadový datový typ popisuje konečnou a uspořádanou množinu hodnot. Tyto hodnoty jsou mapovány na posloupnost pořadových čísel 0,1,2,...; výjimku tvoří pouze řadová celá čísla, která se mapují na sebe. Každý ordinální typ má minimální a maximální hodnota. Pro všechny hodnoty kromě minima existuje předchozí hodnota a pro všechny hodnoty kromě maxima je následující hodnota.

Předepsané funkce succ, pred, ord přijímají argumenty libovolného z ordinálních typů:
succ(X) - dává další řadovou hodnotu po X
pred(X) - udává pořadovou hodnotu předcházející X
ord(X) - udává pořadové číslo pro X

Pro všechny ordinální typy existují relační operátory = , = a > , za předpokladu, že oba operandy jsou stejného typu.

Booleovský typ

Booleovská hodnota je jedna ze dvou pravdivostních hodnot označených předdefinovanými názvy false a true .

Existují následující logické operace, která dává logickou hodnotu při použití na logické operandy:
a - logické AND
nebo - logické NEBO
ne - logické NE

Také jakákoli relační operace (= , = , > , in) vytváří logický výsledek.

Kromě booleovský typ definované tak, že nepravdivé

Tam jsou také předepsané logické funkce(tj. funkce, které vytvářejí logický výsledek):
odd(F) - true, pokud je celé číslo F-liché a výsledek je nepravdivý, pokud je F-sudá
eoln(F) - kontrola konce řádku
eof(F) - kontrola konce souboru

Celočíselný typ

Typ celé číslo zahrnuje celou řadu celých čísel.

Při práci s celočíselnými operandy platí následující aritmetické operace zadejte celočíselné hodnoty:
* - násobení
div - celočíselná část z dělení
mod - zbytek dělení
+ - sčítání
- - odčítání

Pascal má také předdefinovanou konstantu nazvanou MaxInt, která obsahuje maximální hodnotu celého čísla a rovná se 32767

Celý výsledek poskytují čtyři důležité předepsané funkce:
abs(I) - absolutní hodnota celočíselná hodnota I
sgr(I) - celočíselná hodnota I na druhou za předpokladu, že I trunc(R) - udává celočíselnou část reálného čísla R
round(R) - vrátí zaokrouhlené celé číslo. V tomto případě: pro R>0 znamená trunc(R+0,5) a pro R

Pokud je I celočíselná hodnota, pak:
succ(I) - dává další celočíselnou hodnotu (I+1)
pred(I) - dává předchozí celočíselnou hodnotu (I-1)

Typ postavy (Char)

Hodnoty znaků jsou prvky konečné a uspořádané sady znaků. Hodnoty tohoto typu jsou reprezentovány jedním znakem uzavřeným v jednoduchých uvozovkách (apostrofech). Pokud je potřeba samotný apostrof, píše se dvakrát.
Příklady: "*" "G" "3" """" "X"

    Pro typ Char platí následující minimální předpoklady:
  1. Desetinné číslice 0 až 9 jsou seřazeny podle číselných hodnot a následují za sebou (například succ("5") = "6").
  2. Může existovat velká písmena od "A" do "Z"; pokud ano, pak jsou objednány v abecední pořadí, ale nemusí nutně následovat za sebou (například "A"
  3. Mohou existovat malá písmena „a“ až „z“; pokud ano, pak jsou seřazeny abecedně, ale nemusí nutně následovat za sebou (např.

Chcete-li namapovat danou sadu znaků na sériová čísla a zpět, existují dvě předdefinované funkce:
ord(C) - udává pořadové číslo znaku C ve zmíněné uspořádané množině znaků
chr(I) - dává znak s sériové číslo

Pro argumenty typu Char lze předdefinované funkce pred a succ definovat takto:
pred(C) = chr(ord(C)-I)
succ(C) = chr(ord(C)+I)

Komentář. Předchozí nebo následující symbol závisí na zadané sadě symbolů, takže oba tyto vztahy jsou platné pouze v případě, že předchozí nebo následující symbol existuje.

Skutečný typ

Hodnoty reálného typu jsou prvky podmnožiny definované implementací reálná čísla.

Všechny operace nad reálnými veličinami jsou přibližné, jejich přesnost je dána realizací (strojem), se kterou se zabýváte. Skutečný typ je jednoduchý typ, není to ordinální typ. Reálné hodnoty nemají pořadové číslo a pro žádnou z nich neexistuje žádná předchozí ani další hodnota.

Pokud je alespoň jeden z operandů reálného typu (druhý může být celé číslo), dávají následující operace skutečný výsledek:
* - násobení
/ - dělení (oba operandy mohou být celá čísla, ale výsledek je vždy skutečný)
+ - sčítání
- - odčítání

Existují předepsané funkce, které dávají skutečný výsledek se skutečným argumentem:
abs(R) - absolutní hodnota R
sqr(R) - R na druhou, pokud je výsledek v rozsahu reálných čísel

A tyto předepsané funkce poskytují skutečný výsledek s celým číslem nebo skutečným argumentem:
sin(X) - udává sinus X; X je vyjádřeno v radiánech
cos(X) - udává kosinus X; X je vyjádřeno v radiánech
arctan(X) - udává arkustangens X vyjádřený v radiánech
ln(X) - udává hodnotu přirozeného (základ e) logaritmu pro X, X>0
exp(X) - udává hodnotu exponenciální funkce(tj. na mocninu X)
sqrt(X) - udává hodnotu druhé odmocniny X, X>=0

Varování. Funkce pred, succ nelze použít pro skutečné argumenty Při indexování polí, pro řízení ve smyčce s parametrem, pro určování nelze použít hodnoty typu real základní typ sady, pro indexování v operátoru variant.

Koncept typu je jedním ze základních pojmů každého programovacího jazyka. Objekty (konstanty, proměnné, funkce, výrazy), se kterými program pracuje, patří ke specifickému typu.

Typ je sada hodnot, které mohou programové objekty nabývat, a sada operací povolených s těmito hodnotami.

Například, hodnoty 1 a 2 jsou celočíselného typu, lze je sčítat, násobit a další aritmetické operace. Významy „monitor“ a „Pascal“ jsou lingvistické povahy a mají vlastní sadu platných operací. Ve většině běžně používaných jazyků lze použít pouze přesně definované, předem známé typy. Pascal, spolu se standardními typy nalezenými v jiných jazycích vysoká úroveň, umožňuje programátorovi vytvářet vlastní typy.

Všechny typy povolené v jazyce Pascal jsou rozděleny do dvou: velké skupiny: jednoduché a složité (strukturované).

Typ Rozsah Mantisa, znamení Požadovaná paměť (bajty)
NEMOVITÝ 2,9*10E-39..1,7*10E38 11-12
SINGL 1,5*10E-45...3,4*10E38 7-8
DVOJNÁSOBEK 5,0*10E-324..1,7*10E308 15-16
ROZŠÍŘENÉ 1,9*10E-4951..1,1*10E4932 19-20
KOMP -2E+63+1..2E+63-1 10-20

Efektivní použití typů SINGLE, DOUBLE, EXTEND, COMP je možné pouze tehdy, když je povolena direktiva ($N+). Ve výchozím nastavení je vypnuto. Pro řešení inženýrských a ekonomických problémů stačí hodnoty typu REAL.

Příklad

Var Res, Summa, Itog: skutečné;

Boolean datový typ je popsán identifikátorem BOOLEAN. Proměnné a konstanty tohoto typu mohou nabývat pouze jedné ze dvou hodnot: TRUE (true) nebo FALSE (false).

Příklad

Var Sel1, Sel2: booleovská hodnota;

A,B,C,D: logická hodnota;

Výrazy booleovský typ zabírají 1 bajt v paměti a používají se v logické výrazy a relační výrazy, stejně jako k řízení pořadí, ve kterém se programové příkazy provádějí.

Doslovný (znak) typ je popsán standardním identifikátorem CHAR. Konstanty a proměnné tohoto typu mohou nabývat jedné z hodnot kódu ASCII tabulky. Význam konstanty nebo proměnné tohoto typu je uzavřen v apostrofech.

Například, Var Bukva, Znak, Symbol: char;

Bukva:=’A’; Znak:=’+’; Symbol:='!'

Proměnné typu znaku zabírají 1 bajt v paměti. Použití datového typu char aritmetické výrazy zakázáno. Porovnávací operace lze aplikovat na hodnoty literálu, výsledek závisí na počtu proměnné nebo konstanty literálu v kódové tabulce.

Kromě standardní typy data, Pascal podporuje skalární typy, definované uživatelem. Mezi ně patří spočítatelný A interval typy . Tyto typy dat zabírají 1 bajt v paměti, takže jakákoliv vlastní typ nemůže obsahovat více než 255 prvků. Jejich použití výrazně zlepšuje viditelnost programu, činí jej více snadné vyhledávání chyby a šetří paměť.

Typ výčtu je specifikováno přímo výpisem všech hodnot, které může proměnná nabývat tohoto typu. Individuální hodnoty jsou označeny oddělenými čárkami a celý seznam je uzavřen v závorkách.

Formát

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

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

Příklad

Typ Sezóna =(Jaro, Léto, Podzim, Zima);

Var S1, S2: Sezóna;

Podzim: (září, říjen, listopad);

V v tomto příkladu je zobrazen explicitně popsaný datový typ uživatele sezóny. Jsou určeny jejich významy – označení ročních období. Proměnné S1 a S2 mohou nabývat pouze jedné z uvedených hodnot. Pokus o přiřazení jakékoli jiné hodnoty způsobí softwarové přerušení. Třetí typ výčtu je anonymní (nemá název) a je určen výčtem hodnot v sekci Var. Podzim je proměnná tohoto typu a může nabývat hodnot září, říjen, teď. Lze tedy specifikovat jakýkoli typ, ale to není vždy přijatelné. První metoda je jistě srozumitelnější a více odpovídá povaze jazyka Pascal.

Typ intervalu umožňuje zadat dvě konstanty, které definují hranice rozsahu hodnot pro danou proměnnou. Pro každou operaci s intervalovou proměnnou kompilátor generuje kontrolní rutiny, aby zjistil, zda hodnota proměnné zůstává v určeném rozsahu. Obě konstanty musí patřit k jednomu ze standardních typů jiného než reálné. Musí být požadována hodnota první konstanty menší než hodnota druhý.

Formát

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

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

Příklad

Typ Dny = 1.. 31;

Var Work_d, Free_d: Dny;

V tomto příkladu proměnné Work_d, Free_d mít typ Dny a může nabývat libovolné hodnoty z rozsahu 1. . 31.

Příčinou je přechod mimo dosah softwarové přerušení.

Typ intervalu můžete definovat definováním hranic rozsahu nikoli hodnotami konstant, ale jejich názvy:

Const Min = 1; Max = 31;

Typ Dny = Min .. Max;

Var Work_d, Free_d: Dny;

Strukturované typy data jsou založena na skalárních typech a mohou je obsahovat různé kombinace. Definují uspořádanou kolekci skalárních prvků a jsou charakterizovány typem jejich komponent. Jazyk Pascal poskytuje následující strukturované datové typy:

řádek - posloupnost znaků uzavřená v apostrofech;

pole - strukturovaný datový typ sestávající z pevného počtu prvků stejného typu, ke kterým se přistupuje pomocí indexu ;

mnoho - soubor objektů vybraných podle nějaké charakteristiky nebo skupiny charakteristik, které lze považovat za celek;

záznam - soubor pevného počtu komponent různých typů;

soubor- sled součástí stejného typu a stejné délky.

Další dva strukturované typy- procedurální a objektový typ - je obtížné porovnat data v obvyklé reprezentaci.

Obrázek 1- Sada základních typů jazyka Pascal

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 přijatelné hodnoty toho či onoho objektu, stejně jako mnoho 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ů
NA jednoduché typy zahrnují ordinální, reálný, řetězcový a adresový (ukazatel) typy. 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é hodnoty, 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í obsazeného prostoru. BERAN. 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ého desítkového zápisu je možné zapsat celá čísla v hexadecimálním formátu pomocí předpony $, například:
$01AF $FF $1A $F0A1B
Rejstřík písmena 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- skládá se 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)- jedná se o 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 návratu 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 ten, který má vyšší ASCII číslo.
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 mají stejnou délku 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 typem jazyka (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;

Zde mají pole M1 a M2 přesně stejnou strukturu - čtvercovou matici o velikosti 3x3.

K prvku pole se přistupuje zadáním jeho indexu, například:
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ŘEDNÁŠKA 2

Základy programování.

Úvod do Pascalu. Datové typy. Operace.

Jazyková abecedaPascal

Jakýkoli přirozený jazyk se skládá z prvků, jako jsou symboly, slova, fráze a věty. Programovací jazyk má také podobné prvky: symboly, slova, výrazy (fráze), operátory (věty).

Slova jsou tvořena sbírkou symbolů. Výrazy - to jsou skupiny slov a operátory - Jsou to kombinace slov a výrazů. Jazykové symboly jsou elementární znaky (písmena), které se používají ke skládání některých textů. Sada těchto symbolů tedy tvoří abecedu jazyka.

Pascalova abeceda se skládá z:

1.velká a malá písmena latinské abecedy, která obsahuje následující znaky:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - velká písmena;

A b c d e f g h i j k l m n o p q r s t u v w x y z - malá písmena;

2. desetinná arabská čísla: 0 1 2 3 4 5 6 7 8 9;

3. hexadecimální číslice (sestavené z desítkových číslic a písmen od A do F);

4. 32 velkých a malých písmen ruské abecedy;

5. speciální znaky:

Kombinace speciálních znaků mohou tvořit složené znaky:

: = zadání;

< >nerovný;

>= větší nebo rovno;

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

Rozsah hodnot;

(* *) nebo ( ) - komentář.

Struktura programu Pascal

Aby kompilátor Passal správně přesně pochopil, jaké akce se od něj očekávají, musí být váš program naformátován v plném souladu se syntaxí (pravidly konstrukce programu) tohoto jazyka.

Jakýkoli program Pascal se může skládat z následujících bloků (volitelné části jsou dále označeny hranatými závorkami):

naprogramovat<имя_программы>;

[používá<имена_подключаемых_модулей>;]

[ štítek<список_меток>;]

[ konst<имя_константы> = <значение_константы>;]

[ typ<имя_типа> = <определение_типа>;]

[var<имя_переменной> : <тип_переменной>;]

[postup<имя_процедуры> <описание_процедуры>;]

[ funkce<имя_функции> <описание_функции>;]

začít (začátek hlavní části programu)

<операторы>

konec. (* konec hlavní části programu *)

Pozdější verze kompilátorů jazyka Pascal již nevyžadují specifikování názvu programu, tj. řádku programu<имя_программы>; lze vynechat. To je však možné pouze v případě, že je celý program obsažen v jednom souboru modulu. Pokud se program skládá z více nezávislých částí - modulů, pak každý z nich musí mít hlavičku (program nebo jednotku).

Kterákoli z uvedených volitelných sekcí se může v textu programu vyskytnout vícekrát, jejich obecná posloupnost se také může změnit, ale vždy je třeba dodržet hlavní pravidlo jazyka Pascal: před použitím objektu je nutné jej deklarovat a popsat.

Kompilátory Pascalu nerozlišují mezi malými a velkými písmeny a ignorují mezery, takže text programu může být strukturován tak, aby bylo co nejpohodlnější číst a ladit.

Direktivy kompilátoru

Řádek začínající symboly ($ není komentář, ale direktiva kompilátoru - speciální příkaz, na kterém závisí proces kompilace a provádění programu. Direktivy budeme uvažovat v těch částech, kterých se týkají „smyslem“.

Například řádek ($I-,Q+) zakáže ověření I/O, ale umožní řízení přetečení výpočtu.

Identifikátory

Jména daná objektům programu (konstanty, typy, proměnné, funkce a procedury a celý program) se nazývají identifikátory. Mohou se skládat pouze z čísel, latinských písmen a znaku "_" (podtržítko). Číslo však nemůže začínat jméno. Identifikátory mohou mít libovolnou délku, ale pokud mají dvě jména stejných prvních 63 znaků, pak jsou jména považována za identická.

Objektům svého programu můžete dát libovolné jméno, ale musíte se ujistit, že jsou odlišná od vyhrazených slov používaných v Pascalu, protože překladač stále nebude akceptovat proměnné s "cizími" názvy.

Zde je seznam nejběžnějších rezervovaných slov:

implementace pole shl

řetězec rozhraní případu

const label pak

používá ukazatel souboru

vzdálený postup var

na dobu programu

vpřed záznam s

opakování funkce xor

Proměnné a datové typy

Proměnná je objekt programu, jehož hodnota se může měnit za běhu programu.

Datový typ je charakteristika rozsahu hodnot, které mohou proměnné patřící k tomuto datovému typu nabývat.

Všechny proměnné použité v programu musí být popsány ve speciální sekci var pomocí následující šablony:

var<имя_переменной_1> [, <имя_переменной_2, _>] : <имя_типа_1>;

<имя_переменной_3> [, <имя_переменной_4, _>] : <имя_типа_2>;

Jazyk Pascal má velkou sadu různých datových typů, ale nyní si ukážeme jen několik z nich. O všech typech dat si povíme dále.

Konstanty

Konstanta je objekt, jehož hodnota je známa před spuštěním programu.

Konstanty jsou nezbytné pro návrh vizuálních programů, jsou nepostradatelné při použití opakovaně se opakujících hodnot v textu programu a jsou vhodné, pokud je potřeba tyto hodnoty měnit v celém programu najednou.

V Pascalu existují tři typy konstant:

Nepojmenované konstanty (číslice a čísla, symboly a řetězce, množiny);

Pojmenované netypové konstanty;

Pojmenované typové konstanty.

Nepojmenované konstanty

Nepojmenované konstanty nemají žádná jména, a proto je není třeba deklarovat.

Typ nepojmenované konstanty je ve výchozím nastavení určen automaticky:

Jakákoli posloupnost čísel (možná, že jim předchází znaménko "-" nebo "+" nebo rozdělená jednou tečkou) je kompilátorem vnímána jako nepojmenovaná konstanta - číslo (celé nebo reálné);

Jakákoli sekvence znaků uzavřená v apostrofech je považována za nepojmenovanou konstantu – řetězec;

Jakákoli posloupnost celých čísel nebo symbolů oddělených čárkami, orámovaná hranatými závorkami, je vnímána jako nepojmenovaná konstanta – množina.

Kromě toho existují dvě speciální konstanty true a false související s datovým typem Boolean.

Příklady použití nepojmenovaných konstant zahrnují následující operátory:

real2:= 12,075 + x;

string4:= "abc" + string44;

sada5:= * sada55;

boolean6:= true;

Netypové konstanty

Pojmenované konstanty, jak jejich název napovídá, musí mít jméno. Proto musí být tato jména nahlášena kompilátoru, tj. popsána ve speciální sekci const.

Pokud neuvedete typ konstanty, pak podle jejího vzhledu překladač sám určí, ke kterému (základnímu) typu má být přiřazena. Jakákoli již popsaná konstanta může být použita při deklaraci jiných konstant, proměnných a datových typů. Zde je několik příkladů popisu netypovaných pojmenovaných konstant:

Typované konstanty

Typované pojmenované konstanty jsou proměnné(!) s počáteční hodnotou, která je známa již při spuštění programu. Za prvé, typované konstanty nelze použít k definování jiných konstant, datových typů a proměnných a za druhé lze jejich hodnoty měnit za běhu programu.

Typované konstanty jsou popsány pomocí následující šablony:

konst<имя_константы> : <тип_константы> = <начальное_значение>;

Níže uvedené příklady ukazují, jak to provést:

const n: celé číslo = -10;

b: boolean = true;

Při studiu odpovídajících datových typů poskytneme příklady typovaných konstant jiných typů.

Datové typy Pascal

Kompilátory Pascalu vyžadují, aby byly před spuštěním programu poskytnuty informace o množství paměti potřebné ke spuštění programu. Chcete-li to provést, musíte v části popisu proměnných (var) vypsat všechny proměnné používané v programu. Kromě toho také musíte kompilátoru sdělit, kolik paměti bude každá z těchto proměnných zabírat.

To vše lze sdělit programu jednoduchým uvedením typu budoucí proměnné. Když má kompilátor informace o typu proměnné, „rozumí“, kolik bajtů je pro ni potřeba alokovat, jaké akce s ní lze provádět a na jakých konstrukcích se může podílet.

Pro pohodlí programátorů má Pascal mnoho standardních datových typů a navíc možnost vytvářet nové datové typy na základě stávajících (standardních nebo opět definovaných programátorem), kterým se říká constructed.

Rozdělení na základní a konstruované datové typy v Pascalu ukazuje tabulka:

Ordinální (diskrétní) datové typy

Typy dat adresy

Typy strukturovaných dat

Aritmetické datové typy

Základní datové typy

Logický

Symbolický

Nemovitý

Netipizi

indexovaný index

Konstruované typy

Listovatelné

týden = (ne, po, út, my, čt, pá, so);

Zadaný ukazatel

Pole

Řetězec

rekordní záznam

Procesní

Objekt

Interval (rozsah)

Datové typy vytvořené programátorem

Ordinální datové typy

Mezi základními datovými typy vynikají ordinální typy. Tento název lze odůvodnit dvěma způsoby:

1. Každý prvek ordinálního typu může být spojen s jedinečným (ordinálním) číslem. Číslování hodnot začíná od nuly. Výjimkou jsou datové typy shortint, integer a longint. Jejich číslování se shoduje s hodnotami prvků.

2. Na prvcích libovolného ordinálního typu je navíc definováno pořadí (v matematickém smyslu slova), které přímo závisí na číslování. Pro libovolné dva prvky ordinálního typu lze tedy přesně říci, který z nich je menší a který větší.

Standardní rutiny, které zpracovávají ordinální datové typy

Následující funkce a procedury jsou definovány pouze pro ordinální typy:

1.Funkce ord(x) vrací pořadové číslo hodnoty proměnné x (vzhledem k typu, ke kterému proměnná x patří).

2.Funkce pred(x) vrací hodnotu předcházející x (neplatí pro první prvek typu).

3.Funkce succ(x) vrací hodnotu následující za x (neplatí pro poslední prvek typu).

4.Procedura inc(x) vrací hodnotu následující za x (pro aritmetické datové typy je to ekvivalentní operátoru x:=x+1).

5.Procedura inc(x,k) vrací k-tou hodnotu za x (pro aritmetické datové typy je to ekvivalentní operátoru x:=x+k).

6.Procedura dec(x) vrací hodnotu předcházející x (pro aritmetické datové typy je to ekvivalentní operátoru x:=x-1).

7.Procedura dec(x,k) vrací hodnotu k-e předcházející x (pro aritmetické datové typy je to ekvivalentní operátoru x:=x-k).

Na první pohled se zdá, že výsledek použití procedury inc(x) je úplně stejný jako výsledek použití funkce succ(x). Rozdíl mezi nimi se však objevuje na hranicích přípustného rozsahu. Funkce succ(x) není použitelná pro maximální prvek typu, ale procedura inc(x) nevyvolá žádnou chybu, ale podle pravidel strojového sčítání přidá k číslu prvku další jednotku. . Číslo samozřejmě půjde mimo rozsah a z důvodu zkrácení se změní na číslo minimální hodnoty rozsahu. Ukazuje se, že procedury inc() a dec() vnímají jakýkoli ordinální typ jako „uzavřený do kruhu“: ihned za poslední hodnotou přichází opět první hodnota.

Vysvětleme vše, co bylo řečeno, na příkladu. Pro datový typ

typ šestnáct = 0..15;

pokus o přičtení 1 k číslu 15 dá následující výsledek:

Počáteční jednotka bude oříznuta, a proto se ukáže, že inc(15)=0.

Podobná situace na spodní hranici přípustného rozsahu libovolného ordinálního datového typu je pozorována u procedury dec(x) a funkce pred(x):

dec(min_element)= max_element

Datové typy související s pořadovým číslem

1. Booleovský typ má dvě hodnoty: false a true a platí pro ně následující rovnosti:

ord(false)=0, ord(true)=1, false

pred(true)=false, succ(false)=true,

inc(true)=false, inc(false)=true,

dec(true)=false, dec(false)=true.

2. Typ znaku char obsahuje 256 rozšířených znaků ASCII (například "a", "b", "i", "7", "#"). Číslo znaku vrácené funkcí ord() je stejné jako číslo znaku v tabulce ASCII.

3. Shrňme si celočíselné datové typy do tabulky:

Typ dat

Počet bajtů

Rozsah

2147483648..2147483647

4. Vyjmenované datové typy jsou specifikovány v sekci typů explicitním výpisem jejich prvků. Například:

typ týden =(ne,po,út,st,čt,pá,so)

Připomeňme, že pro tento typ dat:

inc(sat) = slunce, dec(sun) = so.

5. Intervalové datové typy jsou specifikovány pouze hranicemi jejich rozsahu. Například:

typ měsíc = 1..12;

budni = po..pá;

6. Datové typy vytvořené programátorem jsou popsány v sekci typů podle následujícího vzoru:

typ<имя_типа> = <описание_типа>;

Například:

zadejte lat_bukvy = "a".."z","A".."Z";

Základní datové typy jsou standardní, není tedy potřeba je popisovat v sekci typů. Je-li to však žádoucí, lze to také provést například dlouhými definicemi krátkými názvy. Řekněme zavedením nového datového typu

typ int = integer;

Text programu můžete trochu zkrátit.

Reálné datové typy

Připomeňme, že tyto datové typy jsou aritmetické, nikoli pořadové.

Typ dat

Počet bajtů

Rozsah (absolutní hodnota)

1.5*10-45..3.4*1038

2.9*10-39..1.7*1038

5.0*10-324..1.7*10308

3.4*10-4932..1.1*104932

Konstruované datové typy

Těmito datovými typy (spolu s pro ně definovanými operacemi) se budeme dále zabývat v průběhu několika přednášek.

Operace a výrazy

Aritmetické operace

Pojďme se bavit o operacích – standardních akcích povolených pro proměnné toho či onoho základního datového typu. Základem budou aritmetické a logické operace.

Poznámka: Všechny níže uvedené operátory (kromě unárního "-" a nikoli) vyžadují dva operandy.

1. Logické operace (a - logické AND, nebo - logické OR, ne - logické NOT, xor - exkluzivní OR) jsou použitelné pouze pro hodnoty typu boolean. Jejich výsledkem jsou také booleovské hodnoty. Zde jsou tabulky hodnot pro tyto operace:

pravda nepravda pravda

nepravda nepravda nepravda

pravda nepravda nepravda

2. Porovnávací operace (=,<>, >, <, <=, >=) platí pro všechny základní typy. Jejich výsledky jsou také booleovské hodnoty.

3. Operace celočíselné aritmetiky jsou použitelné pouze pro celočíselné typy. Jejich výsledkem je celé číslo, jehož typ závisí na typech operandů.

a div b - dělení a b úplně (asi není třeba připomínat, že dělení 0 je zakázáno, takže v takových případech operace generuje chybu). Výsledkem bude datový typ společný pro typy, ke kterým operandy patří.

Například (krátký bajt div = celé číslo). To lze vysvětlit takto: celé číslo je minimální typ, jehož byte i shortint jsou podmnožiny.

a mod b - zbytek při dělení a b. Typ výsledku, stejně jako v předchozím případě, je určen typy operandů a 0 je neplatná hodnota pro b. Na rozdíl od matematické operace mod, jejímž výsledkem je vždy nezáporné číslo, je znaménko výsledku operace "programátor" určeno znaménkem jejího prvního operandu. Pokud tedy v matematice (-2 mod 5) = 3, pak máme (-2 mod 5) = -2.

a shl k - posun hodnoty a o k bitů doleva (to je ekvivalentní vynásobení hodnoty proměnné a 2k). Výsledek operace bude stejného typu jako její první operand(y).

a shr k - posune hodnotu a o k bitů doprava (to je ekvivalentní úplnému dělení hodnoty proměnné a 2k). Výsledek operace bude stejného typu jako její první operand(y).

a nebo ne, xor - binární aritmetické operace, které pracují s bity binární reprezentace celých čísel podle stejných pravidel jako odpovídající logické operace.

4. Obecné aritmetické operace (+, -, *, /) platí pro všechny aritmetické typy. Jejich výsledek náleží datovému typu společnému pro oba operandy (výjimkou je pouze operace zlomkového dělení /, jejímž výsledkem je vždy reálný datový typ).

Jiné operace

Existují další operace specifické pro hodnoty některých standardních datových typů Pascalu. Tyto operace zvážíme v příslušných částech:

#, in, +, *, : viz přednáška 5 „Symboly. Čáry. zástupy"

@, ^: viz přednáška 7 „Adresy a ukazatele“

Standardní aritmetické funkce

Aritmetické operace také zahrnují standardní aritmetické funkce. Jejich seznam se stručným popisem uvádíme v tabulce.

Funkce

Popis

Typ argumentu

Typ výsledku

Absolutní hodnota (modul) čísla

Aritmetický

Stejné jako typ argumentu

Arktangens (v radiánech)

Aritmetický

Nemovitý

Kosinus (v radiánech)

Aritmetický

Nemovitý

Exponent (ex)

Aritmetický

Nemovitý

Vezmeme-li zlomkovou část čísla

Aritmetický

Nemovitý

Vezmeme celou část čísla

Aritmetický

Nemovitý

Přirozený logaritmus (základ e)

Aritmetický

Nemovitý

Kontrola, zda je číslo liché

Význam čísla

Nemovitý

Zaokrouhlete na nejbližší celé číslo

Aritmetický

Zaokrouhlete dolů – na nejbližší menší celé číslo

Aritmetický

Sinus (v radiánech)

Aritmetický

Nemovitý

Kvadratury

Aritmetický

Nemovitý

Druhá odmocnina

Aritmetický

Nemovitý

Aritmetické výrazy

Všechny aritmetické operace lze vzájemně kombinovat - samozřejmě s přihlédnutím k datovým typům povoleným pro jejich operandy.

Operandy jakékoli operace mohou být proměnné, konstanty, volání funkcí nebo výrazy vytvořené na základě jiných operací. Vše dohromady se nazývá výraz.

Příklady aritmetických výrazů:

(x<0) and (y>0) - výraz, jehož výsledek je typu boolean;

z shl abs(k) - druhý operand je volání standardní funkce;

(x mod k) + min(a,b) + trunc(z) - kombinace aritmetických operací a volání funkcí;

odd(round(x/abs(x))) - "vícepříběhový" výraz.

Pořadí výpočtu

Pokud výraz obsahuje závorky, pak se výpočty provádějí v následujícím pořadí: čím menší je hloubka vnoření závorek, tím později se vypočítá operace v nich uzavřená. Pokud nejsou žádné závorky, pak se nejprve vypočítají hodnoty operací s vyšší prioritou a poté ty s nižší prioritou. Několik po sobě jdoucích operací se stejnou prioritou se vypočítá v pořadí zleva doprava.

Tabulka 2.1. Priority (pro všechny) Operace Pascal

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.

Typ Tabulka 13.1. Volné datové typy Pascal Integer (Lazarus). 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 A Int64 Typy ve Free Pascalu

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

A teď pár vysvětlení ke stolu. 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. označuje velikost, kterou datový typ zabírá v paměti počítače. Například kladné celé číslo může být reprezentováno různými 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).

A teď pár vysvětlení ke stolu. 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)); A Writeln("Dlouhé slovo: ", Nízké (Dlouhé slovo), "..", Vysoké (Dlouhé slovo)); Writeln("Int64: ", Nízká(Int64), "..", Vysoká(Int64));

Writeln("QWord: ", Low(QWord), "..", High(QWord));

10
178
35278

Readln; konec.

Standardní funkce

  1. Nízký definuje minimální hodnotu datového typu. Funtskia
  2. Vysoký definuje maximální hodnotu. S funkcemi
  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.




Nahoru