
Упражнение 2 Разветвляющийся алгоритм
Формулировка задания:
1. Выполнить словесный алгоритм. Записать результат.
2. Составить блок-схему и написать программу по алгоритму.
Словесный алгоритм
Задан фрагмент алгоритма:
если W > R, то R=W+R, иначе W=R-W.
В результате выполнения данного алгоритма с начальными значениями: W=-7, R=55.
Решение:
1. Для начальных значений: W=-7, R=55 условие W > R не выполняется. В этом случае выполняется вторая ветка W=R-W=55+7=62.
В результате работы алгоритма значение переменных равны: W=62, R=55.
2. Блок-схема словесного алгоритма представлена на рис.15.
На рис. 15 появился новый блок 3, в котором проверяется условие. Блок проверки условия образует ветвление по двум направлениям в алгоритме.
В блок-схеме видно, что в зависимости от условия w>r выполняется одна из веток алгоритма. Затем выводится результат вычисления.
1
Рис. 15. Алгоритм ветвления
Блоку 1 соответствует служебное слово BEGIN.
Блоку 2 соответствует оператор ввода Readln (w, r).
Блоку 3 соответствует оператор условия if w>r then w:=w+r else r:=r-w.
Блоку 4 соответствует оператор присваивания w=w+r.
Блоку 5 соответствует оператор присваивания r=r-w.
Блоку 6 соответствует оператор вывода Writeln (’w=’,w,’r=’,r).
Блоку 7 соответствует служебное слово END.
Программа алгоритма ветвления, представленного на рис.15.
PROGRAM PR2;
VAR
w, r: integer;
BEGIN
Writeln (’ввести w, r’); {На экран выводится подсказка – текст в скобках}
Readln (w, r); {Ввод с клавиатуры переменных w, r }
if w > r then
w := w + r
else
r:=r-w;
Writeln (’w=’, w, ’r=’, r); {Вывод результата}
END.
Упражнение 3 Алгоритмы. Циклы
Формулировка задания:
1. Выполнить словесный алгоритм. Записать результат.
2. Составить блок-схему и написать программу по алгоритму.
Пример1: Циклический алгоритм со счётчиком циклов задан в виде словесного описания. Заданы начальные значения переменных:
s:=0; d:=1;
Начало цикла для i от 1 до 3
d:=2*d; s:=s+d;
конец цикла; Вывод d, s.
Решение:
В алгоритме указан диапазон изменения счётчика i, где видно, что должно быть выполнено три цикла.
После выполнения первого цикла значения переменных равны d=2, s=2. Полученные значения подставляются во втором цикле. После выполнения второго цикла значения переменных равны d=4, s=6. Полученные значения во втором цикле подставляются при выполнении третьего цикла. В результате выполнения алгоритма значение переменных равны: d=8, s=14.
Блок-схема словесного алгоритма цикла со счётчиком представлена на рис.16.
6
1
2
3
4
5
7
Рис. 16. Алгоритм цикла со счётчиком
Блоку 1 соответствует служебное слово BEGIN.
Блоку 2 соответствует оператор ввода readln (n).
Блоку 3 соответствуют операторы присваивания s:=0; d:=1;
Блоку 4 соответствует оператор цикла for i:=1 to n do.
Блоку 5 соответствуют операторы присваивания d: =2*d; s:=s+d;
Блоку 6 соответствует оператор Writeln (‘d=’,d,‘s=’,s);
Блоку 7 соответствует служебное слово END.
Программа алгоритма цикла со счётчиком, представленного на рис.16.
PROGRAM PR3;
Var
s, d, i, n :integer;
begin
writeln (‘ввести количество циклов-n’);
readln (n);
s:=0; d:=1;
for i:=1 to n do {оператор цикла с параметрами}
begin
d: =2 * d;
s: =s + d;
Writeln (‘ d= ’, d, ‘ s = ’, s);
End; {конец оператора цикла}
End.
Пример 2: Циклический алгоритм с предусловием задан в виде словесного описания. Заданы начальные значения переменных:
x:=1; y:=5;
Начало цикла. Пока y>x выполнить:
y: = y – x;
k=k+1;
конец цикла;
Определить количество циклов k и значения переменной y после выхода из цикла.
Решение:
Цикл выполняется до тех пор, пока выполняется условие y>x. Так как y=5, x=1, то условие y>x выполняется и значение y вычисляется по формуле y=y–x. В результате выполнения первого цикла y=4. Во втором цикле условие y>x выполняется, после второго цикла значение y=3. В третьем цикле условие y>x выполняется, после окончания третьего цикла значение y=2. В четвертом цикле условие y>x выполняется, после выполнения цикла значение y=1. При значениях y=1, x=1 условие y>x не выполняется, цикл не будет выполняться. Следовательно, цикл закончится и выполнится четыре цикла. На выходе из цикла значения переменных будут равны: k=4, y=1, x=1.
Программа алгоритма цикла с предусловием, представленного на рис.12.
PROGRAM PR4;
Var
k, x, y: integer;
begin
writeln (‘ ввести x, y ’);
readln (x, y);
while y>x do {оператор цикла с предусловием}
begin
y: = y – x;
k:=k+1;
writeln (‘ k=’, k , ‘ y= ’ , y);
end; {конец оператора цикла с предусловием }
end.
В программе до выполнения цикла не задано начальное значение k. По умолчанию оно равно нулю.
В примере используется оператор цикла с предусловием, который в данном примере выполняется при условии y>x. Условие проверяется при входе в цикл. В теле цикла счётчик задан в виде оператора присваивания k:=k+1, который выдаёт количество выполненных циклов.
Пример3: Циклический алгоритм примера 2 переписать, используя оператор цикла с постусловием. Результат будет тот же.
Программа алгоритма цикла с постусловием, представленного на рис.13.
PROGRAM PR5;
Var
k, x, y: integer;
begin
writeln (‘ввести x, y , ’);
readln (x, y);
repeat {оператор цикла с постусловием}
y: = y – x;
k:=k+1;
readln (‘ k=’ , k , ‘ y= ’, y);
until y<=x; {конец оператора цикла с постусловием }
end.