2.1 Основные элементы языка
____________________________________________________________________
Sum:= 0; // в этой переменной накапливается сумма
x:= 1;
while x <= 100 do
begin
Sum:= Sum + x;
x:= x + 1;
end;
writeln('Sum= ',Sum);
writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey;
end.
program sum_2; {Вариант 2 цикл с постусловием} {$mode objfpc}{$H+}
uses
CRT, FileUtil; var x, Sum: integer; begin
Sum:= 0; // в этой переменной накапливается сумма x:= 1;
repeat
Sum:= Sum + x; x:= x + 1;
until x > 100; writeln('Sum= ',Sum);
writeln(UTF8ToConsole('Нажмите любую клавишу'));
readkey;
end.
116
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
Пример: Вычислить функцию:
x2 1, x 0
y 0, x 0 |
для х [-10, 10] c шагом 1 |
|
x2 1, x 0
Напишем программу вычисления функции с использованием оператора if…then и оператора цикла while…do:
program fun_1;{Вариант 1} {$mode objfpc}{$H+} uses
CRT, FileUtil; var
x, y: integer; begin
x:=-10;
while x <= 10 do begin
if x > 0 then y:= sqr(x) + 1;
if x = 0 then y:= 0;
if x < 0 then y:= sqr(x) - 1;
writeln('x= ', x, ' y= ', y); x:= x + 1;
end;
writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey; end.
117
2.1 Основные элементы языка
____________________________________________________________________
Напишем программу вычисления этой же функции с использованием опе-
ратора if…then…else и оператора цикла while…do:
program fun_2;{Вариант 2} {$mode objfpc}{$H+} uses
CRT, FileUtil; var
x, y: integer; begin
x:=-10;
while x <= 10 do begin
if x > 0 then y:= sqr(x) + 1
else
if x = 0 then y:= 0
else
y:= sqr(x) - 1;
writeln('x= ', x ,' y= ', y); x:= x + 1;
end;
writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey;
end.
В программах fun_1 и fun_2, как вы могли заметить, использовались со-
ставные операторы.
118
Глава 2 Введение в язык программирования Pascal
____________________________________________________________________
program fun_3;{Вариант 3 с использованием оператора цикла с постусло-
вием}
{$mode objfpc}{$H+} uses
CRT, FileUtil; var
x, y: integer; begin
x:=-10; repeat
if x > 0 then y:= sqr(x) + 1;
if x = 0 then y:= 0;
if x < 0 then y:= sqr(x) - 1;
writeln('x= ', x, ' y= ', y); x:= x + 1;
until x > 10;
writeln(UTF8ToConsole('Нажмите любую клавишу')); readkey;
end.
Заметим, что в операторе цикла с постусловием, если после слова repeat
используется не один, а несколько операторов, то не обязательно использовать операторные скобки begin и end, поскольку служебные слова repeat и until сами выполняют роль операторных скобок.
119
2.1 Основные элементы языка
____________________________________________________________________
2.1.23.3. Оператор цикла с параметром.
Иногда заранее точно известно, сколько раз должно быть выполнено опре-
деленное действие. Для задач такого типа в языке Паскаль, имеется оператор цикла с параметром. Этот оператор имеет вид:
for переменная:= выражение 1 to выражение 2 do оператор;
где for, to, do – служебные слова; переменнаяпеременная целого типа,
называемая индексом или параметром цикла.
Выражение 1, выражение 2 – арифметические выражения целого типа, т.е.
значения выражений должны быть целыми;
оператор – простой или составной оператор.
Для того чтобы оператор цикла выполнялся хотя бы один раз, значение выражения 1 должно быть меньше или равно значению выражения 2 (на прак-
тике значения выражения 1 всегда меньше значения выражения 2). Оператор работает следующим образом: вначале переменной (параметру цикла) при-
сваивается значение выражения 1, затем сравнивается значение параметра цик-
ла и значение выражения 2. Если параметр цикла меньше значения выражения
2, то выполняется оператор после слова do. Затем параметр цикла увеличива-
ется на 1, после этого вновь сравнивается значение параметра цикла и выраже-
ние 2, если параметр цикла меньше, то вновь выполняется оператор после слова do. И так продолжается до тех пор, пока параметр цикла не станет больше выражения 2. Как только это происходит, оператор цикла заканчивается.
Пример: давайте вычислим снова значения функции
x2 1, x 0
y 0, x 0 |
для х [-10, 10] c шагом 1 |
|
x2 1, x 0
120