Upload
izzy
View
45
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
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?
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?
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…
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]
Kenneth Wilhelmsson [[email protected]] 5
Dagens nyheter angående inläsning…
Kenneth Wilhelmsson [[email protected]] 6
Viktig_fil.txt
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
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’,’å’])
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.
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)| ?-
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
Kenneth Wilhelmsson [[email protected]] 12
Återstoden av dagens föreläsning:• Att samla lösningar
och eventuellt gruppera dem efter olika egenskaper
Kenneth Wilhelmsson [[email protected]] 13
Bagof/3
Kenneth Wilhelmsson [[email protected]] 14
Kenneth Wilhelmsson [[email protected]] 15
Kenneth Wilhelmsson [[email protected]] 16
Kenneth Wilhelmsson [[email protected]] 17
Kenneth Wilhelmsson [[email protected]] 18
Kenneth Wilhelmsson [[email protected]] 19
Kenneth Wilhelmsson [[email protected]] 20
Findall/3
Kenneth Wilhelmsson [[email protected]] 21
Kenneth Wilhelmsson [[email protected]] 22
Setof/3
Kenneth Wilhelmsson [[email protected]] 23