Файл: Соловейчик, Р. Э. Программирование на АЛГОЛ-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_