Hogyan végezzünk bizonyos számú ismétlést a bálványban. Elágazás a bálványnyelven

Hogyan végezzünk bizonyos számú ismétlést a bálványban.  Elágazás a bálványnyelven
Hogyan végezzünk bizonyos számú ismétlést a bálványban. Elágazás a bálványnyelven

Ismerkedés a Kumir programmal a programozás alapjainak elsajátítása.

Ebben a diákok gyakorlati ismereteket szerezhetnek egy algoritmus létrehozásában és hibakeresésében, olyan előadókkal dolgozva, mint Robot, Rajzember, Vízöntő, Grasshopper, Turtle.

A számítástechnika egyik legnehezebb szakaszának „algoritmizálás és programozás” tanulmányozása során.

A fejlesztés célja :

Letöltés:


Előnézet:

Módszerfejlesztés az informatikában.

Téma: "Robot előadó a KuMir programban informatika órákon"

technológia tanár "Informatika és IKT"

Magyarázó jegyzet

Fejlesztési cél: példákkal fedezze fel a programozás lehetőségeit konkrét művész KUMIR környezetet használó robot; gyakorlati készségeket adjon az előadóval való együttműködéshez.

Módszerfejlesztésinformatika órákra összeállítottGyakorolj a számítógépen: munka az algoritmusok oktatási végrehajtójával; lineáris, elágazó és ciklikus algoritmusok előadó menedzsment; összetett szerkezetű algoritmusok készítése; segédalgoritmusok (eljárások, szubrutinok) használata.

A tanulóknak tudniuk kell:

  • mi az előadó; SKI Robot, szerdai előadó Robot;
  • mi az algoritmus;melyek az algoritmus főbb tulajdonságai;
  • algoritmusok írásának módjai: folyamatábrák, oktatási algoritmikus nyelv;alapvető algoritmikus konstrukciók: követés, elágazás, hurok; szerkezetek
  • algoritmusok; ⇒ segédalgoritmusok hozzárendelése; komplex algoritmusok felépítésének technológiái:

A tanulóknak képesnek kell lenniük:

  • megértse az algoritmusok leírását egy tanuló algoritmikus nyelven;
  • algoritmus nyomkövetést hajt végre egy ismert előadó számára;
  • lineáris, elágazó és ciklikus vezérlési algoritmusok összeállítása a Robot végrehajtó számára; részfeladatok kiosztása; segédalgoritmusok meghatározása és használata.

1. foglalkozás (2 óra) 1. lecke.

Előadó robot.Végrehajtó parancsrendszer.

Tanterv.

  1. A végrehajtó FKR, a végrehajtó környezet leírása.

2. Tipikus robotalgoritmusok elemzése.

Az órák alatt.

Vegye figyelembe az előadó leírását.

Végrehajtó környezet: Előadó A robot képes a labirintusban haladni, cellákra osztott síkra rajzolva.

SÍ Robot : egyszerű parancsok: fel, le, balra, jobbra, szín.

Logikai parancsok: (állapotellenőrzés)

felső szabad alsó szabad

bal szabad jobb jobb szabad.

Logikai összeköttetések: ÉS, NEM, VAGY:

Példa: (nem szabadon hagyva) vagy (nem szabadon hagyva)

Elágazás parancs: ciklus parancs:

Ha feltétel majd nts míg feltétel

parancssor parancssor

minden kts

(A 2009-es CIM-ekben a Robot parancsai eltértek a gyerekek által megszokottaktól, ami zavar :)

Elágazás parancs: ciklus parancs:

Ha feltétel akkor nts míg a feltétel igen

parancssor parancssor

vége vége

Általános forma a Kumir program ablakai. A robot grafikus környezete:

a KIM-ekben próba verzió A 2010-es parancsformátum a következőre módosult szokásos

Az algoritmus elkészítésének sorrendje:

1. Csapatok Eszközök - Szerk kiinduló környezet rajzolj falakat a Robot mezőre, és állítsd a Robotot a kiindulási helyzetbe.

2.Parancsok Robot – Változtassa meg a kiindulási környezetetmegmenteni az új környezetet.

3.Parancsok Beillesztés – Robot használataadja meg az előadót.

4. A dokumentumablakban a menü segítségével írja be az algoritmust Beszúrás.

5. Parancsok végrehajtása - folyamatosan (vagy lépésről lépésre) futtassa az algoritmust.

6. Tekintsük az algoritmus végrehajtásának eredményét, és ha szükséges, végezzük el a hibakeresést.

1. lecke (2 óra) 2. lecke.

Praktikus munka "Lineáris algoritmusok összeállítása.

Feladatok: 1. Robotozás a mező tetszőleges pontján. Színezze ki a cellát a kiindulási helyzet felett, alatt és jobbra.

  1. Robot a mező egy tetszőleges pontján. Mozgasd jobbra a Robot 4 mezőket, és fess rájuk.
  2. Hozzon létre egy új kezdőkörnyezetet egy 4 cellás négyzet rajzolásával a táblára. Kezdésként mentse a környezetet.
  3. Hozzon létre egy új kiindulási környezetet úgy, hogy a pályán egy folyosót rajzoljon átjárókkal a falakba. Mentse el a környezetet obst2.fil néven. Módosítsa a kezdő környezetet az újonnan létrehozott környezetre.

2. foglalkozás (2 óra) 1. lecke.

Tantárgy : Az algoritmus elágazása és szekvenciális finomítása.

CIM feladatok elemzése a Robot végrehajtó segítségével.

használj Robotot

alg kim 2009

korai

ha nem fenék laza

majd jobbra

Minden

ha nem fenék laza

majd jobbra

Minden

ha nem fenék laza

majd jobbra

Minden

con

használj Robotot

alg kim 2010

korai

ha nem fenék laza

majd jobbra

Minden

ha nem fenék laza

majd jobbra

Minden

ha nem fenék laza

majd jobbra

Minden

con

Stb. rabszolga. 14. sz. Elágazó algoritmusok összeállítása és hibakeresése

Feladatok. Lásd a mellékletet.

3. lecke. Ciklikus algoritmusok. lecke 1-2

Cél: feltárja a ciklus fogalmának lényegét az algoritmusokban, megmutatja a ciklusok írási formáit az algoritmusokban, készségeket ad a ciklikus algoritmusok létrehozásában és írásában.

Stb. rabszolga. 15. sz. Ciklikus algoritmusok összeállítása és hibakeresése

1. Készíts egy algoritmust, amely lefesti a fal melletti összes belső cellát.

használj Robotot

alg

korai

nc míg jobb szabad

átfesteni; jobb

kts

nc míg az alja szabad

átfesteni; le-

kts

nc, amíg az alja meg nem lazul

átfesteni; balra

kts

con

2. Hozzon létre egy algoritmust, amely kitölti az összes cellát a Robot és a fal között. A faltól való távolság nem ismert.

használj Robotot

alg

korai

nc míg jobb szabad

jobb; festeni át

kts

con

3. Hozzon létre egy algoritmust, amely átfesti az összes cellát két fal között.

használj Robotot

alg uch3

korai

nc még (nem laza felül) vagy (alul nem laza)

jobb

ha (nem felül szabad) és (nem alul szabad)

Hogy

festeni át

Minden

kts

con

4. Hozzon létre egy algoritmust, amely kitölti az összes cellát egy téglalap alakú fal körül.

alg uch4

korai

festék;fel

nc jobbra lazulásig

festék;up;

kts

festék;jobbra

nc, amíg az alja meg nem lazul

festék;jobbra;

kts

átfesteni;lefelé

nc, amíg laza nem marad

festék;le;

kts

festék;bal

nc, amíg a teteje laza

átfesteni; bal;

kts

con

használj Robotot

alg uch5

korai

jobb

nc, amíg az alja meg nem lazul

átfesteni; jobb

kts

átfesteni; le-

nc míg szabadon hagyjuk

átfesteni; balra

kts

nc, amíg laza nem marad

átfesteni; le-

kts

festék;bal;festék; fel;

nc míg top ingyenes

átfesteni; fel

kts

nc, amíg a teteje laza

átfesteni; balra

kts

con

4. tevékenység 1. lecke

Segítő algoritmusok.

Cél: ismertesse a fő- és segédalgoritmus fogalmát; ismertesse a segédalgoritmus használatának szabályait; elemezze az algoritmusok példáit egy segédprogram segítségével.

Tanterv

1.Új fogalmak bevezetése (fő- és segédalgoritmus, hívás) és új fogalmak magyarázata.

2. Feladatmegoldási példák elemzése segédalgoritmus segítségével.

Egyes feladatok megoldása során célszerű azokat kisebb részfeladatokra bontani, amelyek mindegyike önálló algoritmusként tervezhető. Ebben az esetben először az úgynevezett főalgoritmus kerül összeállításra, amelyben segédalgoritmusok hívásait használják fel a részfeladatok megoldására, amelyeket később hozzáadnak. Ezt a fajta megoldást únszekvenciális finomítási módszer.Lehetővé teszi a programozók egy csoportjának, hogy dolgozzon egy projekten, miközben mindegyik megoldja a saját részfeladatát.

A probléma megoldása során az egyes segédalgoritmusok szükség esetén kisebb segédalgoritmusokra oszthatók.

Meghívjuk a segédalgoritmus végrehajtására szolgáló parancsot kihívás és a fő algoritmus törzsébe van írva.

Ugyanaz az algoritmus tekinthető fő- és segédalgoritmusnak más algoritmusokhoz képest. Algoritmikus nyelvben először a fő algoritmust írják le, a segédalgoritmusokat pedig egy sorba írják alá.

1. feladat:

A robot a mező bal felső sarkában található. Nincsenek falak vagy árnyékolt cellák. Állítson össze egy segédalgoritmust, négy keresztet rajzolva egy vízszintes vonalra. A Robot végső pozíciója tetszőleges lehet.

Megoldás

Elemzés a táblán:

2. feladat. A robot a mező bal felső sarkában található. Nincsenek falak vagy árnyékolt cellák. Írjon egy algoritmust, amely egy 8 x 8-as négyzetet fest sakktábla mintára A Robot végső pozíciója tetszőleges lehet!

4. tevékenység 2. lecke

Gyakorlati munka PC-n "Problémamegoldás segédalgoritmusokkal".

Cél : gyakorlati készségek elsajátítása az algoritmusok szekvenciális finomítás módszerével történő felépítésében.

Tanterv

1. A feladatot a számítógép teljesen elvégzi. A tanulók feladatokat kapnak és teljesítik szoftverkörnyezet Bálvány. A munka eredményeit fájlként mentjük el későbbi ellenőrzés céljából.

1. feladat . A robot a mező bal alsó sarkában van. Nincsenek falak vagy árnyékolt cellák. Írjon egy algoritmust, amely 6 azonos hosszúságú függőleges csíkot fest 6 cellába! A Robot végső pozíciója tetszőleges lehet.

2. feladat .Kiegészítő segítségével készítsünk egy algoritmust az 1212-es számot alkotó cellák átfestésére.

Házi feladat: Találjon ki egy algoritmust, amely a következő képet rajzolja: Alkalmazzon két segédalgoritmust a probléma megoldásához.

5. tevékenység 1-2. lecke

Teszt

"Az algoritmus összeállítása a végrehajtó robot környezetében".

Cél: tesztelni a megszerzett ismereteket az algoritmusok létrehozásáról és elemzési képességéről a Kumir szoftverkörnyezetben.

Feladatok a ellenőrzési munka nehézségi szintek szerint vannak felosztva, és 3 feladatot tartalmaz a végrehajtó Robottal (1. és 2. feladat - elágazáshoz és hurkokhoz, 3. feladat - segédalgoritmus használatához.) A feladatok szövegét a melléklet tartalmazza.

A kezdeti és végső feltételeket, valamint a létrehozott algoritmusokat fájlként rögzítjük.

Az osztályzat a feladat nehézségi fokának megfelelően kerül megállapításra. A tanulónak joga van megválasztani a feladat típusát.

Végrehajtó vezérlő robot a KUMIR rendszerben

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:


  1. Kérdez kiinduló környezet feladat szerint:
Menü Eszközök → A Robot kezdőkörnyezetének módosítása (a környezet megrajzolása a feladat feltételének megfelelően, adjon nevet, mentse a Személyes mappába)

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

jobbra 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


A ciklus általános nézete "Ismétlés n-szer:

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öbb egyszerű feltételből és szolgálati szóból alakulnak ki É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?


  1. 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. Két segédrobot-algoritmus ismert

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. Hozzon létre algoritmusokat, amelyek alapján a Robot átfesti a megadott cellákat:



9. Ismeretes, hogy valahol a Robottól jobbra van egy fal. Alkossunk meg egy algoritmust, aminek vezérlése alatt a Robot több cellát lefest a falig, és visszatér eredeti helyzetébe.

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 irányítása 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!


16. Írjon programot, amely után a Robot végig tud menni a folyosón a mező bal alsó sarkától a jobb felső felé. A folyosó egy cella széles, és balról lentről jobbra felfelé húzódik. Egy lehetséges folyosóra példa látható az ábrán.

W

adachi GIA


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

  1. NAK NEK
    Szükséges

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

A Robot kezdeti helyének egy lehetséges változata az ábrán látható (a robotot "P" betű jelöli)

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


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


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.



  1. 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 a munkához, amely átfesti a fal melletti összes cellát: balra, felülről kezdve festetlen és egyen keresztül; 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

  1. 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):
Írjon egy algoritmust a munkához, amely átfesti a fal melletti összes cellát:

  • mind a bal oldalon;

  • a jobb oldalon felülről indulva festetlen és egyen keresztül.
A robotnak csak azokat a cellákat kell átfestenie, amelyek megfelelnek ennek a feltételnek.

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 befesti a vízszintes fal felett, a függőleges faltól jobbra é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).

Khiryanov Timofey Fedorovich

A fő algoritmikus konstrukciók az áramkör egy eleme által képviselt elemi műveletek mellett az alternatív végrehajtás és a ciklusok. Két alternatív programozási lehetőség és három fő ciklustípus létezik.

Feltételesen futtatható kód

Egyes műveletek feltételes utasítás alá helyezhetők. Akkor csak akkor hajtódnak végre, ha ez a feltétel igaz.

Ha<условие>
Hogy
<действия>
Minden

Alternatív

A folyamatábrában egy állapotteszt szolgálhat elvként az alternatív műveletek kiválasztásához. Vagyis ha a feltétel igaz, akkor a végrehajtás az egyik pályán halad, ha pedig hamis, akkor a másikon. A KuMir nyelvben egy előfeltételes ciklus a következő formában van:

Ha<условие>
Hogy
<действия>
másképp
<альтернативные действия>
Minden


A robot feltételei:
bal fal
jobb fal
alsó fal
felső fal
a cella árnyékolt
szabadon hagyták
jogos ingyen
feneke laza
felső laza
ketrec tiszta

Hurok előfeltétellel

Az előfeltételes hurok olyan ciklus, amely akkor hajtódik végre, amikor az indítása előtt meghatározott feltétel igaz. Ezt a feltételt a ciklustörzs végrehajtása előtt ellenőrizzük, így előfordulhat, hogy a törzs egyszer sem kerül végrehajtásra (ha a feltétel kezdettől fogva hamis). A legtöbb procedurális programozási nyelvben a while utasítás valósítja meg, ezért a második neve a while ciklus. A KuMir nyelvben egy előfeltételes ciklus a következő formában van:

nts viszlát<условие>
<тело цикла>
kts

Hurok utófeltétellel

Az utófeltételes hurok olyan ciklus, amelyben a feltételt a ciklustörzs végrehajtása után ellenőrizzük. Ebből következik, hogy a testet mindig legalább egyszer kivégzik. Pascalban ezt a ciklust a repeat..until operátor valósítja meg, C-ben pedig a do…while .
A KuMir nyelvben egy utófeltételes ciklus a következő formában van:

nc
<тело цикла>
cc_at<условие>

Hurok számlálóval

A számlálós hurok olyan 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 egyes értékére a ciklus törzse egyszer végrehajtásra kerül. A legtöbb procedurális programozási nyelvben az operátor valósítja meg számára, amely megadja a számlálót (az úgynevezett "hurokváltozót"), a szükséges lépések számát (vagy a számláló határértékét), esetleg azt a lépést, amelyben a számláló változik. A KuMir nyelvben a számlálóval ellátott ciklus a következő formájú:

egész
nc a 0-tól 9-ig
... huroktest
kts

Különböző programozási nyelvekben eltérően oldják meg azt a kérdést, hogy egy olyan ciklus végén mekkora változó értéke van, amelyben ezt a változót számlálóként használták.

Spirál rajzolásának algoritmusa:

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 példaprogramot:

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.

Beszéljünk ma a ciklusokról. Találjuk ki, mi az a ciklus, és hogyan tanítsuk meg Robotunkat ciklikus algoritmusok végrehajtására.

Így, mi az a ciklus? Képzeljük el, hogy testnevelés órán vagyunk, és a feladat előtt állunk csinálj 7 guggolást. Ez a feladat formalizálható lineáris algoritmusként, és akkor valahogy így fog kinézni:

csinálj egy guggolást

csinálj egy guggolást

csinálj egy guggolást

csinálj egy guggolást

csinálj egy guggolást

csinálj egy guggolást

csinálj egy guggolást

Vagyis 7-szer megismételtük a guggolás parancsát. Van értelme 7 egyforma parancsot írni? Talán egyszerűbb parancsot adni. csinálj 7 guggolást? Természetesen egyszerűbb és pontosabb. Ez a ciklus. Ön is emlékszik példákra az élet ciklusaira - jó néhány van belőlük.

És így lineáris algoritmus , ahol ugyanazok a parancsok ismétlődnek, kiadhatjuk ciklikus algoritmus formájában- mint az:

ismételje meg 7-szer

csinálj egy guggolást

ciklus vége

Tehát az általunk feltalált nyelven megterveztük a ciklust. A Robot előadó képes ciklusok rögzítésére is. Ráadásul, a ciklusok eltérőek.. Az imént mérlegelt opciót ún hurok számlálóval vagy hurok paraméterrel.

A ciklusok típusai.

Kerékpár számlálóval.

Hurok számlálóval akkor használható, ha előre ismert, hogy hány ismétlést kell elvégezni. A fenti, guggolásokkal kapcsolatos példában pontosan ez a helyzet.

Ahhoz, hogy egy végrehajtó ciklust írhassunk számlálóval, ismernünk kell a szintaxisát. És ő ilyen:

nc<ismétlések száma> alkalommal

<команда 1>

<команда 2>

<команда n>

Itt meg kell adnunk az ismétlések számát (számát) és az ismétlődő parancsokat. A ciklusban ismétlődő parancsokat hívjuk huroktest.

Nézzük ezt egy példával.

Kezdetben a Robot a bal felső cellában volt.

Először lineárisan oldjuk meg a feladatot. Ebben az esetben átfestjük az aktuális cellát, és 1 cellát jobbra mozgatunk, és a program így fog kinézni:
használj Robotot
alg
korai

festeni át

jobb

festeni át

jobb

festeni át

jobb

festeni át

jobb

festeni át

jobb

festeni át

jobb

festeni át

jobb

Amint látja, az átfestés és jobbra festés parancsai 7-szer ismétlődnek. Most írjuk át a programot egy ciklus segítségével. Egyébként a menü segítségével hurkot szúrhat be a programba Beszúrás tárgy kiválasztása nc-time-kc vagy nyomja meg az egyik billentyűparancsot Esc, P(orosz Р betű) ill Esc, H(latin H betű). És a gombokat egymás után kell megnyomni- először az Esc-t engedd el és csak utána a P vagy a H.

Szóval itt a miénk ciklus programígy fog kinézni:

használj Robotot

nc 7 alkalommal

festeni át

jobb

Ha lefuttatjuk, látni fogjuk, hogy az eredmény ugyanaz lesz - 7 kitöltött cella. A program azonban rövidebb és algoritmikus szempontból sokkal intelligensebb lett!

Bemelegítésként és konszolidációként azt javaslom, hogy írjunk önállóan egy programot a Robot számára, amely egy 7 cellás oldalú négyzetet rajzol. Természetesen ciklus használatával. Kommentben várom a megoldást.

Feltételes hurok.

Ha a GIA 19. feladatát az informatikában robottal oldjuk meg, nem fog működni a számlálós hurok használata. Mivel ott a mező általában végtelen, és a falaknak nincs meghatározott hosszúsága. Ezért nem tudjuk számlálóval meghatározni egy hurok ismétlődéseinek számát. De nem számít – segíteni fog nekünk hurok feltétellel.

Térjünk vissza a testneveléshez és változtassunk a feladaton. Hiszen lehet, hogy valaki nem csinál 7 guggolást, míg a másik 27-et tud. Ezt figyelembe lehet venni a ciklus kialakításánál? Biztosan. Csak most nem számlálót (ismétlések számát), hanem feltételt fogunk használni. Például, mielőtt elfáradna, végezzen guggolást. Ebben az esetben az ember nem meghatározott számú guggolást végez, hanem addig guggol, amíg el nem fárad. És a ciklusunk az absztrakt nyelven így fog kinézni:

Viszlát nem fáradt

csinálj egy guggolást

ciklus vége

A szavak esetünkben nem fáradtak el – ez egy feltétel. Ha igaz, a ciklus végrehajtásra kerül. Ha hamis (fáradt), a ciklus törzse nem kerül végrehajtásra. A robot előadónak több feltétele van

felső laza

feneke laza

szabadon hagyták

jobbra ingyen

felső fal

alsó fal

bal fal

jobb fal

De a GIA 19. feladatának állapotában csak az első 4 van feltüntetve, ezért csak azokat fogjuk használni.

Most oldjuk meg a következő feladatot a Robot számára – húzzunk függőleges vonal a mező bal oldalától a jobb széléig hurkot használok feltétellel. Kezdetben a Robot a bal felső sarokban van.

Először fogalmazzunk meg egy verbális algoritmust – vagyis szavakkal írjuk le, mit kell tennie a Robotnak. Ez az algoritmus valahogy így fog hangzani:

« A jobb oldalon szabadon tegyen egy lépést jobbra, és fesse le a cellát »

Ennek eredményeként a Robot átfut az összes cellán jobbra, és addig fest rajtuk, amíg a fal a jobb oldalon nem lesz.

Robot programunk forráskódja a következő lesz:

használj Robotot

nc míg jobb szabad

jobb

festeni át

A program végrehajtása eredményeként a következő képet fogjuk látni: