Cycli en omstandigheden in de idooltaal. Uitvoerende robot. Eenvoudige opdrachten Hoe maak je een cyclus voor een idoolrobot

Doelen: de mogelijkheid ontwikkelen om algoritmen te schrijven, uit te voeren en te debuggen met behulp van een lus Doei; inzicht krijgen in het gebruik van de lus Doei ; ontwikkel het vermogen om te analyseren.

Studenten moeten het weten: regels voor het registreren en uitvoeren van een cyclus Doei; lus eigenschappen Doei.

Studenten moeten dat kunnen: gebruik de lusconstructie bij het maken van algoritmen Doei en schrijf het in de Idol-taal, beheer de foutopsporingsmethoden: stap voor stap, continu.

Leermethode: verklarend-illustratief en reproductief (in de fase van het uitleggen van nieuw materiaal), reproductief met elementen van het probleem (fase van consolidatie van het materiaal).

Lesaanbod:

  • Idool-systeem;
  • interactief bord;
  • multimediaprojector;
  • taakkaarten.

Tijdens de lessen

1. Uitleg van nieuw materiaal.

Over het algemeen moet het algoritme universeel zijn, dat wil zeggen dat het niet afhankelijk mag zijn van de afstand tussen de robot en de muur. Voor dit doel is er een speciaal commando in de algoritmische taal: een lus Doei.

Algemeen beeld van de cyclus Doei

Over het algemeen de cyclus Doei is als volgt geschreven:

Bij het uitvoeren van een cyclus herhaalt de computer de volgende acties:

a) controleert wat er achter het functiewoord staat Doei voorwaarde;

b) als niet aan de voorwaarde wordt voldaan, eindigt de lus en begint de computer de daarna geschreven opdrachten uit te voeren knopen . Als aan de voorwaarde is voldaan, voert de computer het lichaam van de lus uit, controleert de voorwaarde opnieuw, enz.

Voorbeeld.

Debug-methode: stap voor stap.

Dialoog tussen computer en robot

Computer: Is het onderaan vrij?

Robot: Ja.

Computer: omlaag.

Robot: gaat naar cel B.

Computer: Is het onderaan vrij?

Robot: Ja.

Computer: omlaag.

Robot: gaat naar cel B.

Computer: Is het onderaan vrij?

Robot: Nee.

Omdat de robot nee antwoordde, tenminste. aan de voorwaarde die daarna wordt geschreven, wordt niet voldaan en eindigt de uitvoering van de lus.

Demonstreer foutopsporingsmethoden in het Kumir-systeem: stap voor stap en continu.

Het lichaam van de lus mag niet één keer worden uitgevoerd, als de voorwaarde zich in de lus bevindt Doei vanaf het begin niet gevolgd. Als de robot bijvoorbeeld in het algoritme ‘tot aan de muur’ de eerste vraag ‘vrij van onderaf’ beantwoordt Nee, dan zal de computer het commando “down” niet één keer oproepen.

Looping. Een lus uitvoeren Doei wordt mogelijk niet voltooid als altijd aan de voorwaarde wordt voldaan. Als er bijvoorbeeld geen muren onder de robot zijn, zal de computer, wanneer het vorige algoritme wordt uitgevoerd, een “loop” maken, d.w.z. zal de Robot eindeloos “vrij van onderaf” vragen en antwoord krijgen Ja en commando "omlaag".

Oefeningen doen.

2. Experimenten met het programma aan de hand van het voorbeeld van de Robotperformer.

In het Idol-systeem is het noodzakelijk om eerst voorbereidingen te treffen voor de locatie van de Robot (bestanden 1.fil-6. fil).

Opdrachten.

Experimenten met het programma.

Oefening 1. (Download bestand 1.fil)

Het is nodig om de robot van cel A naar cel B over te brengen. Gebruik een cyclus Doei:

gebruik Robot

Taak 2. (Download bestand 2.fil)

Er wordt aangenomen dat de robot zich aan de linkermuur bevindt binnen een rechthoek, aan alle kanten omgeven door muren. Binnen de rechthoek bevinden zich geen muren, de afmetingen van de rechthoek zijn onbekend. Je moet een horizontale rij cellen schilderen van de beginpositie van de robot naar de rechtermuur en de robot terugbrengen naar zijn oorspronkelijke positie.

Taak 3. (Download bestand 3.fil)

De robot bevindt zich in een horizontale gang. Verf alle cellen in de gang:

Taak 4. (Download 4.fil-bestand)

1. Herwerk het algoritme ‘verf de rij naar rechts en keer terug’ met een lus erin:

2. Maak met behulp van een hulpalgoritme een algoritme waarin de robot een rechthoek tekent.

Taak 5. (Download bestand 5.fil)

Maak een algoritme voor het schilderen van alle cellen rond een rechthoekige muur:

Taak 6. (Download bestand 6.fil) (Uit het examenmateriaal van 2009)

De robot bevindt zich in de linkerbovenhoek van de afgesloten ruimte, die de vorm heeft van een rechthoek. De afmetingen van de rechthoek zijn onbekend. Schrijf een algoritme voor de robot die de vier hoekcellen van een rechthoek tekent.

Taak 7. (Download bestand 6.fil) (Vanaf examenmateriaal uit 2009)

De robot bevindt zich in de linkerbovenhoek van de afgesloten ruimte, die de vorm heeft van een rechthoek. De afmetingen van de rechthoek zijn onbekend. Schrijf een algoritme voor de robot dat alle cellen tekent die zich binnen de rechthoek en grenzend aan de onderkant van de rechthoek bevinden.

3. Consolidatie. Vragen:

Welke opdrachten zal de computer aan de robot geven bij het uitvoeren van de cyclus:

a) nts totdat de cel is overschilderd

b) nts terwijl de cel gearceerd is

In een situatie waarin de robot staat:

  1. in een geschilderde cel,
  2. in een ongeverfde versie?

De locatie van de robot wordt weergegeven in de volgende afbeeldingen:

Hoe wordt de lus uitgevoerd?

Huiswerk. Bepaal de waarde van de variabele S na het uitvoeren van de instructies:

Literatuur: AG Kushnirenko “Grondbeginselen van de informatica en computerwetenschappen.”

Controle door robotuitvoerder in het KUMIR-systeem

De robot bevindt zich in een bepaalde omgeving (een rechthoekig geblokt veld). Tussen sommige cellen van het veld kunnen zich muren bevinden. Sommige cellen kunnen overschilderd zijn (Fig. 3.11).

De robot beslaat precies één cel van het veld.

Met commando's omhoog, omlaag, links en rechts beweegt de robot in de aangegeven richting naar de aangrenzende cel. Als er een muur in de weg staat, treedt er een fout op: er wordt een bericht weergegeven waarin staat dat het onmogelijk is om de volgende opdracht uit te voeren.

Op het commando om te schilderen beschildert de robot de cel waarin hij staat. Als een cel al is overschilderd, wordt deze opnieuw overgeschilderd, hoewel er geen zichtbare veranderingen optreden.

De robot kan alleen correct geschreven opdrachten uitvoeren. Als u het commando neer opschrijft in plaats van het commando omlaag, zal de robot deze invoer niet begrijpen en onmiddellijk een fout melden.

OVER
fouten: 1 syntactisch; 2. logisch

Beschrijvingen van situaties worden opgeslagen in tekstbestanden in een speciaal formaat (.fil-formaat).

Huidig- de omgeving waarin de Robot zich momenteel bevindt (inclusief informatie over de positie van de Robot).

Beginnend- de omgeving waarin de Robot gedwongen wordt geplaatst aan het begin van de uitvoering van een programma met behulp van de Robot.

Operatie procedure:


  1. Set startende omgeving volgens de probleemomstandigheden:
Menu Extra → Wijzig de startomgeving van de robot (teken een omgeving volgens de taakvoorwaarden, geef deze een naam, sla deze op in de persoonlijke map)

2. Specificeer de contractant:

Menu Invoegen →Gebruik Robot

3. Schrijf een algoritme om het probleem op te lossen.

4. Voer het algoritme uit (Menu Uitvoering →Continu uitvoeren /F9)

Commandosysteem voor robotartiesten in het KUMIR-systeem


Team

Actie

omhoog

De robot gaat 1 vakje omhoog

omlaag

De robot gaat 1 vakje naar beneden

links

De robot beweegt 1 vakje naar links

rechts

De robot beweegt 1 vakje naar rechts

overschilderen

De robot beschildert de cel waarin hij zich bevindt

vrij aan de rechterkant

De robot controleert de uitvoering van de overeenkomstige eenvoudig voorwaarden

vrij gelaten



gratis bovenop



vrij van onderen



de cel is overschilderd



de kooi is schoon



Cyclische algoritmen

Fiets– organisatie van herhaling van acties terwijl een bepaalde voorwaarde waar is .

Het lichaam van de lus is een reeks herhaalbare acties.

Voorwaarde - logische uitdrukking (eenvoudig of complex (samengesteld))
Soorten cycli:

1.Lus “Herhaal n keer” 2. Lus “Tot”
nts n keer nt voor nu
. . Het lichaam van de lus. . Lus lichaam
knopen knopen

Voorbeeld: nt voor nu vrij aan de rechterkant


Algemeen overzicht van de cyclus “N keer herhalen”:

HERHAAL n KEER

EINDE
knopen

Algemeen beeld van de ‘terwijl’-cyclus:

DOE HET DOE

EINDE
Samengestelde omstandigheden gevormd uit een of meer eenvoudige voorwaarden en functiewoorden EN, OF, NIET.


Samengestelde staat A EN B(waarbij A, B eenvoudige voorwaarden zijn), is voldaan wanneer aan elk van de twee eenvoudige voorwaarden die erin zijn opgenomen, is voldaan.

Laat A - gratis bovenop, IN - vrij aan de rechterkant, dan de samengestelde toestand A EN B- vrij bovenaan en vrij aan de rechterkant.


Samengestelde staat A OF B voldaan wanneer aan ten minste één van de twee daarin opgenomen eenvoudige voorwaarden is voldaan: top gratis OF rechtsvrij
Samengestelde staat NIET A- voldaan als niet aan voorwaarde A wordt voldaan.

Voorbeeld: Laat A een gekleurde cel zijn (eenvoudige voorwaarde).

P Controle van de toestand van de verbinding NIET A:

a) A - voltooid, NIET A (NIET gearceerd) - niet voltooid.

b) A - niet voltooid, NIET A (NIET gearceerd) - voltooid.


Tak commando

Vertakking - een vorm van organisatie van acties waarbij, afhankelijk van de vervulling of niet-vervulling van een bepaalde voorwaarde, een of andere reeks acties wordt uitgevoerd.

Algemeen overzicht van het IF-commando:

ALS DAT ANDERS

EINDE

In de ICON-taal:

Volledige vertakking: Onvolledige vertakking:
Als Dat Als Dat

anders

alles alles

Hulpalgoritme- een algoritme dat een deeltaak van het hoofdprobleem oplost.

In het KUMIR-systeem worden hulpalgoritmen aan het einde van het hoofdprogramma geschreven (na het servicewoord con), worden op naam aangeroepen voor uitvoering in het hoofdprogramma.

IN onderzoeken en opdrachten

1. Geef alle algoritmen uit drie commando's die de robot van zijn oorspronkelijke positie naar cel B zullen verplaatsen.

Is er een algoritme voor deze taak waarbij de robot het volgende doet:

a) twee stappen; b) vier stappen; c) vijf stappen; d) zeven stappen?


  1. Petya heeft een algoritme samengesteld dat de robot van cel A naar cel B overbrengt door enkele cellen te verven. Wat moet Kolya met dit algoritme doen om een ​​algoritme te verkrijgen dat de robot van B naar A overbrengt en dezelfde cellen schildert?


7. Er zijn twee hulprobotalgoritmen bekend

Teken wat er zal gebeuren als de robot de volgende basisalgoritmen uitvoert:


A)

nt 5 keer


patroon_1

rechts; rechts;


B)

nt 7 keer


patroon_2

rechts; rechts


V)
rechts; rechts; rechts

omhoog; omhoog

rechts; rechts; rechts

omlaag; omlaag


G)
rechts; rechts
rechts; rechts

8. Creëer algoritmen onder controle waarvan de robot over de aangegeven cellen zal schilderen:



9. Het is bekend dat er ergens rechts van de robot een muur is. Creëer een algoritme onder controle waarvan de robot een rij cellen tegen de muur schildert en terugkeert naar zijn oorspronkelijke positie.

10. Het is bekend dat er ergens rechts van de robot een gevulde cel is.

MET laat het algoritme onder controle waarvan de robot een aantal cellen naar de geverfde cel zal schilderen en naar zijn oorspronkelijke positie zal terugkeren.

11. Het is bekend dat de robot zich naast de linkeringang van de horizontale gang bevindt.

12. Het is bekend dat de robot zich ergens in de horizontale gang bevindt. Geen van de gangcellen is overschilderd.

Creëer een algoritme onder controle waarvan de robot alle cellen van deze gang zal beschilderen en zal terugkeren naar zijn oorspronkelijke positie.


13. In een rij van tien cellen rechts van de robot zijn sommige cellen gearceerd.

MET verlaat het algoritme dat de cellen schildert:

a) onder elke gearceerde cel;

b) boven en onder elke gearceerde cel.


14. Wat kan er gezegd worden over de juistheid van het volgende fragment van het algoritme?

nt voor nu de cel is overschilderd

ALS vrij aan de rechterkant DAT

rechts; overschilderen

Naar
ts

15. Schrijf een programma waarmee de robot in alle drie de doolhoven cel B kan bereiken.


16. Schrijf een programma waarmee de robot door de gang kan lopen, van de linker benedenhoek van het veld naar de rechterbovenhoek. De gang is één cel breed en strekt zich uit in de richting van linksonder naar rechtsboven. Een voorbeeld van een mogelijke corridor is weergegeven in de figuur.

Z

GIA-prestaties


  1. Gang 1. De robot bevindt zich ergens in de verticale gang. Geen van de gangcellen is overschilderd. Creëer een algoritme onder controle waarvan de robot alle cellen van deze gang zal beschilderen en zal terugkeren naar zijn oorspronkelijke positie.

  1. NAAR
    Nodig

    Gegeven
    gang2. De robot bevindt zich in de bovenste cel van een smalle verticale gang. De breedte van de gang is één cel, de lengte van de gang kan willekeurig zijn.

Een mogelijke optie voor de initiële locatie van de robot wordt weergegeven in de afbeelding (de robot wordt aangeduid met de letter “P”)

Schrijf een algoritme voor de robot dat alle cellen in de gang beschildert en de robot terugbrengt naar zijn oorspronkelijke positie. Voor de bovenstaande afbeelding moet de robot bijvoorbeeld over de volgende cellen schilderen (zie afbeelding):


  1. Er is een lange horizontale muur in een eindeloos veld. De lengte van de muur is onbekend. De robot bevindt zich in een van de cellen direct boven de muur. De beginpositie van de robot is ook onbekend. Eén van de mogelijke posities:
N


Nodig

Gegeven
Schrijf een algoritme voor de robot dat alle cellen boven en aangrenzend aan de muur beschildert, ongeacht de grootte van de muur en de beginpositie van de robot. Voor de bovenstaande afbeelding moet de robot bijvoorbeeld over de volgende cellen heen schilderen:

De uiteindelijke positie van de robot kan willekeurig zijn. Bij het uitvoeren van het algoritme mag de robot niet worden vernietigd.



  1. Het eindeloze veld heeft een lange verticale muur. De lengte van de muur is onbekend. De robot bevindt zich in een van de kooien, direct rechts van de muur. Ook de uitgangspositie van de robot is onbekend. Een van de mogelijke posities van de robot wordt weergegeven in de figuur (de robot wordt aangeduid met de letter “P”): Schrijf een algoritme om te werken dat alle cellen naast de muur schildert: aan de linkerkant, beginnend vanaf de bovenkant, ongeverfd één en door één; aan de rechterkant, beginnend vanaf de onderste gearceerde en tot en met één. De robot mag alleen cellen verven die aan deze voorwaarde voldoen. Voor de bovenstaande afbeelding moet de robot bijvoorbeeld de volgende cellen invullen (zie afbeelding): De uiteindelijke locatie van de robot kan willekeurig zijn. Het algoritme moet het probleem oplossen voor een willekeurige wandgrootte en elke geldige startpositie van de robot. Bij het uitvoeren van het algoritme mag de robot niet worden vernietigd.


Schrijf een algoritme voor de robot dat alle cellen links van de verticale muur, boven de horizontale muur en ernaast beschildert. De robot mag alleen cellen verven die aan deze voorwaarde voldoen. Voor de afbeelding hierboven moet de robot bijvoorbeeld de volgende cellen inkleuren (zie afbeelding).


N Schrijf een algoritme voor de robot dat de cellen naast de muur, boven en onder, schildert, beginnend vanaf de linkerkant en om de andere cellen. De robot mag alleen cellen verven die aan deze voorwaarde voldoen. Voor de gegeven figuur a) moet de robot bijvoorbeeld over de volgende cellen schilderen (zie figuur b).

De uiteindelijke positie van de robot kan willekeurig zijn. Het algoritme moet het probleem oplossen voor een willekeurige wandgrootte en elke acceptabele beginpositie van de robot.



R

  1. Het eindeloze veld heeft een lange verticale muur. De lengte van de muur is onbekend. De robot bevindt zich in een van de cellen direct links van de muur. Ook de uitgangspositie van de robot is onbekend. Eén van de mogelijke posities van de robot wordt weergegeven in de figuur (de robot wordt aangeduid met de letter “P”):
Schrijf een algoritme dat alle cellen naast de muur beschildert:

  • alles aan de linkerkant;

  • aan de rechterkant, beginnend vanaf de bovenkant, ongeverfd en door één.
De robot mag alleen cellen verven die aan deze voorwaarde voldoen.

B
1102_GIA2011

Het eindeloze veld heeft twee horizontale wanden. De lengte van de muren is onbekend. De afstand tussen de muren is onbekend. De robot bevindt zich boven de bodemwand in een kooi aan de linkerrand. Schrijf een algoritme voor de robot dat alle cellen boven de onderste muur, onder de bovenste muur en ernaast beschildert. De robot mag alleen cellen verven die aan deze voorwaarde voldoen. Voor de bovenstaande afbeelding moet de robot bijvoorbeeld de volgende cellen schilderen (zie afbeelding):

De uiteindelijke locatie van de robot kan willekeurig zijn. Het algoritme moet het probleem oplossen voor een willekeurige veldgrootte en elke toelaatbare opstelling van wanden binnen een rechthoekig veld. Bij het uitvoeren van het algoritme mag de robot niet worden vernietigd.


IN
1103_GIA_2011


Er is een horizontale muur op een eindeloos veld. De lengte van de muur is onbekend. Een verticale muur van onbekende lengte strekt zich vanaf het rechteruiteinde van de muur naar beneden uit. De robot bevindt zich boven een horizontale muur in een kooi aan de linkerrand. De figuur toont een van de mogelijke manieren om de muren en de robot te positioneren (de robot wordt aangeduid met de letter “P”).

Schrijf een algoritme voor de robot dat alle cellen schildert die zich boven de horizontale muur en rechts van de verticale muur en ernaast bevinden. De robot mag alleen cellen verven die aan deze voorwaarde voldoen. Voor de afbeelding hierboven moet de robot bijvoorbeeld de volgende cellen inkleuren (zie afbeelding).

Taakkaarten

    Zoek het aantal negatieve getallen onder n gehele getallen die via het toetsenbord zijn ingevoerd

    Gegeven twee willekeurige getallen. Terwijl hun product minder dan 100 is, verhoogt u elk getal met 2 en geeft u de definitieve getallen op de monitor weer

    n -gehele getallen worden opeenvolgend ingevoerd. Zoek het aantal vijven in de reeks

    n -gehele getallen worden opeenvolgend ingevoerd. Zoek het verschil tussen de maximale en minimale waarden van deze getallen

    Zoek het aantal negatieve getallen onder n gehele getallen die via het toetsenbord zijn ingevoerd

    Gegeven twee willekeurige getallen. Terwijl hun product minder dan 100 is, verhoogt u elk getal met 2 en geeft u de definitieve getallen op de monitor weer

    n -gehele getallen worden opeenvolgend ingevoerd. Zoek het aantal vijven in de reeks

    n -gehele getallen worden opeenvolgend ingevoerd. Zoek het verschil tussen de maximale en minimale waarden van deze getallen

    Zoek het aantal negatieve getallen onder n gehele getallen die via het toetsenbord zijn ingevoerd

    Gegeven twee willekeurige getallen. Terwijl hun product minder dan 100 is, verhoogt u elk getal met 2 en geeft u de definitieve getallen op de monitor weer

    n -gehele getallen worden opeenvolgend ingevoerd. Zoek het aantal vijven in de reeks

    n -gehele getallen worden opeenvolgend ingevoerd. Zoek het verschil tussen de maximale en minimale waarden van deze getallen

    Zoek het aantal negatieve getallen onder n gehele getallen die via het toetsenbord zijn ingevoerd

    Gegeven twee willekeurige getallen. Terwijl hun product minder dan 100 is, verhoogt u elk getal met 2 en geeft u de definitieve getallen op de monitor weer

    n -gehele getallen worden opeenvolgend ingevoerd. Zoek het aantal vijven in de reeks

    n -gehele getallen worden opeenvolgend ingevoerd. Zoek het verschil tussen de maximale en minimale waarden van deze getallen

Khiryanov Timofey Fedorovich

De belangrijkste algoritmische structuren, naast de elementaire bewerkingen die door één element van het diagram worden weergegeven, zijn alternatieve uitvoeringen en cycli. Er zijn twee alternatieve programmeeropties voor de uitvoering en er zijn drie hoofdtypen lus.

Voorwaardelijk uitgevoerde code

Sommige bewerkingen kunnen onder een voorwaardelijke operator worden geplaatst. Vervolgens worden ze alleen uitgevoerd als deze voorwaarde waar is.

Als<условие>
Dat
<действия>
Alle

Alternatief

In een stroomdiagram kunnen conditietesten dienen als uitgangspunt voor het selecteren van alternatieve bewerkingen. Dat wil zeggen: als de voorwaarde waar is, zal de uitvoering het ene traject volgen, en als het niet waar is, dan langs een ander traject. In de KuMir-taal heeft een lus met een voorwaarde de volgende vorm:

Als<условие>
Dat
<действия>
anders
<альтернативные действия>
Alle


Voorwaarden voor de robot:
linker muur
muur aan de rechterkant
muur beneden
muur erboven
de cel is overschilderd
vrij gelaten
vrij aan de rechterkant
vrij van onderaf
gratis bovenop
de kooi is schoon

Lus met voorwaarde

Een lus met een voorwaarde is een lus die loopt zolang een voorwaarde die is opgegeven voordat deze begint, waar is. Deze voorwaarde wordt gecontroleerd voordat de hoofdtekst van de lus wordt uitgevoerd, zodat de hoofdtekst mogelijk niet één keer wordt uitgevoerd (als de voorwaarde vanaf het allereerste begin onwaar is). In de meeste procedurele programmeertalen wordt het geïmplementeerd door de while-operator, vandaar de tweede naam: while-lus. In de KuMir-taal heeft een lus met een voorwaarde de volgende vorm:

nt voor nu<условие>
<тело цикла>
knopen

Lus met postvoorwaarde

Een lus met een postvoorwaarde is een lus waarin de voorwaarde wordt gecontroleerd nadat de hoofdtekst van de lus is uitgevoerd. Hieruit volgt dat het lichaam altijd minstens één keer wordt geëxecuteerd. In de Pascal-taal wordt deze lus geïmplementeerd door de operator repeat..until, in C - do...while.
In de KuMir-taal heeft een cyclus met een postvoorwaarde de volgende vorm:

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

Lus met teller

Een lus met een teller is een lus waarin een bepaalde variabele met een bepaalde stap zijn waarde verandert van een gegeven beginwaarde naar een eindwaarde, en voor elke waarde van deze variabele wordt de kern van de lus één keer uitgevoerd. In de meeste procedurele programmeertalen wordt het geïmplementeerd door de operator voor, die de teller specificeert (de zogenaamde "lusvariabele"), het vereiste aantal passages (of de grenswaarde van de teller) en eventueel de stap waarbij de teller wordt gewijzigd. In de KuMir-taal heeft een lus met een teller de volgende vorm:

geheel
nc voor a van 0 tot 9
...luslichaam
knopen

Verschillende programmeertalen lossen het probleem op van de waarde van een variabele aan het einde van een lus waarin de variabele op verschillende manieren als teller werd gebruikt.

Lezing 4. Rekenkundige uitdrukkingen

Rekenkundige uitdrukkingen en regels voor het schrijven ervan. Algoritmen met “feedback”. Het ‘dag’-commando. Voorwaarden in een algoritmische taal. "if"- en "choice"-opdrachten. Besturingsopdrachten. "Visuele" weergave van opdrachten. Uitweiding: regels en vorm van het schrijven van rekenkundige uitdrukkingen in Fortran van de 21e eeuw.

Krant nr.

Lezing 1. Belangrijkste doelstellingen van de cursus. Cursus bouwmethodiek. Problematische aanpak. Theorie leer je door praktijk. Het KuMir-systeem is een effectieve ondersteuning voor traditionele concepten van procedurele programmeertalen en traditionele debugging-methoden. Voorbeelden van het gebruik van “Idol” in pre-professionele cursussen.

Lezing 2. Praktische kennismaking met het KuMir-systeem: performer Robot. Het concept van een algoritme. Besturing van de robotartiest met behulp van de afstandsbediening. Lineaire algoritmen. Het vastleggen van het algoritme. Uitweiding: Karel-Robot in de initiële programmeercursus aan Stanford University.

Lezing 3. Methoden voor “visuele” opname van het algoritme. Robotsoftwarebesturing. Fiets N eenmaal". Gebruik van hulpalgoritmen. Algoritmen schrijven in een algoritmische taal.

Test nr. 1.

Lezing 4. Rekenkundige uitdrukkingen en regels voor het schrijven ervan. Algoritmen met “feedback”. Het ‘dag’-commando. Voorwaarden in een algoritmische taal. “Als” en “keuze” commando’s. Besturingsopdrachten. “Visuele” weergave van opdrachten. Uitweiding: regels en vorm van het schrijven van rekenkundige uitdrukkingen in Fortran van de 21e eeuw.

Lezing 5. Grootheden in algoritmische taal. Informatie-invoer/uitvoeropdrachten. Opdracht opdracht. Hulpalgoritmen. Algoritmen met resultaten en algoritmen-functies. De ‘voor’-cyclus. Tabelwaarden. Logische, symbolische en letterlijke waarden.

Proef nr. 2.

Lezing 6. Algoritmisatiemethoden. Herhalingsrelaties. Iteratie methode. Lus-invariant. Herhaling.

Lezing 7. Fysieke fundamenten van moderne computers. De microprocessor is het hart van een moderne computer. Hoe een computer te maken.

Lezing 8. Virtuele en echte artiesten in het KuMir-systeem. Uitvoerend tekenaar. Lego Robot is een programmagestuurde “Idol” -artiest. Hyperteksten in het KuMir-systeem. Opdrachten voor studenten klaarmaken en deze automatisch controleren.

Laatste werk.

Terwijl een schoolkind een programma in "PictoMir" "monteert", hoeft hij praktisch geen nieuwe, ongebruikelijke "computerwereld" onder de knie te krijgen. Natuurlijk moet het kind leren de muis te bedienen om het gewenste resultaat uit de computer te krijgen, maar de interface als geheel is gebaseerd op concepten en handelingen die het kind kent, is ‘transparant’ en vereist niet dat het kind zich overmatig concentreert. over het proces van interactie met de computer. Op dit moment concentreert de student bijna 100% van zijn inspanningen (of beter gezegd: “hoeveelheid aandacht”) op het algoritme voor het oplossen van de taak die voorhanden is. Maar zodra de overgang van grafisch programmeren naar meer traditioneel, op tekst gebaseerd programmeren plaatsvindt, begint de leerling een ‘andere wereld’ tegen te komen, waarvan de wetten verschillen van de gebruikelijke wetten die al op school zijn bestudeerd. We hebben het in de eerste plaats over het opnemen van rekenkundige uitdrukkingen, de student besteedde tientallen uren aan het ontwikkelen van de vaardigheden om ze te manipuleren in wiskundelessen op school en bereikte een zekere automatisering.

Bij de eerste taken van het besturen van de robot demonstreert de computer zijn capaciteiten als besturingsmachine, en niet als computermachine. Maar dan verschijnt de cyclus N keer, en bij het oplossen van sommige problemen moet de leerling misschien als N een getal nemen dat verschijnt als resultaat van een bepaalde berekening, bijvoorbeeld het aantal cellen in een veld van grootte 9? 14. Hier blijkt dat het helemaal niet nodig is om het totale aantal cellen van zo'n veld zelf te berekenen (in je hoofd, op papier of met een rekenmachine) en het resultaat in het programma "in te voeren". Het blijkt dat de computer zelf alle noodzakelijke berekeningen kan uitvoeren zodra we hem vertellen (in het programma schrijven) wat er precies moet worden berekend. Dat wil zeggen dat je, grofweg gesproken, om een ​​probleem op een computer op te lossen niet zozeer hoeft te weten “wat is twee keer twee”, maar om de computer te kunnen vertellen dat je precies het resultaat moet nemen van het uitvoeren van de bewerking “tweemaal twee”. ” of de bewerking “9 keer 14”.

Er zijn geen problemen met optellen en aftrekken. Bij opname cyclus 3+3 keer Voor de student is er niets nieuws. In precies dezelfde vorm schrijven leerlingen in de wiskundelessen verschillende sommen en verschillen op en, naar we hopen, ook, zonder de hulp van een rekenmachine. Maar voor complexere rekenkundige uitdrukkingen beginnen de notatieregels in de schoolwiskunde en in traditionele algoritmische talen enigszins te verschillen.

Feit is dat we bij het werken op papier en een schoolbord wiskundige formules "tekenen" - wortels, breuken, graden en indices, en dit is erg handig. Maar in traditionele programmeertalen kan een rekenkundige uitdrukking niet worden getekend, maar moet deze worden "gecodeerd" door op knoppen op het toetsenbord van de computer te drukken. Hierdoor heeft het programmeren een traditie ontwikkeld van vereenvoudigd, zogenaamd “lineair” schrijven van formules, waaraan een student aan het begin van de 21e eeuw moet wennen en zich moet aanpassen. (Waarschijnlijk zullen we dit tegen het midden van de eeuw niet meer hoeven te doen, zie het programma hieronder aan de rechterkant.) Bij het invoeren van de vereiste formules (rekenkundige uitdrukkingen) in het programma zullen we dus het toetsenbord van de computer moeten gebruiken en codeer (versleutel) deze formules op een bepaalde manier. Zoals elke taak waarbij informatie wordt gecodeerd of gecodeerd, kan deze eenvoudige technische taak aantrekkelijk zijn voor sommige schoolkinderen (die het beu zijn om de robot te besturen). Bij het oplossen van dit probleem blijkt dat er een puntsymbool op het toetsenbord staat, maar er is geen vermenigvuldigingssymbool “?”, en de punt dient ook niet als vermenigvuldigingssymbool. Het blijkt ook dat het niet gebruikelijk is om rekenformules van de vorm 8(2+3) te schrijven zonder het vermenigvuldigingsteken. Een computer (meer precies, een programmeertaalcompiler) zou dergelijke formules kunnen begrijpen, maar weigert dit traditioneel te doen en vereist dat er een asterisk in de formule wordt ingevoerd - het vermenigvuldigingsteken: 8 * (2 + 3). Maar de computer beschouwt twee opeenvolgende sterretjes in de regel als een teken van machtsverheffen.

Al deze kleine details bij elkaar vormen een obstakel dat de leerling moet overwinnen. Dit levert doorgaans geen problemen op.

Kinderen maken in de regel geen fouten, met uitzondering van één wijdverbreide fout: fracties van de vorm

en worden geschreven als 3+5/2 en 3*5/2 zonder haakjes, in plaats van de correcte notatie (3+5)/2 en (3*5)/2.

Regels voor het schrijven van rekenkundige uitdrukkingen in Fortran van de 21e eeuw

In de afgelopen eeuwen hebben wiskundigen de taal van wiskundige formules ontwikkeld, wat een effectief middel is gebleken om wiskundige concepten en methoden voor het manipuleren van wiskundige objecten uit te drukken. Toen computers, de eerste computerteksteditors en de eerste programmeertalen halverwege de vorige eeuw verschenen, bleken ze niet in staat om te werken met de taal van wiskundige formules ontwikkeld in de wiskunde. In de loop van de tijd is de situatie met wiskundige formules in tekstdocumenten verbeterd. Wiskundigen en programmeurs bedachten en standaardiseerden manieren om wiskundige formules in tekstdocumenten in te voeren, maar programmeurs in hun programma's bleven de niet-indrukwekkende ‘lineaire’ vorm gebruiken van het schrijven van formules in de vorm van een reeks tekens die via een standaardtoetsenbord werden ingevoerd.

In de 21e eeuw begon de situatie te veranderen. Op verzoek van de Amerikaanse militaire afdeling ontwikkelden SUN-specialisten de Fortress-taal, die aanvankelijk de mogelijkheid omvatte om algemeen aanvaarde wiskundige notaties in programmateksten te gebruiken. Op dit moment zijn alleen de eerste stappen in deze richting gezet, maar in de Fort-taal is het al mogelijk om te gebruiken: Griekse letters:

superscript/subscript en breuken:

formules met weggelaten vermenigvuldigingstekens:

formules waarin de argumenten van elementaire functies niet tussen haakjes staan:

zet bedrijfsborden

En dit is nog maar het begin; over een paar decennia zullen de teksten van de programma's die door wetenschappers en ingenieurs worden gebruikt qua uiterlijk lijken op leerboeken over elementaire en hogere wiskunde.

Algoritmen met “feedback”. "Doei"-commando

Tot nu toe werkten we met de robot in de stijl van Turtle-graphics in LOGO, namelijk: we voerden commando's uit zonder enige feedback. Daarom had wat wij deden (vanuit methodologisch oogpunt) met hetzelfde succes kunnen worden gedaan, bijvoorbeeld in hetzelfde LOGO. Hulpalgoritmen (met of zonder argumenten) kunnen worden geleerd met behulp van de robot of de schildpad.

Bij het opstellen van programma’s voor de Robot (of voor de Vertun) hadden we in eerste instantie vooraf uitgebreide informatie over de omgeving van de Robot. Maar de Robot (en Vertun) zijn vanuit methodologisch oogpunt veel rijker dan de Schildpad, omdat deze feedbackopdrachten heeft. En met behulp van deze commando's kan een persoon snel informatie verkrijgen over de situatie rond een robot die op afstand van hem staat, en kan een computer snel informatie ontvangen bij het uitvoeren van een programma. Door bijvoorbeeld het commando ‘vrij aan de linkerkant’ uit te voeren, ongeacht van wie het afkomstig is, rapporteert de Robot een stukje informatie over de situatie waarin hij zich momenteel bevindt. Een ander stukje informatie kan worden verkregen door de robot te vragen of de cel waar hij staat overschilderd is.

Bij gebruik van de hierboven getoonde afstandsbediening leest een persoon de antwoorden van de robot in tekstvorm van het display. Een goedkopere afstandsbediening zou de reactie van de robot kunnen weergeven door een gloeilamp (LED) aan te steken. Wanneer de robot wordt bestuurd door een computer, wordt de reactie van de robot omgezet in elektrische signaalniveaus. Maar de essentie van het proces is hetzelfde: bij het uitvoeren van een feedbackcommando komt informatie niet alleen naar de robot, maar wordt deze ook in de tegenovergestelde richting verzonden, van de robot naar de computer of de mens. Vandaar de term feedback. Theoretisch was het mogelijk om rond te komen met slechts één vraagcommando van elk paar van het type: Vrij aan de rechterkant – Muur aan de rechterkant. Dit zou het schrijven van het algoritme echter bemoeilijken, omdat hiervoor de introductie van negatie nodig zou zijn, wat in een vroeg stadium van de training methodologisch niet gerechtvaardigd is en de regels voor het schrijven en uitvoeren van programma's compliceert. In plaats van de natuurlijke vermelding ‘er staat een muur bovenop’ zou je iets moeten schrijven als ‘het is niet gratis bovenaan’, wat een soort dualiteit suggereert. Wat als er iets anders is dan een muur?

Wat is de omgeving van de robot

De omgeving van de robot is een rechthoekig veld, omgeven door een hek en verdeeld in cellen, en wordt beschreven door de volgende grootheden: 1) veldafmetingen - het aantal rijen (van 1 tot 10) en het aantal kolommen (van 1 tot 16 ); 2) voor elke cel: de aanwezigheid van wanden rond de cel; teken van schaduw; de hoeveelheid straling (gemeten in conventionele eenheden, kan elke reële waarde aannemen van 0 tot 100); temperatuur (gemeten in graden Celsius, kan elke reële waarde aannemen van –273 tot +233). Opmerking. De laagst mogelijke temperatuur is (ongeveer) het absolute nulpunt (0 graden Kelvin). De hoogste temperatuur is de temperatuur waarbij boeken branden (451 graden Fahrenheit). Deze temperatuur is bekend bij alle lezers van Ray Bradbury’s beroemde verhaal ‘Fahrenheit 451’.

Dankzij het commandosysteem van de robot kan hij de waarden van al deze celkenmerken bepalen. Bovendien kan de cel markeringen bevatten die zichtbaar zijn voor de waarnemer, maar niet toegankelijk voor de ‘zintuigorganen’ van de robot: symbolen in de linkerbovenhoek en linkeronderhoek van de cel, een stip in de rechteronderhoek van de cel. Een integraal onderdeel van de omgeving is de robot zelf (meer precies, de locatie op het veld). Er zijn geen commando's in het commandosysteem van de robot waarmee je de coördinaten van de robot op het veld kunt opvragen.

De robot heeft drie groepen feedbackcommando's. Met de eerste groep kunt u de aan- of afwezigheid van muren boven, onder, rechts en links analyseren. De tweede groep bestaat uit twee diametraal tegenovergestelde commando's - vragen "is de cel overschilderd?" en “is de cel schoon?”, zodat je kunt achterhalen of de cel waarin de Robot staat overschilderd is.

Als de commando's van de eerste twee groepen als antwoord "ja" of "nee" geven, dan retourneren de commando's van de laatste groep een reëel getal als antwoord. Met behulp van deze commando's kun je achterhalen wat de temperatuur en wat de straling is in de kooi waarin de Robot zich bevindt. Dankzij de teams van de derde groep wordt de wereld van Robot merkbaar rijker. Dankzij deze commando's kunnen we een breder scala aan taken instellen en oplossen voor het besturen van de robot en het verzamelen van informatie over het robotveld. Bovendien kunnen temperatuur- en stralingsproblemen op het robotveld een aantal traditionele arrayverwerkingsproblemen vervangen. Een robot ‘uitrusten’ met een ‘thermometer’ en een ‘Geigerteller’ is een goede methodologische aanpak bij het bestuderen van problemen die gewoonlijk voor arrays worden geformuleerd. Dergelijke traditionele taken voor het verwerken van arrays als ‘minimumelement’, ‘index van maximaal element’, ‘som van elementen’, ‘rekenkundig gemiddelde’, enz., kunnen opnieuw worden geformuleerd als taken voor het verzamelen van informatie over het robotveld en krijgen een heel natuurlijk karakter. interpretatie.

Een horizontale rij van vijf cellen met een bepaalde straling in elke cel (10, 10, 30, 20 en 40) is een exacte analoog van een lineaire tabel met reële getallen met vijf elementen. En bijna elke taak over het werken met een lineaire tafel kan worden geherformuleerd als een taak over een robot. In deze formulering zal het duidelijker worden waarom een ​​dergelijk probleem is ontstaan ​​en waarom het moet worden opgelost. Laten we ons voorstellen dat er op het robotveld aan de rechterkant een muur is waar mensen - misschien reddingswerkers - naartoe zullen moeten gaan. Eerst moet je weten hoe gevaarlijk het is om door de gang te lopen voor je gezondheid, wat is het stralingsniveau. Als mensen zich met een ongeveer constante snelheid voortbewegen, zal de stralingsdosis die zij ontvangen evenredig zijn met de som van de stralingsniveaus in alle cellen van de doorgang naar de muur. Daarom kan de analyse van de mate van gevaar van deze doorgang voor de levens van reddingswerkers opnieuw worden geformuleerd als de taak om de totale straling in de cellen van de doorgang te berekenen. Dit is het probleem van het vinden van de som van tabelelementen, geformuleerd in termen van het besturen van de robot. Op een vergelijkbare manier kunt u vrijwel elke taak van het verwerken van tabellen (arrays) herformuleren.

Oefening. Herformuleer de taken “Minimum array-element” en “Index van het minimale array-element” in termen van robotbesturing.

Laten we dus eens kijken welke van de volgende formuleringen van het probleem aantrekkelijker is voor een leerling: 1) vind de indices van het minimumelement van een rechthoekige tafel; 2) Zoek in een rechthoek op het veld van de robot een cel met minimale straling en verplaats de robot naar deze cel (voor rust).

De eerste formulering is puur wiskundig. Wie deze indexen nodig heeft en waarom blijft ver buiten de reikwijdte van de taak. De tweede is begrijpelijker en betekenisvoller. Hoewel schoolkinderen hoogstwaarschijnlijk nog niet eerder met straling te maken hebben gehad, is het voor hen duidelijk dat een hoog stralingsniveau ‘slecht’ is, dat de kooi die nodig is voor de taak de veiligste is, en dat als de robot een plek moet vinden om te rusten, dan kun je beter de veiligste kooi-cel kiezen met minimale straling.

Zoals je hebt gemerkt, gebruikt het Som der Elementen-algoritme een “while”-lus, die we nog niet hebben geïntroduceerd. Hier liepen we net een beetje voorop. De ‘while’-lus moet worden geïntroduceerd bij het bespreken van een bepaald probleem (problematische benadering), bijvoorbeeld in het leerboek:

“Ergens onder de Robot op het veld staat een muur. U moet de robot verticaal naar de muur verplaatsen, d.w.z. installeer de robot in de kooi direct boven de muur op dezelfde verticale lijn als de beginpositie van de robot.” U kunt proberen dit probleem eerst handmatig op te lossen. De leraar kan zelfs een robotveld op het blad tekenen en, zonder het blad voorlopig aan de leerlingen te tonen, hun opdrachten uitvoeren. Binnenkort zullen schoolkinderen begrijpen dat ze altijd moeten vragen: “Is het vrij van onderaf?” (of “is er een muur beneden?”) en geef het commando “omlaag” totdat de robot beneden vrij is.

Normaal gesproken stelt elke leerling in de klas zich na 10 minuten van zo'n spel tot in detail voor hoe hij de robot precies moet besturen om de taak op te lossen. Dit begrip is het methodologische doel van een dergelijk ‘spel’.

De methodologische techniek voor een dergelijke introductie van een nieuw programmeertaalontwerp door G.V. Lebedev beschreef het in zijn lezingen als volgt:

“Als leerlingen in detail begrijpen hoe ze het hierboven gestelde probleem bij het ‘handmatig besturen’ van de robot kunnen oplossen, ontstaat er voor onze methodologische aanpak een belangrijk contrast tussen dit werk ‘handmatig’ en het programmabesturingsschema.

"Verbazingwekkend! - zegt de leraar. - Iedereen wist hoe hij de robot moest besturen. Maar we houden ons niet bezig met handmatige besturing van de robot, maar met informatica. Daarom is het onze taak om een ​​algoritme voor de computer te schrijven, waarbij de computer de robot opdracht geeft zodat het probleem wordt opgelost. Merk op dat de afstand van de robot tot de muur onbekend is, maar dat de computer, die het algoritme uitvoert (en de afstand niet kent), de robot naar de muur moet bewegen. Probeer zo’n algoritme op te schrijven. Je begrijpt hoe je de robot moet besturen, welke commando's de computer aan de robot moet geven. Schrijf het dus op als een computeralgoritme.” Ik vestig nogmaals uw aandacht op deze problematische aanpak. Praktisch gezien vragen we op dit punt aan schoolkinderen om een ​​constructie te bedenken voor de ‘doei’-cyclus. Dat wil zeggen, in tegenstelling tot de standaardvolgorde (eerst de vorm van de opname, dan de semantiek (betekenis) en dan het oplossen van problemen), stellen we eerst het probleem voor en zoeken dan uit hoe we het kunnen oplossen, d.w.z. we begrijpen de betekenis (semantiek) van de toekomstige constructie en vragen de studenten vervolgens om een ​​opnameformulier te bedenken.”

De ‘terwijl’-cyclus is in wezen een zeer complexe constructie. En het is beter om het proces om het onder de knie te krijgen visueel te maken. In het leerboek wordt deze cyclus op verschillende manieren uitgelegd, onder meer aan de hand van een stroomschema. Een visuele uitleg van het werk van de "while" -cyclus is net zo belangrijk als de stapsgewijze uitvoeringsmodus in "Idol", omdat grafische beelden en observaties tijdens het proces van de eigen activiteiten beter door het bewustzijn van de student worden opgenomen dan spraak- en wiskundige formules afkomstig van de leraar.

Voert één STAP van het programma uit en gaat naar de PAUZE-modus. Wanneer het wordt gestart in de BEWERKEN- en ANALYSE-status, “slaat” het de “use”-regels over en stopt voordat de eerste regel van de hoofdprogramma-introductie wordt uitgevoerd (als die er is) of voordat de regel met het woord “alg” van de hoofdprogramma-introductie wordt uitgevoerd. algoritme. De uitvoering van een commando om een ​​algoritme-procedure aan te roepen wordt behandeld als één STAP. Geeft de resultaten van berekeningen en conditiecontroles in de velden weer.

Wordt op dezelfde manier uitgevoerd als het “STEP”-commando. Het verschil ligt in de uitvoering van een commando om een ​​algoritmeprocedure aan te roepen of de waarde van een algoritmefunctie te berekenen (als deze in het werkvenster worden gepresenteerd). In deze gevallen is de volgende stap het uitvoeren van de kopregel van het hulpalgoritme. In de toekomst zal het commando “step” of “STEP” leiden tot de uitvoering van de volgende stap binnen het hulpalgoritme dat wordt uitgevoerd.

Laten we proberen het algoritme "Stap tot de limiet" uit te voeren. We voeren het programma stap voor stap uit door op het STEP-icoon te klikken. Wij zijn geïnteresseerd in het uitvoeren van de ‘while’-lus. Eerst wordt de voorwaarde ‘vrij vooruit’ gecontroleerd. Het antwoord is “ja”, wat betekent dat de body van de lus moet worden uitgevoerd. En de robot gaat één veld naar beneden. Wanneer het luslichaam klaar is, gaan we terug en controleren de toestand opnieuw. En zo verder tot de volgende ( Oefening: Wat telt?) stap De robot zal tegen een muur aanlopen en het controleren van de toestand zal het resultaat “nee” opleveren. En dan zullen we de uitvoering van de lus voltooien en beginnen met het uitvoeren van de commando's die na kts in het programma zijn geschreven.

Houd er rekening mee dat de resultaten van het controleren van de voorwaarden in de velden worden weergegeven, zodat de leerling na elke controle van de voorwaarde onmiddellijk begrijpt of het lichaam van de lus opnieuw wordt uitgevoerd of dat de lus wordt voltooid.

Wat als de omgeving van de robot anders is en hij zelfs voordat de cyclus is voltooid al boven de muur staat? Laten we proberen het algoritme onder deze beginvoorwaarden uit te voeren. Een beetje bang

maar wat als de robot kapot gaat? Niets zoals dit. De robot is niet kapot, de cyclus is voltooid, omdat bij de eerste controle niet aan de voorwaarde “vrij van onderen” is voldaan en daarom het lichaam van de cyclus nooit wordt uitgevoerd. Dit is een van de belangrijke kenmerken van het uitvoeren van de ‘while’-lus.

Een ander belangrijk kenmerk van het uitvoeren van een "while" -lus is de mogelijkheid van looping - eindeloze uitvoering van het lichaam van de lus. Laten we zeggen dat we het door elkaar hebben gehaald en in plaats van het “down”-commando het “paint”-commando in de lus hebben geschreven. Als er vrije ruimte onder de Robot is, zal de Robot nergens heen bewegen, maar stilstaan ​​en eindeloos over de cel schilderen waarin hij staat. Als we zo'n programma uitvoeren, kunnen we leren over looping door het aantal stappen dat door het programma wordt uitgevoerd, dat voor onze ogen snel zal toenemen, terwijl de robot stilstaat.

Het derde en laatste kenmerk van de “while”-lus is dat de voorwaarde voor het voortzetten van de lus niet wordt gecontroleerd terwijl de lus wordt uitgevoerd. Laten we het algoritme nog een keer iets veranderen door nog een “down”-commando toe te voegen aan de hoofdtekst van de lus. Laat de robot de taak sneller voltooien. In de regel zien studenten de misvatting van een dergelijk programma niet, waarbij ze ten onrechte aannemen dat de lusvoorwaarde op de een of andere manier op magische wijze wordt gecontroleerd op elk moment van uitvoering van de lusbody. Dit is uiteraard niet het geval. Het volgende voorbeeld laat zien dat er een runtimefout is opgetreden, ook al had de lusvoorwaarde (in de verleden tijd) de waarde ‘ja’. Maar vóór de tweede stap “naar beneden” controleerde niemand de toestand. Om deze reden werd het programma afgewezen.

Voorwaarden in een algoritmische taal. “Als” en “keuze” commando’s

In de regel worden, na het beheersen van de “while”-lus, de commando’s “if” en “select” zonder veel moeite onder de knie. Zoals gewoonlijk zou de introductie van een nieuw commando moeten beginnen vanaf de taak. Gegeven: De robot staat ergens op het veld en er is rechts vrije ruimte. Wat je moet doen is de robot naar beneden bewegen en onderweg de vierkanten van het veld schilderen met aan de rechterkant een muur.

Het algoritme wordt verkregen door de oplossing van het vorige probleem eenvoudig te herwerken; je hoeft alleen maar de opdracht “if” toe te voegen.

Op de methodologische vraag waarom de ‘als’-constructie in de cursus verschijnt na de ‘terwijl’-constructie kun je het antwoord vinden in ‘12 lezingen’ van G.V. Lebedeva: “Het is natuurlijk gemakkelijk om het ‘if’-commando te introduceren en uit te leggen aan de hand van een voorbeeld, zoals een ‘voorzichtige’ stap: ‘als de bodem vrij is, gaat alles omlaag.’ Het probleem is naar onze mening dat als je hiermee begint (en vooral als je het commando 'als' vóór de lussen invoert), schoolkinderen geen enkele (zelfs als ze niet geformaliseerde) externe context in hun hoofd hebben waarbinnen ze kunnen reageren. schrijf zo'n team zou zinvol zijn om een ​​aantal zinvolle problemen op te lossen. Nadat minstens één voorbeeld met een cyclus en met “if” inside is geanalyseerd, verschijnt zo’n externe context. Dan kun je het 'als'-commando zonder lussen bestuderen - de studenten zullen zich de situatie voorstellen waarin de behoefte aan een dergelijk commando ontstaat. Maar zodra dit eerste voorbeeld (met de lus en de “if”) klaar is, valt er niets meer te leren over het “if”-commando. Andere illustratieve voorbeelden zijn simpelweg niet nodig - u moet de problemen oplossen. Daarom zijn wij van mening dat de ‘if’-instructie voor het eerst in een lus moet verschijnen.” De complexiteit van het ‘als’-commando kan alleen liggen in het schrijven van de voorwaarde. Je kunt een taak voor schoolkinderen bedenken - noteer formeel de voorwaarde "De robot staat in de hoek":

(muur links En muur bovenop)

of(muur erboven En muur rechts)

of(rechter muur En muur beneden)

of(onderste muur En linker muur)

Commando “Selecteren”.

Het ‘select’-commando is het eerste ‘niet-essentiële’ commando in de algoritmische taal. Het is onmogelijk een probleem te formuleren dat zonder dit team niet opgelost kan worden. Het commando “selecteren” vereenvoudigt het opnemen alleen in een situatie waarin er veel opties zijn. Maar zelfs in deze situatie kan het algoritme worden geschreven door zich te beperken tot het gebruik van alleen het “if”-commando.

“Visuele” weergave van opdrachten

De "dag" -cyclus kan niet alleen worden uitgelegd aan schoolkinderen die "Idol" gebruiken met de robot, maar ook aan kleuters die de jongere broer van "Idol" gebruiken - "PictoMir". Uit de vorige lezing zijn we bekend met Vertun, die over een veld kan lopen dat lijkt op het veld van de robot. Vertun is een interessante performer, hij heeft feedbackopdrachten: Vertun kan controleren of het plein waarop hij staat overschilderd is, en of er een muur voor hem staat. Vertun heeft, net als de robot, een dubbele set feedbackopdrachten. Maar daar zijn in PictoMir goede redenen voor. Als we in “Idool” van het robotcommando “er is een muur aan de rechterkant” het equivalent zouden kunnen krijgen van het commando “aan de rechterkant is vrij” door de ontkenning “niet” toe te voegen aan het commando, dan met de visuele stijl van programmeren in “PictoMir” het deeltje bestaat niet. Dit betekent dat er geen twee teams ingezet kunnen worden en alle vier nodig zijn.

De pictogrammen in de afbeelding geven deze combinaties van opdrachten aan (van links naar rechts): "de cel is ingevuld" (grijze kleur van het veld); “er staat een muur voor” (bakstenen muur); “schone cel” (groene kleur van het veld); “er is vrije ruimte voor ons” (de muur is vernietigd).

Commando “Selecteren”.

· onder voorwaarde 1: serie 1

· onder voorwaarde 2: aflevering 2

· onder voorwaarde n: serie n

· anders serie n + 1

Het trefwoord else ontbreekt mogelijk samen met de bijbehorende reeks opdrachten:

· onder voorwaarde 1: serie 1

· onder voorwaarde 2: aflevering 2

· onder voorwaarde n: serie n

“Idol” controleert eerst voorwaarde 1. Als hieraan is voldaan, voert “Idol” de commando’s uit serie 1 uit, waarna het overgaat tot het uitvoeren van de commando’s die na het woord all staan ​​geschreven. Anders doet “Idol” hetzelfde met voorwaarde 2 en teams uit serie 2, enz.

Commando's die na het woord "anders" worden geschreven, worden uitgevoerd als aan geen van de voorwaarden is voldaan.

Bij een select-commando wordt nooit meer dan één reeks commando's uitgevoerd, zelfs als meerdere voorwaarden waar zijn. De uitvoering van het selectiecommando eindigt nadat de eerste (in volgorde) voorwaarde met de waarde ja is gevonden (en de bijbehorende reeks commando's is uitgevoerd).

Er zijn drie uitvoeringscontroleopdrachten in de KuMir-taal:

goedgekeurd, gegeven, noodzakelijk.

Oproepformaat:

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

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

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

Alle drie de opdrachten worden op deze manier uitgevoerd. De toestand wordt gecontroleerd. Als niet aan de voorwaarde wordt voldaan, stopt “Kumir” met het uitvoeren van het algoritme en meldt dat er een fout is opgetreden. Als aan de voorwaarde is voldaan, gaat de uitvoering van het algoritme normaal door alsof er helemaal geen besturingscommando is. Het gegeven commando controleert de voorwaarde aan het begin van de uitvoering van het algoritme, het commando moet - aan het einde van de uitvoering van het algoritme, en het commando utv kan de voorwaarde controleren tijdens de uitvoering van het algoritme.

Hoe kunt u deze voorwaarden gebruiken in “PictoMir”? Voorwaarden kunnen aan het begin van hulpalgoritmen in speciale cellen worden geplaatst. De blauwe bevatten een repeater (voor het N keer organiseren van de lus), en de roze bevatten de voorwaarde voor het uitvoeren van het algoritme f1-f5. Zoals besproken in Lezing 3 helpt het herhalen van N keer de leerling cellen te besparen bij het construeren van een algoritme.

Maar als een eenvoudige taak er bijvoorbeeld in bestaat de Vertun naar rechts tegen de muur te verplaatsen, dan kan het programma er misschien zo uitzien:

Als je naar de omgeving van Vertun ‘kijkt’, kun je namelijk gemakkelijk uitrekenen dat er 4 treden naar de muur zijn. Het is een andere zaak als de situatie voor ons niet zichtbaar is en we er alleen over kunnen leren door feedback van Vertun. Net als bij de Robot zal de leerling aan Vertun moeten vragen voordat hij een stap naar voren zet of er een muur voor hem staat. Wanneer leerlingen in de algoritmische taal op school worden gedwongen zelf de constructie van de ‘while’-lus te bedenken, hebben kinderen nog steeds veel ruimte voor verbeelding, omdat de grenzen van de algoritmische taal niet zichtbaar zijn. In “PictoMir” heeft het kind alleen wat hij op het scherm ziet. En de voorwaarden kunnen maar op één plek worden geplaatst. Het enige wat hij kan doen is het proberen.

Een dergelijk programma zal correct werken voor de huidige omgeving van Vertun (en uiteraard in alle gevallen waarin de muur dichter dan vier stappen verwijderd is van de startpositie).

Laten we uitleggen hoe het hulpalgoritme f1 werkt. Vóór de start van het algoritme (dat zich in 12 uitvoerbare cellen bevindt) wordt het Vertun-commando, gelegen in het roze veld, uitgevoerd. Als het antwoord ‘ja’ is, wordt het algoritme zo vaak uitgevoerd als aangegeven in het blauwe vak. In dit geval worden lege cellen overgeslagen en wordt het commando uit het roze veld elke keer aangeroepen vóór de volgende uitvoeringscyclus van het f1-algoritme.

Als het roze veld leeg is, is het antwoord “ja”. Als het blauwe veld leeg is, wordt de lus 1 keer uitgevoerd. In feite zou een dergelijk hulpalgoritme analoog zijn aan de volgende notatie in algoritmische taal:

nc <синее поле> een keer doei <розовое поле>

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

Maar zo’n constructie bestaat niet in de algoritmische taal. In dit geval verandert f1 in een analoog van de ‘if’-constructie, in het geval van een lege repeater (leeg blauw veld) of een enkele repeater, en verandert het f1-algoritme in een ‘while’-lus als de voorwaarde aanwezig is ( roze veld) en de repeater is gelijk aan oneindig.

Oefening. Onthoud hoe je een lus opbouwt van f1 N keer.

Wat zal een kind motiveren om de ‘dag’-cyclus te gebruiken (gebruik het roze vakje)? Feit is dat er in "PictoMir" slechts 7 repeaters zijn: 1 keer, 2 keer, 3 keer, 4 keer, 5 keer, 6 keer en "ad infinitum". Met deze set kun je de muur bereiken als deze 1, 2, 3, 4, 5 of 6 stappen verwijderd is. Maar wat te doen als er zeven treden tegen de muur staan ​​of zoveel treden dat het kind het aantal simpelweg niet kan tellen? Er is een "oneindig" repeater, en zelfs als het kind nog niet aan dit concept gewend is geraakt, zal hij, nadat hij de weinige opties voor het maken van programma's in "PictoMir" heeft doorlopen, de optie met de "infinity" repeater zeker proberen in een blauw vakje en de gewenste toestand in een roze vakje. Dit zal de ‘dag’-cyclus zijn die het kind (bewust) creëert.

De grafische taal van “PictoMira” moedigt het kind aan om de “doei”-cyclus sterker uit te vinden dan de algoritmische taal van “KoMira”. Feit is dat het kind bij het "sleutelen" aan "PictoMir" zeer beperkt is in de keuze van de middelen. “PictoMir” ligt allemaal in de palm van je hand, en het kan lang duren om de algoritmische taal te leren. In “PictoMir” kun je snel alle programmeeropties doorlopen, en aangezien er ook een “bye”-cyclus tussen zit, kun je die ook openen. Het verschil tussen “Idool” en “PictoMir” is vergelijkbaar met het verschil tussen schaken en dammen. Over dit laatste schreef de beroemde Amerikaanse schrijver Edgar Allan Poe in zijn detectiveverhaal ‘Murder in the Rue Morgue’:

“Ondertussen beslist hier (bij schaken. - Vert.) de aandacht. Zodra het verzwakt, maak je een fout die tot een misrekening of een nederlaag leidt. En aangezien schaakzetten niet alleen divers zijn, maar ook meerdere waarden hebben, neemt de kans op een fout dienovereenkomstig toe, en in negen van de tien gevallen is het niet de bekwamere speler die wint, maar de speler die meer gefocust is. Dammen is een andere zaak, waarbij slechts één zet is toegestaan ​​met kleine variaties; hier is de kans op onoplettendheid veel kleiner, speelt aandacht geen bijzondere rol en hangt succes vooral af van vindingrijkheid. ...Het is duidelijk dat de overwinning hier (bij gelijke sterkte) afhangt van een succesvolle zet, van een onverwachte en geestige beslissing 6.”

Er was een diepere reden waarom we de robot diametraal tegenovergestelde commando's en vragen gaven. Er was eens een algoritmische taal waarin je geen deeltje buiten een commandonaam kon plaatsen. In die tijd zou het daarom nodig zijn geweest om vanuit het oogpunt van de Russische taal volkomen onleesbare uitdrukkingen te gebruiken als ‘geen cel is overschilderd’ of ‘niet vrij bovenaan’. In de moderne versie van de taal worden dergelijke uitdrukkingen veel normaler geschreven: "de cel is niet overschilderd", "de bovenkant is niet vrij."

Kushnirenko AG, Lebedev GV, Svoren R.A. Grondbeginselen van informatica en computertechnologie. M.: Onderwijs, 1990, 1991, 1993, 1996.

Helaas is het onmogelijk om het algoritme "Step all the way" in "Idol" te noemen, aangezien "to" een sleutelwoord van de taal is.

12 lezingen over waarom een ​​cursus computerwetenschappen op school nodig is en hoe deze te geven: A.G. Kushnirenko, G.V. Lebedev. // Gereedschapskist. M.: Laboratorium voor Basiskennis, 2000.