GYMNÁZIUM, VLAŠIM, TYLOVA 271
Autor | Ing. Marta Bechyňová |
Číslo materiálu | 4_1_INF_01 |
K dispozici na | http://www.ivt.mzf.cz/algoritmizace-a-programovani/uvod-do-algoritmu/1-uvod-algoritmus/ |
Datum vytvoření |
|
Druh učebního materiálu | webová stránka |
Ročník | 1. |
Anotace | webová stránka pro osvojení pojmů algoritmus, programování a programovací jazyky. |
Klíčová slova | algoritmus, algoritmizace, programování |
Vzdělávací oblast | Informační a komunikační technologie |
Očekávaný výstup | Studenti si osvojí pojem algoritmus, programování a programovací jazyky. |
Zdroje a citace | [online]. [cit. 2012-10-05]. Dostupné z:http://www.spsemoh.cz/vyuka/algor/index.htm[online]. [cit. 2012-10-05]. Dostupné z: http://k-prog.wz.cz/progjaz/index.php |
Úvod do algoritmizace a základní struktury
1. Úvod algoritmus a programovací jazyky
Počítačové programy (neboli software) umožňují počítačům, aby přestaly být pouhou stavebnicí elektronických a jiných součástek a staly se pomocníkem v mnoha lidských činnostech.
Uživatelé počítače obvykle neovládají počítač přímo, ale využívají k tomu různé programy. (Příkladem lze uvést textový editor, operační systém nebo počítačovou hru.) Tento software musí být vytvořen jinými lidmi, ale ačkoli jsou programy určeny pro různé oblasti, existují společné základy, které se při tvorbě programů obvykle využívají. Právě na tyto základy je zaměřen tento kurz.
Tvorba programů je činností, které se většinou věnují vysoce specializovaní jednotlivci v rámci různých softwarových společností. Po absolvování výuky základů algoritmizace se proto pravděpodobně nestanete skvělými tvůrci programů, pokud však pochopíte principy, bude cíl výuky naplněn. V tom případě totiž budete mít předpoklady pro případné další (a již konkrétnější) studium této oblasti a ani základní pojmy programování vám již nebudou cizí.
Dnes již počítače pronikly téměř do všech oblastí lidské činnosti, používají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá algoritmus (program) a jeho tvorba algoritmizace (programování).
Historie
Algoritmy vznikaly už dávno před zkonstruováním prvních počítačů. Slovo „algoritmus“ vzniklo ze jména perského matematika, který žil v 9. století a jmenoval se Mohammed al-Khowarizmí (v latinském přepise Algoritmus). Zabýval se především pravidly pro aritmetické operace s čísly. Například Eukleidův algoritmus pro výpočet největšího společného dělitele dvou přirozených čísel pochází už z 4. až 3. století před naším letopočtem.
Algoritmus
Algoritmus je přesný popis, popisující určitý proces, který vede od měnitelných vstupních údajů k požadovaným výsledkům.
Jinými slovy – algoritmus je jednoznačný a přesný popis řešení problému.
Použití:
- při konstrukci či analýze algoritmů
- pro dokumentaci, pro zachycení myšlenky
Účel:
- názornost a přehlednost pro pochopení při algoritmizaci
- jednoznačný převod z textu programu do vývojového diagramu a naopak
- spíše nevhodné při návrhu celého (složitějšího) programu
Vstupní údaje
- informace, ze kterých při řešení úlohy vycházíme, musí splňovat vstupní podmínku
Výstupní údaje
- nově získané informace, které jsou výsledkem realizace algoritmu, musí splňovat výstupní podmínku
Každý algoritmus musí mít tyto vlastnosti:
- správnost: výsledek, který vznikne použitím algoritmu, musí být správný
- resultativnost: po konečném počtu kroků dospěje k řešení (vrátí třeba jen chybové hlášení)
- konečnost: algoritmus se nezacyklí, po určitém počtu kroků skončí
- determinovanost: v každém kroku je jednoznačně určen způsob pokračování práce algoritmu
- hromadnost: znamená, že algoritmus lze použít pro řešení obecné úlohy, tj. že nepopisujeme postup jedné úlohy, ale poslouží k řešení libovolné úlohy, která patří do jisté třídy úloh
- opakovatelnost: algoritmus vede vždy ke stejným výsledkům, jsou-li zadána stejná data
Algoritmus nemusí nutně vyžadovat vstupní údaje a vracet výstupní.
Některé problémy lze řešit více způsoby – různými algoritmy, které se mohou svým postupem značně lišit, ale vždy musí vést ke stejným výsledkům.
Naší snahou je vybrat pro řešení problému co nejefektivnější algoritmus, který řeší problém v co nejkratším čase, je přehledný a srozumitelný.
Algoritmus lze vyjádřit:
- slovně: jednotlivé kroky postupu jsou vyjádřeny větami v přirozeném jazyce
- graficky: jednotlivé kroky jsou popsány grafickými značkami se slovním popisem, například pomocí tzv. vývojových diagramů
- matematicky: soustavou rovnic, vztahem mezi veličinami
- programem: jednotlivé kroky jsou popsány instrukcemi určitého procesoru
Programování = zakódování algoritmu do zvoleného programovacího jazyka
Algoritmizace = proces vytváření a sestavování algoritmů
Efektivnost algoritmu
danou úlohu řeší více algoritmů, vybíráme efektivnějsší podle určitých kritérií:
- časové: úloha vyřešena v kratším čase (uvažujeme strojový čas tj. počet instrukcí procesoru)
- paměťové: spotřeba paměti
- přehlednost, srozumitelnost: (důležité pro další vývoj a úpravy)
Programovací jazyk = umělý jazyk jenž se používá pro definování sekvence programových příkazů, které lze zpracovat na počítači. Algoritmus má obecnou povahu, zatímco implementace algoritmu v určitém programovacím jazyku je ryze konkrétní.
Dělení programovacích jazyků
Nižší programovací jazyky
jsou jazyky primitivní, jejichž instrukce odpovídají příkazům procesoru. To znamená, že procesor bude vykonávat ty instrukce, které programátor napíše. Jsou závislé na svém procesoru a nepřenositelné na jiný procesor.
V praxi to vypadá tak, že programátor musí vypisovat vše. Pak i jednoduchý program má neúměrně složitý zdrojový kód. Výhodou je, že programátor má takto přístup i k funkcím počítače, které by měl ve vyšším programovacím jazyce nedosažitelné. Lépe tedy využije jeho schopnosti.
Patří sem:
- strojový kód (to, co uvidíte, když otevřete obsah „exe“ souboru v textovém editoru). Strojový kód = Soubor číslicových instrukcí, které je procesor počítače schopen rozpoznat a uskutečnit.
- jazyk symbolických adres (Assembler) – je velice blízký strojovému kódu
Vyšší programovací jazyky
jsou podstatně srozumitelnější, jejich struktura je logická, nejsou závislé na strojových principech počítače. Do strojového kódu se převádějí kompilátorem (případně se rovnou spouštějí interpretrem). V praxi je vyšší programovací jazyk vše, co není Assembler (například jazyk C++, Pascal, Basic, Delphi..)
Programovací jazyky dále dělíme na :
- kompilované
- interpretované
Kompilované jazyky
jsou nejdříve celé přeloženy a až potom mohou být spuštěny. Jsou rychlejší, mají vyšší nároky na formální správnost kódu. Překládají se kompilátorem, výsledkem překladu je (většinou) .exe soubor. Patří sem většina klasických programovacích jazyků.
Teoreticky může mít jeden programovací jazyk verzi jak interpretovanou, tak i kompilovanou.
Interpretované jazyky
jsou překládány až za běhu programu. Jsou pomalejší, ale nemají tak velké požadavky. Překládají se interpretem, ten instrukce zároveň při překladu provádí. Hlavní nevýhodou těchto jazyků je, že se musejí vždy spouštět v interpretu. Do této skupiny patří například Basic, skriptovací jazyky (PHP, Python, Perl …).
Další způsoby dělení programovacích jazyků
Programovací jazyky můžeme dále dělit na jazyky, které podporují:
- programování strukturované (např. Pascal)
- objektově orientované programování (OOP) – např. Visual Basic, Delphi
Opakování
- Co je to algoritmus?
- Co jsou vstupní údaje?
- Co jsou výstupní údaje?
- Vyjmenuj a popiš vlastnosti algoritmu.
- Jak lze vyjádřit algoritmus?
- Co to je programování?
- Co to je algoritmizace?
- Vyjmenuj kritéria efektivnosti algoritmu.
- Co je programovací jazyk?
- Vysvětli rozdíl mezi vyššími a nižšími programovacími jazyky.
- Vysvětli rozdíl mezi interpretovanými a kompilovanými programovacími jazyky.
Přidejte odpověď