Урок 13
Оператор цикла FOR (Цикл
со счетчиком).
Формат оператора с увеличением
перемнной:
FOR переменная
:= выражение1 ТО выражение2 DO оператор;
Переменная должна быть
порядкового типа.
Порядковыми называются все простые типы, значения которых можно
расположить в возрастающем порядке. Из известных нам это: INTEGER, WORD,
LONGINT, BYTE, CHAR.
Выражение1 и Выражение2 должны быть того же типа, что и
переменная.
Чтобы цикл выполнился хотя бы раз выражение1 должно быть не больше выражения2.
Выполнение начинается с вычисления значений выражения1 и выражения2.
затем переменная получает значение выражения1 и делается проверка, не
превышает ли значение переменной выражения2. Если не превышает,
выполняется оператор стоящий после служебного слова DO. После завершения
оператора переменная получает следующее по порядку значение, и все
повторяется, начиная с проверки.
Когда значение переменной становится равным выражению2, оператор
выполняется последний раз.
Если надо
выполнять не один, а несколько операторов, то надо использовать
составной оператор, то есть использовать операторные скобки BEGIN... END
Возможен вариант оператора цикла FOR, когда
переменная принимает последовательно убывающие значения.
Формат оператора с уменьшением
переменной:
FOR переменная
:= выражение1 DOWNТО выражение2 DO оператор;
В этом случае, чтобы цикл выполнился хотя бы раз, выражение1 должно быть
не меньше выражения2.
Например:
For c:='z' downto 'а' do writeln(с);
Пример 1. (Сравните с
примером предыдущих уроков)
For C:=1 To 9 Do |
На экран будет выведен столбик цифр от 1 до 9. |
ПРИМЕР 2. Вычислить значение
факториала N!
program factorial;
var i, n : integer;
f: longint; {-2147483648..2147483647}
begin
write('Введите значение N
');
readln(n);
f:=1;
for
i:=1 to n do f:=f*i;
write(n,'!=',f);
readln;
end.
ПРИМЕР 3. Напечатать ряд из повторяющихся чисел 20 в виде:
20 20 20 20 20 20 20 20 20 20
var i: byte;
begin
for I:=1 to 10 do write(20,' ');
readln;
end.
ПРИМЕР 4. Напечатать числа следующим образом:
10 10.4
11 11.4
. . .
25 25.4
var
i: byte;
begin
for I:=10 to 25 do write(I,' ',I+0.4:0:1);
{при сложении целого I и вещественного 0.4 получаем
вещественный результат, значит надо выполнить его
форматирование при выводе на экран}
readln;
end.
Тренировочные
задания.
1.Напечатать
столбиком:
а) все целые числа от 20 до 35;
б) квадраты всех целых чисел от 10 до b (значение d вводится с
клавиатуры; b>=10);
в) третьи степени всех целых чисел от а до 50 (значение а вводится с
клавиатуры; а<=50);
г) все целые числа от а до b (значения а и b вводятся с клавиатуры;
d>=a).
2.
Напечатать числа следующим образом
25 25.5 24.8
26 26.5 25.8
. . .
35 35.5 34.8
3.
Распечатать в столбик таблицу умножения на 7.
4.
Вывести столбиком следующие числа: 2,1 2,2 2,3 . . . , 2,8
5.
Вывести столбиком следующие числа: 2,2 2,4 2,6 . . . , 4,0 4,2
6.
Вывести столбиком следующие числа: 4,4 4,6 4,8 . . . , 6,2 6,4
Разбор заданий урока 12.
1. CHR(ORD(X))=Х
2. Определить
значения следующих функций (как правило таблица ASCII-кодов есть в любом справочнике по программированию):
CHR(68)=D
ORD('d')=100
PRED(1) =0
SUCC('Я')=а
3. С клавиатуры вводится два числа. Составить программу сравнивающую эти числа
и в зависимости от результата сравнения выводящую на экран нужный знак.
Например: 3<5 или 3=3 или 3>2. Процедуру WRITE для вывода результата
разрешается использовать только один раз.
Var x,y:integer;
C:char;
Begin
Write('Введите два числа');
Readln(x,y);
If x=y then c:='=';
If x>y then c:='>';
If x<y then c:='<';
Writeln(x,c,y);
Readln;
End.