Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Организация зап... 64601
Создание потоко... 61593
Модуль Forms 61229
Создание отчето... 61174
ТЕХНОЛОГИИ ДОСТ... 57621
Пример работы с... 55124
Имитационное мо... 53014
Реклама
Прикольные поздравления с днем рождения молодому мужчине glistof.net.
Сейчас на сайте
Гостей: 2
На сайте нет зарегистрированных пользователей

Пользователей: 13,067
новичок: senata7
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование регулировочного участка цеха на GPSS + Пояснительная записка
Моделирование процесса обработки заданий на вычислительном центре на GP...
Двунаправленный динамический список на Delphi + Блок схемы

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
лабораторная часть 1 (5 задач) [SWI-Prolog]
Задание состоит из 5 задач, в которых требуется составить программы на Прологе. Первые две задачи требуют запрограммировать простые преди-каты. Следующие две - требуют написать простые программы. В последней задаче требуется составить более сложную программу на Прологе (как прави-ло, требуется определить несколько предикатов). При составлении программ (если не оговорено противное) можно использовать все встроенные предикаты Пролога. Тексты всех программ, если вы мыслите в духе логического про-граммирования, получаются небольшие.
SWI-Prolog не имеет стандартного help'а для Windows, для этого используется предикат help. Вызов help(<имя предиката>) выдает на экран информацию об этом предикате. Вызов help(7) выдает на экран список всех встроенных предикатов с комментариями. Текстовый файл руководства по SWI-Prolog - pl\library\manual. Отладку предикатов можно осуществлять с помощью предиката трассировки trace(<имя предиката>), трассировка преди-ката отключается - trace(<имя предиката>, -all).


Задание:
1. Напишите предикат p(+V, +X, -L) - истинный тогда и только тогда, когда список L получается из списка V после удаления всех вхождений X на всех уровнях, например, p([1, [2, 3, [1]], [3, 1]], 1, [[2, 3, []], [3]]) - истина.
2. Напишите обобщение предиката member, когда ищется элемент на всех уровнях в списке.
3. Встроенный предикат functor(+Term, ?Functor, ?Arity) определяет для за-данного составного терма Term его функтор Functor и местность Arity. Встроенный предикат arg(+N, +Term, ?Value) определяет для целого числа N и заданного составного терма Term его N-ый аргумент Value. Определите предикаты functor1 и arg1 - аналоги предикатов functor и arg через предикат univ (=..)
4. Напишите предикат range(?M, ?N, ?L), истинный тогда и только тогда, ко-гда L - список целых чисел, расположенных между M и N включительно (предикат должен допускать различное использование, когда не менее двух из трех аргументов конкретизованы). (Указание. Используйте предикаты var(+X) и nonvar(+X)).
5. Определим операторы:
:- op( 100, fy, ~).
:- op( 110, xfy, &).
:- op( 120, xfy, v).




Булева формула есть терм, определяемый следующим образом: кон-станты true и false - булевы формулы; если X и Y - булевы формулы, то и X v Y, X & Y, ~X - булевы формулы, здесь v и & - бинарные инфиксные операторы дизъюнкции и конъюнкции, а ~ - унарный оператор отрицания.
Напишите программу, задающую отношение negation_inward(+F1,-F2), которое выполнено, если логическая формула F2 получается из логической формулы F1 внесением всех операторов отрицания внутрь конъюнкций и дизъюнкций.



Исходный код программы:
p([X|Tail],X,NewTail):-!,p(Tail,X,NewTail).%esli golova iskomii simvol,
%to otvetom budet obrabotanni hvost
p([H|Tail],X,[NewH|NewTail]):-p(H,X,NewH),p(Tail,X,NewTail),!.%esli ze golova ne iskomii simvol,
%to ochishwem ee(srabotaet tolko esli ona - nepustoi spisok), ochishaem hvost i skladivaem
p(H,_,H).%esli golova ne iskomii simvol ili pustoi spisok, to nichego ne delaem
%?-p([1,[2,3,[1]],[3,1]],1, L),write(L).

member(H,H).%tut ponaytno
member(H,[A|B]):-member(H,A);member(H,B).%esli iskomii element vstrechaetsya v golove ili v hvoste,
%to on vstrechaetsya vo vsem spiske
member(H,[List]):-member(H,List).%eto esli spisok vida [[1,2,3,4,5]], to otbrasivaem odni skobki
%?-member(1,[5,[3,7,[[3,5,1],8]]]).

functor1(F,H,A):-F=..[H|Tail],length(Tail,A).

%element - vspomogatelnii predicat, vozvrashaet N-i element
element([H|_],1,H):-!.%pervii element - golova
element([_|Tail],N,E):-N1 is N-1, element(Tail,N1,E).%inache umenshaem index na 1 i ishem v hvoste

arg1(N,F,E):-F=..[_|Tail],element(Tail,N,E).

% ne znayu zachem v predicate range ispolzovat var i nonvar,i tak rabotaet

range(B,B,[B]):-!.
range(A,B,[A|Tail]):-A1 is A+1,range(A1,B,Tail).
%?-range(1,5,L).
%?-range(1,M,[1,2,3,4,5]).
%?-range(N,M,[1,2,3,4,5]).

:- op( 100, fy, ~).
:- op( 110, xfy, &).
:- op( 120, xfy, v).

%ne mogu garantirovat, chto imelos v vidu imeno tak vnosit,
%ya ispolzuyu zakoni Morgana i eshe ochevidnie fakti
negation_inward(~true,false):-!.
negation_inward(~false,true):-!.
negation_inward(~(A&B),NeA v NeB):-!,negation_inward(~A,NeA),negation_inward(~B,NeB).
negation_inward(~(A v B),NeA & NeB):-!,negation_inward(~A,NeA), negation_inward(~B,NeB).
negation_inward(~(~A),NewA):-negation_inward(A,NewA).
negation_inward(A&B,NewA & NewB):-!,negation_inward(A,NewA),negation_inward(B,NewB).
negation_inward(A v B, NewA v NewB):-!,negation_inward(A,NewA),negation_inward(B,NewB).
negation_inward(F,F).

%?- negation_inward(~(true&false& ~(false v ~(true v false))),Ans).











Опубликовал Kest March 13 2011 19:08:17 · 0 Комментариев · 9598 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Книга по Delphi (...
ADVstatusbar
Фундаментальные а...
Х. М. Дейтел, П. ...
PRNDbgrid
Работа с матрицами
Globus VCL Extent...
Панель Календарь
Архив программ
PHP 5 в подлинник...
Библия хакера 2 К...
Программирование ...
CABfiles
mp3tag
Шаблон для новост...
Шейдеры в Delphi
Pirc
около 291 статьи ...
Язык программиров...
Animation Effect ...

Топ загрузок
Приложение Клие... 100384
Delphi 7 Enterp... 83516
Converter AMR<-... 20051
GPSS World Stud... 11297
Borland C++Buil... 11233
Borland Delphi ... 8175
Turbo Pascal fo... 6987
Visual Studio 2... 4970
Калькулятор [Ис... 4416
FreeSMS v1.3.1 3516
Случайные статьи
Обработка принимае...
Лабораторное занят...
Карта END
Создание справки [...
СОБЛЮДЕНИЕ ФОРМАТА...
Операции отношения...
• чтобы использова...
Сортировка и встав...
Простейшая хэш-таб...
Обработка результатов
Рационализация дом...
Зачем нужен файл s...
Благодарности
Чтобы сократить не...
VARIABLE (ОПРЕДЕЛИ...
Группировка симво...
Техническая библио...
Разработка Web-формы
Процедура аутентиф...
чтобы переданные п...
Доменные зоны мира
Какую из масок выб...
Динамическая компо...
иллюстрации проект...
же работало в сети...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?