FACIT TILL OMTENTAMEN I PROGRAMSPRÅK -- DVG C01. 140109 kl. 08:15-13: 15

Relevanta dokument
OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

FACIT TILL OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

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

FACIT TILL OMTENTAMEN I PROGRAMSPRÅK DVG C01

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

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

FACIT TILL/TO DVG C01 OMTENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES RESIT EXAMINATION :15-13: 15

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

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

FACIT TILL OMTENTAMEN I PROGRAMSPRÅK DVG C kl. 08:15-13:15

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

Recitation 4. 2-D arrays. Exceptions

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Styrteknik : Funktioner och funktionsblock

Att skriva till och läsa från terminalfönstret

Styrteknik: Binära tal, talsystem och koder D3:1

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Preschool Kindergarten

FACIT TILL OMTENTAMEN I PROGRAMSPRÅK DVG C kl. 08:15-13:15

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Isometries of the plane

Tentamen Grundläggande programmering

Tentamen i. TDDA 69 Data och programstrukturer

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

c = s[2]; /* move chars around */ p = &s[2]; *p = *(p-1); --p; *p = *(p-1); s[0] = c; printf("%s\n",s); /* print the string */ English version

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

PROGRAMMERING-Java Omtentamina

Inlämningsuppgift MiniPlotter

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Grammatik. BNF-grammatik

Tentamen Programmering fortsättningskurs DIT950

Hjälpmedel för kompilatorkonstruktion, DVB004

LULEÅ TEKNISKA UNIVERSITET

12.6 Heat equation, Wave equation

Discovering!!!!! Swedish ÅÄÖ. EPISODE 6 Norrlänningar and numbers Misi.se

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

Solutions to exam in SF1811 Optimization, June 3, 2014

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

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

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Föreläsning 3. Stack

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Övning 1 - Abstrakta datatyper

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Second handbook of research on mathematics teaching and learning (NCTM)

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Alfabeten, strängar och språk. String

Chapter 3: Using Classes and Objects

Grafisk teknik IMCDP. Sasan Gooran (HT 2006) Assumptions:

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Tentamen i Objektorienterad programmering

12. Relationer och funktioner

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

This exam consists of four problems. The maximum sum of points is 20. The marks 3, 4 and 5 require a minimum

Module 1: Functions, Limits, Continuity

kind spelling Scanning

TDDC77 Objektorienterad Programmering

Föreläsning 3. Stack

Beijer Electronics AB 2000, MA00336A,

Objektsamlingar i Java

Sätt att skriva ut binärträd

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

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.

Grafisk teknik. Sasan Gooran (HT 2006)

Webbregistrering pa kurs och termin

Övning 5 ETS052 Datorkommuniktion Routing och Networking

and u = och x + y z 2w = 3 (a) Finn alla lösningar till ekvationssystemet

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

PROGRAMMERING-JAVA TENTAMINA

Chapter 2: Random Variables

Oförstörande provning (NDT) i Del M Subpart F/Del 145-organisationer

Tentamen i Matematik 2: M0030M.

12. Relationer och funktioner

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

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

Materialplanering och styrning på grundnivå. 7,5 högskolepoäng

PROGRAMMERING-Java TENTAMINA

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Isolda Purchase - EDI

Dokumentnamn Order and safety regulations for Hässleholms Kretsloppscenter. Godkänd/ansvarig Gunilla Holmberg. Kretsloppscenter

Idag: Dataabstraktion

Tentamen PC-teknik 5 p

Tenta i Digitalteknik

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

Objektorienterad Programmering (TDDC77)

8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.

Imperative Programming

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Module 6: Integrals and applications

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Chapter 4: Writing Classes/ Att skriva egna klasser.


Authentication Context QC Statement. Stefan Santesson, 3xA Security AB

Transkript:

FACIT TILL OMTENTAMEN I PROGRAMSPRÅK -- DVG C01 140109 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 40p, Godkänd 30p (varav minimum 20p från tentan, 10p från labbarna) Tenta: Max 40p, Med beröm godkänd 34p, Icke utan beröm godkänd 27p, Godkänd 20p Labbarna: Max 20p, Med beröm godkänd 18p, Icke utan beröm godkänd 14p, Godkänd 10p SKRIV TYDLIGT LÄS UPPGIFTERNA NOGGRANT 1. Ange kortfattade svar på följande uppgifter: (a) Ge en definition av (i) aktuell parameter samt (ii) formell parameter AP: An expression, which can be a value or a variable name, used as an argument in a call to a procedure/function/method. The actuall parameter is bound to the formal parameter att time of call. The binding is determined by the parameter passing semantics. FP: A name, usually typed, used in the body of the procedure/function/method for symbolic manipulation. An actuall parameter is bound to the formal parameter att time of call. The binding is determined by the parameter passing semantics (b) Vad är ett program? program: A program is a sequence of instructions for a machine (½) better - A program is a description of values, properties, methods, problems and solutions. (A Model!) The role of a machine is to speed up the manipulation and evaluation of these descriptions DFR 140109 PS omtentamen FACIT Sidan 1 av 13

(c) Ge en definition av (i) lexeme, (ii) sträng samt (iii) mönster (pattern). Vad är skillnaden de emellan? sträng (string) A finite sequence of characters drawn from some alphabet Σ lexem (lexeme) a sub-string (of a string representing a sentence in a given grammar) of symbols corresponding to a regular expression e.g. "<", "<=", "=", "!=", ">=", ">" and which can be categorised as a token. mönster (pattern) a string used to find a lexeme (substring) in the source code (input string) either by use of regular expressions (where a pattern can be a string literal or a regular expression) or by extracting lexemes from the source code and comparing the lexeme with string literals (patterns) in a table. The usual major difference is that the token ID may have an infinity of lexemes. This aspect is usually solved by defining an ID as beginning with a letter and then any combination of letters and numbers (sometimes also symbols such as underscore). This becomes a regular expression. (d) Vad är förhållandet mellan lexemer och tokens? A lexeme is a substring of the input program text and represents an instance of a class of lexemes which correspond to a token. The function of the lexer is to convert lexemes to tokens for the parser. In most cases, the class of lexemes will contain only 1 pattern e.g. program for the token program. In the case of the token ID, there are a potentially infinite number of lexemes so that the pattern must be specified using for e.g. regular expressions [A..Za..z][A..Za..z0..9]* i.e. alphanumeric strings beginning with a letter. (e) Hur definierar man skillnaden mellan lokala och icke-lokala omgivningar? Lexical (static) semantics, the non-local environment is the next surrounding environment defined in the program text Dynamic semantics the non-local environment is defined as being the environment of the previous call in a call sequence. Totalt 5p DFR 140109 PS omtentamen FACIT Sidan 2 av 13

2. BNF-definitioner Titta noggrant på grammatiken i bilaga A. Utöka denna BNF-definition för att hantera funktioner. Ange alla antagande. 5p [function def list] ::= e [function def] [function def list] [function def] [function def] ::= [function header] [var part] [stat part] [function header] ::= function id ( [parameter list] ) : [ type] ; [parameter list] [param dec list] [param dec] ::= e [param dec list] ::= [param dec] [param dec list], [param dec] ::= { var } [id list] : [type] Now add the [function def list] into the grammar [program] ::= [prog header] [var part] [function def list] [stat part] NB it is also an idea to update [operand] [operand] ::= id number [function call] [function call] ::= id ( [actual param list] ) [actual param list] ::= e [expression list] [expression list] ::= [expr] [expression list], [expr] By analogy with a program The parameter list may be empty (design decision) This is also similar to a [var dec list] except that it is separated by a comma and not terminated by a semicolon The var part is optional here I use EBNF [param dec] ::= var [id list] : [type] [id list] : [type] Would be the alternative DONE! DFR 140109 PS omtentamen FACIT Sidan 3 av 13

3. Parser En parser delas upp i 2 komponenter (i) den lexikaliska analysatorn och (ii) den syntaktiska analysatorn. Varför gör man en sådan uppdelning. Vilka uppgifter har dessa 2 komponenter? Använd gärna konkreta exempel i ditt svar. Svar ingående. 5p Example: program testok1(input, output); var A, B, C: integer; begin A := B + C * 2 end. Lexer Analyses the input program text (above) and identifies lexemes which fall into 3 categories 1. strings beginning with a letter ID names or Keywords 2. strings beginning with a digit numbers 3. all other strings For the above program the lexemes are:- "program testok1 ( input, output ) ; var A, B, C : integer ; begin A := B + C * 2 end. The ID name/keyword distinction may be solved by using a keyword table to identify keywords if the lexeme is not found in the table then the lexeme is considered an ID The lexer returns a token stream to the parser (on demand). For the above program these tokens will be:- PROGRAM ID LP INPUT COMMA OUTPUT RP SCOLON VAR ID COMMA ID COMMA ID COLON INTEGER SCOLON BEGIN ID ASSIGN ID PLUS ID TIMES NUM END DOT In addition, the lexer will remove white space. Each lexeme is held in a buffer for use by the parser which for example in the case of Ids may load DFR 140109 PS omtentamen FACIT Sidan 4 av 13

the corresponding ID (variable name) into the symbol table together with other attributes such as type, kind, size, address (offset). Parser The parser requests tokens from the lexer which it tries to match with terminal symbols in the grammar (See Appendix A). In a Recursive Descent Predictive Parser (RDPP), the nonterminal symbols in the grammar are implemented as procedure calls which trace out a virtual parse tree. For IDs, the parser will add these to the symbol table in the var_part phase. This allows the following semantoc checks to be made 1. doubly declared identifiers 2. undeclared identifiers in the stat_part phase 3. type checking in expressions and assignment The parser may also calculate the space required for the data objects in the program and enter this information in the symbol table. You could draw the parse tree for the above program. DFR 140109 PS omtentamen FACIT Sidan 5 av 13

4. Parameterhantering Ge detaljerade och konkreta programexempel för att illustrera hur värdeanrop ( call-byvalue ), referensanrop ( call-by-reference ) samt värderetur ( call-by-value-return ). I varje fall, förklara vilka mekanismer man använder sig av när man implementerar parameteröverförning ( parameter passing ) och rita bilder av stackrammar ( stack frames ) för att visa hur detta fungerar i ett exekveringssystem. See the revision notes (or previous facits) for examples of these marks for good illustrations and explanations. Points to note Discuss both f(ap) and f(2+2) i.e. an actual parameter which is an ID and one which is an expression What happened in call-by-reference with expressions? 5p DFR 140109 PS omtentamen FACIT Sidan 6 av 13

5. Parseträd expr -> term R1 R1 -> e '+' term R1 term -> factor R2 R2 -> e '*' factor R2 factor -> '(' expr ')' DIGIT (e = empty) Titta noggrant på grammatiken ovan. Rita parseträdet för uttrycket (2+2)*2. 5p DFR 140109 PS omtentamen FACIT Sidan 7 av 13

expr factor term R2 R1 e ( expr ) * factor R2 digit e term R1 2 factor R2 + term R1 digit e factor R2 e 2 digit e 2 ( 2 + 2 ) * 2 DFR 140109 PS omtentamen FACIT Sidan 8 av 13

6. Prolog Predikat Skriv predikatet append(+lista1,+lista2,-lista3), som tar Lista1 och Lista2 som inparametrar och skapar en ny lista, Lista3, där elementen från Lista1 placeras före elementen från Lista2 Exempel:?-append([1, 2, 3], [a, b], X). X = [1, 2, 3, a, b] (1 p) Laborationen I laboration 2 skulle du skriva en parser för ett enkelt Pascalprogram. Parsningsprogrammet kunde delas upp i tre delar: inläsning från fil, lexikalanalys och syntaxanalys. Lexikalanalysdelen fick en lista med fyra typer av lexem (= nyckelord, specialtecken, variabelnamn och heltal) från inläsningsdelen och den listan omvandlades ett lexem i taget till en lista av tokens för vidare behandling i syntaxanalysdelen. a) Skriv predikatet lexer som med hjälp av predikatet match gör om ett lexem i taget till motsvarande token. (1 p) b) Beskriv utförligt, gärna med hjälp av kod, hur match gör omvandlingen till tokens. Beskrivningen skall innehålla minst tre olika typer av lexem. (3 p) Totalt 5p DFR 140109 PS omtentamen FACIT Sidan 9 av 13

7. Objektorientering 5 poäng: A. Vilka följder får det att en klass är abstrakt inom objektorientering? Varför deklarerar man vissa klasser abstrakta? B. Givet följande program skrivet i Java. Vad skrivs ut när programmet utförs och varför? Utöver att ange rätt utskrift från programmet ska du alltså även redogöra för de mekanismer som gör att utskriften blir som den blir. class A { public void f() {System.out.println ("A.f");} } (1p) (1,5p) class B extends A { public void f() {System.out.println ("B.f");} } class Program { static void p(a o) {o.f();} public static void main(string[] args) { A a = new A(); B b = new B(); A ab = new B(); p(a); p(b); p(ab); } // main } // class Program C. Antag att följande klass Integer är definierad i Java med metoderna getvalue som läser av det aktuella värdet och setvalue som definierar ett nytt: class Integer { public Integer(int value) {setvalue(value);} public int getvalue() {return value;} public void setvalue(int newvalue) {value = newvalue;} //... more functions... private int value; }; // Integer (2,5p) Vi önskar definiera addition av heltal och utvidgar därför klassdefinionen av Integer med följande metoder och tillhörande implementationer: void add1(integer i) {setvalue(getvalue() + i.getvalue());} void add2(integer i) {this.setvalue(this.getvalue() + i.getvalue());} Integer add3(integer i) {return new Integer(value + i.getvalue());} Integer add4(integer i) {return new Integer(getValue() + i.getvalue());} void add5(integer i, Integer j) {j = new Integer(getValue() + i.getvalue());} Förklara och kommentera skillnaden i synsätt, utförande och resultat mellan följande par av funktioner: i. add1 och add2 ii. add1 och add4 iii. add3 och add4 iv. add4 och add5 DFR 140109 PS omtentamen FACIT Sidan 10 av 13

För vart och ett av de fem förslagen, kommentera om namnet add på funktionen (bortse från numret) är lämplig och föreslå ev ett bättre namn, allt enligt minsta förvåningens princip *. *) Minsta förvåningens princip (The Principle of Least Astonishment, POLA eller PLA) sager bl.a.: Speciellt ska en programmerare försöka tänka på vilket beteende som kommer att förvåna någon som använder sig av programmet minst, snarare än det beteende som verkar mest naturligt för någon som känner till programmets inre arbetssätt. Totalt 5p DFR 140109 PS omtentamen FACIT Sidan 11 av 13

8. Lisp Läs noggrant Lispkoden nedan. 1. Förklara hur procedurerna p och q fungerar. Vad är utskriften efter varje setf? Svar ingående och ange alla antagande. 4p 2. Om man skriver om (if (eql y (first (first x))) till (if (eql y (second (first x))) vad är skillnaden i utskriften? (defun p (x y z) (list (list 'x x) (list 'y y) (list 'z z) ) ) 1p (defun q (x y z) (if (eql y (first (first x))) (cons (list y z) (rest x)) (cons (first x) (q (rest x) y z)) ) ) (setf x (p 'x 'y 'z)) (setf x (q x 'x 'y)) (setf x (q x 'y 'z)) (setf x (q x 'z 'x)) (exit) Answers: Totalt 5p ((X X) (Y Y) (Z Z)) ((X Y) (Y Y) (Z Z)) ((X Y) (Y Z) (Z Z)) ((X Y) (Y Z) (Z X)) ((X X) (Y Y) (Z Z)) ((X Y) (Y Y) (Z Z)) ((Y Z) (Y Y) (Z Z)) ((Z X) (Y Y) (Z Z)) DFR 140109 PS omtentamen FACIT Sidan 12 av 13

Bilaga A - Grammatik: Pascallik språk 1. [prog] ::= [prog header] [var part] [stat part] 2. [prog header] ::= program id ( input, output ) ; 3. [var part] ::= var [var dec list] 4. [stat part] ::= begin [stat list] end. 5. [var dec list] ::= [var dec] [var dec list] [var dec] 6. [var dec] ::= [id list] : [type] ; 7. [stat list] ::= [stat] [stat list] ; [stat] 8. [stat] ::= [assign stat] 9. [assign stat] ::= id := [expr] 10. [expr] ::= [term] [R1] 11. [R1] ::= e + [term] [R1] 12. [term] ::= [factor] [R2] 13. [R2] ::= e * [factor] [R2] 14. [factor] ::= ( [expr] ) [operand] 15. [type] ::= integer 16. [id list] ::= id [id list], id 17. [operand] ::= id number DFR 140109 PS omtentamen FACIT Sidan 13 av 13