You are on page 1of 27

Algoritmus , program, programovanie.

Algoritmus je postup, ktorého realizáciou získame zo zadaných vstupných údajov po


konečnom počte činností v konečnom čase správne výsledky alebo vyriešime problém.
 Pozor, aj oznam o tom, že úloha nemá riešenie, je výsledok!

Algoritmus je návod – má nejakého adresáta. Je postup riešenia nejakej úlohy.


Pozostáva z príkazov na vykonávanie takých činností, ktoré jeho vykonávateľ dokáže urobiť
Toho , pre koho je algoritmus určený, nazývame procesor alebo vykonávateľ.
Najčastejším procesorom bude v našich úlohách počítač.
Jednotlivým krokom algoritmu hovoríme príkazy.
Množinu krokov ktorej procesor rozumie nazývame slovník jazyka.

Vlastnosti algoritmu
Aby sme postup mohli považovať za algoritmus, musí mať nasledujúce vlastnosti.

1. Elementárnosť (krok po kroku)


Algoritmus je zložený z činnosti – krokov – ktoré sú pre realizátora elementárne – základné,
jednoduché, ľahko realizovateľné.

Č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í.

2. Determinovanosť (všeobecnosť , jednoznačnosť)


Algoritmus musí byť zostavený tak, že po každom kroku bolo jasné, ktorá činnosť nasleduje,
alebo či sa postup skončil.

 Ľ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.

Pri zložitých problémoch je efektívnosť algoritmu druhoradá - cieľom je zvyčajne vytvoriť


akýkoľvek algoritmus, otestovať ho a až potom prípadne zvýšiť jeho efektivitu alebo vylepšiť
Požiadavka získať výsledok čo najrýchlejšie je často v rozpore s požiadavkou minimalizovať
použité prostriedky..

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.

Detské programovacie jazyky: Baltík, Logo (Imagine), Karel, Scratch, ...


Programovacie jazyky: Pascal, C, SQL, PHP, C++, Java, Python ...
Softvérové inžinierstvo : Etapy tvorby programov - algoritmizácie
úloh
Zaoberá sa tvorbou programov pre počítač a prebieha v štyroch etapách:

1. Zadanie úlohy a presné vymedzenie - rozbor problému:


Začneme tým že si odpovieme na otázku, čo treba riešiť.
Problém - Stav, v ktorom existuje rozpor medzi tým, čo máme (vieme) a medzi tým, čo
potrebujeme (chceme).

Postup pri riešení problému:


1. Definovanie problému – čo chceme riešiť?; aké sú vstupy (čo poznáme)?; čo má byť
výstupom?
2. Nájdenie postupu riešenia – tvorivá činnosť, vykonáva ju vždy človek
3. Vykonanie postupu – ak je postup známy, je to rutinná činnosť; môže ju vykonávať človek
alebo stroj

Výsledkom tohto rozboru je podrobné zadanie úlohy, ktoré odpovedá na otázky:


Za akých predpokladov budeme riešiť úlohu?
Aké sú všetky známe dostupné údaje súvisiace z úlohou?
Čo je riešením úlohy resp. kedy je úloha splnená.

2. Navrhneme postup riešenia = vytvoríme algoritmus


Pri hľadaní riešenia vychádzame z toho, čo o danej oblasti vieme, aké máme k dispozícií
prostriedky na riešenie úlohy, zvážime vhodný spôsob organizácie údajov.
Výsledkom tejto práce bude algoritmus, čiže postupnosť krokov vedúcich k splneniu úlohy.
Ak sa vyskytnú viaceré možnosti riešenia, snažíme sa zistiť, ktorý je najefektívnejší.

3. Realizácia alebo implementácia algoritmu = Proces zápisu algoritmu v programovacom


jazyku.
Súčasťou tejto etapy je napríklad príprava obrázkov na úpravu vzhľadu programu, príprava
zvukových efektov.
Samotný zápis algoritmu nazývame program.

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ť.

Chyby v programoch môžu byť


Syntaktické (chyba zápisu) – sú veľmi časté, ale dajú sa ľahko odhaliť a opraviť (napr. preklepy,
nesprávny zápis kľúčového slova, jeho vynechanie,...) – dokáže ich hľadať prekladač.

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ť.

V algoritmických jazykoch sú 2 zvýraznené zložky:

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...

Príkazy musia spracovávať nejaké objekty – v programovaní sú to premenné, konštanty a


výrazy.

 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

Zápis v programovacom jazyku


program Sucin;
var a,b,c : integer;
begin
read(a);
read(b);
c:=a*b;
writeln(c);
end.
◦ Obrázkové návody
VÝVOJOVÉ DIAGRAMY
Vývojový diagram je vlastne algoritmus v grafickom tvare.
Je tvorený značkami. Do nich zapisujeme jednotlivé činnosti, ktoré sa majú vykonať.
Vývojový diagram - postupnosť činností popisovaná prostredníctvom grafických značiek a textu
v nich, pričom tok výpočtu je znázornený šípkami.

Vývojový diagram – základné značky a symboly


1. Symbol začiatku a konca – značí nám kde sa vstupuje a vystupuje z algoritmu.

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

4. Symbol rozhodnutia – rozhodovací blok


Tento symbol označuje bod, v ktorom sa proces rozvetvuje podľa toho, aké rozhodnutie nastane.
Ak je treba rozhodnúť medzi dvoma a viac alternatívami, vpíšeme do rozhodovacieho bloku
PODMIENKU a podľa odpovede potom sledujeme ďalší smer riešenia problému. Tvar
rozhodovacieho bloku je kosoštvorec: Jeho výstupom je podmienka Áno alebo Nie .

V prípade, že sa nám vývojový diagram nevmestí na jednu stránku,


či už do šírky, alebo do výšky môžeme pokračovať na ďalšej strane,
ale musíme použiť zv. SPOJOVACÍ BLOK, ktorý nám zabezpečí
jednoznačné pokračovanie:
Vývojové diagramy musia spĺňať zásady napr.

Začiatok je v diagrame vždy práve jeden.


 Z každého bloku (okrem rozhodovacieho) vedie len jediná spojnica, aby bolo jasné, kadiaľ
pokračovať.
 Spojnice vedúce z rozhodovacieho bloku musia byť označené (typicky áno-nie, pravda-
nepravda, P-N, true-false, T-F, 1-0 + - …), aby bolo jasné, ktorú vybrať v akom prípade.
 Spojnica nesmie začínať či končiť „vo vzduchu“. Vždy vedie z bloku do bloku, alebo sa pripojí
na inú spojnicu.
 Pri každej spojnici musí byť jasný smer postupu.

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.

Schémy - algoritmické štruktúry


Sekvencia

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é.

Ak príkazy sú uvedené len v prípade splnenia či nesplnenia podmienky. Takéto vetvenie sa


označuje ako neúplné, no neznamená to, že je menejcenné – veľmi často totiž nie je potrebné
niektoré príkazy pri splnení podmienky vykonávať.
Cyklus
Cyklus nám poskytuje prostriedok umožňujúci opakovať činnosť alebo činnosti. Pri jeho
použití je potrebné vedieť čo sa má opakovať a dokedy sa to má opakovať.

Č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

Cyklus so známym počtom opakovaní

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!

Cyklus s podmienkou na konci

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

Samotný algoritmus bude pozostávať zo štyroch krokov:

1. Zo vstupu prečítame veľkosti strán, ktoré sa uložia do premenných a a b v


takom poradí, v akom sú na vstupe uvedené premenné.
2. Do premennej S priradíme hodnotu získanú ako súčin strán, t.j obsah
obdĺžnika
3. Analogicky do premennej O priradíme veľkosť obvodu
4. Získané hodnoty vypíšeme
Napíšte algoritmus, ktorý pre zadaný polomer vypočíta obsah a obvod kruhu.
Vstup: r > 0 – polomer kruhu
Výstup: S – obsah kruhu, O – obvod kruhu

1. Prečítame zo vstupu hodnotu r, ktorá reprezentuje veľkosť polomeru.


2. Pomocou nej vypočítame hodnotu obsahu, ktorú uložíme do S a
obvodu, ktorú uložíme do premennej O
3. Vypočítané hodnoty vypíšeme.
Napíšte algortimus na nájdenie maxima z dvoch čísel.
{Vstup: a,b – ľubovoľné čísla}
{Výstup: max – maximum z dvojice}
- zo vstupu prečítame dvojicu čísel,
- ak a>b, algoritmus pokračuje vykonávaním príkazov vo
vetve „+“ a je jasné, že maximom z dvojice je a. V opačnom
prípade môže byť a<b alebo sú obe čísla rovné. Tak či onak,
správnou hodnotou bude hodnota uložená v premennej b.
- premennú max, do ktorej sme výsledok ukladali, len
vypíšeme.
Algoritmus by sme mohli
vytvoriť i jednoduchým
výpisom hodnoty bez
použitia ďalšej premennej.
Napíšte algoritmus na zistenie podielu dvoch čísel.
Zistiť podiel znamená vydeliť dve čísla.
Mohli by sme prečítať čísla, priradiť ich podiel do
premennej a vypísať ho, ale môže nastať prípad, že ako
deliteľa zadáme nulu.
A už v prvej triede na základnej škole nás učili, že nulou
deliť nemožno.
Preto potrebujeme takúto situáciu ošetriť – v prípade
zadania nuly sa vypíše text „Nulou nedelíme!“, inak sa
vypočíta podiel a vypíše sa.

{VST: a,b – ľubovoľné čísla}


?
{VÝS: podiel – podiel dvojice}

- prečítame dvojicu čísel


- ak je druhé číslo nula, vypíšeme upozornenie
- ak je b nenulové, vypočítame podiel a vypíšeme ho

Pokiaľ je text za príkazom výstup v úvodzovkách, vypíše sa presne to, čo je v úvodzovkách. Ak


text za výstupv úvodzovkách nie je, považuje sa za premennú.

Napíšte algortimus na nájdenie maxima z dvoch čísel a v prípade, že sú rovnaké, podajte


o tom informáciu.
{VST: a,b – ľubovoľné čísla}
?
{VÝS: maximum z dvojice alebo info o rovnosti}

- zo vstupu prečítame dvojicu čísel,


- ak a>b, vypíšeme hodnotu a.
- v opačnom prípade potrebujeme odlíšiť situácie,
keď sú čísla rovné a keď a<b.
Vložíme do tejto vetvy podmienku a=b, ktorá v
prípade kladného výsledku vypíše správu o tom, že
hodnoty sú totožné.
- ak neplatí, že a=b, tak je väčším číslom b, pretože
v celej tejto vetve platí, že a nie je väčšie ako b a v
tomto prípade ani nie sú rovné.
Napíšte algoritmus na nájdenie maxima z troch čísel.

{VST: a,b,c – ľubovoľné čísla}


?
{VÝS: maximum z trojice}

- ako maximum určíme prvé číslo


- ak je b väčšie ako max, tak je jasné, že
maximom bude b. V opačnom prípade netreba
urobiť nič, v max zostane priradená hodnota a
- ak je hodnota v c väčšia ako hodnota v max (čo
môže byť a alebo b), zmeníme ju, inak sa opäť
nič nedeje
- vypíšeme max
Záver: nie vždy platí, že najkratšie alebo na prvý
pohľad zrejmé riešenie je najvhodnejšie.
Zostavte algoritmus, ktorý zistí súčin čísel A,B,C,D a
vytlačí ho.

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.

You might also like