Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему ШКОЛЬНОЕ ПРОГРАММИРОВАНИЕ КАК ЭТАП ПРОФОРИЕНТАЦИИ

Содержание

Популярностьhttp://www.tiobe.com/index.php/content/paperinfo/tpci/index.html декабрь 2015:JavaCC++PythonC#PHPVisual BasicJavaScriptв восьмёрке с 2008 года!
Язык Python в школьном курсе информатикиК.Ю. Поляков, В.М. Гуровиц Популярностьhttp://www.tiobe.com/index.php/content/paperinfo/tpci/index.html декабрь 2015:JavaCC++PythonC#PHPVisual BasicJavaScriptв восьмёрке с 2008 года! ИспользованиеКомпании:GoogleЯндексCERNNASA…Скрипты в программах:GIMPBlenderCinema 4DMayaInkscapeScribus…Linux, Windows, FreeBSD, Mac OS X, Android, iOS…Скрипты в Для обученияУниверситеты и колледжи:США – 33University of CaliforniaUniversity of FloridaUniversity of IowaMassachusetts Учебник К.Ю. Полякова и Е.А. Еремина ОлимпиадыВсероссийская олимпиада школьниковВсероссийская командная олимпиада школьниковМосковская командная олимпиада школьниковМосковская олимпиада школьников Командная Почему Python? Динамическая типизацияA = 100 			# целоеA = 4.5 			# вещественное A = Динамическая типизацияdef solve ( a, b ):  # a*x = b Структура = отступыУсловный оператор:if x > 0:  a = x Компактностьwhile b 0 do begin c := a mod b; a := Списки (массивы)ЗаполнениеA = [0]*Nfor i:=0 to N-1 do A[i] := 0;for i:=0 Списки (массивы)Выборка элементов по условиюcount := 0;for i:=0 to N-1 do if Списки (массивы)Реверс массиваfor i:=1 to N div 2 do begin c := Списки (массивы)Удалить повторяющиеся элементы массиваcount := 0;for i:=1 to N do begin Длинная арифметикаЗадача: вычислить 100! = 1 ⋅ 2 ⋅ 3 ⋅ … Алфавитно-частотный словарьЗадача: построить алфавитно-частотный словарьuses WordList;var F: text; s: string;  L: Черепашья графикаfrom turtle import *def tree ( levels, length ):  if var N, NN: integer;…write ( var a, b, c: integer;…write ( const MAX = 1000;var i, N: integer;  A: array[0..MAX-1] of integer;…readln C2 (демо-2014)Задача: найти и вывести максимальное значение среди трёхзначных элементов массива, не C4Задача: В первой строке вводится количество учащихся N, далее идут N строк C4 (решение)const LIM = 99;var C:array[1..LIM] of integer; i, p, N, k, C4-2014Задача: В первой строке вводится длина N последовательности, далее идут N положительных C4-2014 (решение)N = int(input())M3 = M7 = M21 = M = 0for Функциональное программированиеФункция – объект, который можно передавать в другие функции как аргумент Функциональное программированиеГенератор списковfor i:=0 to N do A[i] := i*i;A = [i*i Отбор элементов по условиюcount := 0;for i:=0 to N-1 do if A[i]*A[i]*A[i] Обработка всех элементов списка (map)for i:=0 to N-1 do B[i] := sin(A[i]);B Обработка всех элементов списка (map)Функции без имени (λ-функции)function x5(x: integer): integer;begin x5 Map – Reducefor i:=0 to N-1 do B[i] := f(A[i]);result := B[0];for B = list( map(        , Функциональное программированиеЗамена цикла рекурсиейfunction sumDigits(x: integer): integer;var s: integer;begin s := 0; Функциональное программированиеЗамена цикла рекурсиейdef isPalindrome ( s ): for i in range(len(s) Функциональное программированиеЗамена цикла рекурсиейdef balance ( s ): opened = 0 for Функциональное программированиеФункция, возвращающая функциюdef createFunc ( valid ): def f ( s Графический интерфейсСтандартный модуль tkinter.from simpletk import *app = TApplication( Графический интерфейсАльтернативы:wxPython, PyGTK, PyQt. Библиотекиmath – математические функцииfractions – рациональные дробиdecimal – десятичная арифметикаrandom – случайные Достоинстванизкий порог входаprint ( Грабли Грабли A[1:3] [12, 5] A[2:3] [5] A[:3] [7, 12, 5] A[0:3] A[5:] Граблиvar s: string;...for i:=1 to Length(s) do if s[i] = 'a' then Грабли«We are all consenting adults here».x1 = 0if a > b: xl Граблиs = Граблиprint ( trimLeft( Граблиprint ( trimLeft( ГраблиA = [1, 2, 3]B = A[1, 2, 3]ABA[0] = 0A = ГраблиГлобальные и локальные переменныеstate = 0def changeState(a, b): if a > b: ГраблиГлобальные и локальные переменныеx = 0def f(): print ( x )f()OK!x = Граблиclass dog: def __init__(self, _age):  self.age = _agedef spam(): tuzik.age = 100tuzik = dog(5)spam()print(tuzik.age)нет private! Недостаткидве несовместимых версии: 2.x и 3.xнужен интерпретатор для выполнениянизкая скорость (в 100 Дистанционное образованиеhttps://www.coursera.org/course/interactivepython Введение в интерактивное программирование на языке Python (англ.)https://www.edx.org/course/mitx/mitx-6-00-1x-introduction-computer-1498Введение в computer Дистанционное образованиеhttp://server.179.ru/~dk/python.html   Материалы по программированию на языке Python на сайте школы Конец фильмаПОЛЯКОВ Константин Юрьевичд.т.н., учитель информатикиГБОУ СОШ № 163, г. Санкт-Петербургkpolyakov@mail.ru ГУРОВИЦ
Слайды презентации

Слайд 2 Популярность
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
декабрь 2015:
Java
C
C++
Python
C#
PHP
Visual Basic
JavaScript

в восьмёрке с 2008 года!

Популярностьhttp://www.tiobe.com/index.php/content/paperinfo/tpci/index.html декабрь 2015:JavaCC++PythonC#PHPVisual BasicJavaScriptв восьмёрке с 2008 года!

Слайд 3 Использование
Компании:
Google
Яндекс
CERN
NASA


Скрипты в программах:
GIMP
Blender
Cinema 4D
Maya
Inkscape
Scribus


Linux, Windows, FreeBSD, Mac OS

ИспользованиеКомпании:GoogleЯндексCERNNASA…Скрипты в программах:GIMPBlenderCinema 4DMayaInkscapeScribus…Linux, Windows, FreeBSD, Mac OS X, Android, iOS…Скрипты

X,
Android, iOS…
Скрипты в играх:
Eve Online,
Civilization IV
Battlefield

2
Vampire



Слайд 4 Для обучения
Университеты и колледжи:
США – 33
University of California
University

Для обученияУниверситеты и колледжи:США – 33University of CaliforniaUniversity of FloridaUniversity of

of Florida
University of Iowa
Massachusetts Institute of Technology (MIT)
Канада

– 8
University of Toronto
University of Alberta
Франция – 6
Великобритания – 5
University of Oxford
Австралия – 3
Испания – 3


https://wiki.python.org/moin/SchoolsUsingPython

Вытесняет С и Java!

Москва:
СУНЦ МГУ
школа № 179 (МИОО)
школа № 2007
гимназия №1543 
гимназия «Вторая школа»
школа № 57


Слайд 5 Учебник К.Ю. Полякова и Е.А. Еремина

Учебник К.Ю. Полякова и Е.А. Еремина

Слайд 6 Олимпиады
Всероссийская олимпиада школьников
Всероссийская командная олимпиада школьников
Московская командная олимпиада

ОлимпиадыВсероссийская олимпиада школьниковВсероссийская командная олимпиада школьниковМосковская командная олимпиада школьниковМосковская олимпиада школьников

школьников
Московская олимпиада школьников
Командная олимпиада школьников Санкт-Петербурга
Интернет-олимпиады ИТМО
Russian Code

Cup

Сайты с автоматической проверкой решений:

informatics.mccme.ru
codeforces.com
acm.timus.ru
acmp.ru


Слайд 7 Почему Python?

Почему Python?

Слайд 8 Динамическая типизация
A = 100 # целое
A = 4.5

Динамическая типизацияA = 100 			# целоеA = 4.5 			# вещественное A

# вещественное
A = "Привет!" # строка
A = [1, 2,

3, 4, 5] # список (массив)
A = (1, "Вася", 3) # кортеж
A = {"Вася": 1, "Петя": 23} # словарь

Слайд 9 Динамическая типизация
def solve ( a, b ):

Динамическая типизацияdef solve ( a, b ): # a*x = b

# a*x = b
if a == 0:

if b == 0: return True
else: return None
else:
return b / a

логическое значение

пустое значение

число


Слайд 10 Структура = отступы
Условный оператор:
if x > 0:

Структура = отступыУсловный оператор:if x > 0: a = x if

a = x
if x > 1:

b = x
c = a + x
else:
b = x - 1
c = x*x
d = b + c




Цикл:

s = 0
for x in range(100):
a = x
c = 0
while a > 0:
c += a % 8
a = a // 8
s = s + c




Слайд 11 Компактность
while b 0 do begin
c :=

Компактностьwhile b 0 do begin c := a mod b; a

a mod b;
a := b;
b := c
end;
writeln

( a );

Алгоритм Евклида:

while b:
a, b = b, a % b
print ( a )

a, b = b, a

c := a
a := b
b := c

Обмен значений двух переменных:

a ← b0
b ← a0 mod b0


Слайд 12 Списки (массивы)
Заполнение
A = [0]*N
for i:=0 to N-1 do

Списки (массивы)ЗаполнениеA = [0]*Nfor i:=0 to N-1 do A[i] := 0;for

A[i] := 0;
for i:=0 to N-1 do
A[i] :=

i*i;

A = [i*i
for i in range(N)]

Максимум

M := A[0];
for i:=1 to N-1 do
if A[i] > M then
M := A[i];

M = max(A)


Слайд 13 Списки (массивы)
Выборка элементов по условию
count := 0;
for i:=0

Списки (массивы)Выборка элементов по условиюcount := 0;for i:=0 to N-1 do

to N-1 do
if A[i] > 0 then begin

count := count + 1;
B[count] := A[i]
end;

B = [x for x in A if x > 0]

Сортировка

for i:=0 to N-1 do
for j:=N-2 downto i do
if A[j] > A[j+1] then begin
c:=A[j]; A[j]:=A[j+1];
A[j+1]:=c
end;

A.sort()

B = [x
for x in A
if x > 0]

for x in A


Слайд 14 Списки (массивы)
Реверс массива
for i:=1 to N div 2

Списки (массивы)Реверс массиваfor i:=1 to N div 2 do begin c

do begin
c := A[i];
A[i] := A[N-i+1]
A[N-i+1]

:= c;
end;

A = A[::-1]


Слайд 15 Списки (массивы)
Удалить повторяющиеся элементы массива
count := 0;
for i:=1

Списки (массивы)Удалить повторяющиеся элементы массиваcount := 0;for i:=1 to N do

to N do begin
j := 1;
while (j

<= count) and (A[i] <> B[j]) do
j := j + 1;
if j > count then begin
count := count + 1;
B[count] := A[i]
end
end;

B = list( set(A) )


Слайд 16 Длинная арифметика
Задача: вычислить 100! = 1 ⋅ 2

Длинная арифметикаЗадача: вычислить 100! = 1 ⋅ 2 ⋅ 3 ⋅

⋅ 3 ⋅ … ⋅ 100
const N = 33;


d = 1000000;
var A: array[0..N] of longint;
i, k, s, r: integer;
begin
A[0]:= 1;
for k:= 2 to 100 do begin
r:= 0;
for i:= 0 to N do begin
s:= A[i]*k + r;
A[i]:= s mod d;
r := s div d
end
end
{ вывод длинного числа из
массива A }
end.

import math
print ( math.factorial(100) )

A = 1
for i in range(2,101):
A = A*i
print ( A )

или так:


Слайд 17 Алфавитно-частотный словарь
Задача: построить алфавитно-частотный словарь
uses WordList;
var F: text;

Алфавитно-частотный словарьЗадача: построить алфавитно-частотный словарьuses WordList;var F: text; s: string; L:

s: string;
L: TWordList; p: integer;
begin
Assign(F, 'input.txt');

Reset(F);
SetLength(L.data, 0);
L.size := 0;
while not eof(F) do begin
readln(F, s);
p := Find ( L, s );
if p >= 0 then
L.data[p].count := L.data[p].count + 1
else begin
p := FindPlace ( L, s );
InsertWord ( L, p, s );
end
end;
Close(F);
...
end.

Модуль ≈ 50 строк!

D = {}
for line in open("input_list.txt"):
word = line.strip()
if word:
D[word] = D.get(word, 0) + 1


Слайд 18 Черепашья графика
from turtle import *
def tree ( levels,

Черепашья графикаfrom turtle import *def tree ( levels, length ): if

length ):
if levels > 0:
forward

( length )
left ( 45 )
tree ( levels-1, length*0.6)
right ( 90 )
tree ( levels-1, length*0.6)
left ( 45 )
backward ( length )
setheading ( 90 )
tree ( 5, 100 )

from turtle_rus import *
def дерево ( уровни, длина ):
if уровни > 0:
вперед ( длина )
влево ( 45 )
дерево ( уровни-1, длина*0.6)
вправо ( 90 )
дерево ( уровни-1, длина*0.6)
влево ( 45 )
назад ( длина )
новый_курс ( 90 )
дерево ( 5, 100 )


Слайд 19 var N, NN: integer;

write ( "Введите число "

var N, NN: integer;…write (

);
read ( N );
NN := N*2;
write ( NN );
Ввод

с клавиатуры

N = input ( "Введите число " )
NN = N * 2
print ( NN )

тип неизвестен!

1212

Введите число 12

N = int(input("Введите число "))
NN = N * 2
print ( NN )

24

Введите число 12


Слайд 20 var a, b, c: integer;

write ( "Введите три

var a, b, c: integer;…write (

числа " );
read ( a, b, c );
Ввод с

клавиатуры

s = input ( "Введите три числа " ) # "1 2 3"
a, b, c = map ( int, s.split() )

q = s.split() # список ["1", "2", "3"]
a = int(q[0]) # 1
b = int(q[1]) # 2
c = int(q[2]) # 3


Слайд 21 const MAX = 1000;
var i, N: integer;

const MAX = 1000;var i, N: integer; A: array[0..MAX-1] of integer;…readln

A: array[0..MAX-1] of integer;

readln ( N );
for i:=0 to

N-1 do
read ( A[i] );

Ввод массива с клавиатуры

N = int(input())
A = list( map(int, input().split()) )

N не нужно!



Слайд 22 C2 (демо-2014)
Задача: найти и вывести максимальное значение среди

C2 (демо-2014)Задача: найти и вывести максимальное значение среди трёхзначных элементов массива,

трёхзначных элементов массива, не делящихся на 9.
max := 0;
for

i := 0 to N-1 do
if (100<=a[i]) and (a[i]<=998) and
(a[i] mod 9<>0) and (a[i]>max) then
max := a[i];
if max > 0 then
writeln(max)
else writeln("Не найдено");

a = [x for x in a
if 100 <= x and x <= 999
and x % 9 != 0]
if len(a) > 0:
print(max(a))
else:
print("Не найдено")

for x in a


Слайд 23 C4
Задача: В первой строке вводится количество учащихся N,

C4Задача: В первой строке вводится количество учащихся N, далее идут N

далее идут N строк в формате:

<Фамилия> <Инициалы> <номер школы>
Номер школы < 100.
Из какой школы было меньше всего участников (таких школ может быть несколько)?

Слайд 24 C4 (решение)
const LIM = 99;
var C:array[1..LIM] of integer;

C4 (решение)const LIM = 99;var C:array[1..LIM] of integer; i, p, N,

i, p, N, k, r, Min: integer;
s:string;
begin
for

k:=1 to 99 do C[k]:=0;
readln(N);
for i:=1 to N do begin
readln(s);
p := Pos(' ', s);
Delete(s, 1, p+5);
Val(s, k, r);
C[k] := C[k] + 1
end;
Min := N;
for k:=1 to LIM do
if (C[k] <> 0) and (C[k] Min := C[k];
for k:=1 to LIM do
if C[k] = Min then
writeln(k);
end.

N = int(input())
schCount = {}
for i in range(N):
x, x, school = input().split()
schCount[school] = \
schCount.get(school, 0) + 1
minCount = min(schCount.values())
schMin = [x[0] for x in schCount.items()
if x[1] == minCount]
for x in sorted(schMin):
print(x)

словарь
«номер-счётчик»


Слайд 25 C4-2014
Задача: В первой строке вводится длина N последовательности,

C4-2014Задача: В первой строке вводится длина N последовательности, далее идут N

далее идут N положительных чисел, по одному в строке,

а затем – контрольная сумма R – наибольшее произведение двух различных элементов последовательности, которое делится на 21. Проверить правильность контрольной суммы.

Слайд 26 C4-2014 (решение)
N = int(input())
M3 = M7 = M21

C4-2014 (решение)N = int(input())M3 = M7 = M21 = M =

= M = 0
for i in range(N):
x

= int(input())
if x % 21 != 0:
if x % 3 == 0: M3 = max(M3, x)
if x % 7 == 0: M7 = max(M7, x)
if x % 21 == 0 and x > M21:
M = max(M21, M)
M21 = x
else: M = max(M, x)
R0 = int(input())
R = max(M3*M7, M21*M)
if R == R0: print("Контроль пройден")
else: print("Контроль не пройден")

Слайд 27 Функциональное программирование
Функция – объект, который можно передавать в

Функциональное программированиеФункция – объект, который можно передавать в другие функции как

другие функции как аргумент и возвращать как результат других

функций.

Языки LISP, Scheme, Haskell, Scala, Erlang, F#, …


Слайд 28 Функциональное программирование
Генератор списков
for i:=0 to N do
A[i]

Функциональное программированиеГенератор списковfor i:=0 to N do A[i] := i*i;A =

:= i*i;
A = [i*i
for i

in range(N)]

Самая длинная строка в файле

s = max ( open("test.txt"), key=len )

count := 0;
for i:=0 to N do
if f(i) = 0 then begin
A[count] := i*i;
count := count + 1;
end;

A = [i*i
for i in range(N)
if f(i) == 0 ]

ключ сортировки


Слайд 29 Отбор элементов по условию
count := 0;
for i:=0 to

Отбор элементов по условиюcount := 0;for i:=0 to N-1 do if

N-1 do
if A[i]*A[i]*A[i] > 100 then begin

count := count + 1;
B[count] := A[i]
end;

B = [x
for x in A
if x**3 > 100]

!

!

!

!

Задача: Отобрать в массив B все элементы массива A, кубы которых больше 100.


Слайд 30 Обработка всех элементов списка (map)
for i:=0 to N-1

Обработка всех элементов списка (map)for i:=0 to N-1 do B[i] :=

do
B[i] := sin(A[i]);
B = list( map(math.sin, A) )

A
B
функция

передаётся как параметр функции

Слайд 31 Обработка всех элементов списка (map)
Функции без имени (λ-функции)
function

Обработка всех элементов списка (map)Функции без имени (λ-функции)function x5(x: integer): integer;begin

x5(x: integer): integer;
begin
x5 := x*x*x*x*x;
end;
...
for i:=0 to N-1

do
B[i] := x5(A[i])

def x5 ( x ):
return x**5
B = list( map(x5, A) )

B = list( map( lambda x: x**5 , A) )

lambda x: x**5

sqr = lambda x: x**2
prod = lambda p, x: p * x

lambda x: x**2

lambda p, x: p * x

Переменные-функции


Слайд 32 Map – Reduce
for i:=0 to N-1 do
B[i]

Map – Reducefor i:=0 to N-1 do B[i] := f(A[i]);result :=

:= f(A[i]);
result := B[0];
for i:=1 to N-1 do

result := G(result, B[i]);

Map

A

B

Reduce

Задача: Определить, сколько страниц со словом «Python» есть на всех серверах компании.

каждый сервер отдельно!


Слайд 33 B = list( map(

B = list( map(    , A) )p =

, A) )
p = reduce(

, B )

Map – Reduce

B = list( map( f, A ) )
p = reduce( G, B )

lambda p, x: p+x

from functools import reduce

функция обработки

функция накопления

Пример:

lambda x: x*x


Слайд 34 Функциональное программирование
Замена цикла рекурсией
function sumDigits(x: integer): integer;
var s:

Функциональное программированиеЗамена цикла рекурсиейfunction sumDigits(x: integer): integer;var s: integer;begin s :=

integer;
begin
s := 0;
while x 0 do

begin
s := s + x mod 10;
x := x div 10
end;
sumDigits := s
end;

!

!

def sumDigits ( x ):
return sum( map(int, str(n)) )

def sumDigits ( x ):
if x > 0:
return ( x % 10 +
sumDigits(x//10) )
else:
return 0


Слайд 35 Функциональное программирование
Замена цикла рекурсией
def isPalindrome ( s ):

Функциональное программированиеЗамена цикла рекурсиейdef isPalindrome ( s ): for i in

for i in range(len(s) // 2):
if s[i]

!= s[-1-i]:
return False
return True

def isPalindrome ( s ):
if len(s) > 1:
return s[0] == s[-1] and \
isPalindrome(s[1:-1])
else:
return True

!

!


Слайд 36 Функциональное программирование
Замена цикла рекурсией
def balance ( s ):

Функциональное программированиеЗамена цикла рекурсиейdef balance ( s ): opened = 0

opened = 0
for c in s:
if

c == '(':
opened += 1
elif c == ')':
if opened < 1:
return False
opened -= 1
return opened == 0

def balance ( s, opened = 0 ):
if len(s) == 0:
return opened == 0
elif s[0] == '(':
return balance(s[1:], opened+1)
elif s[0] == ')':
return opened > 0 and \
balance(s[1:], opened-1)
else:
return balance(s[1:], opened)

(if(z)x(/))

():-)

()())(()





Слайд 37 Функциональное программирование
Функция, возвращающая функцию
def createFunc ( valid ):

Функциональное программированиеФункция, возвращающая функциюdef createFunc ( valid ): def f (

def f ( s ):
return s ==

valid
return f

запомнили!

check = createFunc ( "pass" )
print ( check("pass") ) # True
print ( check("bla-bla-bla") ) # False

получили функцию



Слайд 39 Графический интерфейс
Альтернативы:
wxPython, PyGTK, PyQt.

Графический интерфейсАльтернативы:wxPython, PyGTK, PyQt.

Слайд 40 Библиотеки
math – математические функции
fractions – рациональные дроби
decimal –

Библиотекиmath – математические функцииfractions – рациональные дробиdecimal – десятичная арифметикаrandom –

десятичная арифметика
random – случайные числа, случайный выбор, случайная перестановка

элементов
re – регулярные выражения
itertools – перестановки, сочетания
webbrowser, urllib, http, ftplib, … – работа с сетью
tkinter – графический интерфейс
pyGame – программирование игр http://www.pygame.org/news.html
simplegui – модуль для программирования игр на сайте http://www.codeskulptor.org

Слайд 41 Достоинства
низкий порог входа
print ( "Привет!" )
применяется в профессиональных

Достоинстванизкий порог входаprint (

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

высокого уровня, чем C и Паскаль (списки, словари, …)
поддержка любых языков (utf-8)
большая библиотека
возможность разработки программ с графическим интерфейсом
различные подходы к программированию (императивный, ООП, функциональный, …)

Слайд 42 Грабли

Грабли

Слайд 43 Грабли
A[1:3]

[12, 5]
A[2:3]

Грабли A[1:3] [12, 5] A[2:3] [5] A[:3] [7, 12, 5] A[0:3]

[5]
A[:3]
[7, 12, 5]
A[0:3]




A[5:]

[34, 40, 23]

A[5:8]



A[3:-2]

[8, 18, 34]

A[3:6]




len(A)-2


Слайд 44 Грабли
var s: string;
...
for i:=1 to Length(s) do
if

Граблиvar s: string;...for i:=1 to Length(s) do if s[i] = 'a'

s[i] = 'a' then s[i] := 'b';
for i in

range(len(s)):
if s[i] == "a":
s = s[:i] + "b" + s[i+1:]

s[i] = "b"


с начала до s[i-1]

от s[i+1] до конца


Слайд 45 Грабли
«We are all consenting adults here».
x1 = 0
if

Грабли«We are all consenting adults here».x1 = 0if a > b:

a > b:
xl = 1
нет ошибки!
if a >

b:
print("OK")
else:
this is spam

нет ошибки, пока не пришли сюда!


Слайд 46 Грабли
s = "1"
...
s + s + "2"
print( s

Граблиs =

)
1
должно быть
s = s + "2"


Слайд 47 Грабли
print ( trimLeft(" 123 ") )
print

Граблиprint ( trimLeft(

( trimLeft(123) )
def trimLeft ( s ):
while len(s)

and s[0] == ' ':
s = s[1:]
return s

нет ошибки, пока не пришли сюда!


Слайд 48 Грабли
print ( trimLeft(" 123 ") )
def

Граблиprint ( trimLeft(

trimLeft ( s ):
while len(s) and s[0] ==

' ':
s = s[1:]

None

return s

A = [2, 1, 3, 7, 5, 4]
B = A.sort()
print ( B )

None


Слайд 49 Грабли
A = [1, 2, 3]
B = A
[1, 2,

ГраблиA = [1, 2, 3]B = A[1, 2, 3]ABA[0] = 0A

3]
A

B

A[0] = 0

A = [1, 2, 3]
B = A[:]
копия

массива A

[1, 2, 3]

A


[1, 2, 3]

B


A[0] = 0



Слайд 50 Грабли
Глобальные и локальные переменные
state = 0
def changeState(a, b):

ГраблиГлобальные и локальные переменныеstate = 0def changeState(a, b): if a >

if a > b:
state = 1
changeState (

2, 1 )
print ( state )

новая локальная переменная!

0

state = 0
def changeState(a, b):
global state
if a > b:
state = 1
changeState ( 2, 1 )
print ( state )

global state


Слайд 51 Грабли
Глобальные и локальные переменные
x = 0
def f():
print

ГраблиГлобальные и локальные переменныеx = 0def f(): print ( x )f()OK!x

( x )
f()
OK!
x = 0
def f():
x += 3

print ( x )
f()

использование локальной переменной до определения!

x = 0
def f():
global x
x += 3
print ( x )
f()

global x


Слайд 52 Грабли
class dog:
def __init__(self, _age):
self.age =

Граблиclass dog: def __init__(self, _age): self.age = _agedef spam(): tuzik.age = 100tuzik = dog(5)spam()print(tuzik.age)нет private!

_age
def spam():
tuzik.age = 100
tuzik = dog(5)
spam()
print(tuzik.age)
нет private!


Слайд 53 Недостатки
две несовместимых версии: 2.x и 3.x
нужен интерпретатор для

Недостаткидве несовместимых версии: 2.x и 3.xнужен интерпретатор для выполнениянизкая скорость (в

выполнения
низкая скорость (в 100 раз ниже, чем на C)
увеличенный

расход памяти
нет проверки типов данных
нет доступа к низкоуровневым средствам (размещение данных в памяти, аппаратура)
неклассическая объектная модель (нет private и protected)
нет надёжных RAD-систем для программ с графическим интерфейсом

Слайд 54 Дистанционное образование
https://www.coursera.org/course/interactivepython
Введение в интерактивное программирование на языке

Дистанционное образованиеhttps://www.coursera.org/course/interactivepython Введение в интерактивное программирование на языке Python (англ.)https://www.edx.org/course/mitx/mitx-6-00-1x-introduction-computer-1498Введение в

Python (англ.)
https://www.edx.org/course/mitx/mitx-6-00-1x-introduction-computer-1498
Введение в computer science и программирование на языке

Python (англ.)

http://www.codecademy.com/ru/tracks/python

Языке Python на сайте Codecademy (англ.)

http://www.codeskulptor.org/

Онлайн-среда для интерактивного программирования на языке Python


Слайд 55 Дистанционное образование
http://server.179.ru/~dk/python.html  
Материалы по программированию на языке

Дистанционное образованиеhttp://server.179.ru/~dk/python.html   Материалы по программированию на языке Python на сайте

Python на сайте школы 179 г. Москва
http://informatics.mccme.ru/course/view.php?id=156
Курс Д.

Кириенко на сайте «Дистанционная подготовка по информатике»

http://www.codeskulptor.org/
http://pythontutor.com/
http://ideone.com/
http://www.compileonline.com/execute_python_online.php
http://www.skulpt.org/

Онлайн-среды:

http://pythontutor.ru

Интерактивный учебник языка Python (автор курса – Д. Кириенко)


  • Имя файла: prezentatsiya-shkolnoe-programmirovanie-kak-etap-proforientatsii.pptx
  • Количество просмотров: 135
  • Количество скачиваний: 0