Presentation is loading. Please wait.

Presentation is loading. Please wait.

ITEC 380 Organization of programming languages Lecture 9 – Prolog.

Similar presentations


Presentation on theme: "ITEC 380 Organization of programming languages Lecture 9 – Prolog."— Presentation transcript:

1 ITEC 380 Organization of programming languages Lecture 9 – Prolog

2 Prolog Review Prolog –What are its 2 major components? Where are facts stored? What is their relationship with the interpreter? What is the difference between upper and lower? User I/O Email me a 3 rd generation OO language by the end of the week or I’ll pick one!

3 Prolog Objectives Homework 2 Prolog –Recursion –Lists

4 Prolog Notes When you see …/2 in prolog that means a rule that takes 2 parameters Is variable, and lets you know what the rule expects if there is an issue Can have multiple rules, facts with same name –Friend(X) :- Person1(X). –Friend(X) :- Person2(X).

5 Prolog Exercise Time for a bit of magic There is a problem with this example, can you spot it? house_elf(dobby). witch(hermione). witch(’McGonagall’). witch(rita_skeeter). magic(X):- house_elf(X). magic(X):- wizard(X). magic(X):- witch(X).

6 Prolog Exercise What is the difference between – read(r), X is r * r, write(X). –read(R), X is R * R, write(X). Simple calculations –The area of a circle is 2*pi*r –Pythagoras (given a and b [sides], what is c [hypotenuse]

7 Prolog Recursion What is recursion? –What are the benefits? –What are the downsides? Prolog syntax –rule(parameters) :- rule(parameters), baseCase(parameters). Remember –Always use the base case

8 Prolog Example Descendants –Anne has a daughter named Bridget –Bridget has a daughter named Caroline –Caroline has a daughter named Donna –Donna has a daughter named Emily How would you represent this information? How would you specify the ability to query if a person is a descendant of another? What are some uses for this type of query?

9 Prolog Question What is the difference between child(anne,bridget). child(bridget,caroline). child(caroline,donna). child(donna,emily). descend(X,Y) :- descend(Z,Y), child(X,Z). descend(X,Y) :- child(X,Y). and descend(X,Y) :- child(X,Y). descend(X,Y) :- descend(Z,Y), child(X,Z).

10 Prolog Caution Run away stacks –Always recurses in the order of rules –Must make sure you stop! –What about bad input? Very easy to cause an infinite loop through bad queries One of the most common problems, limiting factors of prolog

11 Prolog Lists In prolog you use [ ] to denote a list List items are separated by,’s Lists can contain lists Can query certain parts of the list like Lisp For example –[Head|Tail] = [apple, pear, peach]. –What do you think Head contains? What about Tail? Exercise –Write a function to give you the third item in a list

12 Prolog Contents Empty list is [ ], can be checked with Var = [ ] What happens if you combine not(Var = [ ]) in a rule? Can do more than [ X | Y ], for example [ X,Y,Z | W ] Can append data with append(list1,list2, Var) –Allows you to build up a list Can figure out length with Length(list,X). Member(X,[list]) returns with value or true/false depending on variable or constant

13 Prolog Examples PrintList(L). %Print the contents of the list reversePrint(L). %Print the contents of the list in reverse revList(L). %Reverse a list Palindrome checker –Is a word spelled the same forwards / backwards

14 Prolog Exercise How would you create a stack that allows users to add values to it? How would you use this stack with a command that will add the 2 top numbers on the stack (removing them and adding the result to the top of the stack)? How do we tie this in so it allows commands to be entered multiple times?

15 Prolog Methods of reversing Accumulator versus appending How do we tell which one is better? naiverev([],[]). naiverev([H|T],R):- naiverev(T,RevT), append(RevT,[H],R). Versus accRev([H|T],A,R):- accRev(T,[H|A],R). accRev([],A,A). rev(L,R):- accRev(L,[],R).

16 Prolog Next week More in-depth with prolog –Graphics


Download ppt "ITEC 380 Organization of programming languages Lecture 9 – Prolog."

Similar presentations


Ads by Google