Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

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

Предыдущий раздел:

Следующий раздел:

11.3. Параметры процедур

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

Пример: В описанном ранее алгоритме сортировки методом выбора, требовалось искать минимальный элемент в несортированной части массива и ставить его на левый край несортированной части. Отличие в действиях на каждом шаге алгоритма сводилось к изменению одного параметра – номера индекса, с которого начиналась несортированная часть.

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

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

  var
    x, y: integer;

  procedure Mult(a, b: integer); {Заголовок процедуры с описанием 
                                  двух параметров}
  var
    c: integer;
  begin
    c:=a*b; {Значения параметров используются для вычисления c}
    writeln(c);
  end;

  begin
    readln(x, y);
    Mult(x, y); {Вызов процедуры с указанием значений параметров}
  end.

Программа запросит у пользователя значения переменных x и y, затем вызовет процедуру Mult, указав при этом, что значения параметров a и b при данном вызове процедуры должны быть равны значениям переменных x и y. Процедура выведет произведение x*y.

Переменные a и b в заголовке процедуры называются формальными параметрами. То, что подставляется при вызове процедуры (в примере это переменные x и y), называется фактическими параметрами.

Формальный параметр внутри процедуры может использоваться как обычная локальная переменная. То есть их можно использовать в выражениях и даже присваивать им новые значения. Отличие от просто локальных переменных в том, что при вызове процедуры обязательно указывается, чему они изначально равны.

В качестве фактических параметров в данном примере могут выступать произвольные выражения. Например, возможен такой вызов процедуры: Mult(x*y+1, 2). Значения этих выражений присвоятся формальным параметрам, и процедура напечатает значение выражения (x*y+1)*2.

Следующий раздел:

Предыдущий раздел:

2 комментария

  1. Начинающий паскалист

    Мааленький недочет.
    «Например, возможен такой вызов процедуры: Mult(x/y+1, 2)»
    ничего не получится, так как тип формальных переменных не соответствует типу фактических переменных)) и тип локальной переменной не соответсвует типу ожидаемого результата.

  2. Taras

    Кстати, да. Спасибо. Исправил на умножение.

Добавить комментарий