зобнин информатика в школе

24
Информатика в школе: язык Python и компьютерная алгебра Алексей Зобнин Яндекс, Механико-математический факультет МГУ 4 декабря 2013 г.

Upload: yandex

Post on 08-Jul-2015

292 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: зобнин   информатика в школе

Информатика в школе:язык Python и компьютерная алгебра

Алексей Зобнин

Яндекс,Механико-математический факультет МГУ

4 декабря 2013 г.

Page 2: зобнин   информатика в школе

Язык программирования Python

– появился в 1991 году;– сейчас — один из самых популярных языков

программирования;

http://python.org/

Page 3: зобнин   информатика в школе

Создатель языка Python

Гвидо ван Россум, голландский программист.

Page 4: зобнин   информатика в школе

Первая программа на Python’е

print "Hello, world!"

Page 5: зобнин   информатика в школе

Первая программа на Python’е

print "Hello, world!"

Page 6: зобнин   информатика в школе

Версии языка

– 2.x– 3.x

Page 7: зобнин   информатика в школе

Версии языка

– 2.x (2.7.6);– 3.x (3.4.0).

Page 8: зобнин   информатика в школе

Особенности языка

– скриптовый интерпретируемый язык;– язык высокого уровня;– динамическая типизация;– минималистичный синтаксис;– богатая стандартная библиотека;– автоматическое управление памятью.

a, b = 5, 7while b != 0:

a, b = b, a % bprint a

Page 9: зобнин   информатика в школе

Фрагменты программ из ЕГЭ (B14)

var a,b,t,M,R: integer;Function F(x: integer): integer;begin

F := 9*(x+19)*(x-19) + 1;end;BEGIN

a := -20; b := 20;M := a; R := F(a);for t := a to b do begin

if (F(t)<R) then beginM:=t; R:=F(t);

end;end;write(M);

END.

Page 10: зобнин   информатика в школе

А теперь на Python’е

def F(x):return 9*(x+19)*(x-19) + 1

a, b = -20, 20M = a; R = F(a)for t in xrange(a, b + 1):

if F(t) < R:M = tR = F(t)

print M

Page 11: зобнин   информатика в школе

import sys

words_dict = dict()

for line in sys.stdin:words = line.strip().split()for word in words:if word not in words_dict:words_dict[word] = 1

else:words_dict[word] += 1

for word, freq in words_dict.items():print word, freq

Page 12: зобнин   информатика в школе

Преимущества Python’а для обучения

– компактный код;– меньше шансов для синтаксических ошибок;– отступы — неотъемлемая часть языкa;– синтаксис напоминает псевдокод;– высокая скорость разработки.

Page 13: зобнин   информатика в школе

The Zen of Python

Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren’t special enough to break therules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.

Page 14: зобнин   информатика в школе

The Zen of Python, II

In the face of ambiguity, refuse the temptationto guess.There should be one– and preferably only one–obvious way to do it.Although that way may not be obvious at firstunless you’re Dutch.Now is better than never.Although never is often better than *right* now.If the implementation is hard to explain, it’s abad idea.If the implementation is easy to explain, it maybe a good idea.Namespaces are one honking great idea – let’s domore of those!

Page 15: зобнин   информатика в школе

Формальные исполнители алгоритмов

– «черепашка», «чертежник» (язык Logo, 1967)– «робот» (язык Karel, 1981).

Page 16: зобнин   информатика в школе

Модуль turtle

from turtle import *

def draw_circle(a, s):for j in xrange(a):

right(360.0/a)forward(s)

def draw(a, s):for i in xrange(a):

right(360.0/a)draw_circle(a, s)

hideturtle()bgcolor("black")pencolor("red")pensize(3)draw(36, 20)

Page 17: зобнин   информатика в школе
Page 18: зобнин   информатика в школе

Guido van Robot

Page 19: зобнин   информатика в школе

Математические модули

– math– pylab– matplotlib– numpy

Page 20: зобнин   информатика в школе

Модуль matplotlib

import math, pylabfrom matplotlib import mlab

def f(x):if x == 0:

return 1.0return math.sin(x) / x

xmin = -20.0xmax = 20.0dx = 0.01

xlist = mlab.frange(xmin, xmax, dx)ylist = [f(x) for x in xlist]

pylab.plot (xlist, ylist)pylab.show()

Page 21: зобнин   информатика в школе
Page 22: зобнин   информатика в школе

Модуль sympy

from sympy import *n, x, y = symbols("n x y")expr = Limit((1 + 1/n)**n, n, oo)print expr

Limit((1 + 1/n)**n, n, oo)

print expr.doit()E

trigsimp(sin(x)*cos(y) + sin(y)*cos(x))sin(x+y)

solve(x**3 - 6*x**2 + 9*x, x)[0,3]

http://sympy.org/http://live.sympy.org/

Page 23: зобнин   информатика в школе

Система компьютерной алгебры Sage

– свободная и кроссплатформенная;– в качестве языка программирования выбран Python;– объединяет множество профессиональных

математических пакетов;– можно работать через браузер.

http://sagemath.org/

Page 24: зобнин   информатика в школе

f(x) =

(x6 − 1

110

×(x6 +

2

5x5 − 2

25x4 +

4

125x3 − 2

125x2 +

2

125x+

1

125

).