Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) – přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) – pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce jazyka Pascal jsou vytvořeny z tzv. přípustných symbolů, které tvoří jeho abecedu. Abeceda jazyka Pascal písmena anglické abecedy ( A, B, ..., Z, a, b, ..., z) číslice desítkové čís. soustavy (0,1,2,3,4,5,6,7,8,9) speciální symboly (+, -, *,/ , <>, <, >, <=, >=, (, ), {, }, [, ], :=, ., ,, ;, :, .., ^, ', #, @, klíčová slova (begin, repeat, var, end,…)) Vyšší jazykové konstrukce tvoří tzv. lexikální jednotky (slova). Mezi lexikální jednotky řadíme: identifikátory, čísla, znakové řetězce, návěští (popis viz níže). V programu se lexikální jednotky oddělují pomocí oddělovačů lexikálních jednotek, mezi které patří: mezera oddělovač řádků komentář Mezi dvěma lexikálními jednotkami může být libovolný počet oddělovačů, ale vždy alespoň jeden. Identifikátory
se používají pro označení různých objektů v programu (proměnné, typy, konstanty, procedury a funkce, programy, ...) jsou tvořeny posloupností písmen a číslic, začínající písmenem (příp. znakem „podtržítko“) významy některých identifikátorů (integer, boolean, ...) jsou definovány jazykem, tyto identifikátory označujeme jako standardní nerozlišují se malá a velká písmena vhodnou volbou identifikátorů při psaní programu se snažíme zvýšit čitelnost a srozumitelnost programu. Identifikátory volíme tedy tak, aby co nejvíce vystihovaly význam toho, co pojmenovávají
Čísla Pro zápis celých i reálných čísel v jazyku Pascal obvykle používáme zápis v desítkové soustavě: celá čísla (např. 12, -48, 0, +9) reálná čísla desetinný tvar : 0.2, +1.59, -78.963 semilogaritmický tvar : 4E3, 5E-19, +2.5E14 (E ... "krát 10 na ") V Pascalu můžeme také použít čísla v šestnáctkové (hexadecimální) soustavě, tato čísla musí být uvozena znakem $ ( $10, $AA05, $FFFF ). Znakový řetězec je posloupnost znaků abecedy jazyka Pascal uzavřená do apostrofů ('ssss', '123ABC’ ) řetězec, který nemá nic uvedeno mezi apostrofy, se nazývá prázdný řetězec ( '' ). pokud chceme použít znak apostrof v řetězci musíme tento znak zdvojit ( 'A''B' ). Návěští Návěští slouží k předznačení příkazů. Umožňuje předat tomuto příkazu řízení explicitním způsobem pomocí příkazu skoku. Návěští zapisujeme jako posloupnost číslic (12, 5, …) Komentář slouží jako oddělovač lexikálních jednotek pomocí komentáře lze přímo v programu popsat význam různých proměnných, částí programu, apod., zlepšuje se tím čitelnost programu je řetězec přípustných znaků uzavřených v { } nebo v (* *) je ignorován kompilátorem
Výrazy Posloupnosti příkazů se předepisují pomocí výrazů. Výraz je předpis pro výpočet hodnoty (číselné, logické). Výrazy obsahují: a) operandy (proměnné, konstanty) b) operátory c) funkce d) kulaté závorky Vyhodnocení výrazu je provedení všech operací předepsaných výrazem, výsledkem tohoto vyhodnocení je hodnota výrazu. Jednotlivé operace předepsané výrazem se provádějí postupně zleva doprava s ohledem na prioritu operátorů a na závorky. Podle priority dělíme operátory do čtyř skupin: a) not nejvyšší priorita b) / div mod and c) + - or d) = <> < > <= >= nejnižší priorita Příklad:
a) výrazem je i samostatná konstanta nebo proměnná b) A * 7 + I DIV 2 - J MOD 3 c) A - I / J * K d) A + B < I * J e) P OR Q AND R
f) P = Q AND R g) SQR(A) + 2 * SQRT(B) Typ hodnoty výrazu určuje typ výrazu: a) výraz, jehož hodnotou je číselná hodnota se nazývá aritmetický výraz. (A*7+2 div C)
b) výraz, jehož hodnotou je logická hodnota (true, false) se nazývá logický výraz. (A > 2) Poznámka: v matematice: v prog. jazyku:
0 <= i <= max (0<=i) and (i<=max)
Konstanty a proměnné Konstanty a proměnné používáme pro reprezentaci hodnot v programu. Proměnná Proměnná je datový objekt (paměťové místo), který může během realizace programu nabývat různé hodnoty. Každá proměnná může nabývat hodnoty určitého datového typu, říkáme, že proměnná je určitého datového typu. Každá proměnná je označena identifikátorem. Každou proměnnou, kterou v programu využíváme, musíme předem deklarovat (popsat) v části definic a deklarací . Deklarací proměnné určujeme její: • identifikátor, prostřednictvím kterého se na proměnnou odkazujeme • datový typ, který specifikuje množinu přípustných hodnot, kterých může proměnná nabývat, a množinu operací, které můžeme s danou proměnnou provádět Příklad: var Soucet : integer; Prumer : real; Znak : char; Typ proměnné může být určen: • identifikátorem typu • popisem typu Příklad: C := 12; A := 1.253;
(var A : integer) (var B : 100...2000)
Znak := 'A'; Read(B); Proměnné lze přiřadit pouze takovou hodnotu, která patří do množiny přípustných hodnot specifikované datovým typem proměnné. Každou proměnnou, jejíž první výskyt v programu je součástí výrazu na pravé straně přiřazovacího příkazu, je třeba inicializovat (nastavit počáteční hodnotu). Konstanty Konstantou rozumíme konkrétní hodnotu příslušného datového typu (-1.23, 'B', true). Přímý zápis hodnoty v programu se nazývá literál ( -1.23, 'B', true ). V programech je však možné hodnotu pojmenovat a pak místo literálu používat příslušný identifikátor. Identifikátory konstant se zavádějí v části definic konstant. Definice konstanty: const identifikátor konstanty = konstanta; Příklad: const PocetOpakovani=10; PI = 3,14159; Mezera = ' '; .... for I:=1 to PocetOpakovani do Write(Mezera); Používání identifikátorů konstant: • zvyšuje srozumitelnost programu • zjednodušuje modifikovatelnost programu Konkrétní hodnota je uvedena na jediném místě. Pokud ji později potřebujete změnit, upravíte jedinou definici a máte zaručeno, že v celém programu bude používáno správné číslo. Každá konstanta je určitého datového typu. Hodnota a typ pojmenované konstanty je určen pravou stranou v definici konstanty. Hodnotu nového identifikátoru konstanty lze určit nejen pomocí literálu, ale také pomocí identifikátoru konstanty. Příklad: const Max=1000; Min= - Max; Konstantní výrazy Konstantní výraz je takový výraz, který může vyhodnotit kompilátor ještě před spuštěním programu. Nejjednodušším konstantním výrazem je jednoduchá konstanta ( 45, 'G'). Příklad: const Cislo=100; Znak='D'; Hodnota=(2.5+1)/ (2.5 -1) Slovo='Turbo'+'Pascal'; Mezera=Chr(32); PocetPismen=Ord('Z')-Ord('A')+1; Typové konstanty Typové konstanty si můžeme představit jako proměnné s počáteční hodnotou. Typové konstanty se od běžných liší zejména tím, že jejich deklarace určuje kromě hodnoty i typ nové konstanty. Program může počáteční hodnotu typové konstanty později měnit. Typové konstanty se inicializují pouze jednou, na úplném začátku programu, inicializace lokálních konstant s typem se tedy neopakuje při každém vstupu do podprogramu. Příklad: const Min: integer = -100; Ret : String[6] = 'Slovo';
Struktura programu v jazyku Pascal program název; (hlavička programu) deklarační a definiční část; begin příkazová část; (hlavní program) end. Deklarační a definiční část obsahuje: definice návěští definice konstant definice typů deklarace proměnných deklarace procedur a funkcí Příkazová část obsahuje posloupnost příkazů jazyka. Rozdělení příkazů jazyka Pascal. jednoduché příkazy
příkaz vstupu příkaz výstupu přiřazovací příkaz volání procedury prázdný příkaz
sekvence (složený příkaz) podmíněný příkaz cyklus Zápisy jednotlivých příkazů v Pascalu strukturované
Přiřazovací příkaz Při zpracování přiřazovacího příkazu se nejprve vyhodnotí výraz na prvé straně příkazu a hodnota výrazu se přiřadí proměnné uvedené na levé straně. proměnná
:= výraz ;
Příkaz vstupu Read ( seznam proměnných ); Readln ( seznam proměnných ); Seznam proměnných je seznam identifikátorů proměnných oddělených čárkami. Příkaz výstupu Write ( seznam výrazů ); Writeln ( seznam výrazů ); Sekvence begin příkaz1; příkaz2; … příkazN; end; Podmíněný příkaz a) neúplný podmíněný příkaz if logický výraz then příkaz; b) úplný podmíněný příkaz if logický výraz then příkaz1 else příkaz2; c)
vícenásobné větvení case výraz ordinálního typu of hodnoty1 : příkaz1; . . .
hodnotyN : příkazN; else příkaz; end; Cykly a) cyklus s podmínkou na začátku while logický výraz do příkaz; b) cyklus s podmínkou na konci repeat příkaz until logický výraz ; c)
cyklus s daným počtem opakování for proměnná ord. typu := výraz ord. typu to výraz ord. typu do příkaz; for proměnná ord. typu := výraz ord. typu downto výraz ord. typu do příkaz;