|
PROGRAMOVANIE
Programovanie je proces a súčasne aj
teoretický odbor zaoberajúci sa vytváraním počítačových programov.
Jednoducho povedané programovanie je činnosť, ktorá spočíva vo vytvorení
programu pre riešenie konkrétnej úlohy.
Začíname programovať
Programovanie je činnosť, ktorú vykonávame od najrannejšieho veku.
Program totiž všeobecne nie je nič iné ako špecifikovaný postup vedúci k
splneniu zadanej úlohy. Takýto postup navrhuje už batoľa, ktoré sa chce
dostať ku hračke, na ktorú bez pomôcky nedočiahne. S postupujúcim vekom
sú programy stále zložitejšie a rafinovanejšie. Postupne sa do nich
dostávajú procedúry (poprosím tatu, aby mi zaviazal topánky, ktoré si
ešte sám zaviazať neviem), funkcie (opýtam sa mamy, čo budem večerať),
premenné (musím si zapamätať kadiaľ som vyšiel z lesa, aby som nabudúce
nezablúdil), podmienky (ak si uložím hračky, tata ma zoberie do lesa,
inak bude kričať), cykly (pokiaľ sa neoblečiem, nemôžem ísť do školy) a
ďalšie programátorské prvky.
Keď sa žiak začne učiť programovať, to najdôležitejšie väčšinou už
pozná. Potrebuje si len uvedomiť svoje doterajšie znalosti a zručnosti a
naučiť sa zapísať svoju predstavu riešenia úlohy pomocou formalizmu a
predovšetkým s rešpektom k obmedzeným možnostiam počítača a používaného
programovacieho jazyka.
Aby žiaci po ukončení základnej školy mali základné znalosti
programovania, musí vyučujúci čo najviac využiť znalosti žiakov, a aby
to, čo ich naučí, mohli čo najlepšie využiť vo svojom ďalšom živote. A
to nezávisle od toho, či budú tvoriť programy pre počítače alebo riešiť
úplne iné úlohy.
Nesmieme si ale pliesť výučbu programovania s výučbou konkrétneho
programovacieho jazyka. Pri výučbe programovania by nemalo byť dôležité,
ako sa to či ono naprogramuje napr. v programovacom jazyku Basic či
Pascal. Vyučujúci by sa mala sústrediť predovšetkým na vysvetlenie
základných princípov a postupov a až potom ukázať ich realizáciu v
použitom programovacom jazyku.
Etapy programovania
Programovanie je širší proces a neobmedzuje sa len na zápis príkazov v
nejakom programovacom jazyku - kódovanie, ale proces programovania
môžeme rozdeliť na nasledovné etapy:
1. Definícia
problému - zadávateľ úlohy nebýva obyčajne počítačovým odborníkom
a nedokáže formulovať problém tak, aby mohol byť podkladom pre návrh
programu.
2. Náznak
postupu riešenia - v tejto etape sa tvorí celková stratégia
riešenia daného problému, pričom úlohy je často nutné rozdeliť a riešiť
ich oddelene ako niekoľko nezávislých programov.
3. Algoritmizácia
- najobtiažnejšia etapa programovania, určenie postupnosti operácií a
postup, ktorý túto postupnosť určuje sa volá algoritmus. Zápis je možno
prevádzať pomocou vývojových diagramov alebo priamo v programovacom
jazyku.
4. Kódovanie
- prepis vývojového diagramu do programovacieho jazyka. Zdrojový text sa
zapisuje v textovom editore, ktorý je súčasťou prostredia
programovacieho jazyka. Výsledkom kódovania je zdrojový súbor programu -
vstupný súbor pre prekladač.
5. Odladenie
programu - etapa odstraňovania chýb v navrhnutom programe. Pri
ladení sa využíva ladiaci program - debugger - ktorý je tiež súčasťou
prostredia prekladača. Pri vývoji programu sa programátor nevyhne
chybám. Chyby v programe môžu byť dvojakého druhu:
-
syntaktické
- zle zapísaný príkaz, obyčajne preklep, počítač príkazu nerozumie,
priebeh programu sa zastaví a objaví sa hlásenie o chybe
-
logické - program síce funguje, ale neplní požadované úlohy, končí v
nekonečnom cykle, nevypočíta výsledok a pod. Chyba sa obvykle rýchle
nájde
6. Spracovanie
dokumentácie - záverečná etapa programovania, v ktorej sa zostaví
návod k použitie - manuál - k programu. V ňom sa používateľ dozvie, čo
program dokáže a ako sa ovláda. Súčasťou dokumentácie je tiež
programátorská dokumentácia, ktorá je podkladom pre prípadné úpravy a
opravy programu autorom.
7. Udržovanie
a aktualizácia - často vyžaduje viac úsilia ako samotný vývoj
programu. Napríklad pri ekonomických aplikáciách je treba prevádzať
pravidelné úpravy programu pri zmenách legislatívy, u antivírových
programov ošetriť ochranu pred novými vírmi a podobne.
Didaktické zásady programovania
Zasvätiť žiakov do tajomstiev programovania nie je jednoduchá
záležitosť. Celý proces sa skladá z dvoch zložiek. Jedna je zameraná na
zvládnutie základných algoritmických a programovacích štruktúr a
postupov. Druhým problémom a úlohou vyučujúceho je naučiť žiakov ovládať
programovací jazyk, jeho syntax, výhody a obmedzenia, orientáciu v
prostredí prekladača. A tu sa vyskytuje problém, ktorý vedie veľkú časť
vyučujúcich k tomu, že odmietajú programovanie na základnej škole. Pod
programovaním sa im totiž vybaví práve tá druhá časť, teda učenie
programovacieho jazyka. Často majú v pamäti vlastné neblahé skúsenosti s
relatívne komplikovanou štruktúrou a prostredím jazyka Pascal či C.
Úlohou základnej školy však nie je naučiť programovací jazyk, ale
základy programovania. Pretože kým sa žiaci dostanú do praxe, budú
programovacie nástroje zrejme vyzerať úplne inak. Rovnako by nemalo byť
cieľom naučiť Word či Excel, ale zručnosť práce s textom, s tabuľkou,
informáciami a pod.
Aby výučba základov programovania bola naozaj efektívna, je potrebné
zvoliť nástroj, ktorého zvládnutie bude čo najjednoduchšie a žiakom bude
robiť len minimálne problémy. Žiadna zložitá štruktúra zdrojových
textov, jednoduché a prehľadné prostredie prekladača, názorný výstup. To
všetko i za cenu istých obmedzení jazyka, pretože so žiakmi netreba
vytvárať zložité a komplikované programy. Z didaktických zásad
programovania je vhodné dodržať nasledovný postup:
-
Čo najskôr umožniť tvorbu programov
Aby sa žiak mohol naozaj niečo naučiť, nestačí mu keď sa dozvie
základné znalosti, ale musí si všetko sám vyskúšať. Pokiaľ vysvetľovanú
konštrukciu niekoľko krát sám nepoužije, za chvíľu všetko zabudne (alebo
zabudne oveľa rýchlejšie).
-
Nepredbiehať - nepoužívať prvky jazyka, ktoré ešte
neboli vysvetlené
Výklad by mal byť usporiadaný, každý nový prvok jazyka by mal byť
vysvetlený až vtedy, keď si ho žiak môže overiť v dostatočnej šírke a
hĺbke.
-
Informácie podávať po malých častiach
Čím menej nových poznatkov žiakom predložíme na vyučovacej jednotke,
tým väčšia je nádej na to, že si ich žiaci zapamätajú a naučia sa ich
používať. Diskutabilný je však rozsah spomenutej malej časti. Ak
prirovnáme výklad ku schodišťu, tak touto malou časťou nebude jeden
schod, ale skupina schodov medzi jednotlivými odpočívadlami. Inými
slovami, prebrané bude iba učivo (medzi dvomi zastávkami) slúžiace k
dôkladnému precvičovaniu v rôznych typoch úloh.
-
Sprievodné úlohy musia vyžadovať aktívne použitie
nových poznatkov
Žiaci pri riešení úlohy musia aplikovať práve vysvetlené nové
konštrukcie a prvky jazyka.
-
Úlohy musia byť zaujímavé
Najlepšie úlohy sú také, keď žiak vie, ako by problém riešil sám, a
toto riešenie potrebuje formalizovať tak, aby riešenie zvládol aj
počítač.
-
Riešenia nemajú byť príliš neprehľadné
Časť programu, ktorá rieši zadanú úlohu a tým aj precvičuje preberanú
konštrukciu a prvok jazyka, sa nemá strácať v záplave príkazov vstupu a
výstupu a rôznymi pomocnými operáciami.
-
Od začiatku dbať na zásady moderného programovania
Ak chceme žiakov naučiť riešiť aj zložitejšie problémy, treba od samého
začiatku riešiť problémové úlohy rozložením na niekoľko jednoduchších
úloh a tieto riešiť samostatne. Ak ale žiaci riešia každú úlohu
vytvorením hlavného programu (bez samostatných procedúr alebo funkcií),
budú podobným spôsobom pokračovať, ich práca bude s pribúdajúcou
náročnosťou úloh čoraz namáhavejšia a v konečnom dôsledku ich to v
budúcnosti môže odradiť od programovania vôbec.
-
Žiaci sa musia naučiť programy nielen vytvárať, ale
ich aj ladiť
Pri tvorbe programov sa vždy vyskytnú chyby (syntaktické alebo
logické). Proces ladenia je rovnako dôležitý ako proces tvorby. V ňom
totiž žiaci odhalia chyby a majú možnosť odstrániť ich.
-
Riešiť netriviálne problémy
Schopnosť riešiť zložité úlohy je tou najcennejšou zručnosťou, ktorú si
žiaci pri výučbe programovania môžu osvojiť. Vyučujúci by sa mal
sústrediť na to, aby žiakov učil riešiť zložitejšie úlohy, aby si žiaci
osvojili zásady moderného programovania.
PROGRAMOVACIE JAZYKY
Programovací jazyk je umelý jazyk určený na definovanie inštrukcií,
ktoré sú potom spracovávané a vykonávané počítačom. Programovací jazyk
je určitým medzistupňom medzi priamymi inštrukciami počítača (strojový
kód) a ľudským myslením, či prirodzeným jazykom. Používa veľmi obmedzenú
časť slov prevzatých z anglického jazyka a rad matematických a logických
výrazov. Má prísnu a jednoznačnú syntax. Programovací jazyk má tiež
svoju vetnú skladbu, ktorá je značne obmedzená oproti vetnej skladbe
prirodzeného jazyka a jej pravidlá sú veľmi striktné. Programovací
jazyk musí byť automaticky, jednoznačne a pomerne jednoducho
transformovateľný do strojového kódu.
Programy s ktorými sa stretávame v našich počítačoch, ako je operačný
systém, aplikácie alebo hry, musel najskôr niekto vytvoriť -
naprogramovať. Program je ucelený súbor inštrukcií, príkazov, pomocou
ktorých vykonáva počítač určitú činnosť. Program je tvorený jedným alebo
viacerými súbormi, ktoré sú v celku schopné vykonávať predpísanú
činnosť. Tvorbou programov sa zaoberajú programátori a to väčšinou v
tímoch. Programátor sa môže stáť autorom celého programu, ale na veľkých
projektoch pracujú aj stovky programátorov. Ich riešenie je časovo
náročné a preto si prácu na projekte rozdelia na časti, ktoré
spracovávajú oddelene. Tým sa značne skráti doba riešenia projektu.
Vlastné poznanie programovacieho jazyka ešte nestačí k vytvoreniu
funkčného projektu. Potrebné sú rozsiahle znalosti z teórie algoritmov,
tvorby používateľských rozhraní, charakteristík hardvérových zariadení
atď. Nie je možné nespomenúť znalosti z odboru, v ktorom má aplikácia
slúžiť.
Klasické (vyššie) programovacích jazykov
Prvá komunikácia medzi počítačom a človekom sa uskutočňovala v
strojovom kóde. Program v strojovom kóde je zostavaný z jednotlivých
inštrukcií, ktoré je počítač schopný bezprostredne vykonávať. Pre každý
typ počítača existuje iný kód podľa jeho schopností. Programovanie v
strojovom kóde je zdĺhavé a náročné. Programátor rozpisuje inštrukcie do
dlhých reťazcov núl a jednotiek.
Neskôr boli postupne vyvinuté programovacie jazyky, ktoré uľahčili
programovanie. Behom vývoja programovania bol vyvinutý rad
programovacích jazykov, ktoré v práci nazývam klasickými (vyššími)
programovacími jazykmi. Pre základy výučby programovania na ZŠ ich
nepovažujem z didaktického hľadiska za vhodné, u talentovaných žiakov
ich naopak odporúčam zaradiť do domácej prípravy.
Stručný prehľad klasických (vyšších)
programovacích jazykov
BASIC
Basic (Beginner's All-Purpose Symbolic Instruction
Code) vyvinutý v roku 1964 vznikol "rozšírením" kalkulačkových príkazov
o príkazy skoku a cyklov, príp. i príkazy pre vstup a výstup. Pre
počítače, ako sú PMD-85, Didactik, Commodore, bol BASIC jediným
programovacím jazykom a niekedy nahrádzal i operačný systém. Hlavnou
oblasťou použitia Basicu sú jednoduché programy s prevažujúcimi
numerickými výpočtami.
FORTRAN
Programovací jazyk FORTRAN (Formula Translation) sa
radí medi skutočné prvé programovacie jazyky. Bol vyvinutý v roku 1957.
Používa sa prevažne pre numerické vedecké výpočty.
COBOL
Jazyk COBOL (Common Businnes Oriented Language) bol
vytvorený v roku 1960 pre aplikácie v oblasti administratívy, kde sa
stále používa. Bežne sa s ním už nestretneme.
PL/1
V roku 1975 bol vyvinutý programovací jazyk PL/1
(Programming Language 1), ktorý naviazal na jazyk FORTRAN. Jazyk sa však
príliš neujal.
ALGOL 60
Na návrhu programovacieho jazyka Algol 60 (Algorothmic
Language) sa podieľali predovšetkým matematici. V súvislosti s týmto
jazykom sa objavil rad nových významných pojmov (napr. bloková štruktúra
programu). Dnes sa jazyk takmer nepoužíva, ale v 60-tych rokoch
ovplyvnil na dlhší čas prúd vývoja programovacích jazykov.
PASCAL
Na Algol naviazal programovací jazyk PASCAL, ktorý bol
navrhnutý profesorom Nikolausom Wirthom z univerzity v Zurrichu v roku
1971 pre potreby výučby programovania. Dnes má Pascal vo svete nielen
dominantné postavenie pri výučbe programovania, ale veľmi sa používa aj
pre bežné programovanie. Konečný tvar normy jazyka bol vydaný v 80-tych
rokoch pod označením ISO 7105.
MODULA 2
Ďalším dielom profesora N. Wirtha je i programovací
jazyk Modula 2, ktorý vychádza z Pascalu a je rozšírený o prostriedky
tzv. "modulového" programovania.
JAZYK C
Jazyk C bol vyvinutý programátormi pôvodne ako pomocný
prostriedok pre používanie operačného systému UNIX. Je vhodný pre
systémové programovanie, kde mal donedávna vedúce postavenie.
JAZYK C++
Objektovo orientovaná verzia jazyka C. Pre snahu jeho
autorov o maximálnu dokonalosť a univerzálnosť je dosť komplikovaný.
JAZYK C#
Nový jazyk z produkcie firmy Microsoft, súperiaci s
jazykom Java od spoločnosti Sun. Je to vlastne reakcia Microsoftu na
prehraný súdny spor o implementácii jazyka Java. Jazyk C# vychádza zo
syntaxe C++. Na rozdiel od Javy, kde je odstránené všetko, čo pre jeho
funkčnosť nevyhnutne nie je potrebné, autori jazyka C# zvolili opačný
postup a ponechali všetky možnosti.
VISUAL BASIC
Jazyk Visual Basic má medzi programovacími jazykmi
zvláštne postavenie. Najviac aplikácií pre platformu Windows je
napísaných práve v tomto jazyku. K obľube jazyka Visual Basic prispel
hlavne jednoduchý syntax, ľahká tvorba užívateľského rozhrania a veľká
flexibilita užívateľského rozhrania. Ďalšou výhodou jazyka Visual Basic
je, že všade, kde sa pracuje s MS Windovs, je viditeľný. Je použitý ako
makrojazyk v kancelárskom balíku MS Office.
JAVA
Prednosťou jazyka Java je snaha o prenechanie čo
najväčšieho počtu programátorských úloh na prekladač kódu. Aplikácie
napísané v jazyku Java nie sú obmedzené použitým operačným systémom (na
rozdiel od Visual Basicu). Vývojové prostredia pre Javu sú zadarmo a
dajú sa stiahnuť z Internetu. Problémovým sa zdá používanie operačného
systému Windows XP, ktorý v sebe nezahŕňa podporu jazyka Java, avšak
táto podpora je na stránke http://java.sun.com/getjava a dá sa
doinštalovať do operačného systému Windows XP.
DELPHI
Nepochádza priamo z rodiny jazykov C, C++, C#. Vďaka
firme Borland má kvalitné vývojové prostredie (základná verzia je
zadarmo). Nevýhodou je malé množstvo dostupných komponentov. Tento stav
by sa ale mohol zmeniť v okamihu, kedy by sa Delphi zaradilo do rodiny
prekladačov, v ktorých možno vyvíjať aplikácie pre .NET.
Prekladače zdrojového textu
Programátor napíše zdrojový text v programovacom jazyku a do strojového
kódu ho preloží program, ktorý sa nazýva prekladač.
Jazyky s interpretovaným zdrojovým kódom
Jazyky s interpretovaným zdrojovým kódom pre preklad do
strojového kódu používajú tzv. interpretery. Jedná sa najmä o staršie
verzie programovacích jazykov. Zdrojový text je čítaný a prekladaný po
jednotlivých riadkoch. Jeho nevýhodou je nízka rýchlosť. Dnes používané
jazyky tohoto typu sú napr. LISP, SmallTalk a staršie verzie jazyka
BASIC.
Jazyky s kompilovaným zdrojovým kódom
Jazyky s kompilovaným zdrojovým kódom pre preklad programu
používajú tzv. kompilátor. Všetky dnes používané programovacie jazyky sú
postavené na technológii kompilátorov. Zdrojový text je načítaný celý do
operačnej pamäte počítača a potom hromadne kompilovaný. Výsledkom je
spustiteľný súbor s koncovkou *.exe. Do tejto skupiny patrí jazyk C a
jeho objektovo orientovaná verzia C++, C#, Visual C++, Visual Basic,
Java, Perl, Pascal, Fortran, Cobol, Algol a ďalšie.
Nedostatky klasických (vyšších)
programovacích jazykov
V súčasnej dobe, väčšina žiakov, ktorí sa začínajú učiť základy
programovania, prichádza do styku s profesionálnymi programovacími
jazykmi. Predkladá sa im množina problémov z oblasti spracovania čísel a
symbolov. Ja však tvrdím, že efektívnosť klasického prístupu je
všeobecne veľmi malá. Dokonca čím mladším žiakom sa predkladá, tým
horšie sú jeho výsledky. Hlavné nevýhody profesionálnych programovacích
jazykov, ktoré spôsobujú nemalé prekážky pre programátorov -
začiatočníkov:
-
Sú
príliš veľké a vyžadujú až nadmiernu presnosť (sú veľmi citlivé). Žiaci
si teda osvojujú základy jazyka a súčasne zásady programovania. Spolu je
to pre nich obrovské množstvo nových informácií. Namiesto zdôraznenia
zásad programovania, programovací jazyk nabáda žiakov pochopiť špecifiká
daného jazyka a jeho implementácie.
-
Nie sú
vizuálne orientované. Väčšinou sa programy vykonávajú "skryto", čím sa u
žiaka prehlbuje myslenie orientované na vstupy a výstupy. Toto je
prekážkou pre zvládnutie sémantiky jazyka.
-
Keďže
sú orientované na spracovanie čísel a symbolov, prvé problémy, ktoré
môžeme pri vyučovaní použiť, sú vzdialené každodenným skúsenostiam
žiakov. Teda sú neatraktívne.
-
Pri
vytváraní poučnej a zaujímavej aplikácie sa žiak musí naučiť pomerne
veľkú podmnožinu príkazov a štruktúr jazyka, nehovoriac o zvládnutí
programovacieho prostredia. Taktiež sa to odzrkadlí na dĺžke samotného
programu. Toto predstavuje ďalší rušivý moment.
|