Основы алгоритмизации и программирования
Общая информация
Общая информация
Visual Studio Community
Visual Studio Community
Общая информация
Общая информация
Понятие «программирование»
Что есть программирование
Что есть программирование
Алгоритм, его свойства
Свойства алгоритма
Формы записи алгоритма
Элементы блок-схем
Пример
Псевдокод
Блок-схема
Парадигмы программирования (варианты строения языков программирования)
Характеристики языка программирования
Парадигмы программирования
Процедурные языки
Функциональные языки
Языки логического программирования
Объектно-ориентированные языки
Эволюция парадигм программирования
Лексемы языка С#
Лексемы
Выражение
Операторы
Константы
Идентификаторы (имена)
Ключевые слова C#
Знаки операций и разделители
Комментарии
Типы данных C#
Концепция типа данных
Классификация типов данных
Классификация типов данных
Хранение данных в оперативной памяти
Значащие и ссылочные типы
Хранение данных в оперативной памяти
Встроенные типы данных C#
Встроенные типы данных C#
Встроенные типы данных C#
Встроенные типы и .NET
Объявление переменных в С#
Объявление переменной в С#
Примеры объявления переменных
Общая структура программы на С#
Области видимости переменных
Ссылочные переменные
Именованные константы
Вопрос 1
2.02M
Категория: ПрограммированиеПрограммирование

Основы алгоритмизации и программирования на C#

1. Основы алгоритмизации и программирования

Панфилов Александр Эдуардович
Основы
алгоритмизации и
программирования
Понятие «программирование»,
Языки и парадигмы
программирования,
Лексемы языка С#,
Типы данных

2. Общая информация

2
Общая информация
Виды занятий и контроля по дисциплине
◼ Лекции – 1 пара в 2 недели
◼ Практика – 1 пара в неделю
◼ Лабораторные работы – 3 пары в 2 недели
(~15 лаб. работ)
◼ Контрольная работа – на 1 контр. неделе
◼ Контрольный тест – на 2 контр. неделе
◼ «Семестровый контроль» = зачет

3. Общая информация

3
Общая информация
Язык программирования
(Cи шарп)
Программное обеспечение
◼ Microsoft Visual Studio 2010 или новее

4. Visual Studio Community

4
Visual Studio Community
◼ Последнее - Visual Studio Community
2022
visualstudio.microsoft.com/ru/vs/
◼ Старые версии Visual Studio
visualstudio.microsoft.com/ru/vs/olderdownloads

5. Visual Studio Community

5
Visual 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;
English     Русский Правила