![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Встроенные функции обработки строк visual и pdc prolog
concat(string,string,string): (i,i,o) (o,i,i) (i,o,i) (i,i,i)
frontchar(String,FrontChar,RestString) frontchar(string,char,string): (i,o,o) (i,i,o) (i,i,i) (o,i,i)
frontstr(NumberOfChars,String1,StartStr,String2) frontstr(integer,string,string,string): (i,i,o,o)
fronttoken(String,Token,RestString) fronttoken(string,string,string):(i,o,o)(i,i,o)(i,o,i)(i,i,i)(o,i,i)
str_len(String,Length) str_len(string,integer): (i,i) (i,o)
searchstring (STRING SourceStr, STRING SearchStr, UNSIGNED Position) (i, i, o)
substring (STRING Source, UNSIGNED Pos, UNSIGNED Len, STRING Part) (i, i, i, o)
subchar (STRING String, UNSIGNED Position, CHAR RetChar) (i, i, o)
searchchar (STRING String, CHAR SearchingChar, UNSIGNED Pos) (i, i, o)
concat (STRING String1, STRING String2, STRING LongString) (i, i, o), (o, i, i), (i, o, i), (i, i, i) Встроенные функции преобразования типов
char_int(CharParam,IntParam) char_int(charParam,integer): (i,o) (o,i) (i,i)
str_char(StringParam,CharParam) str_char(string,char): (i,o) (o,i) (i,i)
str_int(StringParam,IntParam) str_int(string,integer):(i,o)(o,i)(i,i)
str_real(StringParam,RealParam) str_real(string,real): (i,o) (o,i) (i,i)
upper_lower(StringUpperCase,StringInLowerCase) upper_lower(string,string): (i,o) (o,i) (i,i)
term_str (<domainName>, <TERM> Term, STRING String) (i, o, i) (i, i, o) (i, i, i)
3) Логические операции: Штрих Шеффера ï Стрелка Пирса ¯ (a ï b) = (Ø (a Ù b)) (a ¯ b) = (Ø (a Ú b))
4) 1. Э. Мендельсон, Введение в математическую логику.
Лабораторная работа №5: рекурсия
Методические указания
Составьте две Пролог - программы: а) первые программы (варианты 1 ¸ 18) соответствуют варианту Вашего задания, б) вторая программа (варианты 19 ¸ 36) соответствует варианту Вашего задания + 18. Примечания
1) Номер варианта (N) равен порядковому номеру студента в списке группы. 2) Срок выполнения – 12 - 16-ая недели семестра. 3) Отчёт по выполнению лабораторной работы оформляется и защищается после чтения лекций по соответствующей теме и должен содержать: d) файлы Lab_5a1_N.pro и Lab_5a2_N.pro с комментариями, e) для 1-ой задачи: 1) формулу исчисления предикатов (ИП), интерпретирующую отрицание простого основного вопроса раздела цели Пролог - программы, 2) формулу ИП, интерпретирующую неосновной вопрос из двух конъюнктов раздела цели Пролог - программы, 3) формулу ИП, интерпретирующую факт раздела предложений Пролог - программы, 4) формулу ИП, интерпретирующую правило раздела предложений Пролог - программы, c) файл Lab_5b_N.pro с комментариями, d) для 2-ой задачи – определения понятий: 1) логического следствия, 2) логического вывода, 3) разрешимого алгоритма, 4) разрешимой формальной системы.
Постановка задачи a1
Функция задана аналитически. Вычислить с заданной точностью значение функции, представленной в виде знакочередующегося сходящегося ряда, для заданного значения её аргумента.
Варианты задачи 0. f(x) = (1+x)-1/2 , ряд: 1 – x*(1/2) + x2*(1*3)/(2*4) – x3*(1*3*5)/(2*4*6) + . . . , область сходимости: |x| < 1, точность: eps . 1. f(x) = ln(1+x) 2. см. задачу №5a2 3. см. задачу №5a2 4. f(x) = cos x 5. f(x) = sin x 6. f(x) = (1+x)1/4 7. f(x) = (1+x)1/3 8. см. задачу №5a2 9. см. задачу №5a2 10. f(x) = (1+x)-1/4 11. f(x) = (1+x)-1/3 12. f(x) = (1+x)1/2 13. см. задачу №5a2 14. f(x) = (1+x)-3/2 15. f(x) = ln x 16. f(x) = arctg x 17. f(x) = ln(x+(x2+1)1/2) 18. f(x) = (1+x)-5/2
Паскаль- программа
/* Lab_5a1_0.pro Определить значение функции f(x) = (1+x)-1/2 = 1.0 / sqrt(1.0 + x), Определить сумму ряда: 1 - x*(1/2) + x2*(1*3)/(2*4) - x3*(1*3*5)/(2*4*6) . . . , для |x| < 1 , с точностью Eps. */ var n: integer; s,x,a,eps: real; begin write('x='); readln(x); s:= 1.0; a:= 1.0; n:= 2; while abs (a) > eps do begin a:= -a * x * (n-1) / n; s:= s + a; n:= n + 2 end; writeln('s=',s:7:5); writeln('f=', 1.0/sqrt(1.0+x):7:5); writeln('r=',exp(-0.5*ln(1.0+x))s:7:5); readln end. Пролог-программа domains r = real i = integer
predicates nondeterm s_r(r,r,r,r) nondeterm s_r(r,r,r,r,r,r,i)
clauses s_r(X,Eps,S1,S2):- % X - аргумент, Eps - точность, % S1 - приближённый результат, S2 - точный результат s_r(X,Eps,S1,S2,1.0, 1.0,2). % 1.0 - значение 1-го члена ряда
s_r(X,Eps,S1,S2,S1,A,_):- abs(A)<=Eps, % abs значение члена ряда <= Eps S2=1.0/sqrt(1.0+X).
s_r(X,Eps,S1,S2,Sr,A,N):- abs(A)>Eps, % abs значение члена ряда > Eps At = (-1)*A*X*(N-1)/N, % At - очередной член ряда St = Sr + At, % St - очередная сумма ряда Nt = N + 2, s_r(X,Eps,S1,S2,St,At,Nt). % итерационный цикл
goal s_r(0.5,0.0001,X,Y). Постановка задачи a2
Для заданного значения аргумента вычислить значение функции - из книги “Информатика”, Ю.А.Рыжиков, стр.157-160.
Варианты задачи 1. №9 2. №10 3. №11 4. №18 5. №19 6. №20 7. №21 8. №22 10. №23 11. №24 12. №25 13. №26 14. №27 15. №28 16. №29 17. №30 18. №8 Примечания Параметр рекурсии – целое число. Расчёт степенных рядов делается из условия заданной точности или с заданным числом членов. При вычислении интегралов расчёты по варианту n=0 специально не оговариваются. определяется как константа. Заменой переменных можно перейти к целому представлению индексов. Постановка задачи b
Создать разрешимый алгоритм логического следствия ППФ S из конечного множества ППФ {H}. Формулы записаны в префиксной форме. Для этого написать программы а) печати ППФ в инфиксной форме, изменив изображение всех логических операций, б) определения значения ППФ, в) определения Hi╞ S,то есть следствия ППФ S из Hi, где Hi - одна из формул {H}, г) определения {H}╞ S,то есть следствия ППФ S из {H}. Варианты задачи
19. Ø Ù Ú 20. Ù ® 39. Ú Ø 40. ï 41. ® Ø 42. º Ú Ù 43. Ø ï 44. ® Ú 45. º Ø 46. ¯ Ú 47. ® Ú Ø 48. Ø Ù º 49. ® ï 50. ¯ Ø 51. ® º 52. Ù ® Ø 53. ® º Ú 54. ¯ ® 55. Ø Ù 56. Ù Ú
Лабораторная работа №6: списки
Методические указания
Составьте две Пролог – программы. Номер варианта (N) равен порядковому номеру студента в списке группы. Срок выполнения – 2 - 6-ая недели семестра. Отчёт по выполнению лабораторной работы оформляется и защищается после чтения лекций по соответствующей теме и должен содержать: a) для 1-ой задачи: файлы Lab_6a1_N.pro ¸ Lab_6a4_N.pro с комментариями, b) для 2-ой задачи: файлы Lab_6b1_N.pro ¸ Lab_6b5_N.pro с комментариями, с) для программы (согласовать с преподавателем) записать: 1. логическую формулу исчисления предикатов (ИП), интерпретирующую Пролог – программу, 2. последовательность резольвент и подстановок как реализацию метода резолюций в ИП, 3. семантическое дерево поиска решений. Постановка задачи a Даны два списка целых или вещественных чисел – L1 и L2. Определить R, для чего решить следующие задачи: Варианты задачи 1. a) Определить список L3 как пересечение списков L1 и L2, b) получить список L4, упорядочив элементы списка L3 по возрастанию значений, c) определить минимальный простой элемент M списка L4, d) число R - сумма чётных чисел списка L4 + M.
2. a) Получить множество M1 объединением списков L1 и L2 (без повторений значений их элементов), b) определить число сочетаний Сmn (m³n), где m и n – количество чётных и нечётных чисел в M1, c) получить множество M2, сформировав его из всех элементов множества M1, уменьшенных на Сmn, d) множество R – декартово (прямое) произведение множеств M1 и M2.
3. a) Определить список L3 как пересечение списков L1 и L2, b) определить максимальный элемент M списка L3, c) получить список L4, включив в него все элементы списка L3 кроме числа M, d) определить список R обращением элементов списка L4.
4. a) Определить список L3 как результат объединения списков L1 и L2, b) определить список L4 как результат упорядочения элементов списка L3 по убыванию их значений, c) определить максимальный нечётный элемент M списка L4, d) получить список R, сформировав его из чётных элементов списка L4, увеличив их в M раз.
5. a) Получить множество M1 объединением списков L1 и L2 (без повторений значений их элементов), b) определить минимальную по абсолютной величине разность M двух соседних элементов множества M1, с) получить множество M2, сформировав его из чётных сумм пар соседних элементов множества M1, d) множество R - разность множеств M1 и M2.
6. a) Определить список L3 как результат объединения списков L1 и L2, b) определить минимальное составное число M списка L3, с) получить список L4 как результат удаления из L3 первого вхождения M, d) сформировать список R из нечётных простых чисел списка L4.
7. a) Определить список L3 как пересечение списков L1 и L2, b) определить список L4 как результат упорядочения элементов списка L3 по возрастанию их значений, с) определить количество K простых чисел в списке L4, d) получить список R как результат удаления из L4 последнего вхождения элемента K.
8. a) Получить множество M1 объединением списков L1 и L2 (без повторений значений их элементов), b) определить наибольший общий делитель NOD элементов множества M1, c) получить множество M2, включив в него все элементы множества M1, делённые на NOD и увеличенные на P, где P – первый слева элемент множества M1, d) множество R – симметрическая разность множеств M1 и M2 (M1 D M2).
9. a) Определить список L3 как пересечение списков L1 и L2, b) определить минимальную сумму S двух соседних элементов списка L3, с) получить список L4 из элементов списка L3, удалив из L3 все вхождения S, d) определить количество элементов (R) списка L4.
10. a) Получить множество M1 объединением списков L1 и L2 (без повторений значений их элементов), b) получить множество M2 как результат удаления из множества M1 всех элементов, кратных 5, c) получить множество M3 как результат увеличения всех элементов множества M2 на D, где D - максимальный нечётный делитель минимального числа M2, d) определить, являтся ли множество M3 собственным подмножеством множества M1 (R=”да” или R=”нет”),
11. a) Определить список L3 как пересечение списков L1 и L2, b) получить список L4 делением NOK на каждый элемент списка L3, где NOK – наименьшее общее кратное элементов списка L3, с) определить множество M как результат удаления всех повторов элементов списка L4, d) R – булеан множества M (множество всех подмножеств множества M).
12. a) Определить список L3 как результат объединения списков L1 и L2, b) определить количество нечётных элементов K списка L3, c) получить список L4 из элементов списка L3, добавив к ним K последним (слева) элементом, d) строка R – изображение первого в порядке следования слева направо нечётного элемента списка L4 в двоичной системе счисления.
13. a) Определить список L3 как пересечение списков L1 и L2, b) определить количество элементов K1 в списке L1 и количество элементов K2 в списке L2, c) определить число сочетаний Сmn (m³n), где m=min(K1,K2), n=max(K1,K2), d) получить список R из элементов списка L3, увеличив его чётные и уменьшив его нечётные элементы в Сmn раз.
14. a) Получить множество M1 объединением списков L1 и L2 (без повторений значений их элементов), b) определить максимальный (Max) и минимальный (Min) элементы множества M1, c) получить множество M2, уменьшив максимальный (Max) и увеличив минимальный (Min) элементы множества M1 на 3, d) определить, равны ли множества M1 и M2 (R=”равны” или R=”не равны”).
15. a) Определить список L3 как результат объединения списков L1 и L2, b) определить число сочетаний Сmn (m³n), где m и n – количество простых чисел в L1 и L2, 3 стр. Lab_6 c) получить список L4 из элементов списка L3, увеличив его первое и последнее числа на Сmn. d) определить список R как результат удаления всех повторов элементов списка L4.
16. a) Получить множество M1 объединением списков L1 и L2 (без повторений значений их элементов), b) определить первый (P1) и последний (P2) в порядке следования слева направо простые элементы множества M1, c) получить множество M2, включив в него все элементы M1 кроме элементов, кратных P1 и P2, d) множество R – 3-я степень множества M2 (R = M2 * M2 * M2).
17. a) Определить список L3 как пересечение списков L1 и L2, b) определить максимальный простой делитель D для третьего в порядке следования слева направо элемента списка L3, c) получить список L4, состоящий из увеличенных в D раз нечётных элементов списка L3, d) определить список R как результат упорядочения элементов списка L4 по возрастанию их значений.
18. a) Получить множество M1 объединением списков L1 и L2 (без повторений значений их элементов), b) получить множество M2 как результат удаления из множества M1 его максимального элемента, c) получить множество M3 как результат увеличения всех элементов множества M2 на 2, d) определить, являтся ли множество M3 подмножеством множества M1 (R=”да” или R=”нет”).
Постановка задачи b Правило подстановки в исчислении формальной системы. Логические формулы представлены в префиксном виде, формулы-подстановки записаны списком, алфавит обозначений атомарных высказываний (алфавит символов 1-ой категории) записан списком. Для этого написать программы, определяющие 1. результат интерпретаций логических формул (интерпретация задана списком), 2. результат подстановки в общезначимую формулу любой формулы, 3. формулу – подстановку как 1-ю формулу списка, 4. формулы – подстановки как список, 5. подстановку формулы списка вместо любого атома тождественной формулы. Варианты задачи 1. Ø Ù Ú 2. Ù ® 3. Ú Ø 4. ï 5. ® Ø 6. º Ú Ù 7. Ø ï 8. ® Ú 9. º Ø 10. ¯ Ú 11. ® Ú Ø 12. Ø Ù º 13. ® ï 14. ¯ Ø 15. ® º 16. Ù ® Ø 17. ® º Ú 18. ¯ ® 19. Ø Ù 20. Ù Ú
Лабораторная работа №7: база данных, оператор отсечения
Методические указания
Составьте две Пролог – программы. Номер варианта (N) равен порядковому номеру студента в списке группы. Срок выполнения – 7 - 12-ая недели семестра. Отчёт по выполнению лабораторной работы оформляется и защищается после чтения лекций по соответствующей теме и должен содержать: a) для 1-ой задачи: файлы Lab_7a1_N.pro ¸ Lab_7a7_N.pro с комментариями, b) для 2-ой задачи: файлы Lab_7b1_N.pro ¸ Lab_7b5_N.pro с комментариями, Постановка задачи a Сформировать базу данных. Удалить из базы объекты с минимальным свойством (ценой, числом, количеством экземпляров и т.д.) и определить количество объектов, оставшихся в базе данных. Для этого написать следующие программы: 1. ввод данных с клавиатуры, создание внутренней базы данных и вывод созданной базы данных на экран, 2. ввод данных с клавиатуры, создание внутренней базы данных, вывод созданной базы данных на экран и создание внешней базы данных, 3. удаление факта из внутренней базы, 4. добавление во внешнюю базу фактов из списка, 5. определение объектов с минимальным свойством, 6. удаление из внутренней базы объектов с минимальным свойством и определение количества оставшихся в ней объектов, 7. удаление из внешней базы объектов с минимальным свойством и определение количества оставшихся в ней объектов.
Варианты и пример факта задач
1. Вид и цена шоколада chocolate(“Алёнка”,16.50) 2. Начало занятий в институте begin(monday, 9.15) 3. Увлечение – марки hobby(“Антон”, “марки”,250) 4. Расписание лабораторных работ lab(“Физика”, Tuesday, 9.15) 5. Число спектаклей в театре theatre(“Ленком”, ”Фигаро”,3) 6. Адрес института и число корпусов institute(“Мирэа”, ”Проспект Вернадского”,6) 7. Число театральных премьер first(“Щелкунчик”, ”Большой театр”,4) 8. Число глав произведения поэта poem(“Лермонтов”, ”Мцыри”,26) 9. Порода, кличка и возраст собаки dog(“пудель”, ”Джой”,3) 10. Имя, фамилия и курс студента student(“Голубев”, ”Алексей”,4) 11. Фамилия и возраст лектора lecturer(“История”, ”Ключевский”,45) 12. Юбилей гражданина jubilee(“Ельцин”,70) 13. Марка, цена и цвет автомобиля auto(“Моквич”,brown,4500) 14. Количество человек в семье family(“Сидоровы”,4) 15. Марка и размер монитора monitor(samsung,15) 16. Количество автозаправок в районе petrol(“Строгино”, 6) 17. Количество зверей в зоопарке animal(horse,7) 18. Спортивная команда sport(“футбол”,11) 19. Количество книг по предмету book(“Физика”, 3)
Постановка задачи b
Дано множество гипотез (H) во внешней базе данных и формула S. Определить гипотезы, из которых следует S. Формулы представены в префиксном виде. Для этого написать следующие программы: 1. формирование внешней базы данных - формул {H} и добавление к ней формул, 2. создание списка формул {H}, 3. cоздание подмножеств формул {H}, 4. создание алгоритма разрешения логического следствия (см. Lab5b), 5. создание списка интерпретаций атомов формул (см. Lab6b).
Варианты задачи
1. Ø Ù Ú 2. Ù ® 3. Ú Ø 4. ï 5. ® Ø 6. º Ú Ù 7. Ø ï 8. ® Ú 9. º Ø 10. ¯ Ú 13. ® Ú Ø 14. Ø Ù º 15. ® ï 16. ¯ Ø 17. ® º 18. Ù ® Ø 19. ® º Ú 20. ¯ ® 21. Ø Ù 22. Ù Ú
![]() |