Вы находитесь на странице: 1из 47

ВВЕДЕНИЕ

В ДИСЦИПЛИНУ
"ОСНОВЫ
ПРОГРАММИРОВАНИЯ"
Никакая деятельность не может быть прочна,
если она не имеет основы в личном интересе.
Л.Н. Толстой

Основы программирования
Содержание
2

 Цель и задачи дисциплины


 Распределение ауд. часов дисциплины
 Литература и web-ресурсы
 Обзор изучаемых тем

Основы программирования
Цель и задачи дисциплины
3

 Цель – освоение базовых понятий и терминов


программирования как науки.
 Основные задачи – приобретение компетенций в
следующих областях:
 конструкции языка программирования высокого уровня
 техника разработки программ

 основные структуры данных и алгоритмы их обработки.

Основы программирования
Компетенции
4

 Разработка программ на языке высокого уровня с


применением алгоритмов (сортировка, поиск и др.),
структур данных в соответствии с технологией
разработки программ.
 Способность и готовность к самостоятельному
освоению новых алгоритмов, структур данных и
парадигм программирования.

Основы программирования
Распределение часов дисциплины
5

32
час.

40
час.

32
час. 40
час.

1 экзамен
Основы программирования
Литература и web-ресурсы
6

 Презентации к лекциям в СДО «Электронный ЮУрГУ»


(http://edu.susu.ru)
 Миков А.И., Королев Л.Н. Информатика. Введение в
компьютерные науки. М: Высшая школа, 2003.
 Доусон М. Программируем на python. СПБ.: Питер, 2017.
 Васильев А.Н. Python на примерах. Практический курс по
программированию. СПБ.: Наука т Техника, 2017.
 Ульман Д., Хопкрофт Д., Ахо А. Структуры данных и
алгоритмы. М.: Вильямс, 2000.
 Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и
анализ. М.: МЦНМО: БИНОМ. Лаборатория знаний, 2004.
 Окулов С.М. Основы программирования. М. : Издательство
"Лаборатория знаний", 2015.

Основы программирования
Содержание дисциплины
7

 Базовые понятия программирования


 Язык программирования высокого уровня
 Техника разработки программ
 Алгоритмы
 Рекурсия
 Структуры данных

Основы программирования
Базовые понятия программирования
8

 Информация
 Что такое информация и ИТ?
 Как измеряется информация?

 Компьютер
 Из чего состоит и на основе каких принципов построен
компьютер?
 Программирование
 Это наука или ремесло?
 Кто занимается программированием?
 Какие бывают разновидности программирование?
 В чем основная проблема программирования?

Основы программирования
Язык программирования
высокого уровня
9

 Что такое язык программирования?


 Как связаны язык программирования и компьютер?
 Как классифицируют языки программирования?
 Как формально описать язык программирования?
 Из каких элементов состоит язык
программирования?
 выражения, лексемы, константы,
типы данных, операторы,
подпрограммы, библиотеки, …

Основы программирования
Алгоритмы
10

 Что такое алгоритм?


 Как формально определить алгоритм?
 Машина Тьюринга
Добавить 1 к целому числу

 Нормальные алгорифмы Маркова


Перевести бинарное число в унарное
1. |00||
2. 10|
3. 0Λ
Основы программирования
Алгорифмы Маркова
11

 Алфавит:  Исходная строка:


{ а...я, А...Я, "пробел", "точка" } Я купил кг Аов в Т М.
 Правила:  При выполнении алгоритма строка
1. А → апельсин претерпевает следующие изменения:
2. кг → килограмм 1. Я купил кг апельсинов в Т М.
3. М → магазинчике 2. Я купил килограмм апельсинов в Т М.
4. Т → том 3. Я купил килограмм апельсинов в Т
магазинчике.
5. магазинчике → ларьке
(заключительная формула) 4. Я купил килограмм апельсинов в том
магазинчике.
6. в том ларьке → на том рынке
5. Я купил килограмм апельсинов в том
ларьке.
 На этом выполнение алгоритма завершится
(так как будет достигнута формула № 5,
которую мы сделали заключительной).
Основы программирования
Алгоритм
12

 Алгоритм – точное предписание исполнителю


совершить определенную последовательность
действий для достижения поставленной цели за
конечное число шагов. Алгоритм КОРНИ;
вход вещ a, b, c;
выход вещ x1, x2;
Дано: перем вещ D;
начало
a, b, c – вещественные
D:=b*b-4*a*c;
Найти: если D<0 то
корни уравнения ax2+bx+c=0 аварвыход(“Корней нет“);
иначе
x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
конец если
конец
Основы программирования
Компьютер
13

 Компьютер – электронный вычислитель,


производящий обработку входных данных
в соответствии с закладываемыми в него
программами.

Входные данные
:
Компьютер Выходные данные
Основы программирования
Принципы Фон Неймана
14

1. Программное управление
Программа состоит из набора команд,
которые автоматически выполняются
процессором (без вмешательства
человека).
Джон фон
2. Однородность памяти
Нейман Программы и данные хранятся в одной и
(1903-1954), той же памяти.
в 1946 г.
3. Адресность памяти
Память состоит из пронумерованных
ячеек. Процессору в произвольный момент
времени доступна любая ячейка.
Основы программирования
Принципы построения компьютера
15

Память Процессор Связи


между блоками
Устройство управления
Счетчик команд
Программа Управляющие
Регистр команд

Арифметико-
логическое устройство Информационные
Регистры операндов
Данные
Сумматор

Устройство Устройство
ввода вывода
данных данных

Основы программирования
Процессор и память
16

 Функции процессора:
 обработкаданных по заданной программе путем
выполнения арифметических и логических операций;
 программное управление работой устройств компьютера

 Функции памяти:
 прием данных из других устройств;
 хранение данных;

 выдача данных по запросу в другие устройства.

Основы программирования
Регистры
17

 Регистр – специализированная ячейка для


промежуточного хранения данных.
 Сумматор – регистр АЛУ, участвующий в
выполнении каждой операции.
 Счетчик команд – регистр УУ, который хранит адрес
очередной выполняемой команды.
 Регистр команд – регистр УУ, который хранит
команду в период ее выполнения (код операции и
адреса операндов).

Основы программирования
Алгоритм работы компьютера
18

0. НАЧАЛО
1. УУ: Выбрать команду по адресу
памяти из УУ.СчетчикКоманд
Память Процессор
2. УУ: Увеличить УУ.СчетчикКоманд
Устройство управления на длину команды
Программа Счетчик команд 3. УУ: Записать команду в
УУ.РегистрКоманд
Регистр команд
4. УУ: Если команда="СТОП" то
Арифметико- перейти к шагу 10.
логическое устройство
Данные 5. УУ: Выбрать операнды по адресам
Регистры операндов
памяти из УУ.РегистрКоманд
Сумматор 6. УУ: Записать операнды в
АЛУ.РегистрыОперандов
7. АЛУ: Выполнить операцию над
Устройство Устройство
операндами
ввода вывода 8. АЛУ: Сохранить результат (в
данных данных
памяти/регистре/…)
9. Перейти к шагу 1.
10. КОНЕЦ

Основы программирования
Программа
19

 Компьютерная программа – последовательность


команд.
 Команда – описание операции, которую должен
выполнить компьютер. Команда имеет код (условное
обозначение), исходные данные (операнды) и
результат.
Загрузить 1
КОП АдрОперанд1 АдрОперанд2 АдрРезультат в ячейку
10111000 00000001 00000000 00000000 памяти с
адресом 0

Основы программирования
Программирование
20

 Программирование – процесс составления


упорядоченной последовательности действий
(программы) для компьютера.
Большая советская энциклопедия.

 Программирование – научная дисциплина,


изучающая программы для компьютеров и способы
их составления, проверки и улучшения.
Большая советская энциклопедия.

Основы программирования
Software, Hardware, Brainware
21

 Software (программные средства) – нематериальные


компоненты программирования (операционные
системы, системы программирования и др.).
 Hardware (аппаратные средства) – материальные
компоненты программирования (компьютеры,
устройства хранения информации и др.).
 Brainware (алгоритмические средства) –
алгоритмы, структуры данных, языки
программирования.

Основы программирования
Программирование: синонимы
22

 Компьютерные науки (Computer Science) изучают


структуру, общие свойства, закономерности и
методы создания, хранения, поиска, обработки и
применения информации в различных сферах
человеческой деятельности на базе компьютерной
техники.
 Информатика (англ. Informatics, фр. Informatique) –
аббревиатура от
"Информация + Автоматика"
 Вычислительные науки – рус., устар.
Основы программирования
Программирование: виды
23

 Прикладное – разработка программ для конечных


пользователей (не программистов).
 Бухгалтерские
программы, системы управления
предприятиями, игры, обучающие системы …
 Системное – разработка программ для
программистов.
 ОС и офисные пакеты, СУБД, CASE, …
 Научно-исследовательское – разработка прототипов
прикладного/системного ПО для проверки новых
алгоритмов и методов обработки данных.
Основы программирования
Программирование: люди
24

 Пользователи – потребители программ.


 Программисты – разработчики программ.
 Аналитики, спецификаторы
 Кодировщики

 Тестировщики

 Библиотекари

…

 Системные администраторы, инженеры –


обеспечивают техническую сторону разработки и
потребления программ.
Основы программирования
Программирование в малом vs
программирование в большом
25

 Программирование в малом (programming in the


small) – программирование на уровне операторов
небольшой программы, которая может быть
разработана одним человеком.
 Программирование в большом (programming in the
large) – программирование на уровне подсистем
(библиотек) большой программы, которая не может
быть разработана одним человеком.

Основы программирования
Промышленное программирование
26

 Промышленно создаваемое ПО имеет


 большое время жизни
 большое количество пользователей, зависимых от его
нормального функционирования
 большую команду разработчиков.

Основы программирования
Техника разработки программ
27

1 2 3

4 5 6

Основы программирования
Программирование:
основная проблема
28

СЛОЖНОСТЬ

Основы программирования
Сложность предметной области
29

Основы программирования
Техника разработки программ
30

Анализ и Спецификация Проектирование

Разработка Компиляция,
алгоритмов Кодирование компоновка
Реализация

Отладка Тестирование Сопровождение

Основы программирования Далее


Сложность определения
требований к программе
31

 Пользователю сложно объяснить


разработчикам, что должна делать
система (часто он сам этого не знает).
 Разработчикам сложно однозначно
зафиксировать требования пользователя.

 Изменение требований пользователя к


системе в процессе разработки.

Основы программирования Назад


Сложность управления
процессом разработки
32

 Невозможность полного понимания


одним человеком программной
системы объемом в десятки-сотни
тысяч строк.
 Сложность координации между
разработчиками.

Основы программирования Назад


Сложность поиска
и исправления ошибок
33

 Поиск и исправление ошибок – трудно


формализуемая интеллектуальная
деятельность.
 Программист подсознательно против
того, что в его программе может быть
ошибка.

Основы программирования Назад


Сложность сопровождения
34

 Устранение ошибок, обнаруженных во


время эксплуатации, модернизация
системы вследствие изменения нужд
пользователей.
 Сопровождение системы для
программиста психологически более
трудно, чем собственно разработка
системы.
 Версионирование исходных текстов:
сохранение истории изменений с
возможностью отката до любого шага.
Основы программирования Назад
Средства борьбы со сложностью
35

 Избавиться от сложности нельзя, но с


ней можно справиться!
 Технология программирования –
комплекс средств для борьбы со
сложностью
 концептуальные средства, определяющие
стиль и методы разработки программ
 организационные средства, определяющие
форму труда в команде программистов
 программные средства разработки.

Основы программирования
Алгоритмы сортировки
36

Основы программирования
Поиск (хеш-таблицы)
38

Хеш-адрес Ключ ФИО Пол Возраст


0 NULL
1 NULL
h(k1) k1 Сидоров С.С. М 45
h(k4) k4 Петров П.П. М 18
NULL

h(k2)=h(k5) ?

U
Все возможные NULL
ключи h(k3) k3 Егорова Е.Е. Ж ?
… …
m-1
Основы программирования
Рекурсия
39

 У попа была собака, он ее любил.


Она съела кусок мяса, он ее убил.
В землю закопал и на камне написал:
"У попа была собака …
"У попа была собака …
"У попа была собака …

Основы программирования
Ханойские башни
40

 Передвинуть (
диски,
пирамида-источник
пирамида-задание,
пирамида-промежуточная)
 ЕСЛИ диски > 0 ТО
Передвинуть (диски-1, источник, промежуточная, задание);
Передвинуть (диски-1, промежуточная, задание, источник );
КОН

Основы программирования
Структуры данных
41

Основы программирования
ООП: принципы
42

Основы программирования
ООП: концепции
43

Инкапсуляция

Наследование

Полиморфизм
Основы программирования
Параллельные вычисления
44

Последовательная обработка
Основы программирования
Параллельные вычисления
45

Псевдопараллельная обработка
Основы программирования
Параллельные вычисления
46

Параллельная обработка
Основы программирования
Параллельная обработка
47

 Покраска забора
 Подготовка – 30 мин.
 Покраска (одной доски) – 1 мин.

 Уборка – 30 мин.

Суперкомпьютеры и их применение
Параллельная обработка
48

 Покраска забора (300 досок)


 Подготовка – 30 мин.
НЕ распараллеливается
 Покраска (одной доски) – 1 мин.
РАСПАРАЛЛЕЛИВАЕТСЯ
 Уборка – 30 мин.
НЕ распараллеливается

Количество
Время покраски
маляров Ускорение
6,0
1 30 + 300/1 + 30 = 360
5,0
2 30 + 300/2 + 30 = 210
4,0
10 30 + 300/10 + 30 = 90
3,0
100 30 + 300/100 + 30 = 63 2,0
1000 30 + 300/1000 + 30  60 1,0

1000000 30 + 300/1000000 + 30  60 0,0



1 2 10 100 1000 1000000
Суперкомпьютеры и их применение

Вам также может понравиться