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ě:

  1. Hodnotí se hodnota logického výrazu.
  2. 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ě:

  1. Provede se tělo smyčky
  2. 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
ponecháme algoritmus pro řešení problému s vnější smyčkou while a vnořenou smyčkou while.

R Stejný problém řešíme pomocí vnější smyčky while a vnořené větve.

Pojďme vyřešit stejný problém s vnější smyčkou while a vnořenou smyčkou while.

Robot řízení exekutora v systému KUMIR

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:


  1. Dotázat se startovací prostředí podle zadání:
Nabídka Nástroje → Změnit výchozí prostředí robota (nakreslit prostředí podle stavu úkolu, pojmenovat, uložit do složky Osobní)

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ů?


  1. 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:



9. Je známo, že někde napravo od Robota je zeď. Sestavte algoritmus, pod jehož kontrolou robot přemaluje řadu buněk až ke zdi a vrátí se do původní polohy.

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.


16. Napište program, podle kterého bude robot moci jít chodbou z levého dolního rohu pole do pravého horního rohu. Chodba má šířku jedné buňky a táhne se ve směru zleva-dolů-vpravo nahoru. Příklad možného koridoru je na obrázku.

W

adachi GIA


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

  1. 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á.

Možná varianta počátečního umístění robota je znázorněna na obrázku (robot je označen písmenem „P“)

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


  1. 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:
H


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.



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

  1. 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“):
Napište pro práci algoritmus, který vykreslí všechny buňky sousedící se stěnou:

  • vše vlevo;

  • vpravo, počínaje shora nenatřeným a přes jeden.
Robot musí přetírat pouze buňky, které splňují tuto podmínku.

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