Föreläsning 10 i programmeringsparadigm. Boxmodellen för append.
|
|
- Elsa Karlsson
- för 4 år sedan
- Visningar:
Transkript
1 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) unifieras anropets argument med parametrarna i huvudet på den klausul som används, dvs en massa substitutioner sker. Substitutionerna är skrivna med kursiv stil i bilden nedan. Sker därefter ytterligaren ett anrop så sker ytterligare substitutioner osv. Vid en lyckad körning, dvs när vi lämmnar Exit-porten i den yttersta lådan som representerar frågan, så har det bildas en "kanal" kopplad till allt mer detaljerade värden på olika logiska variabler, och de logiska variablerna i frågan kan ges som ett detaljerat förslag. I bilden nedan har till slut Rs alias _276 blivit [1, 2, 3, 4]när vi kommer ut till höger. append([1, 2], [3, 4], Rs). append([], Ys, Ys). append/1 nivå 1 append([], Ys, Ys). append/2 nivå 2 append([x Xs],Ys,[X Zs]) X=1 Xs = [2] Ys = [3, 4] [X Zs] = Rs = _276 _276 = [1 _775] append([x Xs],Ys,[X Zs]) X=2 _775 = [2 _1169] Xs = [] Ys = [3, 4] append/3 nivå 3 append([], Ys, Ys). Ys = [3, 4] _1169 =[3,4] append([x Xs.. append([], Ys, Ys). append([x Xs], Ys, [X Zs]) :- append(xs, Ys, Zs).?- append([1, 2], [3, 4], Rs). 1 1 Call: append([1,2],[3,4],_276)? 2 2 Call: append([2],[3,4],_775)? 3 3 Call: append([],[3,4],_1169)? 3 3 Exit: append([],[3,4],[3,4])? 2 2 Exit: append([2],[3,4],[2,3,4])? 1 1 Exit: append([1,2],[3,4],[1,2,3,4])? Rs = [1,2,3,4]? Vid en mer invecklad körning, av annan program databas, där "backtracking" förkommit (Fail och Redo-portar har passerats "åt vänster"), så används inte de substitutioner som görs i de misslyckade sökförsöken, dvs i de grenar av sökträdet som inte "nått fram" till Exit- porten i frågans predikat. Sökträdet
2 Prologpredikat kan användas på många sätt. Se Brna avsnitt 6.1, The Reversibility of Prolog Programs. Ett lysande exempel på detta är append(?,?,?), som kan användas på massor av sätt.? betyder att argumentet kan vara både "inargument" och "utargument". % append(xs, Ys, XsYs) XsYs är resultatet när man konkatenerar listorna Xs och Ys % Haskell: append([], Ys, Ys). % (++) [] ys = ys append([x Xs],Ys,[X Zs]):-append(Xs,Ys,Zs).% (++) (x:xs) ys = x:(xs ++ ys) % Haskell med namn på rekursionantagandet % (++) (x:xs) ys = x:zs where zs=(xs++ys) Körningar på en mängd olika sätt: append(+, +, 1) suffix?- append([1, 2, 14], [22, 33], Res).% Vanlig använding, "som vi tänkte " Res = [1,2,14,22,33]? ; % append(+, +, -) + "in" - "out" % Funktion : Se föregående sida?- append([1], R, [1, 2, 3]). %append(+, -, +) suffix R = [2, 3]? ; % med trace: 1 1 Call: append([1],_228,[1,2,3])? 2 2 Call: append([],_228,[2,3])? 2 2 Exit: append([],[2,3],[2,3])? 1 1 Exit: append([1],[2,3],[1,2,3])? R = [2,3]? ;?- append(res, [22,33], [1,2,14,22,33] ). %append(+, -, +) prefix Res = [1,2,14]? ;?- append(r1, R2, [1,2,14]). %append(-, -, +) split R1 = [], R2 = [1,2,14]? ; R1 = [1], R2 = [2,14]? ; R1 = [1,2], R2 = [14]? ; R1 = [1,2,14], R2 = []? ; % med trace:?- append(r1, R2, [1,2,14]). 1 1 Call: append(_208,_230,[1,2,14])? 1 1 Exit: append([],[1,2,14],[1,2,14])? R1 = [], R2 = [1,2,14]? ; 1 1 Redo: append([],[1,2,14],[1,2,14])? 2 2 Call: append(_775,_230,[2,14])? 2 2 Exit: append([],[2,14],[2,14])? 1 1 Exit: append([1],[2,14],[1,2,14])? R1 = [1], R2 = [2,14]? ;
3 1 1 Redo: append([1],[2,14],[1,2,14])? 2 2 Redo: append([],[2,14],[2,14])? 3 3 Call: append(_1168,_230,[14])? 3 3 Exit: append([],[14],[14])? 2 2 Exit: append([2],[14],[2,14])? 1 1 Exit: append([1,2],[14],[1,2,14])? R1 = [1,2], R2 = [14]? ; 1 1 Redo: append([1,2],[14],[1,2,14])? 2 2 Redo: append([2],[14],[2,14])? 3 3 Redo: append([],[14],[14])? 4 4 Call: append(_1560,_230,[])? 4 4 Exit: append([],[],[])? 3 3 Exit: append([14],[],[14])? 2 2 Exit: append([2,14],[],[2,14])? 1 1 Exit: append([1,2,14],[],[1,2,14])? R1 = [1,2,14], R2 = []? ; 1 1 Redo: append([1,2,14],[],[1,2,14])? 2 2 Redo: append([2,14],[],[2,14])? 3 3 Redo: append([14],[],[14])? 4 4 Redo: append([],[],[])? 4 4 Fail: append(_1560,_230,[])? 3 3 Fail: append(_1168,_230,[14])? 2 2 Fail: append(_775,_230,[2,14])? 1 1 Fail: append(_208,_230,[1,2,14])? I Haskell kan vi inte använda (++) för att splittra listor, vi måste skriva en invers funktion: splits :: [a] -> [ ([a],[a]) ] splits [] = [ ([],[]) ] splits (x:xs) = ([], x:xs) : map f (splits xs) where f (a, b) = (x:a, b) I Prolog kan vi nu använda append/3 för att enkelt definiera t ex : prefix(xs, Ys) :- append(xs, _, Ys). suffix(xs, Ys) :- append( _, Xs, Ys). member(x, Ys) :- append(_, [X Xs], Ys). member/2 kan alternativt definieras som i Brna sid 57 : member(x,[x Xs]). member(x,[y Ys]) :- member(x,ys). % Y kan ersättas med _. Körningar av member/2:?- member(5, [3, 5, 6, 7]).?- member(x, [3, 5, 6]). X = 3? ; X = 5? ; X = 6? ;?- member(3, Rs). Rs = [3 _A]? ; Rs = [_A,3 _B]? ; Rs = [_A,_B,3 _C]?
4 ?- member(r, Rs). Rs = [R _A]? ; Rs = [_A,R _B]? Ytterligare ett exempel: adjacent(x, Y, Zs) :- append(_, [X,Y Ys], Zs). last(x, Xs) :- append(_, [X], Xs). Körningar:?- adjacent(14, 28, [23, 14, 28, 45]).?- adjacent(14, R, [23, 14, 28, 45]). R = 28? ; Program med "ackumulering i parameter". 1. Rekursiv definiton av reverse/2: % reverse(list, Tsil) :- Tsil är listan List med elmenten i omvänd ordning reverse1([], []). reverse1([x Xs], Zs):- reverse1(xs, Ys), append(ys, [X], Zs). Körning:?- reverse1([1, 2], Res). Res = [2,1]? ;?- reverse1(res, [1, 2]). Res = [2,1]? ; % Inget händer gör C-c Prolog interruption (h for help)? a {Execution aborted}?- trace.?- reverse1([1, 2], Res). 1 1 Call: reverse1([1,2],_224)? 2 2 Call: reverse1([2],_702)? 3 3 Call: reverse1([],_1100)? 3 3 Exit: reverse1([],[])? 4 3 Call: append([],[2],_702)? 4 3 Exit: append([],[2],[2])? 2 2 Exit: reverse1([2],[2])? 5 2 Call: append([2],[1],_224)? 6 3 Call: append([],[1],_3351)? 6 3 Exit: append([],[1],[1])? 5 2 Exit: append([2],[1],[2,1])? 1 1 Exit: reverse1([1,2],[2,1])? Res = [2,1]? ; Brna kallar detta sätt att resonera för "Building Structure in the Clause Head", se sid 60 långt ner på sidan. (Ovanför står ett helt felaktigt sätt att resonera). I sitt exempel använder Brna is. Till höger om is kan man skriva uttryck som räknas ut och unifieras med det som står till vänster om is, dvs man har tillgång till en funktionellt delspråk i Prolog. Se Brna avsnitt 6.1.1Vi kommer inte att använda detta mycket, kanske inte alls.
5 2. Definition av reverse/2 med hjälp av "ackumulering i parameter" i hjälpfunktion reverse/2 : reverse(xs, Ys) :- reverse(xs, [], Ys). reverse([x Xs], Acc, Ys) :- reverse(xs, [X Acc], Ys). reverse([], Ys, Ys). Körning:?- reverse([1, 2], Res). Res = [2,1]? ;?- reverse(res, [1, 2]). Prolog interruption (h for help)? a {Execution aborted}?- reverse([1,2], Res). 1 1 Call: reverse([1,2],_224)? 2 2 Call: reverse([1,2],[],_224)? 3 3 Call: reverse([2],[1],_224)? 4 4 Call: reverse([],[2,1],_224)? 4 4 Exit: reverse([],[2,1],[2,1])? 3 3 Exit: reverse([2],[1],[2,1])? 2 2 Exit: reverse([1,2],[],[2,1])? 1 1 Exit: reverse([1,2],[2,1])? Res = [2,1]? ; Märk att vi kan ha samma namn på två olika pedikat, ariteten (ställigheten, i vårt fall /2 respektive /3) räcker för att Prolog ska kunna skilja på predikaten. I Haskell måste varje namn ha en unik definition i sitt "scope". Brna kallar detta sätt att resonera för "Building Structure in the Clause Body", se sid 61. Avsnitt 6.1, 6.2 och 6.3 innehåller en hel del om programmeringsteknik i Prolog och om hur man programmerar listor.. Exempel på sorteringar. Insättningsortering i Prolog och Haskell (Haskellprogrammet modifierat från sid 44 i Fokker) sortlk([x Xs],Ys) :- sortlk(xs,zs), insert(x,zs,ys). sortlk([],[]). insert(x,[],x). insert(x,[y Ys],[Y Zs]) :- X > Y, insert(x,ys,zs). insert(x,[y Ys],[X,Y Ys]) :- X =< Y. sort :: Ord a => [a] -> [a] sort (x:xs) = insert x (sort xs) sort [] = [] insert:: Ord a => a-> [a] -> [a] insert x [] = [x] insert x (y:ys) x > y = y: insert x ys otherwise = x:y:ys I Prolog är > en operator. Operatorer är också predikat men med vissa speciella egenskaper, bl a används många med infix-placering. För att förstå sorteringsprogrammet ovan räcker det att förstå att t ex 3 < 5 lyckas, 5>=17 misslyckas. Operatorn = betyder att en unifiering sker.
6 Även quicksort blir ganska lika: /* sort(xs,ys) :- The list Ys is an ordered permutation of the list 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) :- X =< Y, partition(xs,y,ls,bs). partition([x Xs],Y,Ls,[X Bs]) :- X > Y, partition(xs,y,ls,bs). partition([],y,[],[]). -- Haskell : quicksort :: Ord a => [a] - [a] quicksort (x:xs) = ls ++ [x] ++ bs where (littles,bigs) = partion(xs, x) ls = quicksort littles, bs = quicksort bigs quicksort [] =[] partition Ord a => [a] -> a ->([a],[a]) partition (x:xs) y x <= y = (x :ls, bs) otherwise = (ls, x:bs) where (ls, bs) = partition xs y partition [] = ([],[]). Predikatet permutation från labben kan användas i en (ineffektiv) sortering : sort(xs,ys) :- permutation(xs,ys), ordered(ys). ordered([]). ordered([x]). ordered([x,y Ys]) :- X =< Y, ordered([y Ys]). Generate och test. Inför labben "Tidernas knepigaste problem". Det står lite grann om detta i Brna avsnitt 7.3, sid 70 till 72 ungefär. Ett exempel som liknar labben "Tidernas knepigaste problem" finns i labhäftet. Programmering i ren Prolog. Om man programmerar i ren Prolog (pure Prolog) har allt i programmet en logisk läsning. Man rekommnderar att man börjar programmera på detta sätt och tänker på programmet med den logiska läsningen. I den logiska läsningen spelar klausul-ordningen ingen roll, och delmålen i en regelkropp spelar ingen roll. I regel måste man även i rena prologprogram läsa programmet med en procedurell syn, för att programmet skall fungera (t ex inte gå in i en evig loop), bli snabbt mm. Det gäller bl a att klausul-ordningen bestämmer i vilken ordning man får lösningarna ordningen mellan delmålen i en regelkropp bestämmer hur sökningen går till. I apan-och-bananen-problemet på nästa sida får vi "oändliga lösningar först", dvs datorn svarar inte, om klausul-ordningen är olämplig
7 Apan och bananen (inte BanArne). Efter Bratko 2.5. Apan vid dörren är hungrig, men kan inte nå bananen som hänger för högt upp i mitten på rummet. Vid fönstret står en låda. Om lådan skulle stå mitt under bananen skulle apan nå bananen om den steg upp på lådan. Kan apan stilla sin hunger? Hur? atdoor middle atwindow Lösning: % state(horizontal position of monkey (atdoor/atwindow/middle), % vertical position of monkey( onbox/onfloor), % position of box (atdoor/atwindow/middle), % possesion of banana (has/hast)). % move(prestate, Action, PostState) Action changes state from PreState to % PostState. move(state(middle, onbox, middle, hast), grasp, state(middle, onbox, middle, has)). move(state(p, onfloor, P, H), climb, state(p, onbox, P, H)). move(state(p1, onfloor, P1, H), push(p1, P2), state(p2, onfloor, P2, H)). move(state(p1, onfloor, B, H), walk(p1, P2), state(p2, onfloor, B, H)). % canget(state, Actions) -- monkey can get the banana from state State by % performing the actions Actions. canget(state(_, _, _, has), []). canget(state1, [Action As]) :- move(state1, Action, State2), canget(state2, As). /* Körning :?- canget(state(atdoor, onfloor, atwindow, hast), Rs). Rs = [walk(atdoor,atwindow),push(atwindow,middle),climb,grasp]? ; Rs = [walk(atdoor,atwindow),push(atwindow,_a),push(_a,middle),climb,grasp]? ; Rs = [walk(atdoor,atwindow),push(atwindow,_a),push(_a,_b),push(_b,middle),climb,grasp]? */
8 Lite Haskell: Ytterligare ett exempel på interaktiv programmering med bilder och klickningar: module Hai where -- på /afs/nada.kth.se/misc/info/progp02/haskell/hai.hs import GraphicInteract -- towers 5 körning med textutmatning import SOEGraphics -- main 5 körning med grafisk utmatning. Klicka för drag. data Peg = A B C deriving (Show, Enum) -- Icke grafiskt towers of Hai. Resultat : En lista med par -- ("Från-peg", "till-peg") towers :: Int -> Peg -> Peg -> Peg -> [(Peg, Peg)] towers 0 from to using = [] towers n from to using = towers (n-1) from using to ++ [(from, to)] ++ towers (n-1) using to from -- Grafisk version med hjälp av makegraphicinteractive. Varje klickning ett drag. -- main 3 startar med 3 brickor, main 5 startar med 5 brickor osv. main :: Int -> IO() main n = makegraphicinteractive startstatus "Hai" (topixels (wsize + 30, wsize)) (firstgraphs startstatus) f where startstatus = fixstartstatus n type StatusType = ([(Peg,Peg)],Int,(Int,[Int]),(Int,[Int]),(Int,[Int])) -- (listan generad av towers, -- antal brickor, -- tre par med (antalet brickor, brickorna) för peg A, B respektive C.) -- Brickorna betecknas med 1.. n, 1 minsta brickan fixstartstatus :: Int -> StatusType -- n ::Int antalet brickor fixstartstatus n = (towers n A B C, n, (n, [1..n]), (0, []), (0, [])) f :: StatusType -> (Int, Int) -> (StatusType, [Graphic]) f ( ((A,B):pfpts), n, (na, (a:alist)),(nb, blist),(nc, clist)) _ = (newstate, [drawdisc Black A (na-1) a n, drawdisc Yellow B nb a n]) where newstate = (pfpts, n, (na-1, alist), (nb+1, a:blist), (nc, clist)) f ( ((A,C):pfpts), n, (na, (a:alist)),(nb, blist),(nc, clist)) _ = (newstate, [drawdisc Black A (na-1) a n, drawdisc Yellow C nc a n]) where newstate = (pfpts, n, (na-1, alist), (nb, blist), (nc+1, a:clist)) f ( ((B,C):pfpts), n, (na, (alist)),(nb, b:blist),(nc, clist)) _ = (newstate, [drawdisc Black B (nb-1) b n, drawdisc Yellow C nc b n]) where newstate = (pfpts, n, (na, alist), (nb-1, blist), (nc+1, b:clist)) f ( ((B,A):pfpts), n, (na, (alist)),(nb, b:blist),(nc, clist)) _ = (newstate, [drawdisc Black B (nb-1) b n, drawdisc Yellow A na b n]) where newstate = (pfpts, n, (na+1, b:alist), (nb-1, blist), (nc, clist)) f ( ((C,B):pfpts), n, (na, (alist)),(nb, blist),(nc, c:clist)) _ = (newstate, [drawdisc Black C (nc-1) c n, drawdisc Yellow B nb c n]) where newstate = (pfpts, n, (na, alist), (nb+1, c:blist), (nc-1, clist)) f ( ((C,A):pfpts), n, (na, (alist)),(nb, blist),(nc, c:clist)) _ = (newstate, [drawdisc Black C (nc-1) c n, drawdisc Yellow A na c n]) where newstate = (pfpts, n, (na+1, c:alist), (nb, blist), (nc-1, clist)) f s _ = (s, [])
9 -- Grafik med autoskalning drawdisc :: Color -> Peg -> Int -> Int -> Int -> Graphic drawdisc col peg posx s n = withcolor col (polygon (map (topixels. scaledwith. (movedto peg posx n ) ) (disc s n) )) wsize :: Float wsize = mm windowsize, window is square firstgraphs :: StatusType -> [Graphic] firstgraphs (_, n, (na, alist),(nb, blist),(nc, clist))= map (\i -> drawdisc Yellow A (n-i) i n ) alist ++ map (\i -> drawdisc Yellow B (n-i) i n ) blist ++ map (\i -> drawdisc Yellow C (n-i) i n ) clist pixelpermm :: Float pixelpermm = 100.0/ pixel / mm -- pixel / mm topixels :: (Float, Float) -> (Int, Int) topixels (x, y) = (round (pixelpermm * x), round(pixelpermm * y)) disc :: Int -> Int -> [(Float, Float)] disc s n = [( - dx, 0.0), (dx, 0.0), (dx, dy), ( - dx, dy)] where dx = inttofloat s / inttofloat (2*n) dy = 4.0 / inttofloat n movedto :: Peg -> Int -> Int -> (Float, Float) -> (Float, Float) movedto peg posx n (xx, yy) = (px + xx, py + yy) where px = * inttofloat (fromenum peg) py = (4.0 / inttofloat n)* inttofloat (n - posx - 1) scaledwith :: (Float, Float) -> (Float, Float) scaledwith (ix, iy) = (sc*ix, sc*iy) where sc = wsize/5.0 inttofloat :: Int -> Float inttofloat n = frominteger(tointeger n ) {- Main> towers 4 A B C [(A,C),(A,B),(C,B),(A,C),(B,A),(B,C),(A,C),(A,B), (C,B),(C,A),(B,A),(C,B),(A,C),(A,B),(C,B)] Main> towers 3 A B C [(A,B),(A,C),(B,C),(A,B),(C,A),(C,B),(A,B)] -}
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 merDel : 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 merDel : 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 merTentamensdag 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 merNada 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 merFö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 merDel : 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 merCentrala 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 merFö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 merFö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 merKap9. Operatorn.. Hudak 9.4 sid 11. Fermats förmodan, eller Fermats stora sats säger att. xm + ym == zm har heltalslösningar om och endast om m == 2.
Föreläsning 6. Hudak kapitel 8, 9, 10, 11, 23, Appendix B. Grafik med klickning. 2D1370 Funktionell programmering v14 torsdag Kap 8. Ett exempel på användning av listomfattningar. Fermats förmodan, eller
Läs merFöreläsning 4 i programmeringsparadigm.
Föreläsning 4 i programmeringsparadigm. OBS! Schemat ändrades den 30 augusti.,om du tryckte ut schemat tidare, märk att det är ingen föreläsning 2005 sept 14 onsdag, däremot 2005 sept 20 13.00 i sal F1.
Läs merNada 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 merFö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 merFö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 merNada 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 merFö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 merDel : 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 merF6: 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 merFö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 merFö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 merDD1361 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 merFö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 merFö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 merDD1361 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 merDD1361 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 merDD1361 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 merFöreläsning 5 i programmeringsparadigm. Tips kring programmering i Haskell och kring labbarna.
Föreläsning 5 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 merI 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 merNada, KTH Tentamensdag maj -24 Tentamen i Funktionell Programmering Skrivtid 5 h
Nada, KTH Tentamensdag 2003 - maj -24 Tentamen i Funktionell Programmering Skrivtid 5 h Antalet uppgifter : 4 ( 26p +29p +20p + 25 p= 100 p ) Lärare, jourhavande lärare : Leif Kusoffsky ------------------------------------------------------------------------------------------------------------------
Läs merFöreläsning 8. Hudak kapitel 13. 2D1370 Funktionell programmering v15 torsdag
Föreläsning 8. Hudak kapitel 13. 2D1370 Funktionell programmering v15 torsdag Olika sorters program. Inmatning sker innan exekveringen startar under exekvering När exekvering sker bestäms av datorn "transformerande
Läs merDD1361 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 merDagens 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 merKungliga 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 merKursanalys 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 merDD1361 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 merEnjoy 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 merProgramkonstruktion och datastrukturer. Moment 9 Om högre ordningens funktioner. PKD 2010/11 moment 9 Sida 1 Uppdaterad
Programkonstruktion och datastrukturer Moment 9 Om högre ordningens funktioner PKD 2010/11 moment 9 Sida 1 Uppdaterad 2010-12-02 Anonyma funktioner igen En funktion som inte är namngiven kallas för en
Läs merEnjoy 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 merLambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017
Lambdas (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Funktioner En funktion (i programmeringstermer) är en operation som tar ett eller flera argument,
Läs merFöreläsning 3: rekursion
Föreläsning 3: rekursion Teori Introducera rekursiva definitioner i Prolog Fyra exempel Visa att det kan finnas diskrepanser mellan Prolog-programmets deklarativa och procedurala betydelse! Rekursiva definitioner
Läs merLä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 merFöreläsning 7 i programmeringsparadigm. Ytterligare Högre ordningens funktioner: filter, foldr foldl. Hutton 7.2, 7.3 och 7.4.
Föreläsning 7 i programmeringsparadigm. Ytterligare Högre ordningens funktioner: filter, foldr foldl. Hutton 7.2, 7.3 och 7.4. filter se Hutton. När man använder filter och map får man ofta glädje av anonyma
Läs merSortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden
Sortering Brute-force Sortering Ordna element enligt relation mellan nyckelvärden Flera olika algoritmer med olika fördelar Brute-force Gå igenom alla permutationer och hitta den där elementen ligger i
Läs merProgramkonstruktion och datastrukturer. Moment 9 Om högre ordningens funktioner. PKD 2011/12 moment 9 Sida 1 Uppdaterad
Programkonstruktion och datastrukturer Moment 9 Om högre ordningens funktioner PKD 2011/12 moment 9 Sida 1 Uppdaterad 2012-01-15 Anonyma funktioner igen En funktion som inte är namngiven kallas för en
Läs merTentamen. 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 merSätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
Läs merGrundläggande logik och modellteori
Grundläggande logik och modellteori Kapitel 12: Logikprogrammering Henrik Björklund Umeå universitet 16. oktober, 2014 Prolog Prolog har två klasser av formler. Atomära formler: country(sweden, 9000000).
Läs merTraditionell 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 merMen 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 merFunktionell 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 merTDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12
TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
Läs merTDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18
TDDC74 Programmering: Abstraktion och modellering Datortenta - 2018-06-07, 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 merTentamen 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Övningsuppgifter kapitel 8
Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans
Läs merLab5 för prgmedcl04 Grafik
Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna
Läs merRekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av
Läs merNå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 merPlanering Programmering grundkurs HI1024 HT TIDAA
Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Läs merLÖSNINGSFÖRSLAG TENTAMEN PROGRAMMERING I ETT FUNKTIONELLT SPRÅK ML, 5P
UMEÅ UNIVERSITET Datavetenskap 020321 Betygsgränser 0 19,5 U 20 25,5 3 26 31,5 4 32-40 5 LÖSNINGSFÖRSLAG TENTAMEN 020321 PROGRAMMERING I ETT FUNKTIONELLT SPRÅK ML, 5P Uppgift 1(3+2=5 poäng) I denna uppgift
Läs merHaskell forts. 5DV085 - Programspråk. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se
Haskell forts 5DV085 - Programspråk, Department of Computing Science, Umeå University - jem@cs.umu.se Moduler Grupp 1, Department of Computing Science, Umeå University - jem@cs.umu.se Function application
Läs merFL 6: Definite Clause Grammars (kap. 7)
FL 6: Definite Clause Grammars (kap. 7) Teori Introducerar kontextfria grammatikor och några besläktade begrepp Introducerar definite clause - grammatikor, Prologs sätt att jobba med kontextfria grammatikor
Läs merFö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 merIntroduktion 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 merIntroduktion 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 merRepetition C-programmering
Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition
Läs merI dag: Blockstruktur, omgivningar, problemlösning
Förra gången Förra gången: Rekursiva procedurer I dag I dag: Blockstruktur, omgivningar, problemlösning (define add-1 (define add-2 (lambda (a b) (lambda (a b) (if (= a 0) (if (= a 0) b b (+ 1 (add-1 (add-2
Läs merAnvända Python Laboration 1 GruDat, DD1344
Använda Python Laboration 1 GruDat, DD1344 Örjan Ekeberg 14 oktober 2008 Målsättning Målet med denna laboration är att du ska prova på att använda Python, framförallt interativt. Du ska också lära dig
Läs merRekursiva algoritmer sortering sökning mönstermatchning
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 6-7 Rekursiva strukturer rekursiva definitioner rekursiva funktioner rekursiva bevis: induktion - rekursion strukturell
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.) - Iteratorer
Läs merFöreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...
Föreläsning 9 Intervallhalveringsmetoden Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation Bra om ni läst följande avsnitt i AS: Procedures
Läs merDagens föreläsning Programmering i Lisp Fö 5
Anders Haraldsson 1 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.3) - Iteratorer - Egenskaper
Läs merFö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 merImperativ 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 merLabb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt
Läs merFL 5: Aritmetik. Teori
FL 5: Aritmetik Teori Introducerar Prologs inbyggda operationer för aritmetik Tillämpar dessa på enkla listhanteringsproblem, mha ackumulatorer Ser på svansrekursiva predikat och förklarar varför de är
Läs merFöreläsning 9 Exempel
Föreläsning 9 Exempel Intervallhalveringsmetoden DA2001 (Föreläsning 9) Datalogi 1 Hösten 2013 1 / 24 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod DA2001 (Föreläsning 9) Datalogi
Läs merSenast. Idag. Icke-strikt evaluering. Strikt evaluering. Testa latheten! Lat evaluering. Plus och minus med lat evaluering. Testa latheten!
Senast Idag Högre ordningens funktioner Listomfattning Strikthet och lat evaluering Strömmar Monadisk I/O Strikt evaluering Icke-strikt evaluering Def: Strikt evaluering innebär att alla parametrars värde
Läs merLå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 merFö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 merFöreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Läs merProcedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet
Procedurer och villkor Rekursiva procedurer (define lessorequal (lambda (x y) (or (< x y) (= x y)))) (define between (lambda (x y z) (and (lessorequal x y) (lessorequal y z)))) > (between 3 4 5) #t > (between
Läs merProcedurer och villkor
Procedurer och villkor (define lessorequal (lambda (x y) (or (< x y) (= x y)))) (define between (lambda (x y z) (and (lessorequal x y) (lessorequal y z)))) > (between 3 4 5) #t > (between 3 2 5) #f DA2001
Läs merFöreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Läs merTentamen i. Programmering i språket C
1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering i språket C för D1 m fl, även distanskursen lördag 25 februari
Läs merPlanering Programmering grundkurs HI1024 HT 2015 - data
Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Läs merPlanering Programmering grundkurs HI1024 HT 2014
Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att
Läs merDeklarativt 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 merSpråket Python - Del 2 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt
Läs merProgrammering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Läs merDD1311 Programmeringsteknik för S1 Laborationer läsåret 2007-2008
DD1311 meringsteknik för S1 Laborationer läsåret 2007-2008 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare är Linda Kann, linda@nada.kth.se. Namn... Personnr... Laborationer Labb
Läs merFunktionens deklaration
Funktioner - 1 Teknik för stora program #include #include......... cout
Läs merProgramdesign. Dokumentera. Dokumentera
Programdesign Dokumentera Välj datastruktur så programmet blir så enkelt som möjligt. Välj algoritm så programmet blir lättläst, robust och effektivt. Analysera programmet för att få en bra metod. Överväganden
Läs merTDDC74 Lab 02 Listor, sammansatta strukturer
TDDC74 Lab 02 Listor, sammansatta strukturer 1 Översikt I denna laboration kommer ni att lära er mer om: Mer komplexa rekursiva mönster, procedurer och processer. Hur man kan hantera listor och andra enklare
Läs merHI1024 Programmering, grundkurs TEN
HI1024 Programmering, grundkurs TEN2 2015-01-08 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
Läs merTDDC74 Programmering, abstraktion och modellering DUGGA 2
AID-nummer: Datum: 2011-02-18 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Fredag 18 feb 2011
Läs merGrafik i DrRacket AV TOMMY KARLSSON
Grafik i DrRacket AV TOMMY KARLSSON Upplägg Grundläggande grafik i racket Frame% Kodexempel! Generella problemlösarstrategier Grafisk kodstruktur Button% Pane% & Panel% Canvas% Bitmap% Grafisk effektivisering
Läs merDatastrukturer i Haskell
Datastrukturer i Haskell Bror Bjerner Inst. för data- och informationsteknik Göteborgs universitet & Chalmers tekniska högskola 2010 1 Fibbonacci Om vi beräknar det n:te fibonnacitalet enligt sin dubbelrekursiva
Läs merNå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 merkl 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