C# - Урок 4 - Операторы арифметические и логические
В прошлых статьях и видео мы познакомились с типами данных и видами переменных
В этом уроке мы поговорим об арифметических и логических операциях, без которых сложно представить какую-нибудь программу.
C# предоставляет множество операторов, которые являются символами, указывающими, какие операции (математические операции, индексирование, вызов функции и т. д.) следует выполнять в выражении. Вы можете перегрузить многие операторы, чтобы изменить их значение при применении к определяемому пользователем типу.
Полный список всех операторов:
Основные операторы
Унарные операторы
Мультипликативные операторы
Операторы сложения
Операторы сдвига
Относительные операторы и операторы тестирования типа
Операторы равенства
Оператор логического И
Оператор логического исключающего ИЛИ
Оператор логического ИЛИ
Условный оператор И
Условный оператор ИЛИ
Оператор объединения с NULL
Условный оператор
Назначение и лямбда-операторы
Переполнение при арифметической операции
Все операции делятся по количеству учавствоваших данных (операндов).
Бинарные операции
В бинарных операциях – два операнда. Например, оператор сложения «+» – бинарный 2+3, здесь операндами являются числа 2 и 3.
Список бинарных арифметических операций:
a + b Сложение
a - b Вычитание
a / b Деление
a * b Умножение
a % b остатка от деления
рассмотрим примеры в программе
//---1--------------------------------------------------------------------
////Бинарные операции
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{0}", plus);
Console.WriteLine("Вычитание \t\t{0}", minus);
Console.WriteLine("Умножение \t\t{0}", ymnog);
Console.WriteLine("Деление целочисленное \t{0}", del);
Console.WriteLine("Деление дробное \t{0}", del2);
Console.WriteLine("Остаток \t\t{0}", ostatok);
Console.ReadKey();
Вводим 1 число 13 , а 2 число 6 и видим результаты:
Теперь введем числа 20 и 5
Как видите, результат целочисленного и точного деления одинаковый, а остаток = 0
Унарные операции
Теперь перейдем к унарным операциям, в которых участвует один операнд.
Унарных арифметических операторов в Си-шарп есть всего два: инкрементация «++» и декрементация «--»;
Инкрементация увеличивает операнд на единицу, а декрементация - уменьшает на единицу.
//---2-1-------------------------------------------------------------------
//Унарные операции
int a = 0, b = 5;
a++; // a=1; Инкрементация увеличивает операнд на единицу
b--; // b=4 декрементация - уменьшает на единицу
//вывод результатов
Console.WriteLine("а = 0");
Console.WriteLine("а++ = {0}", a++);
Console.WriteLine("\nb = 5");
Console.WriteLine("b-- = {0}", b--);
Console.ReadKey();
запускаем проект и видим результат.
Инкрементация и декрементация может быть префиксной и постфиксной.
При Префиксной форме оператор стоит перед операндом, а при постфиксной-после.
Префиксная форма сначала увеличивает(уменьшает) значение, и после этого выполняются остальные действия, а при постфиксной форме наоборот - сначала выполнятся все действия, а после увеличится(уменьшится) значение:
int a1 = 2, b1 = 3, b2 = 3, c1, с2;
c1 = a1 + ++b1; // c1 = 6, сначала инкремент, потом сложение
с2 = a1 + b2++; // c2 = 5, сначала сложение, потом инкремент
Console.WriteLine("\nc1 = a1 + ++b1 = {0}", c1);
Console.WriteLine("d1 = a1 + b2++ = {0}", с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)
//---3-1-------------------------------------------------------------------
//math
float a = 4, b, c;
b = (float)Math.Pow(a, 2); //возведение числа a в степень 2
c = (float)Math.Sqrt(a);
Console.WriteLine("{0}^2 = {1}", a, b);
Console.WriteLine("квадратный корень {0} = {1}", a, c);
Console.ReadKey();
Подробней про этот класс на 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)
{
bool a, bTrue = true, bFalse = false;
a = bFalse || bFalse; // a = false
a = bFalse || bTrue; // a = true
a = bTrue || bFalse; // a = true
a = bTrue || bTrue; // a = true
&& - оператор «И» является бинарным и возвращает true только тогда, когда оба операнда равны true, в остальных случаях результат будет false;
bool a, bTrue = true, bFalse = false;
a = bFalse && bFalse; // a = false
a = bFalse && bTrue; // a = false
a = bTrue && bFalse; // a = false
a = bTrue && bTrue; // a = true
К операторам сравнения относятся:
Оператор Название
> больше
< меньше
>= больше или равно
<= меньше или равно
== равно
!= неравно
static void Main(string[] args)
{
bool a;
int b = 2, c = 3, d = 2;
a = b > c; // a = false
a = b < c; // a = true
a = b >= c; // a = false
a = b >= d; // a = true
a = b == c; // a = false
a = b == d; // a = true
a = b != c; // a = true
}
Логические операторы в первую очередь используются в условных операторах, о которых мы поговорим в следующих уроках.
смотреть видео
В этом видеоуроке мы разобрали основные операции C#
END
|