Professional Documents
Culture Documents
Algoritmus
Algoritmus
Vlastnosti algoritmu
Aby sme postup mohli považovať za algoritmus, musí mať nasledujúce vlastnosti.
Človek sa dokáže učiť a vytvárať stále zložitejšie elementárne činnosti, ktoré kombinuje do ešte
zložitejších postupov.
Počítače používajú iba veľmi obmedzenú množinu elementárnych činností.
Ľudia dokážu chápať postupy, v ktorých nie je zvýraznené poradie činností alebo presne
určené ako dlho treba činnosť opakovať. Človek môže správne pochopiť postup, v ktorom je
poradie krokov chybne zapísané alebo sú niektoré kroky vynechané.
Do postupu pre nemysliace zariadenie je nevyhnutné uviesť poradie činností !
3. Rezultatívnosť - (výsledok)
Algoritmus dáva pre rovnaké vstupné údaje vždy rovnaké výsledky
Na matematike sa všetci učíte tie isté algoritmy – postupy rôznych výpočtov. Napriek tomu nemajú
v písomke všetci žiaci rovnaké výsledky. Prečo ?
Chyba nie je v algoritmoch, ale v ľuďoch. Buď sa algoritmy nenaučili správne, alebo použili
nesprávne algoritmy – určené na riešenie iného typu úloh.
4. Konečnosť
Algoritmus skončí v konečnom čase po vykonaní konečného počtu malých krokov, kedy sa
získajú správne výsledky,
Keď vidíme, že postup nevedie k požadovanému výsledku – skončíme činnosť, počítač v
rovnakej situácii pracuje ďalej – pokiaľ má zdroj energie 😊.
Ak potrebujeme výsledok v priebehu niekoľkých sekúnd, tak postup, pomocou ktorého sa
dopracujeme k riešeniu za hodinu, nie je vhodným algoritmom.
5. Hromadnosť – všeobecnosť
Algoritmus nerieši jeden konkrétny problém (napr. „ako vypočítať 3×7“), ale rieši všeobecnú
triedu obdobných problémov (napr. „ako vypočítať súčin dvoch celých čísel“).
Algoritmus je určený na riešenie veľkého počtu úloh rovnakého ( podobného ) typu.
6. Opakovateľnosť - viackrát pri rovnakom vstupe musí byť aj rovnaký výstup, zrozumiteľnosť
a prehľadnosť.
7. Efektívnosť
Efektívny algoritmus je taká postupnosť krokov, ktorá daný problém rieši s minimálnym počtom
použitých prostriedkov (finančných, technických, ľudských) v čo najkratšom čase.
Umožňuje získať výsledok v čo najkratšom čase a s využitím čo najmenšieho počtu
prostriedkov.
Algoritmizácia je postup vytvárania algoritmu (postupy) určené pre počítač. Je nevyhnutná pri
vytváraní počítačových programov.
Program
Program je algoritmus vyjadrený programovacím jazykom.
Postupnosť príkazov programovacieho jazyka, ktorou popisujeme, ako má počítač riešiť určitú
úlohu.
Jedinému jazyku, ktorému počítač rozumie je strojový kód (binárny jazyk)
Človekom čitateľná forma napísaná v programovacom jazyku sa nazýva zdrojový kód.
Prevod z programovacieho jazyka do strojového kódu nazývame preklad (kompilácia).
Prekladač - kompiler je program, ktorý preloží nami vytvorený program do strojového kódu –
tvaru vhodného pre počítač.
Programovanie
Je činnosť, ktorou vytvárame nové programy spustiteľné na počítači
je proces :
• zostavovania a vytvárania programu,
• ladenia programu,
• testovania programu,
• vypracovania dokumentácie na použitie programu
Programovací jazyk
Je to je sústava slov a pravidiel na zápis algoritmu tak, aby mohol byť spracovaný počítačom.
Syntax programovacieho jazyka je súbor príkazov a pravidiel akými sa v ňom zapisujú
programy.
4. Dokumentácia a údržba
Dokumentácia k programu vysvetľuje, aký problém program rieši: aké vstupné údaje a ako treba
zadať, aký výstup možno očakávať.
Dozvieme sa z nej, ako program funguje a ako ho používať.
Slúži ako pomôcka pri odstraňovaní chýb, pri zmene či rozširovaní programu, ktoré sa robí s
odstupom času, alebo ktoré bude robiť niekto iný (nie autor).
Môže slúžiť aj ľuďom, ktorí budú program používať.
Dokumentáciu môžu využiť iní programátori, kde opíšete, ako ste pristupovali k riešeniu
jednotlivých problémov atď.
Dokumentácia sa zvyčajne robí dvoma spôsobmi:
1. Komentáre – vysvetľujúce poznámky, ktoré sa píšu priamo do programu a ktoré vie procesor
odlíšiť od samotného programu (počas spúšťania programu ich ignoruje)
2. Písomná dokumentácia k programu – nachádza sa mimo programu a môže byť v papierovej
alebo elektronickej podobe. Môže to byť manuál (obsahuje informácie užitočné pre
programátorov) alebo používateľská príručka (pomáha používateľom naučiť sa pracovať s
programom, možno ju nájsť vo forme súboru pomocník (nápoveda, help).
5. Ladenie programu
Testovaniu toho, či program funguje správne, hovoríme ladenie programu (debugging –
odstraňovanie chrobákov)
Pri ladení postupujeme tak, že programu zadávame testovacie údaje a kontrolujeme správnosť
výsledkov, ktoré vypočíta. Ak výsledky nie sú správne, programátor musí nájsť a opraviť chyby v
programe a znovu ho otestovať.
Logické (chyba nesprávneho algoritmu) – program na ich odhaľovanie nemáme a ani sa nedá
vytvoriť. Niektoré logické chyby sa prejavia predčasným ukončením výpočtu s nejakou chybovou
správou – chyby počas behu programu (run-time chyby).
Spôsoby zápisu algoritmov:
Iným spôsobom vyjadrenia algoritmu je algoritmický jazyk.
Je to často zmes prirodzeného jazyka príkazov a nejakého konkrétneho programovacieho jazyka
do ktorého plánujeme algoritmus zapísať.
1. Operačná zložka
Základnými činnosťami sú príkazy a podmienky.
Príkazy – vety jazyka, ktoré „prikazujú“ procesoru vykonať isté, presne stanovené činnosti.
Napr. príkazy vstupu a výstupu, príkaz priradenia...
Premenná - objekt (môžeme ju považovať za nejakú pamäť alebo miesto v pamäti) slúžiaci
počas behu algoritmu na odkladanie údajov
Konštanta – objekt, ktorý počas celej realizácie algoritmu nadobúda jedinú konkrétnu
hodnotu príslušného typu (v matematike napr. , e...)
Výraz – predpis, ktorý obsahuje konštanty, premenné a spôsob ich spracovania pomocou
operácií a funkcií. Jeho výsledkom je hodnota príslušného typu.
2. Riadiaca zložka. - V algoritmickom jazyku musí byť presne stanovené poradie vykonávania
jednotlivých činností, aby realizátor (procesor) nemusel uvažovať, čo má kedy vykonať.
Musí byť určená presná postupnosť jednotlivých krokov
Zápis algoritmu
V zápise algoritmu, ktorý je určený pre počítač, nie sú nepresnosti a nejednoznačnosti
prípustné.
Slovný zápis
Zápis v prirodzenom jazyku – napr. recept z kuchárskej knihy. Návod na použitie
výrobku. Postupy pri riešení niektorých úloh v matematike, fyzike, chémii ...
Zápis v algoritmickom jazyku – umelo vytvorené jazyky (formálne)
Zápis v programovacom jazyku
Grafický zápis
Obrázkové návody
Vývojové diagramy – postupnosť činností je popisovaná textom umiestneným v
grafických značkách
štruktúrogramy – skladajú s z blokov, ktoré sa môžu do seba vnárať alebo radiť do
postupnosti
Zápis v algoritmickom jazyku
1. začiatok
2. čítaj hodnotu A
3. čítaj hodnotu B
4. C = A * B
5. píš hodnotu C
6. koniec
Algoritmický jazyk je zmes prirodzeného a programovacieho jazyka
Každý vývojový diagram má jediný začiatok i koniec a jeden alebo viac blokov spojenými
orientovanými spojnicami:
2. Vstupno–výstupný blok
Pri algoritmoch, je nutné aby do každého procesu niečo vstupovalo (vstupné údaje) a niečo
vystupovalo (výstupné údaje – výsledok).
Tento symbol označuje materiál alebo informácie, ktorú vstupujú / vychádzajú z procesu.
3. Symbol akcie / kroku - operačné bloky (tvaru obdĺžnika), ktoré obsahujú príkazy:
Tento symbol označuje konkrétny krok v procese alebo vykonanú akciu v rámci celého procesu
Spojnice vo vývojovom diagrame môžu (na rozdiel od spojníc rozhodovacieho stromu) viesť aj
späť na miesta, kde sme už boli.
To nám dáva možnosť niekoľkokrát zopakovať rovnaké kroky, napr. pravidelne miešať vajcia,
pokiaľ nie sú hotové. Takej konštrukcii hovoríme cyklus. Je samozrejme potrebné dať pozor na
to, aby cyklus niekedy skončil.
Pokiaľ sa postup tzv. zacyklí, nikdy neskončí a nie je to algoritmus.
Príklad algoritmu, tzv. vývojový diagram problém: nájsť v knihe stranu 45 😊
Algoritmické štruktúry:
1. Sekvencia – vykonávanie príkazov v takom poradí v akom sú zapísané.
2. Vetvenie – možnosť rozhodnúť sa a vykonať príkazy na základe pravdivosti skúmaného znaku.
3. Cyklus – zápis umožňujúci opakovanie.
Vetvenie
Vetvenie je v algoritmizácii reprezentované podmienkou, ktorá predstavuje možnosť rozhodnúť
sa podľa pravdivosti skúmaného znaku. V závislosti od jej splnenia sa postup vetví na rôzne
prípady. Ak je podmienka splnená, pokračuje sa vykonávaním vetvy označenej ako „+“ , v
opačnom prípade sa spracúvajú príkazy vo vetve „-“.
Vetvenie, v ktorom sa príkazy vykonávajú ako v kladnej, tak i v zápornej vetve sa označuje ako
úplné.
Činnosť, ktorá sa opakuje, označujeme ako telo cyklu, podmienku, ktorá určuje dokedy sa bude
telo cyklu opakovať, nazývame podmienka cyklu.
V závislosti od vzťahu medzi telom a podmienkou cyklu môžeme cykly rozdeliť na:
cyklus so známym počtom opakovaní
cyklus s podmienkou na začiatku
cyklus s podmienkou na konci
Predpokladom využitia takéhoto cyklu je, že počet opakovaní poznáme pred jeho
odštartovaním a operácie v tele naň nemajú žiaden vplyv. Vo všeobecnosti ho možno zapísať:
Cyklus s podmienkou na začiatku
Tento typ cyklu má podmienku, ktorá sa stará o ukončenie cyklu umiestnenú pred telom. Ak je
podmienka splnená, vykoná sa telo cyklu a opäť sa otestuje. Ak „vstupná“ podmienka nie je
splnená už pri prvom vstupe do cyklu, nemusí sa tento vykonať vôbec. Graficky vyzerá zápis
nasledovne:
Čítame:
Pokiaľ je splnená
podmienka, opakuj
príkaz/sekvenciu
!Cyklus nemusí
zbehnúť ani raz!
Tento cyklus na prvý pohľad vyzerá oproti cyklu s podmienkou na začiatku ako opačný – najprv
sa vykoná telo cyklu a až potom sa zisťuje splnenie podmienky. Ak je podmienka cyklu
splnená, vykonávanie cyklu sa ukončí, v opačnom prípade sa pokračuje opätovným
vykonávaním tela cyklu. Dôsledkom takéhoto riadenia je, že cyklus vždy prebehne minimálne
raz.
Tento cyklus sa môžeme označiť ako “neopatrný”: najskôr sa niečo vykoná, potom sa rozhoduje,
či to bolo dobre; cyklus s podmienkou na začiatku sa naproti tomu niekedy nazýva ako opatrný –
najprv otestuje platnosť podmienky a až potom sa vykonáva.
Napíšte algoritmus na výpočet obsahu a obvodu obdĺžnika.
Vstupom do algoritmu budú rozmery strán obdĺžnika, výstupom požadované hodnoty:
Vstup : a,b > 0 – strany obdĺžnika
Výstup: S – obsah obdĺžnika, O – obvod obdĺžnika
Analýza úlohy
Vstupné údaje: čísla A, B, C, D
Výstupné údaje: SOUCIN
Analýza: SOUCIN= A*B*C*D
Zastavte algoritmus, ktorý po zadaní znaku z klávesnice určí, či je znak malé alebo veľké
písmeno, číslo alebo iný znak a správu o tom napíše na obrazovku.
Analýza úlohy
Vstupné údaje: znak Z
Výstupné údaje: text je malé písmeno, je veľké písmeno, je
číslo, je iný znak
Analýza: znak je veľké písmeno, pokiaľ leží medzi znakmi
A až Z, malé písmeno medzi znakmi a až z, číslo medzi
znakmi 1 až 9, inak je to iný znak.