Pomocné algoritmy s argumenty. Metodika studia pomocných algoritmů

Pomocné algoritmy s argumenty

Programová sekce: Algoritmizace

Předmět : Pomocné algoritmy (AA) s argumenty, exekutor Navrhovatel.

Cíle : Opakování a upevňování probrané látky na zadané téma.

Úkoly :

Vzdělání- systematizovat znalosti, zopakovat základní pojmy na zadané téma.

Rozvoj- pokračovat ve formování algoritmického stylu myšlení, dovednosti v práci s programovacím systémem Kumir; nadále rozvíjet dovednosti v přenosu znalostí do nových situací.

Výchova- nadále podporovat vzájemnou pomoc, odpovědnost a sebekontrolu.

Úspora zdraví- udržovat emocionálně pozitivní přístup mezi studenty; využívat měnící se aktivity během lekce.

Typ lekce: opakování a upevňování získaných znalostí a dovedností.

Poskytování a viditelnost : multimediální projektor, počítačová prezentace na zadané téma, programovací systém Idol, karty pro samostatnou práci u stolů, karty s úkoly pro 5 možností různé náročnosti pro práci u počítače.

Struktura a plán lekce:

    Organizační začátek (uvítání, stanovení cílů, motivace)

    Systematická aktivace znalostí (demonstrace počítačová prezentace s ústními odpověďmi na otázky)

    Systematické upevňování látky (dokončování jednotlivých úkolů v sešitech, změna a sestavování algoritmů na počítačích)

    Shrnutí lekce

Během lekcí:

    Organizační začátek.

    Prezentační demo:

A) Diskuse návrhu VA hlavičky s argumenty pro její volání: popis, charakteristika nám aktuálně známých veličin, jejich použití.

B) Úvaha o daném příkladu algoritmu s argumenty.

C) Diskuse o použití VA s argumenty při konstrukci tohoto obrazu. Sestavení hlavního a pomocného algoritmu.

D) Konec demonstrace – zadání pomocných algoritmů.

3) Nahrávání domácích úkolů. Vysvětlení pro nadcházející práci na PC.

Rozdělení do skupin:

skupina;IIskupina;IIIskupina;

Práce u stolů:

Plnění jednotlivých úkolů v testovacích sešitech.

Práce u počítače podle 5 možností pro navrhovatele:

B) Vypracování algoritmů. Existují 3 úkoly se zvyšující se úrovní obtížnosti.

Kritéria pro hodnocení práce na počítači:

Vyhrává skupina s nejvyšším počtem bodů.

Samostatná práce na PC je hodnocena známkou 5, pokud je počet dosažených bodů roven nebo větší než 5.

4) Shrnutí lekce.

aplikace

Jednotlivé úkoly u stolů s 15 možnostmi:

VARIANTA č. 1 Jednotky měření informace, VA s argumenty, interpret Navrhovatel.

    12 bajtů =… bitů.

    1 MB…2 10 bajtů

    0,5 KB…512 bajtů

    Symbol $ se měří...

    alg Poznámka1( arg věci a, b, c, neporušený

alg detail

začátek

rho(7,2,3); rho(7,3,2); rho(7, 4, 1)

ošidit

alg ro ( arg věci x, y, a)

začátek

ošidit

VARIANTA č. 2 Jednotky měření informace, VA s argumenty, vystupující Navrhovatel.

    2 bajty =… bitů.

    1 KB…2 10 bitů

    0,5 MB…512 KB

    Symbol % se měří jako….

    Existuje hlavička algoritmu s argumenty: alg Poznámka1( arg věci a, b, c, neporušený n, k). Které záznamy jsou voláním tohoto algoritmu: a) Prim1(2.1, 3, 6, 3, 0.6) b) Prim1(6, 7, 4.5, 0, 7), c) Prim1(4, 2, 5 , 3 , 9), d) poznámka 1 (7,3, 2, 7,2 , 6, 5), e) poznámka (0, 4, 8,2, 8, 0)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(3, 5, 2); rho(7,5, 2,5); rho(7,5; 4; 1)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

ošidit

VARIANTA č. 3 Jednotky měření informace, VA s argumenty, vystupující Navrhovatel.

    0,5 bajtu=… bitů.

    1 KB…8192 bitů

    0,5 GB…512 MB

    Symbol # se měří jako….

    Existuje hlavička algoritmu s argumenty: alg Poznámka1( arg věci x, y, neporušený n, k, s). Které záznamy jsou voláním tohoto algoritmu: a) Prim1(2.1, 3, 6, 3, 6), b) Prim(6, 7, 4.5, 0, 7), c) Prim1(4, 2, 5, 3, 9), d) Prim1(7,3, 2, 7, 6, 5), e) Prim1(0, 4, 8,2, 8, 0)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(4,2,2); rho(4, 0, 3); rho(9,5; 1; 2,5)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

ošidit

VARIANTA č. 4 Jednotky měření informace, VA s argumenty, vystupující Navrhovatel.

    1 bajt=…bit.

    700 bitů...90 bajtů

    4096 bitů ... 0,5 KB

    Písmeno C se měří....

    Existuje hlavička algoritmu s argumenty: alg Poznámka1( arg neporušený a, b, c, věci n, k). Které záznamy jsou voláním tohoto algoritmu: a) Prim1(2.1, 3, 6, 3, 0.6), b) Prim(6, 7, 4.5, 0, 7), c) Prim1(4, 2, 5, 3,6, 9), d) poznámka 1 (7,3, 2, 7,2, 6, 5), e) poznámka 1 (0, 4, 8, 8, 0,6)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(3, 5, 1); rho(6,5, 2, 2,5); rho(6, 4, 1,5)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

posun po vektoru (a,2*a); posunout o vektor(y, 2*a)

posun o vektor (-a, -2*a); posun o vektor(a, -2*a); zvedněte pero

ošidit

VARIANTA č. 5 Jednotky měření informace, VA s argumenty, vystupující Navrhovatel.

    Symbol * se měří jako….

    2 bajty =… bitů.

    600 bitů...70 bajtů

    1KB…8192 bajtů

    Existuje hlavička algoritmu s argumenty: alg Poznámka1( arg věci a, b, c, neporušený n, k). Které záznamy jsou voláním tohoto algoritmu: a) Prim1(2.1, 3, 6, 3, 0.6), b) Prim(6, 7, 4.5, 0, 7), c) Prim1(4, 2, 5, 3, 9), d) poznámka 1 (7,3, 2, 7,2, 6, 5), e) poznámka 1 (0, 4, 8,2, 8, 0)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(4,5, 0, 1,5); rho(10, 0, 2,5); rho(10; 3; 1,5)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

pohyb po vektoru (a, 2*a); přesun o vektor(y, 2*a)

posun o vektor (-a, -2*a); posun o vektor(a, -2*a); zvedněte pero

ošidit

VARIANTA č. 6 Jednotky měření informace, VA s argumenty, vystupující Navrhovatel.

    Symbol @ se měří jako….

    0,5 bajtu=… bitů.

    720 bitů...80 bajtů

    1KB…8192 bitů

    Existuje hlavička algoritmu s argumenty: alg ATD( arg věci x, y, s, neporušený n, k). Které záznamy jsou voláním tohoto algoritmu: a) PR1(2.1, 3, 6, 3, 0.6), b) PR(6, 7, 4.5, 0, 7), c) PR(4, 2, 5; 3; 9), d) PR(7,3; 2; 7,2; 6; 5), e) PR(0; 4; 8,2; 8; 0)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(6, 8, 3); rho(6, 7, 2); rho(6, 6, 1)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

ošidit

VARIANTA č. 7 Jednotky měření informace, VA s argumenty, vystupující Navrhovatel.

    Symbol ^ se měří jako….

    0,25 bajtů=…bitů.

    1 MB…2 20 bitů

    640 bitů...60 bajtů

    Existuje hlavička algoritmu s argumenty: alg Obr. 1( arg věci a, b, c, neporušený

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(1,5,2,5); rho(4, 5, 1); rho(11, 5, 1,5)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

ošidit

VARIANTA č. 8 Jednotky měření informace, VA s argumenty, účinkující Navrhovatel.

    Symbol $ se měří jako….

    2 bajty =… bitů.

    1 kB…1024 bitů

    1 MB…2 10 bajtů

    Existuje hlavička algoritmu s argumenty: alg POZNÁMKA 1( arg věci x, y, s, neporušený atd). Které záznamy jsou voláním tohoto algoritmu: a) PRIM1(2.1, 3, 6, 3, 0), b) PRIM(6, 7, 4.5, 0, 7), c) PRIM1(4, 5, 3, 9), d) PRIM1(7,3, 2, 7,2, 6, 5), e) PRIM1(0, 4, 8,2, 8, 0)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(1,6,2,5); rho(2, 6, 2); rho(3, 6, 1)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

pohyb po vektoru (a, 2*a); posunout o vektor(a, -2*a)

posun o vektor (-a, -2*a); posun o vektor(-a, 2*a); zvedněte pero

ošidit

VARIANTA č. 9 Jednotky měření informace, VA s argumenty, vystupující Navrhovatel.

    Symbol „se měří podle….

    12 bajtů =… bitů.

    2 10 bajtů ... 1 MB

    512 bajtů…0,5 kB

    Existuje hlavička algoritmu s argumenty: alg Poznámka1( arg věci n, r, s, neporušený x, k). Které záznamy jsou voláním tohoto algoritmu: a) Prim1(2.1, 3, 6, 3, 6), b) Prim(6, 7, 4.5, 0.7), c) Prim1(4.7, 2, 5, 3), d) poznámka 1 (7,3, 2, 7,2, 6, 5), e) poznámka 1 (0, 4, 8,2, 8, 8)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(6, 2,5, 2,5); rho(6,4,1); rho(14; 3,5; 1,5)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

posun o vektor (2*a, a); posun o vektor(-2*a, a)

posun o vektor (-2*a, -a); pohyb o vektor(2*a, -a); zvedněte pero

ošidit

VARIANTA č. 10 Jednotky měření informace, VA s argumenty, interpret Navrhovatel.

    Symbol! měřeno….

    2 bajty =… bitů.

    2 10 bitů ... 1 kB

    512 KB…0,5 MB

    Existuje hlavička algoritmu s argumenty: alg ARIP1( arg věci l, v, a, neporušený Studna). Které záznamy jsou voláním tohoto algoritmu: a) ARIP1(2.1, 3, 6, 3, 0.6), b) ARIP(6, 7, 4.5, 0.7), c) ARIP1(4.7, 2, 5, 3, 9), d) poznámka 1 (7,3, 2, 7,2, 6, 5), e) ARIP1 (0,9, 4, 8,2, 8, 0)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(2,2,2); rho(0,7,3); rho(4, 7, 1)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

posun o vektor (2*a, a); přesun o vektor(2*a, -a)

posun o vektor (-2*a, -a); pohyb o vektor(-2*a, a); zvedněte pero

ošidit

VARIANTA č. 11 Jednotky měření informace, VA s argumenty, interpret Navrhovatel.

    0,5 bajtu=… bitů.

    8192 bitů ... 1 kB

    512 MB…0,5 GB

    Symbol: měřeno...

    Existuje hlavička algoritmu s argumenty: alg Poznámka1( arg věci m, v, f, neporušený x, k). Které záznamy jsou voláním tohoto algoritmu: a) Prim1(2.1, 3.8, 6, 3, 6), b) Prim(6, 7, 4.5, 0.7), c) Prim1(0, 2, 5, 3, 0), d) poznámka 1 (7,3, 2, 7,2, 6, 5), e) poznámka 1 (0, 4, 8,2, 8, 7)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(7,2,3); rho(7,4,1); rho(10, 1, 2)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

posun o vektor (2*a, a); posun o vektor(-2*a, a)

posun o vektor (-2*a, -a); pohyb o vektor(2*a, -a); zvedněte pero

ošidit

VARIANTA č. 12 Jednotky měření informace, VA s argumenty, interpret Navrhovatel.

    Symbol A se měří jako….

    Existuje hlavička algoritmu s argumenty: alg Poznámka1( arg věci a, x, s, neporušený Studna). Které záznamy jsou voláním tohoto algoritmu: a) Prim1(2.1, 3, 6, 3), b) Prim(6, 7, 4.5, 0.7), c) Prim1(4, 2.8, 5, 3, 9), d) poznámka 1 (7,3, 2, 7,2, 6, 5), e) poznámka 1 (6,1, 4, 8,2, 8, 0)

    1 bajt=…bit.

    90 bajtů…700 bitů

    0,5 KB…4096 bitů

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(4,5, 2, 2,5); rho(4,5, 4, 1,5); rho(8, 5, 1)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

posun po vektoru (a,2*a); posunout o vektor(y, 2*a)

posun o vektor (-a, -2*a); posun o vektor(a, -2*a); zvedněte pero

ošidit

VARIANTA č. 13 Jednotky měření informace, VA s argumenty, interpret Navrhovatel.

    Symbol č. je měřen….

    Existuje hlavička algoritmu s argumenty: alg Poznámka2( arg věci p, v, x, neporušený l, d). Které záznamy jsou voláním tohoto algoritmu: a) Prim2(2.1, 2, 5, 8, 0.6), b) Prim(6, 1, 4.5, 0.7), c) Prim2(6, 2, 5, 3,9), d) poznámka 2 (7,3, 2, 7,2, 6, 5), e) poznámka 2 (5, 4, 8,2, 8, 0)

    2 bajty =… bitů.

    70 bajtů…600 bitů

    8192 bajtů…1Kbyte

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(1,6,3); rho(2,5, 6, 1,5); rho(7, 6, 2)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

pohyb po vektoru (a, 2*a); posunout o vektor(a, -2*a)

posun o vektor (-a, -2*a); posun o vektor(-a, 2*a); zvedněte pero

ošidit

VARIANTA č. 14 Jednotky měření informace, VA s argumenty, interpret Navrhovatel.

    Symbol B se měří….

    Existuje hlavička algoritmu s argumenty: alg Poznámka6( arg věci r, l, x, neporušený y, k). Které záznamy jsou voláním tohoto algoritmu: a) Prim6(2.1, 3, 0, 3, 6), b) Prim6(6, 7, 4.5, 7), c) Prim6(4.8, 74, 5, 3, 11), d) poznámka 6 (7,3, 2, 7,2, 6, 5), e) poznámka 6 (0, 4, 8,2, 8, 0)

    0,5 bajtu=… bitů.

    80 bajtů...720 bitů

    8192 bitů…1 kB

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(5,4,2); rho(5,3,1); rho(11, 2, 1)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

pohyb po vektoru (2*a, -a); posun o vektor(-2*a, -a)

posun o vektor (-2*a, a); pohyb o vektor(2*a, a); zvedněte pero

ošidit

VARIANTA č. 15 Jednotky měření informace, VA s argumenty, vystupující Navrhovatel.

    Znak 6 se měří….

    0,25 bajtů=…bitů.

    2 20 bitů ... 1 MB

    60 bajtů...640 bitů

    Existuje hlavička algoritmu s argumenty: alg Obr. 1( arg věci a, b, c, neporušený n, k). Které záznamy jsou voláním tohoto algoritmu: a) fig1(2.1, 3, 6, 3, 0.6), b) fig(6, 7, 4.5, 0, 7), c) fig1(4, 2, 5, 3, 9), d) ráfek1 (7,3, 2, 7,2, 6, 5), e) ris1 (0, 4, 8,2, 8, 0)

    Nakreslete výsledek algoritmu:

alg detail

začátek

rho(1,4,2,5); rho(4,4,1); rho(11, 4, 1,5)

ošidit

alg ro ( arg věci x, y, a)

začátek

přesunout do bodu (x, y); spusťte pero

posun o vektor (2*a, a); přesun o vektor(2*a, -a)

posun o vektor (-2*a, -a); posun o vektor(-2*a, a)

zvedněte pero

ošidit

    2 20 2 10 bajtů

    2 13 2 10 bitů

  1. 1024*8=8192 bitů

  1. 4096 bitů = 4096

  1. 1024 bajtů

Abychom nakreslili dva čtverce s různými stranami, například 2 a 3, museli jsme napsat dva různé pomocné algoritmy. Ale co když potřebujete nakreslit mnoho různých čtverců s různými délkami stran? Nepište svůj vlastní algoritmus pro všechny! Ukazuje se, že algoritmy mohou mít argumenty, můžete vytvořit algoritmus pro kreslení čtverce s libovolnou délkou strany.

S pojmem argumentace jste se již setkali v matematice. V matematice je argument funkce nezávislá proměnná, jejíž hodnoty určují hodnoty funkce.
Například funkce f(x) = x 2 +1 má jeden argument. Pro různé hodnoty argumentu dostaneme různé hodnoty funkce - pro x=2 dostaneme f(x)=5, pro x=3 dostaneme f(x)=10 atd.

Pomocný algoritmus, který potřebujeme (který kreslí čtverec určité délky), lze zapsat takto:

alg square (arg věc)
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

Zápis „alg square (arg thing a)“ znamená, že algoritmus „square“ má jeden argument (arg) „a“, což může být libovolné reálné (reálné) číslo.
Chcete-li zavolat tento algoritmus, musíte napsat například „čtverec(2)“ - dostaneme čtverec se stranou 2 nebo „čtverec (3)“ - dostaneme čtverec se stranou 3 atd.
„a“ obdrží konkrétní hodnotu pouze během provádění 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 square (arg věc)
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

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).


začátek
. přesunout do bodu(x1,y1)
. spusťte pero
. přesunout do bodu(x2,y2)
. zvedněte pero
ošidit

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:


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

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 linie (argumenty 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 things 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 1. Pomocí úsečky a obdélníku pomocných algoritmů vytvořte výkres.

Úkol 2. Pokuste se přepsat algoritmy čáry a obdélníku tak, aby kreslení probíhalo příkazem posunout o vektor.

Úkol 3. Vytvořte algoritmus „obdélník (argumenty x, y, a, b)“, který nakreslí obdélník se stranami délky aab, počínaje bodem (x, y).

Úkol 4. 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 turn (arg věc)
začátek
. pohybovat vektorem(a, 0)
. pohybovat vektorem(0, -a)
. pohybovat vektorem(-a-1.0)
. pohybovat vektorem(0, a+1)
ošidit

Khirjanov Timofej Fedorovič


Algoritmus v jazyce KuMir je napsán následovně:

alg algorithm_type název_algoritmu (popis argumentů a výsledků)
je dána podmínka_použitelnosti_algoritmu
potřebujete prováděcí_cíl algoritmu
začátek
sled příkazů
ošidit

Popis algoritmu se skládá z:
  • title (část před funkčním slovem beg),
  • tělo algoritmu (část mezi slovy začátek a konec).
Části „dané“, „musí“, stejně jako „typ algoritmu“ a „popis argumentů a výsledků“ mohou chybět.

Nejjednodušší algoritmy

Zvažte následující pomocný algoritmus pro spouštěcí program Draftsman.

Příklad algoritmu

alg čtverec
začátek
spusťte pero
posunout o vektor(0,2)
posunout o vektor(2,0)
posunout o vektor(0,-2)
posunout o vektor(-2,0)
zvedněte pero
ošidit

Umožňuje nakreslit čtverec 2x2 (začínající od levého dolního rohu). Chcete-li to provést, musíte použít v hlavním programu zavolat příkaz pomocný algoritmus, který bude vypadat takto:

Algoritmy s argumenty

Chcete-li kreslit čtverce různé velikosti, můžete použít algoritmus s argumenty.

Příklad algoritmu

alg square (arg věc a)
začátek
spusťte pero
posunout o vektor(0, a)
posunout o vektor(a, 0)
posunout o vektor(0, -a)
posunout o vektor(y, 0)
zvedněte pero
ošidit

Slovo arg znamená, že algoritmus má argument(a) a věc je, co tento argument má skutečný typ. Příkaz pro volání takového algoritmu může vypadat

(v tomto případě se vykreslí čtverec 2x2) nebo např.
(v tomto případě bude nakreslen čtverec 5x5).

Algoritmy s výsledky

Algoritmus dokáže informace nejen přijímat, ale i dávat zpět. K tomuto účelu se používá speciální typ množství - Výsledek.

Příklad algoritmu s výsledky

alg přepona (věc a, b, res věc c)
dáno a >= 0 ab >= 0 | délky trojúhelníkových nohou
potřeba | c = délka přepony tohoto trojúhelníku
začátek
c:= sqrt(a**2 + b**2)
ošidit

Zde je operativní slovo res znamená, že hodnota c je výsledkem a její hodnota se bude během činnosti algoritmu měnit. Například po zavolání

přepona(3, 4, c)

Hodnota c bude mít hodnotu 5.

Algoritmy-procedury a algoritmy-funkce

Výše uvedené příklady jsou algoritmické procedury. V Idolu jsou také funkční algoritmy. Algoritmus-funkce po provedení vrátí výslednou hodnotu.
Pravidla popisu Algoritmy-procedury a algoritmy-funkce mají dva rozdíly.
Za prvé, pro algoritmy funkcí na místě typ_algoritmu musí být specifikováno jedno z následujících jednoduché typy algoritmický jazyk (věci, ints atd.), který definuje typ hodnot, které daná funkce vrací.
Za druhé, v těle funkce algoritmu je nutné použít servisní hodnotu hodnota, kterému je přiřazena vypočtená hodnota funkce. Jeho popis je názvem algoritmu, ale jinak se hodnota hodnoty používá stejným způsobem jako jakákoli jiná mezihodnota. (V těle procedury algoritmu použijte hodnotu je to zakázáno.)
Volání procedury algoritmu je samostatný příkaz algoritmického jazyka a má tvar:

Metodika studia pomocných algoritmů Hlavní cíle:    Zavést pojem pomocný algoritmus. Představit konstrukci algoritmů pomocí metody sekvenčního zpřesňování. Představit pravidla pro záznam a spouštění pomocných algoritmů s argumenty. Základní pojmy:  pomocný algoritmus;  hlavní algoritmus;  volání pomocného algoritmu. Ve školním kurzu informatiky je myšlenka strukturovaného programování zakotvena v tématu „Pomocné algoritmy“. Je právem považována za jedno z hlavních témat v sekci „Algoritmy“, protože zde se odráží myšlenka systémové analýzy, strukturování a designu. Systematická a cílená aplikace myšlenek strukturálního přístupu (zejména metody sekvenčního detailování) je jednou z cest, jak racionálně naučit studenty technice algoritmizace. Je užitečný i z hlediska vzdělávání žáků, protože rozvíjí schopnost plánovat své jednání při řešení složitých problémů, schopnost komunikovat a vykonávat kolektivní činnosti. Schopnost strukturovat je základní vlastností lidského myšlení. Spočívá ve schopnosti využít to, co již bylo dříve uděláno. Například při řešení geometrického problému používáme dříve ověřené věty. Dekompozice problému, tzn. jeho rozdělení na jednodušší dílčí úkoly je nejdůležitější technikou algoritmizace a programování. Algoritmy pro řešení takových dílčích problémů se nazývají pomocné a programy, které je implementují, se nazývají podprogramy (procedury). Pomocný algoritmus musí:  mít název, pod kterým jej lze volat z hlavního nebo jiného pomocného algoritmu  vrátit řízení k algoritmu, ze kterého byl volán,  být relativně malý Hlavní algoritmus určuje pořadí, ve kterém jsou pomocné algoritmy volány vyřešit problém. alg ALG 1 beg řada příkazů hlavní algoritmus ALG 2 volání příkaz řada příkazů con alg ALG 2 beg pomocný algoritmus řada příkazů con Koncept pomocného algoritmu je jedním ze základních pojmů kurzu informatiky a metoda konstrukce algoritmy využívající metodu sekvenčního detailování pomocí pomocných algoritmů je jednou z nejúčinnějších programovacích technik. Podstatou této metody je, že žádný algoritmus zpravidla nelze okamžitě specifikovat v příkazech, které jsou zahrnuty v systému vykonavatelských příkazů. Proto je vhodné začít sestavovat algoritmus ve více „velkých“ příkazech, které nejsou zahrnuty v systému příkazů interpreta, ale jsou srozumitelné pro autora algoritmu. Tyto "velké" příkazy jsou zapsány jako volání pomocných algoritmů, které jsou pak zpřesňovány, dokud se neskládají z příkazů, které jsou srozumitelné pro vykonavatele. Programování v tomto případě začíná nahráním hlavního programu, ze kterého jsou přístupné pomocné algoritmy. Je velmi důležité, aby studenti jasně porozuměli celému komplexnímu schématu akcí interpreta při přístupu k pomocnému algoritmu se specifickými argumenty a návratu k hlavnímu algoritmu s dosaženými výsledky. Výhody použití pomocných algoritmů by měly být demonstrovány na příkladech, ve kterých je pomocný algoritmus volán opakovaně. Vytvořte například algoritmus pro kreslení čísla „1919“ pro umělce „Draftsman“. Studenti již vědí, jak takové úlohy provádět a vytváření dlouhého lineárního algoritmu pro ně nebude zajímavé. V této situaci možná sami studenti přijdou na myšlenku pomocného algoritmu a všimnou si, že číslice „1“ a „9“ jsou na obrázku dvakrát. Algoritmy pro kreslení těchto čísel můžete popsat samostatně a poté je použít k získání čísla „1919“. Schopnost používat pomocné algoritmy by měla být u studentů rozvíjena co nejdříve, již prostřednictvím příkladů lineární algoritmy. V první fázi je třeba zvážit pomocné algoritmy bez parametrů. Cílem je přejít ke studiu funkčních algoritmů a pomocných algoritmů s parametry. Je nutné, aby studenti jasně pochopili, které parametry pomocného algoritmu jsou vstupní a které výstupní (výsledek provedení pomocného algoritmu). Studenti musí pochopit rozdíl mezi formálními a věcnými parametry. Příklady skládání pomocných algoritmů ve WAL. 1. Algoritmus-funkce, která určuje větší ze dvou čísel alg things bid (arg things A, B) start if A > B then value:= Jinak hodnota:= B all con 2. Algoritmus-funkce pro výpočet faktoriálu přirozeného čísla N alg int fact (arg int N) start int I, P P:= 1 nc for I od 1 do N P:= P * I kts value:= P con 3. Pomocný algoritmus, který vypočítává přeponu pravoúhlého trojúhelníku z jeho nohy alg přepona( arg věci A, B, res věci C) dané! A, B - potřebujete nohy! C = přepona beg C:= SQRT(A ** 2 + B ** 2) con Příklady úloh s pomocnými algoritmy 1. Vypočítejte a! +b! (pomocí pomocného algoritmu pro výpočet faktoriálu přirozeného čísla) 2. Najděte největší z čísel A, B, C (pomocí pomocného algoritmu vyberte větší ze dvou čísel) 3. Najděte nejmenší z čísel A, B, C, D (pomocí pomocného algoritmu pro výběr menšího ze dvou čísel) 4. Dva trojúhelníky jsou definovány svými rameny. Určete, který z nich má větší obvod (pomocí pomocného algoritmu, který vypočítá přeponu pravoúhlého trojúhelníku z jeho ramen)


Příkazy absolutního a relativního posunutí (x a y se měří od počátku souřadnic 0,0) posun k bodu (x, y) posun o vektor (a, b) (a a b se počítají od začátku vektoru) absolutní příkaz posunutí příkaz relativního posunutí a v x y




Typ hodnoty arg - deklarace hodnot argumentu (vstupní nebo zdrojová data) - zobrazuje typ proměnných, tj. jak je hodnota použita v algoritmu Typ hodnoty Typ proměnné - rozsah hodnot argumentů věci - popis hodnoty reálného (skutečného) typu (Příklad: 2,5, 6,9, 6,0, 7,9, 3,0) integer - popis hodnoty typu integer (Příklad: 2, 0, 8, 9).


Volání VA s argumenty Přesný název VA (číselné hodnoty argumentů podle jejich typů, oddělené čárkami ve stejném pořadí jako v hlavičce VA) Příklad. Hlavička: alg Pr 1(arg věc a, v, s, celé číslo, k) Volání: Pr 1(0, 4, 8.2, 8, 0) ; Pr 1(4, 2, 5, 3, 9); Pr 1(6, 7, 4,5, 0, 7)


Příklad použití VA s argumenty pro umělce Navrhovatel alg detail nach ro(7, 2, 3); rho(7,3,2); ro(7, 4, 1) con alg ro (argumentovat věci x, y, a) začátek cm k bodu (x, y); snižte pero cm na vektor (2*a, a); cm na vektor (-2*a, a) cm na vektor (-2*a, -a); cm na vektor(2*a, -a) zvedněte pero Hlavní algoritmus Pomocný algoritmus Call VA Header VA


Použití VA s argumenty při konstrukci obrázku Pomocí metody sekvenčního zpřesňování a analýzy v daném obrázku je možné identifikovat standardní detail - kosočtverec, začátek jeho kreslení, parametry a množství. Z toho vyplývá, že pro získání tohoto výkresu je nutné zapsat čtyři volání VA v hlavním algoritmu a jedno VA pro nakreslení kosočtverce se třemi parametry x, y a X Y y x a 2 a alg detail začínající ro(2, 2 , 2); rho(0,7,3); rho(4, 7, 1); ro(9, 4, 2) con alg ro (argumentovat věci x, y, a) začátek cm k bodu (x, y); snižte pero cm na vektor (2*a, a); cm na vektor (2*a, -a) cm na vektor (-2*a, -a); cm na vektor(-2*a, a) zvedněte pero