Скачиваний:
12
Добавлен:
01.05.2014
Размер:
205.82 Кб
Скачать

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

«Работа с файлами, строками и списками»

Цель работы: приобретение навыков работы со строками, файлами, списками на языке Turbo Prolog.

Задание к работе: задан список списков. Из него следует сформировать новый список, элементами которого будут слова исходного списка, в которых согласных больше гласных. Элементами результирующего списка не могут быть другие списки. Результат сохранить в файле.

Выполнение работы:

Описание предикатов:

analiz_string(Str,Glas,Sogl) – определяет в строке Str количество гласных Glas и согласных Sogl букв.

glasn_bukva(char) – описывает факт того, что char является гласной буквой.

videlenie_stroki(L1,L2) – выделяет из списка L1 строку, и если в ней согласных больше гласных, то добавляет эту строку в список L2.

videlenie_spiska(L1,L2,L3) – выделяет из списка списков L1 список строк для дальнейшего анализа предикатом videlenie_stroki. Текущий результат накапливается с списке L2, а через список L3 возвращается из предиката.

append(L1,L2,L3) – добавляет в конец списка L1 список L2 и результат возвращает через список L3.

save_file(L) – сохраняет список строк L в файле.

start – организует начало работы программы.

Листинг программы:

domains

file = f1

object = string*

list = object*

predicates

analiz_string(string,integer,integer)

glasn_bukva(char)

videlenie_stroki(object,object)

videlenie_spiska(list,object,object)

append(object,object,object)

save_file(object)

start

clauses

glasn_bukva('а').

glasn_bukva('у').

glasn_bukva('е').

glasn_bukva('ы').

glasn_bukva('о').

glasn_bukva('э').

glasn_bukva('я').

glasn_bukva('и').

glasn_bukva('ю').

analiz_string("",0,0).

analiz_string(S,Glas,Sogl) if

frontchar(S,X,Y),

glasn_bukva(X),

analiz_string(Y,Glasn,Sogl),

Glas=Glasn+1.

analiz_string(S,Glas,Sogl) if

frontchar(S,X,Y),

not(glasn_bukva(X)),

analiz_string(Y,Glas,Sogln),

Sogl = Sogln+1.

videlenie_stroki([],[]).

videlenie_stroki([X|L],L2) if

analiz_string(X,G,S),

S > G,

write(X," - ",G," гласных, ",S," согласных - подходит\n"),

videlenie_stroki(L,L1),

L2 = [X|L1].

videlenie_stroki([X|L],L1) if

analiz_string(X,G,S),

S <= G,

write(X," - ",G," гласных, ",S," согласных - не подходит\n"),

videlenie_stroki(L,L1).

append([],L,L).

append([X|L1],L2,[X|Lr]) if

append(L1,L2,Lr).

videlenie_spiska([],L,L).

videlenie_spiska([X|L],L1,Rez) if

videlenie_stroki(X,Spis),

append(L1,Spis,L2),

videlenie_spiska(L,L2,Rez).

save_file(Rez) if

openwrite(f1,"rezult.txt"),

writedevice(f1),

write("Список слов, в которых согласных больше гласных\n"),

write(Rez),

closefile(f1).

start if

write("Задан список списков. Из него следует сформировать новый список,\n"),

write("элементами которого будут слова исходного списка, в которых согласных\n"),

write("больше гласных. Результат сохранить в файле.\n\n"),

write("Список списков строкового типа:\n"),

readchar(_),

List = [["пролог","особо","хороший","язык"],["лисп","особо","лучше"],["следующие","компоненты"]],

write(List,"\n\n"),

readchar(_),

videlenie_spiska(List,[],Rez),

write("\nСписок из слов, в которых согласных больше гласных:\n"),

write(Rez,"\n\n"),

save_file(Rez),

write("Результат сохранен в файле rezult.txt\n"),

readchar(_).

goal

start.

Работа программы:

Для начала работы программы необходимо запустить исполняемый файл:

При нажатии кнопки Enter произойдет обработка исходного списка:

Содержимое файла rezult.txt выглядит так:

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

4

Соседние файлы в папке Лабораторные работа на Turbo Prolog