Основы программирования Лекция 1 Бондарев Владимир Михайлович, проф.кафедры программной инженерии
Что будем изучать Алгоритмы Языки программирования Программы Виды занятий: Лекции Практические занятия Лабораторные работы Виды контроля: Контрольные работы Сдача лабораторных Экзамен
Алгоритмы Аль-Хорезми - великий математик, астроном и географ, основатель классической алгебры. Аль-Хорезми написал трактат об индо-арабских цифрах. Арабский текст был утерян. Его латинский перевод Algoritmi de numero Indorum дал происхождение математическому термину «алгоритм» (от имени Аль- Хорезми в названии книги).
Исполнители алгоритмов Синтаксис – правила написания команд, понятных исполнителю. Семантика – действия исполнителя при выполнении команд.
Примеры алгоритмов 1.Вскипятить воду 2.Бросить в чайник чай 3.Залить в чайник кипяток 4.Подождать 3 минуты 1.Ввести 2 числа. 2.Вычесть из большего числа меньшее. 3.Если разность равна нулю, напечатать большее число и остановиться. 4.Заменить большее число разностью. 5.Перейти к пункту 2.
Свойства алгоритма Не всякая последовательность команд считается алгоритмом. Алгоритм должен быть: дискретным – состоять из отдельных команд; детерминированным – команда должна выполняться однозначно; элементарным – исполнитель способен выполнить команды; конечным – число команд должно быть ограниченным; эффективным – заканчиваться за конечное время.
Языки программирования Низкоуровневые – высокоуровневые Императивные – функциональные Со сборкой мусора – без сборки мусора Для прикладного программирования – для системного п. Со статической типизацией – с динамической типизацией Универсальные – специализированные Алфавит, лексемы, выражения, предложения, тексты.
Низкоуровневые – высокоуровневые Низкоуровневые – близкие к машинному языку Высокоуровневые - близкие к естественному языку Трансляция = перевод. Компиляция и интерпретация
Императивные языки Императивные – инструкции языка последовательно изменяют состояние исполнителя, пока он не перейдет в конечное состояние. Команды: присваивание, условная команда, цикл
Функциональные языки Программа – это функция, отображающая входные данные на выходные. Набор базовых функций sum(a, b) = a + b, mul(a, b) = a * b операции над функциями f(x), g(x) => f(g(x)) Пример: sum3(a, b, c) = sum(a, sum(b, c)) Нет состояний, нет присваиваний, повторение достигается при помощи обращения функции к самой себе.
Со сборкой мусора – без сборки мусора Первые избавляют программиста от управления памятью и связанных с этим ошибок. Вторые позволяют писать более быстрые и экономичные программы.
Прикладные – системные Системное программирование – разработка операционных систем, драйверов устройств, программирование микроконтроллеров, написание некоторых библиотек, разработка поисковиков и СУБД. Прикладное программирование – все остальное.
Со статической типизацией – с динамической типизацией В первых большинство ошибок находится во время компиляции, во вторых – во время выполнения. На первых легче писать большие программы, на вторых – маленькие. Первые компилируются, вторые интерпретируются.
Программы Программа – это алгоритм, записанный на языке программирования. Исполнитель программы – компьютер. Компьютер – универсальный исполнитель, т.к. вход и выход любого исполнителя можно закодировать числами.
Классификация программ По их роли: системное – инструментальное – прикладное По архитектуре: настольное – сетевое – встроенное По праву собственности: a)проприетарное – свободное, b)открытое – закрытое
Язык Универсальный Высокоуровневый Императивный Прикладной С динамический типизацией – это…