Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
|
|
- Astrid Berg
- för 5 år sedan
- Visningar:
Transkript
1 1 2 Dagens föreläsning Modeller för programmeringsspråk Interpretator - att interpretera ett program - att beräkna ett program - Olika modeller programspråk Interpretator - kompilator program i S interpretator för S skrivet i P - Olika typer av språk Statiska och dynamiska programspråk - Syntax - semantik. Grammatik maskinkodsprogram datorns hårdvara -Genomgång av logikspråket från laboration 2. Förberedelse inför laboration 5. - MiniLisp (kap 21) intepretator för pure Lisp funktionerna eval/apply program i Kalkyl interpretatorför Kalkyl skrivet i Lisp - Kompilering i Lisp 3 4 Kompilator - att kompilera ett program - att översätta ett program från ett språk till ett annat språk program i S kompilator för S som översätter till språket T program i språket T Vi ser sålunda många olika modeller. program i Lisp Lisp-interpretator (eval) program i Ada Ada kompilator maskinkodsprogram Program i Ada Ada kompilator maskinkodsprogram datorns hårdvara program i Kalkyl Kalkyl översättare till Lisp program i Lisp Program i Java Java kompilator Java byte code Java byte code interpretator Numera kan Java byte code kompileras - Just in time kompilering
2 5 6 Ofta när vi säger att vi kompilerar, så menar vi att vi översätter ett program till maskinkod. Interpretering - kompilering Skall ett program (kommando) köras en gång kan interpretering vara snabbare. LOAD ADD a b Skall ett program köras många gånger går det fortare att köra ett kompilerat program än att interpretera. MULT STORE SUB c d e I Lisp så är program representerade som data i språkets strukturer, vilket medför att vi enkelt kan interpretera sådana strukturer och även under exekveringen skapa nya program eller ändra i existerande (jfr makro, som tas upp nästa föreläsning) JMPZE start EXCH Breg byt plats på värden Instruktionskoderna motsvaras av binära koder. a, b, c etc är namn för direkta adresser till minnet Om ett språk är skrivet med en interpretator kan man se interpretatorn som en semantisk beskrivning av språket, genom att studera hur interpretatorn hanterar de olika konstruktionerna. Lisp beskrivs lätt i funktionerna eval och apply, som är interpretatorn för Lisp. Med en kompilator skulle man kunna studera den skapade objektkoden, men är vanligen mycket svårt. Common Lisp har även en kompilator, där man kompilerar en enskild funktion till maskinkod. Man kan blanda kompilerad och interpreterad kod. 7 8 Statiska - dynamiska programspråk Parsning av programkod. Ett statiskt programspråk är kompilerat. Deklarationer görs av alla variabler till en typ (stark typning) En funktion definieras att ta parametrar ev en typ och returnerar en typ (typsignaturen) Eller flera funktioner med samma namn men med olika typsignaturer (generiska funktioner). var s : string s= abc s= 12 ger typfel Kompilatorn kontrollerar alla typer av uttryck och variabler stämmer överens. Ett dynamiskt programspråk tillåter oftast att en variabel har en pekare till ett dataobjekt, som i sin tur är typmärkt. Alltså kan en variabel bindas till värden av typer. Kontroller av att operationer får rätt typ görs under exekveringen. Ett dynamiskat språk är ofta interpreterat, men kan i många fall direkt kompileras till maskinkod/virtuell maskin. (Just in time kompilering) Exempel på dynamiska språk: Lisp, Python, Ruby, Javascript Exempel på statiska språk: C, Java, Ada Program är en följd av tecken, som man skriver t ex med texteditorn emacs. Frågan är vilka teckenföljder bildar ett program, en sats, ett uttryck etc? x = y ( radie+sin 2 * pi) ; Konkret syntax - en följd av tecken Lexikalisk analys en följd av lexikaliska enheter Syntaktisk analys och parsning Abstrakt syntax - parseträd sedan kan vi använda parseträdet för beräkning eller som utgångspunkt för att generera maskinkod "kompilerad kod"
3 9 10 Lexikalisk analys Syntaxanalys - grammatik int i = -3+x-sin(-1.5); består i Java av de lexikaliska enheterna (lexemes): int i = -3 + x - sin ( -1.5 ) ; Man har grundläggande enheter som kallas token: heltal, flyttal, sträng, identifierare, symbol etc Syntax bör utformas så att triviala fel ej kan får oväntade tolkningar: Exempel på gammalt känt fel: DO 10 I = 1.5 sats 10 sats En grammtik beskrivs i ett metaspråk med produktionsregler (rules, productions). Vi har terminal symboler och icke-terminala symboler. Terminal symboler skall återfinnas i programmet och markeras här med halvfet stil. <program> ::= 1 begin <stmt_list> end <stm_list> ::= <stmt> <stmt> ; <stmt_list> <stmt> ::= <var> := <expr> <var> ::= A B C <expr> ::= <expr> + <expr> <expr> * <expr> (<expr>) <var> Med en grammatik kan vi generera alla tänkbara program som finns. Med en grammatik kan vi avgöra om ett program uppfyller grammatiken. Vi önskar samtidigt få ett "parsningsträd (parse-tree). 1. Även -> användas för att skriva produktionsregler <program> ::= begin <stmt_list> end <stm_list> ::= <stmt> <stmt> ; <stmt_list> <stmt> ::= <var> := <expr> <var> ::= A B C <expr> ::= <expr> + <expr> <expr> * <expr> (<expr>) <var> begin A := B * ( A + C ) end Att generera en mening (sentence) kallas "derivation" <program> => begin <stm_list> end => begin <stmt> end => begin <var> := <expr> end => begin A := <expr> end => begin A := <expr> * <expr> end => begin A := <var> * <expr> end => begin A := B * <expr> end => begin A := B * ( <expr> ) end => begin A := B * ( <expr> + <expr> ) end => begin A := B * ( <var> + <expr> ) end => begin A := B * ( A + <expr> ) end => begin A := B * ( A + <var> ) end => begin A := B * ( A + C) end Resultatet kan var ett parsningsträd, som beskriver den abstrakta syntaxen, <program> begin <stmt_list> <stmt> end <var> := <expr> A <expr> * <expr> <var> ( <expr> ) B <expr> + <expr> <var> A <var> C
4 13 14 Till laboration 5 definierar vi språket KALKYL, med vilket vi kan göra aritmetiska beräkningar. Språket innehåller: (program sats 1 sats 2... stats n ) En sats kan vara en: tilldelning (variabel := uttryck) upprepning (medan villkorsuttryck sats 1 sats 2... stats n ) val (om villkorsuttryck sats sats) in- och utmatning (läs/skriv variabel) När vi använder Lisp, så sköter inläsningen (read-funktionen) uppgiften att göra den lexikaliska analysen och från parenteserna skapa en liststruktur, som motsvarar parse-trädet. Vi skall i laboration 5 implementera ett litet imperativt språk, Kalkyl. Ett uttryck kan vara: (uttryck 1 + uttryck 2 ) (uttryck 1 - uttryck 2 ) (uttryck 1 * uttryck 2 ) (uttryck 1 / uttryck 2 ) Ett villkorsuttryck kan vara: (uttryck 1 > uttryck 2 ) (uttryck 1 < uttryck 2 ) (uttryck 1 = uttryck 2 ) Uppgift 5A: Skriv en interpretator för KALKYL, som vi kallar kalkylera. (kalkylera program) (kalkylera (program (a := 5) (skriv a))) A = 5 (kalkylera (program (läs n) (summa := 0) (medan (n > 0) (summa := (summa + n)) (n:= (n - 1))) (skriv summa))) Ge värde till N: 6 SUMMA = 21 Uppgift 5B: Skriv en kompilator för KALKYL som översätter programmet till Lisp-kod. Kalla den översätt. (översätt (program (skriv a))) => Lisp-kod, t ex en funktion som utför beräkningen Som exempel utför vi dessa steg med LOGIKVÄRDE från laboration Först tittar vi på lösningen för LOGIKVÄRDE (ungefär som ni borde ha gjort!) 2. Sedan tittar vi på vilka ändringar vi behöver göra för att istället översätta=kompilera ett logikprogram till Lisp Definition av språket (konkret syntax): logiskt-uttryck = logiska sanningsvärden (sant och falskt) logisk variabel logiskt-uttryck logiskt-uttryck logiskt-uttryck logiskt-uttryck logiskt-uttryck Givet att a är sant och b är falskt vad är värdet av följande logiska uttryck? sant (a (b falskt))
5 17 18 En mer formell definition av ett programspråk kan vi t ex göra med att ge en grammatik för språket. Från grammatiken kan vi generera alla tänkbara program eller vi kan ta ett program och kontrollera om det uppfyller en grammatik (= parsing i samband med kompilatorer). Man använder ofta BNF-grammatik. Vi beskriver här den konkreta syntaxen (i parentesformat) för logiska uttryck (icke (a och (sant eller b))) <logik-uttryck> ::= <logik-konstant> <logik-variabel> ( icke <logik-uttryck>) ( <logik-uttryck> <logik-binär-operator> <logik-uttryck> ) <logik-konstant> -> sant falskt <logik-variabel> -> a b c... <logik-binär-operator> -> och eller Kompilering av logiska uttryck till Lisp Ett logik-uttryck transformeras ( kompileras till ett motsvarande logiskt uttryck i Lisp. Vi kallar funktionen kompilera-logik. Av detta skapar vi en funktion, ett lambda-uttryck, som i sin tur tar en formell parameter i form av en värdetabell. Vi kallar denna formella parameter värdetabell. (lambda (värdetabell) logik-uttryck-i-lisp) Vi kan se argumentet värdetabell som till det kompilerade programmet. För att exekvera den skapade koden, så applicerar vi den skapade funktion på en given värdetabell, dvs. Vi kan definiera en funktion exekvera. (defun exekvera (uttryck ) (funcall (kompilera-logik uttryck) )) (defun exekvera (uttryck ) (eval (list (kompilera-logik uttryck) (list quote )))) Översättning av logiska konstanter: sant översätts till (quote sant) falskt översätts till (kompilera-logik sant) => (lambda (värdetabell) (quote sant)) (värdetabell behövs ej för konstanter) Översättningen av en logisk variabel går till så att vi måste skapa ett uttryck som söker i värdetabellen. logiskt-variabel -> (slå-upp-sanningsvärde (quote logisk-variabel) värdetabell) (kompilera-logik a) => (lambda (värdetabell) (slå-upp-sanningsvärde (quote a) värdetabell)) Översättning av de logiska konnektiven: (icke loguttr) -> (if (eq kod för loguutr (quote sant)) (kompilera-logik (icke sant)) => (lambda (värdetabell) (if (eq (quote sant) (quote sant)) (loguttr 1 och loguttr 2 ) -> (if (eq kod för loguttr 1 (quote sant)) kod för loguttr 2 )) (loguttr 1 eller loguttr 2 ) -> motsvarande
6 21 22 Skapa funktionen med lambda och argument (defun kompilera-logik (uttryck) (list lambda (list värdetabell) (kompilera-uttryck uttryck))) Kompilera ett logiskt uttryck (defun kompilera-uttryck (uttryck) ((konstant? uttryck) (skapa-konstant uttryck)) ((variabel? uttryck) (skapa-slå-upp-sanningsvärde uttryck)) ((icke-uttryck? uttryck) (skapa-icke (kompilera-uttryck (arg uttryck)))) ((och-uttryck? uttryck) (skapa-och (kompilera-uttryck (arg1 uttryck))) (kompilera-uttryck (arg2 uttryck)))) ((eller-uttryck?..).. på samma sätt...) (t... felmeddelande...))) Skapa Lispkod för konstant (defun skapa-konstant (konstant) (list quote konstant)) Skapa Lispkod för variabel (defun skapa-slå-upp-sanningsvärde (variabel) (list slå-upp-sanningsvärde (list quote variabel) värdetabell)) Skapa Lispkod för icke- och och-uttryck. Obs att argumenten är ett färdigkompilerat uttryck, dvs Lispkod. (defun skapa-icke (lispkod-arg) (list if (list eq lispkod-arg (quote sant)) (defun skapa-och (lispkod-arg1 lispkod-arg2) (list if (list eq lispkod-arg1 (quote sant)) lispkod-arg2 )) Exempel på kompilering: (kompilera-logik (icke a)) ->(lambda (värdetabell) (if (eq (slå-upp-sanningsvärde (quote a) värdetabell)) (quote sant)) Här följer vi både kompilering och exekvering: (exekvera (icke a) ((a. sant))) -> (eval (list (kompilera-logik (icke a)) (quote ((a. sant))))) (eval ((lambda (värdetabell) (if (eq (slå-upp-sanningsvärde (quote a) värdetabell) (quote sant)) ((a. sant)))) -> ((lambda (värdetabell) (if (eq (slå-upp-sanningsvärde (quote a) värdetabell) (quote sant)) ((a. sant)))) => falskt
7 25 26 minilisp (kap 21) Här skissar vi en interpretator för Lisp (pure Lisp), dvs funktionen eval. Innehåller: - konstanter - variabler - villkorsuttryck - funktioner däremot ej: - lokala variabler - hopp - felhantering - makrofunktioner I kursbilbioteket finns fil med minilisp. Interpretator för minilisp Interpretatorn beskriver språkets semantik (operationell semantik), dvs beskriver vad som händer då olika konstruktioner utförs. - när beräknas argumenten? - hur beräknas det villkorliga uttrycket? - hur hanteras variabler och data? - vad händer om en funktionsdefinition saknas? Interpretatorn följer den sk omgivningsmodellen. (Ej substitutionsmodellen vi använde för att visa rekursion) Designbeslut statisk eller dynamisk 1 bindning? -> dynamisk bindning (lite enklare) hur organsiera symboltabellen? -> associationslista ((x. 3) (y. 5) (x. 2) (z. 4)) sökning efter första förekomsten var lagrar vi funktionsdefinitioner? -> i en global lista primitiva funktioner? -> kopplas till Common Lisp via en tabell syntax för minilisp? -> som Lisp, alla funktioner börjar * Hur hanteras special forms -> läggs in direkt i interpretatorn minilisp (*car (*quote (a b c))) = a (*car (*quote (a b c))) ()) (*car l) ((l. (a b c)))) (*cond ((*eq l nil) t) (t (*car l))) ((l. (x y z)))) 1. Dessa två begrepp tas upp i den sista föreläsningen
8 29 30 minilisp <-> Common Lisp (setq primitive-functions ( (*car. car) (*cdr. cdr) (*cons. cons) (*eq. eq) (*times. *)... )) (setq function-definitions ( (second. (*lambda (l) (*car (*cdr l)))) (fak. (*lambda (n) (*cond ((*eq n 0) 1) (t (*times n (fak (*sub1 n))) )))))) (defun mini-eval (form env) ; uttryck x symboltabell -> uttryck ((constant? form) (evaluate-constant form)) ((variable? form) (lookup-value form env)) (itional? form) (eval-conditional (clauses form) env)) (t (mini-apply (function-part form) (evalargs (args-part form) env) env)))) (defun mini-apply (fn args env) ; funktion x argumentlista x symboltabell -> uttryck ((primitive-function? fn) (primitive-apply fn args)) ((function-symbol? fn) (mini-apply (lookup-definition fn) args env)) ((lambda? fn) (body fn) (extend-env (bind (formal-params fn) args) env))) (t (error "u.d.f - undefined function ~s" fn)))) (defun evalargs (arg-list env) ; argumentlista x symboltabell -> argumentlista ((empty-args arg-list) '()) (t (cons (first-arg arg-list) env) (evalargs (rest-of-args arg-list) env))) )) (defun eval-conditional (clauses env) ; klausuler x symboltabell -> uttryck ((empty-clause-list? clauses) (error "no clause with true predicate")) ((true? (predicate (first-clause clauses)) env)) (expression (first-clause clauses)) env)) (t (eval-conditional (rest-of-clauses clauses) env)))) Skapa en ny ram och bygg ut omgivningen (defun extend-env (new-bindings old-env) ; bindningar x symboltabell -> symboltabell (append new-bindings old-env)) (defun bind (formals values) ; parameterlista x argumentslista -> bindningar (mapcar # cons formals values)) För övriga primitiver se läroboken kapitel 21.
9 33 34 Kompilator Kompilerad kod av fakultetsfunktionen. Lisp kan hantera både funktioner som är kompilerade till maskinkod och funktioner som interpreterar liststruturformen. En enskild funktion kan kompileras med compile. En hel fil kan kompilera med compile-file (eller enklare via Allegro ACL-file). En fasl-fil skapas. En sådan fil kan laddas in med load. (Se laboration 4 - almanackan) Frågeställningar Kan kompilatorn antaga att de definitioner som finns tillgängliga vid kompileringstillfället även är giltiga vid exekveringstillfället. Detta medför att man vid anrop av en funktion ofta måste gå via symbolen för att hitta aktuell definition. Vi kan i språket skapa ny kod och ge till eval. Med makro och inline-deklarerade funktioner kan vi få ytterligare effektiviseringar. (defun fak (n) (if (= n 0) 1 (* n (fak (- n 1))))) (disassemble fak) ;; disassembly of #<Function (:ANONYMOUS-LAMBDA #x4f21452> ;; formals: N ;; constant vector: 0:FAK ;; code start: #x4f21394: 0: 9de3bf98 save%o6, #x-68, %o6 4: 80a0e001 cmp%g3, #x1 8: 93d02010 tne%g0, #x10 12: taddcctv%g0, %g1, %g0 16: mov%i0, %o0 20: mov%g0, %o1 24: 810a0009 tsubcc%o0, %o1, %g0 28: 0e bvs60 32: nop 36: d bne,a88 40: a mov%i0, %l0 44: mov#x4, %o0 lb1: 48: mov#x1, %g3 lb2: 52: 81c7e008 jmp%i : 91ea0000 restore%o0, %g0, %o0 lb3: 60: c4013e83 ld[%g ], %g2; EXCL::=_2OP 64: 9fc1200b jmpl%g4 + 11, %o7 68: xor%g0, #x2, %g3 72: 80a10008 cmp%g4, %o0 76: 32bffff9 bne,a48 80: mov#x4, %o : a mov%i0, %l0 lb4: 88: mov#x4, %o1 92: 990e0009 tsubcc%i0, %o1, %o4 96: 2e80000d bvs,a : c4013dd7 ld[%g ], %g2; EXCL::-_2OP lb5: 104: c ld[%i5 + 34], %g2; FAK 108: c mov%o4, %o0 112: 9fc1200b jmpl%g4 + 11, %o7 116: xor%g0, #x1, %g3 120: mov%o0, %o1 124: c4013da7 ld[%g ], %g2; EXCL::*_2OP 128: mov%l0, %o0 132: 9fc1200b jmpl%g4 + 11, %o7 136: xor%g0, #x2, %g3 140: 10bfffea ba52 144: nop lb6: 148: mov%i0, %o0 152: 9fc1200b jmpl%g4 + 11, %o7 156: xor%g0, #x2, %g3 160: 10bffff2 ba : mov%o0, %o4
Dagens föreläsning. Modeller för programmeringsspråk. - Olika modeller programspråk Interpretator - kompilator. - Syntax - semantik.
1 Dagens föreläsning Modeller för programmeringsspråk - Olika modeller programspråk Interpretator - kompilator - Olika typer av språk Statiska och dynamiska programspråk - Syntax - semantik. Grammatik
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 Dagens föreläsning En konstruktion i Common Lisp som möjliggör att man kan skapa ny Lisp-kod, som i sin tur beräknas. - makrobegreppet - makrofunktioner - special form - makrodefintion - backquote
Läs merDagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler
21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse
Läs merTentamen i. TDDC67 Funktionell programmering och Lisp
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDC67 Funktionell programmering och Lisp och äldre kurser TDDC57 Programmering, Lisp och funktionell programmering
Läs merUniversitetet 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
Läs merDagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning
1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merTentamen 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
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 merTENTAMEN 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 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 merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merDatorspråk Breddgivande föreläsning
1 2 TDDC10 Perspektiv på datateknik/datavetenskap TDDC79 Perspektiv på informationsteknologi TDP001 Handhavande av datormiljö (D, IT, C, IP) Datorspråk Breddgivande föreläsning språk med textuell representation
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 merFöreläsning 2. Operativsystem och programmering
Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data
Läs merOMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15
OMTENTAMEN I PROGRAMSPRÅK -- DVG C01 130823 kl. 08:15-13: 15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd
Läs merIntroduktion till programmering. Programspråk och paradigmer
Introduktion till programmering Programspråk och paradigmer Vad är ett programspråk? Aprogramming languageis a formal constructedlanguagedesigned to communicate instructions to a machine, particularly
Läs merImperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur
Imperativ programmering konstruktioner i Lisp Imperativ programmering I den imperativa programmeringen skriver vi program satsvist. Datastrukturer (kap.-.) aystruktur poststruktur Iterativa uttryck (avs.)
Läs merIntroduktion till programmering och Python Grundkurs i programmering med Python
Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?
Läs merLABORATION 1. Inledande Lisp - rekursion
AI - Lisp / Laboration 1 - Inledande Lisp - rekursion 1 LABORATION 1 Inledande Lisp - rekursion 1.0 LABFÖRORD Detta labbmaterial ger dig introduktion till Lisp för att kunna använda programmeringsspråket
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 merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merBackcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet
Žƒ ƒ Ž Ž ˆ ƒ ƒ ƒ Žƒ ƒ Ž ˆ Œ ŽŽ ƒ Backcode Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Innehållsförteckning 12-05-29 Inledning... 3 Användarhandledningen... 4 Klasser... 4 Metoder...
Läs merTentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
Läs merDVG 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 merSpråket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.
DAT 060: Introduktion till (funktions)programmering. Jacek Malec m. fl. www.cs.lth.se/home/jacek Malec/dat060 Idag: 1. Kursens innehåll 2. Kursens organisation 3. Programmeringsspråket Scheme 4. Introduktion
Läs merTvå fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)
Programmönster: # Listan som sekvens, Rekursiv process Enkel genomgång av sekvens (element på toppnivån i en lista)) TDDC60 Programmering: abstraktion och modellering Föreläsning 5 Rekursiva och iterativa
Läs merExempel 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,
Läs merObjektorienterad 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
Läs merI 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
Läs merTDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017
FÖRELÄSNING 1 TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Introduktion till kursen Schemespråkets grunder Enkla exempel Jalal Maleki Institutionen för datavetenskap Linköpings universitet
Läs merAnvä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
Läs merParsning. 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
Läs merVåra enkla funktioner eller procedurer
Föreläsning 3 Våra enkla funktioner eller procedurer Programmönster 1. Repetition 2. Högre-ordningens procedurer/programmönster - Procedurer som argument - Procedurer som returnerade värden 3. Scope och
Läs merProgram & programmering
Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,
Läs mer(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Läs merInledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock
Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.
Läs merPascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt
Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-06-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Fredag 10 juni
Läs merKompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2009
Kompilatorteknik Görel Hedin Datavetenskap Lunds Tekniska Högskola Temaföreläsning, Datorer i system, 2009 Kompilatorteknik källkod kompilator maskinkod Teknik för att bygga verktyg för formella språk.
Läs merFÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION
TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Jalal Maleki Institutionen för datavetenskap Linköpings universitet jalal.maleki@liu.se FÖRELÄSNING 1 Introduktion till kursen Schemespråkets grunder
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs merExempel på typer av datorspråk EXCEL
1 2 TDDC10 Perspektiv på datateknik/datavetenskap TDDC79 Perspektiv på informationsteknologi TDP001 Handhavande av datormiljö (D, IT, C, IP) Breddgivande föreläsning Historik Datorspråk Programmeringsparadigmer
Läs merÖ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,
Läs merImperativ programmering. Föreläsning 2
Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.
Läs merPascal... Pascal. Pascal... Pascal...
... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Läs merProgrammering I Tobias Wrigstad fredag, 2009 augusti 28
Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs merHjälpmedel för kompilatorkonstruktion, DVB004
Hjälpmedel för kompilatorkonstruktion, DVB004 Version 4.2 021104 Göran Fries 031104 GF Kompilatorn kan lämpligen konstrueras i tre ganska fristående pass (p1,p2,p3). Första passet gör en lexikalisk analys,
Läs merSista 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 merProgramsprå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 merProgrammering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Läs merObjektorienterad programmering i Java
bild 1 Objektorienterad programmering i Java Föreläsning 1 Kapitel 1-3 i kursboken Java Software Solutions bild 2 Läsanvisningar Kapitel 1 är en repetition av det ni förväntas kunna sedan tidigare. Det
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2012-01-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 10 januari
Läs merProgrammering 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
Läs merDagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merIntroduktion 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 merLinköpings universitet Innovativ Programmering TDP019 Projekt: Datorspråk. flip/flop. ett helt flippat språk
Linköpings universitet Innovativ Programmering TDP019 Projekt: Datorspråk flip/flop ett helt flippat språk TDP019 - Projekt: Datorspråk Vårterminen 2012 Johan Wänglöf Henrik Forsberg johwa457@student.liu.se
Läs merSista 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 merFöreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program
Läs merObjektorienterad 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
Läs merKompilering 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
Läs merDatatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Läs merIntroduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser
Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och
Läs merInlä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
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 merTDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om
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 merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =
Läs merStatic vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk
Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program
Läs merFöreläsning 3: Booleans, if, switch
TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt
Läs merUppgift 6A - Frekvenstabell
Uppgift 6A - Frekvenstabell (defstruct par element antal) (defun unika-element (lista) (reduce #'(lambda (x y) (if (listp x) (if (find y x) x (cons y x)) (if (eq x y) x (list x y)))) lista)) (defun sortera-tabell
Läs merIntroduktion 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 merKompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014
Kompilatorteknik Görel Hedin Datavetenskap Lunds Tekniska Högskola Temaföreläsning, Datorer i system, 2014 En typisk kompilator programkod while (a >= 0) { } kompilator maskinkod 0024 6050 2530 0000 0000
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Läs merFöreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?
Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?
Läs 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 merF4. 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
Läs merTypsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19
Typsystem Typsystem finns i alla programmeringsspråk. Avsikten med typsystem är att kontrollera att uttryck är säkra i den bemärkelsen att innebörden i operanderna är klar och inte är motsägelsefull och
Läs merKonstruktion av datorspråk
Konstruktion av datorspråk Fö4: Domänspecifika språk och parsning Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap Linköpings universitet 2009-02-12 Domänspecifika språk Ett domänspecifikt
Läs merParameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Läs merBEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK
FÖRELÄSNING 2 Viss repetition av Fö1 Rekursivt fallanalys Rekursiva beskrivningar BEGREPP HITTILLS Konstant, Namn, Procedur/Funktion, LAMBDA, Parameter, Argument, Kropp, Villkor/Rekursion, Funktionsanrop,
Läs merFö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
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 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 merUppgift 4A - Definition av enkla funktioner
Uppgift 4A - Definition av enkla funktioner (defun start-klockslag (tidsperiod) "tidsperiod -> klockslag" (typkontroll tidsperiod #'tidsperiod?) (first (packa-upp tidsperiod))) (defun slut-klockslag (tidsperiod)
Läs merOOP Objekt-orienterad programmering
OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första
Läs merProgrammering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:
Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs mer12. Relationer och funktioner
Objektorienterad modellering och diskreta strukturer 12. Relationer och funktioner Sven Gestegård Robertz Institutionen för datavetenskap, LTH 2013 Laboration 4 Syntaxanalys Grammatik för (vår delmängd
Läs merUniversitetet 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
Läs merTDDC74 Lab 04 Muterbara strukturer, omgivningar
TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden
Läs mern Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?
Tidigare TDDC74 Programming: Abstraktion och modellering Föreläsning 4 Symboler, Par, Listor Representation av par, Grafisk notation för par Representation av listor mha par Typiska listhanteringsprocedurer
Läs merDeklarationer/definitioner/specifikationer
Deklarationer/definitioner/specifikationer Konstantdefinitioner innebär att ett namn binds och sätts att referera till ett värde som beräknas vid kompileringen/interpreteringen och som under programmets
Läs merallt.cl Page 1 of 17 Date: torsdag 7 december 2006
allt.cl Page 1 of 17 Slumpspelaren Väljer slumpvis en flytt ur möjliga flyttar. (defun skapa-slump-spelare (namn bricktyp) "lisp-sträng x bricka -> spelare" (skapa-spelare #'slump-gör-flytt namn bricktyp))
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 merFöreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är
Läs mer