Programovanie (1) v C/C++
1-INF-127, ZS 2024/25
Zimný semester, skúška: Rozdiel medzi revíziami
Riadok 24: | Riadok 24: | ||
==Praktická skúška== | ==Praktická skúška== | ||
− | * 2 hodiny práca pri počítači | + | * 2 hodiny práca pri počítači v halách H3, H6 |
* Za určitých okolností môže byť čas '''predĺžený''' o 30 minút, viď pravidlá nižšie | * Za určitých okolností môže byť čas '''predĺžený''' o 30 minút, viď pravidlá nižšie | ||
* Počas skúšky vám nebudeme pomáhať hľadať chyby vo vašom programe. Môžete sa však spýtať na nejasnosti v zadaní. Dajte nám tiež vedieť v prípade technických problémov alebo ak si myslíte, že v zadaní / kostre / vstupoch je chyba. | * Počas skúšky vám nebudeme pomáhať hľadať chyby vo vašom programe. Môžete sa však spýtať na nejasnosti v zadaní. Dajte nám tiež vedieť v prípade technických problémov alebo ak si myslíte, že v zadaní / kostre / vstupoch je chyba. | ||
Riadok 31: | Riadok 31: | ||
* Nebudeme používať SVGdraw | * Nebudeme používať SVGdraw | ||
* Môžete používať aj črty C/C++, ktoré sme nebrali. Používajte len štandardné súčasti jazyka. Vaše programy by mali fungovať na testovači bez zvláštnych nastavení kompilátora a pod. | * Môžete používať aj črty C/C++, ktoré sme nebrali. Používajte len štandardné súčasti jazyka. Vaše programy by mali fungovať na testovači bez zvláštnych nastavení kompilátora a pod. | ||
− | * Odporúčame používať iba tie časti jazyka, s ktorými máte dostatočné skúsenosti. | + | * Odporúčame používať iba tie časti jazyka, s ktorými máte dostatočné skúsenosti. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* Skúška bude v Linuxe, rovnaké prostredie ako na cvičeniach | * Skúška bude v Linuxe, rovnaké prostredie ako na cvičeniach | ||
* Odovzdávanie prostredníctvom špeciálnej verzie testovača | * Odovzdávanie prostredníctvom špeciálnej verzie testovača | ||
Riadok 66: | Riadok 39: | ||
* Pri reštarte počítača sa stratia všetky súbory, používajte testovač ako zálohu (odovzdajte aj nedokončený program) | * Pri reštarte počítača sa stratia všetky súbory, používajte testovač ako zálohu (odovzdajte aj nedokončený program) | ||
* Môžete použiť Kate, valgrind, Netbeans, ale aj iné nástroje, ktoré bežia v Linuxe v učebniach a nepotrebujú internet. Prípadné problémy s použitím iného softvéru vám však nebudeme pomáhať riešiť | * Môžete použiť Kate, valgrind, Netbeans, ale aj iné nástroje, ktoré bežia v Linuxe v učebniach a nepotrebujú internet. Prípadné problémy s použitím iného softvéru vám však nebudeme pomáhať riešiť | ||
− | * Môžete | + | ** Nemôžete použiť online prostredia. |
+ | * Môžete použiť písacie na robenie poznámok (odporúčame). | ||
== Príklady == | == Príklady == |
Verzia zo dňa a času 12:33, 28. november 2022
Odporúčame tiež si preštudovať pravidlá predmetu.
Obsah
Termíny, prihlasovanie
Boli zverejnené predbežné termíny skúšok
- Piatok 16.12. 13:10 v H6 a H3
- Pondelok 9.1. 13:00 v H6 a H3
- Utorok 17.1. 13:00 v H6 a H3, hlavne 1. opravný termín
- Pondelok 30.1. 13:00 v H6, hlavne 2. opravný termín
Ak zistíte konflikt našej skúšky s hromadnou skúškou alebo písomkou iného predmetu, dajte nám vedieť čím skôr. Na poslednú chvíľu už nedokážeme nájsť riešenie. Trvanie skúšky je cca 2,5 hodiny.
Prihlasovanie
- Prihlasovanie je v AIS2/Votr otvorené od stredy 30.11. 20:00
- Na termín sa prihlasujte / odhlasujte najneskôr 24 hodín pred začiatkom termínu.
- Opravnú písomku môžete na tomto predmete písať aj po skúške.
- Celkovo budú iba uvedené štyri termíny. Každý sa môže zúčastniť na najviac troch z nich.
Špeciálne pravidlá pre predtermín
- Ak sa zúčastňujete predtermínu, body za tréningové príklady môžete dostať iba ak ich vyriešite do 16.12. 11:30 (toto neplatí, ak po predtermíne ešte idete na opravný termín skúšky).
Praktická skúška
- 2 hodiny práca pri počítači v halách H3, H6
- Za určitých okolností môže byť čas predĺžený o 30 minút, viď pravidlá nižšie
- Počas skúšky vám nebudeme pomáhať hľadať chyby vo vašom programe. Môžete sa však spýtať na nejasnosti v zadaní. Dajte nám tiež vedieť v prípade technických problémov alebo ak si myslíte, že v zadaní / kostre / vstupoch je chyba.
Ďalšie detaily
- Nebudeme používať SVGdraw
- Môžete používať aj črty C/C++, ktoré sme nebrali. Používajte len štandardné súčasti jazyka. Vaše programy by mali fungovať na testovači bez zvláštnych nastavení kompilátora a pod.
- Odporúčame používať iba tie časti jazyka, s ktorými máte dostatočné skúsenosti.
- Skúška bude v Linuxe, rovnaké prostredie ako na cvičeniach
- Odovzdávanie prostredníctvom špeciálnej verzie testovača
- Okrem testovača nebude k dispozícii internet
- Bude k dispozícii kópia poznámok z predmetu, ktoré vidíte na tejto stránke
- Budete používať špeciálne skúškové konto, takže nebudete mať k dispozícii žiadne svoje súbory alebo nastavenia
- Pri reštarte počítača sa stratia všetky súbory, používajte testovač ako zálohu (odovzdajte aj nedokončený program)
- Môžete použiť Kate, valgrind, Netbeans, ale aj iné nástroje, ktoré bežia v Linuxe v učebniach a nepotrebujú internet. Prípadné problémy s použitím iného softvéru vám však nebudeme pomáhať riešiť
- Nemôžete použiť online prostredia.
- Môžete použiť písacie na robenie poznámok (odporúčame).
Príklady
Na skúške budete riešiť dva príklady za rovnaký počet bodov
Prvý príklad
- V prvom príklade budete mať za úlohu samostatne napísať celý program, ktorý rieši zadanú úlohu. Typicky bude treba načítať dáta, spracovať ich a vypísať výsledok.
- V tomto príklade môžete použiť ľubovoľný postup.
- Budú však zakázané polia pevných veľkostí. Polia alokujte dynamicky cez new, alebo použite štruktúry, ktoré menia veľkosť podľa potreby (napr. string, vector). Alokovanú pamäť odalokujte.
- Predtým ako začnete programovať, si poriadne rozmyslite, aké dátové štruktúry (polia, matice, struct-y a pod.) chcete v programe použiť.
Druhý príklad
- V druhom príklade dostanete kostru programu, pričom vašou úlohou bude doprogramovať niektoré funkcie.
- V tomto príklade môžete mať v zadaní predpísaný spôsob, ako máte niektoré časti naprogramovať.
- Budú sa vyžadovať aj zložitejšie časti učiva, ako napríklad zoznamy, stromy a rekurzia.
Ukážkové príklady
Niektoré ukážkové príklady na skúšku budú k dispozícii na testovači, môžete si ich v rámci tréningu vyriešiť a odovzdať. Pre realistickejší tréning si vždy prečítajte zadanie tesne predtým, ako príklad začnete riešiť, aby ste odhadli, koľko času vám príklad zaberie vrátane čítania zadania a rozmýšľania nad riešením.
Hodnotenie
Aby ste mali šancu úspešne ukončiť predmet, aspoň jeden z príkladov vám musí prejsť všetky testy na testovači
- Túto podmienku nebudeme považovať za splnenú, ak váš program nerieši zadanú úlohu (t.j. jeho myšlienka nie je v zásade správna)
- Podmienku však považujeme za splnenú, ak váš program prejde všetky vstupy, má v zásade správnu myšlienku, ale nedostane plný počet bodov napríklad kvôli chýbajúcemu uvoľneniu pamäte, statickým poliam, menšej chybe, ktorá sa neprejavila na daných vstupoch a pod.
- Dobre si rozmyslite, s ktorým príkladom chcete začať a snažte sa ho dokončiť, kým nedostanete OK na testovači. Potom ho môžete ešte vylepšovať alebo sa snažiť vyriešiť aspoň časť príkladu, ktorý ste ešte neriešili.
Bodové hodnotenie
- V prvom rade budeme hodnotiť správnosť myšlienky vášho programu. Predtým, ako začnete programovať, si dobre prečítajte zadanie a rozmyslite, ako budete úlohu riešiť.
- Ďalej je veľmi dôležité, aby sa program dal skompilovať (v štandardnom prostredí) a aby správne fungoval na všetkých vstupoch spĺňajúcich podmienky v zadaní.
- V druhej úlohe budeme jednotlivé funkcie hodnotiť zvlášť, takže môžete získať čiastočné body, ak ste niekoľko funkcií napísali správne.
- Na hodnotenie môže mať menší vplyv aj úprava a štýl programu (komentáre, mená premenných, odsadzovanie, členenie dlhšieho programu na funkcie,...)
- Na tejto skúške nezáleží na rýchlosti vášho programu (pokiaľ zbehne v časovom limite, ktorý však nie je prísny). Radšej napíšte jednoduchý, prehľadný a hlavne správny pomalší program, než rýchlejší, ale zbytočne zložitý, či nesprávny.
Predĺženie času
- Ak v riadnom čase 2 hodiny nemáte na testovači OK ani z jedného príkladu, zo skúšky by ste mali dostať Fx.
- Dovolíme vám však predĺžiť čas skúšky o najviac 30 minút.
- Ak zostanete na predĺženie, budeme vám rátať do výsledku body iba z jedného príkladu. Konkrétne z toho, za ktorý ste dostali OK na testovači (ak z oboch, tak z toho, za ktorý ste mali OK skôr)
Ústna skúška
- Po skúške vyučujúci skontrolujú vaše programy a potom sa konajú ústne skúšky cez MS Teams
- Na ústnu skúšku môžu ísť iba študenti, ktorí úspešne absolvovali praktickú skúšku aj písomku a majú po ústnej skúške šancu získať známku.
- Ak je praktická skúška doobeda, ústne skúšky budú cca 13:00-19:00. Na tento čas si teda neplánujte iné dôležité termíny. Ak máte v rámci tohto času nejaké vážne prekážky k absolvovaniu ústnej skúšky, upovedomte o tom vyučujúcich vopred pred skúškou.
- Vyučujúci po skúške zverejnia približný rozpis časov ústnych skúšok. V čase uvedenom v rozpise by ste mali byť pripojení na MS Teams, budeme vás kontaktovať súkromným hovorom. Sledujte oznamy na MS Teams, kde zverejníme prípadné zmeny rozpisu, ktoré si vyžiada situácia.
- Ak by nebolo možné všetkých študentov vyskúšať ústne v deň skúšky, s niektorými si dohodneme termín na iný deň.
- Ústna skúška nie je potrebná, ak študent úspešne absolvuje v prezenčnej forme test pre pokročilých (aspoň 50% bodov), semestrálny test alebo praktickú skúšku. Týmto študentom sa semestrálny test započíta s vyššou váhou.
Obsah ústnej skúšky
- Prejdeme cez bodovanie vášho programu a prípadné komentáre
- Budeme sa pýtať otázky k vašim odovzdaným programom zo skúšky. Otázky môžu byť napríklad:
- Vysvetlite niektorú konkrétnu časť vášho kódu
- Navrhnite, ako by ste kód zmenili alebo rozšírili, aby sa správanie programu zmenilo predpísaným spôsobom
- Popíšte, čo by spôsobila určitá konkrétna zmena v programe
- Okrem programov zo skúšky môžeme podobne diskutovať aj o programoch, ktoré ste odovzdali na cvičeniach 8 až 12.
- Počas ústnej skúšky budeme pokiaľ možno zdieľať diskutovaný kód v okne viditeľnom všetkým zúčastneným stranám
- Jedným z cieľov ústnej skúšky je preveriť, či dobre rozumiete učivu a programom, ktoré ste v rámci predmetu odovzdali a či je teda pravdepodobné, že sú vašou vlastnou prácou. Ak vaše odpovede nebudú uspokojivé, neudelíme vám z ústnej skúšky polovicu bodov a teda nemôžete predmet úspešne ukončiť.
Opravné termíny
- Opakovanie praktickej aj ústnej skúšky sa riadi študijným poriadkom fakulty. Máte nárok na dva opravné termíny (ale len v rámci termínov, ktoré sme určili).
- Ak po skúške máte nárok na známku E alebo lepšiu, ale chceli by ste si známku ešte opraviť, musíte sa dohodnúť so skúšajúcimi.
- Ak sa zo závažných dôvodov (napr. zdravotných, alebo konflikt s inou skúškou) nemôžete zúčastniť termínu skúšky alebo písomky, dajte o tom vyučujúcim vedieť čím skôr.