- •Вопрос 2. Спецификация, представление, реализация абстрактных типов данных.
- •Вопрос 3. Многомашинные вс. Реализация на основе ес эвм. Кластерные вс.
- •Типы кластеров:
- •Вопрос 2. Линейные структуры данных: стек, очередь, дек
- •Вопрос 3. Сравнительный анализ и основные компоненты инструментальных среды разработки пользовательских интерфейсов. Классификация элементов пользовательского интерфейса
- •Вопрос 1. Конкретные реализации языков функционального программирования: язык программирования Лисп, основные объекты, примитивы, списки, правила составления программ.
- •Вопрос 2. Семантическая теория программ. Вычислимость и разрешимость
- •Вопрос 3. Формальные методы описания диалоговых систем. Законы Фитса и Хика.
- •Вопрос 1. Основные конструкции логической программы: факты, правила, запросы, логические переменные. Операционная и декларативная семантика логических программ.
- •1. 5. Декларативный и процедурный смысл программ
- •Вопрос 2. Интерфейсы. Способы согласования аппаратных структур. Организация асинхронных интерфейсов
- •Элементы процесса как поведенческой категории :
- •Дескриптивный асинхронный процесс (dp)
- •Асинхронный процесс (ap)
- •Инициаторы
- •Вопрос 3. Эргономика пользовательского интерфейса. Критерии эргономичности интерфейса. Человеческие ошибки. Методы предотвращения ошибок. Снижение чувствительности системы к ошибкам.
- •Типы ошибок
- •Методы предотвращения ошибок
- •Как избежать сообщений об ошибках
- •Вопрос 1. Интерпретация и корректность логических программ. Абстрактный интерпретатор, значение логической программы, вычислительная модель
- •Вопрос 2. Порядковые статистики (Гулаков сказал что его не будет)
- •Субъективная удовлетворенность
- •Типичные интерфейсные ошибки отечественного по
- •Программа перегружена элементами управления
- •Терминология не адекватна знаниям пользователя о системе
- •От пользователя постоянно требуется дополнительная информация
- •Вопрос 1. Программирование баз данных. Динамическая база данных. Добавление и удаление фактов в процессе работы программы.
- •Вопрос 2. Поиск и кодирование (сжатие) данных, кодовые деревья, оптимальные префиксные коды
- •Вопрос 1. Рекурсивное программирование на логическом языке. Рекурсивные структуры данных – списки. Объявление списков. Составные списки. Голова и хвост списка. Примеры работы со списками.
- •Вопрос 2. Бинарный поиск, хеширование
- •Вопрос 3. Тестирование и отладка программного обеспечения. Структурное и функциональное тестирование. Особенности тестирования объектно-ориентированного по. Автоматизация процесса тестирования.
- •Вопрос1. Вычислительная модель программы на логическом языке. Согласование целевых утверждений. Сопоставление и унификация. Детерминизм.
- •Вопрос 2. Понятие выполнения сети. Свойства сети (устойчивость, безопасность, консервативность).
- •Вопрос 3. Автоматизация проектирования программного обеспечения на базе case-технологий. Принципы построения и т.Д.
- •Вопрос 1. Множественные выражения Программирование второго порядка Недетерминированное программирование
- •Вопрос 2. Нелинейные структуры данных: иерархические списки, деревья и леса, бинарные деревья
- •Вопрос 1. Вне логические предикаты. Ввод-вывод. Доступ к программам и обработка программ. Металогические предикаты. Сравнение не основных термов.
- •Вопрос 2. Алгоритмы сортировки
- •Сортировка разделением (Quicksort)
- •Вопрос 1. Constraint–Пролог: операционная семантика обобщение механизма унификации, понятие constraint'а. Операционная модель Constraint-пролоГа.
- •Вопрос 2. Нелинейные структуры: обходы деревьев
- •Вопрос 3. Качество по. Критерии качества: сложность, корректность, надежность, трудоемкость. Методика оценки качества по. Метрические особенности объектно-ориентированных пс. Сертификация по
- •Вопрос 1. Cancelled мистером г.
- •Вопрос 2. Стандартные схемы программ. Методы формальной спецификации и верификации.
- •Вопрос 1. Использование деревьев в задачах поиска: бинарные деревья поиска, случайные, оптимальные, сбалансированные по высоте и рандомизированные деревья поиска
- •. Деревья цифрового поиска
- •Вопрос 2. Определение асинхронного процесса как описания модели вычислительного процесса. Глобальные свойства – асинхронность, недетерминированность, параллельность.
- •1. Задачи сортировки; внутренняя и внешняя сортировка
- •2. Подклассы асинхронного процесса. Эффективный асинхронный процесс
- •Длительность реакции системы
- •Субъективное восприятие скорости работы
- •Приемы для уменьшения субъективного восприятия
- •1. Оптимальная сортировка.
- •2. Конвейерный процесс. Автономный процесс. Асинхронный процесс как метамодель.
- •Непосредственное манипулирование
- •Потеря фокуса внимания (прерывание)
- •Ограничение принятия решений
- •1. Анализ сложности и эффективности алгоритмов поиска и сортировки.
- •2. Классификация сетей (ординарные, автоматные, маркированный граф).
- •Понятность системы
- •Ментальная модель
- •Метафора
- •Аффорданс
- •Стандарт
- •1. Файлы: организация и обработка, представление деревьями: b-деревья.
- •2. Сетевое представление параллельных процессов. Области применения сетей Петри
- •3. Основы теории формальных языков и грамматик. Основные понятия и определения. Операции над языками. Классификация формальных языков и грамматик по порождающей способности
- •1. Алгоритмы на графах: представления графов, схемы поиска в глубину и ширину, минимальное остовное дерево, кратчайшие пути.
- •2.1.Поиск в глубину
- •2.2 Поиск в ширину.
- •2. Протоколы взаимодействия объектов вычислительных структур. Понятие протокола.
- •3. Вывод контекстно-свободных (кс) – грамматик и правила построения дерева вывода. Синтаксический разбор. Способы задания схем грамматик. Форма Бэкуса-Наура.
- •1. Теория сложности алгоритмов: np-сложные и труднорешаемые задачи.
- •2. Недетерминированные конечные автоматы. Конечные преобразователи и переводы. Преобразование некоторых грамматик к автоматному виду.
- •3. Объектно-ориентированное проектирование. Принципы проектирования. Схемы, диаграммы, инструменты.
- •1. Детерминированные конечные автоматы. Эквивалентные состояния и автоматы.
- •2. Синтаксический анализ. Метод оперативного предшествования. Восходящие и нисходящие методы синтаксического анализа.
- •2. Жизненный цикл программного обеспечения. Структура жизненного цикла согласно международного стандарта.
- •1. Нисходящие распознаватели. Ll(k) – грамматики. Построение детерминированного нисходящего распознавателя.
- •2. Параллельная обработка как основа высокопроизводительных вычислений. Уровни организации параллелизма: уровень заданий, программ и команд. Системы (языки) параллельного программирования.
- •1. Восходящие распознаватели. Lr(k) грамматики. Построение грамматики.
- •2. Понятие архитектуры вычислительной системы (вс). Архитектура как набор компонент и как система уровневых интерфейсов. Основные аппаратные и программные элементы вс.
- •1.1. Архитектура как набор взаимодействующих компонент
- •1.2. Архитектура как интерфейс между уровнями физической системы
- •1. Магазинные преобразователи. Определение магазинного преобразователя. Перевод, определяемый преобразователем.
- •2. Архитектура системы команд. Микропроцессоры (мп) с полным (cisc) и сокращённых (risc) набором команд. Основные принципы risc- архитектуры. Организация risc мп Alpha 21x64 фирмы dec.
- •Особенности архитектуры Alpha компании dec
- •1. Описание перевода или трансляции. Синтаксически-управляемые (су) – схемы.
- •2. Основные идеи объектно-ориентированных языков программирования. Создание абстрактных типов данных. Инкапсуляция. Полиморфизм. Наследование.
- •3. Развитие архитектур современных мп. Конвейеризация и динамическое выполнение потока команд. Суперскалярность. Архитектура epic мп Intel itanium.
- •1. Транслирующие грамматики. Построение транслирующей грамматики по су-схеме. Атрибутные транслирующие грамматики.
- •3. Векторные и векторно-конвейерные вс. Структура векторного процессора. Матричные вс.
- •1. Трансляторы, интерпретаторы и компиляторы. Стадии работы компиляторы. Лексический анализ.
- •3. Системы массовой параллельной обработки (мрр). Супер эвм фирмы sgi - Cray t3e(t3d) -1200.
- •2. Классификация и типы вс. Многомашинные и многопроцессорные вс. Представление вс на основе распределения потоков команд и данных (классификация Флинна)
Вопрос 1. Основные конструкции логической программы: факты, правила, запросы, логические переменные. Операционная и декларативная семантика логических программ.
Теоретической основой языка Пролога является раздел символьной логики, называемый исчислением предикатов. Название Пролог (Prolog) произошло от словосочетания «программирование при помощи логики» (PROgramming in LOGic).
Пролог основан на описательной или декларативной точке зрения на программирование. Это означает, что машине в качестве программы можно предоставить не алгоритм, а формальное описание предметной области и задачи в виде аксиоматической системы, и тогда построение решения задачи в виде вывода в этой системе можно поручить самой машине. Таким образом, от программиста не требуется построение алгоритма, решающего задачу, поскольку нужный алгоритм порождается интерпретатором, строящим вывод по определенной стратегии. Теперь основная задача программиста – удачно аксиоматизировать, т.е. описать в виде системы логических формул предметную область и такое множество отношений на ней, которые с достаточной степенью полноты описывают задачу.
Язык программирования Пролог базируется на ограниченном наборе механизмов, включающих в себя сопоставление образцов, древовидное представление структур данных и автоматический возврат. Пролог очень полезен в некоторых проблемных областях, подобных искусственному интеллекту, разработке экспертных систем, обработке естественного языка, и т.д., но совершенно бесполезен в других, таких как графика или числовые алгоритмы.
Факты и правила
Программирование на языке Пролог состоит их 3-х этапов:
Определение фактов предметной области.
Факты могут описывать свойства объектов и отношения между объектами. Например, факт «нравится ellen tennis» можно записать так:
likes(ellen, tennis).
Этот факт включает в себя два объекта, обозначенных словами ellen и tennis, и отношение, обозначенное словом likes (нравится). Каждый факт и каждое правило предметной области должны заканчиваться точкой. Имена объектов, список которых в каждом факте заключен в круглые скобки, называются аргументами. Имя отношения – называется предикатом. Таким образом, likes – предикат с двумя аргументами.
Определение правил.
Правило – это факт, истинность значения которого зависит от истинности других фактов. Правила позволяют получать новые факты исходя из уже имеющихся. Общий вид правила: A :- B1, ..., Bn. (n>0)
Здесь A – заголовок правила, Bi – тело правила. Символ «:-» читается «если».
Возможны два варианта прочтения данного правила:
декларативное прочтение – «A истинно, если истинны Bi»;
процедурное прочтение – «чтобы решить задачу A, сначала надо решить подзадачу B1, затем подзадачу B2, ..., затем подзадачу Bn»
Таким образом, для выполнения цели в заголовке правила, необходимо вначале выполнить (согласовать) все подцели из тела правила.
Например, правило «Тому нравится футбол, если футбол является видом спорта» на Прологе можно записать следующим образом:
likes(tom, football) :- sport(football).
Цель likes(tom, football) будет истинной в том случае, если выполняются все подцели из тела правила. В данном случае подцель sport(football).
Формулировка вопросов об объектах предметной области и отношениях между ними.
Имея некоторую совокупность фактов, мы можем обращаться к Прологу с вопросами о них.
Например, пусть имеется следующая совокупность фактов:
likes(ellen, tennis).
likes(tom, football).
likes(tom, swimming).
Теперь мы можем задать системе вопрос «нравится ли тому футбол»:
?- likes(tom, football)
yes
Поскольку нужный факт имеется в базе фактов и правил, получен положительный ответ.
Переменные
До сих пор мы рассматривали отношения, аргументами которых выступали конкретные объекты – константы, такие как, ellen, tennis, и т.д. Такие объекты называются атомами. Аргументами отношений могут выступать также абстрактные объекты – переменные. Переменные используются для задания общих правил и формулировки общих вопросов. Переменные должны начинаться с большой буквы. Например, правило «биллу нравится то же, что и тому» на Прологе можно записать так:
likes(bill, X) :- likes(tom, X).
В этом правиле объект X – переменная, объекты bill и tom – константы (начинаются с маленькой буквы). Если Вы хотите, чтобы константа начиналась с большой буквы, необходимо заключить ее в двойные кавычки, например: «Bill».
Переменная может также встречаться в запросе. Если в запрос переменная не входит, то ответом будет либо да (yes), либо нет (no). Если же в запрос входит переменная, то Пролог найдет все значения этой переменной и вернет ответ. Например, вопрос «что нравится биллу» можно записать на Прологе следующим образом:
?- likes(bill, What). % What переменная
Пролог найдет все значения переменной What, которые удовлетворяют вопросу, и вернет ответ:
What = football
What = swimming
2 Solutions
Иногда возникает необходимость в использовании переменной, имя которой не будет потом нигде употребляться. Например, если необходимо определить «нравится ли что-то тому» и при этом не важно, что именно, можно использовать анонимную переменную. Анонимная переменная обозначается одиночным знаком подчеркивания: «_». Например, вопрос «нравится ли что-то тому» на Прологе можно записать так:
?- likes(tom, _).
yes
Вопрос «нравится ли эллен теннис и нравится ли тому теннис» можно задать следующим образом:
?- likes(ellen, tennis), likes(tom, tennis).
Запятая между подцелями likes читается как «и». Пролог пытается согласовать каждую подцель по очереди. Сочетая возможности конъюнкции и использования переменных, можно строить достаточно содержательные вопросы. Например, вопрос «существует ли что-нибудь такое, что нравится обоим эллен и тому» на Прологе можно записать так:
?- likes(ellen, X), likes(tom, X).
Следует отметить, что область действия переменной в Прологе ограничивается правилом, т.е. одинаковые переменные в разных правилах никак между собой не связаны.
