Programovacı Jazyky Pro Vy´Uku Programova´Nı Na
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA }w¡¢£¤¥¦§¨ FAKULTA INFORMATIKY !"#$%&'()+,-./012345<yA| Programovacı´jazyky pro vy´uku programova´nı´na SSˇ DIPLOMOVA´ PRA´ CE Bc. Luka´sˇRy´dlo Brno, 2012 Prohla´sˇenı´ Prohlasˇuji, zˇe tato diplomova´pra´ce je my´m pu˚vodnı´m autorsky´m dı´lem, ktere´ jsem vypracoval samostatneˇ. Vsˇechny zdroje, prameny a literaturu, ktere´jsem prˇi vypracova´nı´pouzˇı´val nebo z nich cˇerpal, v pra´ci rˇa´dneˇcituji s uvedenı´m u´plne´ho odkazu na prˇı´slusˇny´zdroj. Vedoucı´pra´ce: doc. RNDr. Toma´sˇPitner, Ph.D. iii Podeˇkova´nı´ Ra´d bych podeˇkoval vedoucı´mu sve´pra´ce, doc. RNDr. Toma´sˇi Pitnerovi, Ph.D. za ochotu ve´st me´te´ma, nevsˇednı´vstrˇı´cnost a trpeˇlivost i konkre´tnı´tipy. v Abstrakt Pra´ce prˇina´sˇı´zhodnocenı´ru˚zny´ch programovacı´ch jazyku˚, metodik a prostrˇedı´ pro potrˇeby vy´uky na strˇednı´ch sˇkola´ch. V u´vodnı´kapitole jsou popsane´teoreticke´ koncepty, formy vy´uky, analy´za metodik v oblasti vy´uky programova´nı´, vhodnost jednotlivy´ch paradigmat. Druha´kapitola prˇina´sˇı´prˇehled za´kladnı´ch metod graficke´ho popisu algoritmu, jejich vhodnost a vyuzˇitelnost prˇi vy´uce. Trˇetı´kapitola zacˇı´na´na´vrhem metodiky hodnocenı´programovacı´ch jazyku˚pro potrˇeby vy´uky a jejich prˇehledem. Dalsˇı´ka- pitola hodnotı´pro zmeˇnu ru˚zna´vy´vojova´prostrˇedı´, at’uzˇpouzˇı´vana´v beˇzˇne´praxi nebo urcˇena´prˇı´mo pro vy´uku. Za´veˇr pra´ce je veˇnova´n vy´ukovy´m materia´lu˚m pro semina´rˇz programova´nı´na gymna´ziu v jazyce Java metodou objects first, resp. model first (viz kapitola 1.5). Abstract This thesis is focused on teaching programming at secondary level schools, in the way of choosing languages, methodics, paradigms and development environment useful for educational process as well as real life. First chapter contains theoretical concepts, teaching methods, paradigm analy- sis. Second chapter briefly describes graphical representation of algorithms. Third chapter begins with language comparison methodics and then compares selected lan- guages with description. Next chapter compares development environments, both used in real work and specialized on teaching purposes. Last part brings teaching materials for programming course on high school, in or- der to support teaching Java and object oriented programming/modeling in objects- first way. This thesis is written in Czech language. Klı´cˇova´slova vy´uka programova´nı´, programovacı´jazyky, didaktika informatiky, strˇednı´sˇkoly, IDE, teaching programming, high school, paradigms vi Obsah 0 U´ vod .........................................1 1 Teoreticky´za´klad ..................................3 1.1 Koho budu ucˇit .................................3 1.2 Forma vy´uky ..................................5 1.3 Co a procˇbudu ucˇit ...............................6 1.4 Paradigmata ...................................8 1.4.1 Funkciona´lnı´.............................8 1.4.2 Logicke´.................................9 1.4.3 Imperativnı´strukturovane´.....................9 1.4.4 Objektoveˇorientovane´........................ 10 1.4.5 Uda´lostmi rˇı´zene´........................... 11 1.4.6 Multiparadigmaticke´jazyky.................... 11 1.5 Zarˇazenı´paradigmat do vy´uky ......................... 12 1.6 Jak budu ucˇit – obecna´metodika ........................ 14 2 Graficky´popis algoritmu˚ ............................. 21 2.1 Vy´vojove´diagramy ............................... 21 2.2 Kopenogram ................................... 24 2.3 Nassi-Shneidermannu˚v diagram ........................ 26 2.4 UML ...................................... 26 3 Jazyky ........................................ 35 3.1 Metodika volby jazyka ............................. 35 3.1.1 Kriteria hodnocenı´jazyku˚...................... 36 3.2 Prˇehled vybrany´ch jazyku˚ ........................... 39 3.2.1 Pascal................................. 39 3.2.2 C.................................... 41 3.2.3 C++................................... 42 3.2.4 C# (.NET)............................... 44 3.2.5 Visual Basic.............................. 45 3.2.6 Java................................... 46 3.2.7 PHP.................................. 48 3.2.8 JavaScript (resp. ECMAScript)................... 50 3.2.9 Perl................................... 51 3.2.10 Python................................. 53 3.2.11 Ruby.................................. 54 3.2.12 Karel.................................. 56 vii 4 Vy´vojova´a vy´ukova´prostrˇedı´ .......................... 57 4.1 Robot Karel ................................... 57 4.2 Lego Mindstorms ................................ 58 4.3 Arduino ..................................... 59 4.4 Baltı´k ...................................... 59 4.5 Scratch ..................................... 61 4.6 Alice 3D ..................................... 61 4.7 BlueJ ....................................... 62 4.8 Greenfoot .................................... 62 4.9 Dev-C++ .................................... 63 4.10 MS Visual Studio Express ........................... 63 4.11 Netbeans .................................... 64 5 Prˇı´pravypro semina´rˇprogramova´nı´ ....................... 65 1. lekce – Terminologie a algoritmizace...................... 66 2. lekce – Algoritmizace.............................. 70 3. lekce – Za´klady OOP............................... 75 4. lekce – Atributy a datove´typy......................... 77 5. lekce – Metody, API Greenfootu........................ 78 6. lekce – Podmı´nky a vy´jimky.......................... 79 7. lekce – Cykly................................... 80 8. lekce – Procvicˇova´nı´............................... 81 9. lekce – Testy a TDD, BlueJ............................ 82 10. a 11. lekce – Pole, kolekce, itera´tory...................... 83 12. lekce – Souborovy´vstup/vy´stup....................... 84 Dalsˇı´navrhovane´lekce............................... 85 6 Shrnutı´ ........................................ 89 viii Kapitola 0 U´ vod Jizˇneˇkolik let docha´zı´ke zmeˇna´m v prˇı´stupu k vy´uce programova´nı´na vysoky´ch sˇkola´ch, byt’v Cˇeske´republice k tomu docha´zı´s mı´rny´m zpozˇdeˇnı´m vu˚cˇi za´padnı´mu sveˇtu. Meˇnı´ se nabı´dka programovacı´ch jazyku˚ i metody vy´uky, zacˇı´na´ se kla´st du˚raz i na ru˚zne´ metodiky vy´voje software, nejen na pouhou znalost syntaxe a se´mantiky konkre´tnı´ho jazyka, neˇktere´jazyky se opousˇtı´(jazyk symbolicky´ch adres – neprˇesneˇnazy´vany´assembler), jine´se dosta´vajı´do poprˇedı´za´jmu a dalsˇı´se teprve prosazujı´(naprˇ. Ruby). Podobneˇdocha´zı´k diskusı´m a postupne´mu vy´voji i ve vy´uce informatiky na strˇednı´ch sˇkola´ch, v soucˇasne´dobeˇprˇedevsˇı´m dı´ky sta´tnı´maturiteˇ. Prˇesto na mnohy´ch strˇednı´ch sˇkola´ch v Cˇeske´republice se programova´nı´sta´le ucˇı´ stary´mi metodami a v „osveˇdcˇeny´ch“ jazycı´ch jako je Pascal nebo VisualBasic. Zmeˇna veˇtsˇinou za´visı´na samotny´ch vyucˇujı´cı´ch informatiky,protozˇe zavedenı´m RVP 1 dosˇlo k prˇevedenı´zodpoveˇdnosti za volbu na´plneˇvy´uky na sˇkoly. Nemalou roli ve volbeˇprogramovacı´ho jazyka pro vy´uku hraje jisteˇi setrvacˇnost vyucˇujı´cı´ch a prˇedevsˇı´m absence mozˇnosti efektivnı´cestou se novy´jazyk naucˇit. Pro mnohe´je ota´zkou „Ktery´je ten spra´vny´?“, protozˇe neexistuje v cˇesˇtineˇdostupne´shrnutı´dnes pouzˇı´vany´ch jazyku˚a jejich vhodnosti. Ve zmeˇti knih ru˚zny´ch u´rovnı´na´rocˇnosti, kvality a cı´love´skupiny cˇtena´rˇu˚se lze teˇzˇko orientovat. Acˇkoliv Ra´mcovy´vzdeˇla´vacı´program pro gymna´zia [2, str. 63] deklaruje vy´chovu zˇa´ku˚k algoritmicke´mu mysˇlenı´, vyucˇujı´cı´postra´dajı´ucˇebnice a metodiku, ktera´by takovou abstraktnı´proklamaci aplikovala do prakticke´vy´uky. Lepsˇı´situace nenı´ ani prˇi vy´beˇru ucˇebnic. Nabı´dka je sice sˇiroka´, ale pomeˇrneˇma´lo knih je vhodny´ch jako ucˇebnice pro strˇednı´sˇkoly – veˇtsˇinu z nich lze doporucˇit spı´sˇe jako doplneˇk vy´uky pro samostudium. Pedagogicka´opora ve formeˇsbı´rek prˇı´kladu˚k procvicˇenı´ opeˇt neexistuje, stare´sbı´rky veˇtsˇinou nelze pouzˇı´t, protozˇe obsahujı´prˇeva´zˇneˇu´lohy matematicke´, ktere´ dnesˇnı´ zˇa´ky nemotivujı´ a svy´m zameˇrˇenı´m na strukturovane´ paradigma se nehodı´prˇi vy´uce objektove´ho programova´nı´. V te´to diplomove´pra´ci si kladu za cı´l jednak analyzovat nabı´dku programovacı´ch a skriptovacı´ch jazyku˚z hlediska jejich vhodnosti pro vy´uku programova´nı´, ale take´ prˇehledneˇprˇine´st na´vrhy k alternativnı´m forma´m vy´uky programova´nı´a algoritmi- zace prˇedevsˇı´m v prostrˇedı´strˇednı´ch sˇkol, respektive na vysˇsˇı´m stupni za´kladnı´ch sˇkol. V pra´ci se pokusı´m zohlednit te´meˇrˇtrˇı´letou praxi ve vy´uce strukturovane´ho 1. RVP – Ra´mcovy´vzdeˇla´vacı´program, popisuje pouze obecna´te´mata a vı´ceme´neˇabstraktnı´cı´love´ dovednosti (tzv. klı´cˇove´kompetence) na rozdı´l od drˇı´ve pouzˇı´vany´ch pomeˇrneˇkonkre´tnı´ch osnov. To umozˇnˇuje sˇkola´m prˇizpu˚sobit svu˚j SˇVP – sˇkolnı´vzdeˇla´vacı´program – a odlisˇit se od jiny´ch sˇkol. 1 0. U´ VOD programova´nı´v jazyce C na gymna´ziu a ra´d bych touto pracı´prˇispeˇl k sˇirsˇı´diskusi a zmeˇneˇ, jaka´probeˇhla naprˇ. v Neˇmecku [6]. Pocˇı´tacˇova´gramotnost ve smyslu schopnosti ovla´dat pocˇı´tacˇv beˇzˇny´ch zˇivotnı´ch situacı´ch informacˇnı´spolecˇnosti jako je komunikace prˇes internet, vyhleda´va´nı´infor- macı´nebo jejich zpracova´nı´v ru˚zny´ch programech, je pro dnesˇnı´mla´dezˇnaprostou nezbytnostı´a jako takovou ji lze srovna´vat s prima´rnı´gramotnostı´. Je pravdeˇpo- dobneˇ jen ota´zkou cˇasu, kdy vy´uka vyhleda´va´nı´ na internetu nebo typografie a psanı´v textovy´ch procesorech prˇejde