Файл: Соловейчик, Р. Э. Программирование на АЛГОЛ-60 учеб. пособие.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 31.10.2024
Просмотров: 99
Скачиваний: 1
|
tempxi |
(b [ i j |
- gum) / a |
£ 1,1 |
|
normt |
norm + abs ( tempx - x |
||
|
|
tempx |
|
|
end |
• |
|
|
|
if |
norm ^ test |
then |
печать (x) |
else go to again. |
%
end
Нам представляется, что нет необходимости в каких-либо пояснениях к этой программе, заметим только,что взятие пре дельного числа уравнений равным 50 уже предполагает исполь зование достаточно большой машины, так как в ее запоыинакь щее устройство должно быть введено значительное число исход ных данных - 2500 коэффициентов, 50 свободных членов, 50 зна чений. начальных приближений неизвестных и т.д.
Переключатели
Это аппарат, обобщающий в А Ж Ш - 6 0 идею условной пере дачи управления. Переключатель позволяет передавать управле ние одному из нескольких операторов в зависимости от тех зна чений, которые прикиыает некоторое арифметическое выражение.
Если требуется передать управление одному из операторов
с метками bl, 8 , 67 , 43 |
и 1 |
3 |
в зависимости от того, |
какое значение примет целое |
число |
1 |
- единицу, двойку, |
тройку , четверку или пятерку соответственно, то это можно сделать с помощью условного оператора
if 1 = |
1 |
then go |
to |
I 1 |
else |
|
i f |
1 = |
2 |
then £0 |
to |
3 else |
|
|
_if |
i |
= 3 |
then £0 |
to 67 elsa ■ |
if 1 = |
4- then £0 |
43 |
else |
i f |
1 = 5 then ££ |
to |
1 3 j |
во ата конструкция явно слшпком громоздка даже в случае не очень большого чнола меток, т.е. используемых операторов.
Несколько короче ето можно сделать с помощью оператора перехода, за которям стоит условное выражение
go to if |
i = |
1 |
then |
L |
1 else |
|
|
tt |
1 = |
2 then |
3 |
else |
|
||
|
i f |
i = |
3 |
then |
67 |
else |
|
|
• if |
i = |
4 |
then |
43 |
else |
|
|
|
|
if |
i = |
5 |
then |
b 3 | |
но к эть конструкция достаточно громоздка. Существенно коро че ето можно сделать с помощью переключателя. При атом в блоке среди описали! типа, массива и других должно стоять описание переключателя. В нашем случае оно имеет вид
switch q: = 1 I, 8 , 67 , 43, Ь 3 .
Переключатель можно рассматривать как одномерный массив, в котором элементами являются не числа, а метки. При этом пред полагается, чтб эти метки перенумерованы слева нацраво, начи ная с единицы. Тогда в рассматриваемом примере решение зада чи будет даваться оператором
£о to q[i] »
Здесь - идентификатор переключателя, а за ним в квадрат ных скобках ставится некоторое арифметическое выражение, ко торое определяет t-ю метку переключателя, где _ 1 - целое число, ближайшее к значению арифметического выражения (в слу чае, если значение арифметического выражения оканчивается 0,5, округление производится в большую сторону). Однако в большинстве случаев на месте арифметического выражения стоит просто целая переменная.
В качестве примера использования переключателя рассмот-
рим следующую задачу. Пусть требуется вычислить один из пер вых пяти полиномов Лежандра при заданных значениях я 'и .*:
О, то |
Р0 |
(х)' = 1 ; |
|
то |
|
(*) = |
х ; |
то |
Р ? (х) =2 ( 3 X2 - 1 ) ; |
||
.если |
Pi (х) =V ( 5 X3 - 3* ) • |
||
то |
|||
4, то |
Р4 |
(х) |
=5 (35 X4 - ЗОх2 + 3 ) . |
Дня решения задачи введем переключатель |
poly |
с метками ГО, |
PI, Р2, РЗ и Р4, соответствующими пяти операторам присваива |
||
ния для переменной с идентификатором |
legendre |
|
Единственная особенность этой "программы" |
состоит в вы |
полнении требования, согласно которому метки должны быть пере нумерованы, начиная с единицы и подряд.
Описание |
переключателя будет |
|
||
естitch |
poly» = РО, |
PI, |
Р2, РЗ, Р4 ; |
|
а обращение к |
нему имеет вид |
|
|
|
|
go |
to poly |
«• ij |
; |
причем в тексте полной программы должны быть метки:
v |
РО |
: le g e n d re |
: |
= |
1.0 ; |
|
||
|
P I |
: le ge n d re : = х ; |
|
|||||
|
Р2 |
: |
le ge n d re |
: |
= |
1.5 * xf2 - |
Ь.5 ; |
|
|
РЗ |
: |
le g e n d re |
: |
= |
2.5 *_х f 3 |
- 1. 5* х ; |
|
Р4 : |
le g e n d re |
: = |
4. 375* * f 4 - 3. 75* x f 2+0.375 j |
Полная программа для этой задачи не приводится из-за искусст венности ее постановки.
Блоки и их использочвание
Начнем с выяснения значений терминов локализованная и глобальная переменные величины.
Переменная величина называется локализованной в том бло-
60
зе, в котором она описана, т.е. вне этого блока она не имеет смысла. Если этот блок содержит в себе другие блоки, называе мые подблоками, то по отношению к ним эта переменная называ ется глобальной. Переменная величина, описанная в подблоке некоторого блока, является неопределенной во внешнем блоке.
Два блока называются независимыми, если ни один из них не .является подблоком другого. Поясним эти термины следующи ми примером блочной структуры
begin reel |
г |
; |
|
|
|
|
|
С2: |
begin real |
а f |
|
|
|||
СЗ; |
begin reel |
t |
; |
|
|||
|
end |
03 |
} |
|
|
|
|
04 S |
|
|
begin real |
w |
• |
||
|
|
|
|||||
|
|
|
end |
04 . |
|
|
|
|
end 0? ; |
|
|
|
|
|
|
05; |
begin |
real |
x |
- |
|
|
|
|
end |
<75 |
; |
|
|
|
|
С6: |
begin |
real |
у ; |
|
|
||
|
|
|
|||||
С7: |
begin real |
z |
|
|
|
||
|
|
|
|
||||
|
end |
C7 |
; |
|
|
|
|
|
end C6 • |
|
|
|
|
|
|
end |
Cl |
|
|
приведено |
т а к о й программы, |
||
причем подчеркнем, что здесь не |
а сохранены только описание переменных и операторные скобки. Приведем сводную таблицу, которая покажет для всех наших пе ременных и для всех рассматриваемых блоков, где эти перемен ные будут локализованными (л), где глобальными (г) и где они не определены (-)
Идентифн- |
С1 |
Метки блоков |
С5 |
1 С8 |
ст |
||
каторы |
С2 |
СЗ |
С4 |
||||
— I----- |
2 |
---s ~ |
|
S |
в |
7 |
8 |
Г |
Л |
Г |
Г |
г |
г |
г |
г |
а |
- |
Л |
Г |
г |
__ 1_____ :__ |
- |
|
|
|
_____ 1_ |
|
|