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

Презентация: Функциональное программирование
Включить эффекты
1 из 28
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
3.3
2 оценки

Комментарии

Нет комментариев для данной презентации

Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.


Добавить свой комментарий

Аннотация к презентации

Презентация для студентов на тему "Функциональное программирование" по информатике. Состоит из 28 слайдов. Размер файла 0.15 Мб. Каталог презентаций в формате powerpoint. Можно бесплатно скачать материал к себе на компьютер или смотреть его онлайн с анимацией.

Содержание

  • Презентация: Функциональное программирование
    Слайд 1

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

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

  • Слайд 2

    Парадигма программирования.

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

  • Слайд 3

    Функциональное программирование

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

  • Слайд 4

    Концепции.

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

  • Слайд 5

    Модель вычисления без состояний.

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

  • Слайд 6

    Особенности.

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

  • Слайд 7

    Сильные стороны.

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

  • Слайд 8

    Недостатки и как с ними бороться.

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

  • Слайд 9

    Python.

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

  • Слайд 10

    Функции в Python.

    def (arg1, arg2,..., argN): '''строка документации''' def (arg1, arg2,..., argN): ... return Без аргументов return используется длявыхода из функции без возвращаемого значения. В этом случае возвращается значение None. Тип возвращаемого значения определяется аргументами, которые передаются функции.

  • Слайд 11

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

  • Слайд 12

    deffunc(x, y): return x**2 + y**2 func = lambda x, y: x**2 + y**2 Определение и использование на месте: >>> (lambda x: x+2)(5) 7

  • Слайд 13

    Функции в Python. Аргументы.

    deffunc(x, y, z=7) returnx+y+z printfunc(1, y=3)# 1+3+7=11

  • Слайд 14

    Области видимости.

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

  • Слайд 15

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

  • Слайд 16

    Области видимости. Инструкция global.

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

  • Слайд 17

    Функции в Python.

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

  • Слайд 18

    List comprehension.(Списочные выражения)

    range(5) #[0, 1, 2, 3, 4] L = [ a **2for a inrange(5)] #[0, 1, 4, 9, 16] L = [a**2forainrange(5)ifa%2== 1] #[1, 9] L = [a1 + a2fora1in['a','b','c']fora2in['x','y']] #['ax', 'ay', 'bx', 'by', 'cx', 'cy']

  • Слайд 19

    Функции высших порядков. Map().

    list1 = [1,3,5] list2 =[1,2,3] definc(x): return x+10 map(inc, list1) #[11, 13, 15] map(lambdax, y:x**y,list1, list2) #[1, 9, 125] [x * y for x, y inzip(list1, list2)] #[1, 9, 125]

  • Слайд 20

    Функции высших порядков.Filter()

    list = [9,1,-4,3,8] filter(lambda x: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]

  • Слайд 22

    Функции высших порядков. Apply()

    deff(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

  • Слайд 23

    Замыкания.

    defmake_adder(x): defadder(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

  • Слайд 24

    Замыкания. Partial.

    from functoolsimport partial defadd(a, b): return a + b add1 = partial(add, b=1) print add1(2) #3

  • Слайд 25

    Итераторы.

    it = enumerate(sorted("PYTHON")) it.next() #(0, 'H') printlist(it) #[(1,'N'),(2,'O'),(3,'P'),(4,'T'),(5,'Y')] В модуле itertools есть функции для работы с итераторами, позволяющие кратко и эффективно  выразить требуемые процессы обработки списков. Итератор – объект, позволяющий программисту перебирать все элементы коллекции без учёта её особенностей реализации.

  • Слайд 26

    Генераторы.

    генераторы— функции, сохраняющие внутреннее состояние: значения локальных переменных и текущую инструкцию defgen_fibonacci(n=100): a, b =0,1 while a

  • Слайд 27

    Генераторные выражения.

    генераторные выражения— выражения, дающие в результате генератор Генераторные выражения позволяют сэкономить память там, где иначе требовалось бы использовать список с промежуточными результатами. sum(iforiinxrange(1, 100)ifi% 2 !=0) #2500

  • Слайд 28

    Литература.

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

Посмотреть все слайды

Сообщить об ошибке