Pár drobných rad začínajícím programátorům

Jak začít? To je otázka snad každého člověka, co sedne před počítač se zapnutým editorem, který chce něco naprogramovat. Takovýmto lidem se říká programátoři. Profesionál programátor si vždy najde nějaký způsob, jak začít, protože buď je inteligentní a přijde na to sám, nebo existuje mnoho příruček o programování, kde jsou popsány tisíce takových začátků a problémů. Nebo prostě jen dlouhá praxe stačí. Ovšem kde seženou příručky mladí programátoři, kde vezmou praxi? Knihy jsou v dnešní době drahé a tak nezbývá, než si začí "podle svého".
Učil jsem programování již několik lidí, ze kterých se stali dobří programátoři a i ti začínali tak, jak ostatní. Všichni IHNED, co sedli za ošoupanou klávesnici mé historické 80386 (kterou mám ještě teď), se mě zeptali: "Já chci udělat nějakou hru, jak na to?" Tento přístup sice není špatný, ale má jisté chybičky. Každý chce hned dělat všelijaké grafické a zvukové efekty, dělat si do svých programů intra s přehrávaným videem vlastního formátu atd... Mnohokrát jsem se již přesvědčil, že je to s takovými lidmi jak s malými dětmi. Stejně jako malému dítětí nemůžete říkat, ať nesahá na plotnu, že je horká, musí se spálit samo, aby to vědělo a nikdy již nedělalo, tak i začínající programátory nechávám začínat těmito složitými věcmi, jako je grafika a tak. No a samozřejmě, po čase se hned ptají, nešlo by to udělat nějak jednodušeji? Nešlo by, aby se tady tohle pořád přičítalo a nemuselo se to tam psát ručně? Samozřejmě šlo, ale když nejsou základy, tak to nejde. Vysvětlím tedy, jak na to, oni ovšem z tohoto vysvětlení nechápou tak 10 slov. Vysvětlím i tato slova a množství nepochopených slov se znásobí. Takže prostě a jednoduše: Ten, kdo chce začít dělat ať sebelepší multimediální internetovou hru, MUSÍ ZAČÍT OD ZÁKLADŮ, TAK, JAKO VŠICHNI.
O co jde?
Nemáme - li zkušenosti, je lepší si nejdříve udělat nějaký ten plán práce. To znamená vzít papír (nebo NOTEPAD ve Windows atd...), tužku (kurzor...) a začít psát.

CO CHCHI UDELAT ZA PROGRAM:_________________________
JAK DLOUHÝ BY PROGRAM MĚL BÝT?:__________________________

To jsou 2 základní věci, jak začít. Pokud si na tyto otázky neodpovíte, bez praktických zkušeností dohromady pořádný program nedáte (nebo s velkými obtížemi). Již mnohokrát se mi stalo, že program začíná jako slibná kalkulačka a končí to uplně jako něco jiného. To je právě tím, že se nedbá dlouhodobě prověřených rad, které zde uvádím.
Máme-li v těchto věcech jasno, postoupíme k návrhu programu (stále jen na papír). Promyslíme si, jak program bude fungovat, jaké hodnoty se ukládají do proměnných a jaké hodnoty vracejí funkce, které chceme použít či naprogramovat. Pokud používáme nějaké proměnné, zpravidla je dobrý zvyk, aby měly néjaké názvy, kterým odpovídá jejich obsah. Tak například nepoužíváme proměnné j,p,v ale jmeno, prijmeni, vek. Samozřejmě jedná-li se o malý program řádově tak do dvouset řádků, není problém tyto proměnné použít, ale je dobré si ve zdrojovém kódu pořádně okomentovat. Ale vraťme se k prázdnému papíru. Udělejme si vývojový diagram problému, který řešíme (bohužel nemám možnost použít grafiku, takže slovně:)

program: scitacka

start
/
/
vstup a,b <-----------
/ /
/ /
c = a+b /
/ /
/ /
výstup c /
/ /
/ /
další? - - ANO- - -
/ ne
/
KONEC

Toto je VELICE jednoduché schéma. Podaří-li se nám ho naprogramovat, můžeme se trošku ponořit hlouběji do problému: Např. Proč sčítat jen dvě proměnné? Proč je jen sčítat? Nejakou grafiku by to chtělo! Nechce to zvuk? Proč to netiskne na tiskárnu? Proč......? Atd....

Zvládnem-li toto, jsme na velice dobré cestě začít dělat pořádné programy. Opět použiji příklad: Byli jsme na to 3, dělali jsme hru: Obyč hra na 386 nebo 486, tančíky, které se honily po ploše a střílely na sebe vším možným. Nejdříve jsme si udělali přesně takovýto vývojový diagram. Pak jsme se dali do práce. Práci jsme si rozdělili podle toho, kdo co umí asi tak nejlépe. Jeden kamarád dělal grafiku, jeden dával dohromady multiplayer a já jsem to skládal dohromady a vyráběl jsem vlastně jakási pravidla. Museli jsme si dát pár pravidel i mezi sebou, jak to udělat. Tak například tančíky nesměly být větší než 100x100 bodů, musely se otáčet těmi a těmi směry. Existovala funkce tancik(), jejímž výstupem byla hodnota, která ovlivnovala funkci otoc.tank(), otoc.plochu() atd... A funkci tancik delal kamarad, funkci otoctank treba ja a otocplochu jinej kamarad. Tady nastava to, ze si musime sdelit: Kdyz z funkce tancik vyleze hodnota 0, co se stane s funkci otoctank. kdyz vyleze cislo 3, co se stane s funkci otocplochu. Kdyz vyleze jakasi hodnota (vyrobni tajemnsti :-)), mohlo by se stat, ze se bude otace tank i plocha o stejny uhel? Jak toho vyuzit? Co treba pohledy na bitvu? Co trebas........? atd... Takovýchto věcí jsme si museli domluvit spousty. Takže základní program tanky.exe obsahuje nemýlim-li se něco kolem 12 000 řádků, později přibylo grafické menu (2000 řádků), přidáním zvuků se vše rozrostlo o dalších párt tisíc řádků....a už je tu program na 30 000 řádků, který je na staré komlilátory OPRAVDU nevhodný, tak začne dělení souborů, každý si dělá ten svůj soubor a opět se musíme domluvit: Jaké hodnoty obsahují tyto soubry? Co do nich zapisovat? Nemůze se stát, ze je najednou otevřen jeden soubor jen pro čtení a zároveň jen pro zápis? Zkraťme to: Jestli chcete OPRAVDU do programování proniknou, chce to 1. pořádně se naučit programovací jazyk a 2. PRAXE PRAXE PRAXE PRAXE. Nenaučíte se NIC, když budete ihned od začátku dělat velké programy s hodně chybami. Spíše je lepší, udělat relativně kratší programy (tak těch 1000 řádků MAXIMALNE) a uvidíte, dokončit takovýto projekt je někdy práce na 26 hodin denne, sedíte u toho hodiny a ono pořád nefunguje a nefunguje. A to je "jen" 1000 řádků, co teprve, když je jich 30 000? To je potom lepší se na to vybodout a nebo si zdrojový kod celý vytisknout a na pár týdnů se do toho položit a jen procítat, pročítat, pročítat........
Jo a ještě poslední rada ze života: Když se vám zdá, že program bezvadně funguje, VŽDY ho tisíckrát zkontrolujte, protože podle zákona schválnosti se chyba projeví až při předvádění. Kdybyste měl někdo nějaký problém ohledně tohoto, pište připomínky, rád vypomohu, rád poradím.


PROGRAMOVANI ZDAR PREJE RK !!!!!!

 

Maturita.cz - referát (verze pro snadný tisk)
http://www.maturita.cz/referaty/referat.asp?id=3056