Урок 2. Математическое программирование на языке Python. Аналитическая геометрия на плоскости

Федеральное агентство железнодорожного транспорта Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования «Сибирский государственный университет путей сообщения» в г.Новоалтайске

Автор: преподаватель информатики и схемотехники Чебан Олег Олегович
Дата создания: 2016, г. Новоалтайск

Урок 2. Математическое программирование на языке Python. Аналитическая геометрия на плоскости.
Цели урока:
Научиться строить сложные логические выражения.
Закрепить умения описывать различные геометрические места точек на плоскости.
Тип урока: смешанный (получение новых знаний, практическая работа).
Оборудование:
Язык программирования Python (официальный сайт python.org).
Среда разработки Geany (официальный сайт geany.org).
Проектор.

I. Теоретические сведения.

Типы данных в Python явно не объявляются, это не очень хорошо с точки зрения строгости программирования, но с другой стороны преимущество заключается в том, что в отличии от языка Паскаль, в котором явно определяется тип данных и, соответственно, при запуске программы резервируются места под каждую переменную в оперативной памяти компьютера, независимо от того, используется она в данный момент или нет (если речь не идет об указателях!).
Пример описания переменных в языке Паскаль:
Var x, y:real; {6 байт под каждую переменную действительного типа}
Begin
x:=2.71;
y:=2.71;
В Python операторы присваивания, не займут в оперативной памяти 12 байт, а только 6, т. к. переменные x и y не хранят по отдельности одно и тоже значение, вторая и последующие переменные ссылаются на значение. Конечно, если речь идет о нескольких переменных и компьютере с памятью в несколько гигабайт, то это не критично, однако, если мы будем писать программу для промышленного контроллера, который должен в короткий промежуток времени обработать массивы данных, то требования к оптимизации кода возрастает многократно! Например, представим себе ситуацию, что контроллер управления неохраняемым железнодорожным переездом не успел обработать полученные сигналы о приближении состава, и, соответственно, выдал неверные команды исполняющим механизмам и светофорам, результат гибель людей..
Пример создания объекта-переменной и ссылки на Питоне:
x=2.71 # переменная - значение
y=2.71 # переменная-ссылка на уже объявленное значение
Если набрать код и выполнить, то оператор is вернет TRUE (см. Табл. 4):
x=2.71
y=2.71
print x is y

Числовые типы на Пионе:
целые числа неограниченной длины интерпретатор сам определит необходимость использования объектов неограниченной длины и сделает необходимые преобразования.
Числа с плавающей точкой
восьмеричные и шестнадцатеричные числа
комплексные числа

Пример программы:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import math, random

print "Число Pi = ",math.pi # число Пи
print "Sin(Pi/2) = ",math.sin(math.pi/2) # синус 90
print random.randint(1,100) # случайное целое число в диапазоне от 1 до 100
Результат:
Число Pi = 3.14159265359
Sin(Pi/2) = 1.0
54
Таблица 1. Операторы сравнения в Python.
Оператор
Описание
Пример

==
Проверяет равны ли оба операнда. Если да, то условие становится истинным.
5 == 5 в результате будет True "python" == "python" в результате будет True

!=
Проверяет равны ли оба операнда. Если нет, то условие становится истинным.
12 != 5 в результате будет True False != False в результате будет False

<>
Проверяет равны ли оба операнда. Если нет, то условие становится истинным.
12 <> 5 в результате будет True.
Аналогичен !=

>
Проверяет больше ли значение левого операнда, чем значение правого. Если да, то условие становится истинным.
5 > 2 в результате будет True. True > False в результате будет True. "A" > "B" в результате будет False.

<
°Проверяет меньше ли значение левого операнда, чем значение правого. Если да, то условие становится истинным.
3 < 5 в результате будет True. True < False в результате будет False. "A" < "B" в результате будет True.

>=
Проверяет больше или равно значение левого операнда, чем значение правого. Если да, то условие становится истинным.
2 >= 1 в результате будет True. "C" >= "D" в результате будет False.

<=
Проверяет меньше или равно значение левого операнда, чем значение правого. Если да, то условие становится истинным.
4 <= 5 в результате будет True. -1 <= -36 в результате будет False.


Таблица 2. Логические операторы в Python.
Оператор
Описание
Пример

and
Логический оператор "И". Условие будет истинным если оба операнда истина.
True and True равно True. True and False равно False. False and True равно False. False and False равно False.

or
Логический оператор "ИЛИ". Если хотя бы один из операндов истинный, то и все выражение будет истинным.
True or True равно True. True or False равно True. False or True равно True. False or False равно False.

not
Логический оператор "НЕ". Изменяет логическое значение операнда на противоположное.
not True равно False. not False равно True.


Таблица 3. Операторы членства в Python.
Оператор
Описание
Пример

in
Возвращает истину, если элемент присутствует в последовательности, иначе возвращает ложь
"cad" in "cadillac" вернет True. 1 in [2,3,1,6] вернет True

not in
Возвращает истину если элемента нет в последовательности
Результаты противоположны результатам оператора in


Таблица 4. Операторы тождественности в Python.
Оператор
Описание
Пример

is
Возвращает истину, если оба операнда указывают на один объект
x is y вернет истину, если id(x) будет равно id(y)

Is not
Возврашает ложь если оба операнда указывают на один объект
x is not y, вернет истину если id(x) не равно id(y)


II. Практическая работа.
Задача. Описать заштрихованную часть плоскости в виде систем уравнений и неравенств и запрограммировать полученные аналитические выражения с помощью стандартных функций языка Python. Ответ выдать в следующем виде: True, если точка с координатами (х,у) принадлежит заштрихованной фигуре; False, если точка с координатами (х,у) не принадлежит заштрихованной фигуре (см. Рис. 1.).
Рис. 1. Ограниченная область.

Часть координатной плоскости ограниченной параболой и лежащей выше линии y=F(x), описываются по формуле: y = a*(x-x0)^2+y0, где (x0,y0) – координаты вершины параболы, a – коэффициент растяжения (сжатия), параболы относительно оси абсцисс.
В нашем случае из графика видно, что а = 2, x0 = 0, y0 = -2. Подставляя в уравнение описания параболы получим: y = 2*(x^2)-2, после преобразований имеем:
y+2 = 2*x*x
,или по условию задачи точки лежащие выше параболы описаны по формуле:
in_parabol=y+2>=2*pow(x,2)
Сверху фигура ограничена прямой линией описанной по формуле: y= 1, или точки лежащие выше данной линии выполняются следующим условиям: in_line = y>1.
Конечная формула описывающая заштрихованную фигуру выглядит:
obl = in_parabol and not in_line
На заметку! В Python, например как и в кодировочной таблице ASCII, заглавные и прописные символы имеют разный код, поэтому будьте внимательны при именовании переменных.
Блок-схема алгоритма.

Реализация алгоритма на Питоне.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
x=input("Введите значение координаты точки по X: ")
y=input("Введите значение координаты точки по Y: ")
in_parabol=y+2>=2*pow(x,2)
in_line = y>1
obl = in_parabol and not in_line
print obl

Самостоятельно. Проконтролируйте результат введя несколько координат.

Точки внутри окружности описываются по формуле:
(x-x0)^2+(y-y0)^2<=R^2
,где (x0, y0) координаты центра окружности,
R радиус.
Точки внутри ромба с диагоналями, параллельными осям координат описывается по формуле: abs(x-x0)/a + abs(y-y0)/b <= 1
Задание на урок. Описать точки внутри следующих фигур.



HYPER15Основной шрифт абзаца

Приложенные файлы

  • doc python02
    Чебан О. О.
    Размер файла: 116 kB Загрузок: 6