2019/20 Programování pro DG I

Podmínky zápočtu

Aktuální počet bodů

Získat alespoň 70 ze 110 bodů a splnit ověřovácí část zápočtového testu.

  • Max. 10 bodů je možné získat za docházku.
  • Max. 90 bodů je možné získat za domácí úkoly.
  • Zápočtový test má dvě části
    • Ověřovací - cílem je ověřit vaše porozumění odevzdaným domácím úkolům, za tuto část nejsou body a jejím jediným cílem je prověřit, že rozumíte tomu, co jste odevzdali. Jak se říká, důvěřuj ale prověřuj.
    • Testová část - v této části budete řešit teoretické otázky z oblasti algoritmů. Za tuto část můžete získat max. 10 bodů.

Domácí úkoly

9) Do 16.12. 23:59 - 15 bodů (poté 7 bodů)

Vaším úkolem je vytvořit simulaci oběhu fiktivních planet, ale tentokrát objektově.

  • Vytvořte objekt Planeta se vstupními parametry vzdálenost od Slunce, velikost planety, barva planety, barva jejího měsíce a jméno planety. Ostatní parametry si objekt dodefinuje sám, například dobu oběhu stanoví na základě vzdálenosti od slunce. Velikost měsíce vypočítejte na základě velikosti planety, aby to vypadalo rozumně.
  • Pokud bude barva měsíce nastavena na černou (0, 0, 0), měsíc se nevykreslí.
  • Měsíc oběhne planetu 12x za její rok
  • Měsíc bude nyní obíhat po elipse a "schovávat" se za planetu při oběhu.
  • Po najetí myší na planetu se u ní vypíše její jméno a fáze oběhu (úhel) ve které se nachází 0 - 360.
  • Po najetí myší na Slunce se příslušné hodnoty vypíšou u všech planet.
  • Tyto funkce by měly být zajištěny pomocí metod objektu Planeta.
  • Samozřejmě nezapomeňte kód přehledně okomentovat.

8) Do 8.12. 23:59 - 10 bodů (poté 4 body)

Napište program, který simuluje skákání ideálních hopíků ve vakuu (neztrácí energii při letu ani při odrazu).

  • Při kliknutí na obrazovku se na pozici myši vytvoří hopík.
  • Ve svislém směru hopík na počátku stojí a vlivem gravitace postupně zrychluje k zemi.
  • Ve vodorovném směru záleží výchozí rychlost hopíku na pozici myši při vytvoření hopíku. Čím více u kraje hopík vznikne tím rychleji se vydá k bližší stěně. Konkrétní parametry jsou libovolné.
  • hopík se odráží od obou stěn a od země. Při odrazu neztrácí žádnou energii, jen se obrátí směr letu.
  • Barva hopíku také závisí na konkrétní poloze, kde hopík vznikl. Konkrétní parametry jsou libovolné.
  • Hopíky postupně mizí, resp. černají až nejsou vidět, nicméně program s nimi může dále pracovat (je to tak jednodušší).
  • Uživatel si může nastavit velikost gravitačního zrychlení a také rychlost blednutí hopíků.
  • Nezapomeňte program dostatečně okomentovat.

7) Do 24.11. 23:59 - 5 bodů (poté 2 body)

Napište program, který pixel po pixelu vykreslí následující barevný přechod. Použijte k romu dva for cykly.

7) Barevný_přechod___Computer_programming___Khan_Academy

6) Do 24.11. 23:59 - 15 bodů (poté 7 bodů)

Napište jednoduchý kreslící program. Uživatel si může vybrat alespoň ze tří barev a ze tří typů kreslících nástorjů (kruh, čtverec, úsečka). Aplikace také ukazuje aktuální nastavení.

Na obrazovce jsou dvě tučné kružnice, uvnitř menší aplikace kreslí větší útvary, v mezikruží kreslí menší, vně kruhů aplikace nekreslí vůbec.

Po každém tahu se kružnice znovu vykreslí, aby byly stále dobře viditelné.

Jako vždy je součástí hodnocení i přehlednost a okomentovanost kódu.

5) Do 10.11. 23:59 - 5 bodů (poté 2 body)

Napište program, který při kliknutí myší vykreslí domek na pozici myši.

  • Pro vykreslení domku použijte funkci Domek, která na vstupu dostane souřadnice domku xy a velikost jeho stěny - Strana.
  • S každým dalším kliknutím se velikost domku o 10 % zvětší
  • Domek nemusí mít daný počet oken, dveří apod., měl by ale vypadat důstojně.

4) Do 3.11. 23:59 - 5  bodů (poté 2 body)

Napište program, kdy kružnice pronásleduje pozici myši, viz video.

5 bodů je rozděleno následovně

  • 1 bod za komentáře a srozumitelnost
  • 1 bod za pronásledování pozice myši
  • 1 bod za výpis souřadnic pronásledující (barevné) kružnice
  • 1 bod za změnu velikosti pronásledující kružnice a světlosti pronásledované kružnice v závislosti na vzdálenosti kružnic
  • 1 bod za změnu barvy kružnice po kliknutí myší.

3) Do 28.10. 23:59 - 10 bodů (poté 4 body)

Napište program, který simuluje oběh planet okolo Slunce, viz video.

10 bodů je rozdělo následovně:

  • 1 bod za srozumitelnost
  • 3 body za obíhající planety
  • 1 bod za uživatelská zadávání rychlosti simulace
  • 1 bod za změnu velikostí planet
  • 1 bod za prstenec Saturnu
  • 2 body za Měsíc obíhající okolo Země a měnící velikost
  • 1 bod za změnu vzdálenosti Měsíce od Země v závislosti na poloze Země.

Untitled

Planety obíhají po elipsách, konkrétní rozměry nechám na vás, bylo by ale dobré, aby se planety nepřekrývaly a aby doby oběhu relativně odpovídaly skutečnosti. Tedy například Země by měla oběhnout 12x zatímco Jupiter 1x.

Měsíc obíhá po kružnici a mění nejen svoji velikost ale i vzdálenost od Země.

2) Do 21.10. 23:59 - 5 bodů (poté 2 body)

Napište program, který vykreslí domky v perspektivě na základě uživatelem zadaných hodnot.

4 body jsou za funkčnost programu, 1 bod je za přehlednost, srozumitelnost a komentáře.

2__Domy___Computer_programming___Khan_Academy

 

1) Do 14.10. 23:59 - 5 bodů (poté 2 body)

Napište program, který vykreslí následující ornament na plátnu velikosti 600x600 pixelů.

1__Drawing_simple_shapes___Computer_programming___Khan_Academy

Stěžejní studijní materiály:

https://www.khanacademy.org/computing/computer-programming/programming

https://www.khanacademy.org/computing/computer-programming/programming-natural-simulations/programming-randomness/a/random-walks

https://www.khanacademy.org/computing/computer-science/algorithms/recursive-algorithms/a/recursion

Postup v probírané látce

1.10. - Intro to programming, Drawing basics, Coloring

8.10. - Variables, komentáře (//, /* */)

15.10. - Animation basics

22.10. - Interactive programs, Text and strings

29.10. - Functions Debugging programs

5.11. - Logic and if statements

12.11. - Looping

19.11.  - Arrays

26.11.  - Objects

3.12.  - Object-oriented design

10.12. - Randomness

17.12. - Rekurze

7.1. - Zápočtový test

 

 

This entry was posted in   MFF.
Bookmark the   permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>