Слайд 1Введение в алгоритмизацию
Лекция 1
Слайд 2Вопросы
Введение в алгоритмизацию
Свойства алгоритмов
Примеры алгоритмов
Способы записи алгоритмов
Структуры алгоритма (блок-схемы)
Типы алгоритмов
решения задачи
Примеры решения задач
Контрольные вопросы
Список литературы
Слайд 3Введение в алгоритмизацию
Алгоритм - последовательность чётко определенных действий, выполнение которых ведёт
к решению задачи.
Алгоритм, записанный на языке машины, есть программа
решения задачи.
Алгоритм - это совокупность действий, приводящих к достижению результата за конечное число шагов.
Слайд 4Свойства алгоритмов
Дискретность – это разбиение алгоритма на ряд отдельных законченных
действий (шагов).
Детерминированность - любое действие алгоритма должно быть строго и
недвусмысленно определено в каждом случае.
Конечность - каждое действие в отдельности и алгоритм в целом должны иметь возможность завершения.
Массовость - один и тот же алгоритм можно использовать с разными исходными данными.
Результативность - алгоритм должен приводить к достоверному решению.
Слайд 5Примеры алгоритмов
Любой прибор, купленный в магазине, снабжается инструкцией по его
использованию. Данная инструкция и является алгоритмом для правильной эксплуатации прибора.
Каждый
шофер должен знать правила дорожного движения. Правила дорожного движения однозначно регламентируют поведение каждого участника движения. Зная эти правила, шофер должен действовать по определенному алгоритму.
Массовый выпуск автомобилей стал возможен только тогда, когда был придуман порядок сборки машины на конвейере. Определенный порядок сборки автомобилей – это набор действий, в результате которых получается автомобиль.
Слайд 6Способы записи алгоритмов
Существует несколько способов записи алгоритмов. На практике наиболее
распространены следующие формы представления алгоритмов:
словесная (запись на естественном языке);
псевдокоды (полуформализованные
описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
графическая (изображения из графических символов - блок-схема);
программная (тексты на языках программирования - код программы).
Рассмотрим подробно каждый вариант записи алгоритмов на примере следующей задачи.
Требуется найти частное двух чисел.
Слайд 7Словесный способ записи алгоритмов
Способ представляет собой описание последовательных этапов обработки
данных. Алгоритм задается в произвольном изложении на естественном языке. Ответ
при этом получает человек, который выполняет команды согласно словесной записи.
Пример словесной записи:
задать два числа, являющиеся делимым и делителем;
проверить, равняется ли делитель нулю;
если делитель не равен нулю, то найти частное, записать его в ответ;
если делитель равен нулю, то в ответ записать "нет решения".
Слайд 8Псевдокод
Псевдокод занимает промежуточное место между естественным и формальным языками. С
одной стороны, он близок к обычному естественному языку, поэтому алгоритмы
могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи.
Слайд 9Основные управляющие структуры псевдокода
Слайд 10Пример псевдокода
алг Нахождение частного двух чисел
начало
вывод ("задайте делимое и делитель")
ввод
(делимое, делитель)
если делитель ≠ 0
то частное = делимое / делитель
вывод(частное)
иначе
вывод("нет решения")
кон алг Нахождение частного двух чисел
Слайд 11Программная реализация алгоритма
Программная реализация алгоритма - это компьютерная программа, написанная
на каком-либо алгоритмическом языке программирования, например: С++, Pascal, Basic и
т.д.
Программа состоит из команд определенного языка программирования. Отметим, что одна и та же схема алгоритма может быть реализована на разных языках программирования. Ответ при этом получает ЭВМ, а не человек.
Слайд 12Графическая реализация алгоритма
Графическая реализация алгоритма представляет собой схему алгоритма. Схема
алгоритма состоит из блоков определенной формы, соединенных стрелками. Ответ при
этом получает человек, который выполняет команды согласно блок-схеме.
Схема алгоритма - это графическая реализация алгоритма.
Схема алгоритма представляет собой удобный и наглядный способ записи алгоритма.
Схема алгоритма состоит из функциональных блоков разной формы, связанных между собой стрелками.
Слайд 14Любая команда алгоритма записывается в схеме алгоритма в виде графического
элемента - блока, и дополняется словесным описанием.
Блоки в схемах
алгоритма соединяются линиями потока информации. Направление потока информации указывается стрелкой. В случае потока информации сверху вниз и слева направо стрелку ставить не обязательно. Блоки в схемах алгоритма имеют только один вход и один выход (за исключением логического блока – блока с условием).
Слайд 15Блок начала в схеме алгоритма имеет один выход и не
имеет входов.
Блок конца схемы алгоритма имеет один вход и не
имеет выходов.
Блок условия - единственный блок, имеющий два выхода, т.к. соответствует разветвляющемуся алгоритму. На одном выходе указывается «да», на другом – «нет».
Все остальные блоки имеют один вход и один выход.
Блок выполнения действия может содержать присвоение значения переменной («x = 5») или вычисление («y = x - 4»).
Слайд 16Алгоритмы решения задач
Различают три основных вида алгоритмов:
Линейный алгоритм - это
алгоритм, в котором действия выполняются однократно и строго последовательно.
Разветвляющийся алгоритм
- это алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий.
Циклический алгоритм - это алгоритм, команды которого повторяются некое количество раз подряд.
Слайд 17Линейный алгоритм
Линейный алгоритм - это алгоритм, в котором действия выполняются
однократно и строго последовательно.
Слайд 18Разветвляющийся алгоритм
Разветвляющийся алгоритм - это алгоритм, в котором в
зависимости от условия выполняется либо одна, либо другая последовательность действий.
Внутри блока условия записывается условие.
Если данное условие верно, то выполняются блоки, идущие по стрелке «да». Если условие оказывается неверным, ложным, то выполняются блоки, идущие по стрелке «нет». Разветвление заканчивается, когда обе стрелки («да» и «нет») соединяются.
Слайд 19Циклический алгоритм
Циклический алгоритм - это алгоритм, команды которого повторяются некое количество
раз подряд.
Тело цикла - это набор инструкций, предназначенный для многократного выполнения.
Итерация -
это единичное выполнение тела цикла.
Переменная цикла – это величина, изменяющаяся на каждой итерации цикла.
Каждый цикл должен содержать следующие необходимые элементы:
первоначальное задание переменной цикла,
проверку условия,
выполнение тела цикла,
изменение переменной цикла.
Слайд 20Циклический алгоритм
Циклы бывают двух видов – с предусловием и с
постусловием.
В цикле с предусловием сначала проверяется условие входа в цикл, а
затем выполняется тело цикла, если условие верно. Цикл с предусловием также может быть задан с помощью счетчика. Это удобно в тех случаях, когда точно известно количество итераций.
Слайд 21Цикл с предусловием
Сначала задается начальное значение переменной цикла, затем условие
входа в цикл, тело цикла и изменение переменной цикла. Выход
из цикла осуществляется в момент проверки условия входа в цикл, когда оно не выполняется, т.е. условие ложно.
Цикл с предусловием может ни разу не выполниться, если при первой проверке условия входа в цикл оно оказывается ложным.
Циклический алгоритм с предусловием в общем виде
Слайд 22Цикл с постусловием
В цикле с постусловием сначала выполняется тело цикла, а потом
проверяется условие.
Если условие верно, то итерация повторяется, если же
неверно, то осуществляется выход из цикла. В отличие от цикла с предусловием, любой цикл с постусловием всегда выполнится хоть раз.
Циклический алгоритм с постусловием в общем виде
Слайд 23Пример 1. Линейный алгоритм.
Даны числа a = 2, b = 7.
Вычислить сумму S и разность R чисел a и b.
Слайд 24Пример 2. Разветвляющийся алгоритм.
Даны числа a =2, b = 7. Вычислить
сумму S и разность R чисел a и b. Сравнить полученные значения S и R и указать большее из них.
Слайд 25Пример 3. Циклический алгоритм.
Даны числа a,b. Известно, что число a меняется от -10
до 10 с шагом 5, b = 7 и не изменяется. Вычислить
сумму S и разность R чисел a и b для всех значений a и b.
Слайд 29Контрольные вопросы для закрепления изученного материала
Что такое алгоритм?
В чем состоит
задача алгоритмизации?
Какими свойствами обладает алгоритм?
Какие виды алгоритма бывают?
Чем отличается цикл
с постусловием и предусловием?
Что такое схема алгоритма?
Какие типы блоков бывают?
Слайд 30Список литературы
Павловская Т.А. С/С++. Программирование на языке высокого уровня /
Т. А. Павловская. - СПб.: Питер, 2004. - 461 с.:
ил.
Павловская Т.А. С/С ++. Структурное программирование: Практикум / Т.А. Павловская, Ю.А. Щупак. СПб.: Питер, 2007. - 239 с.: ил.
Павловская Т. А., Щупак Ю. А. C++. Объектно-ориентированное программирование: Практикум. - СПб.: Питер, 2006. - 265 с: ил.
Кольцов Д.М. 100 примеров на Си. - СПб.: “Наука и техника”, 2017 - 256 с.
5 Доусон М. Изучаем С++ через программирование игр. - СПб.: “Питер”, 2016. - 352.
Седжвик Р. Фундаментальные алгоритмы на С++. Анализ/Структуры данных/Сортировка/Поиск: Пер. с англ. Роберт Седжвик. - К.: Издательство “Диасофт”, 2001. - 688с.
Сиддкхартха Р. Освой самостоятельно С++ за 21 день. - М.: SAMS, 2013. - 651 с.
Стивен, П. Язык программирования С++. Лекции и упражнения, 6-е изд. Пер. с англ. - М.: ООО "И.Д. Вильямс", 2012. - 1248 с.
Черносвитов, А. Visual C++: руководство по практическому изучению / А. Черносвитов . - CПб. : Питер, 2002. - 528 с. : ил.
Слайд 31Список литературы
Страуструп Б. Дизайн и эволюция языка С++. - М.:
ДМК, 2000. - 448 с.
Мейерс С. Эффективное использование С++. -
М.: ДМК, 2000. - 240 с.
Бадд Т. Объектно-ориентированное программирование в действии. - СПб: Питер, 1997. - 464 с.
Лаптев В.В. С ++. Объектно-ориентированное программирование: Учебное пособие.- СПб.: Питер, 2008. - 464 с.: ил.
Страуструп Б. Язык программирования С++. Режим доступа: http://8361.ru/6sem/books/Straustrup-Yazyk_programmirovaniya_c.pdf.
Керниган Б., Ритчи Д. Язык программирования Си. Режим доступа: http://cpp.com.ru/kr_cbook/index.html.
Герберт Шилдт: С++ базовый курс. Режим доступа: https://www.bsuir.by/m/12_100229_1_98220.pdf,
Богуславский А.А., Соколов С.М. Основы программирования на языке Си++. Режим доступа: http://www.ict.edu.ru/ft/004246/cpp_p1.pdf.
Линский, Е. Основы C++. Режим доступа: https://www.lektorium.tv/lecture/13373.
Конова Е. А., Поллак Г. А. Алгоритмы и программы. Язык С++: Учебное пособие. Режим доступа: https://vk.com/ doc7608079_489807856?hash=e279524206b2efd567&dl=f85cf2703018eeaa2