Программа к экзамену по курсу
«Языки и методы программирования»
Язык программирования как способ записи алгоритма. Представление алгоритма в процедурной, функциональной и логической форме. Процедурное, функциональное, логическое программирование и соответствующие языки программирования. Процедурный подход к программированию. Основы процедурного подхода: базовый набор операторов, понятие переменной и типа данных, управление порядком исполнения операций. Процедурные языки программирования - основные черты и свойства. Функциональный подход к программированию. Основы функционального подхода. Основные свойства функциональных языков программирования. LISP – язык функционального программирования. Функциональное представление данных. Реализация множества, списка, булевых и числовых типов в функциональном виде. л-исчисление. Определение и основные понятия. Синтаксис л-выражений. Редукция (вычисление л-выражений). л-выражение в языке LISP. Рекурсия в л-выражениях. Логический подход к программированию. Основы логического программирования, факты, правила, запросы. PROLOG - язык логического программирования. Связь логического программирования и математической логики. Понятие типа данных. Роль и место типа данных в языках программирования. Основные типы данных в языках программирования: скалярные типы данных, составные типы данных, указатели. Динамические структуры данных. Список, стек, очередь - определение и реализация. Деревья, бинарные деревья - определение и реализация. Обход бинарного дерева, различные способы обхода. Упорядоченные деревья, программа поиска по дереву с включением. Использование деревьев поиска для сортировки данных. Объединение инструкций и данных в одной структуре. Объектно-ориентированное программирование, основные понятия и определения. Классы, данные и методы. Права доступа к элементам класса. Наследование классов. Шаблоны. Примеры использования объектно-ориентированного подхода в программировании. Квантовые вычисления. Предпосылки возникновения и физические основы. Квантовый бит - qbit. Процесс измерения, влияние измерения на наблюдаемый объект. Квантовый параллелизм. Квантовые алгоритмы: алгоритм Дойча, алгоритм Дойча-Джоза, алгоритм Гровера.
Литература:
зык программирования С++. М. 1991 зык программирования С. М. 1992 Функциональное программирование. Применение и реализация. Москва, «Мир», 1983 Программирование. Математические основы, средства, теория. С-Петербург, «БХВ-Петербург», 2001 М. Вялый «Квантовые алгоритмы: возможности и ограничения», http://www. lektorium. tv/course/?id=22805

