Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


“ е м а: ¬икористанн€ списк≥в структур




ћ е т а: Ќавчитись описувати та використовувати дл€ розвТ€зуванн€ задач списки, елементами €ких Ї структури.

« а в д а н н €:

1. ¬иконати запропонован≥ ¬ам програми дл€ задач≥ про розташуванн€ восьми ферз≥в на шахов≥й дошц≥ та дл€ задач≥ про додаванн€ двох многочлен≥в. ѕроанал≥зуйте рекурсивн≥ правила, €к≥ використовуютьс€ в цих програмах.

2. Ќехай пол€ шаховоњ дошки подан≥ парами координат у вигл€д≥ p(X,Y), де X, Y набувають значень в≥д 1 до 8.

а) ¬изначити в≥дношенн€ step_hourse(P1,P2), €ке в≥дпов≥даЇ ходу кон€ на шахов≥й дошц≥ з пол€ P1 в поле P2. ¬важайте, що поле P1 завжди задано, а поле P2 може бути не конкретизованим. Ќаприклад,

?Ц step_hourse(p(1,1),P).

P=p(3,2);

P=p(2,3)

no

б) ќписати в≥дношенн€ path_horse(Path,N), де Path Ч список перших N пол≥в, на €к≥ посл≥довно може ходити к≥нь зг≥дно правил гри по порожн≥й дошц≥. ѕерше поле в шл€хов≥ Path задано. ¬икористовуючи в≥дношенн€ path_horse, написати запит дл€ знаходженн€ дов≥льного шл€ху, €кий складаЇтьс€ ≥з чотирьох ход≥в ≥ розпочинаЇтьс€ з пол€ p(2,1), а зак≥нчуЇтьс€ на протилежн≥й сторон≥ дошки (Y=8). ÷ей шл€х п≥сл€ другого ходу повинен ще проходити через поле P(5,4).

¬ к а з ≥ в к и до виконанн€ завдань: ” завданн≥ 1 дл€ задач≥ про додаванн€ многочлен≥в попробуйте р≥зн≥ вар≥анти запит≥в, €к≥ в≥дпов≥дають р≥зним сп≥вв≥дношенн€м м≥ж степен€ми многочлен≥в.

ѕ≥д час апробац≥њ процедури дл€ предикати path_horse обмежте довжину шл€ху кон€ невеликою початковою к≥льк≥стю ход≥в, ≥накше отримаЇте пов≥домленн€ про переповненн€ рекурсивного стеку.

  о н т р о л ь н ≥ п и т а н н €:

1. Ќавести приклади опису списк≥в структур в мов≥ Turbo-Prolog.

2. ƒл€ чого в рекурсивних процедурах потр≥бно описувати граничн≥ умови?

 

 

Ћабораторна робота є 7 (4 год)

“ е м а:  еруванн€ механ≥змом перебору в PrologЦсистемах за допомогою в≥дс≥ку.

ћ е т а: ќволод≥ти прийомами використанн€ в≥дс≥ку в ѕрологЦпрограмах.

« а в д а н н €:

1. Ќаступне в≥дношенн€ розпод≥л€Ї числа на три класи Ч додатн≥, нуль та в≥дТЇмн≥:

class(Number, positive):ЦNumber>0.

class(Number, zero):ЦNumber=0.

class(Number, negative):ЦNumber<0.

«робити цю процедуру б≥льш ефективною за допомогою в≥дс≥ку.

2. ќписати процедуру devide(Numbers,Positive,Negative), €ка розбиваЇ список чисел на два списки: —писок, €кий м≥стить нев≥дТЇмн≥ числа, та список в≥дТЇмних чисел. Ќаприклад,

devide([3,-1,0,5,-2],[3,0,5],[-1,-2])

—клад≥ть два вар≥анти ц≥Їњ процедури: один з використанн€м в≥дс≥ку, другий Ч без нього.

3. ќписати в≥дношенн€, за допомогою €кого можна зд≥йснювати в≥дн≥манн€ множин:

difference(Set1, Set2, Diff)

де вс≥ три множини подаютьс€ у вигл€д≥ списк≥в. Ќариклад,

difference([a,b,c,d], [b,d,e,f], [a,c])

4. Ќаписати процедуру un(L1,L2,L) злитт€ двох впор€дкованих списк≥в L1 ≥ L2 у трет≥й список L. Ќаприклад,

?- un([2,5,6,6,8],[1,3,5,9],L)

L=[1,2,3,5,5,6,6,8,9]

  о н т р о л ь н ≥ п и т а н н €:

1. як можна обмежити т≥ розгалуженн€ в рекурсивних алгоритмах, на €ких зав≥домо не можна отримати в≥дпов≥д≥ розвТ€зуваноњ задач≥?

2. ¬ €к≥й м≥р≥ в≥дс≥к Ї аналогом розгалуженн€ в мовах процедурного типу?

3. як в мов≥ ѕролог вводитьс€ в розгл€д пон€тт€ запереченн€?

 

Ћабораторна робота є 8 (2 год)





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-10-01; ћы поможем в написании ваших работ!; просмотров: 315 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

≈сли вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получитс€ - вы тоже правы. © √енри ‘орд
==> читать все изречени€...

1344 - | 1368 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.013 с.