i dagens föreläsning:
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 PresentationTRANSCRIPT
![Page 1: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/1.jpg)
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:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/2.jpg)
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:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/3.jpg)
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:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/4.jpg)
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 7: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/7.jpg)
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:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/8.jpg)
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:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/9.jpg)
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:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/10.jpg)
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:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/11.jpg)
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:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/12.jpg)
Kenneth Wilhelmsson [[email protected]] 12
Återstoden av dagens föreläsning:• Att samla lösningar
och eventuellt gruppera dem efter olika egenskaper
![Page 14: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/14.jpg)
Kenneth Wilhelmsson [[email protected]] 14
![Page 15: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/15.jpg)
Kenneth Wilhelmsson [[email protected]] 15
![Page 16: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/16.jpg)
Kenneth Wilhelmsson [[email protected]] 16
![Page 17: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/17.jpg)
Kenneth Wilhelmsson [[email protected]] 17
![Page 18: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/18.jpg)
Kenneth Wilhelmsson [[email protected]] 18
![Page 19: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/19.jpg)
Kenneth Wilhelmsson [[email protected]] 19
![Page 21: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/21.jpg)
Kenneth Wilhelmsson [[email protected]] 21
![Page 23: I dagens föreläsning:](https://reader034.vdocuments.pub/reader034/viewer/2022051401/5681501f550346895dbe0400/html5/thumbnails/23.jpg)
Kenneth Wilhelmsson [[email protected]] 23