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

Содержание

Слайд 2

Определение Козьминых Н.М. Процедуры и функции позволяют: задать определенную функциональность, многократно

Определение

Козьминых Н.М.

Процедуры и функции позволяют:
задать определенную функциональность,
многократно выполнять один и

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

Функции Козьминых Н.М. Функция отличается от процедуры двумя особенностями: Она всегда

Функции

Козьминых Н.М.

Функция отличается от процедуры двумя особенностями:
Она всегда вычисляет некоторое значение,

возвращаемое в качестве результата функции;
И вызывается в выражениях.
Слайд 4

Процедуры Козьминых Н.М. Процедура C# имеет свои особенности: Она возвращает формальный

Процедуры

Козьминых Н.М.

Процедура C# имеет свои особенности:
Она возвращает формальный результат void,

указывающий на отсутствие результата;
Вызов процедуры является оператором языка;
И она имеет входные и выходные аргументы, причем выходных аргументов - ее результатов - может быть достаточно много.
Слайд 5

Функции и процедуры (методы) Козьминых Н.М. Обычно метод предпочитают реализовать в

Функции и процедуры (методы)

Козьминых Н.М.

Обычно метод предпочитают реализовать в виде функции

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

Метод Козьминых Н.М. Синтаксически в описании метода различают две части: заголовок_метода тело_метода

Метод

Козьминых Н.М.

Синтаксически в описании метода различают две части:
заголовок_метода
тело_метода

Слайд 7

Заголовок метода Козьминых Н.М. Синтаксис: [атрибуты][модификаторы]{void| тип_рез_функции} имя_метода ([список_формальных_аргументов]) Имя метода

Заголовок метода

Козьминых Н.М.

Синтаксис:
[атрибуты][модификаторы]{void| тип_рез_функции}
имя_метода
([список_формальных_аргументов])
Имя метода и список формальных

аргументов составляют сигнатуру метода.
В сигнатуру не входят имена формальных аргументов - здесь важны типы аргументов.
В сигнатуру не входит тип возвращаемого результата.
Слайд 8

Модификатор Козьминых Н.М. Модификатор доступа может иметь четыре возможных значения, рассмотрим

Модификатор

Козьминых Н.М.

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

- public и private.
Модификатор public показывает, что метод открыт и доступен для вызова клиентами и потомками класса.
Модификатор private говорит, что метод предназначен для внутреннего использования в классе и доступен для вызова только в теле методов самого класса.
Если модификатор доступа опущен, то по умолчанию предполагается, что он имеет значение private.
Слайд 9

Тип результата Козьминых Н.М. Тип результата метода указывается всегда, но значение

Тип результата

Козьминых Н.М.

Тип результата метода указывается всегда, но значение void однозначно

определяет, что метод реализуется процедурой.
Тип результата, отличный от void, указывает на функцию.
void A() {...};
int B(){...};
public void C(){...};
Методы A и B являются закрытыми, а метод С - открыт.
Методы A и С реализованы процедурами, а метод B - функцией, возвращающей целое значение.
Слайд 10

Список формальных аргументов Козьминых Н.М. Список формальных аргументов метода может быть

Список формальных аргументов

Козьминых Н.М.

Список формальных аргументов метода может быть пустым.
Список может

содержать фиксированное число аргументов, разделяемых символом запятой.
Синтаксис:
[ ref | out | params ] тип_аргумента имя_аргумента
Обязательным является указание типа и имени аргумента.
Слайд 11

Список формальных аргументов Козьминых Н.М. params - ключевое слово, позволяющее передавать

Список формальных аргументов

Козьминых Н.М.

params - ключевое слово, позволяющее передавать методу произвольное

число фактических аргументов.
Аргументы метода разделяются на три группы:
входные,
выходные (out),
обновляемые (ref).
Слайд 12

Список формальных аргументов Козьминых Н.М. Входные аргументы передают информацию методу, их

Список формальных аргументов

Козьминых Н.М.

Входные аргументы передают информацию методу, их значения в

теле метода только читаются.
Выходные (out) представляют собой результаты метода, они получают значения в ходе работы метода.
Обновляемые (ref) выполняют обе функции:
их значения используются в ходе вычислений;
обновляются в результате работы метода.
Слайд 13

Тело метода Козьминых Н.М. Тело метода является блоком, который представляет собой

Тело метода

Козьминых Н.М.

Тело метода является блоком, который представляет собой последовательность операторов

и описаний переменных, заключенную в фигурные скобки.
Если это тело функции, то в блоке должен быть хотя бы один оператор перехода, возвращающий значение функции в форме return (выражение).
Слайд 14

Пример Козьминых Н.М. // Процедура с входным и выходным параметрами private

Пример

Козьминых Н.М.

// Процедура с входным и выходным параметрами
private void A(out double

p2, double p1) {    p2 = Math.Pow(p1, 3);
}
// Процедура с обновляемым параметром
private void B(ref int a) {    a++;
}
// Функция
private int C(int a) {    return ++a;
}
Слайд 15

Вызов метода Козьминых Н.М. Синтаксис: имя_метода( [список_фактических_аргументов] ) Формальный аргумент задается

Вызов метода

Козьминых Н.М.

Синтаксис:
имя_метода( [список_фактических_аргументов] )
Формальный аргумент задается при определении метода -

это всегда имя аргумента (идентификатор).
Фактический аргумент – это выражение, используемое при вызове метода.
Слайд 16

Вызов метода Козьминых Н.М. Между списком формальных и списком фактических аргументов

Вызов метода

Козьминых Н.М.

Между списком формальных и списком фактических аргументов должно выполняться

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

Пример Козьминых Н.М. // Определение метода private void A(out double p2,

Пример

Козьминых Н.М.

// Определение метода
private void A(out double p2, double p1){    p2

= Math.Pow(p1, 3);
}
// Вызов метода
private void btn_Click(object sender, EventArgs e){
double p, s = 2;
A(out p, s);
btn.Text = p.ToString();
}
// Ответ: 8
Слайд 18

Пример Козьминых Н.М. // Определение метода private void B(ref int a){

Пример

Козьминых Н.М.

// Определение метода
private void B(ref int a){
a++;
}
// Вызов метода


private void btn_Click(object sender, EventArgs e){
int p = 10;
B(ref p);
btn.Text = p.ToString();
}
// Ответ: 11
Слайд 19

Пример Козьминых Н.М. // Определение метода private int C(int a){ return

Пример

Козьминых Н.М.

// Определение метода
private int C(int a){
return ++a;
}
// Вызов метода


private void btn_Click(object sender, EventArgs e){
int p = 4;
btn.Text = C(p).ToString();
}
// Ответ: 5