IB111 Základy programovania Cvičenie 1 – organizácia & korytnačka Matej Troják (Poďakovanie: Valdemar Švábenský) Uvítanie & Zoznámenie Organizácia cvičení Pravidlá: • Začíname presne, končíme :40 (100 minút) • Čítajte materiály, e-maily a diskusné fórum • Otázky: hlavne fórum v ISe, osobné/tajné veci e-mail/osobne • Venujte pozornosť cvičiacemu (“v tichosti počúvam”) • “Ste už veľkí” Študíjne materiály https://is.muni.cz/auth/el/fi/podzim2019/IB111/um/trojak/ Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 2 / 20 Prednášky a cvičenia, hodnotenie • Prednáška: nepovinná, ale doporučovaná • Cvičenia: povinné; max. 2 neospravedlnené absencie • Hodnotenie: 200 bodov, z toho 100 počas semestra – Vnútrosemestrálka: 14 b (viac info dám vopred) – Veľké domáce úlohy: 75 b (5 úloh: 8, 8, 10, 12, 12) - automatická aj ručná kontrola – Malé domáce úlohy: 11 b (odpovedník v ISe každý týždeň) - automatická kontrola, zverejnený vždy v pondelok ráno, deadline je v utorok další týždeň • Podmienky: http://www.fi.muni.cz/IB111/ – Splnená dochádzka – Aspoň 5 bodov za malé domáce úlohy – Aspoň 3 body z automatických testov z každej veľkej domácej úlohy – Aspoň 3 body z vnútrosemestrálky – Aspoň 60 bodov zo semestru celkom Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 3 / 20 Programovanie – motivácia Úloha: nakreslite štvorec s obmedzenými operáciami. Povolené operácie • dopredu(n) • otoč_doprava(α) • otoč_doľava(α) n – dĺžka; α – uhol Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 4 / 20 Programovanie – motivácia Úloha: nakreslite osemuholník s obmedzenými operáciami. Povolené operácie • dopredu(n) • otoč_doprava(α) • otoč_doľava(α) n – dĺžka; α – uhol Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 5 / 20 Programátor – tvor lenivý Programovací jazyk Python • Jednoduchá syntax • Minimum kódu (takmer pseudokód) • Dobrá čitateľnosť kódu • Rozsiahla štandardná knižnica • Platformová nezávislosť • Multiparadigmový: imperatívny, procedurálny, prvky OOP, funkcionálne prvky Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 7 / 20 Programovacie prostredie – PyCharm • PyCharm – profesionálny Integrated DeveLopment Environment (IDE) pre Python – Interaktívny interpret príkazov (shell): jednorazové, pre krátke rýchle výpočty – Tvorba a spúšťanie skriptov (.py): uloženie práce, opakované spustenie programu • používajte čo chcete... (napr. akýkoľvek textový editor + shell) Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 8 / 20 Shell – interpreter • Čakanie na príkaz: > > > („čo mám spraviť teraz?“) • Vyhodnotenie jedného riadka príkazu: Enter • Poslúži aj ako kalkulačka Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 9 / 20 PyCharm – spustenie • zapneme PyCharm • vytvoríme nový projekt (File → New Project... | Python 3.6+ !) • vytvoríme nový súbor (File → New... → Python File) • do textového editoru napíšeme kód • spustíme kód (Run → Run... | alebo pomocou Shellu...) Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 10 / 20 Korytnačia grafika Korytnačia grafika • Korytnačka má: – Pozíciu (súradnice) – Otočenie – Vlastnosti pera (farba, hrúbka čiary, . . . ) • Ovládanie – from turtle import Turtle – Sprístupní príkazy pre ovládanie korytnačky – fred =Turtle() – vytvorí novú korytnačku, pripravenú na príkazy – fred.reset() – nastaví korytnačku na počiatočnú pozíciu – fred.forward(x) – pohyb o x pixelov v danom smere – fred.right(x) – rotácia o x stupňov v smere hodinových ručičiek – fred.left(x) – rotácia o x stupňov proti smeru hodinových ručičiek Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 12 / 20 Korytnačia grafika Pokročilé ovládanie • speed(x) – rýchlosť x vykresľovania • tracer(False) – vypne postupné vykresľovanie • clear() – vymaže kresliacu plochu • reset() – vymaže plochu a vráti korytnačku doprostred • bye() – zavrie okno • exitonclick() – zavrie okno pri kliknutí • done() – ukončí vykresľovanie a okno stačí zavrieť • pendown() – režim aktívneho kreslenia • penup() – režim neaktívneho kreslenia Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 13 / 20 Trojuholník – sekvencia príkazov (level 1/5) >>> from turtle import Turtle >>> fred = Turtle() >>> fred.forward(100) >>> fred.left(120) >>> fred.forward(100) >>> fred.left(120) >>> fred.forward(100) >>> fred.left(120) Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 14 / 20 Trojuholník – príkazy v skripte (level 2/5) • Shell je jednorazový: keď ho vypneme, program sa stratí • Príkazy ale nechceme zakaždým písať znova • Ak si vytvoríme skript, dá sa uložiť a spustiť neskôr from turtle import Turtle, exitonclick fred = Turtle() fred.forward(100) fred.left(120) fred.forward(100) fred.left(120) fred.forward(100) fred.left(120) exitonclick() Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 15 / 20 Trojuholník – definícia vlastnej procedúry (level 3/5) • Chceme skryť postupnosť 6 príkazov pod 1 nový príkaz • Píšeme do nového skriptu • Dvojbodka a zanorenie (odsadenie!) def triangle(): fred.forward(100) fred.left(120) fred.forward(100) fred.left(120) fred.forward(100) fred.left(120) • Skript spustíme a potom napíšeme v shelli: >>> triangle() Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 16 / 20 Trojuholník – opakované príkazy v cykle (level 4/5) • Príkaz for i in range(3): spôsobí 3 opakovania • Pozor na odsadenie def triangle(): for i in range(3): fred.forward(100) fred.left(120) Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 17 / 20 Trojuholník – nastaviteľná dĺžka (level 5/5) • Parameter funkcie def triangle(length): for i in range(3): fred.forward(length) fred.left(120) >>> triangle(200) Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 18 / 20 Zhrnutie príkazov • reset() nastaví korytnačku na počiatočnú pozíciu • forward(x) pohyb o x pixelov v danom smere • left(x) rotácia o x stupňov proti smeru hodinových ručičiek • right(x) rotácia o x stupňov v smere hodinových ručičiek • speed(x) rýchlosť x vykresľovania • tracer(False) vypne postupné vykresľovanie • clear() vymaže kresliacu plochu • reset() vymaže plochu a vráti korytnačku doprostred • bye() zavrie okno • exitonclick() zavrie okno pri kliknutí • done() ukončí vykresľovanie a okno stačí zavrieť • pendown() režim aktívneho kreslenia • penup() režim neaktívneho kreslenia Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 19 / 20 Precvičovanie na doma • http://www.fi.muni.cz/IB111/sbirka/ • https://www.umimeprogramovat.cz/python-zelva • https://www.umimeprogramovat.cz/programovani-v-pythonu Matej Troják IB111: Cvičenie 1 – organizácia & korytnačka 20 / 20