934.66K
Category: programmingprogramming

Введение в C# и .net (core)

1.

ВВЕДЕНИЕ В C# И .NET (CORE)

2.

Литература
• Троелсен, Э., Джепикс, Ф. Язык
программирования C# 9 и платформа .NET 5:
основные принципы и практики
программирования, том 1, 10-е изд./Эндрю
Троелсен, Филипп Джепикс; пер. с англ. Ю.Н.
Артеменко. — Киев. : “Диалектика”, 2022.—
770 с.: ил. — Парал.тит. англ.

3.

Дополнительные материалы
• Документация по C# и .NET
на сайте Microsoft:
https://learn.microsoft.com/ruru/dotnet/csharp/tour-ofcsharp/

4.

Некоторые основные преимущества
инфраструктуры .NET Core
• Возможность взаимодействия с существующим кодом
• Поддержка многочисленных языков программирования (С#, F# и
VB.NET)
• Общий исполняющий механизм, разделяемый всеми языками .NET Core
• Языковая интеграция
• Обширная библиотека базовых классов
• Упрощенная модель развертывания
• Всесторонняя поддержка командной строки

5.

Что привносит язык C#
• Поскольку C# — гибрид из
нескольких языков, он
является таким же
синтаксически чистым, как Java
(если не чище), почти настолько
же простым, как VB, и
практически таким же мощным
и гибким, как C++. На
следующем слайде приведен
неполный перечень ключевых
особенностей языка С#, которые
характерны для всех его версий.

6.

Особенности языка C#
• Указатели необязательны. В программах на C# обычно не возникает
потребности в прямых манипуляциях указателями.
• Автоматическое управление памятью посредством сборки мусора.
• Формальные синтаксические конструкции для классов, интерфейсов,
структур, перечислений.
• Аналогичная языку C++ возможность перегрузки операций для
специальных типов без особой сложности.
• Поддержка программирования на основе атрибутов.

7.

Типы данных
• C# – строго
типизированный язык. Это
означает, что компилятор не
позволит работать с
переменной до тех пор, пока
не задан ее тип (т.е.
переменная не описана).

8.

Значимые типы. Целочисленные типы

9.

Значимые типы. Вещественные типы

10.

Значимые типы. Десятичный тип
• Тип decimal по сравнению с вещественными типами имеет высокий порядок
точности и меньший диапазон, что делает его удобным при финансовых
расчётах.

11.

Значимые типы. Логический тип
• Тип bool, как и в C++, используется для объявления логических переменных,
принимающих значения «ложь» (false) и «истина» (true). Но в отличие от C++,
в C# нет соответствия между логическими и целочисленными значениями.

12.

Значимые типы. Структуры
• Тип структуры представляет
собой тип
значения, структуры обычно
используются для
объединения небольшого
числа связанных
переменных.
public struct Book
{
public decimal price;
public string title;
public string author;
}

13.

Значимые типы. Перечисления
• Перечисления – особый тип, содержащий множество буквенных
констант, где каждая константа определяется числом (по умолчанию
нумерация начинается с нуля), и если числовое значение не указано
явно, то каждой следующей константе будет присвоен следующий
номер, увеличенный на 1.
• Например:
• enum
Colors { Red = 1, Green, Blue = 4, Yellow = 8 };

14.

Типы значений, допускающие значение
NULL
• Тип значений,
допускающий значение
NULL, или Tип?,
представляет все значения
своего базового типа
значения Tип, а также
дополнительное
значение NULL.
double? pi = 3.14;
char? letter = 'a';
int m2 = 10;
int? m = m2;
bool? flag = null;

15.

Ссылочные типы. Тип object
Тип object является псевдонимом System.Object в .NET. В
унифицированной системе типов C# все типы, стандартные и
определяемые пользователем, ссылочные типы и типы значений
напрямую или косвенно наследуются из System.Object. Переменным
типа
object
можно
назначать
значения
любого
типа.
Любой
переменной object можно назначить значение по умолчанию с помощью
литерала null.
object obj = 1;

16.

Ссылочные типы. Строковый тип
Тип
string
представляет
последовательность, состоящую из
нуля
или
более
символов
в
кодировке Юникод. string является
псевдонимом для System.String в
.NET.
string a = "hello";

17.

Ссылочные типы. Строковый тип
Над строками определены следующие
операции:
string a = "hello";
Присваивание (=);
Конкатенация или сцепление строк
(+);
Две
операции
эквивалентности (==) и (!=);
Взятие индекса ([]).
проверки
string b = "h";
b += "ello"; // b = "hello"
bool equal = (b == a); //
equal = true
char e = b[1]; // e = 'e'

18.

Ссылочные типы. Массивы
• Массив – это набор элементов,
доступ к которым осуществляется по
их индексу. Массив в языке C# – это
тип, производный от класса
System.Array, поэтому все массивы
обладают общим набором членов. В
C#, как и в C++, нумерация
элементов массива начинается с 0.
Массивы могут быть простыми и
многомерными.
int[] masInt; // определение
целочисленного массива
masInt = new int[5]; // создание
массива из 5 элементов

19.

Приведение и преобразование типов
В C# можно выполнять следующие виды преобразований:
• Неявные преобразования;
• Явные преобразования (приведения);
• Определяемые пользователем преобразования;
• Преобразования с использованием вспомогательных классов.

20.

Неявные преобразования
• Для встроенных числовых типов
неявное преобразование можно
выполнить, если сохраняемое
значение может уместиться в
переменной без усечения или
округления. При использовании
целочисленных типов это
означает, что диапазон исходного
типа является надлежащим
подмножеством диапазона для
целевого типа.
int num = 2147483647;
long bigNum = num;

21.

Явные преобразования. Приведение
• Однако если преобразование невозможно
сделать без риска потери информации,
компилятору требуется выполнить явное
преобразование, которое называется
приведением. Приведение — это способ
явного информирования компилятора о том,
что вы планируете выполнить
преобразование и что вы знаете, что потеря
данных может произойти, или приведение
может завершиться ошибкой во время
выполнения.
class Test
{
static void Main()
{
double x = 1234.7;
int a;
// Cast double to int.
a = (int)x;
System.Console.WriteLine(a);
}
}// Output: 1234

22.

Объявление переменных
Для объявления локальной переменой (например, переменной
внутри области видимости члена) необходимо указать тип данных, за
которым следует имя переменной:
• тип
имя_переменной;
int n; // целочисленная переменная n типа int
sbyte tiny; // целочисленная переменная tiny типа sbyte
double x; // вещественная переменная x типа double
short A1, A2; // целочисленные переменные A1, A2 типа short
float С_X, С_Y; // вещественные переменные С_X и С_Y типа
float

23.

Оператор присваивания
Оператором присваивания в C# является знак «=»:
имя_переменной = значение;
n = 100; // переменная n должна быть описана выше
x = 28.04; // переменная x должна быть описана выше
byte M = 12; // описание переменной и ее инициализация значением

24.

Использование внутренних типов
данных и операции new
Все
внутренние
называемый
типы
стандартный
данных
поддерживают
конструктор.
Это
так
средство
позволяет создавать переменную, используя ключевое слово
new, что автоматически устанавливает переменную в ее
стандартное значение.

25.

Использование внутренних типов
данных и операции new
Применение ключевого слова new при создании переменных базовых
типов дает более громоздкий, но синтаксически корректный код С#:
bool b = new bool(); // Устанавливается в false
int i = new int(); // Устанавливается в 0
double d = new double(); // Устанавливается в 0.0
char ch = new char(); // Устанавливается в ''
DateTime dt = new DateTime(); // Устанавливается в 1/1/0001 12:00:00
AM

26.

Структура простой программы C#
using System;// Подключение пространства имен System
namespace HelloWorld // Пространство имен
{
internal class Program // Основной класс
{
static void Main(string[] args) // Точка входа
{
Console.WriteLine("Hello World"); // Вывод строки «Hello
World»
}
}
}

27.

Ввод и вывод данных. Методы Write и
WriteLine
Для
организации
ввода
и
вывода
информации
в
консоли
используется класс Console. Методы Write и WriteLine обладают
одинаковыми возможностями. Отличие между ними лишь в том, что
второй дополнительно переводит курсор на новую строку, а первый
обязательно имеет параметр.

28.

Методы Write и WriteLine
В качестве аргументов им можно передавать строковые и
числовые данные напрямую, либо через переменные:
int number = 120;
string text = "Метод WriteLine";
Console.WriteLine(number); // Вывод: 120
Console.WriteLine(text); // Вывод: Метод WriteLine
Console.WriteLine("Число: " + number); // Вывод: Число: 120

29.

Методы Write и WriteLine
Оператор + склеивает параметры в единую текстовую строку:
byte day = 12;
string month = "июня";
int year = 2024;
Console.WriteLine("Дата: " + day + " " + month + " " + year +
"года");
// Вывод: Дата: 12 июня 2024 года

30.

Форматный вывод
С помощью форматного вывода значения можно вставлять в
определенное место строки. Для этого укажите это место фигурными
скобками и индексом элемента (индексация параметров ведется с нуля):
Console.Write("Студент: {0} Номер: {1}", "Петров", 4);
// Вывод: Студент: Петров Номер: 4
Так вместо {0} в строку будет подставлено «Петров», а вместо {1} –
число 4. (Индексация с нуля.)

31.

Форматный вывод
Этот прием можно использовать для форматного вывода вещественных
чисел:
double pi = Math.PI;
Console.WriteLine("Число: " + pi); // Вывод: Число:
3,14159265358979
Console.WriteLine("Число: {0:#.#}", pi); // Вывод: Число: 3,1
Console.WriteLine("Число: {0:#.###}", pi); // Вывод: Число: 3,142
Элемент строки вида {n, m}, где n определяет номер идентификатора из
списка аргументов, а m – количество отображаемых символов (размер поля
вывода). Значение выравнивается по правому краю.

32.

Форматный вывод
В строку также можно включать специальные форматирующие символы.
Чаще всего используют \n (переводит курсор на новую строку) и \t
(выставляет табуляцию между соседними значениями):
Console.WriteLine("\tПН\tВТ\tСР");
Console.WriteLine("1.\t+9\t+12\t+10")
;
Console.WriteLine("\n\n\n
Пятница\n Суббота");
Четверг\n

33.

Форматный вывод: управляющие
последовательности

34.

Метод ReadLine
Для ввода данных с клавиатуры используется метод ReadLine
класса Console.
Важно понимать, что C# воспринимает вводимый текст как поток
символов (т.е. типа string). Соответственно, для ввода числа необходимо
конвертировать информацию в число.
Console.WriteLine("Введите ваше имя, а
затем нажмите Enter");
string name = Console.ReadLine();
Console.WriteLine($"Привет, {name}!");

35.

Преобразование строки в число.
Методы Parse и TryParse
Для
преобразования
число
используется
string
в
вызов
метода Parse или TryParse, который
можно найти в числовых типах
(int, long, double и т. д.).
null
Строку
со
или
невозможно
проанализировать.
значением
String.Empty
успешно
string input = String.Empty;
try
{
int result = Int32.Parse(input);
Console.WriteLine(result);
}
catch (FormatException)
{
Console.WriteLine($"Unable to parse
'{input}'");
}
// Output: Unable to parse ''

36.

Преобразование строки в число.
Методы Parse и TryParse
• Можно использовать
методы Parse или TryParse в
числовом типе, который
предположительно содержит
строка, таком как
тип System.Int32.
try
{
int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
}
catch (FormatException e)
{
Console.WriteLine(e.Message);
}
// Output: -105

37.

Преобразование строки в число. Вызов
методов класса Convert
Числовой тип
decimal
float
double
short
int
long
ushort
uint
ulong
Способ
ToDecimal(String)
ToSingle(String)
ToDouble(String)
ToInt16(String)
ToInt32(String)
ToInt64(String)
ToUInt16(String)
ToUInt32(String)
ToUInt64(String)

38.

Преобразование строки в число. Вызов
методов класса Convert
В следующем примере метод
вызывает Convert.ToInt32(String) метод
для преобразования входной строки
в int. В примере перехватываются два
наиболее распространенных
исключения, создаваемых этим
методом: FormatException и OverflowExc
eption.
// ToInt32 can throw FormatException or
OverflowException.
int numVal = -1;
try
{
numVal = Convert.ToInt32(input);
}
catch (FormatException)
{
Console.WriteLine("Input string is not a
sequence of digits.");
}
catch (OverflowException)
{
Console.WriteLine("The number cannot fit
in an Int32.");
}

39.

Арифметические операции
• Сокращенные способы записи
арифметических действий:
var += expression; // var = var + expression
var -= expression; // var = var - expression
var *= expression; // var = var * expression
var /= expression; // var = var / expression
var %= expression; // var = var % expression
• Инкремент и декремент – увеличивает/уменьшает значение на единицу:
var++; // var = var + 1
var--; // var = var - 1

40.

Пример выполнения задания второй
лабораторной работы
• Составить программу для вычисления функции:
• , где b = 3 – целочисленная константа; x, y, z – переменные.

41.

Методы
класса Math
Метод
Пояснение
Abs(x)
возвращает абсолютное значение числа
Cbrt(x)
возвращает кубический корень из x
Exp(x)
возвращает e, возведенное в указанную степень x
Pow(x, y)
возвращает число x, возведенное в степень y
Sqrt(x)
возвращает квадратный корень из числа x
Cos(x)
возвращает косинус указанного угла x
Sin(x)
возвращает синус указанного угла x
Tan(x)
возвращает тангенс указанного угла x
Log2(x)
вычисляет логарифм с основанием 2 указанного числа
Log(x)
вычисляет натуральный логарифм (с основанием e)
указанного числа
Log10(x)
вычисляет логарифм с основанием 10 указанного
числа
Log(x, y)
вычисляет
основанию y
логарифм
указанного
числа
x
по
English     Русский Rules