Algoritmizace právních problémů

autor: Lukáš Michna


Aktualizováno 30. 5. 2019


Pojem algoritmizace

Algoritmizace je postup, resp. metodologie, směřující k nalezení sestavení postupu, jehož prostřednictvím lze řešit nějaký konkrétní problém. Jako takový se algoritmizace sestává z několika kroků, čítajících zejména formulaci problému, definici zadání (žádaný výsledek), analýzu problému vzhledem k zadání, návrh řešení, přípravu řešení, a ověření řešení.

Tento postup, běžný při programování, lze velmi dobře uplatnit i v právní praxi, neboť představuje sadu očekávaných kroků s předvidatelným obsahem, tudíž usnadňující spolupráci v týmech, zejména kontrolu a využití výstupů jednotlivých členů týmu.

V této fázi identifikujeme problém vnějšího světa a snažíme se jej co nejlépe uchytit tím, že jej věcně popíšeme. Pro tuto fázi je typická spolupráce s odborníky z oblastí, pro které má algoritmus sloužit.

V této fázi definujeme zadání, jak s identifikovaným problémem naložit, jaké má být jeho řešení, tedy výsledek, jakého má být při postupu na konci algoritmu dosaženo.

V této fázi dochází k rozkladu problému na dílčí celky, volí se programové prostředky, výchozí hodnoty, požadované výsledky, jejich forma a přesnost řešení.

Dochází k sestavení jednoznačného sledu jednotlivých instrukcí (příkazů), které je třeba provést, aby bylo zadání správně splněno. Algoritmus přesně popisuje postup zpracování daného problému vzhledem k zadání, nedává však výsledek řešení daného problému, dává pouze postup, jak jej získat.

Dobře provedená analýza problému a kvalitní návrh řešení mají zásadní význam velmi pro řešení daného problému a jsou základním předpokladem sestavení funkčního programu.

Přípravou řešení rozumíme sestavení programu na základě algoritmu řešeného zadání (zdrojový text) v konkrétním programovacím jazyce. Ze zdrojového textu se pomocí překladače do strojového kódu vytvoří spustitelný program (typicky kompilované jazyky jako Pascal, Assembler, C, C++), případně se interpretem přeloží a spustí jednotlivé příkazy programu (typicky interpretované jazyky jako PHP, JavaScript, či nyní velmi módní Python).

Ověření řešení, tzv. odladění, slouží k odstranění chyb z programu.

Časté jsou chyby v zápise, tzv. chyby syntaktické. Tyto chyby odhalí překladač nebo interpreter. Jejich důsledkem zpravidla je, že se program nepřeloží a nevytvoří se tak spustitelný kód (v případě kompilovaných jazyků) nebo dojde k zastavení běhu programu v interpreteru.

Nejvíce nás ovšem potrápí logické chyby, které jsou zpravidla důsledkem nesprávně navrženého algoritmu, nebo chyby, které vzniknou nesprávným předpokladem ve fázi analýzy a návrhu problému. Tyto chyby se projeví nesprávnou činností programu nebo jeho špatnými výsledky.

Problémem je, že program obsahující logické chyby se přeloží, na první pohled vypadá jako bez chyb, spustí se a běží, nicméně jeho chyby se projeví až po určitém čase, zpravidla v nejaké specifické situaci.

Při odstraňování logických chyb může pomoci ladící program (debugger) umožňující sledování aktuálního stavu proměnných a krokování, případně testování vzorku programu na omezeném okruhu uživatelů, tzv. betatesterů.

Vývojové diagramy

Vývojové diagramy jsou často používaným nástrojem při tvorbě algoritmů. Jejich pomocí můžeme problém a jeho řešení zobrazit vizuálně pomocí sady obrazců s definovanými významy (značky). Do těchto značek se vpisují operace nebo skupiny operací, které se mají provést.

Velkou výhodou vývojových diagramů oproti jiným metodám zápisu je, že umožňují grafické (názorné) zobrazení jednotlivých kroků algoritmu. Vývojový diagram je grafickým vyjádřením algoritmu, grafickým znázorněním logické struktury řešeného úkolu. Jedná se o posloupnost geometrických obrazců, které jsou propojeny spojnicemi, které znázorňují jednotlivé kroky algoritmu.

Značky používané ve vývojových diagramech mají standardizovanou podobu. Základní sada značek vypadá následovně:

Značka začátek algoritmu.

Značka spojovací šipka. Označuje směr, kterým se proces ubírá.

Značka konec algoritmu.

Značka zpracování. Obsahuje popis akcí (příkazů), které mají být provedeny.

Značka rozhodnutí. Slouží k popisu podmínky, která má být vyhodnocena.

Značka smyčka. Slouží k popisu parametrů smyčky, která má být provedena.

Značka vstup/výstup. Slouží k obecnému označení dat, která vstupují nebo vystupují z procesu.

Značka dokument. Označuje, že výstupem operace bude dokument.

Značka předdefinovaný proces. Odkazuje na již předem definovaný jiný algoritmus, která má být použit.

Značka interní paměť. Odkazuje na informaci uloženou v paměti počítači.

Praktická ukázka

V článku základech programování v jazyce JavaScript je na závěr prakticky pojednáno o výpočtu soudního poplatku. Tento příklad je zároveň vhodný pro jeho algoritmizaci pomocí vývojového diagramu, která by mohla vypadat např. následovně: