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

Работа со строками

Категория:

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

Дисциплина:

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

Город:

Беларусь, Минск

Учебное заведение:

БНТУ, ФИТР

Стоимость работы:

4 руб.

Оценка: 10
Объем страниц: 6
Год сдачи: 2021
Дата публикации: 09.09.2021

Фрагменты для ознакомления

Отчет по лабораторной работе № 7

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

«РАБОТА СО СТРОКАМИ»

Цель работы: приобретение практических навыков работы со строками в программах на Visual Prolog.

Задание общее по лабораторной работе:

Введенную с клавиатуры строку вывести на экран дисплея наоборот.

Код программы: 

predicates

            nondeterm наоборот(string, integer, string)

            nondeterm результат

clauses

            наоборот(_, 0,"").

            наоборот(Строка, Длина1, ИтСтрока1) :-

                        Длина2 = Длина1 - 1,                                   

                        frontstr(Длина2, Строка, СтрокаОстат, Символ), 

                        наоборот(СтрокаОстат, Длина2, ИтСтрока2),                 

                        concat(Символ, ИтСтрока2, ИтСтрока1).

Скриншоты результатов:

Задание индивидуальное:

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

 Код программы:

domains

 list=string*                                                                                            

predicates

            nondeterm проверка(char, char, integer)

            nondeterm перв_посл_одинак(string, list)  

            nondeterm результат 

clauses

 Скриншоты результатов:

Задание:

4.9. Дана строка символов. Если в ней нет символа *, то строку оставить без изменения, иначе заменить символ, стоящий после первой *, на символ +.

 Код программы:

domains

str = string

predicates

            nondeterm поиск_звезд(str,str)

            nondeterm замена(str,str)

            nondeterm результат 

clauses                                              

 Скриншоты результатов:

            Задание:

            4.20. Найти в строке слова с числовыми символами.

 Код программы:

predicates

            nondeterm lendth_words(string,integer).      

            nondeterm result.

            nondeterm take_word(integer,string,string,string).   

            nondeterm check(string, string,  integer).     

            nondeterm str_numbers(string,string).

 clauses 

            lendth_words(Строка, 0)  :-

                        frontchar(Строка, Символ, _) ,

                         Символ = ' '.

            lendth_words(Строка, Длина) :-

                        frontchar(Строка, Символ, ОстатокСлова),

                        Символ <> ' ' ,

                        lendth_words(ОстатокСлова, Длина1),

                        Длина = Длина1+1.

            take_word(0, "", "", "").

Скриншоты результатов:

Контрольные вопросы:

  1. Что будет получено в качестве результата при выполнении предиката str_len с поточным шаблоном (i,i)?
  2. Можно ли использовать предикат concat для получения остатка строки при задании строки и ее подстроки?
  3. Возможно ли применение предиката frontchar со свободными второй и третьей переменными?
  4. Можно ли с помощью предиката frontchar подсоединить заданный символ к началу строки.
  5. Сколько имеется вариантов поточного шаблона предиката frontstr?
  6. Имеется строка, содержащая последовательность имен, разделенных пробелами. Какой предикат можно использовать для преобразования этой строки в список имен?
  7. Напишите правило преобразования строки в список атомов. Какой получится список, если в качестве входного параметра этому правилу будет передана следующая строка: “abc f17 38de, a5b”?
  8. Назначение предиката isname.
  9. Сколько вариантов поточного шаблона имеют предикаты преобразования типов (за исключением term_str)? Смысл поточного шаблона (i,i) для этих предикатов.
  10. С помощью какого предиката преобразования типов можно определить десятичный код символа?
  11. Есть ли стандартный предикат для преобразования целого числа в вещественное и наоборот?

Вывод: приобрёл практические навыки работы со строками в программах на Visual Prolog.

16