nprg030 programování i rndr. tomáš holan, ph.d.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · n,...

37
NPRG030 Programování I RNDr. Tomáš Holan, Ph.D. 4.patro, dveře 404 http://ksvi.mff.cuni.cz/~holan/ [email protected] NPRG030 Programování I, 2016/17 1 / 37 4. 10. 2016 12:44:07

Upload: others

Post on 04-Mar-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

NPRG030 Programování IRNDr. Tomáš Holan, Ph.D.

4.patro, dveře 404

http://ksvi.mff.cuni.cz/~holan/[email protected]

NPRG030 Programování I, 2016/17 1 / 37 4. 10. 2016 12:44:07

Page 2: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

NPRG030 Programování I, 2016/17 2 / 37 4. 10. 2016 12:44:07

Page 3: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Programování je… způsob, jak ovládat počítač umění řešit úlohy

(a počítač nám v tom může pomoci)

umění psát programy

? co je to program ?

předpis, podle kterého počítač může provádětvýpočet nějakého algoritmu

? co je to algoritmus ?

NPRG030 Programování I, 2016/17 3 / 37 4. 10. 2016 12:44:07

Page 4: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Příklad: Algoritmus na sečtení dvou čísel zapsaných v desítkové soustavě.1. Desítkové zápisy čísel umístíme pod sebe tak, aby jejich pravé okraje byly zarovnány2. Delší z čísel doplníme zleva jednou nulou3. Kratší z čísel doplníme zleva tolika nulami, aby byla obě čísla stejně dlouhá4. Postupujeme zprava a ke každé dvojici číslic určíme číslici výsledku.

Přitom tato číslice nezáleží jen na této dvojici, ale i na stavu výpočtu Stavy jsou dva:

„s přenosem“ „bez přenosu“

na začátku je stav „bez přenosu“ výsledné číslice a stav lze určit například z tabulek:

pro

NPRG030 Programování I, 2016/17 4 / 37 4. 10. 2016 12:44:07

Pro stav „bez přenosu“:

0 1 2 3 4 5 6 7 8 90 0 1 2 3 4 5 6 7 8 91 1 2 3 4 5 6 7 8 9 02 2 3 4 5 6 7 8 9 0 13 3 4 5 6 7 8 9 0 1 24 4 5 6 7 8 9 0 1 2 35 5 6 7 8 9 0 1 2 3 46 6 7 8 9 0 1 2 3 4 57 7 8 9 0 1 2 3 4 5 68 8 9 0 1 2 3 4 5 6 79 9 0 1 2 3 4 5 6 7 8

Pro stav „s přenosem“:

0 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9 01 2 3 4 5 6 7 8 9 0 12 3 4 5 6 7 8 9 0 1 23 4 5 6 7 8 9 0 1 2 34 5 6 7 8 9 0 1 2 3 45 6 7 8 9 0 1 2 3 4 56 7 8 9 0 1 2 3 4 5 67 8 9 0 1 2 3 4 5 6 78 9 0 1 2 3 4 5 6 7 89 0 1 2 3 4 5 6 7 9 0

výsledek „bez přenosu“výsledek „s přenosem“

Page 5: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ALGORITMUS NENÍ

„vysvětlit něco, co známe,někomu, kdo to taky zná“

!!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!!

NPRG030 Programování I, 2016/17 5 / 37 4. 10. 2016 12:44:08

Page 6: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Příklad: Eukleidův algoritmus

Úloha: Najít největšího společného dělitele dvou přirozených čísel ( NSD(A,B) ).

Postup1: Projít všechna čísla <= min( A,B )…

Postup2: (Eukleides) Dvojice A,B Když A<>B, vezmi novou dvojici: to menší a rozdíl Když A=B, je A=B=NSD původní dvojice

NPRG030 Programování I, 2016/17 6 / 37 4. 10. 2016 12:44:08

Page 7: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Příklad: NSD a1, a2, … an

Postup: Pro k=2, …, n označ Dk = NSD a1, a2, … ak

D2 = NSD(a1, a2 ) Di+1 = NSD(Di, a i+1 )

NPRG030 Programování I, 2016/17 7 / 37 4. 10. 2016 12:44:08

Page 8: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Příklad:

Úloha: Nalezněte nejkratší cestu šachovým koněm z jednoho pole (třeba D3) na všechna ostatní pole.

Postup:0. Na startovní pole zapiš číslo 01. Všechna dosud neoznačená pole dostupná jedním tahem z pole

označeného 0 označ 12.Všechna dosud neoznačená pole dostupná jedním tahem z pole

označeného 1 označ 23.… …..………… 2 ………… 3

… atd.

Nalezení cesty pak proveď „odzadu“: Je-li cílové políčko označené N, hledáme políčko dostupné z něj jedním tahem a označené N-1 … až k políčku 0.

NPRG030 Programování I, 2016/17 8 / 37 4. 10. 2016 12:44:08

Page 9: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

0

NPRG030 Programování I, 2016/17 9 / 37 4. 10. 2016 12:44:08

Page 10: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

1 11 1

01 1

1 1

NPRG030 Programování I, 2016/17 10 / 37 4. 10. 2016 12:44:08

Page 11: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

2 2 22 2 2 2

1 2 1 22 1 2 2 1 2

2 0 2 22 1 2 2 1 2

1 2 1 2

NPRG030 Programování I, 2016/17 11 / 37 4. 10. 2016 12:44:08

Page 12: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

3 3 3 33 2 3 2 3 2 32 3 2 3 2 3 2 33 1 2 1 3 22 1 2 3 2 1 2 33 2 3 0 3 2 3 22 1 2 3 2 1 2 33 1 2 1 3 2

NPRG030 Programování I, 2016/17 12 / 37 4. 10. 2016 12:44:08

Page 13: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

4 3 4 3 4 3 4 33 2 3 2 3 2 3 42 3 2 3 2 3 2 33 4 1 2 1 4 3 22 1 2 3 2 1 2 33 2 3 0 3 2 3 22 1 2 3 2 1 2 33 4 1 2 1 4 3 2

„Algoritmus vlny“

NPRG030 Programování I, 2016/17 13 / 37 4. 10. 2016 12:44:08

Page 14: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

AlgoritmusPosloupnost konečného počtu elementárních kroků

vedoucí k vyřešení daného typu úloh/Encyklopedický slovník/

Charakteristické vlastnosti: hromadnost (vstupní data, výstupní data) výsledek lze získat zcela mechanicky konečnost

bw_mapa.png

NPRG030 Programování I, 2016/17 14 / 37 4. 10. 2016 12:44:08

Page 15: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Příklad: (Theseus, Ariadna a Minotaurus)

Úloha: určitě najít Minotaura (je-li tam) po (ne)nalezení se bez bloudění vrátit

NPRG030 Programování I, 2016/17 15 / 37 4. 10. 2016 12:44:08

Page 16: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Označme chodby: červená prošel 2x (značky fixem) žlutá prošel 1x (natažená nit) zelená neprošel (ostatní)

Postup: Hledání začíná u Ariadny V každé místnosti postupuj odpředu podle tabulky:

1. je tu Minotaurus => STOP, našel2. vede tu > 1 žlutá => zpět, motej nit, žlutá červená

3. vede tu > 0 zelená => vpřed, rozmotávej, zelená -> žlutá4. je tu Ariadna => STOP, Minotaurus neexistuje5. je tu 1 žlutá => zpět, motej nit, žlutá červená

NPRG030 Programování I, 2016/17 16 / 37 4. 10. 2016 12:44:08

Page 17: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Vlastnosti tohoto algoritmu:a) vždy existuje nějaké pravidlob) skončíc) cesta zpět se nebude křížitd) nit neustále určuje cestu zpěte) u Ariadny se zastaví,

jedině když neexistuje cesta k Minotaurovi

NPRG030 Programování I, 2016/17 17 / 37 4. 10. 2016 12:44:08

Page 18: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

„Algoritmus prohledávání s návratem“(backtracking)

Na každém rozcestí, na které přijdeš, zjisti všechny možné cesty a jednu z nich si vyber.

Takto postupuj, dokud to jde nebo dokud se nedostaneš do situace, ve které jsi už byl.

Nemůžeš-li dál, vrať se na poslední rozcestí, kde ses rozhodoval – - a rozhodni se jinak.

NPRG030 Programování I, 2016/17 18 / 37 4. 10. 2016 12:44:08

Page 19: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Ověřování správnosti algoritmuNeexistuje universální metoda zaručující úspěch !

KOREKTNOST Nebyla opomenuta žádná z možností

ČÁSTEČNÁ SPRÁVNOST Skončí-li, dá dobrý výsledek.

KONEČNOST Pro všechna přípustná data skončí.

NPRG030 Programování I, 2016/17 19 / 37 4. 10. 2016 12:44:08

Page 20: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Dokazování konečnostiStačí najít způsob,

jak každý stav výpočtu ohodnotit přirozeným číslema ukázat, že provedením jednoho kroku algoritmu se tato hodnota zmenší.

Invariant…je tvrzení, které platí po celou dobu výpočtu.

Kromě netypických výjimekk ověření správnosti NIKDY NESTAČÍ

provést konečný počet výpočtů !

=> zkušební výpočty nejsou pokus o důkaz, ale pokus o vyvrácení.

NPRG030 Programování I, 2016/17 20 / 37 4. 10. 2016 12:44:08

Page 21: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Úloha: Zjistěte, zda číslo N je prvočísloPostup (Čínský algoritmus):

Zjisti, zda N je dělitelem čísla 2N-2.Je-li, N je prvočíslo.Není-li, N není prvočíslo.

Příklad:N=5 25-2=30 => 5 je prvočísloN=9 29-2=510 => 9 není prvočíslo

NPRG030 Programování I, 2016/17 21 / 37 4. 10. 2016 12:44:08

Page 22: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Úloha: Zjistěte, zda číslo N je prvočísloPostup (Čínský algoritmus):

Zjisti, zda N je dělitelem čísla 2N-2.Je-li, N je prvočíslo.Není-li, N není prvočíslo.

Příklad:N=5 25-2=30 => 5 je prvočísloN=9 29-2=510 => 9 není prvočíslo

Pro N=341 selže!(Ten algoritmus je správný, omezíme-li množinu přípustných dat na čísla <= 340.)

NPRG030 Programování I, 2016/17 22 / 37 4. 10. 2016 12:44:08

Page 23: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Programování= Popisování složitějších algoritmických akcí pomocí akcí jednodušších.

Příklad: Výpočet druhé mocniny přirozeného čísla Záleží na tom, jaké jednodušší akce můžeme použít.Verse 1: Umocni dané číslo na druhou.Verse 2: Vynásob dané číslo sebou samým.Verse 3: Sečti dané číslo tolikrát, kolik je samo.Verse 4: Označ dané číslo N. Sečti N sčítanců rovných N.Verse 5: … nejdříve nový pojem:PROMĚNNÁ ……….. možnost ukládat a vybírat mezivýsledkyProměnné jsou pojmenovávány pomocí IDENTIFIKÁTORŮ,obvykle složených z písmen a číslic, musí začínat písmenem.

NPRG030 Programování I, 2016/17 23 / 37 4. 10. 2016 12:44:08

Page 24: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Verse 5: N, Počet a Suma jsou proměnné pro celá čísla.1. Přečti do N hodnotu ze vstupu.2. Do Suma dosaď 0.3. Do Počet dosaď N4. Dokud je hodnota proměnné Počet větší než 0, opakuj akce

4.1 K hodnotě Suma přičti hodnotu proměnné N4.2 Hodnotu proměnné Počet zmenši o 1

5. Vypiš hodnotu proměnné Suma.

DEKLARACE PROMĚNNÝCH= seznam proměnných a určení jejich typůN, Pocet, Suma: integerint N; int Pocet; int Suma;Krušina, sedlák (baryton), Ludmila, jeho žena (soprán)

NPRG030 Programování I, 2016/17 24 / 37 4. 10. 2016 12:44:08

Page 25: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Jazyky pro zápis algoritmů (programovací jazyky).PŘIŘAZOVACÍ PŘÍKAZ ukládá hodnotu do proměnné

x := vx := N-7/2y := y+1

PŘÍKAZ VSTUPU čte hodnotu ze vstupu a uloží ji do proměnné

read( x )read( N )read( A, B, C )

PŘÍKAZ VÝSTUPU zapíše hodnotu výrazu do výstupu

write( v )write( N+1 )

NPRG030 Programování I, 2016/17 25 / 37 4. 10. 2016 12:44:09

Page 26: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Verse 6:

N, Pocet, Suma: integer1.read( N ) { vstup }2.Suma := 0 { pocatecni hodnoty }3.Pocet := N4.Dokud je Pocet > 0, opakuj akce4.1.Suma := Suma + N4.2.Pocet := Pocet – 1

5.write( Suma ) { tisk vysledku }

KOMENTÁŘEzvyšují srozumitelnostnemají vliv na význam / běh

V jazyku Pascal: { cokoliv } (* cokoliv *)Lze je napsat kamkoliv, kde smí být mezera

NPRG030 Programování I, 2016/17 26 / 37 4. 10. 2016 12:44:09

Page 27: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Řízení běhu programu= v jakém pořadí se budou jednotlivé kroky/akce/příkazy provádět

Možnosti: příkaz skoku

mění pořadí provádění příkazů strukturované příkazy

vytvářejí složitější příkazy z jednodušších

NPRG030 Programování I, 2016/17 27 / 37 4. 10. 2016 12:44:09

Page 28: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

PŘÍKAZ SKOKU určuje příští prováděnou instrukciVe většině jazyků má tvar

GOTO číslo příkazu

N, Pocet, Suma: integer1: read( N ) { vstup }2: Suma := 0 { pocatecni hodnoty }3: Pocet := N4: je-li Pocet = 0, pak GOTO 85: Suma := Suma + N6: Pocet := Pocet - 17: GOTO 48: write( Suma ) { tisk vysledku }

Poznámka: řádka <-> příkazPoznámka: Dva druhy skoků:

podmíněnýnepodmíněný

NPRG030 Programování I, 2016/17 28 / 37 4. 10. 2016 12:44:09

S těmito příkazy už bychom vystačiliKdyž vynecháme deklarace, máme BASIC

Page 29: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

STRUKTUROVANÉ PROGRAMOVÁNÍEdsger W. Dijkstra: Goto statement considered harmful, 1968

<= potřeba zvládat velké programy, potřeba dělby práce

čím silnější prostředky máme k dispozici,s tím větší kázní a obezřetností je musíme používat

nerespektování přirozených strukturnebo dokonce jejich (násilná) likvidacese v budoucnu projeví vážnými a nepředvídatelnýminegativními důsledky.

NPRG030 Programování I, 2016/17 29 / 37 4. 10. 2016 12:44:09

Page 30: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

STRUKTUROVANÉ PROGRAMOVÁNÍvytváření (skládání) složitějších (strukturovaných) příkazůskládáním z jednodušších

Systém několika málo konstrukcí, kterými lze vyjádřit všechny algoritmické konstrukce.Přitom další rozšiřování už nic nepřidá.

TVRZENÍStrukturovaným příkazům rozumíme lépenež (stejně složitým) příkazům nestrukturovaným.

PŘÍKLADBer, dokud dávám!Jestli prší, počkej, až pojede vlak.

NPRG030 Programování I, 2016/17 30 / 37 4. 10. 2016 12:44:09

Page 31: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

Odbočka:

VÝVOJOVÉ DIAGRAMYHistoricky: Jeden z pokusů, jak překonat složitost programů.Použijeme pro znázornění konstrukcí strukturovaného programování.

NPRG030 Programování I, 2016/17 31 / 37 4. 10. 2016 12:44:09

Page 32: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

STRUKTUROVANÉ PROGRAMOVÁNÍ

Podmíněný příkazúplný:

if P then A else B

NPRG030 Programování I, 2016/17 32 / 37 4. 10. 2016 12:44:09

Page 33: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

STRUKTUROVANÉ PROGRAMOVÁNÍ

Podmíněný příkazneúplný:

if P then A

NPRG030 Programování I, 2016/17 33 / 37 4. 10. 2016 12:44:09

Page 34: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

STRUKTUROVANÉ PROGRAMOVÁNÍ

Složený příkaz

begin A;B;...Z end

NPRG030 Programování I, 2016/17 34 / 37 4. 10. 2016 12:44:09

Page 35: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

STRUKTUROVANÉ PROGRAMOVÁNÍ

Příkazy cykluwhile P do A

kontrola PŘED provedením těla cyklu

NPRG030 Programování I, 2016/17 35 / 37 4. 10. 2016 12:44:09

Page 36: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

STRUKTUROVANÉ PROGRAMOVÁNÍ

Příkazy cyklurepeat A;B;...Z until P

kontrola PO provedení těla cyklu

NPRG030 Programování I, 2016/17 36 / 37 4. 10. 2016 12:44:09

Page 37: NPRG030 Programování I RNDr. Tomáš Holan, Ph.D.ksvi.mff.cuni.cz/~holan/sl_2016_01.pdf · N, Počet a Suma jsou proměnné pro celá čísla. 1. Přečti do N hodnotu ze vstupu

NPRG030 Programování I, 2016/17 37 / 37 4. 10. 2016 12:44:09