Язык программирования C#

Содержание

Слайд 2

Основные критерии качества программы

© Коломеец А.О. (СГУПС, Новосибирск)

надежность
возможность точно планировать производство и

Основные критерии качества программы © Коломеец А.О. (СГУПС, Новосибирск) надежность возможность точно
сопровождение

Для достижения этих целей программа должна:
иметь простую структуру
быть хорошо читаемой
быть легко модифицируемой

Слайд 3

Парадигмы программирования

© Коломеец А.О. (СГУПС, Новосибирск)

Парадигма – способ организации программы, принцип её

Парадигмы программирования © Коломеец А.О. (СГУПС, Новосибирск) Парадигма – способ организации программы,
построения. Наиболее распространёнными являются процедурная и объектно-ориентированная парадигмы. Они различаются способом декомпозиции, положенным в основу при создании программы.
Процедурная декомпозиция состоит в том, что задача, реализуемая программой, делится на подзадачи, а они, в свою очередь – на более мелкие этапы, то есть выполняется пошаговая детализация алгоритма решения задачи.
Объектно-ориентированная декомпозиция предполагает разбиение предметной области на объекты и реализацию этих объектов и их взаимосвязей в виде программы.
Кроме этого существует функциональная и логическая парадигмы.

Слайд 4

Первый взгляд на классы

© Коломеец А.О. (СГУПС, Новосибирск)

Понятие класс аналогично обыденному смыслу

Первый взгляд на классы © Коломеец А.О. (СГУПС, Новосибирск) Понятие класс аналогично
этого слова в контексте «класс членистоногих», «класс задач».
Класс является обобщенным понятием, определяющим характеристики и поведение некоторого множества конкретных объектов этого класса, называемых экземплярами класса (объектами).
Класс содержит данные, задающие свойства объектов класса, и функции (методы), определяющие их поведение.
Все классы .NET имеют одного общего предка — класс object, и организованы в единую иерархическую структуру.
Классы логически сгруппированы в так называемые пространства имен, которые служат для упорядочивания имен классов и предотвращения их конфликтов: в разных пространствах имена могут совпадать. Пространства имен могут быть вложенными.

Слайд 5

Состав языка C#

© Коломеец А.О. (СГУПС, Новосибирск)

Символы
буквы: A-Z, a-z, _, буквы нац.

Состав языка C# © Коломеец А.О. (СГУПС, Новосибирск) Символы буквы: A-Z, a-z,
алфавитов
цифры: 0-9, A-F
спец. символы: +, *, {, @ …
пробельные символы

Лексемы
константы: 2 0.11 “Вася”
имена: Vasia a _11
ключевые слова: double do if
знаки операций: + - =
разделители ; [ ] ,

Выражения
выражение – это правило вычисления значения: a + b

Операторы
исполняемые: с = а + b
описания: double a, b;

Слайд 6

Имена (идентификаторы)

© Коломеец А.О. (СГУПС, Новосибирск)

имя должно начинаться с буквы или со

Имена (идентификаторы) © Коломеец А.О. (СГУПС, Новосибирск) имя должно начинаться с буквы
знака _ ;
имя должно содержать только буквы, знак подчеркивания и цифры;
прописные и строчные буквы различаются;
длина имени практически не ограничена.
имена не должны совпадать с ключевыми словами, однако допускается: @if, @float…
в именах можно использовать управляющие последовательности Unicode

Примеры правильных имен:
Vasia, Вася, _13, \u00F2\u01DD, @while.
Примеры неправильных имен:
2late, Big gig, Б#г

Слайд 7

Нотации

© Коломеец А.О. (СГУПС, Новосибирск)

Понятные и согласованные между собой имена — основа

Нотации © Коломеец А.О. (СГУПС, Новосибирск) Понятные и согласованные между собой имена
хорошего стиля. Существует несколько нотаций — соглашений о правилах создания имен.
В C# для именования различных видов программных объектов чаще всего используются две нотации:
Нотация Паскаля - каждое слово начинается с прописной буквы:
MaxLength, MyFuzzyShooshpanchik
Camel notation - с прописной буквы начинается каждое слово, составляющее идентификатор, кроме первого:
maxLength, myFuzzyShooshpanchik

Слайд 8

Ключевые слова, знаки операций, разделители

© Коломеец А.О. (СГУПС, Новосибирск)

Ключевые слова — идентификаторы, имеющие

Ключевые слова, знаки операций, разделители © Коломеец А.О. (СГУПС, Новосибирск) Ключевые слова
специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены.
Например, для оператора множественного выборы слово switch.
Знак операции — один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются.
Например, сложение +, деление /, сложное присваивание %=.
Операции делятся на унарные (с одним операндом), бинарные (с двумя) и тернарную (с тремя).
Разделители используются для разделения или, наоборот, группирования элементов.
Примеры разделителей: скобки, точка, запятая.

Слайд 9

Ключевые слова языка С#

© Коломеец А.О. (СГУПС, Новосибирск)

abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while

Ключевые слова языка С# © Коломеец А.О. (СГУПС, Новосибирск) abstract as base

Слайд 10

Концепция типа данных

© Коломеец А.О. (СГУПС, Новосибирск)

Внутреннее представление данных –
множество их

Концепция типа данных © Коломеец А.О. (СГУПС, Новосибирск) Внутреннее представление данных –
возможных значений

Тип данных определяет:

Допустимые действия над ними –
операции и функции

Слайд 11

Различные классификации типов данных

© Коломеец А.О. (СГУПС, Новосибирск)

Различные классификации типов данных © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 12

Классификация типов данных С#

© Коломеец А.О. (СГУПС, Новосибирск)

Классификация типов данных С# © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 13

Хранение в памяти величин значимого и ссылочного типа

© Коломеец А.О. (СГУПС, Новосибирск)

Хранение в памяти величин значимого и ссылочного типа © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 14

Встроенные типы данных С#

© Коломеец А.О. (СГУПС, Новосибирск)

Встроенные типы данных С# © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 15

Встроенные типы данных С#

© Коломеец А.О. (СГУПС, Новосибирск)

Встроенные типы данных С# © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 16

Математические функции (класс Math)

© Коломеец А.О. (СГУПС, Новосибирск)

Для выполнения различных математических операций

Математические функции (класс Math) © Коломеец А.О. (СГУПС, Новосибирск) Для выполнения различных
в библиотеке классов .NET предназначен класс Math.
Содержит определение тригонометрических функций, математических операций, константы и прочее…
Пример:

Результат программы:

Слайд 17

Математические функции (класс Math)

© Коломеец А.О. (СГУПС, Новосибирск)

Математические функции (класс Math) © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 18

Математические функции (класс Math)

© Коломеец А.О. (СГУПС, Новосибирск)

Математические функции (класс Math) © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 19

Переменные

© Коломеец А.О. (СГУПС, Новосибирск)

Переменная — это величина, которая во время работы

Переменные © Коломеец А.О. (СГУПС, Новосибирск) Переменная — это величина, которая во
программы может изменять свое значение.
Все переменные, используемые в программе, должны быть описаны.
Для каждой переменной задается ее имя и тип:
Тип переменной выбирается исходя из диапазона и требуемой точности представления данных.

Слайд 20

Область действия и время жизни переменных

© Коломеец А.О. (СГУПС, Новосибирск)

Переменные описываются внутри

Область действия и время жизни переменных © Коломеец А.О. (СГУПС, Новосибирск) Переменные
какого-л. блока (класса, метода или блока внутри метода)
Блок — это код, заключенный в фигурные скобки. Основное назначение блока — группировка операторов.
Переменные, описанные непосредственно внутри класса, называются полями класса.
Переменные, описанные внутри метода класса, называются локальными переменными.
Область действия переменной - область программы, где можно использовать переменную.
Область действия переменной начинается в точке ее описания и длится до конца блока, внутри которого она описана.
Время жизни: переменные создаются при входе в их область действия (блок) и уничтожаются при выходе.

Слайд 21

Инициализация переменных

© Коломеец А.О. (СГУПС, Новосибирск)

При объявлении можно присвоить переменной начальное

Инициализация переменных © Коломеец А.О. (СГУПС, Новосибирск) При объявлении можно присвоить переменной
значение (инициализировать).
При инициализации можно использовать не только константы, но и выражения — главное, чтобы на момент описания они были вычислимыми, например:
Поля класса инициализируются «значением по умолчанию» (0 соответствующего типа).
Инициализация локальных переменных возлагается на программиста. Рекомендуется всегда инициализировать переменные при описании.

Слайд 22

Структура простейшей программы С#

© Коломеец А.О. (СГУПС, Новосибирск)

Структура простейшей программы С# © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 23

Пример описания переменных

© Коломеец А.О. (СГУПС, Новосибирск)

Пример описания переменных © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 24

Именованные константы

© Коломеец А.О. (СГУПС, Новосибирск)

Вместо значений констант можно (и нужно!) использовать

Именованные константы © Коломеец А.О. (СГУПС, Новосибирск) Вместо значений констант можно (и
в программе их имена.
Это облегчает читабельность программы и внесение в нее изменений:

Слайд 25

Выражения

© Коломеец А.О. (СГУПС, Новосибирск)

Выражение — правило вычисления значения.
В выражении участвуют операнды,

Выражения © Коломеец А.О. (СГУПС, Новосибирск) Выражение — правило вычисления значения. В
объединенные знаками операций.
Операндами выражения могут быть константы, переменные и вызовы функций.
Операции выполняются в соответствии с приоритетами.
Для изменения порядка выполнения операций используются круглые скобки.
Результатом выражения всегда является значение определенного типа, который определяется типами операндов.
Величины, участвующие в выражении, должны быть совместимых типов.

t + Math.Sin(x)/2 * x
- результат имеет вещественный тип
a <= b + 2
- результат имеет логический тип
x > 0 && y < 0
- результат имеет логический тип

Слайд 26

Приоритеты операция в С#

© Коломеец А.О. (СГУПС, Новосибирск)

Первичные (), [], ++, --,

Приоритеты операция в С# © Коломеец А.О. (СГУПС, Новосибирск) Первичные (), [],
new, …
Унарные ~, !, ++, --, -, …
Типа умножения (мультипликативные) *, /, %
Типа сложения (аддитивные) +, -
Сдвига <<, >>
Отношения и проверки типа <, >, is, …
Проверки на равенство ==, !=
Поразрядные логические &, ^, |
Условные логические &&, ||
Условная  ?:
Присваивания           =, *=, /=,…

Слайд 27

Тип результата выражения

© Коломеец А.О. (СГУПС, Новосибирск)

Если операнды, входящие в выражение, одного

Тип результата выражения © Коломеец А.О. (СГУПС, Новосибирск) Если операнды, входящие в
типа, и операция для этого типа определена, то результат выражения будет иметь тот же тип.
Если операнды разного типа и (или) операция для этого типа не определена, перед вычислениями автоматически выполняется преобразование типа по правилам, обеспечивающим приведение более коротких типов к более длинным для сохранения значимости и точности.
Автоматическое (неявное) преобразование возможно не всегда, а только если при этом не может случиться потеря значимости.
Если неявного преобразования из одного типа в другой не существует, программист может задать явное преобразование типа с помощью операции (тип)x.

Слайд 28

Неявные преобразования типов С#

© Коломеец А.О. (СГУПС, Новосибирск)

Неявные преобразования типов С# © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 29

Явные преобразования типов С#

© Коломеец А.О. (СГУПС, Новосибирск)

long b = 300;
int a

Явные преобразования типов С# © Коломеец А.О. (СГУПС, Новосибирск) long b =
= (int) b; // данные не теряются
byte d = (byte) a; // данные теряются

Слайд 30

Введение в исключения

© Коломеец А.О. (СГУПС, Новосибирск)

При вычислении выражений могут возникнуть ошибки

Введение в исключения © Коломеец А.О. (СГУПС, Новосибирск) При вычислении выражений могут
(переполнение, деление на ноль).
В C# есть механизм обработки исключительных ситуаций (исключений), который позволяет избегать аварийного завершения программы.
Если в процессе вычислений возникла ошибка, система сигнализирует об этом с помощью выбрасывания (генерирования) исключения.
Каждому типу ошибки соответствует свое исключение. Исключения являются классами, которые имеют общего предка — класс Exception, определенный в пространстве имен System.
Например, при делении на ноль будет выброшено исключение DivideByZeroException, при переполнении — исключение OverflowException.

Слайд 31

Операция инкремент

© Коломеец А.О. (СГУПС, Новосибирск)

Результат программы:

Операция инкремент © Коломеец А.О. (СГУПС, Новосибирск) Результат программы:

Слайд 32

Операция декремент

© Коломеец А.О. (СГУПС, Новосибирск)

Результат программы:

Операция декремент © Коломеец А.О. (СГУПС, Новосибирск) Результат программы:

Слайд 33

Умножение (деление)

© Коломеец А.О. (СГУПС, Новосибирск)

Операция умножения (*) возвращает результат перемножения двух

Умножение (деление) © Коломеец А.О. (СГУПС, Новосибирск) Операция умножения (*) возвращает результат
операндов.
Стандартная операция умножения определена для типов int, uint, long, ulong, float, double и decimal.
К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам. Тип результата операции равен «наибольшему» из типов операндов, но не менее int.
Если оба операнда целочисленные или типа decimal и результат операции слишком велик для представления с помощью заданного типа, генерируется исключение System.OverflowException

Слайд 34

Пример

© Коломеец А.О. (СГУПС, Новосибирск)

Результат программы:

Пример © Коломеец А.О. (СГУПС, Новосибирск) Результат программы:

Слайд 35

Операции отношения и проверки на равенство

© Коломеец А.О. (СГУПС, Новосибирск)

Операции отношения (<,

Операции отношения и проверки на равенство © Коломеец А.О. (СГУПС, Новосибирск) Операции
<=, >, >=, ==, !=) сравнивают первый операнд со вторым.
Операнды должны быть арифметического типа.
Результат операции — логического типа, равен true или false.
x == y -- true, если x равно y, иначе false
x != y -- true, если x не равно y, иначе false
x < y -- true, если x меньше y, иначе false
x > y -- true, если x больше y, иначе false
x <= y -- true, если x меньше или равно y, иначе false
x >= y -- true, если x больше или равно y, иначе false

Слайд 36

Логические операции

© Коломеец А.О. (СГУПС, Новосибирск)

Результат программы:

Логические операции © Коломеец А.О. (СГУПС, Новосибирск) Результат программы:

Слайд 37

Операция присваивания

© Коломеец А.О. (СГУПС, Новосибирск)

Присваивание – это замена старого значения переменной

Операция присваивания © Коломеец А.О. (СГУПС, Новосибирск) Присваивание – это замена старого
на новое. Старое значение стирается бесследно.
Операция может использоваться в программе как законченный оператор.
переменная = выражение
a = b + c;
x = 1;
x = x + 0.5;
Правый операнд операции присваивания должен иметь неявное преобразование к типу левого операнда, например:
вещественная переменная = целое выражение;

1

x

1+0.5

1.5

Слайд 38

Сложное присваивание в С#

© Коломеец А.О. (СГУПС, Новосибирск)

x += 0.5; соответствует x

Сложное присваивание в С# © Коломеец А.О. (СГУПС, Новосибирск) x += 0.5;
= x + 0.5;
x *= 0.5; соответствует x = x * 0.5;
a %= 3; соответствует a = a % 3;
и т.п.

Слайд 39

Ввод с консоли

© Коломеец А.О. (СГУПС, Новосибирск)
Ввод данных с клавиатуры C#:
имя_переменной=тип.Parse(Console.ReadLine());
x=int.Parse(Console.ReadLine()); //ввод

Ввод с консоли © Коломеец А.О. (СГУПС, Новосибирск) Ввод данных с клавиатуры
целого числа
y=float.Parse(Console.ReadLine()); //ввод десятичного числа
s=Console.ReadLine(); //ввод строки

Слайд 40

Ввод с консоли

© Коломеец А.О. (СГУПС, Новосибирск)

Ввод с консоли © Коломеец А.О. (СГУПС, Новосибирск)

Слайд 41

Вывод на консоль

© Коломеец А.О. (СГУПС, Новосибирск)
Вывод данных на экран C#:
Console.WriteLine(имя_переменной);
Console.WriteLine(“Вывод строки”);

Вывод на консоль © Коломеец А.О. (СГУПС, Новосибирск) Вывод данных на экран

Console.WriteLine(x); //вывод значения Х
Console.WriteLine(“Значение Х:”+x.ToString());

Слайд 42

Вывод на консоль

© Коломеец А.О. (СГУПС, Новосибирск)

Результат программы:

Вывод на консоль © Коломеец А.О. (СГУПС, Новосибирск) Результат программы:

Слайд 43

Форматированный вывод

© Коломеец А.О. (СГУПС, Новосибирск)

Результат программы:

Результат программы:

Результат программы:

Форматированный вывод © Коломеец А.О. (СГУПС, Новосибирск) Результат программы: Результат программы: Результат программы:

Слайд 44

Пример консольного приложения в С#

© Коломеец А.О. (СГУПС, Новосибирск)

Результат программы:

Пример консольного приложения в С# © Коломеец А.О. (СГУПС, Новосибирск) Результат программы:
Имя файла: Язык-программирования-C#.pptx
Количество просмотров: 18
Количество скачиваний: 0