Программирование в Логике. Чанышев О.Г. - 10 стр.

UptoLike

Составители: 

19
[GLOBAL]DATABASE[-<databasename>]/*раздел определе-
ния данных, хранящихся в оперативной памяти*/
[determ] pred1(....)
pred2(.....)
%Пример:
term(integer,string,real,name)
GLOBAL PREDICATES /* раздел объявления глобальных
"процедур"*/
[determ|nondeterm] pred1(.........) -(i,i,o,..)(i,o,i,..)[language
c|pascal|fortran] [ as "name" ] pred2(........)
%Пример:
main_calc(integer,real,real,string) – (i,i,i,o)
my_predict
make_NewString(string,string,string) – (i,i,o)
PREDICATES /* раздел объявления локальных "процедур"*/
[determ|nondeterm] pred1(.........)
pred2(........)
%Пример:
calc2(integer,real,real,string)
nondeterm calc3(integer,real,real,string)
Goal /*аналог процедуры main в языке C*. Вся программа
может состоять только из раздела Goal /
%Пример:
Goal
InpStr = "Отредактировать эту строку",
edit(InpStr,OutStr),
file_str("primer.txt",InpStr2),
concat(OutStr,InpStr2,S3),
edit(S3,_).
CLAUSES /*раздел правил или определения "процедур"*/
p(....):-p1(...), p2(.....), ... .
20
%Пример1: Только конъюнкция
edit_3(InpStr1,InpStr2,OutStr):-
concat(InpStr1,InpStr2,InpStr),
edit(InpStr,OutStr).
%Пример2: Конъюнкция и дизъюнкция
edit_3(InpStr1,InpStr2,OutStr):-
InpStr2<>"Не присоединять",!,
concat(InpStr1,InpStr2,InpStr),
edit(InpStr,OutStr);
!,edit(InpStr1,OutStr);
include "filename" % включение файла во время компиляции
Пример:
include "modul1.pro"
Отметим, что Turbo Prolog располагает достаточной для ре-
шения большинства задач библиотекой математических функций.
3.2. Свободные и связанные переменные
Вызывая некоторый предикат с N переменными, части из
них вы можете задать значения, другимнет. Первые
это пара-
метры, или связанные переменные, последниесвободные пере-
менные, которые в процессе вычисления должны получить значе-
ния.
Пример:
..
деление(17,Rezult),
..
деление(D,Rezult):-Rezult = (27-10)/D.
Или:
..
delenie_plus(17,Rezult),
..
delenie_plus(D,Rezult):-
P1=27-10,
      [GLOBAL]DATABASE[-]/*раздел определе-                       %Пример1: Только конъюнкция
ния данных, хранящихся в оперативной памяти*/                                   edit_3(InpStr1,InpStr2,OutStr):-
      [determ] pred1(....)                                                      concat(InpStr1,InpStr2,InpStr),
      pred2(.....)                                                              edit(InpStr,OutStr).

      %Пример:                                                                  %Пример2: Конъюнкция и дизъюнкция
      term(integer,string,real,name)                                            edit_3(InpStr1,InpStr2,OutStr):-
                                                                                InpStr2<>"Не присоединять",!,
      GLOBAL PREDICATES /* раздел объявления глобальных                         concat(InpStr1,InpStr2,InpStr),
"процедур"*/                                                                    edit(InpStr,OutStr);
      [determ|nondeterm] pred1(.........) -(i,i,o,..)(i,o,i,..)[language        !,edit(InpStr1,OutStr);
c|pascal|fortran] [ as "name" ] pred2(........)                                 include "filename" % включение файла во время компиляции
      %Пример:                                                                  Пример:
      main_calc(integer,real,real,string) – (i,i,i,o)                           include "modul1.pro"
      my_predict
      make_NewString(string,string,string) – (i,i,o)                            Отметим, что Turbo Prolog располагает достаточной для ре-
                                                                           шения большинства задач библиотекой математических функций.
      PREDICATES /* раздел объявления локальных "процедур"*/
      [determ|nondeterm] pred1(.........)                                       3.2. Свободные и связанные переменные
      pred2(........)
                                                                                Вызывая некоторый предикат с N переменными, части из
                                                                           них вы можете задать значения, другим – нет. Первые – это пара-
      %Пример:
                                                                           метры, или связанные переменные, последние – свободные пере-
      calc2(integer,real,real,string)
                                                                           менные, которые в процессе вычисления должны получить значе-
      nondeterm calc3(integer,real,real,string)
                                                                           ния.
     Goal /*аналог процедуры main в языке C*. Вся программа
                                                                                Пример:
может состоять только из раздела Goal /
                                                                                ..
     %Пример:
                                                                                деление(17,Rezult),
     Goal
                                                                                ..
     InpStr = "Отредактировать эту строку",
                                                                                деление(D,Rezult):-Rezult = (27-10)/D.
     edit(InpStr,OutStr),
     file_str("primer.txt",InpStr2),
                                                                                Или:
     concat(OutStr,InpStr2,S3),
                                                                                ..
     edit(S3,_).
                                                                                delenie_plus(17,Rezult),
                                                                                ..
      CLAUSES /*раздел правил или определения "процедур"*/
                                                                                delenie_plus(D,Rezult):-
      p(....):-p1(...), p2(.....), ... .
                                                                                P1=27-10,

                                  19                                                                       20