Download presentation
Presentation is loading. Please wait.
Published byKristian Lawson Modified over 8 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.