C# - Урок 4 - Операторы арифметические и логические
В прошлых статьях и видео мы познакомились с типами данных и видами переменных В этом уроке мы поговорим об арифметических и логических операциях, без которых сложно представить какую-нибудь программу.
C# предоставляет множество операторов, которые являются символами, указывающими, какие операции (математические операции, индексирование, вызов функции и т. д.) следует выполнять в выражении. Вы можете перегрузить многие операторы, чтобы изменить их значение при применении к определяемому пользователем типу.
Полный список всех операторов: Основные операторы Унарные операторы Мультипликативные операторы Операторы сложения Операторы сдвига Относительные операторы и операторы тестирования типа Операторы равенства Оператор логического И Оператор логического исключающего ИЛИ Оператор логического ИЛИ Условный оператор И Условный оператор ИЛИ Оператор объединения с NULL Условный оператор Назначение и лямбда-операторы Переполнение при арифметической операции
Все операции делятся по количеству учавствоваших данных (операндов).
Бинарные операции
В бинарных операциях – два операнда. Например, оператор сложения «+» – бинарный 2+3, здесь операндами являются числа 2 и 3.
Список бинарных арифметических операций:
a + b Сложение a - b Вычитание a / b Деление a * b Умножение a % b остатка от деления
рассмотрим примеры в программе
int a, b; int plus, minus, ymnog, ostatok; float del, del2;
Console.Write("Введите 1 число \t"); a = Convert.ToInt32(Console.ReadLine());
Console.Write("\n\nВведите 2 число \t"); b = Convert.ToInt32(Console.ReadLine());
//складываем (+) plus = a + b;
//вычитаем (-) minus = a - b;
//умножаем (*) ymnog = a * b;
//делим целочисленно (/) del = a / b; //при делении 9/5 результатом будет число 1
//делим точно (/) del2 = (float)a / b; //Чтобы получить точный результат с десятичной //точкой, нужно чтобы делимое и/или делитель //были типа float или double. //Остаток (%) ostatok = a % b;
//вывод результатов Console.WriteLine("Сложение \t\t", plus); Console.WriteLine("Вычитание \t\t", minus); Console.WriteLine("Умножение \t\t", ymnog); Console.WriteLine("Деление целочисленное \t", del); Console.WriteLine("Деление дробное \t", del2); Console.WriteLine("Остаток \t\t", ostatok);
Вводим 1 число 13 , а 2 число 6 и видим результаты:
Теперь введем числа 20 и 5
Как видите, результат целочисленного и точного деления одинаковый, а остаток = 0
Унарные операции
Теперь перейдем к унарным операциям, в которых участвует один операнд. Унарных арифметических операторов в Си-шарп есть всего два: инкрементация «++» и декрементация «--»;
Инкрементация увеличивает операнд на единицу, а декрементация - уменьшает на единицу.
int a = 0, b = 5; a++; // a=1; Инкрементация увеличивает операнд на единицу b--; // b=4 декрементация - уменьшает на единицу
//вывод результатов Console.WriteLine("а = 0"); Console.WriteLine("а++ = ", a++);
запускаем проект и видим результат.
Инкрементация и декрементация может быть префиксной и постфиксной.
При Префиксной форме оператор стоит перед операндом, а при постфиксной-после. Префиксная форма сначала увеличивает(уменьшает) значение, и после этого выполняются остальные действия, а при постфиксной форме наоборот - сначала выполнятся все действия, а после увеличится(уменьшится) значение:
int a1 = 2, b1 = 3, b2 = 3, c1, с2; c1 = a1 + ++b1; // c1 = 6, сначала инкремент, потом сложение с2 = a1 + b2++; // c2 = 5, сначала сложение, потом инкремент Console.WriteLine("\nc1 = a1 + ++b1 = ", c1); Console.WriteLine("d1 = a1 + b2++ = ", с2);
В первом примере мы сначала увеличиваем значение переменной b1, а затем складываем во втором в начале находим сумму, а затем меняем значение переменной b2.
Везде где можно использовать инкрементацию/декрементацию стоит это делать, так как она работает быстрее оператора сложения/вычитания.
В Си-шарп также есть возможность использования краткой формы выражения:
int a = 2, b = 3; a += b; // равноценно выражению a = a + b; a -= b; // равноценно выражению a = a - b; a *= b; // равноценно выражению a = a * b; a /= b; // равноценно выражению a = a / b; a %= b; // равноценно выражению a = a % b;
В Visual Basic.net мы также использовали вариант a += b когда складывали строки.
Класс Math
Коме простых действий есть сложные вычисления такие как возведение в степень, нахождение тригоном функций, нахождение квадратного корня и другие. Все они собраны в Математическом Классе (Math)
b = (float)Math.Pow(a, 2); //возведение числа a в степень 2
Console.WriteLine("квадратный корень = ", a, c);
Подробней про этот класс на mdsn.
Для нахождения косинуса и синуса используются cos([угол в радианах]) и sin([угол в радианах]) соответственно.
Чтобы перевести градусы в радианы, необходимо значение в градусах умножить на Пи и разделить на 180. Число Пи объявлено константой в классе Math. 180 [градусов] = пи [радиан].
вводим переменную и задаем ей в начале значение кос 180 - что равно -1 , а за тем син 30 = 0,5
double a; a = Math.Cos(180 * Math.PI / 180); // переводим 60 градусов в радианы Console.WriteLine(a); // выводит на экран -1 a = Math.Sin(30 * Math.PI / 180); Console.WriteLine(a); // выводит на экран 0.5 Console.ReadKey();
Логические операторы в Си-шарп
Логические операторы в Си-шарп служат для работы с логическим типом данных (bool), который может принимать только два значения – true или false. Их можно разделить на две категории: простые логические операторы и операторы сравнения.
В Си-шарп есть следующие логические операторы:
! – оператор «НЕ» является унарным и возвращает противоположное значение операнда.
bool a, b = true, c = false; a = !b; // a = false a = !c; // a = true
|| - оператор «ИЛИ» является бинарным и возвращает false только тогда, когда оба операнда равны false, в остальных случаях результат будет true;
static void Main(string[] args)