Similar presentations:
3. Операторы и исключения
1. Операторы и исключения
Занятие 32. Содержание
1. Операторы2. Условные операторы
a.
b.
c.
If…elseif…else
Switch
Тернарный оператор
3. Операторы перехода
4. Операторы цикла
a.
b.
c.
for
while/do…while
foreach
5. Исключения
3. Операторы
4. Операторы
Оператор - это символ, который сообщает компилятору выполнить определенные математические илилогические манипуляции. C# имеет набор встроенных операторов и предоставляет следующие типы
операторов:
1.
2.
3.
4.
5.
6.
Арифметические операторы
Реляционные операторы (операторы сравнения)
Логические операторы
Побитовые операторы
Операторы присваивания
Другие операторы
5. Условные операторы
6. Условный оператор(условная конструкция)
Условные операторы – это конструкции, позволяющие управлять ходом выполнения программы взависимости от определенных условий.
If..Else
Switch…Case
7. Оператор if
Конструкция if…else позволяет проверить некоторое условие на истинность и, в зависимости от результата,выполнить тот или иной блок кода.
В качестве условия может выступать переменная типа bool, либо выражение, значение которого имеет
тип bool.
if (Условие_1)
{
// Блок выполнится, если Условие 1 имеет значение true
}
else if (Условие_2) // Необязательная часть
{
// Блок выполнится, если Условие 2 имеет значение true
}
else // Необязательная часть
{
}
// Блок выполнится, если Условие 1 и Условие 2 имеют значение false
8. Пример if
int n5 = 13;int n6 = 12;
if (n5 < n6)
{
Console.WriteLine($"Число {n5} меньше числа {n6}");
}
else if (n5 > n6)
{
Console.WriteLine($"Число {n5} больше числа {n6}");
}
else
{
Console.WriteLine($"Число {n5} равно числу {n6}");
}
9. Оператор switch
Конструкция switch…case используется, когда необходимо, в зависимости от конкретного значенияпеременной или результата некоторой операции, выполнить требуемый блок кода.
switch (Выражение)
{
case Шаблон_1:
// Блок кода выполняется, если Выражению соответствует Шаблон_1
break;
case Шаблон_2:
// Блок кода выполняется, если Выражению соответствует Шаблон_2
break;
// ...
default:
// Блок кода выполняется, если среди перечисленных в case шаблонах
// нет подходящего
break;
}
10. Оператор switch
В зависимости от версии языка C# допустимы различные шаблоны, которые можно использовать в блокахcase. В C# 6 и более ранних версиях допустимы только константы следующих типов:
char;
string;
bool;
целочисленное значение;
enum.
Блок case может закончится оператором:
break – прерывание кода в конструкции switch;
goto case – используется если необходимо перейти в другой case;
return – завершает выполнение метода и возвращает указанное значение;
throw – используется для выброса исключения.
11. Оператор switch
В качестве шаблонов в case могут выступать:шаблоны констант;
шаблоны типов;
выражение с ключевым словом when.
12. Оператор switch: шаблоны констант
Шаблон константы предполагает, что мы сравниваем значение выражение из switch с константами, которыерасполагаются в блоках case. В таком варианте работы switch…case допустимы константы следующих
типов:char, string, bool, целочисленное значение и enum.
string s1 = "Three";
switch (s1.ToLower())
{
case "one": Console.WriteLine("Case one"); break;
case "two": Console.WriteLine("Case two"); break;
case "three": Console.WriteLine("Case three"); break;
case "four": Console.WriteLine("Case four"); break;
case "five": Console.WriteLine("Case five"); break;
default: Console.WriteLine("Default case"); break;
}
13. Оператор switch: шаблоны типа
Шаблон типа предполагает сопоставление результата вычисления выражения, которое передается в switch, стипом, указанным в case: case type var_name
Если результат выражения можно привести к указанному типу, то полученное значение присваивается
переменной с указанными именем – var_name.
object trans = new Moto() { Name = "Suzuki" };
switch (trans)
{
case Bicycle bicycle: Console.WriteLine($"Bicycle: {bicycle.Name}"); break;
case Moto moto: Console.WriteLine($"Moto: {moto.Name}"); break;
case Car car: Console.WriteLine($"Car {car.Name}"); break;
case Transport transport: Console.WriteLine($"Transport {transport.Name}");
break;
case null: Console.WriteLine("Transport is null!"); break;
}
14. Оператор switch: выражение с ключевым словом when
Язык C#, начиная с версии 7.0, позволяет использовать в switch…case предложение when для реализациивозможности использования дополнительного условия. В этом случае типы после ключевого слова case
могут совпадать и дополнительная фильтрация будет производиться по условию после when.
object bc = new Bicycle() { Name = "Trec", WheelsCount = 1 };
switch (bc)
{
case Bicycle bicycle when bicycle.WheelsCount == 1:
Console.WriteLine($"Bicycle: {bicycle.Name}, type - monocycle"); break;
case Bicycle bicycle when bicycle.WheelsCount == 2:
Console.WriteLine($"Bicycle: {bicycle.Name}, type - classic"); break;
case Bicycle bicycle when bicycle.WheelsCount == 3:
Console.WriteLine($"Bicycle: {bicycle.Name}, type - tricycle"); break;
case Moto moto: Console.WriteLine($"Moto: {moto.Name}"); break;
case Car car: Console.WriteLine($"Car {car.Name}"); break;
case Transport transport: Console.WriteLine($"Transport {transport.Name}"); break;
case null: Console.WriteLine("Transport is null!"); break;
}
15. Тернарный оператор
Результатом вычисления тернарного оператора является одна из двух альтернатив, которая выбирается взависимости от истинности проверяемого условия.
condition ? if_true : if_else
В зависимости от значения логического выражения condition возвращается результат вычисления выражения
if_true или if_else.
int n8 = 5;
int n9 = 8;
int largerNumber = n8 > n9 ? n8 : n9;
16. Операторы перехода
17. Операторы перехода
Язык C# предоставляет специальные операторы для прерывания выполнения всего цикла и дляпринудительного завершения текущей итерации с переходом к следующей.
Break
Continue
Goto
18. Операторы перехода: break
Break:в операторах цикла оператор break
используется для завершения
циклического процесса (прерывание
работы цикла). Такое действие
необходимо, когда нужно прервать
выполнение цикла в зависимости от
некоторого условия;
в операторе выбора switch
применение оператора break нужно
для реализации выхода из данного
оператора.
19. Операторы перехода: continue
Continue:Оператор continue применяется
внутри тела цикла. Оператор
прекращает выполнение текущей
итерации и переходит к следующей
итерации (следующему шагу цикла).
Использование оператора continue в
цикле эффективно, если нужно
пропустить некоторые итерации в
зависимости от условия.
20. Операторы перехода: goto
goto label:в теле программы (некоторой
функции) для организации перехода
между операторами;
в операторе switch для перехода к
одной из ветвей case.
21. Минусы goto
корректность кода без goto доказать легче
код с операторами goto трудно форматировать
goto влияет на логическую структуру программы
применение goto препятствует оптимизации, выполняемой компилятором
goto усложняет анализ кода
22. Операторы цикла
23. Операторы цикла
Циклы в языках программирования предназначены для построения конструкции, выполняющей заданныйблок кода некоторое количество раз, которое определяется тем или иным условием.
for
while/do…while
foreach
24. Цикл for
● Инициализатор – это выражение, вычисляемое перед выполнением тела цикла. Обычно здесьинициализируется локальная переменная, которая будет использоваться как счетчик.
● Условие – это выражение, которое проверяется перед каждой новой итерацией цикла. Если значение
выражения равно true, то будет выполнено тело цикла, если false – произойдет выход из цикла и
выполнится следующая за ним инструкция.
● Итератор – это выражение, вычисляемое после каждой итерации. Обычно здесь происходит
изменение локальной переменной, объявленной в инициализаторе.
for (инициализация счетчика; условие; итератор)
{
// оператор (набор операторов)
}
for (int i = 0; i < 3; i++)
{
console.writeline(“Квадрат числа i ” + i*i);
}
25. Цикл while
В этом цикле проверяется условие, и если оно истинно, то выполняется набор операторов внутри телацикла. Обязательно убедитесь, что изменяете переменную, от которой зависит условие, иначе цикл
станет бесконечным, если, конечно, это не является целью.
while (условие)
{
// Тело цикла
}
int i = 0;
int number = 3;
while(i <= number)
{
Console.WriteLine("Итерация цикла номер " + i);
i++;
}
Console.ReadKey();
26.
27. Цикл do…while
Отличие do/while заключается в том, что проверка условия происходит после тела цикла, что приводит ктому, что вне зависимости от условия цикл выполнится хотя бы один раз.
do
{
//Тело цикла
} while (условие);
int j = 0;
int number2 = 3;
do
{
Console.WriteLine("Итерация цикла номер " + j);
j++;
} while (j > number2);
Console.ReadKey();
28. Цикл foreach
Оператор foreach используется для обхода коллекций, последовательно переходя от элемента к элементу вцикле.
foreach (тип имя_переменной_цикла in
коллекция)
{
// Тело цикла
}
int[] nums = { 6, 3, 6, 8, 9, 12, 4, 5, 88, 54, 3, 66, 78, 10,
12, 5, 7, 9, 3, 5 };
int result = 0;
foreach (int n in nums)
{
if (n > 10)
{
result++;
}
}
Console.WriteLine($"Количество чисел в массиве
больше 10: {result}");
29. Исключения
30. Исключение
Иногда при выполнении программы возникают ошибки, которые трудно предусмотреть или предвидеть, аиногда и вовсе невозможно. Например, при передачи файла по сети может неожиданно оборваться сетевое
подключение. такие ситуации называются исключениями. Язык C# предоставляет разработчикам
возможности для обработки таких ситуаций. Для этого в C# предназначена конструкция try...catch...finally.
try
{
if (divider != 0)
{
double result = dividend / divider;
}
result = dividend / divider;
}
catch (DivideByZeroException ex)
{
Console.WriteLine(ex.GetType().FullName);
Console.WriteLine(ex.Message);
}
31. Исключение
try {int x = int.Parse(Console.ReadLine());
int y = int.Parse(Console.ReadLine());
Console.WriteLine("Результат: " + x/y);
}
// Обрабатываем исключение возникающее при делении на ноль
catch (DivideByZeroException) {
Console.WriteLine("Деление на 0 detected!!!\n");
}
// Обрабатываем исключение при некорректном вводе числа в консоль
catch (FormatException) {
Console.WriteLine("Это НЕ число!!!\n");
}
finally {
Console.WriteLine("Спасибо за попытку!\n");
}
32. Полезные ссылки
1. Ссылка на репозиторий с примерами:https://github.com/latypdin23/Operator.git
2. Оператор goto:
https://forum.itvdn.com/t/urok-6-operator-bezuslovnogo-perehoda-goto/3100
programming