Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПргЯВУ_ЛК_СтефановаИА.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
4.41 Mб
Скачать

13.4. Аргументы и параметры

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

Синтаксис объявления двух параметров:

[ ref | out | params] тип_аргумента1 имя_аргумента1, тип_аргумента2 имя_аргумента2

Например: (out long p1, int p2); //выходные параметры разного типа

Параметры связаны с аргументами.

Аргументы – данные, передаваемые в подпрограмму или возвращаемые из нее. Это внешние для подпрограммы данные, с которыми имеет дело вызывающая часть программы. В подпрограмме им соответствуют параметры. Указываются в списке аргументов при обращении к подпрограмме и являются фактическими параметрами.

Синонимы:

Параметры = формальные параметры, условно Р.

Аргументы = фактические аргументы, условно А.

------------------------------------------------------

Можно для фиксированного числа формальных параметров передать методу произвольное число фактических аргументов. Для этого в списке формальных параметров необходимо задать ключевое слово params. Оно может появляться в объявлении лишь последнего аргумента списка, объявленного как массив произвольного типа. При вызове метода этому параметру соответствует произвольное число фактических аргументов.

Для аргументов и параметров надо соблюдать следующие правила:

  • одинаковое их количество (An=Pn) ,

  • одинаковый порядок следования (A1-P1, A2-P2..)

  • совместимость типов (типы одинаковы или неявно преобразованные),

  • одинаковый статус аргументов (если параметр объявлен с ключевым словом ref или out, то фактический аргумент должен сопровождаться таким же ключевым словом в точке вызова).

Все формальные параметры разделяются на 3 группы:

  • входные параметры – задаются без ключевого слова (или с параметром ref); передают информацию методу и их значения в теле метода только читаются;

  • выходные параметры – снабжаются ключевым словом out; представляют собой результаты метода, они получают значения в ходе работы метода; в теле метода должен присутствовать оператор присваивания, задающий значение этому параметру;

  • обновляемые параметры – снабжаются ключевым словом ref; выполняют обе функции. Их значения используются в ходе вычислений и обновляются в результате работы метода.

Например:

// Процедура Cube

void Cube(out long p2, int p1)

{

p2 = (long)Math.Pow(p1, 3);

Console.WriteLine(“Метод 1”);

}

// Процедура CubeM

void CubeM(out double p2, params double[ ] p)

{

p2 =0; for (int I = 0; I < p.lehgth; i++)

p2 + = Math.Pow(p[ i ], 3);

Console.WriteLine(“Метод 2”);

}

// Функция F

int F(ref int a)

{

retun (a++)

}

Все методы закрыты, поскольку объявлены без модификатора доступа. Cube и CubeM – процедуры, а F – функция. Аргумент р2 – является выходным (сопровождается ключевым словом out), поэтому в теле метода ему присваивается значение. Аргумент функции F является обновляемым (снабжен ключевым словом ref), в теле функции используется его значение для получения результата функции, но и само значение параметра изменяется в теле функции. Для процедуры CubeM используется ключевое слово params для самого последнего аргумента р. Т.к. этому параметру будет соответствовать несколько фактических аргументов, число которых может быть произвольным.