Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Основы алгоритмизации и программирования на Python

Покупка
Основная коллекция
Артикул: 650404.05.01
К покупке доступен более свежий выпуск Перейти
В учебном пособии рассмотрены основы алгоритмизации и программирования на языке Python. Содержится описание такого материала, как работа линейных, разветвляющихся и циклических структур, обработка списков, кортежей и вложенных последовательностей, создание модулей. Приведены примеры создания объектно-ориентированных и событийно-ориентированных программ. Кроме того, рассмотрены методы работы со строками, функциями, файлами. В конце каждой главы содержится набор контрольных вопросов и упражнений, задач для самостоятельного решения. В приложении приведены варианты к лабораторным работам по темам, изложенным в учебном пособии. Содержание книги будет полезно студентам и преподавателям высших и средних специальных учебных заведений, школьникам при подготовке к Единому государственному экзамену по дисциплине «Информатика и ИКТ».
291
Гуриков, С. Р. Основы алгоритмизации и программирования на Python : учебное пособие / С.Р. Гуриков. — Москва : ФОРУМ : ИНФРА-М, 2020. — 343 с. — (Высшее образование: Бакалавриат). - ISBN 978-5-00091-487-8. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1206074 (дата обращения: 19.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
ОСНОВЫ 

АЛГОРИТМИЗАЦИИ 

И ПРОГРАММИРОВАНИЯ 

НА PYTHON

С.Р. Гуриков

Учебное пособие

Москва                                        2020

ИНФРА-М

Рекомендовано в качестве учебного пособия для студентов 

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

09.03.01 «Информатика и вычислительная техника»,
09.03.02 «Информационные системы и технологии» 

(квалификация (степень) «бакалавр»)

УДК 004.43(075.8)
ББК 32.973.1-018я73
 
Г95

Гуриков С.Р.

Г95 
 
Основы алгоритмизации и программирования на Python : учебное  пособие / С.Р. Гури
ков. — Москва : ФОРУМ : ИНФРА-М, 2020. — 343 с. — (Высшее образование: Бакалавриат).

ISBN 978-5-00091-487-8 (ФОРУМ)
ISBN 978-5-16-013349-2 (ИНФРА-М, print)
ISBN 978-5-16-102278-8 (ИНФРА-М, online)

В учебном пособии рассмотрены основы алгоритмизации и программирования на язы
ке Python. Содержится описание такого материала, как работа линейных, разветвляющихся 
и циклических структур, обработка списков, кортежей и вложенных последовательностей, 
создание модулей. Приведены примеры создания объектно-ориентированных и событийноориентированных программ. Кроме того, рассмотрены методы работы со строками, функциями, файлами.

В конце каждой главы содержится набор контрольных вопросов и упражнений, задач для 

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

Содержание книги будет полезно студентам и преподавателям высших и средних специ
альных учебных заведений, школьникам при подготовке к Единому государственному экзамену по дисциплине «Информатика и ИКТ».

УДК 004.43(075.8)

ББК 32.973.1-018я73

Р е ц е н з е н т:

В.Н. Шакин — кандидат технических наук, доцент, заведующий кафедрой «Информа
тика», декан общетехнического факультета (ОТФ2) Московского технического университета связи и информатики

ISBN 978-5-00091-487-8 (ФОРУМ)
ISBN 978-5-16-013349-2 (ИНФРА-М, print)
ISBN 978-5-16-102278-8 (ИНФРА-М, online)

© Гуриков С.Р., 2016
© ФОРУМ, 2016

ВВЕДЕНИЕ 

В условиях глобальных информационных процессов, решения социальноэкономических проблем актуализируется важность информатизации образования. 
На сегодняшний день почти все учебные заведения обладают новейшим компьютерным оборудованием, подключенным к сети Интернет. 
Однако известно, что мало иметь современный персональный компьютер, 
нужно также позаботиться и об установке программного обеспечения. Не секрет, что лицензионные программы стоят немалых денег, которые не всегда есть 
в бюджете того или иного учебного заведения. В частности, по этой причине 
компания Microsoft разработала ряд программ лицензирования программных 
продуктов специально для учебных заведений, например, Microsoft Academic 
Open License – для высших учебных заведений и учебных заведений среднего и 
среднего специального образования, а также Microsoft School Agreement – для 
начальных и средних учебных заведений. 
Вместе с очевидными достоинствами такого подхода имеется и существенный недостаток – формирование зависимости начинающих пользователей от 
того или иного программного продукта. В результате после окончания учебного 
заведения вчерашние школьники или студенты задумываются о приобретении 
необходимых им программ уже на коммерческой основе. 
Следует отметить, что в учебных заведениях всех уровней можно использовать 
и преподавать свободные программные продукты, потому что только с их помощью можно реализовать право человека на распространение, усовершенствование 
и изучение используемых им программ. 
Рынок программного обеспечения сегодня крайне изменчив и нестабилен, но, 
тем не менее, он находится в непрерывном развитии, и многие технологии обучения, в частности программированию, уже безвозвратно устарели. Ярким примером этого является обучение в средах Turbo Pascal и QBasic. Эти две программы, активно использующиеся в настоящее время в школьных курсах, уже не 
соответствуют уровню развития современных сред разработки. Более того, в них 
не поддерживаются принципы объектно-ориентированного подхода, а ведь 
именно на нем основаны методики разработки большинства современного программного обеспечения. 
Отличным решением, с точки зрения преподавания основ программирования 
и алгоритмизации школьникам и студентам, может стать изучение языка Python, 
который относится к категории свободно распространяемого программного 
обеспечения. Следует отметить, что разработчики контрольно-измерительных 
материалов Единого государственного экзамена по дисциплине «Информатика и 
ИКТ» уже включили в задания по программированию примеры кодов на этом 
языке. 
Python – современный, активно развивающийся язык программирования, который привлекает разработчиков всего мира. Он используется во многих круп
ных компаниях, таких как Google, IBM, Microsoft, Red Hat, Yahoo! и др. Это бесплатная система с открытым кодом, поддерживающая динамическую типизацию 
(не надо заранее объявлять переменные), объектно-ориентированное программирование, интеграцию с другими языками, такими как C, C++, Java, обладает 
кроссплатформенностью (независимостью от той или иной операционной системы) и многими другими достоинствами. 
Тем не менее, проведенный анализ литературы по языку программирования 
Python, имеющейся на рынке книгопечатной продукции, показал, что ее содержание практически не отвечает целям совместной работы студента и преподавателя в конкретном учебном заведении и на конкретном занятии. В основном 
книги по программированию на Python имеют характер справочных изданий 
либо вовлекают читателя в написание игровых моментов. Вероятно, подобное 
изложение представляет интерес для начинающего, но при этом рабочие программы дисциплин, связанных с обучением программированию, подразумевают 
совершенно иной алгоритм знакомства с языком. 
Таким образом, главная цель настоящего издания – обеспечить прочное и сознательное освоение основ алгоритмизации и программирования, формирование практических умений – профессиональных, учебных, интеллектуальных, необходимых 
школьнику или студенту. Помимо приобретения чисто практических умений, ценных с точки зрения освоения компьютерной грамотности, ребята получат наглядное 
представление о возможностях, предоставляемых компьютером человеку, выработают при решении поставленных задач такие профессионально значимые качества, 
как самостоятельность, ответственность, точность, творческая инициатива. 
Учебное пособие построено так, что непосредственно к программированию 
читатель приступает с самого начала – первая программа описывается уже во 
второй главе (в первой главе приводятся теоретические основы алгоритмизации 
и программирования). 
Во второй главе описан процесс создания проекта на Python, рассказано о 
методах ввода и вывода данных, способах обработки исключительных ситуаций, 
возникающих в ходе выполнения программ. 
В третьей, четвертой и пятой главах подробно рассматриваются операторы, относящиеся к трем «китам» программирования – линейному, разветвляющемуся и циклическому алгоритмам. 
В шестой главе изложен процесс работы с кортежами (последовательность 
данных, не позволяющая изменять свои значения) и списками (являются изменяемыми последовательностями), а также работа со словарями (структурами 
данных). 
Материал седьмой главы даст представление о работе со строками, познакомит с функциями и методами работы с ними, базовыми алгоритмами их обработки. 
В восьмой главе объясняется работа со вложенными последовательностями, 
рассматриваются «классические» способы их обработки. 
В девятой главе речь пойдет о создании пользовательских функций, технике 
написания и импортирования собственных модулей. 

Десятая глава содержит информацию о работе с файлами, умение работать с 
которыми – необходимая компетенция человека, постигающего азы программирования. 
Одиннадцатая и двенадцатая главы посвящены объектно-ориентированному 
и событийно-ориентированному программированию. Читатель получит представление о создании таких объектов, как классы, научится писать методы, расширяющие функциональность классов, а также создавать новые классы на основе уже существующих. Кроме того, знакомство с программированием виджетов 
позволит приобрести навыки создания Windows-приложений на языке Python. 
В книге приведено около 200 листингов программ, снабженных комментариями. Для удобства их чтения полужирным шрифтом выделены основные 
программные конструкции, функции и методы языка Python. При наборе на 
компьютере программ, приведенных в учебном пособии, следует учитывать, что 
в Python отступы (четыре пробела или нажатие клавиши Tab) являются частью 
синтаксиса программных конструкций. 
Материал, изложенный в пособии, особенно будет полезен школьникам при 
подготовке к ЕГЭ по дисциплине «Информатика и ИКТ», студентам, обучающимся на технических специальностях техникумов, колледжей и вузов. Апробация учебного пособия показала, что учащиеся, не имеющие подготовки в области программирования, не только успешно осваивают представленные в пособии 
приложения, но и вносят свои очень интересные изменения, направленные на 
улучшение их работы. 
Преподаватели могут оценить учебное пособие с точки зрения методики преподавания. Многие программы специально написаны таким образом, чтобы 
учащиеся имели возможность доработать или оптимизировать их код, что поможет педагогу создать творческую атмосферу на занятиях. Практически к каждому из разделов приведены примеры решения задач, упражнения, задачи для 
самостоятельного решения, контрольные вопросы, позволяющие оценить уровень подготовки школьника или студента. 
Следует отметить, что учебное пособие не может претендовать на функциональную полноту или на полную оригинальность приведенных методов, алгоритмов и программ. Автор преследовал иную цель: привлечь внимание школьников, студентов и преподавателей к такому активно развивающемуся языку 
программирования, как Python, дать почувствовать его преимущественные отличия от других языков. Python доступен для свободного скачивания по адресу 
http://www.python.org/. 
Материал предлагаемого учебного пособия был подготовлен автором на основе многолетнего опыта преподавания курса алгоритмизации и программирования школьникам, студентам среднего и высшего профессионального образования, написания книг по программированию в различных средах. 
 

 

 

1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ  
АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ 

Прежде всего хочется отметить, что первая глава учебного пособия носит оз
накомительный характер: здесь представлены теоретические основы алгоритмизации и программирования. Ее чтение подготовленному читателю можно пропустить, а начинающему лучше ее внимательно изучить. Тем не менее, стоит
упомянуть, что в тексте будут приводиться примеры различных функций (термин «функция» уже может быть непонятен читателю), результаты их работы, 
терминологические названия (списки, кортежи и пр.), однако написанное может
не объясняться в деталях. 

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

1.1. Алгоритм. Свойства алгоритма. 
Способы описания алгоритма 

Если мы хотим написать программу на каком-либо языке программирования, то

сначала нам следует составить алгоритм решения задачи. 

Алгоритм – это точное и простое описание последовательности действий для

решения данной задачи. Алгоритм содержит несколько шагов, которые должны
выполняться в определенной последовательности. Каждый шаг алгоритма может
состоять из одной или нескольких простых операций. 

Каждый из нас ежедневно использует различные алгоритмы: инструкции, 

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

1. Достать ключ. 
2. Вставить ключ в замочную скважину. 
3. Повернуть ключ два раза против часовой стрелки. 
4. Вынуть ключ. 
Представим, что мы поменяли местами второе и третье действия. Мы сможем

выполнить и этот алгоритм, но дверь не откроется, т. е. алгоритм станет невыполнимым. 

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

выполняются. Понятие алгоритма в информатике является фундаментальным. 

е

Таким же, какими являются понятия точки, прямой и плоскости в геометрии, 
вещества в химии, пространства и времени в физике и т. д. 
Свойства алгоритма: 
 
дискретность (прерывность, раздельность) – алгоритм должен представлять 
процесс решения задачи как последовательное выполнение простых шагов 
(этапов); 
 
определенность – каждый шаг алгоритма должен быть четким и однозначным. Выполнение алгоритма носит механический характер и не требует никаких дополнительных сведений о решаемой задаче; 
 
результативность – алгоритм должен приводить к решению задачи за конечное число шагов; 
 
массовость – алгоритм решения разрабатывается в общем виде, т. е. он должен быть применим для решения некоторого класса задач, различающихся 
лишь исходными данными. 
Способы описания алгоритмов 
 
словесный; 
 
графический; 
 
табличный; 
 
формульный. 
1. Словесный способ каждый из нас использует ежедневно, пересказывая собеседнику, например, различные инструкции, правила, кулинарные рецепты, т. 
е. какую-то последовательность, приводящую к конечному результату. 
2. Графический способ представления алгоритмов является более компактным 
и наглядным по сравнению со словесным. Как часто для лучшего понимания 
той или иной ситуации нам проще начертить какую-то схему, план, согласно 
которым мы будем действовать. В программировании данный способ предпочтителен, поскольку позволяет с помощью последовательности функциональных блоков, каждый из которых соответствует выполнению одного или 
нескольких действий, представить ход решения той или иной задачи. Такое 
представление алгоритма называется структурной схемой алгоритма, или 
блок-схемой.  
3. Табличный способ используется, например, в бухгалтерии при составлении 
ежегодных отчетов, сводок и т. д. 
4. Формульный способ находит свое применение при решении задач из области математики, физики и т. д. Например, при решении квадратного уравнения мы приступаем к нахождению дискриминанта уравнения, а затем, в зависимости от полученного результата, находим корни уравнения по известным всем формулам. 

1.2. Назначение функциональных блоков 

На условные обозначения в схемах алгоритмов, программ, данных и систем 
распространяется ГОСТ 19.701—90. «ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения». При отрисовке 

блок-схем мы будем использовать функциональные блоки, представленные ниже. Заметим, что некоторые их названия или отрисовка не всегда совпадают с 
указанными в ГОСТ, поэтому при создании схем алгоритмов для курсовых, дипломных работ, безусловно, следует обратиться к существующему стандарту. 

Начало и конец алгоритма 

 

 

Вычислительная операция 

 

Ввод/вывод данных 

 

 

 

Проверка условия  
(логического выражения) 

 

 

Начало циклического алгоритма 

 

 

Разрыв соединительных линий 
на странице 

Вызов пользовательской функции 

 

 

Линии потоков 

 

Комментарий 

 

 

 

Вывод на печать 

 

1.3. Основные этапы решения задач 

Процесс решения некоторой задачи в среде программирования, как правило, 
состоит из нескольких этапов, часть из которых выполняется пользователем, а 
часть – компьютером. 
1-й этап. Общая постановка задачи. 
На этом этапе описывается содержание задачи, составляется перечень исходных данных. 
2-й этап. Разработка математической модели. 
Цель этого этапа состоит в установлении формализованных связей между исходными данными и искомыми результатами. Этап заключается в записи расчетных формул или функциональных зависимостей. 

3-й этап. Разработка алгоритма. 
Этап состоит в описании последовательности действий, в результате которых 
может быть получено решение задачи. 
4-й этап. Разработка программы. 
Программа составляется в полном соответствии с разработанным алгоритмом 
решения задачи. 
5-й этап. Отладка программы. 
Процесс поиска ошибок в программе и их устранение. 
6-й этап. Анализ результатов. 
Позволяет принять решение о необходимости внесения изменений в программу, проведении дополнительных расчетов или их окончании. 

1.4. Алфавит языка Python 

Изучение любого языка начинается с изучения алфавита, из букв складываются слова, из слов – предложения. То же происходит и при изучении языка 
программирования. Сначала мы должны уяснить, какие символы можно использовать для записи слов языка, из которых можно формировать определенные 
конструкции. Итак, в алфавит языка Python входят: 
1. Латинские буквы от  a  до  z  и  от  A  до  Z. 
В Python есть различия между прописными и строчными буквами алфавита, 
например, chislo, CHISLO, Chislo – разные имена переменных. 
2. Цифры от 0 до 9. 
3. Специальные символы, например   +,   -,   *,   /. 
4. Зарезервированные (служебные) слова: for, if, class, def и т. д. 

1.5. Идентификаторы и общие правила их написания 

Для того чтобы программа решения задачи обладала свойством массовости, следует употреблять не конкретные значения величин, а использовать их 
обозначения для возможности изменения по ходу выполнения программы их 
значений. Для обозначения в программе переменных и постоянных величин используются имена – идентификаторы (identification – установление соответствия объекта некоторому набору символов). 
Программа на Python представляет собой последовательность инструкций, которые называются операторами. Необходимо учитывать, следующее: 
 в идентификатор не могут входить пробелы, специальные символы алфавита; 
 идентификатор начинается только с буквы или со знака подчеркивания; 
 идентификатор может состоять из букв, цифр и знака подчеркивания; 
 при написании идентификаторов можно использовать как прописные, так 
и строчные буквы латинского алфавита; 
 идентификатор не должен являться зарезервированным словом. 
Например: 

summa1 
правильно 
2delta 
ошибка 
Block_35 
правильно 
Nomer.doma 
ошибка 
Сумма 
ошибка 

1.6. Оператор присваивания 

Действия, выполняемые компьютером в процессе решения задачи, записываются в виде операторов алгоритмического языка. Изменение значения переменной осуществляется оператором присваивания. Присваивание в Python 
означает связывание значения с некоторым именем переменной.  
Действие, выполняемое этим оператором, обозначается знаком «=».  
Слева от этого знака записывается имя той переменной, которой нужно присвоить новое значение (например, x=). Справа может быть: 
1. Число, например x=5. 
Прокомментируем предложение, выделенное выше полужирным шрифтом. 
Дело в том, что при выполнении оператора x=5 в оперативной памяти по некоторому адресу будет создан объект, получивший значение 5. Затем будет создана переменная x, которой будет присвоен адрес этого объекта. Такой механизм 
занесения значений в ячейки памяти отличает Python от других языков программирования. Однако в дальнейшем при объяснении материала, связанного с операторами присваивания, мы будем использовать упрощенный вариант и выражаться так: «в ячейку x заносится число 5». 
2. Выражение, например, арифметическое x=(3*a)/2 или логическое  
x=a>1. 
3. Другая переменная, например x=a. 
Операторы выполняются в той последовательности, в которой они записаны 
в программе. Например, фрагмент программы нахождения среднего арифметического включает операторы: 
a=5 
b=10 
s=a+b 
v=s/2 
Возможна запись оператора присваивания в следующем виде: 
*= оператор – умножение с присваиванием, например, x*=5 идентичен оператору x=x*5. 
/= оператор – деление с присваиванием, например, x/=5 идентичен оператору 
x=x/5. 
%= оператор – остаток от деления с присваиванием, например, x%=5 идентичен оператору x=x%5. 
+= оператор – сложение с присваиванием, например, x+=5 идентичен оператору x=x+5. 
-= оператор – вычитание с присваиванием, например, x-=5 идентичен оператору x=x-5. 

К покупке доступен более свежий выпуск Перейти