Параметры и аргументы
Параметры являются элементами подпрограммы и используются при описании ее алгоритма. Аргументы указываются при вызове подпрограммы и замещают параметры при выполнении подпрограммы. Параметры могут быть любого типа, включая структурированный. Существуют следующие виды параметров [4]:
· Значение
· Константа
· Переменная
· Нетипизированная константа и переменная
Группа параметров, перед которыми в заголовке подпрограммы отсутствуют слова var или const и за которыми следует указание их типа, называются параметрами-значениями. В подпрограмме значения таких параметров можно изменять, но эти изменения не влияют на значение соответствующих им аргументов, которые были подставлены вместо фактических параметров-значений [4]. Например
Procedure Print(K:array of integer);
Заметим, что если в качестве параметра передается массив, то указывается только тип элементов, без указания размера.
Обратите внимание!Если в качестве параметра используется массив, то внутри подпрограммы нумерация его элементов всегда начинается с нуля, поэтому рекомендуется объявлять глобальный массив размерностью с нуля. Для передачи двумерного массива лучше объявить cпециальный тип и передавать в качестве параметра переменную созданного типа.
Type
MyType=array [0..Nmax,0..Nmax] of ….;
var
A:MyType;
Группа параметров, перед которыми в заголовке подпрограммы стоит слово const и за которыми следует описание их типа, называют параметрами-константами. В теле подпрограммы значение параметра-константы изменить нельзя [4].
Группа параметров, перед которыми в заголовке подпрограммы стоит слово var и за которыми следует описание их типа, называют параметрами-переменными. Они используются в тех случаях, когда значение должно быть передано из подпрограммы в вызывающий блок. В этом случае при вызове подпрограммы параметр-переменная замещается аргументом, и любые изменения формального параметра отражаются на аргументе [4]. Таким способом можно вернуть результаты из подпрограммы по окончанию ее работы. Например
function Tan(a:real;var d:boolean):real;
Для параметров-констант и параметров-переменных можно не указывать их тип, в этом случае они считаются нетипизированными. Подставляемые на их место аргументы могут быть любого типа, и программист должен самостоятельно интерпретировать типы параметров в теле подпрограммы.
Группы параметров в описании подпрограммы разделяются точкой с запятой.
Пример 8.
Возведение вещественного числа в целую степень. (Использование функции)
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
Function Stepen(x:real;n:integer):Real;
begin
if x=0 then Result:=0
else
begin
result:=exp(n*ln(abs(x)));
if (x<0) and (n mod 2 <>0) then
Result:=Result*(-1);
end;
end;
var
x,y:real;
n:integer;
begin
Writeln('Vuchislenie stepeni');
Write('vvedite chislo ');
readln(x);
Write('vvedite stepen ');
readln(n);
y:=Stepen(x,n);
Write('Otvet ',y:5:5);
Readln;
end.
Дата добавления: 2015-04-10; просмотров: 733;