Programování v Pascalu Přednáška 2
-
Upload
megan-kerr -
Category
Documents
-
view
37 -
download
4
description
Transcript of Programování v Pascalu Přednáška 2
![Page 1: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/1.jpg)
Programování v Pascalu Přednáška 2
RNDr. Hana Havelková
![Page 2: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/2.jpg)
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
![Page 3: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/3.jpg)
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)
![Page 4: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/4.jpg)
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)
![Page 5: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/5.jpg)
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
![Page 6: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/6.jpg)
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í
![Page 7: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/7.jpg)
Speciální znaky
+ - * /. , : ;:= . . ^= <> < <= > >=( ) [ ]@ { } $ #(* *) (. .)
![Page 8: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/8.jpg)
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
![Page 9: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/9.jpg)
Identifikátor – syntaktický diagram
Písmeno
Číslice
Podtržítko
Písmeno
Podtržítko
![Page 10: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/10.jpg)
Podtržítko, číslice, písmeno
_
0 9
A Z a z
Číslice A F a f
Podtržítko
Číslice
Písmeno
hexadecimálníčíslice
![Page 11: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/11.jpg)
Identifikátor - příklady
suma cislo1, cislo2, cislo3 JmenoZaka jmeno_zaka CelkovaMzda celkova_mzda VypocetPrumerneMzdy vypocet_prumerne_mzdy x_na_treti _soucet_ MAXIMALNI_POCET
![Page 12: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/12.jpg)
Klíčová slova
mají speciální (vyhrazené) použití identifikátor nesmí být pojmenovaný stejně jako klíčové
slovo
![Page 13: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/13.jpg)
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
![Page 14: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/14.jpg)
Direktivy
absolute assembler exportexternal far forwardindex interrupt namenear private publicresident virtual
Poznámka: nejsou vyhrazené
![Page 15: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/15.jpg)
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!!!');…
![Page 16: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/16.jpg)
Konstanty
číselné celočíselné
desítkové šestnáctkové
reálné řetězcové
![Page 17: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/17.jpg)
Celočíselné konstanty
desítkové
3618, -1025, 1234567890
šestnáctkové
$321, -$abc, $2C4A
Číslice
-
+
Hexadec. číslice$
-
+
![Page 18: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/18.jpg)
Reálné konstanty
1231.1651.63e-5-7.8025e367.575E+6
Číslice
-
+ . Číslice
Exp
-
+
e
E ČísliceExp
![Page 19: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/19.jpg)
Ř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
![Page 20: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/20.jpg)
Řetězce
'Přednáška z Programování 1''Ahoj'#10'jak se máte? '#10'My docela dobře'
' '
Znak
# Číslo 0-255
![Page 21: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/21.jpg)
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
![Page 22: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/22.jpg)
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
![Page 23: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/23.jpg)
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
![Page 24: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/24.jpg)
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ě
![Page 25: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/25.jpg)
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.
![Page 26: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/26.jpg)
Deklarace proměnných
var
Seznam identifikátorů typ: ;
klauzule absolute
klauzule absolute
kladné celé č.absolute kladné celé č.:
identifikátor proměnné
![Page 27: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/27.jpg)
jednoduché strukturované pointer
ordinální reálné
▫ char▫ boolean▫ celočíselné▫ interval▫ výčet
▫ pole▫ záznam▫ množina▫ soubor▫ řetězec
Datové typy
![Page 28: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/28.jpg)
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;
![Page 29: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/29.jpg)
Jednoduché příkazy
přiřazovací příkaz volání procedury příkaz goto
![Page 30: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/30.jpg)
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
![Page 31: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/31.jpg)
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);
![Page 32: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/32.jpg)
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ů
![Page 33: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/33.jpg)
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
![Page 34: Programování v Pascalu Přednáška 2](https://reader035.fdocument.pub/reader035/viewer/2022062721/56813709550346895d9e9356/html5/thumbnails/34.jpg)
Příklad goto
goto Konec;