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