Similar presentations:
Основы алгоритмизации и программирования на C#
1. Основы алгоритмизации и программирования
Панфилов Александр ЭдуардовичОсновы
алгоритмизации и
программирования
Понятие «программирование»,
Языки и парадигмы
программирования,
Лексемы языка С#,
Типы данных
2. Общая информация
2Общая информация
Виды занятий и контроля по дисциплине
◼ Лекции – 1 пара в 2 недели
◼ Практика – 1 пара в неделю
◼ Лабораторные работы – 3 пары в 2 недели
(~15 лаб. работ)
◼ Контрольная работа – на 1 контр. неделе
◼ Контрольный тест – на 2 контр. неделе
◼ «Семестровый контроль» = зачет
3. Общая информация
3Общая информация
Язык программирования
(Cи шарп)
Программное обеспечение
◼ Microsoft Visual Studio 2010 или новее
4. Visual Studio Community
4Visual Studio Community
◼ Последнее - Visual Studio Community
2022
visualstudio.microsoft.com/ru/vs/
◼ Старые версии Visual Studio
visualstudio.microsoft.com/ru/vs/olderdownloads
5. Visual Studio Community
5Visual Studio Community
◼ При установке - обязательный пакет:
6. Общая информация
6Общая информация
Рекомендуемая литература
◼ Павловская Т.А. С#. Программирование на
языке высокого уровня, 2020
◼ Троелсен Э. Язык программирования С# 7 и
платформы .NET и .NET Core, 2020
◼ Полное руководство по языку
программирования С# 10 и платформе .NET 6,
https://metanit.com/sharp/tutorial
7. Общая информация
7Общая информация
Задачи дисциплины:
1. Изучение основ языка С#;
2. Получение представления об основных
методах и средствах разработки
алгоритмов и программ;
3. Получение знаний о приемах
структурного и объектноориентированного программирования.
8. Понятие «программирование»
8Понятие
«программирование»
9. Что есть программирование
9Что есть программирование
Решение любой задачи:
◼ Что дано или известно – это исходные данные;
◼ Что именно предстоит получить или подсчитать
– это результат;
◼ Что нужно сделать, в каком порядке, чтобы
получить результат – это алгоритм.
◼ Можем ли мы получить результат
самостоятельно или нам потребуется чья-то
помощь – это вопрос о средствах достижения
результата.
◼ Пример: корни квадратного уравнения
10. Что есть программирование
10Что есть программирование
◼ Исполнитель задачи:
◼ Описание алгоритма решения задачи на
языке исполнителя – это и есть
программирование
11. Алгоритм, его свойства
11Алгоритм, его свойства
◼ Алгоритм – это совокупность указаний,
описывающая последовательность
действий исполнителя (ЭВМ), которые
необходимо выполнить, чтобы решить
задачу
12. Свойства алгоритма
12Свойства алгоритма
◼ Однозначность (детерминированность)
◼ Результативность (конечность)
◼ Массовость
◼ Дискретность (раздельность)
13. Формы записи алгоритма
13Формы записи алгоритма
◼ Словесное (на естественном языке)
◼ Псевдокод (условный алгоритмич. язык
с элементами естественного языка)
◼ Графическое (блок-схемы)
◼ На языке программирования
14. Элементы блок-схем
14Элементы блок-схем
Обозначения по ГОСТ 19.701 – 90
1. Терминатор
(начало/конец)
Начало
2. Процесс
(вычисление)
A=1
3. Анализ
(проверка)
да
4. Модификатор
(автоматическое
изменение)
A>5
5. Предопределенный
процесс
Sort(A)
(подпрограмма)
6. Ввод/вывод
данных
нет
7. Комментарий
Ввод
A
Условие (1)
i:=1,k
8. Соединитель
A
15. Пример
15Пример
Написать алгоритм «Одеться по погоде»:
◼ Если на улице температура ниже 0, то
необходимо надеть шубу, иначе – куртку
16. Псевдокод
16Псевдокод
НАЧАЛО
Померить температуру на улице
ЕСЛИ температура < 0 ТО
надеть шубу
ИНАЧЕ
надеть куртку
КОНЕЦ
17. Блок-схема
17Блок-схема
◼ (сами)
18. Парадигмы программирования (варианты строения языков программирования)
18Парадигмы
программирования
(варианты строения
языков программирования)
19. Характеристики языка программирования
19Характеристики языка
программирования
◼ Синтаксис языка описывает систему
правил написания различных языковых
конструкций: допустимые ключевые слова,
порядок их использования, знаки
операций, правила записи операторов и
т.п.
◼ Семантика языка программирования
определяет смысл всех этих конструкций.
20. Парадигмы программирования
20Парадигмы программирования
◼ Процедурные языки (императивные),
представляют собой последовательность
выполняемых операторов.
◼ Функциональные языки (аппликативные ), в
основу которых положен функциональный подход.
◼ Языки логического программирования
(декларативные) основанные на системе правил
◼ Объектно-ориентированные языки, основанные
на построении объектов как набора данных и
операций над ними
21. Процедурные языки
21Процедурные языки
◼ Если рассматривать состояние ПК как
состояние ячеек памяти, то процедурный
язык – это последовательность
операторов, изменяющих значение одной
или нескольких ячеек.
◼ Код программы на процедурном языке
может быть записан следующим образом:
Действие 1;
Действие 2;
Действие 3; …
22. Функциональные языки
22Функциональные языки
◼ Язык рассматривается с точки зрения описания
функции (алгоритма), необходимой для
перевода памяти ПК из одного состояния в
другое.
◼ Программа представляет собой набор
функций, применяемых к начальным данным,
позволяющий получить требуемый результат.
◼ Код программы на аппликативном языке может
быть записан следующим образом:
Функция_1(Функция_2(Функция_3(…)));
23. Языки логического программирования
23Языки логического
программирования
◼ Основываются на определении набора правил,
при выполнении которых возможно выполнение
определенных действий.
◼ Правила могут задаваться в виде утверждений
и в виде таблиц решений.
◼ Код программы на языке системы правил
может быть записан следующим образом:
Если (Условие_1) то Действие_1;
Если (Условие_2) то Действие_2;
Если (Условие_3) то Действие_3; …
24. Объектно-ориентированные языки
24Объектно-ориентированные
языки
◼ Основаны на построении объектов как
набора данных и операций над ними.
◼ Объектно-ориентированные языки
объединяют и расширяют возможности,
присущие процедурным и
функциональным языкам.
◼ К объектно-ориентированным языкам
относятся C++, Python, Java, C#.
Объект1.Действие1();
25. Эволюция парадигм программирования
25Эволюция парадигм
программирования
26. Лексемы языка С#
26Лексемы языка С#
27. Лексемы
27Лексемы
◼ Лексема
- минимальная единица языка,
имеющая самостоятельный смысл
Виды лексем:
◼ Константы:
2
3.14 "Ваня"
◼ Идентификаторы:
x
Result
_12
◼ Ключевые слова:
if
int
return
◼ Знаки операций:
+
>=
+=
◼ Разделители:
;
[ ]
,
Из лексем составляют выражения и операторы
28. Выражение
28Выражение
Выражение задает правило вычисления
некоторого значения
◼a+b
◼b*b–4*a*c
◼ pi / 2
29. Операторы
29Операторы
Оператор задает законченное описание
некоторого действия, данных или элемента
программы
◼ Описания:
◼ Исполняемые:
int counter;
counter = counter+2;
30. Константы
30Константы
Тип
Примеры
Булевские
true false
Целые десятичные
8
199226
Целые 16-ричные
0xa 0x1B8
0X00FF
Символьные
'A'
'\x74' '\0' '\n'
'\uA81B'
Строковые
"Здесь был Vasia\n"
Константа null
null
Именованные константы const int с = 12;
31. Идентификаторы (имена)
31Идентификаторы (имена)
Имена даются элементам программы, к которым
требуется обращаться: переменным, типам,
константам, методам и т. д. Идентификатор
создается на этапе объявления переменной
(метода, типа и т. п.).
◼ имя должно начинаться с буквы или _
◼ имя должно содержать только буквы, знак
подчеркивания и цифры
◼ прописные и строчные буквы различаются
◼ длина имени практически не ограничена
◼ имена не должны совпадать с ключевыми
словами
32. Ключевые слова C#
32Ключевые слова C#
abstract
case
continue
double
false
foreach
interface
new
override
readonly
short
string
true
unsafe
volatile
as
base bool break
byte
catch char checked
class const
decimal
default
delegate
do
else enum event explicit
extern
finally
fixed float
for
goto if
implicit
in
int
internal
is
lock long namespace
null
object
operator
out
params private
protected
public
ref
return sbyte
sealed
sizeof
stackalloc static
struct
switch
this throw
try
typeof
uint ulong unchecked
ushort
using
virtual void
while
33. Знаки операций и разделители
33Знаки операций и разделители
{
;
!
||
*=
=>
}
+
~
<<
/=
?
[
=
>>
%=
]
*
<
==
&=
(
/
>
!=
|=
)
%
?:
<=
^=
.
,
:
&
|
^
++ -&&
>= += -=
<<= >>= ->
34. Комментарии
34Комментарии
Вид
Примеры
Однострочный
// текст
Многострочный
/* текст
еще текст
*/
Документирующий
/// описание
35. Типы данных C#
35Типы данных C#
36. Концепция типа данных
36Концепция типа данных
Тип данных определяет:
◼ внутреннее представление данных
◼ множество их возможных значений
◼ допустимые действия над данными
(операции и функции)
37. Классификация типов данных
37Классификация типов данных
Типы языка
C#
Встроенные
Описываемые
разработчиком
38. Классификация типов данных
38Классификация типов данных
39. Хранение данных в оперативной памяти
39Хранение данных в оперативной
памяти
Для хранения данных используются два участка
оперативной памяти, которые называются
стеком (stack) и кучей (heap)
40. Значащие и ссылочные типы
40Значащие и ссылочные типы
◼ Переменные значащих типов (типы-значений,
value types), хранят свои значения
непосредственно
◼ Переменные ссылочного типа (reference types)
хранят не сами данные, а ссылку на них (адрес,
по которому расположены данные). Сами
«Куча»
данные хранятся
в «куче» (свободной памяти)
Значение
Значение
Стек
Значение
Х
Ссылка
Ссылка
Ссылка
a
b
c
41. Хранение данных в оперативной памяти
41Хранение данных в оперативной
памяти
42. Встроенные типы данных C#
42Встроенные типы данных C#
◼ Булевский
◼ Целые
◼ Вещественные
◼ Финансовый
◼ Символьный
◼ Строковый
◼ object
43. Встроенные типы данных C#
43Встроенные типы данных C#
Название
Ключевое
слово
Булевский bool
Целые
Диапазон
значений
Размер в
битах
true, false
sbyte
-128 — 127
8
byte
0 — 255
8
short
–32768 — 32767
16
ushort
16
int
0 — 65535
≈(–2•109 — 2•109)
uint
≈(0 — 4•109)
32
long
≈(–9•1018 — 9•1018)
64
ulong
≈(0— 18•1018)
64
32
44. Встроенные типы данных C#
44Встроенные типы данных C#
Название
Символьный
Вещественные
Финансовый
Строковый
Ключевое
слово
char
Диапазон
значений
Описание Размер
в битах
символ
U0000 — Uffff
16
Unicode
float
(+-)1.5•10-45
— 3.4•1038
7 цифр
32
double
(+-) 5.0•10-324
— 1.7•10308
15-16
цифр
64
decimal
(+-) 1.0•10-28
— 7.9•1028
28-29
цифр
128
string
длина
ограничена
объемом
памяти
строка из
символов
Unicode
45. Встроенные типы и .NET
45Встроенные типы и .NET
◼ Любому встроенному типу С#
соответствует стандартный класс в
библиотеке .NET из пространства имен
System
int x;
double y;
или
или
Int32 x;
Double y;
46. Объявление переменных в С#
46Объявление
переменных в С#
47. Объявление переменной в С#
47Объявление переменной в С#
◼ Все переменные объявляются явно
◼ Формат объявления:
[модификатор] тип_данных имя_переменной;
◼ Самый популярный вариант:
тип_данных имя_переменной;
◼ Объявления могут располагаться почти в любом
месте исходного кода
◼ Одно объявление может вводить несколько имён
◼ Место объявления переменной определяет
область видимости, то есть тот участок программы,
в котором эту переменную можно использовать
48. Примеры объявления переменных
48Примеры объявления переменных
int x; //объявление
int x = 5 * 12; //c инициализацией
double x = 0.1, y = 0.1;
char symbol;
int x = b * a + 25;
49. Общая структура программы на С#
49Общая структура программы на С#
поля класса
локальные переменные
Переменные, описанные
непосредственно внутри класса,
называются полями класса
Переменные, описанные внутри
метода класса, называются
локальными переменными
50. Области видимости переменных
50Области видимости переменных
class X {
int A;
// *** начало описания класса Х ***
//поле А класса Х
◼ Область видимости (действия)
void Y() { //------- метод Y класса Х
переменной - область программы, где
int C; //лок. переменная С, обл. действия - метод Y
можно
использовать
переменную.
int
A; //лок.
переменная А (НЕ
конфликтует с полем А)
{Начинается
// ========
вложенный
1 ====== и длится
в точке
ееблок
описания
D; //лок. переменная D, обл. действия – блок 1
доint
конца
блока, внутри которого она
int A; //Недопустимо! Ошибка компиляции - конфликт
описана// с локальной переменной А
C = D;
◼ }Блок//
—========
это код,
заключенный в фигурные
конец вложенного блока 1 ======
{скобки
// ======== вложенный блок 2 ======
int D; //лок. переменная D, обл. действия – блок 2
}
// ======== конец вложенного блока 2 ======
}
//------- конец метода Y класса Х
}
// *** конец описания класса Х ***
51. Ссылочные переменные
52Именованные константы
◼
◼
Вместо значений констант можно (и нужно!)
использовать в программе именованные
константы
Это облегчает читабельность программы и
внесение в нее изменений
const int a = 100;
const int b = 1;
const int x = b * a + 25;
const float x = 0.1f, y = 0.3f;
52. Именованные константы
53Вопрос 1
Необходимо создать переменную
целочисленного типа, принимающую
отрицательные значения, по модулю не
превышающие 217. Для ее объявления
можно выбрать тип данных:
1. ushort
2. sbyte
3. byte
4. long
5. int
53. Вопрос 1
54Вопрос 2
Укажите номера строк, при компиляции
которых возникнет ошибка:
1. sbyte x = -8;
2. int x = 36.6;
3. float x = 4.6;
4. long x = 123456789;
5. string s = 12;
programming