LIETUVOS EDUKOLOGIJOS UNIVERSITETAS GAMTOS, MATEMATIKOS IR TECHNOLOGIJŲ FAKULTETAS INFORMATIKOS KATEDRA Marek Oleškevič Programavimo kalbų naudojimo Lietuvos mokyklose analizė Analysis of Programming Languages Usage in Lithuanian schools Informatikos baigiamasis magistro darbas Darbo vadovas doc. dr. T. Petkus Vilnius 2014 ĮVADAS ...................................................................................................................... 3 1. PROGRAMAVIMO KALBŲ ISTORIJA IR RAIDA ........................................................... 5 1.1. Programavimo kalbų raidos apžvalga .......................................................................... 5 1.2. Programavimo kalbų raidos filosofija........................................................................... 9 1.3. Programavimo kalbų populiarumas ........................................................................... 16 1.4. Programavimo kalbų bendrosios savybės .................................................................. 19 2. PROGRAMAVIMO KALBŲ NAUDOJIMAS LIETUVOS MOKYMO ĮSTAIGOSE .............. 22 2.1. Programavimo kalbų atsiradimas informatikos egzamine. .......................................... 24 2.2 Programavimo kalbų per IT VBE pasirinkimo analizė ................................................... 26 2.3. Eksperimentinis tyrimas ............................................................................................ 27 2.4. Eksperimentinio tyrimo apibendrinimas .................................................................... 33 2.5. Apklausos duomenų analizė ...................................................................................... 34 2.6. Apklausos duomenys: „Programavimo kalbų naudojimo Lietuvos mokyklose analizė . 35 3. C++ IR FREE PASCAL TAIKYMO GALIMYBĖS ............................................................ 43 3.1. Free Pascal taikymo galimybės: ................................................................................. 43 3.2. Pagrindinės FPS savybės ir funkcinės galimybės: ........................................................ 43 3.3. C++ taikymo galimybės: ............................................................................................ 44 3.4. Pagrindinės C++ savybės ir funkcinės galimybės[16]: .................................................. 44 3.5. C++ ir FPS programų kodų palyginimai ....................................................................... 45 4. IŠVADOS ............................................................................................................... 47 5. SANTRAUKA ......................................................................................................... 49 6. SUMMARY............................................................................................................ 50 7. LITERATŪROS SĄRAŠAS......................................................................................... 51 2 ĮVADAS Šiuolaikinėje Lietuvoje su kompiuteriniu programavimu susipažįstama jau mokykloje. Dėstomų programavimo kalbų įvairovė yra gana didelė, dažniausiai naudojamos kalbos yra „FPS“, „C++“, „Delphi“, „Python“, „Java“, „PHP“, „Logo“, „Scratch“, „Visual Basic“, „Lego Mindstrom Education“. Visos išvardintos kalbos turi savo istorijas, jos buvo kurtos skirtingais laikais bei siekiant skirtingų tikslų. Dėl šių priežasčių programavimo kalbos turi daug skirtumų. Skirtumai dažniausiai yra ne vien sintaksiniai ar loginiai, gali skirtis programavimo kalbos paskirtis. Vienos kalbos skirtos struktūriniam programavimui, kitos objektiniam, trečios skirtos programavimo logikos ugdymui. Be minėtų skirtumų šios kalbos turi ir panašumų, todėl perpratus vieną kalbą, lengvai galima perprasti ir kitas. Pagal Švietimo ir mokslo ministerijos nuostatas, programavimas Lietuvos mokyklose yra privalomas, pasirinkus informacinių technologijų dalyką „A“ lygiu. Mokiniai jau 6 klasėje susipažįsta su „Komenskio Logo“ arba „Imagine Logo“ programa. Vėliau – 9 klasėje su informacinių technologojų logika, t. y. su skaičiavimo sistemomis, loginiais operatoriais, algoritmais. Jau 10 klasėje galima pasirinkti programavimo modulį, kuriame realizuojamos nesudėtingų algoritmų transformacijos į programas. Šiame darbe yra apžvelgta programavimo kalbų istorija ir jų raida, pradedant nuo pačios pirmosios programos ir pirmosios programuotojos ir baigiant šiuolaikinėmis programavimo kalbomis. Taip pat apžvelgiama programavimo kalbų filosofija ir jų populiarumas šiuo metu, analizuojamos programų populiarumo pasikeitimo tendencijos. Taip pat yra atlikti anketiniai ir eksperimentiniai tyrimai, parodantys programavimo kalbų populiarumą mokyklose, pateikti mokinių gebėjimų įvertinimai mokinantis skirtingas programavimo kalbas. Mokyklinio kurso lygmenyje išanalizuotos informacinių technologijų valstybiniame brandos egzamine naudojamos programavimo kalbos, jų struktūra, sintaksė ir galimybės. 3 Darbo tikslas – ištirti programavimo kalbų Lietuvos mokyklose naudojimą ir jų įtaką tolimesniam programavimo mokymui. Uždaviniai: • Apžvelgti programavimo mokymo raidą ir filosofiją; • Palyginti „C++“ ir „Pascal “ programavimo kalbų galimybes mokyklinio kurso lygmenyje; • Atlikti programavimo kalbų naudojimo anketinį tyrimą; • Atlikti praktinį skirtingų programavimo kalbų mokymo eksperimentą su mokiniais. 4 1. PROGRAMAVIMO KALBŲ ISTORIJA IR RAIDA 1.1. Programavimo kalbų raidos apžvalga Nuo pat programavimo eros pradžios buvo naudojamas paprasčiausias mašininis kodas, tai 1 ir 0 seka.[1] Suteikus mašininio kodo eilutėms simbolinius vardus atsirado Asembleris, jis egzistuoja nuo pat kompiuterių atsiradimo pradžios. Evoliucionuojant Asembleriui atsirado kitos programavimo kalbos. 1945 m. sukurta pirmoji žinoma programavimo kalba Plankalkül.[2] Fortran (1954); Algol 58 (1958); Lisp (1959); Cobol (1960); Simula (1962); BASIC (1964); Logo (1967); Pascal (1971); C (1972); C++ (1983); Perl (1987); Python (1991); Java (1995); PHP (1997); C# (2000). Nuo XX a. 6-ojo dešimtmečio vidurio dauguma kalbų kurtos ne iš naujo, o tobulinant ir jungiant jau sukurtas kalbas [2]. Paveikslėliuose (1-5 pav.) pavaizduota aukšto lygio programavimo kalbų genealogija ir jų tarpusavio ryšiai, vienų kalbų įtaka kitoms. 5 1 pav. Programavimo kalbų raidos schema[8] 6 2 pav. Programavimo kalbų raidos schema[3] 3 pav. Programavimo kalbų raidos schema[3] 7 4 pav. Programavimo kalbų raidos schema[3] 5 pav. Programavimo kalbų raidos schema[3] 8 1.2. Programavimo kalbų raidos filosofija Ada Lovelace laikoma pirmąja kompiuterių programuotoja. Ji dirbo kartu su matematiku Charles Babbage, kai jis kūrė analitinę mašiną. Ada rašė užrašus, skirtus šiai analitinei mašinai, kuri niekada nebuvo pagaminta. Šie užrašai pripažįstami kaip pirmoji programa.[3] Ada Lovelace buvo poeto Lord George Gordon Byron dukra. Su Charles Babbage ji susipažino 1833 m. Babbage buvo pirmasis, kuris turėjo programuojamo kompiuterio idėją. Šią idėją suprato Ada Lovelace (pavardė pagal vyrą). Gruodžio 10 d. – Ados gimimo diena, laikoma programuotojų diena.[3] Kai atsirado pirmos skaičiavimo mašinos ir dar nebuvo šiuolaikinių programavimo kalbų, tų laikų programuotojai dirbo tiesiogiai su mašininiu kodu. Žinoma, tokie žmonės buvo labai vertinami, tačiau jiems buvo keliami ir dideli reikalavimai, tokie kaip nepriekaištingos mašininės kalbos žinios, visos kompiuterių architektūros išmanymas. Tais laikais visa informacija buvo saugoma ne kietajame diske kaip dabar, o perforuotose kortose.[4] Tiesioginio mašininio kodo pvz.: Dviejų skaičių sumavimo operacija atrodo taip: 000000 00001 00010 00110 00000 100000 Pirmasis žingsnis link civilizuoto programavimo buvo perėjimas prie Asemblerio[4]. Asembleris mašininio kodo eilutėms suteikė simbolinius vardus. (pateikiamas “Hello world” fragmentas Asemblerio kalba [4]): assume cs:cseg, ds:dseg, ss:sseg mov ax,dseg mov ds,ax ;duomenu segmento iniciavimas lea dx, welcome mov ah, 09h int 21h mov ah,4ch int 21h Tai buvo milžiniškas žingsnis į priekį, dabar programuotojui nereikėjo aiškintis, kaip užrašyti komandą mašininiu lygiu. Programuojant Asembleriu atsirado galimybė naudoti atžymas, tai gerokai palengvino programų testavimą ir klaidų paiešką. Atsirado galimybė gaminti 9 mašinas vienodu ar suderinamu mašininių komandų rinkiniu, tai galima pavadinti pirmuoju bandymu padaryti programinį kodą pernešamu. Asembleris leido dar vieną naujovę: atsirado du programų variantai, tai yra mašininio kodo ir sukompiliuoto pavidalu. Tačiau bėgant laikui ir tobulėjant šiai kalbai, bei vystantis kompiuteriams, programavimas Asembleriu darėsi vis sudėtingesnė problema, kol galiausiai tapo išvis beveik neįmanomas[4]. Šiandien Asembleris naudojamas labai retai, bet vis dar naudojamas situacijose, kur reikalingas išskirtinis greitis ir optimizavimas, pavyzdžiui, Linux branduolys kernelis parašytas C programavimo kalba (kuris vadinamas dar ir aukšto lygio asembleriu) ir dalis – Asembleriu, taip pat žaidimuose, šifravimo, duomenų spaudimo ir panašiuose programavimo uždaviniuose. Reikėtų paminėti pirmąją programavimo kalbą Plankalkül. Ją sukūrė vokiečių mokslininkas Konradas Ciuzė (Konrad Zuse) 1945 m. rašydamas daktaro disertaciją. Kalba turėjo pačius primityviausius duomenų tipus ir nedaug valdymo struktūrų. Kalba nebuvo realizuota – tais laikais dar tik pradėjo atsirasti pirmieji, labai primityvūs kompiuteriai. Tačiau kalba turėjo neabejotiną svarbą: parodytas kelias, kaip kurti programavimo kalbas. Kaip istorinę reikšmę turintis dokumentas, jos aprašas buvo išspausdintas tik 1972m.[14] Fortran 1954-1958 – FORmula TRANslator. Kalbos kūrėjai – John Backus ir kiti IBM darbuotojai. Kalba skirta matematiniams skaičiavimams. Fortran II (1958) turėjo paprogrames, funkcijas, ciklus, primityvų for sakinį. Vardų ilgis buvo ribojamas 6 simboliais. Nors šioje kalboje duomenų ir valdymo struktūros buvo labai menkos, tačiau kelios pagrindinės programavimo kalbų teorinės idėjos buvo perteiktos. Čia buvo vartojami loginiai kintamieji – suprasta jų reikšmė programavime. Buvo įgyvendinta išrinkimo sakinio idėja, nors dar gana netobulai, labai neaiškiai. Apskritai pirmosios kalbos vis dar tebebuvo labiau skiriamos kompiuteriui, o ne žmogui.[3][4] Lisp 1958-1960 – LISt Processing. Programos autorius Mac Carthy. Funkcinė kalba sąrašų apdorojimui. Pilnai rekursinė kalba. Nėra skirtumo tarp kodo ir duomenų.[3][4] Algol 68 Algol – 1960 / Algol 68 – ALGOrithmic Language. Apibrėžė tarptautinis kompiuterių mokslo specialistų simpoziumas. Tai pirmoji universali nuo kompiuterio nepriklausoma kalba. Panaudojo bloko sakinius ir lokalius kintamuosius bloko viduje. Įgyvendinta ribota rekursija, nes buvo manoma, kad ji nenaudinga. Naudojo dinaminius masyvus, vadinasi vėlesnes kalbos (Pascal, C), kurios naudojo statinius masyvus dėl efektyvumo, regresavo. Turėjo IF THEN ELSE, := 10
Description: