Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop_1 / ЛК / Лекция 10Методы.doc
Скачиваний:
43
Добавлен:
10.06.2015
Размер:
174.08 Кб
Скачать

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для самого последнего аргумента р. Т.к. этому параметру будет соответствовать несколько фактических аргументов, число которых может быть произвольным.

Соседние файлы в папке ЛК