Составление программ вычисления заданного арифметического выражения. Расчет параллельных узлов и общего узла по имеющейся схеме

Страницы работы

Содержание работы

Различные примеры заданий.

1)

а)Задача про телефоны

predicates

имя(symbol, symbol)

clauses

имя(вася, "23-23-23").

имя(петя, "24-23-23").

имя(варя, "25-23-23").

имя(катя, "не_имеет").

имя(тоха, "24-23-23").

имя(петя, "823-23-23").

имя(саша, "не_имеет").

имя(мент, "02").

goal

%имя (Кто,_),

%имя (мент, Телефон),

%имя (Кто, "02"),

имя (Кто, Телефон),

%Телефон <> "не_имеет",

имя (Кто1, Телефон1),

Кто<>Кто1,

Телефон=Телефон1,

Телефон<>"не_имеет",

Телефон1<>"не_имеет".

Б) “Организация турнира по теннису”

predicates       

     игрок(symbol, integer)              

     один_возраст(symbol,symbol)   

clauses

     игрок(иванов, 25).

     игрок(петров, 40).

     игрок(сидоров, 25).

     игрок(николаев, 40).

     игрок(муштаев, 25).

     один_возраст(Кто1, Кто2):-

          игрок(Кто1,Возр1),

          игрок(Кто2,Возр2),

          Возр1=Возр2,

          Кто1<>Кто2.

goal

     один_возраст(Кто1, Кто2).

2) А) Составить программу вычисления арифметического выражения.

Б)Для каждого задания написать 3 варианта программ:

            - с заданием переменных в теле программы,

            - с введением данных с клавиатуры,

- с заданием значений переменных с помощью генератора случайных чисел.

В)Используя тригонометрические функции Visual Prolog построить таблицу синусов,

    косинусов, тангенсов на экране. Левая колонка таблицы должна содержать величину 

    угла в градусах, начиная от 0 до 360 градусов с шагом 60 градусов.

Г) Написать программу:  В компании из десяти человек выбрать трех, которые побегут за  

    Клинским, чипсами, раками. Определить счастливого обладателя  приза BMW.

В16

1.  COS(3.8*Y)+lg(6.5X)-12XY6

2.  X4-ln(14) +3X2Y+1/9

а) и б)

predicates

result1(real,real)

result2(real,real)

clauses

 result1(X,Y):-

       C=cos(3.8*Y)+log(6.5*X)-12*X*exp(6*ln(Y)),

       write(C),nl.

 result2(X,Y):-

       C=exp(4*ln(X))-ln(14)+3*exp(2*ln(X))*Y+1/9,

       write(C),nl.   

goal

%write("расчет первого числа X="), result1(2,3),

%write("расчет второго числа Y="), result2(2,3).

 %write("введите первое число X="), readreal(X),

 %write("введите второе число Y="), readreal(Y),

 %write("расчет первого числа X="), result1(X,Y),

 %write("расчет второго числа Y="), result2(X,Y).

   random(X),

   random(Y),

   write("расчет первого числа X="), result1(X,Y),

   write("расчет второго числа Y="), result2(X,Y).

в)

predicates

result (real)

result1(real)

clauses

result(X):-

Y=cos(X*3.14/180),

write(X," ",Y),nl.

result1(X):-

Y=sin(X*3.14/180),

write(X," ",Y),nl.

goal

write("*Косинусы*"),nl,

result(0),

result(60),

result(120),

result(180),

result(240),

result(300),

result(360),

write("*Синусы*"),nl,

result1(0),

result1(60),

result1(120),

result1(180),

result1(240),

result1(300),

result1(360).

г).

predicates

%rand1(integer)

человек(integer,string)

clauses

человек(0,"Саша").

человек(1,"Виталя").

человек(2,"Ваня").

человек(3,"Вова").

человек(4,"Света").

человек(5,"Стас").

человек(6,"Лена").

человек(7,"Женя").

человек(8,"Андрей").

человек(9,"Наташа").

goal

randominit(4),

random(10,X),

random(10,X1),

random(10,X2),

random(10,X3),

человек(X,Y),

человек(X1,Y1),

человек(X2,Y2),

человек(X3,Y3),

write(Y,"  Идет за Клинским "),nl,

write(Y1,"  Идет за Чипсами "),nl,

write(Y2,"  Идет за Раками "),nl,

write(Y3,"  Обладает машиной BMW "),nl.

3) По имеющейся схема рассчитать параллельные узлы и общий узел

predicates

элемент (symbol, symbol, integer, integer)

общий_узел (symbol, symbol, integer)

паралельное_соединение (symbol, symbol, integer, integer)

clauses

элемент (l1, катушка, 1, 12).

элемент (r1, резистор, 1, 11).

элемент (p3, лампочка, 1, 15).

элемент (i1, источник, 1, 12).

элемент (r5, резистор, 14, 9).

элемент (r3, резистор, 11, 9).

элемент (l3, катушка, 11, 9).

элемент (r4, резистор, 14, 11).

элемент (r2, резистор, 12, 8).

элемент (c2, конденсатор, 12, 14).

элемент (p2, лампочка, 12, 9).

элемент (с1, конденсатор, 14, 15).

элемент (p1, лампочка, 8, 14).

паралельное_соединение (Э1, Э2, Узел1, Узел2) :-

элемент (Э1,_,Узел1,Узел2), элемент(Э2,_,Узел1,Узел2), Э1<>Э2;

элемент (Э1,_,Узел1,Узел2), элемент(Э2,_,Узел2,Узел1), Э1<>Э2.

общий_узел (Э1,Э2,Узел1) :-

элемент (Э1,_,Узел1,_), элемент(Э2,_,Узел1,_), Э1<>Э2;

элемент (Э1,_,Узел1,_), элемент(Э2,_,_,Узел1), Э1<>Э2;

элемент (Э1,_,_,Узел1), элемент(Э2,_,Узел1,_), Э1<>Э2;

элемент (Э1,_,_,Узел1), элемент(Э2,_,_,Узел1), Э1<>Э2.

goal

паралельное_соединение (Э1, Э2, Узел1, Узел2).

%общий_узел (Э1,Э2,Узел1).

4) А) Какие ответы даст программа, содержащая следующие факты и правила:

р(1).

р(2) : - !.

р(3).

Цели: р(Х); р(Х), р(У); р(Х), !, р(У).

Б) Составить программу решения двухступенчатой функции, используя бинарное отношение f(X,Y) ,  без применения отсечений; применив зеленые отсечения в двух первых правилах; используя красные отсечения.

Правило 1: если X<3, то Y=0.

Правило 2: если X>3 и X<6, то Y=2.

Правило 3: если  X>=6, то Y=4.

В)Составить программу определения наименьшего (наибольшего) из двух чисел (X,Y) без применения отсечений и с применением зеленых и красных отсечений.

Г)Выполнить задания согласно вариантам, используя предикаты fail, cut (!).

А) р(Х)

predicates

nondeterm  p(integer)

clauses

p(1).

p(2):-

!.

p(3).

goal

p(X).

р(Х), р(У)

predicates

p(integer)

clauses

p(1).

p(2):-

!.

p(3).

goal

p(X),

p(Y).

р), !, р)

predicates

p(integer)

clauses

p(1).

p(2):-!.

p(3).

goal

p(X),!,p(Y).

Б)

predicates

nondeterm f(integer,integer)

clauses

f(X,Y):-X<3,Y=0.

f(X,Y):-X>=3,X<6,Y=2.

f(X,Y):-X>=6,Y=4.

goal

readint (X),

f(X,Y).

predicates

nondeterm f(integer,integer)

clauses

f(X,Y):-X<3,!,Y=0.

f(X,Y):-X<6,!,Y=2.

f(X,Y):-Y=4.

goal

readint (X),

f(X,Y).

В) predicates

nondeterm сравнение(integer,integer)

clauses

сравнение(X,Y):-X>Y,write(X, "больше  чем ",Y,"\n").

сравнение(X,Y):-Y>X,write(Y, " больше  чем ",X,"\n").

сравнение(X,Y):-X=Y,write(X, " и ",Y," - равны").

goal

readint (X),

readint (Y),

сравнение(X,Y).

predicates

nondeterm сравнение(integer,integer)

clauses

сравнение(X,Y):-X>Y,!,write(X, "больше чем ",Y,"\n").

сравнение(X,Y):-Y>X,!,write(Y, "больше чем",X,"\n").

сравнение(X,Y):-write(X, " и ",Y," - равны").

goal

readint (X),

readint (Y),

сравнение(X,Y).

Г) Составить расписание всех игр (дома и в гостях) для группы из 4-х футбольных команд.

predicates

команда(integer)

игра(integer,integer)

clauses

команда(1).

команда(2).

команда(3).

команда(4).

игра(A,B):-

команда(A),

команда(B),

A<>B,

write("команда",A,"играет с командой",B,"\n"),

fail.

goal

игра(A,B).

5)А) По заданному взаимоотношению или объекту составить модель знаний в виде семантической сети и изобразить ее графически. В семантической сети должно быть не менее 7-и элементов. Каждый элемент должен характеризоваться свойствами или функциями (3 и больше).

Например, при построении семантической сети арки рассматривать свойства колон (опора 1  сделана из кирпича, опора 2 – металл, перекладина деревянная). Тогда в разделе цели возможно определить материалы требуемые для построения арки.

Б)Полученную модель знаний реализовать в виде программы на языке Prolog.

В)Составить цели (не менее 4 шт.), которые можно достигнуть по вашей модели знаний. При реализации цели должно быть задействовано как можно большее количество связей сети.

 Модель знаний:

 


Программа:

PREDICATES

nondeterm   imeetmag(symbol,symbol)

nondeterm   imeetkas(symbol,symbol)

nondeterm   imeet(symbol,symbol)

nondeterm   yavlyaetsya(symbol,symbol)

nondeterm   chto_imeetsya(symbol,symbol)

nondeterm   obslygivaet(symbol,symbol)

nondeterm   chem_yavlyaetsya(symbol,symbol)

nondeterm   otdel(symbol,symbol)

CLAUSES 

chto_imeetsya(Otdel,Prodykti):-  imeet(Otdel,Prodykti).

      imeet(ovoshnoj_otdel,pomidor).

      imeet(ovoshnoj_otdel,perec).

      imeet(ovoshnoj_otdel,ogyrec).

        imeet(myasnoj_otdel,govyadina).

        imeet(myasnoj_otdel,svinina).

        imeet(myasnoj_otdel,okorochka).

          imeet(ribnij_otdel,mintaj).

          imeet(ribnij_otdel,kita).

          imeet(ribnij_otdel,seledka).                  

obslygivaet(Otdel,Kassa):-  imeetkas(Otdel,Kassa).

   imeetkas(ovoshnoj_otdel,kassa1).

   imeetkas(myasnoj_otdel,kassa2).

   imeetkas(ribnij_otdel,kassa3).

otdel(Magazin,Otdel):-imeetmag(Magazin,Otdel).

 imeetmag(prodyktovij_magazin,ovoshnoj_otdel).

 imeetmag(prodyktovij_magazin,myasnoj_otdel).

 imeetmag(prodyktovij_magazin,ribnij_otdel).

chem_yavlyaetsya(Prodykt,Yavlyaetsya):-yavlyaetsya(Prodykt,Yavlyaetsya).

  yavlyaetsya(pomidor,ovosh).

  yavlyaetsya(perec,ovosh).

  yavlyaetsya(ogyrec,ovosh).  

    yavlyaetsya(govyadina,myaso).  

    yavlyaetsya(svinina,myaso).

    yavlyaetsya(okorochka,myaso).

      yavlyaetsya(mintaj,riba).  

      yavlyaetsya(kita,riba).

      yavlyaetsya(seledka,riba).

GOAL

   chto_imeetsya(Otdel,Prodykti).

   %obslygivaet(Otdel,Kassa).

  % otdel(Magazin,Otdel).

  %chem_yavlyaetsya(Prodykt,myaso).

Похожие материалы

Информация о работе