Содержание
Вариант 1-12, ПЯВУ, Цыганенко, ОмГТУ. 1-ый курс. Работы решенные в программе С++, 6 задач — 6 файлов в формате *.cpp
Выдержка из текста работы
Преподавание информатики в школах нашей страны фактически начиналось с преподавания программирования. В то время даже был провозглашен лозунг: «Программирование — это вторая грамотность». Заметим, что компьютеры в школах тогда практически отсутствовали. А та техника, которой оснащались школы в конце 80-х — начале 90-х годов прошлого века, практическую составляющую курса информатики все равно невольно сводила к программированию.
Одновременно с революционным развитием аппаратного и программного обеспечения и оснащением современной компьютерной техникой учебных заведений курс информатики претерпел существенные изменения. Наиболее яркая характеристика такого изменения — вымывание программирования из школьного курса информатики. Основное внимание в большинстве школ стало уделяться освоению современных информационных технологий. Эти тенденции отражены и в новом «Стандарте по информатике», в котором собственно обучению программированию отводится очень мало времени. Но, как заметил А.Г. Гейн, «…очевидно, что именно алгоритмизация с самого начала вытянула на школьную арену курс информатики и ныне во многих реально существующих курсах информатики позволяет уйти от умных, но пустоватых разговоров к конкретному делу».
Цель курса информатики — развитие алгоритмического стиля мышления как общей культуры ученика. Умение обращаться с компьютером или знание конкретных программных средств не входит непосредственные цели курса.
В современных программах принятых Министерством образования РФ предусматривается изучение следующих разделов на которые опирается наш факультативный курс:
· Алгоритмический язык. На изучение данного раздела отводится 6 часов. Данный раздел включает рассмотрение следующих тем: Правила построения и выполнения алгоритмов. Разбиение задачи на подзадачи. Использование имен для алгоритмов и объектов. Примеры записи алгоритмов на алгоритмическом языке для графических и числовых исполнителей.
· Вычислимые функции. На изучение данного раздела отводится 2 часа. В данном разделе рассматривается тема: Функции, вычисляемые алгоритмами.
Можно выставлять на участие в различных районных и краевых конкурсах.
В результате изучения информатики и ИКТ на профильном уровне ученик должен знать / понимать
· основные конструкции языка программирования;
· свойства алгоритма и основные алгоритмические конструкции;
· тезис о полноте формализации понятия алгоритма;
В рамках, отводимых «Программой» в базовом курсе информатики на алгоритмизацию и программирование, овладение даже основами программирования на современных алгоритмических языках представляется невозможным. Тем не менее, контингент школьников, у которых интерес именно к изучению, а не знакомству с программированием высок, несомненно, существует. В первую очередь, это учащиеся физико-математических классов, гимназий, лицеев и гимназических классов общеобразовательных школ. У большинства из них есть как мотивация, так и способности к освоению программирования. Учебные планы подобных образовательных учреждений, в которых на освоение информатики и информационных технологий отводится не менее часа, начиная с 5-го класса, не менее двух — с 8-го и до четырех в 10-11-х классах, также играют положительную роль. Мотивация есть и у учителя — ведь большинство современных олимпиад по информатике являются по своей сути олимпиадами по программированию, а по успехам учеников в олимпиадах зачастую судят о квалификации учителя, хотя в случае с информатикой это далеко не бесспорно. Кроме того, любовь к программированию многие учителя информатики принесли из своей профессиональной деятельности, и, конечно же, им хочется передать эту любовь и своим ученикам.
Начинать преподавание программирования можно как в 7-8-х классах, так и в 9-10-х классах, при этом незначительно меняются задачи, решаемые на уроках, которые должны быть адаптированы к уровню математической подготовки учащихся. Отметим, что полноценные занятия можно проводить лишь тогда, когда на уроки информатики отводится не менее двух (спаренных) учебных часов в неделю. В противном случае изучение программирования лучше проводить в рамках факультатива.
Факультативный курс направлен на совершенствование практических навыков работы за компьютером и информационной компетенции учащихся с опорой на знания, полученные на уроках информатики. Он направлен на углубление знаний учащихся по теме «Алгоритмизация и программирование». Программа построена так, чтобы обеспечить преемственность с базовыми знаниями по информатике, полученными на уроках. Курс направлен на развитие общепредметных знаний.
Курс по информатике «Основы программирования на Python» представляет собой вводный курс по программированию, дающий представление о базовых понятиях структурного программирования (данных, операциях, переменных, ветвлениях в программе, циклах и функциях) на языке Python.
Выбор Python обусловлен тем, что это язык, обладающий рядом преимуществ перед другими языками для начинающих изучать программирование: ясность кода, быстрота реализации.
Курс рассчитан примерно на 16 часов.
Цели курса
Основной целью курса «Основы программирования на языке Python» является формирование базовых понятий структурного программирования, развитие логики обучающихся.
Факультативный курс призван развивать логическое мышление учащихся и аналитический стиль мышления начинающих программистов. Она предназначена для учащихся 10-11 классов.
За основу обучения учащихся по данному курсу следует взять программирование с максимальным использованием компьютера на занятиях, и при этом должен формироваться определенный стиль мыления.
Задачи курса:
— показать практическую значимость использования программирования для наглядного представления решения задач в различных областях жизнедеятельности человека;
— научить учащихся основам программирования с использованием системы программирования Python;
— научить составлению и оформлению программ в соответствии с нормативными требованиями языка программирования;
— содействовать развитию общей информационной культуры как одного из аспектов будущей профессиональной деятельности;
— развивать логическое и аналитическое мышление школьников.
Объем курса составляет 15 уроков, рассчитанных на 16 часов: 1 теоретический и 14 практических.
До изучения:
Учащиеся должны знать:
? понятие алгоритма как организованной последовательности действий, допустимых для некоторого исполнителя и записанной на формальном языке;
? свойства алгоритма;
? формы записи алгоритма;
? язык псевдокода;
? основные алгоритмические структуры;
? правила записи арифметических выражений;
Учащиеся должны уметь:
? составлять алгоритмические структуры при решении задач;
? записывать алгоритмы, не допуская двусмысленной записи;
? составлять алгоритм решения задач и переводить его на язык псевдокода;
? конструировать решение задачи из минимального числа инструкций;
? записывать вспомогательные алгоритмы в виде подпрограмм
По завершению:
Учащиеся должны знать:
? среду программы Geany;
? типы данных языка Python;
? встроенные стандартные функции;
Учащиеся должны уметь:
? переводить арифметическую запись выражений на язык программирования;
? использовать функции модулей math и cmath для решения задач;
? определять типы данных;
? записывать логические выражения;
? использовать в задачах такие конструкции как: цикл и ветвление.
? выполнять запись программы на языке Python, тестирование и отладку программы;
? решать задачи по теме: строки, списки и словари.
Требования к аппаратному и программному обеспечению:
Для успешного проведения практикума по программированию на Python на рабочих местах должны быть установлены:
Python (версия не ниже 2.4)
модули Tkinter и NumPy
среды разработки на Python: IDLE, Eric или Geany, а также какие-либо эмуляторы терминалов _ xterm, rxvt и т.п.
В сборке от ALT Linux следует проверить наличие в системе следующих па-
кетов
* geany
* eric
* xterm
* python
* python-base
* python-doc
* python-module-numpy
* python-modules
* python-modules-encodings
* python-modules-tkinter
* python-tools-idle
Некоторые из перечисленных пакетов будут установлены по зависимостям при установке Python, Eric и Geany с помощью менеджера пакетов, остальные нужно установить вручную.
При создании программ удобно одновременно видеть текст программы и результаты её выполнения. Хорошо также, если при этом по-разному выделяются ключевые слова, названия функций и их аргументы, а также сразу же показываются строки, содержащие ошибки. Кроме того, бывает полезно выполнять программу по шагам и при этом следить за значениями каких-то переменных. Все эти возможности реализуются в так называемых интегрированных средах разработки (Integrated Development Environment, IDE).
Современные IDE, входящие в дистрибутивы Linux, могут работать с разными языками программирования. Существует IDE, лучше всего приспособленные для работы с одним конкретным языком, которые с другими языками работают, так сказать, факультативно. Кроме того, существуют IDE, которые одинаково успешно обеспечивают работу с самыми разными языками, как в режиме интерпретатора, так и в режиме компилятора.
В зависимости от версии ALT Linux удобно пользоваться либо Geany, либо Eric. Далее будут рассмотрены особенности работы в обоих IDE.
№ |
Тема урока |
Тип урока |
Объем |
|
1 |
Введение в язык программирования Python. |
лекция |
1 |
|
2 |
Типы данных. Определение переменной. Ввод и вывод данных. Среда Geany и PyScripter для написания программ на языке Python. |
Комбинированный |
1 |
|
3 |
Решение вычислительных задач. |
Лабораторная работа |
1 |
|
4 |
Решение вычислительных задач на основе встроенных функций. |
Лабораторная работа |
1 |
|
5 |
Решение задач на основе функций и констант, определенных в модулях math и cmath. |
Самостоятельная работа |
1 |
|
6 |
Условный оператор полной и неполной формы. Логические выражения. |
Комбинированный |
2 |
|
7 |
Множественное ветвление. |
Комбинированный |
1 |
|
8 |
Решение задач на применение условного оператора. |
Лабораторная работа |
1 |
|
9 |
Цикл While. |
Комбинированный |
1 |
|
10 |
Цикл For. |
Комбинированный |
1 |
|
11 |
Циклы. |
Лабораторная работа |
1 |
|
12 |
Строки. |
Комбинированный |
1 |
|
13 |
Списки. |
Комбинированный |
1 |
|
14 |
Словари. |
Комбинированный |
1 |
|
15 |
Контрольная работа. |
Итоговый контроль |
1 |
|
Итого: |
16 |
Задание. Запустите интерпретатор Питона.
Когда выполняющаяся программа предлагает пользователю что-либо ввести, то пользователь может не понять, что от него хотят. Надо как-то сообщить, ввод каких данных ожидает программа. С этой целью функция input() может принимать необязательный аргумент-приглашение строкового типа; при выполнении функции сообщение будет появляться на экране и информировать человека о запрашиваемых данных.
Листинг 3. Ввод данных с клавиатуры
Из примеров видно, что данные возвращаются в виде строки, даже если было введено число. В более ранних версиях Python были две встроенные функции, позволяющие получать данные с клавиатуры: raw_input(), возвращающая в программу строку и input(), возвращающая число. Начиная с версии Python 3.0, если требуется получить число, то результат выполнения функции input() изменяют с помощью функций int() или float().
Листинг 4. Применение функций int и float при вводе данных с клавиатуры
Результат, возвращаемый функцией input(), обычно присваивают переменной для дальнейшего использования в программе.
Листинг 5. Присвоение переменной для дальнейшего использования в программе
Операции.
Можно сказать, что операция — это выполнение каких-нибудь действия над данными (операндами). Для выполнения конкретных действий требуются специальные инструменты — операторы.
Рис. 1. Пример оператора «Сложение»
Например, запрограммировано, что символ «+» по отношению к числам выполняет операцию сложения, а по отношению к строкам — конкатенацию (соединение). Два знака «*» возводят первое число в степень второго.
программирование python лабораторный язык
Рис. 2. Пример сложения
Переменные
Все данные хранятся в ячейках памяти компьютера. Когда мы вводим число оно, помещается в память. Но мы же не знаем куда именно и просто теряем его. Вопрос: как обращаться к этим данными? Раньше, при написании программ на машинном языке, обращение к ячейкам памяти осуществляли с помощью указания регистров. Но уже с появлением ассемблеров, при обращении к данным стали использовать так называемые переменные. Механизм этой связи может различаться в разных языках программирования. На этом этапе достаточно запомнить, что данные связываются с каким-либо именем и в дальнейшем обращение к ним возможно по этому имени.
Рис. 3. Задание переменной
Связывание данных и имени (переменной) в языке программирования Python происходит с помощью знака «=» (операция присваивания). Например, запись sq =4 означает, что объект (данные) в определенной области памяти связаны с именем sq и обращаться к ним теперь следует по этому имени.
Имена переменных могут быть любыми. Однако есть несколько общих правил их написания:
1. Желательно давать переменным имена, несущие в себе смысловое значение.
2. Имя переменной не должно совпадать с командами языка (зарезервированными ключевыми словами).
3. Имя переменной должно начинаться с буквы или символа подчеркивания (_). Чтобы узнать значение, на которое ссылается переменная, находясь в режиме интерпретатора, достаточно ее просто вызвать (написать имя и нажать Enter).
Среда Geany для написания программ на языке Python
Geany — свободная среда разработки программного обеспечения для UNIX-подобных операционных систем и Windows, а также для операционных систем, имеющих библиотеку GTK2. Geany использует библиотеку GTK2. Geany распространяется согласно GNU General Public License.
Geany не включает в свой состав компилятор. Вместо этого используется GNU Compiler Collection (или любой другой компилятор) для создания исполняемого кода.
Рис. 4. Интерфейс программы Geany
Особенности:
- Подсветка исходного кода с учетом синтаксиса используемого языка программирования (язык определяется автоматически);
- Автозавершение;
- Автоматическая подстановка закрывающих тегов HTML/XML;
- Простой менеджер проектов;
- Поддержка плагинов.
PyScripter
PyScripter является редактором исходного кода, который был специально разработан для языка программирования Python. PyScripter также предоставляет возможность редактирования кода, написанного на C / C + +, HTML, CSS, JavaScript, PHP, XML и т.д., но его основной целью является предоставление разработчикам решений для написания и отладки кода Python. Программа имеет открытый исходный код и работает с 32-х и 64-х битными системами. Его графический пользовательский интерфейс можно настроить по-разному для того, чтобы обеспечить максимальную эффективность. Пользователи получают возможность расположить панели инструментов в главном окне, как они хотят. PyScripter 2.5.3 поставляется с большим количеством улучшений. Тем не менее, для того, чтобы иметь возможность работать с PyScripter, вам также необходимо установить Python в вашей системе. PyScripter является мощной средой для редактирования и отладки кода Python. Он будет высоко оценен Python программистами.
Рис. 5. Интерфейс программы PyScripter
Практическая работа
1. Переменной var_int присвойте значение 10, var_float — значение 8.4, var_str — «No».
2. Измените значение, хранимое в переменной var_int, увеличив его в 3.5 раза, результат свяжите с переменной big_int.
3. Измените значение, хранимое в переменной var_float, уменьшив его на единицу, результат свяжите с той же переменной.
4. Разделите var_int на var_float, а затем big_int на var_float. Результат данных выражений не привязывайте ни к каким переменным.
5. Измените значение переменной var_str на «NoNoYesYesYes». При формировании нового значения используйте операции конкатенации (+) и повторения строки (*).
6. Выведите значения всех переменных.
Задание №1. Определите объем цилиндра.
Листинг 6. Нахождение объема цилиндра
Задание №2. Извлеките кубический корень числа вводимого с клавиатуры.
Листинг 7. Извлечение кубического корня из суммы двух чисел
Функции
Функции в программировании можно представить как изолированный блок кода, обращение к которому в течение выполнения программы может быть многократным. Зачем нужны такие блоки инструкций? В первую очередь, чтобы сократить объем исходного кода: рациональней вынести часто повторяющиеся выражения в отдельный блок и, затем, по мере надобности, обращаться к нему.
Представим себе следующую ситуацию. Требуется написать скрипт, который при исполнении должен три раза запрашивать у пользователя разные данные, но выполнять с ними одни и те же действия.
Листинг 8. Повторное обращение к блокам функций
Данная программа находит модуль разницы двух чисел. Очевидно, что такая запись исходного кода не рациональна: три почти одинаковых блока. На самом деле можно было бы использовать цикл while для организации повторения.
Листинг 9. Применение функции while при нахождении модуля двух чисел
Однако в этом случае есть небольшая проблема. Вводимые пользователем данные всегда связываются с переменными a и b. При каждом витке цикла старые данные теряются. Но что делать, если ссылку на вводимые пользователем данные (все шесть чисел) надо сохранить для дальнейшего использования этих самых данных в программном коде. В данном случае поможет использование функций.
Программирование функций на Python
Предыдущий скрипт, но уже с использованием функций на языке программирования Python, может выглядеть так:
Листинг 10. Применения функции Def при нахождении модуля двух чисел
Разберем представленный программный код. Def — это инструкция (команда) языка программирования Python, позволяющая создавать функцию. schet — это имя функции, которое (так же как и имена переменных) может быть почти любым, но желательно смысловым. Далее идет двоеточие, обозначающее окончание заголовка функции (аналогично с условиями и циклами). После заголовка, с новой строки и с отступом, следуют выражения тела функции. В конце тела функции присутствует инструкция return (которой может и не быть), она передает то или иное значение в основную ветку программы. Если бы в функции не было инструкции return, то в основную программу ничего бы не возвращалось и переменным c и d (или e и f, а также z и x) ничего не присваивалось.
После функции идет, так называемая, основная ветка программы, в которой переменным попарно присваивается результат выполнения вызываемой функции. На самом деле вызов функции может ничему и не присваиваться.
Выражения тела функции выполняются лишь тогда, когда она вызывается в основной ветке программы. Так, например, если функция присутствует в исходном коде, но нигде не вызывается в нем, то содержащиеся в ней инструкции не будут выполнены ни разу.
Модуль Math
Модуль math всегда доступен и обеспечивает доступ к математическим функциям. Данные функции неприменимы к комплексным числам, для работы с комплексными числами имеются функции с теми же именами в модуле cmath. Модуль содержит следующие функции. Во всех случаях, кроме особо оговоренных, функции возвращают число типа float.
math.acos(x) # арккосинус
math.asin(x) # арксинус
math.atan(x) # арктангенс х
math.atan2 (x, y) # арктангенс y/x
math.ceil(x) # округление вверх
math.cos(x) # косинус
math.cosh(x) # гиперболический косинус
math.e # константа е
math.exp(x) # экспонента (е в степени х)
math.fabs(x) # модуль х
math.floor(x) # округление вниз
math.fmod (x, y) # остаток от деления x/y
math.frexp(x) # мантисса и порядок х; результат в виде (m, i), где x = m * 2**i;
# i — целое, m — число с плавающей точкой в пределах 0.5 <= |m| < 1.0
math.hypot (x, y) # гипотенуза; sqrt (x*x + y*y)
math.ldexp (m, i) # m * (2**i) — функция, обратная frexp
math.log(x) # натуральный логарифм
math.log10 (x) # десятичный логарифм
math.modf(x) # возвращает (y, q), где y — дробная часть x, a q — целая часть х;
# обе части имеют знак самого х
math.pi # константа пи
math.pow (x, y) # возведение х в степень у
math.sin(x) # синус
math.sinh(x) # гиперболический синус
math.sqrt(x) # квадратный корень
math.tan(x) # тангенс
math.tanh(x) # гиперболический тангенс
Решим задачу по применению данного модуля: Определим остаток от деления двух чисел.
Листинг 11. Нахождение остатка от деления двух чисел
Модуль Cmath
Этот модуль всегда доступен и позволяет проводить операции над комплексными числами. При этом функции модуля поддерживают работу не только с комплексными, но и с целыми числами и числами с плавающей запятой. Причина, по которой имеются два таких схожих модуля, в том, что многим пользователям не нужны комплексные числа или они просто не знают что это такое. В этих случаях будет даже лучше, если при math.sqrt(-1) будет возбуждено исключение, чем будет найдено комплексное решение. При этом отметим, что функции в модуле всегда возвращают комплексное число, даже если исходные числа не содержат мнимой части.
сmath.acos(x) # арккосинус
сmath.asin(x) # арксинус
сmath.atan(x) # арктангенс х
сmath.cos(x) # косинус
сmath.cosh(x) # гиперболический косинус
сmath.exp(x) # экспонента (е в степени х)
сmath.log(x) # натуральный логарифм
сmath.log10 (x) # десятичный логарифм
сmath.sin(x) # синус
сmath.sinh(x) # гиперболический синус
сmath.sqrt(x) # квадратный корень
сmath.tan(x) # тангенс
сmath.tanh(x) # гиперболический тангенс
Ход выполнения программы может быть линейным, т.е. таким, когда выражения выполняются, начиная с первого и заканчивая последним, по порядку, не пропуская ни одной строки кода. Но чаще бывает совсем не так. При выполнении программного кода некоторые его участки могут быть пропущены. Чтобы лучше понять почему, проведем аналогию с реальной жизнью. Допустим, человек живет по расписанию (можно сказать, расписание — это своеобразный «программный код», который следует выполнить). В его расписании в 18.00 стоит поход в бассейн. Однако человеку поступает информация, что воду слили, и бассейн не работает. Вполне логично отменить свое занятие по плаванию. Т.е. одним из условий посещения бассейна должно быть его функционирование, иначе должны выполняться другие действия.
Похожая нелинейность действий может быть предусмотрена и в компьютерной программе. Например, часть кода должна выполняться лишь при определенном значении конкретной переменной. Обычно в языках программирования используется приблизительно такая конструкция:
Рис. 6. Логическая конструкция оператора if
Пример ее реализации на языке программирования Python:
Листинг 12. Применение логического оператора if
Первая строка конструкции if — это заголовок, в котором проверяется условие выполнения строк кода после двоеточия (тела конструкции). В примере выше тело содержит всего лишь одно выражение, однако чаще их бывает куда больше.
Про Python говорят, что это язык программирования с достаточно ясным и легко читаемым кодом. Это связано с тем, что в нем сведены к минимуму вспомогательные элементы (скобки, точка с запятой), а для разделения синтаксических конструкций используются отступы от начала строки. Учитывая это, в конструкции if код, который выполняется при соблюдении условия, должен обязательно иметь отступ вправо. Остальной код (основная программа) должен иметь тот же отступ, что и слово if. Обычно отступ делается с помощью клавиши Tab.
Рис. 7. Отступ при использование логического оператора
Можно изобразить блок-схему программы, содержащей инструкцию if в таком виде:
Рис. 8. Блок-схема конструкции оператора if
Встречается и более сложная форма ветвления: if-else. Если условие при инструкции if оказывается ложным, то выполняется блок кода при инструкции else.
Рис. 9. Блок-схема конструкции ветвления if-else
Пример кода с веткой else на языке программирования Python:
Листинг 13. Пример кода с веткой на else
Практическая работа
1. Напишите программный код, в котором в случае, если значение некой переменной больше 0, выводилось бы специальное сообщение (используйте функцию print). Один раз выполните программу при значении переменной больше 0, второй раз — меньше 0.
2. Усовершенствуйте предыдущий код с помощью ветки else так, чтобы в зависимости от значения переменной, выводилась либо 1, либо -1.
3. Самостоятельно придумайте программу, в которой бы использовалась инструкция if (желательно с веткой else). Вложенный код должен содержать не менее трех выражений.
Практическая работа
1. Напишите программу по следующему описанию:
a. двум переменным присваиваются числовые значения;
b. если значение первой переменной больше второй, то найти разницу значений переменных (вычесть из первой вторую), результат связать с третьей переменной;
c. если первая переменная имеет меньшее значение, чем вторая, то третью переменную связать с результатом суммы значений двух первых переменных;
d. во всех остальных случаях, присвоить третьей переменной значение первой переменной;
e. вывести значение третьей переменной на экран.
2. Придумайте программу, в которой бы использовалась инструкция if-elif-else. Количество ветвей должно быть как минимум четыре.
Циклы
зациклится
В последней строчке кода происходит увеличение значения переменной i на единицу, поэтому с каждым оборотом цикла ее значение увеличивается. Когда будет достигнуто число 10, логическое выражение i < 10 даст ложный результат, выполнение тела цикла будет прекращено, а поток выполнения программы перейдет на команды следующие за всей конструкцией цикла. Результатом выполнения скрипта приведенного выше является вывод на экран десяти знаков + в столбик. Если увеличивать счетчик в теле цикла не на единицу, а на 2, то будет выведено только пять знаков, т.к. цикл сделает лишь пять оборотов.
Более сложный пример с использованием цикла:
fib1 = 0
fib2 = 1
print (fib1)
print (fib2)
n = 10
i = 0
while i < n:
fib_sum = fib1 + fib2
print (fib_sum)
fib1 = fib2
fib2 = fib_sum
i = i + 1
Листинг 18. Пример цикла.
Этот пример выводит числа Фибоначчи — ряд чисел, в котором каждое последующее число равно сумме двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13 и т.д. Скрипт выводит двенадцать членов ряда: два (0 и 1) выводятся вне цикла и десять выводятся в результате выполнения цикла.
Как это происходит? Вводятся две переменные (fib1 и fib2), которым присваиваются начальные значения. Присваиваются значения переменной n и счетчику i, между которыми те или иные математические отношения формируют желаемое число витков цикла. Внутри цикла создается переменная fib_sum, которой присваивается сумма двух предыдущих членов ряда, и ее же значение выводится на экран. Далее изменяются значения fib1 и fib2 (первому присваивается второе, а второму — сумма), а также увеличивается значение счетчика.
Практическая работа
1. Напишите скрипт на языке программирования Python, выводящий ряд чисел Фибоначчи (см. пример выше). Запустите его на выполнение. Затем измените код так, чтобы выводился ряд чисел Фибоначчи, начиная с пятого члена ряда и заканчивая двадцатым.
2. Напишите цикл, выводящий ряд четных чисел от 0 до 20. Затем, каждое третье число в ряде от -1 до -21.
3. Самостоятельно придумайте программу на Python, в которой бы использовался цикл while.
В девятом уроке был рассмотрен цикл while. Однако это не единственный способ организации в языке Python повторения группы выражений. В программах, написанных на Питоне, широко применяется цикл for, который представляет собой цикл обхода заданного множества элементов (символов строки, объектов списка или словаря) и выполнения в своем теле различных операций над ними. Например, если имеется список чисел, и необходимо увеличить значение каждого элемента на две единицы, то можно перебрать список с помощью цикла for, выполнив над каждым его элементом соответствующее действие.
>>> spisok = [0,10,20,30,40,50,60,70,80,90]
>>> i = 0
>>> for element in spisok:
spisok[i] = element + 2
i = i + 1
>>> spisok
[2, 12, 22, 32, 42, 52, 62, 72, 82, 92]
Листинг 19. Применение цикла for
В примере переменная i нужна для того, чтобы записать изменившееся значение элемента в список. В ней хранится значение индекса очередного элемента списка. В то время, как переменная element связывается со значением очередного элемента данных. В заголовке цикла for происходит обращение очередному элементу списка. В теле цикла элементу с индексом i присваивается сумма значения текущего (обрабатываемого) элемента и двойки. Далее индекс увеличивается на единицу, а поток выполнения программы переходит снова в заголовок цикла for, где происходит обращение к следующему элементу списка. Когда все элементы обработаны цикл for заканчивает свою работу. Отсутствие очередного элемента является условием завершения работы цикла for (для сравнения: в цикле while условием завершения служит результат false логического выражения в заголовке). Еще один момент: если счетчик не увеличивать на единицу (выражение i = i + 1), то не смотря на то, что все элементы списка будут обработаны, результат все время будет присваиваться первому элементу списка (с индексом 0).
С таким же успехом перебирать можно и строки, если не пытаться их при этом изменять:
>>> stroka = «привет»
>>> for bukva in stroka:
print (bukva, end=’ * ‘)
п * р * и * в * е * т *
>>>
Листинг 20. Перебор строк с помощью цикла for
Цикл for широко используется в языке программирования Python, т.к. является важным инструментом при обработки структур данных. Также следует запомнить, что цикл for в Питоне особенный. Он не является аналогом циклов for во многих других языках программирования, где представляет собой, так называемый, цикл со счетчиком.
Практическая работа
1. Создайте список, состоящий из четырех строк. Затем, с помощью цикла for, выведите строки поочередно на экран.
2. Измените предыдущую программу так, чтобы в конце каждой буквы строки добавлялось тире. (Подсказка: цикл for может быть вложен в другой цикл.)
3. Создайте список, содержащий элементы целочисленного типа, затем с помощью цикла перебора измените тип данных элементов на числа с плавающей точкой. (Подсказка: используйте встроенную функцию float().)
Задание №1. Вычислите сумму всех элементов списка с помощью цикла for.
Рис. 13. Сумма всех элементов списка
Задание №2. Вычислите произведение всех элементов списка с помощью цикла for.
Рис. 14. Произведение всех элементов списка
Задание №3. С помощью цикла while напишите программу: Программа выполняет циклическую операцию, где a и b переменные над которыми происходят вычисления.
1. Первым действием распечатывается текст «цикл…» и значение a.
2. Вторым к a прибавляется один. Затем цикл повторяется до тех пор, пока а не будет равно 10.
Рис. 15. Программа на цикл while
Строки уже упоминались в уроке о типах данных; рассмотрим их более подробно.
Строка — это сложный тип данных, представляющий собой последовательность символов.
Строки в языке программирования Python могут заключаться как в одиночные, так и двойные кавычки. Однако, начало и конец строки должны обрамляться одинаковым типом кавычек.
Существует специальная функция len(), позволяющая измерить длину строки. Результатом выполнения данной функции является число, показывающее количество символов в строке.
Также для строк существуют операции конкатенации (+) и дублирования (*).
>>> len (‘It is a long string’)
>>> ‘!!!’ + ‘ Hello World ‘ + ‘!!!’
‘!!! Hello World!!!’
>>> ‘-‘ * 20
Листинг 21. Операции конкатенации и дублирования
В последовательностях важен порядок символов, у каждого символа в строке есть уникальный порядковый номер — индекс. Можно обращаться к конкретному символу в строке и извлекать его с помощью оператора индексирования, который представляет собой квадратные скобки с номером символа в них.
>>> ‘morning, afternoon, night'[1]
>>> tday = ‘morning, afternoon, night’
>>> tday[4]
>>>
Листинг 22. Применение оператора индексирования
В примере, выражение ‘morning, afternoon, night'[1] привело к извлечению второго символа. Дело в том, что индексация начинается не с единицы, а с нуля. Поэтому, когда требуется извлечь первый символ, то оператор индексирования должен выглядеть так: [0]. Также позволительно извлекать символы, начиная отсчет с конца. В этом случае отсчет начинается с -1 (последний символ).
>>> tday_ru = ‘утро, день, ночь’
>>> tday_ru[0]
>>> tday_ru[-1]
>>> tday_ru[-3]
Листинг 23. Применение оператора индексирования
Очевидно, что удобнее работать не с самими строками, а с переменными, которые на них ссылаются. Результат выполнения выражения индексирования можно присвоить другой переменной.
>>> a = «very big string»
>>> a[6]
>>> b = a[0]
>>> b
Листинг 24. Присвоение выражения индексирования
Можно извлекать из строки не один символ, а несколько, т.е. получать срез (подстроку). Оператор извлечения среза из строки выглядит так: [X:Y]. X — это индекс начала среза, а Y — его окончания; причем символ с номером Y в срез уже не входит. Если отсутствует первый индекс, то срез берется от начала до второго индекса; при отсутствии второго индекса, срез берется от первого индекса до конца строки.
>>> tday = ‘morning, afternoon, night’
>>> tday [0:7]
‘morning’
>>> tday [9: — 7]
‘afternoon’
>>> tday [-5:]
‘night’
Листинг 25. Оператор извлечения среза подстроки
Кроме того, можно извлекать символы не подряд, а через определенное количество символов. В таком случае оператор индексирования выглядит так: [X:Y:Z]; Z — это шаг, через который осуществляется выбор элементов.
>>> str4 = «Full Ball Fill Pack Ring»
>>> str4 [:5]
‘FBFPR’
>>> str4 [0:15:2]
‘Fl alFl ‘
Листинг 26. Оператор извлечения среза подстроки
Практическая работа
1. Свяжите переменную с любой строкой, состоящей не менее чем из 8 символов. Извлеките из строки первый символ, затем последний, третий с начала и третий с конца. Измерьте длину вашей строки.
2. Присвойте произвольную строку длиной 10-15 символов переменной и извлеките из нее следующие срезы:
— первые восемь символов;
— четыре символа из центра строки;
— символы с индексами кратными трем.
Списки в языке программирования Python, как и строки, являются упорядоченными последовательностями. Однако, в отличии от строк, списки состоят не из символов, а из различных объектов (значений, данных), и заключаются не в кавычки, а в квадратные скобки []. Объекты отделяются друг от друга с помощью запятой.
Списки могут состоять из различных объектов: чисел, строк и даже других списков. В последнем случае, списки называют вложенными.
[23, 656, -20, 67, -45] #список целых чисел
[4.15, 5.93, 6.45, 9.3, 10.0, 11.6] #список из дробных чисел
[«Katy», «Sergei», «Oleg», «Dasha»] #список из строк
[«Москва», «Титова», 12, 148] #смешанный список
[[0, 0, 0], [0, 0, 1], [0, 1, 0]] #список, состоящий из списков
Листинг 27. Примеры списков
Как и над строками над списками можно выполнять операции соединения и повторения:
>>> [45, -12, ‘april’] + [21, 48.5, 33]
[45, -12, ‘april’, 21, 48.5, 33]
>>> [[0,0], [0,1], [1,1]] * 2
[[0, 0], [0, 1], [1, 1], [0, 0], [0, 1], [1, 1]]
Листинг 28. Операции соединения и повторения над списками
По аналогии с символами строк, можно получать доступ к объектам списка по их индексам, извлекать срезы, измерять длину списка:
>>> li = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]
>>> len(li)
>>> li[0]
>>> li[4]
>>> li [0:3]
[‘a’, ‘b’, ‘c’]
>>> li [3:]
[‘d’, ‘e’, ‘f’]
Листинг 29. Доступ к объектам списка по его индексам
В отличии от строк, списки — это изменяемые последовательности. Если представить строку как объект в памяти, то когда над ней выполняются операции конкатенации и повторения, то это строка не меняется, а в результате операции создается другая строка в другом месте памяти. В строку нельзя добавить новый символ или удалить существующий, не создав при этом новой строки. Со списком дело обстоит иначе. При выполнении операций другие списки могут не создаваться, а изменяться непосредственно оригинал. Из списков можно удалять элементы, добавлять новые. При этом следует помнить, многое зависит от того, как вы распоряжаетесь переменными. Бывают ситуации, когда списки все-таки копируются. Например, результат операции присваивается другой переменной.
Символ в строке изменить нельзя, элемент списка — можно:
>>> mystr = ‘abrakadabra’
>>> mylist = [‘ab’, ‘ra’, ‘ka’, ‘da’, ‘bra’]
>>> mystr[3] = ‘0’
Traceback (most recent call last):
File «<pyshell#11>», line 1, in <module>
mystr[3] = ‘0’
TypeError: ‘str’ object does not support item assignment
>>> mylist[1] = ‘ro’
>>> mylist
[‘ab’, ‘ro’, ‘ka’, ‘da’, ‘bra’]
>>>
Листинг 30. Изменение элемента списка
В списке можно заменить целый срез:
>>> mylist [0:2] = [10,20]
>>> mylist
[10, 20, ‘ka’, ‘da’, ‘bra’]
Листинг 31. Замена среза в списке
Более сложная ситуация:
>>> alist = mylist [0:2] + [100,’it is ‘, 200] + mylist [2:] # новый список
>>> a2list = mylist # создается вторая ссылка-переменная на первый список
>>> alist
[10, 20, 100, ‘it is ‘, 200, ‘ka’, ‘da’, ‘bra’]
>>> a2list
[10, 20, ‘ka’, ‘da’, ‘bra’]
>>> a2list[0] = ‘!!!’ # изменяем список
>>> a2list
[‘!!!’, 20, ‘ka’, ‘da’, ‘bra’]
>>> mylist # обе переменные связаны с одним списком
[‘!!!’, 20, ‘ka’, ‘da’, ‘bra’]
Листинг 32. Замена элемента списка
Практическая работа
1. Создайте два любых списка и свяжите их с переменными.
2. Извлеките из первого списка второй элемент.
3. Измените во втором списке последний объект. Выведите список на экран.
4. Соедините оба списка в один, присвоив результат новой переменной. Выведите получившийся список на экран.
5. «Снимите» срез из соединенного списка так, чтобы туда попали некоторые части обоих первых списков. Срез свяжите с очередной новой переменной. Выведите значение этой переменной.
6. Добавьте в список-срез два новых элемента и снова выведите его.
Одним из сложных типов данных (наряду со строками и списками) в языке программирования Python являются словари. Словарь — это изменяемый (как список) неупорядоченный (в отличие от строк и списков) набор пар «ключ: значение».
Чтобы представление о словаре стало более понятным, можно провести аналогию с обычным словарем, например, англо-русским. На каждое английское слово в таком словаре есть русское слово-перевод: cat — кошка, dog — собака, table — стол и т.д. Если англо-русский словарь описывать с помощью Python, то английские слова будут ключами, а русские — их значениями:
{‘cat’:’кошка’, ‘dog’:’собака’, ‘bird’:’птица’, ‘mouse’:’мышь’}
Листинг 33. Ключ и его значение
Обратите внимание на фигурные скобки, именно с их помощью определяется словарь. Синтаксис словаря на Питоне можно описать такой схемой:
Рис. 13. Синтаксис словаря
Если создать словарь в интерпретаторе Python, то после нажатия Enter можно наблюдать, что последовательность вывода пар «ключ: значение» не совпадает с тем, как было введено:
>>> {‘cat’:’кошка’, ‘dog’:’собака’, ‘bird’:’птица’, ‘mouse’:’мышь’}
{‘bird’: ‘птица’, ‘mouse’: ‘мышь’, ‘dog’: ‘собака’, ‘cat’: ‘кошка’}
Листинг 34. Вывод ключа и его значения
Дело в том, что в словаре абсолютно не важен порядок пар, и интерпретатор выводит их в случайном порядке. Тогда как же получить доступ к определенному элементу, если индексация не возможна в принципе? Ответ: в словаре доступ к значениям осуществляется по ключам, которые заключаются в квадратные скобки (по аналогии с индексами строк и списков).
>>> dic = {‘cat’:’кошка’, ‘dog’:’собака’, ‘bird’:’птица’, ‘mouse’:’мышь’}
>>> dic[‘cat’]
‘кошка’
>>> dic[‘bird’]
‘птица’
Листинг 35. Доступ к элементу словаря
Словари, как и списки, являются изменяемым типом данных: можно изменять, добавлять и удалять элементы (пары «ключ: значение»). Изначально словарь можно создать пустым (например, d = {}) и лишь потом заполнить его элементами. Добавление и изменение имеет одинаковый синтаксис: словарь[ключ] = значение. Ключ может быть как уже существующим (тогда происходит изменение значения), так и новым (происходит добавление элемента словаря). Удаление элемента словаря осуществляется с помощью функции del().
>>> dic= {‘cat’:’кошка’, ‘dog’:’собака’, ‘bird’:’птица’, ‘mouse’:’мышь’}
>>> dic[‘elephant’] = ‘бегемот’
>>> dic[‘fox’] = ‘лиса’
>>> dic
{‘fox’: ‘лиса’, ‘dog’: ‘собака’, ‘cat’: ‘кошка’, ‘elephant’: ‘бегемот’, ‘mouse’: ‘мышь’, ‘bird’: ‘птица’}
>>> dic[‘elephant’] = ‘слон’
>>> del (dic[‘bird’])
>>> dic
{‘fox’: ‘лиса’, ‘dog’: ‘собака’, ‘cat’: ‘кошка’, ‘elephant’: ‘слон’, ‘mouse’: ‘мышь’}
Листинг 36. Удаление элемента словаря с помощью функции del
Тип данных ключей и значений словарей не обязательно должны быть строками. Значения словарей могут быть более сложными (содержать структуры данных, например, другие словари или списки).
>>> d = {1:’one’, 2:’two’, 3:’three’}
>>> d
{1: ‘one’, 2: ‘two’, 3: ‘three’}
>>> d = {10: [3,2,8], 100: [1,10,5], 1000: [23,1,5]}
>>> d
{1000: [23, 1, 5], 10: [3, 2, 8], 100: [1, 10, 5]}
>>> d = {1.1:2, 1.2:0, 1.3:8}
>>> d
{1.3: 8, 1.2: 0, 1.1: 2}
>>> d = {1.1:2, 10:’apple’, ‘box’:100}
>>> d
{‘box’: 100, 10: ‘apple’, 1.1: 2}
Листинг 37. Типы данных ключей и значений словаря
Словари — это широко используемый тип данных языка Python. Для работы с ними существует ряд встроенных функций.
Практическая работа
1. Создайте словарь, связав его с переменной school, и наполните его данными, которые бы отражали количество учащихся в десяти разных классах (например, 1а, 1б, 2б, 6а, 7в и т.д.).
2. Узнайте сколько человек в каком-нибудь классе.
3. Представьте, что в школе произошли изменения, внесите их в словарь:
— в трех классах изменилось количество учащихся;
— в школе появилось два новых класса;
— в школе расформировали один из классов.
4. Выведите содержимое словаря на экран.
Задание 1
Напишите код по следующему словесному алгоритму:
1. Попросить пользователя ввести число от 1 до 9. Полученные данные связать с переменной x.
2. Если пользователь ввел число от 1 до 3 включительно, то
· попросить пользователя ввести строку. Полученные данные связать с переменной s;
· попросить пользователя ввести число повторов строки. Полученные данные связать с переменной n, предварительно преобразовав их в целочисленный тип;
· выполнить цикл повторения строки n раз;
· вывести результат работы цикла.
3. Если пользователь ввел число от 4 до 6 включительно, то…
· попросить пользователя ввести степень, в которую следует возвести число. Полученные данные связать с переменной m;
· реализовать возведение числа x в степень m;
· вывести полученный результат.
4. Если пользователь ввел число от 7 до 9, то выполнить увеличения числа x на единицу в цикле 10 раз, при этом на экран вывести все 10 чисел.
5. Во всех остальных случаях выводить надпись «Ошибка ввода».
Задание 2
Напишите программу, которая бы выполняла следующие задачи:
1. выводила название программы «Общество в начале XXI века»;
2. запрашивала у пользователя его возраст;
3. если пользователь вводит числа от 0 до 7, то программа выводила надпись «Вам в детский сад»;
4. от 7 до 18 — «Вам в школу»;
5. от 18 до 25 — «Вам в профессиональное учебное заведение»;
6. от 25 до 60 — «Вам на работу»;
7. от 60 до 120 — «Вам предоставляется выбор»;
8. меньше 0 и больше 120 — пятикратный вывод надписи «Ошибка! Это программа для людей!»
В программе желательно использовать все «атрибуты» структурного программирования: функцию, ветвление и цикл.
3. Контрольные вопросы по Python
программирование python лабораторный язык
1. Какая встроенная функция вводит данные с клавиатуры?
a) input;
b) print;
c) def;
d) abs.
2. Какая встроенная функция выводит данные на экран?
a) input;
b) print;
c) def;
d) abs.
3. Как применить функцию cos к действительному числу?
a) math.cos(число);
b) cos(число);
c) cmath.cos(число).
4. Имеется строки x=» 1» и у=» 5». Как сложить эти числа и получить число 6.
a) int (x+y);
b) x+y;
c) int(x)+int(y);
d) x+-y.
5. Какие ключевые слова могут входить в состав оператора цикла for.
a) Step;
b) In;
c) Else;
d) Elif;
e) Elfor.
6. Какую из следующих операций можно применить к строке:
a) +;
b) *;
c) Обе;
d) Ни одну из них.
7. Что напечатает следующий код:
а=[1, 2, 3]
del a[1]
print a[1]
a) 1;
b) 2;
c) 3;
d) Код вызовет ошибку.
8. Что произойдет при выполнении следующего кода:
x, y=y, x
9. Данное выражение эквивалентно
a) Поменяются местами значения х и у;
b) В этой строке синтаксическая ошибка
10. Что выведет следующий код:
(a, b)=(4,6)
c=eval («a*b»)
print(c)
a) «a*b»;
b) 24;
c) 444444;
d) Возникнет ошибка.
11. Какого типа значение получится в результате вычисления следующего выражения:
[«»]
a) Это синтаксическая ошибка;
b) Str(строка);
c) List(список);
d) Array(массив).
Написанные на нем программы получаются структурированными по форме, и в них легко проследить логику работы. На примере языка Python рассматриваются такие важные понятия как: объектно-ориентированное программирование, функциональное программирование, событийно-управляемые программы (GUI-приложения), форматы представления данных (Unicode, XML и т.п.). Возможность диалогового режима работы интерпретатора Python позволяет существенно сократить время изучения самого языка и перейти к решению задач в соответствующих предметных областях. Python свободно доступен для многих платформ, а написанные на нем программы обычно переносимы между платформами без изменений. Это обстоятельство позволяет применять для изучения языка любую имеющуюся аппаратную платформу. С этим и связана актуальность изучения этого языка программирования в рамках факультативного курса.
В дипломной работе была рассмотрена методика изучения программирования на языке Python в старших классах и разработаны практические задания для закрепления изученного материала.
Задачи решены, цель дипломной работы достигнута.
1. Inkscape: Guide to a Vector Drawing Program. [Электр. ресурс] // http://tavmjong.free.fr/INKSCAPE/MANUAL/
2. Хахаев И.А. Практикум по алгоритмизации и программированию на Python: / И.А. Хахаев — М.: Альт Линукс, 2010. — 126 с.
3. Информатика: Учебник для 10-11 класса / Н.Д. Угринович — М.: Бином, 2009. — 512 с.
4. Фридланд А.Я., Ханамирова Л.С., Фридланд И.А. Информатика и компьютерные технологии. Основные термины. Толковый словарь. М..Издательство Астрель., 2003.
5. Бизли Д.М., Г. Ван Россум. Язык программирования Python. Справочник. (пер. с англ.) Киев: ДиаСофт., 2000.
6. Лутц М. Программирование на Python. (пер. с англ.) СПб.:.Символ-Плюс., 2002.
7. 8. Сузи Р.А. Python. Наиболее полное руководство. СПб.: БХВ-Петнбург., 2002.
8. Сузи Р.А. Язык программирования Python. М: Бином. Лаборатория знаний. — 2006.
9. Саммерфилд М. Программирование на Python 3. Подробное руководство (пер. с англ.) СПб: Символ-Плюс., 2009.
Размещено на