Vyšší odborná škola a Střední průmyslová škola, Jičín, Pod Koželuhy 100

Krajské kolo Soutěže v programování

V sobotu 22. dubna 2023 jsme se po delší době opět zúčastnili krajského kola Soutěže v programování, které se uskutečnilo v Hradci Králové. Bohužel kvůli sobotnímu termínu, kdy se mj. navíc v Hradci Králové konal vyhlášený Majáles, se soutěže nakonec z naší školy zúčastnili pouze 3 žáci. Konkrétně se soutěže účastnili Ondřej Švorc a Jiří Navrátil z třídy I4B a Kryštof Felenda ze třídy I3A. Další potenciální zájemci o účast v soutěži se účastnili právě hudební akce. Žáci měli možnost navázat na úspěchy svých předchůdců, protože v minulosti se nám v této soutěži poměrně dařilo. Oproti minulosti, kdy se pořádala i kategorie zabývající se webovými technologiemi, se v letošním roce uskutečnily pouze dvě kategorie, kdy naši žáci programovali v kategorii Programování mládež.

Za úkol měli soutěžící naprogramovat 4 úlohy za dobu 4 hodin (od 10 do 14 hodin). I přes velmi příznivé teplé a slunečné počasí se soutěže z kraje zúčastnilo celkem 33 programátorů, což je z historického pohledu nejspíše účastnický rekord. Účastníci si mohli vybrat programovací jazyk, ve kterém dané úlohy naprogramují. Tematicky se jednalo o následující úlohy: bludiště, kalkulačka i se zlomky, mini puzzle a tetris. Naprogramování úloh a úspěch v soutěži záležely na správném rozvržení času při programování. K dispozici byly na místě počítače, kdy některé, jejichž datum výroby již něco pamatovalo, nebyly bohužel z pochopitelných důvodů pro tuto soutěž ideální. Soutěžící kvůli technickým problémům (např. několikáté vypadnutí prohlížeče, sestavení aplikace dvakrát, velmi dlouhé doby kompilování) mohli ztratit drahocenný čas. Navíc „na některých PC byl Windows 7, který se sekal už při pohybu kurzoru, na některých zase Windows 10, proto mi nepřijde, že soutěž zařídila rovné hardwarové podmínky pro všechny“. I když to nemusí být na první pohled patrné, celkově úlohy byly na požadovaný čas složité. I když je soutěž velice zajímavá se zajímavými úlohami a soutěžící si mohou poměřit svoje schopnosti, dovednosti a znalosti s ostatními soutěžícími, přesto se najdou v soutěži další slabší místa.

Naši reprezentanti se např. shodli, že „spíše jde o to, co nejvíce úloh vypracovat, i kdyby nebyly funkční nebo efektivně naprogramované“. „Lepší strategie byla udělat od všeho kus, aby u každé úlohy alespoň něco fungovalo, tak se daly nejlepším způsobem nasbírat body.“ K tomu Ondřej Švorc uvádí, že „nicméně, já jsem zvolil taktiku, že udělám raději méně úloh a pořádně, než všechny, ale aby nebyly dodělané. Nejspíš to byla chyba.“ Chyba to byla asi s ohledem na celkové umístění, ale někdy je těžké přepnout do soutěžního módu, který je omezený časem, když mají programátoři některé zásady jinak zažité. K lepšímu umístění by podle Ondřeje Švorce mohlo vést „udělat od všeho raději kus, než se snažit mít všechno dokonalé, hodnotila se funkčnost dílčích částí, za které šlo nasbírat hodně bodů, proto je lepší dělat ty, ne dělat úlohu jako celek. K tomu se člověk může později vrátit, když bude mít čas.“ A v neposlední řadě „důležité je asi trénovat rychlé vymýšlení rychlého, ale za to dobrého řešení“. K rozdílnosti soutěže a způsobu programování v praxi lze ještě podle Ondřeje Švorce dodat, že „zákaz některých knihoven vytvořených ideálně pro nějaký případ (protože knihovny lidé při běžné práci nepoužívají?) – opět analogie s firmou: je nesmyslné tzv. “reinvent the wheel”, kdy budeme psát hromadu kódu pro věc, kterou už vyřešila mnohem lépe skupina lidí a toto řešení zaobalila v knihovně. Lepší by bylo testovat, jestli člověk umí zvolit správnou knihovnu a tu dobře zapouzdřit v nějaké námi vytvořené třídě a používat ji interně v programu – to se pak ve firmách reálně dělá.“

Co by měli žáci umět, pokud se budou chtít zúčastnit podobného typu soutěže, aby uspěli? K lepšímu umístění je samozřejmě dobré hospodaření s časem a dále to může být např. „komentování kódu, dobré návyky při psaní proměnných, rekurze/iterace, ovládací prvek Timer, ovládání objektů pomocí kláves, kolize mezi objekty.“ S řadou těchto problémů se žáci seznámí při studiu na naší škole v různých předmětech.

Jak ale celkově celá soutěž dopadla? Z žáků naší školy se nejlépe umístil Kryštof Felenda na skvělém 5. místě z 33 programátorů. Kryštof v soutěži uspěl i z důvodu, že u každé úlohy měl vypracovanou alespoň část řešení. K postupu do ústředního kola je nutné, aby programátoři v jednotlivých krajích (soutěž je celorepubliková), dosáhli určitého počtu bodů. V kraji tolik nezáleží na pořadí, ale na počtu získaných bodů. Jestli se Kryštof nakonec do ústředního kola probojuje nebo ne, ještě není známo. Bohužel Kryštof nestihl těsně dokončit jednu úlohu. V opačném případě, podle jeho slov, by mohl být i na 4. místě. Ondřej Švorc se umístil na celkovém 18. místě a Jiří Navrátil obsadil 20. místo. I když si třeba kluci představovali lepší umístění, určitě se nemají za co stydět.

Výsledková listina je k dispozici na adrese: https://www.barak.cz/hlavni-udalosti/29-krajske-kolo-souteze-v-programovani.

Všem našim žákům děkuji za vzornou reprezentaci školy, kdy žádný rozhodně nezklamal a umístění Kryštofa může být výzva i pro jiné žáky z naší školy, aby se podobné soutěže v budoucnosti zúčastnili a skvělé Kryštofovo umístění ještě zlepšili.

Ondřej Kořínek