[Закрыть]
 
popoff.donetsk.ua
Бутерброд с помидором похож на безногого паука, помещённого между двумя картинами Пикассо.
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Функциональное и логическое программирование - ПРОЛОГ (вопрос)

ПРОЛОГ (вопрос)

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Топик закрыт

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
xalesya
Алеся
Июн, 2005
Сообщений: 6
xalesya url://forum.message:417
ПРОЛОГ (вопрос)

Юрий Васильевич! подскажите пожалуйста по  2 лабораторке (4 вариант)
запрос:
- есть ли языки у которых более 4 трансляторов.
Как вывести список языков у которых вообще есть трансляторы - понятно , а как вывести список языков у которых именно более 4-х трансляторов ?
Как посчитать или внести в условие запроса эту фразу? Чем осуществлять подсчет трансляторов и как?

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:418

запрос:
- есть ли языки у которых более 4 трансляторов.
как вывести список языков у которых именно более 4-х трансляторов ?


Вам нужно описать отдельным предикатом набор фактов, в которых Вы для каждого языка скажете, сколько существует разных трансляторов.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
xalesya
Алеся
Июн, 2005
Сообщений: 6
xalesya url://forum.message:419

спасибо огромное! не ожидала (если честно) такой оперативности
так ли я поняла?   
        
       (кусок, касающийся именно этого запроса):

domains

    

name=symbol                      /*название языка*/
    kol=integer                      /*количество трансляторов*/

predicates

    

transl(name,kol)
    zap(name)                        /*предикат запроса*/

clauses

    

transl(«Си»,3).                  /*факты*/
    transl(«Макроассемблер»,3).
    transl(«Пролог»,2).
    
    zap(Name):-transl(Name,Kol),Kol>=4.  /*формулировка запроса*/

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:420

так, только это:

zap(Name):-transl(Name,Kol),Kol>=4. /*формулировка запроса*/

не запрос, а правило.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.
xalesya
Алеся
Июн, 2005
Сообщений: 6
xalesya url://forum.message:421

Спасибо за оперативный ответ и помощь!
Да, согласна, ошиблась, просто я правило (в данном случае) воспринимаю как шаблон запроса, поэтому так и написала, впредь постараюсь овладеть терминологией .
спасибо еще раз

xalesya
Алеся
Июн, 2005
Сообщений: 6
xalesya url://forum.message:429

Юрий Васильевич! Подскажите, пожалуйста, а запрос:

«-какие языки имеют только один интерпретатор, и в какой ОС?»

так можно сделать:

realization(«Бейсик», Basic-80, «И», MS, CP/M).
realization(«Бейсик», Quick Basic, «К», MS, MS-DOS).
realization(«Бейсик», True Basic, «К», True Basic, Apple).
realization(GPSS, GPSS/PC, «И», Minuteman Software, PC-DOS).
realization(«Смолток», Smalltalk-80, «К», Apple, Apple).
realization(«Смолток», Smalltalk PC, «К», Software Systems, MS-DOS).
realization(«Лисп», Lisp, «К», MS, MS-DOS).
realization(«Лисп», Mulisp-85, «И», MS, MS-DOS).
realization(«Пролог», Turbo Prolog, «К», Borland, MS-DOS).
realization(«Пролог», Prolog/m, «К», Chalcedony Software, Macintosh).

kolint(«Бейсик»,1).
kolint(GPSS,1).
kolint(«Смолток»,0).
kolint(«Лисп»,1).
kolint(«Пролог»,0).
        
        interp(string,string):-kolint(string,1),realization(string,_,_,_,string).

В смысле сработает ли это?

или это:
domains  
name,os=symbol
,
... описать потом в предикатах, а потом
clauses
interp(name,os):-kolint(name,1),realization(name,_,_,_,os).

причем утверждения в запросе используются разные и  kolint и realization,
т.е. мне надо передавать в кач-ве аргумента от одного утверждения  последующему - имена языков, как это сделать?
или как-то это можно сделать иначе?

а по поводу запроса:
-фирмы, которые имеют больше чем один транслятор для одного языка программирования ( с указанием транслятора и его типа).
Там указывать  в фактах фирму, язык, количество трансляторов? а в правилах использовать это утверждение с количеством трансляторов=1 и следующим утверждением выводить список фирм
realization(_,L,T,F,_)
или можно проще как-то?

popoff
Yuri
Июл, 2004
Сообщений: 923
popoff url://forum.message:430

interp(string,string):-kolint(string,1),realization(string,_,_,_,string).

interp(name,os):-kolint(name,1),realization(name,_,_,_,os).

имена переменных в прологе пишутся с большой буквы. с маленькой буквы записываются строковые константы.

видимо, вы имели в виду следующее:interp(Name,Os):-kolint(Name,1),realization(Name,_,_,_,Os).

~~~~~ 7 Июн 2005, 17:46 ~~~~~

а по поводу запроса:
-фирмы, которые имеют больше чем один транслятор для одного языка программирования ( с указанием транслятора и его типа).
Там указывать в фактах фирму, язык, количество трансляторов? а в правилах использовать это утверждение с количеством трансляторов=1 и следующим утверждением выводить список фирм
realization(_,L,T,F,_)
или можно проще как-то?

весьма сумбурная формулировка, но если я настрою свои антенны и прочитаю Ваши мысли, то, наверное, проще нельзя.

________________________________
Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить.

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Старый >>  |  Топик закрыт
Вход
Поиск[?]:
Personal Photo.сайт:
www.denisey.com.ua