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

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

Слайд 1
Слайд 2
Слайд 3
Слайд 4
Слайд 5
Слайд 6
Слайд 7
Слайд 8
Слайд 9
Слайд 10
Слайд 11
Слайд 12
Слайд 13
Слайд 14
Слайд 15
Слайд 16
Слайд 17
Слайд 18
Слайд 19
Слайд 20
Слайд 21
Слайд 22
Слайд 23
Слайд 24
Слайд 25
Слайд 26
Слайд 27
Слайд 28

Презентацию на тему "Функциональное программирование" можно скачать абсолютно бесплатно на нашем сайте. Предмет проекта: Информатика. Красочные слайды и иллюстрации помогут вам заинтересовать своих одноклассников или аудиторию. Для просмотра содержимого воспользуйтесь плеером, или если вы хотите скачать доклад - нажмите на соответствующий текст под плеером. Презентация содержит 28 слайд(ов).

Слайды презентации

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

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

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

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

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

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

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

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

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

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

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

Ключевой вопрос: ЧТО нужно вычислить, а не КАК.

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

Концепции.

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

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

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

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

Модель вычисления без состояний. Императивная программа: на любом этапе исполнения имеет состояние(совокупность значений всех переменных). последовательность инструкций, описывающих КАК компьютер должен решать задачу, основываясь на состоянии, изменяемом шаг за шагом. Функциональная программа: ни це
Слайд 5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Python.

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

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

Функции в Python.

def (arg1, arg2,..., argN): '''строка документации'''

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

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

Тип возвращаемого значения определяется аргументами, которые передаются функции.

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

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

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

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, z=7) return x+y+z print func(1, y=3) # 1+3+7=11
Слайд 13

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

def func(x, y, z=7) return x+y+z print func(1, y=3) # 1+3+7=11

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

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

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

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

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

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

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

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

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

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

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']
Слайд 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']

Функции высших порядков. 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]
Слайд 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]

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

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

list = [9, 1, -4, 3, 8] filter(lambda x: x

Функции высших порядков. 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]
Слайд 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]

Функции высших порядков. 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
Слайд 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

Замыкания. 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
Слайд 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

Замыкания. Partial. from functools import partial def add(a, b): return a + b add1 = partial(add, b=1) print add1(2) #3
Слайд 24

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

from functools import partial def add(a, b): return a + b add1 = partial(add, b=1) print add1(2) #3

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

Итераторы.

it = enumerate(sorted("PYTHON")) it.next() #(0, 'H') print list(it) #[(1,'N'),(2,'O'),(3,'P'),(4,'T'),(5,'Y')]

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

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

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

Генераторы.

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

def gen_fibonacci(n=100): a, b = 0, 1 while a

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

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

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

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

sum(i for i in xrange(1, 100) if i % 2 != 0) #2500

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

Литература.

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

Список похожих презентаций

Что такое программирование

Что такое программирование

Назначение программирования- разработка программ управления компьютером с целью решения различных информационных задач. Специалисты, профессионально ...
Алгоритмизация и программирование в Pascal

Алгоритмизация и программирование в Pascal

Вводная часть. Процесс решения задачи на ПК – это совместная деятельность человека и машины. Его условно можно разделить на несколько этапов. Человеку ...
Процедурно-ориентированное программирование

Процедурно-ориентированное программирование

Ключевые слова * Key words. Алгоритм Блок-схема Модуль Процедура Процедурная декомпозиция Процедурное программирование Модульное программирование ...
Фрагментированное программирование

Фрагментированное программирование

План доклада. Постановка задачи Идея решения Реализация Тестирование Результаты работы. Постановка задачи. Даны две матрицы А и B размера N на N каждая. ...
Объектно-ориентированное программирование

Объектно-ориентированное программирование

Литература. Васильев А.Н. Java. Объектно-ориентированное программирование. – СПб.: Питер, 2011. Монахов В. В. Язык программирования Java и среда Netbeans. ...
Объектно-ориентированное программирование на С++

Объектно-ориентированное программирование на С++

Литература. Страуструп Б. Язык программирования С++, спец. изд./Пер. с англ. – М.; СПб. : «Бином» - «Невский Диалект», 2001 г. -1099с., ил. Павловская ...
Введение в программирование

Введение в программирование

Основные понятия. Программирование – это раздел информатики, занимающийся вопросами разработки программ управления компьютером. Язык программирования ...
Объектно – ориентированное программирование на DELPHI - 11

Объектно – ориентированное программирование на DELPHI - 11

Объектно – ориентированное программирование на DELPHI - 11. @ Краснополянская школа № 1 Домнин Константин Михайлович 2006 год. На этом уроке: Мы создадим ...
Введение в параллельное программирование

Введение в параллельное программирование

Содержание лекции. Формальный подход к определению параллельной программы Меры качества параллельных программ Предел ускорения вычислений при распараллеливании ...
Введение в программирование

Введение в программирование

«Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно.». «Кодируй так, как будто человек, ...
Введение в объектно-ориентированное программирование

Введение в объектно-ориентированное программирование

X, Y – координаты центра круга;. Draw R – радиус круга; Color – цвет круга. 1 способ. Draw1: R=10; x=5; y=10; color=3; Draw2: R=45; x=15; y=3; color=2;. ...
Аспектно-ориентированное программирование

Аспектно-ориентированное программирование

Сквозная функциональность. Ведение журналов Авторизация. Модуль оформления заказов. Модуль принятия товаров. Проблемы сквозной функциональности. Запутанность ...
Алгоритмы и программирование

Алгоритмы и программирование

АЛГОРИТМ Линейный Циклический С ветвлением С процедурой. Программа – запись алгоритма на языке программирования для компьютера. Алфавит языка. Алфавит ...
Методика изучения темы "Алгоритмизация и программирование"

Методика изучения темы "Алгоритмизация и программирование"

Основные понятия, которые с которыми учащиеся знакомятся в курсе изучаемого раздела это - алгоритм, исполнитель алгоритма, система команд исполнителя, ...
Введение в программирование

Введение в программирование

Тема 1: Введение в программирование. Какой язык понимает процессор? Процессор понимает язык электрических сигналов. Он не различает сильный или слабый ...
Нелинейное программирование

Нелинейное программирование

Отличия от ЗЛП: 1. ОДЗ не обязательно выпуклая. 2. Экстремум не обязан находится на границе ОДЗ. - задача классической оптимизации. Пример:. . Метод ...
Введение в программирование Turbo Pascal

Введение в программирование Turbo Pascal

Тема 1: Введение в программирование. Какой язык понимает процессор? Процессор понимает язык электрических сигналов. Он не различает сильный или слабый ...
Объектно-ориентированное программирование

Объектно-ориентированное программирование

Содержание:. Графы: определения и примеры Ориентированные графы Путь в орграфе Матрица смежности Иерархический список Алгоритм Дейкстры Программа ...
Введение в программирование на Java

Введение в программирование на Java

Курс – Объектно-ориентированное программирование Время изучения - 4 курс, 7 семестр Направление подготовки - "230105 - Программное обеспечение вычислительной ...
Объектно-ориентированное программирование

Объектно-ориентированное программирование

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

Конспекты

Линейное программирование на языке TurboPascal

Линейное программирование на языке TurboPascal

Интегрированный урок информатика и экология 7 классе. Тема урока : Линейное программирование на языке TurboPascal. Цель:.  . Сформировать навыки ...
Структурное, модульное, объектно-ориентированное программирование, облачные технологии

Структурное, модульное, объектно-ориентированное программирование, облачные технологии

УРОК 5. Класс:. 10. Дата проведения:. . Тема урока:. . Структурное, модульное, объектно-ориентированное программирование, облачные технологии. ...
WEB- программирование

WEB- программирование

Коммунальное Государственное Учреждение. «Первомайский комплекс «Общеобразовательная средняя школа – детский сад имени Д.М. Карбышева» отдела образования ...

Советы как сделать хороший доклад презентации или проекта

  1. Постарайтесь вовлечь аудиторию в рассказ, настройте взаимодействие с аудиторией с помощью наводящих вопросов, игровой части, не бойтесь пошутить и искренне улыбнуться (где это уместно).
  2. Старайтесь объяснять слайд своими словами, добавлять дополнительные интересные факты, не нужно просто читать информацию со слайдов, ее аудитория может прочитать и сама.
  3. Не нужно перегружать слайды Вашего проекта текстовыми блоками, больше иллюстраций и минимум текста позволят лучше донести информацию и привлечь внимание. На слайде должна быть только ключевая информация, остальное лучше рассказать слушателям устно.
  4. Текст должен быть хорошо читаемым, иначе аудитория не сможет увидеть подаваемую информацию, будет сильно отвлекаться от рассказа, пытаясь хоть что-то разобрать, или вовсе утратит весь интерес. Для этого нужно правильно подобрать шрифт, учитывая, где и как будет происходить трансляция презентации, а также правильно подобрать сочетание фона и текста.
  5. Важно провести репетицию Вашего доклада, продумать, как Вы поздороваетесь с аудиторией, что скажете первым, как закончите презентацию. Все приходит с опытом.
  6. Правильно подберите наряд, т.к. одежда докладчика также играет большую роль в восприятии его выступления.
  7. Старайтесь говорить уверенно, плавно и связно.
  8. Старайтесь получить удовольствие от выступления, тогда Вы сможете быть более непринужденным и будете меньше волноваться.

Информация о презентации

Ваша оценка: Оцените презентацию по шкале от 1 до 5 баллов
Дата добавления:16 февраля 2019
Категория:Информатика
Содержит:28 слайд(ов)
Поделись с друзьями:
Скачать презентацию
Смотреть советы по подготовке презентации