Algoritmi ciclici

Când scrieți un program, poate fi necesar să repetați grupul de instrucțiuni specificat de mai multe ori. De exemplu, să trasăm o grilă de 13 linii pe ecran.







Desigur, puteți scrie 13 declarații LINE în program. dar este prea lung, și apoi, dacă vrem să schimbați dimensiunea grilă sau numărul de linii în ea, este, la rândul său, va fi foarte dificil și incomod. În astfel de cazuri, este mai ușor să se utilizeze construcțiile de buclă. În Basic, există mai multe construcții de buclă pentru repetarea unui anumit grup de declarații.

Luați în considerare:

Ciclul FOR-NEXT

FOR counter = start THEN final [etapa STEP]
operatori
NEXT contra

Această construcție este concepută pentru executarea mai multor declarații între liniile FOR și NEXT. Un contor de buclă este utilizat pentru a determina de câte ori să repetați acești operatori. Contorul este o variabilă, care la începutul ciclului este atribuită o valoare definită de începutul expresiei. Mai mult, operatorii incluși în buclă sunt executați, iar contorul este incrementat de valoarea determinată de expresia pasului. Dacă noua valoare a contorului nu depășește valoarea sfârșitului expresiei, atunci operatorii sunt executați din nou și contorul este incrementat de pasul specificat. Aceasta continuă până când valoarea Counter este mai mare decât valoarea sfârșitului expresiei. În acest moment, ciclul se termină și se execută instrucțiunile următoare. Dacă lipsește cuvântul STEP, se presupune pasul 1.

Deci, când conduci un ciclu

PENTRU K = 1-10 PASUL 2
• • •
NEXT K

Pentru a contracara va lua succesiv valorile 1, 3, 5,7, 9, 11, următoarea valoare este deja mai mare decât valoarea finală 10 și pentru K = 11 ciclul nu va fi realizată. Astfel, acest ciclu este executat de 5 ori. Dacă PASUL 2 este setat în loc de STEP 2. atunci ciclul va fi executat pentru valorile K = 1,5,9, adică de trei ori.

Puteți specifica un pas negativ. Apoi valoarea inițială nu trebuie să fie mai mică decât valoarea finală, iar valoarea contorului va scădea. Astfel, ciclul







PENTRU M = 10 LA -4 PASUL -3
• • •
NEXT M

va fi satisfăcut pentru M = 10,7,4,1, -2, următoarea valoare -5 părăsește limitele [-4,10] și pentru aceasta ciclul nu mai este satisfăcut.

Pentru a desena o grilă, poți, cu un pas dat, să traversezi coordonatele de-a lungul cărora să desenezi linii orizontale și verticale.

Aceasta va produce următorul program:

SCREEN 9
REM-urile pentru grupele x și y
DX = 10. DY = 10
REM linii orizontale
PENTRU Y = 0 până la 80 PASUL DY
LINE (0, Y) - (100, Y), 15
NEXT Y
REM verticale
PENTRU X = 0 LA 100 PASUL DX
LINE (X, 0) - (X, 80), 15
NEXT X
END

Prin specificarea diferitelor valori ale DX și DY, puteți obține rețele cu distanțe diferite între linii.

Notă.

SCREEN 9
REM-urile pentru grupele x și y
DX = 10. DY = 10
Numărul de linii REM
NX = 10. NY = 8
REM calculează coordonatele ultimelor linii
LASTX = NX * DX. LASTY = NY * DY
REM linii orizontale
PENTRU Y = 0 până la LASTY STEP DY
LINIE (0, Y) - (LASTX, Y), 15
NEXT Y
REM verticale
PENTRU X = 0 LA LASTX STEP DX
LINE (X, 0) - (X, LASTY), 15
NEXT X
END

Scrieți programe care utilizează FOR-NEXT cicluri pentru a afișa desene similare:

Linii de ventilație, Linii

Glisante pe ghidaje

Uneori nu se știe în avans de câte ori este necesar să se repete ciclul, dar se știe că trebuie efectuată în timp ce o anumită condiție este adevărată. În astfel de cazuri, este dificil să utilizați buclă FOR-NEXT. Dar puteți aplica o altă construcție de buclă.

Cu condiția
operatori
WEND

Semnificația acestui design este destul de simplă. Mai întâi, condiția este verificată dacă este adevărată, atunci operatorii sunt executați. WHILE și WEND. După aceasta, condiția este verificată din nou și din nou, operatorii sunt executați și așa mai departe până când situația este încălcată. Când programați buclă WHILE-WEND, trebuie să vă asigurați că situația bucla este încălcată vreodată. în caz contrar, acest ciclu nu-și poate termina niciodată munca - programul va rămâne blocat.

Un exemplu tipic al unui program:

A = 1
CÂND A> 0
A = 2
WEND

Aici, A rămâne întotdeauna egal cu 2, iar inegalitatea A> 0 se dovedește întotdeauna valabilă - ciclul se extinde pe o perioadă nedeterminată.

În FOR-NEXT și WHILE-WEND cicluri de mult în comun. În special, un program cu o buclă FOR-NEXT poate fi întotdeauna rescris utilizând buclă WHILE-WEND. Deci, următoarele două programe fac exact același lucru.

A = 1 PENTRU 1 = 1 LA 10 PASUL 2 I = 1
A = A + I
NEXT I A ​​= A + I

Cu toate că eu<=10
I = I + 2
WEND

Scrieți programe care utilizează ciclul WHILE-WEND pentru a afișa imagini similare.

Următoarele linii drepte sunt de 1,1 ori mai departe de marginea din stânga a ecranului decât cea anterioară; Ciclul continuă atât timp cât liniile se află în limitele ecranului; Radiunile acestor cercuri concentrice se schimbă neuniform.







Articole similare

Trimiteți-le prietenilor: