34
Programování v Pascalu Přednáška 2 RNDr. Hana Havelková

Programování v Pascalu Přednáška 2

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

Page 1: Programování v Pascalu Přednáška 2

Programování v Pascalu Přednáška 2

RNDr. Hana Havelková

Page 2: Programování v Pascalu Přednáška 2

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

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

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

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

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

Speciální znaky

+ - * /. , : ;:= . . ^= <> < <= > >=( ) [ ]@ { } $ #(* *) (. .)

Page 8: Programování v Pascalu Přednáška 2

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

Identifikátor – syntaktický diagram

Písmeno

Číslice

Podtržítko

Písmeno

Podtržítko

Page 10: Programování v Pascalu Přednáška 2

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

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

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

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

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

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

Konstanty

číselné celočíselné

desítkové šestnáctkové

reálné řetězcové

Page 17: Programování v Pascalu Přednáška 2

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

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

Ř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

Ř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

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

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

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

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

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

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

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

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

Jednoduché příkazy

přiřazovací příkaz volání procedury příkaz goto

Page 30: Programování v Pascalu Přednáška 2

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

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

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

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

Příklad goto

goto Konec;