Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Довжина списку

Можна, використовуючи рекурсивний виклик, легко порахувати довжину списку:

length([], 0).

length([X|L], N):-length(L, M), N is M+1.

?-length([a, b, c], N).

N=3

4.3 Вбудовані предикати

Дотепер ми одержували відповіді у формі пропонованій прологом:

друкувалися значення змінних присутніх у питанні;

питання цілком записувалися після запиту "?-".

Однак можна задавати питання й одержувати відповіді в довільній формі.

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

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

Коли інтерпретатор зустрічає мету, що порівнюється з вбудованим предикатом, він викликає вбудовану процедуру.

Вбудовані предикати звичайно виконують функції не зв'язані з логічним висновком.

При зіставленні строєні предикати звичайно дають побічний ефект, що не усувається при бектрекінгу.

4.3.1 Прості вбудовані предикати виводу-введу.

Вбудовані предикати забезпечують можливості вводу-виводу інформації:

write/1 - цей предикат завжди успішний. Коли викликається, то побічним ефектом буде виведення значення аргументу на екран. При бектрекінгу предикат дає невдачу. Бектрекінг не скидає побічний ефект.

nl/0 - цей предикат завжди успішний. Коли викликається, то побічним ефектом буде переведення на наступний рядок. При бектрекінгу предикат дає невдачу. Бектрекінг не скидає побічний ефект.

tab/1 - цей предикат завжди успішний. Коли викликається, то побічним ефектом буде друк кількості пробілів задане аргументом. Аргумент повинний бути цілим. При бектрекінгу предикат дає невдачу. Бектрекінг не скидає побічний ефект.

read/1 - цей предикат читає терм , що вводиться з клавіатури і закінчується крапкою. Цей терм співставляеться з аргументом. При бектрекінгу предикат дає невдачу. Бектрекінг не скидає побічний ефект.

Наприклад,

pr1:- read(X),nl,write('X='),tab(2),write(X).

При виклику

?-pr1.

послідовність термів читає значення X, переводить рядок, друкує 'X=', пропускає два пробіли і друкує значення X.

4.3.2 Процедурний зміст вбудованих предикатів вводу-введення.

Визначаючи вбудовані предикати ми писали: "цей предикат завжди успішний. Коли викликається, то побічним ефектом буде... При бектрекінгу предикат дає невдачу. Бектрекінг не скидає побічний ефект."

Звичайно в пролозі вхід у мету можливий через "call" при виклику і через "redo" при бектрекінгу.

Ціль має внутрішню структуру:


Перший ромб - рішення при виклику call.

Другий ромб - рішення при скиданні redo.

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

 
 

Вона представляється у вигляді:

 

У такий спосіб прохід через убудований предикат буде:

або call - exit,

або redo - fail.

4.4 Введення-виведення списків.

Для введення-виведення списків можливі наступні два способи.


Читайте також:

  1. Довжина двійкового коду повідомлень називається обсягом даних.
  2. Довжина дуги в прямокутних координатах.
  3. Довжина дуги кривої, заданої параметрично.
  4. Довжина дуги.
  5. Довжина хорди
  6. Довжина] [f | n ] [ h | l ] керуючий_символ
  7. Ефективний діаметр молекул. Частота зіткнень та середня довжина вільного пробігу молекул
  8. Мінімальна довжина прямої вставки між початковими точками перехідних кривих
  9. Оформлення списку використаної літератури
  10. Оформлення списку літератури
  11. Поняття хвилі, рівняння хвилі. Поздовжні і поперечні хвилі. Фронт хвилі і хвильові поверхні. Довжина хвилі, хвильове число, фазова швидкість




Переглядів: 824

<== попередня сторінка | наступна сторінка ==>
Застосування append | Швидке сортування quick

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.003 сек.