Praktická práce "Performer navrhovatel. Pomocné algoritmy"
Praktická práce„Exekutor navrhovatel. Použití pomocných algoritmů s argumenty"
Úkol A. Pomocný algoritmus, který potřebujeme (který kreslí čtverec určité délky), lze zapsat takto:
alg náměstí( arg věci A)
začátek
. spusťte pero
. pohybovat vektorem(0,a)
. pohybovat vektorem(a,0)
. pohybovat vektorem(0,-a)
. pohybovat vektorem(-a,0)
. zvedněte pero
ošidit
Vstup" alg náměstí( arg věci a)“ znamená, že „čtvercový“ algoritmus má jeden argument (argument) „a“, což může být libovolné reálné číslo. Aby bylo možné tento algoritmus zavolat, musíte napsat například „čtverec(2)“ – dostaneme čtverec se stranou 2 nebo „čtverec(3)“ – dostaneme čtverec se stranou 3 atd. Nějaká konkrétní hodnota „a“ se dostane pouze za běhu programu během odpovídajícího pomocného algoritmu. A všude místo „a“ toto číslo nahradí počítač.
Program pro kreslení tohoto obrázku by mohl vypadat takto:
použijte Navrhovatele
algčtverce
začátek
. přesunout do bodu(1,1)
. čtverec (2)
. přesunout do bodu(4,1)
. čtverec (3)
. přesunout do bodu(8,1)
. čtverec (4)
. přesunout do bodu(13,1)
. čtverec (5)
. přesunout do bodu(0,0)
ošidit
alg náměstí( arg věci A)
začátek
. spusťte pero
. pohybovat vektorem(0,a)
. pohybovat vektorem(a,0)
. pohybovat vektorem(0,-a)
. pohybovat vektorem(-a,0)
. zvedněte pero
ošidit
Úkol B. Naučme Navrhovatele nové příkazy. Nechť se jeden z příkazů nazývá „ řádek (argumentovat věci x1,y1,x2,y2)» – pro nakreslení čáry z bodu (x1,y1) do bodu (x2,y2).
algčára( arg věci x1, y1, x2, y2)
začátek
. přesunout do bodu(x1,y1)
. spusťte pero
. přesunout do bodu(x2,y2)
. zvedněte pero
ošidit
Úkol B. Nechť se druhý příkaz nazývá „ obdélník (argumentovat věci x1,y1,x2,y2)“ nakreslit obdélník. Bod (x1,y1) je jeden bod úhlopříčky AC obdélníku, bod (x2,y2) je opačný. Než začnete psát algoritmus, musíte pochopit, čemu se rovnají souřadnice dalších dvou bodů.
Pomocný algoritmus by mohl vypadat takto:
alg obdélník( arg věci x1, y1, x2, y2)
začátek
. přesunout do bodu(x1,y1)
. spusťte pero
. přesunout do bodu(x2,y1)
. přesunout do bodu(x2,y2)
. přesunout do bodu(x1,y2)
. přesunout do bodu(x1,y1)
. zvedněte pero
ošidit
Úkol G. Nyní pomocí těchto příkazů nakreslíme dům:
použijte Navrhovatele
alg Dům
začátek
. obdélník(2,1,8,5)
. obdélník (3,2,5,4)
. obdélník(6,1,7,4)
. řádek(1,4,5,8)
. řádek(5,8,9,4)
ošidit
algčára( arg věci x1, y1, x2, y2)
začátek
. přesunout do bodu(x1,y1)
. spusťte pero
. přesunout do bodu(x2,y2)
. zvedněte pero
ošidit
alg obdélník( arg věci x1, y1, x2, y2)
začátek
. přesunout do bodu(x1,y1)
. spusťte pero
. přesunout do bodu(x2,y1)
. přesunout do bodu(x2,y2)
. přesunout do bodu(x1,y2)
. přesunout do bodu(x1,y1)
. zvedněte pero
ošidit
Poznámka: přirozeně současně s těmito příkazy můžeme používat i standardní příkazy kreslíře (přesunout do bodu, přesunout do vektoru...).
Úkol D. Nakreslete si, co navrhovatel nakreslí, podle následujícího algoritmu:
použijte Navrhovatele
alg spirála
začátek
. přesunout do bodu(3,3)
. spusťte pero
. turn(1); turn(3); turn(5); turn(7); zatočit (9)
. zvedněte pero
ošidit
alg otočit se( arg věci A)
začátek
. pohybovat vektorem(a, 0)
. pohybovat vektorem(0, -a)
. pohybovat vektorem(-a-1.0)
. pohybovat vektorem(0, a+1)
ošidit.
Zvažte úkol: musíte nakreslit několik, například tři, čtverce.
Algoritmus může vypadat takto (viz níže). Ale stejných čar je příliš mnoho, takže je zvýrazněme žlutě. Co když chceme nakreslit deset stejných čtverců? Sto?
použijte Navrhovatele
alg čtverce 1
začátek
. přesunout do bodu(-4,1)
. spusťte pero
. pohybovat vektorem(0,2)
. pohybovat vektorem(2,0)
. pohybovat vektorem(0,-2)
. pohybovat vektorem(-2,0)
. zvedněte pero
. přesunout do bodu(-1,1)
. spusťte pero
. pohybovat vektorem(0,2)
. pohybovat vektorem(2,0)
. pohybovat vektorem(0,-2)
. pohybovat vektorem(-2,0)
. zvedněte pero
. přesunout do bodu(2,1)
. spusťte pero
. pohybovat vektorem(0,2)
. pohybovat vektorem(2,0)
. pohybovat vektorem(0,-2)
. pohybovat vektorem(-2,0)
. zvedněte pero
. přesunout do bodu(0,0)
ošidit
Při vytváření středně velkých programů se používá strukturované programování, jehož myšlenkou je, že struktura programu by měla odrážet strukturu řešeného problému tak, aby byl algoritmus řešení jasně viditelný ze zdrojového textu. Program je rozdělen do mnoha podprogramů (pomocných algoritmů), z nichž každý provádí nějakou akci stanovenou původní úlohou.
Kombinací pomocných algoritmů je možné vytvořit finální algoritmus pomocí kódových bloků (podprogramů), které mají určitý sémantický význam. Můžete je kontaktovat jejich jménem. Velmi důležitou vlastností pomocných algoritmů je jejich znovupoužitelnost.
Bloky kódu zvýrazněné žlutě zapíšeme pomocí samostatného algoritmu. Říkejme tomu čtverec. Takže jakoby naučíme Navrhovatele nový čtvercový povel.
použijte Navrhovatele
alg čtverce
začátek
. přesunout do bodu(-4,1)
. náměstí
. přesunout do bodu(-1,1)
. náměstí
. přesunout do bodu(2,1)
. náměstí
. přesunout do bodu(0,0)
ošidit
alg čtverec
začátek
. spusťte pero
. pohybovat vektorem(0,2)
. pohybovat vektorem(2,0)
. pohybovat vektorem(0,-2)
. pohybovat vektorem(-2,0)
. zvedněte pero
ošidit
Získali jsme kompaktnější a srozumitelnější algoritmus. Tam, kde se některé části programu opakují (používají) vícekrát, je vhodné použít pomocné algoritmy.
Vezměte prosím na vědomí, že pokud potřebujeme změnit algoritmus tak, aby se kreslily čtverce o straně tři a nikoli dvě, pak při použití pomocného algoritmu se počet úprav znatelně sníží.
Poznámka: všechny algoritmy v programu KuMira jsou psány jeden po druhém, pro pohodlí je lze oddělit prázdný řádek, za hlavní algoritmus je považován ten, který je zaznamenán jako první, je to ten, který se začíná provádět po spuštění programu.
Metoda sekvenčního detailování
Přístup, který jsme použili, usnadňuje programování složitých úloh. Úkol je rozdělen na jednodušší dílčí úkoly. Řešení každého z nich je prezentováno ve formě pomocného algoritmu a hlavní algoritmus organizuje spojení mezi nimi.
Metoda programování, při které se nejprve zapíše hlavní program, zapíší se v ní volání podprogramů, které ještě nebyly zkompilovány, a poté se tyto podprogramy popisují, se nazývá metoda sekvenčního (krokového) detailování. Navíc počet podrobných kroků může být mnohem větší než v našem příkladu, protože samotné podprogramy mohou obsahovat volání jiných podprogramů.
Způsob montáže
Je možný i jiný přístup ke konstrukci komplexní programy: Zpočátku je zkompilováno mnoho podprogramů, které mohou být potřebné k vyřešení problému, a poté je napsán hlavní program obsahující jejich volání. Rutiny lze kombinovat do knihovny rutin a ukládat do dlouhodobé paměti počítače. Takovou knihovnu lze postupně doplňovat o nové podprogramy.
Pokud například vytvoříte knihovnu procedur pro kreslení všech písmen a číslic pro ovládání grafika, bude program pro získávání libovolného textu sestávat z příkazů pro přístup ke knihovním procedurám.
Popsaná metoda se nazývá programování sestav.
V literatuře o programování se často používá následující terminologie: metoda sekvenčního vytváření detailů se nazývá programování shora dolů a metoda sestavení se nazývá programování zdola nahoru.
Úkol 1. Změňte výsledný algoritmus tak, aby bylo nakresleno 5, 7 nebo 10 čtverců.
Úkol 2. Vytvořte lesní program pomocí pomocného algoritmu vánočního stromku a uliční program pomocí pomocného algoritmu domu.
Úkol 3. Počty v PSČ se píší takto:
Vytvořte pomocné algoritmy pro kreslení těchto čísel. Můžete to udělat se svými spolužáky – každý s číslem, a pak je spojit dohromady.
Vytvořte program pro kreslení indexů měst Unecha (243300), Yelets (399770), Taganrog (347900), Torzhok (172011), Plyos (155555). V programu použijte pomocné algoritmy.
PŘEHLED LEKCE POČÍTAČOVÉ VĚDY
Téma lekce"Použití pomocných algoritmů pro navrhovatele"
Věk studentů
1 2 roky (6. třída)
Typ lekce
Zvládnutí nových znalostí
Forma lekce
Modulární lekce
Účel lekce:
Vytvořit u studentů porozumění pojmu „pomocný algoritmus“ jako jedné z optimalizačních metod programový kód
Cíle lekce:
rozvíjet představy studentů o interpretech
upevnit myšlenku algoritmu jako modelu činnosti umělce
zavést pomocné algoritmy
posílit dovednosti řízení výkonného umělce
Plánované výsledky
předmět – dovednosti ve vývoji algoritmů pro ovládání výkonného umělce;
meta-subjekt – schopnost samostatně plánovat cesty k dosažení cílů; korelovat své jednání s plánovanými výsledky, sledovat své aktivity, určovat způsoby jednání v rámci navržených podmínek, upravovat své jednání v souladu s měnící se situací; hodnotit správnost učebního úkolu; schopnost rozdělit úkol na dílčí úkoly; zkušenosti s rozhodováním a řízením výkonných umělců pomocí pro ně sestavených algoritmů;
osobní – schopnost propojit vzdělávací obsah s vlastní životní zkušeností, pochopit význam rozvinutého algoritmického myšlení pro moderního člověka.
Materiálně technické vybavení (didaktické pomůcky atd.)
Učiteli: prezentace lekce; Leták
Pro studenta: kuličkové pero, tužka, pravítko, učebnice, sešit
UMK (video série)
Multimediální prezentace, podklady pro každého studenta: plán lekce, přihláška
Použité materiály
Informatika: metodická příručka pro ročníky 5-6/L.L. Bosová, A.Yu. Bosová. – M.: Binom. Vědomostní laboratoř, 2014
Informatika: Učebnice pro 6. ročník/L.L. Bosová, A.Yu. Bosová. – M.: Binom. Vědomostní laboratoř, 2013
Informatika: Pracovní sešit pro 6. ročník/L.L. Bosová, A.Yu. Bosová. – M.: Binom. Vědomostní laboratoř, 2013
Předmět: Pomocné algoritmy pro Navrhovatele
Technologická mapa (modul) lekce
Hodnocení skóre(max. bod)
UE – 0
2 minuty.
Integrační cíl: Programátoři mají seznam pravidel dobrého stylu, jedno z těchto pravidel zní: „Neopakuj se“, což znamená, že byste se měli vyvarovat opakovaného duplikování částí programového kódu. Dnes ve třídě:
seznámíte se s jedním ze způsobů optimalizace programového kódu
Zdokonalíte své dovednosti v programovacím prostředí KuMir
budete rozvíjet logické myšlení a kritický postoj k přijatým informacím
EU – 1
Aktualizace základních znalostí.
cílová : aktualizovat nabyté znalosti
Cvičení 1.
a) přejděte k bodu (5,2) __________
b) posun o vektor (3,4) ________
c) přejděte k bodu (1,4) __________
Úkol 2.
použijte Navrhovatele
alg
začátek
přejít k bodu (2,4)
přejít k bodu (4,1)
přejít k bodu (0,0)
ošidit
použijte Navrhovatele
alg
začátek
spusťte pero
přesun po vektoru (0,3)
přesun po vektoru (3,0)
přesun po vektoru (0,-3)
přesun po vektoru (-3,0)
ošidit
Přečtěte si pozorně cíl UE – 1
V modulu pracujte ve dvojicích
Otestujte se pomocí odpovědí napsaných na tabuli
Za správně splněný úkol 1 jsou hodnoceny 3 body, 1 bod za každý bod (a, b, c)
Za správně splněný úkol 2 se bodují 2 body, 1 bod za každý bod (a, b)
Maximální počet bodů za práci s UE-1 =5
____________
EU – 2
Učení nového materiálu.
13 min.
Cílová: seznámit se s konceptem pomocného algoritmu, rozšířit okruh problémů řešitelných pomocí pomocného algoritmu, naučit se sestavit hlavní a pomocný algoritmus pro kreslíře
V minulé lekci jste vytvořili algoritmus pro kreslíře, podle kterého nakreslí jednu hvězdu.
Identifikujte nevýhody takového algoritmu:
_________________________________
_________________________________
_________________________________
_________________________________
Jak se můžete těmto potížím vyhnout?
_________________________________
_________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
Pozorně si přečtěte cíl UE – 2
Samostatná práce s úkoly 1-3
Při práci s bodem 4 použijte látku uvedenou v odstavci 18 vaší učebnice (str. 123 – 125), prezentace učitele
Diskuse k bodům 1 - 4 – skupinová práce ve frontálním režimu
Úkoly 5 – 6 plňte samostatně
9
Hodnocení úkolů
Správně splněný úkol 1-2 1 bod
____________
Úkol 3 označuje alespoň 3 nedostatky – 1 bod
_____________
Úloha 4 ukazuje způsoby, jak problém vyřešit:
1 cesta = 1 bod, 2 cesty = 2 body
_____________
Úkol 5. Na souřadnicové rovině je 6-8 hvězd, jejichž velikost odpovídá „Hvězdě“ - 1 bod
____________
Byl sestaven hlavní algoritmus „Space“ – 3 body
____________
EU – 3
Praktická práce
Cílová: Rozvinout schopnost práce s pomocnými algoritmy v programovacím prostředí KuMir
Cvičení 1. Implementujte algoritmus, který jste vytvořili v programovacím systému KuMir
Úkol 2 (kreativní). Přemýšlejte o tom, jaký druh letadla by mohl být ve vesmíru:
a) nakreslete jej na souřadnicovou rovinu vedle hvězd na papír
b) doplňte svůj algoritmus o kód letadla, implementujte jej do programovacího systému KuMir
Přečtěte si pozorně cíl UE – 3
Samostatná práce s úkoly
Splnění každého úkolu nahlaste učiteli ke kontrole.
Příklad je uveden v příloze 1
Maximální počet bodů za práci s UE-2 =6
Správně dokončený úkol 1 je hodnocen 2
Úkol 2 (kreativní) dokončený v plném rozsahu je hodnocen 4 body
_____________
EU – 4
Odraz
Cílová: Analyzujte své úspěchy ve třídě
Uveďte odpověď na každou otázku
1. Přečtěte si znovu cíle lekce
2. Dosáhli jste svých cílů?
__________________________________
3. Co vám bránilo dosáhnout vašich cílů?
__________________________________
4. Co ti přišlo nejtěžší?
__________________________________
5. Co nezpůsobilo obtíže?
__________________________________
6. Jak hodnotíte svou práci?
7. Získali jste méně než 20 bodů? (pokud ano, pak pracujte doma a máte šanci se nechat znovu otestovat). Hodně štěstí!
Zkontrolujte všechny poznámky pořízené během lekce.
§18 odst. 3, č. 6 na str. 128; č. 216.
Přečtěte si pozorně cíl UE – 4
Odpověz na otázky
Spočítejte si počet bodů, dejte si hodnocení (Příloha 2, Příloha 3)
APLIKACE
Příloha 1
Příklad splněného úkolu
Dodatek 2
Kontrolní list
Příjmení jméno ______________________________________________
Dodatek 3
17 -19(85 – 99%)
vysoký
Jsi prostě skvělá!
15 - 16
(75 – 84 %)
průměrný
Ještě trochu a bude to „5“
10 - 14
(50 – 74%)
krátký
Být opatrnější
1 - 9
(0,7 – 49%)
velmi nízký
A na co ve třídě myslíš?
nula
Nezúčastnili jste se lekce?
Odpovědi
EU – 1
Cvičení 1. Výchozí pozicí navrhovatele je bod A, do kterého se může přesunout provedením příkazu:
a) přejděte k bodu (5,2) ____F ______
b) posun o vektor (3,4) __C ______
c) přejděte k bodu (1,4) ____A ______
Úkol 2. Počáteční poloha kreslíře je počátek souřadnic, pero je zvednuté. Spusťte algoritmus a určete, jaký tvar nakreslí.
a) NIC, NEBĚHEL ŽÁDNÝ PŘÍKAZ KE SPOUŠTĚNÍ PERO
použijte Navrhovatele
alg
začátek
přejít k bodu (2,4)
přejít k bodu (4,1)
přejít k bodu (0,0)
ošidit
b) ČTVEREC
použijte Navrhovatele
alg
začátek
spusťte pero
přesun po vektoru (0,3)
přesun po vektoru (3,0)
přesun po vektoru (0,-3)
přesun po vektoru (-3,0)
ošidit
EU – 2
Jak by se měl algoritmus změnit, pokud navrhovatel potřebuje nakreslit hvězdnou oblohu s 20, 50, 1000 hvězdami?
Týmů bude víc
Kolik řádků zabere algoritmus pro 10 hvězdiček?
Identifikujte nevýhody takového algoritmu: těžkopádný, duplicitní, vysoká pravděpodobnost chyby
Jak se můžete těmto potížím vyhnout: použijte pomocný algoritmus, mohou to také nazývat cyklus
Umístěte 6 - 8 hvězd na souřadnicovou rovinu, velikost každé by měla odpovídat hvězdě, kterou jste nakreslili v minulé lekci
Zapište si hlavní algoritmus „Space“ pomocí algoritmu „Star“ jako pomocného algoritmu
použijte Navrhovatele
alg prostor
začátek
přejít na bod (1,1)
hvězda
přesun po vektoru (2, 2)
hvězda
posunout o vektor (-2, 2)
hvězda
přesun po vektoru (2, 2)
hvězda
raketa
přejít k bodu (13,1)
hvězda
posunout o vektor (-2, 2)
hvězda
přesun po vektoru (2, 2)
hvězda
posunout o vektor (-2, 2)
hvězda
ošidit
alg hvězdička
začátek
spusťte pero
nastavit barvu ("žlutá")
posunout o vektor(1,2)
posunout o vektor(1,-2)
posunout o vektor(-2,1)
posunout o vektor(2,0)
posunout o vektor(-2,-1)
zvedněte pero
ošidit
alg raketa
začátek
přejít k bodu (6,1)
spusťte pero
nastavit barvu ("červená")
posunout o vektor(0,1)
posunout o vektor(1,1)
posunout o vektor(0,4)
posunout o vektor(1,1)
posunout o vektor(1,-1)
posunout o vektor(0,-4)
posunout o vektor(1,-1)
posunout o vektor(0,-1)
posunout o vektor(-1,1)
posunout o vektor(-1,-1)
posunout o vektor(-1,1)
posunout o vektor(-1,-1)
zvedněte pero
Performer Robot. Pomocné algoritmy(2h)
Cílová: představit koncept hlavního a pomocného algoritmu; vysvětlit pravidla pro použití pomocného algoritmu; analyzovat příklady algoritmů pomocí pomocných. Rozvinout praktické dovednosti při konstrukci algoritmů metodou sekvenčního zpřesňování.
Plán lekce
1.Zavedení nových pojmů (hlavní a pomocné algoritmy, volání) a vysvětlení nových pojmů.
2. Analýza příkladů řešení úloh pomocí pomocného algoritmu.
3. Praktická práce
Při řešení některých problémů je vhodné je rozdělit na menší dílčí úkoly, z nichž každý může být formulován jako samostatný algoritmus. V tomto případě je nejprve zkompilován tzv. hlavní algoritmus, ve kterém se volání pomocných algoritmů používají k řešení dílčích úloh, které se přidávají později. Toto řešení se nazývá metoda sekvenčního zpřesňování. Umožňuje skupině programátorů pracovat na projektu, přičemž každý řeší svůj vlastní dílčí úkol.
V procesu řešení problému lze každý pomocný algoritmus v případě potřeby rozdělit na menší pomocné algoritmy.
Zavolá se příkaz k provedení pomocného algoritmu výzva a je zapsán v těle hlavního algoritmu.
Stejný algoritmus lze považovat za hlavní a pomocný ve vztahu k ostatním algoritmům. V algoritmickém jazyce se nejprve zapisuje hlavní algoritmus a pomocné se zapisují v řadě.
Úkol 1:
Robot je v levém horním rohu pole. Nejsou zde žádné stěny ani malované cely. Vytvořte algoritmus pomocí pomocného algoritmu, který nakreslí čtyři křížky na jednu vodorovnou čáru. Konečná pozice robota může být libovolná.
Řešení
Analýza na desce:
Úkol 2. Robot je v levém horním rohu pole. Nejsou zde žádné stěny ani malované cely. Vytvořte algoritmus, který nakreslí čtverec 8 x 8 do šachovnicového vzoru. Konečná pozice robota může být libovolná.
Praktická práce na PC „Řešení problému pomocí pomocných algoritmů“
Problém 1 . Robot je v levém dolním rohu pole. Nejsou zde žádné stěny ani malované cely. Napište algoritmus, který vykreslí 6 svislé pruhy stejně dlouhých 6 buněk. Konečná pozice robota může být libovolná.
Problém 2 . Pomocí pomocných vytvořte algoritmus pro malování buněk, které tvoří číslo 1212.
Domácí práce
: Vymyslete algoritmus, který nakreslí následující obrázek: K vyřešení problému použijte dva pomocné algoritmy.