Читаем Этюды для программистов полностью

Поскольку используются принятые в Алголе 68 условные инструкции и инструкции цикла, нет нужды разбивать их на несколько отдельных синтаксических классов. Все инструкции должны завершаться точкой с запятой.

Присваивания

<инструкция присваивания>::= SET <список целей> <выражение>;

<список целей>::=<цель>

|<список целей> <цель>

<цель> ::=<переменная> <заменить на>

<заменить на>::—:=

В <инструкции присваивания> <тип> всех <целей> и <тип> присваиваемого <выражения> должен быть одним и тем же. <Цели> обрабатываются слева направо, чтобы определить адреса в памяти, и только затем вычисляется выражение, чтобы найти запоминаемое значение. Структуры и массивы можно присваивать в случае совпадения <типов>. Использование ключевого слова SET служит примером многословности Мини. Данная избыточность помогает исправлению, когда неправильно записано другое ключе вое слово (распространенная ошибка).

Вызовы процедур

<инструкция вызова>::= CALL <обращение к процедуре>;

<обращение к процедуре> ::= <идентификатор процедура>

|<идентификатор процедуры> <список фактических параметров>

<идентификатор процедуры>::= <идентификатор>

<список фактических параметров> ::= <заголовок фактических параметров>)

<заголовок фактических параметров>::=(<<выражение>

|<заголовок фактических параметров>, <выражение>

Можно вызывать только процедуры, получившие определения а областью действия, содержащей <инструкцию вызова>. Количество, порядок и типы фактических и формальных параметров должны совпадать. После того как в вызываемой процедуре выполнится <инструкция возврата>, управление будет передано на следующую за вызовом инструкцию. Ключевое слово CALL используется по тем же соображениям, что и SET в <инструкции присваивания>.

Возвраты

<инструкция возврата> ::= RETURN;

| RETURN <выражение>;

<Инструкция возврата> может употребляться только в процедуре. Она возвращает управление в вызывающую инструкцию, В конце подпрограммы имеется неявная <инструкция возврата>. При возврате из подпрограммы значение указывать нельзя. При возврате из функции значение указывать обязательно. Оно должно иметь тот же тип, что и функция.

Инструкции завершения

<инструкция завершения>::= EXIT;

Данная инструкция вызывает нормальное завершение всей программы и возврат в супервизор. Она должна быть последней выполненной (не обязательно последней написанной) инструкцией <программы>.

Условные инструкции

<условная инструкция> ::= <простая условная инструкция>

|<метка> <простая условная инструкция>

<простая условная инструкция>::= <спецификация условия> <истинная ветвь> FI;

|<спецификация условия> <истинная ветвь> <ложная ветвь> FI;

<спецификация условия> ::= IF <выражение>

<истинная ветвь>::=THEN <тело условной инструкции>

<ложная ветвь> ::= <иначе> <тело условной инструкции>

<иначе>::= ELSE

<тело условной инструкции> ::= <тело сегмента>

В <условной инструкции> выбирается и выполняется <истинная ветвь> или <ложная ветвь> в зависимости от истинности <выражения> типа BOOLEAN. Каждая ветвь представляет собой <тело сегмента> и может содержать все необходимые определения, декларации и инструкции без дополнительных скобок. После выполнения выбранной ветви управление передается на инструкцию, следующую за условной.

Составные инструкции

<составная инструкция> ::=<простая составная инструкция>

|<метка> <простая составная инструкция>

<простая составная инструкция>::<заголовок составной инструкции> <тело составной инструкции> <конец составной инструкции>

<заголовок составной инструкции>::= BEGIN

<тело составной инструкции> ::= <тело сегмента>

<конец составной инструкции> ::= END;

|END <идентификатор>;

Другие возможности, заложенные в синтаксисе Мини, делают <составные инструкции> не особенно необходимыми. Однако <составные инструкции> полезны в сочетании с инструкциями REPEAT и REPENT. В начало составной инструкции можно поместить декларации и определения. Если после END записан <идентификатор>, он должен быть <меткой>, причем <метка> и <идентификатор> обязаны совпадать. 

Рисунок 27.1. Определение на метаМини, позволяющее понять действие <инструкции цикла>. Это «определение» влечет за собой обязательное перевычисление <цели цикла>.

Инструкции цикла

<инструкция цикла>::= <простая инструкция цикла>

|<метка> <простая инструкция цикла>

<простая инструкция цикла>::= <заголовок цикла> <тело цикла> <конец цикла>

<заголовок цикла>::= <для> <цель цикла> <управление> DO

<тело цикла> ::= <тело сегмента>

<конец цикла>::= END FOR;

|END FOR <идентификатор>;

<для>::= FOR

<цель цикла>::= <переменная> <заменить на>

<управление>::= <шаговое управление>

|<шаговое управление> <условное управление>

<шаговое управление> ::= <начальное значение> <шаг>

|<начальное значение> <предел>

|<начальное значение> <шаг> <предел>

<начальное значение>::= <выражение>

<шаг>::= BY <выражение>

<предел>::= ТО <выражение>

<условное управление>::= WHILE <выражение>

Перейти на страницу:

Похожие книги

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT