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

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

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

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

Таким образом, последовательностьоператоров исполняется хотя бы один раз.$ЦиклДо = REPEAT ПослОператоров UNTIL Выражение.Пример:REPEAT k: = i MOD j;i:=j:j:=kUNTIL j=09.8. Цикл с шагомЦикл с шагом означает, что последовательность операторов должнаисполняться многократно с изменением значения некоторой переменной по прогрессии.Эта переменная называется управляющейпеременной цикла с шагом. Она не может быть компонентойструктурной переменной, не может импортироваться и бытьпараметром. Ее значение не должно меняться последовательностью операторов.155$ЦиклСШагом = FOR Идентификатор ":="$Выражение ТО Выражение$[BY КонстВыражение] DO ПослОператоров END.Цикл с шагомFOR v:=A TO В BY С DO SS ENDозначает многократное исполнение последовательности операторов SS при том условии,что v принимает значения А,А+С, А+2С, ... , А+nС, где А+nС - последнее значение, непревосходящее В.

Переменная v называется управляющей переменной, или параметром цикла, А начальным значением, В - границей, С - шагом. Значения А и В должны быть совместимы (!) с v;С должно быть константой типа INTEGER или CARDINAL. Если шаг не задан, предполагается,что он равен 1. Примеры:FOR i:=1 ТО 80 DO j:=j+a[i] ENDFOR i:=80 TO 2 BY -1 DO a[i]:=a[i-1] END9.9. Безусловный циклБезусловный цикл определяет многократное исполнение последовательности операторов.Он заканчивается исполнением какого-либо оператора выхода в последовательности операторов.$БезусловныйЦикл = LOOP ПослОператоров END.Пример:LOOPIF t1^.ключ>х THEN t2:=tl^.левый; p:=TRUEELSE t2:=t1^.правый; р:-FALSEEND;IF t2=NIL THENEXITEND;t1:=t2ENDЦиклы с условием продолжения, условием окончания и шагом могут быть записаны опомощью безусловного цикла, содержащего единственный оператор выхода. Использование этихциклов полезно, поскольку они отражают наиболее часто встречающиеся ситуации, когдазавершение зависит либо от единственного условия до или после повторяемойпоследовательности операторов, либо по достижении границы арифметической прогрессии.

В тоже время безусловный цикл необходим для записи повторяющихся процессов, в которыхзавершение заранее не определено. Он также полезен в ситуации, пример которой приведен выше.Операторы выхода содержатся в безусловном цикле контекстуально, а не синтаксически.9.10. Оператор присоединенияОператор присоединения определяет переменную запись и последовательностьоператоров. В операторах этой последовательности квалификация идентификаторов компонент156может быть опушена, если они используются для ссылки на переменную, заданную в заголовкеоператора присоединения. Если обозначение дает компоненту структурной переменной, селекторвычисляется один раз (до исполнения последовательности операторов). Оператор присоединенияоткрывает новую область видимости.$ОператорПрисоединения = WITH Обозначение$DO ПocлОператоров END.Пример:WITH t^ DOключ:=0; левый:=NIL;правый: =NILEND9.11.

Операторы выхода и возвратаОператор возврата состоит из слова RETURN, за которым, возможно, следует выражение.Он приводит к завершению процедуры (или тела модуля), а выражение определяет значение,возвращаемое как результат процедуры-функции. Тип этого выражения должен быть совместимпо присваиванию с типом результата, определенным в заголовке процедуры (см. гл. 10).Процедура-функция требует присутствия оператора возврата, задающего значениерезультата. Таких операторов может быть несколько, но выполняется только один из них.

Всобственно процедурах под оператором возврата подразумевается конец тела процедуры. Поэтомуявное задание оператора возврата рассматривается как дополнительная, возможно, дляисключительных ситуаций, точка завершения.Оператор выхода состоит из слова EXIT. Он определяет завершение охватывающего егобезусловного цикла и передачу управления на оператор, следующий за этим безусловным циклом(см. п.9.9).10.

ОПИСАНИЯ ПРОЦЕДУРОписание процедуры состоит из заголовка процедуры и блока, называемого телом процедуры.Заголовок определяет идентификатор процедуры и формальные параметры . Блок содержитописания и операторы. Идентификатор процедуры повторяется в конце описания процедуры.Имеются два вида процедур, а именно собственно процедура и процедура-Функция.Последняя активируется обозначением Функции, входящим в выражение, и вырабатываетрезультат, являющийся операндом выражения. Собственно процедура активируется вызовомпроцедуры.

Для процедуры-Функции в описании после списка параметров указывается типрезультата. Ее тело должно содержать оператор RETURN, определяющий результат процедурыфункции.Все константы, переменные, типы, модули и процедуры, описанные в блоке,составляющем тело процедуры, локальны для процедуры. Значения локальных переменных,включая и определенные в локальных модулях, не определены до входа в процедуру. Посколькупроцедуры в свою очередь могут быть описаны как локальные объекты, описания процедур могутбыть вложенными. Для каждого описанного объекта можно определить уровень его вложенности.Если объект локален для процедуры уровня к, то его уровень равен k+1.

Объекты, описанные вмодуле, являющемся единицей компиляции (см. гл.14), имеют по определению уровень 0.Помимо Формальных параметров и локальных объектов, в процедуре доступны такжеобъекты, описанные в окружении процедуры (за исключением объектов, имеющих имена,совпадающие с именами локальных объектов).157Использование идентификатора процедуры в вызове внутри ее описания предполагаетрекурсивную активацию процедуры.$$$$ОписаниеПроцедуры = ЗаголовокПроцедуры ";"Блок Идентификатор .ЗаголовокПроцедуры = PROCEDURE Идентификатор[ФормальныеПараметры].$Блок = {Описание} [BEGIN ПослОператоров] END.$Описание = CONST {ОписаниеКонстанты ";"}|$TYPE {ОписаниеТипа ";"}|$VAR {ОписаниеПеременной ";" }|$ОписаниеПроцедуры ";" | ОписаниеМодуля ";".10.1.

Формальные параметрыФормальные параметры - идентификаторы, обозначающие Фактические параметры,задаваемые при вызове процедуры. Соответствие между Формальными и Фактическимипараметрами устанавливается при вызове процедуры. Имеется два вида параметров: параметрызначения и параметры-переменные. Разновидность параметра указывается в списке Формальныхпараметров. Параметры-значения представляют собой локальные переменные, которым в качественачальных значений присваиваются результаты вычисления соответствующих Фактическихпараметров.

Параметры-переменные соответствуют Фактическим параметрам, являющимсяпеременными, и они подставляются вместо этих переменных. Параметры-переменныеуказываются символом VAR, у параметров-значений символа VAR нет.Формальные параметры локальны для процедуры, т.е. областью их видимости служитпрограммный текст, составляющий описание процедуры.$ФормальныеПараметры =$"(" [ФПСекция {":" ФПСекция}]")"[":" КвалИдент].$ФПСекция = [VAR] СписИдент ":" ФормТип.$ФормТип = [ARRAY OF] КвалИдент.Тип каждого Формального параметра указывается в списке формальных параметров. Вслучае параметров-переменных он должен совпадать (!) с типом соответствующего фактическогопараметра (см. п.9.2 и гл.12, где приведены исключения).

В случае параметров-значенийФормальный тип должен быть совместим по присваиванию с фактическим типом (см. п.9.1). Еслипараметром является массив, должна использоваться формаARRAY OF Tв которой опушена спецификация границ индексов. В таком случае говорят, что параметрявляется гибким массивом. Тип Т должен совпадать с типом элементов фактического массива, адиапазон индексов отображается на целые от 0 до N—1, где N - число элементов. Доступ кФормальному массиву только поэлементный, и он может передаваться фактическим параметром,если для соответствующего Формального параметра не заданы границы индексов. Процедурафункция без параметров имеет пустой список параметров.

Она может быть вызвана обозначениемФункции также с пустым списком Фактических параметров.158Ограничение: Если Формальный параметр определяет тип процедуры, тосоответствующий Фактический параметр должен быть либо процедурой, описанной на уровне 0,либо переменной (или параметром) типа этой процедуры и не может быть стандартнойпроцедурой.Примеры описаний процедур:PROCEDURE Read(VAR x:CARDINAL);VAR i:CARDINAL; ch:CHAR;BEGIN i:=0;REPEAT ReadChar(ch)UNTIL (ch>="0")&(ch<="9");REPEAT i:=10*i+(ORD(ch)-ORD("0"));ReadChar(ch)UNTIL (ch<"0")OR(ch>"9");x: = iEND ReadPROCEDURE Write(x,n:CARDINAL);VAR i:CARDINAL;buf:ARRAY[1..10]OF CARDINAL;BEGIN i:=0;REPEAT INC(i); buf[i]:=x MOD 10; x:=x DIV 10UNTIL x=0;WHILE n>i DOWriteChar(" ");DEC(n)END;REPEAT WriteChar(CHR(buf[i]+ORD("0")));DEC(i)UNTIL 1=0;END WritePROCEDURE log2(x:CARDINAL):CARDlNAL;VAR у:CARDINAL; (*предполагается х>0 *)BEGIN x:=x-1; y:=0;159WHILE x>0 DOx:=x DIV 2; y:=y+1END;RETURN уEND log210.2.

Стандартные процедурыСтандартные процедуры являются предопределенными. Некоторые из них - встраиваемыепроцедуры и не могут быть описаны явно, т.е. они применимы к классам типов операндов или жеимеют несколько возможных форм списка параметров. Стандартные процедуры перечисленыниже.ABS(x)абсолютное значение: тип результата совпадает с типом аргумента.CAP(ch)если ch - строчная буква, то соответствующая прописная буква: если ch прописная буква, она же является и результатом.CHR(x)литера с порядковым номером х.

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

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

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

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