Разработка задач на Прологе, Лиспе

Изучение основных возможностей и базовых понятий языка Пролог и Лисп. Характеристика принципов построения программ на языке функционального и логического программирования. Реализация определенной структуры данных и рекурсивной программы вычисления.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 07.02.2013
Размер файла 358,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ

Факультет: Информационные технологии

Дисциплина: СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

Кафедра Компьютерных технологий

Лабораторная работа № 1

Тема: Разработка задач на Прологе, Лиспе

Выполнили:

ст.гр. БВТ-09-4

Альжанова А.

Утебалиева Б.

Принял:

Абдрахманов Т.Е.

Алматы, 2013г.

Введение

Цель работы:

Освоить основные возможности и базовые понятия языка Пролог и Лисп, изучить основные принципы построения программ на языке функционального и логического программирования.

Задание 1. Поиск с возвратом

Написать программу, реализующую определенную структуру данных.

Каждый факт должен содержать не менее трех элементов в кортеже, количество записей - фактов не менее 15. Реализовать вывод всей информации из структуры, поиск по одному и по двум атрибутам записи.

Исходный код:

DOMAINS.

territory=ter(real, integer).

population=pop(real, integer).

info=c(string, territory, population, string).

PREDICATES.

country(info).

show.

search(string).

search(integer, integer).

CLAUSES.

country(c("Australia", ter(7686.8, 6), pop(21585.1, 52), "Kanberra")).

country(c("France", ter(674.8, 47), pop(64473.1, 20), "Paris")).

country(c("India", ter(3287.6, 7), pop(1131191, 2), "New Delhi")).

country(c("Hungary", ter(93.0, 109), pop(9930.9, 79), "Budapest")).

country(c("Canadian", ter(9984.7, 2), pop(33091.2, 37), "Ottawa")).

country(c("China", ter(9570, 3), pop(1322178.2, 1), "Pekin")).

country(c("Russia", ter(17075.4, 1), pop(141887.5, 9), "Moskow")).

country(c("USA", ter(9518.9, 4), pop(304000.0, 3), "Washington")).

country(c("BreatBritain", ter(244.8, 76), pop(60776.2, 21), "London")).

country(c("Greece", ter(131.9, 94), pop(10964.0, 70), "Athenes")).

country(c("Kazakhstan", ter(2724.9, 9), pop(15658.3, 61), "Astana")).

country(c("Madagascar", ter(587.0, 45), pop(19448.8, 55), "Antananarivo")).

country(c("Maldives", ter(0.3, 186), pop(298.9, 166), "Male")).

country(c("Estonia", ter(45.0, 129), pop(1342.4, 151), "Tallinn")).

country(c("Japan", ter(377.8, 60), pop(127433.5, 10), "Tokyo")).

country(c("Czechia", ter(78.9, 114), pop(10403.1, 79), "Prague")).

show: write

("********************************************************\n"),

write("* COUNTRY\t* TERRITORY \t* POPULATION \t* CAPITAL *"),

nl, write("* \t* km place \t* people place\t* \t*\n"),

write

("******************************************************\n"), nl,

country(c(X, ter(At, Bt), pop(Ap, Bp), Y)),

writef("%s\t\t%-1\t%u\t%-1\t%u\t%s\n", X, At, Bt, Ap, Bp, Y),

fail.

search(X):

country(c(Y, ter(_, _),

pop(_, _), X)),

writef("The %s is the capital of the %s.\n", X, Y), fail;

country(c(X, ter(At, Bt),

pop(Ap, Bp), Y)),

writef("The capital of %s is %s.\nThe territory is %-1, zanimaet %u mesto v mire.\nThe population is %-1, zanimaet %u mesto v mire.\n", X, Y, At, Bt, Ap, Bp), fail.

search(T, P):

country(c(X, ter(_, Bt),

pop(_, Bp), _)),

Bt<=T,

Bp<=P,

writef(" %s, ", X), fail.

Рисунок 1:

Задание 2. Рекурсия

Написать рекурсивную программу вычисления суммы ряда чисел cos(n). Результат выведите в виде таблицы. Применить нехвостовую и хвостовую рекурсии. Выполнение осуществляется с помощью команды RUN.

Исходный код:

PREDICATES.

sum(integer, real).

CLAUSES

sum(0, 1):-!.

sum(N, R):-

Next_N=N-1,

sum(Next_N, P),

R=cos(N)+P,

writef(" % \t %-4", N, R), nl.

GOAL.

write(" *** Lab 3. Recurse ***"), nl, nl,

write("Enter quantity of elements of a number: "),

readint(X), nl,

write("Number SumCos"), nl,

sum(X, Res).

Вывод:

Рисунок 2:

Задание 3. Обработка списков

Написать программу для вывода n-го элемента списка.

Исходный код:

DOMAINS.

list=integer*.

PREDICATES.

nth_element(integer, list, integer)

CLAUSES.

nth_element(1, [A|_], A):- !.

nth_element(N, [_|L], A):

N1=N-1,

nth_element(N1, L, A).

GOAL.

write(" *** Primer 3 ***"), nl, nl,

write("Enter number of element of the list: "), /*введите номер элемента в списке */

readint(N),

nth_element(N, [0, 1, 2, 3, 4], A),

writef("Element # % = %", N, A), nl. /*% обозначает формат вывода */

Вывод:

Рисунок 3:

Задание 4. Рекурсивные структуры данных (деревья)

Проверить, является ли дерево упорядоченным, уточнить: по возрастанию или по убыванию.

Исходный код:

DOMAINS

tree=t(integer, tree, tree); empty()

PREDICATES

print_tree(tree).

order(tree)

order_left(integer, tree)

order_right(integer, tree)

CLAUSES

print_tree(empty):- !.

print_tree(t(R, Left, Right)):-

write(R, '\t'),

print_tree(Left),

print_tree(Right).

order(empty):- !.

order(t(_, empty, empty)):- !.

order(t(R, Left, Right)):-

order_left(R, Left),

order_right(R, Right),

order(Left),

order(Right),

write("Tree order by vozrast\n");

order_left(R, Right),

order_right(R, Left),

order(Left),

order(Right),

write("Tree order by ubivan\n").

order_left(_, empty).

order_left(T, t(L, _, _)):- T>=L.

order_right(_,empty).

order_right(T, t(R, _, _)):- T<=R.

GOAL.

write(" *** primer4. Tree ***"), nl, nl,

Tree1=t(6, t(3, t(2, empty, empty),

t(4, empty, empty)),

t(7, t(3, empty, empty),

t(8, empty, empty))),

Tree2=t(6, t(7, t(8, empty, empty),

t(5, empty, empty)),

t(3, t(4, empty, empty),

t(2, empty, empty))),

Tree3=t(5, t(2, t(8, empty, empty),

t(1, empty, empty)),

t(4, t(3, empty, empty),

t(2, empty, empty))),

write("Tree: "),

print_tree(Tree3), nl,

order(Tree3),

write("Tree order!\n"), !;

write("Tree not order\n").

Вывод:

Рисунок 4:

Задание 5. Базы данных

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

Исходный код:

DOMAINS.

tree=t(integer, tree, tree); empty()

PREDICATES.

print_tree(tree).

order(tree).

order_left(integer, tree).

order_right(integer, tree).

CLAUSES.

print_tree(empty):- !.

print_tree(t(R, Left, Right)):

write(R, '\t'),

print_tree(Left),

print_tree(Right).

order(empty):- !.

order(t(_, empty, empty)):- !.

order(t(R, Left, Right)):

order_left(R, Left),

order_right(R, Right),

order(Left),

order(Right),

write("Tree order by vozrast\n");

order_left(R, Right),

order_right(R, Left),

order(Left),

order(Right),

write("Tree order by ubivan\n").

order_left(_, empty).

order_left(T, t(L, _, _)):- T>=L.

order_right(_,empty).

order_right(T, t(R, _, _)):- T<=R.

GOAL.

write(" *** primer4. Tree ***"), nl, nl,

Tree1=t(6, t(3, t(2, empty, empty),

t(4, empty, empty)),

t(7, t(3, empty, empty),

t(8, empty, empty))),

Tree2=t(6, t(7, t(8, empty, empty),

t(5, empty, empty)),

t(3, t(4, empty, empty),

t(2, empty, empty))),

Tree3=t(5, t(2, t(8, empty, empty),

t(1, empty, empty)),

t(4, t(3, empty, empty),

t(2, empty, empty))),

write("Tree: "),

print_tree(Tree3), nl,

order(Tree3),

write("Tree order!\n"), !;

write("Tree not order\n").

Вывод:

Рисунок 5:

Задание 6. Строки и файлы

Написать программу, которая бы искала введенное слово в тексте (текст в файле) по максимальному количеству совпадающих первых букв. Результат сохранить в новом файле.

Исходный код:

DOMAINS.

Str=string.

Ch=char.

Word=string.

file=f1; f2.

PREDICATES.

find(Word).

search(string, string, integer).

CLAUSES.

find(Word):

openread(f1, "lab7in.txt"),

openwrite(f2, "lab7out.txt"),

writedevice(f2),

file_str("lab7in.txt", Str),

str_len(Word, Len),

search(Str, Word, Len),

closefile(f1),

closefile(f2).

search(Str, Word, Len):

searchstring(Str, Word, Pos),

writef("The word [%s] find on % position", Word, Pos);

Len2=Len-1,

substring(Word, 0, Len2, Word2),

search(Str, Word2, Len2).

GOAL.

write(" *** Lab 7. String & File ***"), nl, nl,

write("Enter the word: "),

readln(Word),

find(Word).

Входной файл: filein.txt.

When a game is launched, it rarely jumps right into the actual game. Instead, it displays a title screen that identifies the game and presents a set of game variants to the player.

For example, a game might offer buttons that allow a player to start a single player or multiplayer game.

When the user selects one of the options, the app configures itself appropriately and launches into its gameplay.

Вывод: пролог лисп программирование

Рисунок 6:

Размещено на Allbest.ru

...

Подобные документы

  • LISP (LIST PROCCESSOR) - обработчик списков. Особенности диалектов языка Лисп: Маклисп, муЛисп, Интерлисп, Франс Лисп, Зеталисп Лисп-машин, Коммон Лисп. Современные диалекты языка Лисп. Интерактивные системы программирования. Использование Лисп-машин.

    доклад [16,9 K], добавлен 22.09.2008

  • Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.

    лабораторная работа [254,4 K], добавлен 23.11.2014

  • Языки логического (Пролог) и функционального (ЛИСП и РЕФАЛ) программирования. Задачи прямого и обратного вывода. Алгоритм CLS для построения деревьев. Математические основы индуктивного и дедуктивного вывода, алгебра высказываний, исчисление предикатов.

    курс лекций [319,9 K], добавлен 24.06.2009

  • Изучение основных конструкций и способов написания программ на языке Паскаль. Обзор принципов работы и интерфейса написанной программы. Обработка и модификация двумерных массивов. Файловые структуры данных. Текстовые файлы. Элементы машинной графики.

    курсовая работа [761,7 K], добавлен 11.03.2015

  • Изучение основных стилей программирования: процедурного, функционального, логического, объектно-ориентированного. Язык Ассемблера, предназначенный для представления в символической форме программ, записанных на машинном языке. Многоцелевой язык Basic.

    презентация [905,2 K], добавлен 23.03.2011

  • Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.

    курсовая работа [879,8 K], добавлен 11.02.2016

  • Язык программирования как формальная знаковая система, предназначенная для записи программ. Рефал как алгоритмический язык рекурсивных функций. Лисп как ассемблер, ориентированный на работу со списковыми структурами. Пролог: понятие, основные средства.

    презентация [90,2 K], добавлен 22.02.2014

  • Характеристика основных принципов объектно-ориентированного программирования. Этапы разработки программы на языке C++, реализующей игру "Морской бой". Выбор языка программирования. Характеристика необходимых классов, наследований, виртуальных методов.

    курсовая работа [657,6 K], добавлен 17.06.2012

  • Ханойские башни: постановка задачи, условия перемещения дисков со стержня на стержень. Стратегия решения, используемые предикаты. Текст программы на языке Пролог. Построение модели решения задачи о ферзях. Примеры использования списков в языке Пролог.

    презентация [72,0 K], добавлен 29.07.2012

  • Порядок описание процесса разработки модели для разрешения задачи программирования с помощью средств языка программирования. Структуры данных и основные принципы их построения. Этапы компьютерного моделирования. Этапы и значение написания программы.

    курсовая работа [19,5 K], добавлен 19.05.2011

  • Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.

    реферат [14,3 K], добавлен 15.10.2012

  • Ознакомление со структурой и основными свойствами языка программирования Лисп; рассмотрение его арифметических, логических и специальных функций. Характеристика отличительных особенностей диалектов языка - MacLISP, MuLISP, InterLISP и CommonLISP.

    курсовая работа [364,1 K], добавлен 17.10.2011

  • Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.

    курсовая работа [333,5 K], добавлен 21.01.2013

  • Создание программного обеспечения, организующего базу данных тренажёрного зала. Описание предметной области; предикаты языка Пролог для работы с БД: ввод/вывод, управление окнами. Разработка структуры базы данных, интерфейс; содержание файла "Zal.ddb".

    курсовая работа [821,6 K], добавлен 07.06.2013

  • Решение базовых задач линейного программирования симплекс-методом, их реализация на языке программирования С++. Математическое обеспечение; разработка алгоритма программы, решающей задачу с помощью симплекс-таблиц с произвольными свободными членами.

    курсовая работа [217,8 K], добавлен 25.05.2014

  • Рассмотрение особенностей языка программирования С++. Пример составления программы - информационно-поискового справочника. Описание алгоритмов коррекции данных, введённых пользователем. Тестирование полученной программы, предусмотрение ее защиты.

    курсовая работа [20,0 K], добавлен 05.03.2015

  • Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Реализация экспертных систем любой сложности, решение любых головоломок и шарад с помощью языка логического программирования Prolog. Основные понятия в языке Prolog. Правила логического вывода и запросы. Процедуры логического вывода и принятия решений.

    курсовая работа [19,0 K], добавлен 24.05.2012

  • Рассмотрение основных функций программы Microsoft Access. Решение задач на языке программирования Pascal. Создание визитной карточки в графическом редакторе Paint и презентации в PowerPoint. Изучение работы с пакетом прикладных программ Open Office.

    курсовая работа [3,0 M], добавлен 14.06.2010

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

    курсовая работа [1,5 M], добавлен 08.02.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.