36
2. lekce Algoritmus, cyklus Miroslav Jílek 1/36

2. lekce - cuni.cz

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 2. lekce - cuni.cz

2. lekce

Algoritmus, cyklus

Miroslav Jílek

1/36

Page 2: 2. lekce - cuni.cz

Algoritmus

2/36

Page 3: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů

3/36

Page 4: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů• je tvořen seznamem (list) přesně definovaných příkazů

4/36

Page 5: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů• je tvořen seznamem (list) přesně definovaných příkazů• vrací očekávané výsledky pro jakákoli vstupní data

5/36

Page 6: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů• je tvořen seznamem (list) přesně definovaných příkazů• vrací očekávané výsledky pro jakákoli vstupní data• výsledky musí být nalezeny po konečném počtu operací (kroků)

6/36

Page 7: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů• je tvořen seznamem (list) přesně definovaných příkazů• vrací očekávané výsledky pro jakákoli vstupní data• výsledky musí být nalezeny po konečném počtu operací (kroků)

Vlastnosti algoritmu

7/36

Page 8: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů• je tvořen seznamem (list) přesně definovaných příkazů• vrací očekávané výsledky pro jakákoli vstupní data• výsledky musí být nalezeny po konečném počtu operací (kroků)

Vlastnosti algoritmu

• univerzálnost – řeší skupinu podobných problémů, konkrétní problém je zadán pomocívstupních dat

8/36

Page 9: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů• je tvořen seznamem (list) přesně definovaných příkazů• vrací očekávané výsledky pro jakákoli vstupní data• výsledky musí být nalezeny po konečném počtu operací (kroků)

Vlastnosti algoritmu

• univerzálnost – řeší skupinu podobných problémů, konkrétní problém je zadán pomocívstupních dat

• determinovanost – každý krok algoritmu je jednoznačně (clear) definován, výsledekzpracování stejných dat musí dát stejný výsledek

9/36

Page 10: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů• je tvořen seznamem (list) přesně definovaných příkazů• vrací očekávané výsledky pro jakákoli vstupní data• výsledky musí být nalezeny po konečném počtu operací (kroků)

Vlastnosti algoritmu

• univerzálnost – řeší skupinu podobných problémů, konkrétní problém je zadán pomocívstupních dat

• determinovanost – každý krok algoritmu je jednoznačně (clear) definován, výsledekzpracování stejných dat musí dát stejný výsledek

• resultativnost – pro každá přípustná vstupní data musí být výsledek

10/36

Page 11: 2. lekce - cuni.cz

Algoritmus• je konečná posloupnost operací, která dává řešení skupiny problémů• je tvořen seznamem (list) přesně definovaných příkazů• vrací očekávané výsledky pro jakákoli vstupní data• výsledky musí být nalezeny po konečném počtu operací (kroků)

Vlastnosti algoritmu

• univerzálnost – řeší skupinu podobných problémů, konkrétní problém je zadán pomocívstupních dat

• determinovanost – každý krok algoritmu je jednoznačně (clear) definován, výsledekzpracování stejných dat musí dát stejný výsledek

• resultativnost – pro každá přípustná vstupní data musí být výsledek• konečnost – pro každá přípustná vstupní data bude po konečném počtu kroků výsledek

11/36

Page 12: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

12/36

Page 13: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

13/36

Page 14: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

Efektivita algoritmu

a) z hlediska rychlosti zpracování

14/36

Page 15: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

Efektivita algoritmu

a) z hlediska rychlosti zpracování

b) z hlediska paměti počítače

15/36

Page 16: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

Efektivita algoritmu

a) z hlediska rychlosti zpracování

b) z hlediska paměti počítače

Popis algoritmu

16/36

Page 17: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

Efektivita algoritmu

a) z hlediska rychlosti zpracování

b) z hlediska paměti počítače

Popis algoritmua) přirozeným jazykem (čeština, angličtina, ruština, …)

17/36

Page 18: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

Efektivita algoritmu

a) z hlediska rychlosti zpracování

b) z hlediska paměti počítače

Popis algoritmua) přirozeným jazykem (čeština, angličtina, ruština, …)

b) vývojový diagram (flowchart)

18/36

Page 19: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

Efektivita algoritmu

a) z hlediska rychlosti zpracování

b) z hlediska paměti počítače

Popis algoritmua) přirozeným jazykem (čeština, angličtina, ruština, …)

b) vývojový diagram (flowchart)

c) stuktogram (např.: Nassi-Shneidermann diagram)

19/36

Page 20: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

Efektivita algoritmu

a) z hlediska rychlosti zpracování

b) z hlediska paměti počítače

Popis algoritmua) přirozeným jazykem (čeština, angličtina, ruština, …)

b) vývojový diagram (flowchart)

c) stuktogram (např.: Nassi-Shneidermann diagram)

d) pseudokód

20/36

Page 21: 2. lekce - cuni.cz

Vstup algoritmu

Data (informace), která popisují problém, který máme vyřešit.

Výstup algoritmu

Požadovaný (očekávaný) výsledek.

Efektivita algoritmu

a) z hlediska rychlosti zpracování

b) z hlediska paměti počítače

Popis algoritmua) přirozeným jazykem (čeština, angličtina, ruština, …)

b) vývojový diagram (flowchart)

c) stuktogram (např.: Nassi-Shneidermann diagram)

d) pseudokód

e) programovacím jazykem (C, C++, C#, java, javascript, pascal, python, visual basic, ….)

21/36

Page 22: 2. lekce - cuni.cz

Příklady popisu algoritmu:

Úkol: z množiny čísel nalezněte největší číslo (maximum)

a) přirozený jazyk

Maximum je první číslo.

Postupně, pro všechna další čísla z množiny čísel, budeme zjišťovat, jestli dané číslo je většínež aktuální maximum. Pokud ano, pak nové maximum bude toto číslo.

Výsledkem bude maximum po testování posledního čísla množiny.

22/36

Page 23: 2. lekce - cuni.cz

b) vývojový diagram

Symboly použité ve vývojovém diagramu:

23/36

Page 24: 2. lekce - cuni.cz

c) struktogram (Nassi-Shneidermann diagram)

24/36

Page 25: 2. lekce - cuni.cz

d) pseudokód

Nacti pole N čísel

Max = první číslo v poli

Pro čísla od druhého do N-tého proveď:

Jestli Číslo > Max, potom Max = Číslo

Zobraz maximum

Používají se příkazy v pořadí, v jakém budou v algoritmu provedeny!

25/36

Page 26: 2. lekce - cuni.cz

e) programovací jazyk (příklad pro C)

int x, max, pole[]={5, 6, 17, 0, 6, -4};

max = pole[0];

for (x=1; x<=5; x++)

{

if (max < pole[x]) max = pole[x];

}

printf (“Max = %d\n”,max);

26/36

Page 27: 2. lekce - cuni.cz

Cykly a podmínkyCyklus je část algoritmu, ve které se opakuje definovaná činnost – příkazy.

Cyklus ForŘídící proměnná, (… její hodnota za cyklem!)Sestupný, vzestupnýDefinovaný počet cyklů, smyčka (loop) cyklu

Základní varianta cyklu For:

Parametry cyklu For:Proměnná - řídící proměnná cyklu a její

počáteční hodnotaPodmínka - podmínka, která definuje konec

cykluStep - velikost přírůstku hodnoty

řídící proměnné cyklu

27/36

Page 28: 2. lekce - cuni.cz

Varianta cyklu For s předčasným ukončením cyklu (break):

Break předčasně ukončuje cyklus For – dříve, než je ukončen vyhodnocení podmínky!

28/36

Page 29: 2. lekce - cuni.cz

Varianta cyklu For s ukončením smyčky cyklu (continue):

Continue ignoruje všechny následující příkazy v aktuální smyčce cyklu a pokračuje další smyčkou!

29/36

Page 30: 2. lekce - cuni.cz

Varianta cyklu For se dvěma oddělenými těly cyklu:

30/36

Page 31: 2. lekce - cuni.cz

Cyklus While

Podmínka, která rozhodne, jestli bude provedena (další) smyčka (loop), je na začátku cyklu.

31/36

Page 32: 2. lekce - cuni.cz

Cyklus Repeat

Podmínka, která rozhodne, jestli bude provedena další smyčka (loop), je na začátku cyklu.

32/36

Page 33: 2. lekce - cuni.cz

Úkol: Vytvořte vývojový diagram pro nalezení největšího sudého čísla

33/36

Page 34: 2. lekce - cuni.cz

Úkol: Vytvořte vývojový diagram pro nalezení největšího sudého čísla

34/36

Page 35: 2. lekce - cuni.cz

Domácí úkol:

Vytvořte vývojový diagram algoritmu pro výpočet průměrného čísla z pole čísel.

35/36

Page 36: 2. lekce - cuni.cz

Konec...

Vaše dotazy? ….

36/36