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

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

Файл №1160786 Х. Мёссенбёк, Н. Вирт - Язык программирования Оберон-2 (Х. Мёссенбёк, Н. Вирт - Язык программирования Оберон-2) 3 страницаХ. Мёссенбёк, Н. Вирт - Язык программирования Оберон-2 (1160786) страница 32019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Тип e должен быть целым типом. Обозначение вида a[e0, e1, ..., en] применимо вместо a[e0][e1] ... [en]. Если r обозначает запись, то r.f означает поле f записи r или процедуру f, связанную сдинамическим типом r (Гл. 10.2). Если p обозначает указатель, p^ означает переменную, накоторую ссылается p. Обозначения p^.f и p^[e] могут быть сокращены до p.f и p[e], то есть записьи индекс массива подразумевают разыменование. Если a или r доступны только для чтения, тоa[e] и r.f также предназначены только для чтения.Охрана типа v(T) требует, чтобы динамическим типом v был T (или расширение T), то естьвыполнение программы прерывается, если динамический тип v - не T (или расширение T). Впределах такого обозначения v воспринимается как имеющая статический тип T.

Охранаприменима, если1. v - параметр-переменная типа запись, или v - указатель, и если2. T - расширение статического типа vЕсли обозначенный объект - константа или переменная, то обозначение ссылается на их текущеезначение. Если он - процедура, то обозначение ссылается на эту процедуру, если толькообозначение не сопровождается (возможно пустым) списком параметров. В последнем случаеподразумевается активация процедуры и подстановка значения результата, полученного при ееисполнении. Фактические параметры должны соответствовать формальным параметрам как и привызовах собственно процедуры (см.

10.1).Примеры обозначений (со ссылками на примеры из Гл. 7):i(INTEGER)10a[i]w[3].name[i]t.left.rightt(CenterTree).subnode(REAL)(CHAR)(Tree)(Tree)8.2 ОперацииВ выражениях синтаксически различаются четыре класса операций с разными приоритетами(порядком выполнения). Операция ~ имеет самый высокий приоритет, далее следуют операциитипа умножения, операции типа сложения и отношения.

Операции одного приоритетавыполняются слева направо. Например, x-y-z означает (x- y) -z.ВыражениеПростоеВыражениеСлагаемоеМножитель=ПростоеВыражение [Отношение ПростоеВыражение].=["+" | "-"] Слагаемое {ОперацияСложения Слагаемое}.=Множитель {ОперацияУмножения Множитель}.=Обозначение [ФактическиеПараметры] | число | символ | строка| NIL | Множество | "(" Выражение ")" | "~" Множитель.Множество="{" [Элемент {"," Элемент}] "}".Элемент=Выражение [".." Выражение].ФактическиеПараметры ="(" [СписокВыражений] ")".Отношение="=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS.ОперацияСложения="+" | "-" | OR.ОперацияУмножения="*" | "/" | DIV | MOD | "&".Предусмотренные операции перечислены в следующих таблицах. Некоторые операцииприменимы к операндам различных типов, обозначая разные действия. В этих случаяхфактическая операция определяется типом операндов.

Операнды должны быть совместимымивыражениями для данной операции (см. Прил. A).8.2.1 Логические операцииOR логическая дизъюнкция& логическая конъюнкция~отрицаниеp OR qp&q~p"если p, то TRUE, иначе q""если p то q, иначе FALSE""не p"Эти операции применимы к операндам типа BOOLEAN и дают результат типа BOOLEAN.8.2.2 Арифметические операции+*/DIVMODсумма - разностьпроизведениевещественное делениеделение нацелоостатокОперации +, -, *, и / применимы к операндам числовых типов.

Тип их результата - тип тогооперанда, который поглощает тип другого операнда, кроме деления (/), чей результат наименьший вещественный тип, который поглощает типы обоих операндов. При использовании вкачестве одноместной операции "-" обозначает перемену знака, а "+" - тождественную операцию.Операции DIV и MOD применимы только к целочисленным операндам. Они связаны следующимиформулами, определенными для любого x и положительного делителя y:x = (x DIV y) * y + (x MOD y)0 < = (x MOD y) < y11Примеры:xyx DIV yx MOD y5312-53-218.2.3 Операции над множествами+*/объединениеразность (x - y = x * (-y))пересечениесимметрическая разность множеств (x / y = (x-y) + (y-x))Эти операции применимы к операндам типа SET и дают результат типа SET.

Одноместный"минус" обозначает дополнение x, то есть -x это множество целых между 0 и MAX(SET), которыене являются элементами x. Операции с множествами не ассоциативны ((a+b)-c # a+(b-c)).Конструктор множества задает значение множества списком элементов, заключенным в фигурныескобки. Элементы должны быть целыми в диапазоне 0..MAX(SET). Диапазон a..b обозначает всецелые числа в интервале [a, b].8.2.4 Отношения=#<<=>>=INISравноне равноменьшеменьшее или равнобольшебольше или равнопринадлежность множествупроверка типаОтношения дают результат типа BOOLEAN.

Отношения =, #, <, <=, >, и >= применимы кчисловым типам, типу CHAR, строкам и символьным массивам, содержащим в конце 0X.Отношения = и # кроме того применимы к типам BOOLEAN и SET, а также к указателям ипроцедурным типам (включая значение NIL). x IN s означает "x является элементом s".

x долженбыть целого типа, а s - типа SET. v IS T означает "динамический тип v есть T (или расширение T)" иназывается проверкой типа. Проверка типа применима, если1. v - параметр-переменная типа запись, или v - указатель, и если2. T - расширение статического типа vПримеры выражений (со ссылками на примеры из Гл. 7):1991i DIV 3~p OR q(i+j) * (i-j)s - {8, 9, 13}i+xINTEGERINTEGERBOOLEANINTEGERSETREAL12a[i+j] * a[i-j](0<=i) & (i<100)t.key = 0k IN {i..j-1}w[i].name <= "John"t IS CenterTreeREALBOOLEANBOOLEANBOOLEANBOOLEANBOOLEANОператоры обозначают действия. Есть простые и структурные операторы. Простые операторы несодержат в себе никаких частей, которые являются самостоятельными операторами.

Простыеоператоры - присваивание, вызов процедуры, операторы возврата и выхода. Структурныеоператоры состоят из частей, которые являются самостоятельными операторами. Онииспользуются, чтобы выразить последовательное и условное, выборочное и повторное исполнение.Оператор также может быть пустым, в этом случае он не обозначает никакого действия. Пустойоператор добавлен, чтобы упростить правила пунктуации в последовательности операторов.Оператор =[Присваивание | ВызовПроцедуры| ОператорIf | ОператорCase | ОператорWhile | ОператорRepeat| ОператорFor | ОператорLoop | ОператорWith| EXIT | RETURN [Выражение]].9.1 ПрисваиванияПрисваивание заменяет текущее значение переменной новым значением, определяемымвыражением.

Выражение должно быть совместимо по присваиванию с переменной (см.Приложение. A). Знаком операции присваивания является ":=", который читается "присвоить".Присваивание = Обозначение ":=" Выражение.Если выражение e типа Te присваивается переменной v типа Tv, имеет место следующее:1. Если Tv и Te - записи, то в присваивании участвуют только те поля Te, которые такжеимеются в Тv (проецирование); динамический тип v и статический тип v должны бытьодинаковы, и не изменяются присваиванием;2. Если Tv и Te - типы указатель, динамическим типом v становится динамический тип e;3. Если Тv это ARRAY n OF CHAR, а e - строка длины m < n, v[i] присваиваются значения eiдля i = 0 ..

m-1, а v[m] получает значение 0X.Примеры присваиваний (со ссылками на примеры из Гл. 7):i := 0p := i = jx := i + 1k := log2(i+j)F := log2s := {2, 3, 5, 7, 11, 13}a[i] := (x+y) * (x-y)t.key := iw[i+1].name := "John"t := c9.2 Вызовы процедур(* см. 10.1 *)13Вызов процедуры активирует процедуру. Он может содержать список фактических параметров,которые заменяют соответствующие формальные параметры, определенные в объявлениипроцедуры (см. Гл.

10). Соответствие устанавливается в порядке следования параметров в спискахфактических и формальных параметров. Имеются два вида параметров: параметры-переменные ипараметры-значения.Если формальный параметр - параметр-переменная, соответствующий фактический параметрдолжен быть обозначением переменной. Если фактический параметр обозначает элементструктурной переменной, селекторы компонент вычисляются, когда происходит заменаформальных параметров фактическими, то есть перед выполнением процедуры. Если формальныйпараметр - параметр-значение, соответствующий фактический параметр должен быть выражением.Это выражение вычисляется перед вызовом процедуры, а полученное в результате значениеприсваивается формальному параметру (см. также 10.1).ВызовПроцедуры = Обозначение [ФактическиеПараметры].Примеры:WriteInt(i*2+1)INC(w[k].count)t.Insert("John")(* см.

10.1 *)(* см. 11 *)9.3 Последовательность операторовПоследовательность операторов, разделенных точкой с запятой, означает поочередное выполнениедействий, заданных составляющими операторами.ПоследовательностьОператоров = Оператор {";" Оператор}.9.4 Операторы IfОператорIf =IF Выражение THEN ПоследовательностьОператоров{ELSIF Выражение THEN ПоследовательностьОператоров}[ELSE ПоследовательностьОператоров]END.Операторы if задают условное выполнение входящих в них последовательностей операторов.Логическое выражение, предшествующие последовательности операторов, будем называтьусловием (в оригинале - guard.

Прим. перев.) Условия проверяются последовательно одно задругим, пока очередное не окажется равным TRUE, после чего выполняется связанная с этимусловием последовательность операторов. Если ни одно условие не удовлетворено, выполняетсяпоследовательность операторов, записанная после слова ELSE, если оно имеется.Пример:IF (ch >= "A") & (ch <= "Z") THEN ReadIdentifierELSIF (ch >= "0") & (ch <= "9") THEN ReadNumberELSIF (ch = " ' ") OR (ch = ' " ') THEN ReadStringELSE SpecialCharacterEND9.5 Операторы CaseОператоры case определяют выбор и выполнение последовательности операторов по значениювыражения. Сначала вычисляется выбирающее выражение, а затем выполняется та14последовательность операторов, чей список меток варианта содержит полученное значение.Выбирающее выражение должно быть такого целого типа, который поглощает типы всех метоквариантов, или и выбирающее выражение и метки вариантов должны иметь тип CHAR.

Меткиварианта - константы, и ни одно из их значений не должно употребляться больше одного раза.Если значение выражения не совпадает с меткой ни одного из вариантов, выбираетсяпоследовательность операторов после слова ELSE, если оно есть, иначе программа прерывается.ОператорCase=CASE Выражение OF Вариант {" | " Вариант} [ELSEПоследовательностьОператоров ] END.Вариант=[СписокМетокВарианта ":" ПоследовательностьОператоров].СписокМетокВарианта =МеткиВарианта {"," МеткиВарианта }.МеткиВарианта=КонстантноеВыражение [".." КонстантноеВыражение].Пример:CASE ch OF"A" ..

"Z": ReadIdentifier| "0" .. "9": ReadNumber| "'", '"' : ReadStringELSE SpecialCharacterEND9.6 Операторы WhileОператоры while задают повторное выполнение последовательности операторов, пока логическоевыражение (условие) остается равным TRUE. Условие проверяется перед каждым выполнениемпоследовательности операторов.ОператорWhile = WHILE Выражение DO ПоследовательностьОператоров END.Примеры:WHILE i > 0 DO i := i DIV 2; k := k + 1 ENDWHILE (t # NIL) & (t.key # i) DO t := t.left END9.7 Операторы RepeatОператор repeat определяет повторное выполнение последовательности операторов пока условие,заданное логическим выражением, не удовлетворено. Последовательность оператороввыполняется по крайней мере один раз.ОператорRepeat = REPEAT ПоследовательностьОператоров UNTIL Выражение.9.8 Операторы ForОператор for определяет повторное выполнение последовательности операторов фиксированноечисло раз для прогрессии значений целочисленной переменной, называемой управляющейпеременной оператора for.ОператорFor=FOR идент ":=" Выражение TO Выражение [BY КонстантноеВыражение] DOПоследовательностьОператоров END.ОператорFOR v := beg TO end BY step DO statements END15эквивалентенtemp := end; v := beg;IF step > 0 THENWHILE v <= temp DO statements; v := v + step ENDELSEWHILE v >= temp DO statements; v := v + step ENDENDtemp и v имеют одинаковый тип.

Характеристики

Тип файла
PDF-файл
Размер
441,64 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

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