
- •13.0. Введение в классы, объекты и методы
- •13.1. Синтаксис класса
- •14.0. Подпрограммы
- •14.1. Основные понятия
- •14.2. Сравнение вариантов
- •14.3. Описание методов (процедур и функций)
- •14.4. Аргументы и параметры
- •14.5. Области действия имен
- •14.6. Тело метода (процедуры и функции)
- •14.7. Вызов метода. Синтаксис.
- •14.8. Функция
- •14.9. Процедура
14.3. Описание методов (процедур и функций)
Синтаксически в описании метода различают две части:
Описание заголовка
Описание тела метода.
ЗАГОЛОВОК_МЕТОДА
ТЕЛО_МЕТОДА
Синтаксис заголовка процедуры:
[атрибуты] [модификаторы] {void} имя_процедуры ([список параметров])
Синтаксис заголовка функции:
[атрибуты] [модификаторы] {тип результата функции} имя_функции ([параметры])
имя_метода ([список параметров]) составляют сигнатуру метода
–обязательная
часть в заголовке метода,
[ ] показывают, что атрибуты и модификаторы могут быть опущены при описании метода.
Модификаторы:
static– представляет стандартный поток для консольного приложения,
public– показывает, что методоткрыти доступен для вызова пользователем и потомками класса,
private– говорит, что методзакрыти предназначен для внутреннего использования в классе и доступен для вызова только в теле методов самого класса.
Если модификатор опущен, то метод является закрытым для пользователя и класса.
Примеры описания методов:
void A() {…};
int B() {…};
public void C() {…};
Методы А и В являются закрытыми, а метод С – открыт.
Методы А и С реализованы процедурами, а метод B– функцией, возвращающей целое значение (int), {…} – тело метода.
14.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для самого последнего аргумента р. Т.к. этому параметру будет соответствовать несколько фактических аргументов, число которых может быть произвольным.