Föreläsning 13 i programmeringsparadigm.

Storlek: px
Starta visningen från sidan:

Download "Föreläsning 13 i programmeringsparadigm."

Transkript

1 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 skriven med någon av de metoder som finns i häftet. Du kan välja mellan: Vårt parser-språk (byggt på Haskell, kapitel 2, sid 12). Hjälp på filen /info/progp05/parser.hs DCG (byggt på Prolog, kapitel 5 sid 35, Brna Chapter 8, p 78) "Imperativ Haskell" (kapitel 4, sid 30). Hjälp på filen /info/progp05/imphaskellparser.hs Java. (kapitel 3, sid 22) Hjälp på filen /info/progp05/terminallist.java Som avslutning några svårare exempel (svårare än tentaproblem) och för ett problem diskusion kring backtracking i Prolog och Haskell. Ett klassiskt datorprogram : Eliza. Efter Sterling och Shapiro Program Programmen i denna bok finns på Programmet 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. Imponerande "intellegent" för att vara ett 40-tal rader Prolog. Men inte helt lätt att förstå procedurellt om man inte är van prologprogrammerare. Ett liknande 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 Poer and Human reason ) /* Körning?- eliza. : [i, am, unhappy]. Ho long have you been unhappy? : [my, father, loves, me]. Please you tell me more about father : [i, am, unhappy]. Ho long have you been unhappy? : [since, yesterday]. Please go on. : [hat, shall, i, do]. Please go on. : [i, feel, happy]. Do you often feel that ay? : [bye]. Goodbye. I hope I have helped you yes */

2 /* eliza :- Simulates a conversation via side effects. */ % You need to type in a list of ords 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), % Sophisticated multi-use of match! match(stimulus,table,input), % Ny Table skapas och fylls med 1 =.., osv match(response,table,output),% Samma Table används, I Respons ersätts 1, 2 osv reply(output), % Endast procedurell läsning read(input1), % Endast procedurell läsning!, eliza(input1). % Endast procedurell läsning /* match(pattern,dictionary,words) :- Pattern matches the list of ords Words, and matchings are recorded in the Dictionary. */ match([n Pattern],Table,Target) :- integer(n), % True if N is bound to an integer lookup(n,table,lefttarget), append(lefttarget,righttarget,target), match(pattern,table,righttarget). match([word Pattern],Table,[Word Target]) :- atom(word), % True if N is bound to an atom match(pattern,table,target). match([],table,[]). /* pattern(stimulus,response) :- Response is an applicable response pattern to the pattern Stimulus. */ pattern([i,am,1],[ Ho,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,ay,?]). 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]) :- rite(head), rite( ), reply(tail). reply([]) :- nl. % ne line. 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). Märk att lookup, trots sitt namn, kan användas för att utvidga och skapa en tabell:?- lookup(1,table, siv), lookup(2,table, eva). Table = [(1,siv),(2,eva) _A]? ; no

3 lookup kan förstås även användas för att slå upp i tabellen. Exempelvis om vi kompletterar den förra körningen med ett nytt delmål (sist) som slår upp värdet för 1 :?- lookup(1,table,siv), lookup(2,table,eva), lookup(1,table, Info1). Info1 = siv, Table = [(1,siv),(2,eva) _A]? ; no 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. Klart att varje dam måste ha en egen rad och kolumn. Vi kan representera en lösning som en permuterad lista [1..8], en lista [ med vilken rad damen i kolumn 1 står på, vilken rad damen i kolumn 2 står på,... ] Lösningen [4, 2, 7, 3, 6, 8, 5, 1 ] /* 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. [ro for placement of Queen in column 1, ro for placement of Queen in column 2,... ] Finns i /info/progp02/prolog/queens.pl */ Naivt generera-test-program: queens(n,qs) :- range(1,n,ns), permutation(ns,qs), safe(qs). % -- generate and - test - % range(m,n,ps) Ps is a list ith elements from M to N % i. e. in Haskell the list [m..n] range(m,n,[m Ns]) :- M < N, M1 is M+1, range(m1,n,ns). range(n,n,[n]). % safe(qs) :- The placement Qs is safe. /* safe([q Qs]) :- safe(qs), \+ attack(q,qs). safe([]).

4 attack(6, [8, 5, 1]) om attack(6, 1, [8, 5, 1) attack(6, 1, [8 [5, 1]]) om 6 is 8+1 eller 6 is 8-1 eller attack(6, 2, [5, 1] % osv rekursivt, diagonalerna tomma, blir false */ % attack(x,xs) A Queen in next column in ro X attacks some Queen in previous column placed as Xs attack(x,xs) :- attack(x,1,xs). attack(x,n,[y Ys]) :- X is Y+N. attack(x,n,[y Ys]) :- X is Y-N. attack(x,n,[y Ys]) :- N1 is N+1, attack(x,n1,ys). 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), \+ attack(q,safeqs), queens(unplacedqs1,[q SafeQs],Qs). %Ok,place ne safe queen. queens([],qs,qs). %No unplaced queen, safe queens = solution Problemet löst i Haskell (med Prologliknade körsätt) : module Queens here -- 8 queens problem -- try ::[Integer] -> [Integer] -> [Integer] -> [[Integer]] -- Unplaced Queens -> Tried Queens -> Placed Queens -> -- List of solutions -- Backtracking is represented by recursion. -- Depth-first-search try [] [] safeqs = [safeqs] -- found one solution try [] triedqs safeqs = [] -- no solution try (q:unplacedqs) triedqs safeqs attack q safeqs = res2 -- back-track otherise = res1 ++ res2 -- place + back-track here res1 = try (triedqs++unplacedqs) ([]) (q:safeqs) res2 = try (unplacedqs) (q:triedqs) (safeqs)

5 attack :: Integer -> [Integer] -> Bool attack x xs = att x 1 xs here att x n [] = False att x n (y:ys) = x == y+n x == y-n att x (n+1) ys -- Run as try [1..8] [] [] -- Prolog like presentation of list::[a] haskellprolog :: Sho a => ([a], String) -> IO() haskellprolog (solution : solutions, qv) = do putstr (qv ++ " = " ++ sho solution ++ "? ") c <- getline if c == "" then putstr("\nyes") else haskellprolog (solutions, qv) haskellprolog ([], qv) = putstr("\no") queens (n,qv) = (try [1..n] [] [], qv) -- A run: 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 På grund av att Haskell har lat evaulering så fungerar detta program som Prolog, om vi bara vill se första lösningen så räknas bara den lösningen ut. De kan man se om vi gör :s +ts : Queens> :s +ts Queens> haskellprolog(queens(8,"rs")) Rs = [4,2,7,3,6,8,5,1]? yes :: IO () ( reductions, cells) 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]? ; Rs = [3,5,2,8,6,4,7,1]? ; Rs = [5,7,1,3,8,6,4,2]? ; Rs = [4,6,8,3,1,7,5,2]? ; Rs = [3,6,8,1,4,7,5,2]? yes :: IO () ( reductions, cells)

6 Backtracing i Prolog och Haskell. Boxmodellen för queens/3 blir queens/3 queens(u, select/3 \+ attack/2 queens/3 select/3 \+ attack/2 queens/3 queens(u,... queens([],.. queens([],.. Prolog kommer att "back-tracka" när \+ attack misslyckas, och söktädet blir förgrenat när vi gör Redo på select och vi kommer försöka med en ny dam i en kolonn. Ibland kommer att till slut, när \+ attack lyckas för 8 unifieringar av olika Q, listan med oplacerade damer bli tom och vi har nått ett löv i sökträdet. Besvaras förslaget med ; så backar vi till närmaste select och får ett nytt förslag på ett Q. Backar vi till ett selectsom med slut på oplacerade damer backar vi vidare till ett select längre till vänster. try fungerar på samma sätt; val av en dam motsvaras av att vi mönstermatchar fram en ny dam från listan med oplacerade damer så länge det finns oplacerade damer. q:unplacedqs motsvarar alltså UnplacedQs och select(q,unplacedqs,..) i queens i Prolog. För att kunna starta om har vi en extra parameter triedqs med damer som vi redan provat. I både Haskell och Prolog accumulerar vi placerade damer i parametrarna safeqs respektive SafeQs. I Haskell blir en lösning ett resultat för try en lista med 8 damer [safeqs] och en frånvaro av lösning en tom lista []. Förgreningen sker pga att vi har förgrenande rekursion: res1 ++ res2 dvs try (triedqs++unplacedqs) [] (q:safeqs) ++ try (unplacedqs) (q:triedqs) (safeqs) Som redan påpekats: På grund av att Haskell har lat evaulering så fungerar körningen under haskellprolog som Prolog. Haskell är lat och räknar inte ut någon del av sökträdet som inte efterfrågas. Prolog måste som vanligt släpa med en extra parameter för resultat av annan typen än Bool. Problem av denna typ brukar räknas som lite svårare i andra paradigmer än den logiska. Men lär man sig hur Prolog funkar så blir man så småningom rätt bra att lösa problemen i t ex Haskell också. Kunskaper om en paradigmer gör att man blir bättre programmerare i andra paradigmer.

7 En trimmad Sudoki-lösning. select(x, [X Xs], Xs). select(x, [Y Ys], [Y Zs]) :- select(x, Ys, Zs). ninecheck(xs) :- select(1,xs, Xs1), select(2,xs1, Xs2), select(3,xs2, Xs3), select(4,xs3, Xs4), select(5,xs4, Xs5), select(6,xs5, Xs6), select(7,xs6, Xs7), select(8,xs7, Xs8), Xs8 = [9]. nxncheck([]). nxncheck([n Ns]):- ninecheck(n),nxncheck(ns). % sort(xs,ys) :- The list Ys is an ordered permutation of the Xs. quicksort([x Xs],Ys) :- partition(xs,x,littles,bigs), quicksort(littles,ls), quicksort(bigs,bs), append(ls,[x Bs],Ys). quicksort([],[]). partition([x Xs],Y,[X Ls],Bs) :- lesst(x,y),!, partition(xs,y,ls,bs). partition([x Xs],Y,Ls,[X Bs]) :- partition(xs,y,ls,bs). partition([],_,[],[]). lesst(list1, List2) :- avar(list1, I1), avar(list2, I2), I1 =< I2. avar([], 0) avar([x Xs], I) :- var(x),!, avar(xs, J), I is J +1. avar([_ Xs], I) :- avar(xs, I). % var(x) är sant om X fortfarande inte unifieras när vi försöker detta mål vid körning. var(x) har bara procedurell läsning. % Låt oss slå ihop alla tre 9x9-grupper (alla rader, alla kolonner, och alla delkvadrater så vi får en lista med 27 st 9-listor Sx. Om vi sortera Sx till Sy så att de 9-grupper som har många element somredan är tal så borde sökträcen bli mycket mindre. xcheck(s) :- trans(s,st,sg), append(s, St, Sa), append(sa, Sg, Sx), quicksort(sx, Sy),nXnCheck(Sy). Detta visar sig också vara fallet; lösningen fån föreläsning 11 klarar ca 17 saknade tal på rimlig tid men nu kan man pröva med ca 40 obekanta. men för att klara tidningarnas problem måste vi nog tänka lite till. När vi nu trimmat lösningen har vi inte kunna nöja oss med den logiska lösningen. Dessutom har vi genom att tänka procedurellt tänkt på ett visst körfall; den trimmade lösningen är inget framsteg för att kolla en given sudoku.

8 Prologdelen av fjolårs-tentan: 6. a) Skriv ett predikat för select(x,harxs,ettmindrexs) med betydelsen att listan EttMindreXs är resultatet av att en förekomst av X har tagits bort från HarXs. b) Skriv ett predikat för member(element,list) med betydelsen Element är ett element i listan List med hjälp av select. c) Skriv ett predikat för choosetofrom(list, E1, E2) med betydelsen att E1 och E2 är två olika element i listan List med hjälp av select och member. (10p) 7. Skriv i Prolog ett generate-and-test-program som löser följande problem: I en kappsegling deltar 7 båtar, bland annat Patricia. Spray kom precis innan Necesse. Endast Volo placerade sig precis mellan Maybee och Bonnie. Exakt en båt placerade sig mellan Spray och Maybee. Bigfoot kom precis mitt i resultatlistan. Hur ser resultatlistan ut? 12p) 8. Prologs semantik (procedurell läsning) kan beskrivas med Byrds boxmodel. a) Kommer vi till en box via Redo-porten kommer vi 1) alltid att lämna boxen via Fail-porten. X) alltid att lämna boxen via Call-porten. 2) att lämna boxen via Fail-porten eller via Exit-porten b) Kommer vi till en box via Call-porten kommer vi 1) alltid att lämna boxen via Fail-porten. X) alltid att lämna boxen via Exit-porten. 2) att lämna boxen via Fail-porten eller via Exit-porten. c) Kommer vi till en box via Redo- porten har vi 1) ofta lämnat efterföljande box via Call-porten. X) ofta lämnat efterföljande box via Exit-porten. 2) ofta lämnat efterföljande box via Fail-porten. d) Har vi lämnat en Exit-port och sedan passerat ett snitt (cut,!) 1) kommer vi in i efterföljande box (när sådan finns) via Call-porten. X) hoppar vi över efterföljande box (när sådan finns). 2) startar en "backtracking" e) Har vi lämnat en Fail-port och sedan passerat ett snitt (cut,!) 1) kommer vi in i föregående box (när sådan finns) via Redo-porten. X) kommer vi in i föregående box (när sådan finns) via Call-porten. 2) kommer vi inte in i föregående box (när sådan finns) via Redo-porten. 8p) 9 När man kör i Prolog-fönstret i emacs, vad skulle följande körningar (unifieringar) ge för resultat (Lyckas unifieringarna? Vilka substitutioner görs i så fall?)?- a= b.?- A= b.?- a= B.?- A= B.?- m(adam, rut) = m(adam, rut).?- m(adam, rut) = m(adam, rut).?- m(adam, rut) = m(adam, Adam).?- m(adam, rut) = m(adam, Rut).?- m(adam, rut) = m(rut, Rut).?- m(adam, rut) = M(adam, rut). (10p)

Föreläsning 11 i programmeringsparadigm. Negering.

Föreläsning 11 i programmeringsparadigm. Negering. 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

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

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

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

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

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

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. 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 : 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

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

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

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

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

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

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 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

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

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 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

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

Funktionell programmering DD1361

Funktionell programmering DD1361 Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->

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

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

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9 Quicksort Koffman & Wolfgang kapitel 8, avsnitt 9 1 Quicksort Quicksort väljer ett spcifikt värde (kallat pivot), och delar upp resten av fältet i två delar: alla element som är pivot läggs i vänstra delen

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

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

Laboration: Whitebox- och blackboxtesting

Laboration: Whitebox- och blackboxtesting Tilda11 höstterminen 2011 Laboration: Whitebox- och blackboxtesting Mål med laborationen Du ska lära dig begreppen white-box testing och black-box testing Du ska öva dig på att konstruera testfall Du ska

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

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

Föreläsning 6. Rekursion och backtracking

Föreläsning 6. Rekursion och backtracking Föreläsning 6 Rekursion och backtracking Föreläsning 6 Bredden först med hjälp av kö Lista rekursivt Tornet i Hanoi Backtracking Hissen i lustiga huset Huset har n antal våningar (bottenvåningen som räknas

Läs mer

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4 Grafer, traversering Koffman & Wolfgang kapitel 1, avsnitt 4 1 Traversering av grafer De flesta grafalgoritmer innebär att besöka varje nod i någon systematisk ordning precis som med träd så finns det

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

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

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst Outline Objektorienterad Programmering (TDDC77) Föreläsning IV: while, for, do while, switch, arrayer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Ordning Villkorliga hopp I Normalt sett så

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

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Skrivtid: 08.30 13.30 Hjälpmedel: Inga Lärare: Betygsgränser DVA104' Akademin)för)innovation,)design)och)teknik) Onsdag)2014:01:15) Caroline

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

Föreläsning 6. Rekursion och backtracking

Föreläsning 6. Rekursion och backtracking Föreläsning 6 Rekursion och backtracking Föreläsning 6 Bredden först med hjälp av kö Lista rekursivt Tornet i Hanoi Backtracking Läsanvisningar och uppgifter Hissen i lustiga huset Huset har n antal våningar

Läs mer

I kapitel 15 gör Hudak för reaktiva animeringar detsamma som han i kapitel 13 gör för animeringar. Resultatet är en module Fal.

I kapitel 15 gör Hudak för reaktiva animeringar detsamma som han i kapitel 13 gör för animeringar. Resultatet är en module Fal. Föreläsning 9. Hudak avsnitt 15.1, kapitel 14 2D1370 Funktionell programmering v19 tisdag Programmering av reaktiv animering. Vad går kapitel 15 ut på? I kapitel 15 gör Hudak för reaktiva animeringar detsamma

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

Några saker till och lite om snabbare sortering

Några saker till och lite om snabbare sortering Några saker till och lite om snabbare sortering Generellt om avbrott Generera avbrott Snabb sortering principer Snabb sortering i Scheme och Python QuickSort (dela städat slå ihop) Mergesort (dela slå

Läs mer

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Föreläsning 1, vecka 6: Abstraktion genom objektorientering TDA 548: Grundläggande Programvaruutveckling Föreläsning 1, vecka 6: Abstraktion genom objektorientering Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Hur skulle ni implementera detta? (3D demo) Vi återkommer

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

Par m 328 feet. Lång höger sväng. Korgen står placerad i en skogsglänta OB-linje på vänster sida.

Par m 328 feet. Lång höger sväng. Korgen står placerad i en skogsglänta OB-linje på vänster sida. 1 100 m 328 feet Lång höger sväng. Korgen står placerad i en skogsglänta -linje på vänster sida. Long right turn. Basket are placed in a forrest glade. -line on the left side. Snälla, skräpa ej ner vår

Läs mer

Tentamen TEN1 HI

Tentamen TEN1 HI Tentamen TEN1 HI1029 2015-03-17 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

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

F6: Högre ordningens funktioner. Mönster för rekursion (1) Mönster för rekursion (1b) Mönster för rekursion (2) Högre Ordningens Funktioner

F6: Högre ordningens funktioner. Mönster för rekursion (1) Mönster för rekursion (1b) Mönster för rekursion (2) Högre Ordningens Funktioner F6: Högre ordningens funktioner Mönster för rekursion (1) Mönster för rekursion Partiellt applicerbara funktioner Anonyma funktioner Op HOF på listor Sortering Listreduktion Funktionskomposition Rekursivt

Läs mer

Rekursion. Koffman & Wolfgang kapitel 5

Rekursion. Koffman & Wolfgang kapitel 5 Rekursion Koffman & Wolfgang kapitel 5 1 Rekursivt tänkande Rekursion reducerar ett problem till en eller flera enklare versioner av samma problem. med enklare menas att underproblemen måste vara mindre,

Läs mer

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2) Några saker till och lite om snabbare sortering GOTO och lägen GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort

Läs mer

Några saker till och lite om snabbare sortering

Några saker till och lite om snabbare sortering Några saker till och lite om snabbare sortering GOTO hemskt eller ett måste? CASE enkla val över diskreta värdemängder Snabb sortering principer Snabb sortering i Scheme och Pascal QuickSort (dela städat

Läs mer

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet Repetition Introduktion Repetition i Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde

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

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

Tentamen TEN1 HI

Tentamen TEN1 HI Tentamen TEN1 HI1029 2014-03-14 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

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

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

Föreläsning 4 (och 5?) i programmeringsparadigm. Föreläsning 4 (och 5?) i programmeringsparadigm. Korrekta bilnummer. Programmet, som visar att man ibland använder smarta mönster för att skriva eleganta program, finns på /info/progp02/haskelllectures/f4.

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

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer 729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser

Läs mer

Användning av datastrukturer Algoritmer och datastrukturer Obligatorisk Laboration nr 1

Användning av datastrukturer Algoritmer och datastrukturer Obligatorisk Laboration nr 1 1 (5) Användning av datastrukturer Algoritmer och datastrukturer Obligarisk nr 1 Syfte Att träna användning av Javas standardbibliotek för datastrukturer och algoritmer. Litteratur Weiss kap. 6, Skansholm

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

CARRY YOU HOME. I've been knocked down, I've been lost With the ground shaking under my feet I gave it all to someone, who'd said fire, run

CARRY YOU HOME. I've been knocked down, I've been lost With the ground shaking under my feet I gave it all to someone, who'd said fire, run I've been knocked down, I've been lost With the ground shaking under my feet I gave it all to someone, who'd said fire, run I've been I've been through the days When bright love turns into hate You bend

Läs mer

Lådmodellen....eller procedure box control flow model. Dynamisk bild av ett prologprogram Förklarar i detalj procedurell läsning av ett program.

Lådmodellen....eller procedure box control flow model. Dynamisk bild av ett prologprogram Förklarar i detalj procedurell läsning av ett program. Lådmodellen...eller procedure box control flow model. Dynamisk bild av ett prologprogram Förklarar i detalj procedurell läsning av ett program. Lådmodellen...eller procedure box control flow model. Dynamisk

Läs mer

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

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

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

kl Tentaupplägg

kl Tentaupplägg Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer

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

Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,

Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers, Exempel: Kappsäcksproblemet Backtracking Dynamisk programmering Föreläsning (Weiss kap..-) Kan man ur en grupp föremål F,,F N med vikterna V,,V N välja ut en delgrupp som väger exakt M kilo? Exempel: föremål

Läs mer

Användning av datastrukturer Algoritmer och datastrukturer Obligatorisk Laboration nr 1

Användning av datastrukturer Algoritmer och datastrukturer Obligatorisk Laboration nr 1 1 (5) Användning av datastrukturer Algoritmer och datastrukturer Obligarisk nr 1 Syfte Att träna användning av Javas standardbibliotek för datastrukturer och algoritmer. Litteratur Weiss kap. 6, Skansholm

Läs mer

Sista delen av kursen

Sista delen av kursen Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning

Läs mer

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Programspråkslingvistik. Sista delen av kursen. Ett programspråk Sista delen av kursen Programspråkslingvistik handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Praktisk vägledning för analys av kvalitetsfaktor Kontinuitet

Praktisk vägledning för analys av kvalitetsfaktor Kontinuitet Praktisk vägledning för analys av kvalitetsfaktor Kontinuitet Innehållsförteckning Metodbeskrivning för användning av bedömningsgrunderna för Förekomst av artificiella vandringshinder för vattendragvattenförekomster

Läs mer

Lektion 3. Anteckningar

Lektion 3. Anteckningar Lektion 3 Anteckningar Fraser: Tid Klockan Uttal (pronunciation) Långa och korta ljud + melodi Grammatik: Word order + Basics of the clause elements Vi lär oss klockan! Halv Kvart i, kvart över Tjugo i,

Läs mer

Laboration 3, uppgift En klass för en räknare

Laboration 3, uppgift En klass för en räknare Laboration 3, uppgift 1 3.1 En klass för en räknare Ursprungligen skriven av Erland Holmström. Magnus Myreen har uppdaterat vissa delar. Hösten 2014 Anvisningar: Programmet skall utformas enligt de principer

Läs mer

Resa Allmänt. Allmänt - Grundläggande. Allmänt - Konversation. Fråga om hjälp. Fråga om en person talar engelska

Resa Allmänt. Allmänt - Grundläggande. Allmänt - Konversation. Fråga om hjälp. Fråga om en person talar engelska - Grundläggande Can you help me, please? Fråga om hjälp Do you speak English? Fråga om en person talar engelska Do you speak _[language]_? Fråga om en person talar ett visst språk I don't speak_[language]_.

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

English. Things to remember

English. Things to remember English Things to remember Essay Kolla instruktionerna noggrant! Gå tillbaka och läs igenom igen och kolla att allt är med. + Håll dig till ämnet! Vem riktar ni er till? Var ska den publiceras? Vad är

Läs mer

Övning 1 - Abstrakta datatyper

Övning 1 - Abstrakta datatyper /home/lindahlm/activity-phd/teaching/12dd1320/exercise1/exercise1.py September 3, 20121 0 # coding : latin Övning 1 - Abstrakta datatyper 18 Summering Vi gick igenom betydelsen av abstrakta datatyper/datastrukturer.

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

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

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1 Kursinfo Introduktion till programmering Undervisning Föreläsning 1 Kursinformation Inloggning, filsystem, kommandotolk några inledande exempel Föreläsningar Fem föreläsningar, vardera 45 minuter. Allmänna

Läs mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2 Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2 Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok,

Läs mer

Flexiservice PS/2. Bruksanvisning

Flexiservice PS/2. Bruksanvisning Bruksanvisning Flexiservice PS/2 Handitek BRUX\...\809087 FLEXISERVICE PS/2 Gewa AB BOX 92, MALMVÄGEN 55, 191 22 SOLLENTUNA TEL: 08-594 694 00 TEXTTEL: 08-594 694 18 FAX: 08-594 694 19 E-MAIL: info@gewa.se

Läs mer

Sista delen av kursen

Sista delen av kursen Sista delen av kursen handlar om hur program, delprogram och datatyper deklareras och vad det man åstadkommit egentligen betyder. Innehåll Syntaktisk (hur ser det ut) och semantisk (vad betyder det) beskrivning

Läs mer

Förra gången: Primitiva data

Förra gången: Primitiva data Förra gången: Primitiva data > 30 30 > 45.56 45.56 Variabler: > (define telnr 6000) > telnr 6000 DA2001 (Föreläsning 3) Datalogi 1 Hösten 2013 1 / 24 Förra gången: Procedurapplikation: > (+ 7900000 telnr)

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

1.1 Skapa ett Inline-Script som skapar filen För att skapa ett inline script drar man InLine till där man vill ha själva scriptet.

1.1 Skapa ett Inline-Script som skapar filen För att skapa ett inline script drar man InLine till där man vill ha själva scriptet. 1.1 Skapa ett Inline-Script som skapar filen För att skapa ett inline script drar man InLine till där man vill ha själva scriptet. För att skapa en data-fil har jag i, simon-uppgiften, skapat ett InLine-script

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

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

Personlig information

Personlig information Min dagbok Personlig information Namn: Adress: Postnr: Postadress: Tel: E-post: Läkare/sjuksköterska Namn: Tel: Min dagbok Du har ordinerats cytostatikabehandling för behandling av din cancersjukdom. Denna

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

Resa Allmänt. Allmänt - Grundläggande. Allmänt - Konversation. Fråga om hjälp. Fråga om en person talar engelska

Resa Allmänt. Allmänt - Grundläggande. Allmänt - Konversation. Fråga om hjälp. Fråga om en person talar engelska - Grundläggande Kan du vara snäll och hjälpa mig? Fråga om hjälp Talar du engelska? Fråga om en person talar engelska Talar du _[språk]_? Fråga om en person talar ett visst språk Jag talar inte _[språk]_.

Läs mer

Resa Allmänt. Allmänt - Grundläggande. Allmänt - Konversation. Fråga om hjälp. Fråga om en person talar engelska

Resa Allmänt. Allmänt - Grundläggande. Allmänt - Konversation. Fråga om hjälp. Fråga om en person talar engelska - Grundläggande Can you help me, please? Fråga om hjälp Do you speak English? Fråga om en person talar engelska Do you speak _[language]_? Fråga om en person talar ett visst språk I don't speak_[language]_.

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-10-30 Repetition Analys av tidskomplexitet. Kostnadsmodeller. Asymptotisk komplexitet/notation. Dynamiska arrayer. Amorterad tidskomplexitet

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

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande: Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp

Läs mer

Programmering och Programspråk. 7,5 högskolepoäng. Namn: (Ifylles av student) Personnummer: (Ifylles av student)

Programmering och Programspråk. 7,5 högskolepoäng. Namn: (Ifylles av student) Personnummer: (Ifylles av student) Programmering och Programspråk Provmoment: Ladokkod: Tentamen ges för: Tentamen NPL011 Systemarkitektprogrammet 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum:

Läs mer