Синтаксис языка С# Комментарии // Однострочный комментарий /* Можно комментировать много строк */ /// Это однострочный комментарий для документации /// /// Это однострочный комментарий /// /** Документация * *А это * многострочный * */
Литералы В С# существует четыре типа литералов: целочисленный литерал (8-й, 16-й и 10-й системе счисления); вещественный литерал; символьный литерал; строковый литерал.
Константы Литеральные константы х = 100; // литеральная константа Символические константы Объявляются с дополнительным спецификатором const. Требуют непосредственной инициализации. const dbl_pi = ; Перечисления enum Sizes: unint { Small=1, Middle, Large = 10 }; Строковые константы string strMessage = "Здравствуй Мир!";
Арифметические операции + – * / % Логические (boolean и побитовые) & | ^ ! ~ && || Строковые (конкатенаторы) + Increment, decrement ++ – – Сдвига >> = Member access. Индексации [ ] Cast (приведение типа) ( ) Оператор условия (трехоперандная) ?: Delegate concatenation and removal + – Создание объекта new( ) Информация о типе is as sizeof typeof Overflow exception control (управление исключениями) checked unchecked Indirection and Address (неуправляемый код) * –> [ ] &
Приоритет КатегорияОперации 0Первичные f(x) a[x] x++ x-- -> checked unchecked new; typeof default(T) delegate sizeof 1Унарные + - ! ~ ++x --x (T)x await &x *x 2Мультипликативные (Умножение) * / % 3Аддитивные (Сложение) + - 4Сдвиг > 5Отношения, проверка типов = is as 6Эквивалентность == != 7Логическое И & 8Логическое исключающее XOR ^ 9Логическое ИЛИ (OR) | 10Условное И && 11Условное ИЛИ || 12Условное выражение ? : 13Присваивание и лямбда-выражение = *= /= %= += -= >= &= ^= |= =>
Объявление переменных. Область видимости и время жизни Любая переменная используемая в программе вводится объявлением. Кроме переменных объявлению подлежат: классы и структуры. Класс (структура) может содержать вложенные объявления других классов и структур; перечисления; объекты – переменные и константы, представляющие классы и структуры. Корректное объявление объекта предполагает, что информация, содержащая характеристики объявляемого объекта, доступна транслятору; элементы перечислений – объекты, представляющие перечисления; конструкторы классов и методы (функции) – члены классов (в том числе и специальные). Конфликта имен (проблемы с обращением к одноименным объектам) позволяет избежать принятая в языке дисциплина именования. В каждом языке программирования она своя
Избежать конфликта имен в C# позволяет такая синтаксическая конструкция, как блок операторов. Блок – это множество предложений (возможно пустое), заключенное в фигурные скобки. Переменные можно объявлять в любом месте блока. Точка объявления переменной в буквальном смысле соответствует месту ее создания. Обращение к объявляемой переменной или константе "выше" точки ее объявления лишено смысла.
Управляющие операторы Управляющие операторы определяют последовательность выполнения операторов в программе и являются основным средством реализации алгоритмов. Различаются следующие категории управляющих операторов: Операторы выбора. Вводятся ключевыми словами if, if... else..., switch. Операторы цикла. Вводятся ключевыми словами while, do... while, for, foreach. Операторы перехода. Вводятся ключевыми словами goto, break, continue, return.
Операторы выбора if, if... else... После ключевого слова if располагается взятое в круглые скобки условное выражение (булево выражение), следом за которым располагается оператор (блок операторов) Далее в операторе if... else... после ключевого слова else размещается еще один оператор отсутствуют предопределенные алгоритмы преобразования значений к булевскому типу В силу того, что в C# отсутствуют предопределенные алгоритмы преобразования значений к булевскому типу, условное выражение должно быть выражением типа bool – переменной, константой или выражением на основе операций сравнения и логических операций.
Замечание: невозможно построить оператор if... else... на основе одиночного оператора объявления: if (true) int XXX = 125; if (true) int XXX = 125; else int ZZZ = 10; Такие конструкции воспринимаются как ошибочные. Ставить в зависимость от условия (пусть даже всегда истинного) создание объекта не принято. Совсем другое дело – при работе с блоками if (true) {int XXX = 125;} if (true) {int XXX = 125;} else {int ZZZ = 10;} Даже в таких примитивных блоках определена своя область видимости, и создаваемые в них объекты, никому не мешая, существуют по своим собственным правилам
switch switch оператор имеет следующий вид: int val; :::::::::: switch (val) { case 0: … break; case 100: … break; default: break; // Список операторов пуст. } Списки операторов в case элементах не могут включать операторы объявления. Каждый case элемент в обязательном порядке завершается оператором- терминатором break, goto, return
сlass MyClass { static void Main (string[] args) { string user; user = Console.ReadLine(); switch (user) { case "user1": Console.WriteLine("Здравствуйте user1 "); break; case "user2": Console.WriteLine ("Здравствуйте user2 ") ; break; case "user3": Console. WriteLine ("Здравствуйте user3 ") ; break; default: Console.WriteLine("Здравствуйте новый пользователь"); break; }
Операторы цикла while while ( … ) { }; Оператор while (true) int XXX = 0; с самого первого момента своего существования (еще до начала трансляции!) сопровождается предупреждением: Embedded statement cannot be a declaration or labeled statement
String Name; while (true) { Console.Write ("Введите ваш имя " ); Name = Console.ReadLine(); if(Name == ) break; Console.WriteLine("Здравствуйте {0}", Name); }
do... while Разница с ранее рассмотренным оператором цикла состоит в том, что здесь сначала выполняется оператор (блок операторов), а затем проверяется условие продолжения оператора string password; do { password=Console.ReadLine(); } while(password!=Admin");
for Оператор for также невозможно построить на основе одиночного оператора объявления
foreach Этим оператором обеспечивается повторение множества операторов, составляющих тело цикла, для каждого элемента массива или коллекции. После перебора ВСЕХ элементов массива или коллекции и применения множества операторов для каждого элемента массива или коллекции, управление передается следующему за оператором foreach оператору. int[ ] array = new int[10]; // Объявили и определили массив … foreach (int i in array) { /*:::::*/ }; // Для каждого элемента массива надо сделать... Специализированный оператор, приспособленный для работы с массивами и коллекциями. Конструкция экзотическая и негибкая. Предполагает выполнение примитивных последовательностей действий над массивами и коллекциями (начальная инициализация или просмотр ФИКСИРОВАННОГО количества элементов). Действия, связанные с изменениями размеров и содержимого коллекций, в рамках этого оператора могут привести к непредсказуемым результатам
Класс Math и его функции public void MathFunctions(){ double a, b,t,t0,dt,y; string NameFunction; Console.WriteLine("Введите имя исследуемой функции a*F(b*t)" + " (sin, cos, tan, cotan)"); NameFunction = Console.ReadLine(); Console.WriteLine("Введите параметр a (double)"); a= double.Parse(Console.ReadLine()); Console.WriteLine("Введите параметр b (double)"); b= double.Parse(Console.ReadLine()); Console.WriteLine("Введите начальное время t0(double)"); t0= double.Parse(Console.ReadLine()); const int points = 10; dt = 0.2; for(int i = 1; i
Класс Random и его функции Конструкторы: public Random() public Random (int) public int Next( ) - метод без параметров выдает целые положительные числа во всем положительном диапазоне типа int ; public int Next(int max) - выдает целые положительные числа в диапазоне [0,max]; public int Next(int min, int max) - выдает целые положительные числа в диапазоне [min,max]. public double NextDouble( ) - выдается новое случайное число, равномерно распределенное в интервале [0-1). public void NextBytes(byte[ ] buffer) - генерирует случайные числа в диапазоне [0, 255] и заполняет массив байт.
public void Rand() { Random realRnd = new Random(); Random repeatRnd = new Random(100); // случайные числа в диапазоне [0,1) Console.WriteLine("случайные числа в диапазоне[0,1)"); for(int i =1; i