Programovanie (1) v C/C++
1-INF-127, ZS 2024/25

Úvod · Pravidlá · Prednášky · Softvér · Testovač
· Kontaktujte nás pomocou e-mailovej adresy E-prg.png (bude odpovedať ten z nás, kto má príslušnú otázku na starosti alebo kto má práve čas).
· Prosíme študentov, aby si pravidelne čítali e-maily na @uniba.sk adrese alebo aby si tieto emaily preposielali na adresu, ktorú pravidelne čítajú.


Zimný semester, skúška: Rozdiel medzi revíziami

Z Programovanie
Skočit na navigaci Skočit na vyhledávání
Riadok 24: Riadok 24:
 
==Praktická skúška==
 
==Praktická skúška==
  
* 2 hodiny práca pri počítači, online alebo v halách H3, H6, podľa aktuálnych opatrení
+
* 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. Príkazy, ktoré si nepamätáte, si napíšte na "ťahák".
+
* Odporúčame používať iba tie časti jazyka, s ktorými máte dostatočné skúsenosti.
 
 
===Pravidlá pre skúšku online===
 
 
 
* Počas skúšky máte byť pripojení cez MS Teams pre prípad oznamov, mikrofón a kameru nechajte vypnuté.
 
* Ak máte otázku, zdvihnite ruku, podobne ako cez cvičenia, spojíme sa s vami súkromným hovorom
 
* Počas skúšky vás môžeme kontaktovať súkromným hovorom, počas ktorého máte zapnúť kameru, na požiadanie zdieľať obrazovku a ukázať nám, aké programy pri práci používate.
 
 
 
Povolené pomôcky
 
* Papier a písacie potreby (ak máte tlačiareň, môžete si aj vytlačiť zadanie)
 
* Ľubovoľné papierové materiály (poznámky, knihy)
 
* Stránka predmetu (poznámky z prednášok)
 
* Testovač na sťahovanie zadaní a poskytnutých súborov, odovzdávanie riešení
 
* MS Teams na komunikáciu s vyučujúcimi
 
* Bežné programátorské prostredie na vašom počítači: editory (napr. Kate), kompilátory (napr. gcc), debuggery, valgrind/Dr.Memory, integrované nástroje ako Netbeans, Eclipse, Code::Blocks, CLion, Dev-C++, Microsoft Visual Studio a pod.
 
 
 
Zakázané pomôcky
 
* Iné webstránky okrem vyššie uvedených
 
* Komunikovanie s inými osobami než vyučujúcimi
 
* Zdieľanie svojho kódu s inými osobami (ručne alebo prostredníctvom funkcií programátorského prostredia)
 
* Webové programátorské prostredia
 
 
 
Odovzdávanie riešenia
 
* Počas skúšky máte povinnosť každých cca 15 minút odovzdať na testovač program, na ktorom práve pracujete, aj keď ešte nie je hotový
 
* Bude to prebiehať tak, že vždy po 15 minútach vás upozorníme cez MS Teams. Ak ste počas posledných 5 minút pred upozornením program odovzdali, nemusíte robiť nič. Ak nie, mali by ste program odovzdať v najbližších 5 minútach.
 
* Ak práve nemáte rozpísaný program (čítate zadanie / rozmýšľate), napíšte niečo typu "rozmyslam" do okienka na odovzdanie programu a odošlite.
 
 
 
===Pravidlá pre skúšku v hale===
 
 
* 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 si priniesť a používať ľubovoľné papierové materiály, nesmiete ich však počas skúšky zdieľať so spolužiakmi. Môže sa hodiť aj pero na poznámky.
+
** 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.

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.