четверг, 29 сентября 2016 г.

Переходим на новую платформу

Для Вас созданы аккаунты в домене @stud.onu.edu.ua
Это аккаунт нашего университета по сути - гугловский аккаунт.
Его наличие (помимо того, что это красиво) позволяет получить доступ к сервисам гугл, доступным только организациям, имеющим соответствующие договоры на их академическое использование. В частности доступ к сервису googleClas.  на который мы переходим.

Список новых адресов Вашей электронной почты вы найдете тут.
Вам нужно зайти на аккаунт с этим именем, провести соответствующие процедуры, завершающие регистрацию, провести свои настройки ( в т.ч. сменить пароль и аватар). Временный пароль для входа stud123123 .
Аккаунт будет действовать как минимум до Вашего окончания ОНУ.
Эта регистрация ввела Вас автоматически в БД MS и google.
До встречи на новых просторах интернета...

воскресенье, 18 сентября 2016 г.

Зачет в обмен на сертификат...

В Украину пришел легендарный гарвардский курс по основам программирования: бесплатно и для всех желающих. Предъявившие сертификат об успешном прохождении любого курса этого университета - зачет автоматически...

пятница, 16 сентября 2016 г.

Собеседование в IT компании

введение в Visual Prolog




Решение задачи средствами языка Visual Prolog осуществляется путем логического вывода необходимых сведений из уже известных.
Программа на VP представляет собой конечную последовательность определенных фактов, относящихся к определенной предметной области и правил вывода логических заключений из этих фактов.
Программа состоит из следующих блоков, начало которых обозначается различными ключевыми словами:
domains – раздел описания доменов (начинается со строчной буквы!), которые позволяют задавать разные имена различным видам данных, чтобы они не выглядели одинаково и программист помнил что и в каком порядке используется для обработки
predicates – раздел определения фактов и правил. Объявление предиката начинается с имени предиката (начинается с буквы, можно использовать знак «_», но нельзя знаки «–« , «*» , пробел), а затем в () перечисления доменов (стандартных, т.е. типов и описанных ранее в разделе доменов)
clauses – раздел записи фактов, отношений фактов и правил. Правило создается с помощью логических выражений. В VP дизъюнкция обозначается «;», конъюнкция «,», если «:-». Каждое правило и факт заканчивается точкой.
goal – раздел запросов, как и в правилах использует переменные, логические операции и имена фактов и правил.
Для более комфортного запуска программ на VP рекомендуется использовать утилиту среды визуальной разработки Test Goal (Ctrl+G), создав специальный TestGoal – проект. Выполните следующую последовательность операций:
  1. Создайте новый проект Project – New Project.
  2. В появившемся диалоговом окне Application Expert введите следующие данные
Рис. 1.1. Диалоговое окно Application Expert\General


Рис. 1.2. Диалоговое окно Application Expert\Target


  1. После нажатия кнопки Create следует установить требуемые опции компилятора для созданного TestGoal-проекта:
  • OptionsProjectCompiler Option.
  • Откройте вкладку Warnings. Установите переключатель Nondeterm, чтобы компилятор все определенные пользователем предикаты как недетерминированные.
  • Снимите флажки Non Quoted Symbols, Strong Type Conversion Check, Check Type of Predicates. Это будет подавлять некоторые возможные предупреждения компилятора, которые не важны для выполнения несложных программ.
Теперь все программы следует открывать в запущенном командой ProjectOpen project проекте командой FileNew.

Работа с фактами, правилами и переменными. Применение отсечения ненужных решений

Задача 1.
Пусть заданы факты о книгах, их авторах и количестве страниц. Необходимо составить правило о том, какой роман мож­но считать большим, и реализовать это.


domains
% Описание доменов пользователя
заглавие, автор = symbol
страниц = integer
predicates
% Описание предикатов пользователя
книга(заглавие, страниц)
написал(автор, заглавие)
большой_роман(заглавие)
clauses
% Факты
написал(горький, "МАТЬ").
написал(шолохов, "ТИХИЙ ДОН").
книга("ТИХИЙ ДОН",1250).
книга("МАТЬ", 310).


/* Правило, определяющее, какая книга считается большим романом */


большой_роман(Заглавие) :-
написал(_, Заглавие), %Автор в этом случае безразличен
книга(Заглавие, Страниц),
Страниц > 300.


Goal написал(Кто,Что).


На этот вопрос prolog выдает ответ:
Кто=горький Что="МАТЬ"
Кто=шолохов Что="ТИХИЙ ДОН"
2 Solutions


Или такой запрос:
Goal большой_роман(Заглавие).


В нашей базе данных хранятся два романа, которые можно счи­тать большими, поскольку их объем превышает 300 страниц. Поэтому ТП выдаст следующее решение:
Заглавие="МАТЬ"
Заглавие="ТИХИЙ ДОН"
2 Solutions


Примечание: Строка со знаком % или заключенная символами /* */ считается комментарием


Запуск цели осуществляется командой Ctrl+G или кнопкой G на панели инструментов.

Инсталляция SWI-Prolog'а, Help, Трассировка выполнения программы


Инсталляция SWI-Prolog'а


Интерпретатор с языка Пролог представлен в виде упакованного файла pl.arj. SWI-Prolog работает в среде Windows; для его установки на компьютере достаточно распаковать файл pl.arj вместе со всеми хранящимися в этом файле каталогами. Запустите файл pl.exe из каталога pl\bin и вы войдете в интерпретатор. Пролог выдает приглашение "?-" и ждет вашего ввода.
Чтобы набирать программы, надо воспользоваться каким-либо внешним текстовым редактором (SWI-Prolog не имеет собственного редактора). Например, вы можете пользоваться стандартной программой Notepad ("блокнот"). Набранные программы сохраняйте в виде текстовых файлов с расширением pl (но можно и расширение txt) в рабочем каталоге. По умолчанию рабочим каталогом будет pl\bin, но вы можете это изменить: для этого создайте ярлык для pl.exe и измените рабочий каталог в свойствах этого ярлыка. Чтобы загрузить программу из файла c:\pl\work\name.pl, находясь в среде интерпретатора, вы должны в ответ на приглашение "?-" набрать имя файла в квадратных скобках
?- [name].
если установлен рабочий каталог - pl\work, или набрать имя файла с полным путем к нему,
?-['c:\pl\work\name.pl'].
если установлен другой рабочий каталог. Отметим следующую особенность работы в SWI-Prolog с блокнотом. После набора текста программы обязательно перейдите курсором на новую строчку, иначе SWI-Prolog при загрузке файла с программой выдаст ошибку "неожиданный конец файла".

Помощь в SWI-Prolog’е
После инсталляции интерпретатора SWI-Prolog есть возможность обратиться к помощи через ярлык «manual.html». Кроме того, документация для пользователя находится в файле manual.pdf (читается с помощью программы Adobe Acrobat).
Кроме того, SWI-Prolog имеет помощь online. Вызов «?- help(<имя предиката>).» выдает на экран информацию об этом предикате. Вызов «?- help.» выдает информацию о том, как пользоваться этой помощью.

Трассировка выполнения программы
Предикат trace позволяет пользователю отслеживать состояние интерпретатора Пролога.
  • trace/0
Стартует трассировщик. В процессе мониторинга в выходной файл выводятся все целевые утверждения, обрабатываемые интерпретатором языка. Зачастую этой информации для пользователя слишком много.
  • trace(+Pred)
Эквивалентно вызову trace(+Pred, +all).
  • trace(+Pred, + Ports)
Устанавливаются точки трассировки на всех предикатах, удовлетворяющих спецификации Pred. Ports есть список портов (call, redo, exit, fail). Атом all ссылается на все порты. Если перед именем порта стоит символ «–», то данный порт не трассируется. Знак «+» говорит о том, что установлена трассировка данного порта.
При трассировке предиката получаем следующую информацию:
  1. уровень глубины рекурсивных вызовов;
  2. когда предпринимается первая попытка обработки целевого утверждения (порт call);
  3. когда цель успешно достигнута (порт exit);
  4. возможность других соответствий целевому утверждению (порт redo);
  5. невозможность достижения цели, поскольку все попытки завершились неудачно (порт fail).
Примеры:

?- trace(hello). % трассировка всех портов предиката hello с любой арностью
?- trace(foo/2, +fail). % трассировка неудач при вызове foo/2
?- trace(bar/1, -all). % прекращение трассировки bar/1.

Проведем трассировку для программы:

родитель( пэм, боб).
родитель( том, боб).
родитель( том, лиз).
родитель( боб, энн).
родитель( боб, пэт).
родитель( пэт, джим).

предок(X,Y):-
родитель(X,Y).

предок(X,Y):-
родитель(X,Z),
предок(Z,Y).

?- trace(родитель).
% родитель/2: [call, redo, exit, fail]
Yes

[debug] ?- trace(предок).
% предок/2: [call, redo, exit, fail]
Yes

[debug] ?- предок(том,пэт).
T Call: (6) предок(том, пэт)
T Call: (7) родитель(том, пэт)
T Fail: (7) родитель(том, пэт)
T Redo: (6) предок(том, пэт)
T Call: (7) родитель(том, _G414)
T Exit: (7) родитель(том, боб)
T Call: (7) предок(боб, пэт)
T Call: (8) родитель(боб, пэт)
T Exit: (8) родитель(боб, пэт)
T Exit: (7) предок(боб, пэт)
T Exit: (6) предок(том, пэт)
Yes


Z4 - турнир

Написать программу (программы), составляющую расписание игр участников спортивного клуба.
Для описания участников клуба использовать предикат player арности 2. (В дальнейшем будем писать так player/2.) Первый аргумент - имя участника клуба, второй - лига, в которой выступает член клуба.
Например player(иван,1) означает - член клуба Иван выступает в первой лиге.
Нужно написать программы(программу), которые составляют расписание игр членов клуба (т.е. указывает кто с кем играет. Например Иван - Петр Семен - Петр) для проведения
1) двухкругового турнира среди всех членов клуба. (каждый с каждым играет два раза)
2) двухкругового турнира среди членов каждой группы (т.е. турнир проводится отдельно для каждой группы в два тура)
3) однокруговой турнир для всех членов 1-й лиги
4) однокруговой турнир для всех членов клуба.

Срок - 19.00 30.09.16

Список членов клуба должен содержать не менее 3 - членов первой лиги и не менее 2-х - второй.
Имена членов клуба в одной лиге различны. Но могут быть члены клуба с одинаковыми именами в разных лигах.

лекция 3

6. Пролог. Основные понятия.
6а атом, структура, список, переменная.
7 Правила и факты в прологе.
8.Переменная в Прологе. Процедура унификации
9.Основные секции программы на Вижуал-Прологе

пятница, 9 сентября 2016 г.

Z 3 Логическая задача

Решение логических задач методом резолюций.
Условие задачи привести в тексте сообщения.
Решение - в текстовом файле во вложении.

Вес одной задачи - "+"

Для "сложных" задач - возможно увеличение веса.
Теория должна содержать не менее 7 предложений. Из которых - не менее трех - правила.

Задачи можно попробовать сформулировать и доказать используя следующую юмористическую статью
В.Тихонов. Теория ошибок
Срок - 24.09.

Z 2 Король

Король думает, что королева думает, что она не в своем уме.
В своем ли уме Король?

Срок - до 24.09

Z1 дедушка

Некто N женился на W, у которой была дочь D.
Через некоторое время его отец F влюбился в D и женился на ней.Т.о. F стал зятем своего сына N, а D жена N стала ему еще и мачехой.
Прошло время у N и W родился сын S1. Т.о. S1 стал шурином F? т.е. S1 стал дядей своему отцу.
Еще прошло время и у F и D тоже родился сын S2...
.
Справедливо ли утверждение " N-сам себе дедушка".

Решение - в комментарии к этому посту..
Срок - до 24.09


Из ответа одного из студента КСС Гюмюшлю Сергей 4 года назад:

Давным-давно,когда ещё,мне было двадцать три.
На вдовушке женился я,хорошенькой учти.
У ней дочь взрослая была и вот ведь,мой отец,
В неё влюбился без ума,пошёл с ней под венец.

Отец родной теперь мне-зять,ой,жизнь кошмарная!
Понятно же,что мачехой,мне стала дочь моя...
Но стало интереснее,ну просто смех один,
Когда у нас со вдовушкой родился общий сын.

Отцу теперь стал шурином,сынишка милый мой,
А так же стал мне дядею,ребёнок мой родной,
А будучи мне дядею,ешё он братом стал,
Для взрослой дочери вдовы,что мачехой я звал.

Отец мой тоже не скучал,сыночка сделал ей.
Он стал мне внуком,ведь ещё он сын дочери моей.
Жена моя ,теперь, мать моей мамы!Балдею просто я.
Ведь не только мне она жена,но и бабушка моя!

Но коль жена мне бабушка,то значит:я ей внук...
Нет,точно я сойду с ума,повешусь я на сук.
Такая вот история,ну как она тебе?
Ведь,если я муж своей бабушки-Я Дедушка Сам Себе!

Лекция 2

2.Математические основы логического программирования.
2а. Основные понятия логики предикатов 1-го порядка.
- предикат,
- терм,
- ППФ,
- интерпритация ППФ,
- модель ППФ,
- теория, следствие из теории.
2б. Фразовая форма. Фразы Хорна. Правило, факт, цель.
3. Автоматизация процедуры логического вывод.
3а Процедура опровержения.
4 Метод резолюций Робинсона. Резольвента. Пустая фраза.

воскресенье, 4 сентября 2016 г.

Спец. предложение.

Разработка сайта преподавателя ВУЗА. Вес задания от 100"+"  до 200 "+" в рейтинговую таблицу нашего курса. Желающих и способных выполнить эту работу - прошу обращаться ко мне вторник, среда, пятница.
Предложение действительно ДО 18.09.2016.    

пятница, 2 сентября 2016 г.

Лекция 1

0.Структура курса. Организация учебного процесса по курсу.
1. Декларативное и императивное программирование