Експертна система підбору комп’ютерів

Автор работы: Пользователь скрыл имя, 20 Марта 2013 в 17:20, курсовая работа

Описание работы

Мета роботи – створити експертну систему на основі бази знань, яка
допомагатиме користувачам визначитись з підбором комп’ютерів в залежності
від їхніх вимог, статку та предназначення для них цього комп’ютеру.
Експертна система – це методологія адаптації алгоритму успішних
рішень одної сфери науково-практичної діяльності в іншу. З поширенням
компютерних технологій це тотожна (подібна, заснована на оптимізую чому
алгоритмі) інтелектуальна комп’ютерна програма, що містить знання та
аналітичні здібності одного або кількох експертів щодо деякої галузі
застосування і здатна робити логічні висновки на основі цих знань, тим самим
забезпечуючи вирішення специфічних завдань (консультування, навчання,
діагностика, тестування, проектування тощо) без присутності експерта
(спеціаліста в конкретній проблемній галузі)

Содержание работы

ВСТУП ………………………..……..………………………………………….
4
1 ЕКСПЕРТНА СИСТЕМА …………………………………………………...
5
1.1 Поняття експертної системи ………………………………………….
5
1.2 Будова експертної системи ……………………………………………
6
1.3 Основні режими роботи експертних систем …………………………
8
1.4 Відмінність експертних систем від традиційних программ ………...
9
1.5 Відмінність експертних систем від традиційних программ ………... 10
2 ОПИС ПРОГРАМНИХ ПРОДУКТІВ …………………………………….
12
2.1 PHP ……………………..……………………………………….……..
12
2.2 JavaScript ………………………………………………………………
17
2.3 HTML ………………………………………………………………….. 19
3. ОПИС РОЗРОБЛЕНОЇ ЕКСПЕРТНОЇ СИСТЕМИ …………………….
22
ВИСНОВОК ……………………………………………………………………
27
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ ………………………………..
28

Файлы: 1 файл

курсов_маша.pdf

— 239.89 Кб (Скачать файл)
Page 1
Міністерство освіти і науки, молоді та спорту України
Державний вищий навчальний заклад
«Український державний хіміко-технологічний університет»
(ДВНЗ УДХТУ)
Кафедра комп′ютерних технологій
та вищої математики
КУРСОВА РОБОТА
з дисципліни:
«Експертні системи»
на тему:
«Експертна система підбору комп’ютерів»
Студентка групи 5-ІС-40
______________
М.В.Гіржева
(підпис)
Керівник роботи
______________
В.І.Олевський
(підпис)
Дніпропетровськ
2012

Page 2

2
РЕФЕРАТ
Курсова робота: 33 с., 5 рис., 6 джерел.
Об’єкт розробки – експертна система, яка допомагатиме користувачу
обрати необхідний йому комп’ютер.
Мета розробки – створити експертну систему, яка за допомогою бази
знать допомагатиме користувачу обрати необхідний йому комп’ютер з тих, що
йому пропонуються.
У першому розділі курсової роботи надається опис експертній системі та
її особливостей.
У другому розділі надається опис програмних продуктів за допогою яких
створена експертна система.
У третьому роділі розглядається створена експертна система та надається
опис її можливостей.
У додатку міститься програмний код створеної експертної системи.
ЕКСПЕРТНА СИСТЕМА, PHP, JAVASCRIPT, HTML, ПІДБОР
КОМП’ЮТЕРІВ

Page 3

3
ЗМІСТ
ВСТУП ………………………..……..………………………………………….
4
1 ЕКСПЕРТНА СИСТЕМА …………………………………………………...
5
1.1 Поняття експертної системи ………………………………………….
5
1.2 Будова експертної системи ……………………………………………
6
1.3 Основні режими роботи експертних систем …………………………
8
1.4 Відмінність експертних систем від традиційних программ ………...
9
1.5 Відмінність експертних систем від традиційних программ ………... 10
2 ОПИС ПРОГРАМНИХ ПРОДУКТІВ …………………………………….
12
2.1 PHP ……………………..……………………………………….……..
12
2.2 JavaScript ………………………………………………………………
17
2.3 HTML ………………………………………………………………….. 19
3. ОПИС РОЗРОБЛЕНОЇ ЕКСПЕРТНОЇ СИСТЕМИ …………………….
22
ВИСНОВОК ……………………………………………………………………
27
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ ………………………………..
28
ДОДАТОК А …………………………………………………………………..
29

Page 4

4
ВСТУП
Мета роботи – створити експертну систему на основі бази знань, яка
допомагатиме користувачам визначитись з підбором комп’ютерів в залежності
від їхніх вимог, статку та предназначення для них цього комп’ютеру.
Експертна система – це методологія адаптації алгоритму успішних
рішень одної сфери науково-практичної діяльності в іншу. З поширенням
компютерних технологій це тотожна (подібна, заснована на оптимізую чому
алгоритмі) інтелектуальна комп’ютерна програма, що містить знання та
аналітичні здібності одного або кількох експертів щодо деякої галузі
застосування і здатна робити логічні висновки на основі цих знань, тим самим
забезпечуючи вирішення специфічних завдань (консультування, навчання,
діагностика, тестування, проектування тощо) без присутності експерта
(спеціаліста в конкретній проблемній галузі). Також визначається як система,
яка використовує базу знань для вирішення завдань (видачі рекомендацій) у
деякій предметній галузі. Цей клас програмного забезпечення спочатку
розроблявся дослідниками штучного інтелекту в 1960-ті та 1970-ті та здобув
комерційне застосування, починаючи з 1980-их. Часто термін система,
заснована на знаннях використовується в якості синоніма експертної системи,
однак можливості експертних систем ширші за можливості систем, заснованих
на детермінованих (обмежених, реалізованих на поточний час) знаннях.
Однак узгодженого визначення експертних систем не існує. Натомість
автори дають визначення залежно від застосування, структури таких систем.
Ранні визначення експертних систем припускали застосування виведення нових
знань на основі правил.

Page 5

5
1 ЕКСПЕРТНА СИСТЕМА
1.1 Поняття експертної системи
Експертна система - це програма, що поводиться подібно експерту в
деякій, звичайно вузькій прикладній області. Типові застосування експертних
систем містять у собі такі задачі, як медична діагностика, локалізація
несправностей в устаткуванні й інтерпретація результатів вимірів.
Експертні системи повинні вирішувати задачі, що вимагають для свого
рішення експертних знань у деякій конкретній області. У тій чи іншій формі
експертні системи повинні мати ці знання. Тому їх також називають системами,
заснованими на знаннях. Однак не всяку систему, засновану на знаннях, можна
розглядати як експертну.
Експертна система повинна також уміти певним чином пояснювати
свою поведінку і свої рішення користувачу, так само, як це робить експерт-
людин. Це особливо необхідно в областях, для яких характерна невизначеність,
неточність інформації (наприклад, у медичній діагностиці). У цих випадках
здатність до пояснення потрібна для того, щоб підвищити ступінь довіри
користувача до рад системи, а також для того, щоб дати можливість
користувачу знайти можливий дефект у міркуваннях системи. У зв'язку з цим в
експертних системах варто передбачати дружня взаємодія з користувачем, що
робить для користувача процес міркування системи "прозорим".
Часто до експертних систем висувають додаткову вимогу - здатність
мати справу з невизначеністю і неповнотою. Інформація про поставлену задачу
може бути неповною чи ненадійною; відносини між об'єктами предметної
області можуть бути наближеними. Наприклад, може не бути повної
впевненості в наявності в пацієнта деякого симптому чи в тому, що дані,
отримані при вимірі, вірні; ліки може стати причиною ускладнення, хоча
звичайно цього не відбувається. В усіх цих випадках необхідні міркування з
використанням ймовірнісного підходу.

Page 6

6
У самому загальному випадку для того, щоб побудувати експертну
систему, ми повинні розробити механізми виконання наступних функцій
системи:
- рішення задач з використанням знань про конкретну предметну
область можливо, при цьому виникне необхідності мати справу з
невизначеністю;
- взаємодія з користувачем, включаючи пояснення намірів і рішень
системи під час і після закінчення процесу рішення задачі.
Кожна з цих функцій може виявитися дуже складною і залежить від
прикладної області, а також від різних практичних вимог. У процесі розробки і
реалізації можуть виникати різноманітні важкі проблеми.
1.2 Будова експертної системи
При розробці експертної системи прийнято поділяти її на три основних
модулі:
- база знань;
- машина логічного висновку;
- інтерфейс із користувачем.
База знань містить знання, що відносяться до конкретної прикладної
області, у тому числі окремі факти, правила, що описують чи відносини що
описують чи відносини явища, а також, можливо, методи, евристики і різні ідеї,
що відносяться до рішення задач у цій прикладній області.
Машина логічного висновку вміє активно використовувати інформацію,
що міститься в базі знань.
Інтерфейс із користувачем відповідає за безперебійний обмін
інформацією між користувачем і системою; він також дає користувачу

Page 7

7
можливість спостерігати за процесом рішення задач, що протікають у машині
логічного висновку.
Прийнято розглядати машину висновку й інтерфейс як один великий
модуль, звичайно називаний оболонкою експертної системи, чи, для стислості,
просто оболонкою.
В описаній вище структурі власне знання відділені від алгоритмів, що
використовують ці знання. Такий поділ зручно по наступним розуміннях.
База знань, мабуть, залежить від конкретного додатка. З іншого боку,
оболонка, принаймні в принципі, незалежна від додатків. Таким чином,
розумний спосіб розробки експертної системи для декількох додатків зводиться
до створення універсальної оболонки, після чого для кожного додатка досить
підключити до системи нову базу знань. Зрозуміло, усі ці бази знань повинні
задовольняти тому самому формалізму, що оболонка "розуміє". Практичний
досвід показує, що для складних експертних систем сценарій з однією
оболонкою і багатьма базами знань працює, не так гладко, як би цього хотілося,
за винятком тих випадків, коли прикладні області дуже близькі. Проте, навіть
якщо перехід від однієї прикладної області до іншої вимагає модифікації
оболонки те, принаймні основні принципи її побудови звичайно вдається
зберегти.
Для створення оболонки, за допомогою якої можна проілюструвати
основні ідеї і методи в області експертних систем, можна дотримувати
наступного плану:
1. Вибрати формальний апарат для представлення знань.
2. Розробити механізм логічного висновку, що відповідає цьому
формалізму.
3. Додати засобу взаємодії з користувачем.
4. Забезпечити можливість роботи в умовах невизначеності.

Page 8

8
1.3 Основні режими роботи експертних систем
У роботі ЭС можна виділити два основних режими: режим придбання
знань і режим рішення задачі (режим консультації або режим використання ). У
режимі придбання знань спілкування з ЭС здійснює експерт (за допомогою
інженера знань).
Використовуючи компонент придбання знань, експерт описує проблемну
область у виді сукупності фактів і правил. Іншими словами, "наповняє" ЭС
знаннями, що дозволяють їй самостійно вирішувати задачі з проблемної
області.
Відзначимо, що цьому режимові при традиційному підході до
програмування відповідають етапи: алгоритмізації, програмування і
налагодження, виконувані програмістом. Таким чином, на відміну від
традиційного підходу у випадку ЭС розробку програм здійснює не програміст,
а експерт, що не володіє програмуванням.
У режимі консультацій спілкування з ЭС здійснює кінцевий користувач,
якого цікавить результат і (або) спосіб його одержання. Необхідно відзначити,
що в залежності від призначення ЭС користувач може:
- не бути фахівцем у даній предметній області, і в цьому випадку він
звертається до ЭС за результатом, що не вміє одержати сам;
- бути фахівцем, і в цьому випадку він звертається до ЭС з метою
прискорення одержання результату, покладаючи на ЭС рутинну роботу.
Слід зазначити, що на відміну від традиційних програм ЭС при рішенні
задачі не тільки виконують запропоновану алгоритмом послідовність операцій,
але і сама попередньо формує неї.
Добре побудована ЭС має можливість самонавчатися на розв'язуваних
задачах, поповнюючи автоматично свою БЗ результатами отриманих висновків
і рішень.

Page 9

9
1.4 Відмінність експертних систем від традиційних програм
Особливості ЭС, що відрізняють їх від звичайних програм, полягають у
тім, що вони повинні володіти:
1. Компетентністю, а саме:
1) досягати експертного рівня рішень (тобто в конкретній предметній
області мати той же рівень професіоналізму, що й експерти-люди);
2) мати активну працездатність (тобто застосовувати знання ефективно і
швидко, уникаючи, як і люди, непотрібних обчислень);
3) мати адекватну працездатність (тобто здатність лише поступово
знижувати якість роботи з міри наближення до границь діапазону
компетентності або припустимої надійності даних).
2. Можливістю до символьних міркувань, а саме:
1) представляти знання в символьному виді;
2) переформулювати символьні знання. На жаргоні штучного інтелекту
символ – це рядок знаків, що відповідає змісту деякого поняття. Символи
поєднують, щоб виразити відносини між ними. Коли відносини представлені в
ЭС вони називаються символьними структурами.
3. Глибиною, а саме:
1) працювати в предметній області, що містить важкі задачі;
2) використовувати складні правила (тобто використовувати або складні
конструкції правил, або велику їхню кількість).
4. Самосвідомістю, а саме:
1) досліджувати свої міркування (тобто перевіряти їхня правильність);
2) пояснювати свої дії;
Існує ще одна важлива відмінність ЭС. Якщо звичайні програми
розробляються так, щоб щораз породжувати правильний результат, то ЭС
розроблені для того, щоб поводитися як експерти. Вони, як правило, дають
правильні відповіді, але іноді, як і люди, здатні помилятися.

Page 10

10
Традиційні програми для рішення складних задач, теж можуть робити
помилки. Але їх дуже важко виправити, оскільки алгоритми, що лежать у їхній
основі, явно в них не сформульовані. Отже, помилки нелегко знайти і
виправити. ЭС, подібно людям, мають потенційну можливість учитися на своїх
помилках.
1.5 Технологія розробки експертних систем
Технологія їхньої розробки ЭС, містить у собі шість етапів: етапи
ідентифікації,
концептуалізації,
формалізації,
виконання,
тестування,
досвідченої експлуатації. Розглянемо більш докладно послідовності дій, які
необхідно виконати на кожнім з етапів.
1. На етапі ідентифікації необхідно виконати наступні дії:
1) визначення задачі, що підлягають рішенню і меті розробки;
2) визначення експертів і типу користувачів.
2. На етапі концептуалізації:
1) проводиться змістовний аналіз предметної області, проводиться
змістовний аналіз предметної області;
2) виділяються основні поняття і їхні взаємозв'язки;
3) визначаються методи рішення задач.
3. На етапі формалізації:
1) вибираються програмні засоби розробки ЭС;
2) визначаються способи представлення усіх видів знань;
3) формалізуються основні поняття.
4. На етапі виконання (найбільш важливе і трудомісткому) здійснюється
наповнення експертом БЗ, при якому процес придбання знань розділяють:
1) на "витяг" знань з експерта;
2) на організацію знань, що забезпечує ефективну роботу ЭС;

Page 11

11
3) на представлення знань у виді, зрозумілому для ЭС.
Процес придбання знань здійснюється інженером по знаннях на основі
діяльності експерта.
5. На етапі тестування експерт і інженер по знаннях з використанням
діалогових і пояснювальних засобів перевіряють компетентність ЭС. Процес
тестування продовжується доти, поки експерт не вирішить, що система досягла
необхідного рівня компетентності.
6. На етапі досвідченої експлуатації перевіряється придатність ЭС для
кінцевих користувачів. За результатами цього етапу можлива істотна
модернізація ЭС.
Процес створення ЭС не зводиться до строгої послідовності цих етапів,
тому що в ході розробки приходиться неодноразово повертатися на більш ранні
етапи і переглядати прийняті там рішення.

Page 12

12
2 ОПИС ПРОГРАМНИХ ПРОДУКТІВ
2.1 PHP(Hypertext Preprocessor)
PHP (англ. PHP: Hypertext Preprocessor – PHP:
гіпертекстовий
препроцесор) – скрипкова мова програмування, була створена для генерації
HTML-сторінок на стороні веб-серверу. PHP є однією з найпоширеніших мов,
що використовуються у сфері веб-розробок (разом із Java, .NET, Perl, Python,
Ruby). PHP підтримується переважною більшістю хостинг-провайдерів. Проект
за яким був створений PHP – проект з відкритими програмними кодами.
PHP інтерпретується веб-сервером в HTML-код, який передається на
сторону клієнта. На відміну від таких скриптових мов програмування, як
JavaScript, користувач не має доступу до PHP-коду, що є перевагою з точки
зору безпеки але значно погіршує інтерактивність сторінок. Але ніщо не
забороняє використовувати РНР для генерування і JavaScript-кодів які
виконаються вже на стороні клієнта.
PHP - мова, яка може бути вбудованою безпосередньо в html-код
сторінок, які, в свою чергу коректно будуть оброблені PHP -інтерпретатором.
Механізм РНР просто починає виконувати код після першої екрануючої
послідовності (<?) і продовжує виконання до того моменту, коли він зустріне
парну екрануючу послідовність (?>).
Велика різноманітність функцій PHP дають можливість уникнути
написання багаторядкових призначених для користувача функцій на C або
Pascal.
Наявність інтерфейсів до багатьох баз даних:
- в PHP вбудовані бібліотеки для роботи з MySQL, PostgreSQL, mSQL,
Oracle, dbm, Hyperware, Informix, InterBase, Sybase.
- через стандарт відкритого інтерфейсу зв’язку з базами даних (Open
Database Connectivity Standard — ODBC) можна підключатися до всіх баз
даних, до яких існує драйвер.

Page 13

13
Традиційність. Мова РНР здаватиметься знайомою програмістам, що
працюють в різних областях. Багато конструкцій мови запозичені з С, Perl. Код
РНР дуже схожий на той, який зустрічається в типових програмах на С або
Pascal. Це помітно знижує початкові зусилля при вивченні РНР. PHP - мова, що
поєднує переваги Perl і С і спеціально спрямована на роботу в Інтернеті, мова з
універсальним і зрозумілим синтаксисом. І хоча PHP є досить молодою мовою,
вона знайшла таку популярність серед web-програмістів, що на даний момент є
мало не найпопулярнішою мовою для створення web-додатків (скриптів).
Наявність вихідного коду та безкоштовність. Стратегія Open Source, і
розповсюдження початкових текстів програм в масах, зробило поза сумнівом
благотворний вплив на багато проектів, в першу чергу - Linux хоч і успіх
проекту Apache сильно підкріпив позиції прихильників Open Source. Сказане
відноситься і до історії створення РНР, оскільки підтримка користувачів зі
всього світу виявилася дуже важливим чинником в розвитку проекту РНР.
Ухвалення стратегії Open Source і безкоштовне розповсюдження початкових
текстів РНР надало неоціниму послугу користувачам. Додатково, чуйне
співтовариство користувачів РНР є свого роду колективною службою
підтримки, і в популярних електронних конференціях можна знайти відповіді
навіть на найскладніші питання.
Ефективність. Ефективність є виключно важливим чинником при
програмуванні для розрахованих на багато користувачів середовищ, до яких
належить і web . Дуже важлива перевага PHP полягає в його транслюючому
інтерпретатором. Такий пристрій дозволяє обробляти сценарії з достатньо
високою швидкістю. За деякими оцінками, більшість PHP-сценаріїв (особливо
не дуже великих розмірів) обробляються швидше за аналогічні їм програми,
написані на Perl. Проте, щоб не робили розробники PHP, виконувані файли, що
відкомпілювалися, працюватимуть значно швидше - в десятки, а іноді і в сотні
разів. Але продуктивність PHP цілком достатня для створення цілком
серйозних web-додатків.

Page 14

14
З точки зору типізації, PHP є мовою програмування з динамічною
типізацією. Немає необхідновсті явного визначення типу змінних, хоча така
можливість існує. В разі звернення до змінної, ядро PHP трактує її тип
відповідно до контексту. За необхідності можливе приведення змінної до
певного типу за допомогою відповідних конструкцій мови. Це може
знадобитись, якщо зважити, що значення змінної можуть трактуватись по-
різному в залежності від її типу. Також можливе визначення типу відповідної
змінної на певному етапі виконання сценарію. Імена змінних чутливі до
регістру символів.
До базових типів належать булеві дані, цілі та дійсні числа із плаваючою
комою, а також строки. Булеві дані виражають істинність значення. Цілі числа
можуть бути подані у вісімковому, десятковому та шістнадцятковому вигляді.
Розмір цілого числа може змінюватись залежно від платформи, як правило,
розрядність становить 32 біти. PHP не підтримує беззнакові цілі числа. Дійсні
числа із плаваючою комою можуть бути подані в десятковій або
експоненційній формі. Строки розділяють на два класи — строки, що
підлягають аналізу, та строки, що не підлягають аналізу. Перший клас
досліджується інтерпретатором на наявність посилань на інші змінні і за умови
їх наявності, відбувається підстановка значень у відповідне місце. Крім того,
клас дозволяє проводити маніпуляції із керуючими символами. Символ строки
може мати лише одне із 256 значень, але існує можливість працювати із
багатобайтовими символами. Доступ до символів строки можливий з
використанням синтаксису, схожого на доступ до елементів масивів.
PHP надає широкий спектр функцій для пошуку та заміни тексту в
строках. Для цього використовують як традиційний підхід, так і спеціальний
підхід, що базується на використанні регулярних виразів. При цьому в мові
реалізована підтримка двох видів регулярних виразів — Perl-сумісні та POSIX-
сумісні, що розрізняються за синтаксисом та особливостями роботи.
До змішаних типів належать масиви, хеші та об’єкти. Масиви в сенсі
мови є наборами змінних, що згруповані в єдину змінну. Вимога однотипності

Page 15

15
наповнення масивів не ставиться. Технічно, масиви являють собою
впорядковані карти, що відображіють ключові значення на позиції змінних
даних. Вмістом значення, на яке вказує ключ може бути будь-чим, що можна
подати у вигляді змінної. Не існує жодних обмежень, крім об’єму пам’яті, що
накладаються на кількість ключів масиву.
Особливістю мови є відмова від рівномірного розподілу ключів масивів.
Знайшла реалізацію і модель багатовимірних масивів, причому без явного
обмеження глибини вкладеності. Корисною властивістю PHP є можливість
асоціації масивів із функцією зворотнього виклику. Ці функції дозволяють
проводити дії над одним чи кількома масивами в пакетному режимі.
Також, існують два спеціальні типи даних – ресурс та NULL. Ресурс –
спеціальна змінна, що містить посилання на зовнішній ресурс. Ресурси
створюютьсята використовуються в спеціалізованих функціях. Оскільки тип
містить спеціальні вказівники на відкриті файли, під’єднання та інше, то будь-
які дії над значенням ресурсу не мають сенсу.
Область видимості змінної – середовище, в якій вона визначена.
Розрізняють локальні та глобальні змінні. За замовчувнням, всі змінні мають
локальний характер дії. Виділяють особливий тип змінних – статичні, що
дозволяє повторне звернення до змінної в певному сегменті коду, причому
змінна буде зберігати попередньо отримане значення. Існує також поняття
суперглобальний змінних, які служать місцем збереження даних оточення або
даних, отриманних ззовні. Підтримується концепція динамічних змінних та
функцій.
Константи в PHP – ідентифікатори простих значень. Можливе визначення
константи, причому після її оголошення стає неможливою зміна її значення чи
анулювання. Константи можуть мати лише скалярні значення. Підтримується
можливість отримання значення константи за динамічним ім’ям. Область
видимості констант буде глобальною для сценарію та свіх під’єднаних
компонентів. Також в ядрі мови визначено чимало системних констант.

Page 16

16
Оператори в сенсі мови дозволяють виконувати відповідну дію над одним
чи кількома операндами. Оператори бувають трьох типів – унарні, бінарні та
тернарні. Оператори, як і в інших мовах характеризуються не лише дією, а й
асоціативністю та пріоритетністю. Особливістю булевих операцій порівняння –
розрізнення двох класів – з урахуванням типу і без врахування типу, при якому
відбувається приведення до відповідного типу. Заокруглення відбуваються
завжди в меншу сторону. В мові реалізовані особливі класи операторів –
виконання, управління помилками та перевірки приналежності до класу.
Функції в сенсі мови є контейнерами коду, причому можливе поміщення
інших функцій та класів. На цьому і базується можливість умовного визначення
функції. В цьому випадку висувається вимога попередньої декларації
викликаної функції, що не обов’язково в інших випадках. Можливості
перевизначення чи деактивації функції не існує. Результат, який повертає
функція може мати будь-який тип.
В мові реалізована функціональність посилань. Можливо створити
скільки завгодно псевдонімів, що посилаються на єдиний сегмент даних. При
вивільненні будь-якого з псевдонімів, сегмент даних залишається в пам’яті до
моменту завершення сценарію або вивільнення усіх посилань.
Що стосується функцій в PHP, то замість прийнятого в багатьох мовах
принципу перевантаження функцій, що дозволає змінити хід виконання первної
функції в залежності від типу та кількості переданих параметрів,
використовується метод динамічних аргументів. Це дає змогу не визначати
кількість параметрів для функцій при їх оголошенні, а працювати із тими
аргументами, які були отримані на момент виклику функції. У тілі функції
можливо отримати кількість переданих їй аргументів і проводити відповідні
маніпуляції. При оголошенні функції звичайним чином, моживе задання
значень аргументів за замовчуванням. Функції можуть повертати лише одне
значення, проте це обмеження можна оминути, використавши не лише масиви,
а й посилання. Передача аргументів за посиланням неможлива під час
виконання та оголошення функції.

Page 17

17
Після виконання сценаріїв, простір пам’яті, займаної ними очищується
збирачем сміття. Проте, за необхідності можливе виконання очищення пам’яті
від надлишкових сегментів даних під час виконання скриптів. Використання
функцій очищення пам’яті є невиправданим, хоча така можливість існує. Для
побудови програмних комплексів можливо використовувати модульний підхід,
виконуючи розділення різнорідного коду. При потребі, можливе виконання
під’єднання необхідних модулів, причому операція виконання може бути і
умовною. Під’єднані до скрипта файли можуть повертати значення. Мова явно
підтримує HTTP cookies відповідно до специфікацій Netscape. Це дозволяє
проводити встановлення та читання невеликих сегментів даних на стороні
клієнта.
Протокол HTTP, засобами якого, як правило, обмінюються інформацією
клієнт та Web-сервер не надає змогу зберегти стан сеансу взаємодії. Це
випливає із того, що між клієнтом та сервером не встановлюєтся постійне
з”єднання і клієнт не надає жодних відомостей, що можуть виділити його з
поміж інших активних в деякому околі часу. Альтернативою cookies є
концепція сесій, яка знайшла свою реалізацію в PHP. В сесії можна зберігати
різні дані, включаючи об’єкти.
2.2 JavaScript
JavaScript – це порівняно нова мова для написання сценаріїв, розроблений
компанією Netscape. За допомогою мови JavaScript ми можемо створювати
інтерактивні web-сторінки найбільш зручним і ефективним способом. У цьому
практичному посібнику наведені приклади, які, на думку автора, є найбільш
важливими. Вони зможуть продемонструвати можливості JavaSript і принципи
організації мови. У цьому посібнику наводяться приклади того, що можна

Page 18

18
зробити, використовуючи JavaScript, а також, що не менш важливо,
розповідається, як це зробити.
JavaScript – це не те ж саме, що Java! Багато людей вважають, що мова
JavaScript - це те ж саме, що мова Java, недарма вони носять однакові імена.
Однак це невірно. Не будемо розбиратися в існуючих відмінностях, важливо
лише пам'ятати, що JavaScript та Java - це різні мови, хоча в них є багато
спільного.
Призначення JavaScript. Найчастіше мова JScript використовується для
обробки подій на веб-сторінці таких як натиснення на кнопку відправки форми,
вибір нового елементу зі списку, позиціонування курсору мишки над якимось
елементом, завершення завантаження сторінки тощо. Призначення такого
обробника подій - попередити користувача про можливу помилку в його діях
чи створити більш зручну обстановку для роботи зі сторінкою. Проте іноді
застосування мови скриптів може бути й більш прозаїчним : в момент
завантаження виводити на сторінку HTML-код , що сформує той чи інший
елемент сторінки після її завантаження чи провести певні обрахунки.
Можливості. Подія – це дуже важливе в програмуванні на JavaScript
поняття. Події головним чином породжуються користувачем, є наслідками його
дій. Якщо користувач натискає кнопку миші, то відбувається подія, яка
називається Click. Якщо екранний покажчик миші рухається за посиланням
HTML-документа, відбувається подія MouseOver.
Існує кілька різних подій. Нехай ми хочемо, щоб наша JavaScript
програма реагувала на кілька різних подій. Це можна зробити за допомогою
event-handlers. Наприклад, можна змусити з'явитися нове спливаюче вікно, яке
з'являється при натисканні кнопки. Поява нового вікна буде наслідком настання
події Click.
Event-handler, інакше кажучи обробник подій чи засіб управління
подіями, який потрібен для організації такої дії, називається оnСlick. Це засіб
керування подіями повідомляє комп'ютера, які дії необхідно зробити при

Page 19

19
настанні даної події. Нижче наведена проста програма, яка ілюструє те, як може
бути використано засіб оnСlick.
<form>
<input type="button" value="щелкні меня" onClick="alert('Ой-ой')">
</ Form>
Функції є одним з основних механізмів мови JavaScript; вони охоплюють
ту область, яка в інших мовах програмування реалізується підпрограма,
процедурами і функціями. Функція в JavaScript – це набір операторів, що
виконують певне завдання.
Для того, щоб користуватися функцією, ми повинні спочатку її
визначити. Декларація функції має вигляд:
function ім'я (аргументи?)
{
оператори
}
Тут ім'я – ідентифікатор, що задає ім'я функції, аргументи -
необов'язковий список ідентифікаторів, розділених комами, який містить імена
формальних аргументів функції, а оператори - будь-який набір операторів, який
називається тілом функції і виконується при її виклику.
2.3 HTML
HTML – це стандартна мова розмітки документів у Всесвітній павутині.
Всі веб-сторінки створюються за допомогою мови HTML (або XHTML). Мова
HTML інтерпретується браузером і відображається у вигляді документа,
зручному для людини. Кажучи коротко, HTML був винайдений в 1990 році
вченим, Тімом Бернсом-Лі (Tim Berners-Lee), і призначався для полегшення
обміну документами між вченими різних університетів. Проект мав більший

Page 20

20
успіх, ніж Тім Бернс-Лі міг очікувати. Цим винаходом HTML він заклав основи
сучасної мережі Інтернет.
HTML це мова, яка дозволяє представляти інформацію (наприклад,
наукові дослідження) в Інтернеті. Те, що ви бачите при перегляді сторінки
в Інтернеті, це інтерпретація вашим браузером HTML-тексту. Ви можете
відобразити html код сторінки прямо у вікні браузера. Для цього перейдіть до
сторінки яка вас цікавить, і виберіть у браузері команду Вид-> Перегляд html-
коду. Для перегляду в браузері Opera наведіть курсор на сторінку, клацніть
правою кнопкою миші і виберіть в меню, "Джерело", або натисніть одночасно
Ctrl + U. Відкриється нове вікно браузера з html кодом сторінки. У цьому вікні
можна не лише переглянути код, але й скопіювати його для використання в
якості основи своєї web-сторінки.
Для недосвідченого HTML-код виглядає складним, але цей підручник
допоможе вам розібратися в ньому.
Якщо необхідно створити web-сайти, не обійдетеся без HTML. Навіть
якщо використовувати для створення web-сайтів такі програми, як
Dreamweaver, знання основ HTML значно спростить вам життя, а ваш web-сайт
стане набагато цікавішим. Доброю новиною є те, що HTML легко вивчати та
використовувати. Через два уроки ви вже створите ваш перший web-сайт.
HTML це скорочення від "HyperText Mark-up Language / мова
гіпертекстової розмітки" - і на даному етапі цього знання вам цілком достатньо.
Проте, щоб все було зрозуміліше, давайте з'ясуємо деякі деталі.
- Hyper протилежно linear / порядково. У добрі старі часи - коли кішки
ловили мишей - комп'ютерні програми працювали порядково: програма
виконувала один рядок, потім переходила до виконання наступного, і т. д. Але
HTML працює по-іншому - ви можете перейти куди і коли захочете.
Наприклад, не потрібно відвідувати MSN.com до того, як відвідати
Htmlbook.at.ua.
- Text - все зрозуміло.

Page 21

21
- Mark-up - це розмітка, те, що ви робите з текстом. Ви розмічаєте текст
так само, як ви робите це в текстових редакторах: виставляєте заголовки,
списки, виділяєте текст жирним шрифтом і т. д.
- Language це мова – HTML. У ньому використовується багато
англійських слів.
У цьому підручнику ви будете вивчати так звані XHTML (Extensible
HyperText Mark-up Language), який, коротко кажучи, є новим і більш
структурованим варіантом HTML.

Page 22

22
3 ОПИС РОЗРОБЛЕНОЇ ЕКСПЕРТНОЇ СИСТЕМИ
Створена експертна система розрахована для того, щоб користувачі,
могли підібрати собі комп’ютер, що відповідає їхнім вимогам. Для цього
експертна система має поле, у якому користувач може вводити вимоги до
комп’ютерів: ціна, ім’я, опис. Окрім цього система має ревелентність відносно
кожного комп’ютеру, що працює за допомогою голосів користувачів, які
раніше заходили на цю сторінку.
Експертна система представлена на рис 3.1.
Рисунок 3.1 – експертна система
Якщо користувач просто хоче переглянути усі комп’ютери, що
проронуються, необхідно натиснути кнопку «Ok» (рис. 3.2).

Page 23

23
Рисунок 3.2 – повний перелік комп’ютерів, що пропонуються користувачу
Якщо у користувача є якісь особливі вимоги до комп’ютера, він може
ввести цю вимогу у полі вводу. Наприклад, якщо користувачу хочеться обрати
добрий комп’ютер, то у полі вводу необхідно написати: «i want good computer»,
після чого система обере комп’ютери, які відповідають цим вимогам і розташує
їх в убуваючому порядку. До того ж система не тільки буде обирати цей список
в залежності від опису комп’ютерів та опису від продавця, головним фактором
буде оцінка, яку дали самі користувачі. Цей стовпчик ревелентності є самим
правим і показує скільки користувачів вважають комп’ютер «good computer».
Список добрих «добрих комп’ютерів», які система обрала для
користувача представлений на рис. 3.3.

Page 24

24
Рисунок 3.3 – Список комп’ютерів за запитом «
i want good computer
»
Для того, щоб обрати необхідний комп’ютер, користувач у полі вводу
може вводити запити для того, щоб отримати інформацію про комп’ютери
залежно від їхньої ціни та якості, а також залежно від того, які характеристики
необхідні для коп’ютеру. Проте, якщо користувач хоче обрати комп’ютер за
кількома ознаками у полі вводу йому необхідно написати «», і комп’ютери
будуть виводитись в залежності від того скільком потребам користувача вони
відповідають, а також головним фактором буде оцінка користувачів відносно
заданих пораметрів. Список таких вимог представлений на рис. 3.4.

Page 25

25
Рисунок 3.4 – Список комп’ютерів, що відповідають запиту «i want good computer for
the game vis the low prise»
Якщо користувачу сподобався якийсь з запропонованих комп’ютерів, він
може віддати за нього свій голос. Для наступних користувачів експертна
система видасть спики комп’ютерів, що відповідають їхнім вимогам з
урахування голосів від попередніх користувачів. Якщо користувач вирішив
віддати свій голос за комп’ютер, що має порядковий номер «2», то у стовпчику
зміниться цифра голосів за цей комп’ютер. Під час голосування користувачу
видається віконце з подякою. Приклад голосування зображено на рис. 3.5.
До голосування:

Page 26

26
Під час голосування
:
Після голосування:
Рисунок 3.5 – Голосування користувача

Page 27

27
ВИСНОВОК
У даній курсовій роботі була розроблена експертна система, яка за
допомогою бази знать допомагатиме користувачу обрати необхідний йому
комп’ютер з тих, що йому пропонуються.
Було надано короткий теоретичний матеріал про експертні системи та
програмні засоби, за допомогою яких була створена власна експертна система
допомоги вибору комп’ютерів користувачами.
Розроблена експертна система може бути вдосконалена та впроваджена у
реальне користування, а також на основі створеної системи можна розробити
інші, які допомагатимуть користувачам не з вибором комп’ютерів, а інших
засобів чи пристроїв.

Page 28

28
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
1. Балик Н.Р. Методика вивчення експертних систем у курсі інформатики
та обчислювальної техніки: Автореф. дис...канд. пед. наук: 13.00.02 /
Український педагогічний ун-т ім. М.П.Драгоманова. – К. 1995. – 24 с.
2. Кравець В.О. Хавіна І.П. Колибін Ю.М. Нікітіна Л.О. та ін. Вступ до
експертних систем: Навч. посіб. / Національний технічний ун-т «Харківський
політехнічний ін-т». – Х.: НТУ «ХПІ» 2006. – 232 с.
3. Криворучко О.В. Цюцюра С.В. Основи експертних систем: Навч. посіб.
/ Київський національний торговельно-економічний ун-т. – К.: КНТЕУ 2006. –
141 с.
4. Месюра В.І. Яровий А.А. Арсенюк І.Р. Експертні системи: Навч. посіб.
для студ. спец. «Інтелектуальні системи прийняття рішень» / Вінницький
національний технічний ун-т. – Вінниця: ВНТУ 2006. – 114 с.

Page 29

29
ДОДАТОК А
Головна страниця сайту, що відповідає за обмін інформацією між
клієнтами:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Expert System 0.1</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<!-- Le styles -->
<link href="../assets/css/bootstrap.css" rel="stylesheet">
<script src="../assets/js/jquery.js"></script>
<script src="../assets/js/jquery-ui.js"></script>
<style type="text/css">
body {
padding-top: 40px;
padding-bottom: 40px;
background-color: #f5f5f5;
}
.form-signin {
max-width: 300px;
padding: 19px 29px 29px;
margin: 0 auto 20px;
background-color: #fff;
border: 1px solid #e5e5e5;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);
-moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);
box-shadow: 0 1px 2px rgba(0,0,0,.05);
}
.form-signin .form-signin-heading,
.form-signin .checkbox {
margin-bottom: 10px;
}
.form-signin input[type="text"],
.form-signin input[type="password"] {
font-size: 16px;
height: auto;
margin-bottom: 15px;
padding: 7px 9px;
}
</style>
<link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Fav and touch icons -->

Page 30

30
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-
precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-
precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-
precomposed.png">
<link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
<link rel="shortcut icon" href="../assets/ico/favicon.png">
</head>
<body>
<div class="container">
<form class="form-signin" onclick="">
<ul class="nav nav-tabs">
<li class="active"><a href="#">General</a></li>
<li><a href="#">Options</a></li>
</ul>
<h2 class="form-signin-heading">Get some request</h2>
<input type="text" id='req' class="input-block-level" placeholder="Example: i want good computer">
<button class="btn btn-large btn-primary" type="button"
onclick="fillTable(document.getElementById('req').value)">Ok</button>
<script>
function fillTable(req)
{
if(req != '')
{
$.ajax({ url: '/getitemsbyrequest/' + req,
dataType: "JSON",
type: 'get',
success: function(output) {
document.getElementById('results').innerHTML = "";
document.getElementById('results').innerHTML =
"<thead> <tr> <th>ID</th> <th>Name</th> <th>Description</th> <th>Price</th> <th>Revelation</th> </tr>
</thead> <tbody>"
output = output.sort(function(a,b) { if(a.Revelation >
b.Revelation) return -1; if(a.Revelation < b.Revelation) return 1; if(a.Revelation == b.Revelation) return 0;});
for(i in output)
{
document.getElementById('results').innerHTML
+= '<tr>';
document.getElementById('results').innerHTML
+= '<td>' + output[i].ID + '</td>' + '<td>' + output[i].Name + '</td>' + '<td>' + output[i].Description + '</td>' + '<td>' +
output[i].Price + ' UAN' + '</td>' + '<td><span class="badge badge-success">' + output[i].Revelation + '</span></td>';
//document.getElementById('results').innerHTML +=
'<td>' + output[i].Revelation + '</td>' ;
document.getElementById('results').innerHTML +=
'</tr>';
}
document.getElementById('results').innerHTML +=
'</tbody>';
updateTableEvents();
}
});
}
else
{
$.ajax({ url: '/getitems/',
dataType: "JSON",
type: 'get',
success: function(output) {
document.getElementById('results').innerHTML = "";
document.getElementById('results').innerHTML =
"<thead> <tr> <th>ID</th> <th>Name</th> <th>Description</th> <th>Price</th> <th>Revelation</th> </tr>
</thead> <tbody>"

Page 31

31
output = output.sort(function(a,b) { if(a.Revelation >
b.Revelation) return -1; if(a.Revelation < b.Revelation) return 1; if(a.Revelation == b.Revelation) return 0;});
for(i in output)
{
document.getElementById('results').innerHTML += '<tr>';
document.getElementById('results').innerHTML
+= '<td>' + output[i].ID + '</td>' + '<td>' + output[i].Name + '</td>' + '<td>' + output[i].Description + '</td>' + '<td>' +
output[i].Price + ' UAN' + '</td>' + '<td><span class="badge badge-success">' + output[i].Revelation + '</span></td>';
//document.getElementById('results').innerHTML +=
'<td>' + output[i].Revelation + '</td>' ;
document.getElementById('results').innerHTML
+= '</tr>';
}
document.getElementById('results').innerHTML +=
'</tbody>';
updateTableEvents();
}
});
}
}
var voted = 0;
function updateTableEvents()
{
$('table').find('tr').click( function(){
if(voted == 0)
{
var row = $(this).find('td:first').text();
$.ajax({ url: '/edititem/' + row,
dataType: "Text",
type: 'get',
success:
function(output) {
alert(output);
voted++;
}
});
}else{alert('You can voted only one time.');}
fillTable(document.getElementById('req').value);
});
$('table').find('tr').hover(function() {
$
(this).css("background", "#C1DAD6");
}, function() {
oldBgColor = $(this).hasClass("even") ? "#ddd" : "#eee";
$(this).css("background", oldBgColor);
});
}
</script>
</form>
<!-- TABle -->
<div class="alert alert-info">
<button class="close" data-dismiss="alert" onclick="$('.alert').toggle('slow')">x</button>
<strong>Alert!</strong> The revelation can be depend from users votes.
</div>
<button class="close" data-dismiss="alert" onclick="$('table').toggle('slow')">x</button>
<table id="results" class="table">
</table>
</div> <!-- /container -->
<div class='result' />
</body>
</html>

Page 32

32
Робота з товарами:
<?
function getitems()
{
$items = new Axon('items'); //подключение к таблице items БД
$all_items = $items->afind(); // Извлечение всех комментариев
F3::set('items',$all_items);
/*foreach ($all_items as $item)
{
echo '********************************************************';
echo '<br/><b>ID:</b> '.$item['ID'].'<br />';
echo '<b>Name:</b> '.$item['Name'].'<br /><br />';
echo '<b>Description:</b><br/> '.$item['Description'].'<br /><br/>';
echo '<b>Price:</b> '.$item['Price'].'<br /><br />';
echo '<b>Tags:</b> '.$item['Tags'].'<br/>';
echo '********************************************************';
}*/
echo json_encode($all_items);
}
//
function getitemsbyrequest()
{
$request = F3::get('PARAMS["request"]');
//
$stopWords = array("i ", "want ", "a ", "computer ", "and ", "with ", "low price", "for ", "hight price");
$to = array("" , "" , "" , ""
, "" , "" , "low_price", "" , "hight_price");
$request = str_replace($stopWords, $to, $request);
//
//$items = new Axon('items'); //подключение к таблице items БД
//
$all_items = $items->afind( "Tags='$request'" ); // Извлечение всех комментариев
//
F3::set('items',$all_items);
//
$sql="
select
*
FROM
items
WHERE
Tags like '_SOME_DRAFT_LIKE_MAGIC_TEXT_OR_SYMBOL'
";// this string '_SOME_DRAFT_LIKE_MAGIC_TEXT_OR_SYMBOL' need to create good like query
//gen like query
foreach (explode(' ',$request) as $req)
{
$sql = $sql . "or Tags like" . " '%" . $req . "%' ";
}
//echo $sql . '<br/>';
//
DB::sql($sql);
$all_items = F3::get('DB->result');
//add reveletion to item depends from how tags it have
$i=0;
foreach($all_items as $item)
{
foreach(explode(' ', $item['Tags']) as $tag)
{
if( in_array($tag, explode(' ',$request)) ) $all_items[$i]['Revelation']+=25;
}
$i++;
}
//
/*foreach ($all_items as $item)

Page 33

33
{
echo '********************************************************';
echo '<br/><b>ID:</b> '.$item['ID'].'<br />';
echo '<b>Name:</b> '.$item['Name'].'<br /><br />';
echo '<b>Description:</b><br/> '.$item['Description'].'<br /><br/>';
echo '<b>Price:</b> '.$item['Price'].'<br /><br />';
echo '<b>Tags:</b> '.$item['Tags'].'<br/>';
echo '********************************************************';
}*/
echo json_encode($all_items);
}
//
function getitem()
{
$itemID = F3::get('PARAMS["itemID"]');
$itemsTable = new Axon('items'); //подключение к таблице items БД
$item = $itemsTable->load("ID='$itemID'"); // Извлечение всех комментариев
//$item->copyTo("POST");
//
echo '********************************************************';
echo '<br/><b>ID:</b> '.$item->ID.'<br />';
echo '<b>Name:</b> '.$item->Name.'<br /><br />';
echo '<b>Description:</b><br/> '.$item->Description.'<br /><br/>';
echo '<b>Price:</b> '.$item->Price.'<br /><br />';
echo '<b>Tags:</b> '.$item->Tags.'<br/>';
echo '********************************************************';
//include "/templates/index/index.php";
}
//
function edititem()
{
$itemID = F3::get('PARAMS["itemID"]');
$items = new Axon('items');
$items = $items->load("ID='$itemID'");
//$items->itemname = F3::get('REQUEST["itemID"]');
//$items->password = F3::get('REQUEST["password"]');
$items->Revelation++;
$items->save(); // добавление в базу данных
echo "Your vote counted ! Thank you.";
}
//
?>

Информация о работе Експертна система підбору комп’ютерів