1 / 31

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

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:

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programování v Pascalu Přednáška 3 RNDr. Hana Havelková

  2. 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ě

  3. Priorita operátorů 1. @ , not 2. *, /, div, mod, and, shl, shr 3. +, - , or, xor 4. =, <>, <, > , <= , >=, in

  4. Aritmetické operátory +, - unární *, /, mod, div binární +, - binární

  5. Relační operátory = , <> < , > <= , >=

  6. Bitové operátory dají se aplikovat na celočíselné typy not bitová negace and bitový součin or bitový součet xor bitová nonekvivalence shl posun vlevo shr posun vpravo

  7. Logické operátory dají se aplikovat na boolean typ not negace and logický součin (konjunkce) or logický součet (alternativa) xor nonekvivalence

  8. Tabulka pravdivostních hodnot

  9. Datové typy jednoduché strukturované pointer ordinální reálné • char • boolean • celočíselné • interval • výčet • pole • záznam • množina • soubor • řetězec

  10. 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í 65 Pred ('C') vrací 'B' Succ(10) vrací 11 je-li x < y, platí Ord(x) < Ord(y)

  11. Celočíselné typy typ rozsah velikost byte 0 255 1B shortint -128 +127 1B integer -32768 +32767 2B word 0 +65535 2B longint -2147483648 +2147483647 4B Specielní operátory: div celočíselné dělení mod zbytek po celočíselné dělení

  12. 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

  13. Typ boolean • pouze hodnoty true a false • logické operátory • and • or • xor • not • relační operátory • < , >, = , <> • <=, >= false < true Ord(false)<Ord(true) ord (false) = 0 ord (true) = 1 succ (false) = true pred (true) = false

  14. 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

  15. 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_kod chr(ord(znak)) = znak

  16. 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

  17. Příklad výčtového typu type Dny = (po, ut, st, ct, pa, so, ne); Barvy = (modra, cervena, zelena, bila, cerna) ; Karty = (zelena, cervena, kule, zaludy); Hodnoceni = (vyborne, velmi_dobre, dobre, nedostatecne) ; var den : Dny; karta : Karty; begin den := st; karta := zaludy; … … end.

  18. .. konstanta konstanta 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 typemtohoto intervalu

  19. Příklady typu interval type velka_pismena = 'A' .. 'Z' ; mala_pismena = 'a' .. 'z' ; var v_znak : velka_pismena ; m_znak : mala_pismena ; cislo_do_100 : 1 .. 99 ; rocnik : 1 .. 6 ; znamka : 0 .. 5 ; teplota : -10 .. 25 ;

  20. 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

  21. Reálné typy Typ Rozsah Platné Velikost cifry real 2.9*10-39 .. 1.7*1038 11 – 12 6 B single 1.5*10-45 .. 3.4*1038 7 – 8 4 B double 5.0*10-324 .. 1.7*10308 15 – 16 8 B extended 3.4*10-4932 .. 1.1*104932 19 – 20 10 B comp -9.2*1018 .. 9.2*1018 19 – 20 8 B

  22. 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í

  23. 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

  24. 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)

  25. + podmínka - příkaz Podmíněný příkaz IF (neúplný) neúplný if podmínka then příkaz • 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

  26. + podmínka - příkaz2 příkaz1 Podmíněný příkaz IF (úplný) úplný if podmínka then příkaz1 else 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

  27. If příklad var a, b : real; begin Write('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.

  28. If příklad var hod, min, sec : byte; OK : boolean; begin OK := true; Write('Zadej čas (hod min sec): '); ReadLn(hod, min, sec); if hod > 23 then OK := false else if min > 59 then OK := false else if sec > 59 then OK := false; if OK then WriteLn('Korektní čas') else WriteLn('Chybný čas'); end.

  29. ; case výraz případ end of else příkaz konstanta konstanta příkaz .. : Podmíněný příkaz CASE 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 případ

  30. Case - příklad type operator = (Plus, Minus, Krat, Deleno); var op : 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; else WriteLn('Chybný operátor') end; …

  31. Case - příklad var n : word; begin WriteLn('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'); else WriteLn('Pěticiferné číslo???'); end; ReadLn; end.

More Related