Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Симула.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
394 Кб
Скачать
☆

1.3.4. Возможность применения в специальных областях

Язык СИМУЛА-67 может быть модифицирован для при-., менения в специальных областях путем определения подхо­дящего класса, содержащего необходимые для данной обла­сти понятия.. Такой класс используется затем в качестве префикса" к программе, составленной для данной области.1 Не специалист в программировании может ограничиться ка­ким-либо специальным языком, построенным на базе языка СИМУЛА-67; он будет пользоваться в таком случае лишь знакомыми ему агрегированными понятиями, употребляя их в качестве составляющих «строительных блоков» своей про--граммы. Ему нет надобности знать полный язык СИМУЛА-67.-В то же время опытный программист'имеет в своем распо­ряжении общий язык, и он может расширять «специаль-,1-ный язык», включая в него новые, определяемые им самим

ПОНЯТИЯ. • ,'■-.-'-■ .. ,;- ■ •

Например, при моделировании систем с дискретными со­бытиями обычно употребляется понятие «моделируемо системы» («системное время»). Язык СИМУЛА-67 превра­щается в яз£1к моделирования, поскольку в нем предусмотрен ■

класс SIMULATION (т. е. МОДЕЛИРОВАНИЕ)1). В декла­рации этого класса: . -; <

class SIMULATION;

begin..:. endj

'определены «ось времени», двунаправленные списки, которые ' ■ могут служить в качестве очередей и реестров, а также класс процесс, придающий своим объектам способность организо­вывать свои действия в виде активных фаз, упорядоченных в соответствии с «системным временем».

! Пользователь, желающий написать программу моделиро­вания, начинает ее словами

: SIMULATION begin .......

Если же он хочет сам создать специализированный язык мо­делирования для использования его в своей области, напри­мер для анализа' работы механического цеха, то он может надписать:

SIMULATION class МЕХАНИЧЕСКИЙ ЦЕХ; - " begin end ;

Между begin и end он определяет необходимые ему строи­тельные блоки; например;

process class кран;

, . begin \ end;

!•' process class машина;

begin procedure сбор данных;

i -

end;

и т. д.

н .

I Для описанного таким образом класса транслятором со­ставляется программа, после чего каждый раз, когда возни­кает необходимость воспользоваться СИМУЛОЙ-67 для мо­делирования механического цеха, можно написать

МЕХАНИЧЕСКИЙ ЦЕХ begin \

■

и включить таким путем в программу понятия МОДЕЛИРО­ ВАНИЕ и МЕХАНИЧЕСКИЙ ЦЕХ. . ' :_: - ■ Рассмотренные средства специализации языка требуют,

чтобы транслятор имел механизм для включения в

общую программу отдельно скомпилированных классов (см. разд. 15). -

ч

1.3.5. Возможность обработки списков

Когда имеется много объектов, принадлежащих различ­ным классам и сосуществующих как части одной программы, необходимо иметь возможность присваивать имена отдель­ным объектам, а также связывать объекты друг с другом (например, в бинарные деревья или в списочные структуры других типов). .

Поэтому в язык вводятся величины новых типов — «ссыл­ки». Ссылки «квалифицируются», благодаря чему каждая данная ссылка может указывать (ссылаться) только на те объекты,*-которые принадлежат к классу, упомянутому в ква­лификации (или к подклассам квалифицирующего класса).

Пример:

* ref (заказ) следующий, предыдущий;

Операция, в результате которой ссылка становится име­нем некоторого объекта (т. е. обозначает этот объект), запи­сывается при помощи символа:—(читается — обозначает).

Пример: следующий : — new заказ (101); предыдущий : — следующий ;

ИЛИ ;

следующий : — new плита (50);

(что также допустимо, так как плита есть подкласс класса заказ).

На данные, принадлежащие другим объектам, можно ссылаться и ими пользоваться посредством так называемого «дистанционного обращения», обозначаемого специальной точкой «.»

Пример:

U следующий, номер >- предыдущий, номер then ...;

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

Таким образом специальная точка дает возможность об­ращаться к отдельным элементам «чужой» (т. е. находящейся не в том объекте, который действует) информации.

«Групповое обращение» достигается посредством «присо­единяющих операторов», - ■

Пример:

inspect следующий when плита do begin ..... end;

В операторе между begin и end можно непосредственно обращаться,,ко всем элементам информации, содержащимся в объекте следующий, принадлежащем к классу плита.

В языке СИМУЛА-67 в качестве его части предусматри­вается системный класс SIMSET, который содержит поня­тия, связанные с циклическими двунаправленными списками.

1.3.6. Обработка строк

ч

Язык СИМУЛА-67 содержит новый основной тип вели­чин—«литера». Представление литер зависит от конкретной реализации.

Чтобы обеспечить необходимую гибкость при обработке строк, вводится составной тип, называемый «text». Это поня­тие «текст» тесно связано со средствами ввода — вывода.

1.3.7. Ввод —вывод

\ Серьезным недостатком АЛГОЛА-60 является отсутствие стандартных приемов ввода — вывода и методов для мани­пулирования строками.-

Поскольку универсальный язык программирования дол-'жен иметь в этих областях большую гибкость, в языке СИ­МУЛА-67 приемы ввода — вывода определены и составляют 1 часть языка.

1.4. СТАНДАРТИЗАЦИЯ

Для языка универсального программирования крайне важно, чтобы он был однозначно определен и в то же время допускал возможность расширения (под строгим контролем) в будущем. Такой контроль будет осуществляться Группой Стандарта языка СИМУЛА, состоящей из представителей фирм и организаций, ответственных за трансляторы языка СИМУЛА-67. В уставе Группы указаны твердые правила от­носительно стандартизации и расширения языка в будущем.

Определение языка СИМУЛА, которое должно соблю­даться при любой реализации языка СИМУЛА-67, составляет «Определение Общей Базы языка СИМУЛА-67».

1.5. ОПРЕДЕЛЕНИЕ ЯЗЫКА

- Определение языка, данное в последующих разделах, дол­жно быть дополнено формальным определением языка АЛ-ГОЛ-60 [1]. Синтаксические определения, содержащиеся в

настоящем сообщении, необходимо понимать следующим о - разом: - • ' v - _

Синтаксические понятия, упомянутые, но не определен­ ные в этом сообщении, относятся к синтаксическим опреде­ лениям, данным в работе [1]. /■'.■■■ '. ''.•'' ■ '" -.

Определения в этом сообщении-синтаксических поня­ тий, имеющихся и в работе [1], отменяют данные в ней соот­ ветствующие определения. , ' : . •' .

.-3) Обозначение вида '-..'* "Л :' ■, ... ..

(АЛГОЛ — некоторое синтаксическое понятие) '.

представляет правую часть синтаксического определения, данного в работе [1J для соответствующего синтаксического понятия.

. 2. ДЕКЛАРАЦИИ КЛАССА1)