Datorspråk Breddgivande föreläsning
|
|
- Bernt Samuelsson
- för 8 år sedan
- Visningar:
Transkript
1 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 formella språk grammatik parsing Att läsa mer: Brookshear, Computer Science an overview, edition 7, Pearson/Addison Wesley, avsnitt 5.4 Sebesta, Concepts of Programming Languages, kapitel 3 språk för att beskriva algoritmer = programmeringsspråk språk för att beskriva data eller layout = beskrivningsspråk => dessa kallas formella språk Kozen, Automata and Computability (kursbok i Formella språk och automatateori) Aho, Sethi, Ullman, Compiler Principles, Techniques and Tools (kursbok i Kompilatorkonstruktion), EXCEL Java
2 5 6 Lisp Python numbers = [] for number in range(100): numbers.append(str(number) + "\n") open("filnamn", "w").writelines(numbers) Indenteringen styr hur satser hänger samman (block), som i andra språk kan ha begin... end eller måsvingar { } 7 8 Formella språk (CS edition 7, avs 5.4) Hur är språket uppbyggt? Vilka program / beskrivningar är korrekta i det formella språket. Språkets syntax beskriver hur de olika konstruktionerna får skrivas (som text). Syntaxen brukar skrivas i någon typ av grammatik. Exempel: Aritmetiska uttryck 3 - (4.5 * -2) / 1.56 Men vad är egentligen tillåtet? Får vi skriva följande uttryck? -(2+3) (2) *()-1 ((((2)))) Grundproblem. 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 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 För att beskriva tokens använder man ofta reguljära uttryck (regular expressions). Ett sådant uttryck sätts samman med sekvens val upprepning * (ingen eller flera gånger) + (en eller flera gånger) Vi vill i ett språk ange att en identifierare (namn på olika storheter) skall börja på en bokstav och sedan följas ev antingen bokstäver eller siffror. identifierare = letter (letter digit)* letter = a b c... z digit = a a1 abc1 a12345 är alla identifierare 1 2ab är ej identifierare identifierare = letter (letter digit)* letter = a b c... z digit = a a1 abc1 är alla identifierare är ej identifierare Reguljära uttryck kan överföras i "transition diagrams" letter eller digit Reguljära uttryck kan överföras till en ickedeterministisk ändlig automat (nondeterministic finite automata) Reguljära uttrycket (a b)*abb tolkar av alla strängar som har a och b i sig och som avslutas med exakt abb, t ex ababbbaabb kan överföras till a två olika vägar att gå a b b start letter delimiter Ett språk som beskrivs av reguljära uttryck kan överföras till en ändlig automat. b men i denna automat finns alternativ så att man ibland måste hoppa tillbaka. Det ger ineffektivitiet. En sådan automat kan omformas till en (deterministisk) ändlig automat (finite automata). b b 0 a b 1 2 b 3 a a a här finns alltid bara ett alternativ
4 13 14 I Unix och i många programspråk använder man reguljära uttryck för att ange mönster vid t ex sökning, t ex i Unix med grep. Exempel på kommandon på mönster: foo ordet foo. vilket tecken som helst a* noll eller flera av bokstaven a.* noll eller flera av vilket tecken som helst a+ ett eller flera av bokstaven a a? noll eller ett av bokstaven a (foo)+ en eller flera förekomster av strängen "foo" foo bar strängen "foo" eller "bar" [ ab ] bokstaven a eller bokstaven b [ a-e ] någon av bokstäverna a, b, c, d eller e [ ^a ] något tecken som inte är bokstaven a [ -a ] något av tecknet minus eller bokstaven a ^a bokstaven a först på en rad a$ bokstaven a sist på en rad \[ tecknet vänsterklammer Automatisering LEX är verktyg i UNIX som tar ett språk beskrivet som reguljära uttryck och skapar automatiskt ett program som utför den lexikaliska analysen, dvs delar upp teckenströmmen i lexems. Från Google om Lex och Yacc (27 oct 05) Regular expressions in Lex use the following operators: x the character "x" "x" an "x", even if x is an operator. \x an "x", even if x is an operator. [xy] the character x or y. [x-z] the characters x, y or z. [^x] any character but x.. any character but newline. ^x an x at the beginning of a line. <y>x an x when Lex is in start condition y. x$ an x at the end of a line. x? an optional x. x* 0,1,2,... instances of x. x+ 1,2,3,... instances of x. x y an x or a y. (x) an x. x/y an x but only if followed by y. {xx} the translation of xx from the definitions section. x{m,n} m through n occurrences of x Generellt lexikaliskt analysproblem. Skiljetecken (delimiters, breakcharacters) Man behöver specialsymboler för att markera t ex början och slut på en lexikalisk enhet, t ex sträng "detta är en sträng" Hur gör man om man vill att " skall ingå i strängen. Jag vill skriva strängen "i början och slutet skall det stå ett "-tecken" I html-kod: <b>för att göra ett ord halvfet skriver du <b> före ordet och </b> efter ordet </b> Man har ofta någon typ av escape-tecken. "i början och slutet skall det stå ett \"-tecken" Om escape-tecknet skall stå måsta man sätta escape för detta, t ex \\ Hur skiljer man lexems åt. Skiljetecken - blanka, tabtecken, ny rad Specialtecken, t ex ; Olika syn: Ibland ser man ; för att avsluta något, ibland för åt skilja något. a; b; c; a; b; c Bryttecken, men tecknet är även ett lexem delas upp i 12 + och 34 Gäller nästling av sådana specialsymboler <b>här skall vara halvfet <b> och mer halvfet</b>, men är även detta halvfet?</b>
5 17 18 Syntaxanalys Nu har vi en sekvens med lexikaliska eneheter. Bildar dessa ett korrekt program? För att beskriva syntax för ett språk brukar man använda en kontextfri grammatik eller BNF (Backus Naur Form) -grammatik. Detta utvecklades runt Algol som kom i början av 60-talet. Syntaxanalys - grammatik 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>) 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>) 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
6 21 22 Problem Är grammatiken entydig? Kan flera olika parsningsträd genereras? <expr> ::= <expr> + <expr> <expr> * <expr> (<expr>) B + A * C <expr> <expr> + <expr> <var> <expr> * <expr> B <var> <var> <expr> A <expr> * <expr> <expr> + <expr> <var> <var> <var> C B A C Grammatiken kan skrivas om: <expr> ::= <expr> + <term> <term> <term> ::= <term> * <factor> <factor> <factor> ::= ( <expr> ) B + A * C <expr> => <expr> + <term> => <term> + <term> => <factor> + <term> => <var> + <term> => B + <term> => B + <term> * <factor> => B + <factor> * <factor> => B + <var> * <factor> => B + C * <factor> => B + C * <var> => B + C * A Annat exempel på satskostruktion som ger flertydlighet. Hängande else-gren. I Pascal har vi Det stora problemet är hitta effektiva algoritmer som tar ett "program" i teckenformat if villkor then sann-sats if villkor then sann-sats else falsk-sats Om vi nästlar dessa satser kan vi få? - genomför lexikalisk analys - genomför syntax analys med uppbyggnad av ett parsningsträd if villkor then if villkor then sann-sats else falsk-sats Många språk löste detta med avslutande nyckelord if villkor then sann-sats endif if villkor then sann-sats else falsk-sats endif if villkor then if villkor then sann-sats endif else falsk-sats endif if villkor then if villkor then sann-sats else falsk-sats endif endif => detta gör en parser I samband med kompilering vill man att parserna skall rapportera alla syntaktiska fel som påträffas. Frågeställning: (error recovery) Var återstartar man parsningen efter felet. Hur undviker man att samma fel ger upprepade felmeddelanden. För vissa klasser av grammatiker och metoder att genomföra parsningen kan en parser automatiskt genereras. Ett exempel är för Unix YACC (Yet Another Compiler Compiler). YACC tar en grammatik i BNF (liknande) och genererar en parser i C.
7 25 26 Top down parser - Recursive descent Skriver ett program som följer grammatiken med en funktion för varje produktionsregel. <program> ::= begin <stmt_list> end <stm_list> := <stmt> <stmt> ; <stmt_list> <stmt> ::= <var> := <expr> <var> ::= A B C <expr> ::= <expr> + <term> <term> <term> ::= <term> * <factor> <factor> <factor> ::= ( <expr> ) parse-program 1) kolla om första lexemet är begin 2) bearbeta alla satserna <stmt_list> 3) kolla att sista lexemet är end Man klarar inte alla BNF-grammatiker utan en grammatik måste ibland göras om på en lämplig form. Man klarar inte produktionsregler med sk vänster-rekursivitet <expr> ::= <expr> + <term> <term> parse-expr: 1) försök hitta första uttrycket <expr> genom att anropa parse-expr 2) om det fanns, är nästa lexem +, fortsätt sedan med.. 3) om det inte fanns hitta en <term> Man kan skriva om ovanstående regel som: <expr> ::= <term> <expr > <expr > ::= + <term> <expr > "empty" parse-stmt_list 1) bearbeta nästa <stmt> 2) följer ;? 3) om ja, anropa parse-stmt_list Bottom-up parser - LR(n) parsers Idag finns en mycket utvecklad teori om parser där man i princip tar ett lexem i taget från vänster till höger. Från grammatiken bygger man tabeller och använder sig att "stack" och "tillstånd". Den är en relativt komplicerad process men man kan automatiskt generera parsern! Mer om detta får ni i en Kompilatorkurs. Hantering av operatorer och prioriteter I matematiken och i de flesta språk använder man operatorer, där varje operator har en prioritet. 1+2*3 = 7 (1+2)*3 = 9 * har högre prioritet än +. Hur är prioriteten här? x + y > 4 and z = 5 + v Vi tycker det är självklart ((x + y) > 4) and (z = (5 + v)) men ej säkert att detta gäller i programmeringsspråket. Associativitet = ((1-2) - 3) =? vänster associativitet = (1 - (2-3)) =? höger associativitet
8 29 30 Prefix, infix, postfix notationer För att undvika dessa problem med prioriteter och associativitet så överför man ofta uttryck från infix till prefix eller postfix (polish notation). Exempel om varje operator tar exakt två operander: 3+4*5 -> +3*45 prefix tex i Lisp (+ 3 (* 4 5)) (3+4)*5 -> *+345 prefix tex i Lisp (* (+ 3 4) 5) 3+4*5 -> 345*+ postfix (3+4)*5 -> 34+5* postfix Man kan då med en stack beräkna uttrycket (mer mekaniskt) sekvensiellt. Översättning av infix-uttryck till prefix-uttryck kan göras med t ex Järnvägsalgoritmen. Utdrag ur A Byte on Python Operator precedence ( ) (läsgst till höst prioritet) Operator Description lambda Lambda Expression or Boolean OR and Boolean AND not x Boolean NOT in, not in Membership tests is, is not Identity tests <, <=, >, >=,!=, == Comparisons Bitwise OR ^ Bitwise XOR & Bitwise AND <<, >> Shifts +, - Addition and subtraction *, /, % Multiplication, Division and Remainder +x, -x Positive, Negative ~x Bitwise NOT ** Exponentiation x.attribute Attribute reference x[index] Subscription x[index:index] Slicing f(arguments...) Function call (expressions,...) Binding or tuple display [expressions,...] List display {key:datum,...} Dictionary display expressions,... String conversion Semantik 3 olika modeller operationell semantik axiomatisk semantik denotationssemantik Alternativa sätt att beskriva språk är med syntaxdiagram. Syntaxdiagram för Pascal. Operationell semantik genom en interpretator Funktionen logikvärde (från Lisp/Scheme-laborationerna) och interpretatorn för KALKYL (Lisp/Scheme-uppgiften) kan ses som en operationell semantisk beskrivning av det implementerade logikspråket. Vi har skrivit en interpretator för språket. Genom att studera denna interpretator kan vi härleda viktiga egenskaper från hur logikspråket beräknas. Hur beräknas de logiska funktionen or och and? När testas slutvillkoret i en repetition, först eller sist. Variablers synbarhet, räckvidd (scope) f(x) = x + y vilket y avses?
9 Utdrag ur Java grammatiken för kommentarer Java språket beskrivs på SUN s sida på ca 10 sidor. The Java Language Specification, Second Edition second_edition/html/j.title.doc.html (27/10-07) Den lexikaliska grammatiken tar ca 10 sidor. Själva syntaktiska grammatiken tar 5 sidor..7 Comments There are two kinds of comments: /* text */ A traditional comment: all the text from the ASCII characters /* to the AS- CII characters */ is ignored (as in C and C++). // text A end-of-line comment: all the text from the ASCII characters // to the end of the line is ignored (as in C++). These comments are formally specified by the following productions: Comment: TraditionalComment EndOfLineComment TraditionalComment: / * NotStar CommentTail EndOfLineComment: / / CharactersInLineopt LineTerminator CommentTail: * CommentTailStar NotStar CommentTail CommentTailStar: / * CommentTailStar NotStarNotSlash CommentTail NotStar: InputCharacter but not * LineTerminator NotStarNotSlash: InputCharacter but not * or / LineTerminator CharactersInLine: InputCharacter CharactersInLine InputCharacter These productions imply all of the following properties: * Comments do not nest. * /* and */ have no special meaning in comments that begin with //. * // has no special meaning in comments that begin with /* or /**.
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
Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
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
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
Automatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA
Automatateori (2) Idag: Sammanhangsfria språk Dessa kan uttryckas med Grammatik PDA Grammatik = språkregler Ett mer kraftfullt sätt att beskriva språk. En grammatik består av produktionsregler (andra ord
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
Klassdeklaration. 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
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
Repetition 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
Introduktion C-programmering
Introduktion 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. 2 C Standarder
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
TDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 3 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Operatorer Java Standard Library Inmatning Operatorer operatorer En operator är en
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
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
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
Ö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,
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
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:
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
Pascal. 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
Parameterö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
Reguljära uttryck Grammatiker Rekursiv nedåkning Allmänna kontextfria grammatiker. Syntaxanalys. Douglas Wikström KTH Stockholm
Syntaxanalys Douglas Wikström KTH Stockholm popup-help@csc.kth.se Reguljära uttryck Reguljära uttryck förutsätter att en mängd bokstäver är givna, ett så kallat alfabet, som oftast betecknas med Σ. Uttryck
Konstruktion 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
Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.
Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E Föreläsning 4: Villkor och rekursion Konverterar mellan de grundläggande typerna: >>> int("") >>> int(.999) >>> float().0
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.
PROMETHEUS. Ett typat, objektorienterat programmeringsspråk av Tim Andersson.
PROMETHEUS Ett typat, objektorienterat programmeringsspråk av Tim Andersson. Linköpings universitet TDP019 Projekt: Datorspråk Examinator: Anders Haraldsson, IDA Tim Andersson timan976@student.liu.se Utskriftsdatum:
Pascal... 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
Introduktion 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
lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck
input läs tecken stoppa tillbaka ett tecken skicka ett token och dess attribut parser Eliminera white space och kommentarer Gruppera lästa tecken till tokens identifierare, nyckelord, numeriska konstanter,
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
Exempel 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
12. 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
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
Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion
Introduktion till programmering Föreläsning 4: Villkor och rekursion 1 1 Några inbyggda funktioner (med resultat!) Konverterar mellan de grundläggande typerna: >>> int("32") 32 >>> int(3.999) 3 >>> float(32)
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 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
Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program
Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik
Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik Först några definitioner: Alfabet = en ändlig mängd av tecken. Ex. {0, 1}, {a,b}, {a, b,..., ö} Betecknas ofta med symbolen Σ Sträng =
Programmeringsteknik 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
Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av. om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck
Lunds tekniska högskola Datavetenskap Lennart Andersson Föreläsningsanteckningar EDAF10 6 Reguljära uttryck I unix-skal finns ange enkla mönster för filnamn med * och?. En del program, t ex emacs, egrep
Dagens 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
Språket Python - Del 1 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
kind spelling Scanning
sats terminal Kompilatorteknik 2015 källprogram! Exempel program let var v : integer; const t ~ 3 in v := v + t kind spelling Scanning LET let föreläsningsfilmer Scannerns eller den lexikala analysatorns
Styrteknik: Binära tal, talsystem och koder D3:1
Styrteknik: Binära tal, talsystem och koder D3:1 Digitala kursmoment D1 Boolesk algebra D2 Grundläggande logiska funktioner D3 Binära tal, talsystem och koder Styrteknik :Binära tal, talsystem och koder
Grundläggande datalogi - Övning 9
Grundläggande datalogi - Övning 9 Björn Terelius January 30, 2009 Ett formellt språk är en (oftast oändlig) mängd strängar. Språket definieras av en syntax som är en samling regler för hur man får bilda
Introduktion 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?
Datatyper 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
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
12. Relationer och funktioner
Objektorienterad modellering och diskreta strukturer 12. Relationer och funktioner Sven Gestegård Robertz Datavetenskap, LTH 2014 Laboration 4 Syntaxanalys Grammatik för (vår delmängd av) satslogiska uttryck
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,
Introduktion till formella metoder Programmeringsmetodik 1. Inledning
Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur
Programmering 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
Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?
Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?
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
Program & programmering
Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,
TDIU01 - 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
Programmering 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
Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är
Övning 5 - Tillämpad datalogi 2013
/afs/nada.kth.se/home/w/u1yxbcfw/teaching/13dd1320/exercise5/exercise5.py October 1, 2013 1 0 # coding : latin Övning 5 - Tillämpad datalogi 2013 Automater, reguljära uttryck, syntax Sammanfattning Idag
729G09 Språkvetenskaplig databehandling
729G09 Språkvetenskaplig databehandling Föreläsning 2, 729G09, VT15 Reguljära uttryck Lars Ahrenberg 150409 Plan för föreläsningen Användning av reguljära uttryck Formella språk Reguljära språk Reguljära
Föreläsning 2 Programmeringsteknik och C DD1316
Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer
Föreläsning 13. Träd
Föreläsning 13 Träd Träd Ett träd är en datastruktur som tillåter oss att modellera sådant som vi inte kan modellera med linjära datastrukturer. Ett datavetenskapligt träd består av noder med pilar emellan.
Föreläsning 7: Syntaxanalys
DD2458, Problemlösning och programmering under press Föreläsning 7: Syntaxanalys Datum: 2009-10-27 Skribent(er): Carl-Fredrik Sundlöf, Henrik Sandström, Jonas Lindmark Föreläsare: Fredrik Niemelä 1 Syntaxanalys
Föreläsning 3: Booleans, if, switch
TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt
DAB760: Språk och logik
DAB76: Språk och logik /4: Finita automater och -7 reguljära uttryck Leif Grönqvist (leif.gronqvist@msi.vxu.se) Växjö Universitet (MSI) GSLT (Sveriges nationella forskarskola i språkteknologi) Göteborg
Tentamen 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:
Kompilatorer och interpretatorer
1 of 6 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@oru.se) Tentamen i Kompilatorer och interpretatorer för Dataingenjörsprogrammet m fl lördag 7 november
Hjä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,
Föreläsning 3. Stack
Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack
TDDE44 Programmering, grundkurs
TDDE44 Programmering, grundkurs Föreläsning 1 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Vad ingår i "Programmering, grundkurs"? Kursöversikt Datorer, program, programmeringsspråk Kort om nästa föreläsning
CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)
CS - Computer science Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008) Vad datateknik INTE är: Att studera datorer Att studera hur man skriver datorprogram Att studera hur man använder
Kontextfria grammatiker
Kontextfria grammatiker Kontextfria grammatiker 1 Kontextfria grammatiker En kontextfri grammatik består av produktioner (regler) på formen S asb S T T # Vänsterledet består av en icke-terminal (variabel)
Dagens 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 för ingenjörer, VT06 2 Repetition Repetition -
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
Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska
Matlab-föreläsning 3 (4), 17 september, 2015 Innehåll Sekvenser (från förra föreläsningen) Upprepning med for-slingor och while-slingor Villkorssatser med if - then -else - Logik Sekvenser - repetion från
FÖ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
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
MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP
MÄLARDALENS HÖGSKOLA CD5560 Formella språk, automater och beräkningsteori Användarmanual för simulatorn JFLAP Innehållsförteckning Att komma igång med JFLAP... 3 Att köra en sträng... 5 Att köra flera
Att skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer
729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser
ENKEL Programmering 3
ENKEL Programmering 3 Figurer i långa rader Titta på de olika figurerna i de olika raderna. Kan du se att de olika figurerna i varje rad är placerade enligt ett visst mönster? Kan du lista ut vilken figur
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
TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Inledning. 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.
Fö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
Språket Scheme. DAT 060: Introduktion till (funktions)programmering. DrScheme. uttryck. Jacek Malec m. fl. evaluering av uttryck.
DAT 060: Introduktion till (funktions)programmering. Jacek Malec m. fl. www.cs.lth.se/home/jacek Malec/dat060 Idag: 1. Kursens innehåll 2. Kursens organisation 3. Programmeringsspråket Scheme 4. Introduktion
Tentamen 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
Obligatorisk uppgift 5
(5 oktober 2018 Symbolisk kalkylator 1 ) Obligatorisk uppgift 5 En kalkylator som hanterar uttryck symboliskt dvs värden är uttryck inte bara tal. Uppgiften exemplifierar: objektorientering återanvändning
Programmering 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,
TDDC74 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
Backcode. 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...
Introduktion till programmering SMD180. Föreläsning 1: Programmets väg
Introduktion till programmering Föreläsning 1: Programmets väg 1 1 Vad är en dator? En maskin vars beteende styrs av de bitmönster som finns lagrade i datorns minne (inte helt olikt förra seklets självspelande
6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print
Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor på boken Lunell: Datalogi-begreppen och tekniken Obs! Andra frågor än dessa kan komma på tentan! 1. Konvertera talet 186 till
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
TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014
TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 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. Använd
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
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
Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.
Strömmar (streams) De sista dagarna objekt med tillstånd modellerades som beräkningsobjekt med tillstånd. Isådana modeller är tiden modelerad (implicit) som en sekvens av tillstånd. För att kunna modellera
kl Tentaupplägg
Tentaupplägg TIPS 1: Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer
Obligatorisk uppgift: Numerisk kalkylator
Informationsteknologi Tom Smedsaas 22 augusti 2018 Obligatorisk uppgift: Numerisk kalkylator Programmet skall läsa in aritmetiska uttryck samt beräkna och skriva ut deras värden. Programmet ska läsa från
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