Algoritmizace. 1. Úvod. Algoritmus

Podobné dokumenty
Identifikátor materiálu: ICT-4-01

Výukový materiál zpracován v rámci projektu EU peníze školám

Algoritmizace- úvod. Ing. Tomáš Otáhal

Algoritmy a algoritmizace

Pojem algoritmus a jeho základní vlastnosti

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Algoritmizace. Obrázek 1: Přeložení programu překladačem

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

1 Základy algoritmizace a programování. 1.1 Algoritmus Možnosti zápisu algoritmů. Základy algoritmizace a programování

Lekce 01 Úvod do algoritmizace

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

Program a životní cyklus programu

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

2. lekce Algoritmus, cyklus Miroslav Jílek

Algoritmy a datové struktury

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

6 Příkazy řízení toku

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Informatika Algoritmy

Základy algoritmizace

Programovací jazyk Pascal

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Základy algoritmizace a programování

ALGORITMIZACE. Výukový materiál pro tercii osmiletého gymnázia

Algoritmizace prostorových úloh

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Úvod do programování

VISUAL BASIC. Přehled témat

Vývojové diagramy 1/7

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Algoritmizace a programování

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Podmíněný příkaz

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

ANOTACE vytvořených/inovovaných materiálů

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Třídění dat. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_26 04

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Lekce 04 Řídící struktury

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Vývojové diagramy - zápis algoritmu

6. Příkazy a řídící struktury v Javě

Algoritmizace a programování

ALGORITMIZACE Příklady ze života, větvení, cykly

Algoritmizace a programování

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ , 5.1 a 5.2 8/14

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Násobení pomocí sčítání

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Překladač a jeho struktura

10 Algoritmizace Příklad 2 Word 2007/ VBA

PSK3-9. Základy skriptování. Hlavička

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Tvorba software a algoritmizace

NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Sada 1 - Základy programování

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Vstupní požadavky, doporučení a metodické pokyny

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Implementace LL(1) překladů

Poslední nenulová číslice faktoriálu

Skripty - úvod. Linux - skripty 2

Funkce. Definiční obor a obor hodnot

Kombinované úlohy - cvičení

NPRG030 Programování I, 2018/19 1 / :03:07

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

A3RIP Řízení projektů. 6. seminář

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Algoritmizace a programování

Základy algoritmizace, návrh algoritmu

Základní pojmy algoritmizace a programování ALGORITMUS INSTRUKCE STROJOVÝ KÓD VYŠŠÍ PROGRAMOVACÍ JAZYK ZDROJOVÝ KÓD KOMPILACE

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Informační a komunikační technologie

Sada 1 - Základy programování

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

postaveny výhradně na syntaktické bázi: jazyk logiky neinterpretujeme, provádíme s ním pouze syntaktické manipulace důkazy

Předmět: Algoritmizace praktické aplikace

Algoritmy a datové struktury 1

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Transkript:

1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá algoritmus a jeho tvorba algoritmizace. Algoritmus Algoritmus je přesný popis, definující jistý proces, který vede od měnitelných vstupních údajů k žádaným výsledkům. Jinak řečeno - algoritmus je jednoznačný a přesný popis řešení problému. Algoritmus si lze představit jako sekvenci jednoduchých kroků, kdy v každém kroku víme, který krok bude následovat (nebo algoritmus již končí). Navíc je po konečném počtu kroků (a tedy do určité doby) získán výsledek. Každý algoritmus musí mít tyto vlastnosti: Determinovanost algoritmus musí být přesný, srozumitelný a jednoznačný, tj. v každém místě je jednoznačně určen další krok a pro stejná vstupní data musí poskytovat stále stejné výsledky. (Činnost algoritmu nesmí záviset na libovůli osoby ani na vlastnostech zařízení, které ho realizují). Hromadnost algoritmus neslouží k řešení jen jedné úlohy, ale je řešením celé skupiny úloh, které se od sebe liší jen vstupními údaji. Vstupní údaje se mohou měnit v určitých mezích. Resultativnost hledané výsledky musíme získat po konečném počtu kroků, algoritmus musí po konečném počtu kroků skončit. Algoritmus by měl být také korektní (správný) velmi obtížně dokazatelná vlastnost, která by měla prokázat, že pro všechna přístupná data vede postup ke správnému cíli. Některé problémy lze řešit více způsoby - různými algoritmy, které se mohou svým postupem značně lišit. Naší snahou je vybrat pro řešení problému co nejefektivnější algoritmus, který řeší problém v co nejkratším čase, je přehledný a srozumitelný. Algoritmy můžeme zapisovat slovně nebo graficky, například pomocí tzv. vývojových diagramů. 1

2. Algoritmizace Algoritmizace je při tvorbě programu postup pro počítač, kterým lze prostřednictvím algoritmu řešit nějaký problém. Algoritmizaci lze rozdělit do několika etap: 1. Definice problému 2. Analýza úlohy 3. Vytvoření algoritmu 4. Sestavení programu 5. Odladění programu Definice problému V této etapě je třeba přesně formulovat požadavky, určit výchozí hodnoty, požadované výsledky, jejich formu a přesnost řešení. Analýza úlohy Při analýze úlohy si ověříme, zda je úloha řešitelná a uděláme si první představu o jejím řešení. Dále zjistíme, zda výchozí hodnoty jsou k řešení postačující a zda má úloha více řešení. Podle charakteru úlohy vybereme nejvhodnější řešení. Vytvoření algoritmu Sestavíme jednoznačný sled jednotlivých operací, které je třeba provést, aby byla úloha správně vyřešena. Algoritmus přesně popisuje postup zpracování daného úkolu, nedává však odpověď na daný problém, ale pouze postup, jak ji získat. Sestavení programu Na základě algoritmu řešené úlohy sestavíme program (zdrojový text) v konkrétním programovacím jazyce. Ze zdrojového textu se pomocí překladače do strojového kódu vytvoří spustitelný program. Dá se tedy říci, že dobře provedená analýza úlohy a algoritmizace daného problému je základním předpokladem sestavení programu pro počítač. Odladění programu Cílem odladění je odstranění chyb z programu. Nejčastější chyby jsou chyby v zápise, tzv. syntaktické - ty odhalí překladač. Závažnější jsou logické chyby, vyplývající z nesprávně navrženého algoritmu, nebo chyby, vzniklé špatným předpokladem v etapě formulace nebo analýzy úlohy - ty se projeví nesprávnou činností programu nebo špatnými výsledky - při odstraňování těchto chyb může pomoci ladící program (debugger) umožňující sledování aktuálního stavu proměnných a krokování. Teprve po odstranění všech druhů chyb můžeme program použít k praktickému řešení úloh. Algoritmus přepsaný do programovacího jazyku se nazývá počítačový program. Algoritmus by neměl být závislý na programovacím jazyku. Počítačový program je pak zápis algoritmu takovým způsobem, kterému rozumí počítač. Počítač sám má pouze omezenou skupinu příkazů, které umí vykonávat. Zápis z těchto příkazů tvořící program se nazývá strojový kód. Protože strojový kód je velmi složitý a vzdálený lidskému chápání, existují programovací jazyky. Ty obsahují takové příkazy, které je člověk tvořící program schopen snadno zadat, a zápis v těchto jazycích je pak převeden (přeložen) do jazyka počítače (strojového kódu). 2

3. Příklady slovního zápisu algoritmů Příklad 1: Algoritmus přípravy banánové bowle Formulace problému Připrav banánovou bowli. Analýza úlohy Vstupní údaje: 60 dkg banánů, 20 dkg práškového cukru, 4 dcl vína, 0,25 l sifonu, 2 lžíce rumu Výstupní údaje: banánová bowle Analýza: aplikovat správný postup Sestavení algoritmu 1. Oloupej banány 2. Rozkrájej je na tenká kolečka 3. Dej banány do mísy a zasyp cukrem 4. Přidej víno a nechej zchladit 5. Před podáním přidej rum a sifon Příklad 2: Algoritmus zatloukání hřebíků Formulace problému Zatluč hřebík do desky. Analýza úlohy Vstupní údaje: kladivo, hřebík, deska Výstupní údaje: hřebík zatlučen do desky Analýza: tlouct tak dlouho, dokud není hřebík zatlučen až po hlavičku Sestavení algoritmu 1. Vezmi kladivo a hřebík 2. Přilož hřebík k desce 3. Uhoď kladivem na hlavičku 4. Je hřebík zatlučen? ANO - pokračuj bodem 5 NE - vrať se na bod 3 5. Ukonči činnost a odlož kladivo Příklad 3: Algoritmus přechodu křižovatky, řízené semaforem Formulace problému Přejdi na druhou stranu ulice. Analýza úlohy Vstupní údaje: přechod, semafor Výstupní údaje: pozice na druhé straně ulice Analýza: přes přechod se nechodí na červenou Sestavení algoritmu 1. Dojdi až k semaforu 2. Svítí na semaforu červená? ANO - čekej, vrať se na bod 2 NE - pokračuj bodem 3 3. Přejdi přes přechod 3

4. Vývojové diagramy Jedním z mnoha způsobů znázornění algoritmů jsou vývojové diagramy. Je to grafické znázornění logické struktury řešeného úkolu. Ve vývojových diagramech se používá několik typů značek, z nichž každé je přiřazen určitý význam. Do těchto značek se vpisují operace nebo skupiny operací, které se mají provést. Používané značky: začátek algoritmu (S start, begin) konec algoritmu (K konec, end) blok zpracování (do bloku zapisujeme akce, které se mají provést např.: c:=a+b ) blok rozhodování (do bloku zapisujeme podmínku) blok vstupu nebo výstupu (výstup na obrazovku nebo tisk) blok pro cyklus se známým počtem průchodů spojka (pro rozsáhlé diagramy, rozdělené do několika částí) 4

5. Vývojové diagramy k slovně zapsaným algoritmům Příklad 2: Algoritmus zatloukání hřebíků 1. Vezmi kladivo a hřebík 2. Přilož hřebík k desce 3. Uhoď kladivem na hlavičku 4. Je hřebík zatlučen? ANO - pokračuj bodem 5 NE - vrať se na bod 3 5. Ukonči činnost a odlož kladivo Vývojový diagram: Příklad 3: Algoritmus přechodu křižovatky, řízené semaforem 1. Dojdi až k semaforu 2. Svítí na semaforu červená? ANO - čekej, vrať se na bod 2 NE - pokračuj bodem 3 3. Přejdi ulici přes přechod Vývojový diagram: 5

6. Základní algoritmické konstrukce Algoritmy lze teoreticky sestavovat libovolně, ale vzhledem k přehlednosti a úmyslně omezeným možnostem programovacích jazyků se musí dodržovat několik zásad: Algoritmus má mít jeden začátek a jeden konec musí být složen pouze ze základních algoritmických konstrukcí Název popis Diagram Slovní vyjádření Zápis v Pascalu Sekvence je posloupnost příkazů, které se postupně provedou Proveď příkazy P1, P2, P3. begin P2; P3; end; Větvení umožňuje rozdělit program do 2 větví podle toho, zda je nebo není splněna podmínka Jestliže platí podmínka P, proveď příkaz P1, jinak proveď příkaz P2. if P then P1 else P2; Větvení s prázdnou akcí umožňuje provést příkaz jenom tehdy, když je splněna podmínka Jestliže platí podmínka P, proveď příkaz P1. if P then 6

Cyklus s podmínkou na začátku Když podmínka není na počátku splněna, cyklus nemusí proběhnout ani jednou. Dokud platí podmínka P, prováděj příkaz P1. while P do Cyklus s podmínkou na konci Tento cyklus musí proběhnout aspoň jednou. Opakuj příkaz P1, až do splnění podmínky P. repeat until P; Cyklus se známým počtem průchodů Cyklus proběhne n krát v obecném případě (pro i od m do n) proběhne (n-m+1) krát pokud m>n tak neproběhne ani jednou. Pro i od 1 do n prováděj příkaz P1. během provádění cyklu řídící proměnná cyklu i postupně nabývá hodnot 1, 2, 3,...,n. for i:=1 to n do Pozn.: Vývojové diagramy cyklů mají jako jediné zpětnou větev. Standartní chybou u opakování s podmínkou bývá cyklus "s podmínkou uprostřed". Zpětná větev musí buď začínat hned za podmínkou, nebo se musí vracet těsně před podmínku. 7