Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 7 Turbo Prolog Chapter 7 Turbo Prolog 323-670 Artificial Intelligence ดร. วิภาดา เวทย์ประสิทธิ์ ภาควิชาวิทยาการคอมพิวเตอร์ คณะ วิทยาศาสตร์ มหาวิทยาลัยสงขลานครินทร์

Similar presentations


Presentation on theme: "Chapter 7 Turbo Prolog Chapter 7 Turbo Prolog 323-670 Artificial Intelligence ดร. วิภาดา เวทย์ประสิทธิ์ ภาควิชาวิทยาการคอมพิวเตอร์ คณะ วิทยาศาสตร์ มหาวิทยาลัยสงขลานครินทร์"— Presentation transcript:

1 Chapter 7 Turbo Prolog Chapter 7 Turbo Prolog 323-670 Artificial Intelligence ดร. วิภาดา เวทย์ประสิทธิ์ ภาควิชาวิทยาการคอมพิวเตอร์ คณะ วิทยาศาสตร์ มหาวิทยาลัยสงขลานครินทร์

2 323-670 Artificial Intelligence Lecture 20-22Page 2 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 TURBO PROLOG

3 323-670 Artificial Intelligence Lecture 20-22Page 3 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). likes(tom, baseball). likes(eric, swimming). FACTS likes(mark, tennis). likes(bill, Activity) if likes(tom, Activity). likes(mark, Activity) :- likes(ellen, Activity). RULES TURBO PROLOG

4 323-670 Artificial Intelligence Lecture 20-22Page 4 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 PROLOG.HELP

5 323-670 Artificial Intelligence Lecture 20-22Page 5 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

6 323-670 Artificial Intelligence Lecture 20-22Page 6 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. SUMMARY OF PROGRAM SECTIONS

7 323-670 Artificial Intelligence Lecture 20-22Page 7 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) MISCELLANEOUS

8 323-670 Artificial Intelligence Lecture 20-22Page 8 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) ERROR & BREAK CONTROL

9 323-670 Artificial Intelligence Lecture 20-22Page 9 display(String) (string) - (i) edit(InputString,OutputString) (string,string) - (i,o) edit(InputString,OutputString,Headstr,Headstr2,Ms g,Pos,Helpfilename, EditMode,Indent,Insert,TextMode,RetPos,RetStatu s) (string,string,string,string,string,integer,str ing,integer,integer,integer,integer,integer,int eger) - (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,Msg,Pos,Helpfilename,RetStatus) (string,string,string,string,string,integer,str ing,integer)- (i,o,i,i,i,i,i,o) EDITOR

10 323-670 Artificial Intelligence Lecture 20-22Page 10 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) WINDOW SYSTEM

11 323-670 Artificial Intelligence Lecture 20-22Page 11 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,_) INPUT

12 323-670 Artificial Intelligence Lecture 20-22Page 12 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 OUTPUT

13 323-670 Artificial Intelligence Lecture 20-22Page 13 predicates isletter(char) clauses /* When applied to characters, '<=' means */ /* "alphabetically precedes or is the same as" */ isletter(Ch) :- 'a' <= Ch, Ch <= 'z'. isletter(Ch) :- 'A' <= Ch, Ch <= 'Z'. goal : isletter( ‘ K ’ ) yes arithematics = + - * / not char : put ‘.... ’ when asking EX04EX05 is letter

14 323-670 Artificial Intelligence Lecture 20-22Page 14 predicates type(symbol, symbol) is_a(symbol, symbol) lives(symbol, symbol) can_swim(symbol) goal can_swim(What), write("A ", What, " can swim."). clauses type(ungulate, animal). type(fish, animal). is_a(zebra, ungulate). is_a(herring, fish). is_a(shark, fish). lives(zebra, on_land). lives(frog, on_land). lives(frog, in_water). lives(shark, in_water). can_swim(Y) :- type(X, animal), is_a(Y, X), lives(Y, in_water). write( “.............. ” ) write( “ \n....... ”,Variable, ”..... \n\n\n ” ) EX05EX05 can_swim

15 323-670 Artificial Intelligence Lecture 20-22Page 15 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). predecessor

16 323-670 Artificial Intelligence Lecture 20-22Page 16 A B C E D parent predecessor

17 323-670 Artificial Intelligence Lecture 20-22Page 17 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). predecessor

18 323-670 Artificial Intelligence Lecture 20-22Page 18 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 Parent1.Pro

19 323-670 Artificial Intelligence Lecture 20-22Page 19 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. predecessor

20 323-670 Artificial Intelligence Lecture 20-22Page 20 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). Parent2.Pro

21 323-670 Artificial Intelligence Lecture 20-22Page 21 Animal kingdom Plant kingdom AnimalHuman DogCat Toop Suwit Mew Sunee plant Flower RoseCarnation isa ISA Relationship

22 323-670 Artificial Intelligence Lecture 20-22Page 22 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). isa1.Pro

23 323-670 Artificial Intelligence Lecture 20-22Page 23 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 bear.Pro

24 323-670 Artificial Intelligence Lecture 20-22Page 24 domains variable name = type predicates relation(variable name, variable name, … ) goal run(X). clauses relation(value,value, … ) conclusion :- condition type symbol, integer, real, char PROLOG

25 323-670 Artificial Intelligence Lecture 20-22Page 25 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). EX04EX02.PRO

26 323-670 Artificial Intelligence Lecture 20-22Page 26 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. SUM, MULTIPLY : EX04EX01

27 323-670 Artificial Intelligence Lecture 20-22Page 27 predicates run(char) goal run(X). /* This is a internal goal. */ clauses run(X) :- makewindow(1, 7, 7, " Hello World Program ", 0, 0, 25, 80), write("Hello World (first)"), readchar(X), removewindow. run(X) :- write("hello World (second)"), readchar(X). Window1.PRO = EX04EX03.PRO

28 323-670 Artificial Intelligence Lecture 20-22Page 28 predicates run(char) goal run(X). /* This is a internal goal. */ clauses run(X) :- makewindow(1,7,7,"hello",0,0,25,80), write("hello World (second)"), readchar(X). run(X) :- makewindow(1, 7, 7, " Hello World Program ", 0, 0, 25, 80), write("Hello World (first)"), readchar(X), removewindow. Window2.PRO

29 323-670 Artificial Intelligence Lecture 20-22Page 29 predicates run1(char) run2(char) goal run1(X), run2(Y). /* This is a internal goal. */ clauses run2(X) :- makewindow(1,7,7,"hello",0,0,25,80), write("hello World (second)"), readchar(X). run1(X) :- makewindow(1, 7, 7, " Hello World Program ", 0, 0, 25, 80), write("Hello World (first)"), readchar(X), removewindow. Window3.PRO : show 2 windows

30 323-670 Artificial Intelligence Lecture 20-22Page 30 End chapter 7


Download ppt "Chapter 7 Turbo Prolog Chapter 7 Turbo Prolog 323-670 Artificial Intelligence ดร. วิภาดา เวทย์ประสิทธิ์ ภาควิชาวิทยาการคอมพิวเตอร์ คณะ วิทยาศาสตร์ มหาวิทยาลัยสงขลานครินทร์"

Similar presentations


Ads by Google