17
Základy algoritmizace a programování [email protected] Pavel Ježek

Základy algoritmizace a programování

  • Upload
    mahdis

  • View
    57

  • Download
    11

Embed Size (px)

DESCRIPTION

Základy algoritmizace a programování. pavel.jezek @mff.cuni.cz Pavel Ježek. Doporučená literatura. Lucie Pelikánová, Jan Čihák, Lucie Knejpová: Visual Basic – Sbírka řešených příkladů , Ben 1998 Základy programování vysvětleny v příkladech, vhodné pro začátečníky jako učebnice. - PowerPoint PPT Presentation

Citation preview

Page 1: Základy algoritmizace a programování

Základyalgoritmizace a

programování

[email protected] Ježek

Page 2: Základy algoritmizace a programování

Doporučená literatura Lucie Pelikánová, Jan Čihák, Lucie Knejpová: Visual

Basic – Sbírka řešených příkladů, Ben 1998Základy programování vysvětleny v příkladech, vhodné pro začátečníky jako učebnice.

Lenka Tahalová, Tomáš Holan: Visual Basic v příkladech, BEN 2001Kniha je sbírkou prográmků, které by měly ilustrovat to, co je dobré znát. Není to učebnice, ale spíše přehled, co všechno zajímavého ve Visual Basicu jde a co je zajímavé.

Michael Havorson: Microsoft Visual Basic 6.0 Professional Krok za krokem, Computer PressUčebnice jazyka Microsoft Visual Basic verze 6.0. Příklady jsou podrobně rozebrány.

Page 3: Základy algoritmizace a programování

Algoritmus

Popis pracovního postupu, kterým lze řešit určitou skupinu úloh

Může být popsán mnoha různými způsoby – např. slovním popisem, pomocí matematických vztahů

Page 4: Základy algoritmizace a programování

Příklad algoritmu řidičePrasklá pneumatika

1. Zastavit

2. Vystoupit

3. Vyměnit kolo

4. Nastoupit

5. Rozjet se

Page 5: Základy algoritmizace a programování

Prasklá pneumatika, pokr.Podrobnější1. Zastavit2. Vystoupit

a. Otevřít dveřeb. Vyléztc. Zavřít dveře

3. Vyměnit koloa. Vyndat rezervub. Vyndat heverc. Zvednout auto na heverd. Odšroubovat koloe. Sundat kolof. Přišroubovat rezervug. Spustit auto z heveruh. Uklidit heveri. Uklidit kolo

4. Nastoupit5. Rozjet se

Page 6: Základy algoritmizace a programování

Prasklá pneumatika, pokr.Ještě podrobnější1. Zastavit2. Vystoupit

a. Otevřít dveřei. Chytit páčku dveříii. Zatáhnout za páčkuiii. Zatlačitiv. Pustit páčku dveří

b. Vyléztc. Zavřít dveře

3. Vyměnit koloa. Vyndat rezervub. Vyndat heverc. Zvednout auto na heverd. Odšroubovat koloe. Sundat kolof. Přišroubovat rezervug. Spustit auto z heveruh. Uklidit heveri. Uklidit kolo

4. Nastoupit5. Rozjet se

Page 7: Základy algoritmizace a programování

Prasklá pneumatika, pokr.Ještě, ještě podrobnější1. Zastavit2. Vystoupit

a. Otevřít dveřei. Chytit páčku dveří . Najít páčku dveří . Roztáhnout prsty levé ruky . Změnit polohu levé ruky, aby se dotýkala páčky . Sevřít prsty levé ruky ii. Zatáhnout za páčkuiii. Zatlačitiv. Pustit páčku dveří

b. Vyléztc. Zavřít dveře

3. Vyměnit koloa. Vyndat rezervub. Vyndat heverc. Zvednout auto na heverd. Odšroubovat koloe. Sundat kolof. Přišroubovat rezervug. Spustit auto z heveruh. Uklidit heveri. Uklidit kolo

4. Nastoupit5. Rozjet se

Page 8: Základy algoritmizace a programování

Program Pokud chceme, aby algoritmus vykonával nějaký konkrétní stroj,

musíme ho přetvořit v program Program je složen pouze z příkazů, kterým daný stroj rozumí Seznam příkazů, kterým rozumí nějaký stroj a pravidla pro jejich

používání jsou programovací jazyk Na „chytrosti“ stroje závisí míra abstrakce programovacího jazyka,

jehož příkazy je stroj schopen vykonávat Implementovat složitý programovací jazyk v hardwaru je složité –

hardware rozumí spíše jednoduchým jazykům = strojovému kódu Psát program ve strojovém kódu je těžké pro člověka – programuje se ve

vyšším jazyce (Visual Basic), který se pak překládá (transformuje, rozepisuje) do strojového kódu

Algoritmus/program by měl být: Správný – reagovat správně na všechny možné vstupní stavy dané úlohy Efektivní – dosáhnout správného výsledku v rozumném čase

Page 9: Základy algoritmizace a programování

Prasklá pneumatika, pokr.Funguje algoritmus vždy?1. Zastavit

2. Vystoupita. Otevřít dveře

b. Vylézt

c. Zavřít dveře

3. Vyměnit kolo

a. Vyndat rezervu

b. Vyndat hever

c. Zvednout auto na hever

d. Odšroubovat kolo

e. Sundat kolo

f. Přišroubovat rezervu

g. Spustit auto z heveru

h. Uklidit hever

i. Uklidit kolo

4. Nastoupit

5. Rozjet se

Page 10: Základy algoritmizace a programování

Prasklá pneumatika, pokr.Co bezpečnostní pásy?1. Zastavit2. Vystoupit

a. Otevřít dveřeb. Rozepnout bezpečnostní pásc. Vyléztd. Zavřít dveře

3. Vyměnit koloa. Vyndat rezervub. Vyndat heverc. Zvednout auto na heverd. Odšroubovat koloe. Sundat kolof. Přišroubovat rezervug. Spustit auto z heveruh. Uklidit heveri. Uklidit kolo

4. Nastoupit5. Rozjet se

Page 11: Základy algoritmizace a programování

Prasklá pneumatika, pokr.Co když jsme na kopci?1. Zastavit2. Zatáhnout ruční brzdu3. Vystoupit

a. Otevřít dveřeb. Rozepnout bezpečnostní pásc. Vyléztd. Zavřít dveře

4. Vyměnit koloa. Vyndat rezervub. Vyndat heverc. Zvednout auto na heverd. Odšroubovat koloe. Sundat kolof. Přišroubovat rezervug. Spustit auto z heveruh. Uklidit heveri. Uklidit kolo

5. Nastoupit6. Rozjet se

Page 12: Základy algoritmizace a programování

Prasklá pneumatika, pokr.Objekty Bude algoritmus fungovat v případě, když zastavíme před domem, který má otevřené

vstupní dveře?

3. Vystoupita. Otevřít dveřeb. Rozepnout bezpečnostní pásc. Vyléztd. Zavřít dveře

V daném kontextu není jasný vlastník objektu, musíme specifikovat komu dveře „patří“:

3. Vystoupita. Otevřít dveře autab. Rozepnout bezpečnostní pásc. Vyléztd. Zavřít dveře auta

Page 13: Základy algoritmizace a programování

Prasklá pneumatika, pokr.Objekty Co když zastavím vedle cizího auta s otevřenými dveřmi?

3. Vystoupita. Otevřít dveře mého autab. Rozepnout bezpečnostní pásc. Vyléztd. Zavřít dveře mého auta

„auto“ je typ, resp. třída objektu „mé auto“, stejně jako „Petrovo auto“ jsou konkrétní instance, resp. objekty typu, resp.

třídy auto

Page 14: Základy algoritmizace a programování

Objektové programováníNapř. objekt typu dům Objekt může obsahovat další objekty:

Např. objekt dveře a objekty okno Objekt má vlastnosti

Např. barva fasády, výška Vlastnosti objektu nemusí být „viditelné“

Např. rok postavení, jméno ulice kde stojí Vlastnost objektu může nabývat pouze některých hodnot – určeno „typem“

vlastnosti barva fasády: OK – zelená, CHYBA – 3,14 výška domu: OK – 20 metrů, CHYBA – žlutá Čili: barva fasády je typu barva, výška domu je typu číslo v metrech

Na objektu může jít provádět „operace“: Např. přemalovat – změna vlastnosti barva fasády Např. přistavět patro – změna vlastnosti výška domu, ale také změna vnitřní strukturu

objektu Např. zbourat

Objekt může reagovat na události

Page 15: Základy algoritmizace a programování

Algoritmus spolujezdce

dívej se z okna podívej se, jestli nepraskla pneumatika; pokud ano, upozorni

řidiče a po zastavení vyměň kolo kousej si nehty na rukou podívej se zda nezlobí děti; pokud ano, tak je zpacifikuj pokud je uvnitř auta teplo, otevři okénko; až začne být v autě

zima, zavři okénko dívej se z okna podívej se, jestli nepraskla pneumatika; pokud ano, upozorni

řidiče a po zastavení vyměň kolo …

Page 16: Základy algoritmizace a programování

Algoritmus spolujezdceReakce na události

Události: praskla pneumatika → upozorni řidiče a po zastavení

vyměň kolo děti zlobí → zpacifikuj je v autě je teplo → otevři okénko v autě je zima → zavři okénko

Událostmi řízené programování Zjednodušuje psaní programů s objekty

Page 17: Základy algoritmizace a programování

Visual Basic Programovací jazyk od Microsoftu Pracuje s objekty jako okno, tlačítko, editační řádek, apod. Umožňuje programovat reakce na události těchto objektů –

příklady událostí: kliknutí myši, změna obsahu editačního řádku, apod. Část programu reagující na určitou událost – událostní procedura

(podprogram) Každý objekt má své jednoznačné jméno Příkazy:

Vyvolání (provedení) akce na objektu Změna vlastnosti objektu – přiřazovací příkaz:

JménoObjektu.JménoVlastnosti = NováHodnota