************************************************************************
** **
** Школа Информатики и Программирования
**
** "Восточная Звезда" **
** **
** **
** **
** **
** **
** Методический материал
**
** **
** КУРС МОЛОДОГО ОБЕРОНЦА
**
** **
** **
** **
** **
** **
** Мальков Дмитрий
**
** **
** г. Комсомольск
-на
-Амуре
**
** **
** 13/08
/2014 **
** **
************************************************************************
СОДЕРЖАНИЕ
0. Предисловие........................................................50
1. Введение...........................................................70
2. Зарезервированные слова и синтаксис...............................150
3. Представление данных..............................................210
4. Простые типы данных...............................................370
5. Управляющие конструкции...........................................520
6. Ветвление.........................................................740
7. Цикл с известными границами.......................................920
8. Цикл с условием..................................................1040
9. Структурированные типы данных....................................1320
Упражнения..........................................................1640
Литература..........................................................1820
------------------------------------------------------------------------
-- ПРЕДИСЛОВИЕ
--
------------------------------------------------------------------------
Это краткий курс по быстрому освоению языка программирования
"Оберон-2"
в виде почти правильного расширения
"Компонентный Паскаль",
реализованного в системе
"BlackBox". Этот курс необходим для выполнения
заданий по следующему курсу
"Алгоритмы и структуры данных".
Если вы заметите ошибку или опечатку
, или желаете предложить иные
исправления и дополнения
, присылайте ваши замечания
(с указанием номера
строки с ошибкой
, если возможно
) на адрес
"[email protected]".
------------------------------------------------------------------------
-- ВВЕДЕНИЕ
--
------------------------------------------------------------------------
"Сделай так просто, как возможно, но не проще того".
Альберт Эйнштейн
Oberon
-- язык общего назначения
, созданый автором Pascal и Modula
-2
Никлаусом Виртом
(Niklaus Wirth
) и его коллегами из Швейцарского
федерального технического института г. Цюрих
(ETH Zurich
) в ходе
разработки одноименной операционной системы для однопользовательской
рабочей станции Ceres. Язык и операционная система названы именем
одного из спутников планеты Уран
-- Оберона.
Имеет долгую историю создания
, является наследником Algol
60 (1960),
Pascal
(1970) и Modula
(1979).
Oberon синтезировал более четверти века
исследований Н.Вирта по методологии и языкам программирования. Ему с
учениками удалось добиться точного синтеза
"старых" достижений
структурного и модульного программирования
(представленных еще в
Модуле
-2) с
"новыми" объектными методами
(языки Simula
, Smalltalk ...
).
Вот
, что говорил сам Вирт о своем
"детище": "Он включает в
себя средства, необходимые для объектно-ориентированного
программирования, сохраняя стиль Паскаля, и является результатом моего
стремления к простоте без потери выразительности. В этом должна
состоять сущность языка, равно пригодного как для учебной аудитории,
так и для профессиональной деятельности."
Наращивание мощи языка без его усложнения
-- принцип
, которому
неуклонно следует Н. Вирт. Если рассмотреть эволюцию соотвествующих
языков программирования
(Algol
60 -> Pascal
-> Modula
-2 -> Oberon
) это
становится очевидным. Каждый последующий язык существенно мощнее и
совершенне предыдущего
, но сложность синтаксиса
(количество лексем
) не
только не растет
, а уменьшается
: 1085 -> 1012 -> 887 -> 765!
В
1992 году сотрудничество Н.Вирта с Ханспетером Мёссенбёком
(Hanspeter
Mössenböck
) привело к добавлению в язык ряда новых средств. Новая
версия получила название Оberon
-2. Оберон
-2 представляет собой почти
правильное расширение Оберона и является фактическим стандартом языка
,
который поддерживается большинством современных Оберон
-систем.
Удивительным выглядит то
, что Оберон
-2 оказался проще Оберона
,
расширением которого является. В отношении размера определения
синтаксиса так оно и есть
(765 -> 726). Да и по существу нововведения
Оберона
-2 оформлены очень экономно.
Oberon (наряду с Modula
-2, Forth
, Smalltalk и Refal
) включен в языковой
базис разработки отечественной ОС нового поколения
"Роса".
Начнем сразу с рассмотрения традиционной первой программы
, выводящей
на терминал простое сообщение. Будем использовать диалект Оберона
-2
"Компонентный Паскаль" и систему BlackBox.
В запущенной среде BlackBox откроем новый файл `Menu
-> File
-> New` и
сохраним его `Menu
-> File
-> Save_as` с именем `HW.
odc`. Введем в файл
следущий текст вместе с начальным и конечным блоковыми комментариями
:
(***********************************************************************
* *
* Модуль `HW` для вывода сообщения на терминал
*
* Главная процедура
: `Do`
*
* *
***********************************************************************)
MODULE HW
;
IMPORT Out
;
PROCEDURE Do
*;
BEGIN
Out.
Ln; (* пустая строка
*)
Out.
String("Привет мир Oberon-2!");
Out.
Ln
END Do
;
END HW.
(***********************************************************************
* *
* Конец модуля `HW`
*
* *
***********************************************************************)
Сохраняем текст модуля `Menu
-> File
-> Save`
, компилируем `Menu
->
Dev
-> Compile`. В окне `Log` появится сообщение
:
+--------------------------------(Log
)---------------------------------+
|compiling
"HW" |
| new symbol file 36 0
|
+----------------------------------------------------------------------+
Когда компилирование заканчивается успешно
, система BlackBox
автоматически загружает новый модуль
, но при повторном успешном
компилировании она этого не делает
, тогда нужно перед компиляцией
выгружать старый модуль `Menu
-> Dev
-> Unload`.
Теперь запустим процедуру из нашего скомпилированного и загруженного
модуля. Для этого самый простой способ
, поставить курсор в конец любого
файла
(хоть в конце только что написанного модуля
, хоть в конце файла
`Log`
) и вставить так называемый
"командир" `Menu
-> Tools
->
Insert_commander`. Появится черный круг с белым восклицательным
знаком
-- кнопкой для выполнения команды справа от нее. Пишем справа
команду
, состоящую из названия нашего модуля и через точку название
процедуры
, которую мы хотим вызвать
: `HW.
Do`. В конце файла `Log`
появится
:
+--------------------------------(Log
)---------------------------------+
| |
|Привет мир Oberon
-2
! |
| |
+----------------------------------------------------------------------+