Тип переменной указывать не обязательно, если вы сразу присваиваете значение переменной. Для этого вместо типа можно просто писать var. То есть альтернативно можно писать так:
В большинстве случаев достаточно использования var.
Арифметические операции
Операции сравнения
Логические операции
Контроль исполнения через if
Контроль исполнения завязан на логические значения, которые имеют булевы значения true/false
Формально имеет следующий вид:
Например:
Можно добавить блок else на случай если condition окажется ложно
Например:
Есть возможность проверять сразу несколько условий, в этом случае выполняется только то условие, которое оказалось первым в последовательности из if инструкций
Например:
Контроль исполнения через switch
Позволяет проверять переменную или выражение на равенство некоторому дискретному значению и в зависимости от этого значения выполнять тот или иной блок конструкции switch. Допустим мы хотим проверить по оценке в зачетке будет ли студент получать стипендию. Если оценка 4 или 5 - то стипендия будет, а вот если оценка 2 или 3 то придется сидеть на хлебе с водой. Используя if это можно было бы написать так:
так вот switch предлагает альтернативный подход для записи такого выражения, который будет выглядеть так
Отдельное внимание стоит обратить на наличие ключевого слова break, которое сигнализирует о том что из конструкции switch надо выйти.
Массивы
Массив это упорядоченный список значений. Массив может быть одномерным, многомерным (например, матрица) или массивом массивов. Количество измерений и длина каждого из измерений задаются, когда создается экземпляр массива. Массивы индексируются от нуля: массив с n элементами индексируется от 0 до n-1.
Пример объявления одномерного массива:
иногда хочется объявить массив безе инициализации его значений, в этом случае необходимо указать его размерность:
Пример объявления двумерного массива:
аналогично можно инициализировать пустой n-мерный массив:
Списки
Бывают ситуации когда необходимо создать массив количество элементов в котором может меняться, для этих случаев C# предоставляет нам в пользование класс List (то бишь список по-русски). Работа с ним почти ни чем не отличается от работы с массивом, за исключением момента инициализации:
Циклы
И вот рассмотрев работу с массивами сразу появляется желание найти способ перебрать элементы каким-нибудь более оптимизированным способом.
Возьмем пример выше:
Очевидно что писать Console.WriteLine по четыре раза дело неблагородное, мы можем просто создать цикл и запустить функцию Console.WriteLine четыре раза, выглядеть это будет так:
тут мы в явном виде указываем количество итераций в цикле, а что если нам не известно количество элементов в массиве (например, мы со списком работаем) или нам просто лень вспоминать, более грамотно запросить количество элементов у самого массива, делается это так:
есть еще один способ перебора всех элементов массива, с использованием конструкции foreach, которая просто последовательно позволяет получить доступ к каждому элементу массива, причем использование счетчика i в этом случае не нужно:
Контроль управления в цикле с помощью break и continue
бывают ситуации когда перебор элементов хочется прервать, или например пропустить выполнение итерации в цикле. Для этого существует два ключевых слова break и continue
Допустим, что мы хотим выйти из цикла как только встретим первое нечетное число, сделать это можно следующим образом
В результат выполнения этого кода, на экран выведется только два значения:
12
82
Альтернативная ситуация, когда мы не хотим выйти из цикла, а просто хотим пропустить какую-нибудь итерацию. Например, мы не хотим выводить на экран нечетные числа. Мы можем сделать это так:
В результат выполнения этого кода, на экран выведутся только четные числа:
12
82
54
Конструкции while и do/while
Есть еще два специфических способа построения циклов, использование которых в подавляющем случае излишне.
Применяются они как правило, когда количество итераций заранее не известно, и выход их них завязан на выполнение некоторого условия.
Формально конструкция имеет следующий вид:
Допустим мы хотим поиграть с компьютером в угадайку. Мы загадываем число от 0 до 100, помещаем его в переменную, назовем ее number
и хотим посчитать сколько попыток потребуется компьютеру чтобы угадать число. Для имитации процесса угадывания, мы воспользуемся генератором случайных чисел:
Теперь запуская программу каждый новый раз, на экран будет выводится разный ответ.
Еще есть конструкция do/while, которая отличается от while тем что она гарантирует выполнение цикла хотя бы один раз
Пример выше можно переписать:
Обработка данных от пользователя
Как правило консольное приложение предполагает наличие некоторых вводных данных от пользователя, для этого использует не раз нами применяемый класс Console.
Простой ввод, преобразование строки в число
Допустим мы хотим запросить два числа от пользователя и сложить их, для этого можно было бы написать:
Ввести какие-нибудь числа и получить совсем не то что ожидали:
Как видно на картинке числа не складываются, а просто происходит объединение их цифр.
Происходит это из-за того, что ввод от пользователя по умолчанию принимается за строковые данные. Поэтому чтобы превратить введенные цифры в числа, придется их сначала преобразовать в целые числа, для этого у типа int есть функция Parse, которая преобразует строковое значение в целое число
теперь все будет работать корректно:
Ввод произвольного количества аргументов
Допустим мы хотим запросить у пользователя n-ое количество чисел, и хотим вывести их сумму, для этого нам пригодится цикл do/while, который как раз позволяет выполнять инструкции в цикле неопределённое количество раз в зависимости от условия. В качестве условия выхода из цикла будет считать ситуацию, когда пользователь не ввел никакого числа (то есть просто нажал enter). Введенные числа мы будем заносить в список. И так у нас получится:
получим что-то в этом роде:
Математически функции
Для доступа к математическим функциям, таким как синус, косинус, возведение в степень и другим, используется класс Math, вот пример некоторых наиболее часто используемых функций
обратите внимание на Math.PI которая является не функцией, а константой, содержащей значение числа