- •Пишем первую программу на Си-шарп
- •Переменные,типы данных, константы в Си-шарп
- •Var сохраняет принцип строгой типизации в Си-шарп. Это означает, что после того, как для переменной уже был определен тип, в нее нельзя записать данные другого типа:
- •Арифметические и логические операции в Си-шарп
- •Условные операторы в Си-шарп. Тернарный оператор
- •Массивы в Си-шарп. Класс List
- •Удаление элементов
- •Оператор цикла foreach в Си-шарп
- •Функции в Си-шарп. Оператор return
- •Работа со строками в Си-шарп. Класс String
- •Обработка исключений в Си-шарп. Оператор try-catch
- •Работа с файлами в Си-шарп. Классы StreamReader и StreamWriter
- •Понятие объектно-ориентированного программирования (ооп). Классы и объекты
- •Классы в Си-шарп. Объявление классов и создание объектов
- •Методы в Си-шарп. Разница между простыми и статическими
- •Конструкторы в Си-шарп. Указатель this
- •Наследование в Си-шарп. Конструктор базового класса
- •Массив указателей на базовый класс в Си-шарп. Операторы is и as
- •Полиморфизм в Си-шарп. Что это такое?
- •Виртуальные методы в Си-шарп. Переопределение методов
- •Абстрактные классы, методы и свойства в Си-шарп
- •Инкапсуляция в Си-шарп. Модификаторы доступа
- •Ерегрузка операторов в Си-шарп
- •Символы повторения
- •Символы привязки
- •Символы выбора
- •Другие символы
- •Ссылочные типы и типы значений в Си-шарп. Ключевые слова ref и out
- •Значение Null. Nullable-типы. Оператор ??
- •Структуры в Си-шарп
- •Сетевое программирование в Си-шарп
- •Протокол http, метод post и куки в Си-шарп
Var сохраняет принцип строгой типизации в Си-шарп. Это означает, что после того, как для переменной уже был определен тип, в нее нельзя записать данные другого типа:
static void Main(string[] args) { var number = 5; number = "some text"; // ошибка, number определен как int }
Ключевое слово var следует использовать в первую очередь с LINQ выражениями (при работе с базами данных)
static void Main(string[] args) { var query = from s in bdContext.Students select s; }
О LINQ мы будем говорить позже. Ключевое слово var имеет ограничения по его использованию - var не может быть в качестве: - поля класса - аргумента функции - возвращаемого типа функции - переменной, которой присваивается null Нововведение var является достаточно противоречивым среди разработчиков на C#, некоторые используют его где только возможно, другие его избегают (код становится плохо читаемым). Ссылочные типы Все типы данных, о которых мы говорили выше, являются структурными. Также существуют ссылочные типы. Из базовых типов к ссылочным относятся object и string. Тип object является базовым для всех остальных типов данных. Типу string соответствует строка символов Unicode. Пример использования типа string.
static void Main(string[] args) { string hello = "Hello!"; Console.WriteLine(hello); }
Структурные типы данных в Си-шарп хранятся в стеке. Для этих данных зарезервирована область в стеке. Стек — это структура данных, которая сохраняет элементы по принципу «последним пришёл — первым вышел» . Примером из жизни служит стопка тарелок. Скорость работы со стеком гораздо выше, чем с оперативной памятью, следовательно, использование стека повышает скорость работы программы. Ссылочные типы хранятся в куче. Куча — это область динамической памяти, которая выделяется приложению для хранения данных (например объектов). Доступ к данным в куче осуществляется медленнее, чем к стеку. Переменные ссылочных типов хранят ссылки на данные. К ссылочным типам относятся классы, интерфейсы, делегаты и массивы. Больше об этом читайте в уроке Ссылочные типы и типы значений в Си-шарп. Домашнее задание Создайте новый проект или откройте предыдущий, объявите несколько переменных различных типов, примените явное и неявное преобразование. Создайте константную переменную, попробуйте изменить ее значение. PS. Не забываем подписываться на обновления по электронной почте в форме ниже
Арифметические и логические операции в Си-шарп
В этом уроке мы поговорим об арифметических и логических операциях, без которых сложно представить любую программу. Все операции делятся на два типа: унарные и бинарные. К унарным относятся операции, в которых участвует один операнд. В бинарных операциях – два операнда. Операнд – это данные, которые принимают участие в операции. Например, оператор сложения «+» – бинарный 2+3, здесь операндами являются числа 2 и 3. Список бинарных арифметических операций приведен в таблице:
Операция |
Запись |
Сложение |
a + b |
Вычитание |
a - b |
Деление |
a / b |
Умножение |
a * b |
Нахождение остатка от деления |
a % b |
При делении двух целых чисел результатом также будет целое число. Например при делении 9/5 результатом будет число 1. Чтобы получить точный результат с десятичной точкой, нужно чтобы делимое и/или делитель были типа float или double. Например, при делении 9 / 5f (суффикс f указывает, что данная константа типа float) результатом будет 1.8. Оператор «%» возвращает остаток от деления. Результатом операции 9 % 5 будет 4. Примером применения оператора «%» может быть процесс проверки числа на четность. Для этого мы ищем остаток от деления числа на 2. Если число четное, результатом будет 0, если нечетное – 1. Чтобы повысить приоритет операции, используются скобки, как и в обычной арифметике. 2+2*2=6 (2+2)*2=8 При использовании оператора «+» для строк, он выполняет операцию конкатенации. Конкатенация – объединение нескольких объектов (например строк) в один.
static void Main(string[] args) { string str1 = "Hello", str2 = "World"; Console.WriteLine(str1 + ", " + str2); //выводит на экран "Hello, World" }
Унарные операторы в Си-шарп Унарных арифметических операторов в Си-шарп есть всего два: инкрементация «++» и декрементация «--»; Инкрементация увеличивает операнд на единицу, а декрементация - уменьшает на единицу.
static void Main(string[] args) { int a = 0, b = 5; a++; // a=1; b--; // b=4 }
Инкрементация и декрементация может быть префиксной и постфиксной. При Префиксной форме оператор стоит перед операндом, а при постфиксной-после. Префиксная форма сначала увеличивает(уменьшает) значение, и после этого выполняются остальные действия, а при постфиксной форме наоборот - сначала выполнятся все действия, а после увеличится(уменьшится) значение:
static void Main(string[] args) { int a = 2, b = 3, c, d = 3; c = a + ++b; // c = 6, сначала инкремент, потом сложение с = a + d++; // c = 5, сначала сложение, потом инкремент }
Везде где можно использовать инкрементацию/декрементацию стоит это делать, так как она работает быстрее оператора сложения/вычитания. В Си-шарп также есть возможность использования краткой формы выражения:
static void Main(string[] args) { 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; }
Класс Math В классе Math собраны все основные тригонометрические функции, функция возведение числа в степень, нахождение квадратного корня и другие. Для возведения числа в степень, используется функция Pow([число], [степень]);
static void Main(string[] args) { float a, b = 9; a = (float) Math.Pow(b, 2); // возводим переменную b в степень 2. Pow() возвращает результат в типе данных double, поэтому мы тут применили явное преобразование. Конечно, можно было обойтись без преобразования, объявив переменную a типа double Console.WriteLine(a); // выводит на экран число 81 Console.ReadKey(); }
Для нахождения квадратного корня служит функция Sqrt([число]); возвращаемый результат также в типе данных double
static void Main(string[] args) { double a, b = 9; a = Math.Sqrt(b); Console.WriteLine(a); // выводит на экран число 3 Console.ReadKey(); }
Для нахождения косинуса и синуса используются cos([угол в радианах]) и sin([угол в радианах]) соответственно. 180 [градусов] = пи [радиан]. Чтобы перевести градусы в радианы, необходимо значение в градусах умножить на Пи и разделить на 180. Число Пи объявлено константой в классе Math.
static void Main(string[] args) { double a; a = Math.Cos(60 * Math.PI / 180); // переводим 60 градусов в радианы Console.WriteLine(a); // выводит на экран 0.5 a = Math.Sin(60 * Math.PI / 180); Console.WriteLine(a); // выводит на экран 0.866… Console.ReadKey(); }
Логические операторы в Си-шарп Логические операторы в Си-шарп служат для работы с логическим типом данных (bool), который может принимать только два значения – true или false. Их можно разделить на две категории: простые логические операторы и операторы сравнения. В Си-шарп есть следующие логические операторы: ! – оператор «НЕ» является унарным и возвращает противоположное значение операнда.
static void Main(string[] args) { 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;
static void Main(string[] args) { 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 }
Логические операторы в первую очередь используются в условных операторах, о которых мы поговорим в следующем уроке. Домашнее задание Есть прямоугольный треугольник с катетами а=5, b=7. Найдите площадь треугольника, s=?. Используя теорему Пифагора, найдите длину гипотенузы, с=?. Кроме этого, найдите длину гипотенузы еще и с помощью теоремы косинусов. Угол между катетами, думаю и так понятен, 90 градусов :) Не помните формулу - ищите в поисковике. PS. Буду очень благодарен, если поделитесь с друзьями этой статьей с помощью кнопок социальных сетей в конце поста.
