· Calculatorul iese din bucla instrucțiunii de repetare atunci când condiția este adevărată, dar din buclă în timp - atunci când condiția este falsă.
· În timp ce nu poate executa declarația după ce a făcut. repetați cel puțin o dată operatorii care se află între repete și până când vor executa.
Deci, fragmentul k: = 8; repeta k: = 1 până la 3> 2; WriteLn (k) va imprima 1.
Și fragmentul k: = 8; în timp ce 2> 3 face k: = 1; WriteLn (k) va imprima 8.
· Când este compilată, instrucțiunea while produce un program ușor mai eficient decât declarația repetată.
Adesea, aceste diferențe pentru începători nu sunt foarte importante, deci alegeți un operator după cum doriți. De exemplu, m-am săturat de începutul și sfârșitul lui Paskalev, așa că sunt mai dispus să folosesc declarația repetată.
Operatorul pentru buclă
Rularea programului pentru tipărirea numerelor 3 5 7 9, instrucțiunea de repetare a efectuat ciclul de 4 ori. Același lucru a fost făcut și de declarația în timp. Cu toate acestea, de obicei, atunci când scriem repetări și în timp ce declarații, nu contează pentru noi de câte ori execută bucla. Cu toate acestea, există multe sarcini pentru care ciclul trebuie să fie efectuat exact de un anumit număr de ori. În acest caz, este convenabil să utilizați instrucțiunea for pentru buclă for.
Sarcina. De 200 de ori pentru a tasta cuvântul FOOTBALL.
Să încercăm să rezolvăm problema mai întâi cu operatorul goto. Să începem cu acest fragment:
metka: WriteLn ("FOOTBALL");
Mergi la metka
Dar aici ciclul se va repeta fără sfârșit și avem nevoie de doar 200 de ori. Am văzut deja că pentru a ieși din bucla, instrucțiunea geto trebuie inclusă în instrucțiunea if. În plus, avem nevoie de o variabilă care să își modifice valoarea de la un ciclu la altul. Să gândim această valoare pentru un nume, să zicem i. Cea mai simplă modalitate de a rezolva această problemă este:
Aici i este inițial 1, dar pentru fiecare execuție ulterioară a ciclului, acesta este incrementat cu 1. Prima dată când este executată instrucțiunea if, calculatorul verifică condiția 2<=200 и найдя его истинным, выполняет оператор goto metka. Во второй раз проверяется условие 3<=200 и т.д. В 199-й раз компьютер проверяет условие 200<=200 и найдя его истинным, выполняет оператор goto metka. В 200-й раз компьютер проверяет условие 201<=200 и найдя его ложным, выходит из цикла.
În fragmentul nostru, o singură linie de patru realizează o activitate "utilă" - WriteLn ("FOOTBALL"). Celelalte trei linii sunt ocupate asigurându-se că linia "utilă" este executată exact de 200 de ori. A trebuit să organizăm o variabilă specială, a cărei valoare la fiecare punct al executării programului indică timpul în care este executată buclă. O variabilă cu această proprietate se numește un contor de cicluri.
Acum vom scrie programul în întregime, cu toate acestea, oarecum ea complica, astfel încât logica punerii sale în aplicare este în deplină concordanță cu logica programului pentru operator, pe care îl citez în paralel și să explice imediat.
LABEL m1, m2; VAR i. integer; BEGIN i: = 1; m1: dacă i> 200, atunci am ajuns la m2; WriteLn ("FOOTBALL"); i: = i + 1; goto m1; m2: END.
VAR i. integer; BEGIN pentru i: = 1 până la 200 nu scrie WriteLn ('FOOTBALL') END.
Cuvântul pentru este citit "pentru", tradus "pentru". Cuvântul care este citit "la" este tradus "înainte". Cuvântul face este citit "doo", tradus "do". Construcția pentru i: = 1 până la 200 în rusă are următorul text: Pentru i, care variază de la 1 la 200, faceți afirmația după cuvântul "face". Semnificația repetiției este aceeași ca în declarația în timp. Operatorul stând după, bineînțeles, poate fi, de asemenea, compus.
Sintaxa pentru instrucțiunea for este:
PENTRU nume: = expression1 TO expression2 DO declarație
Exemplu de înregistrare: pentru j: = a + b la2 * s dok: = k + 1.
Explicații la sintaxă:
numele este numele unei variabile arbitrare a tipului ordinal (vezi 5.7 și 12.8), în special un număr întreg numit variabilă de buclă,
expresia1 și expresia2 sunt expresii arbitrare de ordin ordinal, în special, de un întreg.
Lucrarea declarației:
Mai întâi, expresia 1 este evaluată, iar variabila buclă (să fie i) i se atribuie valoarea ei. Apoi, expresia 2 este evaluată și comparată cu i. Dacă i> a expresiei2, atunci instrucțiunea for completează lucrarea sa, deci nu se face nimic. În caz contrar, operatorul este executat după executarea acestuia. După ce această instrucțiune este executată, valoarea lui i este incrementată cu 1 și comparată din nou cu expresia2. Dacă i> a expresiei2, atunci instrucțiunea for completă lucrarea, în caz contrar operatorul care urmează după ce execută din nou, i mărește din nou cu 1, etc.
În exemplul nostru, variabila i, pe lângă faptul că ne oferă o ieșire din bucla, nu face nici o muncă "utilă". Să complicăm puțin sarcina. Permiteți computerului să tipărească aceste informații:
10 FOTBAL 11 FOTBAL 12 FOTBAL. 200 FOTBAL
Aici, după ce este deja un operator compus.
Este convenabil să utilizați instrucțiunea pentru a tipări această informație ?:
100 FOTBAL 99 SOCCER FOOTBALL 98 FOTBAL. 40 FOTBAL
Complet, deoarece instrucțiunea pentru vă permite nu numai să crească, dar și să reduceți variabila buclă. Cu toate acestea, este imposibil de a scrie pentru i: = 40 până la 100, și trebuie să scrie pentru i: = 100 downto 40. Citește downto - „„îmblânzi“, literalmente tradus«până la». În consecință, pentru a ieși din buclă, condiția i> a expresiei 2 nu ar trebui să fie adevărată, iar condiția i <выражения2.
Aici este sintaxa combinată pentru instrucțiunea for:
PENTRU nume: = expresie1 LA DOWNTO expresie2 declarație DO
Linia verticală dintre cele două elemente ale designului TO și DOWNTO indică faptul că unul dintre aceste elemente trebuie să fie prezent în structură.
Sarcina 42: Imprimați folosind instrucțiunea pentru:
Numar direct: -5 -4 -3 -2 -1 0 1 2 3 4 5 Numar invers: 5 4 3 2 1 0 -1 -2 -3 -4 -5 Sfarsitul contului