Урок 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
  WriteLn(‘C=’,C);

На экран будет выведен столбик цифр от 1 до 9.
После чего начнет выполняться оператор, следующий за WriteLn

 

ПРИМЕР 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.


 

Hosted by uCoz