Fontolja meg a problémát:
A program bevitele egy természetes szám, amely nem haladja meg a 2 * 10 9 értéket. Határozza meg ennek a számnak a számjegyeinek összegét!
Első pillantásra a feladat meglehetősen egyszerű: egymás után ki kell választania a számban szereplő számokat, és hozzá kell adnia őket az összeghez. Ugyanakkor nyilvánvaló, hogy a számban lévő számjegyek száma változhat, így a ciklusparaméter végső értéke definiálatlannak bizonyul, és az alkalmazása nehézségekbe ütközik.
Azokban a ciklikus algoritmusokban, amelyekben egy bizonyos utasításkészlet ismétlődéseinek száma nem érhető el az indítás előtt, feltételes ciklusokat használnak.
A while ciklus
Az egyik ilyen konstrukció a Kumir programozási nyelvben az ciklus viszlát. Ez a ciklus, amelyet gyakran ún hurok előfeltétellel, a következő formátummal rendelkezik:
- nc bye feltétel
- loop_body
Az utána írt feltétel hivatalos szó míg , egy logikai kifejezés.
A hurok végrehajtása a következőképpen történik:
- A logikai kifejezés értéke kiértékelésre kerül.
- Ha a számítás eredménye nem, akkor a ciklus véget ér, és Kumir a while ciklus utáni első parancsra lép. Ha a számítás eredménye igen, akkor a ciklus törzse végrehajtásra kerül, majd a kifejezés értéke ismét egy új értékkel kerül kiszámításra.
Fontos! A ciklus törzsében a feltételhez tartozó értéknek változnia kell, hogy biztosítsa a ciklus végét, különben a ciklus örökkévalóvá válhat.
Most használjuk a while ciklust a probléma megoldására.
- bemeneti sz
- nc míg a szám > 0
- összeg:= összeg + mod(szám, 10 )
- szám:= div(szám, 10 )
- kivonási összeg
Tehát a huroktörzs minden egyes végrehajtása során a szám utolsó számjegye hozzáadódik az összeghez, majd a szám 10-szeresére csökken. Nyilvánvaló, hogy végül a num 0 lesz, ami után a ciklus véget ér.
Addig ciklus
Az Idolban van egy másik változata a feltételes ciklusnak, az úgynevezett till ciklus, amelynek formátuma a következő:
- loop_body
- kc feltétel alatt
Ha a ciklusban a feltétel ellenőrzése közben a ciklus törzse előtt, akkor a ciklusban addig - után. Ezért ezt a ciklust gyakran nevezik hurok utófeltétellel. Az ilyen hurok törzse mindig legalább egyszer végrehajtásra kerül.
A ciklus munkája addig a következőképpen zajlik:
- A huroktest végrehajtásra kerül
- A logikai kifejezés értéke kiértékelésre kerül. Ha a számítás eredménye nem, akkor a ciklus törzse újra végrehajtásra kerül, és így tovább Ha a számítás eredménye igen, akkor a ciklus véget ér, és Kumir a ciklus után következő parancs végrehajtására lép.
Feladat. A program bemenete nullára végződő egész számok sorozata. Keresse meg a negatív számok számát a sorozatban! Garantált, hogy a sorozat legalább egy nullától eltérő számot tartalmazzon.
(Program kódrészlet)
- bemeneti sz
- ha a 0
- akkor k:= k + 1
- kts a szám = 0-nál
- kimenet k
Algoritmus spirál rajzolásához:
használd a fiókot
alg
korai
. egy pontra lépni(3,3)
. engedje le a tollat
. tekercs (1); tekercs (3); tekercs (5); tekercs (7); tekercs (9)
. emelje fel a tollat
con
alg turn(arg w)
korai
. eltolás vektorral(a, 0)
. eltolás vektorral(0, -a)
. eltolás vektorral(-a-1,0)
. eltolás vektorral(0, a+1)
con
Ügyeljen a parancsblokkra:
tekercs (1); tekercs (3); tekercs (5); tekercs (7); tekercs (9)
A "tekercs (arg dolog a)" segédalgoritmust 5-ször hívják, de nem hívható meg az "N-szeres" ciklusban, mert minden alkalommal különböző értékeketérv.
De láthatja, hogy az argumentum értékei 1-ről 9-re változnak, minden alkalommal 2-vel. Tehát segíthetünk hurok számlálóval. Az ilyen ciklust "for" ciklusnak is nevezik.
Hurok számlálóval- egy ciklus, amelyben valamilyen változó egy adott kezdeti értékről valamilyen lépéssel végső értékre változtatja az értékét, és ennek a változónak minden értékére a ciklus törzse egyszer végrehajtásra kerül.
Általában ezt a ciklust akkor használják, ha át kell ismételnie bizonyos értékeket, és mindegyiknél végre kell hajtania néhány műveletet.
A ciklus általános képe számlálóval:
nc for<счетчик>tól től<нач. знач.>előtt<кон. знач.>[lépés<знач.>]
<тело цикла (последовательность команд)>
kts
A lépést nem szükséges feltüntetni, ha nincs megadva, akkor eggyel egyenlőnek számít.
Most átírhatjuk a "spirál" algoritmust a következő módon:
használd a fiókot
alg
korai
. egy pontra lépni(3,3)
. engedje le a tollat
. egész méretben
. nc 1-9 mérethez 2. lépés
. . tekercs (méret)
. kts
. emelje fel a tollat
con
alg turn(arg w)
korai
. eltolás vektorral(a, 0)
. eltolás vektorral(0, -a)
. eltolás vektorral(-a-1,0)
. eltolás vektorral(0, a+1)
con
Ebben a példában a "size" számlálóváltozó a következő értékeket kapja: 1, 3, 5, 7, 9. Azaz, ciklus 5-ször kerül végrehajtásra. A „size” változó minden egyes értékénél a ciklustörzs egyszer végrehajtásra kerül, példánkban ez a „coil (arg thing)” segédalgoritmus hívása.
Egy változó első használata előtt deklarálni kell, vagyis hogy milyen típusú. Ezt a programunkban az „integer size” sorban tesszük meg, azaz jelezzük, hogy a „size” változót használjuk egész számok tárolására, ezért ehhez memóriát kell foglalnunk. A változókról kicsit később fogunk még beszélni.
Egy ilyen algoritmus blokkdiagramja így néz ki:
Nézzünk egy másik példát:
Először emlékezzünk meg és írjunk egy segédalgoritmust, amely négyzetet rajzol az (x, y) pontban. A rajz megváltoztatásához a parancsot fogjuk használni eltolás vektorral(az előző példákban egy pontra tolták el).
Az algoritmus a következő lehet:
alg négyzet(arg x, y, oldal)
korai
. egy pontra lépni(x, y)
. eltolás vektorral(-oldal/2, oldal/2)
. engedje le a tollat
. eltolás vektorral(oldal, 0)
. eltolás vektorral(0, -oldal)
. eltolás vektorral(-oldal, 0)
. eltolás vektorral(0, oldal)
. emelje fel a tollat
con
Egy ilyen segédalgoritmus segítségével a következő ábrát rajzoljuk:
Ehhez a "for" ciklust használjuk. Tanulmányozza a mintaprogramot:
használd a fiókot
alg ábra1
korai
. egész z
. nc z 2-től 10-ig 2. lépés
. . négyzet(0, 0, z)
. kts
con
alg négyzet(arg x, y, oldal)
korai
. egy pontra lépni(x, y)
. eltolás vektorral(-oldal/2, oldal/2)
. engedje le a tollat
. eltolás vektorral(oldal, 0)
. eltolás vektorral(0, -oldal)
. eltolás vektorral(-oldal, 0)
. eltolás vektorral(0, oldal)
. emelje fel a tollat
con
Ebben a példában a "z" változó a 2, 4, 6, 8, 10 értékeket kapja. ciklus 5-ször kerül végrehajtásra. Minden „z” értéknél a ciklustörzs egyszer végrehajtásra kerül, példánkban ez a segédnégyzetes algoritmus hívása.
Egy változó első használata előtt deklarálni kell, vagyis hogy milyen típusú. Ez a programunkban az "integer z" sorban történik, azaz jelezzük, hogy a "z" változót fogjuk használni egész számok tárolására, ezért memóriát kell lefoglalnunk hozzá. A változókról kicsit később fogunk még beszélni.
Amint észrevette, az algoritmus nemcsak számokat, hanem számokat is használt algebrai kifejezések, képletek, például "-oldal/2". Az informatikában ezeket a kifejezéseket ún számtan. A nyelv szabályai lehetővé teszik, hogy az algoritmusok írásakor bárhová írhatunk számot, tetszőleges aritmetikai kifejezést írjunk.
Feladatkártyák
Keresse meg a billentyűzetről beírt n egész számok közül a negatív számot
Két tetszőleges számot kapsz. Amíg a termékük 100-nál kisebb, növelje az egyes számokat 2-vel, és jelenítse meg a végső számokat a monitoron
Sorozatosan beírt n -egész számok. Keresse meg a sorozat ötöseinek számát
Sorozatosan beírt n -egész számok. Keresse meg a különbséget a maximális és minimális értékeket adott számokat
Keresse meg a billentyűzetről beírt n egész számok közül a negatív számot
Két tetszőleges számot kapsz. Amíg a termékük 100-nál kisebb, növelje az egyes számokat 2-vel, és jelenítse meg a végső számokat a monitoron
Sorozatosan beírt n -egész számok. Keresse meg a sorozat ötöseinek számát
Sorozatosan beírt n -egész számok. Keresse meg az adott számok maximális és minimális értéke közötti különbséget
Keresse meg a billentyűzetről beírt n egész számok közül a negatív számot
Két tetszőleges számot kapsz. Amíg a termékük 100-nál kisebb, növelje az egyes számokat 2-vel, és jelenítse meg a végső számokat a monitoron
Sorozatosan beírt n -egész számok. Keresse meg a sorozat ötöseinek számát
Sorozatosan beírt n -egész számok. Keresse meg az adott számok maximális és minimális értéke közötti különbséget
Keresse meg a billentyűzetről beírt n egész számok közül a negatív számot
Két tetszőleges számot kapsz. Amíg a termékük 100-nál kisebb, növelje az egyes számokat 2-vel, és jelenítse meg a végső számokat a monitoron
Sorozatosan beírt n -egész számok. Keresse meg a sorozat ötöseinek számát
Sorozatosan beírt n -egész számok. Keresse meg az adott számok maximális és minimális értéke közötti különbséget
Beágyazott hurkok és ágak a KUMIR rendszerben
A számítástechnika egyik alapfogalma az algoritmus fogalma. Az "algoritmus" kifejezés eredete a matematikához kapcsolódik. Ez a szó az Algorithmi-ból származik - Muhammad al-Khwarizmi (787-850), a középkori kelet kiemelkedő matematikusa nevének latin írásmódja. "Az indiai számla" című könyvében megfogalmazta a természetes számok arab számokkal történő írásának szabályait és a velük való munka szabályait egy oszlopban.
A jövőben az algoritmust pontos előírásnak kezdték nevezni, amely meghatározza azt a műveletsort, amely biztosítja a kívánt eredmény elérését a kezdeti adatokból.
Az algoritmus úgy is megtervezhető, hogy emberi vagy automatizált eszköz hajtsa végre. Egy algoritmus létrehozása, még a legegyszerűbb is, kreatív folyamat. Kizárólag élőlények számára elérhető, ill hosszú idejeúgy gondolják, hogy csak az emberek számára. A XII században. matematikai értekezésének latin fordítása készült, amelyből az európaiak megismerték a decimális helyzetszámrendszert és a többjegyű aritmetika szabályait. Ezeket a szabályokat akkoriban algoritmusoknak nevezték.
Az algoritmus fent megadott definíciója nem tekinthető szigorúnak - nem teljesen világos, hogy mi a "pontos előírás" vagy "a kívánt eredmény elérését biztosító műveletek sorozata". Ezért gyakori az algoritmusok több általános tulajdonságának megfogalmazása, amelyek lehetővé teszik az algoritmusok megkülönböztetését más utasításoktól.
Ezek a tulajdonságok:
diszkrétség (szakadás, szétválasztás) - az algoritmusnak a probléma megoldásának folyamatát egyszerű (vagy korábban meghatározott) lépések egymás utáni végrehajtásaként kell ábrázolnia. Az algoritmus által biztosított minden egyes művelet csak az előző végrehajtásának befejezése után kerül végrehajtásra.
Bizonyosság - az algoritmus minden szabálya legyen világos, egyértelmű, és ne hagyjon teret az önkényességnek. Ennek a tulajdonságnak köszönhetően az algoritmus végrehajtása mechanikus jellegű, és nem igényel további utasításokat vagy információkat a megoldandó problémáról.
Hatékonyság (végesség) – az algoritmusnak véges számú lépésben kell elvezetnie a probléma megoldásához.
tömegjelleg - a probléma megoldására szolgáló algoritmus általános formában van kidolgozva, vagyis egy bizonyos problémaosztályra kell alkalmazni, amelyek csak a kiindulási adatokban különböznek egymástól. Ebben az esetben a kiindulási adatokat egy bizonyos területről lehet kiválasztani, amelyet az algoritmus alkalmazhatósági területének nevezünk.
Algoritmusok írásának módjai
Az algoritmusok írásához sokféle eszközt használnak. Az eszközök megválasztását a végrehajtott algoritmus típusa határozza meg.
Az algoritmusok írásának a következő főbb módjai vannak:
- szóbeli amikor az algoritmust emberi (természetes) nyelven írják le. A nemzeti nyelvek természetesek (orosz, angol, német stb.);
- szimbolikus amikor az algoritmus leírása szimbólumkészlettel van leírva, és egy program (a programok programozási nyelvekkel íródnak);
- grafikus amikor az algoritmus leírása a halmaz segítségével történik grafikus képek(blokk diagramm).
Az általánosan használt rögzítési módszerek agrafikus jelölés folyamatábrák segítségével éskarakter jelölés valamilyen algoritmikus nyelv – program segítségével.
Nál nél grafikus módon rekordokat, folyamatábrákat állítanak össze, amelyeken, segítségével szimbólumok(geometriai ábrák) jelölik az algoritmus különböző részeit. A blokkdiagramok elemei az ábrán láthatók.
KUMIR programozási rendszer
Az algoritmusok témakörének elsajátításakor a KUMIR programozási rendszert fogjuk használni.
A KuMir (Oktatási MIR-készlet) egy programozási rendszer, amelyet arra terveztek, hogy támogassa az alapfokú számítástechnikai és programozási kurzusokat közép- és felsőfokú iskolákban.
A KuMir rendszer iskolai algoritmikus nyelvet használ orosz szókinccsel és beépített végrehajtókkal: Robot és Draftsman stb.
A programba való belépéskor a KuMir folyamatosan teljes ellenőrzést végez annak helyességére vonatkozóan, jelentést készít a program margóin az összes észlelt hibáról.
A program futtatásakor lépésről lépésre mód A KuMir megjeleníti a hozzárendelési műveletek eredményeit és a logikai kifejezések értékeit a mezőkön. Ez lehetővé teszi a programozás alapjainak elsajátításának felgyorsítását.
Grafikus Robot
A grafikus végrehajtó robot lehetővé teszi a programozás alapjainak elsajátítását és a fő algoritmikus struktúrák működésének megértését.
Grafikusa vezérlő objektum. Egy csomaguralkodni fogunk rajtuk.
A robot előadó néhánybankiinduló környezet - téglalap alakú mező, cellákra osztva, amelyek között falak lehetnek.
A robot a falak megkerülésével és a cellákra festve mozoghat a pályán. A robot nem tud áthaladni a falon, de tudja ellenőrizni, hogy van-e fal mellette. A robot nem léphet túl a mezőt határoló téglalapon.
R bot parancsokat tud végrehajtani
: fel, le, jobbra, balra, fesd át.
A robot ellenőrizni tudja a körülményeket : felül szabad, alul szabad, jobb oldalon szabad, bal oldalon szabad, részecske hozzáadása Nem megfordítja az állapotot. Nem szabad felülről, nem szabad alulról, nem szabad jobbról, nem szabad balról.
Alapvető algoritmikus struktúrák
Három alapvető algoritmikus struktúra (konstrukció) létezik-lineáris (követő), elágazó És ciklus, amelyből bármilyen algoritmus felállítható.Minden algoritmikus struktúrának egy belépési és egy kilépési pontja van.
Az algoritmusokat iskolai nyelven és blokkdiagramok formájában is írjuk.
Lineáris szerkezet
Lineáris szerkezet Az algoritmusok legegyszerűbb szervezése - a parancsok egymás után sorban hajtódnak végre
Példa:
Ciklikus szerkezet (ciklus)
Ciklikus szerkezet (ciklus) ugyanazon parancsok többszöri végrehajtását biztosítja. A ciklikus struktúráknak többféle típusa van.
Bármely ciklikus szerkezet két részből áll:fejlécÉs ciklustestek.
A ciklus végrehajtása során ismétlődő utasítások halmazát hívjukciklus test.
fejléc meghatározza a huroktest ismétlődéseinek számát.
Hurok az ismétlések számához (szer)
nc N egyszer
<команда>
kts
P Példa:
használat
Robot
alg
oszlop
korai
.
nc
5
egyszer
. . festeni át
. . fel
.
kts
con
Hurok előfeltétellel (még)
(belépés algoritmikus nyelv)
nc Viszlát <условие>
<команда>
Nak nek c
Példa:
használat
Robot
alg
Vonal
korai
nc
Viszlát
felső laza
festeni át
fel
kts
con
Hurok utófeltétellel (at)
(jelölés algoritmikus nyelven)
n c
<команда>
cc_at <условие>
Példa:
használat
Robot
alg
Vonal
korai
nc
átfesteni; fel
cc_at szabadon hagyták
con
Elágazás szerkezete.
Elágazás szerkezete. Egyes problémák megoldása bizonyos feltételek teljesülésétől függően különböző cselekvéseket igényel. Ilyen esetekben az algoritmus elágazásáról beszélünk.
Az „elágazó” struktúra megvalósításához az iskola EL két strukturált parancsát használjuk - if és choice, amelyek mindegyike lehet teljes és hiányos.
Folyamatábrákban és iskolai nyelven<условие>egy logikai kifejezés, amely a kettő közül az egyiket eredményezheti lehetséges értékek - igaz vagy fekszik. Az iskolai nyelven ezek az értékek igennel és nemmel vannak írva. A programozási nyelvek gyakran használnak értékeketIgazÉs Hamis. A számítógép ezeket az értékeket 1-ként és 0-ként tárolja.
Teljes ág
(jelölés algoritmikus nyelven)
e ha
<условие>
. .
Hogy
<команда1>
. .
másképp
<команда2>
Minden
Példa:
használat
Robot
alg
elágazó_teli
korai
.
Ha
felső laza
. .
Hogy
fel
. .
másképp
le-
.
Minden
con
hiányos elágazás
(jelölés algoritmikus nyelven)
e ha
<условие>
. .
Hogy
<команда1>
Minden
Példa:
használat
Robot
alg
elágazás_hiányos
korai
.
Ha
felső laza
. .
Hogy
fel
.
Minden
con
Segédalgoritmus (eljárás)
Segédalgoritmusnak nevezzük azt az algoritmust, amellyel a főfeladatból valamilyen részfeladatot megoldanak, és amelyet rendszerint ismételten végrehajtanak.
A programozási nyelven írt segédalgoritmust szubrutinnak vagy eljárásnak nevezzük.
A segédalgoritmust a főprogramból a néven keresztül hívják meg. A segédalgoritmust a főalgoritmus után írjuk. A segédalgoritmusnak nevet kell adni.
használat
Robot
alg
korai
le-
négyzet
le-
le-
con
alg négyzet
korai
festeni át
jobb
festeni át
le-
festeni át
balra
festeni át
con
Beágyazott hurkok és ágak
Egyes feladatok robottal való megoldása során szükség van egymásba ágyazott hurkok vagy ágak használatára.
C az ucl-t beágyazottnak nevezzük, ha egy másik hurkon belül van elhelyezve.
Tekintsünk egy beágyazott hurkot a while ciklus példájával.
Tudjuk, hogy a ciklus egy hurokfejlécből áll, amely meghatározza, hogy a hurok törzse hányszor ismétlődik.
A ciklus törzse a ciklus azon része, amely a ciklus végrehajtásakor ismétlődik.
A ciklus törzse lehet egy parancs, több parancs vagy egy másik hurok vagy ág.
Ha a hurok törzse egy másik hurok vagy ág, akkor ezeket beágyazottnak nevezzük.
beágyazott hurok
Az első lépésben a külső hurok meghívja a belső hurkot, amely a befejezésig fut, majd a vezérlés átkerül a külső hurok törzsébe. A második lépésben a külső hurok ismét hívja a belsőt. És így tovább, amíg a külső hurok véget nem ér.
Beágyazott ág
Fontolja meg a probléma megoldását beágyazott ágakkal és hurkokkal:
1. feladat A robot a falon van, amelyen lyukak vannak, a fal mentén jobbra haladva, a robotnak át kell festenie az összes cellát, ahol lyukak vannak.
használat Robot alg korai. nc Viszlát jobb oldalon Val vel szabadon
nc Viszlát feneke laza
.átfesteni;jobb
. . kts
. . jobb
. kts con VAL VEL
![](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)
Oldjuk meg ugyanezt a problémát egy külső while ciklussal és egy beágyazott while ciklussal.
A robot egy bizonyos környezetben létezik (téglalap alakú kockás mező). A falak a mező egyes cellái között helyezkedhetnek el. Egyes cellák árnyékolhatók (3.11. ábra).
A robot pontosan egy cellát foglal el a mezőből.
A felfelé, lefelé, balra és jobbra adott parancsoknál a Robot a következő cellára lép a megadott irányban. Ha fal van az úton, akkor hiba történik - üzenet jelenik meg a következő parancs végrehajtásának lehetetlenségéről.
Az átfestés parancsára a Robot átfesti azt a cellát, amelyben áll. Ha a cellát már átfestették, akkor a rendszer újra átfesti, bár látható változás nem történik.
A robot csak helyesen írt parancsokat tud végrehajtani. Ha leírod a parancs helyett, akkor a Robot nem fogja megérteni ezt a bejegyzést, és azonnal hibát jelez.
RÓL RŐL hibák: 1 szintaktikai; 2. logikus
A jelenetleírásokat a rendszer tárolja szöveges fájlok speciális formátum (.fil formátum).
Jelenlegi- a környezet, amelyben a robot tartózkodik Ebben a pillanatban(beleértve a Robot helyzetére vonatkozó információkat is).
itthon- az a környezet, amelybe a Robotot a Robot segítségével végrehajtott program végrehajtásának kezdetén erőszakkal elhelyezik.
Működési eljárás:
Kérdez kiinduló környezet feladat szerint:
2. Adja meg a vállalkozót:
Beszúrás menü → Robot használata
3. Írjon algoritmust a feladat megoldására!
4. Futtassa az algoritmust (Menü Futtatás → Folyamatos futtatás / F9)
A végrehajtó robot parancsrendszere a KUMIR rendszerben
Csapat |
Akció |
fel |
A robot 1 cellával feljebb lép |
le- |
A robot 1 cellával lejjebb mozog |
balra |
A robot 1 cellát balra mozgat |
jobb |
A robot 1 cellát jobbra mozgat |
festeni át |
A robot lefesti azt a cellát, amelyben van |
jogos ingyen |
A robot ellenőrzi a megfelelő végrehajtását egyszerű körülmények |
szabadon hagyták |
↓ |
felső laza |
↓ |
feneke laza |
↓ |
a cella árnyékolt |
↓ |
ketrec tiszta |
↓ |
Ciklikus algoritmusok
Ciklus ismétlődő cselekvések megszervezése, amíg egy bizonyos feltétel nem teljesül .
Hurok test - megismételhető műveletek halmaza.
Feltétel - logikai kifejezés (egyszerű vagy összetett (összetett))
Ciklus típusok:
1.Loop "N-szer ismétlés" 2. Loop "Bye"
nc n alkalommal nts viszlát
. . Hurok test. . Hurok test
kts kts
Példa: nts viszlát jogos ingyen
Az "Ismételd n-szer" ciklus általános nézete:
ISMÉTELÉS n-SZER
VÉGE
kts
A while ciklus általános képe:
TEENDŐ KÖZBEN
VÉGE
Összetett feltételek egy vagy többből alakult ki egyszerű feltételekés szolgálati szavakat ÉS, VAGY, NEM.
Összetett állapot A és B(ahol A, B egyszerű feltételek) teljesül, ha a benne foglalt két egyszerű feltétel mindegyike teljesül.
Legyen A - ingyenes a tetején BAN BEN - szabad a jobb oldalon akkor az összetett feltétel A és B- ingyenes a tetején ÉS szabad a jobb oldalon.
Összetett állapot A VAGY B teljesül, ha a benne foglalt két egyszerű feltétel közül legalább az egyik teljesül: top ingyenes VAGY jobb ingyenes
Összetett állapot NEM A- teljesül, ha az A feltétel nem teljesül.
Példa: Legyen A egy árnyékolt cella (egyszerű feltétel).
P Az összetett állapot ellenőrzése NEM A:
a) A - kész, NEM A (NEM árnyékolt) - nincs kész.
b) A - nincs kész, NEM A (NEM árnyékolt) - kész.
Elágazás parancs
Elágazás - a cselekvések olyan szervezési formája, amelyben egy bizonyos feltétel teljesülésétől vagy nem teljesülésétől függően akár egyik, akár másik cselekvéssorozatot hajtanak végre.
Az IF parancs általános nézete:
HA HOGY MÁSKÉPP
VÉGE
KUMIR nyelven:
Teljes elágazás: Részleges elágazás:
Ha Hogy
Ha Hogy
másképp
mind mind
Segítő algoritmus- egy algoritmus, amely megoldja a fő probléma néhány részproblémáját.
A KUMIR rendszerben a segédalgoritmusokat a főprogram végére írják (a szervizszó után con) név szerint hívják végrehajtásra a főprogramban.
BAN BEN felmérések és megbízások
1. Adja meg annak a három parancsnak az összes algoritmusát, amely a Robotot eredeti helyéről a B cellába mozgatja.
Van-e algoritmus ehhez a feladathoz, amely során a robot:
a) két lépés b) négy lépés; c) öt lépés; d) hét lépés?
Petya készített egy algoritmust, amely átfesti a robotot az A cellából a B cellába. Mit tegyen Kolya ezzel az algoritmussal, hogy olyan algoritmust kapjon, amely a robotot B-ből A-ba viszi, és ugyanazokat a cellákat tölti ki?
7. Kettő ismert segédalgoritmusok Robot
Rajzolja le, mi történik, ha a Robot a következő alapvető algoritmusokat hajtja végre:
A) nc 5 alkalommal minta_1 jobb; jobb; |
b) nc 7 alkalommal minta_2 jobb; jobb |
V) jobb; jobb; jobb fel; fel jobb; jobb; jobb le; le- |
G) jobb; jobb jobb; jobb |
8. Állítson össze algoritmusokat, amelyek alapján a robot átfesti a megadott cellákat:
![](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. Ismeretes, hogy valahol a Robottól jobbra van egy árnyékolt cella.
VAL VEL hagyja el az algoritmust, amelynek vezérlése alatt a Robot több cellát fest az árnyékolt celláig, és visszatér eredeti helyzetébe.
11. Ismeretes, hogy a Robot a vízszintes folyosó bal bejáratának közelében található.
12. Ismeretes, hogy a Robot valahol a vízszintes folyosón van. A folyosó egyik cellája sincs lefestve.
Állítsunk össze egy algoritmust, amelynek vezérlése alatt a Robot átfesti ennek a folyosónak az összes celláját, és visszatér eredeti helyzetébe.
13. A Robottól jobbra lévő tíz cellából álló sorban néhány cella árnyékolt.
VAL VEL hagyjuk a cellákat festő algoritmust:
a) minden árnyékolt cella alatt;
b) minden egyes árnyékolt cella felett és alatt.
14. Mit mondhatunk az algoritmus következő töredékének helyességéről?
nts viszlát a cella árnyékolt
HA jogos ingyen HOGY
jobb; festeni át
Nak nek c
15. Írjon programot, amellyel a Robot mindhárom útvesztőben eljuthat a B cellába!
1
![](https://i0.wp.com/nenuda.ru/nuda/167/166713/166713_html_m153e0ebf.jpg)
Z adachi GIA
Folyosó1. A robot valahol a függőleges folyosón van. A folyosó egyik cellája sincs lefestve. Hozzon létre egy algoritmust, amely alapján a robot átfesti ennek a folyosónak az összes celláját, és visszatér eredeti helyzetébe.
NAK NEK
SzükségesAdott
folyosó2. A robot egy keskeny függőleges folyosó felső cellájában található. A folyosó szélessége egy cella, a folyosó hossza tetszőleges lehet.
Írjon egy algoritmust a robothoz, amely kitölti a folyosón belüli összes cellát, és visszaállítja a robotot az eredeti helyzetébe. Például a fenti képhez a robotnak a következő cellákat kell átfestenie (lásd a képet):
A végtelen mezőn egy hosszú vízszintes fal található. A fal hossza ismeretlen. A robot az egyik ketrecben van, közvetlenül a fal felett. A Robot kezdeti helyzete sem ismert. Az egyik lehetséges pozíció:
![](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)
Szükséges
Adott
Írjon egy algoritmust a Robothoz, amely befesti a fal feletti és mellette lévő összes cellát, függetlenül a fal méretétől és a robot kezdeti helyzetétől. Például az adott rajzhoz a Robotnak át kell festenie a következő cellákat:
A Robot végső pozíciója tetszőleges lehet. Az algoritmus végrehajtásakor a robotot nem szabad megsemmisíteni.
A végtelen mezőn egy hosszú függőleges fal található. A fal hossza ismeretlen. A robot az egyik ketrecben található, közvetlenül a faltól jobbra. A robot kezdeti helyzete sem ismert. A robot egyik lehetséges pozíciója az ábrán látható (a robotot „P” betű jelöli): Írjon egy algoritmust olyan munkához, amely átfesti a fal melletti összes cellát: balra, felülről festetlenül és egyen át; a jobb oldalon, alulról kiindulva árnyékolva és egyen át. A robotnak csak azokat a cellákat kell átfestenie, amelyek megfelelnek ezt az állapotot. Például a fenti ábrához a robotnak a következő cellákat kell kitöltenie (lásd az ábrát): A robot végső elhelyezkedése tetszőleges lehet. Az algoritmusnak meg kell oldania a problémát tetszőleges falméret és a robot bármely érvényes kezdeti helyzete esetén. Az algoritmus végrehajtásakor a robotnak nem szabad összeesnie.
Írjon egy algoritmust a robothoz, amely lefesti a függőleges faltól balra és a vízszintes fal felett és mellettük lévő összes cellát. A robotnak csak azokat a cellákat kell átfestenie, amelyek megfelelnek ennek a feltételnek. Például a fenti képhez a Robotnak át kell festenie a következő cellákat (lásd a képet).
H írj egy algoritmust a Robothoz, amely a fal melletti cellákat felülről és alulról balról kezdve egyen át festi. A robotnak csak azokat a cellákat kell átfestenie, amelyek megfelelnek ennek a feltételnek. Például az adott a) ábrához a Robotnak át kell festenie a következő cellákat (lásd b ábra).
A Robot végső pozíciója tetszőleges lehet. Az algoritmusnak meg kell oldania a problémát tetszőleges falméret és a Robot bármely érvényes kezdeti helyzete esetén.
R | |||||
A végtelen mezőn egy hosszú függőleges fal található. A fal hossza ismeretlen. A robot az egyik ketrecben található, közvetlenül a faltól balra. A robot kezdeti helyzete sem ismert. A robot egyik lehetséges pozíciója az ábrán látható (a robot "P" betűvel van jelölve):
mind a bal oldalon;
a jobb oldalon felülről indulva festetlen és egyen keresztül.
B 1102_GIA2011
A végtelen mezőn két vízszintes fal található. A falak hossza ismeretlen. A falak közötti távolság nem ismert. A robot az alsó fal felett, a bal szélén található ketrecben található. Írjon egy algoritmust a robothoz, amely lefesti az összes cellát, amely az alsó fal felett és a felső fal alatt található, és a mellettük található. A robotnak csak azokat a cellákat kell átfestenie, amelyek megfelelnek ennek a feltételnek. Például a fenti rajzhoz a robotnak a következő cellákat kell kitöltenie (lásd az ábrát):
A robot végső elhelyezkedése tetszőleges lehet. Az algoritmusnak meg kell oldania a problémát tetszőleges mezőméretre és a falak tetszőleges helyére egy téglalap alakú mezőn belül. Az algoritmus végrehajtásakor a robotnak nem szabad összeesnie.
BAN BEN 1103_GIA_2011
A végtelen mezőn van egy vízszintes fal. A fal hossza ismeretlen. A fal jobb végétől lefelé egy függőleges fal húzódik, szintén ismeretlen hosszúságú. A robot egy vízszintes fal felett, a bal szélén található ketrecben található. Az ábrán az egyik látható lehetséges módjai a falak és a Robot elhelyezkedése (a robotot "P" betű jelzi).
Írjon egy algoritmust a robothoz, amely lefesti a vízszintes fal felett és a függőleges faltól jobbra található és a mellettük lévő összes cellát. A robotnak csak azokat a cellákat kell átfestenie, amelyek megfelelnek ennek a feltételnek. Például a fenti képhez a Robotnak át kell festenie a következő cellákat (lásd a képet).