Najnovšie na Twitteri
    sledujte môj Twitter
    Moje projekty

    Algoritmus a algoritmizácia

    Publikované: 26.11.2008 10:15 | Zobrazené: 1379x

    Jedna všeobecná definícia nezaškodí: "Algoritmus je postup riešenia problémov od všeobecných krokov až k tým najmenším." Laicky povedané, na začiatku stojíte pred veľkým problémom, napr. Som hladný. Pred tým, ako sa najete a hlad potlačíte, musíte vyriešiť niekoľko menších problémov. Musíte sa pozrieť do chladničky, či tam niečo nie je. Ak nie je, tak si asi niečo uvaríte. Toto nie je všetko. Samotné pozeranie do chladničky je veľmi zložitý proces, musíte k nej prísť, otvoriť ju, pozrieť sa, zhodnotiť situáciu, vyvodiť dôsledky, vybrať si niečo alebo nevybrať a zavrieť ju. Potom od nej odísť, niekde si sadnúť a najesť sa, či začať niečo variť. Ešte stále sme neskončili. Rozoberiem len ten príchod k chladničke. Musíte vyriešiť kráčanie, udržiavanie rovnováhy, vyberanie smeru chôdze, rýchlosť, vyhýbanie sa prekážkam. Všetko toto musíme rozobrať ešte ďalej. V podstate sa dostaneme až na molekulárnu a atomárnu úroveň. Keď budete mať všetky tieto detaily ozrejmené a vyriešené, môžete si povedať, že už poznáte algoritmus riešenia problému Som hladný.

    Takto sa tvoria aj programy. Musíte sa zaoberať každou blbinkou. Najskôr vytvoríte algoritmus (rozmýšľaním o probléme a postupným prichádzaním na metódy a spôsoby riešenia) a potom ho môžete previesť do programovacieho jazyka, napísať a preložiť.

    Algoritmus musí spĺňať štyri základné vlastnosti:

    • je konečný (rezultatívny) = vždy vedie k určitým výsledkom a prebieha v konečnom počte krokov
    • hromadnosť, všeobecnosť = rieši úlohu nezávisle na použitých (ale iba prípustných) vstupných údajoch. Algoritmus nepočíta 1 + 2 = 3, ale a + b = c
    • jednoznačnosť (determinovanosť) = nič nie je náhodné alebo neurčené, všetko musí byť jednoznačné.
    • opakovateľnosť = ak sú zadané rovnaké vstupné údaje, dostaneme vždy rovnaký výsledok

    Veľmi sa doporučuje dodržiavať ešte dve ďalšie vlastnosti: zrozumiteľnosť a prehľadnosť algoritmu.

    Postup tvorby programu

    Veľmi nepekný spôsob tvorby programu, obľúbený najmä u začiatočníkov je tzv. "hurá metóda". Sadnete za komp a začnete písať kód. Mal by som vás od toho odhovoriť a povedať vám, aké je to neefektívne a o koľko času vás to oberie, ale nechám to tak. Myslím si totiž, že aj tak na moje reči nedáte a budete prvé programy robiť práve týmto štýlom. A len touto ad hoc metódou sa zo začiatku o programovaní naučíte najviac. Neskôr už sami zistíte, že to nie je ten pravý postup, ako pristupovať k programovaniu (lebo to dosť spomaľuje) a budete sa to snažiť nejako racionalizovať.

    Nakoľko sa s touto situáciou stretli už všetci programátori, nemusíte vymýšľať koleso pri tej racionalizácii a rovno vám tu ponúkam základnú osnovu návrhu a tvorby nového programu:

    1. Zadanie úlohy a presné vymedzenie problému. Ono sa zdá, že je to jednoduché, ale často prídete na to, že to nie je pravda. Platí to najmä o väčších projektoch. Vždy si treba dopredu presne premyslieť, čo od programu očakávame, čo všetko má riešiť, prípadne v akej forme chceme výsledky.
    2. Navrhneme postup riešenia. V hlavinke si pekne rozmyslíme, ako na problém pôjdeme. Ak sa vyskytnú viaceré možnosti riešenia, snažíme sa zistiť, ktorý je najefektívnejší. Pokúšame sa odhadnúť prácnosť naprogramovania každého z nich a po zohľadnení oboch týchto kritérií si jeden spôsob vyberieme. Na úspešnosti tohto kroku všetko stojí a padá.
    3. Algoritmizácia. Keď už vieme, čo od programu očakávame a ako ho budeme riešiť, môžeme pristúpiť k najdlhšie trvajúcej časti - premýšľaniu. Analyzujeme problém do najmenších podrobností a riešime ho. Vytvárame postup - algoritmizujeme - najskôr v hlave a potom (alebo aj postupne) zapisujeme tento algoritmus v nejakom programovacom jazyku.
    4. Ladenie a testovanie. Už počas písania programu v programovacom jazyku jednotlivé časti kódu ladíme a odhaľujeme v nich chyby. Po dokončení prác môžeme (alebo skôr musíme) program otestovať. Jednoducho sa sním "hráme" a zisťujeme, či robí to, čo má a a spôsobom, akým sme mu predpísali. Nútime ho pracovať s rôznymi vstupnými údajmi, snažíme sa mu vnútiť aj neprípustné údaje a zisťujeme, ako bude reagovať. Zrejme nájdeme kopu chýb a poruchových stavov. Ak vieme, ako ich odstrániť, tak ich odstránime, inak si môžeme trhať vlasy a búchať hlavu o stenu.
    5. Dokumentácia a údržba. Ak je program dobrý a chceme ho ponúknuť aj iným ľuďom, je dobré, ak sa k nemu vytvorí minimálne pomocník. Vhodná je aj dokumentácia, ktorú môžu využiť iní programátori, kde opíšete, ako ste pristupovali k riešeniu jednotlivých problémov atď. Písať dokumentáciu je veľmi nezáživné. Ja som rád, že ma to ešte nikto nenútil. Ak sa program uchytí, postaráme sa o jeho údržbu (modifikácie, vylepšenia) a podporu (napríklad možnosť napísať vám mail a opýtať sa na niečo).
    Pošli na: Facebook   vybrali.sme.sk
    Komentáre:
    [1] Andrea čas: 06.06.2009 01:16:41
    ĎAKUJEM Ti za info mám to na skúšku a som Ti vďačná že tu je o tom písané...
    Pridať komentár