Tsüklid ja tingimused iidoli keeles. Esineja Robot. Lihtsad käsud Kuidas teha iidol-robotile tsiklit

Eesmärgid: arendada tsükli abil algoritmide kirjutamise, täitmise ja silumise oskust Hüvasti; saada arusaam silmuse kasutamisest Hüvasti ; arendada analüüsivõimet.

Õpilased peaksid teadma: tsükli salvestamise ja täitmise reeglid Hüvasti; silmuse omadused Hüvasti.

Õpilased peavad suutma: kasutage algoritmide loomisel silmuse konstruktsiooni Hüvasti ja kirjutage see üles Idoli keeles, valdage silumismeetodeid: samm-sammult, pidevalt.

Õppemeetod: selgitav-illustreeriv ja reprodutseeriv (uue materjali selgitamise etapis), reprodutseeriv probleemse elementidega (materjali kinnistamise etapp).

Tunni pakkumine:

  • Iidoli süsteem;
  • interaktiivne tahvel;
  • multimeediumprojektor;
  • ülesannete kaardid.

Tundide ajal

1. Uue materjali selgitus.

Üldiselt peaks algoritm olema universaalne, st see ei tohiks sõltuda roboti ja seina vahelisest kaugusest. Selleks on algoritmilises keeles spetsiaalne käsk - silmus Hüvasti.

Üldvaade tsüklist Hüvasti

Üldiselt tsükkel Hüvasti on kirjutatud nii:

Tsükli sooritamisel kordab arvuti järgmisi toiminguid:

a) kontrollib funktsioonisõna järele kirjutatut Hüvasti seisund;

b) kui tingimus ei ole täidetud, siis tsükkel lõpeb ja arvuti hakkab täitma pärast kirjutatud käske kts . Kui tingimus on täidetud, siis arvuti täidab tsükli keha, kontrollib tingimust uuesti jne.

Näide.

Silumismeetod: samm sammu haaval.

Dialoog arvuti ja roboti vahel

Arvuti: Kas see on allosas tasuta?

Robot: Jah.

Arvuti: alla.

Robot: liigub alla lahtrisse B.

Arvuti: Kas see on allosas tasuta?

Robot: Jah.

Arvuti: alla.

Robot: liigub alla lahtrisse B.

Arvuti: Kas see on allosas tasuta?

Robot: Ei.

Kuna Robot vastas ei, siis see on. järel kirjutatud tingimus ei ole täidetud ja tsükli täitmine lõpeb.

Näidake Kumiri süsteemis silumismeetodeid: samm-sammult ja pidevalt.

Silmuse keha ei tohi teostada isegi üks kord, kui tingimus on tsüklis Hüvasti ei järgita algusest peale. Näiteks kui "alla seinani" algoritmis vastab Robot esimesele küsimusele "altpoolt vabalt" Ei, siis ei kutsu arvuti isegi üks kord käsku "alla".

Looming. Silmuse jooksmine Hüvasti ei pruugi lõppeda, kui tingimus on alati täidetud. Näiteks kui Roboti all pole seinu, siis eelmise algoritmi täitmisel hakkab arvuti “loopima”, st. küsib lõputult robotilt "alt vabaks" ja saab vastuse Jah ja käsk "alla".

Harjutuste tegemine.

2. Katsed programmiga Robotiesineja näitel.

Idoli süsteemis on vaja kõigepealt teha ettevalmistusi roboti asukoha määramiseks (failid 1.fil-6. fil).

Harjutused.

Katsed programmiga.

1. harjutus. (Laadi alla fail 1.fil)

Robot on vaja üle viia lahtrist A lahtrisse B. Kasutage tsüklit Hüvasti:

kasuta robotit

2. ülesanne. (Laadi alla fail 2.fil)

Arvestatakse, et robot asub vasakpoolses seinas ristküliku sees, mis on igast küljest seintega ümbritsetud. Ristküliku sees ei ole seinu, ristküliku mõõtmed on teadmata. Peate värvima horisontaalse lahtrirea Roboti algasendist paremale seinale ja viima roboti tagasi algasendisse.

3. ülesanne. (Laadi alla fail 3.fil)

Robot asub horisontaalses koridoris. Värvige kõik koridori lahtrid:

4. ülesanne. (Laadi alla fail 4.fil)

1. Töötage ümber algoritm "värvige rida paremale ja tagastage", kasutades selles silmust:

2. Koostage abialgoritmi abil algoritm, milles Robot maalib ristküliku.

5. ülesanne. (Laadi alla fail 5.fil)

Looge algoritm kõigi ristkülikukujulise seina ümber olevate lahtrite värvimiseks:

6. ülesanne. (Laadi alla fail 6.fil) (2009. aasta eksamimaterjalidest)

Robot asub suletud ruumi vasakus ülanurgas, mis on ristküliku kujuline. Ristküliku mõõtmed on teadmata. Kirjutage robotile algoritm, mis värvib ristküliku neli nurgalahtrit.

Ülesanne 7. (Laadi alla fail 6.fil) (2009. aasta eksamimaterjalidest)

Robot asub suletud ruumi vasakus ülanurgas, mis on ristküliku kujuline. Ristküliku mõõtmed on teadmata. Kirjutage robotile algoritm, mis värvib kõik ristküliku sees ja ristküliku alumise külje kõrval asuvad lahtrid.

3. Konsolideerimine. Küsimused:

Milliseid käske annab arvuti tsükli täitmisel robotile:

a) nts kuni lahtri üle värvimiseni

b) nts, kui lahter on varjutatud

Olukorras, kus Robot seisab:

  1. maalitud kambris,
  2. värvimata?

Roboti asukoht on näidatud järgmistel piltidel:

Kuidas tsüklit teostatakse?

Kodutöö. Pärast lausete täitmist määrake muutuja S väärtus:

Kirjandus: A.G. Kushnirenko “Informaatika ja arvutiteaduse alused”.

Roboti käsutäitja juhtimine süsteemis KUMIR

Robot eksisteerib teatud keskkonnas (ristkülikukujuline ruuduline väli). Mõne välja raku vahel võivad olla seinad. Mõned lahtrid võivad olla üle värvitud (joonis 3.11).

Robot hõivab väljast täpselt ühe lahtri.

Käskude abil üles, alla, vasakule ja paremale liigub robot näidatud suunas kõrvalasuvasse lahtrisse. Kui teel on sein, tekib tõrge - kuvatakse teade, et järgmist käsku pole võimalik täita.

Värvimise käsu peale värvib Robot raku, milles ta seisab. Kui lahter on juba üle värvitud, värvitakse see uuesti, kuigi nähtavaid muutusi ei toimu.

Robot suudab täita ainult õigesti kirjutatud käske. Kui kirjutate alla käsu asemel üles, ei saa Robot sellest kirjest aru ja teatab kohe veast.

KOHTA
vead: 1 süntaktiline; 2. loogiline

Olukordade kirjeldused salvestatakse tekstifailidesse erivormingus (.fil formaadis).

Praegune- keskkond, kus robot hetkel asub (sealhulgas teave roboti asukoha kohta).

Käivitamine- keskkond, kuhu Robot on Robotit kasutades programmi täitmise alguses sunnitud paigutama.

Tööprotseduur:


  1. Määra lähtekeskkond vastavalt probleemsetele tingimustele:
Menüü Tööriistad → Muuda Roboti alguskeskkonda (joonista keskkond vastavalt ülesande tingimustele, anna sellele nimi, salvesta kausta Isiklik)

2. Määrake töövõtja:

Menüü Lisa →Kasuta robotit

3. Kirjutage ülesande lahendamise algoritm.

4. Käivitage algoritm (menüü Käivitamine → Käivita pidevalt /F9)

Robotiesinejate käsusüsteem KUMIR süsteemis


Meeskond

Tegevus

üles

Robot liigub 1 ruudu võrra ülespoole

alla

Robot liigub 1 ruudu võrra allapoole

vasakule

Robot liigub 1 ruudu võrra vasakule

õige

Robot liigub 1 ruudu võrra paremale

värvi üle

Robot värvib raku, milles ta on

paremal vaba

Robot kontrollib vastava täitmist lihtne tingimused

vabaks jäänud



peal tasuta



alt vabaks



rakk värvitakse üle



puur on puhas



Tsüklilised algoritmid

Tsükkel– toimingute kordamise korraldamine, kui mõni tingimus on tõene .

Silmuse keha on korratavate toimingute komplekt.

Seisukord - loogiline avaldis (lihtne või keeruline (liit)
Tsükli tüübid:

1.Silmus "Korda n korda" 2. Korda "Kuni"
nts n korda nts praegu
. . Silmuse keha. . Silmuskorpus
kts kts

Näide: nts praegu paremal vaba


Tsükli üldvaade “Korda n korda:

KORDA n KORDA

LÕPP
kts

Tsükli "saajal" üldvaade:

TEE SEDA HÜVASTI

LÕPP
Komposiittingimused moodustatud ühest või mitmest lihttingimusest ja funktsioonisõnast JA, VÕI, EI.


Komposiitseisund A JA B(kus A, B on lihttingimused), on täidetud, kui on täidetud kõik kaks selles sisalduvat lihttingimust.

Las A - pealt tasuta, IN - paremal paremal, siis liittingimus A JA B- pealt vaba ja paremal vaba.


Komposiitseisund A VÕI B täidetud, kui on täidetud vähemalt üks kahest selles sisalduvast lihtsast tingimusest: top tasuta VÕI õige tasuta
Komposiitseisund EI A- täidetud, kui tingimus A ei ole täidetud.

Näide: Olgu A värviline lahter (lihttingimus).

P Ühenduse oleku kontrollimine NOT A:

a) A – lõpetatud, MITTE A (pole varjutatud) – lõpetamata.

b) A – lõpetamata, EI A (EI varjutatud) – lõpetatud.


Haru käsk

Hargnemine - toimingute korraldamise vorm, milles sõltuvalt mõne tingimuse täitmisest või mittetäitmisest sooritatakse kas üht või teist toimingute jada.

IF-käsu üldvaade:

KUI SEE MUUDULISELT

LÕPP

ICON keeles:

Täielik hargnemine: Mittetäielik hargnemine:
Kui See Kui See

muidu

kõike kõike

Abialgoritm- algoritm, mis lahendab mõne põhiülesande alamülesande.

KUMIR süsteemis kirjutatakse abialgoritmid põhiprogrammi lõppu (pärast teenindussõna con), kutsutakse põhiprogrammis täitmiseks nime järgi.

IN uuringud ja ülesanded

1. Andke kõik algoritmid kolmest käsust, mis viivad roboti algsest asukohast lahtrisse B.

Kas selle ülesande jaoks on olemas algoritm, milles robot teeb:

a) kaks sammu; b) neli sammu; c) viis sammu; d) seitse sammu?


  1. Petya koostas algoritmi, mis kannab mõned lahtrid värvides roboti lahtrist A lahtrisse B. Mida peaks Kolja selle algoritmiga tegema, et saada algoritm, mis kannab roboti B-st A-sse ja värvib samad lahtrid?


7. Teada on kaks abiroboti algoritmi

Joonistage, mis juhtub, kui robot täidab järgmisi põhialgoritme:


A)

nts 5 korda


muster_1

õigus; õigus;


b)

nts 7 korda


muster_2

õigus; õige


V)
õigus; õigus; õige

üles; üles

õigus; õigus; õige

alla; alla


G)
õigus; õige
õigus; õige

8. Looge algoritmid, mille juhtimisel robot värvib näidatud lahtrid üle:



9. Teadaolevalt on kuskil Roboti paremal pool sein. Looge algoritm, mille juhtimisel Robot maalib lahtrirea kuni seinani ja naaseb algasendisse.

10. On teada, et kuskil Roboti paremal pool on täidetud lahter.

KOOS jätke algoritm, mille kontrolli alla robot värvib värvitud lahtrini hulga lahtreid ja naaseb algsesse asendisse.

11. On teada, et Robot asub horisontaalse koridori vasakpoolse sissepääsu kõrval.

12. Teadaolevalt on Robot kuskil horisontaalses koridoris. Ükski koridori kamber pole üle värvitud.

Looge algoritm, mille juhtimisel robot värvib kõik selle koridori lahtrid ja naaseb algasendisse.


13. Kümnest lahtrist koosnevas reas Robotist paremal on mõned lahtrid varjutatud.

KOOS jätke lahtreid värviv algoritm:

a) iga varjutatud lahtri all;

b) iga varjutatud lahtri kohal ja all.


14. Mida saab öelda algoritmi järgmise fragmendi õigsuse kohta?

nts praegu rakk värvitakse üle

KUI paremal vaba SEE

õigus; värvi üle

To
ts

15. Koosta programm, millega Robot pääseb kõigis kolmes labürindis lahtrisse B.


16. Koosta programm, mida järgides saab Robot kõndida mööda koridori põllu alumisest vasakust nurgast paremasse ülaossa. Koridor on ühe kambri lai ja ulatub vasakult-alt paremale-üles suunas. Võimaliku koridori näide on näidatud joonisel.

Z

GIA saavutused


  1. Koridor1. Robot asub kuskil vertikaalses koridoris. Ükski koridori kamber pole üle värvitud. Looge algoritm, mille juhtimisel robot värvib kõik selle koridori lahtrid ja naaseb algasendisse.

  1. TO
    Vajalik

    Antud
    koridor2. Robot asub kitsa vertikaalse koridori ülemises lahtris. Koridori laius on üks lahter, koridori pikkus võib olla suvaline.

Roboti võimalik esialgne asukoht on näidatud joonisel (robot on tähistatud tähega "P")

Kirjutage robotile algoritm, mis värvib kõik koridoris olevad lahtrid ja tagastab roboti algsesse asendisse. Näiteks ülaltoodud pildi puhul peab robot värvima üle järgmised lahtrid (vt pilti):


  1. Lõputul väljal on pikk horisontaalne sein. Müüri pikkus pole teada. Robot asub ühes kambris otse seina kohal. Samuti pole teada Roboti esialgne asukoht. Üks võimalikest positsioonidest:
N


Vajalik

Antud
Kirjutage Roboti jaoks algoritm, mis värvib kõik seina kohal ja sellega külgnevad lahtrid, olenemata seina suurusest ja Roboti algsest asukohast. Näiteks antud pildi puhul peab robot värvima üle järgmised lahtrid:

Roboti lõppasend võib olla meelevaldne. Algoritmi täitmisel ei tohiks robotit hävitada.



  1. Lõputul väljal on pikk vertikaalne sein. Müüri pikkus pole teada. Robot on ühes puuris, mis asub otse seinast paremal. Samuti pole teada roboti esialgne asukoht. Üks roboti võimalikest asenditest on näidatud joonisel (robotit tähistab täht "P"): Kirjutage tööle algoritm, mis värvib kõik seinaga külgnevad lahtrid: vasakul, alustades ülevalt värvimata üks ja läbi ühe; paremal, alustades alt varjutatud üks ja läbi ühe. Robot peab värvima ainult rakke, mis vastavad sellele tingimusele. Näiteks ülaltoodud pildi puhul peab robot täitma järgmised lahtrid (vt pilti): Roboti lõplik asukoht võib olla suvaline. Algoritm peab lahendama probleemi suvalise seina suuruse ja roboti mis tahes kehtiva lähteasendi korral. Algoritmi täitmisel ei tohiks robotit hävitada.


Kirjutage robotile algoritm, mis värvib kõik vertikaalsest seinast vasakul ja horisontaalse seina kohal ning nendega külgnevad lahtrid. Robot peab värvima ainult rakke, mis vastavad sellele tingimusele. Näiteks ülaloleva pildi puhul peab Robot värvima järgmistes lahtrites (vt pilti).


N Kirjutage robotile algoritm, mis värvib seinaga külgnevad lahtrid ülevalt ja alt, alustades vasakult ja igast teisest. Robot peab värvima ainult rakke, mis vastavad sellele tingimusele. Näiteks antud joonisel a) Robot peab värvima üle järgmised lahtrid (vt joonis b).

Roboti lõppasend võib olla meelevaldne. Algoritm peab lahendama probleemi suvalise seina suuruse ja roboti mis tahes vastuvõetava algpositsiooni korral.



R

  1. Lõputul väljal on pikk vertikaalne sein. Müüri pikkus pole teada. Robot asub ühes lahtris, mis asub otse seinast vasakul. Samuti pole teada roboti esialgne asukoht. Üks roboti võimalikest asenditest on näidatud joonisel (robot on tähistatud tähega "P"):
Kirjutage algoritm, mis värvib kõik seinaga külgnevad lahtrid:

  • vasakul kõik;

  • paremal, alustades ülevalt värvimata ühest ja läbi ühe.
Robot peab värvima ainult rakke, mis vastavad sellele tingimusele.

B
1102_GIA2011

Lõputul väljal on kaks horisontaalset seina. Seinte pikkus pole teada. Seinte vaheline kaugus pole teada. Robot asub alumise seina kohal puuris, mis asub selle vasakus servas. Kirjutage robotile algoritm, mis värvib kõik lahtrid, mis asuvad alumise seina kohal ja ülemise seina all ning nende kõrval. Robot peab värvima ainult rakke, mis vastavad sellele tingimusele. Näiteks ülaltoodud pildi jaoks peab robot värvima järgmised lahtrid (vt pilti):

Roboti lõplik asukoht võib olla suvaline. Algoritm peab lahendama suvalise välja suuruse ja ristkülikukujulise välja seinte mis tahes lubatud paigutuse probleemi. Algoritmi täitmisel ei tohiks robotit hävitada.


IN
1103_GIA_2011


Lõputul väljal on horisontaalne sein. Müüri pikkus pole teada. Seina paremast otsast ulatub alla teadmata pikkusega vertikaalne sein. Robot asub horisontaalse seina kohal puuris, mis asub selle vasakus servas. Joonisel on kujutatud üks võimalikest viisidest seinte ja roboti paigutamiseks (robotit tähistatakse tähega “P”).

Kirjutage robotile algoritm, mis värvib kõik lahtrid, mis asuvad horisontaalse seina kohal ja vertikaalsest seinast paremal ning nendega külgnevad. Robot peab värvima ainult rakke, mis vastavad sellele tingimusele. Näiteks ülaloleva pildi puhul peab Robot värvima järgmistes lahtrites (vt pilti).

Ülesande kaardid

    Leidke klaviatuurilt sisestatud n-täisarvude hulgast negatiivsete arvude arv

    Antud kaks suvalist arvu. Kui nende toode on väiksem kui 100, suurendage iga numbrit 2 võrra ja kuvage monitoril lõplikud numbrid

    n-täisarvud sisestatakse järjestikku. Leidke jada viieliste arv

    n-täisarvud sisestatakse järjestikku. Leidke erinevus nende arvude maksimaalsete ja minimaalsete väärtuste vahel

    Leidke klaviatuurilt sisestatud n-täisarvude hulgast negatiivsete arvude arv

    Antud kaks suvalist arvu. Kui nende toode on väiksem kui 100, suurendage iga numbrit 2 võrra ja kuvage monitoril lõplikud numbrid

    n-täisarvud sisestatakse järjestikku. Leidke jada viieliste arv

    n-täisarvud sisestatakse järjestikku. Leidke erinevus nende arvude maksimaalsete ja minimaalsete väärtuste vahel

    Leidke klaviatuurilt sisestatud n-täisarvude hulgast negatiivsete arvude arv

    Antud kaks suvalist arvu. Kui nende toode on väiksem kui 100, suurendage iga numbrit 2 võrra ja kuvage monitoril lõplikud numbrid

    n-täisarvud sisestatakse järjestikku. Leidke jada viieliste arv

    n-täisarvud sisestatakse järjestikku. Leidke erinevus nende arvude maksimaalsete ja minimaalsete väärtuste vahel

    Leidke klaviatuurilt sisestatud n-täisarvude hulgast negatiivsete arvude arv

    Antud kaks suvalist arvu. Kui nende toode on väiksem kui 100, suurendage iga numbrit 2 võrra ja kuvage monitoril lõplikud numbrid

    n-täisarvud sisestatakse järjestikku. Leidke jada viieliste arv

    n-täisarvud sisestatakse järjestikku. Leidke erinevus nende arvude maksimaalsete ja minimaalsete väärtuste vahel

Khiryanov Timofey Fedorovitš

Peamised algoritmilised struktuurid, lisaks elementaarsetele operatsioonidele, mida kujutab diagrammi üks element, on alternatiivne täitmine ja tsüklid. On kaks alternatiivset täitmisprogrammeerimise valikut ja kolme peamist tüüpi tsüklit.

Tinglikult täidetav kood

Mõned toimingud saab paigutada tingimusliku operaatori alla. Siis täidetakse need ainult siis, kui see tingimus on tõene.

Kui<условие>
See
<действия>
Kõik

Alternatiivne

Vooskeemis võib tingimuste testimine olla alternatiivsete toimingute valimise põhimõte. See tähendab, et kui tingimus on tõene, läheb täitmine mööda ühte trajektoori ja kui vale, siis mööda teist trajektoori. KuMiri keeles on eeltingimusega tsüklil järgmine vorm:

Kui<условие>
See
<действия>
muidu
<альтернативные действия>
Kõik


Tingimused robotile:
vasak sein
paremal pool sein
seina alla
sein üleval
rakk värvitakse üle
vabaks jäänud
paremal vaba
alt vabaks
peal tasuta
puur on puhas

Silmus eeltingimusega

Eeltingimusega tsükkel on tsükkel, mis kestab seni, kuni mõni enne selle algust määratud tingimus on tõene. Seda tingimust kontrollitakse enne tsükli põhiosa täitmist, nii et keha ei pruugita isegi üks kord täita (kui tingimus on algusest peale vale). Enamikus protseduurilistes programmeerimiskeeltes rakendab seda operaator while, sellest ka selle teine ​​nimi - while tsükkel. KuMiri keeles on eeltingimusega tsüklil järgmine vorm:

nts praegu<условие>
<тело цикла>
kts

Järelseisundiga silmus

Järeltingimusega tsükkel on tsükkel, mille tingimust kontrollitakse pärast tsükli põhiosa täitmist. Sellest järeldub, et keha hukatakse alati vähemalt üks kord. Pascali keeles rakendab seda tsüklit operaator repeat..until, C-s - do...while.
KuMiri keeles on järeltingimusega tsüklil järgmine vorm:

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

Aas loenduriga

Loenduriga tsükkel on tsükkel, milles teatud muutuja muudab teatud sammuga oma väärtuse etteantud algväärtusest lõppväärtuseks ja selle muutuja iga väärtuse puhul täidetakse tsükli keha üks kord. Enamikus protseduurilistes programmeerimiskeeltes rakendab seda operaator jaoks, mis määrab loenduri (nn "silmusmuutuja"), vajaliku läbimiste arvu (või loenduri piirväärtuse) ja võimalusel loenduri muutmise sammu. KuMiri keeles on loenduriga tsüklil järgmine vorm:

terve
nc a jaoks vahemikus 0 kuni 9
...silmuskeha
kts

Erinevad programmeerimiskeeled lahendavad tsükli lõpus oleva muutuja väärtuse probleemi, milles muutujat kasutati loendurina erineval viisil.

Loeng 4. Aritmeetilised avaldised

Aritmeetilised avaldised ja nende kirjutamise reeglid. Algoritmid "tagasiside". "Hüvasti" käsk. Tingimused algoritmilises keeles. Käsud "Kui" ja "valik". Juhtkäsklused. Käskude "visuaalne" esitus. Digressioon: aritmeetiliste avaldiste kirjutamise reeglid ja vorm 21. sajandi Fortranis.

Ajaleht nr.

Loeng 1. Kursuse põhieesmärgid. Kursuse ehitamise metoodika. Probleemne lähenemine. Teooriat õpitakse läbi praktika. KuMir-süsteem toetab tõhusalt traditsiooniliste protseduur-programmeerimiskeelte ja traditsiooniliste silumismeetodite kontseptsioone. Näited “Idoli” kasutamisest eelkutselistel kursustel.

Loeng 2. Praktiline tutvumine KuMir süsteemiga: esineja Robot. Algoritmi mõiste. Robotiesineja juhtimine kaugjuhtimispuldi abil. Lineaarsed algoritmid. Algoritmi salvestamine. Kõrvalepõike: Karel-Robot Stanfordi ülikooli programmeerimise algkursusel.

Loeng 3. Algoritmi “visuaalse” salvestamise meetodid. Roboti tarkvara juhtimine. Tsükkel nüks kord". Abialgoritmide kasutamine. Algoritmide kirjutamine algoritmilises keeles.

Test nr 1.

Loeng 4. Aritmeetilised avaldised ja nende kirjutamise reeglid. Algoritmid "tagasiside". "Hüvasti" käsk. Tingimused algoritmilises keeles. "Kui" ja "valik" käsud. Juhtkäsklused. Käskude "visuaalne" esitus. Digressioon: aritmeetiliste avaldiste kirjutamise reeglid ja vorm 21. sajandi Fortranis.

Loeng 5. Kogused algoritmilises keeles. Teabe sisestamise/väljundi käsud. Ülesande käsk. Abialgoritmid. Algoritmid tulemustega ja algoritmid-funktsioonid. Tsükkel "eest". Tabeli väärtused. Loogilised, sümboolsed ja sõnasõnalised väärtused.

Test nr 2.

Loeng 6. Algoritmiseerimismeetodid. Korduvad suhted. Iteratsioonimeetod. Silmusinvariant. Rekursioon.

Loeng 7. Kaasaegsete arvutite füüsilised alused. Mikroprotsessor on kaasaegse arvuti süda. Kuidas arvutit luua.

Loeng 8. Virtuaalsed ja reaalsed esinejad KuMir süsteemis. Esitaja Joonistaja. Lego Robot on programmiga juhitav "Iidoli" esineja. Hüpertekstid KuMiri süsteemis. Õpilastele ülesannete ettevalmistamine ja automaatne kontrollimine.

Lõputöö.

Sel ajal, kui koolilaps “monteerib” programmi “PictoMiris”, ei pea ta praktiliselt mingit uut, ebatavalist “arvutimaailma” valdama. Loomulikult peab laps arvutist soovitud tulemuse saavutamiseks õppima hiirega juhtima, kuid liides tervikuna põhineb lapsele tuttavatel kontseptsioonidel ja tegevustel, on "läbipaistev" ega nõua lapselt liigset keskendumist. arvutiga suhtlemise protsessi kohta. Sel hetkel keskendub õpilane peaaegu 100% oma jõupingutustest (või õigemini öeldes "tähelepanu kogusest") ülesande lahendamise algoritmile. Kuid niipea, kui toimub üleminek graafiliselt programmeerimiselt traditsioonilisemale tekstipõhisele programmeerimisele, hakkab õpilane kokku puutuma “teistsuguse maailmaga”, mille seadused erinevad koolis juba õpitutest. Me räägime ennekõike aritmeetiliste avaldiste salvestamisest, õpilane arendas kümneid tunde koolis matemaatikatundides nendega manipuleerimise oskusi ja saavutas teatud automaatsuse.

Roboti juhtimise esimestes ülesannetes demonstreerib arvuti oma võimekust juhtmasina, mitte arvutusmasinana. Siis aga ilmub tsükkel N korda ja mõne ülesande lahendamisel võib õpilasel tekkida vajadus võtta N-ks arv, mis ilmub mingi arvutuse tulemusena, näiteks lahtrite arv väljal suurusega 9? 14. Siin selgub, et sellise välja lahtrite koguarvu pole üldse vaja ise (peas, paberil või kalkulaatoriga) välja arvutada ja tulemust programmi “sisestada”. Selgub, et arvuti ise suudab kõik vajalikud arvutused teha kohe, kui me talle ütleme (programmi kirjutame), mida täpselt arvutada tuleb. See tähendab, et jämedalt öeldes ei pea arvutis probleemi lahendamiseks niivõrd teadma "mis on kaks korda kaks", vaid suutma arvutile öelda, et peate võtma täpselt toimingu "kaks kaks korda" tulemuse. ” või tehte „9 korda 14”.

Liitmise ja lahutamisega probleeme pole. Salvestuses tsükkel 3+3 kordaõpilasele pole midagi uut. Täpselt samal kujul panevad õpilased matemaatikatundides kirja ja loodetavasti arvutavad kalkulaatori abita erinevaid summasid ja erinevusi. Kuid keerukamate aritmeetiliste avaldiste puhul hakkavad koolimatemaatika ja traditsiooniliste algoritmiliste keelte märgistamise reeglid mõnevõrra erinema.

Fakt on see, et paberil ja tahvlil töötades “joonistame” matemaatilisi valemeid - juuri, murde, kraade ja indekseid ning see on väga mugav. Kuid traditsioonilistes programmeerimiskeeltes ei saa aritmeetilist avaldist joonistada, vaid see tuleb “kodeerida”, vajutades arvuti klaviatuuri nuppe. Tänu sellele on programmeerimisel välja kujunenud lihtsustatud, nn “lineaarse” valemite kirjutamise traditsioon, millega 21. sajandi alguse tudeng peab harjuma ja kohanema. (Tõenäoliselt sajandi keskpaigaks me seda enam tegema ei pea, vaata allolevat programmi paremalt.) Seega peame vajalike valemite (aritmeetiliste avaldiste) programmi sisestamisel kasutama arvuti klaviatuuri ja need valemid teatud viisil kodeerida (krüpteerida). Nagu iga teabe kodeerimist või krüptimist hõlmav ülesanne, võib see lihtne tehniline ülesanne olla atraktiivne mõnele kooliõpilasele (kes on roboti juhtimisest väsinud). Selle probleemi lahendamisel selgub, et klaviatuuril on punktisümbol, kuid korrutamissümbolit “?” pole ja punkt ei toimi ka korrutamise sümbolina. Selgub ka, et aritmeetilisi valemeid kujul 8(2+3) pole kombeks kirjutada, kus korrutamismärk puudub. Arvuti (täpsemalt programmeerimiskeele kompilaator) saaks sellistest valemitest aru, kuid traditsiooniliselt keeldub seda tegemast ja nõuab valemisse tärni sisestamist - korrutamismärki: 8 * (2 + 3). Kuid arvuti tajub reeglina kahte järjestikust tärni astendamise märgina.

Kõik need väikesed detailid kokku moodustavad takistuse, mille õpilane peab ületama. Tavaliselt see probleeme ei tekita.

Lapsed reeglina ei tee vigu, välja arvatud üks laialt levinud viga: vormi murrud

ja kirjutatakse 3+5/2 ja 3*5/2 ilma sulgudeta, õigete märgete (3+5)/2 ja (3*5)/2 asemel.

Aritmeetiliste avaldiste kirjutamise reeglid 21. sajandi Fortranis

Viimastel sajanditel on matemaatikud arendanud matemaatiliste valemite keelt, mis on osutunud tõhusaks vahendiks matemaatiliste mõistete väljendamisel ja matemaatiliste objektidega manipuleerimise meetoditel. Kui eelmise sajandi keskel ilmusid arvutid, esimesed arvutitekstiredaktorid ja esimesed programmeerimiskeeled, selgus, et nad ei suuda töötada matemaatikas välja töötatud matemaatiliste valemite keelega. Aja jooksul on olukord matemaatiliste valemitega tekstidokumentides paranenud. Matemaatikud ja programmeerijad mõtlesid välja ja standardiseerisid viise matemaatiliste valemite tekstidokumentidesse sisestamiseks, kuid programmeerijad jätkasid oma programmides valemite kirjutamise ilmekat "lineaarset" vormi standardklaviatuurilt sisestatud tähemärkide ahela kujul.

21. sajandil hakkas olukord muutuma. USA sõjaväeosakonna tellimusel töötasid SUN-i spetsialistid välja Fortressi keele, mis sisaldas algselt võimalust kasutada programmitekstides üldtunnustatud matemaatilisi tähistusi. Hetkel on selles suunas tehtud alles esimesi samme, kuid kindluskeeles on juba võimalik kasutada: kreeka tähti:

üla-/alaindeksid ja murrud:

välja jäetud korrutusmärkidega valemid:

valemid, milles elementaarfunktsioonide argumendid ei ole sulgudes:

määrata operatsioonide märgid

Ja see on alles algus, teadlaste ja inseneride poolt kasutatavate programmide tekstid on välimuselt sarnased alg- ja kõrgmatemaatika õpikutega.

Algoritmid "tagasiside". "Hüvasti" käsk

Seni töötasime Robotiga LOGO-s Kilpkonna graafika stiilis, nimelt kamandasime ilma igasuguse tagasisideta. Seetõttu oleks see, mida me tegime (metoodilisest aspektist vaadatuna), oleks võinud teha sama edukalt, näiteks samas LOGOs. Abistamisalgoritme (argumentidega või ilma) saab õppida kas roboti või kilpkonna abil.

Alguses oli meil Roboti (või Vertuni) programmide koostamisel reeglina eelnevalt põhjalik teave Roboti keskkonna kohta. Kuid metoodiliselt on Robot (ja Vertun) palju rikkam kui kilpkonn, kuna sellel on tagasisidekäsud. Ja neid käske kasutades saab inimene kiiresti teavet olukorra kohta temast eemal asuva roboti ümber ja arvuti saab programmi täitmisel kiiresti teavet vastu võtta. Näiteks käivitades käskluse "vasakul tasuta", olenemata sellest, kellelt see pärineb, edastab robot teavet olukorra kohta, milles ta praegu asub. Veel ühe teabe saab, kui küsida robotilt, kas kamber, kus see seisab, on üle värvitud.

Ülal näidatud kaugjuhtimispuldi kasutamisel loeb inimene roboti vastuseid ekraanilt teksti kujul. Odavam kaugjuhtimispult võib kujutada roboti reaktsiooni, süüdates lambipirni (LED). Kui robotit juhib arvuti, teisendatakse roboti reaktsioon elektrisignaali tasemeteks. Kuid protsessi olemus on sama: tagasisidekäskluse täitmisel ei jõua teave mitte ainult Robotini, vaid edastatakse ka vastupidises suunas, robotilt arvutile või inimesele. Sellest ka termin tagasiside. Teoreetiliselt sai hakkama vaid ühe küsikäsuga igast tüübipaarist: Paremal vaba – Paremal sein. See aga muudaks algoritmi kirjutamise keeruliseks, kuna nõuaks eituse sisseviimist, mis koolituse varases staadiumis on metoodiliselt põhjendamatu ning muudab programmide kirjutamise ja täitmise reeglid keerulisemaks. Loomuliku kirje "peal on sein" asemel tuleks kirjutada midagi sellist nagu "pealt pole tasuta", mis viitab mingile duaalsusele, mis siis, kui seal on midagi muud peale seina?

Mis on roboti keskkond

Roboti keskkond on ristkülikukujuline aiaga ümbritsetud ja lahtriteks jagatud väli, mida kirjeldavad järgmised suurused: 1) välja mõõtmed - ridade arv (1 kuni 10) ja veergude arv (1 kuni 16). ); 2) iga raku kohta: seinte olemasolu raku ümber; varjutuse märk; kiirguse hulk (mõõdetuna tavaühikutes, võib võtta mis tahes tegeliku väärtuse vahemikus 0 kuni 100); temperatuur (mõõdetuna Celsiuse kraadides, võib võtta mis tahes tegeliku väärtuse vahemikus –273 kuni +233). Märge. Madalaim võimalik temperatuur on (ligikaudu) absoluutne null (0 kraadi Kelvinit). Kõrgeim temperatuur on temperatuur, mille juures raamatud põlevad (451 kraadi Fahrenheiti järgi). Seda temperatuuri teavad kõik Ray Bradbury kuulsa loo “Fahrenheit 451” lugejad.

Roboti käsusüsteem võimaldab tal määrata kõigi nende lahtri omaduste väärtused. Lisaks võib lahter sisaldada märke, mis on vaatlejale nähtavad, kuid roboti "meeleorganitele" kättesaamatud: sümbolid lahtri vasakus ülanurgas ja alumises vasakus nurgas, täpp lahtri alumises paremas nurgas. Keskkonna lahutamatuks osaks on Robot ise (täpsemalt selle asukoht põllul). Roboti käsusüsteemis ei ole käske, mis lubaksid küsida põllul Roboti koordinaate.

Robotil on kolm tagasisidekäskude rühma. Esimene rühm võimaldab analüüsida seinte olemasolu või puudumist ülal, all, paremal ja vasakul. Teine rühm koosneb kahest diametraalselt vastandlikust käsust - küsimusest "kas rakk on üle värvitud?" ja "kas kamber on puhas?", mis võimaldab teil teada saada, kas kamber, milles Robot seisab, on üle värvitud.

Kui kahe esimese rühma käsud annavad vastuseks “jah” või “ei”, siis viimase rühma käsud annavad vastuseks reaalarvu. Nende käskude abil saate teada, milline on temperatuur ja milline kiirgus on selles puuris, milles robot asub. Tänu kolmanda grupi meeskondadele muutub Roboti maailm märgatavalt rikkamaks. Tänu nendele käskudele saame seada ja lahendada laiemaid ülesandeid Roboti juhtimiseks ja info kogumiseks väljal Robot. Lisaks võivad robotväljal esinevad temperatuuri- ja kiirgusprobleemid asendada mõned traditsioonilised massiivitöötlusprobleemid. Roboti "varustamine" "termomeetri" ja "Geigeri loenduriga" on hea metoodiline lähenemine tavaliselt massiivide jaoks sõnastatud probleemide uurimisel. Selliseid traditsioonilisi massiivide töötlemise ülesandeid nagu "minimaalne element", "maksimaalse elemendi indeks", "elementide summa", "aritmeetiline keskmine" jne saab ümber sõnastada ülesannetena teabe kogumiseks väljal Robot ja saada väga loomulik. tõlgendus .

Horisontaalne rida viiest lahtrist, mille igas lahtris on etteantud kiirgus (10, 10, 30, 20 ja 40), on viie elemendiga reaalarvude lineaarse tabeli täpne analoog. Ja peaaegu iga lineaarse tabeliga töötamise ülesande saab ümber sõnastada roboti ülesandeks. Selles sõnastuses on selgem, miks selline probleem tekkis ja miks see tuleb lahendada. Kujutagem ette, et paremal asuval Robotiväljakul on sein, kuhu inimesed – võib-olla päästjad – peavad minema. Kõigepealt tuleb välja selgitada, kui ohtlik on mööda koridori kõndimine tervisele, milline on kiirgustase. Kui inimesed liiguvad ligikaudu ühtlase kiirusega, on neile saadav kiirgusdoos võrdeline kõigi seina läbipääsu rakkude kiirgustasemete summaga. Seetõttu võib selle läbipääsu päästjate eludele ohtlikkuse astme analüüsi ümber sõnastada läbipääsu rakkudes kogukiirguse arvutamise ülesandena. See on roboti juhtimiseks sõnastatud tabelielementide summa leidmise probleem. Sarnasel viisil saate ümber sõnastada peaaegu kõik tabelite (massiivide) töötlemise ülesanded.

Harjutus. Sõnastage ülesanded "minimaalne massiivi element" ja "minimaalse massiivi elemendi indeks" roboti juhtimiseks.

Niisiis, vaatame, milline järgmistest ülesande sõnastustest on õpilase jaoks atraktiivsem: 1) leida ristkülikukujulise tabeli miinimumelemendi indeksid; 2) leidke Roboti väljal olevast ristkülikust minimaalse kiirgusega kamber ja viige robot sellesse lahtrisse (puhkamiseks).

Esimene sõnastus on puhtalt matemaatiline. Kellele ja miks neid indekseid vaja on, jääb ülesande raamidest kaugele välja. Teine on arusaadavam ja sisukam. Kuigi koolilapsed pole suure tõenäosusega varem kiirgusega tegelenud, on neile selge, et kõrge kiirgustase on “halb”, et ülesandes nõutav puur on kõige turvalisem ning kui Robot vajab puhkekohta, siis on parem valida kõige turvalisem puur – minimaalse kiirgusega rakk.

Nagu märkasite, kasutab elementide summa algoritm "while" tsüklit, mida me pole veel tutvustanud. Siin saime lihtsalt endast veidi ette. Silmus "while" tuleks kasutusele võtta teatud probleemi arutamisel (probleemne lähenemine), näiteks õpikus:

“Kuskil Roboti all põllul on sein. Robot tuleb liigutada vertikaalselt alla seina, st. Paigaldage Robot puuri otse seina kohale samale vertikaalile, kus robot algas. Esmalt võite proovida seda probleemi käsitsi lahendada. Õpetaja võib joonistada lehele kasvõi robotivälja ja ilma õpilastele lehte esialgu näitamata täita nende käske. Varsti saavad koolilapsed aru, et nad peavad alati küsima "kas see on alt vaba?" (või "kas all on sein?") ja käsku "alla", kuni all olev robot on vaba.

Tavaliselt kujutab iga klassi õpilane pärast 10-minutilist sellist mängu üksikasjalikult ette, kuidas täpselt robotit käsutada, et ülesannet lahendada. See arusaam on sellise "mängu" metodoloogiline eesmärk.

Metoodiline tehnika uue programmeerimiskeele disaini kasutuselevõtuks G.V. Lebedev kirjeldas seda oma loengutes järgmiselt:

"Kui õpilased mõistavad üksikasjalikult, kuidas ülaltoodud probleemi roboti "käsitsi" juhtimisel lahendada, tekib meie metoodilise lähenemisviisi jaoks oluline kontrast selle "käsitsi" töö ja programmi juhtimisskeemi vahel.

"Imeline! - ütleb õpetaja. - Kõik mõtlesid välja, kuidas robotit juhtida. Kuid me ei tegele roboti käsitsi juhtimisega, vaid arvutiteadusega. Seetõttu on meie ülesandeks kirjutada arvutile algoritm, mille käigus arvuti annab Robotile käsu, et probleem laheneks. Pange tähele, et kaugus Roboti ja seina vahel on teadmata, kuid algoritmi täitev arvuti (ja kaugust teadmata) peaks robotit seina poole liigutama. Proovige selline algoritm üles kirjutada. Saate aru, kuidas robotit juhtida, milliseid käske peaks arvuti Robotile andma. Nii et kirjutage see arvutialgoritmina üles. Juhin veel kord teie tähelepanu sellele probleemsele lähenemisele. Tõepoolest, praktiliselt siinkohal palume koolilastel välja mõelda "hüvasti" tsükli konstruktsioon. See tähendab, et erinevalt standardsest järjestusest (kõigepealt salvestuse vorm, seejärel selle semantika (tähendus), seejärel ülesannete lahendamine) püstitame kõigepealt probleemi, seejärel mõtleme välja, kuidas seda lahendada, s.t. mõistame tulevase konstruktsiooni tähendust (semantikat) ja siis palume õpilastel välja mõelda salvestusvorm.

Tsükkel “kuni” on sisuliselt väga keeruline konstruktsioon. Ja parem on muuta selle omandamise protsess visuaalseks. Õpikus on seda tsüklit mitmeti seletatud, sh vooskeemi abil. Tsükli “samal ajal” töö visuaalne selgitamine on sama oluline kui “Iidoli” samm-sammult teostamise režiim, kuna graafilised pildid ja tähelepanekud enda tegevuse käigus imenduvad õpilase teadvusesse paremini kui õpetajalt tulevad kõne- ja matemaatilised valemid.

Sooritab programmist ühe STEPi ja lülitub PAUSE režiimi. Kui käivitatakse olekus EDITING ja ANALÜÜS, jätab see "kasuta" read vahele ja peatub enne põhiprogrammi kirje esimese rea täitmist (kui see on olemas) või enne põhiprogrammi sõnaga "alg" rea täitmist. algoritm. Algoritmiprotseduuri kutsumise käsu täitmist käsitletakse ühe SAMMUNA. Kuvab väljadel arvutuste ja seisukorra kontrollimise tulemused.

Täidetakse sarnaselt käsuga "STEP". Erinevus seisneb algoritm-protseduuri kutsumise või algoritm-funktsiooni väärtuse arvutamise käsu täitmises (kui need on tööaknas esitatud). Nendel juhtudel on järgmiseks sammuks abialgoritmi päiserea täitmine. Tulevikus viib käsk “step” või “STEP” käivitatava abialgoritmi järgmise sammu täitmiseni.

Proovime sooritada algoritmi “Samm piirini”. Viime programmi läbi samm-sammult, klõpsates ikooni STEP. Oleme huvitatud tsükli "while" käivitamisest. Esiteks kontrollitakse „vaba edasi” tingimust. Vastus on "jah", mis tähendab, et silmuse põhiosa tuleb täita. Ja Robot liigub ühe raku võrra allapoole. Kui silmuse korpus on valmis, läheme tagasi ja kontrollime seisukorda uuesti. Ja nii edasi kuni järgmiseni ( Harjutus: Mis arv?) samm Robot jookseb vastu seina ja seisukorra kontrollimine annab tulemuseks “ei”. Ja siis lõpetame tsükli täitmise ja hakkame täitma programmis pärast kts kirjutatud käske.

Pange tähele, et tingimuste kontrollimise tulemused kuvatakse väljadel, nii et pärast iga tingimuse kontrollimist saab õpilane kohe aru, kas tsükli keha täidetakse uuesti või tsükkel lõpetatakse.

Mis siis, kui Roboti keskkond on teistsugune ja juba enne tsükli lõppemist seisab see juba seina kohal? Proovime algoritmi nendel algtingimustel täita. Natuke kardan

aga mis siis, kui robot katki läheb? Mitte midagi sellist. Robot ei ole katki, tsükkel on lõpetatud, kuna tingimus "alt vaba" ei ole esimesel kontrollimisel täidetud ja seetõttu ei teostata tsükli keha kunagi. See on tsükli "while" täitmise üks olulisi funktsioone.

Veel üks oluline "while" tsükli täitmise tunnus on silmuse võimalus - silmuse keha lõputu täitmine. Oletame, et segasime selle kokku ja kirjutasime käsu "alla" asemel tsükli sisse käsu "paint". Kui Roboti all on vaba ruumi, siis Robot ei liigu kuhugi, vaid seisab paigal ja värvib lõputult üle lahtri, milles ta seisab. Kui käivitame sellise programmi, saame silmuse kohta õppida programmi sooritatud sammude arvu järgi, mis meie silme all kiiresti suureneb, kui Robot seisab.

Kolmas ja viimane tsükli "while" omadus on see, et tsükli jätkumise tingimust ei kontrollita tsükli keha täitmise ajal. Muudame algoritmi veidi uuesti, lisades tsükli kehasse veel ühe käsu "alla". Laske robotil ülesanne kiiremini täita. Reeglina õpilased sellise programmi ekslikkust ei näe, eeldades ekslikult, et silmuse seisukorda kontrollitakse kuidagi võluväel silmuse keha igal täitmise hetkel. See pole loomulikult nii. Järgmine näide näitab, et ilmnes käitustõrge, kuigi silmuse tingimusel oli (minevikus) väärtus "jah". Kuid enne teist sammu "alla" ei kontrollinud keegi seisukorda. Seetõttu lükati programm tagasi.

Tingimused algoritmilises keeles. "Kui" ja "valik" käsud

Reeglina omandatakse pärast tsükli "while" omandamist käsud "if" ja "select" ilma suuremate raskusteta. Nagu tavaliselt, peaks uue käsu juurutamine algama ülesandest. Antud: Robot on kuskil väljakul ja paremal on vaba ruumi. Peate liigutama robotit allapoole, maalides mööda teed välja need väljakud, millel on paremal pool sein.

Algoritm saadakse eelmise probleemi lahenduse hõlpsalt ümber töötades, peate lihtsalt lisama käsu "kui".

Metoodilisele küsimusele, miks ilmub kursusele pärast konstruktsiooni "kui" konstruktsioon "kui", leiate vastuse G.V. "12 loengust". Lebedeva: "Muidugi on lihtne "kui"-käsku tutvustada ja selgitada mõne näite abil nagu "ettevaatlik" samm: "kui põhi on vaba, siis läheb kõik alla." Häda on meie arvates selles, et kui sellest alustada (ja eriti kui enne silmuseid sisestada käsk “if”), siis ei ole koolilastel peas mingit (isegi mitte vormistatud) välist konteksti, mille sees sellise meeskonna kirjutamine oleks mõttekas mõne sisuka probleemi lahendamiseks. Pärast seda, kui on analüüsitud vähemalt ühte näidet, millel on tsükkel ja "kui" sees, ilmneb selline väline kontekst. Siis saate ilma silmusteta õppida käsku “kui” - õpilased kujutavad ette olukorda, kus sellise käsu järele vajadus tekib. Kuid kui see esimene näide (koos tsükli ja "kui") on tehtud, pole käsu "if" kohta enam midagi õppida. Muid illustreerivaid näiteid pole lihtsalt vaja – peate probleemid lahendama. Seetõttu usume, et see on esimene kord, kui tsükli sees peaks ilmuma lause "kui". Käsu "if" keerukus võib seisneda ainult tingimuse kirjutamises. Koolilastele saate välja mõelda ülesande - kirjutage ametlikult üles tingimus "Robot seisab nurgas":

(sein vasakul Ja sein peal)

või(sein üleval Ja sein paremal)

või(parem sein Ja seina all)

või(alumine sein Ja sein vasakul)

"Vali" käsk

Käsk "select" on esimene "mitteoluline" käsk algoritmilises keeles. On võimatu sõnastada probleemi, mida ei saaks ilma selle meeskonnata lahendada. Käsk “select” lihtsustab salvestamist vaid olukorras, kus valikuid on palju. Kuid isegi sellises olukorras saab algoritmi kirjutada, piirdudes ainult käsu "kui" kasutamisega.

Käskude "visuaalne" esitus

"Hüvasti" tsüklit saab seletada mitte ainult koolilastele, kes kasutavad robotiga "Idol", vaid ka koolieelikutele, kes kasutavad "Idoli" nooremat venda - "PictoMir". Eelmisest loengust on meile tuttav Vertun, mis suudab kõndida üle Roboti väljaga sarnase põllu. Vertun on huvitav esineja, tal on tagasisidekäsklused: Vertun saab kontrollida, kas väljak, millel ta seisab, on maalitud ja kas tema ees on sein. Vertunil, nagu ka robotil, on topelt tagasisidekäskude komplekt. Kuid PictoMiris on selleks head põhjused. Kui “Idol” käsust Robot “paremal on sein” saaksime käsu “paremal on vaba” ekvivalendi, lisades käsu sisse eituse “mitte”, siis visuaalse stiiliga programmeerimine “PictoMiris” osakest ei eksisteeri. See tähendab, et kahte võistkonda kasutada ei saa ja vaja on kõiki nelja.

Joonisel kujutatud ikoonid tähistavad neid käsupaare (vasakult paremale): “lahter on täidetud” (väli on hall); “ees on sein” (tellissein); "puhas rakk" (välja roheline värv); "ees on vaba ruum" (sein on hävinud).

"Vali" käsk

· tingimusel 1: 1. seeria

· tingimusel 2: episood 2

· tingimusel n: seeria n

· muidu seeria n + 1

Märksõna else võib puududa koos vastavate käskudega:

· tingimusel 1: 1. seeria

· tingimusel 2: episood 2

· tingimusel n: seeria n

“Idol” kontrollib esmalt tingimust 1. Kui see on täidetud, siis “Idol” täidab käsud seeriast 1, misjärel jätkab sõna all kirjutatud käskude täitmist. Muidu teeb “Idol” sama tingimusega 2 ja meeskonnad sarjast 2 jne.

Sõna "muidu" järele kirjutatud käsud täidetakse, kui ükski tingimus ei ole täidetud.

Valimiskäsu puhul ei täideta kunagi rohkem kui ühte käskude seeriat, isegi kui mitu tingimust on tõene. Valimiskäsu täitmine lõpeb pärast seda, kui on leitud esimene (järjekorras) tingimus väärtusega jah (ja vastav käskude seeria täidetakse).

KuMiri keeles on kolm täitmise juhtkäsku:

heaks kiidetud, antud, vajalik.

Kõne vorming:

utv<ЛОГ ВЫРАЖЕНИЕ>

antud<ЛОГ ВЫРАЖЕНИЕ>

vajalik<ЛОГ ВЫРАЖЕНИЕ>

Kõik kolm käsku täidetakse nii. Seisukorda kontrollitakse. Kui tingimus ei ole täidetud, peatab “Kumir” algoritmi täitmise ja teatab tõrke ilmnemisest. Kui tingimus on täidetud, jätkub algoritmi täitmine normaalselt, nagu poleks üldse juhtkäsku. Antud käsk kontrollib tingimust algoritmi täitmise alguses, käsk peab - algoritmi täitmise lõpus ja käsk utv saab kontrollida tingimust algoritmi täitmise ajal.

Kuidas saate neid tingimusi "PictoMiris" kasutada? Tingimusi saab paigutada abialgoritmide algusesse spetsiaalsetesse lahtritesse. Sinised sisaldavad repiiterit (tsükli N korda korraldamiseks), roosad aga algoritmi f1–f5 täitmise tingimust. Nagu 3. loengus arutatud, aitab N korda silmuste loomine õpilasel algoritmi koostamisel lahtreid salvestada.

Kuid kui lihtne ülesanne seisneb näiteks Vertuni paremale seinale viimises, võib programm välja näha selline:

Tõepoolest, kui Vertuni ümbrust “piiluda”, saab hõlpsasti arvutada, et seinani on 4 astet. Teine asi on see, kui olukord pole meile nähtav ja saame sellest teada ainult Vertuni tagasiside kaudu. Sarnaselt Roboti olukorraga peab õpilane enne sammu astumist Vertunilt küsima, kas tema ees on sein. Koolialgoritmikeeles, kui õpilased on sunnitud ise välja mõtlema tsükli "while" konstruktsiooni, on lastel veel palju ruumi kujutlusvõimele, kuna algoritmilise keele piirid pole nähtavad. “PictoMiris” on lapsel ainult see, mida ta ekraanil näeb. Ja tingimusi saab panna ainult ühte kohta. Kõik, mida ta teha saab, on proovida.

Selline programm töötab Vertuni praeguses keskkonnas õigesti (ja loomulikult kõigil juhtudel, kui sein on lähteasendist lähemal kui neli sammu).

Selgitame, kuidas abialgoritm f1 töötab. Enne algoritmi (mis sisaldub 12 käivitatavas lahtris) käivitamist käivitatakse roosal väljal asuv Vertuni käsk. Kui vastus on "jah", siis käivitatakse algoritm nii mitu korda, kui on näidatud sinisel väljal. Sel juhul jäetakse tühjad lahtrid vahele ja käsk roosalt väljalt kutsutakse välja iga kord enne f1 algoritmi järgmist täitmistsüklit.

Kui roosa väli on tühi, on vastus "jah". Kui sinine väli on tühi, käivitatakse tsükkel 1 kord. Tegelikult oleks selline abialgoritm analoogne järgmise tähistusega algoritmilises keeles:

nc <синее поле> kord hüvasti <розовое поле>

<команды в клетках алгоритма>

Kuid algoritmilises keeles sellist konstruktsiooni pole. Sel juhul muutub f1 konstruktsiooni "if" analoogiks, kui tegemist on tühja repiiteriga (tühi sinine väli) või ühe repiiteriga, ja f1 algoritm muutub tingimuse olemasolul tsükliks "while" ( roosa väli) ja repiiter on võrdne lõpmatusega.

Harjutus. Pidage meeles, kuidas konstrueerida tsüklit f1 N korda.

Mis motiveerib last kasutama hüvasti tsüklit (kasutage roosat kasti)? Fakt on see, et “PictoMiris” on ainult 7 kordajat: 1 kord, 2 korda, 3 korda, 4 korda, 5 korda, 6 korda ja “ad infinitum”. Selle komplektiga jõuate seinani, kui see on 1, 2, 3, 4, 5 või 6 sammu kaugusel. Mida teha aga siis, kui seinani on 7 astet või nii palju samme, et laps lihtsalt ei suuda nende arvu kokku lugeda? Seal on “lõpmatuse” repiiter ja isegi kui laps pole selle kontseptsiooniga veel harjunud, proovib ta pärast “PictoMiri” programmide loomise väheste võimaluste läbimist kindlasti proovida “lõpmatuse” repiiteriga valikut. sinises lahtris ja soovitud seisukorras roosas lahtris. See on lapse (teadlikult) loodud "hüvasti" tsükkel.

“PictoMira” graafiline keel julgustab last “hüvasti”-tsüklit leiutama tugevamini kui “KoMira” algoritmiline keel. Fakt on see, et “PictoMir”-iga “näperdades” on laps vahendite valikul väga piiratud. "PictoMir" on kõik teie peopesal ja algoritmilise keele õppimiseks võib kuluda kaua aega. “PictoMiris” saad kiirelt läbi käia kõik programmeerimisvõimalused ja kuna nende hulgas on ka “bye” tsükkel, siis saad ka selle avada. Erinevus “Idoli” ja “PictoMiri” vahel on sarnane male ja kabe erinevusega. Viimasest kirjutas kuulus Ameerika kirjanik Edgar Allan Poe oma detektiiviloos “Mõrv Rue Morgue’is”:

“Siin (males. – Toim.) otsustab vahepeal tähelepanu. Kui see nõrgeneb, teete vea, mis viib valearvestuse või lüüasaamiseni. Ja kuna malekäigud pole mitte ainult mitmekesised, vaid ka mitmeväärtuslikud, siis vastavalt suureneb ka eksimise võimalus ning üheksal juhul kümnest ei võida mitte võimekam, vaid keskendunum. Teine asi on kabe, kus väikeste variatsioonidega on lubatud ainult üks liigutus; siin on möödalaskmise võimalus palju väiksem, tähelepanu ei mängi erilist rolli ja edu sõltub peamiselt leidlikkusest. ...Ilmselt sõltub siin (võrdse jõu juures) võit õnnestunud käigust, ootamatust ja vaimukast otsusest 6.”

Sellel, miks me andsime Robotile diametraalselt vastandlikke käsklusi ja küsimusi, oli sügavam põhjus. Kunagi ei saanud algoritmilises keeles osakest käsunimest väljapoole paigutada. Sel ajal tulnuks seetõttu kasutada vene keele seisukohalt täiesti loetamatuid väljendeid nagu "lahtrit pole üle värvitud" või "pealt pole vaba". Keele tänapäevases versioonis on sellised väljendid kirjutatud palju tavalisemalt: "lahter pole üle värvitud", "ülaosa pole vaba".

Kushnirenko A.G., Lebedev G.V., Svoren R.A. Arvutiteaduse ja arvutitehnoloogia alused. M.: Haridus, 1990, 1991, 1993, 1996.

Kahjuks on võimatu nimetada algoritmi "Step all the way" "Idol", kuna "to" on keele võtmesõna.

12 loengut, milleks kooli informaatikakursust vaja on ja kuidas seda õpetada: A.G. Kushnirenko, G.V. Lebedev. // Tööriistakomplekt. M.: Algteadmiste labor, 2000.