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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать файл)

write("   4 - Elementi kratnie zadannomu chislu."),nl,

write("   5 - Soedinenie treh tekstovih failov."),nl,

write("   6 - Nahozhdenie dvuh korotkih strok v faile."),nl,

write("   0 - Vihod."),nl,

write("   Please enter:  "),

readint(Number),

Number >= 0,

Number < 7,

clearwindow,

selects(Number),

clearwindow,

removewindow.

 

selects(0):-

makewindow(1,2,7,"Vihod",0,0,25,80),nl,

write("Vi uvereni? (1-Da 0-Net) > "),readint(WHAT),

WHAT=1,exit;

WHAT=0, removewindow, createmenu.

selects(1):-

makewindow(1,2,7,"Proga",0,0,25,80),

write("Vvedite stroku: "),readln(S),nl,

razbivka(S,S1,S2),write("Razdelenie strok:"),nl,

write(S1),nl,write(S2),nl,nl,

write("Zhmi chto-nibud:"),readchar(_),

removewindow, createmenu, fail.

 

selects(2):-

makewindow(1,2,7,"Proga",0,0,25,80),

write("Vvedite stroku: "),readln(Str),nl,

proverka(Str,N),

write("Kol-vo cifr v stroke:"),nl,

write(N),nl,nl,

write("Zhmi chto-nibud:"),readchar(_),

removewindow, createmenu,fail.

 

selects(3):-

makewindow(1,2,7,"Proga",0,0,25,80),

write("Vvedite spisok: "),nl,

read_list(L),max(L,Max1),

write("Dva maksimalnih chisla:",Max1),

del_max(Max1,L,L1),

max(L1,Max2),

write(",",Max2),nl,nl,

write("Zhmi chto-nibud:"),readchar(_),

removewindow, createmenu,fail.

 

selects(4):-

makewindow(1,2,7,"Proga",0,0,25,80),

write("Vvedite spisok: "),nl,

read_list(L),

write("Vvedite chislo:"),nl,

readint(N),

kratn(N,L,L1),

write("Kratnie chislu=",N,". Eto: ",L1),nl,nl,

write("Zhmi chto-nibud:"),readchar(_),

removewindow, createmenu,fail.

 

selects(5):-

read_write,nl,

write("Zhmi chto-nibud:"),readchar(_),

removewindow, createmenu,fail.

 

selects(6):-

read_write1,nl,

write("Zhmi chto-nibud:"),readchar(_),

removewindow, createmenu.

 

%selects(1): процедура разбиения  строки на две приблизительно  одинаковые по границе слова

razbivka(S,S1,S2):-

str_len(S,N),N1=N div 2,

frontstr(N1,S,Str1,Str2),

fronttoken(Str2,Kusok,S2),

concat(Str1,Kusok,S1),!.

 

%selects(2): процедура подсчета  в строке количества цифровых  символов

proverka("",0).

proverka(Str,N):-

frontchar(Str,Char,Ost),

Char>='0',Char<='9',proverka(Ost,N1),N=N1+1.

proverka(Str,N):-

frontchar(Str,Char,Ost),

Char<'0', proverka(Ost,N).

proverka(Str,N):-

frontchar(Str,Char,Ost),

Char>'9', proverka(Ost,N).

 

%selects(3,4): создание из введенных  пользователем строк списка, состоящего  из чисел

read_list([H|T]):-readint(H),read_list(T).

read_list([]).

 

%selects(3): процедура создания  второго списка, в котором будет  отсутствовать уже найденный  первый максимальный элемент

del_max(N,[N|T],T).

del_max(N,[H|T],[H|T1]):-N<>H,del_max(N,T,T1).

 

%selects(3): процедура поиска  максимального элемента в списке

max([A1,A2],A1):-A1>=A2,!.

max([A1,A2],A2):-A1<A2,!.

max([H1,H2|T],Max):-H1>=H2,max([H1|T],Max).

max([H1,H2|T],Max):-H1<H2,max([H2|T],Max).

 

%selects(4): процедура поиска  в списке чисел кратных заданному

kratn(_,[],[]).

kratn(N,[H|T],[H|T1]):-H mod N = 0,kratn(N,T,T1).

kratn(N,[H|T],T1):-H mod N <> 0,kratn(N,T,T1).

 

%selects(5): процедура открытия  и записи 3 файлов в один

read_write:-

write("Vvedite File1:"),nl,

readln(F1),

write("Vvedite File2:"),nl,

readln(F2),

write("Vvedite File3:"),nl,

readln(F3),

write("Vvedite MainFile:"),nl,

readln(F),

openwrite(tf,F),

writedevice(tf),

file_str(F1,Str1),

file_str(F2,Str2),

file_str(F3,Str3),

concat(Str1,Str2,BuffStr),

concat(BuffStr,Str3,Str),

write(Str),

closefile(tf),

writedevice(screen),

write("File 1:\n", Str1),nl,

write("File 2:\n", Str2),nl,

write("File 3:\n", Str3),nl,

file_str(F,Str4),

write("File 4:\n",Str4),nl.

 

%selects(6): процедура сбора  строк из файла в список 

read_list1([H|T]):-not(eof(df)),readln(H),!,read_list1(T).

read_list1([]).

 

%selects(6): процедура создания  второго списка, в котором будет  отсутствовать уже найденный  первый минимальный элемент

del_min(N,[N|T],T).

del_min(N,[H|T],[H|T1]):-N<>H,del_min(N,T,T1).

 

%selects(6): процедура нахождения  минимального элемента списка

min([A1,A2],A1):-str_len(A1,A11),str_len(A2,A22),A11<=A22,!.

min([A1,A2],A2):-str_len(A1,A11),str_len(A2,A22),A11>A22,!.

min([H1,H2|T],Min):-str_len(H1,H11),str_len(H2,H22),H11<=H22,min([H1|T],Min).

min([H1,H2|T],Min):-str_len(H1,H11),str_len(H2,H22),H11>H22,min([H2|T],Min).

 

%selects(6): процедура нахождения  и вывода на экран двух минимальных  строк из текстового файла

read_write1:-write("Enter df:"),nl,

readln(F),

openread(df,F),nl,

readdevice(df),

read_list1(L),min(L,Min1),

closefile(df),

writedevice(screen),

file_str(F,Str),

write("Vash file:\n",Str),nl,nl,

write("Dve minimalnie stroki iz faila:\n",Min1),nl,

del_min(Min1,L,L1),

min(L1,Min2),

write(Min2),nl.

 

  1. ТЕСТИРОВАНИЕ ПРОГРАММЫ

 

В процессе тестирования готовой программы  явных ошибок обнаружено не было.

После запуска программы  появляется главное меню, из пунктов  которого и выбирается та или иная команда.  Меню состоит из следующих  пунктов:

  1. “Razbienie stroki po granice slova." – разбиение строки на две строки примерно одинаковой длины по границе слова. Результат выполнения представлены на рисунке А2 графической части.
  2. "Podschet kolichestva cifr v stroke." – подсчет в строке количества цифровых символов. Проверка данной операции прошла успешно, результат показан на рисунке А3 графической части.
  3. "Dva naibolshih elementa v spiske." – нахождение в списке двух наибольших элементов. Данная операция выполняется без ошибок как показано на рисунке А4.
  4. "Elementi kratnie zadannomu chislu." – нахождение в списке элементов, кратных заданному числу. Результат успешного выполнения операции представлен на рисунке А5 графической части.
  5. “Soedinenie treh tekstovih failov." – объединение трех текстовых файла в один. Проверка показала правильную работу выполнения объединения файлов. Результаты представлены на рисунке А6 графической части.
  6. "Nahozhdenie dvuh korotkih strok v faile." – нахождение в текстовом файле двух самых коротких строк. Операция успешно прошла тестирование, результаты на рисунке А7.
  7. "Vihod." – завершение приложения.

 

 

  1. РУКОВОДСТВО ДЛЯ ПОЛЬЗОВАТЕЛЯ

 

В результате запуска программы  появляется окно главного меню с пунктами выбора нужной операции. Внешний вид  окна представлен на рисунке 1.

 

Рисунок 1 – Главное меню программы

 

Выбор операции осуществляется путем нажатия клавиши с цифрой, соответствующей пункту меню, и подтверждением ввода нажатием клавиши “ENTER”.

В зависимости от операции, выбранной пользователем, выдается запрос на ввод текстовой строки, списка или пути к рабочему файлу, т.е  появляется одно из окон, показанных на рисунке 2.

 



 


 

 

 

 

Рисунок 2 – Варианты запроса  для ввода данных пользователем

 

Ввод строки подтверждается единичным нажатием клавиши “ENTER”. Каждый элемент списка отделяется нажатием “ENTER”, а для окончания ввода следует нажать эту клавишу дважды.

Возврат в главное меню после выполнения текущей операции выполняется нажатием любой клавиши.

 

 

ВЫВОДЫ

 

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

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

 

ЛИТЕРАТУРА

 

  1. Шрайнер П.А. Основы программирования на языке Пролог. – М.: Интернет – Ун-т Информ. Технологий, 2005. – 176 c.
  2. Методические указания к выполнению курсовой работы по дисциплине  
    " Функциональное и логическое программирование " / Мн.: БНТУ, 2005. – 8c.
  3. Малпас   Дж. Реляционный  язык  Пролог  и его  применение. - М.: Наука, 1990. - 464 с.
  4. Братко И. Алгоритмы искусственного интеллекта на языке PROLOG – 3-е издание. – М.: Издательский дом "Вильямс", 2001. — 640 с.
  5. Клоксин  У.,  Меллиш К.  Программирование на языке Пролог. - М.: Мир, 1987.  – 336 с.

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