Ciclu cu idol postcondiție. Cicluri și condiții în limbajul idolului. Valori tabelare și lucrați cu ele

Bucle și ramuri imbricate în sistemul KUMIR

Unul dintre conceptele fundamentale în informatică este conceptul de algoritm. Originea termenului „algoritm” în sine este asociată cu matematica. Acest cuvânt provine de la Algorithmi - ortografia latină a numelui lui Muhammad al-Khwarizmi (787 - 850), un matematician remarcabil al Orientului medieval. În cartea sa „On Indian Counting”, el a formulat regulile de scriere a numerelor naturale folosind cifre arabe și regulile de manipulare a acestora într-o coloană.

În viitor, un algoritm a început să fie numit prescripție exactă care determină succesiunea de acțiuni care asigură obținerea rezultatului dorit din datele inițiale.

Algoritmul poate fi proiectat pentru a fi executat de un om sau dispozitiv automat... Crearea unui algoritm, chiar și a celui mai simplu, este un proces creativ. Este disponibil exclusiv ființelor vii și perioadă lungă de timp se credea că numai o persoană. În secolul al XII-lea. a fost făcută o traducere în latină a tratatului său de matematică, din care europenii au aflat despre zecimală sistem pozițional calculul și regulile aritmetice pentru numerele cu mai multe cifre. Aceste reguli erau numite algoritmi la acea vreme.

Definiția unui algoritm dată mai sus nu poate fi considerată strictă - nu este complet clar ce „prescripție precisă” sau „o succesiune de acțiuni care asigură obținerea rezultatului dorit”. Prin urmare, mai multe proprietăți generale ale algoritmilor sunt de obicei formulate pentru a distinge algoritmii de alte instrucțiuni.

Aceste proprietăți sunt:

Discretenie (discontinuitate, separare) - algoritmul ar trebui să reprezinte procesul de rezolvare a problemei ca o execuție secvențială a pașilor simpli (sau definiți anterior). Fiecare acțiune furnizată de algoritm este efectuată numai după ce s-a încheiat execuția celei anterioare.

Certitudine - fiecare regulă a algoritmului trebuie să fie clară, lipsită de ambiguitate și să nu lase loc arbitrarului. Datorită acestei proprietăți, execuția algoritmului este de natură mecanică și nu necesită instrucțiuni sau informații suplimentare despre problema rezolvată.

Eficacitatea (finititudine) - algoritmul ar trebui să conducă la rezolvarea problemei într-un număr finit de pași.

Caracter de masă - algoritmul de rezolvare a problemei este dezvoltat într-o formă generală, adică trebuie să fie aplicabil pentru o anumită clasă de probleme care diferă doar în datele inițiale. În acest caz, datele inițiale pot fi selectate dintr-o anumită regiune, care se numește regiunea de aplicabilitate a algoritmului.

Metode de înregistrare a algoritmului

Pentru înregistrarea algoritmilor sunt folosite o varietate de instrumente. Alegerea unui instrument este determinată de tipul de algoritm care se execută.

Există următoarele metode principale de scriere a algoritmilor:

- verbal când algoritmul este descris în limbaj uman (natural). Limbile naționale sunt naturale (rusă, engleză, germană etc.);

- simbolic când algoritmul este descris folosind un set de caractere și este un program (programele sunt scrise folosind limbaje de programare);

- grafic când algoritmul este descris folosind setul imagini grafice(diagramă bloc).

Metodele de înregistrare frecvent acceptate suntînregistrare grafică folosind diagrame bloc șinotația caracterelor cu ajutorul unui limbaj algoritmic – un program.

La graficînregistrările sunt întocmite diagrame bloc, pe care sunt indicate diverse părți ale algoritmului folosind simboluri convenționale (figuri geometrice). Elementele diagramelor bloc sunt prezentate în figură.

Sistem de programare KUMIR

Când stăpânim subiectul algoritmilor, vom folosi sistemul de programare KUMIR.

Kumir (Set of Educational WORLDS) este un sistem de programare conceput pentru a sprijini cursuri inițiale informatica si programare in liceu si liceu.

Sistemul Kumir folosește un limbaj algoritmic școlar cu vocabular rus și executori încorporați Robot și Draftsman etc.

La intrarea într-un program, Kumir monitorizează constant corectitudinea acestuia, informând în câmpurile programului despre toate erorile pe care le constată.

Când programul este executat în modul pas cu pas, Kumir afișează rezultatele operațiunilor de atribuire și valorile expresiilor logice pe câmpuri. Acest lucru vă permite să accelerați procesul de stăpânire a elementelor de bază ale programării.

Robot de artist grafic

Robotul grafic performer vă permite să stăpâniți elementele de bază ale programării și să înțelegeți activitatea principalelor structuri algoritmice.

Artist graficeste un obiect de control. Un pacheto vom face cu tine.

Robotul interpret este în unelesetarea de pornire - un câmp dreptunghiular, împărțit în celule, între care pot sta pereții.

Robotul se poate mișca pe câmp, ocolind pereții și pictând celule. Robotul nu poate trece prin perete, dar poate verifica dacă există un perete lângă el. Robotul nu poate ieși în afara casetei de delimitare a câmpului.

R
OBOT poate executa comenzi
: sus, jos, dreapta, stânga, pictează peste.

Robotul poate verifica condițiile : sus liber, jos liber, dreapta liber, stânga liber, adăugarea unei particule nu inversează starea. Nu liber de sus, nu liber de jos, nu liber în dreapta, nu liber în stânga.

Structuri algoritmice de bază

    Există trei structuri algoritmice de bază (construcții)-liniar (urmează), ramificat și ciclu, din care poți construi orice algoritm.Fiecare structura algoritmică are un punct de intrare și un punct de ieșire.

    Vom scrie algoritmi atât pe limbajul școlii, cât și sub formă de diagrame bloc.

Structura liniară

Structura liniară este cea mai simplă organizare a algoritmilor - comenzile sunt executate secvenţial una după alta

Exemplu:

Structura ciclică (ciclu)

    Structura ciclică (ciclu) oferă execuții multiple ale acelorași comenzi. Există mai multe tipuri de structuri ciclice.

    Orice structură ciclică are două părți -rubricași corpul buclei.

    Setul de comenzi care se repetă pe măsură ce bucla este executată este apelatcorpul ciclului.

    Titlu determină numărul de repetări ale corpului buclei.

Ciclu pentru numărul de repetări (de ori)

nts N o singura data

<команда>

kts

NS Exemplu:

utilizare Robot
alg coloană

din timp
.
nts 5 o singura data
... ... vopsea peste
... ... sus
.
kts

con

Buclă cu precondiție (deocamdată)

(intrare in limbaj algoritmic)

nts in timp ce <условие>

<команда>

La c

Exemplu:

utilizare Robot
alg Linia

din timp

nts in timp ce liber de sus
vopsea peste
sus
kts

con

Buclă cu postcondiție (la)

(scris în limbaj algoritmic)

n c

<команда>

kts_cu <условие>

Exemplu:

utilizare Robot
alg Linia

din timp
nts

vopsea peste; sus

kts_cu lăsat liber

con

Structura de ramificație.

    Structura de ramificație. Unele sarcini necesită acțiuni diferite in functie de indeplinirea anumitor conditii. În astfel de cazuri, se vorbește despre ramificarea algoritmului.

    Pentru a implementa structura „de ramificare”, sunt utilizate două echipe structurate ale școlii AY - dacă și o alegere, fiecare dintre acestea putând fi completă și incompletă.

    În diagrame bloc și școală AY<условие>- aceasta este expresie booleană, care poate duce la una dintre cele două valori posibile -Adevărat sau Minciuna. În limba școlii, aceste valori sunt înregistrate ca da și nu. În limbajele de programare, valorile sunt adesea folositeAdevăratși Fals... Computerul stochează aceste valori ca 1 și 0.

Ramificare completă

(scris în limbaj algoritmic)

e dacă <условие>
. .
atunci <команда1>
. .
in caz contrar <команда2>
toate

Exemplu:

utilizare Robot
alg ramură_plină

din timp
.
dacă liber de sus
. .
atunci sus
. .
in caz contrar mult mai jos
.
toate

con

Ramificare incompletă

(scris în limbaj algoritmic)

e dacă <условие>
. .
atunci <команда1>
toate

Exemplu:

utilizare Robot
alg ramură_incompletă

din timp
.
dacă liber de sus
. .
atunci sus
.
toate

con

Algoritm auxiliar (procedură)

    Algoritmul prin care se rezolvă o anumită sarcină din problema principală și care, de regulă, se execută în mod repetat, se numește algoritm auxiliar.

    Un algoritm auxiliar scris într-un limbaj de programare se numește subrutină sau procedură.

    Algoritmul helper este apelat din programul principal prin nume. Algoritmul auxiliar este scris după algoritmul principal. Avea algoritm auxiliar trebuie să existe un nume.

utilizare Robot
alg
din timp
mult mai jos

pătrat
mult mai jos

mult mai jos
con

alg pătrat
din timp

vopsea peste

La dreapta

vopsea peste

mult mai jos

vopsea peste

La stânga

vopsea peste
con

Bucle și ramuri imbricate

Când rezolvați unele probleme cu un robot, este necesar să folosiți bucle sau ramuri imbricate.

C Un icl se numește imbricat dacă este imbricat în interiorul unei alte bucle.

Să ne uităm la o buclă imbricată folosind o buclă deocamdată ca exemplu.

Știm că bucla constă dintr-un antet de buclă care definește de câte ori se va repeta corpul buclei.

Corpul buclei este partea din bucla care se repetă atunci când bucla este executată.

Corpul unei bucle poate fi o comandă, comenzi multiple sau o altă buclă sau ramură.

În cazul în care corpul buclei este o altă buclă sau ramură, acestea se numesc imbricate.

Buclă imbricată

În prima trecere, bucla exterioară o apelează pe cea interioară, care este executată până se termină, după care controlul este transferat în corpul buclei exterioare. La a doua trecere, bucla exterioară apelează din nou bucla interioară. Și așa mai departe până când ciclul exterior se încheie.

Ramura imbricata

Luați în considerare soluția unei probleme cu ramuri și bucle imbricate:

Problema 1 Robotul se află pe un perete cu găuri, mișcându-se de-a lungul peretelui spre dreapta, robotul trebuie să picteze peste toate celulele unde sunt găuri.

utilizare Robot alg din timp
.
nts in timp ce pe dreapta cu liber
nts in timp ce de jos liber
vopsea peste;
La dreapta
. .
kts
... ... La dreapta
.
kts con CU
Să lăsăm algoritmul pentru rezolvarea problemei cu o buclă exterioară pentru moment și o buclă imbricată pentru moment.

R Să rezolvăm aceeași problemă folosind bucla exterioară deocamdată și ramificarea imbricată.

Să rezolvăm aceeași problemă folosind o buclă exterioară la și o buclă imbricată deocamdată.

Cunoașterea programului Kumir stăpânirea elementelor de bază ale programării.

În cadrul acestuia, studenții pot dobândi abilități practice în crearea și depanarea unui algoritm, lucrând cu interpreți precum Robot, Draftsman, Aquarius, Grasshopper, Turtle.

Când studiezi una dintre cele mai dificile secțiuni ale informaticii „algoritmi și programare”.

Scopul dezvoltării :

Descarca:


Previzualizare:

Dezvoltare metodică în informatică.

Subiect: „Robot interpret în programul Kumir în lecțiile de informatică”

profesor de tehnologie „Informatică și TIC”

Notă explicativă

Scop de dezvoltare: să studieze posibilitățile de programare pe exemplul unui Robot performer specific folosind mediul IDC; pentru a oferi abilități practice în lucrul cu interpretul.

Dezvoltare metodicăcompilat pentru lecțiile de informaticăExersează pe computer: lucrul cu executantul de antrenament al algoritmilor; elaborarea algoritmilor liniari, ramificati si ciclici pentru controlul executorului; compilare de algoritmi cu o structură complexă; utilizarea algoritmilor auxiliari (proceduri, subrutine).

Elevii ar trebui să știe:

  • ce este un interpret; SKI Robot, mediu de performer robot;
  • ce este un algoritm;care sunt principalele proprietăți ale algoritmului;
  • metode de scriere a algoritmilor: diagrame bloc, limbaj algoritmic educațional;construcții algoritmice de bază: urmărire, ramificare, buclă; structurilor
  • algoritmi; ⇒ atribuirea algoritmilor auxiliari; tehnologii pentru construirea de algoritmi complecși:

Elevii ar trebui să fie capabili să:

  • să înțeleagă descrierile algoritmilor în limbajul algoritmic educațional;
  • urmăriți algoritmul pentru un interpret binecunoscut;
  • compune algoritmi de control liniar, ramificat și ciclic pentru Robotul executant; evidențiați subsarcinile; definiți și utilizați algoritmi de ajutor.

Lecția 1 (2 ore) Lecția 1.

Robotul artistului.Sistemul de comandă al executorului.

Planul lecției.

  1. Descrierea SKI-ului interpretului, a mediului în care acesta se află.

2. Analiza algoritmilor tipici Robotului.

În timpul orelor.

Luați în considerare descrierea interpretului.

Mediul artistului: Performer Robotul este capabil să navigheze într-un labirint desenat pe un plan împărțit în celule.

Robot de schi : comenzi simple: sus, jos, stânga, dreapta, pictează peste.

Comenzi booleene: (verificarea condiției)

sus liber jos liber

stânga liberă dreapta liberă.

Conective logice: AND, NOT, SAU:

Exemplu: (Nu este lăsat liber) sau (Nu este liber în dreapta)

Comanda de filială: comanda bucla:

Dacă condiția apoi nts în timp ce starea

Seria de comenzi seria de comenzi

toate kts

(În CMM-urile din 2009, comenzile Robotului diferă de cele cu care erau obișnuiți pentru copii, ceea ce a dus la confuzie :)

Comanda de filială: comanda bucla:

Dacă condiția apoi nts în timp ce condiția este de făcut

Seria de comenzi seria de comenzi

sfârşitul sfârşitului

Vedere generală a ferestrei programului Kumir. Mediul grafic al robotului:

În CMM-urile demo-ului din 2010, formatul de comandă a fost schimbat în obișnuit

Procedura de creare a algoritmului:

1.Echipe Instrumente - Editați mediul de porniretrageți pereți pe câmpul Robot și setați robotul în poziția inițială.

2.Echipe Robot - Schimbă mediul de pornirepăstrează noul mediu.

3.Echipe Inserare - Utilizați robotprecizați executorul.

4. În fereastra documentului, notați algoritmul folosind meniul Introduce.

5.Executarea comenzilor - executați continuu (sau pas cu pas) pentru a rula algoritmul.

6. Luați în considerare rezultatul execuției algoritmului și, dacă este necesar, depanați-l.

Lecția 1 (2 ore) Lecția 2.

Munca practica "Întocmirea algoritmilor liniari”.

Sarcini: 1. Robot într-un punct arbitrar al câmpului. Pictați peste celula de deasupra, dedesubt și în dreapta poziției inițiale.

  1. Un robot într-un punct arbitrar al câmpului. Mutați robotul 4 celule la dreapta pictând peste ele.
  2. Creați un nou mediu de pornire desenând un pătrat cu o latură de 4 celule pe tablă. Salvați setarea ca punct de plecare.
  3. Creați un nou mediu de pornire desenând un coridor cu pasarele în pereții câmpului. Salvați mobilierul ca obst2.fil. Schimbați mediul de pornire în cel nou creat.

Lecția 2 (2 ore) Lecția 1.

Temă : Ramificarea si rafinarea secventiala a algoritmului.

Analiza sarcinilor CMM folosind performerul Robot.

utilizați robotul

alg Kim 2009

din timp

dacă nu liber de jos

apoi corect

toate

dacă nu liber de jos

apoi corect

toate

dacă nu liber de jos

apoi corect

toate

con

utilizați robotul

alg Kim 2010

din timp

dacă nu liber de jos

apoi corect

toate

dacă nu liber de jos

apoi corect

toate

dacă nu liber de jos

apoi corect

toate

con

NS. sclav. nr. 14. Compilarea și depanarea algoritmilor de ramificare

Sarcini. Vezi atașament.

Lecția 3. Algoritmi ciclici. Lecția 1-2

Ţintă: să dezvăluie esența conceptului de ciclu în algoritmi, să arate formele de înregistrare a ciclurilor în algoritmi, să ofere abilități de creare și înregistrare a algoritmilor ciclici.

NS. sclav. nr. 15. Compilarea și depanarea algoritmilor ciclici

1. Realizați un algoritm care pictează toate celulele interioare adiacente peretelui.

utilizați robotul

alg

din timp

nts în timp ce în dreapta este liber

vopsea peste; La dreapta

kts

nts până când partea de jos este liberă

vopsea peste; mult mai jos

kts

nts până când partea de jos este liberă

vopsea peste; La stânga

kts

con

2. Realizați un algoritm care pictează toate celulele dintre Robot și perete. Distanța până la zid este necunoscută.

utilizați robotul

alg

din timp

nts în timp ce în dreapta este liber

La dreapta; vopsea peste

kts

con

3. Realizați un algoritm care pictează toate celulele dintre cei doi pereți.

utilizați robotul

alg uch3

din timp

nts până (nu de sus liber) sau (nu de jos liber)

La dreapta

dacă (nu este liber de sus) și (nu de jos gratuit)

atunci

vopsea peste

toate

kts

con

4. Realizați un algoritm care pictează toate celulele din jurul peretelui dreptunghiular.

alg uch4

din timp

vopsea peste; sus

nts nu sunt încă liberi

vopsea peste; sus;

kts

vopsea peste; corect

nts până când partea de jos este liberă

vopsea peste; dreapta;

kts

vopsea peste; jos

nts nu sunt încă lăsați liberi

vopsea peste; jos;

kts

vopsea peste; stânga

nts până când vârful este liber

vopsea peste; La stânga;

kts

con

utilizați robotul

alg uch5

din timp

La dreapta

nts până când partea de jos este liberă

vopsea peste; La dreapta

kts

vopsea peste; mult mai jos

nts până acum lăsat liber

vopsea peste; La stânga

kts

nts nu sunt încă lăsați liberi

vopsea peste; mult mai jos

kts

vopsea peste; stânga; picta peste; sus;

nts până când vârful este liber

vopsea peste; sus

kts

nts până când vârful este liber

vopsea peste; La stânga

kts

con

Lecția 4 Lecția 1

Algoritmi de ajutor.

Ţintă: introducerea conceptului de algoritmi principali și auxiliari; explicați regulile de utilizare a algoritmului auxiliar; dezasamblați exemple de algoritmi folosind auxiliarul.

Planul lecției

1. Introducerea de noi termeni (algoritm principal și auxiliar, apel) și explicarea noilor concepte.

2. Analiza exemplelor de rezolvare a problemelor folosind un algoritm auxiliar.

Când rezolvați unele probleme, este convenabil să le împărțiți în subsarcini mai mici, fiecare dintre acestea putând fi formalizate ca un algoritm independent. În acest caz, în primul rând, se elaborează un așa-numit algoritm principal, în care apelurile de algoritmi auxiliari sunt folosite pentru a rezolva subsarcinile, care sunt adăugate ulterior. Această soluție se numeșteprin metoda rafinarii secventiale.Permite unui grup de programatori să lucreze la un proiect, fiecare rezolvându-și propria sarcină secundară.

În procesul de rezolvare a problemei, fiecare algoritm auxiliar poate fi, dacă este necesar, împărțit în algoritmi auxiliari mai mici.

Se apelează comanda pentru executarea algoritmului auxiliar provocare și este scris în corpul algoritmului principal.

Unul și același algoritm poate fi considerat principal și auxiliar în raport cu alți algoritmi. Într-un limbaj algoritmic, algoritmul principal este mai întâi scris, urmat de altele auxiliare mai jos.

Sarcina 1:

Robotul se află în colțul din stânga sus al câmpului. Nu există pereți sau celule pictate. Creați un algoritm folosind unul auxiliar care desenează patru cruci pe o linie orizontală. Poziția finală a robotului poate fi arbitrară.

Soluţie

Analizarea pe tablă:

Sarcina 2. Robotul se află în colțul din stânga sus al câmpului. Nu există pereți sau celule pictate. Realizați un algoritm care pictează un pătrat de 8 x 8 într-un model de șah. Poziția finală a robotului poate fi arbitrară.

Lecția 4 Lecția 2

Lucrare practică pe computer „Rezolvarea problemei folosind algoritmi auxiliari”.

Ţintă : pentru a insufla abilități practice în construirea algoritmilor prin metoda rafinării secvențiale.

Planul lecției

1. Sarcina are loc complet pe PC. Elevii primesc sarcini și le execută în mediul software Kumir. Rezultate Lucrarea este salvată ca fișiere pentru verificare ulterioară.

Sarcina 1 ... Robotul se află în colțul din stânga jos al câmpului. Nu există pereți sau celule pictate. Realizați un algoritm care pictează 6 dungi verticale de aceeași lungime în 6 celule. Poziția finală a robotului poate fi arbitrară.

Sarcina 2 Folosind cele auxiliare, creați un algoritm pentru pictarea celulelor care formează numărul 1212.

Teme pentru acasă: Vino cu un algoritm care desenează următoarea imagine: Utilizați doi algoritmi de ajutor pentru a rezolva problema.

Lecția 5 Lecția 1-2

Test

„Elaborarea unui algoritm în mediul executorului robot”.

Ţintă: verifica cunostintele acumulate cu privire la crearea si capacitatea de analiza a algoritmilor in mediul software Kumir.

Misiuni pentru munca de testare sunt împărțite pe nivele de dificultate și includ 3 sarcini cu un executor Robot (sarcinile 1 și 2 — pentru ramificare și bucle, sarcina 3 — pentru utilizarea unui algoritm auxiliar.) Textele temelor sunt date în anexă.

Setările inițiale și finale și algoritmii creați sunt înregistrate ca fișier.

Nota este stabilită în funcție de nivelul de dificultate al sarcinii. Studentul are dreptul de a alege el însuși tipul de temă.

Și astăzi vom vorbi despre cicluri. Să ne dăm seama ce este un ciclu și cum să învățăm cum să executăm algoritmii ciclici ai robotului nostru.

Asa de, ce este un ciclu? Imaginează-ți că suntem la o lecție de educație fizică și ne confruntăm cu o sarcină face 7 genuflexiuni... Această sarcină poate fi formulată ca un algoritm liniar și apoi va arăta cam așa:

fă o ghemuială

fă o ghemuială

fă o ghemuială

fă o ghemuială

fă o ghemuială

fă o ghemuială

fă o ghemuială

Adică am repetat comanda de ghemuit de 7 ori. Are sens să scrii 7 comenzi identice? Poate fi mai ușor să dai o comandă face 7 genuflexiuni? Desigur, este mai ușor și mai corect. Acesta este ciclul... Tu însuți poți să-ți amintești exemple de cicluri din viață - există destul de multe dintre ele.

Prin urmare algoritm liniar , unde se repetă aceleași comenzi, putem emite la fel de algoritm ciclic - ca asta:

repeta de 7 ori

fă o ghemuială

sfârşitul ciclului

Deci, în limbajul inventat de noi, am proiectat ciclul. Artistul Robot are, de asemenea, capacitatea de a înregistra bucle. În plus, ciclurile sunt diferite... Opțiunea pe care tocmai am luat-o în considerare este numită contraciclu sau buclă cu parametru.

Tipuri de cicluri.

Bucla cu contor.

Ciclu cu contor se foloseste cand se stie dinainte cate repetari trebuie facute. În exemplul de ghemuit de mai sus, acesta este exact cazul.

Pentru a scrie o buclă cu un numărător pentru executor, trebuie să-i cunoașteți sintaxa. Și el este așa:

nts<numărul de repetări> ori

<команда 1>

<команда 2>

<команда n>

Aici trebuie sa indicam numarul de repetari (numarul) si comenzile care vor fi repetate. Comenzile care sunt repetate în buclă sunt apelate corpul ciclului.

Să aruncăm o privire la asta cu un exemplu.

Inițial, Robotul era în cușca din stânga sus.

Să începem prin a rezolva problema liniar. În acest caz, vom picta peste celula curentă și vom muta 1 celulă la dreapta, iar programul va arăta astfel:
utilizați robotul
alg
din timp

vopsea peste

La dreapta

vopsea peste

La dreapta

vopsea peste

La dreapta

vopsea peste

La dreapta

vopsea peste

La dreapta

vopsea peste

La dreapta

vopsea peste

La dreapta

După cum puteți vedea, comenzile pentru a picta peste și în dreapta sunt repetate de 7 ori. Să rescriem acum programul folosind o buclă. Apropo, pentru a introduce un ciclu în programul dvs., puteți merge la meniu Introduce selectați elementul nts-o dată-kts sau apăsați una dintre combinațiile de taste Esc, P(litera rusă P) sau Esc, H(litera latină H). în plus tastele trebuie apăsate secvenţial- mai întâi Esc, eliberați-l și abia apoi P sau H.

Deci, al nostru program în buclă va arata asa:

utilizați robotul

nts de 7 ori

vopsea peste

La dreapta

Dacă îl rulăm, vom vedea că rezultatul este același - 7 celule umplute. Totuși, programul a devenit mai scurt și mult mai inteligent din punct de vedere algoritmic!

Ca încălzire și consolidare, îmi propun să scriem independent un program pentru Robot, care va desena un pătrat cu o latură de 7 celule. În mod firesc, folosind o buclă. Astept o solutie in comentarii.

Bucla cu condiție.

Când rezolvați problema 19 a GIA în informatică cu un robot, nu va funcționa să folosiți o buclă cu un contor. Deoarece câmpul este de obicei infinit și pereții nu au o lungime anume. Prin urmare, nu vom putea determina numărul de repetări pentru o buclă cu un contor. Dar nu contează - ne va ajuta buclă condiționată.

Să revenim la educația fizică și să schimbăm problema. La urma urmei, cineva poate să nu facă 7 genuflexiuni, în timp ce altul este capabil să facă 27. Poate fi luat în considerare acest lucru la crearea unui ciclu? Desigur. Numai că acum nu vom folosi un numărător (numărul de repetări), ci o condiție. De exemplu, în timp ce nu ești obosit, fă genuflexiuni. În acest caz, persoana nu va face un anumit număr de genuflexiuni, ci se va ghemui până când obosește. Și bucla noastră într-un limbaj abstract va arăta astfel:

in timp ce nu obosit

fă o ghemuială

sfârşitul ciclului

Cuvintele nu sunt obosite în cazul nostru - aceasta este o condiție. Când este adevărat, bucla este executată. Dacă este fals (obosit), corpul buclei nu va fi executat. Robotul executor are mai multe condiții

liber de sus

de jos liber

lăsat liber

drept liber

peretele de sus

peretele de jos

peretele stâng

peretele drept

Dar în condiția problemei 19 din GIA sunt indicate doar primele 4. Deci le vom folosi doar pe ele.

Acum să rezolvăm următoarea problemă pentru Robot - trageți o linie verticală de la marginea stângă la dreapta câmpului folosind o buclă condiționată. Inițial, robotul este în colțul din stânga sus.

Să formulăm mai întâi un algoritm verbal - adică să descriem în cuvinte ce trebuie să facă Robotul. Acest algoritm va suna cam așa:

« În timp ce sunteți în dreapta, faceți liber un pas spre dreapta și pictați peste cușcă. »

Drept urmare, Robotul va alerga prin toate celulele din dreapta și va picta peste ele până când va apărea un perete în dreapta.

Codul sursă pentru programul nostru Robot va fi cam așa:

utilizați robotul

nts în timp ce în dreapta este liber

La dreapta

vopsea peste

Ca rezultat al executării acestui program, vom vedea următoarea imagine:

Hirianov Timofei Fedorovich

Principalele construcții algoritmice, pe lângă operațiile elementare descrise de un element al circuitului, sunt execuția și ciclurile alternative. Există două opțiuni pentru programarea execuției alternative și există trei tipuri principale de ciclu.

Cod executabil condiționat

Unele operațiuni pot fi supuse operator condițional... Atunci ele vor fi îndeplinite numai dacă această condiție este adevărată.

dacă<условие>
atunci
<действия>
toate

Alternativă

Într-o diagramă, o verificare a stării poate servi drept ghid pentru selectarea operațiunilor alternative. Adică, dacă condiția este adevărată, execuția va urma o traiectorie, iar dacă este falsă, atunci alta. În limba Kumir, un ciclu cu o precondiție are următoarea formă:

dacă<условие>
atunci
<действия>
in caz contrar
<альтернативные действия>
toate


Condiții pentru robot:
peretele stâng
peretele drept
peretele de jos
peretele de sus
celula este vopsită peste
lăsat liber
drept liber
de jos liber
liber de sus
cușca este curată

Buclă cu precondiție

O buclă cu o precondiție este o buclă care este executată atâta timp cât o anumită condiție specificată înainte de începutul ei este adevărată. Această condiție este verificată înainte ca corpul buclei să fie executat, astfel încât corpul să nu fie executat nici măcar o dată (dacă condiția este falsă de la bun început). În majoritatea limbajelor de programare procedurală, este implementat de instrucțiunea while, de unde și al doilea nume - while-loop. În limba Kumir, un ciclu cu o precondiție are următoarea formă:

nc la revedere<условие>
<тело цикла>
kts

Bucla cu postcondiție

O buclă cu o postcondiție este o buclă în care condiția este verificată după ce corpul buclei este executat. De aici rezultă că corpul este întotdeauna executat cel puțin o dată. În Pascal, această buclă implementează operatorul repeat..until, în C - do ... while.
În limba Kumir, o buclă cu o postcondiție arată astfel:

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

Ciclu cu contor

O buclă cu un numărător este o buclă în care o variabilă își schimbă valoarea de la o valoare inițială dată la valoarea sa finală cu un anumit pas, iar pentru fiecare valoare a acestei variabile, corpul buclei este executat o dată. În majoritatea limbajelor de programare procedurală, este implementat de operator pentru, care indică contorul (așa-numita „variabilă ciclului”), numărul necesar de treceri (sau valoarea limită a contorului) și, eventual, pasul cu care se modifică contorul. În limba Kumir, o buclă cu un contor arată astfel:

intact
nts pentru a de la 0 la 9
... corpul buclei
kts

Diferite limbaje de programare rezolvă problema valorii unei variabile la sfârșitul unei bucle în care această variabilă a fost folosită ca contor în moduri diferite.

Carduri de sarcini

    Găsiți printre n numere întregi introduse de la tastatură numărul de negative

    Sunt date două numere arbitrare. În timp ce produsul lor este mai mic de 100, creșteți fiecare număr cu 2 și afișați numerele finale pe monitor

    N numere întregi sunt introduse secvenţial. Găsiți numărul de cinci într-o succesiune

    N numere întregi sunt introduse secvenţial. Găsiți diferența dintre valorile maxime și minime ale numerelor date

    Găsiți printre n numere întregi introduse de la tastatură numărul de negative

    Sunt date două numere arbitrare. În timp ce produsul lor este mai mic de 100, creșteți fiecare număr cu 2 și afișați numerele finale pe monitor

    N numere întregi sunt introduse secvenţial. Găsiți numărul de cinci într-o succesiune

    N numere întregi sunt introduse secvenţial. Găsiți diferența dintre valorile maxime și minime ale numerelor date

    Găsiți printre n numere întregi introduse de la tastatură numărul de negative

    Sunt date două numere arbitrare. În timp ce produsul lor este mai mic de 100, creșteți fiecare număr cu 2 și afișați numerele finale pe monitor

    N numere întregi sunt introduse secvenţial. Găsiți numărul de cinci într-o succesiune

    N numere întregi sunt introduse secvenţial. Găsiți diferența dintre valorile maxime și minime ale numerelor date

    Găsiți printre n numere întregi introduse de la tastatură numărul de negative

    Sunt date două numere arbitrare. În timp ce produsul lor este mai mic de 100, creșteți fiecare număr cu 2 și afișați numerele finale pe monitor

    N numere întregi sunt introduse secvenţial. Găsiți numărul de cinci într-o succesiune

    N numere întregi sunt introduse secvenţial. Găsiți diferența dintre valorile maxime și minime ale numerelor date