Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмы и структуры данных. Учебное пособие
.pdf
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ
ИМ. В. Г. ШУХОВА
Р. У. Стативко
Алгоритмы и структуры данных
Утверждено ученым советом университета в качестве
учебного пособия для студентов 1-го курса очной и заочной форм обучения
направления подготовки 09.03.02 – Информационные системы и технологии
Белгород
2020

УДК 004.42(07)
ББК 32.973-018я7
С 78
Рецензенты:
Кандидат технических наук, доцент Белгородского государственного
технологического университета им. В.Г. Шухова В.А. Порхало
Кандидат технических наук, доцент Белгородского государственного
национального исследовательского университета Ю.Г. Чашин
С 78
Стативко, Р. У.
Алгоритмы и структуры данных: учеб. пособие/ Р. У. Стативко. –
Белгород: Изд-во БГТУ, 2020. – 79 с.
В учебном пособии изложен материал, способствующий прочному и сознательному
освоению основ алгоритмизации и программирования, формированию практических умений
- профессиональных, учебных, интеллектуальных, необходимых студенту согласно
соответствующим компетенциям.
Учебное пособие предназначено для студентов 1-го курса очной и заочной форм
обучения направления подготовки 09.03.02 – Информационные системы и технологии.
Данное издание публикуется в авторской редакции.
УДК 004.42(07)
ББК 32.973-018я7
Белгородский государственный
технологический университет
(БГТУ) им. В. Г. Шухова, 2020

3
Оглавление
ВВЕДЕНИЕ ..................................................................................................... 5
1. ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ. ОСНОВНЫЕ
ПОНЯТИЯ И ПОДХОДЫ ............................................................................ 8
1.1. ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ И ОСНОВНЫЕ ЭТАПЫ ЕЕ
РАЗВИТИЯ ....................................................................................................... 8
1.2. ЖИЗНЕННЫЙ ЦИКЛ И ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ ................................................................................................. 9
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 16
2. РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММЫ И МОДУЛЬНОЕ
ПРОГРАММИРОВАНИЕ ........................................................................... 16
2.1. ЦЕЛЬ МОДУЛЬНОГО ПРОГРАММИРОВАНИЯ. .......................................... 16
3. ПОСТАНОВКА И АЛГОРИТМИЗАЦИЯ ЗАДАЧ ............................. 17
3.1. ПОНЯТИЕ АЛГОРИТМА ........................................................................... 17
3.2. СПОСОБЫ ОПИСАНИЯ АЛГОРИТМОВ ..................................................... 19
3.3. СТРУКТУРНЫЕ СХЕМЫ АЛГОРИТМОВ .................................................... 23
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 27
4. ОСНОВЫ ЯЗЫКА ................................................................................... 28
4.1. АЛФАВИТ ЯЗЫКА ................................................................................... 28
4.2. СТРУКТУРА ПРОГРАММЫ....................................................................... 29
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 30
5. ТИПЫ ДАННЫХ ..................................................................................... 30
5.1. ЦЕЛЫЕ ТИПЫ ................................................................ ......................... 32
5.2. ВЕЩЕСТВЕННЫЕ ТИПЫ .......................................................................... 33
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 35
6. ЛИНЕЙНЫЕ АЛГОРИТМЫ ................................................................. 35
6.1. ОПЕРАТОР ПРИСВАИВАНИЯ ................................................................... 35
6.3. ПРОСТЕЙШИЙ ВВОД И ВЫВОД ............................................................... 37
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 46
7. РАЗВЕТВЛЯЮЩИЕСЯ АЛГОРИТМЫ ............................................. 46
.7.1. ПРОСТОЙ УСЛОВНЫЙ ОПЕРАТОР .......................................................... 47
7.2. МНОЖЕСТВЕННОЕ ВЕТВЛЕНИЕ .............................................................. 47

4
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 48
8. ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ ......................................................... 49
8.1. ЦИКЛЫ С ПАРАМЕТРОМ ......................................................................... 49
8.2. ЦИКЛЫ С УСЛОВИЕМ ............................................................................. 50
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 51
9. ПОСЛЕДОВАТЕЛЬНОСТИ. ................................................................. 52
9.1. СТРОКИ ............................................................................................... 52
9.2. СПИСКИ .............................................................................................. 54
9.3. КОРТЕЖИ (TUPLE) ............................................................................... 59
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 59
10. ФУНКЦИЯ .............................................................................................. 60
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 69
11. ФАЙЛЫ ................................................................................................... 69
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 73
12. МОДУЛИ И ПАКЕТЫ .......................................................................... 73
12.1. ОСНОВНЫЕ ПОНЯТИЯ .......................................................................... 74
12.2. МОДУЛИ И ПАКЕТЫ В PYTHON ............................................................ 74
11.3. ПОДКЛЮЧЕНИЕ И ИСПОЛЬЗОВАНИЕ .................................................... 75
КОНТРОЛЬНЫЕ ВОПРОСЫ ............................................................................. 76
ЗАКЛЮЧЕНИЕ ............................................................................................ 77
БИБЛИОГРАФИЧЕСКИЙ СПИСОК...................................................... 78

5
ВВЕДЕНИЕ
Отличным решением с точки зрения преподавания основ
программирования и алгоритмизации студентам может стать изучение
языка Python, который относится к категории свободно
распространяемого программного обеспечения.
Python - современный, активно развивающийся язык
программирования, который привлекает разработчиков всего мира. Он
используется во многих крупных компаниях, таких как Google, IBM,
Microsoft, Red Hat, Yahoo! и др. Это бесплатная система с открытым
кодом, поддерживающая динамическую типизацию (не надо заранее
объявлять переменные), объектно-ориентированное программирование,
интеграцию с другими языками, такими как С, C++, Java, обладает
кроссплатформенностью (независимостью от той или иной операционной
системы) и многими другими достоинствами.
Тем не менее, проведенный анализ литературы по языку
программирования Python, имеющейся на рынке книгопечатной
продукции, показал, что ее содержание практически не отвечает целям
совместной работы студента и преподавателя в конкретном учебном
заведении и на конкретном занятии. В основном книги по
программированию на Python имеют характер справочных изданий либо
вовлекают читателя в написание игровых моментов. Вероятно, подобное
изложение представляет интерес для начинающего, но при этом рабочие
программы дисциплин, связанных с обучением программированию,
подразумевают совершенно иной алгоритм знакомства с языком.
Таким образом, главная цель настоящего пособия - обеспечить
прочное и сознательное освоение основ алгоритмизации и
программирования, формирование практических умений профессиональных, учебных, интеллектуальных, необходимых студенту.
Помимо приобретения чисто практических умений, ценных с точки
зрения освоения компьютерной грамотности, пользователь получит

6
наглядное представление о возможностях, предоставляемых компьютером
человеку, выработают при решении поставленных задач такие
профессионально значимые качества, как самостоятельность,
ответственность, точность, творческая инициатива.
Учебное пособие построено так, что непосредственно к
программированию пользователь приступает с самого начала - первая
программа описывается уже во второй главе (в первой главе приводятся
теоретические основы алгоритмизации и программирования).
Во второй главе описан процесс создания проекта на Python,
рассказано о методах ввода и вывода данных, способах обработки
исключительных ситуаций, возникающих в ходе выполнения программ.
В третьей, четвертой и пятой главах рассматриваются виды,
способы описания алгоритма, основы языка и типы данных.
В шестой главе изложен процесс работы с оператором присваивания
и простейший ввод и вывод.
Материал седьмой главы даст представление о работе с простым
условным оператором и множественным ветвлением.
В восьмой главе объясняется работа с циклическими алгоритмами.
В девятой главе речь пойдет о работе с последовательностями, а
именно: строки, списки, кортежи.
Десятая глава посвящена созданию пользовательских функций,
технике написания и импортирования собственных модулей.
Одиннадцатая и двенадцатая главы содержат информацию о работе
с файлами, умение работать с которыми - необходимая компетенция
человека, постигающего азы программирования, а также объектноориентированному и событийно-ориентированному программированию.
Читатель получит представление о создании таких объектов, как классы,
научится писать методы, расширяющие функциональность классов, а
также создавать новые классы на основе уже существующих.
Кроме того, знакомство с программированием виджетов позволит
приобрести навыки создания Windows-приложений на языке Python.

7
При наборе на компьютере программ, приведенных в учебном
пособии, следует учитывать, что в Python отступы (четыре пробела или
нажатие клавиши Tab) являются частью синтаксиса программных
конструкций.
Преподаватели могут оценить учебное пособие с точки зрения
методики преподавания. Многие программы специально написаны таким
образом, чтобы учащиеся имели возможность доработать или
оптимизировать их код, что поможет педагогу создать творческую
атмосферу на занятиях. Практически к каждому из разделов приведены
примеры решения задач, упражнения, задачи для самостоятельного
решения, контрольные вопросы, позволяющие оценить уровень
подготовки студента.
Следует отметить, что учебное пособие не может претендовать на
функциональную полноту или на полную оригинальность приведенных
методов, алгоритмов и программ. Автор преследовал иную цель: привлечь
внимание к такому активно развивающемуся языку программирования,
как Python, дать почувствовать его преимущественные отличия от других
языков. Python доступен для свободного скачивания по адресу
http://www.python.org/.

8
1. ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ.
ОСНОВНЫЕ ПОНЯТИЯ И ПОДХОДЫ
Программирование – сравнительно молодая и быстро развивающаяся
отрасль науки и техники. Опыт ведения реальных разработок и
совершенствования имеющихся программных и технических средств
постоянно переосмысливается, в результате чего появляются новые
методы, методологии и технологии, которые, в свою очередь, служат
основой более современных средств разработки программного
обеспечения. Исследовать процессы создания новых технологий и
определять их основные тенденции целесообразно, сопоставляя эти
технологии с уровнем развития программирования и особенностями
имеющихся в распоряжении программистов программных и аппаратных
средств.
1.1. Технология программирования и основные этапы ее
развития
Технологией программирования [1,2] называют совокупность
методов и средств, используемых в процессе разработки программного
обеспечения. Как любая другая технология, технология
программирования представляет собой набор технологических
инструкций, включающих:
указание последовательности выполнения технологических
операций;
перечисление условий, при которых выполняется та или иная
операция;
описания самих операций, где для каждой операции определены
исходные данные, результаты, а также инструкции, нормативы,
стандарты, критерии и методы оценки и т. п. (рис.1.1).
Кроме набора операций и их последовательности, технология также
определяет способ описания проектируемой системы, точнее модели,
используемой на конкретном этапе разработки.

9
Различают технологии, используемые на конкретных этапах
разработки или для решения отдельных задач этих этапов, и технологии,
охватывающие несколько этапов или весь процесс разработки. В основе
первых, как правило, лежит ограниченно применимый метод,
позволяющий решить конкретную задачу. В основе вторых обычно лежит
базовый метод или подход, определяющий совокупность методов,
используемых на разных этапах разработки, или методологию.
Рис. 1.1. Структура описания технологической операции
1.2. Жизненный цикл и этапы разработки программного
обеспечения
Жизненным циклом программного обеспечения [13] называют
период от момента появления идеи создания некоторого программного
обеспечения до момента завершения его поддержки фирмой–
разработчиком или фирмой, выполнявшей сопровождение.
Состав процессов жизненного цикла регламентируется
международным стандартом ISO/1EC 12207: 1995 «Information Technologe
– Software Life Cycle Processes» («Информационные технологии –
Методические
материалы,
инструкции,
нормативы и
стандарты, критерии
Технологичес
кая операция
Результаты в
стандартном
представлении
Исполнители,
программные и
технические средства
Исходные данные в
стандартном
представлении
(документы, рабочие
материалы,

10
Процессы жизненного цикла программного обеспечения»), ISO –
International Organization for Standardization – Международная организация
по стандартизации, ГЕС – International Electrotechnical Commission –
Международная комиссия по электротехнике.
Этот стандарт описывает структуру жизненного цикла программного
обеспечения и его процессы. Процесс жизненного цикла определяется как
совокупность взаимосвязанных действий, преобразующих некоторые
входные данные в выходные. На рис. 1.2 представлены процессы
жизненного цикла по указанному стандарту. Каждый процесс
характеризуется определенными задачами и методами их решения, а
также исходными данными и результатами. Процесс разработки
(development process) в соответствии со стандартом предусматривает
действия и задачи, выполняемые разработчиком, и охватывает работы по
созданию программного обеспечения и его компонентов в соответствии с
заданными требованиями, включая оформление проектной и
эксплуатационной документации, а также подготовку материалов,
необходимых для проверки работоспособности и соответствия качества
программных продуктов, материалов, необходимых для обучения
персонала, и т. д.
По стандарту процесс разработки включает следующие действия:
подготовительную работу – выбор модели жизненного цикла (см.
далее), стандартов, методов и средств разработки, а также составление
плана работ;
проектирование архитектуры системы – определение состава
необходимого оборудования, программного обеспечения и операций,
выполняемых обслуживающим персоналом;
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
