|
вы. Лекция1 (1). Лекции Предмет курса Алгоритмизация и программирование
Лекция 1. Введение. Алгоритмы.
Языки программирования. Парадигма программирования.
Алгоритмизация и программирование План лекции: 1. Предмет курса «Алгоритмизация и программирование». 2. Понятие алгоритма. Свойства алгоритмов. 3. Способы задания алгоритмов. 4. Основные алгоритмические структуры. 5. Языки программирования. Парадигма программирования. Теория алгоритмов - раздел математики, изучающий общие свойства алгоритмов. Понятие «алгоритм» сформировалось в математике в 20-х годах XX в. Началом систематической разработки теории алгоритмов можно считать 1936 г. и связывают это начало с публикацией работы А.А. Черча. Первый класс моделей основан на арифметизации алгоритмов. Алгоритм должен быть представлен так, чтобы его могла выполнять машина. Одной из таких машин явилась абстрактная машина Тьюринга. Третий класс моделей алгоритмов очень близок к предыдущему, но не оперирует конкретными машинными механизмами. Наиболее известная алгоритмическая модель этого типа нормальные алгоритмы Маркова («слон» —> «суон» —> «муон» —> «мухн» —> «муха»). Алгоритм – это совокупность действий, приводящих к достижению результата за конечное число шагов. ЗАЧЕМ: предостерегает от увлечения глобальными прожектами всеобщей алгоритмизации. (аналог - попытка создания вечного двигателя) СЛОЖНОСТЬ АЛГОРИТМА ИСПОЛНИТЕЛИ: человек, машина. Система команд исполнителя. Свойства алгоритмов: Свойства алгоритмов: Дискретность (от лат. discretus — разделенный, прерывистый) – это разбиение алгоритма на ряд отдельных законченных действий (шагов). Детерминированность (от лат. determinate — определенность, точность) - любое действие алгоритма должно быть строго и недвусмысленно определено в каждом случае. Конечность – каждое действие в отдельности и алгоритм в целом должны иметь возможность завершения. Массовость – один и тот же алгоритм можно использовать с разными исходными данными. Результативность – алгоритм должен приводить к достоверному решению. - словесная (запись на естественном языке);
- псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
- графическая (изображения из графических символов – блок-схема);
- программная (тексты на языках программирования – код программы).
Словесный способ записи алгоритма: - задать два числа, являющиеся делимым и делителем;
- проверить, равняется ли делитель нулю;
- если делитель не равен нулю, то найти частное, записать его в ответ;
- если делитель равен нулю, то в ответ записать "нет решения".
Базовые управляющие структуры псевдокода
| | Название структуры
| Псевдокод
| Присваивание
| переменная = число
| Ввод
| ввод(переменная)
| Вывод
| вывод(переменная)
вывод("фраза")
| Ветвление
| если условие
то действие1
иначе действие2
| Повторение
| пока условие
начало пока
действие
конец пока
| Псевдокод: начало вывод ("задайте делимое и делитель") ввод (делимое, делитель) если делитель ≠ 0 то частное = делимое / делитель вывод(частное) иначе вывод("нет решения") кон алг Нахождение частного двух чисел начало и конец блок-схемы блок ввода (вывода) данных блок выполнения действия блок условия блок вывода данных - линейный алгоритм,
- разветвляющийся алгоритм,
- циклический алгоритм.
y=sin x+ Различают полную и неполную формы ветвления Различают цикл «пока» и цикл «до» Пример. Составить алгоритм вычисления значений функции y=f(x) для всех значений аргумента x на интервале [a,b] с шагом h. - Императивное программирование - это парадигма программирования, которая описывает процесс вычисления в виде инструкций, изменяющих состояние данных. Подразделы императивного программирования - структурное и объектно-ориентированное.
- Декларативное программирование - это парадигма программирования, в которой вместо пошагового алгоритма решения задачи задаётся спецификация решения задачи, т. е. описывается, что собой представляет проблема и что требуется получить в качестве результата. Декларативные программы не используют понятия состояния и, в частности, не содержат переменных и операторов присваивания. К декларативной парадигме относится функциональное программирование.
Языки программирования Языки программирования Поколения языков программирования I поколение
| Машинные языки
| II поколение
| Транслируемые языки (ассемблеры)
| III поколение
| Компилируемые языки (Fortran (1958г.), Algol (1960г.), С (1970г.) и его потомки (C++, D, Vala), Pascal (1970г.) и его потомки (Delphi, FreePascal/Lazarus))
| IV поколение
| Интерпретируемые языки (MATLAB (1978г.), Perl (1987 г.), Python (1992 г.), PHP (1995 г.), Ruby (1995 г.), Javascript (1995 г.))
| V поколение
| Языки виртуальных машин (Java, C#) (байт-коды)
| Вопросы для закрепления 1. Что такое алгоритм? 2. В чем состоит задача алгоритмизации? 3. Какими свойствами обладает алгоритм? 4. Какие виды алгоритма бывают? 5. Что мы понимаем под парадигмой программирования? Какие парадигмы Вы знаете? Упражнения - Составьте алгоритмы по походу в магазин за яблоками. Используйте линейный и разветвляющийся алгоритмы. Реализуйте их словесно.
- Составьте алгоритм по нахождению корней квадратного уравнения через дискриминант. Используйте разветвляющийся алгоритм. Реализуйте его псевдокодом.
Литература - Васильев А.Н. С++ с задачами и примерами. Самоучитель. Санкт-Петербург, Наука и техника, 2012
- Шилдт Г.. Самоучитель C++. - Санкт-Петербург, Изд. BHV, 2010.
- Павловская, Т.А. С/С++. Программирование на языке высокого уровня для магистров и бакалавров [Текст]: Учебник / Т.А. Павловская; Стандарт третьего поколения. - СПб.: Питер, 2012. - 461 с.: ил. - (Учебник для вузов).
- Павловская, Т.А. С/С++. Программирование на языке высокого уровня: Учебник / Т. А. Павловская. - СПб.: Питер, 2013. - 461 с.: ил.
- Шевчук, Е.В. Программирование на С++ [Текст]: Учебное пособие / Е. В. Шевчук, Н. С. Кольева. - Алматы: Эверо, 2014. - 272 с.
- Страуструп Б. Язык программирования С++. 2-е допол. Изд, М., 2005
|
|
|