🗊Презентация Операции арифметические, сравнения, логические и поразрядные. Лекция 10

Нажмите для полного просмотра!
Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №1Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №2Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №3Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №4Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №5Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №6Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №7Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №8Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №9Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №10Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №11Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №12Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №13Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №14Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №15Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №16Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №17Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №18Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №19Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №20Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №21Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №22Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №23Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №24Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №25Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №26Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №27Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №28Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №29Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №30Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №31Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №32Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №33Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №34Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №35Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №36Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №37Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №38Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №39Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №40Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №41Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №42Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №43Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №44Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №45Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №46Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №47Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №48Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №49Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №50Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №51Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №52Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №53Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №54Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №55

Содержание

Вы можете ознакомиться и скачать презентацию на тему Операции арифметические, сравнения, логические и поразрядные. Лекция 10. Доклад-сообщение содержит 55 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Лекция 10
 
Операции арифметические, сравнения, логические и поразрядные
Описание слайда:
Лекция 10   Операции арифметические, сравнения, логические и поразрядные

Слайд 2





Операции
Операции часто разделяются на четыре основные группы: арифметические (arithmetic), сравнения (relational), логические (logical) и побитовые (bitwise). 
Операнд - это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Каждый операнд имеет тип.
Описание слайда:
Операции Операции часто разделяются на четыре основные группы: арифметические (arithmetic), сравнения (relational), логические (logical) и побитовые (bitwise). Операнд - это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Каждый операнд имеет тип.

Слайд 3


Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №3
Описание слайда:

Слайд 4


Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №4
Описание слайда:

Слайд 5


Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №5
Описание слайда:

Слайд 6


Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №6
Описание слайда:

Слайд 7


Операции арифметические, сравнения, логические и поразрядные. Лекция 10, слайд №7
Описание слайда:

Слайд 8





Арифметические операции 
Унарные операции
Арифметическое отрицание (унарный минус – ) меняет знак операнда на противоположный. Стандартная операция отрицания определена для типов int, long, float, double и decimal. К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам.
double  u = 5;
u = -u;          /* переменной u присваивается ее отрицание, т.е. u  принимает значение -5 */
 
Унарный плюс - по умолчанию: u = +u;
Описание слайда:
Арифметические операции Унарные операции Арифметическое отрицание (унарный минус – ) меняет знак операнда на противоположный. Стандартная операция отрицания определена для типов int, long, float, double и decimal. К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам. double u = 5; u = -u; /* переменной u присваивается ее отрицание, т.е. u принимает значение -5 */   Унарный плюс - по умолчанию: u = +u;

Слайд 9





Арифметические операции 
Унарные операции
Арифметическое отрицание (унарный минус – ) меняет знак операнда на противоположный. Стандартная операция отрицания определена для типов int, long, float, double и decimal. К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам.
double  u = 5;
u = -u;          /* переменной u присваивается ее отрицание, т.е. u  принимает значение -5 */
 
Унарный плюс - по умолчанию: u = +u;
Описание слайда:
Арифметические операции Унарные операции Арифметическое отрицание (унарный минус – ) меняет знак операнда на противоположный. Стандартная операция отрицания определена для типов int, long, float, double и decimal. К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам. double u = 5; u = -u; /* переменной u присваивается ее отрицание, т.е. u принимает значение -5 */   Унарный плюс - по умолчанию: u = +u;

Слайд 10





Инкрементация и декрементация 
    операции       префиксная форма         постфиксная форма 
x = х + 1;            ++x;                x++;
x = х - 1;             --x;                  x--;
а)  int  t=1,  s=2,  z,  f;
Операторы:    z = t++ * 5;       f = ++s/3;
Результаты:     z =    ,  t =         s =    ,  f = 
б) int х = 10, z = 1;
       у =  ++х;    // х =      ,  у = 
       у  =  х++;    // у =     ,  х = 
       z++; /* эквивалентно */ ++z;
Описание слайда:
Инкрементация и декрементация операции префиксная форма постфиксная форма x = х + 1; ++x; x++; x = х - 1; --x; x--; а) int t=1, s=2, z, f; Операторы: z = t++ * 5; f = ++s/3; Результаты: z = , t = s = , f = б) int х = 10, z = 1; у = ++х; // х = , у = у = х++; // у = , х = z++; /* эквивалентно */ ++z;

Слайд 11





Инкрементация и декрементация 
int x1 = 5;
int z1 = ++x1; 
Console.WriteLine($"{x1} - {z1}");
 
int x2 = 5;
int z2 = x2++;     
Console.WriteLine($"{x2} - {z2}");
Описание слайда:
Инкрементация и декрементация int x1 = 5; int z1 = ++x1; Console.WriteLine($"{x1} - {z1}"); int x2 = 5; int z2 = x2++; Console.WriteLine($"{x2} - {z2}");

Слайд 12





Инкрементация и декрементация 
int x1 = 5;
int z1 = --x1;    
Console.WriteLine($"{x1} - {z1}");
 
int x2 = 5;
int z2 = x2--; 
Console.WriteLine($"{x2} - {z2}");
Описание слайда:
Инкрементация и декрементация int x1 = 5; int z1 = --x1; Console.WriteLine($"{x1} - {z1}");   int x2 = 5; int z2 = x2--; Console.WriteLine($"{x2} - {z2}");

Слайд 13





Операция new
Операция new служит для создания нового объекта:       new тип ([аргументы]) 
С помощью этой операции можно создавать объекты как ссылочных, так и значимых типов, например:
object z = new object();
int i = new int();     // то же самое, что int i = 0; 
При выполнении операции new сначала выделяется необходимый объем памяти (для ссылочных типов в хипе, для значимых — в стеке), а затем вызывается так называемый конструктор по умолчанию, то есть метод, с помощью которого инициализируется объект. Переменной значимого типа присваивается значение по умолчанию, которое равно нулю соответствующего типа.
Описание слайда:
Операция new Операция new служит для создания нового объекта: new тип ([аргументы]) С помощью этой операции можно создавать объекты как ссылочных, так и значимых типов, например: object z = new object(); int i = new int(); // то же самое, что int i = 0; При выполнении операции new сначала выделяется необходимый объем памяти (для ссылочных типов в хипе, для значимых — в стеке), а затем вызывается так называемый конструктор по умолчанию, то есть метод, с помощью которого инициализируется объект. Переменной значимого типа присваивается значение по умолчанию, которое равно нулю соответствующего типа.

Слайд 14





Операции * и &
 Объявить (определить) указатель можно с помощью операции *.
Получить адрес памяти, на который указывает указатель, можно с помощью оператора адресации &.
Ключевой при работе с указателями является операция *, которую еще называют операцией разыменовывания (разадресации). Операция разыменовывания позволяет получить или установить значение по адресу, на который указывает указатель.
Описание слайда:
Операции * и &  Объявить (определить) указатель можно с помощью операции *. Получить адрес памяти, на который указывает указатель, можно с помощью оператора адресации &. Ключевой при работе с указателями является операция *, которую еще называют операцией разыменовывания (разадресации). Операция разыменовывания позволяет получить или установить значение по адресу, на который указывает указатель.

Слайд 15





Операции * и &
 Чтобы использовать небезопасный код в C#, надо первым делом указать проекту, что он будет работать с небезопасным кодом. Для этого надо установить в настройках проекта соответствующий флаг - в меню Project (Проект) найти Свойства проекта. Затем в меню Build (Сборка) установить флажок Allow unsafe code (Разрешить небезопасный код).
Ключевое слово "unsafe" отключает систему безопасности  так как работа с указателями небезопасна, поэтому для компиляции небезопасного кода необходимо указать параметр компилятора unsafe.
Описание слайда:
Операции * и &  Чтобы использовать небезопасный код в C#, надо первым делом указать проекту, что он будет работать с небезопасным кодом. Для этого надо установить в настройках проекта соответствующий флаг - в меню Project (Проект) найти Свойства проекта. Затем в меню Build (Сборка) установить флажок Allow unsafe code (Разрешить небезопасный код). Ключевое слово "unsafe" отключает систему безопасности  так как работа с указателями небезопасна, поэтому для компиляции небезопасного кода необходимо указать параметр компилятора unsafe.

Слайд 16





Пример 1
static void Main(string[] args)
{
    unsafe     // отключить систему безопасности
    {       
        int* x; // определение указателя
        int y = 10; // определение переменной
         x = &y; // указатель x содержит 
                       // адрес переменной y
         ulong addr = (ulong) x; // получить 
                       // адрес переменной y
Описание слайда:
Пример 1 static void Main(string[] args) {     unsafe // отключить систему безопасности     {               int* x; // определение указателя         int y = 10; // определение переменной          x = &y; // указатель x содержит // адрес переменной y         ulong addr = (ulong) x; // получить // адрес переменной y

Слайд 17





Пример 1
       Console.WriteLine("Адрес переменной y: {0}", addr);
 
        Console.WriteLine(*x);  // 10
        y = *x + 20;
        Console.WriteLine(*x);   // 30
          
        *x = 50; 
        Console.WriteLine(y);  // переменная y=50
    }  // -------- конец блока unsafe ---------    
    Console.ReadLine();
}
Описание слайда:
Пример 1 Console.WriteLine("Адрес переменной y: {0}", addr);    Console.WriteLine(*x); // 10         y = *x + 20;         Console.WriteLine(*x); // 30                    *x = 50;         Console.WriteLine(y); // переменная y=50     } // -------- конец блока unsafe ---------     Console.ReadLine(); }

Слайд 18





Арифметические операции 
Бинарные операции
Операции сложения, вычитания, умножения, деления определены для типов int, uint, long, ulong, float, double и decimal. К величинам других типов их можно применять, если для них существует неявное преобразование к этим типам. Тип результата операций равен "наибольшему" из типов операндов, но не менее int.
Описание слайда:
Арифметические операции Бинарные операции Операции сложения, вычитания, умножения, деления определены для типов int, uint, long, ulong, float, double и decimal. К величинам других типов их можно применять, если для них существует неявное преобразование к этим типам. Тип результата операций равен "наибольшему" из типов операндов, но не менее int.

Слайд 19





Арифметические операции 
Бинарные операции
Операция сложения (+) возвращает сумму двух операндов. 
Если оба операнда целочисленные или типа decimal и результат операции слишком велик для представления с помощью заданного типа, генерируется исключение System.OverflowException.
int x = 10;
int z = x + 12; // 22
Описание слайда:
Арифметические операции Бинарные операции Операция сложения (+) возвращает сумму двух операндов. Если оба операнда целочисленные или типа decimal и результат операции слишком велик для представления с помощью заданного типа, генерируется исключение System.OverflowException. int x = 10; int z = x + 12; // 22

Слайд 20





Арифметические операции 
Бинарные операции
Операция вычитания (-) возвращает разность двух операндов. 
Если оба операнда целочисленные или типа decimal и результат операции слишком велик для представления с помощью заданного типа, генерируется исключение System.OverflowException.
int x = 10;
int z = x - 6; // 4
Описание слайда:
Арифметические операции Бинарные операции Операция вычитания (-) возвращает разность двух операндов. Если оба операнда целочисленные или типа decimal и результат операции слишком велик для представления с помощью заданного типа, генерируется исключение System.OverflowException. int x = 10; int z = x - 6; // 4

Слайд 21





Арифметические операции 
Бинарные операции
Операция умножения (*) возвращает результат перемножения двух операндов. 
int x = 10;
int z = x * 5; // 50
Важно следить, чтобы результат операций не превышал диапазон значений типа переменной, в которую помещается результат.
Описание слайда:
Арифметические операции Бинарные операции Операция умножения (*) возвращает результат перемножения двух операндов. int x = 10; int z = x * 5; // 50 Важно следить, чтобы результат операций не превышал диапазон значений типа переменной, в которую помещается результат.

Слайд 22





Арифметические операции 
Бинарные операции
Операция деления (/) вычисляет частное от деления первого операнда на второй. 
Если оба операнда целочисленные, результат операции округляется вниз до ближайшего целого числа. Если делитель равен нулю, генерируется исключение System.DivideByZeroException.
Описание слайда:
Арифметические операции Бинарные операции Операция деления (/) вычисляет частное от деления первого операнда на второй. Если оба операнда целочисленные, результат операции округляется вниз до ближайшего целого числа. Если делитель равен нулю, генерируется исключение System.DivideByZeroException.

Слайд 23





Арифметические операции 
Бинарные операции
Для финансовых величин (тип decimal ) при делении на 0 и переполнении генерируются соответствующие исключения, при исчезновении порядка результат равен 0.
int x = 10;
int z = x / 5; // 2
 
double a = 10;
double b = 3;
double c = x / y; // 3.33333333
Описание слайда:
Арифметические операции Бинарные операции Для финансовых величин (тип decimal ) при делении на 0 и переполнении генерируются соответствующие исключения, при исчезновении порядка результат равен 0. int x = 10; int z = x / 5; // 2   double a = 10; double b = 3; double c = x / y; // 3.33333333

Слайд 24





Арифметические операции 
Бинарные операции
При делении стоит учитывать, что если оба операнда представляют целые числа, то результат также будет округляться до целого числа:
double z = 10 /  4; // результат равен 2
double z = 10.0 /  4.0;   // результат равен 2.5 
double z = 10.0 /  4;      // результат равен 2.5  
int a = 4,     b = 10; 
double z = b / (a*1.0);   // результат равен 2.5   
// или 
double z = (double) 10 /  4; // результат равен 2.5
Описание слайда:
Арифметические операции Бинарные операции При делении стоит учитывать, что если оба операнда представляют целые числа, то результат также будет округляться до целого числа: double z = 10 /  4; // результат равен 2 double z = 10.0 /  4.0; // результат равен 2.5 double z = 10.0 /  4; // результат равен 2.5 int a = 4, b = 10; double z = b / (a*1.0); // результат равен 2.5 // или double z = (double) 10 /  4; // результат равен 2.5

Слайд 25





Арифметические операции 
Бинарные операции
Операция остатка от деления (%):
- если оба операнда целочисленные, результат операции вычисляется по формуле x - (x / y) * y. Если делитель равен нулю, генерируется исключение  System.DivideByZeroException.
- если хотя бы один из операндов вещественный, результат операции вычисляется по формуле x – n * y, где n — наибольшее целое, меньшее или равное результату деления х на y.
Описание слайда:
Арифметические операции Бинарные операции Операция остатка от деления (%): - если оба операнда целочисленные, результат операции вычисляется по формуле x - (x / y) * y. Если делитель равен нулю, генерируется исключение  System.DivideByZeroException. - если хотя бы один из операндов вещественный, результат операции вычисляется по формуле x – n * y, где n — наибольшее целое, меньшее или равное результату деления х на y.

Слайд 26





Арифметические операции 
Бинарные операции
Операция остатка от деления (%):
Для финансовых величин (тип decimal ) при получении остатка от деления на 0 и при переполнении генерируются соответствующие исключения, при исчезновении порядка результат равен 0. Знак результата равен знаку первого операнда.
Операция получение остатка от целочисленного деления двух чисел (%):
double x = 10.0;
double z = x % 4.0; // результат равен 2
Описание слайда:
Арифметические операции Бинарные операции Операция остатка от деления (%): Для финансовых величин (тип decimal ) при получении остатка от деления на 0 и при переполнении генерируются соответствующие исключения, при исчезновении порядка результат равен 0. Знак результата равен знаку первого операнда. Операция получение остатка от целочисленного деления двух чисел (%): double x = 10.0; double z = x % 4.0; // результат равен 2

Слайд 27





Приоритеты арифметических операций
Приоритеты арифметических операций

Высший  ++    - -
                  - (унарный минус)
                  *  /  %
Низший   +  -
Операторы, имеющие одинаковый приоритет, выполняются слева направо. Для изменения порядка следования операций применяются скобки.
Описание слайда:
Приоритеты арифметических операций Приоритеты арифметических операций Высший ++ - - - (унарный минус) * / % Низший + - Операторы, имеющие одинаковый приоритет, выполняются слева направо. Для изменения порядка следования операций применяются скобки.

Слайд 28





Пример 2
int a = 3;
int b = 5;
int c = 40;
int d = c-- - b*a;    // a=3  b=5  c=39  d=25
Console.WriteLine($"a={a} b={b} c={c} d={d}");
     int d = c-- - b*a;     ↔   	int d = (c--)-(b*a);
int a = 3;
int b = 5;
int c = 40;
int d = (c-(--b))*a;    // a=3  b=4  c=40  d=108
Console.WriteLine($"a={a} b={b} c={c} d={d}");
Описание слайда:
Пример 2 int a = 3; int b = 5; int c = 40; int d = c-- - b*a;    // a=3  b=5  c=39  d=25 Console.WriteLine($"a={a} b={b} c={c} d={d}"); int d = c-- - b*a;  ↔   int d = (c--)-(b*a); int a = 3; int b = 5; int c = 40; int d = (c-(--b))*a;    // a=3  b=4  c=40  d=108 Console.WriteLine($"a={a} b={b} c={c} d={d}");

Слайд 29





Арифметические операции
Арифметические операции не определены для более коротких, чем int, типов. Это означает, что если в выражении участвуют только величины типов sbyte, byte, short и ushort, перед выполнением операции они будут преобразованы в int. Таким образом, результат любой арифметической операции имеет тип не менее int.
byte a = 4;
byte b = a + 70;  // ошибка, byte ≠ int
И чтобы выйти из этой ситуации, необходимо применить операцию преобразования типов:
byte a = 4;
byte b = (byte)(a + 70); // операция преобразования типов
Описание слайда:
Арифметические операции Арифметические операции не определены для более коротких, чем int, типов. Это означает, что если в выражении участвуют только величины типов sbyte, byte, short и ushort, перед выполнением операции они будут преобразованы в int. Таким образом, результат любой арифметической операции имеет тип не менее int. byte a = 4; byte b = a + 70;  // ошибка, byte ≠ int И чтобы выйти из этой ситуации, необходимо применить операцию преобразования типов: byte a = 4; byte b = (byte)(a + 70); // операция преобразования типов

Слайд 30





Исключения
При вычислении выражений могут возникнуть ошибки, например, переполнение, исчезновение порядка или деление на ноль. Об ошибках система сигнализирует с помощью специального действия, называемого выбрасыванием (генерированием) исключения. Каждому типу ошибки соответствует свое исключение. В C# исключения являются классами, которые имеют общего предка — класс Exception, определенный в пространстве имен System.
Например, при делении на ноль будет сгенерировано исключение DivideByZeroException, при недостатке памяти — исключение OutOfMemoryException, при переполнении памяти — исключение OverflowException.
Описание слайда:
Исключения При вычислении выражений могут возникнуть ошибки, например, переполнение, исчезновение порядка или деление на ноль. Об ошибках система сигнализирует с помощью специального действия, называемого выбрасыванием (генерированием) исключения. Каждому типу ошибки соответствует свое исключение. В C# исключения являются классами, которые имеют общего предка — класс Exception, определенный в пространстве имен System. Например, при делении на ноль будет сгенерировано исключение DivideByZeroException, при недостатке памяти — исключение OutOfMemoryException, при переполнении памяти — исключение OverflowException.

Слайд 31





Исключения
В C# ключевое слово checked используется, если требуется указать, что выражение будет проверяться на переполнение, ключевое слово unchecked следует использовать, а требуется проигнорировать переполнение. 
checked (выражение)

checked { 
      // проверяемые операторы
}
unchecked (выражение)

unchecked { 
     // операторы, для которых переполнение игнорируется
}
Описание слайда:
Исключения В C# ключевое слово checked используется, если требуется указать, что выражение будет проверяться на переполнение, ключевое слово unchecked следует использовать, а требуется проигнорировать переполнение. checked (выражение) checked { // проверяемые операторы } unchecked (выражение) unchecked { // операторы, для которых переполнение игнорируется }

Слайд 32





Исключения
В C# есть механизм обработки исключительных ситуаций (исключений) - конструкция try...catch. 
Блок try содержит операторы, реализующие действия, в которых может потенциально возникнуть ошибка, а в блоке catch обрабатывается ошибка, если она возникла.
Внутри блока catch можно, например, вывести предупреждающее сообщение или скорректировать значения величин и продолжить выполнение программы. Если этот блок не задан, система выполнит действия по умолчанию, которые обычно заключаются в выводе диагностического сообщения и нормальном завершении программы.
Описание слайда:
Исключения В C# есть механизм обработки исключительных ситуаций (исключений) - конструкция try...catch. Блок try содержит операторы, реализующие действия, в которых может потенциально возникнуть ошибка, а в блоке catch обрабатывается ошибка, если она возникла. Внутри блока catch можно, например, вывести предупреждающее сообщение или скорректировать значения величин и продолжить выполнение программы. Если этот блок не задан, система выполнит действия по умолчанию, которые обычно заключаются в выводе диагностического сообщения и нормальном завершении программы.

Слайд 33





Пример 3
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1 {
    class Program
    {
        static void Main()
        {
            byte a, b, result;
            Console.Write("Введите количество опросов: ");
            int i = int.Parse(Console.ReadLine());
Описание слайда:
Пример 3 using System; using System.Collections.Generic; using System.Linq; using System.Text;   namespace ConsoleApplication1 { class Program { static void Main() { byte a, b, result; Console.Write("Введите количество опросов: "); int i = int.Parse(Console.ReadLine());

Слайд 34





Пример 3
   for (int j = 1; j <= i; j++) {  // цикл
      try  {
         Console.Write("Введите a: ");
         a = unchecked((byte)int.Parse(Console.ReadLine()));
        Console.Write("Введите b: ");
         b = unchecked((byte)int.Parse(Console.ReadLine()));
        checked  {
                          result = (byte)(a + b);
                         Console.WriteLine("a + b = " + result);
                         result = (byte)(a * b);
                         Console.WriteLine("a*b = " + result + "\n");
                    } // конец блока checked 
      }   // конец блока try
Описание слайда:
Пример 3 for (int j = 1; j <= i; j++) { // цикл try { Console.Write("Введите a: "); a = unchecked((byte)int.Parse(Console.ReadLine())); Console.Write("Введите b: "); b = unchecked((byte)int.Parse(Console.ReadLine()));   checked { result = (byte)(a + b); Console.WriteLine("a + b = " + result); result = (byte)(a * b); Console.WriteLine("a*b = " + result + "\n"); } // конец блока checked } // конец блока try

Слайд 35





Пример 3
   
        catch (OverflowException)
        {
               Console.Write("Переполнение\n\n");
         } // конец блока catch 
       }  // конец цикла
            Console.ReadLine();
     } // конец функции-метода Main
  } // конец класса Program
}  // конец namespace ConsoleApplication1
Описание слайда:
Пример 3 catch (OverflowException) { Console.Write("Переполнение\n\n"); } // конец блока catch } // конец цикла Console.ReadLine(); } // конец функции-метода Main } // конец класса Program } // конец namespace ConsoleApplication1

Слайд 36





Операции доступа
В языке С# символы "." и "->" обозначают операции доступа к элементам класса. Операция доступа к члену класса (точка) используется для непосредственного обращения к элементу класса (свойствам, методам). Операция ссылки на член класса используется для обращения к члену класса через указатель.
Описание слайда:
Операции доступа В языке С# символы "." и "->" обозначают операции доступа к элементам класса. Операция доступа к члену класса (точка) используется для непосредственного обращения к элементу класса (свойствам, методам). Операция ссылки на член класса используется для обращения к члену класса через указатель.

Слайд 37





Пример 4
class Program {
    static void Main(string[] args)  {
        unsafe  {
            Person person;      
            person.age = 29;
            person.height = 176;
            Person* p = &person;
            p->age = 30;
            Console.WriteLine(p->age);
            (*p).height = 180; // разыменовывание указателя
            Console.WriteLine((*p).height);
    }    }     }
public struct Person {
    public int age;
    public int height;
}
Описание слайда:
Пример 4 class Program {     static void Main(string[] args)  {         unsafe  {             Person person;              person.age = 29;             person.height = 176;             Person* p = &person;             p->age = 30;             Console.WriteLine(p->age);             (*p).height = 180; // разыменовывание указателя             Console.WriteLine((*p).height);     }    } } public struct Person {     public int age;     public int height; }

Слайд 38





Операторы "[ ]"  и  " ( )"
Круглые скобки — это оператор, повышающий приоритет операций, заключенных внутри. Квадратные скобки используются для индексации массива. Если в программе определен массив, то значение выражения, заключенного в квадратные скобки, равно индексу элемента массива.
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
    numbers[i] = 1 + (numbers[i] * 2);
    Console.WriteLine(numbers[i]);
}
Описание слайда:
Операторы "[ ]" и " ( )" Круглые скобки — это оператор, повышающий приоритет операций, заключенных внутри. Квадратные скобки используются для индексации массива. Если в программе определен массив, то значение выражения, заключенного в квадратные скобки, равно индексу элемента массива. int[] numbers = new int[] { 1, 2, 3, 4, 5 }; for (int i = 0; i < numbers.Length; i++) {     numbers[i] = 1 + (numbers[i] * 2);     Console.WriteLine(numbers[i]); }

Слайд 39





Операции сравнения (отношения)
Описание слайда:
Операции сравнения (отношения)

Слайд 40





Операции сравнения (отношения)
int a = 10;
int b = 4;
bool c = a == b;    // false
 
bool c = a != b;    // true
bool d = a!=10;    // false
 
bool c = a < b;     // false
 
bool c = a > b;     // true
bool d = a > 25;    // false
 
bool c = a <= b;     // false
bool d = a <= 25;    // true
 
bool c = a >= b;     // true
bool d = a >= 25;    // false
Описание слайда:
Операции сравнения (отношения) int a = 10; int b = 4; bool c = a == b; // false   bool c = a != b;    // true bool d = a!=10;    // false   bool c = a < b; // false   bool c = a > b;     // true bool d = a > 25;    // false   bool c = a <= b;     // false bool d = a <= 25;    // true   bool c = a >= b;     // true bool d = a >= 25;    // false

Слайд 41





Логические операции
В C# определены логические операции, которые также возвращают значение типа bool. В качестве операндов они принимают значения типа bool. 
Оператор                                 Действие
&&                                              И
| |                                                  ИЛИ
!                                                   НЕ
 
Таблица истинности для логических операторов.
  p       q     p&&q      p | | q      !p
 0        0         0             0            1
 0        1         0             1            1
 1        1         1             1            0
 1        0         0             1            0
Описание слайда:
Логические операции В C# определены логические операции, которые также возвращают значение типа bool. В качестве операндов они принимают значения типа bool. Оператор Действие && И | | ИЛИ ! НЕ   Таблица истинности для логических операторов. p q p&&q p | | q !p 0 0 0 0 1 0 1 0 1 1 1 1 1 1 0 1 0 0 1 0

Слайд 42





Логические операции
Логическое отрицание (!) определено для типа bool. Результат операции — значение false, если операнд равен true, и значение true, если операнд равен false.
bool t, z = true;
t = !z;     //  false
 Операция логического сложения (||). Возвращает true, если хотя бы один из операндов возвращает true.
bool x1 = (5 > 6) || (4 < 6);      
//
bool x2 = (5 > 6) | (4 > 6);    
//
Описание слайда:
Логические операции Логическое отрицание (!) определено для типа bool. Результат операции — значение false, если операнд равен true, и значение true, если операнд равен false. bool t, z = true; t = !z; // false  Операция логического сложения (||). Возвращает true, если хотя бы один из операндов возвращает true. bool x1 = (5 > 6) || (4 < 6); // bool x2 = (5 > 6) | (4 > 6); //

Слайд 43





Логические операции
Операция логического умножения (&&). Возвращает true, если оба операнда одновременно равны true.
bool x1 = (5 > 6) && (4 < 6);     
 //
bool x2 = (5 < 6) && (4 < 6);     
 //
 
Ниже приведены приоритеты операций сравнения и логических операций.
высший       !
                     >      >=      <      <=
                     = =   ! =
                     &&            
низший       ||
Описание слайда:
Логические операции Операция логического умножения (&&). Возвращает true, если оба операнда одновременно равны true. bool x1 = (5 > 6) && (4 < 6); // bool x2 = (5 < 6) && (4 < 6); //   Ниже приведены приоритеты операций сравнения и логических операций. высший ! > >= < <= = = ! = && низший ||

Слайд 44





Логические операции
Как и для арифметических операций, естественный порядок вычислений можно изменять с помощью скобок. 
Операнды логических выражений вычисляются слева направо. 
Если значения первого операнда достаточно, чтобы определить результат операции, то второй операнд не вычисляется. 
Операции сравнения и логические операции имеют более низкий приоритет, чем арифметические операции.  10 > 1 + 12    ↔  10 > (1 + 12)
В одном и том же выражении можно использовать несколько операций.
   bool x1 =  10 > 5 && ! (10 < 9) || 3 < = 4;
Описание слайда:
Логические операции Как и для арифметических операций, естественный порядок вычислений можно изменять с помощью скобок. Операнды логических выражений вычисляются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, то второй операнд не вычисляется. Операции сравнения и логические операции имеют более низкий приоритет, чем арифметические операции. 10 > 1 + 12 ↔ 10 > (1 + 12) В одном и том же выражении можно использовать несколько операций. bool x1 = 10 > 5 && ! (10 < 9) || 3 < = 4;

Слайд 45





Поразрядные (побитовые) операции
Поразрядные операции выполняются над отдельными разрядами числа. В этом плане числа рассматриваются в двоичном представлении, например, 2 в двоичном представлении 10 и имеет два разряда, число 7 - 111 и имеет три разряда.
 
Оператор      Действие
&                     и
|                       или
^                      Исключающее ИЛИ 
~                     Дополнение до единицы (НЕ) 
>>                   Сдвиг вправо 
<<                   Сдвиг влево
Описание слайда:
Поразрядные (побитовые) операции Поразрядные операции выполняются над отдельными разрядами числа. В этом плане числа рассматриваются в двоичном представлении, например, 2 в двоичном представлении 10 и имеет два разряда, число 7 - 111 и имеет три разряда.   Оператор Действие & и | или ^ Исключающее ИЛИ ~ Дополнение до единицы (НЕ) >> Сдвиг вправо << Сдвиг влево

Слайд 46





Поразрядные (побитовые) операции
Поразрядные логические операции (&, |, ^) применяются к целочисленным операндам и работают с их двоичными представлениями. При выполнении операций операнды сопоставляются побитно (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго, и т д.). Стандартные операции определены для типов int, uint, long и ulong.
Описание слайда:
Поразрядные (побитовые) операции Поразрядные логические операции (&, |, ^) применяются к целочисленным операндам и работают с их двоичными представлениями. При выполнении операций операнды сопоставляются побитно (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго, и т д.). Стандартные операции определены для типов int, uint, long и ulong.

Слайд 47





Поразрядные (побитовые) операции
Операция логического умножения или логическое И (&). Возвращает true, если оба операнда одновременно равны true.
bool x1 = (5 > 6) & (4 < 6);   //
bool x2 = (5 < 6) & (4 < 6);   //  
int x1 = 2;     // 010
int y1 = 5;     //101 
Console.WriteLine(x1 & y1);   //
             
int x2 = 4;     //100
int y2 = 5;     //101
Console.WriteLine(x2 & y2);   //
Описание слайда:
Поразрядные (побитовые) операции Операция логического умножения или логическое И (&). Возвращает true, если оба операнда одновременно равны true. bool x1 = (5 > 6) & (4 < 6); // bool x2 = (5 < 6) & (4 < 6); //   int x1 = 2; // 010 int y1 = 5; //101 Console.WriteLine(x1 & y1); //               int x2 = 4; //100 int y2 = 5; //101 Console.WriteLine(x2 & y2); //

Слайд 48





Поразрядные (побитовые) операции
Операция логического сложения или логическое ИЛИ (|). Возвращает true, если хотя бы один из операндов возвращает true.
bool x1 = (5 > 6) | (4 < 6);   // 
bool x2 = (5 > 6) | (4 > 6);   // 
 
int x1 = 2;   // 010
int y1 = 5;   // 101
Console.WriteLine(x1|y1);    //
 
int x2 = 4;   // 100
int y2 = 5;   // 101
Console.WriteLine(x2 | y2);     //
Описание слайда:
Поразрядные (побитовые) операции Операция логического сложения или логическое ИЛИ (|). Возвращает true, если хотя бы один из операндов возвращает true. bool x1 = (5 > 6) | (4 < 6); // bool x2 = (5 > 6) | (4 > 6); //   int x1 = 2; // 010 int y1 = 5; // 101 Console.WriteLine(x1|y1); //   int x2 = 4; // 100 int y2 = 5; // 101 Console.WriteLine(x2 | y2); //

Слайд 49





Поразрядные (побитовые) операции
Операция исключающего ИЛИ (^) (XOR). Возвращает true, если либо первый, либо второй операнд (но не одновременно) равны true, иначе возвращает false
  p          q           p ^ q
    0          0              0
    1          0              1
    1          1              0
    0          1              1
 bool x5 = (5 > 6) ^ (4 < 6);            
 //
bool x6 = (50 > 6) ^ (4 / 2 < 3); 
//
Описание слайда:
Поразрядные (побитовые) операции Операция исключающего ИЛИ (^) (XOR). Возвращает true, если либо первый, либо второй операнд (но не одновременно) равны true, иначе возвращает false p q p ^ q 0 0 0 1 0 1 1 1 0 0 1 1  bool x5 = (5 > 6) ^ (4 < 6); // bool x6 = (50 > 6) ^ (4 / 2 < 3); //

Слайд 50





Поразрядные (побитовые) операции
Эту операцию нередко применяют для простого шифрования:
int x = 45;    // Значение, которое надо 
                     // зашифровать - в двоичной форме 101101
int key = 102;     // Пусть это будет ключ - в двоичной
                           // форме 1100110
int encrypt = x ^ key;      // Результатом будет число 
                                        // 1001011 или 75
Console.WriteLine("Зашифрованное число: " +encrypt);
 int decrypt = encrypt ^ key;    // Результатом будет
                                                // исходное число 45
Console.WriteLine("Расшифрованное число: " + decrypt);
Описание слайда:
Поразрядные (побитовые) операции Эту операцию нередко применяют для простого шифрования: int x = 45; // Значение, которое надо // зашифровать - в двоичной форме 101101 int key = 102; // Пусть это будет ключ - в двоичной // форме 1100110 int encrypt = x ^ key; // Результатом будет число // 1001011 или 75 Console.WriteLine("Зашифрованное число: " +encrypt);  int decrypt = encrypt ^ key; // Результатом будет // исходное число 45 Console.WriteLine("Расшифрованное число: " + decrypt);

Слайд 51





Поразрядные (побитовые) операции
Поразрядное отрицание (~), часто называемое побитовым, инвертирует каждый разряд в двоичном представлении операнда типа int, uint, long или ulong.
char  b = '9';  // '9' = шестнадцатеричному значению 39
unsigned char   f;
f = ~b; // 'ц' = шестнадцатеричному значению С6
Оператор дополнения до единицы "~" инвертирует каждый бит операнда. Это значит, что каждая единица станет нулем, и наоборот.
Исходный  байт                      00101100
 После  первого  отрицания   11010011 
 После  второго  отрицания   00101100
Описание слайда:
Поразрядные (побитовые) операции Поразрядное отрицание (~), часто называемое побитовым, инвертирует каждый разряд в двоичном представлении операнда типа int, uint, long или ulong. char b = '9'; // '9' = шестнадцатеричному значению 39 unsigned char f; f = ~b; // 'ц' = шестнадцатеричному значению С6 Оператор дополнения до единицы "~" инвертирует каждый бит операнда. Это значит, что каждая единица станет нулем, и наоборот. Исходный байт 00101100 После первого отрицания 11010011 После второго отрицания 00101100

Слайд 52





Поразрядные (побитовые) операции
Две пары операций | и || (а также & и &&) выполняют похожие действия, однако же они не равнозначны.
В выражении z = x | y; будут вычисляться оба значения - x и y.
В выражении же z = x || y; сначала будет вычисляться значение x, и если оно равно true, то вычисление значения y уже смысла не имеет, так как в любом случае уже z будет равно true. Значение y будет вычисляться только в том случае, если x равно false.
То же самое касается пары операций &/&&. 
z = x & y; // будут вычисляться оба значения - x и y
z = x && y; // сначала x, и если оно равно  true, то y
Описание слайда:
Поразрядные (побитовые) операции Две пары операций | и || (а также & и &&) выполняют похожие действия, однако же они не равнозначны. В выражении z = x | y; будут вычисляться оба значения - x и y. В выражении же z = x || y; сначала будет вычисляться значение x, и если оно равно true, то вычисление значения y уже смысла не имеет, так как в любом случае уже z будет равно true. Значение y будет вычисляться только в том случае, если x равно false. То же самое касается пары операций &/&&. z = x & y; // будут вычисляться оба значения - x и y z = x && y; // сначала x, и если оно равно  true, то y

Слайд 53





Поразрядные (побитовые) операции
Операции сдвига ( << и >> ) применяются к целочисленным операндам и определены для типов int, uint, long и ulong.
При сдвиге влево ( << ) освободившиеся разряды обнуляются. 
410 = 000001002
4<<1   → 810 = 000010002
При сдвиге вправо ( >> ) освободившиеся биты заполняются нулями, если первый операнд беззнакового типа, и знаковым разрядом в противном случае. 
1610 = 000100002
16>>1   → 810 = 000010002
Описание слайда:
Поразрядные (побитовые) операции Операции сдвига ( << и >> ) применяются к целочисленным операндам и определены для типов int, uint, long и ulong. При сдвиге влево ( << ) освободившиеся разряды обнуляются. 410 = 000001002 4<<1  → 810 = 000010002 При сдвиге вправо ( >> ) освободившиеся биты заполняются нулями, если первый операнд беззнакового типа, и знаковым разрядом в противном случае. 1610 = 000100002 16>>1  → 810 = 000010002

Слайд 54





Поразрядные (побитовые) операции
Операции сдвига можно использовать вместо непосредственного умножения или деления на два.
С помощью сдвига вправо можно эффективно поделить число на 2, а с помощью сдвига влево — умножить на 2.
byte  x           Двоичное представление       Значение
x = 7;                     0 0 0 0 0 1 1 1                       7
x = x << 1;             0 0 0 0 1 1 1 0                      14
x = x << 3;             0 1 1 1 0 0 0 0                      112
x = x << 2;             1 1 0 0 0 0 0 0                      192
x = x >> 1;             0 1 1 0 0 0 0 0                       96
x = x >> 2;             0 0 0 1 1 0 0 0                       24
Описание слайда:
Поразрядные (побитовые) операции Операции сдвига можно использовать вместо непосредственного умножения или деления на два. С помощью сдвига вправо можно эффективно поделить число на 2, а с помощью сдвига влево — умножить на 2. byte x Двоичное представление Значение x = 7; 0 0 0 0 0 1 1 1 7 x = x << 1; 0 0 0 0 1 1 1 0 14 x = x << 3; 0 1 1 1 0 0 0 0 112 x = x << 2; 1 1 0 0 0 0 0 0 192 x = x >> 1; 0 1 1 0 0 0 0 0 96 x = x >> 2; 0 0 0 1 1 0 0 0 24

Слайд 55





Контрольные вопросы
1. Где можно описывать переменные? Что входит в описание переменной?
2. Что происходит при использовании в выражении операндов различных типов? Приведите примеры.
3. Перечислите операции языка C#, сгруппировав их по приоритетам.
4. К операндам какого типа применимы операции сдвига?
5. Что такое исключительные ситуации?
6. Опишите принципы обработки исключительных ситуаций.
Описание слайда:
Контрольные вопросы 1. Где можно описывать переменные? Что входит в описание переменной? 2. Что происходит при использовании в выражении операндов различных типов? Приведите примеры. 3. Перечислите операции языка C#, сгруппировав их по приоритетам. 4. К операндам какого типа применимы операции сдвига? 5. Что такое исключительные ситуации? 6. Опишите принципы обработки исключительных ситуаций.



Похожие презентации
Mypresentation.ru
Загрузить презентацию