Файл: Соловейчик, Р. Э. Программирование на АЛГОЛ-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 ; Зд ;
Действие этой конструкции заключается в том, что просматрива ются все отношения слева направо; если найдено истинное от ношение, то выполняется следующий за ним безусловный опера-