Списки, строки, файлы

Автор работы: Пользователь скрыл имя, 16 Июня 2013 в 00:11, курсовая работа

Описание работы

Prolog — один из старейших и все еще один из наиболее популярных языков логического программирования, хотя он значительно менее популярен, чем основные императивные языки. Он используется в системах обработки естественных языков, исследованиях искусственного интеллекта, экспертных системах, онтологиях и других предметных областях, для которых естественно использование логической парадигмы. Так в данном курсовом проекте реализуется работа со списками, строками и файлами средствами языка Prolog.

Содержание работы

ВВЕДЕНИЕ 5
1 Постановка задачи 8
2. теоретическая часть 9
2.1 Общие сведения 9
2.2 Списки 11
2.2 Строки 14
2.2 Файлы 16
3. Структурная схема программы 18
4. ОПИСАНИЕ ПРЕДИКАТОВ 19
5 ТЕКСТ ПРОГРАММЫ 20
6 ТЕСТИРОВАНИЕ ПРОГРАММЫ 26
7 РУКОВОДСТВО ДЛЯ ПОЛЬЗОВАТЕЛЯ 27
ВЫВОДЫ 29
ЛИТЕРАТУРА 30

Файлы: 1 файл

пояснительная.docx

— 507.69 Кб (Скачать файл)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ  И НАУКИ РЕСПУБЛИКИ БЕЛАРУСЬ

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ  УНИВЕРСИТЕТ

Факультет информационных технологий и робототехники (ФИТР)

 

Кафедра программного обеспечения  вычислительной техники

и автоматизированных систем

 

 

 

 

 

 

 

 

КУРСОВОЙ ПРОЕКТ

 

по дисциплине: «Функциональное  и логическое программирование»

 

на тему: «Списки, строки, файлы»

 

 

 

 

 

 

 

 

Исполнитель: студентка гр. 307228

Малиновская О.В.

Руководитель проекта:  доцент

Ковальков А.Т.

 

 

 

 

 

 

 

 

 

 

Минск  2012

Белорусский национальный технический  университет

 

 

Кафедра программного обеспечения  вычислительной техники 

и автоматизированных систем

 

 

 

 

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

 

к курсовому проекту 

 

по дисциплине  «Функциональное и логическое программирование»

 

 

Тема     «Списки, строки, файлы»____________________________

__________________________________________________________________

__________________________________________________________________

 

 

 

 

 

Исполнитель:___________________________________________(Малиновсая О.В.)

(подпись)

 

Студент___4____курса_307228__группы

 

 

Руководитель : _________________________________________(Ковальков А.Т.)

(подпись)

 

 

 

 

 

 

 

 

 

Минск 2012

 

 

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 5

1 Постановка задачи 8

2. теоретическая часть 9

2.1 Общие сведения  9

2.2 Списки  11

2.2 Строки  14

2.2 Файлы  16

3. Структурная схема программы 18

4. ОПИСАНИЕ ПРЕДИКАТОВ 19

5 ТЕКСТ ПРОГРАММЫ 20

6 ТЕСТИРОВАНИЕ ПРОГРАММЫ 26

7 РУКОВОДСТВО ДЛЯ ПОЛЬЗОВАТЕЛЯ 27

ВЫВОДЫ 29

ЛИТЕРАТУРА 30

ПРИЛОЖЕНИЕ  31

 

 

ВВЕДЕНИЕ

 

Prolog (от “PROgramming in LOGic”)  — декларативный язык программирования  общего назначения.

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

Стандарт языка дан  в ISO/IEC 13211-1 (1995 год).

Пролог — уникален по своей природе, он появился благодаря  счастливому совпадению. Когда-то в 60-х годах очень бурно развивалась  теория автоматического доказательства теорем и Робинсоном был предложен  алгоритм резолюций, который позволял доказать любую верную теорему (вывести  из аксиом) за конечное время (за какое  не известно). Как оказалось позже, это наилучшее решение общей  задачи, невозможно доказать теорему  за ограниченное число операций. Простыми словами, алгоритм представляет собой  обход (в общем случае бесконечного) графа в ширину, естественно, что  предсказуемость работы алгоритма  практически равно 0, соответственно для Языка программирования — это абсолютно не подходит. И в этот момент Кальмэроу нашел блестящее сужение задачи, благодаря которому доказательство некоторых теорем выглядело как процедурное исполнение программы. Стоит отметить, что класс доказуемых теорем достаточно широк и очень хорошо применим для класса программируемых задач. Вот так в 1972 появился Prolog.

Prolog — один из старейших  и все еще один из наиболее  популярных языков логического  программирования, хотя он значительно  менее популярен, чем основные  императивные языки. Он используется  в системах обработки естественных  языков, исследованиях искусственного  интеллекта, экспертных системах, онтологиях  и других предметных областях, для которых естественно использование  логической парадигмы. Так в данном курсовом проекте реализуется работа со списками, строками и файлами средствами языка Prolog.

Prolog был создан под  влиянием более раннего языка  Planner и позаимствовал из него  следующие идеи:

  • обратный логический вывод (вызов процедур по шаблону, исходя из целей);
  • построение структура управляющей логики в виде вычислений с откатами;
  • принцип “отрицание как неудача”;
  • использование разных имен для разных сущностей и т.д.

Главной парадигмой, реализованной  в языке Prolog, является логическое программирование. Как и для большинства старых языков, более поздние реализации, например, Visual Prolog, добавляют в язык более поздние парадигмы, например, объектно-ориентированное или управляемое событиями программирование, иногда даже с элементами императивного стиля.

Пролог относится к  так называемым декларативным языкам, требующим от автора умения составить  формальное описание ситуации. Поэтому  программа на Прологе не является таковой в традиционном понимании, так как не содержит управляющих  конструкций типа if … then, while … do; нет  даже оператора присваивания. В Прологе  задействованы другие механизмы. Задача описывается в терминах фактов и  правил, а поиск решения Пролог берет на себя посредством встроенного  механизма логического вывода.

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

Пролог реализован практически  для всех известных операционных систем и платформ. В число операционных систем входят OS для мэйнфреймов, всё  семейство Unix, Windows, OS для мобильных  платформ.

Многие современные реализации языка имеют внутреннее расширение за счет ООП-архитектуры. Кроме проприетарных  решений, существуют свободные реализации Пролога.

Пролог критикуется в  первую очередь за свою недостаточную  гибкость, отчего решения на обычных  языках программирования (типа C++, Java) в сочетании с базами данных оказываются более технологичными, чем аналогичные решения на Прологе. Негибкость заключается в трудности изучения языка, более высоких требованиях к квалификации программиста на Прологе, трудности отладки программы, неразвитости технологии программирования, плохой контролируемости промежуточных результатов.

Наиболее заметные тенденции в истории развития языка Prolog

В развитии языка Prolog наблюдаются  очень интересные тенденции. Этот язык быстро приобрел популярность в Европе как инструмент практического программирования. В Японии вокруг языка Prolog были сосредоточены  все разработки компьютеров пятого поколения. С другой стороны, в США  этот язык в целом был принят с  небольшим опозданием в связи  с некоторыми историческими причинами. Одна из них состояла в том, что  Соединенные Штаты вначале познакомились  с языком Microplanner, который также  был близок к идее логического  программирования, но неэффективно реализован. Определенная доля низкой популярности Prolog в этой стране объясняется также  реакцией на существовавшую вначале  “ортодоксальную школу” логического  программирования, представители которой  настаивали на использовании чистой логики и требовали, чтобы логический подход не был “запятнан” практическими средствами, не относящимися к логике. В прошлом это привело к широкому распространению неверных взглядов на язык Prolog. Например, некоторые считали, что на этом языке можно программировать только рассуждения с выводом от целей к фактам. Но истина заключается в том, что Prolog — универсальный язык программирования и на нем может быть реализован любой алгоритм. Далекая от реальности позиция “ортодоксальной школы” была преодолена практиками языка Prolog, которые приняли более прагматический подход, воспользовавшись плодотворным объединением нового, декларативного подхода с традиционным, процедурным.

 

 

  1. ПОСТАНОВКА ЗАДАЧИ

 

Разработать программу, которая  выполняет следующие операции:

1.Нахождение в списке  двух наибольших элементов

2.Нахождение в списке  элементов, кратных заданному  числу

3.Подсчет в строке количества  цифровых символов

4.Разбиение строки на  две строки примерно одинаковой  длины по границе слова

5.Объединение трех текстовых  файла в один

6.Нахождение в текстовом  файле двух самых коротких  строк

Нужная операция выбирается с помощью меню.

 

  1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

    1. Общие сведения

 

Prolog использует один тип  данных, терм, который бывает нескольких  типов: 

  • атом — имя без особого смысла, используемое для построения составных термов;
  • числа и строки такие же, как и в других языках;
  • переменная обозначается именем, начинающимся с прописной буквы, и используется как символ-заполнитель для любого другого терма;
  • составной терм состоит из атома-функтора, за которым следует несколько аргументов, каждый из которых в свою очередь является атомом.

Программы, написанные на чистом Prolog, описывают отношения между  обрабатываемыми сущностями при  помощи клауз Хорна. Клауза — это  формула вида Голова :- Тело., которая  читается как “чтобы доказать/решить Голову, следует доказать/решить Тело”. Тело клаузы состоит из нескольких предикатов (целей клаузы), скомбинированных с помощью конъюнкции и дизъюнкции. Клаузы с пустым телом называются фактами и эквивалентны клаузам  вида Голова :- true. (true — не атом, как  в других языках, а встроенный предикат).

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

Предикаты с несколькими  аргументами могут действовать  в нескольких направлениях в зависимости  от того, какие из аргументов уже  связаны, а какие — нет.

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

Целью выполнения программы  на Prolog является оценивание одного целевого предиката. Имея этот предикат и набор  правил и фактов, заданных в программе, Prolog пытается найти привязки (значения) переменных, при которых целевой  предикат принимает значение истинности.

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

Во всех других отношениях Пролог не отличается от традиционных языков программирования. Как и в  случае программы написанной на любом  другом языке, Пролог-программа предназначена  для решения отдельной задачи.

 

    1. Списки

 

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

Списки могут быть представлены как специального вида дерево. Список — это любой пустой список, не содержащий ни одного элемента, либо структура, имеющая две компоненты: голову и хвост списка. Конец списка обычно представляют как хвост, который является пустым списком. Пустой список записывают как [ ] — открывающая квадратная скобка, за которой следует закрывающая квадратная скобка. Голова и хвост списка являются компонентами функтора, обозначаемого точкой '.'. Так, список, состоящий из одного элемента 'а', есть .(а, []).

Аналогично список, состоящий  из атомов a, b и с, мог бы быть записан  как .(а,.(b,.(с,[]))).

Иногда функтор точка ('.') определяется как оператор, так  что допустимо для Пролога  два последних списка записать как  а.[] и а.(b.(с.[]))). Второй список можно было бы записать просто как а.b.с.[], так как функтор точка — правоассоциативный оператор. Списки являются упорядоченными последовательностями элементов, так что список а.b отличается от списка b.а.

Так как запись сложных  списков с помощью функтора '.' часто оказывается неудобной, то в Прологе предусмотрена другая синтаксическая форма, которая может  быть использована для записи списков  в программе. Это так называемая скобочная форма записи списка. Она  представляет собой заключенную  в квадратные скобки последовательность элементов списка, разделенных запятыми. Например, упоминавшиеся выше списки могут быть записаны в скобочной  форме в виде [a] и [а, b, с]. Списки могут содержать другие списки или переменные. Например, в Прологе допустимы следующие списки:

Информация о работе Списки, строки, файлы