Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Tento studijní materiálů vznikl v rámci projektu operačního programu OP Praha Adaptabilita. Název projektu: Inovace vzdělávacích programů Finanční poradenství.

Podobné prezentace


Prezentace na téma: "Tento studijní materiálů vznikl v rámci projektu operačního programu OP Praha Adaptabilita. Název projektu: Inovace vzdělávacích programů Finanční poradenství."— Transkript prezentace:

1 Tento studijní materiálů vznikl v rámci projektu operačního programu OP Praha Adaptabilita. Název projektu: Inovace vzdělávacích programů Finanční poradenství a Aplikace výpočetní techniky. Projekt financuje Operační program Praha – Adaptabilita; EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJEME DO VAŠÍ BUDOUCNOSTI PB – Vyšší odborná škola a Střední škola managementu, s.r.o. Nad Rokoskou 111/7, Praha 8; Programování 01 Algoritmizace

2 Úvod do programování počítač program vstupyvýstupy Program je předpis pro transformaci vstupů na výstupy. Niklaus Wirth: program = algoritmus + datové struktury

3 Algoritmus Algoritmus je konečný soubor pravidel, jež dávají návod k vyřešení určité třídy úloh. Základní požadavky na algoritmus  determinovanost (algoritmus musí být přesný a jednoznačný)  rezultativnost (v konečném počtu kroků se musí dospět k výsledku)  efektivnost (jednotlivé operace musejí být proveditelné v konečném časovém intervalu)  hromadnost (algoritmus se týká celé skupiny úloh téhož typu)

4 Programování 104 Vývojové diagramy Použití :  při konstrukci či analýze algoritmů  pro dokumentaci, pro zachycení myšlenky Účel:  názornost a přehlednost pro pochopení při algoritmizaci  jednoznačný převod z textu programu do vývojového diagramu  spíše nevhodné při návrhu celého (složitějšího) programu

5 Prostředky vyjádření algoritmu  Přirozený jazyk  Jazyk matematiky  Grafické prostředky (vývojové diagramy, struktogramy, … )  Pseudojazyky (liší se od programovacích jazyků volnějšími pravidly syntaxe)  Programovací jazyky

6 Příklad slovního vyjádření algoritmu Euklidův algoritmus pro výpočet největšího společného dělitele dvou celých kladných čísel (předpokládáme, že zadaná čísla jsou uložena v proměnných M a N): 1. Urči zbytek R po celočíselném dělení hodnoty M hodnotou N. 2. Hodnotu N přesuň do proměnné M a hodnotu R do proměnné N. 3. Je-li N nulové, pak hodnota největšího společného dělitele je obsažena v M a výpočet končí. V opačném případě se výpočet vrací na krok 1.

7 Programovací jazyky počítač ?. generace - přirozený jazyk? 4. generace - neprocedurální a problémově orientované jazyky 3. generace - procedurální jazyky vysoké úrovně 2. generace -assembler 1. generace - strojový jazyk

8 8 Definice programovacího jazyka Složky definice programovacího jazyka:  Abeceda základní (terminální) symboly jazyka  Syntaxe pravidla pro tvorbu jazykových konstrukcí  Sémantika význam jazykových konstrukcí

9 Překladače  Kompilační překladače generují program ve strojovém kódu, který pak může být opakovaně využíván.  Interpretační překladače interpretují příkazy programu. Jejich použití je méně efektivní, protože při každém výpočtu musí být program vždy znovu interpretován.

10 Programovací styly Algoritmus = logika (funkce) + řízení CO SE DĚLÁ JAK SE TO DĚLÁ Imperativní styl- výrazná řídicí složka Procedurální jazyky (Fortran, Pascal, C,... ) Neimperativní styl - výrazná složka logiky (funkce) Neprocedurální jazyky  logické programování (Prolog)  funkcionální programování (Lisp, Haskell, … )

11 Vývojové diagramy Pro znázornění algoritmů se používají grafické značky spojené orientovanými spojnicemi. Tvary a významy některých značek, které budeme při kreslení vývojových diagramů používat, jsou na následujícím obrázku.

12 Algoritmizace 1. Zpracování symbol představující jakýkoliv druh zpracování nebo provedení definované operace nebo skupiny operací - např. změna hodnoty, umístění a pod. možnost vstupu do tohoto symbolu je z libovolné strany a těchto vstupů může být i několik přitom to mohou být vstupy samostatné, nebo se může jednat o jednu spojnici výslednou, která vznikla spojením několika spojnic dílčích výstup je však v zásadě vždy jenom jeden

13 Algoritmizace 2. Rozhodování symbol představuje rozhodovací nebo přepínací funkci symbol má jeden vstup (ten může být realizován jako výsledná spojnice) a alternativní výstupy daný výstup je aktivován po vyhodnocení podmínek uvnitř symbolu příslušné výsledky vyhodnocení podmínky mohou být zapsány přidruženě u spojnic reprezentujících dané cesty dalšího řešení tato značka má obyčejně dva výstupy - obecně může mít i tři výstupy a může mít i jeden větvený výstup (viz spojnice).

14 Algoritmizace 3. Příprava tento symbol představuje úpravu nebo modifikaci (proto se mu někdy také říká modifikační symbol) činnosti, která mění vlastní postup následné činnosti, např. nastavení přepínače, vyjmenování hodnot, kterých nabývá proměnná cyklu, úprava indexového registru symbol má dva vstupy, jeden sekvenční, druhý pro návrat po provedení příslušného bloku operací dva výstupy, jeden vstupující do daného bloku operací, druhý sekvenční, který pokračuje do další části programu

15 Algoritmizace 4. Data - vstup a výstup dat symbol reprezentuje vstupně - výstupní operace s daty, tj. dodání dat pro zpracování v programu nebo zpracování dat do požadované formy výstupu druh vstupního nebo výstupního zařízení nebo nosiče dat je buď jednoznačně určen charakterem zpracovávané úlohy, nebo může být popsán slovně, nebo k tomuto symbolu je možné připojit symbol charakterizující vstupně-výstupné zařízení nebo nosič dat v případě použití vstupně - výstupního zařízení je tento připojen k uvedenému symbolu paralelně symbol má jeden vstup (realizovaný jako výsledná spojnice) a jeden výstup

16 Algoritmizace 5. Ruční vstup tento symbol představuje všechny nosiče a zařízení pro ruční vstup informací jako jsou např. spřažená klávesnice počítače, světelné péro, snímač čárového kódu, různé přepínače apod. symbol má jenom jeden výstup

17 Algoritmizace 6. Interní paměť symbol představuje nosič dat v případě, že nosičem je vnitřní paměť počítače data v tomto případě mohou do programu z tohoto nosiče vstupovat, nebo se mohou z programu do této paměti ukládat symbol může tak mít jeden výstup nebo jeden vstup

18 Algoritmizace 7. Paměť s přímým přístupem symbol představuje nosič s přímým přístupem dat - magnetický disk, magnetický buben nebo pružný disk (disketa) podobně jako u interní paměti mohou data do programu z tohoto nosiče vstupovat, nebo se mohou z programu do této paměti ukládat symbol může mít tak jenom jeden vstup nebo jeden výstup

19 Algoritmizace 8. Zobrazení tento symbol představuje zařízení pro vizuální zobrazení dat, jako je např. monitor počítače, spřažené indikátory, signální zařízení apod. symbol má jenom jeden vstup

20 Algoritmizace 9. Dokument symbol představuje zařízení pro tištěný výstup, kterým může být klasická tiskárna, ale i zařízení pro tvorbu mikrofilmu, pokladní tiskárna a jiné symbol má jenom jeden vstup

21 Algoritmizace 10. Spojka tento symbol představuje přechod z jedné části vývojového diagramu na jinou část používá se k přerušení spojnice a k jejímu pokračování na jiném místě odpovídající symboly musí obsahovat stejné označení spojka má buď pouze jeden vstup nebo jeden výstup spojku lze použít i pro zobrazení větvení programu pomocí přepínače

22 Algoritmizace 11. Mezní značka symbol představuje vstup z vnějšího prostředí do programu nebo výstup z programu do vnějšího prostředí např. začátek nebo konec programu, zastavení programu nebo začátek a konec samostatně zpracované části programu (např. podprogram) a pod. podobně jako spojka může mít buď jenom jeden výstup nebo jeden vstup

23 Algoritmizace 12. Spojnice symbol ve tvaru svislé nebo vodorovné čáry představuje tok dat nebo řízení a slouží ke spojení jednotlivých symbolů ve vývojovém diagramu standardní směr toku informací je shora dolů a zleva doprava spojnice by měly do symbolu vstupovat shora nebo zleva a vystupovat dole nebo vpravo je možné spojnice opatřit šipkou pro zvýšení názornosti a jasnosti vývojového diagramu křížení spojnic se nedoporučuje větvení spojnic se používá v případě výstupu z podmíněného symbolu

24 Algoritmizace 13. Anotace symbol se používá k připojení popisných komentářů nebo vysvětlujících textů přerušovaná čára symbolu anotace je připojena k příslušnému výkonnému symbolu, nebo může být připojena k ohraničené skupině symbolů

25 Příklad grafického vyjádření algoritmu ano ne M := N R := M mod N N := R N = 0 Začátek Konec Operace mod dává zbytek po celočíselném dělení Hodnota největšího společného dělitele se nachází v proměnné M

26 Algoritmizace problému  Přímý postup: problém se známým algoritmem, triviální problém  Přeformulování problému: zjednodušení, zobecnění, ekvivalentní přeformulování  Rozklad problému na podproblémy:  konjunktivní: řešení problému se nalezne řešením všech podproblémů  disjunktivní: řešení problému se nalezne řešením pouze jednoho z podproblémů  repetiční: řešení se nalezne opakovaným řešením podproblémů (iterační rozklad) nebo téhož problému se zmenšující se dimenzí (rekurzivní rozklad)

27 Příklady přeformulování problému Zjednodušující přeformulování Místo výrazu  r 2 vyhodnocujeme výraz 3,14 ·r 2 Ekvivalentní přeformulování Soustavu n lineárních rovnic o n neznámých postupně transformujeme ekvivalentními úpravami (násobení rovnice nenulovým číslem, přičtení rovnice k jiné rovnici) na soustavu s jednotkovou maticí, což je triviální problém. Zobecňující přeformulování Místo problému nalezení kořenů rovnice 2x 2 – 6x + 3 = 0 algoritmizujeme problém ax 2 + bx + c = 0

28 Příklady rozkladu problému Konjunktivní rozklad Aritmetický průměr n čísel získáme postupným řešením těchto dvou podproblémů: a) Výpočet součtu čísel zadaných čísel. b) Podělení součtu hodnotou n. Disjunktivní rozklad Kořeny kvadratické rovnice získáme v závislosti na hodnotě diskriminantu řešením jednoho z těchto dvou podproblémů: a) Výpočet reálných kořenů. b) Výpočet komplexních kořenů.

29 Příklady rozkladu problému Iterační rozklad (v kombinaci s konjunktivním) Výpočet součtu čísel x 1, x 2, …, x N : Konjunktivní rozklad: a) Vynulování proměnné S (S := 0) b) Iterační rozklad: pro I = 1, 2, …, N postupně sečítáme hodnoty S a x I a výsledek ukládáme do S (S := S + x I ) Rekurzivní rozklad (v kombinaci s disjunktivním) Výpočet faktoriálu F přirozeného čísla N (F = N!): Disjunktivní rozklad: a) Je-li N = 0, pak F := 1 b) Je-li N > 0, pak F := N  (N – 1)! … rekurzivní rozklad

30 Základní řídicí struktury Řídicí struktury zajišťují organizaci výpočtu. Jakýkoli algoritmus lze napsat pomocí těchto základních struktur:  sekvence (odpovídá konjunktivnímu rozkladu)  větvení (odpovídá disjunktivnímu rozkladu)  iterace (odpovídá iteračnímu rozkladu) s testem zahájení s testem ukončení Charakteristický rys základních řídicích struktur: Mají jeden vstupní a jeden výstupní bod pro předání řízení.

31 Akce1; Akce2; Akce3 Jednotlivé akce v sekvenci jsou oddělovány středníkem. Pokud potřebujeme, aby sekvence navenek vystupovala jako jediná akce, musíme ji uzavřít do příkazových závorek begin a end. begin Akce1; Akce2; Akce3 end Akce1 Akce2 Akce3 Sekvence

32 Pom:=X; X:=Y; Y:=Pom Pom := X X := Y Y := Pom Příklad sekvence Výměna obsahu proměnných X a Y:

33 Větvení Podmínka Akce1Akce2 if Podmínka then Akce1 else Akce2 Význam: jestliže platí Podmínka, pak proveď Akci1, jinak proveď Akci2. Podmínka Akce anone anone a) b) if Podmínka then Akce Význam: jestliže platí Podmínka, pak proveď Akci.

34 Příklady větvení A > B Max := AMax := B Určení maxima z čísel A a B : if A>B then Max:=A else Max:=B X < 0 X := –X anone anone a) b) Náhrada hodnoty proměnné X její absolutní hodnotou: if X<0 then X:= –X

35 Iterace s testem zahájení Podmínka Akce ano ne while Podmínka do Akce Význam: pokud platí Podmínka, prováděj Akci. Akce ve struktuře while se nemusí provést ani jednou (když podmínka není splněna hned napoprvé). Akce musí měnit proměnné, na nichž závisí podmínka, takovým způsobem, aby iterace skončila v konečném počtu kroků. Provádí se pouze jedna akce. Má li se provádět sekvence akcí, musí být uzavřena mezi begin a end.

36 Příklad iterace s testem zahájení N>0 N:=N–1 ano ne Výpočet faktoriálu F přirozeného čísla N : F:=1; while N>0 do { F:=F  N; N:=N-1 } F:=1 F:=F*N

37 Podmínka Akce1 ano ne repeat Akce1; Akce2 until Podmínka Význam: opakuj Akci1 a Akci2 dokud neplatí Podmínka Akce ve struktuře repeat se provedou vždy alespoň jednou. Iterace s testem ukončení Akce2

38 N = 0 M := N ano ne Výpočet největšího společného dělitele dvou celých kladných čísel M a N : Repeat{ R:= M mod N; M:= N; N:= R} until (N=0) {Vysledek je v M} Příklad iterace s testem ukončení N := R R := M mod N

39 Vztahy mezi strukturami while a repeat Algoritmus a1 : Algoritmus a2 : while B do A if B then repeat A until not B Algoritmus b1 : Algoritmus b2 : repeat A until B A; while not B do A Algoritmus a2 je ekvivalentní algoritmu a1. Algoritmus b2 je ekvivalentní algoritmu b1.

40 Výpočet aritmetického průměru P z čísel X 1, …, X N ano nene S := 0 S := S + X I I := 1 Začáte k Konec I  N I := I + 1 P := S / N S=0; I=1; while (I  N) { S:=S+X I ; I:=I+1; } P=S/N;

41 Příklad č.1 Příklad č.1: Sestavíme algoritmus programu, který přečte čtveřici čísel a vytiskne číslo, které se rovná součinu součtu prvých dvou čísel a rozdílu druhých dvou čísel (např. pro vstupní data 4, 2, 3, 7 bude výsledek -24). Pro uložení vstupních dat zavedeme proměnné A, B, C, D (A pro první číslo, B pro druhé číslo atd.) a pro výsledek proměnnou VYSL.

42 Řešení příkladu č.1 výsledné diagramy:

43 Vývojové diagramy - Vývojové diagramy - Větvení: I v poměrně jednoduchých případech jsou zapotřebí řídicí struktury, které předepisují různé alternativy dalšího postupu vázané na splnění určité podmínky (tzv. větvení) resp. opakované provádění určitých akcí (tzv. cykly). Větvení budeme předepisovat řídicí strukturou, kterou nazveme podmíněný příkaz a jejíž vyjádření vývojovým diagramem, struktogramem a pascalskou notací je na následujícím obrázku.

44 Vývojové diagramy - podmínka B je logický výraz, který buď platí nebo neplatí (tzn. nabývá pravdivostních hodnot "pravda" - angl. true resp. "nepravda„– angl. false) a vyjadřuje testovanou podmínku, P1 a P2 jsou příkazy předepisující dvě alternativy postupu. Jestliže B platí, provede se příkaz P1, jinak se provede příkaz P2.

45 Příklad č.2: Sestavme algoritmus, který přečte dvě zadaná čísla a vytiskne větší z nich. Pro vstupní hodnoty 3, 4 má být výsledek 4, pro vstupní hodnoty 7, 7 má být výsledek rovněž 7.

46 Řešení přikladu č.2 Řešení:

47 Vývojové diagramy - větvení Zvláštním případem větvení z předposledního obrázku je situace, kdy k příkazu P1 není alternativní příkaz P2, tzn. kdy se jedná o podmíněné provedení příkazu v závislosti na splnění určité podmínky. Formy zápisu pro podmíněný příkaz "jestliže platí B, proveď P" jsou na následujícím obrázku.

48 Příklad č. 3 Příklad č. 3 K řešení problému z příkladu č.2 můžeme přistoupit také tímto způsobem: nezavedeme zvláštní proměnnou (Z) pro výstupní hodnotu, ale vytiskneme např. hodnotu proměnné X. Předtím však musíme zajistit, aby v případě, že platí X < Y, byla do ní přiřazena hodnota Y. Tento algoritmus je na následujícím obrázku.

49 Programování 1049 Řešení příkladu č.3 Řešení:

50 Příklad č.4: Uvažujme znovu dvojici čísel x, y a sestavme algoritmus, který vytiskne číslo 1, jestliže x y, nebo číslo 0, jestliže x=y. V programu zavedeme proměnné X a Y pro uložení zadaných čísel a proměnnou V, které nejprve přiřadíme požadovanou hodnotu 0,1 nebo 2 a pak tuto hodnotu vytiskneme. Postup vedoucí ke správnému přiřazení můžeme slovně popsat takto: Je-li X

51 Řešení příkladu č. 4

52 Vývojové diagramy - Vývojové diagramy -Cykly Pro výpočty realizované na počítačích je typické opakované provádění příkazů. Předepisujeme je řídícími strukturami, které nazýváme cykly. Základní řídící strukturu cyklu můžeme obecně vyjádřit příkazem „pokud platí B opakuj P“, kde B je podmínka, při jejímž splnění se příkaz P opakuje (tento příkaz nazýváme tělem cyklu). Cyklus končí (resp. se neprovede ani jednou), když podmínka B není splněna. Zápis tohoto příkazu vývojovým diagramem, struktogramem a v pascalské notaci je na následujícím obrázku. Další často používanou řídící strukturou pro cyklus je příkaz „opakuj P až do splnění B“. Tento případ si přiblížíme si později.

53 Vývojové diagramy - opakování „pokud platí B opakuj P“

54 Příklad č. 5 Sestavíme algoritmus pro výpočet zbytku po dělení dvou přirozených čísel. Vstup: x y, kde x a y jsou přirozená čísla. Výstup: q, kde q je zbytek po dělení čísla x číslem y.Postup založíme na tom, že dělení nahradíme opakovaným odčítáním podle vztahu x – y – y -... – y = q, q < y (1.1) Pro jednotlivé hodnoty zavedeme proměnné X (dělenec), Y (dělitel) a Q (zbytek). Podle vztahu (1.1) můžeme zbytek vypočítat tak, že proměnné Q přiřadíme hodnotu dělence a potom od ní, pokud to ještě není zbytek, opakovaně odečítáme dělitele, tzn. opakovaně provádíme příkaz Q:=Q-Y.

55 Řešení přikladu č.5 Základem algoritmu tedy bude cyklus "pokud Qł Y (tzn. Q Není zbytkem) opakuj Q:=Q-Y". Tento cyklus skončí, až neplatí podmínka Qł Y, tzn. Platí Q

56 Řešení příkladu č. 5

57 Vývojové diagramy - opakování „opakuj P až do splnění B“ kde P je opět tělo cyklu (tj. příkaz, který se má opakovat), B je podmínka, při jejímž splnění cyklus končí (při nesplnění se tělo cyklu opakuje).

58 Příklad č. 6 Příklad č.6: Sestavíme algoritmus pro výpočet faktoriálu, tělo cyklu budou ho tvořit příkazy I:=I+1; F:=F*I. Podmínka ukončení cyklu se bude tentokrát testovat až po provedení těchto příkazů. Cyklus má skončit po vynásobení F zadanou hodnotou n (která bude uložena v proměnné N), podmínka ukončení cyklu tedy bude I=N. Chceme-li, aby algoritmus pracoval i pro n=1, musíme za počáteční hodnotu proměnné I zvolit nulu.

59 Řešení příkladu č.6 Řešení:

60 Příklad č. 7 Je dán obdélník o stranách A, B. Vytvořte algoritmus pro výpočet obvodu (O) a obsahu (S) tohoto obdélníka.

61 Příklad č.8 Je dána kružnice o poloměru R. Vytvořte algoritmus pro výpočet obvodu (O) této kružnice a výpočet obsahu (S) kruhu, který leží uvnitř této kružnice.

62 Příklad č.9 Je dán rovnostranný trojúhelník o stranách A. Vytvořte algoritmus pro výpočet obvodu (O) a obsahu (S) tohoto trojúhelníka. Malá nápověda

63 Příklad č.10 Je dán pravoúhlý trojúhelník o stranách A, B, C. Vypočítejte stranu C podle Pythagorovi věty.

64 Příklad č. 11 Vytvořte algoritmus pro výpočet výrazu tak, aby se výpočet alespoň jednou uskutečnil.

65 Příklad č.12 Vytvořte algoritmus pro výpočet výrazu

66 Příklad č. 13 Vytvořte algoritmus pro výpočet výrazu

67 Příklad č. 14 Vytvořte algoritmus pro zjištění zda zadané číslo je kladné, či záporné

68 Příklad č. 15 Vytvořte algoritmus pro porovnávání a řazení dvou čísel od největšího do nejmenšího

69 Příklad č. 16 Vytvořte algoritmus pro nalezení největšího ze tří zadaných čísel

70 Řešení příkladu č.16

71

72 Příklad č. 17 Vytvořte algoritmus pro určení, zda tři čísla A, B, C mohou tvořit strany trojúhelníka 7

73 Příklad č. 18 Vytvořte algoritmus pro řešení lineární rovnice A*X + B =0 Proměnné A, B jsou načítány zvenčí X – hledaný kořen rovnice

74 Příklad č. 19 Vytvořte algoritmus pro zjištění zda daný žák prospěl s vyznamenáním, prospěl nebo neprospěl. Pro vstup použijte známky ze dvou předmětů. Diagram nakreslete ve wordu a uložte ho na flash disk. Ukládaný soubor pojmenujte svým příjmením.

75 Příklad č. 20 Vytvořte algoritmus pro vytvoření kalkulačky, která bude pracovat se dvěma čísly. Požadované matematické operace:  Sčítání  Odečítání  Násobení  Dělení

76 Příklad č. 21 Vytvořte algoritmus pro výpočet veličin rychlost, dráha a čas pohybu rovnoměrného přímočarého

77 Cykly Jsou jedním z nejsilnějších nástrojů algoritmů Podstatou je opakování určité části algoritmu Cyklus musí být konečný  Cykly s pevným počtem opakování  Cykly řízené podmínkou s podmínkou na začátku cyklu  Cykly řízené podmínkou s podmínkou na konci cyklu 8

78 Nekonečný cyklus

79 Cyklus s pevným počtem opakování

80 Čekací smyčka

81 Příklad č. 22 Vytvořte algoritmus pro výpočet výsledného odporu R, který se skládá ze dvou paralelních odporů R1 a R2. Algoritmus bude fungovat tak, že budete moci postupně zadávat různé hodnoty odporů R1 a R2 pro výpočet výsledného odporu R.

82 Příklad č. 23 Vytvořte algoritmus pro zobrazení čísel od jedničky do desítky

83 Příklad č. 24 Vytvořte algoritmus pro sečtení čísel od jedničky do desítky


Stáhnout ppt "Tento studijní materiálů vznikl v rámci projektu operačního programu OP Praha Adaptabilita. Název projektu: Inovace vzdělávacích programů Finanční poradenství."

Podobné prezentace


Reklamy Google