Uppsala universitet
Institutionen för lingvistik
Logikprogrammering I, vt 2002
Leif-Jöran Olsson
Syftet med denna laboration är att få en grundläggande förståelse för hur datastrukturen lista kan användas och hur enkel aritmetik utförs i ett Prologsystem.
Tänk på att anteckna frågor och annat som dyker upp inför genomgången. Jobba gärna två och två.
- Konsultera /local/kurs/lpI02/medlem.pro och ställ några frågor, till exempel medlem(1,[1,2,3]) eller medlem(p,[a,3,b,p]), som sedan listas i labbrapporten.
- Konsultera /local/kurs/lpI02/ta_bort.pro och ställ några frågor, till exempel ta_bort(1,[2,3],R) eller ta_bort(c,[a,b,c], R), som sedan listas i labbrapporten. OBS! Svaret på alla frågorna behöver inte bli ja.
- Konsultera /local/kurs/lpI02/slå_ihop.pro och ställ några frågor, till exempel slå_ihop([a,2],[3],R) eller slå_ihop([4,b,b,c],B,R), som sedan listas i labbrapporten.
- Skriv ett predikat räkna_element/2, (/2 anger att predikatet ska ha två argument), som ger som svar hur många element en lista innehåller. Exempelvis:
| ?- räkna_element([1,2,3,5],S). S = 4 ? yes- Testa unifieringarna, från tabellen under F3#listunifiering, och lista svaren. Ställs som fråga P = Q. Till exempel
| ?- [a,b] = R.
- Skriv ett predikat udda_jämnt/2, som ger som svar udda eller jämnt beroende på vilket tal som anges. Exempelvis:
| ?- udda_jämnt(2,S). S = jämnt ? yes- Skriv ett predikat ta_bort_alla/3, som ger som svar en lista där alla förekomster av det angivna är borttagna. Exempelvis:
| ?- ta_bort_alla(1,[1,2,1,3,1],S). S = [2,3] ? yes- Skriv ett predikat vänd_på_lista/2, som ger som svar en lista där alla element kommer i omvänd ordning. Exempelvis:
| ?- vänd_på_lista([1,2,3],S). S = [3,2,1] ? yes- Skriv ett predikat summera_lista_med_tal/2, som ger som svar summan av alla element i listan. Exempelvis:
| ?- summera_lista_med_tal([1,2,3],S). S = 6 ? yes
Redovisning lämnas i form av skriftlig rapport till Leif-Jöran Olsson (i postfacket eller via e-post i postscriptformat eller vanlig text) senast klockan tretton den femtonde maj.
Rapporten ska innehålla/behandla det som tas upp i uppgiftsbeskrivningen ovan.
Rapporten kommer att ges betyget godkänd, väl godkänd eller underkänd enligt följande:
- För godkänt krävs rimliga svar på uppgift ett till sex.
- För väl godkänt krävs därutöver rimliga svar på uppgifterna sju till nio och att man för ett resonemang i anslutning till uppgifterna. (Alltså inte bara ja- och nej-svar eller inklistring.)
Lycka till! Och kom ihåg - prolog älskar er alla den här veckan också!