Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Algoritmy a programování
Vladimír Dostál 4.c
2
Algoritmy-úvod První člověk, který poprvé vyslovil slovo algoritmus byl perský matematik Abū ‘Abd Allāh Muhammad ibn Mūsā al-Khwārizmī. Tento matematik jako první prakticky vytvořil systém arabských číslic a základy algebry. Algoritmus bývá často definován jako: „přesný návod či postup, kterým lze vyřešit daný typ úlohy.“ Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice algoritmu zní: „Algoritmus je procedura proveditelná Turingovým strojem“ (Skládá se z procesorové jednotky, tvořené konečným automatem a programu ve tvaru pravidel přechodové funkce a potenciálně nekonečné pásky pro zápis mezivýsledků a vstupů dat.)
3
Vlastnosti algoritmů Algoritmus většinou pracuje s určitými vstupy, veličinami, které jsou mu předány před započetím jeho provádění, nebo v průběhu jeho činnosti. Vstupy mají definované množiny hodnot, jichž mohou nabývat. Algoritmus má alespoň jeden výstup, veličinu, která je v požadovaném vztahu k zadaným vstupům, a tím tvoří odpověď na problém, který algoritmus řeší.
4
Konečný Každý algoritmus musí skončit v konečném počtu kroků. Počet kroků může být libovolně velký, ale pro každý jednotlivý výstup musí být konečný. Speciálním příkladem nekonečné výpočetní metody je relativní proces, který průběžně reaguje s okolním prostředím.
6
Deterministický Každý jeden krok algoritmu musí být jednoznačně a přesně definován: v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat.
7
Př. Vyšetřování hypokalámie
Efektivní Efektivní Obecně se požaduje, aby algoritmus byl efektivní vtom smyslu, že požadujeme, aby každá operace udělána algoritmem, aby byla dostatečně jednoduchá na to, aby mohla být zhotovena pouze s použitím tužky a papíru. Př. Vyšetřování hypokalámie
9
Obecný Algoritmus neřeší jeden konkrétní problém (např. 2 x 3), ale obecnou třídu obdobných problémů (např. ,, jak spočítat součet nebo rozdíl dvou celých čísel). Rezultativní Algoritmus, který při zadání vstupních dat vždy vrátí nějaký výsledek pořád dokola (může se jednat jen o chybné hlášení)
10
Druhy algoritmů Algoritmy můžeme rozdělovat různými způsoby, mezi nejvýznamnější patří rekurzivní, hladové, rozděl a panuj, dynamického programování, pravděpodobnostní, genetické a heuristické algoritmy.
11
Rekurzivní algoritmy- využívají (neboli volají) samy sebe.
Hladové algoritmy- požívají se k řešení propracování po jednotlivých rozhodnutích, která, jakmile jsou jednou učiněna, už nejsou nadále revidována. Algoritmy typu rozděl a panuj-dělí problémy na menší podproblémy, po čemž se dílčí řešení vhodným způsobem sloučí. Algoritmy dynamického programování- funguje podobně jako hladové algoritmy, ale negeneruje se pouze jedna postoupnost. Zkoumají se všechny posloupnosti, které by mohly být optimální a vylučují se ty, které optimální nebudou. Používají se dílčí výsledky, které byly získané již dříve během výpočtu. Typickým příkladem využití dynamického programování jsou grafové úlohy a jejich grafové algoritmy. Pravděpodobnostní algoritmy (neboli probabilistické) provádějí některá rozhodnutí náhodně nebo pseudonáhodně. Pokud bychom měli k dispozici více počítačů (jader nebo procesorů), můžeme úlohu mezi ně rozdělit, což nám umožní danou problematiku rychleji vyřešit. Tomuto cíli se věnují paralelní algoritmy Genetické algoritmy- pracují na postupu, který se snaží aplikací principů evoluční biologie nalézt řešení složitých problémů, pro které neexistuje použitelný exaktní algoritmus. Evoluční algoritmy používají techniky napodobující evoluční procesy známé z biologie – dědičnost, mutace, přirozený výběr a křížení – pro „šlechtění“ řešení zadané úlohy.
12
Zápis algoritmů Slovním popisem -Slovní popis v přirozeném jazyce
Vývojovým diagramem -Grafické znázornění algoritmu řešení úlohy jednotnými značkami a zkratkami Strukturogramy -Používá obdobné symboly ale přesnější, tento systém přesně splňuje podmínky důležité pro strukturované programování. Datově orientované diagramy (HIPO) -Je grafickým vyjádřením funkčního členění problému, struktury dat a postupu řešení problému při různém stupni podrobnosti. Rozhodovací tabulky -Požíváme při velmi složitých větveních
14
Programování-Binární kód
Binární kód je způsob uložení informace v počítači definován jako konečný počet bitů, ze kterých každý může nabývat pouze jednu ze dvou hodnot (označených jako 0 nebo 1). Dneska se převážně požívá Byte (bajt) s délkou slova osm bitů. Pro vypočítání binárního zápisu se používá binární soustava. Označení binárního kódu, které se požívá v případě, že člověk neví, jaká informace je v zápisu hodnot použita. Aby mohla informace být uložena a později zase obnovena, používá se při převodu do binárního kódu vždy nějaké kódování, které určuje, jak je převedena informace do číselného zápisu.
15
Systém kódování -Kódování ASCII (nebo-li American Standard Cod efor Information Interchange), požívá 7 bitový binární kód, který představuje text pro počítače, komunikační zařízení a mnoho jiných zařízení, která požívají text. V každém znaku nebo písmenu je přiřazeno číslo od 0 do 127 ( např. v 8 bitovém kódu ASCII je malé a reprezentováno jako řetězec bitů )
16
Programovací jazyk Programovací jazyk je prostředek pro zápis algoritmů, které mohou být provedeny na počítači. Program se nazývá zápis algoritmu v daném programovacím jazyce. Programovací jazyk je komunikačním nástrojem mezi programátorem (který v daným programovacím jazyce formuluje postup řešení daného problému) a počítačem.
17
Typy programovacích jazyků
Komplikované-(např. Pascal nebo C) -jsou kompletně přeloženy kompilátorem ještě předtím než se spustí -výsledkem je větší náročnost na správně zapsaný kód,ale také větší rychlost 2) interpretované- (např. Basic,Perl,shell a Phython) -interpretované jazyky, které se pouze interpretují (z toho důvodu jsou pomalejší - proto většina jazyků má alespoň nějakou jinou možnost, pokud nejsou stejně zpomalované něčím jiným, jako třeba shell) -interpretované jazyky, které se překládají, ale pouze do mezikódu, nikoli do strojového kódu počítače (např. Java, Python) -interpretované jazyky, které se po spuštění za běhu programu překládají do strojového kódu počítače (např. Java, pokud se použije systém JIT)
18
Programovací jazyk C Programovací jazyk C vyvinuli počátkem 70. let 20. století Ken Thompson a Dennis Ritchie pro potřeby operačního systému Unix. V součastné době je jeden z nejznámějších a nejpopulárnějších jazyků. Nejčastěji se používá pro psaní systémového softwaru, ale je velmi rozšířený i pro aplikace. Programovací jazyk C je nízko úrovňový, kompilovaný a relativně minimalistický. Je dostatečně mocný na většinu systémového programování (ovladače a jádro OS), přičemž zbytek lze dořešit tzv. iniline assemblerem ( metoda zápisu assembleru přímo do kódu). Ukládání dat je v C řešeno třemi základními způsoby: statickou alokací paměti, automatickou alokací paměti na zásobníku a dynamickou alokací na haldě za pomocí knihovních funkcí.
19
Datové typy Programovací jazyk C má tyto datové typy
Char- požívá se pro znaky Int- používá se pro celá čísla Float- používá se pro desetinné číslo s plovoucí řádkovou čárkou Double- používá se pro desetinné číslo s plovoucí řádkovou čárkou s dvojnásobnou přesností Void-požívá se pokud nepotřebujeme žádnou hodnotu( např u funkcí)
20
Díky za pozornost :-P
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.