3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,

Slides:



Advertisements
Podobné prezentace
Pro začátek něco lehčího
Advertisements

Vstup a výstup Ing. Lumír Návrat  katedra informatiky, A-1018 
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Seznamy Seznam = očíslovaná posloupnost skalárů Zápis seznamu do kulatých závorek: ("máslo")# jednočlenný seznam (1,2,3)# seznam se 3 členy ("jedna",2,3,"osm",100,$pozdrav)
Pascal - příklady.
Programování funkcí v Excelu
Jazyk VHDL Martin Štěpánek
Algoritmizace od algoritmu k Pascalu.
Příkazy Přednáška č. 4. Příkazy (statements)  Příkaz – dílčí krok programu (část kódu – zpravidla jeden řádek)  Program – posloupnost příkazů  Příkazy.
Vnitřní řazení v poli (in sito)
VISUAL BASIC Práce se soubory.
Programování v Pascalu Přednáška 2
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Algoritmizace a programování Operátory a příkazy v Delphi - 07
Algoritmy I Cvičení č. 3.
Materiály k přednášce Úvod do programování Ondřej Čepek.
MATLAB® ( část 3 - scripty).
Základy Visual Basicu.
PHP PHP – základy syntaxe (část 1) - 03 Mgr. Josef Nožička IKT PHP
Informatika I 3. přednáška
Jazyk vývojových diagramů
Algoritmizace.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Mgr. Jan Lavrinčík, DiS..  pro proměnnou typu Date alokováno 8 bajtů paměti, které obsahují spakovaný vzorek bitů nejen pro datum, ale i pro přesný čas.
Paměťové obvody a vývoj mikroprocesoru
Jazyk vývojových diagramů
Úvod do Pascalu. Co je Pascal? vyšší programovací jazyk poskytuje prostředky pro popis algoritmů, které odrážejí povahu řešených problémů, a nikoliv technickou.
Algoritmizace a programování Třídící algoritmy - 12
Jiří Znoj - zno Tvorba konkordace Algoritmy II 3. projekt, 5. zadání Jiří Znoj - zno
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
Informatika I 4. přednáška
Cvičení.
Je to program (aplikace), který slouží k úpravám prostého textu.  Na rozdíl od textových procesorů, se kterými se často pletou, postrádají textové editory.
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Datové typy a struktury
Programovací jazyk PASCAL
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
2 CYKLUS S PEVNÝM POČTEM OPAKOVÁNÍ Podle řídící proměnné proveď n-krát příkaz P1.
UNIX — doplňky Informatika pro ekonomy II přednáška 9.
Pascal - cykly.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Algoritmizace a programování Vývojové diagramy - 03
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Gymnázium prof. Jana Patočky Jindřišská Praha 1 „Praha & EU: Investujeme do vaší.
UNIX Shell skripty Roman Danel VŠB TU Ostrava, Hornicko – geologická fakulta.
doc. RNDr. Zdeněk Botek, CSc.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.
Základy ALgoritmizace 6. cvičení. Program cvičení Kontrolní bod 1 zakončení grafického zápisu algoritmů - vývojových diagramů –identifikátory a proměnné.
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
4. Typ pole 4.1 Jednorozměrná pole
Úvod do programování2 Vyučující: Mgr. Vítězslav Jersák Web: xjv.webnode.cz.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
VY_32_INOVACE_PR2_14. Cyklus umožňuje opakování určité posloupnosti příkazů bez nutnosti psát je stále znovu. Používáme tři základní druhy cyklů: cyklus.
Makra v Excelu syntaxe. Zápis nahraného makra SubEnd Sub O klíčová slova Sub a End Sub – začátek a konec makra O komentáře O text za znakem ', až do konce.
Inf Cykly ve vývojových diagramech
Algoritmizace a programování
Úvod do Pythonu – IO operace se soubory.
Algoritmizace a programování
Vytváření dokumentace algoritmů
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu, skoku, procedury, prázdný  Strukturované příkazy - skládají se z dílčích příkazů, předepisuje se jimi postupné, podmíněné a opakované provádění dílčích příkazů - složený, podmíněný (if, case), cyklu (repeat-until, while-do, for), with

3.1 Jednoduché příkazy  Přiřazovací příkaz Definuje hodnotu proměnné (spolu s příkazem vstupu), proměnná na levé straně musí být stejného typu jako výraz na pravé straně (případně výraz může být typu integer pro proměnnou typu real - dojde k automatické konverzi). Výraz musí být základního typu (integer, real, char, boolean), v TP může být ještě typu řetězec. Přiřazovacím příkazem je možno také kopírovat strukturovanou proměnnou (pole, záznam) do jiné proměnné totožného (pojmenovaného) typu.

3.1 Jednoduché příkazy  Příkaz vstupu  Většina programů provádí zpracování vstupních dat a vytváří výstupní data. Pro komunikaci mezi počítačem a uživatelem slouží data, která mají formu posloupnosti znaků, členěné na řádky - data textového typu. Kromě nich se používají ještě data, která odsahují údaje ve vnitřní reprezentaci a která slouží pro komunikaci mezi programy nebo částmi programů.  Standardnímu vstupnímu textovému souboru input je v každé implementaci přiřazeno určité vstupní zařízení, které umožňuje vstup posloupnosti znaků, členěné na řádky - klávesnice, dříve štítky, děrná páska. Tento vstupní soubor se otevírá automaticky. Údaje se ze vstupního souboru čtou příkazem:  read(input, seznam proměnných);

3.1 Jednoduché příkazy Příkaz vstupu Identifikátor input je v TP možno vynechat, způsob čtení je dán typem proměnné: Identifikátor input je v TP možno vynechat, způsob čtení je dán typem proměnné: typ char - přečte se jeden znak, je-li to oddělovač řádků,uloží se mezera (v TP se oddělovač řádků čte jako dvojice znaků #13#10) typ integer - čte se posloupnost znaků, tvořící dekadický zápis pčísla; číslu může předcházet libovolný počet mezer a oddělovačů řádků, ale nesmí žádný jiný znak typ real - podobně jako u typu integer se čte desetinné číslo případně v exponenciálním tvaru , 3e-2; čtení končí posledním znakem, který patří číslu, následující znak se čte při příštím čtení. typ real - podobně jako u typu integer se čte desetinné číslo případně v exponenciálním tvaru , 3e-2; čtení končí posledním znakem, který patří číslu, následující znak se čte při příštím čtení.  Př.: <┘ var i,j : integer; +93 –27B <┘ x,y : real; +93 –27B <┘ x,y : real; zn1,zn2 : char; zn1,zn2 : char; read(i); {i=25} read(j);{j=-27} read(i); {i=25} read(j);{j=-27} read(x); {x=-34.5} read(zn1);{zn1='b'} read(x); {x=-34.5} read(zn1);{zn1='b'} read(zn1,zn2);{y=93.0} read(zn2);{zn2=' '} read(zn1,zn2);{y=93.0} read(zn2);{zn2=' '} nebo read(i,x,y,j,zn1,zn2); - lze jediným příkazem. nebo read(i,x,y,j,zn1,zn2); - lze jediným příkazem.

3.1 Jednoduché příkazy  Příkaz readln přeskočí zbývající znaky do konce řádku, následující příkaz čtení bude číst ze začátku dalšího řádku. Příkaz je možno použít samostatně nebo se seznamem proměnných.  Při čtení se rozeznávají dva stavy - konec řádku a konec souboru. Konec řádku je stav po přečtení posledního znaku na řádku. Příkaz read čte v tomto stavu mezeru odpovídající konci řádku (do prom. typu char). Konec souboru je stav po přečtení posledního znaku - obvykle je to znak konce řádku. Čtení v tomto stavu způsobí chybu. Pro indikaci těchto stavů existují standardní funkce eoln a eof. Eoln - logická funkce, ve stavu konec řádku vrací hodnotu true, jinak false. Eof - logická funkce, ve stavu konec souboru vrací hodnotu true, jinak false.  Př.: zn eoln eof ab <┘ read(zn) 'a' f f ab <┘ read(zn) 'a' f f c * 'b' t f c * 'b' t f '_' f f '_' f f 'c' t f 'c' t f '_' f t '_' f t

3.1 Jednoduché příkazy  Místo mezery při čtení konce řádku se čtou skutečné oddělovače řádku - znaky #13, #10. Konec řádku je vhodné přeskočit příkazem readln.  Konec vstupu (souboru) se z klávesnice zadává znakem ctrl_z. Při použití unitu crt musí být v programu uveden příkaz checkeof := true, za ctrl_z neni třeba mačkat enter, ctrl_z se nezobrazuje.  Vstupní řádek, odeslaný z klávesnice klávesou ENTER se ukládá do vstupního bufferu. Příkaz readln způsobí vyprázdnění tohoto bufferu. Je-li buffer prázdný, příkaz eoln nebo eof vyvolá načtení dalšího řadku. Příznak konce řádku nebo souboru musí být v bufferu první, mají-li funkce eof, eoln vrátit hodnotu true.

3.1 Jednoduché příkazy  Příkaz výstupu  Standardnímu textovému souboru output je v každé implementaci přiřazeno určité výstupní zařízení, které umožňuje výstup posloupnosti znaků, členěné na řádky - tiskárna, displej. Tento výstupní soubor se otevírá automaticky. Údaje se do výstupního souboru čtou příkazem:  write(output, seznam proměnných); Identifikátor output je v TP možno vynechat

3.1 Jednoduché příkazy  Příkaz výstupu Kromě vystupující hodnoty může být předepsán celkový počet vystupujících znaků a u desetinných čísel také počet desetinných míst. Je-li v parametru určen větší počet znaků než je nutné, doplní se vystupující hodnota zleva mezerami, je-li počet menší než je nutné, vystoupí v případě čísel minimální nutný počet znaků, u typu řetězec pouze zadaný počet znaků. Je-li u hodnoty typu real v parametru určen počet desetinných míst, vystoupí číslo v desetinném tvaru, jinak v exponenciálním. Logické hodnoty vystupují jako řetězce true a false. Vytvářený řádek se ukončí příkazem writeln případně s parametry. Kromě vystupující hodnoty může být předepsán celkový počet vystupujících znaků a u desetinných čísel také počet desetinných míst. Je-li v parametru určen větší počet znaků než je nutné, doplní se vystupující hodnota zleva mezerami, je-li počet menší než je nutné, vystoupí v případě čísel minimální nutný počet znaků, u typu řetězec pouze zadaný počet znaků. Je-li u hodnoty typu real v parametru určen počet desetinných míst, vystoupí číslo v desetinném tvaru, jinak v exponenciálním. Logické hodnoty vystupují jako řetězce true a false. Vytvářený řádek se ukončí příkazem writeln případně s parametry.

Příkaz výstupu Př.: var var i:integer; write(i:4); -253 i:integer; write(i:4); -253 r:real; write(abs(i):5); ~~253 r:real; write(abs(i):5); ~~253 z:char; write(i:2); -253 z:char; write(i:2); -253 b;boolean; write(r:8:3); ~ b;boolean; write(r:8:3); ~ write(r:5:2); write(r:5:2); i:=-253; write(r:12); ~~3.4567e+02 r:=345.67; write(r:9); ~3.46e+02 z:='a'; write(z); a b:=true; write(z:5); ~~~~a write(b:5); ~true write(b:5); ~true write(not (b):1); f write(not (b):1); f write('abcd'); abcd write('abcd'); abcd write('abcd':6); ~~abcd write('abcd':6); ~~abcd write('abcd':2); ab write('abcd':2); ab U kladného čísla se místo znaménka nechává mezera. Specifikátor délky může být konstanta nebo proměnná.

 Př.: program tabelace; const radek='*****************************';{29x} var dm,hm,kr,x,y : real; dm,hm,kr,x,y : real; pocet : integer; pocet : integer;begin writeln('program tabelace funkce'); writeln('program tabelace funkce'); writeln('zadej dm,hm,krok'); writeln('zadej dm,hm,krok'); readln(dm,hm,kr); readln(dm,hm,kr); writeln; writeln; writeln(radek); writeln(radek); writeln('* tabulka funkce *'); writeln('* tabulka funkce *'); writeln('* y=sqrt(abs(sin(x))) *'); writeln('* y=sqrt(abs(sin(x))) *'); writeln(radek); writeln(radek); writeln('* x * y *'); writeln('* x * y *'); writeln(radek); writeln(radek); x:=dm; pocet:=0; x:=dm; pocet:=0; while x<=hm do begin while x<=hm do begin pocet:=pocet + 1; pocet:=pocet + 1; y:=sqrt(abs(sin(x))); y:=sqrt(abs(sin(x))); writeln('*',x:10:2,' *',y:10:2,' *'); writeln('*',x:10:2,' *',y:10:2,' *'); if pocet mod 5 = 0 then writeln(radek); if pocet mod 5 = 0 then writeln(radek); x:=x + kr; x:=x + kr; end; end; if pocet mod 5 <> 0 then writeln(radek); if pocet mod 5 <> 0 then writeln(radek); readln; readln;end.

3.1 Jednoduché příkazy  Prázdný příkaz - př.: if a>0 then ;  Příkaz procedury - volá se jinde definovaná činnost  Příkaz skoku - způsob předání řízení v programu, v pascalu se používá jen ojediněle.

3.2 Strukturované příkazy  Skládají se z dílčích příkazů, předepisuje se jimi postupné, podmíněné nebo opakované provádění těchto dílčích příkazů. Složený příkaz Nemá předepsán závazný formát: begin re := -b/(2*a); re := -b/(2*a); begin p:=x; x:=y; y:=p end; disc := sqr(b)-4*a*c; begin p:=x; x:=y; y:=p end; disc := sqr(b)-4*a*c; im := sqrt(abs(discr))/(2*a); im := sqrt(abs(discr))/(2*a); end; end;  Za posledním příkazem (před end) by neměl být středník. Je-li tam, znamená to prázdný příkaz.  Používá se v podmíněném příkazu, v příkazu cyklu - tělo cyklu, procedura, celý program.

3.2.1 Podmíněné příkazy příkaz if Příkaz if se provede tak, že se nejprve vyhodnotí podmínka - logický výraz a má-li hodnotu true, provede se příkaz za then. Má-li výraz hodnotu false, provede se příkaz za else, není-li else, neprovede se nic.

příkaz if if a < b then a := b; b := 0; if a<b then begin a := b; b := 0; end; if x > max then begin max := x; p := 1; end else p := p + 1;

příkaz if Příkaz else se vztahuje k nejbližšímu předchozímu if: if podm1 then if podm1 then begin if podm2 then prik1 if podm2 then prik1 if podm2 then prik1 if podm2 then prik1 else prik2 else prik2 else prik2 else prik2 end; end; if podm1 then begin if podm2 then prik1 if podm2 then prik1end else prik2 Klíčovému slovu else nesmí předcháze středník !!!

Příkaz case Větvení výpočtu do několika alternativ v závislosti na hodnotě výrazu ordinálního typu: var znak : char; case znak of ' + ' : v := x + y; ' - ' : v := x - y; ' * ' : v := x * y; ' / ' : v := x / y; end;' Pokud je pro více hodnot stejný příkaz, oddělují se čárkou.

Př.: Výpočet jízdného v závislosti na vzdálenosti. program vypocet_ jizdne; var pocetkm, jizdne, sazba : real; desitkykm : integer; begin readln(pocetkm); desitkykm := trunc(pocetkm) div 10; if desitkykm >= 6 then sazba := 2.2 else case desitkykm of 0,1 : sazba := 3; 2 : sazba := 2.5; 3,4,5 : sazba := 2.3; end; jizdne := pocetkm * sazba; writeln('jizdne za',pocetkm:6:1,' km je',jizdne:7:1,' kc'); end.

Př.: Výpočet jízdného v závislosti na vzdálenosti. program vypocet_ jizdne; var pocetkm, jizdne, sazba : real; desitkykm : integer; begin readln(pocetkm); desitkykm := trunc(pocetkm) div 10; case desitkykm of 0,1 : sazba := 3; 2 : sazba := 2.5; 3,4,5 : sazba := 2.3; else sazba := 2.2; end; jizdne := pocetkm * sazba; writeln('jizdne za',pocetkm:6:1,' km je',jizdne:7:1,' kc'); end.

3.3.2 Příkazy cyklu Předepisují opakované provádění příkazu nebo posloupnosti příkazů Příkaz repeat until Postupně se provedou všechny příkazy, vyhodnotí se podmínka a je-li hodnota log. výrazu false, činnost se opakuje. Provádění cyklu končí, když výraz má log. hodnotu true. Tělo tohoto cyklu se provede vždy alespoň jednou. Postupně se provedou všechny příkazy, vyhodnotí se podmínka a je-li hodnota log. výrazu false, činnost se opakuje. Provádění cyklu končí, když výraz má log. hodnotu true. Tělo tohoto cyklu se provede vždy alespoň jednou.

Příkaz repeat until Př.: Program pro výpočet částečného součtu řady sn = 1 + x + x^2/2! + x^3/3! x^n/n!, kde n je nejmenší takové, že xn/n! <eps. program soucet_rady; var soucet, clen, x, eps : real; soucet, clen, x, eps : real; i : integer; i : integer;begin read(x,eps); read(x,eps); i := 0; clen := 1; soucet := clen; i := 0; clen := 1; soucet := clen; repeat repeat i := i + 1; i := i + 1; clen := clen * x / i; clen := clen * x / i; soucet := soucet + clen; soucet := soucet + clen; until abs(clen) < eps; until abs(clen) < eps; writeln('soucet = ', soucet); writeln('soucet = ', soucet);end.

Příkaz while-do Nejprve se vyhodnotí logický výraz, dávající podmínku opakování, a je-li jeho hodnota true, provede se příkaz za do a tato činnost se znovu opakuje. Opakování končí, když má váraz hodnotu false. Je-li hodnota výrazu false už na začátku, příkaz se neprovede ani jednou.

Příkaz while-do Př.: Výpočet faktoriálu program faktorial; var k,n : integer; k,n : integer; f : real; f : real;begin read(n); read(n); k := 1; f := 1; k := 1; f := 1; while k <> n do begin while k <> n do begin k := k + 1; k := k + 1; f := f * k; f := f * k; end; end; writeln('n! = ',f:16:0); writeln('n! = ',f:16:0);end.

Eukleidův algoritmus - výpočet největšího společného dělitele dvou čísel  Věta: Největší společný dělitel dvou čísel je roven největšímu společnému děliteli menšího čísla a zbytku při dělení většího čísla menším číslem. (60,36)(36,24)(24,12) (12, 0)

Eukleidův algoritmus program eukleiduv_algoritmus; var x,y,a,b,c : integer; begin read(x,y) ; if x<y then begin a:=y; b:=x end else begin a:=x; b:=y end; repeat c:=a mod b; a:=b; b:=c; until c=0; writeln('nsd(',x:5,',',y:5,')=',a:3); end.

Eukleidův algoritmus program eukleiduv_algoritmus; var x,y,a,b : integer; begin read(a,b) ; x:= a; y:=b; while x<>y do if x>y then x:=x-y else y:=y-x; writeln('nsd(',a:5,',',b:5,')=',x:3); end.

Příkaz for for rp := vyraz1 to vyraz2 do příkaz; Řídící proměnná cyklu for je ordinálního typu, v proceduře to musí být lokální proměnná. Výrazy musí být stejného typu jako řídící proměnná.

Příkaz for Cyklus for provádí tuto činnost: begin pom1:= vyraz1; pom2 := vyraz2; if pom1 <= pom2 then begin rp := pom1; prikaz; while rp <> pom2 do begin rp := succ(rp); prikaz; end end; Proměnné pom1, pom2 jsou pomocné, vytváří je překladač. Mezní hodnoty cyklu nemohou být uvnitř cyklu měněny. Nelze měnit ani hodnotu řídící proměnné. Po skončení cyklu není hodnota řídící proměnné definována.

Příkaz for program kody_znaku; var zn : char; begin writeln('cislice vzestupne:'); for zn := '0' to '9' do write(zn,' kod ',ord(zn),'; '); writeln; writeln('dale - enter'); readln; writeln('velka abeceda sestupne:'); for zn :='z' downto 'a' do write(zn,' kod ',ord(zn),'; '); writeln; writeln('konec - enter'); readln; end.

Příkaz for program faktorial; var k,n : integer; f : real; {pro integer do 13, pro int64 do 20} begin write('zadej n: '); readln(n); f := 1; for k := 2 to n do f := f * k; writeln(n,'! je ',f:12:0); writeln('konec - enter'); readln; end.