Презентация на тему "Введение в язык программирования Haskell"

Презентация: Введение в язык программирования Haskell
1 из 10
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
1.0
1 оценка

Комментарии

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

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


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

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

Смотреть презентацию онлайн на тему "Введение в язык программирования Haskell" по информатике. Презентация состоит из 10 слайдов. Для студентов. Материал добавлен в 2016 году. Средняя оценка: 1.0 балла из 5.. Возможность скчачать презентацию powerpoint бесплатно и без регистрации. Размер файла 0.19 Мб.

Содержание

  • Презентация: Введение в язык программирования Haskell
    Слайд 1

    1 Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. 1.2. Введение в язык Haskell История языка Haskell 1960: John McCarthy, LISP – первый функциональный язык программирования 1978: John Backus, FP – система комбинаторного программирования конец 1970-х: Edinburgh univ., ML – meta-language 1985-1986: David Turner, Miranda – функциональный язык с «ленивыми» вычислениями начало 1930-х: Church, формализация функций в λ-исчислении 1990: Ericsson, Erlang – «коммерческий» функциональный язык 1988: Paul Hudak, Haskell – первая версия языка Haskell 1999: Haskell group, Haskell’98 – «стандартная» версия языка Haskell Haskell – чисто функциональный язык программирования, названный в честь Хаскелла Карри (Haskell B. Curry – 1900-1982), известного, главным образом, благодаря работам в области математической логики и комбинаторной логики в конце 1950-х – начале 1960-х годов http://haskell.org/onlinereport/index.html - пересмотренное сообщение о языке Haskell’98 http://haskell.org/tutorial- «Нежное» введение в Haskell

  • Слайд 2

    2 Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. Типы данных и базовые конструкции языка Haskell Элементарные типы данных Integer, Int – целые значения (25, -17, 111222333444555666777888) Float, Double – вещественные значения (3.14, -2.718281828459045) Char – символьные значения ('A', '*', '3') Bool – логические значения (True, False) Идентификаторы: fact, fAcToRiAl, fact_1, fact'' Знаки операций: +, -, *,

  • Слайд 3

    3 Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. Кортежи и функции Значения могут объединяться в более сложные с помощью кортежирования. Например: pair :: (Double, Double)pair = (2.7, 3.14) attributes :: (Char, (Int, Int, Int), Bool)attributes = ('M', (17, 4, 1955), True) Тип функции определяется типами аргументов и результата, например: sin :: Double -> Double -- аргумент и результат типа DoubleplusInt :: Int -> Int -> Int -- два аргумента типа Int, результат IntdivMod :: (Int, Int) -> (Int, Int) -- аргумент и результат - кортежи Выражения составляются из констант применением операций и функций, например: result = sin (3.1416 / 4) - 2.5c10 = 3 + plusInt 3 4pair = divMod (1458, plusInt 176 192) Операции и функции отличаются только формой записи. Следующие выражения эквивалентны: 3 + 8 и (+) 3 827 `div` 4 и div 27 47 `plusInt` 11 и plusInt 7 11

  • Слайд 4

    4 Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. Определение функций с помощью уравнений Уравнения задают правила, по которым происходит вычисление функции, то есть каким образом результат получается из аргументов функции, например: plusInt :: Int -> Int -> IntplusInt a b = a + b divMod :: (Int, Int) -> (Int, Int)divMod (a, b) = (a `div` b, a `mod` b) Уравнения могут содержать условные выражения и рекурсивные обращения, например: factorial :: Integer -> Integerfactorial n = if n == 0 then 1 else n * (factorial (n-1)) sum :: Integer -> Integersum n = n + if n == 0 then 0 else sum (n-1) factorial1 :: Integer -> Integerfactorial1 n | n == 0 = 1 | n > 0 = n * (factorial1 (n-1)) factorial2 :: Integer -> Integerfactorial2 0 = 1 factorial2 n = n * (factorial2 (n-1)) Уравнений для одной функции может быть несколько, тогда аргументы последовательно сопоставляются с образцами:

  • Слайд 5

    5 Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. Подготовка и запуск программ module Test where factorial :: Integer -> Integer factorial n | n == 0 = 1 | n > 0 = n * (factorial (n-1))

  • Слайд 6

    6 Prelude>:l"MyProg.hs" Test>factorial 25 15511210043330985984000000:: Integer Test> Test> Пример запуска программы на исполнение Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования.

  • Слайд 7

    7 Исполнение программ с помощью текстовой подстановки factorial :: Integer -> Integer factorial n | n == 0 = 1 | n > 0 = n * (factorial (n-1)) factorial 3 3 * (factorial (3-1)) 3 * (factorial 2) 3 * (2 * (factorial (2-1))) 3 * (2 * (factorial 1)) 3 * (2 * (1 * (factorial (1-1)))) 3 * (2 * (1 * (factorial 0))) 3 * (2 * (1 * 1)) 6 Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования.

  • Слайд 8

    8 Несколько определений простых арифметических функций Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. -- Вычисление наибольшего общего делителя двух натуральных чисел gcd :: Integer -> Integer -> Integer gcd m n | m Bool prime' :: Integer -> Integer -> Bool prime p | p p = True | p `mod` d == 0 = False | otherwise = prime' (d+1) p

  • Слайд 9

    9 Эффективность рекурсивных функций. Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. -- Вычисление числа Фибоначчи, заданного порядковым номером fib :: Integer -> Integer fib 1 = 1 fib 2 = 1 fib n = fib (n-1) + fib (n-2) fib6 fib 5 + fib 4 (fib 4 + fib 3) + fib 4 ((fib 3 + fib 2) + fib 3) + fib 4 (((fib 2 + fib 1) + fib 2) + fib 3) + fib 4 (((1 + 1) + 1) + (fib 2 + fib 1)) + fib 4 (3 + 2) + (fib 3 + fib 2) (3 + 2) + ((fib 2 + fib 1) + 1) (3 + 2) + ((1 + 1) + 1) 8 f1 = f2 = 1 fn = fn-1 + fn-2при n > 2

  • Слайд 10

    10 Эффективность рекурсивных функций. Концевая рекурсия. Кубенский А.А. Функциональное программирование. Глава 1. Элементы функционального программирования. fib :: Integer -> Integer fib' :: Integer -> Integer -> Integer -> Integer -> Integer fib' n k fk fk1 | k == n = fk | k Integer factorial 0 = 1 factorial n = n * factorial (n-1) factorial :: Integer -> Integer factorial' :: Integer -> Integer -> Integer factorial n = factorial' n 1 -- (factorial' n f) == (f * n!) factorial' n f | n == 0 = f | n > 0 = factorial' (n-1) (n*f)

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

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