Подпрограммы, формальные и фактические параметры — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Новая страница: «= Подпрограммы = Подпрограммы используются для решения однотипных задач. В первую очередь…»)
 
(Подпрограммы)
Строка 4: Строка 4:
  
 
На самом деле даже если сейчас некоторый код вам нужен лишь единожды, но он решает какую-то общую задачу (например, поиск минимума из трех чисел или сортировка массива), стоит выделить его в подпрограмму.
 
На самом деле даже если сейчас некоторый код вам нужен лишь единожды, но он решает какую-то общую задачу (например, поиск минимума из трех чисел или сортировка массива), стоит выделить его в подпрограмму.
 +
 +
Подпрограммы имеют:
 +
*'''имя''';
 +
*'''список параметров'''.
  
 
== Процедуры и функции ==
 
== Процедуры и функции ==
Строка 9: Строка 13:
 
В Pascal выделяют два типа подпрограмм: '''процедуры''' и '''функции'''. Они похожи, но функции имеют возвращаемое значение (например, функция <tt>min</tt> или <tt>cos</tt>), а процедуры — нет (<tt>write</tt>, <tt>read</tt>).
 
В Pascal выделяют два типа подпрограмм: '''процедуры''' и '''функции'''. Они похожи, но функции имеют возвращаемое значение (например, функция <tt>min</tt> или <tt>cos</tt>), а процедуры — нет (<tt>write</tt>, <tt>read</tt>).
  
 +
<u>Пример процедуры.</u> Печать на консоль пары значений: <tt>x, f(x)</tt>.
 +
<source lang="Pascal">
 +
procedure printArgFuncPair(x: real; fx: real);
 +
begin
 +
  writelnFormat('x = {0,6:f4}; f(x) = {1,6:f4}',
 +
    x, fx);
 +
end;
 +
</source>
 +
 +
<u>Пример функции.</u> Минимум из двух целых чисел.
 +
<source lang="Pascal">
 +
function MinInt(x, y: integer): integer;
 +
begin
 +
  if x < y then
 +
    result := x
 +
  else
 +
    result := y;
 +
end;
 +
</source>
 +
 +
== Параметры подпрограмм ==
 +
 +
Логически выделяют три типа параметров:
 +
* входные;
 +
* входно-выходные;
 +
* выходные.
 +
 +
Как следует из названия, '''входные''' параметры только используются подпрограммой. В процессе работы подпрограммы они не изменяются. Например, функция <tt>cos(x)</tt> получает на ''вход'' значение угла в радианах и ''возвращает'' значение косинуса этого угла. Значение угла никак не модифицируется. То же можно сказать о параметрах подпрограмм из примеров выше.
 +
 +
Входно-выходные параметры используются в подпрограмме и модифицируются. То есть новое значение параметра важно для вызывающей стороны. Вспомним, например, процедуру инкремента:
 +
 +
<source lang="Pascal">
 +
procedure inc(var x: integer);
 +
begin
 +
  x := x + 1;
 +
end;
 +
</source>
 +
 +
И рассмотрим вызов процедуры в основной программе:
 +
 +
<source lang="Pascal">
 +
begin
 +
  var x := 5;
 +
  writeln(x);
 +
  inc(x);
 +
  writeln(x);
 +
end.
 +
</source>
 +
 +
В результате работы получится следующий вывод:
 +
<pre>
 +
5
 +
6
 +
</pre>
  
  
 
[[Категория:Основы программирования]]
 
[[Категория:Основы программирования]]

Версия 20:27, 28 октября 2012

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

Подпрограммы используются для решения однотипных задач. В первую очередь, они позволяют избавиться от дублирования кода. Если вы поймали себя на том, что второй или даже третий раз делаете «копи/паст», значит пришло время написать подпрограмму.

На самом деле даже если сейчас некоторый код вам нужен лишь единожды, но он решает какую-то общую задачу (например, поиск минимума из трех чисел или сортировка массива), стоит выделить его в подпрограмму.

Подпрограммы имеют:

  • имя;
  • список параметров.

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

В Pascal выделяют два типа подпрограмм: процедуры и функции. Они похожи, но функции имеют возвращаемое значение (например, функция min или cos), а процедуры — нет (write, read).

Пример процедуры. Печать на консоль пары значений: x, f(x).

procedure printArgFuncPair(x: real; fx: real); 
begin
  writelnFormat('x = {0,6:f4}; f(x) = {1,6:f4}', 
    x, fx);
end;

Пример функции. Минимум из двух целых чисел.

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

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

Логически выделяют три типа параметров:

  • входные;
  • входно-выходные;
  • выходные.

Как следует из названия, входные параметры только используются подпрограммой. В процессе работы подпрограммы они не изменяются. Например, функция cos(x) получает на вход значение угла в радианах и возвращает значение косинуса этого угла. Значение угла никак не модифицируется. То же можно сказать о параметрах подпрограмм из примеров выше.

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

procedure inc(var x: integer);
begin
  x := x + 1;
end;

И рассмотрим вызов процедуры в основной программе:

begin
  var x := 5;
  writeln(x);
  inc(x);
  writeln(x);
end.

В результате работы получится следующий вывод:

5
6