ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Агрегати фактів
         

     

    Інформатика, програмування

    Агрегати фактів

    1. Списки.

    Якщо в пр-ме необхідно організувати зі змінними або заздалегідь невизначеною кількістю об'єктів, то викон. списки.

    СПИСОК -- впорядкована послідовність ел-в одного типу невизначеної довжини, кіт м. складатися з 0 і більше ел-в.

    Константи , що потрапили в список, записуються в [] і відокремлюються один від одного комами.

    Виходячи з визначення списку, два списки, сост. з одних і тих же

    ел-в, але розташованих в різному порядку вважаються різними. У розділі domains ел-ти списку зобов але д.б.н. зіставлені з певним типом домену (Sp = integer *).

    Список в domains м.б. опосередкований через ім'я змінної, ел-ти кіт. збираються в список.

    domains

    k_fms = string, kol = integer,

    Sp = kol *

    predicates

    fms (k_fms, kd, ...)

    Списки складаються із заголовка (початку списку) і захоплення (закінчення списку). До заголовку стосується лише 1-й ел-т списку, решта - хвіст.

    Список з нульовим кількістю ел-в визначається як порожній список, він не має ні заголовка ні хвоста. Для

    з роботи списками в мові є ряд вбудованих предикатів.

    MEMO (,) - де м.б. заданий або ім'ям Sp, або безпосередньо константами, що входять до цього списку.

    Предикат визначає приналежність ел-та до списку.

    I - поділ списку на голову і хвіст [Head I Tail] або [HIT]

    H - або змінної для позначення заголовка

    T - - "-- хвоста

    ПРИКЛАД

    domains

    list = char *

    predicates

    test (List)

    clouses

    test ([ 'A', 'B', 'C', 'D']).

    goal

    test ([H/T ]),

    nl,

    write (H)

    APPEND ([ ел-ти старого списку], [ел-ти нового списку], <ім'я нового списку>)

    - з 2-х списків, старого і нового, створюють III список.

    REVERS ([ ел-ти стар. списку], <ім'я нового списку>)

    - міняє послідовність ел-в на протилежну

    FINDALL (< ім'я змінної "," формат предиката>, <назва списку>)

    ПРИКЛАД

    domains

    post = string

    Kol, Cena, Sum = Integer

    Sp = integer * (Sp = Kol *)

    Kod = string

    predicates

    tmc (P, Kol, Cena)

    sum (Sp, Sum)

    goal

    write ( "Введіть код "),

    readln (Kod),

    nl,

    findall (Kol, tmc (Pos1, Kod, Kol, Cena), Sp),

    sum (Sp, Sum),

    write ( "Кількість =", Sum)

    clauses

    tmc ( "001", "001", 45, 80)

    .

    .

    .

    sum ([], 0).

    sum ([H/T], Sum) if

    sum (T, Sum1).

    Sum = H + Sum1.

    У мові є можливість роботи з динамічною базою фактів, в якій м. об'єднуватися як однорідні, так і різнорідні предикати-фактори.

    База фактів -- щось середнє м-у реляційної СУБД і масивом. У момент активізації всі факти бази переносяться в ОЗУ з зовнішнього зап. пристрою. Для роботи з БД створюється новий розділ програми, в кот. визначаються прототипи предикатів-фактів, Об'єднаних до бази.

    Database

    прототипи в цьому розділі описуються за тими ж правилами, що і в predicates.

    Розділ database записується перед розділом predicates і предикати, кот. в ньому описувати не можуть описуватися у роздiлi predicates, а іс-ся в розділах clouses і goal. Активізація бази відбувається в області ОЗУ, кот. за замовчуванням має тип домену dbasedom. Цей тип програміст не вказує явно в програмі у розділі domains, але м. його використовувати в якості аргументів вбудованих предикатів мови, що дозволяє скоротити текст програми при роботі з базою.

    domains

    dbasedom = tms (Post, Kod, Kol, Cena)

    .

    .

    .

    database

    .

    .

    tmc (Post, Kod, Kol, Cena)

    Можливо доповнення бази новими фактами, видалення застарілих, коректування окремих фактів. Всі операції в базі фактів проводяться за допомогою стандартних вбудованих предикатів:

    asserta

    (<факт>) (dbasedom) : (I)

    assertz

    - використовується для додавання нового факту в базу. Факт д.б.н. обов'язково визначений і відноситься до області dbasedom. При використанні предиката asserta факт додається перед іншими фактами наявного предиката.

    assertz -- додавання після - "-

    retraсt (< факт>) (dbasedom): (i) - видалення з БД перший факт, кот. зіставляється з вказаним в retraсt фактом. Можливо видалення групи. При цьому у факті зазначається загальна для видалення фактів значення, а на місці всіх інших змінних записуються ті змінні, кот. немає в цьому предикат.

    SAVE (<ім'я файлу>) - скорочує всі факти дин. бази з ОЗУ на магн. диск під ім'ям

    string: (i) заданим в предикат save/

    CONSULT (< назва файлу>) - додає в опер. дин. базу всі факти з файлу на диску з

    string: (i) вказаним ім'ям.

    2. Прийоми роботи з динамічною базою фактів.

    1.Перезапісь фактів з розділу clouses в базу на МД.

    domains

    Post, Kod = string

    Kol, Cena = integer

    database

    tmc (Post, Kod, Kol, Cena)

    predicates

    perezap

    dauses

    tmc ( "001", "001", 45,80).

    .

    .

    .

    perzap if

    save ( "data")

    gocel

    perezap.

    2. Створення бази в процесі діалогу

    domains

    Post, Kod = string

    Kol, Cena = integer

    Pc = integer & & ознака закінчення введення

    database

    tmc (Post, Kod, Kol, Cena) & & база створюється спочатку

    predicates

    vvod

    clouses

    vvod if

    write ( "Введіть код постачальника "),

    nl,

    readln (post),

    nl,

    write ( "Введіть код ТМЦ "),

    nl,

    readln (Kod),

    nl, write ( "Введіть кількість ТМЦ "),

    nl,

    readint (Kol),

    write ( "Введіть ціну "),

    nl,

    readint (Cena),

    assertz (tmc (Post, Kod, Kol, Cena )),

    write ( "Введіть ознака продовження s/0 "),

    pr = 0,

    vvod.

    goal

    vvod,

    save ( "data")

    3.Дополненіе бази новими фактами

    .

    .

    .

    goal

    consult ( "data "),

    vvod,

    save ( "data').

    4.Актівізація фактів з файлу на диск

    domaines

    Post, Kod = string

    Kol, Cena = integer

    Sum, Sum1 = integer

    Sp = kol *

    database

    tmc (Post, Kod, Kol, Cena)

    predicates

    sum (Sp, Sum)

    clouses

    sum ([], 0).

    sum ([H/t], Sum) if

    sum (T, Sum1),

    Sum = H + Sum1.

    goal

    consult ( "Data "),

    write ( "Введіть код ТМЦ "),

    nl,

    readln (Kod),

    sum (Sp, Sum),

    write (Sum).

    5.Удаленіе конкретних фактів з БД

    domains

    Post, Kod = string

    Kol, Cena = integer

    database

    tmc (Post, Kod, Kol, Cena)

    predicates

    udal

    clouses

    udal if

    write ( "Вкажіть код постачальника "),

    nl,

    readln (Post),

    write ( "Вкажіть код ТМЦ "),

    nl,

    readln (Kod),

    retract (tmc (Post, Kod, Kol, Cena )),

    goal

    consult (data),

    udal,

    save ( "data').

    6.Удаленіе групи факторів

    dauses

    udal if

    write ( "Введіть код постачальника "),

    nl,

    readln (post),

    retract (tmc (Post, Kod, Kol, Cena )),

    .

    .

    .

    За допомогою retract проводиться видалення дин. бази фактів з ОЗУ.

    Коригування вмісту факту.

    Операції проіхзводятся в 2-а етапи:

    1 - за допомогою retract здійснення. видалення застарілого факту з бази

    2 - assertz -- додавання нового факту в базу.

    3. Структури.

    СТР-РА - набір об'єктів, логічно пов'язаних між собою в процесі рішення задачі і об'єднаних під одним ім'ям. Стор-ра в П. використовується при створенні складної бази фактів і правил.

    Якщо об'єкти стр-ри відносяться до одного типу доменів. то стр-ра наз. однодоменной. Допускається исп-е доменів різного типу, в цьому випадку стр-ра наз. разнодоменной.

    Викор-е стр-ри в програмах дозволяє впорядкувати базу, дозволяється звернення до буд-рам по імені.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.parny.by.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status