Занятие 5. Введение в программирование ФББ МГУ имени М.В.Ломоносова 2013 год

advertisement
Занятие 5. Введение
в программирование
4-5 октября
ФББ МГУ имени М.В.Ломоносова
2013 год
Зачем нам программировать? 1
Привычные данные:
То, с чем работает биоинформатик:
??!
Программирование
Биология 7-8: Животные, под ред М.А. Козлова.
http://www.ncbi.nlm.nih.gov/nuccore
Программировать - это
научить компьютер
Исполнительный, но
знающий (пока) только
некоторые вещи ребёнок
(1)
Узнать, что умеет
компьютер: какие команды
он понимает и что делает в
ответ на них
Источник картинки: http://en.wikipedia.org/
(2)
Научиться объяснять
компьютеру, исходя из его
«знаний»
2
Язык программирования
Язык
программирования
интерфейс между
человеком и компьютером
Существует много языков
программирования, со своими
особенностями синтаксиса (правил
написания и употребления команд):
• С++
• Java
•…
• Python
мы будем учить
Python 2.7
3
Python – скриптовой язык
Скрипт (от англ. script) = (в этом блоке) программа на
языке Python в виде текстового файла
Интерпретатор
Python:
• построчный разбор;
• перевод команд на
«язык компьютера»;
• передача компьютеру.
#Yeaah, my 1st script!
a = 5
foo = 100
Dibrova_pr5.1.py
Имя скрипта
Расширение
(обычно нечто
указывающее на его
назначение)
(.py ассоциируется
Windows с запуском
интерпретатора)
4
Оператор присвоения значения 5
a = 5
Присвоим переменной a значение 5. Это значит, что
пока не указано обратное, говоря а мы
подразумеваем 5
6 = a
Ошибка! Скрипт не будет работать, поскольку 6 – это
фиксированное число (константа), мы не можем
заявить, что оно равно a
a = 6
Теперь значение переменной a равно 6
foo = 100
Присвоим переменной foo значение 100. Говорим
foo, подразумеваем 100
a = foo
Подставляем в правую часть вместо foo число 100,
получаем аналогичное строчкам (1) и (3)
утверждение: теперь a – это 100
foo = 0
foo изменилось, оно равно 0, а осталось равным 100
Арифметические
Оператор
операторы
• Работают с парой чисел, одно
пишется слева, другое справа
от оператора
• Результат – число
• При работе с переменными
сперва подставляют их
значения
• Порядок выполнения операций
регулируется с помощью
круглых скобок, как в алгебре
a = 3
5 + 4
(a + 4)*2
6
Действие
+
Числа слева и справа от оператора
складываются
-
Число справа от оператора
вычитается из числа слева от него
*
Числа слева и справа от оператора
перемножаются
/
Число слева от оператора делится на
число справа от оператора
%
Число слева делится на число справа,
а возвращается остаток от деления
**
Число слева от оператора
возводится в степень справа от
оператора
Компьютер получил 9, но результат не сохранил
Компьютер получил 14, но результат не сохранил,
переменная a не изменялась
a = (a + 4)*2
Компьютер получил 14, и теперь a равно 14
a += 3
К значению переменной a прибавляется 3
Что мы научились делать:
• Сохранить в памяти число, приписав его к какой-то
переменной:
a = 4
b = 7
# a - число
# b - число
• Сделать арифметическое вычисление, используя
константы и значения переменные:
c = (a / 2) + 3*(b - 4)
d = 5 + 7 – 11
# с – число
# d – число
7
Функции в программировании 8
Действием нескольких операторов можно легко сымитировать
действие алгебраической функции:
f ( x, y)  5 x  3 y  7
2
x
y
f
x
f
=
=
=
=
=
10
3
4
5*(x ** 2) + 9*y + 7
3
3
5*(x ** 2) + 9*y + 7
y = 91
3
f = 5*(x ** 2) + 9*y + 7
А если мы ошиблись в
формуле, теперь надо
будет исправить ее в
100500 местах кода?
А если мы вообще решили
эту функцию сменить,
попробовать другую?!
Решение: задать функцию, а потом вызывать ее, когда
потребуется
Задание функции
Слово синтаксиса языка,
объясняющее, что сейчас будет
задана новая функция
Имя функции (любое)
Список аргументов
в круглых скобках, через
запятую. Имена аргументов
- любые
Двоеточие
далее начинается тело
def myFunc (x, y):
функции, ее команды
Тело функции
f = 5*(x ** 2) + 3*y + 7
(! пишется с
Команда завершения тела
отступом: табуляция return f
или 4 пробела)
функции
(и указание того значения,
которое функция возвращает)
def lalala(foo, z):
nya = 5*(foo ** 2) + 3*z + 7
return nya
9
10
Вызов функции
def myFunc (x, y):
f = 5*(x ** 2) + 3*y + 7
return f
Задание
функции
a = myFunc (4, 5)
b = myFunc (3, 2)
Вызов функции
с разными
аргументами
• При задании функции никакие команды не
выполняются, но скрипт теперь «знает», что такая
функция существует
• При вызове функции в ее переменные-аргументы
подставляются конкретные значения и вычисляется
значение функции
Строки
11
• Со строками оператор присвоения значения работает
почти точно так же.
• Но чтобы отличать строки от текста команд или
названия переменных, строки заключают в кавычки:
a = "Text"
a = "Text"
b = "Foo"
c = a + b
Пока не указано обратное, говоря а мы
подразумеваем “Text”, то есть попросту a – это
“Text”
Оператор сложения для строчек дописывает одну
строчку к другой. Так, в этом примере c будет равно
“TextFoo”.
! Арифметические операторы вычитания, умножения
и деления не работают для строчек
Типы переменных
• Итак, в Python есть различение типов переменных:
• int – тип для целых чисел (от англ. integer – целый);
• float – тип для дробных чисел переменных (от англ.
floating point value – число с плавающей точкой)
• str – тип для строк (от англ. string – строка)
a = 5
- создается новый объект – переменная типа int
- имя этого объекта a
- этому объекту присваивается значение 5
Целое число является неизменяемым типом данных.
Для данных таких типов a = a + 5 значит:
“теперь именем a называется новый объект. Его тип int,
значение 10”
12
Оператор подстановки
• Оператор подстановки %: значение переменной
справа от него будет поставлено в место, указанное в
левой строке символом % и первой буквой нужного
типа:
%i – подставить как целое число
%f – подставить дробное число (6 символов после
запятой по умолчанию)
%.3f – подставить дробное число с 3 символами
после запятой
%s – подставить в виде строки
d = 5
e = "Value %i is the best" % d
e = "Value " + str(d) + " is the best"
13
Еще несколько полезных 14
функций для строк и чисел
v = 5
a = float(v)
v = 5
a = type(v)
str(x) (также int(x), float(x))
• 1 аргумент
• возвращает аргумент, приведенный к типу,
название которого указано в имени функции
type(foo)
• аргументом может быть любая переменная
• возвращает тип переменной этой переменной
s = raw_input("Enter your name: ")
raw_input(string)
• Выводит на экран консоли строку-аргумент в
качестве приглашения к вводу с клавиатуры
(любая последовательность символов +
enter)
• Возвращает введенную последовательность
Как увидеть результат?
15
• Скрипт может выдать результаты работы на экран или в
виде текстового файла
• Это делается с помощью вызова встроенной команды
print: (! не настоящая функция в Python 2.7)
Автоматический переход на новую строчку
value = 5
b = "Yes"
print "Hello World!"
print a
print "a =", a, " b =", b
Разделение на печати пробелом
параметров, разделенных запятыми
Download