Operatorii de-next

În limbajul BASIC, o pereche de operatori, oferind ciclul de construcție de același tip ca și în exemplul de mai sus (a se vedea. Sec. 3.3). Aceste declarații FOR și NEXT, care este delimitat de un grup de operatori care alcătuiesc corpul buclei. De exemplu, programul de mai sus le pot utiliza pentru a fi rescrisă ca

Linia 20 se angajează în mod automat de atribuire contor buclă valoarea inițială I 1 și I crește cu 1, după fiecare trecere prin bucla. Linia 60 marchează sfârșitul ciclului.

Toate declarațiile între operatorii și PENTRU NEXT executate atunci când am = 1, i = 2, I = 3 și așa mai departe până la I = N. După aceea, controlul este transferat la următoarea declarație operatorului NEXT. De aceea, în exemplul nostru vor fi introduse, transformate și imprimate valori ale temperaturii N, atunci ieșirile de program.

Acest program poate fi ilustrată prin schema de mai jos:

ENTER C F = C * F ... PRINT END

notații generale: pentru i = j sau k pentru a

unde i este o variabilă de comandă numerică, și j. k, m poate fi expresii numerice (m. e.

constante, variabile și combinații de variabile și constante).

Limita inferioară a ciclului inițiat de operator pentru, este operatorul NEXT i. Toate declarațiile între FOR și următoare sunt executate la

i = j, i = j + m, i = j + 2m, i = j + 3m, i =. până atunci, până când se atinge limita k.

Cu alte cuvinte, în cazul în care t este pozitiv, ciclul continuă până când tot timpul am ≤k. Dacă m este negativ, atunci ciclul continuă până i ≥k. Dacă o suplimentare STEP funcție cuvânt (pas) este absent, atunci mărimea pasului este presupusă a fi de 1 m.

Iată câteva exemple. program

10 pentru i = 1 până la 10

imprimă toate numerele de la 1 la 10, Programul

10 FOR K = 1 TO 10 PASUL 2

imprima toate numerele impare de la 1 la 10. Programul

30 FOR P = X + Y TO X * Y

Se imprimă valorile 5 și 6 și programul

10 FOR A = 10 TO 1 PASUL -1

Tastați numărul la 10 la 1, în ordine descrescătoare.

În multe sisteme, de exemplu de bază, Sinclair ZX81, dincolo de ciclul de control de evacuare se efectuează în conformitate cu standardul, la începutul ciclului. Prin urmare, performanța operatorilor

nimic nu se imprimă și se trece la linia 40. Aceasta corespunde unui exemplu al secțiunii de program. 3.3 și struktogramme „Se repetă până când“.

În alte sisteme cu bază, cum ar fi BBC, standardul nu este îndeplinită. Ciclul se efectuează cel puțin o dată, și verificarea finalizarea acestuia se face la sfârșitul anului. O astfel de abordare respectă programul modificat al secțiunii. 3.3 și struktogramma „Se repetă până când“. În acest caz, programul de mai sus va imprima 3.

In toate exemplele de mai jos, se presupune că bucla FOR-NEXT este implementat în conformitate struktogramme „Se repetă până când“, pentru că această opțiune oferă un standard pentru subsetul minim al limbajului BASIC. În cazul în care sistemul verifică condițiile de ieșire de 56

ciclu se efectuează la sfârșitul ciclului, este necesar să se utilizeze alte struktogrammoy, „Se repetă până când“ etichetare a acestuia în partea de jos a cuvântului oficial pentru. Nu se poate pasă de această distincție: provoacă modificări în rezultatele programului de lucru în timpul tranziției de la primul tip de sistem la sistemul de al doilea tip în aproximativ una dintr-o mie. Tocmai ai o idee, ceea ce face sistemul acestor două tipuri. Să ne dea câteva limitări. Nu modificați valoarea variabilei de control în interiorul buclei. Sistemul crește în mod automat valoarea acestei variabile, și verificați-l de fiecare dată prin bucla. Prin urmare, variabila de control nu apare în partea stângă a instrucțiunea let, în READ sau declarația INPUT, și nu ar trebui să fie utilizat ca o variabilă buclă imbricate de control. Mai jos sunt exemple de functionarea defectuoasa a variabilei manipulate:

10 pentru i = 1 până la 10

20 I = I + 1 (variabila de control I variază) 30 NEXT I

10 FOR A = 8 LA 2 PASUL 2

20 INPUT I, A (variabila manipulată conține o declarație INPUT)

Nu ar trebui să se bazeze pe faptul că, după eliberarea variabilei de control în buclă va avea o anumită valoare. În exemplul

10 FOR L = 1 TO 10

performanța liniei 40 pot fi imprimate 10,11 sau chiar un fel de prostii. Rezultatele vor fi diferite pentru diferite sisteme, deși subsetul minim de standard de bază se recomandă ca variabila de control după eliberarea seriei conține valoarea pe care le-ar fi avut în ciclul atunci când este continuarea unui alt pas.

Încercați în interiorul unei bucle pentru care nu se schimbă specificat în declarația de folosit în afara valorilor variabile de control, deși nu poate afecta performanța ciclului; de exemplu, programul

20 FOR I = A 4

50 NEXT I da rezultate corecte 2, 3 și 4.

Operatorul NEXT de forma generală: I NEXT

NEXT unde i - variabilă numerică.

Încheie ciclul FOR, cele mai multe versiuni de bază pentru fiecare operator pentru NEXT necesită o declarație separată, indicând numele variabilei de control. Cu toate acestea, în unele versiuni a permis utilizarea de următoarea instrucțiune fără a specifica numele variabilei de control, sau chiar (în cazul de bucle imbricate), indicând numele mai multor variabile de control.

Pentru a ieși din bucla FOR-NEXT, fără a aștepta finalizarea acestuia, sau se poate utiliza dacă operatorii GO TO. Cu toate acestea, acest lucru nu este recomandat ca o cale de ieșire din ciclul poate provoca neînțelegeri și, în plus, este de obicei imposibil să-i înfățișeze struktogrammoy. Și, în orice caz, nu se transferă de control în bucla FOR-NEXT, deoarece acest lucru poate duce la rezultate imprevizibile.

Sursa: B. Walsh în programare de bază: Per. din limba engleză. AM radio și comunicare, 1988. 336 cu: il.