
книги из ГПНТБ / Землянский, А. А. Транслирующая система с языка АЛГЭК-М на ЭВМ Минск-32 учеб. пособие
.pdf4 .4 . Пустые операторы |
|
|
|
|
|||
4 .4 .1 . Синтаксис |
|
|
|
|
|||
/:пустой опѳрѳтор> |
<спусто> |
|
|
|
|
||
4 .4 .2 . |
Семантика |
|
|
|
|
||
Пустой оператор не выполняет никакого действия. Он монет |
|||||||
служить для размещения метки. |
|
|
|
|
|||
4 .4 .3 . Примеры |
запись |
Ошибочная |
запись |
||||
Правильная |
|||||||
Н8Ч8ЛР |
В : |
|
начало |
кон: |
А:=0 |
конец • |
|
. . . ; кон: конеп |
|||||||
4 .5 . Условные операторы |
|
|
|
|
|||
4 .5 .1 . Синтаксис |
"если";>/ < .услови ѳ > |
<оператор |
|||||
<условный оператор> ::= ^оператор |
|||||||
цикла>/^мѳтка >■ |
^условный оперѳтор> |
|
|
|
|||
^оператор |
"еслч"> |
::= ^.условие > |
^.безусловный оператор > |
||||
^ усл о ви е > : : * |
если, алогическое выражение > |
то |
|
|
|||
^безусловный |
опѳратор> : := 2'основной опера тор>|^составной |
||||||
оператор >| |
|
|
|
|
|
||
4 .2 .5 . Семантика |
|
|
|
|
Условные операторы приводят к пропуску или выполнению некото рых операторов в Зависимости от текущих значений логических выра жений.
4 .5 .2 .1 . Оператор "есл и ". Безусловный оператор, входящий в оператор "если", выполняется в тон случае, когда логическое выра жение, вхрдящѳѳ в условие, является истиным. В противном случве он пропускается и действия продолжаются, начиная со следующего оператора.
4 .5 .2 .2 . Условный оператор вида: ^ условие > ^.оператор цикла>
Оператор цикла, входящий в условный оператор, выполняется в том
39
случае, когда логическое выражение, входящее |
в условие, |
являет |
|||||||||||||||||||
ся истидым. В противном случае |
он пропускается и действия про |
||||||||||||||||||||
должаются, начиная со следующего |
оператора. |
а |
|
|
|
|
|
|
|
||||||||||||
4 .5 .3 . Примеры |
|
|
|
запись |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
Правильная |
|
|
1.1 |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
если Б = 4 то на |
|
|
|
|
|
|
|
|
|
с |
|
||||||||
|
|
если А>В |
|
то А : = В |
|
|
|
|
Bill; |
|
[К 1 |
||||||||||
|
|
если |
К |
ф |
М |
|
то |
начало ВГі] |
: |
= |
Р:=В |
||||||||||
|
|
если |
|
Н L‘ 7j4B |
f l , Г |
^ элемент |
|
К] |
|
конек |
|
||||||||||
|
|
|
|
|
то для |
|
|||||||||||||||
|
|
|
|
|
|
L |
:=К:К+ІО |
цикл |
начало |
А Г К І]:= І> Ш |
|||||||||||
|
|
Ошибочная |
запись |
|
М £"КІ] := P fV J конец |
|
|||||||||||||||
|
|
|
на |
М |
|
|
|
|
|
|
|
|
|
||||||||
|
|
если |
7 |
] В V 4 |
то |
|
|
|
|
|
|
|
|
|
|||||||
|
|
если Ѵ А > В |
|
то А :=В |
целая |
А; |
|
ВГі] |
:=Вр7- |
|
|||||||||||
|
|
если |
К^М |
|
[до начало |
|
|
||||||||||||||
|
|
|
Р:=В |
|
|
К] |
конец |
|
|
|
|
|
|
|
|
|
|
||||
|
|
если77 |
|
Н С7}Д.В |
[ І , Т |
элемент к]тр |
|
для |
|
||||||||||||
|
|
|
|
L |
:=К:К+І0 цикл |
|
|
|
|
|
|
|
|
|
|||||||
|
|
если |
|
А |
|
|
|
|
|
|
|
|
|
||||||||
4 .6 . |
|
|
|
[ к ] |
:= |
F |
то |
В := І |
|
|
|
|
|
|
|
|
|||||
Операторы цикла |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
4 .6 .1 . Синтоксис |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
^оператор цикла > ::= ^заголовок цикла > «соператорядыетка ? |
|
||||||||||||||||||||
/:оператор |
циклв> |
для |
|
д идентификатор |
переменной |
|
типа |
||||||||||||||
дзаголовок |
цикла> ::= |
|
|
||||||||||||||||||
цѳлое> := ^.список циклам |
|
цикл |
|
|
|
|
|
|
|
|
|
|
|
||||||||
дсписок цикла> : ;= дсписок арифметических выражении>( |
|
|
|
||||||||||||||||||
дарифметическое вырааенке> |
|
шаг |
^арифметическое |
|
выражением |
||||||||||||||||
до |
^арифметическое |
|
выражение>/ < арифметическое |
|
выражение> : |
40
^арифметическое выражением
дсписок арифметических выражѳний> ::= ^арифметическое выраке-
ние>/<еписок арифметических выражений^- , дарифметическое
выражением
4 .6 .2 . Семантика Заголовок цикла заставляет стоящий за ним оператор ^
выполняться повторно несколько раз или ни р азу . Кроме того,он осуществляет последовательные присваивания значений идентифика
тору переменной типа целое и/или вещественное в дальнейшем будем именовать "параметр цикла", указанному в данном заголовке.
Этот процесс может быть пояснен следующей схемой:
-------------------------------1
начало; проверка; оператор; продвижение; преемник список цикла исчерпан
В этой схеме слово "начало" означает: произвести первое присваивание в заголовке цикла. "Проверка" означает: если очеред
ное присваивание допускается заголовком цикла, то |
перейти |
на |
выполнение оператора ^ следующего за заголовком |
цикла, |
в |
противном случае - продолжвть выполнение программы |
с оператора, |
следующего за оператором цикла. "Продвижение" означает: произ
вести очередное присваивание |
в |
заголовке цикла. |
|
4 .6 ,3 . |
Элементы списка |
цикла |
|
Список |
цикла дает правило |
для получения значений, которые |
последовательно присваиваются параметру цикла. Эта последова тельность значений получается из элементов списка цикла путем
их последовательного перебора в порядке написания. Последователь ность значений, порождаемая каждой из трех разновидностей элемен тов списка цикла, и соответствующее выполнение оператора опреде ляется следующими правилами.
41
4 .6 .3 .1 . Арифметическое выражение. Этот элемент списка
цикла задает только |
одно значение, |
а именно значение |
данного |
|||||||||||
арифметического выражения, вычисленное£непосредственно. |
перед |
|||||||||||||
соответствующим выполнением |
оператора |
|
|
|
||||||||||
4 .6 .3 .2 . Элемент типе арифметической прогрессии |
|
|
||||||||||||
Элемент, |
имеющий вид А шаг В до С , |
где А ,В |
и С - арифметичес |
|||||||||||
кие выражения, |
ведает порядок выполнения, |
который можно |
описать |
|||||||||||
с помощью дополнительных операторов |
следующим образом: |
|
||||||||||||
|
|
|
L |
I : |
ас |
jm(V-tygl |
|
V |
:=А; |
то на .ЭЛЕМЕНТ ИСЧЕРПАН |
||||
|
|
|
|
Ѵ .- - ѵ * в ; |
G/S(ß)>0 |
|||||||||
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
на |
|
|
|
|
|
|
|
||
|
|
|
|
|
L |
I ; |
|
|
|
|
|
|
|
|
где V - |
|
|
|
. . . |
ЭЛЕМЕНТ ИСЧЕРПАН : . . . |
|
|
|
||||||
|
параметр |
цикла и "ЭЛЕМЕНТ ИСЧЕРПАН" указывает на пере |
||||||||||||
ход либо к вычислениям, соответствующим следующему элементу |
||||||||||||||
списка цикла, либо, |
если данный элемент типа арифметической |
|||||||||||||
прогрессии |
стоит |
последним в |
списке, к следующему оператору |
|||||||||||
программы; |
|
5 I& / V - |
функция, |
определяющая |
знак.' |
при шаге, |
||||||||
4 . |
6 |
.3 .3 . Элемент типа арифметической |
прогреосии |
|||||||||||
равном единице. |
Элемент, имеющий вид А :С , |
где А и С - |
арифмети |
|||||||||||
ческие выражения, |
трактуется |
кѳк элемент, |
имеющий вид |
|
|
|||||||||
А шагУдо С . |
|
|
|
параметра |
цикла после выхода |
|
|
|||||||
4 .6 .4 . Значение |
|
|
||||||||||||
После |
выхода |
из |
оператора |
ä |
(предполагаемого |
составным) |
||||||||
|
посредством какого-либо оператора |
перехода |
значение |
параметре |
|
цикла будет таким, каким оно было |
непосредственно |
перед выпол |
||
нением оператора перехода. |
списке |
цикла, |
то |
значение |
Если выход вызван исчерпанием |
42
параметра цикла после выхода не определено. |
оператор цикле |
|||||||||||
4 .6 ,5 . |
|
Оператор перехода, |
ведущий в |
|||||||||
Результат действия оператора перехода, стоящего вне опера |
||||||||||||
торе цикла и обращающегося к метке внутри операторе цикла, не |
||||||||||||
определен. |
Выполняемый в цикле |
|
оператор |
5* |
не должен |
изменять |
||||||
4 .6 .6 . |
|
|||||||||||
ни значения параметра цикла, |
ни арифметического |
выражения, |
обоз |
|||||||||
наченного через С . |
|
|
Превильная |
запись |
|
|
|
|||||
4 ,6 .7 . |
Примеры |
|
|
|
|
|
||||||
|
|
для И :* І |
шаг I до 10 цикл |
|
|
|
||||||
|
|
|
А Г И ] |
:=0; |
|
а |
|
|
|
|
||
если А |
ДЛЯ 7 s s ls l0 0 |
цикл |
|
|
|
|
|
|||||
Ш |
=3 |
то |
начало A I:=A l'X J |
$ |
A2:=Al'J-j+l |
|
||||||
|
|
конец , |
|
|
|
|
|
|
|
|
|
|
|
|
щя |
К :=3, |
|
F A fr B .II. 4 цикл |
|
ГК] :<=М;М:<=а |
|||||
|
|
|
начало А :=ВІ ЦК] ; B I |
|||||||||
|
|
для |
И := І |
|
Ошибочная запись |
|
конец |
|
||||
|
|
шаг - I |
|
до |
10 цикл |
|
|
|
||||
|
|
для |
А ГИ] |
:=0} |
цикл |
|
|
|
||||
|
|
й := - І[ |
: |
-100 |
|
|
|
|
||||
|
|
|
А |
|
й ] |
:=’і ; |
|
цикл |
|
|
|
|
|
|
для[К :=3, |
|
А+В, 1:10 |
|
|
|
|||||
начало А:=В |
К] ; |
|
В |
[К] |
:d i; |
М:=А |
конец |
|
||||
4 .7 . |
Операторы |
библиотеки |
|
|
|
|
|
|
||||
4 .7 ,1 . |
Синтаксис |
|
<.опарагор обращения |
к программа |
из |
|||||||
сопѳрвтор |
библиотеки> |
43
БПІ >/<оператор обращения к программе из БП2>/<оператор обмена с внешним устройством > 4 .7 .2 . Семантика
Операторы библиотеки служат для включения в исходную языко вую программу личных программ пользователя, программ, находящих
ся на системной ленте, а также программ, осуществляющих обмен |
|||||
информации с внешними устройствами. |
|
|
|||
Синтаксис и семантике операторов обращения к программам биб |
|||||
лиотеки |
программ (БПІ |
и БП2) изложены во второй глава, |
а опера |
||
торов обмена с внешними устройствами |
в главе 4 . . |
|
|||
4 .7 .3 . Примеры |
|
Ошибочная запись |
|||
Правильная запись |
Х. У) |
||||
библиотека |
( |
библиотека |
X) |
||
библиотека ('КОРЕНЬ'’,X ,У ) |
библиотека ('К0РЕНЬ;,У) |
||||
5 . |
Программа и |
описания |
некоторых свойств |
величин, |
|
Описания служат |
для определения |
используемых в программе, и для связи с их идентификаторами.
Описание идентификаторе Аіеѳт оилу только в одном (составном)
блоке. Вне данного (составного) блока конкретный‘идентификатор
монет использоваться для других целей (см . раздел |
5 .1 .2 .) . |
||
В динамике |
работы программы это влечет за собой |
следующее: |
|
с момента входа |
в (составной) блок (через начало, |
так |
как |
внутренние метки локальны, и, следовательно, нодостижимы извне)
все величины, описанные в (составном) блоке, употребляются в
смысле, |
|
соответствующем природе данных описаний. Если эти вели- |
|
чины уже |
о |
другими описателями, находящимися вне- |
|
были определены |
|||
(составного) блока, то на |
некоторое время им предается новый |
||
смысл. |
С |
другой стороны, |
те идентификаторы, которые не описаны |
44
в (составном) блоке, сохраняют прешіий смысл. |
|
|
После выхода из (составного) блока (через КОНЕЦ) все |
теря |
|
идентификаторы, которые были |
описаны в (составном)блоке, |
|
ют свой локальный смысл. |
не должен быть в (составном) |
блоке |
Ни один идентификатор |
||
описан более одного раза, за |
исключением случаев, когда он |
является идентификатором элемента структуры составной единицы
информации |
(см. |
раздел 5 .4 . |
Описание |
|
составной). |
|
||||||
|
Идентификаторы, |
введенные любым описанием, не являющимся |
||||||||||
элементом описания структуры (см . раздел |
5 .4 . |
Описание |
состав |
|||||||||
ной), считаются |
идентификаторами первого |
уровня. |
|
|||||||||
|
5 .1 . Программа |
|
|
|
|
|
|
«• |
|
|||
|
5 .1 .1 . |
Синтаксис |
|
|
|
|
|
|
|
|
|
|
^.программа? ::= дблок?/^составной блок> |
|
|
||||||||||
£.блок> ::= ^непомеченный блок?/<меткэ? |
< блок?' |
|
||||||||||
^непомеченный блок> ::= ^начало блока? ; <конец блока> |
||||||||||||
днѳчадо блока? ::= |
нвчало |
^совокупность |
описаний? |
описаний* |
||||||||
^.совокупность |
описаний? |
: ; = < описание>| «совокупность |
||||||||||
«.описание? |
«описание |
переменной |
> 1 |
«-описание ыассива>| |
||||||||
«описание? |
::= |
|
|
|||||||||
4 |
: описание составной > / |
«. описание |
переключателя > |
|
||||||||
вконец блока? |
::= «.совокупность операторов > |
конец |
|
|||||||||
«совокупность |
операторов? |
::= « : оператор?/«.совокупность опера |
||||||||||
|
торов? |
«.оператор? |
|
|
|
|
|
блок ?/« .метка ? |
||||
«соотавной |
блок? ::= « . непомеченный составной |
«составной блок?
«непомеченный составной блок? : : = < начало составного б л о к а ?;
«конец составного блока ?
45
■ снѳчвло составного блокам ::= |
начало |
т. совокупность описаний;»/ |
||||
с |
^начало |
составного блока> ; |
^совокупность описаний> |
|||
|
конец составного блока> ::= < і элемент |
составного |
блока > |
|||
|
коней / |
с |
элемент составного блокв> $ о ф н е ц |
составного |
||
|
блока> |
|
|
бопере ю р > к блок >■ /<. составной |
||
т. элемент составного блока> ::= |
||||||
|
блок> |
|
|
|
|
|
|
5 .1 .2 . Семантика |
|
|
обозначений. |
||
|
ІСѳядый |
(составной) блок вводит новый уровень |
Это реализуется следующим образом. Любой идентификатор, встречаю щийся внутри (составного) блока, может быть определен посредст
вом соответствующего описания, как локальный в данном (составном)
блокѳл Это означает: в) что объект, представленный этим иденти
фикатором внутри денного (составного) блока, на существует вне
(составного) блоке; б) что любой объект, представленный тем же идентификатором вне данного (составного) блока, полностью не доступен внутри (составного) блока.
Идентификаторы (за исключением тех, которые изображают
метки), |
встречающиеся |
внутри (составного) блока и не |
описанные |
|||
в нем, |
не локальны в |
(составном) блоке, т .е . представляют |
одни |
|||
и те же объекты |
как внутри (составного) блоке, таки |
вне его. |
||||
Метка, помечающая оператор, действует |
так, как будто |
она |
описѳ- |
|||
H8 в заголовке |
наименьшего объемлющего составного блока, |
т .ѳ , |
||||
наименьшего составного блока, скобки начало и конец которого |
||||||
заключают этот |
оператор. |
|
|
|
||
Поскольку блок иля составной блок может входить в другой |
||||||
составной блок, |
то концепция локальности и нелокѳльности в |
|||||
составном блока должна пониматься р курсивно. Таким обпааом, |
||||||
идентификатор, |
не локальный в блоке |
и/или составном |
блоке А, |
<6
может быть локальным или на локальным в блока и/или составном блока В, для которого блок и/или составной блок А входит в составной блок В.
5.1.3. Примеры Правильная запись
ВЛ О К И
начало |
|
целое |
И, |
іо |
|
|
начэло |
$ :=0; |
||
|
$ |
|
|
|
а |
|
|
|
|
|
|
|
|
|
[ |
|
]; |
|
|
|
|
целый массив |
|
|
|
|
||||||
|
|
*-0» |
|
|
|
|
|
|
8+ А[и] |
|
для |
И ;= І:І0 цикл |
|
|
|
|
|
||||
|
|
|
|
для И := І!ІО цикл |
||||||
8 := 8 + А [и ] |
|
|
|
|
|
конец |
|
|||
конец |
|
|
|
|
СОСТАВНЫЕ БЛОКИ |
|
||||
|
|
|
|
|
|
|
||||
начало целый массив А [5,10.] } |
начало целое |
массив A/lo]j |
||||||||
целое $ }’ |
б := 0; |
|
|
|
|
для |
И :* І :І 0 цикл |
|||
начало' целые I, |
J j |
|
|
|
|
|||||
для I : * I j 5 цикл |
|
|
|
|
|
|||||
для Т :=І5І0 цикл |
6:=S'>ACI1JJ; |
' |
|
|||||||
если A L I,T J> 0 |
IS |
|
||||||||
|
|
|
|
конец |
|
|||||
конец |
|
|
|
|
|
|
|
|
|
|
5.2. |
Описания переменных |
|
|
|
5.2.1. Синтаксис
^описание переменной>::= <описание переменной типа целое>|
дописание переменной типа вещественное>1 ^описание1перемен ной типа логическое >1 д. описание переменной типа текстовое:*
^описание переменной типа целое>::= целое ^список переменных типа целое>
^ список переменных типа целоѳ^ ::= ^элемент списка переменных
47
типа |
целое?) / список переменных типа ц е л о е ? ,/ . элемент |
||
списка переменных типа целое> |
|
||
/элемент |
списке переменных типа целое> ::= /идентификатор |
||
переменной типа |
целое? |
. |
|
/описание |
переменной |
типа вещественное? |
::= вещественное |
/список переменных типа вещественное?
/список переменных типа вещественное? ::= /элемент спискѳ
переменных типа веществениое>|/список переменных типа
вещественное > } /элемент списка поременных типа веществен
ное >
/элемент списка переменных типа вещественное? ::= ^идентифика
тор переменн-'й типа вещественный?
/описание переменных типа логическое ? : := лоическое ^спи
сок переменных типа логическое?
/список переменных типв логическое? ::= /элемент списка
переменных типа логичѳскоѳ?//список переменных типа логи
ческое?^ /элемент списка переменных типа логическое?
/элемент списка переменных типа логическое? ::= /идентификатор
переменной типа логический>
/описание переменных |
типа текстовый? : := текстовое /список |
.переменных типа |
текстовое? |
/список переменных типа текстовое? : : = /элемент списка пере
менных |
типа |
текстовое?|/список переменных типа текстовое?^ |
|
/элемент списка переменных типа текстовое? |
|||
/элемент списка |
переменных типа текстовое? : : = /идентификатор |
||
переменной типа текстовый?)сидентиаикатор переменной типа |
|||
текстовый? |
вид |
/текстовый формат?^ |
|
5 .2 ,2 . |
Семантика |
|
48