Ako urobiť úlohu s robotom v informatike. Praktické úlohy pre robotníka
Ú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:
- hore— posuňte robota o jednu bunku nahor
- dole— posuňte robota o jednu bunku nadol
- vľavo— posuňte robota o jednu bunku doľava
- správne— posuňte robota o jednu bunku doprava
- 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 KUMIRRobot 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:
Set štartovacie prostredie podľa problémových podmienok:
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?
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
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.
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á.
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):
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í:
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ť.
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 | |||||
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“):
všetko vľavo;
vpravo, počnúc zhora nenatretú a cez jednu.
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 ;