Операторы условия, цикла, функции

Содержание

Слайд 2

Функция Повторно используемая часть кода Функция имеет имя Функция имеет ни

Функция

Повторно используемая часть кода
Функция имеет имя
Функция имеет ни одного, один или

несколько аргументов – формальных параметров
Функция (ее прототип) должен быть заранее создан
В прототипе используются формальные параметры функции
Функция (обычно) вызывается по ее имени
При вызове в скобках указываются «настоящие» аргументы – фактические параметры
Слайд 3

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

Функция

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

эти фактические значения
Внутри функции могут быть свои – локальные переменные
Они «перекрывают» внешние переменные
Функции могут (а обычно и возвращают) давать результат
За выдачу результата отвечает ключевое слов return
Слайд 4

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

Пример

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

образом, мне нужна функция PrintColor (например)
Представим себе ее логику:
Надо задать цвет символов консоли
Надо напечатать строку
Слайд 5

Пример Но, что если я хочу ПОТОМ напечатать что-то НЕ цветное

Пример

Но, что если я хочу ПОТОМ напечатать что-то НЕ цветное
Хорошо бы

запоминать старый цвет
Заменить его на желаемый
Напечатать нужное
Восстановить старый цвет
Слайд 6

Пример Итак, есть имя функции – PrintColor У нее два аргумента:

Пример

Итак, есть имя функции – PrintColor
У нее два аргумента:
Строка для печати
Цвет

строки
Функция:
Запоминает старый цвет символов
Задает новый
Печатает строку
Восстанавливает старый цвет
Слайд 7

Текст функции void PrintColor(string value, ConsoleColor color) { ConsoleColor old =

Текст функции

void PrintColor(string value, ConsoleColor color)
{
ConsoleColor old = Console.ForegroundColor;

Console.ForegroundColor = color;
Console.WriteLine(value);
Console.ForegroundColor = old;
}
Слайд 8

Пояснения Функции не нужно возвращать результат (поэтому она возвращает условное «пустое»

Пояснения

Функции не нужно возвращать результат (поэтому она возвращает условное «пустое» -

void значение)
Старый цвет сохраняется в переменной old
Слайд 9

Что улучшить Возвращать цвет печати на момент вызова функции (вернем старый

Что улучшить

Возвращать цвет печати на момент вызова функции (вернем старый цвет

– old)
Предположим, я считаю нужным в основном печатать цветные строки зеленым
Тогда мне следует задать значение аргумента цвета «по умолчанию»
Слайд 10

Улучшенная версия ConsoleColor printColor(string value, ConsoleColor color = ConsoleColor.Green) { ConsoleColor

Улучшенная версия

ConsoleColor printColor(string value, ConsoleColor color = ConsoleColor.Green)
{
ConsoleColor

old = Console.ForegroundColor;
Console.ForegroundColor = color;
Console.WriteLine(value);
Console.ForegroundColor = old;
return old;
}
Слайд 11

Где помещать функции? В C# функций в чистом виде не так

Где помещать функции?

В C# функций в чистом виде не так много.
Как

правило, у функции есть хозяин в виде объекта.
Тогда функция называется методом класса.
Иногда даже специально создают класс для сбора функций в виде методов
Можно создавать и локальные функции
Слайд 12

Прототип функции и пример использования

Прототип функции и пример использования

Слайд 13

Примеры Вызов “старой” функции печати Печатать с новым цветом Печатать с цветом по умолчанию.

Примеры

Вызов “старой” функции печати
Печатать с новым цветом
Печатать с цветом по умолчанию.

Слайд 14

Где размещать функции? Локально, по мере надобности (см. пример выше) Как метод класса (см. ниже)

Где размещать функции?

Локально, по мере надобности (см. пример выше)
Как метод класса

(см. ниже)
Слайд 15

Тонкость Метод main статический, поэтому методы также должны быть статическими (static)

Тонкость

Метод main статический, поэтому методы также должны быть статическими (static)

Слайд 16

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

Лямбда выражения

Создают локальную функцию или цепочку функций, которые даже не имеют

собственного имени
Такие функции нужны, чтобы локально сделать быструю (и обычно простую) операцию над данными
Лямбда-выражение — это анонимная функция , с помощью которой можно создавать типы делегатов или деревьев выражений . С помощью лямбда-выражений можно писать локальные функции, которые можно передавать в качестве аргументов или возвращать в качестве значений из вызовов функций. Лямбда-выражения особенно полезны при написании выражений запросов LINQ.
Чтобы создать лямбда-выражение, необходимо указать входные параметры (если они есть) с левой стороны лямбда-оператора =>, и поместить блок выражений или операторов с другой стороны. Например, лямбда-выражение x => x * x задает параметр с именем x и возвращает значение x
Слайд 17

Печать квадратов и кубов массива double []x= { 1, 2, 3,

Печать квадратов и кубов массива

double []x= { 1, 2, 3,

4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20 };
foreach (double d in x)
{
StringBuilder stringBuilder = new StringBuilder();
PrintColor( stringBuilder.AppendFormat("x = {0} x^2= {1} x^3= {2}", d, d * d,d * d * d).ToString());
}
Console.ReadLine();
Слайд 18

Пояснения x – массив десятичных дробей foreach (double d in x)

Пояснения

x – массив десятичных дробей
foreach (double d in x) –

берет из массива х поочередно его компоненты
StringBuilder stringBuilder = new StringBuilder(); - создает строку, которая может менять содержание
PrintColor( stringBuilder.AppendFormat("x = {0} x^2= {1} x^3= {2}", d, d * d,d * d * d).ToString()); - печатает в цвете
Слайд 19

Выбор данных Чтобы напечатать лишь часть данных, надо создать для них

Выбор данных

Чтобы напечатать лишь часть данных, надо создать для них запрос

с подходящим условием
Программа просмотрит данные и оставит только те, которые соответствуют запросу
Слайд 20

Запрос IEnumerable query = x.Where(number => number*number>10*number); Строка создает запрос данных

Запрос

IEnumerable query =
x.Where(number => number*number>10*number);
Строка создает запрос данных типа double
Where

– условие запроса
Условие должно давать логический (bool) критерий
Слайд 21

Запрос

Запрос

 

Слайд 22

Вывод фильтрованных данных foreach (double d in query) { StringBuilder stringBuilder

Вывод фильтрованных данных

foreach (double d in query)
{
StringBuilder stringBuilder =

new StringBuilder();
PrintColor(stringBuilder.AppendFormat("x = {0} x^2= {1} x^3= {2}", d, d * d, d * d * d).ToString());
}
Console.ReadLine();