Upload
megan-kerr
View
36
Download
4
Embed Size (px)
DESCRIPTION
Programování v Pascalu Přednáška 2. RNDr. Hana Havelková. O čem to bude. lexikální jednotky oddělovače, komentáře standardní vstup standardní výstup deklarace proměnných rychlý přehled typů jednoduché příkazy. Program v Pascalu. - PowerPoint PPT Presentation
Citation preview
Programování v Pascalu Přednáška 2
RNDr. Hana Havelková
O čem to bude
lexikální jednotky oddělovače, komentáře standardní vstup standardní výstup deklarace proměnných rychlý přehled typů jednoduché příkazy
Program v Pascalu
posloupnost lexikálních jednotek (tokenů) oddělenými oddělovači
dodržující jistá pravidla
syntaxe (syntaktické chyby) sémantika (sémantické chyby) logika (logické chyby)
Lexikální jednotky (tokeny)
speciální znaky identifikátory návěští číselné a řetězcové konstanty rezervovaná (klíčová) slova
Poznámka: sousedící identifikátory, klíčová slova nebo konstanty
musí být od sebe oddělena aspoň jednou mezerou nebo jiným oddělovačem
přebytečné mezery a oddělovače řádků jsou překladačem ignorovány
nerozlišují velká a malá písmena (case insensitive)
Oddělovače
prázdné znaky (blanks, white spaces) mezera, tabulátor, odřádkování, odstránkování znaky s kódem 0 – 31
komentáře
Komentáře
uzavírají se mezi složené závorky { } mohou být víceřádkové používají se
jako vysvětlení toho, co příslušný kód dělá jako direktiva (specielní příkaz) překladače při testování k vyřazení části kódu z provozu – co je
v komentářových závorkách se nekontroluje, nepřekládá, neprovádí
Speciální znaky
+ - * /. , : ;:= . . ^= <> < <= > >=( ) [ ]@ { } $ #(* *) (. .)
Identifikátory
libovolná délka, rozlišuje se prvních 63 znaků (závisí na překladači)
mohou obsahovat pouze písmena, číslice a podtržítka nesmí začínat číslicí nerozlišují se velká a malá písmena označují konstanty, typy, proměnné, funkce, procedury,
jednotky smysluplná jména velbloudí notace
Identifikátor – syntaktický diagram
Písmeno
Číslice
Podtržítko
Písmeno
Podtržítko
Podtržítko, číslice, písmeno
_
0 9
A Z a z
Číslice A F a f
Podtržítko
Číslice
Písmeno
hexadecimálníčíslice
Identifikátor - příklady
suma cislo1, cislo2, cislo3 JmenoZaka jmeno_zaka CelkovaMzda celkova_mzda VypocetPrumerneMzdy vypocet_prumerne_mzdy x_na_treti _soucet_ MAXIMALNI_POCET
Klíčová slova
mají speciální (vyhrazené) použití identifikátor nesmí být pojmenovaný stejně jako klíčové
slovo
Klíčová slova - přehled
and file not thenarray for object toasm function of typebegin goto or unitcase if packed untilconst implementation procedure usesconstructor in program vardestructor inherited record whilediv inline repeat withdo interface set xordownto label shlelse mod shrend nil string
Direktivy
absolute assembler exportexternal far forwardindex interrupt namenear private publicresident virtual
Poznámka: nejsou vyhrazené
Návěští
označují řádek (příkaz) programu, který může být cílem skoku (příkaz goto)
je ukončeno dvojtečkou : jedná se vlastně o identifikátor
label Zacatek, Chyba;var
a, b, c, x1, x2 : real;beginZacatek:
WriteLn('Kvadratická rovnice');Write('Zadej a: '); ReadLn(a);if a = 0 then goto Chyba; ……
Chyba: WriteLn('Nejde o kvadratickou rovnici!!!');…
Konstanty
číselné celočíselné
desítkové šestnáctkové
reálné řetězcové
Celočíselné konstanty
desítkové
3618, -1025, 1234567890
šestnáctkové
$321, -$abc, $2C4A
Číslice
-
+
Hexadec. číslice$
-
+
Reálné konstanty
1231.1651.63e-5-7.8025e367.575E+6
Číslice
-
+ . Číslice
Exp
-
+
e
E ČísliceExp
Řetězcová konstanta
posloupnost znaků uzavřená mezi apostrofy řetězec nemůže být víceřádkový řetězec může být i prázdný tj. mezi apostrofy není nic
'' rozlišují se velká a malá písmena řetězec může obsahovat libovolné znaky s ASCII kódem
0 -255 tj. i znaky s českou diakritikou netisknutelné znaky grafické znaky
Řetězce
'Přednáška z Programování 1''Ahoj'#10'jak se máte? '#10'My docela dobře'
' '
Znak
# Číslo 0-255
Standardní vstup
obvykle z klávesnice procedura Read
obecný tvar: Read (p1, p2, …, pn ) načte ze vstupu n hodnot a uloží je do proměnných
p1, p2, …, pn procedura ReadLn
obecný tvar: ReadLn (p1, p2, …, pn) načte ze vstupu n hodnot a uloží je do proměnných
p1, p2, …, pn, přečte se i znak ukončující řádek
Příklad1 Příklad2 Příklad3 Příklad4
Vstup čísel a řetězců v jednom
čteme-li v jednom vstupu čísla i řetězce a řetězec není jakoposlední v seznamu, může se stát, že
číselné hodnoty následující po řetězci se již neuloží do svých proměnných, ale budou v podstatě spolknuty řetězcem a program dále čeká na vložení těchto hodnot
nastane chyba vstupu, neboť do čísla se ukládá část řetězce
Příklad1 Příklad2 Příklad3
Vstup několika řetězců najednou
čteme-li v jednom vstupu více řetězců, může se stát, že
první řetězec spolkne veškerý vstup až do konce řádku, takže ostatní řetězce zůstanou prázdné
dojde k chybnému rozdělení vloženého textu do jednotlivých řetězců – řetězce na začátku seznamu parametrů procedury ReadLn jsou správně naplněny a ostatní špatně nebo vůbec
Příklad1 Příklad2 Příklad3
Standardní výstup
obvykle na obrazovku (konzoli) procedura Write
obecný tvar: Write (p1, p2, …, pn ) zobrazí na výstupu hodnoty výrazů p1, p2, …, pn
procedura WriteLn obecný tvar: WriteLn (p1, p2, …, pn ) zobrazí na výstupu hodnoty výrazů p1, p2, …, pn a
poté odřádkuje
Poznámka: WriteLn bez parametrů pouze odřádkuje – lze použít i opakovaně
Standardní výstup - příklad
vara, b : integer;x : real;nadpis : string;
begina := 9165; b := 718;nadpis := 'Výstup na obrazovku';WriteLn(nadpis);WriteLn;WriteLn('a = ', a, 'b = ', b);x := a / b;WriteLn('Reálný podíl = ', x :10:4);WriteLn('Celočíselný podíl = ', a div b);…
end.
Deklarace proměnných
var
Seznam identifikátorů typ: ;
klauzule absolute
klauzule absolute
kladné celé č.absolute kladné celé č.:
identifikátor proměnné
jednoduché strukturované pointer
ordinální reálné
▫ char▫ boolean▫ celočíselné▫ interval▫ výčet
▫ pole▫ záznam▫ množina▫ soubor▫ řetězec
Datové typy
Deklarace proměnných – příklady
varjmeno, prijmeni : string[20];nadpis : string;pocet : integer;cislo, soucet, prumer : real;odpoved : char;platnost : boolean;odkaz_na_jmeno : string absolute jmeno;Crt_Mode : byte absolute $0040 : $0049;
Jednoduché příkazy
přiřazovací příkaz volání procedury příkaz goto
Přiřazovací příkaz
hodnota výrazu na pravé straně se dosadí do proměnné na straně levé event. zajistí vrácení funkční hodnoty
výraz na levé straně musí být kompatibilní vůči přiřazení s typem proměnné vlevo nebo s typem funkční hodnoty
typy jsou shodné typ výrazu je podtypem typu proměnné (fční hodnoty)
do proměnné typu real lze dosadit celočíselný výraz do proměnné typu integer lze dosadit výraz typu byte
… do proměnné typu string lze dosadit výraz typu char
Identifikátor proměnné := Výraz
Identifikátor funkce
Přiřazovací příkazy - příklady
varhotovo : boolean;realny_podil : real;cislo : byte;suma, x, y, a, b : integer;celociselny_podil : integer;
realny_podil := x / y;celociselny_podil : = x div y ;suma := suma + cislo;hotovo := (a=0) or (b=0);
Volání procedury
ClrScr;WriteLn('Dobrý den');NakresliKruh(10,10,20);ReadLn;
Identifikátor procedury
Identifikátor metody
Kvalifikovaný id. metody
Identifikátor proc. prom.
Seznam skutečných parametrů
Příkaz goto
příkaz skoku – přenese provádění programu na místo (příkaz) označený návěštím
používat jen výjimečně
Návěštígoto
Příklad goto
goto Konec;