Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Informatika I 2. přednáška RNDr. Jiří Dvořák, CSc.

Podobné prezentace


Prezentace na téma: "Informatika I 2. přednáška RNDr. Jiří Dvořák, CSc."— Transkript prezentace:

1 Informatika I 2. přednáška RNDr. Jiří Dvořák, CSc.

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

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

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

5 Informatika I: přednáška 25 Informace o programovacích jazycích

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

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

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

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

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

11 Informatika I: přednáška 211 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, , 1E6, 2.5E-7 Pozn.: 2.5E-7 znamená 2,5 ·10  7 Řetězce ’ alfa ’, ’ Celkovy soucet = ’ Komentáře {Cteni vstupnich udaju}

12 Informatika I: přednáška 212 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   písmeno číslice písmeno identifikátor

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

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

15 Informatika I: přednáška 215 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. Předdefinovaná struktura jednotky v Delphi

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

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

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

19 Informatika I: přednáška 219 Vybrané značky vývojových diagramů zpracování spojnice spojkamezní značka větvení 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.

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

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

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

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

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

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

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

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

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

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

30 Informatika I: přednáška 230 Iterace s testem zahájení Podmínka Akce ano ne 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ů.

31 Informatika I: přednáška 231 Příklad iterace s testem zahájení N>0 N:=N–1 ano ne 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 F:=F*N

32 Informatika I: přednáška 232 Podmínka Akce1 ano ne 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. Iterace s testem ukončení Akce2

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

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

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


Stáhnout ppt "Informatika I 2. přednáška RNDr. Jiří Dvořák, CSc."

Podobné prezentace


Reklamy Google