Programavimo pamokėlės

pamokelesm

Mokymų ciklas „Programavimo pamokėlės" skirtos visiems, kurie nori išmokti programuoti.

IT galvosūkiai

itgalvosukiai

Konkurso tikslas – skatinti moksleivius domėtis IT sprendžiant įvairiausius galvosūkius.

Informikas

informikasm

Konkurso tikslas – supažindinti moksleivius su menu informacinėse technologijose ir mūsų talismanu.

Dr. J. P. Kazicko konkursai

kkonkursai

Žemaitijos, Aukštaitijos, Suvalkijos ir Dzūkijos regionuose vykdomas IT konkursas.

       

2014 metų konkurso nugalėtojai:

I vieta. Gytis Vinclovas iš Vilniaus Vytauto Didžiojo gimnazijos.

II vieta. Benediktas Cicėnas iš Giedraičių Antano Jaroševičiaus vidurinės mokyklos.

III vieta. Domantas Jadenkus iš Grigiškių Šviesos gimnazijos.

IV vieta. Saulius Vainauskas iš Vilkaviškio Aušros gimnazijos.

V vieta. Viktorija Lukošiūtė (Kėdainių Šviesioji gimnazija), Ignas Kancleris (Vilniaus Licėjus) ir Paulius Balsys (Joniškio „Aušros“ gimnazija).

VI vieta. Rimantė Grumadaitė ir Justina Kundrotaitė (Kauno J.Dobkevičiaus vidurinė mokykla).

Taigi, pagrindinis prizas atitenka praeitų metų nugalėtojui Gyčiui Vinclovui! Sveikiname!

Konkurso draugai

  • programinę įrangą skaitmeninei reklamai kurianti kompanija „Adform"
  • technologinius sprendimus reklamos ir kūrybinėms agentūroms, asociacijoms siūlanti, turinio valdymo sistemas diegianti, el. komercijos sprendimus įgyvendinanti bendrovė „DevBridge"
  • kanceliarinėmis prekėmis jaunimui prekiaujanti ir inovatyvius efektyvius reklamos sprendimus teikianti įmonė „Realister"
  • mokslo ir žinių populiarinimo svetainė ArZinai.lt

Uždaviniai

Šių metų konkurse sprendėte uždavinius, susijusius su saityno technologijomis, grafikos apdorojimu, kriptografija, steganografija ir tiesiog galvosūkiais :) Daugelį uždavinių buvo galima išspręsti net nenaudojant programavimo priemonių. Kita vertus, kai kurie uždaviniai bendru atveju yra sudėtingi ir norint juos spręsti reikia taikyti efektyvius algoritmus. Paprastai mes pateikdavome savo vertinimus ir įžvalgas, tačiau šį kartą nusprendėme pasiremti konkurso dalyvių samprotavimais ir apžvelgti įdomesnius uždavinius bei jų sprendimus. 

Pirmoji užduotis nebuvo sudėtinga. Reikėjo nustatyti, kokioje sistemoje užrašyti skaičiai tenkinant lygybę. Tai padarė daugelis moksleivių, pateikę savo sukurtas programas (C++, Pascal, Javascript kalbomis), skaičiuoklės sprendimus ar tiesiog atradę atsakymą pasinaudodami skaičiuotuvu.

Antroji užduotis buvo skirta saityno sistemų žinovams. Iš ankstesnių užduočių nemažai kas žinojo, kad puslapių nuorodos yra aprašomos sitemap.xml faile. Sprendėjus galbūt kiek supainiojo tai, kad duotoje svetainėje šis failas pavadintas kitaip (Xml_sitemap.xml) ir norint jį rasti reikėjo pažiūrėti į paieškos sistemoms skirtą valdymo failą robots.txt. Norėdami suskaičiuoti nuorodas moksleiviai pateikė programas parašytas PHP bei C# kalbomis, kurios nuotoliniu būdu nuskaitydavo nuorodų aprašymo failus ir juos išanalizuodavo.

Trečioji užduotis - kūrybinė užduotis, kurią sprendžiant reikėjo pademonstruoti bendrą dizaino suvokimą bei grafinių programų naudojimo įgūdžius. Kai kas sprendė šią užduotį parašydami savo programą, kuri programiniu būdu uždėdavo užrašą ant žiedo paveikslo. Žemiau dėl vietos stokos pateikti tik trys žiedo graviūros variantai (Vinclovo, VIlkausko ir Cicėno), tačiau buvo ir kitų įdomių sprendimų.

ziedasInformikas

Ketvirta užduotis nebuvo sudėtinga ir nemažai sprendėjų teisingai nustatė paveikslų eiliškumą, tačiau tik Domantas Jadenkus suprato, kad šiame paveiksle yra pateikta stereoskopinė, vadinamoji -  "3D" nuotrauka. Ši, erdvinį vaizdą perteikianti nuotrauka pateikta side-by-side režimu, kai kairei ir dešinei akiai skirtos nuotraukos pateikiamos greta. Jei turite "3D televizorių", tuomet sulipdykite šias nuotraukas į vieną ir pažiūrėkite nurodytu režimu. Štai kaip sprendimą aprašo Domantas, kuris siūlo dar vieną būdą erdvinio vaizdo peržiūrai:

Atstumus galima nustatyti del parallax efekto. Kamerai ar akiai pasislinkus i šona, visi matomi objektai vaizde pasislenka i kita puse, o tolesni objektai pasislenka mažiau nei atrtimesni. Duotose nuotraukose labiausiai pasislenka mažiausias paveikslas - jis yra arciausiai (išmatavau tiesiog atsidares paveiksliuka su paint). Mažiau pasislenka didžiausias - jis yra antras. Sekantis eina esantis i kaire nuo didžiausio, ir aukštai esantis yra paskutinis.

Yra ir idomesniu budu tai nustatyti. Kadangi turejau raudonai žalius akinius, pasirašiau programa, kuri paveiksliukus nupiešia viena ant kito, pusiau permatomus ir viena nudažyta žaliai o kita raudonai, kad su akiniais matytusi 3D vaizdas. Kitas budas - susideti juos viena šalia kito (kairei akiai dešineje, dešinei - kaireje) ir žvairuoti i ekrana. Man paciam nelabai pavyko tai padaryti, nes niekaip nesugebejau ižiureti ryškaus vaizdo, bet tetis pažiurejes pasake, kad jam labai gerai matosi :)

Penkta užduotis susijusi su steganografija, tai yra mokslu, kuris nagrinėja informacijos paslėpimo būdus. Nuotraukoje buvo paslėptas garso įrašas (mp3 failas), kurį paklausius galima nustatyti labai populiarią klasikinę melodiją ("Elizai"). Priklausomai nuo jūsų operacinėje sistemoje įdiegtų garso įrašų grojimo programų gali pakakti pervardinti duoto paveiksliuko plėtinį į .mp3 ir pervardintą failą pagroti :)

Šeštoji užduotis - paprastas galvosūkis skirtas tuo metu INFOSHOW renginiui. Susieti uždavinį su šiuo renginiu - Informiko idėja, kuria jis pasidalino ištikus uždavinių idėjų badui :) Daugelis suprato, kad tai yra ASCII koduotės skaičiai, o iš gautų raidžių nesunkiai atspėjo ir tekstą. Tiesa, niekas nepažvelgė į šį uždavinį giliau ir nepaaiškino, ką reiktų daryti, jei atsakymas nebūtų toks akivaizdus. Pasidomėkite - galbūt kitais metais pateiksime su tuo susijusių uždavinių.

Septintoji užduotis susijusi su elektroniniu saugumu (tuo pačiu ir elektronine komercija) bei matematika, kuria paremti kriptografiniai sprendimai užtikrinantys saugumą. Viskas paremta tuo, kad turinti dviejų didelių pirminių skaičių sandaugą labai sunku nustatyti tuos pirminius skaičius. Daugelis šį uždavinį sprendė paprasto perrinkimo būdu (vadinamuoju "grubios jėgos" metodu). Kadangi tokiu metodu neįmanoma surasti daugiklius visiems duotiems skaičiams, likusius moksleiviai rado panaudodami kitų sukurtus įrankius (pvz. matematikos paketą wolframalfa).

Aštuntoji užduotis skirta Šv. Vėlykoms ir savo idėja ji tikrai atitinka pateiktą mįslę: Pramušiau ledą – radau sidabrą, pramušiau sidabrą – radau auksą. Kas? :) Vieni įveikė daugiau, kiti - mažiau, tačiau mes tikimės, jog buvo smagu spręsti šį uždavinį. Štai ką rašo Gytis:

Šią užduotį spręsti padėjo įrankis kurį jau yra tekę seniau panaudoti: http://mark0.net/onlinetrid.aspx

Visi failai xxx* yra zip failai išskyrus xxx1.jpg, kuris yra sprendimas užduoties, todėl nereikės kartotis aprašyme.

9 žingsnis:
Viskas paprasta puslapis parodo, kad failas yra zip.

8 žingsnis:
Sistema parodo, kad xxx yra zip, o yyy8 yra txt, jame yra slaptažodis: Azina

7 žingsnis:
Sistema parodo, kad yyy yra html failas, jame yra canvas su užrašu KTU

6 žingsnis:
Sistema parodo, kad failas yra textinis, atsidaręs pamačia Javascript, todėl susikūriau html elementą, kad paleist skriptą. Kodas: Zalgiris.

5 žingsnis:
Sistema parodo, kad failas yra docx tipo. Kodas: Perkunas

4 žingsnis:
Sistema parodo, kad failas yra svg tipo. Kodas Informikas.

3 žingsnis:
Šį kartą sistema neparodo kažko aiškaus, todėl susijaudinęs bandau atsidaryti per skirtingas sistemos sąraše pateiktas programas. Išbandęs vieną nusprendžiau pasižiūrėti į failą kaip į txt failą. Žiūrėdamas į nieko nereiškiančias eilutes pamačiau užrašą LAME 3.93 . Patikrinau, tai buvo įrankis skirtas darbui su mp3. Nieko nelaukęs pabandžiau pasikeisti failo plėtinį į mp3 ir išgirdau kodą Kaunas.

2 žingsnis:
Patikrinu, zipinis failas, jį atsidarau.

1 žingsnis:
Randu, kad nuotrauka yra jpeg, mįslė išspręsta.

Užduotis buvo labai smagi, pakėlė nuotaiką prieš pat Velykas.

 

Devintojoje užduotyje susipažinote su simetrinio šifravimo algortimu (DES) bei simetrinio šifravimo režimais. Paragavote kriptoanalitikų arba - kodų laužytojų duonos. Ar skani? :) Sprendimo idėja labai paprasta - pasinaudoti panaudoti tuo ECB režimo trūkumu, kad vienodi teksto gabaliukai užšifruojami tuo pačiu kodu. Dėl to, norint pakenkti net nebūtina žinoti slaptažodį - tereikia perimti tekstus ir perstumdyti užšifruotus blokus. Šį uždavinį išsprendė tik trys moksleiviai.

Dešimtoji užduotis skirta atsipalaidavimui. Čia panaudota viena iš ezoterinių programavimo kalbų. Tai tokios programavimo kalbos, kurios skirtos parodyti programavimo kalbos idėją, tačiau praktiškai sunkiai pritaikomos. Kai kas šią užduotį išsprendė ir neatradęs programavimo kalbos, nes nesunkiai suprato, kad čia vėlgi panaudotas ASCII kodas.

Na ir paskutinioji, vienuolikta užduotis skirta susipažinti su programų narstymo įrankiais ;) Užduotį buvo galima išspręsti keliais būdais: perrinkti visus galimus variantus (256, nes trūksta dviejų šešioliktainės sistemos skaitmenų), tekstiniame režime peržiūrėti failą, dekopiliuoti programą ir išnagrinėti asemblerinį kodą. Įdomiausias žinoma - paskutinis variantas. Taip ir padarė Gytis:

Radau puikų tutorial:
https://www.youtube.com/watch?v=3G2F4uFE13o

Pirmiausia atsisiunčiau Win32DSM. Paleidau programą, kad disasemblintų programą.

Kiekvieną kartą vedant kodą išmeta lentelę: "Raktas neteisingas". Todėl suradau vietą, kuri išmeta lentelę su užrašu Raktas neteisingas.

:00452262 BAF4224500 mov edx, 004522F4
Programa atvaizduoja string žmogui lengvai įskaitomu tekstu, todėl surasti buvo nesunku. Tuomet logiška tikrinti kažkur šalia, tikintis rasti vietą, kur tikrina kodą. Vos keliomis eilutėmis auksčiau buvo šis kodas:

* Possible StringData Ref from Code Obj ->"E2B9C"
: 004521E7 BAA4224500 mov edx, 004522A4

* Possible StringData Ref from Code Obj ->"8D1A6"
: 00452204 BAB4224500 mov edx, 004522B4

* Possible StringData Ref from Code Obj ->"F5C9B"
: 00452221 BAC4224500 mov edx, 004522C4

* Possible StringData Ref from Code Obj ->"0D1F3"
: 0045223E BAD4224500 mov edx, 004522D4

Iš pasiūlytų tekstų galime sudėti reikalingą kodą.

Paskutinio uždavinio aprašu ir pabaigsime šį konkursą. Tikimės, jog jums patiko spręsti bent dalį šių uždavinių. Jų kūrėjai įdeda daug širdies, todėl nėra nieko smagiau, kaip sulaukti jūsų komentarų apie uždavinius. Linkime sėkmės ir iki kitų susitikimų!

Į viršų