Опубликован: 28.04.2014 | Доступ: свободный | Студентов: 990 / 89 | Длительность: 01:30:00
Специальности: Программист
Лекция 8:

Процедуры и функции. Процедуры

< Лекция 1 || Лекция 8: 12
Аннотация: На этом уроке рассматриваются процедуры, представляющие обобщение понятия функции. Главное содержательное отличие процедуры от функции состоит в том, что процедура может иметь несколько результатов. По этой причине формальные параметры процедуры разделяются на три группы – входные, выходные и обновляемые. Подробно обсуждается то общее, что есть у процедур и функций, и синтаксические и содержательные отличия в объявлении и вызове процедур и функций. На примерах решения конкретных задач показано объявление и вызов процедур. Строится Windows проект.

Основная цель нашего курса – научиться программированию в процедурах и функциях.

Проект для лекции Lesson4.zip

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

Всякую функцию можно записать в виде процедуры с одним выходным параметром.

В чем отличие процедуры от функции?

  1. У процедуры нет возвращаемого значения.
  2. У процедуры формальные параметры делятся на три группы: входные, выходные или результаты и обновляемые. Заметьте, у классической функции все формальные параметры являются входными параметрами, то есть параметрами, значения которых должны быть заданы при вызове функции. У процедуры выходные параметры представляют результаты вычисления. Они получают значения в ходе выполнения процедуры. Выходных параметров может быть несколько. Обновляемые параметры одновременно играют роль входных и выходных параметров. Они имеют значение в момент вызова процедуры, но эти значения могут изменяться в ходе выполнения тела процедуры.
  3. Функции вызываются в выражениях, являясь первичными выражениями. Вызов процедуры - это оператор. Оператор вызова процедуры – это один из основных операторов языка программирования наряду с операторами присваивания, операторами выбора и цикла.

Рассмотрим отличия в синтаксисе записи процедур и функций. Также, как и у функции, в описании процедуры выделяются две части – заголовок и тело. Тело описывает отображение, преобразующее выходные параметры в результаты, заголовок описывает, что же является входом и выходом, имена и типы формальных параметров.

Синтаксис заголовка:

Void <имя процедуры> (<список формальных параметров>)

Ключевое слово void указывает на отсутствие возвращаемого значения.

<формальный параметр> ::= [ref | out]<тип параметра> <имя параметра>

Ключевое слово ref указывается для обновляемых параметров.

Ключевое слово out указывается для выходных параметров.

Для входных параметров ключевое слово не задается.

Синтаксические формулы

При описании синтаксиса языков программирования принято использовать синтаксические формулы. В этих формулах используются:

  • Нетерминальные символы, задающие синтаксические понятия, характерные для данного языка, например, понятие "оператор присваивания". В синтаксических формулах такие понятия заключаются в угловые скобки, например, <Заголовок процедуры>.
  • Терминальные символы, - символы, которые принадлежат языку программирования, например, <имя процедуры> (<список формальных параметров>). Здесь терминальными символами являются круглые скобки, окружающие понятие списка формальных параметров. Формула говорит, что синтаксис требует, чтобы список был заключен в круглые скобки.
  • Мета символы, принадлежащие синтаксической формуле. Приведу описание основных мета символов, используемых в синтаксических формулах:
    • Угловые скобки: < >. Как было сказано, используются для выделения нетерминальных символов.
    • Символ вертикальной черты - |. Совпадает со знаком логической операции "Или" и имеет тот же смысл. Например, формула: + | - | * | / означает, что в этом месте может использоваться знак арифметической операции сложения или вычитания, или умножения, или деления.
    • Квадратные скобки: [ ]. Понятие, заключенное в эти скобки, может присутствовать или быть опущенным. Например, формула [ + | - ] <число> говорит, что число может быть со знаком, но знак не обязателен и может быть опущен.
    • Знак :: = определения понятия – "это есть" или "по определению". Этот знак используется для определения некоторого понятия синтаксической формулой. Такая формула похожа на оператор присваивания. В левой части формулы стоит определяемое понятия, а справа от знака стоит синтаксическая формула, определяющая это понятие. Рассмотрим выше приведенную формулу: > ::= [ref | out]<тип параметра> <имя параметра>. Эта формула говорит, что формальный параметр по определению начинается с одного из ключевых слов ref или out, которые могут быть опущены. Обязательно должен быть задан тип параметра и его имя.
< Лекция 1 || Лекция 8: 12
Дмитрий Лубченков
Дмитрий Лубченков
Николай Молдован
Николай Молдован