Ką programuotojams duoda informatikos olimpiados

Neseniai išgirdau iš vieno pažįstamo moksleivio, kad jis kasmet ruošiasi informatikos olimpiadoms, tik niekaip negali suprasti, kam to reikia. Per olimpiadas yra programuojama Paskaliu, kuriuo gyvenime jau beveik niekas neprogramuoja, sprendžiami uždaviniai “apie orą”, kurių niekam nereikia, ir realiai gaunasi olimpiada vardan to, kad tiesiog būtų surengta olimpiada. Išgirdęs tokius žodžius, nusprendžiau parašyti straipsnį, kuriuo man galbūt pavyks tai paneigti. Mintis tokia: jei nori tapti geru programuotoju, informatikos olimpiados – tikrai naudingas dalykas.

Kas yra informatikos olimpiada?

Informatikos olimpiados esmė, kaip ir visų kitų olimpiadų, yra uždavinių sprendimas. Tik šiuo atveju uždaviniai sprendžiami kompiuterio pagalba, kur rezultatas yra Pascal, C arba C++ kalba parašyta programa. Pavyzdinis uždavinių lapas yra toks:

Esmė yra sumodeliuoti situaciją, apibrėžtą uždavinyje, ir parašyti jai programą. Kad būtų kiek linksmiau, uždavinių kūrėjai matematines formules įpaišo į kokią nors gyvenimišką istoriją, artimą patiems moksleiviams.

Pažymėtina, kad vertinama ne tik pati programa, bet ir sprendimo idėja, kuri realiai yra netgi svarbesnė už veikiančią programą. Tik dažnas atvejis, kai žmogus turi idėją, o suprogramuoti per duotą laiką tiesiog nespėja. Na bet čia jau reikia turėti programavimo įgūdžių.

Pascal? WTF?

Anksčiau tai buvo Turbo Pascal, dabar paplitęs Free Pascal. Kam jo iš viso reikia? Juk realiam gyvenime, rimtose firmose, juo praktiškai niekas neprogramuoja. Na čia yra keletas priežasčių:
1. Pascal yra lengvai mokyklose diegiama sistema. Ji neryja resursų, veikia praktiškai bet kokiame kompiuteryje bei yra nemokama. Taigi čia vienas iš būdų “standartizuoti” programavimo įrankius mokyklose.
2. Pascal yra bene lengviausiai išmokstama programavimo kalba. Čia, be abejo, galima ginčytis, tačiau moksleiviams skaityti pusiau anglišką Pascal kalbos tekstą yra lengviau, negu pvz C++ kodą su visokiais { ir } arba tuo labiau kokį objektinio programavimo kodą. Be to, Pascal yra daugiau ne programavimo, o algoritmavimo kalba, t.y. su ja išmokstama savo programos idėja užrašyti ekrane.

Be abejo, galima paieškoti alternatyvų. Jų yra – leidžiama mokiniams olimpiadų metu programuoti ir C ar C++ kalbomis, tačiau nemanau, kad daug moksleivių yra įgudę tiek, kad išmoktų kalbos, kurios mokykloje nemokina. Kita vertus, jei nori ko nors išmokti – internete dabar gausybė medžiagos. Tokiems savamoksliams jaučiu didžiulę pagarbą. Bet Pascal kalbos esmė ir yra išmokti savo idėją paversti programos kodu, po Pascal kitos programavimo kalbos įkandamos daug lengviau, nes pagrindai jau yra.

Ir vis dėlto: kas iš tų olimpiadų

Pats kažkada dalyvavau informatikos olimpiadose nuo kažkur 9 klasės. Būdamas 11 klasėj, berods buvau nuėjęs iki 3 turo, nors bijau dabar sumeluoti, nepamenu tiksliai. Tačiau esmė, kad olimpiadų praktikos turėjau. Ir kokia prasmė buvo ten dalyvauti? Na visų pirma, tada man buvo svarbu tai, kad olimpiadų prizininkai turi papildomų balų stojant į universitetą. Nors realiai grynai prizinės vietos taip ir nepasiekiau, tačiau įgavau neįkainuojamos patirties.

Įsivaizduokite situaciją: jūs gaunate olimpiados uždavinį, kurį matote pirmą kartą gyvenime. Ir turite tarkime per 2 valandas ne tik perprasti uždavinį, įsigilinti į jį, bet ir sumodeliuoti situaciją, plius dar parašyti programą. Ir viso to reikia staigiai, dabar. Kaip parodė mano olimpiadų praktika, ten kiekviena minutė yra svarbi, nes po to galiausiai gali tiesiog nespėti. Bet per tas dvi valandas tu dažniausiai tiesiog mąstai, mąstai ir dar kartą mąstai. Na ir plius dar savo mintis paverti į programos kodą.

Įsivaizduokite kitą situaciją: jūs dirbate programuotoju rimtoje kompanijoje prie buhalterinės apskaitos programos. Pas jus atbėga projekto vadovė ir sako: “Klausyk, prezidentas ką tik pasirašė įstatymą, pagal kurį pasikeičia PVM dydis ir kai kurie kiti parametrai. Reikia staigiai padaryti pakeitimus visoje programoje, ir būk atsargus, kad nieko nesugadintum. Turime keletą valandų.” Argi situacija nepanaši į olimpiados uždavinį?

Ką aš noriu visu tuo pasakyti. Informatikos olimpiada, jei į ją žiūrėti tik iš požiūrio “na jei reikia – sudalyvausiu”, yra iš tikro nuobodus dalykas. Tačiau jei mokinys jaučia, kad programavimas yra jo pašaukimas, ar jis bent nori pabandyti save programavimo pasaulyje, būtent olimpiadose jis įgaus didžiulės patirties, pajaus “darbo įtemptu režimu” dvasią ir sugebės greitai orientuotis situacijoje, o būtent to reikia realiam programavimo darbe. Kitaip tariant, tos olimpiados išmokina mąstyti.

* * *
Norite gauti Skaitykit.lt naujienas operatyviau? Prenumeruokite RSS įrašus
Jei nežinote, kas yra RSS ir kaip juo naudotis, apie tai galima pasiskaityti šiame puslapyje.

Komentarų: 11

    Paulius:
    February 26, 2009 4:44 pm

    Šaunu :) . Ir aš sudalyvavau jau šįmet, nes esu devintokas. Nors, III turo I dalyje ir “smigau” :( . 14-as tarp grupės arba 12-as tarp devintokų. Šansų pakliūt nelabai daug, bet išlieka.

    Kokia nauda? Tai, kad matai situaciją, kiek sugebi mąstyti per tam tikrą duotą laiką. Ne kaip aš, namie sugebėjau išspręsti kitą uždavinį tiesiog gulėdamas ir “šovė mintis”. Vat dėl to ir praradau daug taškų, nes vieno net nepateikiau. Ir ką? Jaudulys, ne sava aplinka prie to ir priveda. Nesusikaupiau dar.. Neišsimiegojau. Ir ate.

    Ir šiaip, dalyvaujant olimpiadose, įgauni neįkanojamą patirtį, o gal net balų stojant.

    Karvė:
    February 26, 2009 5:14 pm

    Realaus pasaulio pvz su buhalterijos programos kūrimu nelabai turi ką bendro su informatikos olimpiadų uždaviniais. Kaip pakeisti svarbų elementą nesugriaunant sistemos – čia yra architektūros darbas, jei tinkamai bus parinkta architektūra nuo pradžių, pakeisi per kelias minutes, jei būsi grybo pripjovęs – dar po savaitės pasekmes jausi…

    Timerider:
    February 26, 2009 5:20 pm

    2 Karvė: Aš nesakiau kad tai tas pats, bet čia pvz, parodantis, kad informatikos olimpiados padeda greitai orientuotis priimant svarbius sprendimus

    Tomas Markauskas:
    February 26, 2009 6:09 pm

    Dalyvavau pats tose olimpiadose, bet realiai paskalio nemokėjau, tad kažkuriam ten ture galiausiai pristigo jo žinių, kad kažką teisingai suprogramuot ir visą laiką iššvaisčiau spėliodamas paskalio struktūros elementus…

    Pritariu karvei, viskas priklauso nuo architektūros, o architektūrai olimpiadose tiesiog per mažai laiko. Greitai priimti svarbūs sprendimai veda tik prie labai prastos architektūros. Gerai kai olimpiadoje sukurta programa rašoma tik dvi valandas, po to patikrinama ir niekada daugiau nebenaudojama, tačiau kuriant bent kiek rimtesnį projektą pirmą dieną išvis geriau net nepradėti jokio kodo rašyt…

    Timerider:
    February 26, 2009 6:24 pm

    Na ok, galbūt netinkamą pavyzdį daviau. Bet mano programuotojo praktikoje dažnai pasitaikydavo atveju, kai kažką suprogramuoti reikėjo dabar, staigiai, nedelsiant, kitaip prarandamas pelnas arba stipriai nukenčia klientai. Kalbant apie architektūrą – taip, aš suprantu, kad prieš patį programavimą turi būti sudarytas planas, schemos ir t.t. Bet tai idealiu atveju, kai yra laiko. O kai jo tiesiog fiziškai nėra?

    Blynas:
    February 26, 2009 6:25 pm

    Dar veinas dalykas, dėl ko Pascal – nereikia mokyti mokytojų :)

    Timerider:
    February 26, 2009 6:26 pm

    Blynas, good point :)

    Blogorama #533 : nežinau.lt:
    February 26, 2009 8:59 pm

    [...] Faktas, kad ir „blogi“ mokiniai gyvenime randa savo kelią, tik gal sunkiau. Mokslams reikia pozityvaus nusiteikimo ir supratingų pedagogų. Tuomet gal ir mes kada turėsime savo [...]

    Ratas:
    February 27, 2009 1:35 am

    Iki šios dienos programuoju objektiniu paskaliu (Delphi) ir nematau vargo. O visi kas programina C ir C++ mano darbais stebisi. Nereikia čia varyti ant paskalio.

    Timerider:
    February 27, 2009 10:28 am

    Ratui: ar aš sakiau ką nors apie Delphi? Pats programavau juo praktiškai tris metus ir buvo gerai. Objektinis paskalis yra tikrai ne tas pats kaip Free Paskalis mokyklose.

    mmm:
    March 8, 2009 9:36 pm

    Geras straipsnis.
    Pascalis yra tikrai puiki mokymo priemone, todel mokiniams nepatariu i ji spjauti.

    Ir netiesa kad tai neduos naudos ateity, jei mokesi algoritmuot, galesi tai taikyt bet kokioje kalboje su kuria dirbsi ateity.

    Duomenu rikiavimai, perrinkimai, rekursijos – visa tai privalu moket net ir pradedanciam web programuotojui, o Pascalis mokykloje sitiems igudziams labai tinka.

Parašykite komentarą


Powered by WordPress | Designed by: BlueHost Coupon | Compare CD Rates, Online Brokers and Press Release