Лабораторная работа - Организация многооконных меню и работа с файлами в турбо-прологе - файл n1.doc

Лабораторная работа - Организация многооконных меню и работа с файлами в турбо-прологе
скачать (1997 kb.)
Доступные файлы (1):
n1.doc1997kb.31.05.2012 19:56скачать

n1.doc

ГОУ ВПО

Уфимский государственный авиационный технический университет
Кафедра ТК


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

По дисциплине «Логическое программирование»

Организация многооконных меню и работа с файлами в турбо-прологе

Вариант №3

Выполнил

Принял: Колоденкова А.Е.
Уфа 2011

Цель работы: Изучение файловой системы Турбо-Пролога, работы с файлами последовательного и прямого доступов, способов организации многооконных меню. Разработка Пролог-программ обработки файлов с созданием среды пользователя с помощью многооконных меню.
Задание: Создать программу работы с файлами целых чисел, реализующую следующие функции обработки файлов: а) создание файла; б) добавление элемента в файл; в) модификацию данных в файле; г) удаление элемента в файл; д) просмотр файла (вывод на экран); ж) найти сумму положительных элементов файла.
Код Пролог-программы:
domains

file=df

i=integer

list=i*

Z=integer

predicates

menu

repeat

process(i)

error

input(symbol)

read

print

readlist(list)

printlist(list)

dlina(list,integer)

delete(list,integer,list)

newlist(list,list)

clauses

repeat.

repeat:-repeat.

menu():-repeat,clearwindow,

write("1.sozdanie"),nl,

write("2.dobavlenie"),nl,

write("3.modifikaciya"),nl,

write("4.udalenie"),nl,

write("5.prosmotr"),nl,

write("6.obrabotka"),nl,

write("7.vyhod"),nl,nl,

write("vybor (1-7): "),nl,readint(X),

process(X),X=7,!.

process(X):-X<1,error.

process(X):-X>7,error.

process(7):-write("press any key... \n"),readchar(_).

process(1):-makewindow(1,13,15,"sozdanie",10,10,10,30),

write("file name: "), readln(F),

openwrite(df,F),

write("budite vvodit? (y/n): "),

readln(C),input(C),closefile(df),

removewindow.

process(2):-makewindow(2,13,15,"dobavlenie",10,10,10,30),

write("file name: "),readln(F),

openappend(df,F),

input("y"),closefile(df),removewindow.

process(3):-makewindow(3,13,15,"modificirovanie",10,10,10,30),

write("file name: "),readln(F),

openmodify(df,F),

write("nomer zapsisi: "),readint(M),I=(M-1)*7,

readdevice(df),

filepos(df,I,0), readint(C),readdevice(keyboard),

write("znachenie: ",C),nl,

write("novoe znachenie: "),readint(D),

writedevice(df), filepos(df,I,0),writef("%5.0",D),nl,

writedevice(screen),closefile(df),removewindow.

process(4):-makewindow(4,13,15,"udalenie",10,10,10,30),

write("file name:: "),readln(F),

openread(df,F),readdevice(df),

readlist(L),readdevice(keyboard),closefile(df),

write("Nomer zapisi: "),readint(K),delete(L,K,L1),

openwrite(df,F),writedevice(df),printlist(L1),

writedevice(screen),closefile(df),removewindow.

process(5):-makewindow(5,13,15,"prosmotr",10,10,10,30),nl,

write("file name:: "),readln(F),

openread(df,F),readdevice(df),

print,readdevice(keyboard),readchar(_),

closefile(df),removewindow.

process(6):-makewindow(6,13,15,"obrabotka",10,10,10,30),nl,

write("file name:: "),readln(F),

openread(df,F),readdevice(df),

readlist(L),readdevice(keyboard),

closefile(df),newlist(L,L1),dlina(L1,N),nl,write("summa: ",N),readchar(_),

openwrite(df,"work.txt"),writedevice(df),

printlist([N]),writedevice(screen),

closefile(df),removewindow.

error:-nl,write("net takogo punkta!"),readchar(_).

input("n"):-!.

input("y"):-write("vvedite element: "), read,write("budete vvodit? (y/n)?"),

readln(C),input(C).

read:-readint(N),!,writedevice(df),writef("%5.0",N),nl,writedevice(screen).

print:-not(eof(df)),!,readln(N),write(N),nl,print.

print:-readdevice(keyboard).

readlist([]):-eof(df),!.

readlist([H|L]):-readint(H),readlist(L).

printlist([H|L]):-!,writef("%5.0",H),nl,printlist(L).

printlist([]).

dlina([],0).

dlina([_|L],N):-dlina(L,N1),N=N1+1.

delete([_|L],1,L).

delete([X|L],K,[X|L1]):-K>1,K1=K-1,delete(L,K1,L1).

newlist([],[]).

newlist([H|L],[H|L1]):-H>0,newlist(L,L1).

newlist([H|L],L1):-H<=0,newlist(L,L1).

summa([],0).

summa([X|L],S):- newlist(L,L1),summa(L1,S1),S=S1+X.
Тестирование:



Просмотр созданного файла



Добавление



Модификация(замена значения 7го элемента 22 на -4 )



Удаление (3го элемента)



Обработка(нахождение суммы положительных элементов)


Вывод: Для выполнения лабораторной работы бы

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

Учебный материал
© nashaucheba.ru
При копировании укажите ссылку.
обратиться к администрации