Základy algoritmizace



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

Program a životní cyklus programu

Algoritmizace prostorových úloh

Lekce 01 Úvod do algoritmizace

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

Programovací jazyk Pascal

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

Základy algoritmizace

Algoritmizace prostorových úloh

Úvod do programování - Java. Cvičení č.4

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

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

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

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

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

Úvod. Programovací paradigmata

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

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

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

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

Martin Hejtmánek hejtmmar

Algoritmizace. 1. Úvod. Algoritmus

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

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

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

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

Profilová část maturitní zkoušky 2017/2018

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

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

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

2. lekce Algoritmus, cyklus Miroslav Jílek

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

5 Přehled operátorů, příkazy, přetypování

Paměť počítače. alg2 1

Maturitní témata Školní rok: 2015/2016

Architektury počítačů a procesorů

II. Úlohy na vložené cykly a podprogramy

Úvod do jazyka C. Zdroje: Herout: Učebnice jazyka C, Kopp, České Budějovice, 2001 Schildt H: Nauč se sám C, Softpress, Praha, 2001

Profilová část maturitní zkoušky 2013/2014

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

6 Příkazy řízení toku

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:

Vývojové diagramy 1/7

IB111 Programování a algoritmizace. Programovací jazyky

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

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

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

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

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

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

Základy algoritmizace a programování. Manažerské informační systémy

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

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

Algoritmy a algoritmizace

Algoritmizace a programování

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

IB111 Úvod do programování skrze Python Přednáška 13

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

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

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

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

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

Algoritmizace a programování

Algoritmizace prostorových úloh

VISUAL BASIC. Přehled témat

Řídicí struktury. alg3 1

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

Základy algoritmizace a programování

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

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Algoritmizace řazení Bubble Sort

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

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

Vyřešené teoretické otázky do OOP ( )

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

Algoritmizace prostorových úloh

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Sada 1 - Základy programování

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Pole a kolekce. v C#, Javě a C++

C2115 Praktický úvod do superpočítání

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

Překladač a jeho struktura

Úvod do programování

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

ALGORITMIZACE A PROGRAMOVÁNÍ

Základy algoritmizace a programování

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

I. ZÁVĚREČNÁ ZPRÁVA PROJEKTU

1 Strukturované programování

Princip funkce počítače

Sada 1 - Základy programování

Algoritmizace prostorových úloh

Sada 1 - Základy programování

Transkript:

Základy algoritmizace

Algoritmus Algoritmus je postup pro řešení určité úlohy, který v každém kroku říká, jak dále postupovat. ALGORITMUS MNOŽINA VSTUPNÍCH DAT transformace množiny vstupních dat na množinu výstupních dat MNOŽINA VÝSTUPNÍCH DAT Počítače a programování 1 2

Elementárnost Vlastnosti algoritmu Skládá se z konečného počtu jednoduchých (elementárních) činností (kroků). Determinovanost V každém kroku lze rozhodnout, jak se má pokračovat (a jestli nenastal konec). Konečnost Algoritmus vždy skončí po konečném počtu kroků. Rezultativnost Vede ke správnému výsledku (k nějakému ). Hromadnost Použitelný pro celou třídu podobných problémů. Opakovatelnost Pro stejné vstupy vždy stejný výstup. Souvisí s determinovaností a rezultativností. Počítače a programování 1 3

Algoritmické jazyky Představují souhrn prostředků a pravidel způsobilých vyjadřovat výpočetní algoritmy. Mezi algoritmické jazyky patří : vývojovédiagramy Představují normou (dnes již nadnárodní) definované symbolické značky a pravidla pro jejich používání, sloužící k jednoznačnému grafickému vyjadřování výpočetních operací a postupů. Vývojový diagram tak slouží jednak k popisu výpočetního algoritmu a zároveň jako podklad pro sestavení programu pro počítač. programovací jazyky Programovací jazyky jsou důsledně formalizované algoritmické jazyky, určené pro zápis algoritmu pro počítač. Zápis algoritmu v programovacím jazyku nazýváme program. počítačově orientované» strojový kód (závislý na typu procesoru, instrukce ve formě čísel)» assembler (jazyk symbolických adres) vyšší programovací jazyky Počítače a programování 1 4

Vyšší programovací jazyky Jazyky s výrazně propracovanou syntaxí. Zahrnují v sobě složité programové konstrukce - struktury a objekty. Vzhledem k obecnosti nejsou tyto jazyky vázané na žádný konkrétní typ počítače. Transformace programu, napsaném v některém z těchto jazyků, se provádí speciálním programem, nazývaným překladač (kompilátor). Počítače a programování 1 5

Vyšší programovací jazyky V současné době se používají dva programovací jazyky vyššího typu. PASCAL, který je užíván zejména ve školství jako jazyk vhodný pro výuku programování (umožňující tzv. strukturované programování) a jeho nadstavba DELPHI C, resp. C++, který nachází své uplatnění v komerční oblasti při vytváření systémového a aplikačního software (DELPHI a C++ pak zajišťující možnost tzv. objektově orientovaného programování). Počítače a programování 1 6

Strukturované programování Využívá tři základní typy jazykových konstrukcí: sekvence, podmínky cykly. Každá taková struktura má v zásadě jenom jeden vstup a jeden výstup. Tímto se při programování vyhýbáme nesledovatelným vazbám v programu, které u klasických programovacích jazyků vyplývají z používání příkazu nepodmíněného skoku (GOTO). Počítače a programování 1 7

Objektově orientované programování Objekty, nebo také komponenty, jsou předem vytvořené a plně funkční konstrukce (softwarové stavební díly) daného programovacího jazyka, které řeší některý dílčí problém nebo úkol. Úkolem uživatele je pak místo podrobného psaní programu, jenom vybrat vhodné objekty (často jenom pomocí myší) a tyto příslušným způsobem seřadit (uložit do formuláře). Navíc uživatel má možnost měnit některé vlastnosti těchto objektů, případně si některé objekty definovat a zkonstruovat sám. Počítače a programování 1 8

Historie programovacích jazyků

Pojem programovací jazyk Pod pojmem programovací jazyk rozumíme prostředek pro zápis programů, jež mohou být provedeny na počítači. V tomto smyslu je programovací jazyk komunikačním nástrojem mezi: uživatelem počítače, který jeho jazykovými prostředky specifikuje algoritmus řešení daného problému, a počítačem, jenž svými technickými prostředky algoritmus interpretuje a realizuje tak transformaci vstupních údajů na výstupní. Počítače a programování 1 10

Vývoj programovacích jazyků Vývoj programovacích jazyků určovaly a určují mnohé faktory; k nejzávažnějším z nich pravděpodobně patří: vývoj technických prostředků vývoj metod strojového překladu jazyků vývoj metod programování stále širší oblasti využívání počítačů Počítače a programování 1 11

Strojový jazyk V prvním období existence počítačů zastával roli programovacího jazyka výhradně strojový kód, nazývaný proto také strojový jazyk. Vyjadřovacími prostředky strojového jazyka jsou instrukce. Jejich sémantika je definována technickými prvky počítače. Nedostatky: závislost na konkrétním typu počítače velmi nízkáúroveň popisovaných akcí pro člověka nepohodlný číselný zápis instrukcí. V současné době je používání strojového jazyka jako nástroje programování zcela ojedinělé. Počítače a programování 1 12

Jazyky symbolických instrukcí Prvním krokem ve vývoji programovacích jazyků byla náhrada numericky kódované informace instrukcí strojového jazyka informací symbolickou. Vzniká tak důležitá třída programovacích jazyků - jazyky symbolických instrukcí. Překlad (kompilace) - počítačem realizovaná transformace určitého textu na text reprezentující program ve strojovém jazyce. Assembler -překladač jazyka symbolických instrukcí. Nevýhody: závislost na konkrétním typu počítače Výhody: rychlost překladu a zpracování přeloženého programu možnost programování na elementárních úrovních, která je v některých případech nepostradatelná a ve vyšším programovacím jazyce nedostupná (hodně se používá při vytváření programů operačního systému) Počítače a programování 1 13

Vyšší programovací jazyky Další vývoj směrem k vyšším programovacím jazykům sledoval dva cíle: odstranit strojovou závislost jazyků, vyžadující od programátora detailní znalosti strojového jazyka a znemožňující použití programů vypracovaných pro jeden typ počítače na počítači jiného typu poskytnout programátorům takové prostředky pro popis algoritmů, které odrážejí povahu řešených problémů, a nikoliv technickou realizaci výpočetních procesů na počítači Počítače a programování 1 14

Fortran Zahájil éru skutečných vyšších programovacích jazyků Ve své první podobě byl Fortran opravdu snadno naučitelným jazykem vedoucím k maximálně efektivnímu programu Programování přestalo být výsostnou doménu skupiny úzce specializovaných odborníků Fortran byl však původně jazykem určeným pro vědeckotechnické výpočty, proto nemohl vyřešit úplně všechno Pro vědeckotechnické výpočty se používá dodnes (Digital Fortran Compaq) Počítače a programování 1 15

Algol První programovací jazyk, který poskytoval ucelenou a jednotnou množinu jazykových prostředků pro popis algoritmů Byl to prvníprogramovacíjazyk, který obsahoval explicitnířídící příkazy pro reprezentaci posloupnosti příkazů, iteraci a výběr alternativ Počátky strukturovaného programování Značná složitost a obtíže spojené s jeho zvládnutím i implementací Malé rozšíření Řada myšlenek, které se zde objevily poprvé, se uplatnila při koncipování jazyků široce používaných v praxi Počítače a programování 1 16

COBOL Jazyk Cobol byl vyvinut společným úsilím výrobců a uživatelů počítačů ve spolupráci s ministerstvem obrany USA. Ve dnech 28. - 29. 5. 1959 se konala konference, jejímž cílem bylo uvážit různé aspekty zavedení společného jazyka pro programování elektronických počítačů. Konference rozhodla o zahájení tohoto projektu s tím, že jazyk byl měl umožňovat sestavení programů v minimálním čase s minimálním programovacím úsilím zápis programů v jazyce blízkém angličtině snadný převod programů na nové typy počítačů úplnou dokumentaci programu Počítače a programování 1 17

Lisp V roce 1960, kdy vznikl COBOL-60, také vznikl na MIT Lisp, první jazyk zcela nového typu. Je to tzv. funkcionální jazyk, který používá jako jediné řídící struktury funkce a jejich skládání. Přinesl i nové pojmy v oblasti rekurzivních datových struktur a stal se základem programů pro symbolické manipulace. AutoLisp programování v AutoCADu Počítače a programování 1 18

BASIC V původní podobě neobsahoval podprogramy v dnešním slova smyslu Nerozlišoval typy číselných proměnných K jeho popularitě přispěla: jednoduchost možnost interaktivní práce snadná implementace na mikropočítačích Počítače a programování 1 19

PASCAL Navazoval na ALGOL Navržen profesorem Niklausem Wirthem (Eidgenoessische Technische Hochschule Zurich) v roce 1971 pro potřeby výuky programování. Dnes má Pascal ve světě nejen dominantní postavení při výuce programování, ale velmi se používá i pro běžné programování. Konečný tvar normy jazyka byl vydán v 80. letech pod označením ISO 7105. Počítače a programování 1 20

Jazyk C Vyvíjel se společně s OS UNIX C-jazyk se v prapůvodní podobě nazýval B-jazyk (Thomson, Ritchie na PDP-7, 1970) C-jazyk je unikátní, neboť je jakési střední úrovně. Není to jazyk vysoké úrovně jako BASIC nebo PASCAL, Není to však ani jazyk nízké úrovně jako assembler. Jazyk C může pracovat na úrovni systému a umožňuje programátorovi napsat téměř všechno, co ho napadne (funkce assembleru). Navíc je C-jazyk dostatečně univerzální i pro aplikační programování (funkce jazyka vyšší úrovně). Největší předností jazyka C je jeho schopnost rozšiřovat sama sebe. Knihovny C-jazyka se snadno rozšiřují co do velikosti a je snadné napsat novou funkci, jakmile ji potřebuji. Počítače a programování 1 21

Algoritmizace úlohy Etapy řešení problému 1. Specifikace (vymezení) problému 2. Analýza problému 3. Sestavení algoritmu 4. Kódování (zápis) algoritmu 5. Testování algoritmu (u programů ladění) Počítače a programování 1 22

Úloha: Algoritmus - příklad Sestavit návod na čištění zubů ve formě algoritmu Cíl: Vyčištění zubů daného člověka Prostředky: zdravá osoba (ústa, zuby, pohyblivá ruka, ) zubní kartáček, zubní pasta, sklenička na vodu, umyvadlo Počítače a programování 1 23

Člověk s nevyčištěnými zuby Algoritmus - příklad ALGORITMUS ČIŠTĚNÍ ZUBŮ Příprava kelímku a čisticího kartáčku Vlastní čištění zubů Uklizení kelímku a kartáčku Člověk s vyčištěnými zuby Počítače a programování 1 24

Člověk s nevyčištěnými zuby Algoritmus - příklad ALGORITMUS ČIŠTĚNÍ ZUBŮ Příprava kelímku a čisticího kartáčku Vlastní čištění zubů Vytáhni kartáček a kelímek ze skříňky. Do kelímku nalej pitnou vodu. Na kartáček nanes pastu. Krouži kartáčkem postupně po všech zubech, asi 2 minuty. Vypláchni si ústa. Smyj zbytky pasty z kartáčku. Opět krouži 2 min. čistým kartáčkem po zubech. Vypláchni si ústa. Uklizení kelímku a kartáčku Umyj kartáček proudem vody. Vylij vodu z kelímku a vypláchni ho čistou vodou. Ukliď kelímek i kartáček do skříňky. Člověk s vyčištěnými zuby Počítače a programování 1 25

Člověk s nevyčištěnými zuby Algoritmus - příklad Příprava kelímku a čisticího kartáčku Vlastní čištění zubů Uklizení kelímku a kartáčku ALGORITMUS ČIŠTĚNÍ ZUBŮ Vytáhni kartáček a kelímek ze skříňky. Do kelímku nalej pitnou vodu. Na kartáček nanes pastu. Otevři skříňku. Je tam kelímek? Ne konec Ano pokračuj Pusť kohoutkem vodu. Krouži kartáčkem postupně po všech zubech, asi 2 minuty. Teče? Vypláchni si ústa. Smyj zbytky pasty z kartáčku. Ne konec Opět krouži 2 min. čistým kartáčkem po zubech. Ano pokračuj Vypláchni si ústa. Natoč do ¾ kelímku vodu. Zavři kohoutkem vodu. Umyj kartáček proudem vody. Vylij vodu z kelímku a vypláchni ho čistou vodou. Zavři skříňku. Ukliď kelímek i kartáček do skříňky. Člověk s vyčištěnými zuby Počítače a programování 1 26

Základní prvky algoritmu I Při vytváření a popisu algoritmu používáme základní prvky, znichžse algoritmus skládá: začátek algoritmu počáteční bod, od nějž začíná zpracování konec algoritmu konečný bod, na němž po vytvoření výsledků zpracování dále nepokračuje, ukončuje algoritmus kroky algoritmu jednotlivé přesně vymezené a oddělené operace, které předepisují úkony, prováděné s proměnnými podprogramy předem definované části algoritmu, které figurují v algoritmu jako jeden krok, ale mají svou vlastní strukturu Počítače a programování 1 27

Základní prvky algoritmu II podmínka binární relace, případné zřetězení více relací pomocí logických spojek. Výsledkem vyhodnocení podmínky je hodnota TRUE (pravda) = podmínka je splněna nebo FALSE (nepravda) = podmínka není splněna. rozhodování postup, kdy na se základě vyhodnocení podmínky provádí větvení algoritmu. Při splněné podmínce se provádí jedna sekvence kroků, při nesplněné podmínce jiná sekvence krokù. sekvence posloupnost kroků po sobě jdoucích v uvedeném pořadí cyklus opakování kroku nebo sekvence kroků nula-krát až n- krát, dokud je (nebo není) splněna podmínka cyklu. skok přerušení přirozené posloupnosti průchodu algoritmem a přenesení zpracování na jiné místo označené návěštím. [nehodí se pro strukturované programování] Počítače a programování 1 28

Příklad vyhledání max. nebo min. hodnoty Počítače a programování 1 29

Datové struktury Proměnné: symbolicky pojmenované údaje, které se při zpracování nahradí konkrétními hodnotami (texty, čísla, obrázky, schémata, počítačové soubory dat). Proměnné mohou být vstupní, pracovní a výstupní. Identifikátor: námi zvolené pojmenování proměnné Datový typ: určuje množinu hodnot, kterých může proměnná nabýt a množinu operací, které lze s proměnnými daného typu provádět (rovněž určuje, kolik místa proměnná zabere v paměti). Zavedení proměnné Odhadnu, jaký datový typ budu pro danou proměnnou potřebovat (odvíjí se od řešené úlohy - rozsah, přesnost) Příklad: mezivýsledek výpočtu obsahu plošného útvaru zvolím reálné číslo pořadí pokusu zvolím celočíselný typ Proměnnou názorně pojmenuji, tj. zvolím identifikátor Příklad obsah_kruhu CisloPokusu NIKOLIV x NIKOLIV i Počítače a programování 1 30

Řídicí struktury jednoduché příkazy Přiřazovací příkaz MojePromenna = 12.6 Přiřazovaný výraz Identifikátor proměnné (v plovoucí řádové čárce) Operátor PŘIŘAZENÍ MojePromenna = 12.6 + (10 * 2) / 4 Složený výraz může obsahovat číselné konstatnty, závorky ( ), operátory + - * / Složený výraz může obsahovat další proměnné MojePromenna = 12.6 + (10 * obvod) / pocet MojePromenna = 12.6 + MojePromenna Přiřazovací příkaz může obsahovat ve výrazu napravo tutéž proměnnou jako nalevo Počítače a programování 1 31

Řídicí struktury jednoduché příkazy Operace vstupu Prozatím potřebujeme pouze možnost vstupu dat z klávesnice Načti MojePromenna Na příkazu Načti se algoritmus přeruší a očekává vstup hodnoty příslušné proměnné. Více proměnných: Načti p1, p2, x Počítače a programování 1 32

Řídicí struktury jednoduché příkazy Operace výstupu potřebujeme pouze možnost vypsat na obrazovku obsah proměnné Vypiš MojePromenna Příkaz Vypiš vypíše obsah specifikované proměnné. Možnost výpisu řetězce jako komentáře: Vypiš Obsah proměnné x je, x Počítače a programování 1 33

Řídicí struktury složené příkazy Sekvence Je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení předchozího příkazu. Př. Nakreslete vývojový diagram algoritmu pro výpočet obvodu kruhu. Poloměr kruhu bude zadán z klávesnice, výsledek vypište na obrazovku. start Načti polomer P1 obvod = 2 * 3.1415926 * polomer P2 Vypiš obvod stop Počítače a programování 1 34

Řídicí struktury složené příkazy Selekce (podmínka, větvení) Provedení dalšího kroku závisí (je podmíněno) splněním podmínky. + Podm - Numerický zápis podmínky: P1 P2 Polomer <= 0 + - Relační operátory == je rovno ~= není rovno > větší než < menší než <= menší nebo rovno >= větší nebo rovno Logické operátory & and (logický součin) or (logický součet) ~ not (negace) Počítače a programování 1 35

Podmíněný příkaz Př. Ošetření vstupu v předchozím příkladu start Načti polomer Polomer > 0 + - obvod = 2 * 3.1415926 * polomer Vypiš obvod Vypiš chybny polomer stop Počítače a programování 1 36

Přepínač Struktura je určena pro vícenásobné větvení programu. Podle hodnoty klíče K dojde k přepnutí na příslušnou spojku K i se stejnou hodnotou a vykonání sekvence S i. V případě, že ani jedna hodnota spojky nemá hodnotu klíče, celá struktura se obejde a pokračuje se následnými operacemi za tímto přepínačem. Počítače a programování 1 37

Cykly cyklus opakovaně prováděná část algoritmu tělo cyklu opakující se kroky uvnitř cyklu typy cyklů: nekonečný s řídicí podmínkou před tělem s řídicí podmínkou za tělem s pevným počtem opakování indukční iterační Počítače a programování 1 38

Cyklus s podmínkou před tělem Konvence: K ukončení dojde v případě, že řídicí podmínka není splněna. Cykly Podm + P1 - Důsledek: Tělo cyklu se nemusí vykonat ani jednou. Pn Cyklus s podmínkou za tělem Stejná konvence: K ukončení dojde v případě, že řídicí podmínka není splněna. P1 Pn Důsledek: Tělo cyklu se vykoná alespoň jednou. + Podm - Počítače a programování 1 39

Příklad Start Algoritmus pro výpočet aritmetického průměru N celých čísel. (N>=1) Načti počet čísel, N Vysledek = 0 P = 0 Načti a Vysledek = Vysledek + a P = P + 1 + P < N Vysledek = Vysledek / N Tiskni prumer =, Vysledek Stop Počítače a programování 1 40

Cyklus s pevným počtem opakování - for výraz_start Pvýraz_stop o d m + P 1 typicky inicializace řídicí proměnné (ř.p.) ukončovací podmínka s ř.p. - výraz_start; výraz_stop; výraz_iter P 1 výraz_iter P n Iterace pro ř.p. Počítače a programování 1 41

Cyklus s pevným počtem opakování - for Algoritmus pro výpočet aritmetického průměru N celých čísel. (N>=1) Z Načti počet čísel, N Vysledek = 0 L = 1 ; L<=N ; L=L+1 Načti a Vysledek = Vysledek + a Vysledek = Vysledek / N Tiskni prumer =, Vysledek Počítače a programování 1 42 K

Vícenásobně vnořené cykly + Podm 1 Podm 2 Podm 3 + Počítače a programování 1 43

START VÝVOJOVÝ DIAGRAM PRO URČENÍ n-té MOCNINY ČÍSLA ČTI X ČTI n Z=0 Y=1 - Z<n + Y=Y*X Z=Z+1 PIŠ Y STOP Počítače a programování 1 44

Pole kolekce prvků stejného datového typu prvky = normální proměnné Př. A = [5 9 8.1 3] přístup k jednotlivým prvkům pomocí tzv. indexu (typicky celé nezáporné číslo) konvence zápisu: nazev_pole (index_prvku) Př. A(3) (má hodnotu 8,1 z předchozího příkladu) index_prvku. 1 až dimenze_pole Počítače a programování 1 45

Př.: Pole mám pole s identifikátorem y, které obsahuje 6 prvků celočíselného typu: y = 5 4 8 10-5 -20 y(1), y(2), y(3), y(4), y(5), y(6) korektní použití prvků: h = y(2) / 4 + (y(0) y(5)) y(4) = h * y(4) y(1) j = 4 y(j)= h * y(j-2) y(1) nekorektní použití: např. y(8) y = 7 indexem může být celočíselná proměnná resp. jakýkoliv výraz s celočíselným výsledkem Počítače a programování 1 46

Pole Př.: Je dáno pole y, které obsahuje N celých čísel. Napište algoritmus, který spočte a vypíše počet záporných prvků tohoto pole. Z poc = 0 L = 0 ; L<N ; L=L+1 - Y(L) < 0 + poc = poc + 1 Tiskni poc K Počítače a programování 1 47

Vícerozměrná pole jednorozměrné pole - vektor prvkem pole může být jiné pole vícerozměrná pole dvourozměrné pole ( pole polí ) matice Matlab >>A=[1 2 ; 3 4] nebo >>A= 1 2 3 4 A = 1 2 3 4 Počítače a programování 1 48

Metody řazení prvků BUBBLE SORT - bublinkové třídění Jednotlivé prvky při něm doslova probublávají tak, že výsledkem je balík setříděných dat. Principem BUBBLE SORTu je porovnávání sousedních prvků (podtrženo) a jejich případné prohození podle toho, jak chceme data třídit (vzestupně/sestupně). Probublávání se musí většinou několikrát opakovat a končí tehdy, kdyžpři průchodu celou množinou nedošlo k výměně. Seřaďte sestupně vektor a, výsledek vložte do b: a = [7 2 3 9 5 6 4] a = [max... min] a = [ 7 2 3 9 5 6 4 ] a = [ 7 2 3 9 5 6 4 ] provedena záměna a = [ 7 3 2 9 5 6 4 ] provedena záměna a = [ 739256 4 ]. opakuj do konce vektoru Byla provedena nějaká záměna? ANO: probublej znovu stylem NE: seřazená posloupnost - výsledek Počítače a programování 1 49

function [b]=bub_sort(a) BUBBLE SORT delka=length(a); zamena=1; (libovolne nenulové číslo proběhnutí cyklu s podmínku alespoň jednou!) while zamena ~= 0 zamena=0; for i = 1 : delka-1 if a(i)<a(i+1) end; end; end; b=a; a(i:i+1)=[a(i+1) a(i)] % prohozeni prvku s indexy i a i+1 zamena=zamena+1; Počítače a programování 1 50

Metody řazení prvků SELECT SORT Pracuje tak, že vyhledá ve skupině prvků minimum nebo maximum podle toho, jestli chceme třídit vzestupně nebo sestupně, a umístí jej na první místo ve skupině. Proces se opakuje, přičemž velikost tříděného úseku se zmenšuje. Seřaďte sestupně vektor a, výsledek vložte do b: a = [7 2 3 9 5 6 4] a = [max... min] a = [ 7 2 3 9 5 6 4 ] max=9 b= [ 9 ] a = [ 7 2 3 5 6 4 ] max=7 b = [ 9 7 ] a = [ 2 3 5 6 4 ] max=6 b = [ 9 7 6 ] a = [ 2 3 5 4 ] max=5 b = [ 9 7 6 5 ] Počítače a programování 1 51

SELECT SORT function [b]=sel_sort1(a); delka=length(a); for i=1 : delka-1 for j=i+1 : delka if a(i)<a(j) pom=a(i); a(i)=a(j); a(j)=pom; end; end; end; b=a; function [b]=sel_sort2(a) delka=length(a); for i = 1 : delka cast_max=max(a); pom=find(a==cast_max) b(i)=cast_max; a=[b a(1:pom-1) a(pom+1:end)]; cast_max=0; end; Počítače a programování 1 52

Metody řazení prvků INSERT SORT - Též nazývána metodou přímého zakládání. Data se rozdělí na "setříděnou" a nesetříděnou část a pak se jednotlivé prvky z nesetříděné části zakládají na příslušné místo do setříděné části. (Tato metoda je nejsložitější na algoritmizaci. Složitost vyplývá z posunu více prvků najednou při zakládání do "setříděné" části). Jiné http://sally.webzdarma.cz/c/c41.htm Počítače a programování 1 53

Pravidla pro přepis vzorců p q každý zlomek ve tvaru zapíšeme jako podíl p/q výraz p napíšeme jako sqrt(p) q p q p obecné mocniny a napíšeme jako p^q a p^(1/q) mocniny funkcí sin 2 p napíšeme jako (sin (p))^2 Počítače a programování 1 54

Počítače a programování 1 55 Příklady přepisu vzorců (a+b)/(c-d) d c b a + 2 e b d c a + + (a+c/d)/(b+e^2) 5 * y x e d c b a + + + + (a+((b+c)/(d+e))*sqrt(x+y))^(1/5) d c b a + * (a*b)/(c+d) h g f e d c b a + + + + a+(b/(c+(d/(e+(f/(g+h))))))