Главная » Просмотр файлов » Н. Вирт - Программирование на языке Модула-2

Н. Вирт - Программирование на языке Модула-2 (1160777), страница 29

Файл №1160777 Н. Вирт - Программирование на языке Модула-2 (Н. Вирт - Программирование на языке Модула-2) 29 страницаН. Вирт - Программирование на языке Модула-2 (1160777) страница 292019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Этовозможно только в тех частях программы, которые находятся внутри так называемой облаcтивидимости описания. В общем случае область видимости простирается на весь тот блок (процедуруили описание модуля), которому принадлежит данное описание и в котором соответствующий $ОписаниеКонстанты =$Идентификатор "=" КонстВыражение.$ КонстВыражение = Выражение.

(!)Константное выражение - выражение, которое может быть вычислено в процессе чтенияпрограммы без ее выполнения. Его операндами являются константы (см. гл. 8). Примерыописаний констант:N = 100npeдел=2*N-lвсе={0.. WordSize-1}граница=МАХ(INTEGER)-N1436. ОПИСАНИЯ ТИПОВТип данных определяет множество значений, которое может принимать переменная этоготипа, и связывает с этим типом идентификатор.

Имеется три разновидности структур: массивы,записи и множества.$ОписаниеТипа = Идентификатор "=" Тип.$Тип = ПростойТип | ТипМассив | ТипЗапись$| ТипМножество | ТипУказатель | ТипПроцедура.$ПростойТип = КвалИдент | Перечисление$| ТипДиапазон.Примеры:цвет = (красный,зеленый,синий)Индекс = [1..80]Карта = ARRAY Индекс OF CHARУзел = RECORD ключ:CARDINAL;левый,правый:УкДереваENDОттенок = SET OF ЦветУкДерева = POINTER TOУзел Функция = PROCEDURE (CARDINAL)CARDINAL6.1. Основные типыСледующиеидентификаторами:основныетипыпредопределеныиобозначаютсястандартными1. INTEGER содержит целые числа в диапазоне от MIN(INTEGER) до MAX(INTEGER).2.

CARDINAL содержит целые числа в диапазоне от 0 до МАХ(CARDINAL).3. BOOLEAN содержит истинностные значения TRUE и FALSE.4. CHAR включает в себя набор литер, предоставляемый вычислительной системой.5. REAL (и LONGREAL) обозначает конечное множество действительных чисел.6. LONGINTMAX(LONGINT).содержитцелыечиславдиапазонеот MIN(LONGINT) до(* В разд. 29 основного текста упоминается также тип LONGCARD. - Прим.перев. *)6.2. ПеречисленияПеречисление представляет собой список идентификаторов, обозначающих значения,образующие тип данных. Эти идентификаторы используются в программе как константы.

Они, итолько они образуют соответствующий тип данных. Их значения упорядочены, и отношение144порядка определяется последовательностью идентификаторов в перечислении. Порядковый номерпервого значения равен О.$Перечислеление = "(" СписИдент ")" .$СписИдент = Идентификатор { "," Идентификатор } .Примеры перечислений:(красный, зеленый, синий)(трефы, бубны, червы, пики)(Понедельник, Вторник, Среда, Четверг,Пятница, Суббота, Воскресенье)6.3.

Тип диапазонТип Т может быть определен как диапазон другого типа Т1, основного или перечисления(за исключением REAL), путем указания наименьшего и наибольшего значения диапазона.$$ТипДиапазон = [Идентификатор]"[" КонстВыражение ".." КонстВыражение "]" . (!)Первая константа определяет нижнюю границу, и она не должна превышать верхнююграницу. Тип границ Т1 называется базовым типом для Т, и все операции, применимые коперандам типа Т1, применимы также к операндам типа Т.

Однако значение, присваиваемоепеременной типа диапазон, должно лежать внутри заданного отрезка. Базовый тип можетзадаваться идентификатором, предшествующим указанию границ. Если он опушен и нижняяграница - неотрицательное целое, базовым типом диапазона считается CARDINAL; если этоотрицательное целое, то INTEGER.Говорят, что тип T1 совместим с типом Т0, если либо он описан как Т1=Т0, либо какдиапазон Т0, либо если Т0 является диапазоном Т1, либо если и Т0, и Т1 - оба диапазоны одного итого же (базового) типа. Примеры типов диапазон:[0. .N-1]["A".."Z"][Понедельник.. Пятница]6.4.

Тип массивМассив - структура, состоящая из Фиксированного числа компонент одного типа,называемого типом компонент. Элементы массива обозначаются индексами, значения которыхпринадлежат типу индекса. Описание типа массив определяет тип компонент и тип индекса.Последний должен быть перечислением, типом диапазон или одним из основных типовBOOLEAN или CHAR.$ТипМассив = ARRAY ПростойТип {"," ПростойТип} OF Тип.Описание видаARRAY T1.T2, ...

, Tn OF Tс n типами индексов Т1 ... Тn можно рассматривать как сокращение описанияARRAY Т1 OF145ARRAY T2 OF….ARRAY Tn OF TПримеры типов массив:ARRAY [0..N-1] OF CARDINALARRAY [1..10],[1..20] OF [0..99]ARRAY [-10..+10] OF BOOLEANARRAY ДеньНедели OF ЦветARRAY Цвет OF ДеньНедели6.5. Тип записьТип запись - структура, состоящая из Фиксированного числа компонент, возможно,различных типов. Описание типа записи определяет для каждой компоненты ее Тип иидентификатор, обозначающий эту компоненту.

Областью видимости этих идентификаторовкомпонент является само определение записи; кроме того, они присутствуют внутри обозначений(см. п.8.1), ссылающихся на соответствующие, компоненты переменных данного типа запись, атакже внутри операторов присоединения.$ТипЗапись = RECORD ПослСписковКомпонент END .$ПослСписковКомпонент = СписокКомпонент${";" СписокКомпонент}.$СписокКомпонент = [СписИдент ":" Тип|$$$CASE [Идентификатор]":"КвалИдент OF Вариант{"|" Вариант }(!)[ELSE ПослСписковКомпонент] END].$Вариант = [СписокМетокВарианта ":"$ПослСписковКомпонент].(!)$$$СписокМетокВарианта = МеткиВарианта{"," МеткиВарианта}.МеткиВарианта=КонстВыражение [".."КонстВыражение].Примеры типов записи:RECORD день: [1..3];месяц:[1..12];год:[0..2000]146ENDRECORDимя,фамилия:ARRAY[0..9] OF CHAR;возраст:[0..99];зарплата:REALENDRECORD x,y:T0;CASE призн0:Цвет OFкрасный:а: Тк1;b: Тк2|зеленый:с:Тз1;d:Тз2|синий:e:Tcl;f:Тс2END;z.T0;CASE призн1:BOOLEAN OFTRUE:u,v:INTEGER |FALSE :r,s: CARDINALENDENDПриведенный выше пример содержит два вариантных списка компонент.

В первом случаевыбор варианта определяется значением компоненты призн0, стоящей в заголовке варианта иназываемой дискриминантом или селектором варианта. Во втором случае -дискриминантом призн1.6.6. Тип множествоТип множество, определенный как SET OF T, содержит все множества значений базовоготипа Т. Базовым типом должен быть либо диапазон целых между 0 и N-1, либо перечислимый тип(или его диапазон) не более чем с N значениями, где N - небольшая константа, определяемаяреализацией (обычно это размер машинного слова или его небольшое кратное).$ТипМножество = SET OF ПростойТип.Стандартный тип BITSET определяется следующим образом: BITSET=SET OF [0..W-l]Здесь W - константа, определяемая реализацией (обычно это размер машинного слова).1476.7. Тип указательПеременные типа указатель Р в качестве значений имеют указатели на переменные другоготипа Т. Говорят, что тип указатель Р подчинен Т.

Значение указателя Формируется при обращении кпроцедуре размещения в модуле управления памятью.$ТипУказатель = POINTER TO Тип.Помимо значений-указателей, переменная типа указатель может иметь значение NIL, неявляющееся указателем ни на какую переменную.6.8. Тип процедураПеременная Т типа процедура может своим значением иметь процедуру Р. Типыформальных параметров Р должны совпадать с типами, указанными в списке Формальных типовТ. Это же относится и к типу результата в случае процедуры-функции.

( Ограничение: Р не можетбыть локальной или стандартной процедурой.)$ТипПроцедура = PROCEDURE [СписокФормТипов] .$СписокФормТипов = "(" [[VAR] ФормТип${"," [VAR] ФормТип }] ")" [":" КвалИдент].Стандартный тип PROC обозначает процедуру без параметров: PROC » PROCEDURE7. ОПИСАНИЯ ПЕРЕМЕННЫХОписание переменной служит для введения переменной и связывания с ней уникальногоидентификатора, типа данных и структуры.

Всепеременные, перечисленные в одном списке, получают одинаковый тип.$ОписаниеПеременной = СписИдент ":" Тип.Тип данных определяет множество значений, которые может принимать переменная, иоперации, которые можно над ней выполнять. Кроме того, он определяет структуру переменной.Примеры описаний переменных (см. примеры в гл. 6):i,j: CARDINALk:INTEGERp,q: BOOLEANs:BITSETF:ФУНКЦИЯa:ARRAY Индекс OF CARDINALw:ARRAY [0..7]0FRECORD ch:CHAR;счетч:CARDINALEND1488. ВЫРАЖЕНИЯВыражения - конструкции, дающие правила вычислений для получения значенийпеременных и Формирования новых значений. Выражения состоят из операндов и знаковопераций.

Для группирования операндов и операций могут использоваться скобки.8.1. ОперандыЗа исключением литерных констант, т.е. чисел, цепочек и множеств (см. гл. 5), операндыпредставляются обозначениями. Обозначение состоит из идентификатора, ссылающегося наобозначаемую константу, переменную или процедуру. Этот идентификатор может бытьквалифицирован идентификатором модуля (см.

гл. 4 и 11) и за ним могут следовать селекторы,если обозначаемый объект -элемент структуры. Если структура - массив А, то обозначение А[Е]означает элемент А, индекс которого - текущее значение выражения Е. Тип индекса А долженбыть совместим по присваиванию с типом Е (см. п.9.1). Обозначение вида А[Е1,Е2,...,Еп] означает тоже, что и А[Е1][Е2]...[Еn].Если структура - запись R, то R.P обозначает компоненту f записи R. Обозначение P^используется для переменной, на которую ссылается указатель Р.$Обозначение = КвалИдент {"." Идентификатор |$"[" СписВыражений "]" | "^" }.$СписВыражений = Выражение {"," Выражение}.Если обозначаемый объект - переменная, то обозначение ссылается на текущее значениепеременной. Если объект -процедура-Функция, обозначение без списка параметров ссылается наэту процедуру.

Если за ним следует (возможно, пустой) список параметров, обозначениепредполагает активацию процедуры и в данной точке используется значение, являющеесярезультатом ее выполнения, т.е. "возвращаемое" значение. Типы Фактических параметров должнысоответствовать типам формальных параметров, специфицированным в описании процедуры (см.гл. 10). Примеры обозначений (см. примеры в гл. 7):k(INTEGER)a[i](CARDINAL)w[3].ch(CHAR)t^.ключ(CARDINAL)t^.левый ^. правый(УказВерш)8.2.

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

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

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

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