5. Выполнить упражнения в соответствии с индивидуальным заданием
Содержание отчета:
В отчете, помимо стандартной части, необходимо нарисовать генеалогическое дерево. Для каждого отлаженного отношения представить граф и соответствующее ему правило. Описать допущенные в процессе работы синтаксические ошибки.
Контрольные вопросы
Варианты заданий
Описать базу фактов, содержащих сведения о личностях и родственных отношениях:
Родители |
Дети |
Артем |
Борис и Елена. |
Анна |
Борис, Семен и Ира |
Борис |
Ева и Люба |
Вера |
Ева и Люба |
Ева |
Дима |
Люба |
Света |
Имя |
Год рождения |
Пол |
Артем |
1900 |
Мужской |
Анна |
1910 |
Женский |
Борис |
1940 |
Мужской |
Вера |
1945 |
Женский |
Ева |
1963 |
Женский |
Люба |
1966 |
Женский |
Елена |
1924 |
Женский |
Семен |
1930 |
Мужской |
Ира |
1934 |
Женский |
Дима |
1987 |
Мужской |
Света |
1986 |
Женский |
Составить правила, определяющие понятия:
1 вариант - мать, ребенок, сын, дед, внучка, родная тетя, племянник
2 вариант - отец, ребенок, дочь, бабушка, внук, родной дядя, племянница.
отношения
родители отец мать
дети сын дочь
брат_сестра брат сестра братья сестры
дед_бабка дед бабка
внук_внучка внук внучка
дядя_тетя дядя тетя
племянники племянник племянница
двоюродные_брат_сестра дв_брат(кузен) дв_сестра(кузина)
прадед_прабабка прадед прабабка
правнуки_правнук правнучка
троюродные_брат_сестра тр_брат тр_сестра
двоюродные_тетя_дядя дв_дядя дв_тетя
двоюродные_дед_баба
Справочный материал
Функции главного меню
Элемент меню |
Описание |
FILES |
Управление файлами (загрузка, сохранение, создание), манипуляция каталогами, выход из системы. |
EDIT |
Позволяет с помощью встроенного текстового редактора создавать и редактировать исходные файлы. |
RUN |
Автоматически компилирует и запускает программу из среды разработки |
COMPILE |
Компилирует программу или проект одним из нескольких возможных способов: в память, в объектный файл или в исполняемый файл. |
OPTIONS |
Позволяет установить опции компилятора (такие, как контроль переполнения, информация для отладки, размеры памяти) и компоновщика. Кроме того, можно отредактировать свой файл описания проекта (*.prj). |
SETUP |
Позволяет описать цвета и размеры окон Турбо Пролога, установить каталоги для файлов исходных текстов, объектных и выполняемых. |
Структура среды разработки пролог-программ
Files |
Edit |
Run |
Compile |
Options |
Setup |
Edit |
Dialog |
||||
Message |
Trace |
||||
F2 Save |
F3 Load |
F6 Switch |
F9 Compile |
Alt-X Exit |
|
Структура простой пролог-программы
predicates имя_предиката(список типов аргументов) . . . . . . . . . . . . . . . . . . . . . . . |
секция описания предикатов |
clauses имя_предиката(значения аргументов). заголовок_правила(аргументы) : – предикат_подцель_1, предикат_подцель_2, . . . . . . . . . . . . . . . . , предикат_подцель_N. |
секция фактов правил В конце каждого предложения ставится точка! |
Базовые типы аргументов, поддерживаемые Прологом:
|
константы |
диапазон |
|
symbol |
tom female 24 |
|
атомы |
string |
"Андрей" "т-22" |
< 64 Kb |
строки |
char |
'a' 'g' \dd \n \t |
ASCII символы |
символы |
integer |
34 -45 |
-32768 : 32767 |
целые |
real |
3.12 1e-3 |
(1е-307 : 1е+308) |
вещественные |
Типовые ошибки
Неописанный предикат
Предикат описан но нигде не используется
Нет точки в конце предложения
Неправильный тип
переменная, описанная в заголовке правила не используется в теле правила
Родственные отношения
Люди связаны между собой многими отношениями – родственными, брачными, юридическими, религиозными, биологическими (наследственные болезни). Важнейшими из них являются родство и свойство.
Родство – связь между людьми, основанная на происхождении одного лица от другого (прямое родство) или разных лиц от общего предка, а также на брачных отношениях.
Родственник – человек, который состоит в родстве с кем-либо.
Кровное родство – связь, основанная на общем происхождении от одних родителей.
Родственники одной степени родства по отношению к общему предку образуют поколение.
Прямое родство (между соседними поколениями)
отец мать родитель сын дочь ребенок
Прямое родство (через одно поколение)
дед бабушка внук внучка
Для обозначения прямого родства более чем через одно поколение используется приставка "пра" (см. таблицу).
интервал |
мужской пол |
женский пол |
обобщение |
2 поколения |
прадедушка (прадед) |
прабабушка (прабабка) |
прародители |
Правнук |
правнучка |
правнуки |
|
3 поколения |
Прапрадед |
прапрабабка |
прапрародители |
Праправнук |
праправнучка |
праправнуки |
Понятие предки означает множество родителей старшего поколения, начиная с родителей (мать, отец, дед, бабка, прадед и т.д.).
Аналогично, потомки это множество детей младших поколений (сын, дочь, внук, внучка, правнук и т.д.).
Родство на основе общего предка.
Отношения между родственниками одного поколения. Названия отношений зависят как от пола одного из лиц, входящего в отношение (рис. 4), так и от удаленности общего предка (рис.5).
брат сестра братья сестры
Рис. 4 Названия отношений в зависимости от пола одного или обоих лиц, входящих в отношение.
Рис. 5 Названия отношений в зависимости от степени удаленности общего предка
расстояние от общего предка |
мужской пол |
женский пол |
1 колено |
Брат |
сестра |
2 колена |
двоюродный брат (кузен) |
двоюродная сестра (кузина) |
3 колена |
троюродный брат |
троюродная сестра |
. . . . . |
. . . . . |
. . . . . |
Отношения между родственниками разных поколений
Названия отношений зависят от двух величин: удаленности от общего предка, разнице в поколениях и пола лиц, входящих в отношение.
разница в поколениях |
младшее поколение по отношению к старшему |
старшее поколение по отношению к младшему |
|
двоюродный дядя |
двоюродная тетя |
1 колено |
племянник племянница |
тетя дядя |
|
|
|
|
двоюродный (внучатый) племянник |
двоюродная (внучатая) племянница |
Сводное родство – связь, основанная на общем происхождении только одного из родителей.
Вертикальные отношения
отчим |
Мачеха |
пасынок |
Падчерица |
Горизонтальные отношения
сводный брат |
сводная сестра |
пасынок |
Падчерица |
Свойство – отношение между людьми, возникающее из брачного союза одного из родственников.
Свойственник (свояк) – человек, который состоит в свойстве с кем-либо.
брат мужа зять невестка (сноха)
сестра мужа
брат жены
сестра жены
муж |
жена |
супруги |
|
|
|
для родителей |
|
|
муж дочери – зять |
жена сына – сноха невестка |
|
муж сестры – зять |
жена брата – невестка |
|
|
|
|
Родственники жены для мужа |
|
|
отец жены – тесть |
мать жены – теща |
|
брат жены - шурин |
сестра жены - |
|
|
|
|
|
|
|
Родственники мужа для жены |
|
|
отец мужа – свекор |
мать мужа – свекровь |
|
брат мужа – деверь |
сестра мужа – золовка |
|
|
|
|