Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Функции (c#)

Содержание

Первыми формами модульности, появившимися в языках программирования, были процедуры и функции. Они позволяли задавать определенную функциональность и многократно выполнять один и тот же параметризованный программный код при различных значениях параметров. Поскольку функции в математике использовались издавна,
Функции (c#) Первыми формами модульности, появившимися в языках программирования, были процедуры и функции. Они Долгое время процедуры и функции играли не только функциональную, но и архитектурную Прежнюю роль библиотек процедур и функций теперь играют библиотеки классов. Библиотека классов Процедуры и функции связываются с классом, они обеспечивают функциональность данных класса и В языке C# нет специальных ключевых слов - procedure и function, но Функция отличается от процедуры двумя особенностями: 1. Она всегда вычисляет некоторое значение, Процедура C# имеет свои особенности: 1. Она возвращает формальный результат void, указывающий Обычно метод предпочитают реализовать в виде функции тогда, когда он имеет один Описание процедур и функций (методов класса)заголовок_метода  тело_метода Рассмотрим синтаксис заголовка метода: Имя метода и список формальных аргументов составляют сигнатуру метода. Отметим, что в Модификатор доступа может иметь четыре возможных значения, из которых пока рассмотрим только Обязательным при описании заголовка является указание типа результата, имени метода и круглых Вот несколько простейших примеров описания методов: void A() {...};  int B(){...}; Список формальных аргументов Как уже отмечалось, список формальных аргументов метода может быть Рассмотрим теперь синтаксис объявления формального аргумента: [ ref | out | params Несмотря на фиксированное число формальных аргументов, есть возможность при вызове метода передавать Содержательно, все аргументы метода разделяются на три группы: входные, выходные и обновляемые. ///  /// Группа перегруженных методов A()  /// первый аргумент представляет Четыре перегруженных метода с именем A и метод f будут использоваться при Тело метода Синтаксически тело метода является блоком, который представляет собой последовательность операторов Передача параметровМожно передавать объекты по значению, а можно по ссылке, для этого Если нужно просто вернуть значение из функции, а не изменить существующее значение, Функции с переменным числом параметровВ стек помещается только массив объектов, а сами using System; class Test {  static void F(params int[] args) { Управление видимостьюЕсть пять типов видимости: public - функции могут вызывать кто угодно Функции и наследованиеПри наследовании можно скрыть функцию, для этого потребуется перед ней СвойстваПозволяют скрыть способ получения значения а так же реализовать дополнительную логику. public
Слайды презентации

Слайд 2 Первыми формами модульности, появившимися в языках программирования, были

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

процедуры и функции. Они позволяли задавать определенную функциональность и

многократно выполнять один и тот же параметризованный программный код при различных значениях параметров. Поскольку функции в математике использовались издавна, то появление их в языках программирования было совершенно естественным. Уже с первых шагов процедуры и функции позволяли решать одну из важнейших задач, стоящих перед программистами, - задачу повторного использования программного кода. Встроенные в язык функции давали возможность существенно расширить возможности языка программирования. Важным шагом в автоматизации программирования было появление библиотек процедур и функций, доступных из используемого языка

Слайд 3 Долгое время процедуры и функции играли не только

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

функциональную, но и архитектурную роль. Весьма популярным при построении

программных систем был метод функциональной декомпозиции «сверху вниз», и сегодня еще играющий важную роль. Но с появлением объектно-ориентированного программирования (ООП) архитектурная роль функциональных модулей отошла на второй план. Для объектно-ориентированных языков, к которым относится и язык C#, в роли архитектурного модуля выступает класс. Программная система строится из модулей, роль которых играют классы, но каждый из этих модулей имеют содержательную начинку, задавая некоторую абстракцию данных.

Слайд 4 Прежнюю роль библиотек процедур и функций теперь играют

Прежнюю роль библиотек процедур и функций теперь играют библиотеки классов. Библиотека

библиотеки классов. Библиотека классов FCL Framework Class Library, библиотека

классов каркаса), доступная в языке C#, существенно расширяет возможности языка. Знание классов этой библиотеки и методов этих классов совершенно необходимо для практического программирования на C# с использованием всей его мощи.


Слайд 5 Процедуры и функции связываются с классом, они обеспечивают

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

функциональность данных класса и называются методами класса. Главную роль

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


Слайд 6 В языке C# нет специальных ключевых слов -

В языке C# нет специальных ключевых слов - procedure и function,

procedure и function, но присутствуют сами эти понятия. Синтаксис

объявления метода позволяет однозначно определить, чем является метод - процедурой или функцией.

Слайд 7 Функция отличается от процедуры двумя особенностями:
1. Она

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

всегда вычисляет некоторое значение, возвращаемое в качестве результата функции;


2. И вызывается в выражениях.


Слайд 8 Процедура C# имеет свои особенности:
1. Она возвращает

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

формальный результат void, указывающий на отсутствие результата;
2. Вызов

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


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

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

когда он имеет один выходной аргумент, рассматриваемый как результат

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

Слайд 10 Описание процедур и функций (методов класса)
заголовок_метода тело_метода

Рассмотрим

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

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


Слайд 11 Имя метода и список формальных аргументов составляют сигнатуру

Имя метода и список формальных аргументов составляют сигнатуру метода. Отметим, что

метода. Отметим, что в сигнатуру не входят имена формальных

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


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

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

которых пока рассмотрим только два - public и private.

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


Слайд 13 Обязательным при описании заголовка является указание типа результата,

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

имени метода и круглых скобок, наличие которых необходимо и

в том случае, если сам список формальных аргументов отсутствует. Формально тип результата метода указывается всегда, но значение void однозначно определяет, что метод реализуется процедурой. Тип результата, отличный от void, указывает на функцию.

Слайд 14 Вот несколько простейших примеров описания методов:
void A()

Вот несколько простейших примеров описания методов: void A() {...}; int B(){...};

{...}; int B(){...}; public void C(){...};
Методы A и

B являются закрытыми, а метод С - открыт. Методы A и С реализованы процедурами, а метод B - функцией, возвращающей целое значение.


Слайд 15 Список формальных аргументов
Как уже отмечалось, список формальных

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

аргументов метода может быть пустым, и это довольно типичная

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


Слайд 16 Рассмотрим теперь синтаксис объявления формального аргумента:
[ ref

Рассмотрим теперь синтаксис объявления формального аргумента: [ ref | out |

| out | params ] тип_аргумента имя_аргумента.
Обязательным является

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


Слайд 17 Несмотря на фиксированное число формальных аргументов, есть возможность

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

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

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


Слайд 18 Содержательно, все аргументы метода разделяются на три группы:

Содержательно, все аргументы метода разделяются на три группы: входные, выходные и

входные, выходные и обновляемые. Аргументы первой группы передают информацию

методу, их значения в теле метода только читаются. Аргументы второй группы представляют собой результаты метода, они получают значения в ходе работы метода. Аргументы третьей группы выполняют обе функции. Их значения используются в ходе вычислений и обновляются в результате работы метода. Выходные аргументы всегда должны сопровождаться ключевым словом out, обновляемые - ref. Что же касается входных аргументов, то, как правило, они задаются без ключевого слова, хотя иногда их полезно объявлять с параметром ref. Отметим, если аргумент объявлен как выходной с ключевым словом out, то в теле метода обязательно должен присутствовать оператор присваивания, задающий значение этому аргументу. В противном случае возникает ошибка еще на этапе компиляции.


Слайд 19 /// /// Группа перегруженных методов A() ///

///  /// Группа перегруженных методов A() /// первый аргумент представляет

первый аргумент представляет сумму кубов /// произвольного числа оставшихся

аргументов /// Аргументы могут быть разного типа. /// private void A(out long p2, int p1) { p2 = (long) Math.Pow(p1, 3); Console.WriteLine("Метод A-1"); } private void A(out long p2, params int[ ] p) { p2 = 0; for (int i = 0; i < p.Length; i++) p2 += (long) Math.Pow(p[i], 3); Console.WriteLine("Метод A-2"); } private void A(out double p2, double p1) { p2 = Math.Pow(p1, 3); Console.WriteLine( “Метод A-3"); } private void A(out double p2, params double[ ] p) { p2 = 0; for (int i = 0; i < p.Length; i++) p2 += Math.Pow(p[i], 3); Console.WriteLine("Метод A-4"); } /// /// Функция с побочным эффектом /// /// Увеличивается на 1 /// значение a на входе private int f(ref int a) { return a++; }

Слайд 20 Четыре перегруженных метода с именем A и метод

Четыре перегруженных метода с именем A и метод f будут использоваться

f будут использоваться при объяснении перегрузки и побочного эффекта.

Сейчас проанализируем только их заголовки. Все методы закрыты, поскольку объявлены без модификатора доступа. Перегруженные методы с именем A являются процедурами, метод f - функцией. Все четыре перегруженных метода имеют разную сигнатуру. Хотя имена и число аргументов у всех методов одинаковы, но типы и ключевые слова, предшествующие аргументам, различны. Первый аргумент у всех четырех перегруженных методов - выходной и сопровождается ключевым словом out, в теле метода этому аргументу присваивается значение. Аргумент функции f - обновляемый, он снабжен ключевым словом ref, в теле функции используется его значение для получения результата функции, но и само значение аргумента изменяется в теле функции. Два метода из группы перегруженных методов используют ключевое слово params для своего последнего аргумента. Позже мы увидим, что при вызове этих методов указанному аргументу будет соответствовать несколько фактических аргументов, число которых может быть произвольным.


Слайд 21 Тело метода
Синтаксически тело метода является блоком, который

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

представляет собой последовательность операторов и описаний переменных, заключенную в

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


Слайд 22 Передача параметров
Можно передавать объекты по значению, а можно

Передача параметровМожно передавать объекты по значению, а можно по ссылке, для

по ссылке, для этого есть ключевое слово ref:
static

void Swap(ref int a, ref int b)
{ int t = a; a = b; b = t; }

Слайд 23 Если нужно просто вернуть значение из функции, а

Если нужно просто вернуть значение из функции, а не изменить существующее

не изменить существующее значение, то нужно использовать ключевое слово

out:
static void SolveSquareEquation( double a, double b, double c, out double x1, out double x2);
Причем соответствующее слово должно ставиться не только в заголовке функции, но и при ее вызове
swap(ref aa, ref bb);

Слайд 24 Функции с переменным числом параметров
В стек помещается только

Функции с переменным числом параметровВ стек помещается только массив объектов, а

массив объектов, а сами объекты размещаются теперь в куче,

а не на стеке Для компилятора указывается ключевое слово params:

Слайд 25 using System;
class Test
{
static

using System; class Test {  static void F(params int[] args)

void F(params int[] args)
{ Console.WriteLine("# of arguments: {0}",

args.Length);
for (int i = 0; i < args.Length; i++)
{ Console.WriteLine("\targs[{0}] = {1}", i, args[i]);
}
static void Main()
{ F(); F(1); F(1, 2); F(1, 2, 3);
F(new int[] {1, 2, 3, 4}); } }
}


Слайд 26 Управление видимостью
Есть пять типов видимости:
public - функции

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

могут вызывать кто угодно
protected - функции могут вызывать

только производные классы
private - функции могут вызываться только из этого же класса
internal - функции могут вызываться внутри пространства имен?
protected internal = protected + internal
то же самое относится ко всему, что находится внутри класса


Слайд 27 Функции и наследование
При наследовании можно скрыть функцию, для

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

этого потребуется перед ней написать ключевое слово new. Можно

переопределить, использовав ключевое слово override. Но переопределить можно только те функции, которые были объявлены ключевым словом virtual, как виртуальные (в отличие от Java, функции в C# по умолчанию невиртуальные)


Слайд 28 Свойства
Позволяют скрыть способ получения значения а так же

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

реализовать дополнительную логику.
public string Caption
{
get
{

return ...;
}
set
{ ... = value; ...redraw...
}
}
Если написать только функцию доступа get, а функцию доступа put пропустить, то свойство будет доступным только для чтения.


  • Имя файла: funktsii-c.pptx
  • Количество просмотров: 142
  • Количество скачиваний: 0