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

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

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

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

Эти абстракции, как показано ниже, принимают Формустандартных операторов. Ввод данных осуществляется операцией Read (читать), а вывод операцией Write (писать). Мы можем, например, считать, что данные читаются с клавиатуры ипишутся на дисплей.ReadCard (x);ReadCard(y);WHILE x # у DOIF x > у THEN x := х - уELSE у := у - хENDEND:WriteCard(x,6)Процедура ReadCard читает число типа CARDINAL (т.е. целое неотрицательное) и присваиваетего параметру (х). Процедура WriteCard выводит число типа CARDINAL, указанное ее первымпараметром (х). Второй параметр (6) указывает количество позиций, выделяемое дляпредставления этой величины на внешнем носителе.

В следующей далее окончательной версии мыоформим наш текст так, что он станет настоящей программой на Модуле.MODULE нод:11FROM InOut IMPORT ReadCard,WriteString,WriteLn.WriteCard:VAR x.y: CARDINAL;BEGINWriteString("x="): ReadCard(x); WriteLn;UriteString("y="): ReadCard(y); WriteLn;WHILE x # у DOIF x > у THEN x := x - уELSE у : = у - xENDEND;WriteString("нод="); WriteCard(x,6); WriteLn;END нод.Существенные добавления, сделанные на этомобъектов, встречающихся в программе, таких,описаны.

Описание вводит идентификатор (имя)константа или что-либо еще) и указывает егопеременной или значение константы.шаге, - это описания. в Модуле имена всехкак переменные и константы, должны бытьобъекта, определяет вид объекта (переменная,общие неизменные свойства, такие, как типПолучившейся завершенной программе, называемой модулам, присваивается имя (нод), и онаимеет следующий Формат:MODULE имя;<списки импорта><описания>BEGIN<операторы>END имя.Уместно сделать еше несколько замечаний относительно нашего примера. Процедуры WriteLn,WriteStrlng. ReadCard и WriteCard не являются частью самого языка.

Они определены в другоммодуле, называемом InOut, который считается доступным. Подборка таких полезных модулейбудет приведена в последующих разделах книги с соответствующими пояснениями. Здесь же мыпросто отметим: для того чтобы сделать модули доступными программе, их нужноимпортировать. Это осуществляется включением имен нужных объектов в список импорта иуказанием того, какому модулю они принадлежат.Процедура WriteString по выводит текст в виде последовательной цепочки литер (предназначенныедля вывода литеры заключены в кавычки).

Этот вывод сообщает пользователю ЭВМ, что далеетребуется ввод. Такое поведение - существенное свойство диалоговых систем. Процедура WriteLnзаканчивает строку в выходном тексте.На этом завершим обсуждение первого примера, которое было совершенно неформальным.

Этодопустимо, поскольку мы стремились объяснить уже готовую программу. Однако12программирование - это разработка и создание новых программ. Для такой цели подходит лишьточное, Формальное описание нашего инструментального средства. В следующем разделе мывведем Формализм для точного описания правильных ("законных") программ. Этот Формализмпозволяет строгим образом определить, удовлетворяет ли написанный текст нормам языка.3. НОТАЦИЯ ДЛЯ ЗАПИСИ СИНТАКСИСА МОДУЛЫФормальный язык - бесконечное множество цепочек символов. Элементы этого множестваназываются предложениями языка.

В случав языка программирования такими предложениямиявляются программы. Символы берутся из конечного множества, называемого словарем. Так какмножество программ бесконечно и не может быть задано прямым перечислением, то вместо этогооно определяется правилами образования его элементов. Последовательности символов, которыемогут быть образованы в соответствии с этими правилами, называют синтаксически правильнымипрограммами. Такой набор правил представляет собой синтаксис языка.Программы Формального языка соответствуют грамматически правильным предложениямразговорных языков.

Каждое предложение имеет структуру и состоит из отдельных частей, таких,как подлежащее, сказуемое, дополнение. Аналогично, программа состоит из частей, называемыхсинтаксическими понятиями, таких, как операторы, выражения, описания. Если грамматическаяконструкция А состоит из следующих друг за другом конструкций В и С, т.е. их конкатенации(сцепления) ВС, то мы будем называть В и С -синтаксическими Факторами и описывать Аследующей синтаксическойФОРМУЛОЙ:А = ВС.Если же А состоит либо из В, либо из С, мы будем называть В и С синтаксическими термами ивыражать А в виде:А = B|C.Для группировки термов и Факторов можно использовать круглые скобки.

Следует заметить, чтоА, В и С обозначают синтаксические понятия описываемого Формального языка, символы равно"-", вертикальная черта "|", скобки "(",")" и точка "." -символы метанотации, называемыеметасимволами. Введенная здесь метанотация называется расширенной формой Бэкуса-Наура(РБНФ).Кроме конкатенации и выбора РБНФ позволяет выразить условное вхождение и повторение. Есликонструкция А может состоять либо из В, либо из пустой цепочки, то это выражается в видеА = [В].Если же А может состоять из конкатенации любого числа (включая нуль) конструкций В, то этообозначаетсяА = {В}.Вот мы и объяснили, что такое РБНФ. Приведем несколько примеров того, как множествапредложений описываются Формулами в РБНФ.(A|B)(C|D)АС АD ВС ВDA[B]CABC ACА{ВА}A ABA ABABA ABABABA ...{А|В}СС АС ВС ААС ABC ВВС ВАС ...13Очевидно, что сама РБНФ - это тоже Формальный язык. Если этот язык способен делать то, длячего предназначен (описывать Формальные языки), то уж по крайней мере он должен уметьописать сам себя» В приведенном ниже описании РБНФ на РБНФ мы используем следующиеимена для синтаксических понятий:СинтОператор : синтаксическая ФормулаСинтВыражение : список альтернативных термовСинТерм: конкатенация ФакторовСинтФактор : единичное 'синтаксическое понятие или выражение в скобкахФормальное определение РБНФ теперь можно задать следующим образом:Синтаксис = { СинтОператор }.СинтОператор = идентификатор "-" СинтВыражение ".".СинтВыражение = СинТерм { "|" СинТерм }.СинТерм = СинтФактор { СинтФактор }.СинтФактор = идентификатор | цепочка| "(" СинтВыражение ")" I "[" СинтВыражение "]"| "{" СинтВыражение "}".Идентификаторами обозначены синтаксические понятия; цепочка -это последовательность литер,взятых из алфавита определяемого языка.

Для представления идентификатора мы приняли широкоиспользуемое в языках программирования соглашение, а именно:Идентификатор состоит из последовательности букв и цифр. начинающейся буквой. Цепочкасостоит из последовательности любых литер, заключенных в кавычки (или в апострофы).Формальное определение этих правил в терминах РБНФ дано в следующем разделе.4. ПРЕДСТАВЛЕНИЕ ПРОГРАММ НА МОДУЛЕВ предыдущем разделе был введен Формализм, которым в дальнейшем будет определятьсяструктура правильно составленных программ. Этот Формализм, однако, определяет только то,каким образом представляются программы в виде последовательностей синтаксических элементов(лексем), но не литер.

Этот "дефект" допущен намеренно: мы полагаем, что представление лексем(а значит, и программ) в терминах литер слишком сильно зависит от конкретной реализации, а дляопределения языка необходим более высокий уровень абстракции. Создание промежуточногоуровня представления через последовательности лексем обеспечивает удобную развязку междуязыком и окончательным представлением программы, которое зависит от доступного наборалитер. Как следствие этого мы должны принять ряд правил, регулирующих представление лексемв виде последовательности литер. Лексемы Модулы разделяются на следующие классы:идентификаторы, числа, цепочки, операции, разделители, комментарии.Правила, регулирующие их представление в терминах стандартного набора литер ISO,следующие:1. Идентификаторы - последовательности букв (* в оригинале только буквы латинского алфавита,в русском переводе книги используются также буквы русского алфавита, прописные и строчные.

Прим. перев.*) и цифр, начинающиеся с буквы:$Идентификатор - Буква {Буква|Цифра>.14Вот примеры правильно составленных идентификаторов:Алиса hello ЧернаяПтица oпepaторWHILE SR71Примеры слов, не являющихся идентификаторами:Модула 2(пробел недопустим)Модула-2(содержит дефис)2N(первой литерой должна быть буква)D'Alembert(содержит апостроф)Прописные и строчные буквы считаются различными.Иногда идентификатор (например i) должен быть квалифицирован (уточнен) другимидентификатором (j).

Эти выражается в том, что перед i размешается j и они разделяются точкой(j.i). Такой объединенный идентификатор называется квалифицированным (сокращенноКвалИдент). Его синтаксис:$КвалИдент * {Идентификатор "."} Идентификатор.2. Числа могут быть целыми или действительными. Целые представляются последовательностямицифр. Действительные числа содержат десятичную точку и дробную часть.

Кроме того, вдействительном числе может присутствовать порядок. Он задается буквой Е (прописнаялатинская) и произносится как "умножить на десять в степени". Числа не должны содержатьпробелов. Примеры правильно записанных чисел:1981 1 3.25 5.1ЕЗ 4.0Е-10А вот примеры последовательностей литер, которые не распознаются как числа:1,5запятая в числе недопустима1'000'000 не может быть апострофов3.5Еnзапрещены буквы в числе (за исключением Е)Точные правила образования чисел задаются следующим синтаксисом:$Число - Целое I Действительное.$Целое - Цифра (Цифра).$Действительное - ЦиФра{ЦиФра}"."{Цифра}[Порядок]-$Порядок - "Е" ["+"|"-"] Цифра {Цифра}.ПРИМЕЧАНИЕ: Если за целым числом следует латинская буква В. то оно воспринимается каквосьмеричное, если же за ним следует латинская буква Н, то как шестнадиатеричное.3.

Цепочка - последовательность любых литер, заключенная в кавычки. Очевидно, что дляоднозначного распознавания цепочки необходимо, чтобы она сама не содержала кавычек. Чтобыможно было записать и цепочку, содержащую кавычки, разрешается заключать ее вместо кавычекв апострофы. Однако в этом случае в ной не должно содержаться апострофов.$Цепочка - '"' {Литера}'"'|"'" {Литера} "'".Примеры цепочек:"NO PROBLEM"15"L'Etoile"'Придворная молочница сказала: "Благодарствуйте!".'4. Операции и ограничители - это или специальные литеры или ключевые слова. Последниепишутся прописными буквами и не должны использоваться в качестве идентификаторов.

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

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

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

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