
Логическое программирование1 / 1-5_LR_4KSM_Logichne_progr_2014-15
.pdf
|
41 |
|
|
2 |
|
1 |
|
|
|
|
|
14 |
система подає звукові сигнали, вентилятор працює, на екрані нема ку- |
|
|
рсору |
|
15 |
система «зависає» під час виконання або одразу ж після тестування |
|
|
POST |
|
16 |
неправильна ідентифікація процесору під час тестування POST |
|
|
|
|
17 |
операційна система не завантажується |
|
|
|
|
18 |
додатки не інсталюються та не працюють |
|
|
|
|
19 |
система працює, але зображення на екрані монітора нема |
|
|
|
|
|
Діагностичні інформаційні повідомлення |
|
|
про можливі причини виникнення несправностей процесорів |
|
|
|
|
20 |
несправний шнур живлення |
|
|
|
|
21 |
несправний блок живлення |
|
|
|
|
22 |
несправна системна плата |
|
|
|
|
23 |
несправні модулі пам`яті |
|
|
|
|
24 |
компоненти системи не встановлені або встановлені некоректно |
|
|
|
|
25 |
неправильно встановлений або несправний відеоадаптер |
|
|
|
|
26 |
недостатнє відведення тепла |
|
|
|
|
27 |
неправильно встановлено напругу |
|
|
|
|
28 |
неправильно встановлено частоту шини системної плати |
|
|
|
|
29 |
неправильно встановлено множник тактової частоти |
|
|
|
|
30 |
застаріла BIOS |
|
|
|
|
31 |
неправильна конфігурація плати |
|
|
|
|
32 |
недостатнє відведення тепла |
|
|
|
|
33 |
неправильно встановлено напругу |
|
|
|
|
34 |
неправильно встановлено частоту шини системної плати |
|
|
|
|
35 |
неправильно встановлено множник тактової частоти |
|
|
|
|
36 |
застарілі драйвери або несумісне апаратне забезпечення |
|
|
|
|
37 |
монітор вимкнений або несправний |
|
|
|
|
|
42 |
|
|
2 |
|
1 |
|
|
|
|
|
|
Діагностичні інформаційні повідомлення про способи вирішення |
|
|
проблем, пов'язаних із несправностями процесорів |
|
|
(рекомендації щодо дій, які потрібно виконати для |
|
|
перевірки наявності певної причини виникнення несправності |
|
|
процесору та, в разі можливості, усунення даної несправності) |
|
38 |
оскільки зовнішній огляд не завжди дозволить визначити справність ме- |
|
|
режного шнура, під`єднайте до мережі або замініть шнур живлення |
|
39 |
замініть блок живлення завідомо справним блоком |
|
|
|
|
40 |
замініть системну плату іншою, завідомо справною платою |
|
|
|
|
41 |
вилучіть усі модулі пам`яті, окрім одного, та протестуйте ще раз, а якщо |
|
|
система не завантажується, то замініть цей модуль |
|
|
|
|
42 |
перевірте всі периферійні пристрої, особливо пам`ять і відеоадаптер, а |
|
|
також перевірте гнізда та роз`єми компонентів |
|
|
|
|
43 |
перевстановіть або замініть відеоадаптер завідомо справним адаптером |
|
|
|
|
44 |
перевірте тепловідвід/вентилятор процесору; за необхідності, замініть |
|
|
його більш потужним |
|
45 |
установіть напругу системної плати у відповідності з напругою ядра |
|
|
процесору |
|
46 |
установіть відповідну частоту системної плати |
|
|
|
|
47 |
перемкніть системну плату на відповідне значення множника |
|
|
|
|
48 |
поновіть BIOS |
|
|
|
|
49 |
перевірте положення перемичок системної плати у відповідності з |
|
|
параметрами шини та множника |
|
50 |
перевірте вентилятор процесору та, за необхідності, замініть його більш |
|
|
потужним |
|
51 |
установіть напругу системної плати у відповідності з напругою ядра |
|
|
процесору |
|
52 |
установіть відповідну частоту системної плати |
|
|
|
|
53 |
перемкніть системну плату на відповідне значення множника |
|
|
|
|
54 |
поновіть драйвери та перевірте сумісність компонентів |
|
|
|
|
55 |
перевірте монітор і подачу живлення та спробуйте замінити монітор |
|
|
завідомо справним |
|
43
Таблиця 2
Типові причини несправностей процесорів
№ |
Проблема |
Можлива причи- |
Способи вирішення |
|
|||||
з/п |
|
на |
|
проблеми |
|
|
|
||
|
|
|
|
|
|
|
|||
|
|
|
Оскільки |
зовнішній |
огляд |
не |
|||
|
|
Несправний |
завжди |
дозволить |
визначити |
||||
|
|
шнур |
справність |
мережного |
шнура, |
||||
|
|
живлення |
під`єднайте до мережі або замініть |
||||||
|
Система |
|
шнур живлення |
|
|
|
|
||
|
|
|
|
|
|
|
|
||
|
не відзивається, |
Несправний |
Замініть блок живлення |
завідомо |
|||||
|
нема курсору |
||||||||
|
блок живлення |
справним блоком |
|
|
|
|
|||
1 |
та звукового |
|
|
|
|
||||
|
|
|
|
|
|
|
|||
|
сигналу, |
Несправна си- |
Замініть системну |
плату |
іншою, |
||||
|
не працює |
||||||||
|
стемна плата |
завідомо справною платою |
|
||||||
|
вентилятор |
|
|||||||
|
|
|
|
|
|
|
|
||
|
|
|
|
||||||
|
|
|
Вилучіть усі модулі пам`яті, окрім |
||||||
|
|
Несправні |
одного, та протестуйте ще раз. |
|
|||||
|
|
модулі пам`яті |
Якщо система не завантажується, |
||||||
|
|
|
то замініть зазначений модуль. |
|
|||||
|
Система не відзи- |
Компоненти си- |
Перевірте |
всі |
периферійні |
||||
|
вається, нема |
||||||||
|
стеми |
пристрої, |
особливо |
пам`ять |
і |
||||
|
звукового сигналу |
||||||||
2 |
не встановлені |
відеоадаптер. |
|
|
|
|
|||
або «зависає» |
|
|
|
|
|||||
|
або встановлені |
Перевірте гнізда та роз`єми компо- |
|||||||
|
перед початком |
||||||||
|
некоректно |
нентів. |
|
|
|
|
|
||
|
тестування POST |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Система |
|
|
|
|
|
|
|
|
|
подає звукові |
Неправильно |
Перевстановіть |
або |
|
замініть |
|||
|
сигнали, |
встановлений |
|
||||||
3 |
відеоадаптер завідомо |
справним |
|||||||
вентилятор працює, |
або несправний |
||||||||
|
адаптером. |
|
|
|
|
|
|||
|
на екрані нема |
відеоадаптер |
|
|
|
|
|
|
|
|
курсору |
|
|
|
|
|
|
|
44
Таблиця 2 – Типові причини несправностей процесорів
№ |
Проблема |
Можлива причина |
Способи вирішення |
|
|
|||||
з/п |
|
|
проблеми |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|||||
|
|
Недостатнє відведення теп- |
Перевірте |
|
тепловідвід/вентилятор |
|||||
|
|
процесору. |
|
|
|
|
|
|
|
|
|
|
ла |
За необхідності, замініть його більш |
|||||||
|
|
|
потужним. |
|
|
|
|
|
|
|
|
Система «зави- |
Неправильно встановлено |
Встановіть напругу системної плати у |
|||||||
|
сає» |
напругу |
відповідності |
з |
напругою |
ядра |
||||
4 |
під час виконання |
процесору |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
або одразу ж |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
після тестування |
Неправильно встановлено |
Встановіть |
|
відповідну |
частоту |
||||
|
POST |
частоту шини системної |
|
|||||||
|
|
плати |
системної плати |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Неправильно встановлено |
Перемкніть |
|
системну |
|
плату |
|
на |
|
|
|
множник тактової частоти |
відповідне значення множника |
|
|
|||||
|
Неправильна |
Застаріла BIOS |
Поновіть BIOS |
|
|
|
|
|
||
|
ідентифікація |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
5 |
процесору |
Неправильна конфігурація |
Перевірте |
|
положення |
перемичок |
||||
|
під час тестуван- |
системної |
плати у |
відповідності |
з |
|||||
|
ня POST |
плати |
параметрами шини та множника |
|
|
|||||
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||
|
|
Недостатнє відведення теп- |
Перевірте |
вентилятор |
процесору; |
за |
||||
|
|
необхідності, |
замініть |
його |
більш |
|||||
|
|
ла |
потужним |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
Неправильно встановлено |
Встановіть напругу системної плати у |
|||||||
|
Операційна си- |
відповідності |
з |
напругою |
ядра |
|||||
|
напругу |
процесору |
|
|
|
|
|
|
|
|
6 |
стема |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||
|
не завантажується |
Неправильно встановлено |
Встановіть |
|
відповідну |
частоту |
||||
|
|
частоту шини системної |
|
|||||||
|
|
системної плати |
|
|
|
|
|
|||
|
|
плати |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Неправильно встановлено |
Перемкніть |
|
системну |
|
плату |
|
на |
|
|
|
множник тактової частоти |
відповідне значення множника |
|
|
|||||
|
Додатки |
Застарілі драйвери або не- |
Поновіть |
драйвери |
|
та |
перевірте |
|||
7 |
не інсталюються |
сумісне апаратне забезпе- |
сумісність компонентів. |
|
|
|
|
|||
|
та не працюють |
чення |
|
|
|
|
|
|
|
|
|
Система працює, |
|
Перевірте монітор і подачу живлення. |
|||||||
|
але зображення |
Монітор вимкнений або не- |
||||||||
8 |
Спробуйте замінити монітор завідомо |
|||||||||
|
на екрані моніто- |
справний |
справним. |
|
|
|
|
|
|
|
|
ру нема |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45
Таблиця 3
Логічні відповідності між діагностичними інформаційними повідомленнями
про несправності процесорів, які належать до чотирьох базових категорій (задаються умовно, як відповідності між номерами зазначених повідомлень)
Повідомлення |
Повідомлення |
Повідомлення |
Повідомлення |
№№38-55 |
№№ 20-37 |
№№ 12-19 |
№№ 1-11 |
|
|
|
|
38 |
20 |
12 |
1 and 8 and 10 and 11 |
|
|
|
|
39 |
21 |
12 |
1 and 8 and 10 and 11 |
|
|
|
|
40 |
22 |
12 |
1 and 8 and 10 and 11 |
|
|
|
|
41 |
23 |
12 |
1 and 8 and 10 and 11 |
|
|
|
|
42 |
24 |
13 |
1 and 2 and 8 |
|
|
|
|
43 |
25 |
14 |
not(8) and 10 and not(11) |
44 |
26 |
15 |
3 or 5 |
|
|
|
|
45 |
27 |
15 |
3 or 5 |
|
|
|
|
46 |
28 |
15 |
3 or 5 |
|
|
|
|
47 |
29 |
15 |
3 or 5 |
|
|
|
|
48 |
30 |
16 |
4 |
|
|
|
|
49 |
31 |
16 |
4 |
|
|
|
|
50 |
32 |
17 |
6 |
|
|
|
|
51 |
33 |
17 |
6 |
|
|
|
|
52 |
34 |
17 |
6 |
|
|
|
|
53 |
35 |
17 |
6 |
|
|
|
|
54 |
36 |
18 |
7 |
|
|
|
|
55 |
37 |
19 |
not(1) and 9 |
|
|
|
|
6.ЛІТЕРАТУРА
1.Братко И. Алгоритмы искусственного интеллекта на языке PROLOG. – М.: Издательский дом “Вильямс”, 2014. – 640 с. − Гл.4-10. − С.98-226.
2.Братко И. Программирование на языке Пролог для искусственного интеллекта. – М.: ДМК; Радио и связь, 2014. – 560 с. − Гл.4-10. − С.130-322.
46
ЛАБОРАТОРНА РОБОТА 4
Тема: Синтаксис і семантика мов логічного програмування. Частина 2.
Мета: Практичне опановування особливостей визначення операторів, здійснення обчислень, організації управління ходом виконання програм, введення та виведення інформації в логічних програмах.
1 ПЛАН ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ
1.Вивчити основні теоретичні відомості до лабораторної роботи.
2.Ознайомитися з теоретичними матеріалами, викладеними в методичних вказівках для самостійної роботи студентів.
3.Опрацювати контрольні питання.
4.Виконати завдання для самоперевірки.
5.Виконати індивідуальні контрольні завдання.
6.Оформити та захистити звіт з лабораторної роботи (вимоги до оформлення та захисту лабораторної роботи знаходяться в Додатку А, а зразок оформлення титульного аркуша звіту про виконання лабораторної роботи знаходиться в Додатку Б).
47
2 ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ
2.1. Методи реалізації арифметичних, ітераційних і рекурсивних операцій у Пролог-програмах
2.1.1.Методи реалізації арифметичних операцій
удекларативных Пролог-програмах
Пролог надає два вбудованих числових типи доменів: цілі числа; дійсні числа.
Для реалізації чотирьох основних арифметичних операцій (додавання, віднімання, множення та ділення) над числами цілого та дійсного типів,
у Пролог-програмах використовують предикати.
Пролог-програма "Числа" (лістинг 1) демонструє наочний приклад застосування предикатів для реалізації арифметичних операцій.
Узазначеній програмі описано предикати та визначено правила для реализації додавання, віднімання, множення та ділення цілих і дійсних чисел.
Кожне таке правило виконує одну вбудовану арифметичну операцію (+, -, * або /) та виводить отриманий результат на екран комп'ютеру.
Внутрішню ціль програми "Числа" складено з послідовності тверджень, які використовують зазначені правила.
Уформулюванні цілі присутні числові значення, що передаються в тіла правил.
Важливо дотримуватися відповідності типів даних і типів об`єктів предикатів.
При цьому, якщо ділення цілого числа на ціле дає десятковий дріб, то всі знаки, аж до десятого, є вірними.
48 |
|
/*Лістинг 1. Программа "Числа", |
*/ |
/*що демонструє застосування предикатів Прологу |
*/ |
/*для реалізації арифметичних операцій додавання, віднімання, |
*/ |
/*множення та ділення цілих і дійсних чисел |
*/ |
/* Розділ опису предикатів (відносин між об`єктами) */ |
|
predicates
/* Предикати для реалізації арифметичних операцій над цілими числами */ add(integer,integer)
substruct(integer,integer)
multiply(integer,integer)
divide(integer,integer)
/* Предикати для реализації арифметичних операций над дійсними числами */ fadd(real,real)
fsubstruct(real,real)
fmultiply(real,real)
fdivide(real,real)
/* Розділ опису цілі Пролог-програми |
*/ |
goal |
|
write(" Results"), nl, nl, |
|
add(44,23), substruct(44,23), multiply(44,23), divide(44,23),
fadd(12.65,7.3), fsubstruct(12.65,7.3), fmultiply(12.65,7.3), fdivide(12.65,7.3),
nl, write(" All done, bye!"). |
|
/* Розділ опису правил */ |
|
clauses |
|
/* Правила для реалізації арифметичних операцій над цілими числами |
*/ |
add(X,Y):- Z = X + Y, write("Sum = ", Z), nl. |
|
substruct(X,Y):- Z = X - Y, write("Diff = ", Z), nl. |
|
multiply(X,Y):- Z = X * Y, write("Pro = ", Z), nl. |
|
divide(X,Y):- Z = X / Y, write("Quo = ", Z), nl. |
|
49
/* Правила для реалізації арифметичних операцій над дійсними числами */ fadd(P,Q):- R = P + Q, write("Fsum = ",R), nl.
fsubstruct(P,Q):- R = P - Q, write("Fdiff = ",R), nl. fmultiply(P,Q):- R = P * Q, write("Fpro = ",R), nl. fdivide(P,Q):- R = P / Q, write("Fquo = ",R), nl.
/***** Кінець програми *****/
2.1.2.Методи реалізації ітераційних і рекурсивних операцій
удекларативних Пролог-програмах
Достатньо часто в програмах необхідно виконувати одну задачу декілька разів. Для вирішення проблеми, застосовують ітераційні та рекурсивні правила.
Багаторазове виконання однієї або декількох операцій у Прологпрограмах здійснюється за допомогою правил, які використовують повтор і рекурсію: правила, що виконують повтор, використовують методи відкату; правила, що виконують рекурсію, використовують методи самовиклику.
Основними класами методів реалізації багаторазового виконання однакових операцій у Пролог-програмах є: методи відкату після невдачі; методи відсікання та відкату; правила повтору, що визначаються користувачем; узагальнені рекурсивні правила.
Правила повтору та рекурсії повинні містити зручні засоби управління їх виконанням: вбудовані предикати fail і cut − для управління відкатами; умови завершення − для управління рекурсією.
Синтаксис (вид) правила, що виконує повтор:
repetitive_rule :- |
/* правило повтору */ |
<предикати та правила>, |
|
fail. |
/* предикат виклику відкату*/ |
Конструкція <предикати та правила> може містити: предикати, що включають декілька тверджень; правила, що визначені в програмі.
50
Вбудований предикат fail (невдача) викликає відкат, завдяки якому конструкція <предикати та правила> виконується ще раз.
Синтаксис (вид) правила, що виконує рекурсію: |
|
recursive_rule :- |
/* правило рекурсії */ |
<предикати та правила>, |
|
recursive_rule. |
/* самовиклик */ |
Останнім складовим елементом у тілі правила рекурсії recursive_rule
є саме це правило (правила рекурсії містять у тілі правила самі себе).
Правила повтору та рекурсії можуть забезпечувати однаковий результат, але алгоритми їх виконання не є однаковими (кожен із алгоритмів у конкретній ситуації має свої переваги, недоліки та галузі застосування).
Пролог-програма «Міста США» (лістинг 2) демонструє використання предикату fail. Призначення програми полягає в виведенні на екран комп`ютеру переліку з назв десяти міст США.
Внутрішньою ціллю є вираз write("Here are the cities:"), nl, show_cities. Твердження першої підцілі видає заголовок Here are the cities (Назви міст). Друга підціль є правилом для перелічування назв міст:
show_cities :- cities(City), write(" ",City), nl, fail.
Підправило cities(City) означує змінну City (місто) назвою міста, після чого дане значення выдається на екран за допомогою предикату write.
Предикат fail викликає відкат до наступного твердження, що може забезпечити обчислення цілі.
Програма містить 10 предикатів-фактів, кажен із яких є альтернативним твердженням для предикату cities(name).
Програма про міста показує, що використання методу «Відкату після
невдачі» (ВПН) дозволяє вилучати дані з кожного твердження бази даних.
Оскільки в програмі містяться твердження для 10 варіантів, то результат також містить 10 рядків. Дані вилучаються з кожного твердження, оскільки кожний варіант відповідає підцілі cities(City).