Acest tip de operator de buclă este apelat
Instrucțiuni între început și sfârșit. sunt executate de câte ori determină expresia [(End Value - Initial Value) + I].
Aceasta corespunde tuturor valorilor contorului de la primul la ultimul inclusiv.
Dacă valoarea inițială este mai mare decât valoarea finală. instrucțiunile dintre început și sfârșit nu sunt executate o singură dată.
De exemplu, executarea unei buclă - un fragment al programului:
Pentru i: = 10 la 14 scrie (i: 3);
va afișa o secvență de cifre în forma:
Opțiunea 2 (cu o scădere a contorului).
Instrucțiuni între început și sfârșit. sunt executate de câte ori determină expresia [(Initial Value - End Value) + I].
Dacă valoarea inițială este mai mică decât valoarea finală. instrucțiunile dintre început și sfârșit nu sunt executate o singură dată.
De exemplu, executarea unei buclă - un fragment al programului:
Pentru i: = 14 downto 10 scrie (i: 3);
va afișa o secvență de cifre în forma:
Dacă variabila contor are un tip char char, atunci operatorul:
Pentru ch: = 'a' la 'e' scrie (ch: 2);
afișează o succesiune de litere în forma:
Pentru ch: = 'e' downto 'a' nu scrieți (ch: 2);
afișează o succesiune de litere în forma:
Rețineți că bucla pentru este utilă pentru organizarea ieșirii datelor de program. Împreună cu instrucțiunea if și funcția readln, permite ieșirea paginată.
De exemplu, în timpul următorului ciclu, programul va întrerupe ieșirea după umplerea ecranului cu coloana numărului înainte de a apăsa tasta.
pentru i: = 1 până la 50 nu
începe
writeln (i);
dacă i mod 24 = 23 atunci readln;
se încheie;
• Instrucțiunea (instrucțiunea) pentru se folosește pentru a organiza bucle cu una fixă. un număr de repetiții cunoscute sau determinate în timpul execuției programului;
• numărul de repetări ale ciclului este determinat de valorile inițiale și finale ale contra-variabilei. Instrucțiunea for asigură că corpul buclă este executat până când toate valorile parametrului buclă sunt epuizate: de la inițială la definitivă;
• Calculatorul variabil trebuie să fie de tipul ordinului. mai des - întreg. mai puțin frecvent - char, boolean sau unul dintre tipurile personalizate (vezi secțiunea 2.1.2). Utilizarea unui tip real nu este permisă;
• valorile de început și de sfârșit ale parametrului bucla pot fi constante, variabile, expresii și trebuie să aparțină aceluiași tip de date. Valorile de început și de sfârșit ale parametrului bucla nu pot fi modificate în timpul executării buclei;
• după sfârșitul normal al instrucțiunii for, valoarea parametrului bucla este egală cu valoarea finală. Dacă instrucțiunea for nu este executată, valoarea parametrului bucla este nedefinită;
• parametrul pentru buclă pentru buclă se poate schimba (crește sau descrește) de fiecare dată când corpul buclă este executat numai cu unul. Dacă aveți nevoie de un alt pas pentru a modifica parametrul, repetați și în timp ce buclele sunt preferate.
Un exemplu de instrucțiune for este prezentat în Listing 3.22, care afișează un tabel de conversie de la grade Celsius (C) la Fahrenheit (P) pentru valori de la 15 ° C la 30 ° C în incremente de 1 grad. Traducerea se face prin formula: F = C * 1,8 + 32.
Listing 3.22. Tabel de conversie de la grade Celsius la grade Fahrenheit
var
nbsp nbsp I: întreg;
nbsp nbsp F: real;
începe
nbsp nbspWriteln ("Temperatură");
nbsp nbspfor I: = 15-30
nbsp nbsp nbsp începe
nbsp nbsp nbsp nbsp F: = 1 * 1,8 + 32;
nbsp nbsp nbsp nbsp Writeln ('Celsius =', I, 'Fahrenheit =', F: 5: 2)
nbsp nbsp nbsp end;
end.
În blocul de descriere a variabilelor, este descris parametrul ciclului I de tip întreg și variabila F este temperatura reală a Fahrenheit-ului. Variabila I., pe lângă funcțiile variabilei de control, este o variabilă care stochează valorile integrate ale temperaturii la o scară Celsius. La începutul programului, pe ecran apare cuvântul "Temperatură". iar apoi operatorul de repetare afișează o tabelă de relații de temperatură în scalele Celsius și Fahrenheit. Masa este imprimată de operatorul Writeln (Tlo Celsius = ', 1,' Fahrenheit = ', F: 5: 2)
Ciclul se efectuează după cum urmează.
Primul apel către operatorul pentru evaluează parametrii inițiali (15) și finali (30), iar variabila inițială 15 este atribuită variabilei de control I.
Apoi se efectuează ciclic:
1. Se verifică starea I.30 Operatorul corpului de buclă nu este executat, iar controlul din program este trecut dincolo de instrucțiunea for. în exemplul nostru, declarația finală; Programul se închide.
3. Valoarea parametrului ciclului I este incrementată de una, iar controlul este trecut în antetul pentru buclă pentru a verifica starea.
Apoi ciclul se repetă din etapa 1.
Lista 3.23 conține programul "Testați prin tabelul de înmulțire", modificat astfel încât ea a cerut elevului exact cinci întrebări, iar la sfârșitul testului a făcut o evaluare a unui sistem cu cinci puncte. Firește, într-o astfel de afirmație a problemei, cea mai bună soluție va fi buclă.
Listing 3.23. Testul tabelului de înmulțire (varianta nr. 4)
utilizează CRT;
var s1, s2, deschidere, k, prav: integer;
începe
nbsp nbsp randomize; <инициализация датчика случайных чисел>
nbsp nbsp clrscr; <очистка экрана>
nbsp nbsp pentru k: = 1 la 5 nu
nbsp nbsp nbsp începe
nbsp nbsp nbsp nbsp s1: = aleatoriu (18) +2; s2: = aleatoriu (18) +2;
nbsp nbsp nbsp nbsp write ('Cât timp va fi', s1, '*', s2, '?'); readln (otvet);
nbsp nbsp nbsp nbsp dacă otvet = s1 * s2 atunci
nbsp nbsp nbsp nbsp nbsp începe
nbsp nbsp nbsp nbsp nbsp nbsp write ('Corect!'); prav: = prav + 1;
nbsp nbsp nbsp nbsp nbsp end
nbsp nbsp nbsp nbsp altceva scrie ("Invalid.");
nbsp nbsp nbsp end;
nbsp nbsp clrscr; <очистка экрана>
nbsp nbsp writeln ('Evaluarea ta:', prav); readln;
end.
Listing 3.24 conține un program care calculează media aritmetică și specifică numărul minim și maxim în secvența de numere reale introduse de la tastatură.
Listing 3.24. Determinarea mediei, minime și maxime într-un grup de numere
var
nbsp nbsp a: real; <очередное число>
nbsp nbsp n: integer; <количество чисел>
nbsp nbsp suma, media: reala; <сумма и среднее арифметическое>
nbsp nbsp min, max: real; <минимальное и максимальное число>
nbsp nbsp i: întreg; <счетчик цикла>
începe
nbsp nbsp write ('Introduceți numărul de numere de ordine:'); readln (n);
nbsp nbsp writeln ('Introduceți secvența');
nbsp nbsp scrie ('->'); readln (a); <вводим первое число последовательности>
nbsp nbsp <предположим, что:>
nbsp nbsp min: = a; <первое число является минимальным>
nbsp nbsp max: = a; <первое число является максимальным>
nbsp suma nbsp: = a;
nbsp nbsp <введем остальные числа>
nbsp nbsp pentru i: = 1 până la n-1
nbsp nbsp nbsp începe
nbsp nbsp nbsp nbsp scrie ('->'); readln (a);
nbsp nbsp nbsp nbsp suma: = suma + a;
nbsp nbsp nbsp nbsp dacă a max și max: = a;
nbsp nbsp nbsp end;
nbsp nbsp mediu: = suma / n;
nbsp nbsp writeln ('Număr de numere:', n);
nbsp nbsp writeln ("Media aritmetică: medie": 7: 3);
nbsp nbsp writeln ('Numărul minim:', min: 7: 3);
nbsp nbsp writeln ('Număr maxim:', max: 7: 3);
end.
Listingul 3.25 conține un program care calculează sumele parțiale ale termenilor n din seriile 1, -1/3, +1/5, -1/7, +. convergând la p / 4.
Listing 3.25. calculând suma parțială a termenilor seriei
var
nbsp nbsp x: real; <член ряда>
nbsp nbsp summ: real; <частичная сумма>
nbsp nbsp n: cuvânt; <количество суммируемых членов>
nbsp nbsp i: cuvânt; <счетчик цикла>
începe
nbsp nbsp write ('Introduceți numărul membrilor sumatori din serie:'); readln (n);
nbsp nbspx: = 1; summ: = 0;
nbsp nbsp pentru i: = 1 până la n
nbsp nbsp nbsp începe
nbsp nbsp nbsp nbsp summ: = suma + 1 / x;
nbsp nbsp nbsp nbsp dacă x> 0 atunci x: = - (x + 2) altfel x: = - (x-2);
nbsp nbsp nbsp end;
nbsp nbsp writeln ("Suma din seria:", summ: 10: 6);
nbsp nbspwriteln ("Valoare pi / 4:", pi / 4: 10: 6);
end.