не нужно. Занятие 1_3. Pascal abc.net: функции (подпрограммы) и модули

Функции (подпрограммы) и модули

Подпрограммы: процедуры и функции в паскаль abc.net

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

  • Второй функцией подпрограмм является их необходимость для структурирования кода.
  • В Pascal существует два типа подпрограмм: процедуры и функции.

  • Функции возвращают значение (например, функция min возвращает найденное минимальное значение).
  • Процедуры не возвращают значение, но самостоятельно выводят какие-то значения, либо считывают значения (write, read).
  • Пример: Поиск минимума из двух целых чисел. Реализовать с помощью процедуры и функции.

    ✍ Решение:
     

      Процедура:

      procedure minInt(x, y: integer);
      begin
        if x < y then
          writeln(x);
        else
          writeln(y);
      end;

      Функция:

      function minInt(x, y: integer): integer;
      begin
        if x < y then
          result := x
        else
          result := y;
      end;

Параметры подпрограмм

    Можно выделить три типа параметров:

    • входные или параметры, передаваемые по значению;
    • входно-выходные или параметры, передаваемые по ссылке;
    • выходные, тоже передаются по ссылке.

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

Пример входного параметра (по значению):

procedure inc(x: integer);
begin
  x := x + 1;
end;
// вызов процедуры в основной программе
begin
  var y := 5;
  inc(y); // Значение 5 будет скопировано, и внутри процедуры переменная x будет равна 5.
  writeln(y);  // 5. Значение переменной y не меняется!
end.

Пример входно-выходного параметра (передача параметра по ссылке):

procedure inc(var x: integer);
begin
  x := x + 1;
end;
// вызов процедуры в основной программе
begin
  var y := 5;
  writeln(y);  // 5
  inc(y);  // процедура будет работать не с копией x, а с оригиналом, самим x
  writeln(y);  // 6. Значение изменилось!
end.