23
Kenneth Wilhelmsson [[email protected]] 1 Logikprogrammering 10 P: 28 oktober 2002 Idag: Är det möjligt att samla alla lösningar från en fråga som ställs till ett prologprogram?

I dagens föreläsning:

  • Upload
    izzy

  • View
    46

  • Download
    0

Embed Size (px)

DESCRIPTION

Logikprogrammering 10 P: 28 oktober 2002 Idag: Är det möjligt att samla alla lösningar från en fråga som ställs till ett prologprogram?. I dagens föreläsning:. - Kan Prolog leverera samtliga mål som uppfyller en fråga? Varför gör Prolog inte det från början? - PowerPoint PPT Presentation

Citation preview

Page 1: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 1

Logikprogrammering 10 P: 28 oktober 2002

Idag: Är det möjligt att samla alla lösningar från en fråga som ställs till ett

prologprogram?

Page 2: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 2

I dagens föreläsning:

- Kan Prolog leverera samtliga mål som uppfyller en fråga? Varför gör Prolog inte det från början?

• (Antagligen pga Prologs speciella syften presenterar en sökning efter mål dessa mål ett i taget för användaren.)

• Hur är det möjligt att finna den totala mängden svar snabbt?

Page 3: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 3

Repetition från David Hjelms senaste föreläsning

• In- och utmatning (kortfattad återblick)

• Grundläggande för den interaktivitet som modern människa-dator-interaktion bygger på.

• (Jämför med beräkning som en för datorn tillrättalagd process som ej tar hänsyn till olika användares intressen)

• Dessutom nytt om in- och utmatning från filer…

Page 4: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 4

Att skriva till skärmen och läsa från tangentbordet

• Predikat i Prolog:read(X).:| pelle.X = pelle?get_char(X).:| pelle.X = p?

write(pelle).pelle.write(”pelle”).[p,e,l,l,e]

Page 5: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 5

Dagens nyheter angående inläsning…

Page 6: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 6

Viktig_fil.txt

Page 7: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 7

See/1 för att öppna en fil:

see/1 förändrar indataströmmen fullständigt

- från tangentbordet till en angiven fil (argumentet)

härefter: get_line/1

Page 8: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 8

Seen/0 avslutar inläsningen från angiven fil.

seen.yes?- get_line(Str).|: hejdå

Str = ”hejdå” (eller [’h’,’e’,’j’,’d’,’å’])

Page 9: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 9

Motsvarigheten till see/1 heter tell/1 för att skriva till filer

Observera att det gamla textinnehållet raderas och ersätts av vad som anges när tell används.

tell(’viktig_fil.txt’).write(’adjö’), nl.told.

Page 10: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 10

När filen tar slut

• När filen är slut returneras end_of_file –

read(X).X = end_of_file

• - Om man försöker läsa hel rad:see(’viktig_fil.txt’).yesget_line(R).R = [’a’,’d’,’j’,’ö’].get_line(str)! Existence error in get0/2! attempt to read past end of streamgoal: get0('$stream'(2740388),_76)| ?-

Page 11: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 11

När motsvarigheten till seen/0 för inskrivande, told/0, används ändras outputströmmen till att gälla bildskärmen igen.

?- write(’adjö’).yes?- told.yeswrite(’adjö’).adjöyes

Page 12: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 12

Återstoden av dagens föreläsning:• Att samla lösningar

och eventuellt gruppera dem efter olika egenskaper

Page 13: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 13

Bagof/3

Page 14: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 14

Page 15: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 15

Page 16: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 16

Page 17: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 17

Page 18: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 18

Page 19: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 19

Page 20: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 20

Findall/3

Page 21: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 21

Page 22: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 22

Setof/3

Page 23: I dagens föreläsning:

Kenneth Wilhelmsson [[email protected]] 23