Обсуждение участника:Vitaly~ruwikiversity
Добавить темуКомплекс лабораторных заданий для студентов ВУЗа
[править]Лабораторное занятие №1
[править]Задания к к ЛЗ № 1
[править]Задание № 1
[править]Перед запуском tuProlog необходимо проработать материал "Руководства по tuProlog".
Электронный вариант пособия - [1].
Материал для проработки Глава 4 параграфы 1 и 2.
Отводимое время - 20 мин
Задание № 2
[править]После усвоения теоретического материала необходимо запустить tuProlog
Открыть примеры программ
Последовательно запуская каждую - определить их особенности
Выводы отразить в отчете.
Отводимое время 10 - 15 мин
Примеры к ЛЗ № 1
[править]Пример №1
[править]'русангл'('мама',mammy).
'русангл'('небо',sky).
'русангл'('солнце',sun).
'русангл'('мальчик',boy).
'русангл'('круг',ring).
Пример №2
[править]'родитель'('Тамара','Наталья').
'родитель'('Надежда','Павел').
'родитель'('Александр','Павел').
'родитель'('Надежда','Вика').
Лабораторное занятие №2
[править]Задания к ЛЗ №2
[править]Задание 1
[править]Загрузите программу LZ2TP1.PL.
Изучите ее структуру и проверьте работоспособность.
На основе данной программы создайте свою авторскую программу.
Задание 2
[править]Поочередно загрузите программы LZ2TP2.PL и LZ2TP3.PL.
Изучите их структуру и проверьте работоспособность.
Определите какие структуры реализованы в данных программах.
Задание 3
[править]Загрузите программу LZ2TP4.PL.
Изучите ее структуру и проверьте работоспособность.
Определите как в данной программе.
Примеры к ЛЗ № 2
[править]Программа LZ2TP1.PL
[править]predicates
likes(symbol,symbol) - nondeterm (i,i)
clauses
likes(ellen,tennis).
likes(john,football).
likes(tom,baseball).
likes(eric,swimming).
likes(mark,tennis).
likes(bill,Activity):-
likes(tom, Activity).
goal
likes(bill,baseball).
Программа LZ2TP2.PL
[править]predicates
can_buy(symbol,symbol) - nondeterm (o,o)
person(symbol) - nondeterm (o)
car(symbol) - nondeterm (o)
likes(symbol,symbol) - nondeterm (i,i)
for_sale(symbol) - nondeterm (i)
clauses
can_buy(X,Y):-
person(X),
car(Y),
likes(X,Y),
for_sale(Y).
person(kelly).
person(judy).
person(ellen).
person(mark).
car(lemon).
car(hot_rod).
likes(kelly, hot_rod).
likes(judy, pizza).
likes(ellen, tennis).
likes(mark, tennis).
for_sale(pizza).
for_sale(lemon).
for_sale(hot_rod).
goal
can_buy(Who,What).
Программа LZ2TP3.PL
[править]predicates
likes(symbol,symbol) - nondeterm (o,i), nondeterm (i,i)
clauses
likes(ellen,reading).
likes(john,computers).
likes(john,badminton).
likes(leonard,badminton).
likes(eric,swimming).
likes(eric,reading).
goal
likes(Person,reading),
likes(Person,swimming).
Программа LZ2TP4.PL
[править]predicates
мужчина(symbol)
женщина(symbol)
родитель(symbol,symbol)- nondeterm (o,i)
clauses
мужчина(петя).
мужчина(вова).
женщина(ира).
женщина(юля).
родитель(петя,вова).
родитель(ира,вова).
родитель(вова,юля).
goal
родитель(Папа,юля).
Лабораторное занятие №3
[править]Задания к ЛЗ №2
[править]Задание 1
[править]Загрузите программу LZ3TP1.PL.
Изучите ее структуру и проверьте работоспособность.
Обратите каким образом выводится информация в данной программе, используются ли специальные предикаты ввода/вывода.
Задание 2
[править]Поочередно загрузите программы LZ3TP2.PL и LZ3TP3.PL.
Изучите их структуру и проверьте работоспособность.
Определите какие предикаты используются для вывода информации.
Задание 3
[править]Загрузите программу LZ3TP4.PL.
Изучите ее структуру и проверьте работоспособность.
Определите как в данной программе осуществляется ввод информации.
Примеры к ЛЗ № 3
[править]Программа LZ3TP1.PL
[править]predicates
reshenie(real)
resheniea(real)
reshenieb(real)
clauses
reshenie (X):-
X=sin(3.141592653).
resheniea(Y):-
Y=cos(3.141592653).
reshenieb(V):-
V=exp(2.5).
goal
reshenie (X),
resheniea(Y),
reshenieb(V).
Программа LZ3TP2.PL
[править]domains
treetype = tree(string, treetype, treetype) ; empty()
predicates
peresechenie(treetype) - procedure (i)
clauses
peresechenie (empty).
peresechenie (tree(Name,Left,Right)):-
write(Name,'\n'),
peresechenie (Left),
peresechenie (Right).
goal
peresechenie (tree("Cathy",
tree("Michael",
tree("Charles", empty, empty),
tree("Hazel", empty, empty)),
tree("Melody",
tree("Jim", empty, empty),
tree("Eleanor", empty, empty)))).
Программа LZ3TP3.PL
[править]domains
treetype = tree(string,treetype,treetype) ; empty()
predicates
sozdanie_tree(string,treetype) - procedure (i,o)
vstavka_left(treetype,treetype,treetype) - determ (i,i,o)
vstavka_right(treetype,treetype,treetype) - determ (i,i,o)
run - determ ()
clauses
sozdanie_tree(A,tree(A,empty,empty)).
vstavka_left(X,tree(A,_,B),tree(A,X,B)).
vstavka_right(X,tree(A,B,_),tree(A,B,X)).
run:-
sozdanie_tree("Charles",Ch),
sozdanie_tree("Hazel",H),
sozdanie_tree("Michael",Mi),
sozdanie_tree("Jim",J),
sozdanie_tree("Eleanor",E),
sozdanie_tree("Melody",Me),
sozdanie_tree("Cathy",Ca),
vstavka_left(Ch, Mi, Mi2),
vstavka_right(H, Mi2, Mi3),
vstavka_left(J, Me, Me2),
vstavka_right(E, Me2, Me3),
vstavka_left(Mi3, Ca, Ca2),
vstavka_right(Me3, Ca2, Ca3),
write(Ca3,'\n').
goal
run.
Программа LZ3TP4.PL
[править]domains
chartree = tree(char, chartree, chartree); end
predicates
do(chartree) - nondeterm (i)
dejstvie(char,chartree,chartree) - determ (i,i,o)
sozdanie_tree(chartree,chartree) - procedure (i,o)
vstavka (char,chartree,chartree) - procedure (i,i,o)
write_tree(chartree) - procedure (i)
repeat - nondeterm ()
clauses
do(Tree):-
repeat,nl,
write("*******************************************************"),nl,
write("Enter 1 to update tree\n"),
write("Enter 2 to show tree\n"),
write("Enter 7 to exit\n"),
write("*******************************************************"),nl,
write("Enter number - "),
readchar(X),nl,
dejstvie (X, Tree, NewTree),
do(NewTree).
dejstvie ('1',Tree,NewTree):-
write("Enter characters or # to end: "),
sozdanie_Tree(Tree, NewTree).
dejstvie ('2',Tree,Tree):-
write_Tree(Tree),
write("\nPress a key to continue"),
readchar(_),nl.
dejstvie ('7', _, end):-
exit.
sozdanie_Tree(Tree, NewTree):-
readchar(C),
C<>'#',!,
write(C, " "),
vstavka (C, Tree, TempTree),
sozdanie_Tree(TempTree, NewTree).
sozdanie_Tree(Tree, Tree).
vstavka (New,end,tree(New,end,end)):-!.
vstavka (New,tree(Element,Left,Right),tree(Element,NewLeft,Right)):-
New<Element,!,
vstavka (New,Left,NewLeft).
vstavka (New,tree(Element,Left,Right),tree(Element,Left,NewRight)):-
vstavka (New,Right,NewRight).
write_Tree(end).
write_Tree(tree(Item,Left,Right)):-
write_Tree(Left),
write(Item, " "),
write_Tree(Right).
repeat.
repeat:-repeat.
goal
write("*************** Character tree sort *******************"),nl,
do(end).
Комплекс лабораторных заданий для учеников средних общеобразовательных учреждений
[править]Типы заданий
[править]¤ Дан определенный фрагмент программы, необходимо придерживаясь условия задачи дописать ее;
¤ Дана не рабочая программа, необходимо руководствуясь условием задачи исправить ошибки и привести ее в работоспособное состояние;
¤ Дана программа, необходимо расширить ее функциональность, путем добавления в нее новых конструкций.
Набор задач
[править]Наибольший общий делитель
[править]нод(a,a,a).
нод(a,b,c):-БОЛЬШЕ(a,b),нод(#a-b#,b,c).
нод(a,b,c):-БОЛЬШЕ(b,a),нод(a,#b-a#,c).
? - нод(256,96,x).
Число Фибоначчи
[править]fib(1,0,1):-!.
fib(N,G,F):- СЛОЖЕНИЕ(I,1,N),fib(I,H,G),СЛОЖЕНИЕ(H,G,F).
fi(L,K):-fib(L,_,K),!.
? - fi(25,q).
Квадратный корень
[править]sqrt(0,0):-!.
sqrt(1,1):-!.
sqrt(x,y):-sqrt1(x,y,1.).
sqrt1(x,y,a):-РАВНО(#(x/a-a)/2.#,z),abs(z,b),БОЛЬШЕ(#b/a#,0.000005),!,sqrt1(x,y,#a+z#).
sqrt1(x,a,a).
abs(x,y):-МЕНЬШЕ(x,0),!,РАВНО(y,#-1*x#).
abs(x,x).
? - sqrt(17.35,q).
Укладка ранца
[править]ranez([a|B],c,[a|D]):-НЕ(БОЛЬШЕ(a,c)),ranez(B,#c-a#,D).
ranez([_|B],c,D):-ranez(B,c,D).
ranez([],0,[]).
? - ranez([1,3,6,5,2,3,4,7,9,13,15,17,19],20,V).
Волк, коза и капуста
[править]перевоз([],на_правом',справа,история'):-решение([[[],на_правом',справа]|история']),!.
перевоз(на_левом',на_правом',слева,история'):-
РАВНО([на_левом',на_правом',слева],запись'),НЕ(элемент(запись',история')),
выделить(в_лодку',на_левом',ост_слева'),можно(ост_слева'),
перевоз(ост_слева',[в_лодку'|на_правом'],справа,[запись'|история']).
перевоз(на_левом',на_правом',справа,история'):-можно(на_правом'),
РАВНО([на_левом',на_правом',справа],запись'),НЕ(элемент(запись',история')),
перевоз(на_левом',на_правом',слева,[запись'|история']).
перевоз(на_левом',на_правом',справа,история'):-
РАВНО([на_левом',на_правом',справа],запись'),НЕ(элемент(запись',история')),
выделить(в_лодку',на_правом',ост_справа'),можно(ост_справа'),
перевоз([в_лодку'|на_левом'],ост_справа',слева,[запись'|история']).
можно([волк,капуста]).
можно([капуста,волк]).
можно([л]).
можно([]).
выделить(Элемент',[Элемент'|Остальные'],Остальные').
выделить(Элем',[ДрЭлем'|Спис'],[ДрЭлем'|ДрСпис']):-выделить(Элем',Спис',ДрСпис').
элемент(х,[х|_]).
элемент(х,[_|у]):- элемент(х,у).
присоединить([],a,a).
присоединить([x|a],b,[x|c]):-присоединить(a,b,c).
обращение([],[]).
обращение([a|b],x):- обращение(b,c),присоединить(c,[a],x).
решение(а):-обращение(а,б),печать(б).
печать([]).
печать([[а,б,в]|г]):-ВЫВОД("Слева ",а,", Справа ",б,", Лодка - ",в),печать(г).
? - перевоз([волк,коза,капуста],[],слева,[]).
Ваша учётная запись будет переименована
[править]Здравствуйте!
В рамках мероприятий, направленных на улучшение работы пользователей и предоставление им новых инструментов (например, межпроектных уведомлений), команда разработчиков Викимедиа внесла изменения в принципы работы учётных записей. В результате этих изменений у вас будет одинаковое имя учётной записи во всех проектах. Это позволит предоставить вам новые возможности, которые улучшат процессы редактирования и обсуждения, а также обеспечат более гибкий доступ к инструментарию. Один из побочных эффектов заключается в том, что все учётные записи должны быть уникальными во всех 900 вики-проектах. Более подробно см. в объявлении.
К сожалению, ваша учётная запись конфликтует с другой учётной записью, которая также имеет имя Vitaly. Для того, чтобы вы и далее могли одновременно принимать участие в проектах Викимедиа, мы собираемся переименовать вашу учётную запись в Vitaly~ruwikiversity. Это переименование будет выполнено в апреле 2015 года, одновременно с переименованием ряда других учётных записей. Если вы считаете, что все учётные записи с этим именем могли принадлежать вам, и это сообщение ошибочно, пожалуйста, посетите Служебная:Объединение_учётных_записей, чтобы проверить и закрепить их за собой в целях предотвращения переименования.
Ваша учётная запись будут работать как и прежде, с сохранением истории прошлых правок. Однако при очередном входе в систему вы должны будете использовать новое имя своей учётной записи. Если оно вам не нравится, вы можете запросить переименование.
Приношу извинения за доставленные неудобства.
Yours,
Keegan Peterzell
Community Liaison, Wikimedia Foundation
08:08, 20 марта 2015 (UTC)
Учётная запись переименована
[править]Эта учётная запись была переименована в рамках финальной стадии процесса перехода на единую учётную запись. Если она принадлежит вам, можете войти в систему с использованием старого имени пользователя и пароля для получения дополнительных сведений. Если вам не нравится новое имя учётной записи, то после входа в систему вы можете выбрать другое при помощи формы Служебная:Запрос на глобальное переименование. -- Keegan (WMF) (talk)
10:38, 19 апреля 2015 (UTC)