Programovanie (2) v Jave
1-INF-166, letný semester 2023/24

Prednášky · Pravidlá · Softvér · Testovač
· Vyučujúcich predmetu možno kontaktovať mailom na adresách uvedených na hlavnej stránke. Hromadná mailová adresa zo zimného semestra v letnom semestri nefunguje.
· JavaFX: cesta k adresáru lib je v počítačových učebniach /usr/share/openjfx/lib.


Archív

Z Programovanie
Skočit na navigaci Skočit na vyhledávání

Prehľad a obsah

Programovanie (1) v C/C++, zimný semester 2011/12

Týždeň 19.-25.9.
Úvod, použitie grafickej knižnice, premenné, podmienky, cyklus for
#Prednáška 1 · #Prednáška 2 · #Cvičenia 1 · #DÚ1
Týždeň 26.9.-2.10.
Cykly (for, while), Euklidov algoritmus, funkcie
#Prednáška 3 · #Prednáška 4 · #Cvičenia 2 · #DÚ2
Týždeň 3.-9.10.
Polia, Eratostenovo sito, polynómy, triedenia
#Prednáška 5 · #Prednáška 6 · #Cvičenia 3 · #DÚ3
Týždeň 10.-16.10.
Binárne vyhľadávanie, zložitosť, znaky a reťazce
#Prednáška 7 · #Prednáška 8 · #Cvičenia 4 · #DÚ4
Týždeň 17.-23.10.
Súbory
#Prednáška 9 · #Prednáška 10 · #Cvičenia 5 · #DÚ5
Týždeň 24.-30.10.
Smerníky, dvojrozmerné polia
#Prednáška 11 · #Prednáška 12 · #Cvičenia 6 · #DÚ6
Týždeň 31.10.-6.11.
Slovník
#Prednáška 13
Týždeň 7.-13.11.
Rekurzia, backtracking
#Prednáška 14 · #Prednáška 15 · #Cvičenia 7 · #DÚ7
Týždeň 14.-20.11.
Rekurzívne triedenia, ešte backtracking, vyfarbovanie
#Prednáška 16 · #Prednáška 17 · #Cvičenia 8 · #DÚ8
Týždeň 21.-27.11.
Spájané zoznamy, zásobník a rad, odstraňovanie rekurzie
#Prednáška 18 · #Prednáška 19 · #Cvičenia 9 · #DÚ9
Týždeň 28.11.-4.12.
Vyfarbovanie bez rekurzie, aritmetické výrazy, stromy
#Prednáška 20 · #Prednáška 21 · #Cvičenia 10 · #DÚ10
Týždeň 5.-11.12.
Vyhľadávacie a lexikografické stromy
#Prednáška 22 · #Prednáška 23 · #Cvičenia 11 · #DÚ11
Týždeň 12.-18.12.
Zhrnutie, opakovanie, príprava na písomku, ďalšie črty jazykov C a C++
#Prednáška 24 · #Prednáška 25 · #Cvičenia 12

Programovanie (2) v Jave, letný semester 2011/12

Týždeň 13.-19.2.
Úvod do Javy
#Prednáška 26 · #Cvičenia 13 · #DÚ12
Týždeň 20.-26.2.
Úvod do objektovo-orientovaného programovania, JavaDoc
#Prednáška 27 · #Cvičenia 14 · #DÚ13
Týždeň 27.2.-4.3.
Dedenie, polymorfizmus, modifikátory, interface
#Prednáška 28 · #Cvičenia 15
Týždeň 5.-11.3.
Výnimky, generické programovanie
#Prednáška 29 · #Cvičenia 16
Týždeň 12.-18.3.
Collections, testovanie
#Prednáška 30 · #Cvičenia 17 · #DÚ14
Týždeň 19.-25.3.
Opakovanie OOP, úvod k Swingu
#Prednáška 31 · #Cvičenia 18
Týždeň 26.3.-1.4.
Swing (layout, menu, dialog)
#Prednáška 32 · #Cvičenia 19 · #DÚ15
Týždeň 2.-8.4.
Swing (kreslenie)
#Prednáška 33 · #Cvičenia 20 · #DÚ16
Týždeň 9.-15.4.
OOP v C++, intervaly
#Prednáška 34
Týždeň 16.-22.4.
Reprezentácia grafov, prehľadávanie do hĺbky
#Prednáška 35 · #Cvičenia 21
Týždeň 23.-29.4.
#Cvičenia 22
Týždeň 30.4.-6.5.
Prehľadávanie do šírky, najdlhšia cesta, ohodnotené grafy
#Prednáška 36 · #Cvičenia 22
Týždeň 7.-13.5.
Maximálna klika, orientované grafy, topologické triedenie, knižnica na skúšku
#Prednáška 37 · #Cvičenia 23
Týždeň 14.-20.5.
Zhrnutie, opakovanie, príprava na skúšku
#Prednáška 38 · #Cvičenia 24

Zimný semester, úvodné informácie

Základné údaje

Rozvrh

  • Prednášky: pondelok 9:50 F1 a streda 9:50 F1
  • Hlavné cvičenia: utorok 14:50 F2-295 a F1-223
  • Doplnkové cvičenia: piatok 13:10 F2-295

Vyučujú

Konzultácie po dohode e-mailom.

Ak nemáte otázku na konkrétnu osobu, odporúčame vyučujúcich kontaktovať pomocou spoločnej adresy e-mailovej adresy E-prg.png. Odpovie vám ten z nás, kto má na starosti príslušnú otázku alebo kto má práve čas.

Ciele predmetu

  • Naučiť sa algoritmicky uvažovať, písať kratšie programy a hľadať v nich chyby, porozumieť existujúcemu kódu
  • Oboznámiť sa so základnými programovými a dátovými štruktúrami jazyka C resp. C++, nie je však nutne so všetkými črtami týchto jazykov
    • Cykly, podmienky, premenné a ich typy, funkcie a odovzdávanie parametrov, polia, smerníky, reťazce, súbory
  • Oboznámiť sa s niektorými základnými algoritmami a dátovými štruktúrami
    • Triedenia, spájané zoznamy, hašovacie tabuľky, stromy, aritmetické výrazy, rad a zásobník, rekurzia, prehľadávanie, vyfarbovanie
  • Aj štruktúry, ktoré sú hotové v C++ knižniciach, si budeme programovať sami, aby sme videli, čo sa za nimi skrýva

Literatúra

  • Predmet sa nebude striktne riadiť žiadnou učebnicou. Prehľad preberaných tém a stručné poznámky nájdete na stránke predmetu, doporučujeme Vám si na prednáškach a cvičeniach robiť vlastné poznámky.
  • Pri štúdiu Vám môžu pomôcť knihy o jazykoch C a C++, o programovaní všeobecne a o algoritmoch preberaných na prednáške. Tu je výber z vhodných titulov, ktoré sú k dispozícii na prezenčné štúdium vo fakultnej knižnici:
    • Prokop: Algoritmy v jazyku C a C++ praktický pruvodce, Grada 2008, I-INF-P-26
    • Sedgewick: Algorithms in C. Parts 1-4 I-INF-S-43/I-IV
    • Kochan: Programming in C, 2005 D-INF-K-7a
  • Referenčnú príručku k jazyku C++ nájdete napríklad na tejto webstránke: http://cplusplus.com/
  • Môže vás zaujímať aj video prednášok z iných škôl v angličtine

Priebeh semestra

  • Na prednáškach budeme preberať obsah predmetu. Prednášky budú štyri vyučovacie hodiny do týždňa.
  • Hlavné cvičenia budú dve vyučovacie hodiny do týždňa v počítačovej učebni a ich cieľom je aktívne si precvičiť učivo. Hlavnou náplňou cvičenia je riešenie zadaných príkladov. Cvičiaci vám podľa potreby pomôžu a poradia.
  • Príklady z hlavných cvičení, ktoré nestihnete vyriešiť, odporúčame dokončiť doma.
  • Okrem toho sa každý týždeň konajú doplnkové cvičenia (tiež dve vyučovacie hodiny). Sú povinné pre študentov, ktorí mali problémy na cvičeniach v utorok ale radi privítame aj ďalších. Na tomto cvičení s pomocou cvičiacich môžete dokončovať príklady z predchádzajúcich cvičení, pýtať sa otázky k učivu, prípadne pracovať na domácej úlohe.
  • Domáce úlohy budú cca 3 cez semester. Pracujte na nich samostatne doma, prípadne na doplnkových cvičeniach. Nechajte si na ne dosť času, nezačnite tesne pred termínom.
  • Príklady na cvičenia a domáce úlohy navrhujeme tak, aby vám ich riešenie pomohlo precvičiť si učivo, čím sa okrem iného pripravujete aj na záverečnú skúšku. Okrem tohto sú za tieto príklady body do záverečného hodnotenia. Najviac sa naučíte, ak sa vám príklad podarí samostatne vyriešiť, ale ak sa vám to napriek vášmu úsiliu nedarí, neváhajte sa spýtať o pomoc vyučujúcich. Možno s malou radou od nás sa Vám podarí úlohu spraviť.
  • Cieľom vyučujúcich tohto predmetu je vás čo najviac naučiť, ale musíte aj vy byť aktívni partneri. Ak vám na prednáške alebo cvičení nie je niečo jasné, spýtajte sa. V prípade problémov odporúčame navštíviť doplnkové cvičenia, alebo si dohodnúť konzultáciu. Môžete nám klásť tiež otázky emailom. Ak sa dostanete do väčších problémov s plnením študijných povinností, poraďte sa s vyučujúcimi alebo s tútorom, ako tieto problémy riešiť.

Dištančná výučba

  • Dúfame, že celý semester sa bude konať prezenčne, môže sa ale stať, že výučba bude presunutá online
  • V tom prípade budú prednášky aj cvičenia v systéme MS Teams
  • Videá niektorých prednášok z minulého roku sú k dispozícii, takisto poznámky k prednáškam sú na stránke
  • Pokyny k použitiu MS Teams nájdete na zvláštnej stránke

Celkové odporúčania

Prichádzajúci študenti v prvom ročníku majú veľmi rôznu úroveň znalosti programovania, v závislosti od toho, koľko sa mu venovali na strednej škole. Preto pre niektorých môže byť tento predmet veľmi ľahký, pre iných veľmi ťažký. Môže sa to zdať nespravodlivé, ale pokročilí študenti už nad programovaním strávili dlhé hodiny a začiatočníci ich bez určitej námahy nedobehnú. Veľmi radi vám však pomôžeme prekonať nástrahy tohto predmetu. Tu sú naše odporúčania podľa toho, aké znalosti už máte na začiatku semestra. Učebnú látku možno zhruba rozdeliť na základné programovacie konštrukty jazyka C resp. C++ a základné algoritmy, ktoré sa budú počas semestra striedať.

Úroveň znalostí Náročnosť látky: základy programovania v C Náročnosť látky: algoritmy, rekurzia Odporúčanie
Programovať viem len málo alebo vôbec ťažké ťažké Dôležité je začať usilovne pracovať už od začiatku semestra. Odporúčame chodiť aj na doplnkové cvičenia, ďalšie príklady riešiť doma. Neváhajte sa nás spýtať, ak vám niečo nie je jasné.
Som skúsený programátor, ale neovládam C ani C++ ľahké ťažké Aj keď prvé prednášky sa vám môžu zdať ľahké, sledujte učebnú látku, aby sa nestalo, že ste sa niektorými dôležitými vecami ešte nestretli. Nezabudnite riešiť príklady z cvičení a domáce úlohy. Hlavne ale nezaspite na vavrínoch: už po pár týždňoch začneme preberať algoritmy a rekurziu, čo môžu byť pre vás ťažšie témy. Treba preto zamakať aj na tomto predmete a v prípade, že Vám učivo robí problémy, neváhajte prísť na doplnkové cvičenia.
Som skúsený programátor a ovládam C alebo C++ viem ťažké Podobne ako predchádzajúci riadok. Môžete si prípadne skúsiť napísať test pre pokročilých, môže sa vám podariť preskočiť zopár cvičení.
Som skúsený programátor a ovládam aj rekurziu a základné algoritmy (napr. z programátorských súťaží alebo rozšírenej výučby programovania na strednej škole) ľahké/viem ľahké/viem Aby ste sa nenudili riešením ľahkých príkladov, odporúčame test pre pokročilých. Aj tak však potrebujte odovzdať domáce úlohy a absolvovať skúšku, prípadne aj semestrálny test. Priebežne sledujte učivo a v prípade nejasností sa pýtajte.

Zimný semester, pravidlá

Známkovanie

  • 25% známky je na základe príkladov z cvičení
  • 15% známky je za domáce úlohy
  • 30% známky je za semestrálny test
  • 30% známky je za praktickú skúšku

Pozor, body získavané za jednotlivé príklady nezodpovedajú priamo percentám záverečnej známky. Body za každú formu známkovania sa preváhujú tak, aby maximálny získateľný počet zodpovedal váham uvedených vyššie. Úlohy označené ako bonusové sa nerátajú do maximálneho počtu získateľných bodov v danej aktivite.

Ak by sa semestrálny test aj skúška konali online, váha testu sa zníži na 20% a 10% známky bude za ústnu skúšku

  • Ústna skúška nie je potrebná, ak študent úspešne absolvuje v prezenčnej forme semestrálny test alebo praktickú skúšku (na úspešné absolvovanie testu treba aspoň 50% bodov, na úspešnú praktickú skúšku treba úspešne odovzdať aspoň jeden z dvoch príkladov)

Stupnica

  • Na úspešné absolvovanie predmetu je potrebné splniť všetky nasledovné podmienky:
    • Získať aspoň 50% bodov v celkovom hodnotení
    • Získať aspoň 50% z písomky
    • Ak sa vás týka ústna skúška, získať aspoň 50% z ústnej skúšky
    • Na praktickej skúške úspešne odovzdať aspoň jeden z dvoch príkladov
  • Ak niektorú z týchto podmienok nesplníte, dostávate známku Fx.
  • V prípade úspešného absolvovania predmetu získate známku podľa bodov v celkovom hodnotení takto:
A: 90% a viac, B:80...89%, C: 70...79%, D: 60...69%, E: 50...59%

Príklady z cvičení

  • Na hlavnom cvičení bude zverejnených niekoľko príkladov. Príklady odovzdávate do automatického testovača. Ak úspešne prejdú všetkými testami, môžete za ne dostať body (podmienkou však je dodržať aj ďalšie pokyny v zadaní úlohy).
  • Jeden príklad, označený ako rozcvička, bude mať termín odovzdania počas hlavného cvičenia, neskôr teda zaňho body nedostanete.
  • Ďalšie príklady môžete odovzdávať až do ďalšieho pondelka 22:00.
  • Na doplnkovom cvičení môže byť zadaná ešte jedna rozcvička za malý počet bonusových bodov.
  • Ak chcete získať body za rozcvičku (hlavnú alebo bonusovú), je potrebné byť počas príslušného cvičenia fyzicky na cvičení v počítačovej učebni
    • Po predchádzajúcej dohode v odôvodnených prípadoch sa môžete zúčastniť aj dištančne
  • Nerozcvičkové príklady môžete riešiť v ľubovoľnom čase a na ľubovoľnom mieste (do termínu odovzdania), odporúčame vám však využiť cvičenia, kde vám môžeme poradiť v prípade problémov
  • Vyučujúci každý týždeň určia odporúčaný počet bodov pre hlavné cvičenie. Ak sa vám počas hlavného cvičenia nepodarí vyriešiť príklady za tento počet bodov, je pre vás povinná účasť na doplnkovom cvičení v danom týždni. Ak sa príslušného doplnkového cvičenia s povinnou účasťou nezúčastníte, odpočítame vám 1 bod z bodov za cvičenia.
  • Na niektorých prednáškach alebo cvičeniach budú krátke písomky, kde budete riešiť príklady na papieri. Body za tieto príklady sa tiež rátajú do bodov z cvičení.

Domáce úlohy

  • Domáce úlohy sa budú tiež odovzdávať na testovači, budú však opravované ručne.
  • Plný počet bodov môžu dosť iba programy, ktoré prejdú všetkými testami, čiastočné body však môžete dosť aj za nedokončený program.
  • Budeme kontrolovať správnosť celkovej myšlienky, správnosť implementácie, ale body môžete stratiť aj za neprehľadný štýl.

Semestrálny test

  • Semestrálny test bude v stredu 13.12. 18:10 v posluchárňach A a B.
  • Opravný test bude cez skúškové.

Praktická skúška

  • Na skúške budete riešiť 2 úlohy pri počítači v celkovom trvaní 2 hodiny.
  • Na skúške nebude k dispozícii internet. Budete používať rovnaké programátorské prostredie ako na cvičeniach.
  • Na skúške budú úlohy automaticky testované podobne ako domáce úlohy. Aspoň jedna úloha musí správne prejsť cez všetky testy, inak má študent z daného termínu skúšky známku Fx.
  • Bližšie informácie o skúške poskytneme koncom semestra.

Neprítomnosť a opravné termíny

  • V prípade, že máte príznaky respiračného ochorenia (teplota, kašeľ a pod.), nechoďte na fakultu, aby ste chorobu nešírili. Kontaktujte vyučujúcich, ktorí vám dajú pokyny.
  • Účasť na hlavných cvičeniach veľmi silne odporúčame a v prípade neprítomnosti stratíte body z rozcvičky. Väčšiu časť bodov môžete získať aj riešením príkladov doma.
  • Ak sú pre vás doplnkové cvičenia v danom týždni povinné, neúčasťou stratíte 1 bod.
  • Neprítomnosť na prednáškach a nepovinných doplnkových cvičeniach nemusíte ospravedlňovať.
  • Domáce úlohy a príklady z cvičení je potrebné odovzdať do určeného termínu. Neskoršie odovzdané riešenia nebudú braté do úvahy, ak nezískate výnimočné predĺženie termínu od vyučujúcich.
  • Ak zo závažných dôvodov (napr. zdravotných) nemôžete prísť na cvičenia, písomku, skúšku resp. načas odovzdať domácu úlohu či príklady z cvičení, kontaktujte vyučujúcich emailom. Treba tak spraviť čím skôr, nie až spätne cez skúškové.
  • Semestrálny test má jeden opravný termín.
    • Ak sa zúčastníte opravného termínu, strácate body z predchádzajúceho termínu, aj keby ste na opravnom získali menej bodov.
  • Opakovanie 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).

Odpisovanie

  • Máte povolené sa so spolužiakmi a ďalšími osobami rozprávať o zadaných domácich úlohách a príkladoch z cvičení a o stratégiách na ich riešenie. Kód, ktorý odovzdáte, musí však byť vaša samostatná práca. Je zakázané ukazovať svoj kód spolužiakom resp. im ho diktovať. Pri diskusii o úlohe nemajte otvorené vaše programy a ani si nerobte detailné poznámky.
  • Tiež je zakázané odpisovať kód z literatúry alebo z internetu (s výnimkou webstránky predmetu). Pri práci môžete používať webstránky s popisom programovacieho jazyka, nesnažte sa však nájsť priamo riešenie zadaného príkladu.
  • Pri riešení príkladov z cvičení a domácich úloh nepoužívajte ani nástroje umelej inteligencie. Sú dobrým pomocníkom pre pokročilých programátorov, avšak teraz potrebujete zvládnuť základy programovania vy sami.
  • Počas testov a skúšok môžete používať iba povolené pomôcky a nesmiete komunikovať so žiadnymi osobami okrem vyučujúcich.


  • Po termíne odovzdania príslušnej úlohy je povolené a môže byť aj poučné porovnať váš program s programami, ktoré napísali spolužiaci alebo systémy AI.


  • Odovzdané programy môžu byť kontrolované softvérom na detekciu plagiarizmu.
  • Ak nájdeme prípady odpisovania, všetci zúčastnení študenti získajú za príslušnú domácu úlohu 0 bodov (aj študenti, ktorí dali spolužiakom odpísať). Opakované alebo obzvlášť závažné prípady odpisovania alebo porušovania pravidiel predmetu budú podstúpené na riešenie disciplinárnej komisii fakulty.
  • Za závažné porušenie pravidiel budeme považovať aj akýkoľvek pokus narušiť činnosť testovača riešení.
  • Ak na predmete podvádzate a my na to neprídeme, stále ste podviedli hlavne sami seba, lebo ste nevyužili príležitosť trénovať dôležité zručnosti, ktoré vám budú neskôr chýbať.

Osobné stretnutia

  • Vyučujúci vás môžu vyzvať emailom, aby ste prišli na stretnutie ohľadom príkladov, ktoré odovzdali (domáce úlohy, príklady z cvičení)
  • Na tomto stretnutí im vysvetlíte, ako ste príklad riešili
  • Stretnutia sa budú konať počas doplnkových cvičení alebo po dohode v inom čase
  • Ak na stretnutie neprídete alebo nebudete vedieť svoj program vysvetliť, stratíte zaňho body

Test pre pokročilých

  • V prvom týždni semestra sa bude konať nepovinný test pre pokročilých, určený pre študentov, ktorí už ovládajú väčšiu časť učiva. Jeho úspešným absolvovaním si môžu ušetriť časť povinností na predmete.
  • Za každých celých získaných 10% z testu získavate 100% bodov z jedných cvičení (bez bonusov). Na tieto uznané cvičenia nemusíte prísť ani príklady riešiť doma. Napr. ak ste získali 59% z testu, dostanete plný počet bodov z prvých 5 bodovaných cvičení po opravení testu. Tieto body nie je možné presúvať na iné termíny cvičení. Ak riešite úlohy z takéhoto uznaného cvičenia, započíta sa vám maximum z bodov, ktoré získate riešením a z bodov, ktoré sú vám uznané.
  • Ak získate aspoň 50% z testu pre pokročilých, body z testu vám budú uznané aj ako body zo semestrálnej písomky. Ak však chcete, môžete písomku znovu písať so spolužiakmi.

Nepreberané črty jazykov C a C++

  • Z jazykov C a C++ uvidíme len malú časť.
  • Preberané črty týchto jazykov je potrebné ovládať, pre vlastnú potrebu si však môžete v literatúre doštudovať aj ďalšie užitočné príkazy, knižnice a konštrukty.
  • Ak je v zadaní uvedené, aké prostriedky máte použiť, držte sa týchto pokynov.
  • V opačnom prípade môžete použiť aj nepreberané črty. Aby ste sa vyhli problémom pri opravovaní, je vhodné ich doplniť vysvetľujúcim komentárom.
  • Vždy používajte len štandardné súčasti jazykov C a C++ , nie špeciálne knižnice. (Výnimkou sú samozrejme knižnice poskytnuté vyučujúcimi).
  • Vaše programy by mali fungovať na testovači bez zvláštnych nastavení kompilátora a pod.

Zimný semester, test a skúška

Zimný semester, test a skúška

Netbeans

Netbeans

Grafická knižnica SimpleDraw

SimpleDraw

zoznam todo

C4-Shakersort Cvičenia 1 Cvičenia 10 Cvičenia 11 Cvičenia 12 Cvičenia 13 Cvičenia 14 Cvičenia 15 Cvičenia 16 Cvičenia 17 Cvičenia 18 Cvičenia 19 Cvičenia 2 Cvičenia 20 Cvičenia 21 Cvičenia 22 Cvičenia 23 Cvičenia 24 Cvičenia 3 Cvičenia 4 Cvičenia 5 Cvičenia 6 Cvičenia 7 Cvičenia 8 Cvičenia 9 DÚ1 DÚ10 DÚ11 DÚ12 DÚ13 DÚ14 DÚ15 DÚ16 DÚ17 DÚ2 DÚ3 DÚ4 DÚ5 DÚ6 DÚ7 DÚ8 DÚ9 P12-life P12-mapa P17-ostrovy P17-vyfarbi P32prog P33prog P35-grafy P36-grafy P36-grafy2 P37-grafy P6-polynómy P6-triedenia Pokus Pravidlá Prednáška 1 Prednáška 10 Prednáška 11 Prednáška 12 Prednáška 13 Prednáška 14 Prednáška 15 Prednáška 16 Prednáška 17 Prednáška 18 Prednáška 19 Prednáška 2 Prednáška 20 Prednáška 21 Prednáška 22 Prednáška 23 Prednáška 24 Prednáška 25 Prednáška 26 Prednáška 27 Prednáška 28 Prednáška 29 Prednáška 3 Prednáška 30 Prednáška 31 Prednáška 32 Prednáška 33 Prednáška 34 Prednáška 35 Prednáška 36 Prednáška 37 Prednáška 38 Prednáška 4 Prednáška 5 Prednáška 6 Prednáška 7 Prednáška 8 Prednáška 9 Projekt SimpleDraw SimpleDrawWindowsNavod Test a skúška Vzorové riešenia ukážkových príkladov k testu Úvod