Föreläsning [ ] i programmeringsparadigm. Om multiparadigm-språket OZ och en tjock bok.
|
|
- Maria Lind
- för 8 år sedan
- Visningar:
Transkript
1 Föreläsning [ ] 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 Om multiparadigm-språket OZ och en tjock bok. Peter van Roy, Seif Haridi : Concepts, Techniques, and Models of Computer Programming: Denna ny bok är grandiost försök att i ett språk (Oz, dock kort om Haskell, Erlang, Java och Prolog) och i en bok och samanhängande förklara alla sorters programmering ("paradigm", ett begrepp som författarna delvis är kritiska mot.). Mycket om jämlöpande programmering (concurrency).tänkbar kursbok om denna kurs var på ca 8 p. Alla programmeringssätt i nedanstående bild programmeras med Oz och förklaras med att man börjar med ett liten "kärnspråksdel" av Oz som beggs ut på olika sätt. Relations programmering Logikprogrammering Prolog Funktion. prog namn = värde Haskell Deklarativa modellen namn = writeonce-variabler Explicit State Tillstånd, dvs "vanliga" programmeringsvariabler Objektinriktad programmering OO Java Declarative concurrency väntan/skrivning på namn = writeonce-variabler Message-passing concurrency Erlang Shared State concurrency, dvs "vanlig" reaktiv programmering
2 Ett Haskell-verktyg för syntaxanalys utan semantik. På sidorna [13..15] beskrivs verktyget, som finns på /info/progp05/parsernosemantics. En sammanfattning : module ParserNoSemantics where -- at /info/progp05/parsernosemantics -- Our Domain Specific Language (>>>) ::(a -> b) -> (b -> c) -> a -> c (>>>) parser1 parser2 = parser2. parser1 parser1 >>> parser2 accept :: (a -> Bool) -> [a] -> [a] accept p [] = error (" Error, end of code") accept p (c:cs) p c = cs otherwise = error (" Error " ) pass :: [a] -> [a] pass [] = error (" Error, end of code") pass (c:cs) = cs p test accept p pass --- skriv namnet på icke-slutsymbolen ( ) (p, parser1) parser2 (c:cs) p c = parser1 (c:cs) otherwise = parser2 (c:cs) ( ) (c1, p1) p2 [] = [] infixr 5 p test parser1 parser2 empty :: [a] -> [a] empty cs = cs -- error skall vara något av tidigare alternativ, men möjligt att detta inte är fallet
3 Ett exempel: Syntaxkontroll av aritmetiska uttryck (mindre komplettering av vad som står på sidan 15 i syntaxhäftet) : module CalculatorNoSemantics where import ParserNoSemantics type Tokentype = Char -- at /info/progp05/ expr, moreterms, term, morefactors, factor, number, digit, moredigits :: [Tokentype] -> [Tokentype] expr = term >>> moreterms moreterms = ((== + ), pass >>> term >>> moreterms) ((== - ), pass >>> term >>> moreterms) empty term = factor >>> morefactors morefactors = ((== * ), pass >>> factor >>> morefactors) ((== / ), pass >>> factor >>> morefactors) empty factor = (isdigit, number) ((== ( ), pass >>> expr >>> accept (== ) ) ) error ("Can not find factor ") number = digit >>> moredigits digit = (isdigit, pass) error ("Expecting digit, found ") moredigits = (isdigit, digit >>> moredigits ) empty {- Körningar : Calculator> expr "3*12" "" Calculator> expr "(3+124)*5" "" Calculator> expr "(3+-12*/*4)+5" Program error: Can not find factor -} Lägg märke till likhet mellan skripet och BNF-grammatiken (häftet sid 7 med nummer som ickeslutsymbol på sid 11 ). Hur vi går omkring i parse-trädet vid analys av term "3*12". term "3*12" factor morefactors "12" number * factor morefactors digit moredigits number ε "*12" ε 3 digit moredigits "2" digit moredigits 1 "" 2 ε Argumenten till funktionerna utskrivna i fetstil varje gång de förnyas. T ex är "3*12" argument till term, factor, number och digit i början men digit "strippar" 3 så att argumentet till moredigts "*12"
4 Ytterligare ett exempel: Syntaxkontroll av Brnas engelska minispråk: module EngelskaNOSematics where -- at /info/progp05/engelskanosematics -- English sentance Brna : 78 <= page <= 85 import ParserNoSemantics type Tokentype = String sentence, nounphrase, verbphrase, determiner, noun, verb :: [Tokentype] -> [Tokentype] sentence = nounphrase >>> verbphrase nounphrase = determiner >>> noun verbphrase = verb >>> nounphrase determiner = ((=="a"), pass) ((=="the"), pass) error "Expecting determiner" noun = ((=="man"), pass) ((=="cake"), pass) error "Expecting noun" verb = ((=="ate"), pass) error "Expecting verb" {- Körningar : Engelska> sentence (words "the man ate a cake") -- Haskellfunktionen [] -- words :: String -> [String] Engelska> sentence (words "the cake ate a cake") -- finns i Prelude [] -- och delar upp sentence (words "man the a cake ate") -- strängar i ord. Program error: Expecting determiner -} Haskell-verktyget för syntaxanalys med semantik. Sidorna [16..17] i syntaxhäftet + parse på sid 19. Finns på /info/progp05/parser. Den som gör laborationen "Danska räknord" med Haskellverktyget importerar lämpligen denna fil. Genom att lägga till semantik till uttryckssyntaxen, se sid 17 i häfte, får vi en räknedosa för artimetiska uttryck. I filen finns också en funktion parse som gör att vi istället för att köra term ("3*12", []) och få resultatet ("", [36]) kan köra parse term "3*12" och få resultatet 36.
5 Hur vi går omkring i parse-trädet vid analys av term ("3*12", []). ("3*12",[]) factor term morefactors Argumenten till funktionerna utskrivna i fetstil varje gång de förnyas. number pass morefactors * factor pop2do * ε ("12", [1]) ("",[36]) digit number moredigits digit moredigits ε digit pop2do (\p->\d->10*2+d) moredigits ("*12",[1]) ("2",[1,3]) ("",[2, 1, 3]) ("",[12, 3]) ε passdo digittoint passdo digittoint passdo digittoint Reduktionerna utskrivna, låt f = (\p ->\d ->10*p+d): (reservation för fel). term ( "3*12", []) factor ( "3*12", []) >>> morefactors number( "3*12", []) >>> morefactors digit( "3*12", []) >>> moredigits >>> morefactors passdo digittoint ("3*12", []) >>> moredigits >>> morefactors moredigits( "*12", [3]) >>> morefactors empty( "*12", [3]) >>> morefactors morefactors("*12", [3]) pass ("*12", [3]) >>> factor >>> pop2do (*)>>> morefactors factor ( "12", [3]) >>> pop2do (*) >>> morefactors number( "12", [3]) >>> pop2do (*) >>> morefactors digit ( "12", [3]) >>> moredigits >>> pop2do (*) >>> morefactors passdo digittoint( "12", [3]) >>>moredigits>>>pop2do(*)>>>morefactors moredigits ( "2", [1, 3]) >>> pop2do (*) >>> morefactors digit ( "2", [1, 3]) >>> pop2do f >>> moredigits >>> pop2do (*) >>>.. passdo( "2", [1, 3]) >>> pop2do f >>> moredigits >>> pop2do (*) >>>.. pop2do f ( "", [2, 1, 3]) >>> moredigits >>> pop2do(*)>>> morefactors moredigits( "", [12, 3]) >>> pop2do(*)>>> morefactors empty( "", [12, 3]) >>> pop2do(*)>>> morefactors pop2do(*)( "", [12,3]) >>> morefactors morefactors( "", [36])... ( "", [36]) För att kunna läsa exemplet nedan skall man observera att factor (3*12, []) >>> morefactors enligt definitionen av >>> är samma sak som morefactors( factor (3*12, []) ) Exempel på en reduktion av listan "2*10*3", finns i häftet.
6 Syntaxanalys med Prolog. Syntaxhäftet kapitel 5 sid 35 och Brna Chapter 8 sid 78. DCG utan semantik Ett exempel; Brnas engelska minispråk. Brna (sid 82) definierar sentence med denna DCG-grammatik (på /info/progp05/expr.pl): sentence --> nounphrase, verbphrase. nounphrase --> determiner, noun. verbphrase --> verb, nounphrase. determiner --> [a]. determiner --> [the]. noun --> [man]. noun --> [cake]. verb --> [ate]. En körning av sentence([the, man, ate, a, cake], []). Resultat om man har aktiverat trace:?- trace. % The debugger will first creep -- showing everything (trace) % trace,source_info?- sentence([the, man, ate, a, cake], []). 1 1 Call: sentence([the,man,ate,a,cake],[])? 2 2 Call: nounphrase([the,man,ate,a,cake],_1068)? 3 3 Call: determiner([the,man,ate,a,cake],_1500)? 4 4 Call: C ([the,man,ate,a,cake],a,_1500)? 4 4 Fail: C ([the,man,ate,a,cake],a,_1500)? 5 4 Call: C ([the,man,ate,a,cake],the,_1500)? 5 4 Exit: C ([the,man,ate,a,cake],the,[man,ate,a,cake])? 3 3 Exit: determiner([the,man,ate,a,cake],[man,ate,a,cake])? % 2) 6 3 Call: noun([man,ate,a,cake],_1068)? 7 4 Call: C ([man,ate,a,cake],man,_1068)? 7 4 Exit: C ([man,ate,a,cake],man,[ate,a,cake])? 6 3 Exit: noun([man,ate,a,cake],[ate,a,cake])? 2 2 Exit: nounphrase([the,man,ate,a,cake],[ate,a,cake])? % 1) 8 2 Call: verbphrase([ate,a,cake],[])? 9 3 Call: verb([ate,a,cake],_5628)? 10 4 Call: C ([ate,a,cake],ate,_5628)? 10 4 Exit: C ([ate,a,cake],ate,[a,cake])? 9 3 Exit: verb([ate,a,cake],[a,cake])? 11 3 Call: nounphrase([a,cake],[])? 12 4 Call: determiner([a,cake],_7704)? 13 5 Call: C ([a,cake],a,_7704)? 13 5 Exit: C ([a,cake],a,[cake])? 12 4 Exit: determiner([a,cake],[cake])? 14 4 Call: noun([cake],[])? 15 5 Call: C ([cake],man,[])? 15 5 Fail: C ([cake],man,[])? 16 5 Call: C ([cake],cake,[])? 16 5 Exit: C ([cake],cake,[])? 14 4 Exit: noun([cake],[])? 11 3 Exit: nounphrase([a,cake],[])? 8 2 Exit: verbphrase([ate,a,cake],[])? 1 1 Exit: sentence([the,man,ate,a,cake],[])? % 1) här se vi att %_1068=[ate,a,cake] 2) här se vi att _1500 = [man,ate,a,cake]
7 Ytterligare ett exempel; aritmetiska uttryck. Vi definerar expr med DCG-grammatik på sidan 35 i syntaxhäftet. Finns på /info/progp05/expr.pl. Delar av en körning av term([3, *, 1, 2], []). Resultat om man har aktiverat trace:?- trace. % The debugger will first creep -- showing everything (trace) % trace,source_info?- term([3, *, 1, 2], []). 1 1 Call: term([3,*,1,2],[])? 2 2 Call: factor([3,*,1,2],_1048)? 3 3 Call: number([3,*,1,2],_1048)? 4 4 Call: digit([3,*,1,2],_1904)? 5 5 Call: C ([3,*,1,2],0,_1904)? 5 5 Fail: C ([3,*,1,2],0,_1904)? 6 5 Call: C ([3,*,1,2],1,_1904)?... pss prövar vi för Call: C ([3,*,1,2],3,_1904)? 8 5 Exit: C ([3,*,1,2],3,[*,1,2])? 4 4 Exit: digit([3,*,1,2],[*,1,2])? 9 4 Call: moredigits([*,1,2],_1048)? 10 5 Call: digit([*,1,2],_3983)? 11 6 Call: C ([*,1,2],0,_3983)?... pss prövar vi för 1,2,..., Call: C ([*,1,2],9,_3983)? 20 6 Fail: C ([*,1,2],9,_3983)? 10 5 Fail: digit([*,1,2],_3983)?... osv 36 8 Call: C ([],0,_12279)?... pss prövar vi för 1,2,..., Call: C ([],9,_12279)? 45 8 Fail: C ([],9,_12279)? 35 7 Fail: digit([],_12279)? 46 7 Call: _6439=[]? % Omskrivning moredigits --> [] 46 7 Exit: []=[]? % moredigits(begin, Rest) :- Begin = Rest 34 6 Exit: moredigits([],[])? 29 5 Exit: moredigits([2],[])? 25 4 Exit: number([1,2],[])? 24 3 Exit: factor([1,2],[])? 47 3 Call: morefactors([],[])? 48 4 Call: C ([],*,_15147)? 48 4 Fail: C ([],*,_15147)? 49 4 Call: C ([],/,_15147)? 49 4 Fail: C ([],/,_15147)? 50 4 Call: []=[]? 50 4 Exit: []=[]? 47 3 Exit: morefactors([],[])? 22 2 Exit: morefactors([*,1,2],[])? 1 1 Exit: term([3,*,1,2],[])? % trace,source_info
8 DCG med semantik. Ett exempel; aritmetiska uttryck. Vi definierar expr med DCG-grammatik med semantik på sidan 36 i syntaxhäftet. Finns också på /info/progp05/expr.pl inom kommentarer. En körning av term(r, [3, *, 1, 2], []):?- term(r, [3, *, 1, 2], []). R = 36? Genom att lägga till semantik till uttryckssyntaxen får vi en räknedosa för artimetiska uttryck skriven med DCG.. Delar av en körning av term(r, [3, *, 1, 2], []). Resultat om man har aktiverat trace:?- trace. % The debugger will first creep -- showing everything (trace) % trace,source_info?- term(r, [3, *, 1, 2], []). 1 1 Call: term(_430,[3,*,1,2],[])? % R = _ Call: factor(_1089,[3,*,1,2],_1091)? 3 3 Call: number(_1089,[3,*,1,2],_1091)? 4 4 Call: digit(_1953,[3,*,1,2],_1955)? 5 5 Call: C ([3,*,1,2],0,_1955)? 5 5 Fail: C ([3,*,1,2],0,_1955)? 6 5 Call: C ([3,*,1,2],1,_1955)? 6 5 Fail: C ([3,*,1,2],1,_1955)? 7 5 Call: C ([3,*,1,2],2,_1955)? 7 5 Fail: C ([3,*,1,2],2,_1955)? 8 5 Call: C ([3,*,1,2],3,_1955)? 8 5 Exit: C ([3,*,1,2],3,[*,1,2])? 4 4 Exit: digit(3,[3,*,1,2],[*,1,2])? 9 4 Call: moredigits([3],_1089,[*,1,2],_1091)? 10 5 Call: digit(_4039,[*,1,2],_4041)? 11 6 Call: C ([*,1,2],0,_4041)? Exit: moredigits([3],3,[*,1,2],[*,1,2])? 3 3 Exit: number(3,[3,*,1,2],[*,1,2])? 2 2 Exit: factor(3,[3,*,1,2],[*,1,2])? 27 3 Exit: factor(12,[1,2],[])? 55 3 Call: _8987 is 3*12? % Acc1 is Acc*F 55 3 Exit: 36 is 3*12? Exit: morefactors(36,36,[],[])? % [] slut på insträngen 25 2 Exit: morefactors(3,36,[*,1,2],[])? 1 1 Exit: term(36,[3,*,1,2],[]) % term(t)-->factor(f),morefactors(f,t). R = 36?
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
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
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
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),
DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin
DD1361 Programmeringsparadigm Formella Språk & Syntaxanalys Föreläsning 3 Per Austrin 2015-11-13 Huvudkoncept hittils: Snabb repetition Formellt språk en mängd strängar Reguljära språk den klass av formella
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
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
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
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:
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
Imperativ programmering
Imperativ programmering 1DL126 3p Imperativ programmering Jesper Wilhelmsson ICQ: 20328079 Yahoo: amigajoppe MSN / epost: jesperw@it.uu.se Rum: 1335 Tel: 471 1046 Imperativ programmering Vilka programmeringsspråk
Sri Lanka Association for Artificial Intelligence
Sri Lanka Association for Artificial Intelligence First Sinhala Chatbot in action Budditha Hettige Department of Statistics and Computer Science, Faculty of Applied Science, University of Sri Jayewardenepura,
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
Deklarativt programmeringsparadigm
Deklarativt programmeringsparadigm Det vi introducerade på förra föreläsningen var ett exempel på deklarativ programmering. Vi specificerade en fallanalys som innehöll fakta och regler för hur man skulle
Alfabeten, strängar och språk. String
Alfabeten, strängar och språk Objektorienterad modellering och diskreta strukturer / design Språk och reguljära uttryck Ett alfabet är en ändlig icketom mängd vars element kallas symboler. Lennart Andersson
Deklarativ programmering
Kursens mål Deklarativ programmering Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap Linköpings universitet 2008-02-26 redogöra för och använda reguljära uttryck använda XML för att definera
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
OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15
OMTENTAMEN I PROGRAMSPRÅK -- DVG C01 130823 kl. 08:15-13: 15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd
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
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
FACIT TILL OMTENTAMEN I PROGRAMSPRÅK DVG C01
FACIT TILL OMTENTAMEN I PROGRAMSPRÅK DVG C01 120112 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
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
DD1361 Programmeringsparadigm Föreläsning 1: Intro
DD1361 Programmeringsparadigm Föreläsning 1: Intro Per Austrin KTH 2015-08-31 https://www.kth.se/social/course/dd1361/ Dagens föreläsning Översikt om: 1. Ämnet 2. Lärarna 3. Kursformalia (betyg etc) Dagens
DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin
DD1361 Programmeringsparadigm Formella Språk & Syntaxanalys Föreläsning 4 Per Austrin 2015-11-20 Idag Rekursiv medåkning, fortsättning Olika klasser av språk och grammatiker Parsergeneratorer Sammanfattning
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
FL 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
Introduktion till programmering. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci...
Introduktion till programmering Standardfunktioner Tecken och strängar Utskrifter och effekter Föreläsning 2 Prelude Alla fördefinierade funktioner vi använder definieras i modulen Prelude. Denna modul
Föreläsning 5 i programmeringsparadigm.
Föreläsning 5 i programmeringsparadigm. λ-notation (lamda-notation, anonyma funktioner). Hutton 4.5. (Fokker 2.3.4.) Vi kan om vi vill definiera hjälpkonstanter, t ex i denna funktiondefinition : kommunalskatt
Kungliga Tekniska Högskolan Ämneskod 2D1370 Tentamensdag 2001-maj-31 Tentamen i Funktionell Programmering Skrivtid 4 h
Kungliga Tekniska Högskolan Ämneskod 2D1370 Nada Tentamensdag 2001-maj-31 Tentamen i Funktionell Programmering Skrivtid 4 h Antalet uppgifter : 4 ( 8p +10p + 10p +12p = 40 p) Lärare, jourhavande lärare
Grammatik. BNF-grammatik
Grammatik Objektorienterad modellering och diskreta strukturer / design Grammatik Reguljära uttryck klarar inte av att beskriva mängden av aritmetiska uttryck. Lennart Andersson Reviderad 2010 10 07 2010
Enjoy Vattenfallsmodellen i funktionella språk
Föreläsning 2 i Programmeringsparadigm Funktionell programmering := variabler pekare sidoeffekter ;...; Fy, fy => bugfree förståeliga korta inga "satser", bara uttryck! Enjoy Vattenfallsmodellen i funktionella
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 ->
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
DD1361 Programmeringsparadigm Föreläsning 1: Intro
DD1361 Programmeringsparadigm Föreläsning 1: Intro Per Austrin KTH 2016-08-30 https://www.kth.se/social/course/dd1361/ Dagens föreläsning Översikt om: 1. Ämnet 2. Lärarna 3. Kursformalia (betyg etc) Dagens
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
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
Parsning. TDP007 Konstruktion av datorspråk Föreläsning 6. Peter Dalenius Institutionen för datavetenskap
Parsning TDP007 Konstruktion av datorspråk Föreläsning 6 Peter Dalenius Institutionen för datavetenskap 2017-02-14 2 Analys av källkod Lexikalisk analys Bildar tokensutifrån källkodens text. Syntaktisk
Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 Grundläggande datavetenskap, IT1 Perspektiv på datateknik, D1 Perspektiv på datavetenskap, C1 Breddföreläsning orientering om: formella språk grammatik parsing Att läsa mer: Brookshear, Computer Science
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:
TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15
TENTAMEN I PROGRAMSPRÅK -- DVG C01 130607 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
TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Introduktion till Java -- för Pythonprogrammerare Historia: C, C++ 3 Historia: Oak 1 4 1990: Sun Microsystems påbörjade projekt StarSeven Avancerad
Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17
Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17 Bakgrund och kursmål Kursens mål är att ge kunskaper inom funktionell programmering, fördjupade kunskaper inom objektorienterad
Fö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.
Föreläsning 5 5DV086 - Programspråk
Föreläsning 5 5DV086 - Programspråk Petter Ericson (pettter@cs.umu.se) Umeå University 6 februari, 2015 Haskell-frågor? Haskell-tips do-syntax State-monaden Dagens plan Programspråksteori Varför? Vad?
Kap9. 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
Föreläsning 7: Syntaxanalys
DD2458, Problemlösning och programmering under press Föreläsning 7: Syntaxanalys Datum: 2007-10-30 Skribent(er): Erik Hammar, Jesper Särnesjö Föreläsare: Mikael Goldmann Denna föreläsning behandlade syntaxanalys.
Enjoy Vattenfallsmodellen i funktionella språk
Föreläsning 2 i Programmeringsparadigm Funktionell programmering := variabler pekare sidoeffekter ;...; Fy, fy => bugfree förståeliga korta inga "satser", bara uttryck! Enjoy Vattenfallsmodellen i funktionella
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
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Välkomna till NADA. Paradigm i datalogin. Vad är ett paradigm
Välkomna till NADA (Numerisk Analys och DAtalogi) och kursen Paradigm i datalogin, orienteringskurs GN, 7,5 hp (PID) Välkomna... Jag: Serafim Dahl Osquars Backe 2, plan 5 Rum 1531 Postfack: Lindstedtsvägen
TDP002 Imperativ programmering
TDP002 Imperativ programmering Introduktion till kursen och python Eric Elfving Institutionen för datavetenskap (IDA) Översikt Programmering En introduktion Python Köra och skriva program Python grunderna
Inlämningsuppgift MiniPlotter
LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap EDAA01 Programmeringsteknik fördjupningskurs Inlämningsuppgift MiniPlotter I den här uppgiften ska ett program som ritar grafer av matematiska funktioner
Exempel på typer av datorspråk EXCEL
1 2 TDDB82 Perspektiv på Datateknik Breddgivande föreläsning Datorspråk Programmeringsparadigmer Programmeringsspråk Konstruktioner i programmeringsspråk Litteratur: Brookshear, Computer Science - an overview,
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
Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.
Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Hur vi jobbar med ett program. 1. Vad vi skriver (med hjälp av redigeringsprogrammet Emacs) på datorn: // Fig. 2.1: Welcome1.java // A first program in
Föreläsning 4 (och 5?) i programmeringsparadigm.
Föreläsning 4 (och 5?) i programmeringsparadigm. Högre ordningens funktioner på listor; funktioner som argument: map, filter. (Fokker 3.1.3, C&K p 37, 38) map -- förändra alla element i en lista på samma
HI1024 Programmering, grundkurs TEN2 2015-10-30
HI1024 Programmering, grundkurs TEN2 2015-10-30 KTH STH Haninge 8.15-13.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
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
Tentamensdag 2002-aug-20 Tentamen i Funktionell Programmering Skrivtid 5 h
Nada Tentamensdag 2002-aug-20 Tentamen i Funktionell Programmering Skrivtid 5 h Antalet uppgifter : 5 ( 26p +22p + 14p +26p + 12 p= 100 p ) Lärare, jourhavande lärare : Leif Kusoffsky ------------------------------------------------------------------------------------------------------------------
Obligatorisk uppgift: Numerisk kalkylator
(11 april 2016 T03.1 ) Obligatorisk uppgift: Numerisk kalkylator Följande klasser skall ingå Calculator Stokenizer Parser Till stor del given. Kompletteras bara med exceptionhantering. Given - skall användas
Obligatorisk uppgift: Numerisk kalkylator
(12 september 2018 OU2 1 ) Obligatorisk uppgift: Numerisk kalkylator Följande klasser skall ingå Calculator Stokenizer Parser Till stor del given. Kompletteras bara med exceptionhantering. Given - skall
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
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
Fö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.
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.
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ä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-
Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson
Översikt Trivicalc SMD168/SMD15 Fredrik Bengtsson bson@sm.luth.se Föreläsning 1 Introduktion till Trivicalc - problem Föreläsning Grafiska Användargränssnitt Föreläsning del 1 Versionshantering CVS (Johan
Tentamen i. TDDA 69 Data och programstrukturer
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDA 69 Data och programstrukturer Torsdag den 14 januari 2009, kl 14-18 Hjälpmedel: Inga. Poänggränser: Maximalt
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
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
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,
Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?
Jonas Kvarnström jonkv@ida.liu.se 2013 Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket? Rena OO-språk (allt är objekt) Scala, Smalltalk, Eiffel, Ruby,
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning I: kursinfo, att programmera datorer, första programmet Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 Outline Hemsida Organization Examination
Användarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 TDDC66 Datorsystem och programmering TDDC67 Funktionell programmering Programmering i Lisp, examinator TDDC67 föreläsare i Lisp Peter Dalenius examinator TDDC66 kursassistent i Lisp + ett stort antal
Programmering för språkteknologer I, VT2012. Rum
Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska
Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):
Översikt Motivering Syntax och semantik Imperativa språkets byggstenar och Python Datatyper Tilldelning och uttryck Kontrollstrukturer (på satsnivå) Subprogram Relaterade avsnitt: PL 3.1-3.2, 5.1-5.3,
11. Reguljära uttryck och grammatiker
Objektorienterad modellering och diskreta strukturer 11. Reguljära uttryck och grammatiker Sven Gestegård Robertz Datavetenskap, LTH 2014 Rekaputilation Vi har talat om satslogik och härledning predikatlogik
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
Calculate check digits according to the modulus-11 method
2016-12-01 Beräkning av kontrollsiffra 11-modulen Calculate check digits according to the modulus-11 method Postadress: 105 19 Stockholm Besöksadress: Palmfeltsvägen 5 www.bankgirot.se Bankgironr: 160-9908
Föreläsning 3 sept 10 (Måndag v 37). DD Chapter 3.
Föreläsning 3 sept 10 (Måndag v 37). DD Chapter 3. Applikationer och s. Det finns två sorters java-program som används på olika sätt: Körning av applikation (vanliga, fristående program):...>java klass
Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering
och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering
Deklarativ programmering
Deklarativ programmering TDP007 Konstruktion av datorspråk Föreläsning 7 Peter Dalenius Institutionen för datavetenskap 2014-03-03 Deklarativ programmering Program skrivet i ett deklarativt språk logikspråk,
Lå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
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Funktionell programmering
Funktionell programmering TDDD73 Funktionell och imperativ programmering i Python Föreläsning 8 Peter Dalenius Institutionen för datavetenskap 2013-10-09 Översikt Vad är ett programmeringsparadigm? Vad
F4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
TDP002 - Imperativ programmering
. TDP002 - Imperativ programmering Introduktion till kursen och Python Eric Elfving Institutionen för datavetenskap 14 augusti 2015 Översikt 2/29 Programmering - en översikt Python - Köra och skriva program
Föreläsning 1: Intro till kursen och programmering
Föreläsning 1: Intro till kursen och programmering λ Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/mafykht11/ λ Studentportalen http://www.studentportalen.uu.se UNIX-konton (systemansvariga
Föreläsning 1 i Programmeringsparadigm
Föreläsning 1 i Programmeringsparadigm Programmeringsparadigm : Vad menas med programmeringsparadigm? Två definitioner från Webster s New World dictonary : paradigm n. [< Gr. para-, besides + deigma, example]
Programmeringsteknisk översiktskurs för yrkeshögskoleprogram
Programmeringsteknisk översiktskurs för yrkeshögskoleprogram Föreläsning 12 Våren 2005 Innehåll Palindrom Hur man hittar fel i program, debuggning Felhantering, hur man förhindrar program att krascha Ev.
TDP002 - Imperativ programmering
TDP002 - Imperativ programmering Introduktion till kursen och Python Eric Elfving Institutionen för datavetenskap 1 Programmering - en översikt 2 Python Inbyggda typer Satser och uttryck 1 Programmering
public boolean containskey(string key) { return search(key, head)!= null; }
Tentamen Programmeringsteknik II 2009-05-26 med lösningar Skrivtid: 0900-1200 Uppgifter 1. Programbilagan ListMap.java innehåller en klass som implementerar en avbildning mellan mängden strängar och mängden
Användar- och systemdokumentation
Användar- och systemdokumentation Linköpings universitet Examinator:, IDA marme647@student.liu.se Utskriftsdatum: Innehållsförteckning Inledning... 3 Användarhandledning... 4 Systemkrav och installation...4
Kom igång med TIS-Office
Kom igång med TIS-Office Denna guide hjälper dig att komma igång med TIS-Office, mer information om hur man använder programmet finns i manualer på TIS-Office CD-skivan och i den inbyggda hjälpfunktionen
Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
11. Reguljära uttryck och grammatiker
Objektorienterad modellering och diskreta strukturer 11. Reguljära uttryck och grammatiker Sven Gestegård Robertz Datavetenskap, LTH 2015 Rekaputilation Vi har talat om satslogik och härledning predikatlogik