sплюспр”+”; укзн := ветра инее маркер = ” і” то

s плюспр (подав I ”1” I ”il” ! ”1” ”1”);

есть знак :=ложь; пн := истина;

а плюспр ”+”; укзн := вегр а

инее маркер = ”Ь” то

а плюспр (да + нет) ) нет;

нет знака :'= истина

инее маркер = ”а” то а плюспр

(подав І I лит с; проверить позицию (f);

вывести литеру (f, с);

с);

нет знака := истина

инее маркер = ”г”

то пропуск все

кц

кц; ' '

если нет знака то s := s [2:] все конец;

  1. Двоичный обмен

{р двоичном обмене значения, полученные выстраиванием элементов списка данных (п. 10.3.3.), обмениваются одно за другим через данный файл. Способ, которым такие значения хранятся в книге, определен только до такой степени, чтобы значение вида М, выведенное на данную позицию, можно было впоследствии ввести обратно с той же позиции в имя вида 'имя М' (М — один из тех видов, из которых объединен вид провывод). Отметим, что в ходе ввода в имя, именующее массив, число прочитанных элементов будет равно существующему числу элементов, именуемых этим именем.

После каждого значения текущая позиция продвигается на соответ­ствующую величину и на конце каждой строчки или страницы вызывается подходящая процедура обработки события; если она вырабатывает ложь, ищется следующая хорошая позиция литеры в данной книге (п. 10.3.3).

Для двоичного вывода можно использовать процедуры дв вывод (10.3.6.1.а) и дв зап (10.5.l.h), для двоичного ввода процедуры дв ввод (10.3.6.2.а) и дв чит (10.5.1.і)

  1. проц Ч'В двоичное = (имя файл f, провывод х) [ ] лит:

с значение вида 'вектор из литер', нижняя граница

которого равна единице, а верхняя граница зависит от значения 'книга из f' и от вида и значения данного 'х', кроме того,

х = из двоичного (f; х, в двоичное (f, х)) с;

  1. проц ^из двоичного= (имя файл f,

провыводу, L ] лит с) провывод:

с значение, если оно есть, вида значения, выдаваемого ’у’, такое, что

с = в двоичное (f, из двоичного (f, у, с) ) с;

  1. . Двоичный вывод.

  1. проц дв вывод = (имя файл f, [ ] выводимое выв) пуст:

если открыт из f то

настроить на двоичное (f); настроить на запись (f);

для к до вегр выв

цк [ ] провывод у = стройвывод выв [к];

для j до вегр у

цк [ ] лит двоичн = в двоичное (f, у [j]);для і до вегр двоими

цк след позиция (f);

настроить на двоичное (f);

имя позиция тпоз = тпоз из f, ппоз = заполн из книга из f;

выб текст из f в

(подвтеКст t2):

t2 [р из тпоз]

[1 из тпоз]

[с из тпоз] :=двоичн [і]

быв;

с из тпоз +:= 1;

если тпоз вне ппоз то цпоз := тпоз

инее возм установка (f)

Л позиция (р из ппоз, 1 из ппоз, 1) вне тпоз то ппоз := тпоз;

(сжимаем (f) I

с размеры строчки и страницы, содержащих логический конец книги,

и всех последующих строчек

и страниц могут увеличиться с) все

кц

кц

кц

иначе не определено

все;

проц (имя файл, выводимое) пуст put bin = дв вывод; 10.3.6.2. Двоичный ввод.

а) проц дв. ввод = (имя файл f, [ ] вводимое вв) пуст: если открыт из f то

настроить на двоичное (f); настроить на чтение (f);

длякдовегрвв

цк [ ] проввод у = стройввод вв [к];

для j до вегр у

ЦК

провывод yj = выб У 0 ] в

  • (имя Д цел і) : і >, < (имя Д бит г): г

  • (имя Д компл идк) : идк >,

(имя лог Ь) : Ь, < (имя Д бит идб): идб >,

(имя лит с); с, (имя [ ] лит s) : s, . (имя строк ис) : ис быв;

[1 : вегр (в двоичное (f, yj)) ] литдвоичн;

для і до вегр двоичн

цк след позиция (f); настроить на двоичное (f);

имя позиции тпоз = тпоз из f;

двоичн [jj := '

выб текст из f в

(подвтекст t2):

t2 [риз тпоз] [1 из тпоз] [сиз тпоз] быв;

сизтпоз+:=1

кц;

выб у [j] в

  • (имя Д цел идц): (из двоичного (f, идц, двоичн) I

(Д цел дц) : идц := дц) >,

  • (имя Д' вещ идв): (из двоичного (f: идв, двоичн) I

(Д вещ дв) : идв := дв) >,

  • (имя Д компл идк) :

(из двоичного (f, идк, двоичн) I

(Д компл дк): идк := дк) >,

(имя лог ил): (из двоичного (f, ил, двоичн) I (лог л): ил := л),

  • (имя Д бит идб) : (из двоичного (f, идб, двоичн) I (Д бит дб): идб := дб) >,

(имя лит ил): (из двоичного (f, ил, двоичн) I (лит л): ил := л), ч

(имя [ ] лит имл) : (из двоичного (f, имл, двоичн) I (лит мл): имл := мл),

(имя строк ис) : (из двоичного (f, ис, двоичн) I

([ ] лит с): ис := с) быв

кц ,

кц

иначе не определено все;

проц (имя файл, [ ] вводимое) пуст get bin = дв ввод;

  1. Системное вступление и список задач

    1. Системное вступление

Представление системного-вступления получается из нижеследующей формы, к которой могут добавиться дальнейшие формы, не определяемые в настоящем стандарте. { Синтаксис текстов-программы обеспечивает, что никакое описание, содержащееся в этом системном вступлении, не может противоречить никакому описанию в стандартном-вступлении. Предпола гается, что эти дальнейшие формы могли бы содержать описания, необхо димые для правильной работы любых системных-задач, которые могут до бавиться (реализациями, как это предусмотрено в 10.1.2.d) J а) сема *тномы = (сема s; F из s := ПЕРВ цел:= 0; s);

  1. Список системных задач

Представление £ первой} составляющей системной-задачи даннргс < списка-системных-задач получается из нижеследующей формы. Другие си- стемные-задачи, если они будут, не определяются настоящим стандартом {, но их можно определить в реализации, чтобы учесть конкретные свой­ства ее операционной обстановки, особенно в связи с тем, что она взаимодействует с выполнением собственно-программ (см., например, 10.3.1.l.dd)J

а) цк вниз гномы; не определено; вверх защита связей кц _

{Предлагается, что вызываемая здесь процедура не определено, ко­торая запускается посредством вверх гномы всякий раз, когда закрыва­ется какая-нибудь книга, может реорганизовать как цепочку связок до­ступные книги, так и цепочку снятые книги, путем устранения книги, если она не должна быть доступна для последующего открытия, или путем вставки ее в цепочку связок еще несколько раз, если для нескольких соб­ственно-программ требуется позволить читать эту книгу одновременно. Всякий раз, когда дается вверх гномы, семафор защита связей уже внизу и остается в этом положении, пока осуществляется рассматриваемая реорга­низация.}

  1. С о б с т в е н н ы е вступления и заключения

    1. Собственные вступления

Представление собственного-вступления каждой задачи-пользователя получается из нижеследующих форм, к которым мОжно добавить другие такие формы - они могут понадобиться для правильной работы средств, определяемых составляющим библиотечным-вступлением данного текста- программы {, например, описания и вызовы открыть для дополнительных стандартных файлов^ . Однако для каждого определяющего-ОБОЗНАЧЕ- НИЕ-индикатора-в-новом-с-новыми-!ПАРАМИ-с-СЛОЕМ2-выдающего-ПРИЗ- НАК, содержащегося в каждой такой дополнительной форме, должен вы­полняться предикат 'если ОБОЗНАЧЕНИЕ для ПРИЗНАКА не зависит от 'ПАР1' {7.1.1-а, с}{, т.е. не может возникнуть противоречия ни с каким описанием, содержащимся в стандартном-вступлении^ .

  1. Д цел Д пред псч yi псевдослучайное число 0 :=

окр (Д макс цел/Д 2);

Д цел L last random = Д пред псч;

  1. проц Д псч = Д вещ;

Д след псч (Д пред псч);

проц Д вещ L random = Д псч;

  1. файл станд ввод, станд вывод, станд обмен:

имя файл stand in = станд ввод; »

имя файл stand out = станд вывод;

имя файл stand back = станд обмен;

открыть (станд ввод, „ ”, станд канал ввода); открыть (станд вывод, „ ”, станд канал вывода);

. открыть (станд обмен, „ ”, станд канал обмена);

  1. процпеч=([ ] об (выводимое,

проц (имя файл) пуст) х) пуст:вывод (станд вывод, х) ;

проц (об (выводимое,

проц (имя файл) пуст)) пуст print = печ, зап = печ, write = печ;

  1. проц чит = ([ [ ] об (вводимое,

проц (имя файл) пуст) х) пуст:

ввод (станд ввод, х);

проц (об (вводимое, проц (имя файл) пуст)) пуст read = чит;

  1. проц ф печ = ([ [ ] об (выводимое, формат ) х) пуст:

ф вывод (станд вывод, х),

проц ф зап = ([ [ ] об (выводимое, формат) х) пуст:

ф вывод (станд вывод, х);

проц ([ [ ] об (выводимое, формат)) пуст prititf = ф печ, writef = ф зап;

  1. проц ф чит ([[] об (вводимое, формат) х) пуст:

ф ввод (станд, ввод, х);

проц ([ [ ] об (вводимое, формат)) пуст readf = ф чит;

  1. проц дв зап = ([ [ ] выводимое х) пуст:

дв вывод (станд обмен, х);

проц ([ [ ] вводимое) пуст write bin = дв зап;

  1. проц дв чит = ([ [ ] вводимое х) пуст:

дв ввод (станд обмен, х);

проц ([ [ ] вводимое) пуст read bin = дв чит;

  1. Собственные заключения

Представление собственного-заключения каждой задачи-пользователя получается из нижеследующей формы, к которой можно добавить другие такие форм.ы — они могут понадобиться для правильного функционирова­ния возможностей, определенных в составляющем библиотечном-вступле- нии данного текста-программы { , например, вызовы процедуры снять для дополнительных стандартных файлов J .

a) stop: стоп: снять (станд ввод); снять (станд вывод); снять (станд обмен)

ПРИЛОЖЕНИЕ 1 Справочное

ИСТОРИЧЕСКАЯ СПРАВКА

Язык Алгол 68 был разработан в рабочей группе 2.1 (РГ 2.1) Международной Федерации по обработке информации (ИФИП).

В период с 1963 по 1968 гт. на заседаниях РГ 2.1 обсуждались подходы к созда­нию нового языка и различные проекты языка.

В 1968 г. РГ 2.1 после обсуждения ряда последовательных версий приняла описа­ние языка, разработанное в Амстердаме А. ван Вейнгаарденом, Б. Майу, Дж. Пеком и К. Костером. Этот язык, получивший по году принятия название Алгол 68, был одоб­рен для публикации Генеральной ассамблеей ИФИП. Сообщение об Алголе 68 было опубликовано на английском языке (A. van Wijngaarden (Editor), B.l.Mailloux, J.E.L. Peck and C.H.A Koster. Report on the Algorithmic Language ALGOL 68, Numerische Mathe- matik, Vol. 14, pp. 19-218, 1969) а также переведено на ряд других языков, включая русский (Сообщение об алгоритмическом языке Алгол 68: Пер. с англ. А. А. Берса, А. П. Ершова, Л. Л. Змиевской, А. Ф. Papa // Кибернетика. - Киев. - 1969. - №6, - -1970. - №1.

В последующие годы Алгол 68 обсуждался и испытывался как членами РГ 2.1, так и вне ее, что привело к разработке нового варианта языка, содержащего целый ряд изменений, особенно в способе описания. Новый вариант в 1974 г. был принят РГ 2.1, затем утвержден техническим комитетом 2 (ТК 2) по программированию ИФИП и одобрен для публикации Генеральной Ассамблеей ИФИП. Он был опубликован в 1975 г. (Revised Report on the Algorithmic Language ALGOL 68. Edited by A.van Wijngaar­den, B.l.Mailloux, J .E.L. Peck, C.H.A.Koster, M.Sintzoff, C.H.Lindsey, L.G.L.T. Meertens and R.G. Fisker. Acta Informatica.,Vol. 5. Fasc. 1-3,1975).

Эта публикация была принята в качестве окончательного определяющего доку­мента для Алгола 68, не подлежащего каким бы то ни было изменениям. Различные дополнительные возможности, предлагавшиеся в дальнейшем реализаторами языка, а также самой РГ 2.1, официально не включены в Алгол 68 и не отражены в настоящем стандарте.