Главная  Карта сайта  Об авторе  Контакты  Нормативно-правовая основа деятельности кафедры

  Интеллектуальные информационные системы  
  Синтаксис языка программирования Пролог  
  Экспертные системы, их использование для решения организационно–экономических задач. Основные компоненты экспертных систем  
  Структура экспертной системы  
  Структуры Пролог  
  Факты, правила, вопросы  
  Процесс разработки имитационных моделей для изучения социально–экономических систем. Основные этапы  
  Декларативная и процедурная семантика программ на языке Пролог  
  Общая схема согласования целевых утверждений  
  Механизм поиска с возвратом  
  Порядок предложений и целей. Опасность бесконечного цикла  
  Рекурсия и ее свойства  
  Схема поиска решений в рекурсивных программах  
  Прикладное программное обеспечение. классификация  
  Структура Пролога списки  
  Операторы. Арифметика в Пролог  
  Предметно-ориентированные информационные системы  

Исследование операций

  Модели теории графов и сетевого моделирования  
  Элементы теории графов  
  Матрицы инцедентности ориентированного графа  
  Природа потоков в сетях и принцип их сохранения  
  Теорема о максимальном потоке и минимальном разрезе  
  Методы решения сетевых задач  
  Метод ветвей и границ  
  Методы сетевого планирования  
  Преимущества СПУ  
  Подготовка задач к решению  
  Правила построения сетевых моделей  
  Параметры сетевых моделей и методы их расчета  
  Анализ сетевых моделей  
  Методы и модели линейного программирования  
  Общая задача линейного программирования  

Структуры и алгоритмы компьютерной обработки данных

  Виды структур данных  
  Развитие концепции структуризации в программировании  
  Понятие типа данных  
  Порядковые типы  
  Абстрактные типы  
  Идентификация объектов  
  Именование  
  Организация адресного пространства оперативной памяти MS DOS  
  Понятие указателя  
  Действия над указателями  
  Связывание идентификатора объекта с его элементом хранения  
  Понятие “времени жизни” объекта  
  Классы памяти  
  Поиск в списке узла по заданному условию  
  Совместимость типов. Приведение и преобразование типов  

Теория оптимального управления
экономическими системами

  Корпоративные информационные системы  
  Стандарты корпоративных систем  
  Программные продукты управления предприятием  
  Информатизация банковской деятельности  
  Современные технологии проектирования управления  
  Понятие Workflow и Workflow Management  
  Модель Workflow Management с точки зрения коалиции WfMC  
  Основные аспекты технологии Workflow Management  
  Организационно-функциональный модуль  
  Хранилища данных и аналитические системы  
  Виртуальное Хранилище Данных  
  Этапы ETL-процесса  
  Очистка данных  
  Аналитические системы  

 

 

 

 
 
 

Сцепление (конкатенация). Предикат append

НАЗАД

Шаг 1: ТЦ
: append([2,3],[1,4],L3).
Пр1: [2,3] не сопоставим [] Þ неуспех
         Пр2: append([2|[3]],[1,4],[2|T31):¾ append([3],[1,4],T31).
                                                                  где L3=[2|T31].
ТР:  append([3],[1,4],T31).
Шаг 2: ТЦ: append([3],[1,4],T31).
Пр1: [3] не сопоставим []Þ неуспех
Пр2: append([3|[]],[1,4],[3|T32]):¾ append([],[1,4],T32).
где T31=[3|T32].
Шаг 3: ТЦ: append([],[1,4],T32).
Пр1: [] сопоставим []Þ успех
Получается подстановка {T32=[1,4]}.
Переход на шаг 2, и конкретизация переменной T31   значением [3|[1,4]] или [3,1,4].
Переход на шаг 1, и конкретизация переменной L3 значением [2|[3,1,4]] или [2,3,1,4].
ТР:  ÿ.
Результат вычисления запроса: append([2,3],[1,4],L3). Þ успех при подстановке {L3=[2,3,1,4]}.
Хотя программа для append выглядит довольно просто, она обладает большой гибкостью и ее можно исполь­зовать многими другими способами. Например, ее можно применить как бы в обратном направлении для разбиения заданного списка на две части:
?- append ( LI, L2, [а,b,с] ).
Процедура вычисления будет следующей:
L1 = []
L2 = [а,b,с];
L1 = [а]
L2= [b,с];
L1 = [а,b]
L2 = c;
LI = [а,b,с]
L2 = [];
no     (нет)
Список [a,b,c] разбивается на два списка четырьмя способами, и все они были обнаружены нашей прог­раммой при помощи механизма автоматического перебора (рис. 33).
Нашу программу можно также применить для поиска в списке комбинации элементов, отвечающей некото­рому условию, задаваемому в виде шаблона или об­разца. Например, можно найти все месяцы, предшест­вующие данному, и все месяцы, следующие за ним, сформулировав такую цель:
?-append( Until, [‘май’ | After],[‘янв’,’фев’,’март’,’апр’,’май’,’июнь’,’июль’, ‘авг’,’сент’,’окт’,’ноябрь’,’дек’]).
Until = [‘янв’,’фев’,’март’,’апр’]
After = [‘июнь’,’июль’,’авг’,’сент’,’окт’,’ноябрь’,’дек’].
Далее мы сможем найти месяц, непосредственно пред­шествующий маю, и месяц, непосредственно следующий за ним, задав вопрос:
?- append ( _, [Month1,’май’,’Month2’|], [‘янв’, ’фев’,’март’,’апр’,’май’, ’июнь’,’июль’,‘авг’,’сент’,’окт’,’ноябрь’,’дек’]).
Month1 =апр
Month2 =июнь
Более того, мы сможем, например, удалить из неко­торого списка L1 все, что следует за тремя после­довательными вхождениями элемента z в L1 вместе с этими тремя z. Например, это можно сделать так:
?- LI = [a,b,z,z,c,z,z,z,d,e], append ( L2, [z,z,z |_ ], L1).
LI = [a,b,z,z,c,z,z,z,d,e]
L2 = [a,b,z,z,c]
Мы уже запрограммировали отношение принадлежности (предикат member). Однако, используя append, можно было бы определить это отношение следующим эквивалентным способом:
member1( X, L) :- append ( L1, [X | L2], L).
В этом предложении сказано: «X принадлежит L, если список L можно разбить на два списка таким обра­зом, чтобы элемент X являлся головой второго из них. Разумеется, member1определяет то же са­мое отношение, что и member. Мы использовали другое имя только для того, чтобы различать таким образом две разные реализации этого отношения. Заметим, что, используя анонимную переменную, можно записать вышеприведенное предложение так:
member1( X, L) :- append (_, [X |_], L).
Интересно сравнить между собой эти две реализации отношения принадлежности. memberимеет довольно очевидный процедурный смысл:
Для проверки, является ли X элементом списка L, нужно
  • сначала   проверить,    не   совпадает   ли голова списка L с X, а затем
  • проверить, не принадлежит ли X хвосту списка L.
С другой стороны, member1, наоборот, имеет очевидный декларативный смысл, но его процедурный смысл не столь очевиден.
Интересным упражнением было бы следующее: выяс­нить, как в действительности member1 что-либо вычисляет. Некоторое представление об этом мы по­лучим, рассмотрев запись всех шагов вычисления ответа на вопрос:
?- member1(b,[a,b,c]).

НАЗАД


Поступайте к нам!
Уважаемые абитуриенты! Мы рады приветствовать Вас на нашем сайте и сегодня сообщаем Вам о том, что Вы всё ещё можете подавать заявления и поступать в ВФ МГИУ. Напоминаем, что на некоторые специальности Вы можете поступить по результатам ЕГЭ. Помните, у нас Вы сможете получить прекрасное образование по следующим направлениям: "Прикладная информатика в экономике", "Бухгалтерский учёт, анализ и аудит", Автомобиле- и тракторостроение", "Менеджмент организации"!
подробнее   >>>
 


все новости...

{LTS}

Представления списков Унификация списков. Некоторые операции над списками Принадлежность списку (предикат member). Сцепление (конкатенация). Предикат append Добавление и удаление элемента (предикаты add и delete) Предикат list. Предикат length Предикат first. Предикат last. Предикат next. 

 
     
   
 

В помощь дипломнику

  Демин Л. М. Пояснительная записка дипломного проекта  
  Широков Л. А. Дипломное проектирование  
  Общие правила оформления  
  Правила оформления приложения  
  Литература, рекомендуемая дипломнику  
  Выбор и формулировка темы дипломного проектирования  
  ОСТ 4.071.030  
  Общие положения для Объяснительной записки  
  Состав выпускной квалификационной работы  

Статьи и публикации

  КОМТЕЛ - 2010  
  Олимпиада по информатике в Смоленске  
  Кураторство  
  График контроля выполнения дипломных проектов и готовности к государственному экзамену студентов специальности 080801  
  График проведения консультаций - осений семестр 2009  
  План проведения дня открытых дверей  
  Олимпиада по информатике в Смоленске  
  Результаты внутренней олимпиады по информатике  
  График проведения контрольных точек дипломного проектирования специальности 080801 «Прикладная информатика в экономике»  

Нормативно-правовая основа деятельности кафедры

  Должностная инструкция доцента кафедры  
  Должностная инструкция заведующего кафедрой  
  Общие рекомендации по планированию работы кафедры на учебный год  
  Общие рекомендации по выполнению выпускной квалификационной работы  
  Положение о кафедре ВФ ГОУ МГИУ  
  Положение о кураторе студенческой учебной группы ВФ ГОУ МГИУ  
  Положение о курсовых экзаменах и зачетах  
  Положение о планировании, организации и проведении лабораторных работ  
  Положение о научно-методическом совете филиала ГОУ ВПО МГИУ в г. Вязьме  
  Положение о планировании, организации и проведении практических работ  
  Положение о практике студентов ВФ ГОУ МГИУ  
  Положение о промежуточной аттестации студентов ВФ ГОУ МГИУ  
  Положение о самостоятельной работе студентов  
  Положение о планировании, организации и проведении семинарских занятий  
  Положение о системе рейтинговой оценки студентов  
  Положение о ВФ ГОУ ВПО МГИУ Смоленской области  
  Положение об итоговой государственной аттестации  
  Положение об ученом совете  
  Правила внутреннего трудового распорядка  


Рассылки Subscribe.Ru
Современное образование
Подписаться письмом