Что такое findtheslide.com?

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


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

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

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

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

Презентация на тему Функции, функциональное программирование

Содержание

Парадигма программирования. — это совокупность идей и понятий, определяющая стиль написания программ.Императивное программирование Программы представляют собой последовательность действий с уcловными и безусловными переходами.Декларативное программирование Способ, описывающий, не как решить задачу, а что нужно получить. Описывается спецификация программы.
Функции, функциональное программированиеЮрова Анна, группа 222 Парадигма программирования. — это совокупность идей и понятий, определяющая стиль написания программ.Императивное программирование Функциональное программированиеПарадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций Концепции. Функции высших порядков  функции, которые могут принимать в качестве аргументов Модель вычисления без состояний.Императивная программа:на любом этапе исполнения имеет состояние(совокупность значений всех Особенности.чисто функциональная программа не может изменять уже имеющиеся у неё данные, а Сильные стороны.Повышение надёжности кода  за счёт чёткой структуризации  и отсутствия Недостатки и как с ними бороться.Отсутствие присваиваний и замена их на порождение Python.Python поддерживает конструкции функционального программирования, которые можно сочетать с императивными. Функции в Python.def (arg1, arg2,..., argN):  '''строка документации'''  def (arg1, Функции в Python.определение функции происходит во время выполнения. имя функции не является Функции в Python.def func(x, y):  return x**2 + y**2 func = Функции в Python. Аргументы.def func(x, y, z=7)  return x+y+z print func(1, y=3) # 1+3+7=11 Области видимости.Имена, определяемые внутри инструкции def, видны ТОЛЬКО программному коду внутри инструкции Области видимости.#Глобальная область видимости.X = 99 # X и func определены в Области видимости. Инструкция global.y, z = 1,2 #Глобальные переменные Функции в Python.Функции в Python являются объектами первого класса, то есть, они List comprehension. (Списочные выражения)range(5)#[0, 1, 2, 3, 4]L = [ a ** Функции высших порядков. Map().list1 = [1,3,5]list2 =[1,2,3]def inc(x):  return x+10map(inc, list1)#[11, Функции высших порядков. Filter()list = [9, 1, -4, 3, 8]filter(lambda x: x Функции высших порядков. Reduce()list = [2, 3, 4, 5, 6] reduce(lambda res, Функции высших порядков. Apply()def f(x, y, z, a=None, b=None):   print Замыкания.def make_adder(x):   def adder(n):     return x Замыкания. Partial.from functools import partial def add(a, b):   return a Итераторы.it = enumerate(sorted( Генераторы.генераторы — функции, сохраняющие внутреннее состояние: значения локальных переменных и текущую инструкциюdef Генераторные выражения.генераторные выражения — выражения, дающие в результате генераторГенераторные выражения позволяют сэкономить Литература.Марк Лутц. Изучаем Питон. 3-е издание.http://ru.wikipedia.org/wiki/Функциональное_программирование_на_Питонеhttp://ru.wikipedia.org/wiki/Функциональное_программированиеГ. Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач «Язык программирования Python»Журнал «Практика функционального программирования» http://fprog.ru/
Слайды презентации

Слайд 1 Функции, функциональное программирование



Юрова Анна, группа 222

Функции, функциональное программированиеЮрова Анна, группа 222

Слайд 2 Парадигма программирования.
 — это совокупность идей и понятий, определяющая стиль написания

программ.

Императивное программирование
Программы представляют собой последовательность действий с уcловными и безусловными переходами.

Декларативное программирование
Способ, описывающий, не как решить задачу, а что нужно получить. Описывается спецификация программы.
Частный случай: функциональное программирование.
Парадигма программирования. — это совокупность идей и понятий, определяющая стиль написания программ.Императивное


Слайд 3 Функциональное программирование
Парадигма программирования, в которой процесс вычисления трактуется как вычисление

значений функций в математическом понимании (в отличие от функций как подпрограмм в процедурном программировании).

Ключевой вопрос:
ЧТО нужно вычислить, а не КАК.
Функциональное программированиеПарадигма программирования, в которой процесс вычисления трактуется как вычисление значений


Слайд 4 Концепции.
Функции высших порядков
функции, которые могут принимать в

качестве аргументов и возвращать другие функции.

Чистые функции
функция может управлять только выделенной для неё памятью, не модифицируя память вне своей области.

Ленивость
функция не производит вычислений до тех пор, пока их результат не будет необходим в работе программы.

Рекурсия
цикл организуется в виде рекурсии. переполнения
стека можно избежать при помощи хвостовой рекурсии.


Концепции. Функции высших порядков  функции, которые могут принимать в качестве


Слайд 5 Модель вычисления без состояний.
Императивная программа:
на любом этапе исполнения имеет состояние(совокупность

значений всех переменных).
последовательность инструкций, описывающих КАК компьютер должен решать задачу, основываясь на состоянии, изменяемом шаг за шагом.

Функциональная программа:
ни целиком, ни частями состояния не имеет.
описывает, ЧТО должно быть вычислено. Является выражением, определенным в терминах заранее заданных функций и функций, заданных пользователем. Величина этого выражения – результат программы.
Модель вычисления без состояний.Императивная программа:на любом этапе исполнения имеет состояние(совокупность значений


Слайд 6 Особенности.
чисто функциональная программа не может изменять уже имеющиеся у неё

данные, а может лишь порождать новые путём копирования и/или расширения старых.


в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим одинаковый результат: выходные данные зависят только от входных.
Особенности.чисто функциональная программа не может изменять уже имеющиеся у неё данные,


Слайд 7 Сильные стороны.
Повышение надёжности кода
за счёт чёткой структуризации

и отсутствия необходимости отслеживания побочных эффектов.

Удобство организации модульного тестирования
возможность протестировать каждую функцию в программе, просто вычислив её от различных наборов значений аргументов.

Возможности оптимизации при компиляции
так как не задана последовательность выполнения.

Возможности параллелизма.
всегда допустимо параллельное вычисление двух различных параметров . Порядок их вычисления не может оказать влияния на результат вызова.

Сильные стороны.Повышение надёжности кода  за счёт чёткой структуризации  и


Слайд 8 Недостатки и как с ними бороться.
Отсутствие присваиваний и замена их

на порождение новых данных приводят к большим затратам памяти и вычислений при копировании.

Сборщик мусора.
специальный код, который периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложением
Недостатки и как с ними бороться.Отсутствие присваиваний и замена их на

Слайд 9 Python.
Python поддерживает конструкции функционального программирования, которые можно сочетать с императивными.

Python.Python поддерживает конструкции функционального программирования, которые можно сочетать с императивными.

Слайд 10 Функции в Python.
def (arg1, arg2,..., argN):
'''строка документации'''


def (arg1, arg2,..., argN):
...
return

Без аргументов return используется для выхода из функции без возвращаемого значения.
В этом случае возвращается значение None.

Тип возвращаемого значения определяется аргументами, которые передаются функции.
Функции в Python.def (arg1, arg2,..., argN):  '''строка документации'''  def


Слайд 11 Функции в Python.
определение функции происходит во время выполнения.

имя функции

не является однозначно определенным. Важен только объект на который ссылается имя.


othername = func #связывание объекта функции
с именем
othername() #вызов функции
Функции в Python.определение функции происходит во время выполнения. имя функции не

Слайд 12 Функции в Python.
def func(x, y):
return x**2 +

y**2

func = lambda x, y: x**2 + y**2

Определение и использование на месте:

>>> (lambda x: x+2)(5)
7
Функции в Python.def func(x, y):  return x**2 + y**2 func


Слайд 13 Функции в Python. Аргументы.
def func(x, y, z=7)
return x+y+z


print func(1, y=3) # 1+3+7=11
Функции в Python. Аргументы.def func(x, y, z=7)  return x+y+z print func(1, y=3) # 1+3+7=11

Слайд 14 Области видимости.
Имена, определяемые внутри инструкции def, видны ТОЛЬКО программному коду

внутри инструкции def. К ним нельзя обратиться за пределами функции.

Имена, определяемые внутри инструкции def, не вступают в конфликт с именами, находящимися за пределами инструкции def.
Области видимости.Имена, определяемые внутри инструкции def, видны ТОЛЬКО программному коду внутри

Слайд 15 Области видимости.
#Глобальная область видимости.
X = 99 # X и func

определены в модуле:
глобальная область
def func(Y): # Y и Z определены в функции:
локальная область
#Локальная область видимости
Z = X + Y # X – глобальная переменная
return Z

func(1) #result = 100
Области видимости.#Глобальная область видимости.X = 99 # X и func определены

Слайд 16 Области видимости. Инструкция global.
y, z = 1,2 #Глобальные переменные

в модуле.
def all_global():
global x #объявляется глобальной
для присваивания
x = y + z
Области видимости. Инструкция global.y, z = 1,2 #Глобальные переменные

Слайд 17 Функции в Python.
Функции в Python являются объектами первого класса, то

есть, они могут употребляться в программе наравне с объектами других типов данных.
Функции в Python.Функции в Python являются объектами первого класса, то есть,

Слайд 18 List comprehension. (Списочные выражения)
range(5)
#[0, 1, 2, 3, 4]

L = [ a

** 2 for a in range(5) ]
#[0, 1, 4, 9, 16]

L = [a**2 for a in range(5) if a % 2 == 1]
#[1, 9]

L = [a1 + a2 for a1 in ['a','b','c'] for a2 in ['x','y']]
#['ax', 'ay', 'bx', 'by', 'cx', 'cy']
List comprehension. (Списочные выражения)range(5)#[0, 1, 2, 3, 4]L = [ a

Слайд 19 Функции высших порядков. Map().
list1 = [1,3,5]
list2 =[1,2,3]

def inc(x):
return

x+10

map(inc, list1)
#[11, 13, 15]

map(lambda x, y: x**y, list1, list2)
#[1, 9, 125]

[x * y for x, y in zip(list1, list2)]
#[1, 9, 125]
Функции высших порядков. Map().list1 = [1,3,5]list2 =[1,2,3]def inc(x):  return x+10map(inc,

Слайд 20 Функции высших порядков. Filter()
list = [9, 1, -4, 3, 8]
filter(lambda

x: x < 5, list)
#[1, -4, 3]


list = [9, 1, -4, 3, 8]
[x for x in list if x < 5]
# [1, -4, 3]
Функции высших порядков. Filter()list = [9, 1, -4, 3, 8]filter(lambda x:

Слайд 21 Функции высших порядков. Reduce()
list = [2, 3, 4, 5, 6]


reduce(lambda res, x: res*x, list, 1)
#720 = ((((1*2)*3)*4)*5)*6

reduce(lambda res, x: res*x, [], 1)
#1

reduce(lambda res, x: [x]+res, [1, 2, 3, 4], [])
#[4, 3, 2, 1]

reversed([1,2,3,4,5])
#[5,4,3,2,1]
Функции высших порядков. Reduce()list = [2, 3, 4, 5, 6] reduce(lambda

Слайд 22 Функции высших порядков. Apply()
def f(x, y, z, a=None, b=None):

print x, y, z, a, b

apply(f, [1, 2, 3], {'a': 4, 'b': 5})
#1 2 3 4 5

f(*[1, 2, 3], **{'a': 4, 'b': 5})
1 2 3 4 5
Функции высших порядков. Apply()def f(x, y, z, a=None, b=None):

Слайд 23 Замыкания.
def make_adder(x):
def adder(n):

return x + n # захват переменной "x" из
внешнего контекста
return adder

# То же самое, но через безымянные функции:

make_adder = lambda x: ( lambda n: ( x + n ) )
f = make_adder(10)

print f(7) # 17
print f(-4) # 6
Замыкания.def make_adder(x):   def adder(n):     return

Слайд 24 Замыкания. Partial.
from functools import partial
def add(a, b):

return a + b

add1 = partial(add, b=1)


print add1(2)
#3
Замыкания. Partial.from functools import partial def add(a, b):   return

Слайд 25 Итераторы.
it = enumerate(sorted("PYTHON")) it.next()
#(0, 'H')

print list(it)
#[(1,'N'),(2,'O'),(3,'P'),(4,'T'),(5,'Y')]
В

модуле itertools есть функции для работы с итераторами, позволяющие кратко и эффективно  выразить требуемые процессы обработки списков.

Итератор – объект, позволяющий программисту перебирать все элементы коллекции без учёта её особенностей реализации.
Итераторы.it = enumerate(sorted(


Слайд 26 Генераторы.
генераторы — функции, сохраняющие внутреннее состояние: значения локальных переменных и

текущую инструкцию

def gen_fibonacci(n=100):
a, b = 0, 1
while a < n:
yield a #вместо return
a, b = b, a+b # напечатать все числа Фибоначчи < 1000
for i in gen_fibonacci(1000):
print i
Генераторы.генераторы — функции, сохраняющие внутреннее состояние: значения локальных переменных и текущую


Слайд 27 Генераторные выражения.
генераторные выражения — выражения, дающие в результате генератор
Генераторные выражения

позволяют сэкономить память там, где иначе требовалось бы использовать список с промежуточными результатами.

sum(i for i in xrange(1, 100) if i % 2 != 0)
#2500
Генераторные выражения.генераторные выражения — выражения, дающие в результате генераторГенераторные выражения позволяют


Слайд 28 Литература.
Марк Лутц. Изучаем Питон. 3-е издание.
http://ru.wikipedia.org/wiki/Функциональное_программирование_на_Питоне
http://ru.wikipedia.org/wiki/Функциональное_программирование
Г. Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач «Язык

программирования Python»
Журнал «Практика функционального программирования» http://fprog.ru/


Литература.Марк Лутц. Изучаем Питон. 3-е издание.http://ru.wikipedia.org/wiki/Функциональное_программирование_на_Питонеhttp://ru.wikipedia.org/wiki/Функциональное_программированиеГ. Россум, Ф.Л.Дж.Дрейк, Д.С.Откидач «Язык программирования Python»Журнал «Практика функционального программирования» http://fprog.ru/
  • Имя файла: funktsii-funktsionalnoe-programmirovanie.pptx
  • Количество просмотров: 58
  • Количество скачиваний: 0