Абстракция n Абстракция основана на u обобщении посредством введения имени вместо значения и u уточнении (конкретизации) посредством подстановки другого.

Презентация:



Advertisements
Похожие презентации
ФУНКЦИИ БОЛЕЕ ВЫСОКОГО ПОРЯДКА Функциональное программирование Григорьева И.В.
Advertisements

1 Кубенский А.А. Функциональное программирование. Глава 4. Основы лямбда-исчисления. Будем задавать функции с помощью «лямбда-выражений», которые будем.
Определение функций Функциональное программирование Григорьева И.В.
Оператор присваивания Язык ТУРБО ПАСКАЛЬ. Имя переменной := выражение; Имя переменной – набор символов (не более 8), обязательно начинается на латинскую.
Связанные и свободные переменные n λv.B n Переменная v называется связанной всюду в теле B функции λv.B, за исключением подвыражений B, где v переопределяется.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
1 Кубенский А.А. Функциональное программирование. Глава 3. Стили функционального программирования. Глава 3. Стили функционального программирования 3.1.
Даталогическое проектирование. 1. Представление концептуальной модели средствами модели данных СУБД Общие представления о моделях данных СУБД С одной.
Язык ТУРБО ПАСКАЛЬ ОПЕРАТОР ПРИСВАИВАНИЯ. ИМЯ ПЕРЕМЕННОЙ := ВЫРАЖЕНИЕ; Имя переменной – набор символов (не более 8), обязательно начинается на латинскую.
Язык высокого уровня компилятор Программа компиляторов Сделал:Студент группы:Ис-2о(очная)Воротов Валентин.
Сошников Дмитрий Валерьевич к.ф.-м.н., доцент Сошников Д.В. Факультет инноваций и высоких технологий Московский физико-технический.
База данных ACCESS. Основные понятия База данных (БД) организованная совокупность данных, предназначенная для длительного хранения во внешней памяти компьютера.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
1 Лекция 5 Абстрактные структуры данных. 2 Таблицы Таблица – это набор элементов, содержащих ключ – отличительный признак для поиска элементов, и тело.
1 Кубенский А.А. Функциональное программирование. Глава 3. Стили функционального программирования. Глава 3. Стили функционального программирования 3.1.
ДЕЛЕГАТЫ Лекция 7 1. Зачем нужны делегаты 2 И данные, и код располагаются в памяти компьютера по определенным адресам. Передача адресов данных в C# происходит.
УЧЕБНЫЙ АЛГОРИТМИЧЕСКИЙ ЯЗЫК. 1. Назначение языка ИнтАл Для изучения основ программирования. Для решения широкого круга задач.
1 Кубенский А.А. Функциональное программирование. Глава 6. Введение в редукцию графов. Глава 6. Введение в редукцию графов 6.1. Представление лямбда-выражений.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Транксрипт:

Абстракция n Абстракция основана на u обобщении посредством введения имени вместо значения и u уточнении (конкретизации) посредством подстановки другого значения вместо данного имени n Абстрагирующее имя явно или неявно привязано к определенному типу значений. n Примеры: x:

Абстракция в императивных языках программирования n Переменная в ИП – синоним ячейки памяти n Компилятор абстрагирует связь имя-значение от конкретной ячейки памяти. n Типы данных контролируют корректность связи имя-значение. n Компилятор контролирует корректность размещения значения в той или иной ячейке памяти (выравнивание, тип выделяемой памяти)

Абстракция в императивных языках высокого уровня n Абстрактный тип данных u Представление данных скрыто от пользователя и может быть заменено альтернативным. u Любое из этих представлений должно реализовывать методы доступа к данным. u Эти методы доступа должны удовлетворять определенным инвариантам («законам»). n Пример: u «Маршрут» как АТД в системе управления транспортом: getStartingPoint, getEndingPoint, getDistance, … u Метод getDistance для составного маршрута должен удовлетворять неравенству треугольника

Абстракция в императивных языках высокого уровня n Модули n ООП u Инкапсуляция n Задание: u Придумать и написать на С++ заголовочный файл, реализующий абстрактный тип данных

Лямбда-исчисление n Алонсо Черч, 1930 г. n Модель «единицы вычислимости» n Представляет собой язык, основанный на «чистой» абстракции n Математическая модель абстракции u Сама абстракция становится объектом

Лямбда-выражение n Используем «форму Бэкуса» для задания синтаксиса u ::= | | n Имя – произвольный набор символов (не только «идентификатор») u фред u x1 u 12z u

Функция n Абстракция над лямбда-выражением u ::= λ. u ::= n Примеры: λx.x λfirst.λsecond.first λf.λa.(f a) n называется «связанной переменной». n Похоже на «формальный параметр» ИП n - произвольное лямбда-выражение, в т.ч. и другая функция. n Функция – безымянна!

n Применение функции к выражению n ::= ( ) n Примеры: n Терминология: u (Ф А) – «связанная пара» или «Ф применяется к А» Аппликация

Вычисление аппликации n ::= ( ) n 1. В функциональном выражении проводятся вычисления всех аппликаций, результат должен быть функцией n 2. В теле функции связанная переменная заменяется на u Результат вычисления выражения-аргумента u Само выражение-аргумент в «текстуальной» форме n Первый способ называется «аппликативный порядок» n Второй способ называется «нормальный порядок»

Тождественная функция n x слева – связанная переменная (имя, играющее роль связанной переменной) n x справа – имя n Аппликация тождественной функции возвращает выражение-аргумент. n При нормальном порядке вычисления аргумент возвращается невычисленным.

Каррирование функций n Рассмотрим пример: n Аппликация n дает n Функция многих переменных представляется как суперпозиция лямбда-функций. n «Каррирование» (currying) – в честь Хаскеля Карри (хотя придумал Шенфинкель).