next up previous
Next: About this document ... Up: grafika Previous: Dialógy alebo "Stlačte OK!"

Záverečná lekcia alebo "Čo ďalej?"

Absolvovali ste kurz jazyka C. Naučili ste sa základné štruktúry jazyka, poznáte niektoré základné funkcie a viete čiastočne používať grafickú knižnicu Allegro. Ste v podobnej situácií, ako keby ste sa z nejakého jazyka (napríklad svahilčína) naučili gramatiku, niekoľko slovíčok a prečítali niekoľko článkov v časopise. Teda viete už dosť na to, aby ste sa pustili do nejakej serióznej roboty. Ale ak vaše vedomosti nebudete používať, ak nezačnete čítať nejakú svahilskú knižku, nezačnete prekladať do svahilčiny a nebudete sa pokúšať s niekym, kto po svahilsky hovorí dorozumieť, vyjde námaha, ktorú ste doteraz vynaložili navnivoč.

Podobne je to aj s programovaním a konkrétne aj s jazykom C. Ak nebudete v Cčku niečo rozumné programovať, ak nebudete čítať manuály, ak si nebudete prehlbovať svoje znalosti a rozvíjať techniku a programátorský štýl, spoznávať nové metódy programovania a učiť sa nové finty, vaša programátorská prítomnosť sa rýchle stane minulosťou.

Úlohou tejto lekcie je jednak povedať, kde hľadať ďalšie informácie, jednak vám dať návrhy na to, čo robiť a do akých projektov sa pustiť. Takže najprv k tým informáciam. Čo sa týka samotného jazyka C, niektoré učebniece idú viac do hĺbky, než náš kurz. Zvlášť odporúčame knižku Pavel Herout: Učebnice jazyka C ktorá je podľa nás najlepšou učebnicou Cčka v češtine alebo slovenčine. Ak máte práve málo peňazí, teba sa rozhliadnuť po internete. Na adrese http://www-kmadg.svf.stuba.sk/belan/programming/c/saloun je jeden relatívne úplný kurz jazyka C. Ak si ho prečítate, doplníte si oblasti, ktorým sme sa v našom kurze venovali len okrajovo.

Mnoho úloh z programovania už bolo vyriešených a nie vždy je účelné programovať ich odznova. Pozrieť sa po internete, či už niekto danú úlohu nevyriešil alebo či nie je k dispozícii funkcia, ktorú by ste potrebovali, ušetrí neraz čas aj robotu. Mnohé funkcie, ktoré sa môžu zdať užitočné, sú obsiahnuté už v klasickej knižnici libc, ktorá sa pri linkovaní s kompilátorom gcc pripája automaticky. Manuály ku knižnici libc nájdete na adrese http://ftp.groovy.gr/docs/gnu_manuals/libc/html_node/index.html Manuály sú po anglicky, ale čím skôr si zvyknete čítať anglickú dokumentáciu, tým lepšie.

Rovnako môže byť užitočné prejsť si manály ku knižnici Allegro. Dodávajú sa priamo s knižnicou, prípadne si ich môžete stiahnuť priamo zo stránky Allegra http://alleg.sourceforge.net. Okrem nich existuje dokument pre začiatočníkov v programovaní v knižnici Allegro nazvaný Allegro Vivace. V anglickej verzii sa dá nájsť na adrese http://www.canvaslink.com/gfoot/vivace, na slovenskom preklade sa pracuje (záujemci nech sa mi ozvú). Okrem úvodu ku knižnici Allegro tu môžete nájsť ukážky mnohých programátorských techník bežne používaných aj v iných oblastiach, než je počítačová grafika a tvorba počítačových hier.

Existujú mnohé iné špecializované stránky venované programovaniu (za mnohé uveďme len http://ll.cz/programovani). Keď viete o konkrétnej veci, ktorú hľadáte, tak sa treba obrátiť na vyhľadávací server (napr. Google je dobrý kamarát... http://www.google.com) a je veľmi pravdepodobné, že nájdete niečo, čo vám pomôže.

Toľko teda, čo sa týka veci "ako programovať". Ďalšou nemenej dôležitou otázkou je "čo programovať". Začnem opäť linkou na internete. Na stránke http://www.ksp.sk nájdete korešpondenčný seminár z programovania, zadania matematickej olympiády kategórie P a na ďalšie programátorské súťaže. Úlohy v nich nie sú náročné, čo sa týka znalosti jazyka (vaša znalosť jazyka C je úplne postačujúca), ale sú ťažké čo sa týka hľadania konkrétnych algoritmov. Rozhodne sa pri ich riešení môžete mnohému priučiť.

Ďalšou z možností je pustiť sa do samostatného projektu -- najlepšie do nejakej hry. (Predtým sa vrelo odporúča prečítať Allegro Vivace!!!) Na začiatok to pravdepodobne bude remake niečoho klasického. Ťahovky typu Gnobots (pozrite si túto hru pod Linuxom) patria medzi folklór a nie sú z programátorského hľadiska náročné. Podobne je mnoho matematických hier (napríklad hry typu NIM), ktoré majú vyhrávajúcu stratégiu a dajú sa ľahko programovať a počítač v nich môže vystupovať v úlohe protihráča.

Pokročilejší programátori sa môžu pustiť aj do zložitejších hier založených na animáciach a pohybe (ono aj vyššie spomenutým hrám pekná animácia dodá na kráse). Dali by sa spraviť napríklad žaby (Na obrazovke je 6 vodorovných úrovní po ktorých v nepravidelných intervaloch plávajú lekná, žaba musí preskákať zo spodu až nahor a nesmie pritom spadnúť do vody, ani sa leknom nechať vyniesť z obrazovky). Ďalšia klasická hra je Space Invaders -- z rôznych miest na vrchu obrazovky sa začnú rojiť rôznou rýchlosťou inváziechtiví marťania, dole pobehuje raketka, ktorá ich ostreľuje a môžu jej uniknúť maximálne dvaja. Dala by sa spraviť aj nejaká ďalšia verzia PacMana - Hladnej potvorky pobehujúcej po bludisku a vyjedajúcej bodky, zatiaľ čo ju prenasledujú nejaké ďalšie príšery.

Chce to nápad a chuť pustiť sa do roboty. Inšpiráciou môžu byť staré Sinclairovské hry, ktorých sa spolu s emulátormi po sieti povaľuje veľké množstvo, na vylepšenia a samostatné nápady prídete isto aj sami. Len si na začiatok nevezmite veľmi veľké sústo a začnite od jednoduchších vecí.

Na záver jeden program v jazyku C. Napíšte (prípadne skopírujte) a spustite :) Mnoho šťastia v programovaní aj inak.

Anino

#include <stdio.h>
main(t,_,a)
char *a;
{
return!0<t?t<3?main(-79,-13,a+main(-87,1-_,main(-86,0,a+1)+a)):
1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
  :t<-50?_==*a?putchar(a[31]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
    :0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);
}


next up previous
Next: About this document ... Up: grafika Previous: Dialógy alebo "Stlačte OK!"
Anino Belan
anino(at)smnd.sk