Всё программирование, в целом, построено на математике. Не было бы математики, то не было бы и программирования. Сама суть программирования заключается в том, чтобы максимально упростить математическую задачу и очень быстро её решить. У современных компьютеров весьма мощное «железо», чем у компьютеров десять лет назад. Если, буквально, полвека назад великие умы мечтали и грезили об одном гигабайте памяти, то в наше время исчисление памяти идёт в терабайтах. Если на обычных пользовательских (наших с вами) компьютерах жёсткий диск стоит в среднем на 1 терабайт памяти, то в научной среде память исчисляется в десятках, а то и сотнях, терабайт. Вычислительные мощности позволяют строить и проектировать подобия искусственного интеллекта способного решать конкретные задачи, а также моделировать реалистичные 3D модели любой сложности. Ещё лет десять и графику в компьютерных играх можно будет сравнивать с высококачественными фотографиями профессиональных фотографов.
Классические операции
Собственно, каждый язык программирования обладает четырьмя основными, классическими математическими операторами:
- Сложение (+);
- Вычитание (-);
- Умножение (*);
- Деление (/);
Всего четыре оператора, а комбинаций и схем проворачиваемых с ними — ни счесть!
Также, помимо основных, существуют дополнительные математические операторы конкретно языка C#. Например, нахождение остатка от деления (%). На этом дополнительные операторы заканчиваются. Да, он всего один.
Реализация с типом int
Рассмотрим на примере как нужно считать и выведем сразу каждый результат на экран.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System; //подключённая библиотека using System.Collections.Generic; //подключённая библиотека using System.Linq; //подключённая библиотека using System.Text; //подключённая библиотека using System.Threading.Tasks; //подключённая библиотека namespace ConsoleApplication1 //подключение пространства имён { class Program //класс { static void Main(string[] args) //метод класса { Console.WriteLine("Математические операции"); //вывод текста без переноса строки на экран int a = 10, b = 3; //создание двух целочисленных переменных со значениями Console.WriteLine(a + " + " + b + " = " + (a + b)); //сложение двух чисел Console.WriteLine(a + " - " + b + " = " + (a - b)); //вычитание двух чисел Console.WriteLine(a + " * " + b + " = " + (a * b)); //умножение двух чисел Console.WriteLine(a + " / " + b + " = " + (a / b)); //деление двух чисел Console.WriteLine(a + " % " + b + " = " + (a % b)); //нахождение остатка Console.Read(); //ожидание компилятором ввода с клавиатуры и нажатия Enter } } } |
В результате получим
1 2 3 4 5 6 |
Математические операции 10 + 3 = 13 10 - 3 = 7 10 * 3 = 30 10 / 3 = 3 10 % 3 = 1 |
Как можно заметить, при делении свершилось непонятное. Должна быть ещё и дробная часть. Это «фишка» языка, если делятся целочисленные переменные (как в нашем случае), то на экран выводится только целая часть от деления, то есть то, что до «запятой». Для того, чтобы делить привычным нам способом, необходимо чтобы хотя бы один из операндов (элементов вычисления) принадлежал к типу с плавающей точкой.
Реализуем тот же самый пример, только одна из переменных будет типа float.
Реализация с типом float
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System; //подключённая библиотека using System.Collections.Generic; //подключённая библиотека using System.Linq; //подключённая библиотека using System.Text; //подключённая библиотека using System.Threading.Tasks; //подключённая библиотека namespace ConsoleApplication1 //подключение пространства имён { class Program //класс { static void Main(string[] args) //метод класса { Console.WriteLine("Математические операции"); //вывод текста без переноса строки на экран int a = 10; //создание целочисленной переменной со значением float b = 3f; //создание переменной с плавающей точкой со значением Console.WriteLine(a + " + " + b + " = " + (a + b)); //сложение двух чисел Console.WriteLine(a + " - " + b + " = " + (a - b)); //вычитание двух чисел Console.WriteLine(a + " * " + b + " = " + (a * b)); //умножение двух чисел Console.WriteLine(a + " / " + b + " = " + (a / b)); //деление двух чисел Console.WriteLine(a + " % " + b + " = " + (a % b)); //нахождение остатка Console.Read(); //ожидание компилятором ввода с клавиатуры и нажатия Enter } } } |
Мы красиво оформили вывод, а также поместили расчёт в саму функцию вывода.
Небольшое пояснение:
- Знак плюс (+) в функции вывода позволяет объединять несколько символьных значений в одно, и таким образом получать наиболее красиво оформленный вывод;
- Всё, что находится в скобках функции вывода, распознаётся функцией как символы, то есть любая переменная (не важно числовая или символьная) превращается в набор символов. Но, если в скобках указаны только две переменные числового типа объединённые между собой знаком плюс (+), то происходит математическая операция сложения между числами и получившийся результат выводится как набор символов;
- Чтобы функция поняла, что необходимо произвести математическую операцию над группой операндов, их необходимо отделить от остальных значений вывода круглыми скобками;
В результате получим
1 2 3 4 5 6 |
Математические операции 10 + 3 = 13 10 - 3 = 7 10 * 3 = 30 10 / 3 = 3,333333 10 % 3 = 1 |
Вот и получилась наша дробная часть при расчёте.
Выражения могут быть неимоверно длинными, а могу быть короткими (как показано в примере).
Таким нехитрым образом мы разобрались с «Математика и математические операции на языке C# (sharp)»!