ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.10.2023
Просмотров: 93
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Алгоритм и программа. Способы записи алгоритмов.
Общая характеристика языков программирования и их классификация
Основные конструкции языка програмирования.
Язык программирования Си-Шарп (C#). Структура программы в C#
Понятие величины. Оператор присваивания. Объявление переменной.
Линейные программы. Ввод и вывод данных
Арифметические и логические операции в Си-Шарп. Приоритет операций
Типы данных C#. Объявление и инициализация.
1 | "Имя: {0} Возраст: {2} Рост: {1}м" |
будет заменена на
1 | "Имя: Tom Возраст: 34 Рост: 1,7м" |
Console.Write
Кроме Console.WriteLine() можно также использовать метод Console.Write(), он работает точно так же за тем исключением, что не добавляет переход на следующую строку, то есть последующий консольный вывод будет выводиться на той же строке.
1 2 3 4 | string name = "Tom"; int age = 34; double height = 1.7; Console.Write($"Имя: {name} Возраст: {age} Рост: {height}м"); |
Консольный ввод
Кроме вывода информации на консоль мы можем получать информацию с консоли. Для этого предназначен метод Console.ReadLine(). Он позволяет получить введенную строку.
1 2 3 | Console.Write("Введите свое имя: "); string? name = Console.ReadLine(); Console.WriteLine($"Привет {name}"); |
В данном случае все, что вводит пользователь, с помощью метода Console.ReadLine() передается в переменную name.
Пример работы программы:
Введите свое имя: Том
Привет Том
Особенностью метода Console.ReadLine() является то, что он может считать информацию с консоли только в виде строки. Кроме того, возможная ситуация, когда для метода Console.ReadLine не окажется доступных для считывания строк, то есть когда ему нечего считывать, он возвращаает значение null, то есть, грубо говоря, фактически отсутствие значения. И чтобы отразить эту ситуацию мы определяем переменную name, в которую получаем ввод с консоли, как переменную типа string?. Здесь string указывает, что переменная может хранить значения типа string, то есть строки. А знак вопроса ? указывает, что переменная также может хранить значение null, то есть по сути не иметь никакого значения. Далее мы более подробно разберем null и как с ним работать.
Однако, может возникнуть вопрос, как нам быть, если, допустим, мы хотим ввести возраст в переменную типа int или другую информацию в переменные типа double или decimal? По умолчанию платформа .NET предоставляет ряд методов, которые позволяют преобразовать различные значения к типам int, double и т.д. Некоторые из этих методов:
Convert.ToInt32() (преобразует к типу int)
Convert.ToDouble() (преобразует к типу double)
Convert.ToDecimal() (преобразует к типу decimal)
Пример ввода значений:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Console.Write("Введите имя: "); string? name = Console.ReadLine(); Console.Write("Введите возраст: "); int age = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите рост: "); double height = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите размер зарплаты: "); decimal salary = Convert.ToDecimal(Console.ReadLine()); Console.WriteLine($"Имя: {name} Возраст: {age} Рост: {height}м Зарплата: {salary}$"); |
При вводе важно учитывать текущую операционную систему. В одних культурах разделителем между целой и дробной частью является точка (США, Великобритания...), в других - запятая (Россия, Германия...). Например, если текущая ОС - русскоязычная, значит, надо вводить дробные числа с разделителем запятой. Если локализация англоязычная, значит, разделителем целой и дробной части при вводе будет точка.
Пример работы программы:
Введите имя: Том
Введите возраст: 25
Введите рост: 1,75
Введите размер зарплаты: 300,67
Имя: Том Возраст: 25 Рост: 1,75м Зарплата: 300,67$
Арифметические и логические операции в Си-Шарп. Приоритет операций
C# предоставляет ряд операторов. Многие из них поддерживаются встроенными типами и позволяют выполнять базовые операции со значениями этих типов. В число этих операторов входят следующие группы:
Арифметические операторы, выполняющие арифметические операции с числовыми операндами.
Операторы сравнения, сравнивающие числовые операнды.
Логические операторы, выполняющие логические операции с операндами bool.
Битовые операторы и операторы сдвига выполняют битовые операции или операции сдвига с операндами целочисленных типов.
Операторы равенства проверяют равенство или неравенство своих операндов.
Как правило, можно выполнить перегрузку этих операторов, то есть указать поведение оператора для операндов определяемого пользователем типа.
Простейшими выражениями C# являются литералы (например, целые и реальные числа) и имена переменных. Их можно объединить в сложные выражения с помощью операторов. Приоритет и ассоциативность операторов определяют порядок выполнения операций в выражении. Порядок вычисления, определяемый приоритетом и ассоциативностью операторов, можно изменить с помощью скобок.
В следующем коде примеры выражений находятся в правой части назначений:
C#Копировать
int a, b, c;
a = 7;
b = a;
c = b++;
b = a + b * c;
c = a >= 100 ? b : c / 10;
a = (int)Math.Sqrt(b * b + c * c);
string s = "String literal";
char l = s[s.Length - 1];
var numbers = new List
b = numbers.FindLast(n => n > 1);
Как правило, выражение выдает результат и может быть заключено в другое выражение. Вызов метода void является примером выражения, которое дает результат. Его можно использовать только в качестве оператора, как показано в следующем примере:
C#Копировать
Console.WriteLine("Hello, world!");
Ниже приведены некоторые другие виды выражений, доступные в C#:
Выражения интерполированных строк, которые предоставляют удобный синтаксис для создания форматированных строк:
C#Копировать
Выполнить
var r = 2.3;
var message = $"The area of a circle with radius {r} is {Math.PI * r * r:F3}.";
Console.WriteLine(message);
// Output:
// The area of a circle with radius 2.3 is 16.619.
Лямбда-выражения, позволяющие создавать анонимные функции:
C#Копировать
Выполнить
int[] numbers = { 2, 3, 4, 5 };
var maximumSquare = numbers.Max(x => x * x);
Console.WriteLine(maximumSquare);
// Output:
// 25
Выражения запроса, позволяющие использовать возможности запросов непосредственно в C#:
C#Копировать
Выполнить
var scores = new[] { 90, 97, 78, 68, 85 };
IEnumerable
from score in scores
where score > 80
orderby score descending
select score;
Console.WriteLine(string.Join(" ", highScoresQuery));
// Output:
// 97 90 85
Определение тела выражения можно использовать, чтобы предоставить краткое определение для метода, конструктора, свойства, индексатора или метода завершения.
Приоритет операторов
В выражении с несколькими операторами операторы с более высоким приоритетом оцениваются до операторов с более низким приоритетом. В следующем примере умножение выполняется сначала, так как оно имеет более высокий приоритет, чем сложение:
C#Копировать
Выполнить
var a = 2 + 2 * 2;
Console.WriteLine(a); // output: 6
Используйте скобки, чтобы изменить порядок вычисления, накладываемый приоритетом операторов:
C#Копировать
Выполнить
var a = (2 + 2) * 2;
Console.WriteLine(a); // output: 8
Ассоциативность операторов
Если операторы имеют одинаковый приоритет, порядок их выполнения определяется ассоциативностью операторов:
Операторы с левой ассоциативностью вычисляются слева направо. За исключением операторов присваивания и оператора объединения со значением NULL, все бинарные операторы имеют левую ассоциативность. Например, выражение a + b - c вычисляется как (a + b) - c.
Операторы с правой ассоциативностью вычисляются справа налево. Операторы присваивания, операторы объединения null, лямбда-выражения и условные операторы ?: являются правильными ассоциативными. Например, выражение x = y = z вычисляется как x = (y = z).
Используйте скобки, чтобы изменить порядок вычисления, накладываемый ассоциативностью операторов:
C#Копировать
Выполнить
int a = 13 / 5 / 2;
int b = 13 / (5 / 2);
Console.WriteLine($"a = {a}, b = {b}"); // output: a = 1, b = 6
Вычисление операнда
Не связанные с приоритетом и ассоциативностью операторов операнды в выражении вычисляются слева направо. В следующих примерах иллюстрируется порядок вычисления операторов и операндов:
Выражение | Порядок вычислений |
a + b | a, b, + |
a + b * c | a, b, c, *, + |
a / b + c * d | a, b, /, c, d, *, + |
a / (b + c) * d | a, b, c, +, /, d, * |
Как правило, оцениваются все операнды операторов. Однако некоторые операторы оценивают операнды условно. То есть значение крайнего левого операнда такого оператора определяет, следует ли оценивать другие операнды. Эти операторы являются условными логическими операторами И (&&) и ИЛИ (||) , операторами объединения со значением NULL?? и ??=, условными операторами со значением NULL ?. и ?[] и условным оператором ?:. Дополнительные сведения см. в описании каждого оператора.