Informatika I 3 pednka RNDr Ji Dvok CSc

  • Slides: 25
Download presentation
Informatika I 3. přednáška RNDr. Jiří Dvořák, CSc. dvorak@uai. fme. vutbr. cz Informatika I:

Informatika I 3. přednáška RNDr. Jiří Dvořák, CSc. dvorak@uai. fme. vutbr. cz Informatika I: přednáška 3

Obsah přednášky q Datové typy v Pascalu q Proměnné a pojmenované konstanty q Příkazy

Obsah přednášky q Datové typy v Pascalu q Proměnné a pojmenované konstanty q Příkazy v Pascalu q Řídicí struktury q Složený příkaz q Podmíněné příkazy q Příkazy cyklu Informatika I: přednáška 3 2

Datové typy v jazyku Pascal q Jednoduché datové typy: · real · integer ·

Datové typy v jazyku Pascal q Jednoduché datové typy: · real · integer · boolean · char · výčtový typ · interval v jazyku předdefinované q Strukturované datové typy: · množina · pole · záznam · soubor Informatika I: přednáška 3 definované uživatelem 3

Jednoduché datové typy v jazyku Pascal q Typ real: reálné (přesněji racionální) hodnoty q

Jednoduché datové typy v jazyku Pascal q Typ real: reálné (přesněji racionální) hodnoty q Typ integer: celočíselné hodnoty q Typ boolean: logické (booleovské) hodnoty q Typ char: znakové hodnoty (characters) q Výčtový typ: výčet hodnot reprezentovaných identifikátory q Typ interval: podmnožina hodnot nějakého ordinálního typu Množiny hodnot všech jednoduchých (skalárních) datových typů v Pascalu jsou uspořádané a jsou pro ně definovány relační operace. Ordinální je takový typ, jehož hodnoty jsou navíc očíslovány pořadovými (celými) čísly. Ordinální jsou všechny výše uvedené typy s výjimkou typu real. Informatika I: přednáška 3 4

Společné operace pro skalární typy operátor = <> < <= > >= význam rovno

Společné operace pro skalární typy operátor = <> < <= > >= význam rovno nerovno menší nebo rovno větší nebo rovno Pozn. : Jedná se o relační operace. Výsledkem jsou hodnoty typu boolean. Informatika I: přednáška 3 5

Společné funkce pro ordinální typy Funkce význam ord pořadové číslo hodnoty argumentu v uspořádané

Společné funkce pro ordinální typy Funkce význam ord pořadové číslo hodnoty argumentu v uspořádané množině hodnot daného typu; pořadové číslo celočíselné hodnoty je rovno této hodnotě, u ostatních ordinálních typů začíná číslování hodnot od nuly pred předchůdce hodnoty argumentu v uspořádané množině hodnot daného typu succ následník hodnoty argumentu v uspořádané množině hodnot daného typu Informatika I: přednáška 3 6

Proměnné a pojmenované konstanty q Definice konstant: const identifikátor 1=hodnota 1; identifikátor 2=hodnota 2;

Proměnné a pojmenované konstanty q Definice konstant: const identifikátor 1=hodnota 1; identifikátor 2=hodnota 2; . . . q Deklarace proměnných var identif 1: typ 1; identif 2 a, identif 2 b, … : typ 2; . . . Informatika I: přednáška 3 7

Příklady definic konstant a deklarací proměnných const PI=3. 14159; Imax=100; Pozdrav=’Ahoj’; var i, j,

Příklady definic konstant a deklarací proměnných const PI=3. 14159; Imax=100; Pozdrav=’Ahoj’; var i, j, m, n: integer; x, y: real; B: boolean; Zn 1, Zn 2: char; Informatika I: přednáška 3 8

Příkazy jazyka Pascal q Jednoduché příkazy: · přiřazovací příkaz · příkaz procedury · příkaz

Příkazy jazyka Pascal q Jednoduché příkazy: · přiřazovací příkaz · příkaz procedury · příkaz skoku · prázdný příkaz q Strukturované příkazy (řídicí struktury): · složený příkaz · podmíněné příkazy · příkazy cyklu · příkaz with (používá se u datového typu záznam) Informatika I: přednáška 3 9

Řídicí struktury 1. Struktura begin - end uzavření posloupnosti příkazů do příkazových závorek q

Řídicí struktury 1. Struktura begin - end uzavření posloupnosti příkazů do příkazových závorek q Struktura if - then větvení do dvou větví q Struktury while - do, repeat - until cykly umožňující řešit i případy s předem neznámým počtem opakování q Struktura case větvení do více než dvou větví q Struktura for cyklus s předem známým počtem opakování Informatika I: přednáška 3 10

Složený příkaz begin posloupnost příkazů oddělených středníky end Složený příkaz používáme tam, kde syntaxe

Složený příkaz begin posloupnost příkazů oddělených středníky end Složený příkaz používáme tam, kde syntaxe požaduje výskyt pouze jediného příkazu. Informatika I: přednáška 3 11

Příklady složeného příkazu a) b) begin Pom: =X; X: =Y; Y: =Pom end begin

Příklady složeného příkazu a) b) begin Pom: =X; X: =Y; Y: =Pom end begin S: =S+i i; i: =i+1; end Podle syntaxe jazyka Pascal je středník oddělovačem příkazů. Avšak v případě b) se středník vyskytuje i za posledním příkazem. To ale není chyba, neboť v tomto složeném příkazu se vlastně nacházejí tři příkazy oddělené středníky, přičemž třetím příkazem je příkaz prázdný. Informatika I: přednáška 3 12

Příkazy if a) if podmínka then příkaz 1 else příkaz 2 Je-li podmínka splněna,

Příkazy if a) if podmínka then příkaz 1 else příkaz 2 Je-li podmínka splněna, provede se příkaz 1, jinak se provede příkaz 2. b) if podmínka then příkaz Je-li podmínka splněna, provede se příkaz. V opačném případě se neprovede nic. Případné nejednoznačnosti v konstrukcích tvořených několika příkazy if vnořenými do sebe jsou řešeny tak, že každé else přísluší nejbližšímu předcházejícímu then, které je dosud volné a není uvnitř jiné struktury. Informatika I: přednáška 3 13

Sémantika konstrukcí s více příkazy if a) if B 1 then if B 2

Sémantika konstrukcí s více příkazy if a) if B 1 then if B 2 then P 1 else P 2; b) if B 1 then begin if B 2 then P 1 end else P 2; ad a) ad b) ano P 1 B 2 B 1 ne P 2 ano ne ano B 2 B 1 ne ne P 2 P 1 Informatika I: přednáška 3 14

Příklady příkazů if Určení minimální hodnoty z čísel X, Y, Z: if X<Y then

Příklady příkazů if Určení minimální hodnoty z čísel X, Y, Z: if X<Y then Min: =X else Min: =Y; if Z<Min then Min: =Z; Uspořádání čísel A a B vzestupně podle velikosti: if A>B then begin Pom: =A; A: =B; B: =Pom end; Informatika I: přednáška 3 15

Příkazy while a repeat a) while podmínka do příkaz Příkaz za do se provádí,

Příkazy while a repeat a) while podmínka do příkaz Příkaz za do se provádí, pokud je splněna podmínka. Jestliže podmínka není splněna, cyklus končí. b) repeat posloupnost příkazů oddělených středníky until podmínka Provádějí se příkazy mezi repeat a until, dokud není splněna podmínka. Jakmile je podmínka splněna, cyklus končí. Informatika I: přednáška 3 16

Příklady použití cyklů while a repeat Sečítání kladných čísel, zadávaných z klávesnice (výpočet je

Příklady použití cyklů while a repeat Sečítání kladných čísel, zadávaných z klávesnice (výpočet je ukončen zadáním záporného čísla nebo nuly): program Secitani; var x, s: real; begin s: =0; read(x); while x>0 do begin s: =s+x; read(x); end; writeln(’Soucet= ’, s); end. program Secitani; var x, s: real; begin s: =0; read(x); if x>0 then repeat s: =s+x; read(x); until x<=0; writeln(’Soucet= ’, s); end. Informatika I: přednáška 3 17

Příklady použití cyklu while Výpočet faktoriálu přirozeného čísla N: var i, N: integer; F:

Příklady použití cyklu while Výpočet faktoriálu přirozeného čísla N: var i, N: integer; F: real; . . . F: =1; i: =2; while i<=N do begin F: =F i; i: =i+1; end; {Vysledek je v F} var i, N: integer; F: real; . . . F: =1; i: =N; while i>=2 do begin F: =F i; i: =i– 1; end; {Vysledek je v F} Informatika I: přednáška 3 18

Příklad použití cyklu repeat Přibližný výpočet třetí odmocniny z A: program Treti. Odmocnina; {$APPTYPE

Příklad použití cyklu repeat Přibližný výpočet třetí odmocniny z A: program Treti. Odmocnina; {$APPTYPE CONSOLE} var A, Epsilon, X, Y: real; begin writeln('Zadej cislo pro odmocninu'); readln(A); writeln('Zadej presnost vypoctu'); readln(Epsilon); Y: =A; repeat X: =Y; Y: =X+(A/sqr(X)-X)/3; until abs(X-Y)<Epsilon; writeln('Treti odmocnina z', A, '=', Y); writeln('Stiskni Enter'); readln; end. Informatika I: přednáška 3 19

Příkazy case a) case Selektor. Větvení of hodnota 1: příkaz 1; hodn 2 a,

Příkazy case a) case Selektor. Větvení of hodnota 1: příkaz 1; hodn 2 a, hodn 2 b, … : příkaz 2; . . . end b) case Selektor. Větvení of hodnota 1: příkaz 1; hodn 2 a, hodn 2 b, … : příkaz 2; . . . else příkazy end Selektor větvení je výraz ordinálního typu. Provede se příkaz, který odpovídá hodnotě selektoru větvení. Pokud žádný takový není, provedou se v případě b) příkazy ve větvi else. Informatika I: přednáška 3 20

Příklad použití příkazu case Součást vyhodnocení aritmetického výrazu: var Oper: char; Vysledek, X, Y:

Příklad použití příkazu case Součást vyhodnocení aritmetického výrazu: var Oper: char; Vysledek, X, Y: real; . . . case Oper of ’+’: Vysledek: =X+Y; ’–’: Vysledek: =X–Y; ’ ’: Vysledek: =X Y; ’/’: Vysledek: =X/Y; end; Informatika I: přednáška 3 21

Příklad použití příkazu case Určení počtu dní v měsíci: var Mesic: 1. . 12;

Příklad použití příkazu case Určení počtu dní v měsíci: var Mesic: 1. . 12; {interval celych cisel od 1 do 12} Pocet. Dnu, Rok: integer; function Prestupny(R: integer): boolean; {Funkce testujici, zda rok R je prestupny}. . . case Mesic of 2: if Prestupny(Rok) then Pocet. Dnu: =29 else Pocet. Dnu: =28; 4, 6, 9, 11: Pocet. Dnu: =30 else Pocet. Dnu: =31 end Informatika I: přednáška 3 22

Příkazy for a) for řídicí_proměnná: =výraz 1 to výraz 2 do příkaz b) for

Příkazy for a) for řídicí_proměnná: =výraz 1 to výraz 2 do příkaz b) for řídicí_proměnná: =výraz 1 downto výraz 2 do příkaz Řídicí proměnná je ordinálního typu. Výraz 1 a výraz 2 určují počáteční a koncovou hodnotu řídicí proměnné. Tyto výrazy se vyhodnocují pouze jednou před zahájením cyklu. Příkaz, který je uvnitř cyklu, nesmí měnit hodnotu řídicí proměnné. Ta se mění automaticky (v cyklu for-to pomocí funkce succ, v cyklu for-downto pomocí funkce pred). Příkaz for je implementován jako cyklus while. Informatika I: přednáška 3 23

Implementace cyklu for pomocí while for I: =výraz 1 to výraz 2 do příkaz

Implementace cyklu for pomocí while for I: =výraz 1 to výraz 2 do příkaz Implementace: V 1: =výraz 1; V 2: =výraz 2; I: =V 1; while I<=V 2 do begin příkaz; I: =succ(I) end Implementace cyklu for-downto se liší podmínkou I>=V 2 a příkazem I: =pred(I). Informatika I: přednáška 3 24

Příklady použití cyklu for Výpočet faktoriálu přirozeného čísla N: var i, N: integer; F:

Příklady použití cyklu for Výpočet faktoriálu přirozeného čísla N: var i, N: integer; F: real; . . . F: =1; for i: =2 to N do F: =F i; {Vysledek je v F} var i, N: integer; F: real; . . . F: =1; for i: =N downto 2 do F: =F i; {Vysledek je v F} Informatika I: přednáška 3 25