Informatika I 2. přednáška

Slides:



Advertisements
Podobné prezentace
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Advertisements

Dualita úloh lineárního programování a analýza citlivosti
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Pascal - větvení.
Programování v Pascalu
Algoritmizace Vývojové diagramy.
Algoritmizace od algoritmu k Pascalu.
Programování 01 Algoritmizace.
ALGO – Algoritmizace 1. cvičení
JUI - 1. přednáška Funkcionální programování Úvod do jazyka Lisp RNDr. Jiří Dvořák, CSc.
Algoritmizace 9. Ročník.
Materiály k přednášce Úvod do programování Ondřej Čepek.
Generování mezikódu Jakub Yaghob
Vývojové diagramy a základy algoritmizace
ALGORITMIZACE ÚVODNÍ PŘEDNÁŠKA 2 SLOVO ALGORITMUS VZNIKLO ZE JMÉNA ARABSKÉHO MATEMATIKA AL-KHWARIZMIHO, KTERÝ V DEVÁTÉM STOLETÍ SEPSAL ROZSÁHLOU KOLEKCI.
Algoritmizace a programování
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Informatika I 3. přednáška
Jazyk vývojových diagramů
Seminář – Základy programování
Algoritmizace.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Informatika I 2. přednáška
C – strukturované příkazy
Algoritmizace a základy programování
ALGO – Algoritmizace 2. cvičení
Sémantická analýza Jakub Yaghob
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Jazyk vývojových diagramů
Obchodní akademie, Náchod, Denisovo nábřeží 673
Simulační modely a programové vybavení. Vývoj simulačních programů  Původně pouze strojový kód –Příliš dlouhé, náročné na programátora, obtížné hledání.
Informatika I 4. přednáška
Cvičení.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
Programovací jazyk PASCAL
Informatika I 1. přednáška
Od zadání úlohy k programu Výpočetní systémy I 8. přednáška.
Pascal - cykly.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Algoritmizace a programování Vývojové diagramy - 03
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
doc. RNDr. Zdeněk Botek, CSc.
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Úvod do programování.
Základy ALgoritmizace 6. cvičení. Program cvičení Kontrolní bod 1 zakončení grafického zápisu algoritmů - vývojových diagramů –identifikátory a proměnné.
Jazyky pro umělou inteligenci RNDr. Jiří Dvořák, CSc.
doc. RNDr. Zdeněk Botek, CSc.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
doc. RNDr. Zdeněk Botek, CSc.
Pascal – strukturované příkazy
Cvičení 2 Podmíněné příkazy, cykly. Podmíněné příkazy Podmínka – jakýkoliv logický výraz ( a=1,……..) ( a=1,……..) Příkaz – vlastní instrukce, která se.
Pascal - větvení.
Úvod do programování Vyučující: Mgr. Vítězslav Jersák
Programování v MATLABu © Leonard Walletzký, ESF MU, 2000.
Algoritmizace a programování Algoritmy 1 - Úvod. Základní pojmy Počítačový program Počítačový program zápis zdrojového kódu, kterému rozumí počítač zápis.
VY_32_INOVACE_PR2_14. Cyklus umožňuje opakování určité posloupnosti příkazů bez nutnosti psát je stále znovu. Používáme tři základní druhy cyklů: cyklus.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
Výukový materiál zpracován v rámci projektu
Inf Cykly ve vývojových diagramech
Základní pojmy v automatizační technice
Vytváření dokumentace algoritmů
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
© Copyright Radim Štefan
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Podprogramy.
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Informatika I 2. přednáška RNDr. Jiří Dvořák, CSc. dvorak@uai.fme.vutbr.cz

Informatika I: přednáška 2 Obsah přednášky Úvod do programování Programovací jazyky a programovací styly Úvod do jazyka Pascal Algoritmus a algoritmizace Základní řídicí struktury Informatika I: přednáška 2

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

Informatika I: přednáška 2 Programovací jazyky 5. 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 počítač Informatika I: přednáška 2

Informace o programovacích jazycích http://www.cs.waikato.ac.nz/~marku/languages.html http://www.idiom.com/free-compilers/ http://directory.google.com/Top/Computers/Programming/Languages/ Informatika I: přednáška 2

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í Informatika I: přednáška 2

Informatika I: přednáška 2 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. Informatika I: přednáška 2

Informatika I: přednáška 2 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, … ) Informatika I: přednáška 2

Programovací jazyk Pascal Programovací jazyk Pascal navrhnul prof. Niklaus Wirth na počátku 70. let. Autor sledoval dva hlavní cíle: vytvořit jazyk vhodný pro systematickou výuku programování, založený na jasných, jednoduchých a srozumitelných konstrukcích umožnit jednoduchou a efektivní realizaci překladačů tohoto jazyka Některé významné implementace jazyka Pascal: Turbo Pascal, Borland Pascal (nejen jazyk, ale také prostředí pro vývoj programů) Object Pascal (součást programového prostředí Delphi) Informatika I: přednáška 2

Lexikální jednotky jazyka Pascal Symboly abecedy písmena, číslice, speciální symboly, klíčová slova Identifikátory posloupnosti písmen a číslic začínající písmenem Čísla celá, reálná (v desetinném nebo semilogaritmickém tvaru) Řetězce posloupnosti znaků uzavřené apostrofy Komentáře posloupnosti znaků uzavřené do složených závorek Oddělovače lexikálních jednotek mezera, konec řádku, komentář Informatika I: přednáška 2

Příklady lexikálních jednotek Klíčová slova begin, end, if, for, while, mod Identifikátory (nerozlišují se velká a malá písmena, místo písmena může být také podtržítko) alfa, X12, y23b, Beta_1, CelkovySoucet Čísla 123, -58, 17.35, -0.975, 1E6, 2.5E-7 Pozn.: 2.5E-7 znamená 2,5 ·10 7 Řetězce ’alfa’, ’Celkovy soucet = ’ Komentáře {Cteni vstupnich udaju} Informatika I: přednáška 2

Informatika I: přednáška 2 Identifikátor Identifikátor slouží k označení konstant, typů, proměnných, položek záznamů, procedur a funkcí a jejich parametrů, … Ukázky syntaktické definice identifikátoru: identifikátor ::= písmeno  písmeno | číslice  identifikátor písmeno písmeno číslice Informatika I: přednáška 2

Struktura programu v jazyce Pascal program jméno_programu; deklarace návěští; definice konstant; definice typů; deklarace proměnných; deklarace procedur a funkcí; begin příkaz1; příkaz2; . end. blok Informatika I: přednáška 2

Struktura programu v prostředí Delphi program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Informatika I: přednáška 2

Předdefinovaná struktura jednotky v Delphi unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} end. Informatika I: přednáška 2

Informatika I: přednáška 2 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) Informatika I: přednáška 2

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 Informatika I: přednáška 2

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. Informatika I: přednáška 2

Vybrané značky vývojových diagramů zpracování větvení mezní značka spojka spojnice Spojnice spojují jednotlivé značky. Mohou být kresleny vodorovně či svisle a mohou být zalomené. Jejich orientace určuje postup výpočtu. Orientace není nutná v tzv. preferovaných směrech, tj. shora dolů nebo zleva doprava. Informatika I: přednáška 2

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

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) Informatika I: přednáška 2

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 2x2 – 6x + 3 = 0 algoritmizujeme problém ax2 + bx + c = 0 Informatika I: přednáška 2

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ů. Informatika I: přednáška 2

Příklady rozkladu problému Iterační rozklad (v kombinaci s konjunktivním) Výpočet součtu čísel x1 , x2 , … , xN : 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 xI a výsledek ukládáme do S (S := S + xI) 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 Informatika I: přednáška 2

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í. Informatika I: přednáška 2

Informatika I: přednáška 2 Sekvence Akce1; Akce2; Akce3 Pozn.: 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 end Akce1 Akce2 Akce3 Informatika I: přednáška 2

Informatika I: přednáška 2 Příklad sekvence Výměna obsahu proměnných X a Y: Pom := X Pom:=X; X:=Y; Y:=Pom X := Y Y := Pom Informatika I: přednáška 2

Informatika I: přednáška 2 Větvení a) if Podmínka then Akce1 else Akce2 Význam: jestliže platí Podmínka, pak proveď Akci1, jinak proveď Akci2. ano Podmínka ne Akce1 Akce2 b) if Podmínka then Akce Význam: jestliže platí Podmínka, pak proveď Akci. ano Podmínka ne Akce Informatika I: přednáška 2

Informatika I: přednáška 2 Příklady větvení a) Určení maxima z čísel A a B : if A>B then Max:=A else Max:=B ano A > B ne Max := A Max := B b) Náhrada hodnoty proměnné X její absolutní hodnotou: if X<0 then X:= –X ano X < 0 ne X := –X Informatika I: přednáška 2

Iterace s testem zahájení while Podmínka do Akce Význam: pokud platí Podmínka, prováděj Akci. Pozn.1: Akce ve struktuře while se nemusí provést ani jednou (když podmínka není splněna hned napoprvé). Pozn.2: 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ů. Podmínka ne ano Akce Informatika I: přednáška 2

Příklad iterace s testem zahájení Výpočet faktoriálu F přirozeného čísla N : F:=1; while N>0 do begin F:=FN; N:=N-1 end F:=1 N>0 ne ano F:=F*N N:=N–1 Informatika I: přednáška 2

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

Příklad iterace s testem ukončení 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} R := M mod N M := N N := R ne N = 0 ano Informatika I: přednáška 2

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. Informatika I: přednáška 2

Výpočet aritmetického průměru P z čísel X1, … , XN Začátek Zápis v pseudo Pascalu: S:=0; I:=1; while IN do begin S:=S+XI; I:=I+1 end; P:=S/N V Pascalu by se podmínka cyklu a indexovaná proměnná zapsaly takto: I<=N X[I] S := 0 I := 1 I  N ne ano S := S + XI P := S / N I := I + 1 Konec Informatika I: přednáška 2