2D1372 Artificiella språk och syntaxanalys

Storlek: px
Starta visningen från sidan:

Download "2D1372 Artificiella språk och syntaxanalys"

Transkript

1 VK Viggo Kann A NADA Laborationer i 2D172 Artificiella språk och syntaxanalys våren 1997 Namn... Personnr... Labb 1 Godkänt den... Kvitteras... Timmar... Labb 2 Godkänt den... Kvitteras... Timmar... Labb Godkänt den... Kvitteras... Timmar... Labb 4 Godkänt den... Kvitteras... Timmar... Labb 5 Godkänt den... Kvitteras... Timmar... 1

2 Laboration 1 i Artificiella språk och syntaxanalys, våren 1997 Simulering av NFA I denna laboration ska du skriva ett program som simulerar en ickedeterministisk ändlig automat. Du kommer att behöva detta program i laboration 4 senare i kursen. En ickedeterministisk ändlig automat (förkortat NFA) beskrivs av en femtupel som består av: alfabetet Σ, mängden tillstånd Q, starttillståndet q 0 Q, mängden accepterande tillstånd F Q och övergångsrelationen N : Q Σ {ε} Q. Vad allt detta står för beskrivs i avsnitt 2. och 2.4 i Introduction to compiler construction. Vid simuleringen ställer vi för enkelhets skull några extra krav på automaten. Tillstånden är numrerade med naturliga tal där tillstånd nummer noll är speciellt och är både starttillståndet och det enda accepterande tillståndet. Högst MAXSTATES=100 tillstånd får finnas. Från varje tillstånd får det antingen gå en teckenövergång, en epsilonövergång eller två stycken epsilonövergångar, det vill säga en ickedeterministisk förgrening. Detta är ingen svår begränsning alla ickedeterministiska ändliga automater kan enkelt skrivas om på ett sånt sätt. Från tillstånd noll går en epsilonövergång till det första egentliga tillståndet och när (och om) automaten återvänder till tillstånd noll så accepterar den, även om det finns inmatning kvar. Det får inte finnas någon loop med bara epsilonövergångar i automaten. ÖvergångsrelationenN ska realiseras med dom tre vektorerna nextch[], next1[] och next2[]. q 8, A,q 17 N ska lagras som nextch[8] = A, next1[8] = 17; och q 5,ε,q 2 N lagras som nextch[5] =, next1[5] = 2; Om det finns två epsilonövergångar från tillstånd q 5 används next2[5] för att lagra den andra (i annat fall ska next2[5] vara 1). Här följer ett exempel på en automat och hur automaten lagras i vektorerna. A 5 6 C 0 4 B D A nextch A B A C D next next

3 Idén är att man samtidigt ska komma ihåg alla tillstånd som automaten i ett visst läge av inmatningen kan befinna sig i. För att hålla reda på dessa behöver man implementera en lek (deque). Denna abstrakta datastruktur fungerar som en stack som man kan pusha och poppa element från i båda ändarna. I början av leken ska numren på dom tillstånd automaten befinner sig i ligga; därefter kommer ett staket (t ex markerat med talet 1), följt av dom tillståndautomaten kan hamna i efter att ha läst nästa tecken. För varje tillstånd före staketet kollar man om det finns några övergångar därifrån. Om det finns epsilonövergångar lägger man till dom nya tillstånden före staketet, det vill säga till mängden tillstånd som man kan befinna sig i. Om det finns en teckenövergång och tecknet stämmer överens med det inmatade tecknet lägger man till nästa tillstånd efter staketet. När alla tillstånd före staketet har betats av läser man in nästa inmatningstecken och flyttar staketet sist i leken. Så håller man på tills man når ett accepterande tillstånd, det inte finns några möjliga tillstånd kvar eller inmatningen är slut. Om det finns cykler av epsilonövergångar i automaten kommer man in i en oändlig slinga. Ditt program behöver inte klara av att hantera detta problem. Uppgifter 1. Skriv i valfritt programspråk en modul Deque som innehåller rutiner för hantering av leken. På nästa sida finns en C-inkluderingsfil som specificerar gränssnittet. Leken ska representeras som en vektor (se nedanstående beskrivning). Modulen Deque ska separatkompileras. 2. Skriv i en annan modul en procedur Automat() som simulerar en automat lagrad såsom beskrivits ovan. På nästa sida finns en algoritmbeskrivning. Se till att du förstår algoritmen!. Skriv ett huvudprogram som frågar efter en fil som innehåller en automat, läser in den automaten i dom tre vektorerna samt anropar simuleringsproceduren. Automaten i exemplet ovan finns ifilen/info/syntax97/labbar/1/labb1.exempel. Titta på den för att se hur dom tre vektorerna lagras på fil. Testa exempelautomaten med några inmatningar. Ditt program ska tala om ifall inledningen av raden accepteras och i så fall om den kortaste matchningen är hela inmatningsraden eller bara början av den. Vilket reguljärt uttryck motsvarar det språk exempelautomaten accepterar? Vektorrepresentation av en lek En lek med plats för maxdeq element kan representeras som en vektor v[0..maxdeq] och två index fp och bp. fp är indexet för det första elementet i leken och bp är indexet för det sista elementet i leken. Om det bara finns ett element i leken är alltså fp bp. Om det finns två element i leken är fp 1 bp, och allmänt, om det finns k element i leken är fp k 1 bp. Ombp faller utanför vektorn, det vill säga om bp > maxdeq så låter vi leken gå runt och fortsätta från index 0, det vill säga bp fp k 1 mod maxdeq 1. Följande figurer visar hur det kan se ut i olika fall.

4 En lek med ett element En lek med flera element fp bp fp bp En tom lek En full lek fp bp fp bp Algoritmbeskrivning för simulatorn D DEQUE-NEW(2 MAXSTATES) state next1[0] stop FALSE READ(ch) if ch \n then DEQUE-PUSH-FRONT(D, FENCE) repeat if statefence then READ(ch) if ch \n then DEQUE-PUSH-BACK(D, FENCE) else if nextch[state] then DEQUE-PUSH-FRONT(D, next1[state]) if next2[state] 1 then DEQUE-PUSH-FRONT(D, next2[state]) else if nextch[state]ch then DEQUE-PUSH-BACK(D, next1[state]) if not DEQUE-POP-FRONT(D, state) then stop TRUE until state0 or stop return state0 4

5 Gränssnitt för modulen Deque /* Gr nssnitt f r datastrukturen deque. */ /* Filen finns i /info/syntax96/labbar/1/deque.h */ #ifndef boolean #define boolean int #endif #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif typedef struct deque *dequetype; typedef int dequeelementtype; /* DequeNew skapar en ny lek med plats f r maxdeque element. */ extern dequetype DequeNew(int maxdeque); /* DequeFull talar om ifall leken r full. */ extern boolean DequeFull(dequetype d); /* DequeEmpty talar om ifall leken r tom. */ extern boolean DequeEmpty(dequetype d); /* DequePushFront stoppar in elementet x f rst i leken och returnerar TRUE */ /* om det g r bra, dvs leken inte r full. */ extern boolean DequePushFront(dequetype d, dequeelementtype x); /* DequePushBack stoppar in elementet x sist i leken och returnerar TRUE */ /* om det g r bra, dvs leken inte r full. */ extern boolean DequePushBack(dequetype d, dequeelementtype x); /* DequePopFront poppar det f rsta elementet i leken och l gger det p den */ /* plats dit p pekar. Om leken var tom returneras FALSE, annars TRUE. */ extern boolean DequePopFront(dequetype d, dequeelementtype *p); /* DequePopBack poppar det sista elementet i leken och l gger det p den */ /* plats dit p pekar. Om leken var tom returneras FALSE, annars TRUE. */ extern boolean DequePopBack(dequetype d, dequeelementtype *p); 5

6 Laboration 2 i Artificiella språk och syntaxanalys, våren 1997 Lexikal analys med Flex Lex/Flex är ett utmärkt verktyg om man vill göra lexikala ändringar i en text. I denna laboration ska du utnyttja Flex för att extrahera information ur en enkel databas över redovisningsbokningar och skapa en bokningslista. Databasen för bokningssystemet är på textformat och har följande utseende: NYBOK AVBOK 1.00 RTID 0 >970115;8.00;10.00;Brun;viggo :1;x94-pan;Andersson, Peter :2;y9_mad;Arvehed, Melitta :;x94-bjo;johansson, Bojan >970124;1.00;15.00;Brun;viggo >97011;1.00;15.00;Brun;viggo :1;x94-gmy;Mysk, Gottwolf :;x94-lbo;bonn, Lissa :4;y94_ntn;Tessin, Nisse Först i databasen kommer deklarationer av några variabler. Den enda som är intressant för bokningslistan är variabeln RTID som anger hur många minuter en redovisning tar. Efter deklarationerna följer bokningshuvuden och bokningar. Varje bokningshuvud är en rad som inleds med tecknet > och följs av datum, starttid och sluttid för ett redovisningspass. Sist på raden kommer en sträng som anger i vilken sal redovisningarna ska äga rum och vem som ska ta hand om redovisningarna. Fälten skiljs av semikolon. Efter bokningshuvudet kommer dom bokningar som hittills är gjorda till det redovisningstillfället, en bokning per rad. Varje bokningsrad inleds med tecknet : och följs av ordningsnumret (bokning 1 börjar på redovisningstillfälletsstarttid, bokning2 börjar RTID minuter senare och så vidare), användarnamn samt vanligt namn på den som bokat in sig på tiden. Utmatningen från programmet ska vara en bokningslista som anger namn, datum och tid för varje bokning. Ovanstående bokningsfil ska producera följande lista: Andersson, Peter Arvehed, Melitta Johansson, Bojan Mysk, Gottwolf Bonn, Lissa Tessin, Nisse Din uppgift är att skriva en sådan översättare i Flex. Programmet behöver inte hantera felaktiga indata. Använd Flex möjlighet att märka dom reguljära uttrycken med startvillkor (se avsnittet Start conditions i Flexmanualen i Info i Emacs och tal 2.6 i exempelsamlingen). Inför till exempel ett startvillkor för bokningshuvuden och ett för bokningar. Indatafilen i exemplet ovan heter /info/syntax97/labbar/2/bokning.db. 6

7 Laboration i Artificiella språk och syntaxanalys, våren 1997 Rekursiv medåkning Rekursiv medåkning (eng. recursive descent) är en metod att direkt från en grammatik skriva en enkel syntaxanalysator i ett vanligt programspråk, se avsnitt. i Introduction to compiler construction. I denna laboration ska du modifiera och bygga ut en rekursiv medåkningsanalysator för en enkel räknedosa. Du ska utgå från filen /info/syntax97/labbar//casio.c som innehåller en räknedosa med dom fem räknesätten addition, subtraktion, multiplikation, division och exponentiering enligt nedanstående EBNF-grammatik. Denna analysator gås igenom på föreläsning 7. <start> ::= ENDSYM \n <start> <expr> \n <start> <expr> ::= <term> { ( + - ) <term> } <term> ::= <factor> { ( * / ) <factor> } <factor>::= <prim> [ ^ <factor> ] <prim> ::= NUMBERSYM - <prim> ( <expr> ) Uppgifter 1. Se till att du förstår den givna analysatorn i detalj. 2. Bygg ut analysatorn med variabler och en tilldelningssats enligt följande tillägg till grammatiken: <start> ::= LET <variable> = <expr> \n <start> <prim> ::= <variable> <variable> ::= VARIABLESYM Du måste alltså lägga till tre symboler LETSYM, ASSIGNSYM och VARIABLESYM till den lexikala analysatorn. Du får själv bestämma hur en variabel ska få se ut, men det räcker om du tillåter enbokstavsnamn. Du måste också hålla reda på variablernas värden i en symboltabell med hjälp av någon lämpligt vald datastruktur. 7

8 Laboration 4 i Artificiella språk och syntaxanalys, våren 1997 Reguljära uttryck med Flex och Bison Denna laboration är en tillämpning av teorin för reguljära uttryck och kontextfria grammatiker. Du ska med hjälp av Flex och Bison skriva ett program som syntaxanalyserar ett reguljärt uttryck och skriver ut en beskrivning av en ickedeterministisk ändlig automat som känner igen språket som det reguljära uttrycket beskriver. När programmet är klart ska man kunna köra det och skriva in ett reguljärt uttryck, till exempel x(uv w)* som motsvarar xuv w med bokens notation. Programmet ska då på fil beskriva en ickedeterministisk ändlig automat som accepterar detta språk. Därefter ska man kunna använda programmet som du skrev i laboration 1 för att simulera automaten och testa om olika inmatningssträngar accepteras. Reguljära uttryck beskrivs i avsnitt 2.6 i Introduction to compiler construction. Grammatiken för reguljära uttryck kan i BNF skrivas på följande sätt. <expression>::= <term> <expression> <term> <term>::= <factor> <term><factor> <factor>::= ( <expression> ) <factor> * v Lexikala regler: v betyder en bokstav (A Ö eller a ö); blanka får förekomma var som helst i uttrycket. Grammatiken ovan har medvetet skrivits vänsterrekursiv för Yaccs och Bisons skull, se sida 14 i Introduction to compiler construction och avsnittet Recursion i kapitlet Bison Grammar Files i Bisonmanualen i Info i Emacs. Uppgifter 1. Skriv om dom kontextfria grammatiska reglerna ovan i Bison. Inför en extra regel <regexp> ::= <expression> och låt regexp vara startsymbol. Som lexikal analysator yylex() ska Flex användas. Låt LETTER vara slutsymbolen som motsvarar en bokstav. Låt huvudprogrammet bara kolla värdet av yyparse() och skriva korrekt (om det var ett riktigt reguljärt uttryck) eller felaktigt beroende på om värdet var 0 eller 1. Programmet är nu en färdig syntaxanalysator (parser) som känner igen språket av (korrekta) reguljära uttryck. Kör Flex och Bison, kompilera och prova att mata in några riktiga och felaktiga reguljära uttryck. För att tala om att ett uttryck är färdiginmatat måste man kanske (beroende på hur yylex() ser ut) trycka på CTRL-D, dvs filslut, först på en rad. 2. Nu ska syntaxanalysatorn byggas ut till en översättare, som givet ett reguljärt uttryck skapar och matar ut en ickedeterministisk automat. Uppgiften är alltså att skapa vektorerna nextch[], next1[] och next2[] (från laboration 1). Låt state vara en heltalsvariabel som håller reda på indexet för den första oanvända platsen i tillståndsvektorerna. Sätt state = 1 från början. Starttillståndet, som har nummer 0, kommer att tillverkas sist av allt. Läs om hur reguljära uttryck kan översättas till ändliga igenkännare i avsnitt 2.7 i Introduction to compiler construction. Varje regel i din grammatik känner igen ett reguljärt uttryck som är ett deluttryck i det hela reguljära uttrycket. Låt regeln bilda den delautomat som motsvarar det reguljära uttrycket. Denna delautomat har ett starttillstånd och ett sluttillstånd. För att delautomaten ska kunna kopplas ihop med andra automater måste dess starttillstånd och sluttillstånd 8

9 bli kända för dom andra reglerna. Detta går att göra genom att regeln som semantiskt värde returnerar en post som innehåller dom två heltalen enterstate och exitstate som anger numren på delautomatens starttillstånd och sluttillstånd. Alltså måste varje regel sätta värden på $$.enterstate och $$.exitstate. När nu reglerna expression, term och factor ska returnera semantiska värden som är en post istället för ett tecken (som returneras från LETTER) så måste den semantiska typen vara en union av en teckentyp och en posttyp. Deklarationen kan göras i Yaccfilen på följande sätt. %union { char letter; struct { int enterstate; int exitstate; } states; } Skapa ett nytt tillstånd genom att anropa proceduren void setstate(int state, char c, int n1, int n2) { nextch[state] = c; next1[state] = n1; next2[state] = n2; } När man skapar en delautomats sluttillstånd vet man inte ännu vart uthoppet ska gå, utan övergången måste sättas av den regel som senare kombinerar den aktuella delautomaten med nästa delautomat. Enklast blir det för den regeln om du alltid ser till att uthoppet från delautomaten går från next1[]. Initiera uthoppsövergången till 1 så är det lätt att se på automaten om något uthopp förblir otilldelat. Figuren nedan talar om för varje regel hur motsvarande ändliga automat kan byggas. Alla övergångar är epsilonövergångar utom den som läser en bokstav i den nedersta automaten. expression expression term term term factor term factor factor * factor v v 9

10 För att se till att tillstånd nr 0 är det första och sista tillståndet enligt specifikationen i laboration 1 kan man använda sig av följande Yaccregel. regexp : ; expression { setstate(0,, $1.enterState, -1); next1[$1.exitstate] = 0; } När vektorerna är färdiguppbyggda återstår bara att skriva ut dom på fil. Detta kan till exempel göras i main() efter anropet av yyparse(). När programmet är klart ska det kunna producera filer som kan läsas av simulatorn från laboration 1. Prova några reguljära uttryck och kolla att allt fungerar. Det är inte nödvändigt med någon felhantering. Syntaxanalysatorn behöver inte klara av reguljära uttryck som innehåller en onödig stjärna, tex A. Den givna beskrivningen ger nämligen en slinga av enbart epsilonövergångar för sådana reguljära uttryck, och det klarar inte simulatorn från laboration 1 av. Den som vill får givetvis råda bot på problemet genom att inte tillverka några nya tillstånd för onödiga stjärnoperatorer. 10

11 Laboration 5 i Artificiella språk och syntaxanalys, våren 1997 En valfri översättare I denna laboration ska du få tillämpa det du har lärt dig i kursen på en egen praktiskt användbar översättare. Du ska antingen skriva en översättare från en välkänd notation till en annan eller en granskare som kollar syntaxen och ger vettiga felmeddelanden om inmatningen är felaktig. Du får själv välja uppgift bland förslagen nedan. Ditt program ska använda något syntaxanalyseringsverktyg, men det är din sak att välja mellan till exempel Yacc, Bison, Ox, Jack, PCCTS och liknande verktyg. Kom ihåg att du inte kan förvänta dig att du alltid kan få hjälp av handledarna med andra verktyg än dom som använts i kursen. Uppgift 1. Välj en av nedanstående uppgifter. Skriv ner en kravspecifikation för programmet. Eftersom uppgiftsformuleringarna är korta och vaga så finns det en hel del detaljer som bör fyllas i. Om du har valt någon av dom fria uppgifterna (dom två sista i listan) så måste du visa upp din specifikation för någon av lärarna för att få klartecken att göra uppgiften. Annars så räcker det att du tar med specifikationen när du redovisar programmet. Det är viktigt att du begränsar uppgiften så att den inte blir för stor. Uppgiften bör högst ta 20 timmar att göra. Om det är ett stort språk du ska analysera kan du ta bort delar av grammatiken som är mindre viktiga och inte tillför uppgiften någon extra svårighet utan bara merarbete. 2. Ta reda på grammatiker för dom språk ditt program ska behandla. Sök gärna information i Internet. På kursens sida i www finns en del pekare till användbar information. Du kanske till och med kan hitta en färdig grammatik i det format som det syntaxanalyseringsverktyg du valt vill ha. Däremot får du förstås inte kopiera färdiga program det är du som ska lösa uppgiften och inte någon annan.. Skriv med hjälp av det syntaxanalyseringsverktyg du valt ett program som löser uppgiften (det vill säga uppfyller kravspecifikationen). Programmet måste hålla god kvalitet (vara korrekt, effektivt, lättläst, flexibelt och robust). 4. Skriv en enkel användarhandledning för programmet. Förslag på uppgifter 1. Konvertering av HTML till TEX/LATEX. 2. Konvertering av RTF (Rich text format) till HTML.. Konvertering av RTF till TEX/LATEX. 4. Konvertering av Framemaker till HTML. 5. Konvertering av KTHs lässchema i textform till veckoscheman i HTML, LATEX eller liknande. 6. Konvertering av tupelkalkyl till SQL. Kvantifikatorn för alla behöver inte implementeras. 11

12 7. Konvertering av relationsalgebra till SQL. 8. Granskning av SQL. 9. Granskning av HTML. 10. Programförskönare för C-kod, Javakod eller liknande. 11. Programstatistikgenerator för C, Pascal, ADA, Java eller något liknande språk. Statistiken kan bestå av antal parametrar per funktion, antal lokala och globala variabler, antal direkta och indirekta funktionsanrop etcetera. 12. Automatisk konstruktion av prototypdeklarationer i C. Programmet bör klara både funktioner med ANSI-C-syntax och gammal K&R-C-syntax. 1. Förbättrad Yacc-syntax. Uppfinn en snyggare och behändigare syntax till Yaccfiler och skriv en syntaxanalysatorsom översätter filer med den nya syntaxen till Yaccfiler som kan stoppas in i Yacc eller Bison. 14. Konvertera mellan två andra notationer. Välj själv vilka, men du måste få specifikationen godkänd av någon av lärarna innan du gör uppgiften. 15. Definiera ett eget programspråk och gör en granskare för det. Du måste få specifikationen godkänd av någon av lärarna innan du gör uppgiften. 12

2D1373 Artificiella språk och syntaxanalys

2D1373 Artificiella språk och syntaxanalys 7 december 1998 Numerisk analys och datalogi Lars Engebretsen Laborationer i 2D1373 Artificiella språk och syntaxanalys våren 1999 Namn:.........................................................................................

Läs mer

Övningsexempel i Artificiella språk och syntaxanalys 2D1373

Övningsexempel i Artificiella språk och syntaxanalys 2D1373 Numerisk analys och datalogi Övningsexempel i Artificiella språk och syntaxanalys 2D1373 Lars Engebretsen Mikael Goldman Viggo Kann 12 februari 2002 2 Innehåll 0 Inledning 7 0.1 Ändliga automater.........................

Läs mer

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 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

Läs mer

Föreläsning 7: Syntaxanalys

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.

Läs mer

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

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

Läs mer

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

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

Läs mer

DD1361 Programmeringsparadigm. Formella Språk & Syntaxanalys. Per Austrin

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

Läs mer

Inlämningsuppgift MiniPlotter

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

Läs mer

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

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,

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Idag: Reguljära språk Beskrivs av Reguljära uttryck DFA Grammatik

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 =

Läs mer

Reguljära uttryck Grammatiker Rekursiv nedåkning Allmänna kontextfria grammatiker. Syntaxanalys. Douglas Wikström KTH Stockholm

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

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Programmera 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?? 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 mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

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

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering.

i=1 c i = B och c i = a i eller c i = b i för 1 i n. Beskriv och analysera en algoritm som löser detta problem med hjälp av dynamisk programmering. Algoritmer och Komplexitet ht 8 Övning 3+4 Giriga algoritmer och Dynamisk programmering Längsta gemensamma delsträng Strängarna ALGORITM och PLÅGORIS har den gemensamma delsträngen GORI Denlängsta gemensamma

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

Kontextfria grammatiker

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)

Läs mer

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011, Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman

Läs mer

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel Data- och Programstrukturer Provmoment: Ladokkod: Tentamen ges för: Omtentamen NDP011 Systemarkitektprogrammet 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum:

Läs mer

Automatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA

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

Läs mer

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

Alfabeten, strängar och språk. String

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

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta

Läs mer

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1 Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

Läs mer

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. 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

Läs mer

Uppgift 1 (grundläggande konstruktioner)

Uppgift 1 (grundläggande konstruktioner) Uppgift 1 (grundläggande konstruktioner) a) Skriv ett program som låter användaren mata in 7 heltal och som gör utskrifter enligt nedanstående körexempel. Mata in 7 heltal: 1 0 0 3 1 1 1 Tal nr 2 var en

Läs mer

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk 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...

Läs mer

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl 14.00 17.00 Hjälpmedel: En Javabok. För betyget godkänt krävs att a- eller b-delen av varje fråga (uppgift 1 4) samt

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

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

Läs mer

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen *:58/ID100V Programmering i C Exempel 3 DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst

Läs mer

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

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 II 2018-10-19 Skrivtid: 8:00 13:00 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

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

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

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal

Läs mer

Uppgift 1a (Aktiekurser utan poster)

Uppgift 1a (Aktiekurser utan poster) Uppgift 1a (Aktiekurser utan poster) Vi har lite olika upplägg i de kurser vi håller och i vissa kurser finns det med något som vi kallar "poster" (eng. "record"). I andra har vi inte med detta. Vi har

Läs mer

Tentamen, EDAA10 Programmering i Java

Tentamen, EDAA10 Programmering i Java LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDAA10 Programmering i Java 2019 08 21, 08.00 13.00 Anvisningar: Preliminärt ger uppgifterna 25 + 15 + 5 = 45 poäng. För godkänt betyg

Läs mer

DD1361 Programmeringsparadigm. Carina Edlund

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

Läs mer

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. 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

Läs mer

Grammatik. BNF-grammatik

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

Läs mer

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python. är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar

Läs mer

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 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

Läs mer

Inlämningsuppgift 1, Digsim

Inlämningsuppgift 1, Digsim Inlämningsuppgift 1, Digsim Specifikation Skriv ett program som utför addition av heltal (positiva eller negativa) i binär form med hjälp av digitala grindar, som programmet ska simulera. Programmet ska

Läs mer

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python. är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Läs mer

Föreläsning REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

TDDC77 Objektorienterad Programmering

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

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

Läs mer

Dynamisk programmering

Dynamisk programmering DD2354, Algoritmer och komplexitet, 27 Uppgifter till övning 4 Dynamisk programmering Talföljder Givet är två följder av positiva heltal a,a 2,,a n och b,b 2,, b n där alla tal är mindre än n 2 samt ett

Läs mer

Definition. Mängden av reguljära uttryck på alfabetet Σ definieras av. om α och β är reguljära uttryck så är (α β) ett reguljärt uttryck

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

Läs mer

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1. Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning

Läs mer

Programmering för språkteknologer II, HT2011. Rum

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2004-03-10.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som ritar ut en åtthörning på skärmen. Åtthörningen skall dock se ut enligt exemplen nedan och det är så att användaren skall

Läs mer

Objektorienterad Programmering (TDDC77)

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

Läs mer

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1 Skolan för Datavetenskap och kommunikation DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 1 Kursinfo Diagnostiskt prov Python-intro: print variabler reserverade ord input kommentarer beräkningar

Läs mer

Pascal... Pascal. Pascal... Pascal...

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

Läs mer

Grundläggande datalogi - Övning 9

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

Läs mer

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1 Skolan för Datavetenskap och kommunikation DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 1 Kursinfo Python-intro: print variabler reserverade ord input kommentarer beräkningar datatyper if-satser

Läs mer

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

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

Läs mer

kl Tentaupplägg

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

Läs mer

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

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

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

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

Läs mer

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18 Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18 Dagens föreläsning Betygskriterier P-redovisning Komplettering Vad händer om man inte hinner klart? Plussa för betyg E ska

Läs mer

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

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 DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

DAB760: Språk och logik

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

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

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 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 mer

Rekursion och induktion för algoritmkonstruktion

Rekursion och induktion för algoritmkonstruktion Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av

Läs mer

DD1314 Programmeringsteknik

DD1314 Programmeringsteknik Skolan för Datavetenskap och kommunikation DD1314 Programmeringsteknik Föreläsning 1 o print o variabler o reserverade ord o input o kommentarer o beräkningar o datatyper o if-satser Kursinformation Programmering:

Läs mer

F4. programmeringsteknik och Matlab

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

Läs mer

Tentamen Grundläggande programmering

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:

Läs mer

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns

Läs mer

12. Relationer och funktioner

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

Läs mer

Övning från förra gången: readword

Övning från förra gången: readword (9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver

Läs mer

TDIU01 - Programmering i C++, grundkurs

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

Läs mer

Föreläsning 11 - Automater, textsökning, tillstånd

Föreläsning 11 - Automater, textsökning, tillstånd Föreläsning 11 - Automater, textsökning, tillstånd Automater Textsökning KMP-automat (Knuth-automat) Boyer-Moore Rabin-Karp Sökning på webben Automater En portkodsautomat med nio knappar kan se ut så här:

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

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 (

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

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

Läs mer

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram? Programmeringsteknik och Matlab Övning 2 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

Läs mer

Tentamen i. TDDC67 Funktionell programmering och Lisp

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

Läs mer

Föreläsning 2 5/6/08. Reguljära uttryck 1. Reguljära uttryck. Konkatenering och Kleene star. Några operationer på språk

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å

Läs mer

kl Tentaupplägg

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

Läs mer

Laboration: Whitebox- och blackboxtesting

Laboration: Whitebox- och blackboxtesting Tilda11 höstterminen 2011 Laboration: Whitebox- och blackboxtesting Mål med laborationen Du ska lära dig begreppen white-box testing och black-box testing Du ska öva dig på att konstruera testfall Du ska

Läs mer

Tentamen i. Programmering i språket C

Tentamen i. Programmering i språket C 1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering i språket C för D1 m fl, även distanskursen lördag 25 februari

Läs mer

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)

Läs mer

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper. Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något

Läs mer

Föreläsning 10. Besiktningsprotokollet

Föreläsning 10. Besiktningsprotokollet Föreläsning 10 Besiktningsprotokollet 1 Besiktningsprotokollet 2 Användarvänlighet Informativa utskrifter Programmet ska tala om för användaren vad programmet gör i varje steg och vilken inmatning som

Läs mer