Zvažte problém:
Vstup do programu je přirozené číslo nepřesahující 2 * 10 9 . Určete součet číslic tohoto čísla.
Na první pohled je úkol celkem jednoduchý: je potřeba důsledně vybírat čísla v čísle a přičítat je k součtu. Zároveň je zřejmé, že počet číslic v čísle se může měnit, takže konečná hodnota parametru cyklu pro se ukazuje jako nedefinovaná a jsou potíže s její aplikací.
V cyklických algoritmech, ve kterých nelze získat počet opakování určité sady instrukcí před jejím začátkem, se používají podmíněné smyčky.
Smyčka while
Jednou z takových konstrukcí v programovacím jazyce Kumir je kolo sbohem. Tento cyklus, často označovaný jako smyčka s předpokladem, má následující formát:
- nc bye stav
- loop_body
Podmínka napsaná po oficiální slovo zatímco , je booleovský výraz.
Cyklus se provádí následovně:
- Hodnotí se hodnota logického výrazu.
- Pokud je výsledek výpočtu ne , pak se cyklus ukončí a Kumir přejde na první příkaz po cyklu while. Pokud je výsledek výpočtu ano, pak se provede tělo smyčky, načež se hodnota výrazu opět vypočítá s novou hodnotou.
Důležité! V těle smyčky se některá hodnota spojená s podmínkou musí stále měnit, aby byl zajištěn konec smyčky, jinak může být smyčka věčná.
Nyní použijeme smyčku while k vyřešení našeho problému.
- vstupní číslo
- nc, zatímco číslo > 0
- součet:= součet + mod(číslo, 10)
- num:= div(num, 10)
- částka výběru
Při každém provádění těla smyčky se tedy k částce přidá poslední číslice čísla a poté se číslo 10krát sníží. Je zřejmé, že nakonec bude num rovno 0, načež smyčka skončí.
Do té doby cyklus
V Idolu existuje další varianta podmíněné smyčky, která se nazývá dokud smyčka, která má následující formát:
- loop_body
- kc pod podmínkou
Pokud je ve smyčce, zatímco je podmínka kontrolována před tělem smyčky, pak ve smyčce do té doby - po. Proto je tento cyklus často nazýván smyčka s postpodmínkou. Tělo takové smyčky bude vždy vykonáno alespoň jednou.
Práce smyčky do té doby probíhá následovně:
- Provede se tělo smyčky
- Hodnotí se hodnota logického výrazu. Pokud je výsledek výpočtu ne , začne se tělo cyklu provádět znovu atd. Je-li výsledek výpočtu yes , cyklus končí a Kumir přejde k provedení dalšího příkazu po smyčka.
Úkol. Vstupem do programu je posloupnost celých čísel končících nulou. Najděte počet záporných čísel v posloupnosti. Je zaručeno, že sekvence obsahuje alespoň jedno nenulové číslo.
(úryvek kódu programu)
- vstupní číslo
- pokud číslo 0
- pak k:= k + 1
- kts při čísle = 0
- výstup k
Algoritmus pro kreslení spirály:
použijte zásuvku
alg
brzy
. přesunout do bodu(3,3)
. spusťte pero
. cívka(1); cívka(3); cívka(5); cívka(7); cívka (9)
. zvedněte pero
ošidit
alg turn (arg w)
brzy
. posun po vektoru(a, 0)
. posun po vektoru(0, -a)
. posun po vektoru(-a-1.0)
. posun po vektoru(0, a+1)
ošidit
Věnujte pozornost příkazovému bloku:
Cívka(1); cívka(3); cívka(5); cívka(7); cívka (9)
Pomocný algoritmus „coil (arg thing a)“ je volán 5krát, ale nemůže být volán ve smyčce „N times“, protože pokaždé je volán pomocí různé hodnoty argument.
Ale můžete vidět, že hodnoty argumentu se mění z 1 na 9, pokaždé se zvýší o 2. Můžeme vám tedy pomoci smyčka s počítadlem. Takový cyklus se také nazývá cyklus „pro“.
Smyčka s počítadlem- smyčka, ve které některá proměnná s určitým krokem změní svou hodnotu z dané počáteční hodnoty na konečnou a pro každou hodnotu této proměnné se jednou provede tělo smyčky.
Obvykle se tato smyčka používá, pokud potřebujete iterovat některé hodnoty a provést nějaké akce pro každou z nich.
Celkový pohled na cyklus s počítadlem:
nc pro<счетчик>z<нач. знач.>před<кон. знач.>[krok<знач.>]
<тело цикла (последовательность команд)>
kts
Krok není nutné uvádět, pokud není zadán, považuje se za rovný jedné.
Nyní můžeme přepsat "spirální" algoritmus tímto způsobem:
použijte zásuvku
alg
brzy
. přesunout do bodu(3,3)
. spusťte pero
. celá velikost
. nc pro velikost 1 až 9 krok 2
. . cívka (velikost)
. kts
. zvedněte pero
ošidit
alg turn (arg w)
brzy
. posun po vektoru(a, 0)
. posun po vektoru(0, -a)
. posun po vektoru(-a-1.0)
. posun po vektoru(0, a+1)
ošidit
V tomto příkladu bude proměnná čítače "velikost" přijímat hodnoty: 1, 3, 5, 7, 9. smyčka bude provedena 5krát. Pro každou hodnotu proměnné „size“ se tělo smyčky provede jednou, v našem příkladu se jedná o volání pomocného algoritmu „coil (arg thing)“.
Před prvním použitím proměnné musí být deklarována, tedy o jaký typ se jedná. To se v našem programu provádí v řádku „velikost celého čísla“, tj. naznačíme, že proměnnou „velikost“ budeme používat k ukládání celých čísel, a proto pro ni potřebujeme alokovat paměť. O proměnných si povíme více o něco později.
Blokové schéma takového algoritmu vypadá takto:
Podívejme se na další příklad:
Nejprve si zapamatujeme a napíšeme pomocný algoritmus, který nakreslí čtverec v bodě (x, y). Pro změnu pro kreslení použijeme příkaz posun po vektoru(v předchozích příkladech byly posunuty do bodu).
Algoritmus by mohl vypadat takto:
alg square (arg x, y, strana)
brzy
. přesunout do bodu(x, y)
. posun po vektoru(-strana/2, strana/2)
. spusťte pero
. posun po vektoru(strana, 0)
. posun po vektoru(0, -strana)
. posun po vektoru(-strana, 0)
. posun po vektoru(0, strana)
. zvedněte pero
ošidit
Pomocí takového pomocného algoritmu nakreslíme následující obrázek:
K tomu používáme smyčku "for". Prostudujte si ukázkový program:
použijte zásuvku
alg obrázek1
brzy
. celé číslo z
. nc pro z od 2 do 10 krok 2
. . čtverec(0; 0; z)
. kts
ošidit
alg square (arg x, y, strana)
brzy
. přesunout do bodu(x, y)
. posun po vektoru(-strana/2, strana/2)
. spusťte pero
. posun po vektoru(strana, 0)
. posun po vektoru(0, -strana)
. posun po vektoru(-strana, 0)
. posun po vektoru(0, strana)
. zvedněte pero
ošidit
V tomto příkladu bude proměnná "z" přijímat hodnoty: 2, 4, 6, 8, 10. smyčka bude provedena 5krát. Pro každou hodnotu „z“ se tělo smyčky provede jednou, v našem příkladu se jedná o volání pomocného čtvercového algoritmu.
Před prvním použitím proměnné musí být deklarována, tedy o jaký typ se jedná. To se v našem programu provádí v řádku "integer z", tj. naznačíme, že proměnnou "z" budeme používat k ukládání celých čísel, a proto pro ni potřebujeme alokovat paměť. O proměnných si povíme více o něco později.
Jak jste si všimli, algoritmus používal nejen čísla, ale také algebraické výrazy, vzorce, například "-strana/2". V informatice se těmto výrazům říká aritmetický. Pravidla jazyka umožňují při psaní algoritmů, kdekoli lze napsat číslo, napsat libovolný aritmetický výraz.
Karty úkolů
Najděte mezi n - celými čísly zadanými z klávesnice číslo záporné
Jsou vám přidělena dvě libovolná čísla. Dokud je jejich součin menší než 100, zvyšte každé číslo o 2 a zobrazte konečná čísla na monitoru
Postupně zadáno n -celá čísla. Najděte počet pětek v řadě
Postupně zadáno n -celá čísla. Najděte rozdíl mezi maximální a minimální hodnoty daná čísla
Najděte mezi n - celými čísly zadanými z klávesnice číslo záporné
Jsou vám přidělena dvě libovolná čísla. Dokud je jejich součin menší než 100, zvyšte každé číslo o 2 a zobrazte konečná čísla na monitoru
Postupně zadáno n -celá čísla. Najděte počet pětek v řadě
Postupně zadáno n -celá čísla. Najděte rozdíl mezi maximální a minimální hodnotou daných čísel
Najděte mezi n - celými čísly zadanými z klávesnice číslo záporné
Jsou vám přidělena dvě libovolná čísla. Dokud je jejich součin menší než 100, zvyšte každé číslo o 2 a zobrazte konečná čísla na monitoru
Postupně zadáno n -celá čísla. Najděte počet pětek v řadě
Postupně zadáno n -celá čísla. Najděte rozdíl mezi maximální a minimální hodnotou daných čísel
Najděte mezi n - celými čísly zadanými z klávesnice číslo záporné
Jsou vám přidělena dvě libovolná čísla. Dokud je jejich součin menší než 100, zvyšte každé číslo o 2 a zobrazte konečná čísla na monitoru
Postupně zadáno n -celá čísla. Najděte počet pětek v řadě
Postupně zadáno n -celá čísla. Najděte rozdíl mezi maximální a minimální hodnotou daných čísel
Vnořené smyčky a odbočky v systému KUMIR
Jedním ze základních pojmů v informatice je koncept algoritmu. Původ termínu "algoritmus" je spojen s matematikou. Toto slovo pochází z Algorithmi - latinského pravopisu jména Muhammada al-Khwarizmiho (787 - 850), vynikajícího matematika středověkého východu. Ve své knize „Na indickém účtu“ formuloval pravidla pro zápis přirozených čísel pomocí arabských číslic a pravidla pro práci s nimi ve sloupci.
V budoucnu se algoritmu začalo říkat přesný předpis, který určuje sekvenci akcí, které zajistí získání požadovaného výsledku z počátečních dat.
Algoritmus může být navržen tak, aby byl vykonáván člověkem nebo automatickým zařízením. Vytvoření algoritmu, i toho nejjednoduššího, je kreativní proces. Je k dispozici výhradně živým bytostem a na dlouhou dobu myslel, že je pouze pro lidi. Ve století XII. vznikl latinský překlad jeho matematického pojednání, z něhož se Evropané dozvěděli o desítkové poziční číselné soustavě a pravidlech pro vícecifernou aritmetiku. Tato pravidla se v té době nazývala algoritmy.
Výše uvedenou definici algoritmu nelze považovat za striktní – není zcela jasné, co je „přesný předpis“ nebo „pořadí akcí, které zajistí dosažení požadovaného výsledku“. Proto je běžné formulovat několik obecných vlastností algoritmů, které umožňují odlišit algoritmy od jiných instrukcí.
Tyto vlastnosti jsou:
diskrétnost (diskontinuita, separace) - algoritmus by měl představovat proces řešení problému jako postupné provádění jednoduchých (nebo předem definovaných) kroků. Každá akce poskytnutá algoritmem se provede až po ukončení provádění předchozí.
Jistota - každé pravidlo algoritmu by mělo být jasné, jednoznačné a nenechávat prostor pro svévoli. Díky této vlastnosti je provedení algoritmu mechanické povahy a nevyžaduje žádné další instrukce nebo informace o řešeném problému.
Účinnost (konečnost) – algoritmus by měl vést k řešení problému v konečném počtu kroků.
masový charakter - Algoritmus pro řešení problému je vyvinut v obecné podobě, to znamená, že musí být použitelný pro určitou třídu problémů, které se liší pouze v počátečních datech. V tomto případě lze počáteční data vybrat z určité oblasti, která se nazývá oblast použitelnosti algoritmu.
Způsoby psaní algoritmů
K zápisu algoritmů se používají různé prostředky. Výběr prostředků je určen typem prováděného algoritmu.
Existují následující hlavní způsoby psaní algoritmů:
- slovní když je algoritmus popsán v lidském (přirozeném) jazyce. Národní jazyky jsou přirozené (ruština, angličtina, němčina atd.);
- symbolický když je algoritmus popsán pomocí sady symbolů a je programem (programy jsou napsány pomocí programovacích jazyků);
- grafický když je algoritmus popsán pomocí množiny grafické obrázky(blokové schéma).
Běžně používané metody záznamu jsougrafický zápis pomocí vývojových diagramů aznakový zápis pomocí nějakého algoritmického jazyka - programu.
V grafickým způsobem záznamů se sestavují vývojové diagramy, na kterých se pomocí symboly(geometrické obrazce) označují různé části algoritmu. Prvky blokových diagramů jsou znázorněny na obrázku.
Programovací systém KUMIR
Při zvládnutí problematiky algoritmů využijeme programovací systém KUMIR.
KuMir (Sada vzdělávacích MIR) je programovací systém určený pro podporu kurzů elementární informatiky a programování na středních a vysokých školách.
Systém KuMir využívá školní algoritmický jazyk s ruskou slovní zásobou a vestavěnými spouštěči Robot a Draftsman atd.
Při zadávání programu KuMir provádí neustálou plnou kontrolu jeho správnosti a na okraj programu hlásí všechny zjištěné chyby.
Při spuštění programu v režim krok za krokem KuMir zobrazuje výsledky operací přiřazení a hodnoty logických výrazů v polích. To umožňuje urychlit proces zvládnutí základů programování.
Robot grafického umělce
Grafický exekutor Robot vám umožní zvládnout základy programování a pochopit fungování hlavních algoritmických struktur.
Grafikje řídicí objekt. Balíčekbudeme jim vládnout.
Robotický umělec je v některýchstartovací prostředí - obdélníkové pole, rozdělené na buňky, mezi kterými mohou být stěny.
Robot se může pohybovat po poli, obcházet stěny a malovat přes cely. Robot nemůže projít zdí, ale může zkontrolovat, zda je vedle něj zeď. Robot nemůže jít za obdélník, který ohraničuje pole.
R bot může provádět příkazy
: nahoru, dolů, doprava, doleva, přemalovat.
Robot může kontrolovat podmínky : volný nahoře, volný dole, volný vpravo, volný vlevo, přidání částice ne obrátí stav. Nesvobodný shora, nesvobodný zdola, nesvobodný zprava, nesvobodný zleva.
Základní algoritmické struktury
Existují tři základní algoritmické struktury (konstrukce)-lineární (následující), větvení a cyklus, ze kterého lze sestavit jakýkoli algoritmus.Každá algoritmická struktura má jeden vstupní bod a jeden výstupní bod.
Algoritmy budeme psát jak ve školním jazyce, tak ve formě blokových diagramů.
Lineární struktura
Lineární struktura je nejjednodušší organizace algoritmů - příkazy se provádějí postupně jeden po druhém
Příklad:
Cyklická struktura (cyklus)
Cyklická struktura (cyklus) poskytuje vícenásobné provádění stejných příkazů. Existuje několik typů cyklických struktur.
Jakákoli cyklická struktura se skládá ze dvou částí -záhlaví a tělesa cyklu.
Zavolá se sada instrukcí opakovaných během provádění smyčkytělo cyklu.
záhlaví určuje počet opakování těla smyčky.
Smyčka pro počet opakování (krát)
nc N jednou
<команда>
kts
P Příklad:
použití
Robot
alg
sloupec
brzy
.
nc
5
jednou
. . přemalovat
. . nahoru
.
kts
ošidit
Smyčka s předběžnou podmínkou (zatím)
(vstup do algoritmický jazyk)
nc sbohem <условие>
<команда>
na C
Příklad:
použití
Robot
alg
Čára
brzy
nc
sbohem
horní volný
přemalovat
nahoru
kts
ošidit
Smyčka s dodatečnou podmínkou (at)
(zápis v algoritmickém jazyce)
n C
<команда>
cc_at <условие>
Příklad:
použití
Robot
alg
Čára
brzy
nc
přemalovat; nahoru
cc_at ponechán volný
ošidit
Struktura větve.
Struktura větve. Řešení některých problémů vyžaduje různé akce v závislosti na splnění určitých podmínek. V takových případech se hovoří o větvení algoritmu.
K implementaci struktury „větvení“ se používají dva strukturované příkazy školního EL – if a choice, z nichž každý může být úplný a neúplný.
Ve vývojových diagramech a školním jazyce<условие>je booleovský výraz, jehož výsledkem může být jeden ze dvou možné hodnoty - skutečný nebo Nepravdivé. Ve školním jazyce jsou tyto hodnoty zapsány jako ano a ne. Programovací jazyky často používají hodnotySkutečný a Nepravdivé. Počítač tyto hodnoty uloží jako 1 a 0.
Plná pobočka
(zápis v algoritmickém jazyce)
E -li
<условие>
. .
pak
<команда1>
. .
v opačném případě
<команда2>
Všechno
Příklad:
použití
Robot
alg
větvení_plné
brzy
.
-li
horní volný
. .
pak
nahoru
. .
v opačném případě
cesta dolů
.
Všechno
ošidit
neúplné větvení
(zápis v algoritmickém jazyce)
E -li
<условие>
. .
pak
<команда1>
Všechno
Příklad:
použití
Robot
alg
větvení_neúplné
brzy
.
-li
horní volný
. .
pak
nahoru
.
Všechno
ošidit
Pomocný algoritmus (postup)
Algoritmus, kterým se řeší některý dílčí úkol z hlavního úkolu a který se zpravidla provádí opakovaně, se nazývá pomocný algoritmus.
Pomocný algoritmus napsaný v programovacím jazyce se nazývá podprogram nebo procedura.
Pomocný algoritmus je volán z hlavního programu přes jméno. Pomocný algoritmus je zapsán za hlavním algoritmem. Pomocný algoritmus musí mít název.
použití
Robot
alg
brzy
cesta dolů
náměstí
cesta dolů
cesta dolů
ošidit
alg čtverec
brzy
přemalovat
že jo
přemalovat
cesta dolů
přemalovat
doleva
přemalovat
ošidit
Vnořené smyčky a větve
Při řešení některých úloh s robotem je nutné použít vnořené smyčky nebo větve.
C ucl se nazývá vnořený, pokud je umístěn uvnitř jiné smyčky.
Zvažte vnořenou smyčku pomocí příkladu smyčky while.
Víme, že smyčka se skládá z hlavičky smyčky, která určuje, kolikrát se bude tělo smyčky opakovat.
Tělo smyčky je část smyčky, která se opakuje, když je smyčka provedena.
Tělem smyčky může být příkaz, více příkazů nebo jiná smyčka nebo větev.
Když je tělem smyčky další smyčka nebo větev, nazývají se vnořené.
vnořená smyčka
Při prvním průchodu vnější smyčka zavolá vnitřní smyčku, která běží do konce, načež se řízení přenese do těla vnější smyčky. Při druhém průchodu vnější smyčka opět volá vnitřní. A tak dále, dokud vnější smyčka neskončí.
Vnořená větev
Zvažte řešení problému s vnořenými větvemi a smyčkami:
Úkol 1 Robot je na zdi, která má díry, pohybuje se po zdi doprava, robot musí natřít všechny buňky, kde jsou díry.
použití Robot alg brzy. nc sbohem napravo S svobodně
nc sbohem dno volné
.přemalovat;že jo
. . kts
. . že jo
. kts ošidit Z
![](https://i0.wp.com/ds04.infourok.ru/uploads/ex/0fdf/00036b3e-3d132408/hello_html_m4b701eae.png)
![](https://i1.wp.com/ds04.infourok.ru/uploads/ex/0fdf/00036b3e-3d132408/hello_html_7cdbbf93.png)
Pojďme vyřešit stejný problém s vnější smyčkou while a vnořenou smyčkou while.
Robot existuje v určitém prostředí (obdélníkové kostkované pole). Mezi některými buňkami pole mohou být umístěny stěny. Některé buňky mohou být zastíněné (obr. 3.11).
Robot zabírá přesně jednu buňku pole.
Na příkazy nahoru, dolů, doleva a doprava se robot přesune do další buňky v určeném směru. Pokud je na cestě zeď, dojde k poruše - zobrazí se zpráva o nemožnosti provedení dalšího příkazu.
Na příkaz k přemalování robot přemaluje buňku, ve které stojí. Pokud již byla buňka přelakována, bude přelakována znovu, ačkoliv nedojde k žádným viditelným změnám.
Robot může provádět pouze správně napsané příkazy. Pokud místo příkazu zapíšete, pak Robot tomuto zadání nerozumí a okamžitě ohlásí chybu.
Ó chyby: 1 syntaktické; 2. logické
Popisy scén jsou uloženy v textové soubory speciální formát (formát .fil).
Proud- prostředí, ve kterém se robot nachází tento moment(včetně informací o poloze Robota).
Domov- prostředí, do kterého je Robot násilně umístěn na začátku provádění programu pomocí Robota.
Operační postup:
Dotázat se startovací prostředí podle zadání:
2. Uveďte dodavatele:
Nabídka Vložit → Použít robota
3. Napište algoritmus pro řešení problému.
4. Spusťte algoritmus (Menu Spustit → Spustit nepřetržitě / F9)
Systém příkazů vykonavatele Robota v systému KUMIR
tým |
Akce |
nahoru |
Robot se posune o 1 buňku nahoru |
cesta dolů |
Robot se posune o 1 buňku dolů |
doleva |
Robot se posune o 1 buňku doleva |
že jo |
Robot se posune o 1 buňku doprava |
přemalovat |
Robot maluje buňku, ve které se nachází |
právo zdarma |
Robot kontroluje provedení příslušného jednoduchý podmínky |
ponechán volný |
↓ |
horní volný |
↓ |
dno volné |
↓ |
buňka je zastíněna |
↓ |
klec čistá |
↓ |
Cyklické algoritmy
Cyklus organizace opakujících se akcí, dokud není splněna určitá podmínka .
Tělo smyčky - soubor opakovatelných akcí.
podmínka - booleovský výraz (jednoduchý nebo komplexní (složený))
Typy cyklů:
1.Smyčka "Opakujte nkrát" 2. Smyčka "Sbohem"
nc n krát nashledanou
. . Tělo smyčky. . Tělo smyčky
kts kts
Příklad: nashledanou právo zdarma
Celkový pohled na cyklus "Opakujte n-krát:
OPAKOVÁNÍ n KRÁT
KONEC
kts
Celkový pohled na smyčku while:
KDYŽ DĚLAT
KONEC
Složené podmínky vytvořené z jednoho nebo více jednoduché termíny a služební slova A NEBO NE.
Složený stav A a B(kde A, B jsou jednoduché podmínky) je splněna, když je splněna každá ze dvou jednoduchých podmínek v ní obsažených.
Ať A - nahoře zdarma V - zdarma vpravo pak složená podmínka A a B- zdarma nahoře A zdarma vpravo.
Složený stav A NEBO B je splněna, je-li splněna alespoň jedna ze dvou jednoduchých podmínek v něm obsažených: nahoře zdarma NEBO vpravo zdarma
Složený stav NE A- splněno, když podmínka A není splněna.
Příklad: Nechť A je stínovaná buňka (jednoduchá podmínka).
P Kontrola složeného stavu NE A:
a) A - hotovo, NOT A (NE šrafované) - nedokončeno.
b) A – nedokončeno, NE A (NEŠtínováno) – hotovo.
Příkaz větve
Větvení - forma organizace úkonů, při které se v závislosti na splnění či nesplnění určité podmínky provádí buď ten či onen sled úkonů.
Obecný pohled na příkaz IF:
LI PAK V OPAČNÉM PŘÍPADĚ
KONEC
V jazyce KUMIR:
Úplné větvení: Částečné větvení:
-li pak
-li pak
v opačném případě
všechny všechny
Algoritmus pomocníka- algoritmus, který řeší nějaký dílčí problém hlavního problému.
V systému KUMIR se pomocné algoritmy zapisují na konec hlavního programu (za servisní slovo ošidit) jsou volány ke spuštění v hlavním programu podle jména.
V průzkumy a úkoly
1. Zadejte všechny algoritmy tří příkazů, které přesunou robota z jeho původní pozice do buňky B.
Existuje algoritmus pro tento úkol, během kterého robot dělá:
a) dva kroky b) čtyři kroky; c) pět kroků; d) sedm kroků?
Péťa vytvořil algoritmus, který přenese robota z buňky A do buňky B s překreslenými buňkami. Co by měl Kolja s tímto algoritmem udělat, aby získal algoritmus, který vezme robota z B do A a vyplní stejné buňky?
7. Dva jsou známí pomocné algoritmy Robot
Nakreslete, co se stane, když robot provede následující základní algoritmy:
A) nc 5krát vzor_1 že jo; že jo; |
b) nc 7krát vzor_2 že jo; že jo |
v) že jo; že jo; že jo nahoru; nahoru že jo; že jo; že jo cesta dolů; cesta dolů |
G) že jo; že jo že jo; že jo |
8. Vytvořte algoritmy, podle kterých bude robot malovat zadané buňky:
![](https://i0.wp.com/nenuda.ru/nuda/167/166713/166713_html_m7b310a4a.jpg)
![](https://i0.wp.com/nenuda.ru/nuda/167/166713/166713_html_m25c3291a.jpg)
10. Je známo, že někde napravo od Robota je zastíněná buňka.
Z opusťte algoritmus, pod jehož kontrolou Robot vybarví řadu buněk až k zastíněné buňce a vrátí se do původní polohy.
11. Je známo, že Robot se nachází poblíž levého vchodu do horizontální chodby.
12. Je známo, že Robot je někde ve vodorovné chodbě. Žádná z cel chodby není vymalovaná.
Sestavte algoritmus, pod jehož kontrolou robot přetře všechny buňky této chodby a vrátí se do původní polohy.
13. V řadě deseti buněk napravo od robota jsou některé buňky stínované.
Z opusťte algoritmus, který maluje buňky:
a) pod každou zastíněnou buňkou;
b) nad a pod každou zastíněnou buňkou.
14. Co lze říci o správnosti následujícího fragmentu algoritmu?
nashledanou buňka je zastíněna
LI právo zdarma PAK
že jo; přemalovat
na C
15. Napište program, pomocí kterého se Robot dostane do buňky B ve všech třech bludištích.
1
![](https://i0.wp.com/nenuda.ru/nuda/167/166713/166713_html_m153e0ebf.jpg)
W adachi GIA
Chodba 1. Robot je někde ve vertikální chodbě. Žádná z cel chodby není vymalovaná. Vytvořte algoritmus, podle kterého robot překreslí všechny buňky této chodby a vrátí se do své původní polohy.
Na
NutnéDáno
chodba2. Robot je umístěn v horní buňce úzké vertikální chodby. Šířka chodby je jedna buňka, délka chodby může být libovolná.
Napište algoritmus pro robota, který vyplní všechny buňky uvnitř chodby a vrátí robota do původní polohy. Například pro výše uvedený obrázek by měl robot překreslit následující buňky (viz obrázek):
Na nekonečném poli je dlouhá vodorovná stěna. Délka zdi není známa. Robot je v jedné z klecí přímo nad zdí. Počáteční poloha robota je také neznámá. Jedna z možných pozic:
![](https://i2.wp.com/nenuda.ru/nuda/167/166713/166713_html_m143dfc65.png)
![](https://i0.wp.com/nenuda.ru/nuda/167/166713/166713_html_mcb4f12a.png)
Nutné
Dáno
Napište algoritmus pro robota, který vybarví všechny buňky nad a přiléhající ke stěně, bez ohledu na velikost stěny a počáteční polohu robota. Například pro daný výkres musí robot překreslit následující buňky:
Konečná pozice robota může být libovolná. Při provádění algoritmu by neměl být robot zničen.
Na nekonečném poli je dlouhá kolmá stěna. Délka zdi není známa. Robot je v jedné z klecí umístěných přímo napravo od zdi. Počáteční poloha robota je také neznámá. Jedna z možných pozic robota je znázorněna na obrázku (robot je označen písmenem „P“): Napište algoritmus pro práci, která maluje přes všechny buňky přiléhající ke zdi: vlevo, počínaje shora nenatřený a přes jeden; na pravé straně, počínaje zdola stínované a přes jednu. Robot musí přebarvit pouze buňky, které vyhovují tento stav. Například pro výše uvedený obrázek musí robot vyplnit následující buňky (viz obrázek): Konečné umístění robota může být libovolné. Algoritmus musí vyřešit problém pro libovolnou velikost stěny a jakoukoli platnou počáteční polohu robota. Při provádění algoritmu by se robot neměl zhroutit.
Napište algoritmus pro robota, který vybarví všechny buňky umístěné nalevo od svislé stěny a nad vodorovnou stěnou a přilehlé k nim. Robot musí přetírat pouze buňky, které splňují tuto podmínku. Například pro výše uvedený obrázek musí robot překreslit následující buňky (viz obrázek).
H napište algoritmus pro robota, který maluje buňky sousedící se stěnou, shora a zdola, počínaje zleva a přes jednu. Robot musí přetírat pouze buňky, které splňují tuto podmínku. Například pro daný obrázek a) musí robot překreslit následující buňky (viz obr. b).
Konečná pozice robota může být libovolná. Algoritmus musí vyřešit problém pro libovolnou velikost stěny a jakoukoli platnou počáteční polohu robota.
R | |||||
Na nekonečném poli je dlouhá kolmá stěna. Délka zdi není známa. Robot je v jedné z klecí umístěných přímo nalevo od zdi. Počáteční poloha robota je také neznámá. Jedna z možných poloh robota je znázorněna na obrázku (robot je označen písmenem „P“):
vše vlevo;
vpravo, počínaje shora nenatřeným a přes jeden.
B 1102_GIA2011
Na nekonečném poli jsou dvě vodorovné stěny. Délka stěn není známa. Vzdálenost mezi stěnami není známa. Robot je umístěn nad spodní stěnou v kleci umístěné na jejím levém okraji. Napište algoritmus pro robota, který vybarví všechny buňky umístěné nad spodní stěnou a pod horní stěnou a přilehlé k nim. Robot musí přetírat pouze buňky, které splňují tuto podmínku. Například pro výše uvedený výkres musí robot vyplnit následující buňky (viz obrázek):
Konečné umístění robota může být libovolné. Algoritmus musí vyřešit problém pro libovolnou velikost pole a jakékoli přípustné umístění stěn uvnitř obdélníkového pole. Při provádění algoritmu by se robot neměl zhroutit.
V 1103_GIA_2011
Na nekonečném poli je vodorovná stěna. Délka zdi není známa. Z pravého konce stěny se táhne dolů svislá stěna, rovněž neznámé délky. Robot je umístěn nad vodorovnou stěnou v kleci umístěné na jejím levém okraji. Obrázek ukazuje jeden z možné způsoby umístění zdí a Robota (Robot je označen písmenem „P“).
Napište algoritmus pro robota, který vybarví všechny buňky umístěné nad vodorovnou stěnou a napravo od svislé stěny a přilehlé k nim. Robot musí přetírat pouze buňky, které splňují tuto podmínku. Například pro výše uvedený obrázek musí robot překreslit následující buňky (viz obrázek).