Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av. om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck
|
|
- Per Andreasson
- för 8 år sedan
- Visningar:
Transkript
1 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 och sed, erbjuder möjlighet att söka efter strängar som matchar mer komplicerade mönster som beskrivs med reguljära uttryck. I Java-paketet java.util.regex finns också klasser som tillhandahåller sådan funktionalitet. Ett reguljärt uttryck beskriver ett språk och de nämnda programmen kan alltså avgöra om en given sträng tillhör språket. T ex så beskriver utrycket 0 1 (0 1) det språk som innehåller alla binära tal utan onödiga inledande nollor, {0, 1, 10, 11, 100,.... I detta uttryck är 0 och 1 symbolerna i alfabetet medan, och är operatorer som kan förekomma i reguljära uttryck. Parenteser används som vanligt för att gruppera. Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av är ett reguljärt uttryck ɛ är ett reguljärt uttryck om σ Σ så är σ ett reguljärt uttryck om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck om α är ett reguljärt uttryck så är α ett reguljärt uttryck Vi har använt ett tjockare typsnitt i och ɛ för att göra det tydligt att de är reguljära uttryck och inte den tomma mängden och den tomma strängen. På samma sätt gör vi inledningsvis när en symbol i alfabetet Σ används i ett reguljärt uttryck. När vi skriver reguljära uttryck exakt enligt denna definition säger vi att de är på kanonisk form. Exempel. a (a b) (((a b) a) (b a) ) är reguljära uttryck på alfabetet {a, b. Den normala konventionen är att har högst precedens följt av och lägst när man utelämnar parenteser och man inte skriver ut. Det sista uttrycket kan alltså skrivas ((a b)a)(ba). När vi har definierat hur man räknar ut värdet av ett reguljärt uttryck kommer vi att se att både och är associativa så att vi kan undvara ytterligare några parenteser, (a b)a(ba). 6.1 Semantik Värdet av ett reguljärt uttryck är ett språk. Ordet semantik betyder mening eller betydelse. För att tydligt skilja på ett reguljärt uttryck och uttryckets värde kommer vi i denna kurs skriva L(()α) när vi menar det språk som är värdet av uttrycket α. Definitionen av L() är induktiv med ett fall för varje sorts reguljärt uttryck. Definition. L( ) = L(α β) = L(α)L(β) L(ɛ) = {ɛ L(α β) = L(α) L(β) L(σ) = {σ, σ Σ L(α ) = (L(α)) 33
2 I den första fallet, L( ) = är i vänsterledet ett reguljärt uttryck medan i högerledet är den vanliga tomma mängden. I det andra fallet är det tydligare att bokstaven epsilon betyder helt olika saker när den används som ett reguljärt uttryck och när den är ett namn på en tomma strängen. Det språk som ɛ betecknar, {ɛ är inte särskilt intressant, men ɛ är praktiskt att kunna användas som en del i mer komplexa reguljära uttryck. Uttrycket σ betyder också ett språk med bara ett element, men är nödvändigt som bas när man skall beskriva större språk. Med hjälp av och (den osynliga) kan man beskriva språk med flera strängar och längre strängar. Exempel. L(ab) = L(a)L(b) = {a{b = {ab L(a b) = L(a) L(b) = {a {b = {a, b L((a b)(a b)) = L(a b)l(a b) = {a, b{a, b = {aa, ab, ba, bb Stjärnoperatorn ger oss möjlighet att beskriva språk med oändligt många element. Exempel. L(a ) = (L(a)) = {a = {ɛ, a, aa, aaa,... L(a(a b) ) = = {a, aa, ab, aaa, aab, aba, abb,... En del författare använder i stället för i reguljära uttryck. Det är lätt att förstå varför. I vårt sammanhang är det en fördel att ha olika operatorer i reguljära uttryck och mängduttryck. I matematiken har man sällan anledning att skilja på ett uttryck och uttryckets värde. När man skriver ett uttryck menar man nästan alltid dess värde. I programsammanhang är det annorlunda. Om man i ett program skriver uttrycket x*x+1 så är det dess värde som skall beräknas med användning av det värde x har vid tillfället. Om man matar in x x + 1 i Matlab eller Maple så måste uttrycket själv sparas för att kunna beräknas eller t ex deriveras vid ett senare tillfälle. Exempel. Det reguljära uttrycket (0 1) betecknar språket av alla binära strängar. L((0 1) ) = (L((0 1))) = (L(0) L(1)) = ({0 {1) = {0, 1 = {ɛ, 0, 1, 00, 01, 10, 11, 000,.... Exempel. (0 (1(0 1) )) beskriver språket av alla binära strängar utan extra inledande nollor, {0, 1, 10, 11, 100, Utvidgad notation Reguljära uttryck används ofta för att beskriva hur man får skriva numeriska konstanter och variabelnamn i programspråk. I sådana sammanhang inför man ofta ytterligare några konstruktioner. I stället för att skriva tillåter vi oss [0 9]. Om man vill upprepa något en eller flera gånger skriver man ett plustecken i stället för stjärna, [0 9] + = [0 9][0 9]. Ett frågetecken efter ett reguljärt uttryck betyder upprepning ingen eller en gång, α? = α ɛ. Operatorn har samma precedens som och +. Det kan också vara bekvämt att sätta namn på reguljära uttryck och använda dessa namn i andra reguljära uttryck. Den utvidgade notationen innebär inte att man kan beskriva flera språk utan bara att en del beskrivningar blir kortare. 34
3 Exempel. DIGIT = [0 9] NAT = DIGIT + INT = ( )?NAT FLOAT = INT. NAT Det är emellertid inte tillåtet att använda sådana namn rekursivt. En sådan utvidgning behandlas i kapitlet om grammatik. 6.3 Reguljära uttryck med Java I java.util.regex finns två klasser för effektiv matchning med reguljära uttryck. Om samma reguljära uttryck skall användas flera gånger kompileras det först: Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); Kompileringen skapar en tillståndsmaskin som representeras av en tabell med tillståndsövergångar. Matcharen innehåller ett tillstånd som beskriver hur långt matchningen kommit i strängen, som alltså kan utföras en bit i taget. Metoden matches() försöker matcha det reguljära uttrycket mot hela strängen. Om det reguljära uttrycket bara skall användas en gång skriver man: boolean b = Pattern.matches("a*b", "aaaaab"); 35
4 7 Grammatik De språk som kan beskrivas med reguljära uttryck är tämligen primitiva. Man har bara tre operationer: en för sammasättning, en för alternativ och en för upprepning. Tidigare i kursen har vi haft anledning att diskutera den externa eller konkreta representationen av aritmetiska uttryck. Reguljära uttryck är för primitiva för att kunna beskriva mängden av aritmetiska uttryck. Ett uttryck består av en eller flera termer separerade av enkla plus- eller minustecken. En term består i sin tur av en eller flera faktorer separerade av enkla multiplikations- eller divisions- tecken. En faktor är ett tal, en variabel eller ett uttryck inom parenteser. Ett tal består av en eller flera siffror och får inledas med ett minustecken. En variabel består av en eller flera bokstäver bland a z. Vi använde en särskild formell notation, Backus Naur form (BNF), för detta: expr ::= term (addop term)* term ::= factor (mulop factor)* factor ::= NUMBER NAME ( expr ) addop ::= + - mulop ::= * / Detta kallas för en grammatik och den består av produktioner. Varje produktion har ett vänsterled som vi kallar syntaxsymbol (eng. nonterminal symbol). Syntaxsymbolen är ett namn. Eftersom grammatiken ibland skall översättas till ett program som kan analysera strängar skrivna enligt grammatiken använder vi gärna namn som duger som metodnamn i Java. Högerledet i en produktion påminner om reguljära uttryck; vi använder samma operatorer,, och sammansättningsoperatorn (som inte syns). Vi använder parenteser för gruppering. Det som skiljer är att man får använda syntaxsymboler i uttrycket och att symbolerna i alfabetet omges av citationstecken för att skilja dem från syntaxsymboler. Symbolerna i alfabetet kallas för slutsymboler (eng. terminal symbols). NUMBER och NAME är också slutsymboler och betecknar tal resp. variabelnamn. Normalt använder reguljära uttryck för att beskriva hur tal och variabelnman skall skrivas. I grammatiken ovan är N = {expr, term, factor, addop, mulop mängden av syntaxsymboler och Σ = {+,,, /, NUMBER, NAME slutsymboler. Ibland gör man tvärt om och dekorerar syntaxsymbolerna i stället för slutsymbolerna. <expr> ::= <term> (<addop> <term>)* <term> ::= <factor> (<mulop> <factor>)* <factor> ::= NUMBER NAME ( <expr> ) <addop> ::= + - <mulop> ::= * / Varje rad namnger en syntaxsymbol och räknar upp beståndsdelarna. Syntaxsymbolen står till vänster om ::= och beståndsdelarna till höger. Det som står inom parentes och följs av en asterisk får upprepas noll eller flera gånger. När det finns alternativa beståndsdelar separeras dessa av -tecken som utläses eller. Det som omges av apostrofer står för sig själv. Vi ser alltså att en addop är ett plus- eller minus-tecken och att ett expr består av en eller flera termer separerade av plus- eller minus-tecken. Symbolen för alternativ binder svagast så att ( expr ) är ett av tre alternativ för factor. Vi har nu en grammatik för aritmetisk uttryck och kan göra en härledning för att visa hur en sträng kan konstrueras. En härledning börjar med grammatikens startsymbol, som enligt konvention brukar vara den symbol som finns i högerledet i den första raden. I varje härledningssteg 36
5 ersätter man en syntaxsymbol med motsvarande högerled. Härledningen är klar när det inte finns några syntaxsymboler kvar. Följande är en härledning av strängen 1+x eller egentligen av NUMBER + NAME. När det inte kan bli några missförstånd i en härledning utelämnar vi citationstecken kring slutsymbolerna. expr term addop term factor addop term NUMBER addop term NUMBER addop term NUMBER + term NUMBER + factor NUMBER + NAME Vi utläser som härleder i ett steg. Ett steg i en härledning innebär att man ersätter en syntaxsymbol med motsvarande högerled från någon produktion. Om vi vill sammanfatta en sådan härledning i noll eller flera steg skriver vi expr NUMBER + NAME Definition. Låt G vara en grammatik med syntaxsymboler i N, slutsymboler i Σ, produktioner som definierar och startsymbol S. Mängden av alla strängar i Σ som kan härledas från S kallas det språk som genereras av grammatiken och betecknas L(G). L(G) = {w Σ S w 7.1 Härledningsträd Följande grammatik beskriver enkla aritmetiska uttryck med addition och multiplikation. expr ::= expr "+" expr expr ::= expr "*" expr expr ::= INT Härledning av INT + INT * INT tillsammans med ett träd som visar hur produktionerna har använts. Man kan notera likheten med härledningar i satslogiken. expr => expr + expr => expr expr + expr * expr => / \ INT + expr * expr => expr + expr INT + INT * expr => / \ INT + INT * INT INT expr * expr INT INT Med samma grammatik går det att härleda samma sträng på ett annat vis. Härledningsträdet blir fundamentalt annorlunda. expr => expr * expr => expr expr + expr * expr => / \ INT + expr * expr => expr * expr INT + INT * expr => / \ INT + INT * INT expr + expr INT INT INT 37
6 Om vi bygger en abstrakt representation som svarar mot det senare härledningsträdet så blir den inte den avsedda. En grammatik är tvetydig om det finns mer än ett härledningsträd för någon sträng i språket. Om en grammatik är tvetydig måste man försöka hitta en grammatik som inte är det och som genererar samma språk. I det aktuella fallet vill man ha en grammatik som respekterar gängse precedens för operatorerna. Hur man konstruerar grammatiker som gör det lätt att bygga rätt abstrakt representation studeras i kursen i Kompilatorteknik. 7.2 Syntaxanlys Det är enkelt att skriva en metod som avgör om en sträng innehåller ett variabelnamn eller en följd av siffror och returnerar motsvarande Variable- eller Int-objekt. I kompilatortekniken kallas detta för en lexikalanalysator. I java.io finns en klass, StreamTokenizer, som gör jobbet. I följande kodavsnitt skapas ett sådant objekt som kommer att läsa från en sträng via en StringReader. public class ExprParser extends StreamTokenizer { private int token; public ExprParser(String string) throws IOException { super(new StringReader(string)); ordinarychar( - ); ordinarychar( / ); StreamTokenizer initieras så att minus- och divisionstecken behandlas som vanliga tecken. De är annars initierade för att passa analys av programspråk där man har negativa tal och kommentarer som inleds med /. nexttoken returnerar ett heltal som anger vad för slags tecken den hittat. I klassen finns metoder med samma namn som syntaxsymbolerna i grammatiken för uttryck. Metoden expr skall analysera ett helt uttryck enligt grammatiken expr ::= term (addop term)* Metoden term skall göra sammalunda med term ::= factor (mulop factor)* och factor skall klara av factor ::= number name ( expr ) Vi börjar med factor. Om nästa tecken (token) är en vänsterparentes så bygger vi ett helt uttryck genom att anropa expr rekursivt. Om token anger att den hittat ett tal StreamTT NUMBER så finns detta att hämta i attributet nval. private Expr factor() throws IOException { Expr e; switch (token) { case ( : e = expr(); return e; 38
7 case TT_NUMBER : double x = nval; return new Int((int) x); case TT_WORD : String s = sval; return new Variable(s); Om token i stället markerar att den hitta ett StreamTT WORD finns strängen att hämta i sval. Metoden term skall analysera en eller flera faktorer med hjälp av factor. private Expr term() throws IOException { Expr result, factor; result = factor(); while (token == * token == / ) { int op = token; factor = factor(); switch (op) { case * : result = new Mul(result, factor); break; case / : result = new Div(result, factor); break; return result; Slutligen skall expr ta hand om termerna. Detta är helt analogt med metoden factor. Detta lämnas som övning. Slutligen definieras build som en synonym till expr. public Expr build() throws IOException { return expr(); 39
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
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
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
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
10. Mängder och språk
Objektorienterad modellering och diskreta strukturer 10. Mängder och språk Sven Gestegård Robertz Institutionen för datavetenskap, LTH 2013 Rekaputilation Vi har talat om satslogik, predikatlogik och härledning
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
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
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
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
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.
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 =
Sats. Om t är en rätvinklig triangel så är summan av kvadraterna på kateterna i t lika med kvadraten på hypotenusan.
Lunds tekniska högskola Datavetenskap Lennart Andersson Föreläsningsanteckningar EDAF10 3 Predikatlogik 3.1 Motivering I satslogiken är de minsta beståndsdelarna satslogiska variabler som kan anta värdena
Nej! Nej Nej Nej Nej Nej Nej Nej!
LongWord Objektorienterad modellering och diskreta strukturer / design Inför nästa projekt Lennart Andersson Reviderad 2010 09 16 2010 I vilken klass skall man beräkna summan av de värden som finns i två
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)
Projekt 2 XL Klassen Gui
Objektorienterad modellering och design (EDAF5) Föreläsning Återstår av kursen Agenda Projekt XL UML Tillståndsdiagram Designmönster (State pattern) Grafer Nätverk Ford Fulkersons algoritm Labb 5 redovisas
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
Föreläsning 2 5/6/08. Reguljära uttryck 1. Reguljära uttryck. Konkatenering och Kleene star. Några operationer på språk
Reguljära uttryck Ändliga automater och reguljära uttryck Språk som är och inte är reguljära Konkatenering och Kleene star Två strängar u och v (på alfabetet )kan konkateneras till strängen uv Givet två
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
Projekt 2 XL Schema designmöten
Objektorienterad modellering och design (EDAF5) Föreläsning Agenda Introduktion till projekt XL UML Tillståndsdiagram Grafer Nätverk Ford Fulkersons algorim Återstår av kursen Föreläsningar: F9 må april
Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.
Tentamen Programmeringsteknik II för STS 2007-03-09 Skrivtid: 1500-2000 Inga hjälpmedel. Tänk på följande OBS: För betygen 4, 5 och VG kommer något högre gränser än normalt användas. Skriv läsligt! Använd
Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH
Objektorienterad modellering och diskreta strukturer 13. Problem Sven Gestegård Robertz Datavetenskap, LTH 2014 Rekaputilation Vi har talat om satslogik och härledning predikatlogik och substitution mängder
Tentamen i Objektorienterad modellering och diskreta strukturer
Lunds Tekniska Högskola Datavetenskap Tentamen EDAF10 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn att tas till lösningens kvalitet.
Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck
Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation
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
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
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
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
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
HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET)
Objektorienterad modellering och diskreta strukturer (EDAF10) HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET) Dagens agenda Introduktion till projekt 2 ( XL ) EDA061 Repetition MVC-mönstret (Observer-mönstret)
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
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
Tentamen i Programmering
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen i Programmering EDAA65/EDA501/EDAA20 M MD W BK L 2018 05 30, 8.00 13.00 Preliminärt ger uppgifterna 7 + 14 + 6 + 9 + 4 = 40 poäng.
DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin
DD36 Programmeringsparadigm Formella Språk & Syntaxanalys Föreläsning Per Austrin 26--3 Kursavsnittet syntax/formella språk Teori om formella språk verktygslåda för strängmatchning: Ändliga automater och
F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander
F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng
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
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
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
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
Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.
Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra
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
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
732G 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 (
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
Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer
Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded
Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.
Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge
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örra föreläsningen. Alternativ kurslitteratur. Dagens agenda Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)
Förra föreläsningen Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 6 Fråga från i torsdags: Decorator vs sub class Designmönster Model-View-Control Observer
HT1 2013, FÖRELÄSNING 6
Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 6 Förra föreläsningen Fråga från i torsdags: Decorator vs sub class Designmönster Model-View-Control Observer
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
Ö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
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?
Beräkningsvetenskap föreläsning 2
Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa
I kursen i endimensionell analys är mängden av reella tal (eng. real number), R, fundamental.
Lunds tekniska högskola Datavetenskap Lennart ndersson Föreläsningsanteckningar EDF10 4 Mängder 4.1 Motivering Mängden är den mest grundläggande diskreta strukturen. Nästan alla matematiska begrepp går
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
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
Tentamen , Introduktion till Java, dtaa98, dtea53
Mittuniversitetet 2007-09-01 Institutionen för informationsteknologi och medier Sid:1(3) dtaa98, dtea53 Martin Kjellqvist; Linda Karlsson, Ulf Reiman Lösningsansatser Tentamen 2007-09-01, Introduktion
Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.
Föreläsning 9: Turingmaskiner och oavgörbarhet Turingmaskinen Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. Data är ett oändligt långt band där nollor och ettor står
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar
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,
(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
SMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
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
F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander
F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean
Tentamen, Algoritmer och datastrukturer
UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och
Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs
Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten
Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.
Turingmaskiner och oavgörbarhet Turingmaskinen Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen. Data är ett oändligt långt band där nollor och ettor står skrivna: Oändligt
Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen
Föreläsning 2 Programmeringsteknik och Matlab DD1312 Introduktion till python Variabler,datatyper, omvandling av typer sfunktioner Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val
732G11 Linköpings universitet 2011-01-26 1 2 3 4 Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron ==
Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen
Föreläsning 2 Programmeringsteknik och Matlab DD1312 Introduktion till python Variabler, datatyper, omvandling av typer sfunktioner Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande
Lösningsförslag till exempeltenta 2
Lösningsförslag till exempeltenta 2 1 1. Beskriv hur man kan söka igenom en tvådimensionell array. Beskriv pseudokoden och förklara så klart som möjligt hur den fungerar. Lösning: Se laboration 3. - Beskriv
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
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
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
Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)
Villkor och tester Ett program består i princip av: Deklarationer som inför variabler, dvs namngivna minnesceller som används för att lagra data. int a; double radie=1.0, yta; double d = 4.5; String s
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
List.java. List.java. Printed by Tom Smedsaas
Mar 03, 08 17:48 Page 1/3 class List * Representerar en länkad lista av godtyckliga objekt public class List { ListNode * Noder i listor protected static class ListNode { protected Object data; protected
Objektorienterad programmering Föreläsning 4
Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering
TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010
Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel:
Tentamen i Objektorienterad modellering och diskreta strukturer
Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2014 10 31, 14.00 19.00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn
Tentamen i Objektorienterad modellering och diskreta strukturer
Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2013 10 24, 8.00 13.00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn
Algebra, exponentialekvationer och logaritmer
Höstlov Uppgift nr 1 Ge en lösning till ekvationen 0 434,2-13x 3 Ange både exakt svar och avrundat till två decimalers noggrannhet. Uppgift nr 2 Huvudräkna lg20 + lg50 Uppgift nr 3 Ge en lösning till ekvationen
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
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)
Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades
Block 1 - Mängder och tal
Block 1 - Mängder och tal Mängder Mängder och element Venndiagram Talmängder Heltalen Z Rationella talen Q Reella talen R Räkning med tal. Ordning av talen i R Intervall Absolutbelopp Olikheter 1 Prepkursen
1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta denna följd av tal, där varje tal är dubbelt så stort som närmast föregående
MATEMATISKA INSTITUTIONEN STOCKHOLMS UNIVERSITET Christian Gottlieb Gymnasieskolans matematik med akademiska ögon Induktion Dag 1 1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler
Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad
1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen
Laboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
Information. Computer
Information Objektorienterad modellering och diskreta strukturer Lennart Andersson Reviderad 2009-10-14 2009 Tentamen torsdag 22 oktober 8-12/13. Hjälpmedel på tentamen. Martin: PPP Andersson: UML Holm:
Programmering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
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
Repetitionsuppgifter inför Matematik 1. Matematiska institutionen Linköpings universitet 2013
Repetitionsuppgifter inför Matematik Matematiska institutionen Linköpings universitet 0 Innehåll De fyra räknesätten Potenser och rötter 7 Algebra 0 4 Facit 4 Repetitionsuppgifter inför Matematik Repetitionsuppgifter
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-01-10 Skrivtid: 8.00 13.00 Hjälpmedel: Java-bok Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till