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

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

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

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

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

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

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

xnCOPY разрешает присваивание строки или символьного массива, содержащего ограничитель 0X,другому символьному массиву. В случае необходимости, присвоенное значение усекается додлины получателя минус один. Получатель всегда будет содержать 0X как ограничитель. В20ASSERT(x, n) и HALT(n), интерпретация n зависит от реализации основной системы.Модуль - совокупность объявлений констант, типов, переменных и процедур вместе споследовательностью операторов, предназначенных для присваивания начальных значенийпеременным. Модуль представляет собой текст, который является единицей компиляции.Модуль=MODULE идент ";" [СписокИмпорта] ПоследовательностьОбъявлений[BEGIN ПоследовательностьОператоров] END идент ".".СписокИмпорта =IMPORT Импорт {"," Импорт} ";".Импорт=[идент ":="] идент.Список импорта определяет имена импортируемых модулей.

Если модуль A импортируетсямодулем M, и A экспортирует идентификатор x, то x упоминается внутри M как A.x. Если Aимпортируется как B:=A, объект x должен вызываться как B.x. Это позволяет использоватькороткие имена-псевдонимы в уточненных идентификаторах. Модуль не должен импортироватьсебя. Идентификаторы, которые экспортируются (то есть должны быть видимы в модуляхимпортерах) нужно отметить экспортной меткой в их объявлении (см. Главу 4).Последовательность операторов после символа BEGIN выполняется, когда модуль добавляетсяк системе (загружается).

Это происходит после загрузки импортируемых модулей. Отсюдаследует, тот циклический импорт модулей запрещен. Отдельные (не имеющие параметров иэкспортированные) процедуры могут быть активированы из системы. Эти процедуры служаткомандами (см. Приложение D1).MODULE Trees; (* экспорт: Tree, Node, Insert, Search, Write, Init *)IMPORT Texts, Oberon; (* экспорт только для чтения: Node.name *)TYPETree* = POINTER TO Node;Node* = RECORDname-: POINTER TO ARRAY OF CHAR;left, right: TreeEND;VAR w: Texts.Writer;PROCEDURE (t: Tree) Insert* (name: ARRAY OF CHAR);VAR p, father: Tree;BEGIN p := t;REPEAT father := p;IF name = p.name^ THEN RETURN END;IF name < p.name^ THEN p := p.left ELSE p := p.right ENDUNTIL p = NIL;NEW(p); p.left := NIL; p.right := NIL; NEW(p.name, LEN(name)+1); COPY(name,p.name^);IF name < father.name^ THEN father.left := p ELSE father.right := p ENDEND Insert;PROCEDURE (t: Tree) Search* (name: ARRAY OF CHAR): Tree;VAR p: Tree;BEGIN p := t;WHILE (p # NIL) & (name # p.name^) DOIF name < p.name^ THEN p := p.left ELSE p := p.right ENDEND;21RETURN pEND Search;PROCEDURE (t: Tree) Write*;BEGINIF t.left # NIL THEN t.left.Write END;Texts.WriteString(w, t.name^); Texts.WriteLn(w); Texts.Append(Oberon.Log, w.buf);IF t.right # NIL THEN t.right.Write ENDEND Write;PROCEDURE Init* (t: Tree);BEGIN NEW(t.name, 1); t.name[0] := 0X; t.left := NIL; t.right := NILEND Init;BEGIN Texts.OpenWriter(w)END Trees.Целые типыВещественные типыЧисловые типыSHORTINT, INTEGER, LONGINTREAL, LONGREALЦелые типы, вещественные типыОдинаковые типыДве переменные a и b с типами Ta и Tb имеют одинаковый тип, если1.

Ta и Tb оба обозначены одним и тем же идентификатором типа, или2. Ta объявлен равным Tb в объявлении типа вида Ta = Tb, или3. a и b появляются в одном и том же списке идентификаторов переменных, полей записи илиобъявлении формальных параметров и не являются открытыми массивами.Равные типыДва типа Ta, и Tb равны, если1.

Ta и Tb - одинаковые типы, или2. Ta и Tb - типы открытый массив с равными типами элементов, или3. Ta и Tb - процедурные типы, чьи списки формальных параметров совпадают.Поглощение типовЧисловые типы поглощают (значения) меньших числовых типов согласно следующей иерархии:LONGREAL >= REAL >= LONGINT >= INTEGER >= SHORTINTРасширение типов (базовый тип)В объявлении типа Tb = RECORD (Ta) ... END, Tb - непосредственное расширение Ta, а Ta непосредственный базовый тип Tb. Тип Tb есть расширение типа Ta (Ta есть базовый тип Tb) если1.

Ta и Tb - одинаковые типы, или2. Tb - непосредственное расширение типа, являющегося расширением TaЕсли Pa = POINTER TO Ta и Pb = POINTER TO Tb, то Pb есть расширение Pa (Pa есть базовый22тип Pb), если Tb есть расширение Ta.Совместимость по присваиваниюВыражение e типа Te совместимо по присваиванию с переменной v типа Tv, если выполнено одноиз следующих условий:1.2.3.4.5.6.7.Te и Tv - одинаковые типы;Te и Tv - числовые типы и Tv поглощает Te;Te и Tv - типы запись, Te есть расширение Tv, а v имеет динамический тип Tv;Te и Tv - типы указатель и Te - расширение Tv;Tv - тип указатель или процедурный тип, а e - NIL;Tv - ARRAY n OF CHAR, e - строковая константа из m символов и m < n;Tv - процедурный тип, а e - имя процедуры, чьи формальные параметры совпадают спараметрами Tv.Совместимость массивовФактический параметр a типа Ta является совместимым массивом для формального параметра fтипа Tf если1.

Tf и Ta - одинаковые типы или2. Tf - открытый массив, Ta - любой массив, а типы их элементов - совместимые массивы или3. f - параметр-значение типа ARRAY OF CHAR, а фактический параметр a - строка.Совместимость выраженийДля данной операции операнды являются совместимыми выражениями, если их типысоответствуют следующей таблице (в который указан также тип результата выражения).Символьные массивы, которые сравниваются, должны содержать в качестве ограничителя 0X. ТипT1 должен быть расширением типа T0:операцияпервый операндвторой операндтип результата+-*числовойчисловойнаименьший числовойтип, поглощающийоба операнда/числовойчисловойнаименьшийвещественный тип,поглощающий обаоперанда+-*/DIV MODSETцелыйSETцелыйOR & ~BOOLEANBOOLEANSETнаименьший целыйтип, поглощающийоба операндаBOOLEANчисловойCHARсимвольный массив, строкаBOOLEANSETNIL, тип указатель T0 или T1процедурный тип T, NILBOOLEANBOOLEANBOOLEANBOOLEANBOOLEANBOOLEANBOOLEAN= # < <= > >= числовойCHARсимвольный массив, строка=#BOOLEANSETNIL, тип указатель T0 или T1процедурный тип T, NIL23INцелыйSETBOOLEANISтип T0тип T1BOOLEANСовпадение списков формальных параметровДва списка формальных параметров совпадают если1.2.3.4.они имеют одинаковое количество параметров, иони имеют или одинаковый тип результата функции или не имеют никакого, ипараметры в соответствующих позициях имеют равные типы, ипараметры в соответствующих позициях - оба или параметры-значения или параметрыпеременные.Модуль=MODULE идент ";" [СписокИмпорта] ПослОбъявл [BEGINПослОператоров] END идент ".".СписокИмпорта=IMPORT [идент ":="] идент {"," [идент ":="] идент} ";".ПослОбъявл={ CONST {ОбъявлКонст ";" } | TYPE {ОбъявлТипа ";" }| VAR {ОбъявлПерем ";" }} {ОбъявлПроц ";" | ОпережающееОбъяв";"}.ОбъявлКонст=ИдентОпр "=" КонстВыраж.ОбъявлТипа=ИдентОпр "=" Тип.ОбъявлПерем=СписокИдент ":" Тип.ОбъявлПроц=PROCEDURE [Приемник] ИдентОпр [ФормальныеПарам]";" ПослОбъявл[BEGIN ПослОператоров] END идент.ОпережающееОбъяв =PROCEDURE "^" [Приемник] ИдентОпр [ФормальныеПарам].ФормальныеПарам ="(" [СекцияФП {";" СекцияФП}] ")" [":" УточнИдент].СекцияФП=[VAR] идент {"," идент} ":" Тип.Приемник="(" [VAR] идент ":" идент ")".Тип=УточнИдент | ARRAY [КонстВыраж {"," КонстВыраж}] OF Тип | RECORD["("УточнИдент")"] СписокПолей {";" СписокПолей} END | POINTER TOТип | PROCEDURE [ФормальныеПарам].СписокПолей=[СписокИдент ":" Тип].ПослОператоров=Оператор {";" Оператор}.Оператор=[ Обозначение ":=" Выраж| Обозначение ["(" [СписокВыраж] ")"]| IF Выраж THEN ПослОператоров {ELSIF Выраж THEN ПослОператоров}[ELSE ПослОператоров] END| CASE Выраж OF Вариант {"|" Вариант} [ELSE ПослОператоров] END| WHILE Выраж DO ПослОператоров END| REPEAT ПослОператоров UNTIL Выраж| FOR идент ":=" Выраж TO Выраж [BY КонстВыраж] DO ПослОператоровEND| LOOP ПослОператоров END| WITH Охрана DO ПослОператоров {"|" Охрана DO ПослОператоров}[ELSE ПослОператоров] END| EXIT| RETURN [Выраж] ].Вариант=[МеткиВарианта {"," МеткиВарианта} ":" ПослОператоров].МеткиВарианта=КонстВыраж [".." КонстВыраж].Охрана=УточнИдент ":" УточнИдент.КонстВыраж=Выраж.Выраж=ПростоеВыраж [Отношение ПростоеВыраж].24ПростоеВыражСлагаемоеМножитель=["+" | "-"] Слагаемое {ОперСлож Слагаемое}.=Множитель {ОперУмн Множитель}.=Обозначение ["(" [СписокВыраж] ")"] | число | символ | строка | NIL| Множество | "(" Выраж ")" | " ~ " Множитель.="{" [Элемент {"," Элемент}] "}".=Выраж [".." Выраж].="=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS.="+" | "-" | OR.="*" | "/" | DIV | MOD | "&".=УточнИдент {"." идент | "[" СписокВыраж "]" | "^" | "(" УточнИдент ")"}.=Выраж {"," Выраж}.

СписокИдент = ИдентОпр {"," ИдентОпр}.=[идент "."] идент. ИдентОпр = идент [ "*" | "-" ].МножествоЭлементОтношениеОперСложОперУмнОбозначениеСписокВыражУточнИдентМодуль SYSTEM содержит некоторые типы и процедуры, которые необходимы для реализацииопераций низкого уровня, специфичных для данного компьютера и/или реализации. Онивключают, например, средства для доступа к устройствам, которые управляются компьютером, исредства, позволяющие обойти правила совместимости типов, наложенные определением языка.Настоятельно рекомендуется ограничить использование этих средств специфическими модулями(модулями низкого уровня).

Такие модули непременно являются непереносимыми, но легкораспознаются по идентификатору SYSTEM, появляющемуся в их списке импорта. Следующиеспецификации действительны для реализации Оберон-2 на компьютере Ceres.Модуль SYSTEM экспортирует тип BYTE со следующими характеристиками: переменным типаBYTE можно присваивать значения переменных типа CHAR или SHORTINT. Если формальныйпараметр-переменная имеет тип ARRAY OF BYTE, то соответствующий фактический параметрможет иметь любой тип.Другой тип, экспортируемый модулем SYSTEM, - тип PTR.

Переменным типа PTR могут бытьприсвоены значения переменных-указателей любого типа. Если формальный параметрпеременная имеет тип PTR, фактический параметр может быть указателем любого типа.Процедуры, содержащиеся в модуле SYSTEM, перечислены в таблицах. Большинство ихсоответствует одиночным командам и компилируются непосредственно в машинный код. Одеталях читатель может справиться в описании процессора. В таблице v обозначает переменную,x, y, a, и n - выражения, а T - тип.Процедуры-функцииНазваниеТипы аргументовТип результатаФункцияADR(v) любойBIT(a,n) a: LONGINT; n:целыйLONGINTBOOLEANадрес переменной vn-й бит Память[a]CC(n)целая константаLSH(x,n) x: целый, CHAR, BYTE; n:целыйROT(x,n) x: целый, CHAR, BYTE; n:целыйBOOLEANусловие n (0 <= n <= 15)совпадает с типом логический сдвигxсовпадает с типом циклический сдвигxVAL(T,x) T, x: любого типаTx интерпретируется как значениетипа TСобственно процедурыНазваниеТипы аргументовФункция25GET(a, v)a: LONGINT; v: любой основной тип, v := Память[a]указатель, процедурный типPUT(a, x)a: LONGINT; x: любой основной тип,указатель, процедурный типGETREG(n, v) n: целая константа; v: любойосновной тип, указатель,процедурный типPUTREG(n, x) n: целая константа; x: любойосновной тип, указатель,процедурный типMOVE(a0,a1,n) a0, a1: LONGINT; n: целыйПамять[a] := xNEW(v, n)размещает блок памяти размером n байт;присваивает его адрес переменной vv: любой указатель; n: целыйv := Регистр nРегистр n := xПамять[a1..a1+n-1] := Память[a0..a0+n-1]Программы на Обероне-2 обычно выполняются в среде, которая обеспечивает активацию команд,сбор мусора, динамическую загрузку модулей и определенные структуры данных временивыполнения.

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