Úvod 1 2 3 4 Příklady Testy

Úvod do programování

Obsah


Anotace kapitoly
V této kapitole se seznámíte se základními druhy algoritmů, jejich zápisem pomocí příkazů FERDA a základními vývojovými diagramy. 

Předpokládám, ze tyto stránky čtete, aniž byste měli hlubší pojem o tom, co to programování je. Proto začneme od úplného začátku a v této úvodní kapitole se seznámíte s pojmy, které jsou pro každého programátora nezbytné.
(Pokud máte zájem o historii programování a vývoje programovacích jazyků, klikněte zde.)
Už slovo programátor je dosti zavádějící, ale pro naše účely postačí, představíme-li si jako programátora osobu, která na počítaci v určitém programu napíše jistý text, přidá k němu vhodnou grafiku a zvuk a pomocí téhož nebo jiného programu celek převede do spustitelných souborů typu EXE a dalších podpůrných souborů a knihoven. Uživatel poté jen spustí spustitelný soubor typu EXE. Pak program běží a provádí různé akce, některé i proti jeho přání. Uživatel lamentuje a častuje programátora či programátorský tým nevybíravými slovy. I z tohoto velice zjednodušeného příkladu je patrné, ze programátor provádí řadu postupu a operací. My se s těmito postupy a operacemi a i chybami musíme seznámit.

Jádro počítače - procesor - provádí jednotlivé INSTRUKCE, což jsou dvojková čísla s jednoznačným významem. Na základě těchto instrukcí provádí operace s DATY což jsou jiná dvojková čísla. Instrukce do procesoru vstupují postupně a procesor je také postupně provádí. Tedy instrukce pro procesor je číslo ve dvojkovém formátu, které řídí činnost procesoru a umožňuje práci s jinými čísly - daty. Souhrn instrukcí nazýváme PROGRAM a program, který je určen přímo pro procesor se nazývá program ve STROJOVÉM KÓDU počítače. Tedy program ve strojovém kódu je posloupnost nebo řada instrukcí. V začátcích programování nezbývalo programátorům nic jiného, než každý program psát přímo ve strojovém kódu počítače.

 Ukázka strojového kódu.

0110 0111 0000 0001
0110 0111 0000 0001
0111 0100 1010 0101
0110 0000 0101 0001 0001 1100
0000 0111
0111 0111 0000
I dnes počítače provádějí program ve svém strojovém kódu, ale programátor již není nucen vyťukávat na klávesnici tisíce instrukcí. Programátor napíše text programu v nějakém programovacím jazyku, který se do určité míry podobá běžnému jazyku (hlavně angličtině). Tento text se nazývý ZDROJOVÝ KÓD programu.


Ukázka zdojového kódu v programovacím jazyku ASSEMBLER.
      MOV CX,10
      POP AX
skok: MUL AX,2
      DEC CX 
      JNZ @skok
      MOV BX,A
      XOR AX,AX  
      PUSH AX
Ukázka zdojového kódu v programovacím jazyku PASCAL.
      FOR i:=0 to 10 do 
       BEGIN
        ko_i:=ko_i*2;
       END;
     WRITE(ko_i);
Ukázka zdojového kódu v programovacím jazyku C.
      for(i=0,10,i++) 
       {ko_i=ko_i*2
       };
     ?ko_i;
Ukázka zdojového kódu v programovacím jazyku BASIC
10  FOR i=0 TO 10
15  LET ko_i=ko_i*2
20  NEXT i
25  PRINT ko_i

Poté se zdrojový kód pomocí jiného programu přeloží do výsledného strojového kódu. Tomuto programu se říká KOMPILÁTOR a postup se nazývá PŘEKLAD nebo KOMPILACE zdrojového kódu. Výsledkem je určitý kód (objektový kód), který je srozumitelný dalšímu programu. Objektový kód se pak programem nazývaným spojovač - LINKER - převede na výsledný kód strojový. Výsledkem je kompilovaný a linkovaný zdrojový kód - vlastní soubor s příponou EXE nebo COM. U běžných integrovaných programovacích prostředků návrh a zápis zdrojového kódu, jeho kontrola, kompilování i linkování běžně obstarává tento program a tak se zatím problémy kompilace a linkování nemusíme zabývat.
Další možností je nechat procesor vykonávat jednotlivé instrukce nebo řádky zdrojového kódu tak jak následují za sebou. Program, který toto provádí se nazývá INTERPETOR a při použití tohoto typu programu nevzniká výsledný strojový kód a tedy ani EXE soubor. Takovýnto interpretorem je výukové prostředí FERDA.
Program je tedy přesný postup nebo návod k tomu, jak zpracovat vstupní data a určitým způsobem je srozumitelně vyjádřit ve formě dat výstupních. Vstupními a výstupními daty mohou být datové soubory libovolného typu - textové, obrazové, zvukové, příkazy pro řízení technologií a robotů atd. Během svého běhu program komunikuje s uživatelem pomocí vstupních a výstupních zařízení, nejběžnější způsob je komunikace pomocí klávesnice, myši, monitoru a tiskárny.
Běžný uživatelský program sám o sobě nikdy nepoběží, vždy je jeho spuštění, běh, ovládání a ukončení ovládáno OPERAČNÍM SYSTÉMEM počítače. Dříve programy pracovaly pod operačním systémem systémem DOS, dnes běží pod modernějšími operačními systémy jako jsou Windows, OS/2, UNIX apod. Tedy program pro svůj běh potřebuje operační systém a musí mu být přizpůsoben tak, aby mohl s tímto systémem komunikovat. Tedy i výsledný strojový kód musí být sestaven linkerem tak, aby odpovídal určitému operačnímu systému. Programy přeložené a zkompilované pro určitý operační systém nepoběží pod jiným systémem. Například program určený pro Windows nepoběží pod DOSem.

Pro naše úvodní úvahy o programování si stačí uvědomit tři fakta. Musíme umět napsat text, který má pro určité prostředí smysl a toto prostředí ho bude pokládat za program ve zdrojovém kódu. Tento program musí vykonávat určitou přesně zadanou činnost s jistými daty. Pro spuštění a běh tohoto programu musím mít k dispozici určitý operační systém.Seznámíme se nejprve s postupy, jak sdělit určitému prostředí co vlastně chceme aby provádělo a seznámíme se s obecnými a pak konkrétními pravidly, jak se vlastně tento postup zapisuje.
Postup, který řídí práci nějakého vykonavatele(t.j. procesoru - nemusí to být přímo mikroprocesor počítače, ale třeba FERDA) a má určité vlastnosti se nazývá ALGORITMUS. Vlastní definice algoritnu jako matematického pojmu je velmi složitá a tak si vyjmenujeme alespoň některé základní vlastnosti algoritmu:
1. SROZUMITELNOST - algoritmus se skládá z jednotlivých příkazů, které může procesor vykonat, kterým proceosr "rozumí"
2. JEDNOZNAČNOST - po každém příkazu je přesně určen další jeden příkaz
3. KONEČNOST - postup po určitém počtu opakování dospěje k závěrečnému příkazu a tím se algoritmus ukončí
4. OBECNOST - algoritmus pracuje s libovolnými vstupními daty, které obecně vyhovují podmínkám zadání
5. SPRÁVNOST - algoritmus správně řeší zadání úlohy

Výhodné je tedy pro zápis algoritmu používat přesně zadaný jazyk( slovní zásoba i gramatika), který vylučuje chyby v komunikaci běžné v normálním jazyce. Například jazyk určený pro programování musí vyloučit používání synonym. Tedy jazyk pro zápis algoritmů musí mít specielní semantiku (slovní zásobu s jednoznačným významem slov) a syntax (gramatiku).
Pro výuku algoritmů se požívají i grafická znázornění algoritmů - různé typy diagramů. Stručně se později zmíníme o vývojových diagramech.
Programovací jazyky bývají různě složité, ale základy algoritmického zápisu jsou všem společné. Dá se to stručně také vyjádřit tak, že každý postup procesoru lze zapsat pomocí konečné množiny příkazů. Do těchto příkazů se řadí příkazy elementární a složené. Do složených příkazů lze zahrnout příkazy podmíněné a příkazy cyklů. Další příkazy jsou příkazy zavedené uživatelem (procedury a funkce) a příkazy importované (vložené) z jiných souborů, tkzv. knihoven. V zásadě je každý příkaz v algoritmu buď elementární nebo složený. Složené příkazy jsou sestaveny z příkazů elementárních a dalších složených příkazů. Tedy složený příkaz lze vždy rozložit na příkazy pouze elementární, které už procesor umí přímo vykonat.
V učebním programovacím jazyku FERDA jsou například elementární příkazy
KROK,
VLEVO VBOK
apod., přílazy cyklů
CYKLUS 15
KROK
KONEC CYKLUS,
podmíněný příkaz například
KDYZ JE ZNACKA
VLEVO VBOK
KONEC KDYZ
apod. Podrobnější informace naleznete v části syntax FERDA tohoto výkladu V dalších lekcích se seznámíme se stavbou programu FERDA a se syntaxí a sémantikou tohoto procesoru.


Samostatné opakování

Odpovězte na otázky:
  1. Jaké jsou základní vlastnosti algoritmu?
  2. Co je to instrukce procesoru?
  3. Co se rozumí pod pojmem kompilace zdrojového kódu?
  4. Jak byste vyjádřili jinými pojmy slova syntaxe a sémantika?
  5. Co se rozumí pod pojmem elementární příkaz pro procesor?

(c)Pavel Hrubý >>Pruh Soft<< 2000