Встроенные предикаты работы со строками 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Встроенные предикаты работы со строками



1. frontchar (Строка,Символ,ОстальнаяСтрока)

(string,char,string) -

(i,o,o) (i,i,o) (i,o,i) (i,i,i) (o,i,i)

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

Goal: frontchar("VPROLOG",CH,REST) % выделение пеpвого символа и подстpоки за ним

CH=V, REST=PROLOG

1 Solution

Goal: frontchar("VPROLOG",'V',REST) % выделение подстpоки после буквы T

REST=PROLOG

1 Solution

Goal: frontchar(X,'V',"PROLOG") % фоpмиpование стpоки

X=VPROLOG

1 Solution

2. fronttoken (Строка,Лексема,ОстальнаяСтрока)

(string,string,string) - (i,o,o) (i,i,o) (i,o,i) (i,i,i) (o,i,i)

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

Goal: fronttoken("all boys do fine",TOK,REST)

TOK=all, REST= boys do fine

1 Solution

Goal: fronttoken("22all boys do fine",TOK,REST)

TOK=22, REST=all boys do fine

1 Solution

Goal: fronttoken("-22.66all boys do fine",TOK,REST)

TOK=-, REST=22.66all boys do fine

1 Solution

3. frontstr (Длина,ВходнаяСтрока,НачальнаяСтрока,ОстальнаяСтрока)

(integer,string,string,string) - (i,i,o,o)

Предикат позволяет формировать из ВходнаяСтрока строки НачальнаяСтрока заданной длины и ОстальнаяСтрока.

Goal: frontstr(3,"All boys do fine",STR1,STR2)

STR1=All, STR2= boys do fine

1 Solution

Goal: frontstr(0,"All boys do fine",STR1,STR2)

STR1=, STR2=All boys do fine

1 Solution

Goal: frontstr(20,"All boys do fine",STR1,STR2)

No Solution

4. concat (Строка1,Строка2,Строка3)

(string,string,string) - (i,i,o) (i,o,i) (o,i,i) (i,i,i)

Предикат реализует сцепление строк, т.е. операцию Строка3 = Строка1 + Строка2, а также pазличные функции, связанные со сцеплением.

Goal: concat("aaa","bbb",X)

X=aaabbb

1 Solution

Goal: concat("aaa","bbb","aaabbb")

True

Goal: concat(X,"bbb","aaa----bbb")

X=aaa----

1 Solution

Goal: concat("aaa",X,"aaa----bbb")

X=----bbb

1 Solution

5. str_len (Строка,Длина)

(string,integer) - (i,i) (i,o) (o,i)

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

Goal: str_len("abc",Len) % какова длина стpоки?

Len=3

1 Solution

Goal: str_len("abc",3) % длина стpоки pавна 3?

True

6. isname (ПараметрСтрока)

(string) - (i)

Предикат осуществляет проверку параметра-строки на соответствие синтаксису Турбо-Пролога.

Goal: isname("Dan")

True

Goal: isname("2Leo")

False

ПРАКТИЧЕСКИЕ ЗАДАНИЯ

1.Индивидуальное задание. Выполнить задание по индивидуальному номеру варианта, полученного у преподавателя.

1. Создать программу, которая позволила бы вводить с клавиатуры в файл любимое стихотворение пользователя. Обеспечить возможность прочтения стихотворения и его удаления. Файл сохранять с именем, введенным пользователем.

2. Написать программу, формирующую файл с именем, задаваемым пользователем. Указанный файл должен содержать введенный пользователем с клавиатуры текст с учетом абзацев(абзац считать одной строкой). Пользователь должен иметь возможность прочитать весь файл, удалить из него весь текст, набрать текст заново.

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

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

5. Создать программу, которая проводит следующие действия: а) введённую пользователем маленькую букву преобразует в большую; б) записывает полученные буквы в соответствующие файлы больших и маленьких букв. Остановкой записи считать любой символ, отличный от букв. Пользователь должен иметь возможность просмотреть содержимое полученных файлов.

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

7. Написать программу, которая позволила бы вводить с клавиатуры в файл с указанным пользователем именем стихотворение. Кроме того, обеспечить возможность 1) сохранения существующего файла в файле с другим именем; 2) доступа к любому из полученных файлов с целью их просмотра или удаления.

8. Создать программу, которая сохраняет вводимую с клавиатуры информацию в файле с заданным именем следующим образом: каждое введенное пользователем слово сохраняется как отдельная строка. Сигналом окончания строки, очевидно, является нажатие пробела, а окончания ввода – ENTER. Обеспечить возможность просмотра файла целиком и его удаления.

9. Написать программу, позволяющую производить следующие манипуляции: 1) создавать файл с именем, указанным пользователем; 2) сохранять в этом файле (с дублированием для большей сохранности еще в одном файле) информацию, вводимую с клавиатуры согласно следующему принципу: сохранять в виде отдельной строки каждую запись, оканчивающуюся нажатием клавиши ENTER, окончанием ввода считать слово “end!”; 3) открыть созданный файл для чтения; 4) удалить файл (дополнительный файл удалить лишь после повторного подтверждения соответствующего запроса).

10. Написать программу, которая выполняет следующие функции: 1) создает файл с именем, указанным пользователем; 2) в этот файл заносит информацию о студентах вашей группы следующим образом: student(“Иванов”, “Иван”, “Иванович”, “1983”) (как одну строку) (пользователь естественно должен вводить только ФИО и год рождения, но вид строк в файле должен быть таким, как в примере); 3) просматривает файл в целом; 4) удаляет файл.

11. Написать программу, выполняющую следующие операции: 1) открывает любой файл с диска (использовать предикат dir); 2) выводит содержимое файла на экран; 3) перезаписывает файл, вводя информацию пользователя (перезапись осуществлять после дополнительного запроса); 4) дописывает информацию в файл; 5) удаляет выбранный файл.

12. Написать программу, выполняющую следующие действия: 1) вводимые пользователем символы сохраняет соответственно в файле русских и латинских букв; 2) предоставляет возможность просмотра указанных файлов; 3) удаляет файлы с диска после запроса у пользователя подтверждения о завершении работы с программой.

13. Написать программу, выполняющую следующие действия: 1) создает на диске три файла с именами, указанными пользователем; 2) файлы пополняются информацией следующим образом: первая строка сохраняется в первом файле, вторая – во втором; третья – в третьем, четвертая – в первом и т.д.; 3) просматривает файлы; 4) удаляет файлы после повторного запроса об их удалении.

14. Написать программу, которая распределяет вводимые пользователем числа следующим образом: четные числа в файл «chet.dat», нечетные – «nechet.dat». Каждое введенное число считать отдельной строкой. Обеспечить возможность просмотра указанных файлов и их последующей очистки.

15. Создать программу, которая формирует файлы следующего типа: первый файл содержит ФИО людей в виде отдельных строк; второй файл – соответствующие года рождения (тоже отдельными строками). Информация в каждом файле пополняется вводом с клавиатуры. Затем получить третий файл, который содержит в качестве отдельной строки уже объединение соответствующих строк из первого и второго файлов. Все файлы должны быть доступны к их полному просмотру и удаляться после завершения работы программы.

16. Написать программу, которая выполняет следующие операции: 1) создает файл с указанным пользователем именем; 2) заполняет файл строками, которые вводятся с клавиатуры (конец строки совпадает с нажатием enter); 3) просматривает файл полностью; 4) дозаписывает в файл новые строки; 5) удаляет файл после завершения работы программы.

2.Индивидуальное задание. Выполнить задание по индивидуальному номеру варианта, полученного у преподавателя.

1. В файле, содержащем определенное количество слов (что-то вроде словарного запаса), обеспечить возможность поиска слова, введенного с клавиатуры.

2. Из файла, содержащего несколько строк, получить первую строку, в которой найдется слово, введенное пользователем для соответствующего поиска.

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

4. Проверить, является ли введенная пользователем строка электронным адресом.

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

6. Написать программу, которая выделяет из введенной с клавиатуры строки первых два и последних два слова. Вывести их на экран.

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

8. Создать программу, которая из введенной пользователем строки выбирает слова, длина которых не превышает 7 символов. Вывести их на экран.

9. Написать программу, которая из строки, введенной с клавиатуры, выбирает слова, в которых заданная пользователем буква встречается не менее 3 раз. Вывести эти слова.

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

11. Написать программу, которая подсчитывает во введенной с клавиатуры строке количество букв, равных букве, заданной пользователем.

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

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

14. Написать программу, которая подсчитывает длину каждого слова из введенной с клавиатуры строки, выводи соответственно слово и его длину, а также определяет то слово, у которого наибольшая длина.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Перечислите встроенные предикаты, позволяющие открывать файлы. Чем они отличаются?

2. Как можно изменить доступ к устройствам ввода?

3. Как можно изменить доступ к устройствам вывода?

4. Как завершить работу с файлами?

5. Назовите предикат, позволяющий установить файл в текстовый или двоичный режим.

6. Как проверить наличие файла на диске?

7. Как проконтролировать текущую позицию в файле?

8. С помощью какого предиката можно очистить содержимое внутреннего буфера? Как это делается?

9. Для чего используют предикат deletefile?

10. Как переименовать файл?

11. Что произойдет, если сработает предикат copyfile(“d:\\users\\lab1.pro”, “lab1.pro”)?

12. Как изменить текущий диск и каталог/подкаталог?

13. Как выделить атомы из строки?

14. Опишите предикат, позволяющий отделять символы.

15. Как преобразовать слово в список символов? Объясните процедуру.

16. Как преобразовать строку в список слов? Объясните процедуру.

17. Какой предикат позволяет определить, можно ли считать слово именем Пролога?

18. Как подсчитать длину строки?

19. Для чего предназначен предикат concat?

20. Как выделить из строки последовательность символов, заданной длины?

 

ЛАБОРАТОРНАЯ РАБОТА №7

ТЕМА: Работа с внутренней базой данных в Visual Prolog.

ЦЕЛЬ: Научиться использовать возможности Visual Prolog при работе с внутренними базами данных.

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



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 814; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.233.72 (0.031 с.)