Hur man gör ett visst antal repetitioner i idolen. Förgrening på idolspråket

Hur man gör ett visst antal repetitioner i idolen.  Förgrening på idolspråket
Hur man gör ett visst antal repetitioner i idolen. Förgrening på idolspråket

Bekantskap med programmet Kumir behärskar grunderna i programmering.

I den kan eleverna få praktiska färdigheter i att skapa och felsöka en algoritm, och arbeta med artister som Robot, Draftsman, Aquarius, Grasshopper, Turtle.

När du studerar en av de svåraste delarna av datavetenskap "algoritmisering och programmering".

Syftet med utvecklingen :

Ladda ner:


Förhandsvisning:

Metodisk utveckling inom informatik.

Ämne: "Robotartist i KuMir-programmet på informatiklektioner"

tekniklärare "Informatik och IKT"

Förklarande anteckning

Utvecklingsmål: utforska möjligheterna med programmering med exempel specifik konstnär Robot som använder KUMIR-miljön; ge praktiska färdigheter att arbeta med artisten.

Metodisk utvecklingsammanställd för informatiklektionerÖva på datorn: arbeta med den pedagogiska utföraren av algoritmer; rita upp linjära, förgrenade och cykliska algoritmer utövande ledning; utarbeta algoritmer med en komplex struktur; användning av hjälpalgoritmer (procedurer, subrutiner).

Eleverna bör veta:

  • vad är en artist; SKI Robot, onsdagsutövare Robot;
  • vad är en algoritm;vilka är de viktigaste egenskaperna hos algoritmen;
  • sätt att skriva algoritmer: flödesscheman, pedagogiskt algoritmiskt språk;grundläggande algoritmiska konstruktioner: följande, förgrening, loop; strukturer
  • algoritmer; ⇒ tilldelning av hjälpalgoritmer; teknik för att bygga komplexa algoritmer:

Eleverna ska kunna:

  • förstå beskrivningar av algoritmer i ett lärande algoritmiskt språk;
  • utföra en algoritmspårning för en känd utförare;
  • komponera linjära, förgrenade och cykliska styralgoritmer för robotens exekutor; fördela deluppgifter; definiera och använda hjälpalgoritmer.

Lektion 1 (2 timmar) Lektion 1.

Artist Robot.Utförarens kommandosystem.

Lektionsplanering.

  1. Beskrivning av utförarens UCS, utförarens miljö.

2. Analys av typiska robotalgoritmer.

Under lektionerna.

Tänk på beskrivningen av artisten.

Utförarmiljö: Performer Roboten kan röra sig genom labyrinten, ritad på ett plan uppdelat i celler.

SKI Robot : enkla kommandon: upp, ner, vänster, höger, färg.

Logiska kommandon: (tillståndskontroller)

topp gratis botten gratis

vänster fri höger fri.

Logiska kopplingar: AND, NOT, OR:

Exempel: (Inte vänster fri) eller (Inte högerfri)

Filialkommando: cykla kommando:

Om tillstånd sedan nts medan villkor

serie av kommandon serie av kommandon

alla kts

(I CIMs 2009 skilde sig robotens kommandon från de som var bekanta för barn, vilket ledde till förvirring :)

Filialkommando: cykla kommando:

Om tillstånd sedan nts medan tillstånd gör

serie av kommandon serie av kommandon

slutändan

Allmän form fönster i Kumir-programmet. Robotens grafiska miljö:

i KIMs demoversion 2010 kommandoformat ändrat till vanlig

Ordningen för att skapa algoritmen:

1. Lag Verktyg -Redigera startmiljö rita väggar på robotfältet och ställ in roboten till dess ursprungliga position.

2.Kommandon Robot - Byt startmiljörädda den nya miljön.

3. Kommandon Klistra in - Använd robotange konstnären.

4. I dokumentfönstret skriver du algoritmen med hjälp av menyn Föra in.

5. Kommandoexekvering - kör kontinuerligt (eller steg för steg) kör algoritmen.

6. Överväg resultatet av algoritmexekveringen och, om nödvändigt, felsök det.

Lektion 1 (2 timmar) Lektion 2.

Praktiskt arbete "Sammanställning av linjära algoritmer.

Uppgifter: 1. Robot på en godtycklig punkt i fältet. Färglägg cellen ovanför, under och till höger om startpositionen.

  1. Robot på en godtycklig punkt i fältet. Flytta roboten 4 fält till höger och måla över dem.
  2. Skapa en ny startmiljö genom att rita en fyrcellsruta på tavlan. Spara miljön till en början.
  3. Skapa en ny startmiljö genom att rita en korridor med passager i väggarna på planen. Rädda miljön som obst2.fil. Ändra startmiljön till den nyskapade.

Lektion 2 (2 timmar) Lektion 1.

Ämne : Förgrening och sekventiell förfining av algoritmen.

Analys av CMM-uppgifter med hjälp av Robot executor.

använda robot

alg kim 2009

tidigt

om inte botten lös

sedan till höger

Allt

om inte botten lös

sedan till höger

Allt

om inte botten lös

sedan till höger

Allt

lura

använda robot

alg kim 2010

tidigt

om inte botten lös

sedan till höger

Allt

om inte botten lös

sedan till höger

Allt

om inte botten lös

sedan till höger

Allt

lura

Etc. slav. Nr 14. Sammanställning och felsökning av grenalgoritmer

Uppgifter. Se bifogat.

Lektion 3. Cykliska algoritmer. Lektion 1-2

Mål: avslöja essensen av begreppet en cykel i algoritmer, visa formerna för skrivcykler i algoritmer, ge färdigheter i att skapa och skriva cykliska algoritmer.

Etc. slav. Nr 15. Sammanställning och felsökning av cykliska algoritmer

1. Gör en algoritm som målar alla de inre cellerna i anslutning till väggen.

använda robot

alg

tidigt

nc medan rätt gratis

måla över; höger

kts

nc medan botten är ledig

måla över; ner

kts

nc tills botten lossnar

måla över; till vänster

kts

lura

2. Skapa en algoritm som fyller alla celler mellan roboten och väggen. Avståndet till väggen är okänt.

använda robot

alg

tidigt

nc medan rätt gratis

höger; måla över

kts

lura

3. Skapa en algoritm som målar över alla celler mellan två väggar.

använda robot

alg uch3

tidigt

nc ännu (inte topp löst) eller (inte botten löst)

höger

om (inte toppfri) och (inte bottenfri)

Den där

måla över

Allt

kts

lura

4. Skapa en algoritm som fyller alla celler runt en rektangulär vägg.

alg uch4

tidigt

måla; upp

nc tills rätt lös

måla; upp;

kts

måla; höger

nc tills botten lossnar

måla;höger;

kts

måla över; ner

nc tills den lämnas lös

måla;dun;

kts

måla; vänster

nc tills toppen är lös

måla över; vänster;

kts

lura

använda robot

alg uch5

tidigt

höger

nc tills botten lossnar

måla över; höger

kts

måla över; ner

nc medan den lämnas ledig

måla över; till vänster

kts

nc tills den lämnas lös

måla över; ner

kts

måla;vänster;måla; upp;

nc medan topp gratis

måla över; upp

kts

nc tills toppen är lös

måla över; till vänster

kts

lura

Aktivitet 4 Lektion 1

Hjälpalgoritmer.

Mål: introducera begreppet huvud- och hjälpalgoritm; förklara reglerna för att använda hjälpalgoritmen; analysera exempel på algoritmer med hjälp av ett hjälpprogram.

Lektionsplanering

1.Introduktion av nya termer (huvud- och hjälpalgoritm, anrop) och förklaring av nya begrepp.

2. Analys av exempel på problemlösning med hjälp av en hjälpalgoritm.

När du löser vissa problem är det bekvämt att dela upp dem i mindre deluppgifter, som var och en kan utformas som en oberoende algoritm. I det här fallet kompileras först den så kallade huvudalgoritmen, där anrop till hjälpalgoritmer används för att lösa deluppgifter, som läggs till senare. Denna typ av lösning kallassekventiell förfiningsmetod.Det låter en grupp programmerare arbeta med ett projekt, medan var och en löser sin egen deluppgift.

I processen att lösa problemet kan varje hjälpalgoritm vid behov delas upp i mindre hjälpalgoritmer.

Kommandot för att exekvera hjälpalgoritmen anropas utmaning och skrivs i kroppen av huvudalgoritmen.

En och samma algoritm kan betraktas som huvud- och hjälpmedel i förhållande till andra algoritmer. I ett algoritmiskt språk skrivs huvudalgoritmen först, och extra algoritmer skrivs i en rad nedanför.

Uppgift 1:

Roboten är i det övre vänstra hörnet av fältet. Det finns inga väggar eller skuggade celler. Skriv en algoritm med hjälp av en hjälpalgoritm som ritar fyra kors på en horisontell linje. Robotens slutliga position kan vara godtycklig.

Lösning

Analys på tavlan:

Uppgift 2. Roboten är i det övre vänstra hörnet av fältet. Det finns inga väggar eller skuggade celler. Skriv en algoritm som målar en ruta på 8 x 8 i ett rutmönster. Robotens slutposition kan vara godtycklig.

Aktivitet 4 Lektion 2

Praktiskt arbete på en PC "Problemlösning med hjälpalgoritmer".

Mål : att ingjuta praktiska färdigheter i att konstruera algoritmer med metoden för sekventiell förfining.

Lektionsplanering

1. Uppgiften är helt klar av datorn. Eleverna får uppgifter och slutför dem mjukvarumiljö Idol. Resultaten av arbetet sparas som filer för senare verifiering.

Uppgift 1 . Roboten är i nedre vänstra hörnet av fältet. Det finns inga väggar eller skuggade celler. Skriv en algoritm som målar 6 vertikala ränder av samma längd i 6 celler. Robotens slutliga position kan vara godtycklig.

Uppgift 2 .Med hjälp av hjälpmedel gör du en algoritm för att måla över cellerna som bildar talet 1212.

Läxa: Kom på en algoritm som ritar följande bild: Använd två hjälpalgoritmer för att lösa problemet.

Aktivitet 5 Lektion 1-2

Testa

"Kompilering av algoritmen i miljön för exekutorroboten".

Mål: att testa den förvärvade kunskapen om skapandet och förmågan att analysera algoritmer i Kumirs mjukvarumiljö.

Uppgifter för kontrollarbeteär indelade efter svårighetsnivåer och innehåller 3 uppgifter med utföraren Robot (uppgift 1 och 2 - för förgrening och loopar, uppgift 3 - för att använda en hjälpalgoritm.) Uppgifternas texter finns i bilagan.

De initiala och slutliga villkoren och de skapade algoritmerna registreras som en fil.

Betyget sätts efter uppgiftens svårighetsgrad. Eleven har rätt att välja typ av uppgift.

Exekutor kontrollrobot i KUMIR-systemet

Roboten finns i en viss miljö (rektangulärt rutigt fält). Väggar kan placeras mellan vissa celler i fältet. Vissa celler kan vara skuggade (Fig. 3.11).

Roboten upptar exakt en cell i fältet.

På kommandon uppåt, nedåt, vänster och höger, flyttar roboten till nästa cell i angiven riktning. Om det finns en vägg på väg uppstår ett fel - ett meddelande visas om omöjligheten att utföra nästa kommando.

På kommando att måla över målar roboten över cellen där den står. Om cellen redan har målats över kommer den att målas om igen, även om inga synliga förändringar kommer att ske.

Roboten kan endast utföra korrekt skrivna kommandon. Om du skriver ner istället för kommandot, kommer roboten inte att förstå denna post och kommer omedelbart att rapportera ett fel.

HANDLA OM
fel: 1 syntaktisk; 2. logiskt

Scenbeskrivningar lagras i textfiler specialformat (.fil-format).

Nuvarande- miljön där roboten befinner sig det här ögonblicket(inklusive information om robotens position).

Hem- miljön i vilken roboten tvångsplaceras i början av programmets körning med hjälp av roboten.

Normalt tillvägagångssätt:


  1. Fråga startmiljö enligt uppgiften:
Menyverktyg → Ändra startmiljön för roboten (rita miljön enligt uppgiftens villkor, ge ett namn, spara i den personliga mappen)

2. Ange entreprenören:

Infoga meny → Använd robot

3. Skriv en algoritm för att lösa problemet.

4. Kör algoritmen (Meny Kör → Kör kontinuerligt / F9)

Kommandosystemet för exekutorroboten i KUMIR-systemet


Team

Handling

upp

Roboten flyttar upp 1 cell

ner

Roboten flyttar ner 1 cell

till vänster

Roboten flyttar 1 cell åt vänster

höger

Roboten flyttar 1 cell åt höger

måla över

Roboten målar cellen där den är

rätt gratis

Roboten kontrollerar utförandet av motsvarande enkel betingelser

lämnas fri



toppen lös



botten lös



cellen är skuggad



buren ren



Cykliska algoritmer

Cykel organisering av upprepade handlingar tills ett visst villkor är sant .

Slingkropp - en uppsättning repeterbara åtgärder.

Skick - booleskt uttryck (enkelt eller komplext (sammansatt))
Cykeltyper:

1.Slinga "Upprepa n gånger" 2. Slinga "Bye"
nc n gånger nt hejdå
. . Slingkropp. . Slingkropp
kts kts

Exempel: nt hejdå rätt gratis


Allmän vy av slingan "Upprepa n gånger:

REPETERA n GÅNGER

SLUTET
kts

Allmän bild av while-slingan:

UNDER ATT GÖRA

SLUTET
Sammansatta förhållanden bildas av ett eller flera enkla villkor och tjänsteord OCH, ELLER, INTE.


Sammansatt tillstånd A och B(där A, B är enkla villkor) är uppfyllda när vart och ett av de två enkla villkoren som ingår i det är uppfyllt.

Låt A - gratis på toppen I - gratis till höger sedan det sammansatta tillståndet A och B- gratis på toppen OCH gratis till höger.


Sammansatt tillstånd A ELLER B är uppfyllt när minst ett av de två enkla villkoren som ingår i det är uppfyllt: topp gratis ELLER rätt gratis
Sammansatt tillstånd INTE A- uppfyllt när villkor A inte är uppfyllt.

Exempel: Låt A vara en skuggad cell (enkelt villkor).

P Kontrollera det sammansatta tillståndet INTE A:

a) A - klar, INTE A (INTE skuggad) - ej klar.

b) A - ej klar, INTE A (ej skuggad) - klar.


Filialkommando

Förgrening - en form av organisering av handlingar där, beroende på uppfyllelse eller icke-uppfyllelse av ett visst villkor, antingen en eller annan sekvens av handlingar utförs.

Allmän bild av IF-kommandot:

OM DEN DÄR ANNAT

SLUTET

På KUMIR-språket:

Helgren: Delgren:
Om Den där Om Den där

annat

alla alla

Hjälpalgoritm- en algoritm som löser ett delproblem av huvudproblemet.

I KUMIR-systemet skrivs hjälpalgoritmer i slutet av huvudprogrammet (efter serviceordet lura) kallas för exekvering i huvudprogrammet med namn.

I undersökningar och uppdrag

1. Ge alla algoritmer för de tre kommandona som kommer att flytta roboten från sin ursprungliga position till cell B.

Finns det en algoritm för denna uppgift, under vilken roboten gör:

a) två steg b) fyra steg; c) fem steg; d) sju steg?


  1. Petya skapade en algoritm som överför roboten från cell A till cell B med några celler målade över. Vad ska Kolya göra med denna algoritm för att få en algoritm som tar roboten från B till A och fyller i samma celler?


7. Två hjälprobotalgoritmer är kända

Rita vad som händer när roboten utför följande grundläggande algoritmer:


A)

nc 5 gånger


mönster_1

höger; höger;


b)

nc 7 gånger


mönster_2

höger; höger


V)
höger; höger; höger

upp; upp

höger; höger; höger

ner; ner


G)
höger; höger
höger; höger

8. Skapa algoritmer under vilka roboten målar över de angivna cellerna:



9. Det är känt att någonstans till höger om roboten finns en vägg. Skapa en algoritm som under kontroll av roboten kommer att måla över ett antal celler upp till väggen och återgå till sin ursprungliga position.

10. Det är känt att någonstans till höger om roboten finns en skuggad cell.

MED lämna algoritmen, under kontroll av vilken roboten kommer att måla ett antal celler upp till den skuggade cellen och återgå till sin ursprungliga position.

11. Det är känt att roboten är placerad nära den vänstra ingången till den horisontella korridoren.

12. Det är känt att roboten är någonstans i den horisontella korridoren. Ingen av korridorens celler är målad över.

Skapa en algoritm som under kontroll av roboten kommer att måla över alla celler i denna korridor och återgå till sin ursprungliga position.


13. I en rad med tio celler till höger om roboten är vissa celler skuggade.

MED lämna algoritmen som målar cellerna:

a) under varje skuggad cell;

b) över och under varje skuggad cell.


14. Vad kan sägas om riktigheten av följande fragment av algoritmen?

nt hejdå cellen är skuggad

OM rätt gratis DEN DÄR

höger; måla över

Till
c

15. Skriv ett program med vilket roboten kan ta sig till cell B i alla tre labyrinter.


16. Skriv ett program, varefter roboten kommer att kunna gå längs korridoren från det nedre vänstra hörnet av fältet till det övre högra hörnet. Korridoren har en bredd på en cell och sträcker sig i riktning från vänster-nedtill-höger-upp. Ett exempel på en möjlig korridor visas i figuren.

Z

adachi GIA


  1. Korridor 1. Roboten är någonstans i den vertikala korridoren. Ingen av korridorens celler är målad över. Skapa en algoritm under vilken roboten målar över alla celler i denna korridor och återgår till sin ursprungliga position.

  1. TILL
    Nödvändig

    Given
    korridor 2. Roboten är placerad i den övre cellen i en smal vertikal korridor. Korridorens bredd är en cell, korridorens längd kan vara godtycklig.

En möjlig variant av den initiala platsen för roboten visas i figuren (roboten indikeras med bokstaven "P")

Skriv en algoritm för roboten som fyller alla celler i korridoren och återställer roboten till sin ursprungliga position. Till exempel, för bilden ovan, bör roboten måla över följande celler (se bilden):


  1. Det finns en lång horisontell vägg på det ändlösa fältet. Längden på väggen är okänd. Roboten är i en av burarna direkt ovanför väggen. Robotens initiala position är också okänd. En av de möjliga positionerna:
H


Nödvändig

Given
Skriv en algoritm för roboten som målar alla celler ovanför och intill väggen, oavsett storleken på väggen och den ursprungliga positionen för roboten. Till exempel, för den givna ritningen måste roboten måla över följande celler:

Robotens slutliga position kan vara godtycklig. När algoritmen körs ska roboten inte förstöras.



  1. Det finns en lång vertikal vägg på det oändliga fältet. Längden på väggen är okänd. Roboten befinner sig i en av burarna direkt till höger om väggen. Robotens initiala position är också okänd. En av de möjliga positionerna för roboten visas i figuren (roboten är markerad med bokstaven "P"): Skriv en algoritm för arbete som målar över alla celler intill väggen: till vänster, med början uppifrån omålad och genom en; till höger, med början från botten skuggad och genom en. Roboten måste måla över endast de celler som tillfredsställer detta tillstånd. Till exempel, för ovanstående figur, måste roboten fylla i följande celler (se figur): Den slutliga platsen för roboten kan vara godtycklig. Algoritmen måste lösa problemet för en godtycklig väggstorlek och eventuell giltig startposition för roboten. När algoritmen körs ska roboten inte kollapsa.


Skriv en algoritm för roboten som målar alla celler som finns till vänster om den vertikala väggen och ovanför den horisontella väggen och intill dem. Roboten måste måla över endast de celler som uppfyller detta villkor. Till exempel, för bilden ovan måste roboten måla över följande celler (se bild).


H skriv en algoritm för roboten som målar cellerna intill väggen, uppifrån och under, med början från vänster och genom en. Roboten måste måla över endast de celler som uppfyller detta villkor. Till exempel, för den givna figuren a) måste roboten måla över följande celler (se fig. b).

Robotens slutliga position kan vara godtycklig. Algoritmen måste lösa problemet för en godtycklig väggstorlek och alla giltiga initiala positioner för roboten.



R

  1. Det finns en lång vertikal vägg på det ändlösa fältet. Längden på väggen är okänd. Roboten är i en av burarna som ligger direkt till vänster om väggen. Robotens initiala position är också okänd. En av de möjliga positionerna för roboten visas i figuren (roboten är märkt med bokstaven "P"):
Skriv för arbete en algoritm som målar över alla celler som gränsar till väggen:

  • alla till vänster;

  • till höger, med början uppifrån omålad och genom en.
Roboten måste måla över endast de celler som uppfyller detta villkor.

B
1102_GIA2011

Det finns två horisontella väggar på det oändliga fältet. Längden på väggarna är okänd. Avståndet mellan väggarna är okänt. Roboten är placerad ovanför bottenväggen i en bur placerad vid dess vänstra kant. Skriv en algoritm för roboten som målar alla celler som ligger ovanför bottenväggen och under den övre väggen och intill dem. Roboten måste måla över endast de celler som uppfyller detta villkor. Till exempel, för ritningen ovan måste roboten fylla i följande celler (se figur):

Den slutliga platsen för roboten kan vara godtycklig. Algoritmen måste lösa problemet för en godtycklig fältstorlek och eventuell tillåten placering av väggar inuti ett rektangulärt fält. När algoritmen körs ska roboten inte kollapsa.


I
1103_GIA_2011


Det finns en horisontell vägg på det oändliga fältet. Längden på väggen är okänd. Från väggens högra ände sträcker sig en vertikal vägg nedåt, även den av okänd längd. Roboten är placerad ovanför en horisontell vägg i en bur placerad vid dess vänstra kant. Bilden visar en av möjliga sätt platsen för väggarna och roboten (roboten indikeras med bokstaven "P").

Skriv en algoritm för roboten som målar alla celler som ligger ovanför den horisontella väggen och till höger om den vertikala väggen och intill dem. Roboten måste måla över endast de celler som uppfyller detta villkor. Till exempel, för bilden ovan måste roboten måla över följande celler (se bild).

Khiryanov Timofey Fedorovich

De huvudsakliga algoritmiska konstruktionerna, förutom elementära operationer som representeras av ett element i kretsen, är alternativa utförande och cykler. Det finns två alternativa programmeringsalternativ och det finns tre huvudcykeltyper.

Villkorligt körbar kod

Vissa operationer kan placeras under ett villkorligt uttalande. Då kommer de att exekveras endast om detta villkor är sant.

Om<условие>
Den där
<действия>
Allt

Alternativ

I ett flödesschema kan ett tillståndstest fungera som en princip för att välja alternativa operationer. Det vill säga, om villkoret är sant, kommer exekveringen att gå längs en bana, och om den är falsk, sedan längs den andra. I KuMir-språket har en loop med en förutsättning följande form:

Om<условие>
Den där
<действия>
annat
<альтернативные действия>
Allt


Villkor för roboten:
vänster vägg
höger vägg
bottenvägg
översta väggen
cellen är skuggad
lämnas fri
rätt gratis
botten lös
toppen lös
buren ren

Slinga med förutsättning

En loop med en förutsättning är en loop som exekveras medan något villkor som anges innan dess start är sant. Detta villkor kontrolleras före exekveringen av loopkroppen, så kroppen kanske inte exekveras en gång (om villkoret är falskt från början). I de flesta procedurprogrammeringsspråk implementeras det av while-satsen, därav dess andra namn är while-loopen. I KuMir-språket har en loop med en förutsättning följande form:

nt hejdå<условие>
<тело цикла>
kts

Slinga med postcondition

En slinga med ett postvillkor är en slinga där villkoret kontrolleras efter exekvering av loopkroppen. Av detta följer att kroppen alltid avrättas minst en gång. I Pascal implementeras denna loop av operatorn repeat..until, i C är det do…while .
I KuMir-språket har en slinga med ett postvillkor följande form:

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

Slinga med disk

En slinga med en räknare är en slinga där någon variabel ändrar sitt värde från ett givet initialvärde till ett slutvärde med något steg, och för varje värde på denna variabel exekveras loopkroppen en gång. I de flesta procedurprogrammeringsspråk implementeras det av operatören för, som anger räknaren (den så kallade "loopvariabeln"), det erforderliga antalet passeringar (eller räknarens gränsvärde) och eventuellt det steg i vilket räknaren ändras. På KuMir-språket har en cykel med en räknare följande form:

hela
nc för a från 0 till 9
... slingkropp
kts

I olika programmeringsspråk löses frågan om värdet av en variabel i slutet av en slinga där denna variabel användes som räknare olika.

Algoritm för att rita en spiral:

använd låda
alg
tidigt
. flytta till en punkt(3,3)
. sänk ner pennan
. spole(1); spole(3); spole(5); spole(7); spole (9)
. höj pennan
lura
alg turn(arg w)
tidigt
. skift med vektor(a, 0)
. skift med vektor(0, -a)
. skift med vektor(-a-1.0)
. skift med vektor(0, a+1)
lura

Var uppmärksam på kommandoblocket:

Spole(1); spole(3); spole(5); spole(7); spole (9)

Hjälpalgoritmen "spole (arg sak a)" anropas 5 gånger, men den kan inte anropas i slingan "N gånger", eftersom den anropas varje gång med olika värden argument.

Men du kan se att värdena för argumentet ändras från 1 till 9, varje gång de ökar med 2. Så vi kan hjälpa slinga med disk. En sådan cykel kallas också "för"-cykeln.

Slinga med disk- en slinga där någon variabel ändrar sitt värde från ett givet initialvärde till ett slutvärde med något steg, och för varje värde på denna variabel exekveras loopkroppen en gång.

Vanligtvis används denna loop om du behöver iterera över vissa värden och utföra några åtgärder för var och en av dem.

Generell bild av cykeln med räknare:

nc för<счетчик>från<нач. знач.>innan<кон. знач.>[steg<знач.>]
<тело цикла (последовательность команд)>
kts

Det är inte nödvändigt att ange steget, om det inte är specificerat anses det vara lika med ett.

Nu kan vi skriva om "spiral"-algoritmen på detta sätt:

använd låda
alg
tidigt
. flytta till en punkt(3,3)
. sänk ner pennan
. hel storlek
. nc för storlek 1 till 9 steg 2
. . spole (storlek)
. kts
. höj pennan
lura
alg turn(arg w)
tidigt
. skift med vektor(a, 0)
. skift med vektor(0, -a)
. skift med vektor(-a-1.0)
. skift med vektor(0, a+1)
lura

I det här exemplet kommer räknarvariabeln "storlek" att få värdena: 1, 3, 5, 7, 9. Det vill säga, loop kommer att exekveras 5 gånger. För varje värde av variabeln "storlek" kommer loopkroppen att exekveras en gång, i vårt exempel är detta ett anrop till hjälpalgoritmen "spole (arg thing)".

Innan den första användningen av en variabel måste den deklareras, dvs vilken typ det är. Detta görs i vårt program på raden "heltalsstorlek", det vill säga vi indikerar att vi kommer att använda variabeln "storlek" för att lagra heltal, och därför måste vi allokera minne för den. Vi kommer att prata mer om variabler lite senare.

Blockdiagrammet för en sådan algoritm ser ut så här:

Låt oss titta på ett annat exempel:

Låt oss först komma ihåg och skriva en hjälpalgoritm som kommer att rita en kvadrat vid punkten (x, y). För en förändring för ritning kommer vi att använda kommandot skift med vektor(i de tidigare exemplen flyttades de till en punkt).

Algoritmen kan vara så här:

alg kvadrat(arg x, y, sida)
tidigt
. flytta till en punkt(x, y)
. skift med vektor(-sida/2, sida/2)
. sänk ner pennan
. skift med vektor(sida, 0)
. skift med vektor(0, -sida)
. skift med vektor(-sida, 0)
. skift med vektor(0, sida)
. höj pennan
lura

Med hjälp av en sådan hjälpalgoritm ritar vi följande figur:

För att göra detta använder vi "för"-loopen. Studera exempelprogrammet:

använd låda
alg figur 1
tidigt
. heltal z
. nc för z från 2 till 10 steg 2
. . kvadrat(0, 0, z)
. kts
lura
alg kvadrat(arg x, y, sida)
tidigt
. flytta till en punkt(x, y)
. skift med vektor(-sida/2, sida/2)
. sänk ner pennan
. skift med vektor(sida, 0)
. skift med vektor(0, -sida)
. skift med vektor(-sida, 0)
. skift med vektor(0, sida)
. höj pennan
lura

I det här exemplet kommer variabeln "z" att få värdena: 2, 4, 6, 8, 10. Det vill säga, loop kommer att exekveras 5 gånger. För varje "z"-värde kommer loopkroppen att exekveras en gång, i vårt exempel är detta ett anrop till hjälpkvadratalgoritmen.

Innan den första användningen av en variabel måste den deklareras, dvs vilken typ det är. Detta görs i vårt program på raden "heltal z", det vill säga vi indikerar att vi kommer att använda variabeln "z" för att lagra heltal, och därför måste vi allokera minne för den. Vi kommer att prata mer om variabler lite senare.

Som du märkte använde algoritmen inte bara siffror utan också algebraiska uttryck, formler, till exempel "-side/2". Inom datavetenskap kallas dessa uttryck aritmetisk. Språkets regler tillåter, när du skriver algoritmer, var du än kan skriva ett tal, skriva ett godtyckligt aritmetiskt uttryck.

Låt oss prata om cykler idag. Låt oss ta reda på vad en cykel är och hur vi lär vår robot att utföra cykliska algoritmer.

Så, vad är en cykel? Föreställ dig att vi är på en idrottslektion och vi står inför uppgiften gör 7 knäböj. Denna uppgift kan formaliseras som en linjär algoritm och sedan kommer den att se ut ungefär så här:

gör en squat

gör en squat

gör en squat

gör en squat

gör en squat

gör en squat

gör en squat

Det vill säga, vi upprepade kommandot att göra en knäböj 7 gånger. Är det vettigt att skriva 7 identiska kommandon? Det kan vara lättare att ge ett kommando. gör 7 knäböj? Helt klart lättare och mer korrekt. Det här är cykeln. Du kan själv komma ihåg exempel på cykler från livet - det finns ganska många av dem.

Således linjär algoritm, där samma kommandon upprepas, kan vi utfärda i form av en cyklisk algoritm- sådär:

upprepa 7 gånger

gör en squat

slutet av cykeln

Så på det språk vi uppfann designade vi cykeln. Robotartist har också förmågan att spela in cykler. Dessutom, cykler är olika.. Alternativet vi just har övervägt kallas slinga med disk eller slinga med parameter.

Typer av cykler.

Cykla med en räknare.

Slinga med disk används när det är känt i förväg hur många repetitioner som behöver göras. I exemplet ovan med knäböj är det precis så.

För att kunna skriva en loop med en räknare för en executor måste du känna till dess syntax. Och han är så här:

nc<antal repetitioner> gånger

<команда 1>

<команда 2>

<команда n>

Här måste vi ange antalet repetitioner (antal) och de kommandon som kommer att upprepas. Kommandon som upprepas i en cykel anropas slingkropp.

Låt oss titta på detta med ett exempel.

Till en början var roboten i den övre vänstra cellen.

Låt oss först lösa problemet linjärt. I det här fallet kommer vi att måla över den aktuella cellen och flytta 1 cell till höger och programmet kommer att se ut så här:
använda robot
alg
tidigt

måla över

höger

måla över

höger

måla över

höger

måla över

höger

måla över

höger

måla över

höger

måla över

höger

Som du kan se upprepas kommandona att måla över och till höger 7 gånger. Låt oss nu skriva om programmet med en loop. Förresten, för att infoga en cykel i ditt program kan du använda menyn Föra in Välj föremål nc-tid-kc eller tryck på en av kortkommandona Esc, P(ryska bokstaven Р) eller Esc, H(latinsk bokstav H). Och tangenterna måste tryckas in i följd- först Esc, släpp den och först sedan P eller H.

Så här är vår cykelprogram kommer se ut så här:

använda robot

nc 7 gånger

måla över

höger

Om vi ​​kör det kommer vi att se att resultatet blir detsamma - 7 fyllda celler. Programmet har dock blivit kortare och mycket mer intelligent ur algoritmisk synvinkel!

Som en uppvärmning och konsolidering föreslår jag att självständigt skriva ett program för roboten, som kommer att rita en kvadrat med en sida av 7 celler. Naturligtvis med hjälp av en cykel. Väntar på lösningen i kommentarerna.

Villkorlig loop.

När man löser problem 19 i GIA i informatik med en robot, kommer det inte att fungera att använda en loop med en räknare. Sedan där är fältet vanligtvis oändligt och väggarna har inte en viss längd. Därför kommer vi inte att kunna bestämma antalet repetitioner för en slinga med en räknare. Men det spelar ingen roll – det kommer att hjälpa oss slinga med skick.

Låt oss gå tillbaka till fysisk fostran och ändra uppgiften. När allt kommer omkring kanske någon inte gör 7 knäböj, medan den andra klarar av 27. Är det möjligt att ta hänsyn till detta när man skapar en cykel? Säkert. Först nu kommer vi inte att använda en räknare (antal repetitioner), utan ett villkor. Till exempel, innan du blir trött, gör knäböj. I det här fallet kommer en person inte att göra ett specifikt antal knäböj, utan sitta på huk tills han blir trött. Och vår loop i det abstrakta språket kommer att se ut så här:

Hejdå inte trött

gör en squat

slutet av cykeln

Orden är inte trötta i vårt fall - detta är ett villkor. När det är sant exekveras loopen. Om det är falskt (trött) kommer slingans kropp inte att exekveras. Robotartist har flera förutsättningar

toppen lös

botten lös

lämnas fri

rätt gratis

översta väggen

bottenvägg

vänster vägg

höger vägg

Men i tillståndet för problem 19 i GIA anges bara de första 4. Så vi kommer bara att använda dem.

Låt oss nu lösa nästa uppgift för roboten - rita vertikal linje från vänster till höger kant av fältet använder jag en slinga med ett villkor. Till en början är roboten i det övre vänstra hörnet.

Låt oss först formulera en verbal algoritm – det vill säga vi kommer att beskriva i ord vad roboten behöver göra. Denna algoritm kommer att låta ungefär så här:

« När du är till höger, ta ett steg till höger och måla över cellen »

Som ett resultat kommer roboten att springa genom alla celler till höger och måla över dem tills väggen är till höger.

Källkoden för vårt robotprogram kommer att vara ungefär så här:

använda robot

nc medan rätt gratis

höger

måla över

Som ett resultat av körningen av detta program kommer vi att se följande bild: