Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Х. Мёссенбёк, Н. Вирт - Язык программирования Оберон-2

Х. Мёссенбёк, Н. Вирт - Язык программирования Оберон-2, страница 6

PDF-файл Х. Мёссенбёк, Н. Вирт - Язык программирования Оберон-2, страница 6 Языки программирования (53642): Книга - 7 семестрХ. Мёссенбёк, Н. Вирт - Язык программирования Оберон-2: Языки программирования - PDF, страница 6 (53642) - СтудИзба2019-09-19СтудИзба

Описание файла

PDF-файл из архива "Х. Мёссенбёк, Н. Вирт - Язык программирования Оберон-2", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 6 страницы из PDF

Не являясь частью языка, эта среда способствует увеличению мощности Оберона-2 идо некоторой степени подразумевается при определении языка. В приложении D описанысущественные особенности типичной Оберон-среды и даны советы по peализации. Подробностиможно найти в [1], [2], и [3].D1.

КомандыКоманда - это любая процедура P, которая экспортируется модулем M и не имеет параметров. Онаобозначается M.P и может быть активирована под таким именем из оболочки операционнойсистемы. В Обероне пользователь вызывает команды вместо программ или модулей. Это даетлучшую структуру управления и предоставляет модули с несколькими точками входа. Когдавызывается команда M.P, модуль M динамически загружается, если он уже не был в памяти (см.D2) и выполняется процедура P. Когда P завершается, M остается загруженным.

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

Он реализует абстрактнуюструктуру данных Counter, которая содержит переменную-счетчик и обеспечивает команды дляувеличения и печати его значения.MODULE Counter;IMPORT Texts, Oberon;VARcounter: LONGINT;w: Texts.Writer;PROCEDURE Add*; (* получает числовой аргумент из командной строки *)VAR s: Texts.Scanner;BEGINTexts.OpenScanner(s, Oberon.Par.text, Oberon.Par.pos);Texts.Scan(s);IF s.class = Texts.Int THEN INC(counter, s.i) ENDEND Add;26PROCEDURE Write*;BEGINTexts.WriteInt(w, counter, 5); Texts.WriteLn(w);Texts.Append(Oberon.Log, w.buf)END Write;BEGIN counter := 0; Texts.OpenWriter(w)END Counter.Пользователь может выполнить следующие две команды:Counter.Add nCounter.WriteДобавляет значение n к переменной counterВыводит текущее значение counter на экранТак как команды не содержат параметров, они должны получать свои аргументы из операционнойсистемы.

Вообще команды вольны брать параметры отовсюду (например из текста после команды,из текущего выбранного фрагмента или из отмеченного окна просмотра). Команда Add используетсканер (тип данных, обеспечиваемый Оберон-системой) чтобы читать значение, которое следует занею в командной строке.Когда Counter.Add вызывается впервые, модуль Counter загружается и выполняется его тело.Каждое обращение Counter.Add n увеличивает переменную counter на n.

Каждое обращениеCounter.Write выводит текущее значение counter на экран.Поскольку модуль остается загруженным после выполнения его команд, должен существоватьявный способ выгрузить его (например, когда пользователь хочет заменить загруженную версиюперекомпилированной версией). Оберон-система содержит команду, позволяющую это сделать.D2. Динамическая загрузка модулейЗагруженный модуль может вызывать команду незагруженного модуля, задавая ее имя как строку.Специфицированный модуль при этом динамически загружается и выполняется заданная команда.Динамическая загрузка позволяет пользователю запустить программу как небольшой наборбазисных модулей и расширять ее, добавляя последующие модули во время выполнения по меренеобходимости.Модуль M0 может вызвать динамическую загрузку модуля M1 без того, чтобы импортироватьего. M1 может, конечно, импортировать и использовать M0, но M0 не должен знать осуществовании M1.

M1 может быть модулем, который спроектирован и реализован намного позжеM0.D3. Сбор мусораВ Обероне-2 стандартная процедура NEW используется, чтобы распределить блоки данных всвободной памяти. Нет, однако, никакого способа явно освободить распределенный блок. ВзаменОберон-среда использует сборщик мусора чтобы найти блоки, которые больше не используются исделать их снова доступными для распределения. Блок считается используемым только если онможет быть достигнут через глобальную переменную-указатель по цепочке указателей.

Разрывэтой цепочки (например, установкой указателя в NIL) делает блок утилизируемым.Сборщик мусора освобождает программиста от нетривиальной задачи правильногоосвобождения структур данных и таким образом помогает избегать ошибок. Возникает, однако,необходимость иметь информацию о динамических данных во время выполнения (см. D5).D4. СмотрительИнтерфейс модуля (объявления экспортируемых объектов) извлекается из модуля так называемымсмотрителем, который является отдельным инструментом среды Оберон. Например, смотрительпроизводит следующий интерфейс модуля Trees из Гл. 11.27DEFINITION Trees;TYPETree = POINTER TO Node;Node = RECORDname: POINTER TO ARRAY OF CHAR;PROCEDURE (t: Tree) Insert (name: ARRAY OF CHAR);PROCEDURE (t: Tree) Search (name: ARRAY OF CHAR): Tree;PROCEDURE (t: Tree) Write;END;PROCEDURE Init (VAR t: Tree);END Trees.Для типа запись смотритель также собирает все процедуры, связанные с этим типом, и показываетих заголовки в объявлении типа запись.D5.

Структуры данных времени выполненияНекоторая информация о записях должна быть доступна во время выполнения: Динамический типзаписей необходим для проверки и охраны типа. Таблица с адресами процедур, связанных сзаписью, необходима для их вызова. Наконец, сборщик мусора нуждается в информации орасположении указателей в динамически распределенных записях. Вся эта информациясохраняется в так называемых дескрипторах типа.

Один дескриптор необходим во времявыполнения для каждого типа записи. Ниже показана возможная реализация дескрипторов типа.Динамический тип записи соответствует адресу дескриптора типа. Для динамическираспределенных записей этот адрес сохраняется в так называемом теге типа, которыйпредшествует фактическим данным записи и является невидимым для программиста. Если t переменная типа CenterTree (см. пример в Гл. 6), рисунок D5.1 показывает одну из возможныхреализаций структур данных времени выполнения.Рис. D5.1 переменная t типа CenterTree, запись t^, на которую она указывает, и дескриптор типаПоскольку и таблица адресов процедур и таблица смещений указателей должны иметьфиксированное смещение относительно адреса дескриптора типа, и поскольку они могут расти,когда тип расширяется и добавляются новые процедуры и указатели, то таблицы размещены впротивоположных концах дескриптора типа и растут в разных направлениях.Связанная с типом процедура t.P вызывается как t^.tag^.ProcTab[IndexP].

Индекс таблицыпроцедур для каждой связанной с типом процедуры известен во время компиляции. Проверка типаv IS T транслируется в v^.tag^.BaseTypes [ExtensionLevelT] = TypeDescrAdrT. И уровеньрасширения типа запись (ExtensionLevelT), и адрес описателя типа (TypeDescrAdrT) известны вовремя компиляции. Например, уровень расширения Node - 0 (этот тип не имеет базового типа), ауровень расширения CenterNode равен 1.[1] N.Wirth, J.Gutknecht: The Oberon System. Software Practice and Experience 19, 9, Sept. 1989[2] M.Reiser: The Oberon System. User Guide and Programming Manual.

Addison-Wesley, 1991[3] C.Pfister, B.Heeb, J.Templ: Oberon Technical Notes. Report 156, ETH Zurich, March 1991.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5304
Авторов
на СтудИзбе
416
Средний доход
с одного платного файла
Обучение Подробнее