MLTA_dlya_vsekh (1) / Электронные лекции 2013 / лекция 4
.pdf
|
|
41 |
|
|
3. Структуры с ветвлениями |
|
|||
Пример 4.3. Рассмотрим блок-схему программы. |
||||
|
|
|
|
g |
|
|
|
1 |
|
|
f |
q |
|
|
|
|
|
|
|
X |
1 |
|
0 |
Y |
|
|
|
|
|
p= |
s |
|
|
|
|
|
|
|
1 |
|
0 |
|
h |
|
|
|
|
r |
|
|
|
|
|
0 |
Рис. 4.4 Блок-схема алгоритма |
|
|
42
g |
1 |
|
|
1 |
q |
|
|
f |
|
0 |
|
|
g |
2 |
|
|
|
|
1 |
|
h |
r |
|
|
|
|
|
|
3 |
|
0 |
|
|
1 |
|
S |
g |
4 |
|
||
|
|
0 |
|
1 |
|
h |
|
|
|
|
|
r |
|
|
|
|
|
|
|
0 |
5 |
|
|
|
Рис. 4.5 E-дерево выполнения программы
43
Условия ветвления выражаются предикатами s, q, r. Программная функция алгоритма с ветвлениями без циклов определяется как объединение композиций программных функций, которые получаются непосредственно из E-дерева. Необходимое и достаточное условие выполнения конкретной ветви определяется композицией каждого предиката с предшествующей функцией пути.
44
Здесь имеется пять путей выполнения. Программная функция каждого пути имеет вид:
{(X,Y): s(X) & q(f(X)) & Y=g(f(X))}.
{(X,Y): s(X) & q(f(X)) & r(h(f(X))) & Y=g(h(f(X)))}. {(X,Y): s(X) & q(f(X)) & r(h(f(X))) & Y=h(f(X))}. {(X,Y): s(X) & r(h(X)) & Y=g(h(X))}.
{(X,Y): s(X) & r(h(X)) & Y=h(X)}.
45
Результирующая программная функция может быть определена как условное правило:
[P]={(X,Y) s(X) & q(f(X)) Y=g(f(X));
s(X) & (q( f(X) )& r(h(f(X))) Y=g(h( f(X)));
s(X) & (q(f(X))) & (r(h(f(X)))) Y=h(f(X));
s(X) & r(h(X)) Y=g(h(X));
s(X) & (r(h(X))) Y=h(X)}.
46
Пример 4.4. Задан алгоритм с использованием операторов ветвления (Рис.4.6).
IF x<-1 THEN x:=x+y ELSE IF y<0 THEN y:=x-y; IF y>-2 THEN y:=x+y ELSE x:=x-y
Рис.4.6
Требуется определить программную функцию, реализуемую этим алгоритмом.
47
В данном алгоритме начальное значение поля данных (x0,y0). Введем обозначения для предикатов, описывающих условия ветвления:
P1(x)="x<-1" , P2(y)="y<0" , P3(y)="y>-2",
а также обозначения для операторов присваивания:
A1="x:=x+y", A2="y:=x-y", A3="y:=x+y", A4="x:=x-y".
48
Тогда можно записать схему алгоритма в следующем виде (рис.4.7).
IF P1 THEN A1 ELSE IF P2 THEN A2;
IF P3 THEN A3 ELSE A4
Рис.4.7.
Этой схеме соответствует блок-схема алгоритма (рис.4.8) и E-схема (рис.4.9).
49
|
|
|
A1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
1 |
|
A3 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
p = |
X |
|
|
|
|
|
|
|
|
Y |
|
|
|
|
|
A2 |
|
|
|
|
|
||
|
P1 |
|
|
|
P3 |
||||||
|
|
|
|
|
|
1 |
|
0 |
0 |
A4 |
|
P2 |
|
|
Рис. 4.8 |
|
50
|
|
1 |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
A1 |
|
P3 |
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
1 |
|
|
|
|
||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
P1 |
|
|
A2 |
|
|
|
|
|
|
|
|
|
|
|
|
P3 |
|
|
|||||
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
||||
|
|
|
|
|
|
|
|||||
|
P2 |
|
|
|
|
||||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||
|
|
0 |
|
|
1 |
|
|
|
|||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
P3 |
|
|
||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
0 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.9
A3
1.1
1.2
A4
A3
2.1
2.2
A4
A3
3.1
3.2
A4