Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 2 Syntax and meaning of Prolog Programs. 344-302 LP and Prolog Chapter 22 PROLOG domains variable name = type predicates relation(variable name,

Similar presentations


Presentation on theme: "Chapter 2 Syntax and meaning of Prolog Programs. 344-302 LP and Prolog Chapter 22 PROLOG domains variable name = type predicates relation(variable name,"— Presentation transcript:

1 Chapter 2 Syntax and meaning of Prolog Programs

2 344-302 LP and Prolog Chapter 22 PROLOG domains variable name = type predicates relation(variable name, variable name, … ) goal run(X). clauses relation(value,value, … ). conclusion :- condition. conclusion if condition. type symbol, integer, real, char

3 344-302 LP and Prolog Chapter 23 TURBO PROLOG ftp://172.28.80.6/older/DosProgram/TPROLOG Alt + Enter = Big Screen F1 : Help F2 : Save F3 : Load F6 : Next/Switch F8 : Previous Goal F9 : Compile F10 : Step (For trace) / End Alt + T : Trace ON/OFF Set up  window size  edit Use arrow key to adjust the size

4 344-302 LP and Prolog Chapter 24 char1 byte characters integer2 byte integer numbers real8 byte floating point numbers symbolstrings inserted in the internal symbol table stringsequences of chars "hello world\n" PREDEFINED DOMAINS

5 344-302 LP and Prolog Chapter 25 SUMMARY OF PROGRAM SECTIONS Options must precede the other sections CONSTANTS const1 = definition const2 = definition [GLOBAL] DOMAINS dom [,dom] = [reference] declaration1; declaration2 listdom = dom* dom = [GLOBAL] DATABASE [ - ] [determ] pred1(....) pred2(.....) GLOBAL PREDICATES [determ|nondeterm] pred1(.........) -(i,i,o,..)(i,o,i,..) [ language c|pascal|fortran ] [ as "name" ] pred2(........) PREDICATES [determ|nondeterm] pred1(.........) pred2(........) CLAUSES p(....):-p1(...), p2(.....),.... include "filename" Include a file during compilation.

6 344-302 LP and Prolog Chapter 26 MISCELLANEOUS random(RealVariable) (real) - (o) random(MaxValue,RandomInt) (integer,integer) - (i,o) sound(Duration,Frequency) (integer,integer) - (i,i) beep date(Year,Month,Day) (integer,integer,integer) - (o,o,o) (i,i,i) time(Hours,Minutes,Seconds,Hundredths) (integer,integer,integer,integer) - (o,o,o,o) (i,i,i,i) trace(on/off) (string) - (i) (o)

7 344-302 LP and Prolog Chapter 27 ERROR & BREAK CONTROL trap (PredicateCall,ExitCode,Predicate ToCallOnError) exit exit (ExitCode) (integer) - (i) if exit to DOS then the DOS errorlevel task processing variable will contain the value given to the exit predicate. break (on/off) (string) - (i) (o)

8 344-302 LP and Prolog Chapter 28 EDITOR display(String) (string) - (i) edit(InputString,OutputString) (string,string) - (i,o) edit(InputString,OutputString,Headstr,Headstr2,Msg,P os,Helpfilename, EditMode,Indent,Insert,TextMode,RetPos,RetStatus) (string,string,string,string,string,integer,string,integer,integer,integer,integer,integer,integer) - (i,o,i,i,i,i,i,i,i,i,i,o,o) If the user saves the text from the editor, HeadStr2 will be used as the file name. editmsg(InputString,OutputString,Headstr,Headstr2,Ms g,Pos,Helpfilename,RetStatus) (string,string,string,string,string,integer,string,integer)- (i,o,i,i,i,i,i,o)

9 344-302 LP and Prolog Chapter 29 WINDOW SYSTEM makewindow(WindowNo,ScrAtt,FrameAtt,Framestr,Row,Col umn,Height,Width) (integer,integer,integer,string,integer,integer,in teger,integer) shiftwindow(WindowNo) (integer) - (i) (o) gotowindow(WindowNo) (integer) - (i) resizewindow(StartRow,NoOfRows,StartCol,NoOfCols) (integer,integer,integer,integer) - (i,i,i,i) colorsetup(Main_Frame) (integer) - (i)

10 344-302 LP and Prolog Chapter 210 INPUT readln(StringVariable) (string) - (o) readint(IntgVariable) (integer) - (o) readreal(RealVariable) (real) - (o) readchar(CharVariable) (char) - (o) keypressed unreadchar(CharToBePushedBack) (Char) - (i) readterm( Domain, Variable ) (DomainName,Domain) - (i,_)

11 344-302 LP and Prolog Chapter 211 OUTPUT write( Variable|Constant * ) nl writef( FormatString, Variable|Constant* ) In the format string the following options are known after a percentage sign: %d Normal decimal number. (chars and integers) %u As an unsigned integer. (chars and integers) %R As a database reference number. (database reference numbers) %X As a long hexadecimal number. (strings, database reference numb). %x As a hexadecimal number. (chars and integers). %s Strings. (symbols and strings). %c As a char. (chars and integers). %g Reals in shortest posible format (default for reals) %e Reals in exponetial notation %f Reals in fixed notation %lf Only for C compatibility (fixed reals) \n - newline \t - tabulator \nnn - character with code nnn

12 344-302 LP and Prolog Chapter 212 PROLOG_HELP ARITHMETIC Arithmetic operators: +, -, *, /, mod, div Relational operators: >, =,, >< Functions: sin, cos, tan, arctan, ln, log, exp, sqrt, round, trunc, abs EX: 1 + 2 = 2 + 1, X = 5/2, X = 5 mod 2, 5 <> 9

13 344-302 LP and Prolog Chapter 213 TURBO PROLOG Use the example from the EXAMPLE directory to try to program. Start with EX03EX01.PRO predicates likes(symbol,symbol) clauses likes(ellen, tennis). likes(john, football). FACTS likes(tom, baseball). likes(eric, swimming). likes(mark, tennis). likes(bill, Activity) if likes(tom, Activity). likes(mark, Activity) :- likes(ellen, Activity). RULES

14 344-302 LP and Prolog Chapter 214 bear.pro predicates big(symbol) small(symbol) brown(symbol) black(symbol) gray(symbol) dark(symbol) clauses big(bear). big(elephant). small(cat). brown(bear). black(cat). gray(elephant). dark(Z) :- black(Z). dark(Z) :- brown(Z). ?black(X),big(X) ?brown(X),big(X) ?big(X),black(X) ?black(X),big(X) No solution ?brown(X),big(X) X=bear ?big(X),black(X) No solution

15 344-302 LP and Prolog Chapter 215 EX04EX02.PRO domains brand, color = symbol age, price = integer mileage = real predicates car(brand, mileage, age, color, price) clauses car(chrysler, 130000, 3, red, 12000). car(ford, 90000, 4, gray, 25000). car(datsun, 8000, 1, red, 30000).

16 344-302 LP and Prolog Chapter 216 SUM, MULTIPLY : EX04EX01 domains product, sum = integer predicates add_em_up(sum, sum, sum) multiply_em(product, product, product) clauses add_em_up(X, Y, Sum) :- Sum = X + Y. multiply_em(X, Y, Product) :- Product = X * Y.

17 344-302 LP and Prolog Chapter 217 sister Z X Y parent sister For any X and Y, X is a sister of Y if 1. Both X and Y have the same parent, and 2. X is a female. sister(X,Y) :- parent(Z,X), parent(Z,Y), female(X).

18 344-302 LP and Prolog Chapter 218 predecessor A B C E D parent

19 344-302 LP and Prolog Chapter 219 predecessor A B C E D predecessor(X,Z) :- parent(X,Y), parent(Y,Z). parent predecessor(X,Z) :- parent(X,Y1), parent(Y1,Y2), parent(Y2,Z). predecessor(X,Z) :- parent(X,Y1), parent(Y1,Y2), parent(Y2,Y3), parent(Y3,Z).

20 344-302 LP and Prolog Chapter 220 Parent1.Pro predicates parent(symbol,symbol) predecessor(symbol,symbol) clauses parent(pam,bob). parent(tom,bob). parent(bob,ann). parent(ann,jim). parent(jim,joe). parent(joe,john). parent(john,jack). parent(tom,liz). predecessor(X,Z) :- parent(X,Z). predecessor(X,Z) :- parent(X,Y), parent(Y,Z). predecessor(X,Z) :- parent(X,Y1),parent(Y1,Y2),parent(Y2,Z). predecessor(X,Z) :- parent(X,Y1),parent(Y1,Y2),parent(Y2,Y3) parent(Y3,Z). annbobpam jim john joe jack

21 344-302 LP and Prolog Chapter 221 predecessor A B C E D parent For all X and Z, X is a predecessor of Z if there is a Y such that 1. X is a parent of Y and 2. Y is a predecessor of Z.

22 344-302 LP and Prolog Chapter 222 Parent2.Pro predecessor(X,Z) :- parent(X,Z). predecessor(X,Z) :- parent(X,Y), predecessor(Y,Z). predicates parent(symbol,symbol) predecessor(symbol,symbol) clauses parent(pam,bob). parent(tom,bob). parent(bob,ann). parent(ann,jim). parent(jim,joe). parent(joe,john). parent(john,jack). parent(tom,liz).

23 344-302 LP and Prolog Chapter 223 ISA Relationship Animal kingdom Plant kingdom AnimalHuman DogCat Toop Suwit Mew Sunee plant Flower RoseCarnation isa

24 344-302 LP and Prolog Chapter 224 isa1.Pro is(X,Z) :- isa(X,Z). is(X,Z) :- isa(X,Y), is(Y,Z). predicates isa(symbol,symbol) is(symbol,symbol) clauses isa(human,animal_kingdom). isa(plant,plant_kingdon). isa(flower,plant). isa(rose,flower). isa(carnation,flower). isa(suwit,human). isa(sunee,human). isa(dog,animal). isa(animal,animal_kingdom). isa(cat,animal). isa(toop,dog). isa(mew,cat). isa(white,cat). For all X and Z, X is a predecessor of Z if there is a Y such that 1. X is a parent of Y and 2. Y is a predecessor of Z.

25


Download ppt "Chapter 2 Syntax and meaning of Prolog Programs. 344-302 LP and Prolog Chapter 22 PROLOG domains variable name = type predicates relation(variable name,"

Similar presentations


Ads by Google