
Контрольные вопросы
Дать определение понятию переменной.
Дать определение понятию константа.
Числовые типы данных. Обозначения. Привести примеры.
Логический, символьный, строковый типы данных. Обозначения. Привести примеры.
Стандартные функции Pascal. Правила записи.
Арифметические выражения. Правила записи.
Логические выражения. Правила записи.
Оператор присваивания. Правила записи.
Оператор ввода. Привести примеры.
Оператор вывода. Привести примеры.
Оператор условного перехода. Полный, короткий, составной. Привести примеры.
Структурированный оператор условного перехода. Привести примеры.
5.7. Программирование. Циклы
Оператор цикла с параметрами
Счетный оператор цикла FOR имеет структуру:
FOR i:=a TO b DO <оператор>;
FOR, TO, DO – зарезервированные слова (для, до, выполнить);
i – переменная цикла типа INTEGER; (счётчик циклов)
a – начальное значение счётчика циклов (тип INTEGER);
b – конечное значение счётчика циклов (тип INTEGER);
<оператор> – произвольный оператор Турбо Паскаля.
Шаг изменения параметра цикла равен единице.
Алгоритм выполнения оператора цикла с параметрами при выполнении оператора FOR:
счётчику циклов присваивается начальное значение i:=a;
проверяется условие i>b (счётчик циклов больше конечного значения);
если условие i>b выполняется, то на пункт 7, иначе на пункт 4
выполняется тело цикла;
счётчик увеличивается на единицу: i:=i+1;
переход на 2;
при выполнении условия i > b цикл заканчивается.
Пример: Найти сумму значений переменной цикла.
Решение: Фрагмент программы с оператором цикла запишется в виде:
For i:= 1 to 10 do s:=s+i;
Writeln(‘s=’, s);
Счётный оператор цикл FOR может иметь такую структуру:
FOR i: = b DOWNTO a DO <оператор>;
Замена зарезервированного слова TO на DOWNTO означает, что шаг наращивания переменной цикла равен (-1).
Пример: Найти сумму значений переменной цикла.
Фрагмент программы с оператором цикла запишется в виде:
For i:=10 downto 1 do s:=s+i;
Writeln(‘s=’, s);
{Результат получится тот же, что и в примере с циклом For..to…do}.
При работе с оператором FOR следует соблюдать ряд правил:
Нельзя войти в цикл, минуя оператор FOR.
Нельзя изменять параметры цикла (a, b) внутри цикла.
Параметры цикла и переменная цикла должны быть целыми.
Шаг цикла может быть единица или минус единица.
Естественное окончание цикла осуществляется при условии i>b при шаге=1.
Из цикла можно выйти до естественного окончания цикла по условию.
Оператор цикла WHILE с предусловием
Структура оператора имеет вид:
WHILE <условие> DO <оператор>;
WHILE, DO – зарезервированные слова (WHILE – пока; DO – выполнить);
<условие> – выражение логического типа;
<оператор> – произвольный оператор Турбо Паскаля.
Если выражение <условие> имеет значение TRUE, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение FALSE, оператор WHILE прекращает свою работу.
Пример: Переписать фрагмент примера с циклом While…do, используя оператор цикла с предусловием.
Решение: Фрагмент программы с оператором цикла запишется в виде:
s:=0; i:=1;
while i<=10 do
Begin
s:=s+i;
i:=i+1;
End;
Writeln(‘s=’, s);
В примере рассматривается составной оператор цикла, тело цикла заключено в операторные скобки.
Оператор цикла REPEAT…UNTIL с постусловием
Структура оператора имеет вид:
REPEAT <тело_цикла> UNTIL <условие>;
REPEAT, UNTIL – зарезервированные слова (повторять до тех пор, пока не будет выполнено условие);
<тело_цикла> – произвольная последовательность операторов Турбо Паскаля; <условие> – выражение логического типа.
Операторы, входящие в <тело_цикла>, выполняются хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть FALSE, операторы <тело_цикла> повторяются, в противном случае оператор REPEAT…UNTIL завершает свою работу.
Пример: Переписать фрагмент примера с циклом While…do, используя оператор цикла с постусловием.
Решение: Фрагмент программы с оператором цикла запишется в виде:
s:=0; i:=1;
repeat
s:=s+i;
i:=i+1;
Until i>10;
Writeln(‘s=’,s);
В пример цикл выполняется пока переменная i10, при i>10 цикл закончится.
Пример: Написать программу циклического алгоритма рис.11.
В цикле вычислить значение функции z= x*y при условии, что одна из переменных - x меняется в каждом цикле, а другая переменная- у не меняется и может быть любым целым числом.
Решение: Программа алгоритма цикла со счётчиком имеет вид:
PROGRAM PR5;
Var
x, y, z, i, n :integer;
begin
{циклический алгоритм}
writeln (‘ввести x, y, количество циклов-n’);
readln (x, y, n);
for i:=1 to n do {оператор цикла с параметрами}
begin
z:=x*y;
Writeln (‘x= ’, x, ‘ y= ’, y, ‘ z= ’, z);
x:=x+1;
End; {конец оператора цикла с параметрами}
End.
Если неизвестно количество циклов, то следует выбрать любой из двух операторов цикла: с предусловием или с постусловием.
Пример: Пока y>x вычислить у=у-x, , если y=30, x=4. Вывести на экран количество циклов и значения переменной y в цикле. Алгоритм этой задачи представлен в виде блок-схемы рис.12.
Решение: Программа алгоритма цикла с предусловием имеет вид:
PROGRAM PR6;
Var
i, x, y: integer;
begin
{циклический алгоритм}
x:=4; y:=30; i:=0;
{оператор цикла с предусловием}
while y>x do
begin
y: = y – x;
i:=i+1;
readln (‘i=’, i, ‘x= ’, x, ‘y= ’, y);
end; {конец оператора}
end.
В примере используется оператор цикла с предусловием, который работает при условии y>x. Условие проверяется при входе в цикл.
Пример: Составить программу для алгоритма, представленного на рисунке 13, используя оператор цикла с постусловием. Цикл выполняется при условии y>x, но в конце оператора проверяется условие выхода из цикла (y<=x).
Решение: Программа алгоритма цикла с постусловием имеет вид:
PROGRAM PR7;
Var
i, x, y: integer;
begin
{циклический алгоритм}
x:=4; y:=30; i:=0;
{оператор цикла с постусловием}
repeat
y: = y – x;
i:=i+1;
readln (‘i=’, i, ‘x= ’, x, ‘y= ’, y);
until y<=x; {конец оператора}
end.