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

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

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

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

Добавлен: 31.10.2024

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

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

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

21 ~

 

 

 

(x/IO)

f (2 X i

+1 )

(т т Н 2 * 1

(х/10)Т 2 v* i +

1

( z2) k

2 f

k

 

a(’k>

2 f (

2 f k )

 

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

Остановимся кратко на определении типа арифметического выражения. Для операций сложения, вычитания и умножения ре­ зультат будет целого типа, если оба операнда целого типа, в противном случае результат будет действительного типа. Для

операции деления результат всегда будет действительного типа,

 

операции целочисленного деления,

которая оцределена только

m

операндов целого типа, результат

всегда будет целого типа,

операция имеет специальное назначение и состоит в нахожде­

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

типа через

i

, число действительного типа через г

и чис­

ло произвольного типа через

а

. Тогда

 

 

a * а* . .л а

( i раз)

, если

i> 0 ; тип тот же,

что у а;

I

 

 

, если

i=One^ojTHn тот же, что

 

 

 

у е

 

 

 

at Ц не определено

 

, если

± = о и а =

о ;

1/(8 *

я *... * е) (iраз).если

К о и а / о

{действительный;

не определено

 

, если 1< о и е = о

;


22

rlna

,если

а>

0

; действительный;

е

0.0

,если

а

=0 и

г> 0

;действительный;

не определено

.если

а =0 и

г « о

;

не определено

.если

а < 0

 

 

Стандартные функции

В АЛГОЛ-60 имеется всего девять стандартных функций, за которыми закреплены стандартные индентификаторы. Аргументом этих функций является значение некоторого арифметического вы­ ражения, обозначаемого в ; оно всегда пишется в скобках. Идентификаторы стандартных функций и смысл самих стандартных функций поясняются следующим образом:

вЪа (Е)

 

-

абсолютная величина значения

е

5

 

 

 

 

+1,если

Е> 0

 

 

 

 

sign (Е)

=

* О.если

е

-

знак значения Е

 

 

 

 

-1,если

Е < 0

 

 

 

 

sgrt

(е )

-

корень квадратный из значения

Е

;

aln

(Е)

 

-

синус значения Е [

^

* g L 5 T. BHI"

cos

(Е)

 

-

косинус значения в ]

erctan

(Е)

-

главное значение арктангенса величины в ,

 

 

 

 

выраженное в радианах;

 

 

 

In (Е)

 

-

натуральный логарифм значения'

Е

;

ехр

СВ)

 

-

показательная функция значения

Е

;

entier

(В)

-

наибольшее целое число, не превосходящее зна­

 

 

 

 

чения в

 

 

 

 

 

Оператор присваивания

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


23 -•

МГ0Л-60 построена из ряда операторов различного типа, включая и такие операторы, которые определяют последовательность выполз нения других операторов. Начнем рассмотрение с оператора ггрис“ ваивания, работа которого заключается в присвоении значения одной или нескольким переменным. Простой оператор присваивания имеет следующий вид:

переменная : = выражение .

Это не равенство! Такая запись означает, что значение пере­ менной, стоящей слеза, заменяется значением выражения, стоя­ щего справа.

Приведем несколько примеров операторов присваивания и

подробно поясним их работу:

 

г I = 3

-

заменить настоящее

значение (т.е. то

 

 

значение, которое она имела к этому

 

 

моменту) переменной

ж на значение

 

 

3 ;

 

omega s=theta

*6 ,2 8 3 2 -

заменить настоящее

значение перемен­

 

ной

omega

на значение

theta

+

 

+6.283

, при

этом используется, зна­

 

чение переменной theta

, присво­

 

енное ей к данному моменту;

 

aeriv:=N у cos(eng)f(N-x)- заменить настоящее значение пере­

 

 

м е н н о ^ ^ eriv

на значение

 

 

N СОВ

1 (eng)

, при этом исполь­

 

зуются значения переменных Н ж ang,

 

присвоенные им к данному моменту;

 

k : a i - 1

_ заменить настоящее значение к

на

 

его настоящее значение, уменьшенное

 

на

единицу.

 

 

 

 

Подчеркнем, что всем переменным,

входящим в правую часть

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

В некоторых случаях мы сталкиваемся с тем, что перемен-


24

ная, стоящая слева, имеет тип, отличный от типа, который име­ ет переменная , стоящая справа. В этом случае определяющим является тип переменной, стоящей слева , т.е. происходит из­ менение типа у значения переменной, стоящей справа, при этом иногда применяется округление.

Приведем некоторые обычные формулы и соответствующие им операторы присваивания, при этом идентификаторы переменных выбраны так, чтобы указать на смысл исходной переменной, но это, конечно, не обязательно

R з

А. »

Вх

 

 

0 +

Ю

 

 

ji

=

т гт -

+

- Г &

,

V

 

х 2

-

Y2

 

 

х

 

 

2

 

у

 

х

 

■¥

Х*-

 

0=

 

 

 

 

г 1г ?

к,

 

1 . 1 1 2 -------- —

 

 

 

 

Г1 - г 2

 

J = 4к - 61с, к 2 ,

к

= 12

 

,

 

 

J T =

3.1415927

,

1= _-| р 1п (а * Ьв

Ы„СЙ =М *•

2J ,

 

 

-It:= ( А+ В х х ; / (C-f-В ”

г )

;

Betai=

-1 /

( 2 *

r H A t 2 / ( 4 *

х ? 2 ) f

Ру: =х я ( x f 2 - Y t 2 ) /( x t 2 + r f 2 ) ;

 

 

 

 

 

1

 

 

Ci

 

=1.112

* r i

« r2 / ( r l - r 2 ) *

к j

J

i

i 4 < - k - 6

 

;

 

к

:

=

12

,

 

 

 

p is

=

3 Л415927

j

 

 

Ii=

- l / ( e x p ) x

l n f s + l ) »

e x p ( p x x ) ) .

Гнев = 1

+ 1 »

I

:

=

I

1

{

тнеа =

"ТСЛ

»

T

;

=

n

=*

I .

 

 

 

 

 

 

т

-

т?

»

I

s

=

1 1 2 .

 

•СЛ1

 

 

 

 

 

 

У s в т о ^ е '(.е ва ^ Ь ) .

V

i

= ercta n (ex p ( m * x ) * s o r t(a /h ))


25

Как видно из приведенных примеров, написание операторов прис­ ваивания в АДГ0Л-60, как правило, не вызывает трудностей, но все же приведем несколько примеров их ошибочного написания и отметим допущенные ошибки.

X! =

2х +А'

3 . 1 4 :=

х - а

gamaa«= 1? 6 ? 8 , 982+d e l t a .

а 1* х # 2 + Ъ* х + с • = О

-ш j = if 4

as =((х + у)а f 2 + (R - S)/I6 .8

-опущен знак умножения;

-слева должна стоять перемен­ ная;

-запятая в константах запре­ щена;

-слева может стбять только одиночная переменная, а не выражение;

-переменная слева должна быть написана без знака;

-количество открывающих и закрывающих скобок неодина­ ково; пропущен знак умножения,

Элементы организации программы

Программа на МГОЛ-бО в основном состоит из операторов, т.е. приказов на выполнение некоторых действий. -Операторы программы выполняются в естественном порядке до тех пор, по­ ка не встретится приказ, изменяющий этот порядок. Последо­ вательность выполнения операторов может нарушаться несколь­ кими способами, в том числе:

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

условным оператором, позволяющим выполнять операторы в той или иной последовательности в зависимости от заданных величин или полученных результатов.

26

Вследствие возможности передачи управления, т.е. выпол­ нения операторов не в естественном порядке, а также по другим причинам, необходимо.точно указывать, где кончается каждый оператор. Для этого после окончания каждого оператора ставит­ ся Или точка'с запятой, или слово snd_ , или слово else . Использование каждой из этих возможностей обусловлено цравилами, которые будут изложены ниже. Сейчас заметим только, что наиболее часто употребляется точка с запятой. Во многих слу­ чаях возникает необходимость рассматривать группу операторов как один оператор. В таком случае используются так называемые

операторные скобки - слова

begin

и

end

. Перед группой

ставится слово

Begin

, а после нее -

слово

 

end_

. Вся

эта группа будет называться составным оператором.

Заметим,

 

что перед словом

end

- можно не ставить точки

с запятой.

 

Внешне очень похожа на составной оператор конструкция

 

блока. Блок также заключен в операторные

скобки

Begin

и

 

end

, но в него входят не только операторы,

но и описания,

 

которые

следуют

сразу за словом besin

. Существуют различ­

ные описания, но во всех случаях каждая переменная должна

 

быть описана как имеющая тип real

,

integer

или

 

 

Boolean

(вещественный,

целый или

булевский). Каждая про­

грамма должна быть блоком, т.е. начинаться со

слова begin

.

затем должны быть помещены описания, после них - операторы и

 

заканчиваться программа должна словом

 

. Из дальней­

 

шего будет видно, что блочная структура программы не только

 

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

 

гораздо больше.

 

 

 

 

 

 

 

 

 

Метки и операторы перехода

В программе часто приходится сталкиваться с необходи­ мостью того, чтобы некоторые операторы были как-то обозначе­ ны. Для этого в АЛГОЛ-60 употребляются метки, являющиеся .как' бы идентификаторами операторов. Метка - это любое целое число без знака или любой идентификатор. За меткой всегда ставится двоеточие, чтобы отделить ее от оператора, перед которым она