оператор for

Цей вид оператора циклу називають

Інструкції між begin і end. виконуються стільки разів, скільки визначає вираз [(КонечноеЗначеніе - НачальноеЗначеніе) + I].

Це відповідає всім значенням лічильника від початкового до кінцевого включно.

Якщо НачальноеЗначеніе більше, ніж КонечноеЗначеніе. то інструкції між begin і end не виконуються ні разу.

Наприклад, виконання циклу - фрагмента програми:

For i: = 10 to 14 do write (i: 3);

виведе на екран послідовність цифр у вигляді:

Варіант 2 (зі зменшенням лічильника).

Інструкції між begin і end. виконуються стільки разів, скільки визначає вираз [(НачальноеЗначеніе - КонечноеЗначеніе) + I].

Якщо НачальноеЗначеніе менше, ніж КонечноеЗначеніе. то інструкції між begin і end не виконуються ні разу.

Наприклад, виконання циклу - фрагмента програми:

For i: = 14 downto 10 do write (i: 3);

виведе на екран послідовність цифр у вигляді:

Якщо змінна-лічильник має символьний char тип, то оператор:

For ch: = 'a' to 'e' do write (ch: 2);

виведе на екран послідовність літер у вигляді:

For ch: = 'e' downto 'a' do write (ch: 2);

виведе на екран послідовність літер у вигляді:

Зверніть увагу - цикл for зручно використовувати для організації виведення даних програми. Разом з оператором if і функцією readln він дозволяє виконати посторінковий висновок.

Наприклад, при виконанні наступного циклу програма буде припиняти висновок після заповнення екрану стовпцем цифр до натискання клавіші.

for i: = 1 to 50 do
begin
writeln (i);
if i mod 24 = 23 then readln;
end;

• оператор (інструкція) for використовується для організації циклів з фіксованим. заздалегідь відомим або визначеним під час виконання програми числом повторень;

• кількість повторень циклу визначається початковим і кінцевим значеннями змінної-лічильника. Оператор for забезпечує виконання тіла циклу до тих пір, поки не будуть перебрані всі значення параметра циклу: від початкового до кінцевого;

• змінна-лічильник повинна бути порядкового типу. частіше - integer. рідше - char, boolean або одного з призначених для користувача типів (див. розд. 2.1.2). Використання дійсного типу неприпустимо;

• початкове і кінцеве значення параметра циклу можуть бути константами, змінними, виразами і повинні належати до одного й того ж типу даних. Початкове і кінцеве значення параметра циклу не можна змінювати під час виконання циклу;

• після нормального завершення оператора for значення параметра циклу дорівнює кінцевому значенню. Якщо оператор for не виконувався, значення параметра циклу не визначено;

• параметр циклу for може змінюватися (збільшуватися або зменшуватися) кожен раз при виконанні тіла циклу тільки на одиницю. Якщо потрібен інший крок зміни параметра, краще цикли repeat і while.

Прикладом дії оператора for може служити лістинг 3.22, який виводить на екран таблицю перекладу з градусів за шкалою Цельсія (С) в градуси за Фаренгейтом (Р) для значень від 15 ° С до 30 ° С з кроком 1 градус. Переклад здійснюється за формулою: F = С * 1.8 + 32.

Лістинг 3.22. Таблиця переведення з градусів за шкалою Цельсія в градуси за Фаренгейтом

var
nbsp nbsp I: integer;
nbsp nbsp F: real;
begin
nbsp nbspWriteln ( 'Температура');
nbsp nbspfor I: = 15 to 30 do
nbsp nbsp nbsp begin
nbsp nbsp nbsp nbsp F: = 1 * 1.8 + 32;
nbsp nbsp nbsp nbsp Writeln ( 'За Цельсієм =', I, 'по Фаренгейту =', F: 5: 2)
nbsp nbsp nbsp end;
end.

У блоці опису змінних описані параметр циклу I типу integer і змінна F - температура за Фаренгейтом типу real. Мінлива I. крім функцій керуючої змінної, є змінною, що зберігає цілочисельні значення температури за шкалою Цельсія. На початку виконання програми на екран виводиться напис 'Температура'. а потім оператором повтору виводиться таблиця співвідношення температури в шкалах Цельсія і Фаренгейта. Друк таблиці виконується оператором Writeln (Tlo Цельсієм = ', 1,' по Фаренгейту = ', F: 5: 2)

Цикл виконується таким чином.

При першому зверненні до оператора for обчислюються значення початкового (15) і кінцевого (30) параметрів циклу, і керуючої змінної I присвоюється початкове значення 15.

Потім циклічно виконується наступне:

1. Перевіряється умова I 30. оператор тіла циклу не виконується, а управління в програмі передається за межі оператора for. в нашому прикладі на оператор end; .Програма завершує роботу.

3. Значення параметра циклу I збільшується на одиницю, і управління передається в заголовок циклу for для перевірки умови.

Далі цикл повторюється з п.1.

Лістинг 3.23 містить програму "Тест по таблиці множення", змінену в такий спосіб, щоб вона задавала учневі рівно п'ять питань, а в кінці тестування виставляла оцінку за п'ятибальною системою. Природно, в такій постановці завдання найкращим рішенням буде цикл for.

Лістинг 3.23. Тест по таблиці множення (варіант № 4)

uses crt;
var s1, s2, otvet, k, prav: integer;
begin
nbsp nbsp randomize; <инициализация датчика случайных чисел>
nbsp nbsp clrscr; <очистка экрана>
nbsp nbsp for k: = 1 to 5 do
nbsp nbsp nbsp begin
nbsp nbsp nbsp nbsp s1: = random (18) +2; s2: = random (18) +2;
nbsp nbsp nbsp nbsp write ( 'Скільки буде', s1, '*', s2, '?'); readln (otvet);
nbsp nbsp nbsp nbsp if otvet = s1 * s2 then
nbsp nbsp nbsp nbsp nbsp begin
nbsp nbsp nbsp nbsp nbsp nbsp write ( 'Правильно!'); prav: = prav + 1;
nbsp nbsp nbsp nbsp nbsp end
nbsp nbsp nbsp nbsp else write ( 'Невірно.');
nbsp nbsp nbsp end;
nbsp nbsp clrscr; <очистка экрана>
nbsp nbsp writeln ( 'Ваша оцінка:', prav); readln;
end.

Лістинг 3.24 містить програму, яка обчислює середнє арифметичне і визначає мінімальне і максимальне число в послідовності дійсних чисел, що вводяться з клавіатури.

Лістинг 3.24. Визначення середнє, мінімуму і максимуму в групі чисел

var
nbsp nbsp a: real; <очередное число>
nbsp nbsp n: integer; <количество чисел>
nbsp nbsp sum, average: real; <сумма и среднее арифметическое>
nbsp nbsp min, max: real; <минимальное и максимальное число>
nbsp nbsp i: integer; <счетчик цикла>
begin
nbsp nbsp write ( 'Введіть кількість чисел послідовності:'); readln (п);
nbsp nbsp writeln ( 'Вводите послідовність');
nbsp nbsp write ( '->'); readln (a); <вводим первое число последовательности>
nbsp nbsp <предположим, что:>
nbsp nbsp min: = a; <первое число является минимальным>
nbsp nbsp mах: = а; <первое число является максимальным>
nbsp nbsp sum: = a;
nbsp nbsp <введем остальные числа>
nbsp nbsp for i: = 1 to n-1 do
nbsp nbsp nbsp begin
nbsp nbsp nbsp nbsp write ( '->'); readln (a);
nbsp nbsp nbsp nbsp sum: = sum + a;
nbsp nbsp nbsp nbsp if a max then max: = a;
nbsp nbsp nbsp end;
nbsp nbsp average: = sum / n;
nbsp nbsp writeln ( 'Кількість чисел:', n);
nbsp nbsp writeln ( 'Середнє арифметичне:', average: 7: 3);
nbsp nbsp writeln ( 'Мінімальна кількість:', min: 7: 3);
nbsp nbsp writeln ( 'Максимальне число:', max: 7: 3);
end.

Лістинг 3.25 містить програму, яка обчислює часткові суми n членів ряду 1, -1/3, +1/5, -1/7, +. сходяться до значенням p / 4.

Лістинг 3.25. обчислення часткової суми членів ряду

var
nbsp nbsp х: real; <член ряда>
nbsp nbsp summ: real; <частичная сумма>
nbsp nbsp n: word; <количество суммируемых членов>
nbsp nbsp i: word; <счетчик цикла>
begin
nbsp nbsp write ( 'Введіть кількість сумміруемих членів ряду:'); readln (n);
nbsp nbspх: = 1; summ: = 0;
nbsp nbsp for i: = 1 to n do
nbsp nbsp nbsp begin
nbsp nbsp nbsp nbsp summ: = summ + 1 / x;
nbsp nbsp nbsp nbsp if x> 0 then x: = - (x + 2) else x: = - (x-2);
nbsp nbsp nbsp end;
nbsp nbsp writeln ( 'Сума ряду:', summ: 10: 6);
nbsp nbspwriteln ( 'Значення pi / 4:', pi / 4: 10: 6);
end.

Схожі статті