Файл: Соловейчик, Р. Э. Программирование на АЛГОЛ-60 учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.10.2024

Просмотров: 93

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

32 -

тор, а остальные условные операторы пропускаются; если все отношения ложны, то выполняется оператор, следующий за пос­

ледним

е1ае

. Блок-схема для этого случая имеет вид

if

then

31 else if Но then Sp else

S^j

3^ ;

Проиллюстрируем применение этих конструкций следующим приме­ ром. Пусть где-то в программе нужно предусмотреть выполнение

ряда требований:

 

 

 

 

 

 

 

1.

Если

а< ъ

, то положить

g

равным 9,8 и про­

должить счет (перейти к пункту 4).

 

 

 

 

2.

Если

оС-/5>-

14,7

, то положить J> -

c °s -g -

<5-> = 7 _ Г 1*^и продолжить счет (перейти к пункту 4).

3. Если ни одно из предыдущих указаний не выполнено,

то передать управление оператору с меткой

unusual

4.

После

выполнения указаний

I и

2 положить

flag

равным I.

 

 

 

 

 

 

 

 

Все это может быть записано

следующим образом, при

условии естественного обозначения идентификаторов:

if

s < b

then

g : =

9.S

else

 

 

 

 

if

alpha

- bets ^

14 •7

then

 

 

 

 

 

begin rhoi

= сэз

(theta 42);

 

 

 

 

 

sigma s=7- taut 1.5

emd.

 

 

 

else go to unusual • flag : = 1 ;


зз

Следует подчеркнуть, что это, конечно, не программа, а неко­ торый ее внутренний фрагмент.

Условие

Естественным является использование конструкции, очень схожей с полным условным оператором для записи различных ус­ ловий, Большей частью эта конструкция используется совместно

с оператором присваивания.

 

 

 

 

 

 

Например, если нужно положить величину

signal

равной

нулю при

w = е

и равной единице при

v

4

z

, то это

можно сделать хотя бы так

 

 

 

 

 

 

signal I =

if

w = z

then 0

else t

j

 

 

 

Этот пример можно решить и с помощью построения полного

условного оператора

 

 

 

 

 

 

 

if w

= z

then

signal

: * О

else signal

t

= 1

t

но этот способ не рекомендуется, так как он приводит к не­ экономной работе машины.

Допустим, нужно написать на языке МГ0Л-60 формулу

у

0,5 х

+0,93,

если

х

2,1

0,7 х

+ 0,53,

если

х >

2,1

 

Она будет иметь следующий вид:

 

 

 

Y ! я I f х < ? . 1 then

0,5 х х +С.95 e ls e 0.7

* х *■ 0.53 ;

Приведем еще один пример. Допустим, нужно написать выражение, изображающее величину несобственного интеграла,

названного нами Q

,

 

 

 

 

 

 

,если

а< о

;

Q

О

.если

а

=

0;

о/

Ж

,если

а

>

0;


при этом будем считать, что переменной а уже црисвоено значение одним из предыдущих операторов присваивания, но само зто значение нам неизвестно

Q 1 = If

а< 0

then

-I.570B elgc

If

а = 0

then

0 else 1.5708 ;

Наконец, условие бывает очень удобно для выполнения условной передачи управления. Например, в некоторой программе мы хотим

передать управление оператору с меткой

done

.если абсолют­

ная величина разности мезду

х в

final

меньше 1СГ®, и опе­

ратору с меткой more

в противном случае, то

это можно

сделать с помощью оператора

 

 

 

 

go to If вЪа (х - final )<

Ю- '’

then

done else

more ;

Булевские выражения

С простейшим видом булевских выражений, а именно с отно­ шениями, мы ухе познакомились. Булевские выражения почти ана­ логичны арифметическим. Напомним, что арифметические выраже­

ния строятся из чисел, переменных и функций в комбинации с арифметическими операциями и круглыми скобками.

Булевские выражения строятся совершенно аналогично из ло­ гических значений true и f a l s e , булевских переменных,

булевских фунт 1ий и отношений в- комбинации с арифметическими

и логическими операциями и круглыми скобками.

Логические операции определяются'своими таблицами истин­ ности, введение которых не входит в предмет М Г О Л -SO, а состав­ ляет часть курса математической логики. Там определены следую­ щие пять логических операций и установлены символы для них:•

отрицание - конъюкция - дизъюнкция - импликация - тождество -

"7 (не) ; Л ( и) ;

V(или);

О(влечет);

=(эквивалентно).


35

Эти операции полностью определяются приводимой таблицей истин­ ности.

p

q

ПР

р М

pVq

PDq

p=q

и

и

л

и

и

И

и

и

л

л

л

и

л

л

л

и

и

 

л и

и

л

л

л

и

л

I

и

и

В,,этой таблице И - означает "истинно" или true ,

Л - "ложно" или false.

Если в состав логического выражения, наряду с логически­ ми операциями, входят арифметические, то порядок их выполне­ ния при просмотре слева направо устанавливается следующей таб­ лицей старшинства операций.

Порядок

I 2 3 4

Операция

 

t

+

V V

А А II

Порядок Операции

51

6А

7V

80

9=

Операция считается старшей по порядку, если ее порядок меньше. Поясним использование этого правила примерами.

Пусть ухе выполнены операторы присваивания

В: = tru e ; Р; = false ; Gi = tru e . Hi * true ;

R: = 2 ;

. a i = 12 ; ,

T : = 0;

®s =-20


36

причем первые четыре переменные описаны как булевские, а вто­ рые четыре - как действительные.

Вычислим результат выполнения следующих операторов при­ сваивания:

Ъ : = F

 

дает

L

=

f a l s e

М ! = 3 ^ 1

 

 

м а f a l se

N

s

= Н/Ш-$Г 25

 

 

N

=

true

0

г

= П FVR •» 3

= Т

 

0

3

true

Р 1 = G S T + 1 2 > U

 

р

= f a l s e

Q

: = EVPDR =

Т

 

Q

=

f a l s e

После

 

того, как мы оцределили булевское выражение, вернемся

 

к рассмотрению условия. Приведенные выше примеры показывают

,

что условие - это

конструкция вида

 

 

 

 

 

 

 

 

 

 

if

отношение

then

 

 

 

 

 

которой можно дать

более общую трактовку

 

 

 

 

 

 

 

 

If

булевское выражение

then

 

 

Если,

 

например, нужно прекратить вычисление, как только

g

и

h

станут меньше 0,001 по абсолютной величине,то это можно

 

сделать с помощью оператора

 

 

 

 

 

 

 

if еЪэ

(к)< 0.001 A

abs(h )< 0.001

then g o

to

M

;

 

 

Надо

заметить,

что В конструкции

if

...then

 

... else

 

слово

 

elae иногда не обязательно,

а иногда необходимо. Здесь

действует правило:

в операторе, начинающемся со слова

ir

,

слово

е!яв

не обязательно, в условном же

выражении,

стоя­

щем в арифметическом выражении или в операторе

перехода,

ело-