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

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

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

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

Добавлен: 31.10.2024

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

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

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

27

написана. Как правило, использование меток чаще всего связано

с оператором

перехода,

общий вид

которого

go to ъ

, где

Ь

- метка

оператора,

стоящего

где либо

в программе.

Этот

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

Приведем пример использования оператора перехода. Цредположим, что требуется вычислить силу переменного тока в электрической цепи, которая имеет сопротивления, емкость и индуктивность. В случае установившегося режима зависимость силы тока от остальных параметров дается формулой

 

 

 

 

 

д

 

______

 

 

 

1 "

 

V f o с г ^ р ь -

1

) ?

 

 

где

I

-

сила тока, а;

2 ]Г РС

 

- соп­

б

- напряжение, в;

r

ротивление,

ом;

ь

- индуктивность, гн ;

о

- емкость,

ф ;

р

-

частота,

гц .

 

 

 

 

 

Допустим нас интересует

зависимость между силой тока и

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

beg in r e a l

Е, R,

L, С, Р, I

;

 

 

ВВОД (Б, Ft, L,C ) ;

 

 

 

печать (б, л , ъ , с);

 

м :

ВВОД

( Р )

,

I ;=Е/sqrt (RT2+(6.2832*P*b-1/(6. 2332*1?* С) Л 2) »

 

печать

(F,I); &о

to М

end.

Заметим, что обычно программа так на составляется; в ней не предусмотрена остановка машины - она "зависает", кроме того,

вней использованы русские буквы для слов "ввод" и "печать", что является недопустимым в языке АЛГОЛ-60, но это сделано

всвязи с тем, что операции ввода и печати не обусловлены в

этом языке, а только в его конкретных реализациях.


28

Условный оператор

Оператор go to дает возможность безусловной передачи управления, но часто возникает необходимость передачи управ­ ления в зависимости от выполнения некоторого условия. Эту возможность предоставляет оператор -i* . В этом операторе

используются

операции

отношения < ;

— > ^

У , ф ,

. а са­

мо отношение

имеет вид

. где

а, и

е 2 . - арифме­

тические выражения, a

R

- любая операция отношения. Отно­

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

j_£ отношение then оператор ,

и действие его заключается в

следующем: если отношение истин­

но, то выполняется оператор,

стоящий после

then

; если же

отношение ложно, то оператор,

стоящий за

then

, не выпол­

няется и управление передается следующему зг Пш м оператору. Например, оператор

W х < ТО then go to delta

при

x < 10

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

в цротивном

случае, т.е. при

х > 10,

выполняется следую­

щий

оператор, не указанный нами явно.

 

 

Оператор, стоящий после

then

, может быть любым,

но только не условным. Часто он бывает составным оператором, как в следующем примере:

If F +

Ir.er

final

then

begin4F

г = F +

iner*

to go repeat end

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

тора было бы правильным, но как

только отношение станет лож­

ным,

управление

передастся

оператору перехода, в


29 ■'

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

начальная частота

in itia l

, шаг

iner

и наибольшая

частота final

• Тогда блок-схема задачи будет следующей:

а соответствующая программа примет вид

he£jn гея!

4,7?,L, С,Б1,X,

initial, iner, final j

ВВОД (4,4,■ I,,C,

Initial, iner, final ) .

печать

( E,

ч, x, c ) .

F

i =

initial

r

reneet: T; =E/sqrt

(Hf2 + (6 . W ?2 »P»L-1 / ( 6 .2832-F»0) )fg) ;

печать

( F,

I

);

 

ifp +

iner < final

then

стоп

*' : =F + iner;

go to repeat end ;

end

 

 


30

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

if отношение then. else S2

где s1 - любой оператор, но только не условный,Р Зг - лю­ бой оператор (без всяких ограничений).

В отличие от условного оператора, полный условный опера­ тор работает не только тогда, когда отношение истинно, но и тогда, когда оно ложно , причем он.прямо указывает, какой оператор должен выполняться в этом случае. Так, в приведенной общей форме полного условного оператора при истинности отно­ шения выполняется оператор 3i , а оператор 32 пропус­ кается; если же отношение ложно, то пропускается оператор

, а выполняется оператор зг . Далее в обоих случаях управление передается тому оператору, который стоит после s2 (если, конечно, ни S-r , ни з2 не содержат в себе опе­ ратора перехода). Стоит подчеркнуть, что как условный, так и полный условный операторы могут быть использованы при реше­

нии многих задач. Поясним это на следующем

примере. Пусть

где-то в

программе необходимо выполнить следующее:

если

t = п-1

, то

положить о

- * 2

и продолжить вычисле­

ния;

если же

t^n-i

, то

передать управление оператору

с меткой

special

. Заметим,

что решение

этого примера не

единственное; здесь приводится один вариант его решения с использованием условного оператора и два варианта - с исполь­ зованием полного условного оператора:

1) if

t

^

n-1

then jo to_special;

D: ^

x t

2

;

2 ) if

t

s

r.-1

then D

: =

xf2 else

go

to

speciel .

3 ) i f

t

/

n-1

then go

to

special

else

B

;

=

x f 2 ;

Все приведенные операторы решают поставленную задачу, и все эти решения равноценны.

Как уже указывалось в простом условном4операторе после


31

then

может стоять любой'оператор, кроме условного. В пол­

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

это относится только к

оператору, стоя­

щему после then , а

оператор, стоящий после

else

, мо­

жет быть любым, в том числе и условным и полным условным. Получается как бы вложение условных операторов.

Рассмотрим сначала вложение условного оператора в пол­ ный условный оператор

if R, then 31 else if Rg then Sg . 3^ ;

Действие этой конструкции заключается в том, что просматрива­

ются все отношения слева направо; если найдено истинное от­

 

ношение, то выполняется следующей за ним безусловный опера­

 

тор, а остальные условные операторы пропускаются; если же

 

все отношения ложны, то весь оператор пропускается и выпол­

 

няется следующий оператор (в нашем примере -

оператор

).

Приведем блок-схему для случая вложения условного опера­

тора, в полный условный оператор

 

 

 

i f R1

t hen 3| e ls e i f Rg

then Sg ;

3 Л j

 

Теперь рассмотрим вложение полного условного оператора в полный условный оператор:

if R1 then Si else if Rg then З2 else З3 ; Зд ;

Действие этой конструкции заключается в том, что просматрива­ ются все отношения слева направо; если найдено истинное от­ ношение, то выполняется следующий за ним безусловный опера-