Föreläsning 11 i programmeringsparadigm. Negering.

Storlek: px
Starta visningen från sidan:

Download "Föreläsning 11 i programmeringsparadigm. Negering."

Transkript

1 Föreläsning 11 i programmeringsparadigm. Negering. Brna avsnitt 7.2. Prologs negering \+ fungerar som så att om vi har delmålet \+ p(...), så körs p(..). Om denna körnings lyckas så misslyckas \+ p(...)och tvärtom. Detta sätt att implementera negering i Prolog leder till en mängd konstigheter, speciellt om p(...) innehåller logiska variabler som vid körningen fortfarande ej är substituerade (bundna (bound)) till konstanter. Exempel som liknar bokens exempel: Program database: man(jim). man(fred). woman(x) :- \+ man(x). person(x) :- man(x). person(jane). Har vi denna databas ger frågorna man(jim), man(fred), man(jane) och man(x) vettiga svar, men frågan woman(x)ger svaret no vilket inte är det svar vi skulle få med en logisk läsning, vi vill kanske ha förslaget X = jane. woman(x) ger en körning av man(x) som lyckas med X = jim, varför woman(x) misslyckas och misslyckade körning ger inga substitutioner, bindningar. Inte heller denna definition funger bra : woman(x) :- \+ man(x), person(x). % Fungerar ej om X "unbound" Men denna fungerar bättre: woman(x) :- person(x), \+ man(x). % Fungerar. Detta beror på att när vi kör \+ man(x)så är X=jim, X=fred, eller X=jane och vi får vettiga resultat. Alltså. Konstiga svar när man kör \+ p(..) om inte de logiska variablerna i p(..) är substituerade, "bunda", när vi "kommer till" \+ p(..). Därför fungerar det ofta bättre om \+ "är långt till höger". Inför labben "Stabila äktenskap". Den procedurella läsningen av den lösning jag tänkt mig är att man först genererar man alla tänkbara kombinationer av par (detta var list-labben som förhoppningsvis redan är gjord), sedan testar man att en kombination inte är instabil med hjälp av \+. Vid instatbilitetstesten är då alla logiska variabler substituerade.

2 Fler icke-logiska saker i Prolog, dvs mer "non-pure Prolog". Det finns en massa saker i Prolog som överhuvud taget inte har en logisk läsning, och en del av dessa saker gör att Prolog kan användas lite mer som ett vanligt programmeringsspråk. read också write m fl för inmatning, och utmatning. Brna Interlude sid 105. \+ negering, not, se ovan. Brna 7.2 sid 6.7 is funktionell "räknemaskin" i Prolog. Brna sid 54. assert m fl. Program som ändrar sig själv under körningen (livsfarligt). Brna 9.2 sid 91 findall m fl. Generar listor med lösningar som man sedan kan använda i programmet.! snitt (cut). Gör att man kan avbryta delar av "backtrackingen". Brna 9.1 sid 87. Snitt fungerar så här: a! a Exempel på vad som kan hända om a misslyckas (dvs vi "backtrackar" från a:s Fail-port). Vad som alltid händer om a misslyckas (dvs vi "backtrackar" från a:s Fail-port) och vi har ett snitt omedelbart till vänster om a. Snitt beskär delar av sökträdet. Vi kan använda snitt om vi är klyftigare än Prolog och med säkerhet vet att vissa "backtrackingar" är meningslösa för att vi vet att de ej kan producera nya lösningar. Sådana snitt kallas gröna och program med gröna snitt exekverar snabbare, men om programmet utan snitt har en logisk läsning så har programmet med snitt fortfarande samma logiska läsning. Andra snitt som påverkar körningen så att man får andra lösningar eller färre lösningar kallas röda snitt och förstör den logiska läsningen. \+ (negering, not) är implementerat med snitt på detta sätt \+ X :- X,!,fail. % kör X, lyckas det så passerar vi!, misslyckas, ingen "backtracking". \+ X. % misslyckades körningen "backtrackar" vi hit, vi lyckas.

3 Man kan skriva \+ X istället för \+(X) eftersom \+ räknas som en operor. Detta är ett rött snitt. Märk också att argumentet (eller operanden) till operatorn \+, dvs X, blir första delmål i högerledet, dvs "data" har plötsligt blivit "kod" eller "program"!!! Detta underlättas ju i Prolog av att sammansatta termer ("data") och delmål ("kod") ser ut på samma sätt: T. ex tall(jim) kan ju ur syntaxsynpunkt t. ex. vara både ett argument till ett predikat eller element i en lista [.., tall(jim),...], men också ett faktum tall(jim). eller ett delmål i ett högerled... :-..., tall(jim),.... När datorer uppfanns var man fascinerad av att "data" vid körningen kunde övergå till "kod" (båda sakerna är ju följder av ettor och nollor), men man kom snart på att det i de flesta fall var alldeles för anarkistiskt att skriva program på detta sätt. Även användning av assert innebär ju att "data" blir "kod". Ett exempel på grönt snitt: Detta predikat är logiskt ekvivalent med minimum(n1,n2,n1) :- N1 <= N2,!. minimum(n1, N2, N1) :- N1 <= N2. minimum(n1,n2,n2) :- N2 < N1,!. minimum(n1, N2, N2) :- N2 < N1. Vi vet ju med våra mattekunskaper att "backtracking" är onödigt eftersom de två delmålen N1 <= N2 och N2 < N1 aldrig samtidigt kan vara sanna. Predikatet med gröna snitt undviker dock meningslös "backtracking". En imperativ programmerare kan ju frestas att förenkla detta till (rött snitt) : predikatet är inte logiskt ekvivalent med minimum(n1,n2,n1) :- N1 <= N2,!. minimum(n1, N2, N1) :- N1 <= N2. minimum(n1,n2,n2). minimum(n1, N2, N2). Prova till exempel minimum(2,5,5) som felaktigt blir sant i predikatet utan!, dvs predikatet med snitt har inte längre någon logisk läsning men påminner om if.. then.. else.. i imperativa språk. I eliza nedan används snitt och sidoeffekts mål, vilket gör att programmet delvis blir som ett imperativt språk. Att lära sig allt om Prolog är säkert en kurs på minst 8 poäng, så.vi är långt ifrån full-lärda. Språket är alltså komplext, men om man lär sig mycket om Prolog kan man skriva mycket mer sofiskerade program än vad vi gjort i denna kurs. I funktionella delen av kursen har vi däremot lärt oss stora delar av vad som finns att lära oss om Haskell, eftersom Haskell innehåller färre element än Prolog, men element som p g a sin generalitet är mycket kraftfulla. För att till fullo uppskatta Haskells potential krävs nog större vana än vi hunnit få i denna kurs.

4 Tillämpningar av Prolog. Ur förordet i boken Bratko: Prolog Programming for Artificial Intetelligence (tredje upplagan 2001) : The truth is that Prolog is a general programming language and any algorithm can be programmed in it. The impractical orthodox schools s position (dvs att programmen alltid skall ha en logisk deklarativ läsning, "Pure Prolog") was modified by Prolog practioners who adopted a more pragmatic view, benefiting from combining the new declarative approcach with the traditional, procedural one. Om vikten av att lära sig lite om Prolog säger Bratko detta, som även kan sägas om språken i den funktionella paradigmen: Wheras conventional languages are procedurally oriented, Prolog introduces the descripteve, or declarative, view. This greatly alters the way of thinking about problems and makes learning to program in Prolog an exciting intellectual challenge. Many belive that every student of computer science should learn something about Prolog at some point because Prolog enforces a different problem-solving paradigm complementary to other programming languages. AI. Vanliga språk för AI-tillämpningar är Lisp och Prolog eller moderna utvidningar av Prolog, t ex "constraint logic programming", CLP, som kan användas för schemaläggning och planering i logistiska sytem. Med hjälp av Induktiv logikprogrammering konstrueras Prolog-program från exempel. Expertsystem. Program som är tänkta att fungera som en expert på något område som t ex program för att bevilja krediter. Sådan program tänktes utveckas av en "kunskapsingenjör" som kan Prolog som "tappar" en expert på hur denne resonerar, både kvalitativt och kvantitativt. Spelprogram. I Bratkos bok diskuteras bl a schackspelande program. I Sterling och Shapiro Mastermind, Nim och Kalah. I båda böckerna diskuteras också allmänna principer och allmänna program för spel i allmänhet. Tolkar (grammatikor). Brna kap 8. I Prolog är det fascinerande enkelt at skriva enkla program för att kontrollera syntax för (främst formella) språk och även knyta syntaxen till semantiska åtgärder. Jag har bland annat gjort tentamensuppgifter för att kolla kemiska formler som också räknar ut molekylvikter, program för att tolka de franska respektive det danska sättet ( to och halvfems ) att uttrycka tal. Ingår inte i kursen i år. Sök-problem. Djupet först inbyggd, men andra söktekniker programmeras lätt i Prolog.

5 Läsanvisning: Paradigmer. Lär dig vilka paradigmer det finns, vad som utmärker dem (semantik) och några exempel på språk. Se föreläsningsanteckningar 1. Viktigt att förstå varför OO används i stället för klassisk imperativ programmering, läs "Vitsen med OO" i föreläsningsanteckningarna. Läsanvisning: Funktionell programmering. Två alternativ: Jag har ju inte följt böckerna slaviskt, så att läsa förläsningsanteckningarna kan vara bra. Typklasser behandlas utförligare i föreläsningsanteckningarna 7, läs där. C&K : Introduction to Computing Alla kapitel utom 2, 6, 9,11, 12, 13. Dessa kapitel är dock lätt kursiv läsning för den intresserade. Lat evaluering behandlas ej; läs föreläsningsanteckningarna. Fokker : Functional programming : kap 1. Hela kapitlet. En del praktiska saker skiljer mellan Gofer och Hugs. Hur man kör rent praktiskt kommer förstås inte på tentan. kap 2. Hela kapitlet. Avsnitt 2.4 kan läsas som exempel på har man programmerar i Haskell, men det kommer inte några utpräglade numeriska uppgifter på tentan. kap 3. Hela kap. Avsnitt om bråk och sökträd kan se som exempel på hur man programmerar en ADT, men jag frågar inte på just dessa exempel. Från labbhäftet repeterara hur man skriver interaktiva program. Där finns också ett avsnitt om typer som man kan läsas som komplement till Fokker. Läsanvisning: Brna Prolog Programming. Brna Kap 1. Hela kapitlet. Brna Kap 2. Hela kapitlet. Brna Kap 3. Hela kapitlet. "Resolution tables" och "search space trees" kommer jag inte att fråga om. Jag har dock främst förklarat Prologs sätt att jobba med Byrd-boxar, se kapitel 5. Brna Kap 4. Hela kapitlet. write/1 behöver man inte kunna. Brna Kap 5. Hela kapitlet, dock inte exekverings-träd och bevisträd. Jag har dock mer ingående använt lådmodellen, se i första hand förläsningsanteckningarna. Brna Kap Interlude Practal matters. De mesta i detta kapitel lämpar sig inte för tentafrågor eller ingår inte, men det kan komma frågor på min variant av Byrd-box-modellen och dess förhållande till Sicstus trace-utskrifter, se förläsningsanteckningarna. Brna Kap 6. Hela kapitlet, dock inte bevisträd 6.4. Kapitlet innehåller tips ("schemata") om hur man tänker när man programmerar predikat för listor, tips som vi tillämpat, fast jag inte direkt har föreläst utgående från boken.

6 Brna Kap 7. Kunna lite om negering avsnitt 7.2 och tillräckligt om "generate and test" för att klara labbarna "Tidernas knepigaste problem", "Stabila äktenskap" och liknade tentaproblem. Brna Kap 8. Ingår ej i kursen. (Antagligen nästa år, kursen då 5 p) Brna Kap 9. Läs en del om vad snitt, cut (!) är. Även föreläsningsanteckningarna.gröna och röda snitt. Brna Kap 10. Läs 10.1 t o m Brna Another Interlude Inpu/Output. Ingår ej i kursen Brna Kap 11. Ingår ej i kursen Brna Kap 12. Ingår ej i kursen Jag har ju inte följt boken slaviskt, så att läsa förläsningsanteckningarna kan vara bra. Ett klassiskt datorprogram : Eliza. Efter Sterling och Shapiro Program Programmen i denna bok finns på eliza finns på /info/progp02/prolog/eliza.pl (men för att få det att fungera bytte jag /== till /= i lookup). Det är ett roligt program att köra. Ett likande program skrevs 1966 av Weizenbaum. Han blev förskräckt av folks reaktioner på programmet och skrev en mycket bra bok om datorer och mänskligt vetande (Weizenbaum, J : Computer Power and Human reason ) /* Körning?- eliza. : [i, am, unhappy]. How long have you been unhappy? : [my, father, loves, me]. Please you tell me more about father : [i, am, unhappy]. How long have you been unhappy? : [since, yesterday]. Please go on. : [what, shall, i, do]. Please go on. : [i, feel, happy]. Do you often feel that way? : [bye]. Goodbye. I hope I have helped you yes */ /* eliza :- Simulates a conversation via side effects. */ % You need to type in a list of words such as [i, am,unhappy]. eliza :- read(input), eliza(input),!. eliza([bye]) :- reply([ Goodbye. I hope I have helped you ]). eliza(input) :- pattern(stimulus,response), match(stimulus,table,input), % Sophisticated multi-use match(response,table,output), % of match! reply(output), read(input1),!, eliza(input1).

7 /* match(patterm,dictionary,words) :- Pattern matches the list of words Words, and matchings are recorded in the Dictionary. */ match([n Pattern],Table,Target) :- integer(n), lookup(n,table,lefttarget), append(lefttarget,righttarget,target), match(pattern,table,righttarget). match([word Pattern],Table,[Word Target]) :- atom(word), match(pattern,table,target). match([],table,[]). /* pattern(stimulus,response) :- Response is an applicable response pattern to the pattern Stimulus. */ pattern([i,am,1],[ How,long,have,you,been,1,?]). pattern([1,you,2,me],[ What,makes,you,think, I,2,you,?]). pattern([i,like,1],[ Does,anyone,else,in,your,family,like,1,?]). pattern([i,feel,1],[ Do,you,often,feel,that,way,?]). pattern([1,x,2],[ Please,you,tell,me,more,about,X]) :- important(x). pattern([1],[ Please,go,on,. ]). important(father). important(sister). important(son). important(mother). important(brother). important(daughter). reply([head Tail]) :- write(head), write( ), reply(tail). reply([]) :- nl. lookup(x,[(x,v) XVs],V). lookup(x,[(x1,v1) XVs],V) :- X \= X1, lookup(x,xvs,v). /* append(xs,ys,xsys) :- XsYs is the result of concatening the lists Xs and Ys. */ append([],ys,ys). append([x Xs],Ys,[X Zs]) :- append(xs,ys,zs). Annan klassiker : Placera damer på schackbräde. Från Sterling och Shapiro. Problem: Placera 8 damer på ett schackbräde så att de ej hotar varandra. /* queens(n,queens) :- Queens is a placement that solves the N queens problem, represented as a permutation of the list of numbers [1,2,...,N] i. e.[row for column 2, row for column 2... ] */ Naivt generera-test-program: queens(n,qs) :- range(1,n,ns), permutation(ns,qs), safe(qs). % -- generate and - test - % safe(qs) :- The placement Qs is safe. safe([q Qs]) :- safe(qs), not attack(q,qs). safe([]). attack(x,xs) :- attack(x,1,xs). attack(x,n,[y Ys]) :- X is Y+N ; X is Y-N. attack(x,n,[y Ys]) :- N1 is N+1, attack(x,n1,ys).

8 range(m,n,[m Ns]) :- M < N, M1 is M+1, range(m1,n,ns). range(n,n,[n]). Modifikationer för ett mycket effektivare program: queens(n,qs) :- range(1,n,ns), queens(ns,[],qs). queens(unplacedqs,safeqs,qs) :- select(q,unplacedqs,unplacedqs1), not attack(q,safeqs), queens(unplacedqs1,[q SafeQs],Qs). queens([],qs,qs). Problemet löst i Haskell (med Prologliknade körsätt) : module Queens where import Interact -- Prolog like presentation of list::[a] haskellprolog :: Show a => ([a], String) -> IO() haskellprolog ([], _) = putstr "\nno" haskellprolog (list, qv) = makeinteractiveprogram startstatus firstpromt f where firstpromt = qv ++ " = " ++ show firstsolution ++ "? " (firstsolution : startstatus) = list f:: Show a => [a] -> String -> ([a], String, Bool) f [] _ = ( [], "\nno", False) f (a:as) ";" = ( as, qv ++ " = " ++ show a ++ "? ", True) f (a:as) _ = ( as, "\nyes", False) -- 8 queens problem queens (n,qv) = (try [1..n] [] [], qv) try ::[Integer] -> [Integer] -> [Integer] -> [[Integer]] try [] [] safeqs = [safeqs] -- found one solution try [] triedqs safeqs = [] -- no solution try (q:unplacedqs) triedqs safeqs attack q safeqs = res2 otherwise = res1 ++ res2 where res1 = try (triedqs++unplacedqs) ([]) (q:safeqs) res2 = try (unplacedqs) (q:triedqs) (safeqs) attack :: Integer -> [Integer] -> Bool attack x xs = att x 1 xs where att x n [] = False att x n (y:ys) = x == y+n x == y-n att x (n+1) ys -- Körning: Queens> haskellprolog (queens(8, "Rs")) Rs = [4,2,7,3,6,8,5,1]? ; Rs = [5,2,4,7,3,8,6,1]? ; Rs = [3,6,4,2,8,5,7,1]? yes

9 Fikitiv tenta, prologdel. 1. a) Skriv ett Prolog-predikat för double/2 : % double(list, ListLIst) varje element i List finns två gånger i % ListList dvs double([1, 2, 3], [1, 1, 2, 2, 3, 3]) är sant. b) Vad ger Prolog för körresultat om du ställer frågan :?- double([1, 2, 3], Rs). c) Vad ger Prolog för körresultat om du ställer frågan :?- double(rs, [1,1,2,2,3,3]). d) Vad ger Prolog för körresultat om du ställer frågan :?- double(rs, [1,1,2]). 2. Skriv ett program för select(x,harxs,ettmindrexs) med betydelsen att listan EttMindreXs är resultat av att en förekomst av X har tagits bort från HarXs. 3. Skriv ett Prolog-predikat för twiceinlist/2: % twiceinlist(x, Xs) Elementet X förkommer minst två gånger i Xs. 4. Vad avses med ett prologprogram som gör "generate-and_test"? Hur kan sådana program ofta fås att exekvera fortare? 5. Rena Prolog program ("pure Prolog") 1) Har bara en deklarativ (logisk) läsnig X) Har både en deklarativ och en procedurell läsning 2) Har bara en procedurell läsning För att förstå Prolog program med röda snitt! 1) Måste man göra en deklarativ (logisk) läsnig X) Måste man göra en procedurell läsning 2) Är obegripliga. "Backtracking" kan innebära att 1) Att Prolog försöker på nytt att få ett delmål (subgoal) att lyckas om efterföljande delmål har misslyckats. X) Att Prolog använder klausulerna i ett predikat i omvänd ordning. 2) Att Prolog traverserar elementen i en lista i omvänd ordning. Logiskt och (konjunktion) skrivs i Prolog med 1) :- X) ny klausul 2), Logiskt eller (disjunktion) skrivs i Prolog med 1) :- X) ny klausul 2), 6. Bestäm om följande unifieringar misslyckas eller lyckas, och i det senare fallet vilka substitutioner som görs. house(red, Nat, dog, water, Cig) = house(y, noweigan, Z, water, Cig1). p(x, [X Xs], f) = p(f, Zs, Y). p(x, [X Xs], g) = p(f, Zs, X). 3 = 2+1.

10 Svar fikitiv tenta, prologdel. double([], []). -- 1a) double([x Xs], [X,X Zs]) :- double(xs, Zs). Rs = [1,1,2,2,3,3]? ; no -- b Rs = [1,2,3]? ; no -- c no -- d labbupgift, inget svar här -- 2 twiceinlist(x, Xs) :- select(x, Xs, WXs), select(x, WXs, WWXs) -- 3 genmerate_and_test(svar) :- generate(svar), test(svar) Effektivisering: Flytta delar av testet in i generatorn. generate(r). Föreslår en massalösningar test(y). Tillåter bara BaraTillåtnaLösningar XX12X --5 Y = red, Z = dog, Nat = noweigan, Cig1 = Cig -- 6 X = f, Y = f, Zs = [f Xs] unifierar ej unifierar ej

Föreläsning 13 i programmeringsparadigm.

Föreläsning 13 i programmeringsparadigm. Föreläsning 13 i programmeringsparadigm. Jag har ju delat ut Lite grann om syntax, semantik och syntaxanalys. Några ex finns på Nadas kursexpedidition. Labben "Danska räkneord" ska göras med en syntaxanlysator

Läs mer

Föreläsning 12 i programmeringsparadigm. Negering.

Föreläsning 12 i programmeringsparadigm. Negering. Föreläsning 12 i programmeringsparadigm. Negering. Brna avsnitt 7.2. Prologs negering \+ fungerar som så att om vi har delmålet \+ p(...), så körs p(..). Om denna körnings lyckas så misslyckas \+ p(...)och

Läs mer

Föreläsning 9 i programmeringsparadigm. Unifiering (Brna Chapter 4.1).

Föreläsning 9 i programmeringsparadigm. Unifiering (Brna Chapter 4.1). Föreläsning 9 i programmeringsparadigm. Unifiering (Brna Chapter 4.1). Repetition: I Haskell är mönster-passning (pattern-matchning) jättepraktiskt: När vi gör ett anrop av en funktion med ett visst argument

Läs mer

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar.

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar. Nada Tentamensdag 2004 aug 23 Tentamen Programmeringsparadigm Skrivtid 5 h Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 10p +(5p + 20p +5p+ 20p) + (10p +12p + 8p +10p) = 10p + 50p + 40 p

Läs mer

Del : Paradigmer allmänt.

Del : Paradigmer allmänt. Nada Tentamensdag 2003 jan 13 Tentamen Programmeringsparadigm Skrivtid 5 h Antalet uppgifter : 1 (allmänt)+ 3 (Haskell) + 4 (Prolog) = 5p +(15p + 15p +20p) + (10p +12p + 15p +8p) = 5p + 50p + 45 p = 100p

Läs mer

Kursanalys för Programmeringsparadigm 2D1361, läsperiod 1 och 2 läsåret 2005/2006

Kursanalys för Programmeringsparadigm 2D1361, läsperiod 1 och 2 läsåret 2005/2006 Leif Kusoffsky 2005 - dec - 07 Nada KTH Kursanalys för Programmeringsparadigm 2D1361, läsperiod 1 och 2 läsåret 2005/2006 Kursdata Momentindelning Kursen genomförd Kursledare Kurslitteratur Antal studenter

Läs mer

Nada Tentamensdag 2004 okt 18 Tentamen Programmeringsparadigm Skrivtid 5 h

Nada Tentamensdag 2004 okt 18 Tentamen Programmeringsparadigm Skrivtid 5 h Nada Tentamensdag 2004 okt 18 Tentamen Programmeringsparadigm Skrivtid 5 h Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 10p +(6p + 18p +6p+ 20p) + (10p +12p + 8p +10p) = 10p + 50p + 40 p

Läs mer

Nada KTH 2004 jan 12 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13

Nada KTH 2004 jan 12 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13 Nada KTH 2004 jan 12 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13 Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 9 10p +( 5p + 14p +15p+ 16p) + (12p +10p + 10p +8p) = 10p + 50p

Läs mer

Föreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1.

Föreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1. Föreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1. Användning av Prolog. Prolog har framför allt används inom AI ( Articifial Intellegence),

Läs mer

DD1361 Programmeringsparadigm HT15

DD1361 Programmeringsparadigm HT15 DD1361 Programmeringsparadigm HT15 Logikprogrammering 1 Dilian Gurov, TCS Innehåll Logikprogrammering Kontrollflöde Unifiering Backtracking Negation Snitt Induktiva datatyper och rekursion Inbyggda datatyper:

Läs mer

Nada KTH 2003 okt 23 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13

Nada KTH 2003 okt 23 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13 Nada KTH 2003 okt 23 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13 Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 9 10p +(14p + 12p +10p+ 14p) + (8p +12p + 12p +8p) = 10p + 50p

Läs mer

DD1361 Programmeringsparadigm HT17

DD1361 Programmeringsparadigm HT17 DD1361 Programmeringsparadigm HT17 Logikprogrammering 1 Dilian Gurov, KTH Delkursinnehåll Logisk versus procedurell läsning Kontrollflöde: Unifiering, Backtracking, Snitt Induktiva datatyper och rekursion

Läs mer

Föreläsning 8. newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK -- data istället för newtype krävs om >1 konstruerare.

Föreläsning 8. newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK -- data istället för newtype krävs om >1 konstruerare. Föreläsning 8. Typer och programmeringsstil i Haskell. När vi definerade ett schack gjorde vi så här: newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK deriving Show -- newtype effektivare

Läs mer

DD1361 Programmeringsparadigm HT16

DD1361 Programmeringsparadigm HT16 DD1361 Programmeringsparadigm HT16 Logikprogrammering 1 Dilian Gurov, TCS Delkursinnehåll Logikprogrammering Logisk versus procedurell läsning Kontrollflöde Unifiering, Backtracking, Snitt Negation Induktiva

Läs mer

Del : Paradigmer allmänt.

Del : Paradigmer allmänt. Nada Tentamensdag 2003 aug 25 Tentamen Programmeringsparadigm Skrivtid 5 h Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 5p +(12p + 15p +5p+ 20p) + (10p +14p + 8p +11p) = 5p + 52p + 43 p

Läs mer

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar.

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar. Nada Tentamensdag 2005 jan11 Tentamen Programmeringsparadigm Skrivtid 5 h Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 10p +(6p + 10p +14p+ 20p) + (9p +11p + 8p +12p) = 10p + 50p + 40 p

Läs mer

DD1361 Programmeringsparadigm HT15

DD1361 Programmeringsparadigm HT15 DD1361 Programmeringsparadigm HT15 Logikprogrammering 3 Dilian Gurov, TCS Idag Induktiva datatyper: Träd (inte inbyggd) Binära träd utan data Binära träd med data Prolog-specifika konstruktioner Negation,

Läs mer

DD1361 Programmeringsparadigm HT15

DD1361 Programmeringsparadigm HT15 DD1361 Programmeringsparadigm HT15 Logikprogrammering 3 Dilian Gurov, TCS Idag Induktiva datatyper: Träd (inte inbyggd) Binära träd utan data Binära träd med data Prolog-specifika konstruktioner Negation,

Läs mer

Traditionell Programmering

Traditionell Programmering Crash Course in Prolog Baran Çürüklü Introduktion till PROLOG, dvs. PROgramming in LOGic Prolog-programmen är deklarativa och består av egenskaper, relationer och regler. Lisp and Prolog är de vanligaste

Läs mer

Centrala begrepp i prolog och logikprogrammering. Annamaris lista

Centrala begrepp i prolog och logikprogrammering. Annamaris lista Centrala begrepp i prolog och logikprogrammering Annamaris lista Databas med fakta och regler: Ett prolog-system består av en databas av fakta, och regler som gäller för dessa fakta. Fakta har formen av

Läs mer

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det? Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?

Läs mer

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15 DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION 120607 08:15-13: 15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition En ordbok: studentenshemspråk engelska Betygsgräns:

Läs mer

Ett Logikprogram. Logik och Programmering. Introduktion till PROLOG, dvs. PROgramming in LOGic. Viktiga begrepp/områden i Prolog. Framtiden?

Ett Logikprogram. Logik och Programmering. Introduktion till PROLOG, dvs. PROgramming in LOGic. Viktiga begrepp/områden i Prolog. Framtiden? Crash Course in Prolog Peter Funk FUKO HT2001 IDt, Computer Science and Engineering Mälardalen University Västerås, Sweden Peter.Funk@mdh.se Introduktion till PROLOG, dvs. PROgramming in LOGic Prolog-programmen

Läs mer

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer. Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Introduktion till formella metoder Programmeringsmetodik 1. Inledning Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur

Läs mer

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1. Välkomna till DIT012 IPGO 1 Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1. Lärare och Handledare Kursansvariga, examinatorer, föreläsare och handledare

Läs mer

Introduktion till Haskell

Introduktion till Haskell Introduktion till Haskell Elias Riedel Gårding NMA11, Teknisk Fysik (KTH) 2014 18 februari 2018 Elias Riedel Gårding (NMA11, F14) Introduktion till Haskell 18 februari 2018 1 / 29 Om Haskell Historik 1927:

Läs mer

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn. Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E Föreläsning 4: Villkor och rekursion Konverterar mellan de grundläggande typerna: >>> int("") >>> int(.999) >>> float().0

Läs mer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program

Läs mer

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer. Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera

Läs mer

Hur fattar samhället beslut när forskarna är oeniga?

Hur fattar samhället beslut när forskarna är oeniga? Hur fattar samhället beslut när forskarna är oeniga? Martin Peterson m.peterson@tue.nl www.martinpeterson.org Oenighet om vad? 1.Hårda vetenskapliga fakta? ( X observerades vid tid t ) 1.Den vetenskapliga

Läs mer

Föreläsning 10 i programmeringsparadigm. Boxmodellen för append.

Föreläsning 10 i programmeringsparadigm. Boxmodellen för append. Föreläsning 10 i programmeringsparadigm. Boxmodellen för append. Jag försöker förklara denna bild för en körning av append([1,2], [3, 4], Rs) närmare på föreläsningen. Principen är att vid anrop (Call)

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Imperativ programmering

Imperativ programmering Imperativ programmering 1DL126 3p Imperativ programmering Jesper Wilhelmsson ICQ: 20328079 Yahoo: amigajoppe MSN / epost: jesperw@it.uu.se Rum: 1335 Tel: 471 1046 Imperativ programmering Vilka programmeringsspråk

Läs mer

Prova på-laboration i Prolog

Prova på-laboration i Prolog Prova på-laboration i Prolog Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2006-09-12 1. Introduktion till Prolog Programspråket Prolog konstruerades i början

Läs mer

Deklarativt programmeringsparadigm

Deklarativt programmeringsparadigm Deklarativt programmeringsparadigm Det vi introducerade på förra föreläsningen var ett exempel på deklarativ programmering. Vi specificerade en fallanalys som innehöll fakta och regler för hur man skulle

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program

Läs mer

Föreläsning 8. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1.

Föreläsning 8. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1. Föreläsning 8. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1. Användning av Prolog. Haskell kan i princip användas till mycket, men grafiska paket, kopplingar till färdiga

Läs mer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är

Läs mer

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang) Tentamen i Programmeringsteori Institutionen for datorteknik Uppsala universitet 1996{08{14 Larare: Parosh A. A., M. Kindahl Plats: Polacksbacken Skrivtid: 9 15 Hjalpmedel: Inga Anvisningar: 1. Varje bevissteg

Läs mer

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15 TENTAMEN I PROGRAMSPRÅK -- DVG C01 140605 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

Läs mer

DD1361 Programmeringsparadigm. Carina Edlund

DD1361 Programmeringsparadigm. Carina Edlund DD1361 Programmeringsparadigm Carina Edlund carina@nada.kth.se Funktionell programmering Grundidéen med funktionell programmering är att härma matematiken och dess funktionsbegrepp. Matematiskt funktionsbegrepp

Läs mer

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk 1 Dagens föreläsning Programmering i Lisp Fö 7 Kopplingen funktionella programmering och diskret matematik. Jämför vad ni hittills gjort i denna kurs och i den diskreta matematiken, med referenser in i

Läs mer

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion Introduktion till programmering Föreläsning 4: Villkor och rekursion 1 1 Några inbyggda funktioner (med resultat!) Konverterar mellan de grundläggande typerna: >>> int("32") 32 >>> int(3.999) 3 >>> float(32)

Läs mer

Tentamensdag 2002-aug-20 Tentamen i Funktionell Programmering Skrivtid 5 h

Tentamensdag 2002-aug-20 Tentamen i Funktionell Programmering Skrivtid 5 h Nada Tentamensdag 2002-aug-20 Tentamen i Funktionell Programmering Skrivtid 5 h Antalet uppgifter : 5 ( 26p +22p + 14p +26p + 12 p= 100 p ) Lärare, jourhavande lärare : Leif Kusoffsky ------------------------------------------------------------------------------------------------------------------

Läs mer

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180) Göteborgs Universitet och Chalmers Tekniska Högskola 19 januari 2005 Datavetenskap TDA180/TDA181/INN110 Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180) Onsdagen

Läs mer

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15 OMTENTAMEN I PROGRAMSPRÅK -- DVG C01 130823 kl. 08:15-13: 15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

Läs mer

Föreläsning [ ] i programmeringsparadigm. Om multiparadigm-språket OZ och en tjock bok.

Föreläsning [ ] i programmeringsparadigm. Om multiparadigm-språket OZ och en tjock bok. Föreläsning [14.. 15] i programmeringsparadigm. Jag har ju delat ut Lite grann om syntax, semantik och syntaxanalys. Några ex finns på Nadas kursexpedidition. Labben "Danska räkneord" ska göras med en

Läs mer

Utvärdering SFI, ht -13

Utvärdering SFI, ht -13 Utvärdering SFI, ht -13 Biblioteksbesöken 3% Ej svarat 3% 26% 68% Jag hoppas att gå till biblioteket en gång två veckor I think its important to come to library but maybe not every week I like because

Läs mer

Support Manual HoistLocatel Electronic Locks

Support Manual HoistLocatel Electronic Locks Support Manual HoistLocatel Electronic Locks 1. S70, Create a Terminating Card for Cards Terminating Card 2. Select the card you want to block, look among Card No. Then click on the single arrow pointing

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D1370 Tentamensdag 2001-maj-31 Tentamen i Funktionell Programmering Skrivtid 4 h

Kungliga Tekniska Högskolan Ämneskod 2D1370 Tentamensdag 2001-maj-31 Tentamen i Funktionell Programmering Skrivtid 4 h Kungliga Tekniska Högskolan Ämneskod 2D1370 Nada Tentamensdag 2001-maj-31 Tentamen i Funktionell Programmering Skrivtid 4 h Antalet uppgifter : 4 ( 8p +10p + 10p +12p = 40 p) Lärare, jourhavande lärare

Läs mer

Adding active and blended learning to an introductory mechanics course

Adding active and blended learning to an introductory mechanics course Adding active and blended learning to an introductory mechanics course Ulf Gran Chalmers, Physics Background Mechanics 1 for Engineering Physics and Engineering Mathematics (SP2/3, 7.5 hp) 200+ students

Läs mer

Program & programmering

Program & programmering Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,

Läs mer

Writing with context. Att skriva med sammanhang

Writing with context. Att skriva med sammanhang Writing with context Att skriva med sammanhang What makes a piece of writing easy and interesting to read? Discuss in pairs and write down one word (in English or Swedish) to express your opinion http://korta.nu/sust(answer

Läs mer

Föreläsning 5 i programmeringsparadigm.

Föreläsning 5 i programmeringsparadigm. Föreläsning 5 i programmeringsparadigm. λ-notation (lamda-notation, anonyma funktioner). Hutton 4.5. (Fokker 2.3.4.) Vi kan om vi vill definiera hjälpkonstanter, t ex i denna funktiondefinition : kommunalskatt

Läs mer

Make a speech. How to make the perfect speech. söndag 6 oktober 13

Make a speech. How to make the perfect speech. söndag 6 oktober 13 Make a speech How to make the perfect speech FOPPA FOPPA Finding FOPPA Finding Organizing FOPPA Finding Organizing Phrasing FOPPA Finding Organizing Phrasing Preparing FOPPA Finding Organizing Phrasing

Läs mer

JavaScript del 3 If, Operatorer och Confirm

JavaScript del 3 If, Operatorer och Confirm JavaScript del 3 If, Operatorer och Confirm Under förra uppgiften så kollade vi på hur användaren kan ge oss information via promt(), vi använde den informationen både för att skriva ut den och för att

Läs mer

DD1361 Programmeringsparadigm Föreläsning 1: Intro

DD1361 Programmeringsparadigm Föreläsning 1: Intro DD1361 Programmeringsparadigm Föreläsning 1: Intro Per Austrin KTH 2015-08-31 https://www.kth.se/social/course/dd1361/ Dagens föreläsning Översikt om: 1. Ämnet 2. Lärarna 3. Kursformalia (betyg etc) Dagens

Läs mer

Datavetenskapligt program, N1COS

Datavetenskapligt program, N1COS Ansökan om fortsatta studier inom program, våren 2015 Datavetenskapligt program, N1COS Inför varje termin måste du söka till de kurser du vill gå. Sista datum för ansökan till höstens kurser är den 15

Läs mer

Introduktion till programmering. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci...

Introduktion till programmering. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci... Introduktion till programmering Standardfunktioner Tecken och strängar Utskrifter och effekter Föreläsning 2 Prelude Alla fördefinierade funktioner vi använder definieras i modulen Prelude. Denna modul

Läs mer

Föreläsning 4 (och 5?) i programmeringsparadigm.

Föreläsning 4 (och 5?) i programmeringsparadigm. Föreläsning 4 (och 5?) i programmeringsparadigm. Högre ordningens funktioner på listor; funktioner som argument: map, filter. (Fokker 3.1.3, C&K p 37, 38) map -- förändra alla element i en lista på samma

Läs mer

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik SIGNALBEHANDLING I MULTIMEDIA, EITA50, LP4, 209 Inlämningsuppgift av 2, Assignment out of 2 Inlämningstid: Lämnas in senast kl

Läs mer

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p) UMEÅ UNIVERSITY Department of Mathematics and Mathematical Statistics Pre-exam in mathematics Linear algebra 2012-02-07 1. Compute the following matrix: (2 p 3 1 2 3 2 2 7 ( 4 3 5 2 2. Compute the determinant

Läs mer

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg Introduktion till programmering D0009E Föreläsning 1: Programmets väg 1 Vad är en dator? En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne (inte helt olikt förra

Läs mer

Flervariabel Analys för Civilingenjörsutbildning i datateknik

Flervariabel Analys för Civilingenjörsutbildning i datateknik Flervariabel Analys för Civilingenjörsutbildning i datateknik Henrik Shahgholian KTH Royal Inst. of Tech. 2 / 9 Utbildningens mål Gällande matematik: Visa grundliga kunskaper i matematik. Härmed förstås

Läs mer

Men först: Några funktioner ur preluden. Introduktion till programmering. Uppgiften. Variationer av uppgiften. Föreläsning 4

Men först: Några funktioner ur preluden. Introduktion till programmering. Uppgiften. Variationer av uppgiften. Föreläsning 4 Introduktion till programmering Men först: Några funktioner ur preluden Vad är skillnaden mellan head str och take 1 str? Föreläsning 4 Ett större exempel. head :: [a] -> a take :: Int -> [a] -> [a] tail

Läs mer

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall COMPUTABILITY BERÄKNINGSBARHET Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall Den centrala frågan: givet ett problem, kan det ha en algoritmisk lösning?

Läs mer

DVA336 (Parallella system, H15, Västerås, 24053)

DVA336 (Parallella system, H15, Västerås, 24053) DVA336 (Parallella system, H15, Västerås, 24053) Respondents: 28 Answer Count: 9 Answer Frequency: 32,14 % Teaching methods The teaching methods in the course, that is their practical implementation and

Läs mer

Föreläsning 11 i programmeringsparadigm. Boxmodellen i Sicstus-manualen.

Föreläsning 11 i programmeringsparadigm. Boxmodellen i Sicstus-manualen. Föreläsning 11 i programmeringsparadigm. Boxmodellen i Sicstus-manualen. The Procedure Box Control Flow Model During debugging, the debugger prints out a sequence of goals in various states of instantiation

Läs mer

Föreläsning 8 Innehåll

Föreläsning 8 Innehåll Föreläsning 8 Innehåll Orientering om samarbete om Eclipse-projekt med git Orientering om konstruktion av användargränssnitt i Android Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering

Läs mer

Sats. Om t är en rätvinklig triangel så är summan av kvadraterna på kateterna i t lika med kvadraten på hypotenusan.

Sats. Om t är en rätvinklig triangel så är summan av kvadraterna på kateterna i t lika med kvadraten på hypotenusan. Lunds tekniska högskola Datavetenskap Lennart Andersson Föreläsningsanteckningar EDAF10 3 Predikatlogik 3.1 Motivering I satslogiken är de minsta beståndsdelarna satslogiska variabler som kan anta värdena

Läs mer

Länkning av Prolog under C

Länkning av Prolog under C Länkning av Prolog under C Kent Boortz Swedish Institute of Computer Science Box 1263, S-164 28 Kista, Sweden 1 september 1991 T91:14 Sammanfattning SICStus länkmoduler ger möjlighet att blanda Prolog-

Läs mer

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180) Göteborgs Universitet och Chalmers Tekniska Högskola 25 oktober 2005 Datavetenskap TDA180/TDA181/INN110 Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180) Onsdagen

Läs mer

Deklarativ programmering

Deklarativ programmering Kursens mål Deklarativ programmering Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap Linköpings universitet 2008-02-26 redogöra för och använda reguljära uttryck använda XML för att definera

Läs mer

Föreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

Läs mer

Språket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.

Språket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck. DAT 060: Introduktion till (funktions)programmering. Jacek Malec m. fl. www.cs.lth.se/home/jacek Malec/dat060 Idag: 1. Kursens innehåll 2. Kursens organisation 3. Programmeringsspråket Scheme 4. Introduktion

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Webbregistrering pa kurs och termin

Webbregistrering pa kurs och termin Webbregistrering pa kurs och termin 1. Du loggar in på www.kth.se via den personliga menyn Under fliken Kurser och under fliken Program finns på höger sida en länk till Studieöversiktssidan. På den sidan

Läs mer

Logik och kontrollstrukturer

Logik och kontrollstrukturer Logik och kontrollstrukturer Flödet av instruktioner i ett programmeringsspråk bygger vi upp med hjälp av dess kontrollstrukturer. I C har vi exemplen if, if else, while, do while. Dessutom finns switch

Läs mer

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

Module 1: Functions, Limits, Continuity

Module 1: Functions, Limits, Continuity Department of mathematics SF1625 Calculus 1 Year 2015/2016 Module 1: Functions, Limits, Continuity This module includes Chapter P and 1 from Calculus by Adams and Essex and is taught in three lectures,

Läs mer

samhälle Susanna Öhman

samhälle Susanna Öhman Risker i ett heteronormativt samhälle Susanna Öhman 1 Bakgrund Riskhantering och riskforskning har baserats på ett antagande om att befolkningen är homogen Befolkningen har alltid varit heterogen när det

Läs mer

Förskola i Bromma- Examensarbete. Henrik Westling. Supervisor. Examiner

Förskola i Bromma- Examensarbete. Henrik Westling. Supervisor. Examiner Förskola i Bromma- Examensarbete Henrik Westling Handledare/ Supervisor Examinator/ Examiner Ori Merom Erik Wingquist Examensarbete inom arkitektur, grundnivå 15 hp Degree Project in Architecture, First

Läs mer

Workplan Food. Spring term 2016 Year 7. Name:

Workplan Food. Spring term 2016 Year 7. Name: Workplan Food Spring term 2016 Year 7 Name: During the time we work with this workplan you will also be getting some tests in English. You cannot practice for these tests. Compulsory o Read My Canadian

Läs mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18 TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis

Läs mer

Pre-Test 1: M0030M - Linear Algebra.

Pre-Test 1: M0030M - Linear Algebra. Pre-Test : M3M - Linear Algebra. Test your knowledge on Linear Algebra for the course M3M by solving the problems in this test. It should not take you longer than 9 minutes. M3M Problem : Betrakta fyra

Läs mer

Enjoy Vattenfallsmodellen i funktionella språk

Enjoy Vattenfallsmodellen i funktionella språk Föreläsning 2 i Programmeringsparadigm Funktionell programmering := variabler pekare sidoeffekter ;...; Fy, fy => bugfree förståeliga korta inga "satser", bara uttryck! Enjoy Vattenfallsmodellen i funktionella

Läs mer

Software Technology. Josef Svenningsson

Software Technology. Josef Svenningsson Software Technology Josef Svenningsson Software Technology Software Technology Området Software Technology handlar i mångt och mycket om följande frågeställning: Hur designar man programmeringsspråk för

Läs mer

Enjoy Vattenfallsmodellen i funktionella språk

Enjoy Vattenfallsmodellen i funktionella språk Föreläsning 2 i Programmeringsparadigm Funktionell programmering := variabler pekare sidoeffekter ;...; Fy, fy => bugfree förståeliga korta inga "satser", bara uttryck! Enjoy Vattenfallsmodellen i funktionella

Läs mer

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell Kursen bedöms med betyg, 4, 5 eller underänd, där 5 är högsta betyg. För godänt betyg rävs minst 4 poäng från uppgifterna -7. Var och en av dessa sju uppgifter an ge maximalt poäng. För var och en av uppgifterna

Läs mer

Travel General. General - Essentials. General - Conversation. Asking for help. Asking if a person speaks English

Travel General. General - Essentials. General - Conversation. Asking for help. Asking if a person speaks English - Essentials Can you help me, please? Asking for help Do you speak? Asking if a person speaks Do you speak _[language]_? Asking if a person speaks a certain language I don't speak_[language]_. Clarifying

Läs mer

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

Läs mer

ALGORITMER, OPTIMERING OCH LABYRINTER

ALGORITMER, OPTIMERING OCH LABYRINTER ALGORITMER, OPTIMERING OCH LABYRINTER Text: Marie Andersson, Learncode AB Illustrationer: Li Rosén Foton: Shutterstock Har du någonsin lagat mat efter recept eller monterat ihop en möbel från IKEA? Då

Läs mer

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson Kravhantering På Riktigt, 16 maj 2018 Anna Fallqvist Eriksson Agilista, Go See Talents linkedin.com/in/anfaer/

Läs mer

Deklarativ programmering

Deklarativ programmering Deklarativ programmering TDP007 Konstruktion av datorspråk Föreläsning 7 Peter Dalenius Institutionen för datavetenskap 2014-03-03 Deklarativ programmering Program skrivet i ett deklarativt språk logikspråk,

Läs mer

Föreläsning 6 i programmeringsparadigm. Tips kring programmering i Haskell och kring labbarna.

Föreläsning 6 i programmeringsparadigm. Tips kring programmering i Haskell och kring labbarna. Föreläsning 6 i programmeringsparadigm. Tips kring programmering i Haskell och kring labbarna. Att arbeta med två fönster. Hugs är ju en tolk (interpreter) vilket har stora fördelar vid programutveckling.

Läs mer

Wittgenstein for dummies Eller hur vi gör det obegripliga begripligt. Västerås 15 februari 2017

Wittgenstein for dummies Eller hur vi gör det obegripliga begripligt. Västerås 15 februari 2017 Wittgenstein for dummies Eller hur vi gör det obegripliga begripligt Västerås 15 februari 2017 En värld är varje människa, befolkad av blinda varelser i dunkelt uppror mot jaget konungen som härskar över

Läs mer

Read Texterna består av enkla dialoger mellan två personer A och B. Pedagogen bör presentera texten så att uttalet finns med under bearbetningen.

Read Texterna består av enkla dialoger mellan två personer A och B. Pedagogen bör presentera texten så att uttalet finns med under bearbetningen. ! Materialet vill ge en gemensam bas av användbara fraser för dialoger i klassrummet. skapa dialoger mellan elever på engelska. skapa tydliga roller för två personer, och. presentera meningsfulla fraser

Läs mer