Tvorba software a algoritmizace

Podobné dokumenty
Algoritmizace. 1. Úvod. Algoritmus

Program a životní cyklus programu

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

Lekce 01 Úvod do algoritmizace

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

Algoritmizace prostorových úloh

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

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.

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

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

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh

Úvod do programování

6 Příkazy řízení toku

Základy algoritmizace

VISUAL BASIC. Přehled témat

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

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

Úvod. Programovací paradigmata

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

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

Programovací jazyk Pascal

Algoritmy a algoritmizace

Algoritmy a datové struktury

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

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

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

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

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

Poslední nenulová číslice faktoriálu

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

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

1 Strukturované programování

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

Vývojové diagramy 1/7

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

Programovací jazyky Přehled a vývoj

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

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

Algoritmizace a programování

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:

Basic256 - úvod do programování Příklady. ing. petr polách

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

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

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

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

Informatika Algoritmy

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

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

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

Martin Hejtmánek hejtmmar

2. Systémová analýza SA návrhová část projektu = příručka projektu - systémový přístup k analýze problémů, nejdůležitější etapa projektu - podrobné st

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

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

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

ALGORITMIZACE A PROGRAMOVÁNÍ

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

Implementace LL(1) překladů

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

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

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

10 Metody a metodologie strukturované analýzy

Smysl metodiky IS/IT. Koncentrovaná zkušenost Checklist na nic nezapomeneme

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

Hodnoticí standard. Programátor (kód: M) Odborná způsobilost. Platnost standardu. Skupina oborů: Informatické obory (kód: 18)

Základy algoritmizace, návrh algoritmu

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

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

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

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

Seminární práce Vývoj informačního systému. Manažerská informatika 2 Ing. Miroslav Lorenc

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

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

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

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

Programování II. Modularita 2017/18

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Algoritmizace a programování

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

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

2. lekce Algoritmus, cyklus Miroslav Jílek

DTP Základy programování Úvod do předmětu

Překladač a jeho struktura

Programování v C++ 1, 1. cvičení

Algoritmizace a programování

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

Inženýr IT a řídících systémů

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

PŘÍLOHA C Požadavky na Dokumentaci

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

Základy analýzy. autor. Jan Novotný února 2007

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

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

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

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

Sada 1 - Základy programování

Identifikátor materiálu: ICT-4-01

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

Transkript:

Tvorba software a algoritmizace 1

Obsah Vývoj software Metodiky vývoje systémů Programování Algoritmizace Záznam a prvky algoritmu Příklady 2

Účel systému Systém je souborem souvisejících částí, které spolu vzájemně spolupracují za účelem splnění určitého cíle. Počítačový systém se skládá z: Hardware Software Lidí Procedur Dat 3

Kolik stojí vývoj software? 4

Kdo se podílí na vývoji software? Uživatelé Nový software musí být vždy vyvíjen ve spolupráci s uživateli, kteří ho budou používat Management Manažeři organizace, ve keré bude software nasazen, by měli konzultovat rozpočet a zdroje Technický personál Bude realizovat projekt, nebo spolupracovat na jeho vývoji Systémový analytik Informační specilista, který provádí systémovou analýzu, návrh a implementaci software 5

Proč vývoj software? Využití příležitosti (proaktivní přístup) Zvýšení příjmů podniku Snížení nákladů Získání konkurenční výhody Řešení problému (reaktivní přístup) Vyhnout se potížím Nařízení Pokyn k akci (shora od vedení) 6

Vývoj software: Vývoj software Aktivity, které vedou k tvorbě řešení softwarové aplikace nebo informačního systému, který řeší určitý problém nebo příležitost Doporučené postupy řešení aplikací a informačních systémů metodiky Většina ICT firem disponuje vlastními metodikami (např. IBM RUP, Unicorn ES,aj.), ale existují i standardní (ITIL, COBIT) nebo univerzitní metodiky 7

Životní cyklus vývoje software Aplikace prochází fázemi životního cyklu Každá fáze zahrnuje aktivity, které musí být vykonány při vzniku aplikace Fáze životního cyklu se opakují aplikace se dostává na vyšší úroveň, zahrnuje nové požadavky uživatelů, využívá moderní technologie, apod. 8

Fáze životního cyklu systému 1. Plánování a příprava 6. Užívání a údržba systému 2. Analýza systému 5. Implementa ce systému 3. Návrh systému 4. Vývoj systému Zdroj: Using Infromation Technology, 2013. 9

Fáze 1: Plánování a příprava Předběžná analýza Návrh alternativních řešení Interview se zaměstnanci Průzkum konkurence Volba, zda ponechat stávající systém, vylepšení nebo vývoj nového Náklady a přínosy Předložení předběžného plánu a doporučení Tištěná zpráva Pro další fázi je nezbytné schválení managementu 10

Fáze 2: Analýza systému Sběr dat Rozhovory s pracovníky a vedoucími Příprava, distribuce a analýza dotazníkového šetření Průzkum dokumentace k stávajícímu systému Pozorování současných pracovních postupů Analýza dat Modelování pomocí nástrojů (CASE) Diagram datových toků (DFD, Data Flow Diagram) znázornění průchodu dat systémem 11

Fáze 2: Analýza systému Sepsání zprávy Dokumentace funkcí k současnému systému Dokumentace potíží současného systému Záznam požadavků na nový systém Doporučení k dalším krokům Nutnost získat svolení vedení k dalšímu postupu 12

Data Flow Diagram (DFD) Příklad: internetový obchod 13

Fáze 3: Návrh systému Předběžný návrh Prototyp, návrh pomocí CASE nástrojů Detailní návrh: Požadavky na výstupy Požadavky na vstupy Požadavky na ukládání dat Požadavky na zpracování dat Systémové kontroly Záohování Písemná zpráva a schválení vedení pro další postup 14

Fáze 4: Vývoj systému Návrh nebozakoupení novéhosoftware Rozhodnutí zda koupit hotovéřešení nebo nechat vytvořit nový software Vlastní tvorba programování Pořízení nového hardware nebo upgrade Testování systému Testování modulů: testuje se výkon jednotlivých součástí Testování systému: moduly jsou propojeny a testovány, zda spolují dohromady; reálná data 15

Fáze 5: Implementace systému Volba strategie zavedení nového systému Přímá implementace: ukončení starého a zavedení novéhosystému ( ze dne naden ) Souběžná implementace: souběžně používáme starý a nový systém, dokud se nový systém spolehlivě neprověří Postupná implementace: části novéhosystému postupně nahrazujíčásti původníhosystému Pilotní implementace: ověření funkčnosti nového systému v menším rozsahu (např. Oddělení) Školení a trénink uživatelů 16

Fáze 6: Provoz a údržba systému Auditování systému a pravidelné hodnocení Provádění úprav systému dlenových požadavků Dokončení dokumentace Dokumentace by se měla vytvářet a aktualizovat v průběhu všech fází životního cyklu systému 17

Když se nepoužívá standardní metodika 18

Příběh softwarového projektu Jak zákazník popsal svoje přání Jak to pochopil vedoucí projektu Co navrhnul analytik Co stvořil programátor Co konzultant vylíčil zákazníkovi Dokumentace k systému Které funkce byly nainstalovány Co bylo zákazníkovi naúčtováno Jaká byla podpora uživatelů Co zákazník doopravdy chtěl 19 Zdroj: donationcoder.com

Programování 20

Programování Program je sada instrukcí, které vykonává počítač a tím zpracovává data na informace Programování patří do fáze č. 4 životního cyklu software 5 kroků: 1. Objasnění a definice zadání (úlohy) 2. Návrh programu 3. Kódování programu 4. Testování programu 5. Dokumentace a údržba programu 21

Programování krok 1: Objasnění zadání Nutno objasnit účel programu a jeho uživatele Požadované výstupy Požadované vstupy Jak má probíhat zpracování Ověření vhodnosti programu ( Skutečně se to vyplatí? ) Zpracování analýzy (písemně) 22

Programování krok 2: Návrh programu Tvorba algoritmu, nebo posloupnosti kroků vedoucích k řešení stanoveného zadání Strukturované programování: Logická posloupnost modulů Metoda shora-dolů (top-down approach) Hierarchické grafy Pseudokód Alternativa: objektové programování 23

Hierarchický graf 24 Zdroj: Using Infromation Technology, 2013.

Pseudokód 25 Zdroj: Using Infromation Technology, 2013.

Programování krok 2: Návrh programu (pokračování) Strukturované programování: Využívá řídící struktury: Sekvence (logická posloupnost jednotlivých kroků) Selekce (např. IF THEN ELSE) Iterace (cyklus), např. DO UNTIL / DO WHILE Znázornění v grafické podobě pomocí vývojových diagramů, strukturogramů 26

Programování krok 3: Kódování Převod grafického znázornění programu do programovacího jazyka Výběr programovacího jazyka Odlišnost programovacích jazyků v syntaxi, gramatických pravidlech Nutno dodržovat (syntaktické chyby syntax error) 27

Programování krok 4: Testování programu Syntaktické chyby (automaticky) Logické chyby (ručně) Debugging = proces identifikace, hledání a odstraňování všech syntaktických a logických chyb v počítačovém programu Beta testování programu na reálných datech V první fázi test na správných datech V druhé fázi test s nesprávnými daty běžní uživatelé hledají skryté chyby 28

Programování krok 5: Dokumentace a údržba programu Dokumentace je písemný popis programu, jeho funkcí a návod jak řešit problémy Uživatelská dokumentace pro uživatele (např. uživatelská příručka online, zabudovaná v programu, tištěná) Technická dokumentace pro správce ICT Programátorská dokumentace pro údržbu a rozvoj software (může být i ve zdrojovém kódu) 29

Strukturované programování Viz Programování - krok č. 2 30

v životě 31

v informatice 32

ALGORITMIZACE chci něco spočítat a/ rozmyslím si, jak postupovat b/ provedu výpočet podle vymyšleného postupu l ad a/ tvůrčí činnost, mohu vymýšlet různé strategie a hledat důvtipné triky l ad b/ mechanicky provádím výpočet: ani nemusím problému moc rozumět, ale musím pracovat pečlivě 33

ALGORITMUS Přesný návod či postup pro řešení daného typu úlohy V širším slova smyslu: jakýkoliv postup řešení (např. kuchyňský recept) V užším slova smyslu: postup splňující silnější požadavky (např. počítačový algoritmus) 34

Algoritmus - požadavky 1. mechanický lze ho provést i bez bližšího porozumění 2. diskrétní rozdělený na dílčí kroky 3. hromadný pro řešení celé třídy úloh (např. součin dvou celých čísel) 4. deterministický po každém kroku je určeno, který další krok bude následovat 5. konečný (rezultativní) postup skončí v konečném počtu kroků 6. správný pro přípustné vstupní údaje a po určitém počtu kroků se vždy dospěje k výsledku 35

Záznam algoritmu srozumitelný musí být jasné, co a jak řeší přehledný rychle uchopitelný dostatečně podrobný pro objasnění způsobu řešení dostatečně stručný detaily jsou matoucí slovním vyjádřením často nedokonalý popis grafem, obrázkem, schématem smluveným grafickým vyjádřením - vývojovým diagramem - plošným strukturogramem vhodně okomentovaným programem 36

Vývojový diagram vs. strukturogram předvolené směry činnost činnost činnost činnost činnost spojovací čáry hranice mezi plochami 37

Příklad algoritmu - 1 Nákup rohlíků v obchodě Jdi do obchodu Vezmi nákupní košík Dojdi k oddělení s pečivem Vezmi sáček Dej do něj rohlíky Co když mají zavřeno? Co když nemají rohlíky? Co když? Dojdi k pokladně Zaplať Vrať košík Ukliď rohlíky do tašky Odejdi z obchodu 38

Příklad algoritmu - 2 Výpočet povrchu kvádru Čti délku strany a Čti délku strany b Čti délku strany c S ab =a*b S bc =b*c S ac =a*c S=2*(S ab +S bc +S ac ) Co když uživatel zadá nulové délky stran a,b,c? Co když uživatel zadá zápornou délku strany? c Vypiš S ab, S bc, S ac Vypiš celkový povrch S a b 39

Základní prvky algoritmu 1. sekvence jednotlivý krok, prováděný vždy 2. selekce větvení, volba pokračování podle podmínky 3. iterace cyklus, opakované provádění podmíněno a) testem na začátku b) testem na konci 40

sekvence činnosti se provádějí v daném pořadí Sekvence činnost činnost činnost činnost činnost činnost činnost přiřazovací příkazy, volání podprogramů, 41

Sekvence - příklad Výměna obsahu dvou proměnných x = 3 y = 12 pom = x x = y y = pom čti x, y Sestrojte algoritmus, který načte dvě reálná čísla do proměnných x a y a prohodí jejich hodnoty. Proměnná 1. pojmenované místo operační paměti, které obsahuje data, jež mohou být měněna během zpracování algoritmu (programu) 2. místo v operační paměti, které začíná na určité adrese a má daný počet bytů 42

Selekce selekce výběr z možných pokračování podmínka ano ne podmínka ano ne příkaz_a příkaz_b příkaz_a příkaz_b if (podmínka) then příkaz_a else příkaz_b 43

selekce výběr z možných pokračování Selekce podmínka ne ano podmínka ne ano příkaz_a příkaz_a if (podmínka) then příkaz_a else nic 44

Selekce - příklad Dělení dvou čísel Ano Čti A, B Je B = 0? Ne Vypiš: Pokus dělit nulou! Podíl = A/B Vypiš podíl 45

zajímavost Vícenásobná selekce 1 2 3 podmínka n default příkaz_a příkaz_b příkaz_c příkaz_n Příkaz_Z do case (podmínka) 1 příkaz_a 2 příkaz_b 3 příkaz_c... n příkaz_n default příkaz_z 46

iterace opakování Iterace s testem na začátku ne podmínka ano podmínka ano činnost činnost ne for (od ; pokud ; krok) činnost while (podmínka) činnost 47

Příklad Iterace s testem na začátku Příprava šálku kávy Ano Máš rychlovarnou konvici? Ne Vezmi konvici Nalij do ní 0,1 l vody Chceš uvařit více vody? Přidej 0,1 l vody Postav a zapni konvici Vezmi prázdný šálek Nasyp do šálku kávu Dokud není voda uvařená Čekej 30 vteřin Zalij šálek vodou Nelze připravit šálek kávy pomocí rychlovarné konvice 48

iterace opakování Iterace s testem na konci činnost poprvé vždy, dále při ano činnost podmínka podmínka ano ne ne do činnost while podmínka repeat činnost until podmínka 49

Příklad Iterace s testem na konci Skládání zkoušky na vysoké škole Dokud nejsi přihlášen(a) na termín Najdi nejbližší termín zkoušky Je termín volný? Ano Přihlas se na termín Pokus se složit zkoušku Ne Dokud není zkouška splněna s výsledkem <=3 Zkouška úspěšně splněna 50

Selekce vs. Iterace Selekce výběr z více možností; provádí se pouze jednou a neopakuje se Např. Je hodnota v proměnné a větší než 0? Pokud ano: přičti do a 1 ; pokud ne, odečti od a 1. Iterace činnost uvedená v bloku iterace se může opakovat více než jednou, dokud platí podmínka Např. Je hodnota v proměnné a větší než 0? pokud ano, odečti od a 1 a testuj znovu podmínku; pokud ne, přejdi k dalšímu kroku. 51

Počítačový software Uživatel zadává svoje požadavky počítačovému hardware prostřednictvím instrukcí v software Tyto instrukce musí být zapsány v podobě srozumitelné mikroprocesoru (CPU) - programování 52

Programování vs. algoritmizace Programování = proces tvorby (psaní) programu pomocí programovacího jazyka Algoritmizace = proces tvorby algoritmu (postupu řešení) Programování algoritmizace 53

Programovací jazyk Počítač (CPU) rozumí elektrickým signálům (bity) jazyk strojového kódu Příliš dlouhé a složité Programovací jazyk zápis instrukcí ve zkrácené podobě srozumitelné člověku Speciální program překladač převádí instrukce programovacího jazyka do strojového kódu 54

10 PRINT HELLO 20 END 55

Překlad zdrojového kódu programu 10 PRINT HELLO Překladač 1001101 programovacího 1110101 jazyka 0010110 Zdrojový kód programu Zapsáno v BASIC, C, aj. Proces překládání zdrojového kódu Program ve strojovém kódu Obr: quantifactus.wcupa.edu/lab/mis/software.ppt 56

Souhrnné otázky 1. Vysvětlete rozdíl mezi algoritmizací a algoritmem. 2. Může algoritmus vzniknout a fungovat i bez použití počítače? Vysvětlete. 3. Uveďte alespoň 3 základní požadavky na algoritmus. 4. Vysvětlete rozdíl mezi požadavky na mechanický a hromadný algoritmus. 5. V čem se liší nákres algoritmu pomocí vývojového diagramu a pomocí plošného strukturogramu? 6. Co je to proměnná? 7. Vyjmenujte základní prvky algoritmu. 8. Uveďte příklad sekvence. Jaký je rozdíl mezi sekvencí a selekcí? 9. Vysvětlete rozdíly mezi selekcí a iterací? 10. K čemu slouží podmínka v iteraci? Kde se může nacházet? 11. Za jakých okolností dojde k opakování bloku činností v iteraci? Uveďte příklad. 12. Algoritmizujte úlohu naplnění 5 lahví vodou. Znázorněte pomocí plošného strukturogramu. 57

Souhrnné otázky 13. Z jakých důvodů dochází k vývoji software? Uveďte příklady. 14. Uveďte alespoň tři různé nástroje, které pomáhají efektivnějšímu vývoji software. 15. Co je to metodika vývoje software? Vysvětlete a uveďte příklad. 16. Co obnáší fáze životního cyklu software analýza a návrh? 17. Vysvětlete. Vysvětlete rozdíl mezi algoritmizací a programováním. 18. K čemu slouží programovací jazyk? 19. Jaká je úloha překladače zdrojového kódu při tvorbě programu? 58