Program a životní cyklus programu



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

Úvod. Programovací paradigmata

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

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

IB111 Programování a algoritmizace. Programovací jazyky

Algoritmizace. 1. Úvod. Algoritmus

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

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

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Překladač a jeho struktura

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

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

Úvod do programování

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

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

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

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

Tvorba software a algoritmizace

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

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

Programování II. Modularita 2017/18

Programovací jazyk Pascal

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

11. Přehled prog. jazyků

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- úvod. Ing. Tomáš Otáhal

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

6 Příkazy řízení toku

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

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

Algoritmizace prostorových úloh

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:

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

Sada 1 - Základy programování

Poslední nenulová číslice faktoriálu

TÉMATICKÝ OKRUH Softwarové inženýrství

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie

Programovací jazyky Přehled a vývoj

Klasické metodiky softwarového inženýrství I N G M A R T I N M O L H A N E C, C S C. Y 1 3 A N W

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

Algoritmizace a programování

Programovací jazyk univerzální notace pro zápis algoritmů, implementována.

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

Strojový kód. Instrukce počítače

Vizuální programování

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

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

MPASM a IDE pro vývoj aplikací MCU (Microchip)

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

Algoritmizace. Cíle předmětu

Algoritmizace prostorových úloh

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Informatika Algoritmy

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

TÉMATICKÝ OKRUH Softwarové inženýrství

Algoritmizace a programování

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

Algoritmizace prostorových úloh

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

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

Algoritmy. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

PB161 Programování v jazyce C++ Přednáška 7

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í

Algoritmizace a programování

PB161 Programování v jazyce C++ Přednáška 7

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza.

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Základy algoritmizace, návrh algoritmu

Jaký programovací jazyk učit jako první a jak ho učit?

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Martin Hejtmánek hejtmmar

Matematika v programovacích

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

Seminář z Informatiky a výpočetní techniky. Slovanské gymnázium Olomouc 4. září 2014 Tomáš Kühr

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

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

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

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

VISUAL BASIC. Přehled témat

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

Programové prostředky IS/IT

NPRG030 Programování I, 2015/16 1 / :25:32

Algoritmy a jejich znázorňování.

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

NSWI /2011 ZS. Principy cpypočítačůčů aoperačních systémů ARCHITEKTURA

Makro. PDF vytvořeno zkušební verzí pdffactory Pro

Skripty - úvod. Linux - skripty 2

1 Strukturované programování

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

Tematická oblast: Programování 2 (VY_32_INOVACE_08_2_PR) Anotace: Využití ve výuce: Použité zdroje:

Základy C++ doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

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

Algoritmy a algoritmizace

Úvod do programovacích jazyků (Java)

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

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

Transkript:

Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy nějakého programovacího jazyka již hotové úseky kódu nebo podprogramy Životní cyklus programu Specifikace požadavků na řešený úkol Uživatel neví, co chce, ale běda, když to nedostane! vyjasnit rozpory, neúplnosti a nejasnosti zadání vyjasnit reakci na nepřípustná data umění porozumět uživateli systémový integrátor Dekompozice úkolu na části hierarchický rozklad úlohy na části řešitelné jedním pracovníkem nebo týmem Návrh algoritmu(ů) návrh strukturovaných algoritmů nezávislých na konečné implementaci určení vazeb mezi jednotlivými částmi Implementace algoritmu na program zjemňování návrhu CASE nástroje (Computer Aided Software Engineering) zdrojový text v programovacím jazyce překlad zdrojového textu do kódu počítače spustitelný program Testování programu zkoušení jednotlivých komponent a celku odhalování chyb prováděním programu na vhodně zvolených testovacích datech Zkoušej a prověřuj okamžitě, jakmile je co zkoušet! Prověření v rámci celého systému u uživatele (validace) Používání a údržba programu odstranění skrytých vad potřeba reakce na změny okolí (jiný hardware, jiný OS, změny v legislativě, organizační struktuře, ) Nutnost pečlivé dokumentace ve všech fázích životního cyklu! - 1 -

Programovací jazyky Programovací jazyk speciální jazyk, ve kterém programátor dokáže snadno vyjadřovat algoritmy a který počítač bez větších problémů pochopí pomocí překladače Syntaxe soubor pravidel, které určují, jaké zápisy (konstrukce) jsou v daném jazyce povolené Sémantika soubor pravidel popisujících význam povolených konstrukcí Lexika definice přípustných symbolů Pragmatika určuje správný význam Překlad zdrojového programu do kódu počítače Kompilátor překlad celého zdrojového textu najednou většinou překlad v několika fázích (průchodech) výsledkem je program v kódu počítače překlad se provádí jen jednou znovu pouze pokud byl program měněn Zdrojový text Kód počítače Interpret překlad po částech (příkazech, skupinách) přeložená část se ihned provede snadnější kontrola sémantiky, avšak mnohem vyšší nároky na čas Kód p r o v e d e n í Zdrojový text Kód Kód - 2 -

Struktura překladu: Programovací jazyky Neprocedurální popisují co se má řešit, ale ne jak dojít k výsledku algoritmus řešení nepřipravuje autor Procedurální - imperativní popisují algoritmus, tj. jak řešit úlohu rozklad na dílčí kroky (příkazy) jednotlivé kroky více či méně vzdálené kódu počítače Neprocedurální programovací jazyky Obecně orientované široký okruh řešených úloh x omezené možnosti řešení funkcionální a logické jazyky LISP, PROLOG Specializované úzký okruh řešených úloh x účinnější a rychlejší možnosti řešení dotazovací jazyky databází SQL - 3 -

Procedurální programovací jazyky Strojově orientované jazyky mnemotechnické názvy instrukcí kódu počítače řada makroinstrukcí (maker) velká závislost na konkrétním počítači assembler Vyšší programovací jazyky pohodlnější a bezpečnější programování větší nezávislost na počítači bližší člověku nutnost překladu do kódu počítače součástí je deklarace struktury dat FORTRAN, COBOL, PASCAL, C, Objektově orientované jazyky popisují model světa pomocí tříd objektů, které mezi sebou komunikují posíláním zpráv třída = popis datového typu včetně metod objekt = konkrétní instance třídy změna stavu objektu provedením metody provedení programu = změna stavu objektů a jejich vzájemná komunikace SMALLTALK, OBJECT PASCAL, C++, Implementace algoritmu Fáze implementace algoritmu Úprava (doplnění) algoritmu pro konkrétní programovací jazyk Realizace základních struktur sekvence, selekce, iterace ve zvoleném jazyce Překlad do kódu počítače interpret x kompilátor Úprava algoritmu Čím nižší programovací jazyk, tím větší úpravy algoritmu Úprava podmínek (assembler) jsou k dispozici pouze rozhodování na základě porovnání střadače (S) s nulou S = 0, S < 0, S > 0 výraz > (<, =) hodnota I < 500 S := výraz hodnota S := I - 500 S > (<, =) 0 S < 0-4 -

Realizace základních struktur Realizace základních struktur v cvičném strojovém kódu (assembleru) a Turbo Pascalu Sekvence v pořadí: vývojový diagram, plošný strukturogram, strukturogram AKCE 1 AKCE 1 CELEK AKCE 2 AKCE 2 AKCE 1 AKCE 2 Assembler 100: AKCE_1 101: AKCE_2 102: HLT Formát instrukce: adresa: návěští: instrukce 200: START: LDA 100 Každý program v assembleru musí končit instrukcí HLT, jinak by procesor údaje (většinou náhodné údaje) uložené na následujících adresách chápal jako instrukce programu a snažil by se je vykonávat může vést ke kolapsu. Turbo Pascal AKCE_1; AKCE_2;... end Selekce v pořadí: vývojový diagram, plošný strukturogram, strukturogram ano ne X > Y AKCE 1 AKCE 2 X > Y ano ne AKCE 1 AKCE 2 VÝBĚR CELEK SPOLECNE SPOLECNE X > Y X Y SPOLECNE AKCE 1 AKCE 2-5 -

Assembler 100: VYBER: JP AKCE_A 101: AKCE_B 102: JMP SPOL 103: AKCE_A: AKCE_A 104: SPOL: SPOLECNE 105: HLT Turbo Pascal if X > Y then AKCE_A end else AKCE_B end; Spolecne Iterace s podmínkou na začátku v pořadí: vývojový diagram, plošný strukturogram, strukturogram CELEK S 0 ne S 0 CYKLUS ano S 0 Assembler 100: CYKL: JP POKRAC 101: AKCE_K 102: JMP CYKL 103: POKRAC: 104: HLT Turbo Pascal while S 0 do AKCE_K end; Pokracuj - 6 -

Iterace s podmínkou na konci v pořadí: vývojový diagram, plošný strukturogram, strukturogram CELEK S > 0 CYKLUS ano S > 0 S > 0 ne Assembler 100: CYKL: AKCE_K 101: JN POKRAC 102: JZ POKRAC 103: JMP CYKL 104: POKRAC: 105: HLT Turbo Pascal repeat AKCE_K end until S <= 0; Pokracuj Za klíčovým slovem until ( dokud ne ) je třeba uvést negaci podmínky uvedené ve vývojovém diagramu. - 7 -

Příklad Algoritmicky realizujte příkaz MOD A,B a DIV A,B, kde MOD bude obsahovat zbytek po celočíselném dělení čísla A číslem B a kde DIV bude obsahovat výsledek celočíselného dělení čísla A číslem B. A a B jsou celá kladná čísla. Vstup: Výstup: A, B dvě celá kladná čísla DIV celočíselný podíl A a B MOD zbytek po celočíselném dělení A a B Postup: Od čísla A odečítáme číslo B tak dlouho, dokud není zbytek menší než číslo B. Tento zbytek je pak hodnotou MOD. Je možné využít předchozí příklad, kde výsledek (hodnotu DIV) získáme jako počet průchodů cyklem. Plošný strukturogram algoritmu: Čti A, B MOD := A DIV := 0 dokud MOD B ( α ) MOD := MOD B DIV := DIV + 1 piš DIV, MOD Testovací tabulka pro hodnoty A=25 a B=6: krok A B MOD DIV α 1 25 6 25 0 Ano 2 25 6 19 1 Ano 3 25 6 13 2 Ano 4 25 6 7 3 Ano 5 25 6 1 4 Ne! konec - 8 -

Implementace algoritmu v programovacím jazyku: cvičný strojový kód (assembler) 200: START: LNA 0 201: STA DIV 202: LDA A 203: STA MOD 204: CYKL: LDA MOD 205: SUB B 206: JN KONEC 207: TELO: STA MOD 208: LNA 1 209: ADD DIV 210: STA DIV 211: JMP CYKL 212: KONEC: HLT 100: A: 101: B: 102: MOD: 103: DIV: jazyk Turbo Pascal program DIVMOD; var A,B,MOD_AB,DIV_AB: integer; DIV_AB:=0; write('a=');readln(a); write('b=');readln(b); MOD_AB:=A; while (MOD_AB>=B) do MOD_AB:=MOD_AB-B; DIV_AB:=DIV_AB+1; end; writeln('div_ab=',div_ab); end. - 9 -