Conditionals, basic list manipulation and pattern matching
-
Upload
rich-price -
Category
Lifestyle
-
view
518 -
download
1
Transcript of Conditionals, basic list manipulation and pattern matching
![Page 1: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/1.jpg)
www.cs.bham.ac.uk/internal/courses/ai-prog-a/
AI Programming
Richard [email protected]/~rmp/
Week Four:Conditionals, Lists and Pattern Matching
![Page 2: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/2.jpg)
2
C onditiona ls
• If <this statement is true> then …
if <condition> then<code>
endif;
lvars myVariable = 10;if myVariable = 10 then
‘My Variable is equal to 10’ =>endif;
![Page 3: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/3.jpg)
3
C omparis on Operators
• = (equals)• < (Less than)• > (Greater than)• <= (Less than or equal to)• >= (Greater than or equal to)
lvars myVariable = 10;myVariable = 10 =>** <true>
![Page 4: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/4.jpg)
4
I f … and/or …if <condition> and <condition> then
<code>endif;
lvars myVariable = 10;if myVariable < 1 1 and myVariable > 9 then
‘My Variable is 1 0!’ =>endif;
lvars myPet = ‘duck’if myPet = ‘duck’ or myPet = ‘budgie’ then
‘My pet is a bird!’ =>endif;
![Page 5: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/5.jpg)
5
I f … then … els e …if <condition> then
<code>else
<code>endif;
lvars myPet = ‘cat’;if myPet = ‘duck’ or myPet = ‘budgie’ then
‘My pet is a bird!’ =>Else
‘My pet is not a bird :(’ =>endif;
![Page 6: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/6.jpg)
6
I f … then … els eif … els e …lvars myVariable = 1 1 ;if myVariable < 1 1
‘My Variable is less than 1 1!’ =>elseif myVariable > 1 1
‘My Variable is greater than 1 1 !’ =>else
‘My Variable is 1 1 !’ =>endif;
![Page 7: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/7.jpg)
7
I f … then … els eif … els e …define coffeeBreak(bored, money) -> response;
if bored = ‘true’ thenif money >= 5 then
‘Hurrah! Coffee and cake!’ -> response;elseif money > 2
‘Coffee!’ -> response;else
‘Oh noes… water… ’ -> response;endif;
else‘Work, work’ -> response;
endif;enddefine;coffeebreak(‘true’, 5) =>
![Page 8: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/8.jpg)
8
Lis ts
• Lists hold pieces of data– Of any type.– In sequence.
lvars myList [a b c];myList =>** [a b c]
myList(2) =>** b
![Page 9: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/9.jpg)
9
Lis ts in lis ts• Nested lists like:
lvars myNestedList = [a b [c d] [e f]];
• Can be printed out using the ‘pretty print arrow’:
myNestedList ==>** [a b
[c d][e f]]
![Page 10: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/10.jpg)
10
Adding to Lis ts
• The operators:– (hat)– (double hat)
lvars myList = [I have a pet], insert = ‘dog’;[I have a pet insert] =>
** I have a pet dog.
![Page 11: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/11.jpg)
11
^ or ^^lvars insert = [and another list];
[I have a list insert] =>** [I have a list [and another list] ]
[I have a list insert] =>** [I have a list and another list]
• ^ loses the square brackets [ ].• Experiment with this!
![Page 12: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/12.jpg)
12
Linked Lis ts
• Pop-1 1 uses linked lists.• Sequence of connected nodes.• Each node consists of:
– A pointer.– And the data item.– Lists start with a header– End with a footer.– End of list’s pointer is null..
![Page 13: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/13.jpg)
13
Linked Lis ts
• Variables simply point to the head of the list.
![Page 14: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/14.jpg)
14
Linked Lis ts
• Copying lists
copydata(myList) -> myOtherList;
![Page 15: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/15.jpg)
15
C hang ing and Adding Lis ts
![Page 16: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/16.jpg)
16
Lis t func tions• Teach …
– >< (concatenation)– :: (head insertion)– length()– hd()– tl()– rev()– shuffle()– oneof()– sort()
![Page 17: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/17.jpg)
17
M atc hes
• Pop-1 1 allows us to flexibly match lists.
[a b c d] matches [a b c d] =>** <true>
• Matches is an operator returning <true> or <false>
![Page 18: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/18.jpg)
18
Pattern M atc hing• Like and ^ we can use = and == on lists.• = matches a single element in a list.
[a b c d] matches [= b c d] =>** <true>
• == matches 0 or more elements.
[a b c d] matches [== b c d] =>[a b c d] matches [a == d] =>[a b c d] matches [a b c ==] =>[a b c d] matches [a b c d ==] =>
![Page 19: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/19.jpg)
19
Pattern M atc hing
• And combine them:
[a b c d] matches [= b ==] =>** <true>
• What about?
[a b c d] matches [= b = =] =>[a b c d] matches [==] =>[a b c d] matches [= = = =] =>[a b c d] matches [== == = = = = ==] =>[a b c d] matches [a == c = =] =>
![Page 20: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/20.jpg)
20
Pattern M atc hing
• Like , , = and == we can use ? and ??:
[a b c d] matches [= b ?anItem ==];anItem =>** c
[a b c d] matches [a b ??items];Items =>** [c d]
![Page 21: Conditionals, basic list manipulation and pattern matching](https://reader033.fdocuments.in/reader033/viewer/2022052411/5565f382d8b42a20158b4e1e/html5/thumbnails/21.jpg)
21
Pattern M atc hing
Lvars input, name;‘Hello what is your name? =>Readline() -> input; ;;; reads a line from the keyboard.
If input matches ![Hello my name is ?name] then[Hello name] =>
Else[Erm… hello] =>
Endif;