Ako urobiť úlohu s robotom v informatike. Praktické úlohy pre robotníka

Domov / Operačné systémy

Úlohou učiteľa je kráčať touto cestou so študentom, nie poistiť sa proti neúspechu, ale predchádzať sklamaniu z možných ťažkostí. Je veľmi dôležité organizovať hodiny tak, aby deti samé objavovali nové veci prostredníctvom aktivít, ktoré sú pre nich zmysluplné.
Ako pomáha robot pri štúdiu informatiky? Naznačím len niekoľko tém informatiky, na ktorých je robotika založená.
Téma "Súbory a súborový systém".
Študent mal k dispozícii mikropočítač LEGO®NXT zo vzdelávacej sady LEGO Mindstorms NXT Education. Ovládajte to súborový systém prebieha pomocou štandardných príkazov, ale keďže objem pamäte nie je veľký, treba neustále kontrolovať, čo je potrebné a čo nie. Aby ste mohli vyjadriť akcie robota, zobraziť obrázok alebo pridať do knižnice pracovných programov, musíte pracovať so základnými pojmami informatiky: súbor, typ súboru, cesta k súboru, ponuka, priečinok.
Téma: „Informačné procesy“, „Kódovanie informácií“.
Robotická súprava je vybavená senzormi, ktoré zaznamenávajú zvukové, hmatové a obrazové informácie. Po digitalizácii sa informácie môžu zobraziť na obrazovke. Špeciálna funkcia mikropočítača umožňuje experimentovať so snímačmi a motormi pomocou programov pripravených na spustenie. Po vykonaní série experimentov so senzormi sa objaví pochopenie: prečo ultrazvukový senzor vzdialenosti funguje pomalšie ako senzor infračerveného svetla, ako sa zvuk mení na digitálny kód atď. Štúdium informačných procesov a princípov kódovania informácií poskytuje hlbšie pochopenie podstaty informačných technológií.

Téma: Komunikačné technológie.
Mikropočítač LEGO®NXT podporuje technológiu bezdrôtová komunikácia. Pomocou funkcie Bluetooth môžete nastaviť bezdrôtové pripojenie medzi mikropočítačom NXT a inými zariadeniami, ktoré majú Bluetooth zariadenie, napríklad s inými NXT, s mobilné telefóny alebo s počítačmi. Po nainštalovaní bluetooth pripojenie, je možné: sťahovať programy z počítača na diaľku; posielať programy z iných zariadení (nie z počítača), vrátane z NXT; posielať programy jednotlivým NXT aj ich skupinám. Táto technológia umožňuje ovládať robota pomocou mobilného telefónu.

Témy „Algoritmy. Algorithm Executor“, „Prostredie programovania“.
Na prvé zoznámenie sa s robotom môžete priamo naprogramovať jednotku NXT bez prístupu k počítaču. Priamo na displeji môžete pomocou šablóny piatich príkazov vytvárať jednoduchý program a zacykliť ho. Bez znalosti základných algoritmických štruktúr a ovládania programovacieho prostredia sa to však nezaobíde. Práve schopnosť naprogramovať robota z neho robí univerzálneho umelca schopného riešiť rôzne problémy. Mali by ste začať ovládať programovaciu technológiu pomocou vizuálnych programovacích prostredí a potom prejsť na výkonnejšie a modernejšie prostredia orientované na udalosti.
Robotika si teda bude vyžadovať základné znalosti informatiky a nevyčerpateľná túžba študenta urobiť zo svojho robota „najlepšieho“ ho núti osvojiť si nové poznatky.
Prečo možno robota nazvať ideálnym učebným nástrojom? Pretože tento nástroj umožňuje vytvoriť vzdelávacie prostredie, ktoré bude využívať prirodzenú túžbu dieťaťa hrať sa, tvoriť a komunikovať s rovesníkmi. Môžeme teda zdôrazniť výhody robotiky ako vyučovacieho nástroja:
. Získavanie vedomostí prebieha počas hry.
. Stavba robota ponúka tvorivú slobodu.
. Väčšina študentov má túžbu zlepšiť svoju prácu.

Ako príklad by som uviedol model „Robot doručujúci bezplatné dobroty“, ktorý vytvoril žiak 6. ročníka v rámci kurzu „Programovanie robotov“ počas mimoškolských aktivít. Robot je zostavený zo sady LEGO MINDSTORMS NXT Education 9797 podľa štandardného modelu Alpharex 1.0 a je doplnený o farebný senzor na indikáciu stavu robota a podnos na pochúťky.
Cieľom práce je v rámci dostupných zdrojov implementovať model ľudskej chôdze. Pohyb každej nohy je riadený motorom a mechanickou zostavou ozubených kolies a pák. Jedna páka pohybuje nohou hore a dole, druhá ju posúva dopredu. V tomto prípade sa telo vychýli smerom k opornej nohe, vďaka čomu robot udržuje rovnováhu. Táto chôdza sa nazýva "miešanie"
Samostatný motor ovláda snímač vzdialenosti a ramená páky, ktoré držia dotykový snímač a snímač farieb. Zásobník na pamlsky je upevnený.
Robot je naprogramovaný tak, aby fungoval ako doručovateľ, napríklad bezplatné maškrty, podľa nasledujúceho algoritmu správania. Robot sprevádza svoj pohyb priamou frázou: „Som robot Alpharex, ponúkam darček zadarmo!“ Osoba, ktorá chce nadviazať kontakt s robotom, ho môže zastaviť gestom. Po zastavení robot povie vetu: „Pomôž si a stlač tlačidlo!“ Po prijatí cukríka musí osoba raz stlačiť tlačidlo na znak vďačnosti. Tri sekundy po zastavení bude robot pokračovať v pohybe. Keď sa pochúťky minú (robot je naprogramovaný tak, aby mal na tácke konkrétny počet cukríkov), robot sa rozlúči, rozsvieti sa červená kontrolka a robot sa zastaví.

Program na ovládanie robota je napísaný v prostredí NXT Programming 2.0.

A dnes budeme hovoriť o cykloch. Poďme zistiť, čo je cyklus a ako naučiť nášho robota vykonávať cyklické algoritmy.

takže, čo je cyklus? Predstavte si, že sme v triede telesnej kultúry a máme pred sebou úlohu urobte 7 drepov. Táto úloha môže byť napísaná ako lineárny algoritmus a potom bude vyzerať asi takto:

urobiť drep

urobiť drep

urobiť drep

urobiť drep

urobiť drep

urobiť drep

urobiť drep

To znamená, že príkaz „urob drep“ sme zopakovali 7-krát. Má zmysel písať 7 rovnakých príkazov? Možno bude jednoduchšie vydať príkaz urobte 7 drepov? Samozrejme je to jednoduchšie a správnejšie. Toto je cyklus. Príklady cyklov zo života si môžete pamätať aj sami - je ich pomerne veľa.

Teda lineárny algoritmus, kde sa opakujú rovnaké príkazy môžeme zariadiť ako cyklický algoritmus- niečo takéto:

opakujte 7 krát

urobiť drep

koniec cyklu

Takto sme navrhli cyklus v jazyku, ktorý sme vymysleli. Robotický umelec má tiež schopnosť zaznamenávať cykly. navyše cykly sú rôzne. Možnosť, na ktorú sme sa práve pozreli, sa volá slučka s počítadlom alebo slučka s parametrom.

Typy cyklov.

Slučka s počítadlom.

Slučka s počítadlom používa sa, keď je vopred známe, koľko opakovaní je potrebné vykonať. Vo vyššie uvedenom príklade s drepmi je to presne tak.

Aby ste mohli napísať slučku s počítadlom pre vykonávateľa, musíte poznať jeho syntax. A on je takýto:

nc<počet opakovaní> krát

<команда 1>

<команда 2>

<команда n>

Tu musíme určiť počet opakovaní (počet) a príkazy, ktoré sa budú opakovať. Volajú sa príkazy, ktoré sa opakujú v slučke telo slučky.

Pozrime sa na to na príklade.

Robot bol spočiatku v ľavej hornej cele.

Najprv riešme problém lineárne. V tomto prípade prefarbíme aktuálnu bunku a posunieme 1 bunku doprava a program bude vyzerať takto:
použite robot
alg
začiatok

prelakovať

správne

prelakovať

správne

prelakovať

správne

prelakovať

správne

prelakovať

správne

prelakovať

správne

prelakovať

správne

Ako vidíte, príkazy na maľovanie a doprava sa opakujú 7 krát. Poďme teraz prepísať program pomocou slučky. Mimochodom, ak chcete do svojho programu vložiť cyklus, môžete prejsť do ponuky Vložiť vyberte položku tsk-tsk-tsk alebo stlačte jednu z kombinácií klávesov Esc, P(ruské písmeno R) príp Esc, H(latinské písmeno H). Navyše tlačidlá musia byť stlačené postupne- najprv Esc, uvoľnite ho a až potom P alebo H.

Takže tu je náš slučkový program bude vyzerať takto:

použite robot

nts 7-krát

prelakovať

správne

Ak to spustíme, uvidíme, že výsledok bude rovnaký – 7 vyplnených buniek. Program sa však stal kratším a oveľa inteligentnejším z algoritmického hľadiska!

Na zahriatie a posilnenie vám navrhujem, aby ste si sami napísali program pre Robota, ktorý nakreslí štvorec so stranou 7 buniek. Prirodzene, pomocou slučky. Čakám na riešenie v komentároch.

Podmienená slučka.

Pri riešení úlohy 19 Štátnej akademickej informatiky v informatike s robotom nebude fungovať použitie slučky s počítadlom. Keďže pole je spravidla nekonečné a steny nemajú špecifickú dĺžku. Preto nebudeme môcť určiť počet opakovaní pre slučku s počítadlom. Ale to nevadí – pomôže nám to slučka s podmienkou.

Vráťme sa k telesnej výchove a zmeňme problém. Niekto totiž možno nezvládne 7 drepov, iný 27. Dá sa s tým pri tvorbe cyklu počítať? určite. Až teraz použijeme nie počítadlo (počet opakovaní), ale podmienku. Predtým, ako sa unavíte, urobte napríklad drepy. V tomto prípade človek neurobí konkrétny počet drepov, ale bude drepovať, kým sa neunaví. A náš cyklus v abstraktnom jazyku bude mať nasledujúcu formu:

dovidenia nie unavený

urobiť drep

koniec cyklu

Slová v našom prípade nie sú unavené - to je podmienka. Keď je true, cyklus sa vykoná. Ak je nepravdivý (unavený), telo cyklu sa nevykoná. Robotický umelec má niekoľko podmienok

zadarmo navrchu

zadarmo zdola

ponechaný voľný

voľný vpravo

stena hore

stena nižšie

ľavá stena

stena vpravo

Ale v podmienkach úlohy 19 GIA sú uvedené iba prvé 4, takže ich použijeme.

Teraz vyriešme ďalšiu úlohu pre Robota - nakreslite zvislú čiaru zľava doprava k okraju poľa pomocou slučky s podmienkou. Robot je spočiatku umiestnený v ľavom hornom rohu.

Najprv sformulujme verbálny algoritmus - to znamená, že slovami opíšeme, čo robot potrebuje urobiť. Tento algoritmus bude znieť asi takto:

« Kým je napravo voľné miesto, urobte krok doprava a vymaľujte celu »

Výsledkom je, že Robot prebehne cez všetky bunky napravo a bude ich maľovať, až kým nebude napravo stena.

Zdrojový kód nášho programu pre robota bude vyzerať takto:

použite robot

nts právo je zatiaľ zadarmo

správne

prelakovať

Ako výsledok spustenia tohto programu uvidíme nasledujúci obrázok:

Naučili sme sa to žiadať pre ďalšiu prácu. Teraz prejdime priamo ku kompilácii algoritmov pre robota pomocou jednoduchých príkazov.

Ak uprednostňujete informácie vo formáte videonávodu, potom je na stránke videonávod

Každý účinkujúci musí mať systém príkazov ( LYŽOVAŤpríkazový systém vykonávateľa). Systém príkazov vykonávateľa- súbor všetkých príkazov, ktoré môže umelec vykonať. Ako príklad si uveďme vycvičeného psa. Vie, ako vykonávať niektoré príkazy – „Sadni“, „Ľahni“, „Nablízku“ atď. Toto je jej systém príkazov.

Jednoduché príkazy robota

Náš robot má tiež príkazový systém. Dnes sa pozrieme na jednoduché príkazy Robot. Celkovo je ich 5:

  • hore
  • vľavo
  • správne
  • prelakovať

Výsledok vykonania týchto príkazov je jasný z ich názvov:

  1. hore— posuňte robota o jednu bunku nahor
  2. dole— posuňte robota o jednu bunku nadol
  3. vľavo— posuňte robota o jednu bunku doľava
  4. správne— posuňte robota o jednu bunku doprava
  5. prelakovať— prefarbiť aktuálnu bunku (bunku, v ktorej sa nachádza robot).

Tieto príkazy je možné písať z klávesnice alebo môžete použiť klávesové skratky (ich stlačením sa príkazy vložia automaticky):

  • hore - uniknúť, hore (šípka hore)
  • dole - uniknúť, dole (šípka nadol)
  • doľava - uniknúť, doľava (šípka doľava)
  • vpravo - Escape, Right (šípka vpravo)
  • premaľovať – Útek, priestor (priestor)

Upozorňujeme, že musíte zadať požadovanú kombináciu klávesových skratiek nie tak, ako sme zvyknutí! Sme zvyknutí stláčať klávesy súčasne, ale tu ich potrebujeme stlačte postupne. Ak chcete napríklad zadať príkaz nahor, musíte stlačiť kláves Escape, uvoľniť ho a potom stlačiť šípku nahor. Toto je potrebné mať na pamäti.

Teraz sme pripravení napísať prvý algoritmus pre robota. Navrhujem začať s jednoduchým - nakreslite štvorec so stranou 3 buniek. Poďme!

Poďme spustiť Idol, on. Môžem začať písať program? Samozrejme, že nie! Nie sme! Poďme na to. Odporúčam použiť tento:

Teraz je všetko pripravené. Začnime písať program. Zatiaľ čo ona vyzerá takto

Odstránenie symbolu „|“. a nazvite náš algoritmus „štvorcový“

Navrhujem nakresliť štvorec pohybom v smere hodinových ručičiek. Najprv vymaľme aktuálnu bunku zadaním príkazu prelakovať. Potom urobíme krok doprava a znova premaľujeme bunku. A ešte raz vykročte doprava a premaľujte.

Skúsme spustiť program a uvidíme, čo sa stane. Na spustenie stlačte F9 alebo tlačidlo na paneli s nástrojmi

V dôsledku toho by sme mali vidieť takýto obrázok

Ak sa vám takéto okno robota nezobrazí, potom na paneli s nástrojmi kliknite na „ Zobraziť okno robota"alebo v ponuke Robot zvoľte " Zobraziť okno robota". Pokračujme ďalej.

Teraz sa presunieme dole a pretrieme pravá stranaštvorec:

dole

prelakovať

dole

prelakovať

Potom poďme doľava a namaľujeme spodný okraj štvorca

vľavo

prelakovať

vľavo

prelakovať

Ostala nám jedna nenatretá bunka. Poďme si to natrieť

hore

prelakovať

Všetko je pripravené! V dôsledku toho náš program vyzerá takto:

použite robot

alg Štvorcový

začiatok

prelakovať

správne

prelakovať

správne

prelakovať

dole

prelakovať

dole

prelakovať

Ovládanie vykonávateľa robota v systéme KUMIR

Robot existuje v určitom prostredí (obdĺžnikové šachovnicové pole). Medzi niektorými bunkami poľa môžu byť steny. Niektoré bunky môžu byť prelakované (obr. 3.11).

Robot zaberá presne jednu bunku poľa.

Pomocou príkazov hore, dole, doľava a doprava sa robot presunie do susednej bunky v naznačenom smere. Ak je v ceste stena, dôjde k poruche - zobrazí sa hlásenie, že nie je možné vykonať ďalší príkaz.

Na príkaz maľovať Robot vyfarbí bunku, v ktorej stojí. Ak už bola bunka prelakovaná, prelakuje sa znova, aj keď nedôjde k žiadnym viditeľným zmenám.

Robot môže vykonávať iba správne napísané príkazy. Ak namiesto príkazu nadol zapíšete, robot tomuto zadania nerozumie a okamžite ohlási chybu.

O
chyby: 1 syntaktické; 2. logické

Popisy situácií sú uložené v textové súboryšpeciálny formát (format.fil).

Aktuálne- prostredie, v ktorom sa Robot nachádza momentálne(vrátane informácií o polohe robota).

Spustenie- prostredie, do ktorého je robot nútený umiestniť na začiatku vykonávania programu pomocou robota.

Operačný postup:


  1. Set štartovacie prostredie podľa problémových podmienok:
Ponuka Nástroje → Zmeniť štartovacie prostredie robota (nakresliť prostredie podľa podmienok úlohy, pomenovať ho, uložiť ho do osobného priečinka)

2. Uveďte dodávateľa:

Ponuka Vložiť → Použiť robota

3. Napíšte algoritmus na riešenie problému.

4. Spustite algoritmus (Spustenie ponuky → Spustiť nepretržite /F9)

Systém velenia robotníka v systéme KUMIR


Tím

Akcia

hore

Robot sa posunie o 1 políčko nahor

dole

Robot sa posunie o 1 políčko nadol

vľavo

Robot sa posunie o 1 pole doľava

správne

Robot sa posunie o 1 políčko doprava

prelakovať

Robot vyfarbí bunku, v ktorej sa nachádza

voľný vpravo

Robot skontroluje vykonanie zodpovedajúceho jednoduché podmienky

ponechaný voľný



zadarmo navrchu



zadarmo zdola



cela je vymaľovaná



klietka je čistá



Cyklické algoritmy

Cyklus– organizácia opakovania akcií, kým je splnená určitá podmienka .

Telo slučky je súbor opakovateľných akcií.

podmienka - logický výraz (jednoduchý alebo zložitý (zložený))
Typy cyklov:

1.Slučka „Opakovať n-krát“ 2. Slučka „Do“
nts n-krát nts zatiaľ
. . Telo slučky. . Telo slučky
kts kts

Príklad: nts zatiaľ voľný vpravo


Celkový pohľad na cyklus „Opakujte n-krát“:

OPAKOVAŤ n KRÁT

KONIEC
kts

Celkový pohľad na cyklus „kým“:

DO TOHO BYE

KONIEC
Zložené podmienky sú tvorené z jedného alebo viacerých jednoduché podmienky a funkčné slová A, ALEBO, NIE.


Zložený stav A A B(kde A, B sú jednoduché podmienky), je splnená, keď je splnená každá z dvoch jednoduchých podmienok v nej zahrnutých.

Nechaj A - zadarmo navrchu, IN - voľný vpravo, potom zložená podmienka A A B- zadarmo hore a zadarmo vpravo.


Zložený stav A ALEBO B splnené, ak je splnená aspoň jedna z dvoch jednoduchých podmienok, ktoré sú v ňom zahrnuté: top zadarmo ALEBO vpravo zadarmo
Zložený stav NIE A- splnené, keď podmienka A nie je splnená.

Príklad: Nech A je farebná bunka (jednoduchá podmienka).

P Kontrola zloženého stavu NIE A:

a) A - vyplnené, NIE A (NIE vytieňované) - nevyplnené.

b) A - nedokončené, NIE A (NIE je vytieňované) - vyplnené.


Príkaz pobočky

Vetvenie - forma organizácie úkonov, pri ktorej sa v závislosti od splnenia alebo nesplnenia nejakej podmienky vykonáva buď jeden alebo iný sled úkonov.

Všeobecný pohľad na príkaz IF:

AK TO INAK

KONIEC

V jazyku IKONY:

Úplné vetvenie: Neúplné vetvenie:
Ak To Ak To

inak

všetko všetko

Pomocný algoritmus- algoritmus, ktorý rieši nejakú čiastkovú úlohu hlavného problému.

V systéme KUMIR sa pomocné algoritmy píšu na konci hlavného programu (za obslužným slovom kon), sú volané na vykonanie v hlavnom programe podľa názvu.

IN prieskumy a úlohy

1. Zadajte všetky algoritmy z troch príkazov, ktoré presunú robota z jeho pôvodnej polohy do bunky B.

Existuje algoritmus pre túto úlohu, v ktorej robot robí:

a) dva kroky; b) štyri kroky; c) päť krokov; d) sedem krokov?


  1. Petya zostavil algoritmus, ktorý prenáša robota z bunky A do bunky B namaľovaním niektorých buniek. Čo by mal Kolya urobiť s týmto algoritmom, aby získal algoritmus, ktorý presunie robota z B do A a vyfarbí rovnaké bunky?


7. Sú známe dva pomocné robotické algoritmy

Nakreslite, čo sa stane, keď robot vykoná nasledujúce základné algoritmy:


A)

nts 5 krát


vzor_1

právo; právo;


b)

nts 7-krát


vzor_2

právo; správne


V)
právo; právo; správne

hore; hore

právo; právo; správne

dole; dole


G)
právo; správne
právo; správne

8. Vytvorte algoritmy, pod ktorých kontrolou bude robot maľovať označené bunky:



9. Je známe, že niekde napravo od Robota je stena. Vytvorte algoritmus, pod ktorého kontrolou robot nakreslí rad buniek až po stenu a vráti sa do pôvodnej polohy.

10. Je známe, že niekde napravo od Robota je zaplnená bunka.

S opustite algoritmus, pod ktorého kontrolou Robot vyfarbí niekoľko buniek až po vyfarbenú bunku a vráti sa do pôvodnej polohy.

11. Je známe, že Robot sa nachádza vedľa ľavého vchodu do horizontálnej chodby.

12. Je známe, že Robot je niekde v horizontálnej chodbe. Žiadna z chodbových buniek nie je premaľovaná.

Vytvorte algoritmus, pod ktorého kontrolou Robot vyfarbí všetky bunky tejto chodby a vráti sa do pôvodnej polohy.


13. V rade desiatich buniek napravo od robota sú niektoré bunky zatienené.

S opustite algoritmus, ktorý maľuje bunky:

a) pod každou tieňovanou bunkou;

b) nad a pod každou zatienenou bunkou.


14. Čo možno povedať o správnosti nasledujúceho fragmentu algoritmu?

nts zatiaľ cela je vymaľovaná

AK voľný vpravo TO

právo; prelakovať

Komu
ts

15. Napíšte program, pomocou ktorého sa Robot dostane do bunky B vo všetkých troch bludiskách.


16. Napíšte program, podľa ktorého bude robot môcť chodiť po chodbe z ľavého dolného rohu poľa do pravého horného rohu. Chodba je široká jedna bunka a tiahne sa v smere zľava-dole doprava nahor. Príklad možnej chodby je znázornený na obrázku.

Z

Úspechy GIA


  1. Chodba 1. Robot je umiestnený niekde vo vertikálnej chodbe. Žiadna z chodbových buniek nie je premaľovaná. Vytvorte algoritmus, pod ktorého kontrolou Robot vyfarbí všetky bunky tejto chodby a vráti sa do pôvodnej polohy.

  1. TO
    Nevyhnutné

    Dané
    chodba2. Robot je umiestnený v hornej cele úzkej vertikálnej chodby. Šírka chodby je jedna bunka, dĺžka chodby môže byť ľubovoľná.

Možná možnosť počiatočného umiestnenia robota je znázornená na obrázku (robot je označený písmenom „P“).

Napíšte algoritmus pre robota, ktorý vyfarbí všetky bunky v chodbe a vráti robota do jeho pôvodnej polohy. Napríklad na obrázku vyššie musí robot premaľovať nasledujúce bunky (pozri obrázok):


  1. V nekonečnom poli je dlhá horizontálna stena. Dĺžka steny nie je známa. Robot je v jednej z buniek priamo nad stenou. Počiatočná poloha robota je tiež neznáma. Jedna z možných pozícií:
N


Nevyhnutné

Dané
Napíšte algoritmus pre robota, ktorý vyfarbí všetky bunky umiestnené nad stenou a priľahlé k nej, bez ohľadu na veľkosť steny a počiatočnú polohu robota. Napríklad na obrázku vyššie musí robot premaľovať nasledujúce bunky:

Konečná poloha robota môže byť ľubovoľná. Pri vykonávaní algoritmu by sa robot nemal zničiť.



  1. Nekonečné pole má dlhú kolmú stenu. Dĺžka steny nie je známa. Robot je v jednej z klietok umiestnených priamo napravo od steny. Rovnako nie je známa ani počiatočná poloha robota. Jedna z možných pozícií robota je znázornená na obrázku (robot je označený písmenom „P“): Napíšte algoritmus na prácu, ktorý vyfarbí všetky bunky susediace so stenou: vľavo, počnúc zhora nenatreté jeden a cez jeden; vpravo, počnúc od spodného tieňovaného a cez jeden. Robot musí maľovať len bunky, ktoré spĺňajú túto podmienku. Napríklad pre vyššie uvedený obrázok musí robot vyplniť nasledujúce bunky (pozri obrázok): Konečné umiestnenie robota môže byť ľubovoľné. Algoritmus musí vyriešiť problém pre ľubovoľnú veľkosť steny a akúkoľvek platnú štartovaciu pozíciu robota. Pri vykonávaní algoritmu by sa robot nemal zničiť.


Napíšte algoritmus pre robota, ktorý vyfarbí všetky bunky umiestnené naľavo od zvislej steny a nad vodorovnou stenou a priľahlé k nim. Robot musí maľovať len bunky, ktoré spĺňajú túto podmienku. Napríklad na obrázku vyššie musí robot vyfarbiť nasledujúce bunky (pozri obrázok).


N Napíšte algoritmus pre robota, ktorý vyfarbí bunky susediace so stenou, hornú a spodnú časť, začínajúc zľava a každú druhú. Robot musí maľovať len bunky, ktoré spĺňajú túto podmienku. Napríklad pre daný obrázok a) Robot musí premaľovať nasledujúce bunky (pozri obrázok b).

Konečná poloha robota môže byť ľubovoľná. Algoritmus musí vyriešiť problém pre ľubovoľnú veľkosť steny a akúkoľvek prijateľnú počiatočnú polohu robota.



R

  1. Nekonečné pole má dlhú kolmú stenu. Dĺžka steny nie je známa. Robot je v jednej z buniek umiestnených priamo naľavo od steny. Rovnako nie je známa ani počiatočná poloha robota. Jedna z možných polôh robota je znázornená na obrázku (robot je označený písmenom „P“):
Napíšte algoritmus, ktorý vykreslí všetky bunky susediace so stenou:

  • všetko vľavo;

  • vpravo, počnúc zhora nenatretú a cez jednu.
Robot musí maľovať len bunky, ktoré spĺňajú túto podmienku.

B
1102_GIA2011

Nekonečné pole má dve vodorovné steny. Dĺžka stien nie je známa. Vzdialenosť medzi stenami nie je známa. Robot je umiestnený nad spodnou stenou v klietke umiestnenej na jej ľavom okraji. Napíšte algoritmus pre robota, ktorý vyfarbí všetky bunky umiestnené nad spodnou stenou a pod hornou stenou a priľahlé k nim. Robot musí maľovať len bunky, ktoré spĺňajú túto podmienku. Napríklad pre vyššie uvedený obrázok musí robot vymaľovať nasledujúce bunky (pozri obrázok):

Konečné umiestnenie robota môže byť ľubovoľné. Algoritmus musí vyriešiť problém pre ľubovoľnú veľkosť poľa a akékoľvek prípustné usporiadanie stien vo vnútri pravouhlého poľa. Pri vykonávaní algoritmu by sa robot nemal zničiť.


IN
1103_GIA_2011


Na nekonečnom poli je vodorovná stena. Dĺžka steny nie je známa. Z pravého konca steny sa tiahne zvislá stena neznámej dĺžky. Robot je umiestnený nad vodorovnou stenou v klietke umiestnenej na jej ľavom okraji. Obrázok ukazuje jeden z možné spôsoby umiestnenie stien a robota (robot je označený písmenom „P“).

Napíšte algoritmus pre robota, ktorý vyfarbí všetky bunky umiestnené nad vodorovnou stenou a napravo od zvislej steny a priľahlé k nim. Robot musí maľovať len bunky, ktoré spĺňajú túto podmienku. Napríklad na obrázku vyššie musí robot vyfarbiť nasledujúce bunky (pozri obrázok).

Performer Robot existuje v obdĺžnikovom poli, rozdelenom na bunky, medzi ktorými môžu byť steny a celý sa zmestí do jednej bunky.

Robot sa môže pohybovať po poli, maľovať bunky, merať teplotu a žiarenie. Robot nemôže prechádzať stenami, ale môže skontrolovať, či je vedľa neho stena.

  • Riadiaci systém umelca „robota“ zahŕňa:
  • 5 príkazov, ktoré spúšťajú akcie robota (vľavo, vpravo, hore, dole, maľovať)
  • 10 príkazov na kontrolu stavu:
  • 8 príkazov vo formulári [vľavo/vpravo/dole/hore] [stena/voľno]
  • 2 príkazy typu bunky [vyplnené/prázdne]

2 meracie príkazy (teplota, žiarenie)

Akčné príkazy

Tím Skontrolujte príkazy
Popis prihlásenie vľavo je zadarmo
Vráti áno, ak sa robot môže pohybovať doľava, inak nie. prihlásenie vpravo je zadarmo
Vráti áno, ak sa robot môže pohybovať doprava, inak nie. log zhora zadarmo
Vráti áno, ak sa robot môže posunúť nahor, inak nie. prihláste sa zadarmo
Vráti áno, ak sa robot môže pohnúť nadol, inak nie. polená ľavá stena
Vráti áno, ak je naľavo od robota stena, inak nie. Vráti áno, ak je napravo od robota stena, inak nie.
log na hornej stene Vráti áno, ak je nad robotom stena, inak nie.
poleno pod stenou Vráti áno, ak je pod robotom stena, inak nie.
bunka denníka je vyplnená Vráti áno, ak je bunka vyplnená, a nie, ak bunka nie je vyplnená.
prihlásiť bunku vyčistiť Vráti nie, ak je bunka vyplnená, a áno, ak bunka nie je vyplnená.

Príkazy na meranie

Nech je potrebné preniesť z bunky naľavo od steny do bunky napravo od steny:

Algoritmus môže vyzerať takto:

použite robot
príklad 1
začiatok
. dole
. správne
. hore
kon

Ak sa pokúsite previesť robota cez stenu, dôjde k zlyhaniu. Robot narazí do steny a už nebude môcť plniť príkazy.


Napíšme algoritmus pre robota prechádzajúceho bludiskom z bodu A do bodu B:

použite robot
Alg od A do B
začiatok
. správne

. hore ; hore ;
právo ; dole ; dole ; správne
kon

. hore ; hore ; právo ;

Informácie o lokalite