+ All Categories
Home > Documents > Programování v Pascalu Přednáška 3

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

Date post: 02-Jan-2016
Category:
Upload: jennifer-stone
View: 39 times
Download: 3 times
Share this document with a friend
Description:
Programování v Pascalu Přednáška 3. RNDr. Hana Havelková. Výrazy. tvořeny kombinací operátorů, operandů (a oddělovačů) většina operátorů je binárních, některé jsou unární pořadí vyhodnocení složitých výrazů je dáno prioritou operátorů Pravidla: - PowerPoint PPT Presentation
31
Programování v Pascalu Přednáška 3 RNDr. Hana Havelková
Transcript
Page 1: Programování v Pascalu Přednáška 3

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

RNDr. Hana Havelková

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

Výrazy

tvořeny kombinací operátorů, operandů (a oddělovačů) většina operátorů je binárních, některé jsou unární pořadí vyhodnocení složitých výrazů je dáno prioritou

operátorů

Pravidla: operand mezi dvěma operátory s různou prioritou se

váže k operátoru s vyšší prioritou

operand mezi dvěma operátory se stejnou prioritou se váže k tomu vlevo – vyhodnocování operací zleva

výrazy uvnitř závorek jsou vyhodnoceny přednostně

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

Priorita operátorů

1. @ , not2. *, /, div, mod, and, shl, shr3. +, - , or, xor4. =, <>, <, > , <= , >=, in

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

Aritmetické operátory

+, - unární*, /, mod, div binární+, - binární

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

Relační operátory

= , <>< , ><= , >=

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

Bitové operátory

dají se aplikovat na celočíselné typy

not bitová negaceand bitový součinor bitový součetxor bitová nonekvivalenceshl posun vlevoshr posun vpravo

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

Logické operátory

dají se aplikovat na boolean typnot negaceand logický součin (konjunkce)or logický součet (alternativa)xor nonekvivalence

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

Tabulka pravdivostních hodnot

a ba and

ba or b

a xor b

not a

true true true true false false

true false false true true false

false true false true true true

false false false false false true

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

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 10: Programování v Pascalu Přednáška 3

Ordinální datové typy

popisují konečnou uspořádanou množinu hodnot mají vždy minimální a maximální hodnotu každé hodnotě z oboru hodnot tohoto typu je přiřazeno

ordinální číslo udávající v podstatě pořadí hodnot(celá čísla jsou zobrazena sama na sebe)

funkce pracující s ordinálními hodnotami Ord – vrací ordinální hodnotu Pred – vrací předchozí hodnotu Succ – vrací následnou hodnotu

Ord('A') vrací 65Pred ('C') vrací 'B'Succ(10) vrací 11

je-li x < y, platí Ord(x) < Ord(y)

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

Celočíselné typy

typ rozsahvelikost

byte 0 255 1Bshortint -128 +127 1B integer -32 768 +32 767 2Bword 0 +65 535 2Blongint -2 147 483 648 +2 147 483 647 4B

Specielní operátory:div celočíselné dělenímod zbytek po celočíselné dělení

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

Funkce pracující s celočíselnými typy

abs(n) absolutní hodnota dec(n) dekrement – snížení hodnoty n o 1 dec(n, i) dekrement – snížení hodnoty n o i inc(n) inkrement o 1 inc(n, i) inkrement o i sqr(n) druhá mocnina n

Převedení reálných čísel na celá int(x) celá část x round(x) zaokrouhlení x trunc(x) useknutí desetinné části

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

Typ boolean

pouze hodnoty true a false logické operátory

and or xor not

relační operátory < , >, = , <> <=, >=

succ (false) = truepred (true) = false

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

false < trueOrd(false)<Ord(true)

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

Typ char

hodnotou je znak (kódování dle ASCII) znak zapisujeme mezi apostrofy 'A', 'B' , '@', '0', 'č'platí: '0' < '1' < '2' < .. < '9' succ('0') = '1', succ('1') = 2 … 'A' < 'B' < … < 'Z' < … < 'a' < 'b' < … < 'z' ord('0') = 48, ord('A') = 65, ord('Z') = 90, ord('a') = 97

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

Funkce související s typem char

ord(c) ordinalita – vlastně ASCII kód chr(n) znak odpovídající ASCII kódu n succ(c) pred(c)

Platí:ord(chr(ASCII_kod)) = ASCII_kodchr(ord(znak)) = znak

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

Výčtový typ

je uživatelsky definovaný definuje se seznamem identifikátorů reprezentujících

hodnoty tohoto typu jde o seznam pojmenovaných konstant první konstanta má hodnotu 0, druhá 1 , …

výskyt identifikátoru představuje jeho zavedení jako identifikátoru konstanty příslušného typu

výčtový typ je ordinální – na operandy (téhož) výčtového typu mohou být aplikovány relační operátory

standardní funkce ord (x), succ (x) , pred(x) výčtový typ nelze přímo použít na vstupu ani výstupu

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

Příklad výčtového typu

typeDny = (po, ut, st, ct, pa, so, ne);Barvy = (modra, cervena, zelena, bila, cerna) ;Karty = (zelena, cervena, kule, zaludy);Hodnoceni = (vyborne, velmi_dobre, dobre, nedostatecne) ;

varden : Dny;karta : Karty;

beginden := st;karta := zaludy;……

end.

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

Typ interval

představuje souvislou podmnožinu nějakého ordinálního typu

dolní i horní mez podmnožiny udávají dvě konstanty (konstantní výrazy) ordinálního typu

horní mez musí být větší nebo rovna dolní mezi interval, který specifikuje nějakou podmnožinu ordinálního

typu T nazýváme intervalem z T a typ T hostitelským typem tohoto intervalu

..konstanta konstanta

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

Příklady typu interval

typevelka_pismena = 'A' .. 'Z' ;mala_pismena = 'a' .. 'z' ;

varv_znak : velka_pismena ;m_znak : mala_pismena ;cislo_do_100 : 1 .. 99 ;rocnik : 1 .. 6 ;znamka : 0 .. 5 ;teplota : -10 .. 25 ;

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

Typ real

konečná podmnožina reálných čísel – tj. čísla z jistého intervalu v jisté přesnosti (počet desetinných míst)

číslo v pohyblivé řádové čárce, tj. jako dvojice čísel (a, b), kde:

a je mantisa b je exponent zápis aEb 1.268E13 1,268 .

1013

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

Reálné typy

Typ Rozsah Platné Velikostcifry

real 2.9*10-39 .. 1.7*1038 11 – 12 6 Bsingle 1.5*10-45 .. 3.4*1038 7 – 8 4 Bdouble 5.0*10-324 .. 1.7*10308 15 – 16 8 Bextended 3.4*10-4932 .. 1.1*104932 19 – 20 10 Bcomp -9.2*1018 .. 9.2*1018 19 – 20 8 B

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

Použití jiných typů než real

zapnout numerický koprocesor – direktiva {$N+} (event. zapnout jeho emulaci pomocí {$E+} )

typ comp zobrazuje vlastně celá čísla, ale s vyšší přesností

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

Strukturované příkazy

složený příkaz podmíněné příkazy

příkaz if příkaz case

příkazy cyklu for while repeat .. until

příkaz with

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

Složený příkaz

posloupnost příkazů uzavřených mezi symboly begin a end

chová se jako jediný nedělitelný příkaz tj. kde může být jediný příkaz, může být složený příkaz

symboly begin a end bývají nazývány jako příkazové závorky

středník není součástí příkazů, slouží pouze k jejich oddělení

za posledním příkazem (před end) se neuvádí středník (je-li použit, chová se jako prázdný příkaz)

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

Podmíněný příkaz IF (neúplný)

vyhodnotí se podmínka za klíčovým slovem if je-li podmínka splněna (true), provede se příkaz uvedený

za then, v opačném případě program pokračuje dalším příkazem

neúplnýif podmínka then příkaz

podmínka

příkaz

+

-

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

Podmíněný příkaz IF (úplný)

úplnýif podmínka then příkaz1 else příkaz2

podmínka

příkaz1

+

-

příkaz2

vyhodnotí se podmínka za klíčovým slovem if je-li podmínka splněna (true), provede se příkaz1

uvedený za then, v opačném případě se provede příkaz2 uvedený za else

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

If příklad

vara, b : real;

beginWrite('Zadej dvě čísla: ');ReadLn(a, b);if a < b then WriteLn('První je menší než druhé')else

if a = b then WriteLn('Čísla jsou stejná')else WriteLn('První je větší než druhé');

…end.

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

If příklad

varhod, min, sec : byte;OK : boolean;

beginOK := true;Write('Zadej čas (hod min sec): ');ReadLn(hod, min, sec);if hod > 23 then OK := falseelse

if min > 59 then OK := falseelse

if sec > 59 then OK := false;if OK then WriteLn('Korektní čas') else WriteLn('Chybný čas');

end.

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

Podmíněný příkaz CASE

případ

case výraz případof end

else příkaz

;

konstanta konstanta.. : příkaz

vyhodnotí se ordinální výraz uvedený za case, porovnává se postupně s uvedenými případy, dojde-li ke shodě, provede se příkaz odpovídající případu, jinak se provede příkaz uvedený za else, nebo se neprovede nic, pokud klauzule else není použita

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

Case - příklad

typeoperator = (Plus, Minus, Krat, Deleno);

varop : operator;x, y, z : real;

begin…case op of

Plus : z := x + y ;Minus : z := x – y;Krat : z := x * y;Deleno : z := x / y;

elseWriteLn('Chybný operátor')

end;…

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

Case - příklad

varn : word;

beginWriteLn('Zadej celé číslo: ');ReadLn(n);case n of

0 .. 9 : WriteLn('Jednociferné číslo');10 .. 99 : WriteLn('Dvojciferné číslo');100 .. 999 : WriteLn('Trojciferné číslo');1000 .. 9999 : WriteLn('Čtyřciferné číslo');

elseWriteLn('Pěticiferné číslo???');

end;ReadLn;

end.


Recommended