Заключение.
Преобразование формы записи выражения
Lvalue (string, string, string, integer). Write («Primer vchodnich dannich:»),. Write («Podderjivaemie operacii: «),. Make_exp ('&', E1, E2, aand (E1,E2)):-!. Frontchar (S, C, Q), errors1(Q, N, C1). Make_exp ('|', E1, E2, oor (E1,E2)):-!. Wr_exp (oor (E1,E2)):-write («|»),. C=')', N1=N-1,errors1(Q, N1, C1),!. C='(', N1=N+1,errors1(Q, N1, C1),!. Errors1(string, integer, integer). Make_exp (FS… Читать ещё >
Заключение. Преобразование формы записи выражения (реферат, курсовая, диплом, контрольная)
В данной работе было рассмотрено использование естественного языка в интеллектуальных системах. Помимо этого, была спроектирована и реализована программа на языке Turbo Prolog 2.0 осуществляющая преобразования постфиксной записи выражения в префиксную.
В ходе выполнения данной работы были получены навыки программирования на языке Turbo Prolog 2.0 и знания в области искусственного интеллекта.
Список используемых источников
и литературы
- 1. Попов Э. В. «Общение с ЭВМ на естественном языке» 1982 г.
- 2. Лорьер Ж. Л. «Системы искусственного интеллекта» 1991 г.
- 3. Гаврилов А. В. «Гибридные интеллектуальные системы» 2002 г.
- 4. Инфиксные, префиксные и постфиксные выражения http://aliev.me/runestone/BasicDS/InfixPrefixandPostfixExpressions.html (дата обращения 15.05.2016).
А. Листинг программы
domains.
exp=aand (exp, exp);
oor (exp, exp);
nnot (exp);
str (string).
predicates.
expres (string, string, exp). % Для анализа 3х типов выражения.
term (string, string, exp). %терм представляющий либо имя, либо.
%выражение.
sign (string, char, string). % Определяет знак операции.
make_exp (char, exp, exp, exp). % Формирует бинарное дерево.
single (char). % Допустимые знаки операций.
var (string, string, string). % Проверка принадлежности операнда.
% символам латинского алфавита.
lvalue (string, string, string, integer).
wr_exp (exp). % Вывод выражения.
w_e (exp).
errors (string, integer, integer). %проверка на ошибки.
errors1(string, integer, integer).
if_else (integer, string).
if_else1(integer, string).
Clauses.
errors (««, 0, F1):-F1=1.
errors (««,_,_).
errors (S, F, F1):;
frontchar (S, C, Q),.
C='(', F1=0,errors (Q, F, F1),!.
errors (S, F, F1):;
frontchar (S, C, Q),.
C=')', F1=0,errors (Q, F, F1),!.
errors (S, F, F1):;
frontchar (S, C, Q),.
C='!', F1=0,errors (Q, F, F1),!.
errors (S, F, F1):;
frontchar (S, C, Q),.
C='&', F1=0,errors (Q, F, F1),!.
errors (S, F, F1):;
frontchar (S, C, Q),.
C='|', F1=0,errors (Q, F, F1),!.
errors (S, F, F1):;
frontchar (S, C, Q),.
char_int (C, I),.
I>=97,.
I<=122,F1=0,errors (Q, F, F1),!.
errors (_, F, F1):-F1=F+1.
errors1(««, 0, C1):-C1=0.
errors1(S, N, C1):;
frontchar (S, C, Q),.
C='(', N1=N+1,errors1(Q, N1, C1),!.
errors1(S, N, C1):;
frontchar (S, C, Q),.
C=')', N1=N-1,errors1(Q, N1, C1),!.
errors1(S, N, C1):;
frontchar (S, C, Q), errors1(Q, N, C1).
errors1(_, C, C1):-C1=C+10.
if_else (F,_):;
F0,write («ERRORS!!!»),!.
if_else (_, Z):;
C=0,.
R=Z,.
errors1(Z, C, C1),.
if_else1(C1,R).
if_else1(C,_):;
C0,write («NO SKOBKI!!!»),!.
if_else1(_, Y):;
expres (Y, A, B),.
write («Virajenie v prefiksnoi forme»),.
cursor (14,12),.
wr_exp (B).
expres (Str, Rest, nnot (Expr)):;
term (Str, Rest1, Expr),.
frontchar (Rest1,'!', Rest).
expres (Str, Rest, Expr):;
term (Str, Rest1, Expr1),.
expres (Rest1,Rest2,Expr2),.
sign (Rest2,FS, Rest),.
make_exp (FS, Expr1, Expr2,Expr).
expres (Str, Rest, Expr):;
term (Str, Rest, Expr).
sign (Str, FS, Rest):;
frontchar (Str, FS, Rest),.
single (FS).
Single ('&').
Single ('|').
make_exp ('&', E1, E2,aand (E1,E2)):-!.
make_exp ('|', E1, E2,oor (E1,E2)):-!.
term (Str, Rest, str (S)):;
var (Str, Rest, S),!.
term (Str, Rest, Expr):;
frontchar (Str,'(', Rest1),.
expres (Rest1,Rest2,Expr),.
frontchar (Rest2,')', Rest).
var (Str, Rest, Val):;
lvalue (Str, Rest, Val, 0),.
Val" «.
lvalue (Str, Rest, Val, N):;
frontchar (Str, FC, Rest1),.
char_int (FC, FI),.
FI>=97,.
FI<=122,N<1,!,.
N1=N+1,.
lvalue (Rest1,Rest, Val1, N1),.
Str_char (FS, FC),.
concat (FS, Val1, Val).
lvalue (Str, Str," «, 1).
wr_exp (aand (E1,E2)): — write («&»),.
w_e (E1),.
w_e (E2).
wr_exp (oor (E1,E2)):-write («|»),.
w_e (E1),.
w_e (E2).
wr_exp (nnot (E)):;
write («!»),.
w_e (E).
wr_exp (str (S)):;
w_e (str (S)).
w_e (str (S)):;
write (S).
w_e (E):;
%write («(»),.
wr_exp (E).
%write («)»).
goal.
makewindow (1,7,7," Preobrazovanie formi zapisi virajeniya", 0,0,25,80),.
cursor (1,4),.
nl,.
write («Podderjivaemie operacii: «),.
nl,.
write («koniunkzia '&'»),.
nl,.
write («dizunkzia '|'»),.
nl,.
write («otrizanie '!'»),.
nl,.
nl,.
write («Primer vchodnich dannich:»),.
nl,.
write («((fb&)a|)!»),.
nl,.
cursor (10,4),.
write («Vvedite virajenie v postfiksnoi forme»),.
cursor (11,12),.
readln (Y),.
R=Y,.
Z=Y,.
nl,.
F=0,.
errors (R, F, F1),.
if_else (F1,Z),.
nl.