FACIT TILL OMTENTAMEN I PROGRAMSPRÅK DVG C01 120112 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 (b) Ange skillnaden mellan en lexem (lexeme), en delsträng (substring) och ett mönster (pattern) (c) Ange en definition av en icke-terminal symbol (non-terminal symbol) (d) Ange en definition av en terminal symbol (terminal symbol) (e) Ange exempel av begreppen lokal och icke-lokal inom programspråk Totalt (a) (i) aktuell parameter (actual parameter) an expression (may be an id) (ii) formell parameter (formal parameter) an id used in the body of a function (b) en lexem en delsträng av inputsträngen (källkoden) som matchar ett mönster en delsträng en sträng formad genom att ta bort en prefix/suffix från en annan sträng ett möster ett reguljäruttryck som beskriver en sträng (c) icke-terminal en symbol i grammatiken G som kan omdefieneras som en sententiell form (d) terminal en symbol i grammatiken G som representerar en token i parsern (e) lokal / icke-lokal dataobjekt: lagras antingen i en lokal omgivning eller en icke-local omgivning det sistnämnda hanteras via pekare i run-timestacken (static/dynamic) DFR/ND 120112 PS omtentamen FACIT Sidan 1 av 8
2. BNF-definitioner Titta noggrant på grammatiken i bilaga A. Utöka denna BNF-definition för att hantera funktioner. Ange alla antagande. [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/ND 120112 PS omtentamen FACIT Sidan 2 av 8
3. Programmering Diskutera ingående förhållandet mellan programmering och modellering. Hur bra är dagens programmeringsspråk att representera verklighet? Svar ingående. Assumption: a program is an implementation of a model which is an abstraction from some system taken from the real world. Firstly define modelling. The identification of entities and their attributes from a real-world system, sufficient to create and manipulate a workable description of part of the real-world system. A MODEL Then define programming in the context of modelling. A program is the translation of a the model into a language capable of describing and manipulating the part of the real-world system in a machine executable form How good are current PLs at representing reality? not very good (i.e. quite limited) Aspects to consider are:- The level of abstraction provided by the programming language (PL) o E.g. compare C with Prolog and Lisp The objects provided by the PL to represent reality o Often these consist of numbers, strings (primitives) and collections of primitives o Code objects to manipulate the data objects (or symbolic objects) Give examples o A student may be represented by a tuple (name, address, p-number, course) o Operations are get/set on these attributes (i.e. the student level) o Operations on collections of student objects (e.g. a database) Total number of students Number of students in course X Number of students from town XXX DFR/ND 120112 PS omtentamen FACIT Sidan 3 av 8
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-valuereturn ) fungerar. 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? DFR/ND 120112 PS omtentamen FACIT Sidan 4 av 8
5. Syntax och semantik Ge konkreta exempel i Pascalkod (enligt den BNF-definition i bilaga A) som illustrerar skillnaderna mellan syntax och semantik när man ska skriva en parser till detta språk. Ge en definition av dessa två begrepp. Svar ingående. SYNTAX has to do with the grammatical structure of each program as defined by the grammar usually defined using BNF-notation (for programming languages). A subset of all possible programs is defined to be syntactically correct i.e. this is the role of the parser. Parser: program text Boolean. Examples of syntax errors are missing keywords often indicated with the message X expected, Y found according to how the parser has been implemented. SEMANTICS has to do with the meaning of the program and is defined using a separate set of rules from the syntactic rules, usually written in some natural language. Examples of this are Checking for double definitions in ID-lists (using a symbol table (ST)) Keeping track of which identifiers have been used (declared) by the programmer using a ST Storing and returning attributes of the id e.g. type, address, storage size (a function of the type), the id s role in the program (program name, data object name, function name) The results of type operations on arguments of different/the same types and what the results is e.g. +: int x int int and +: int x real real (if allowed) where the int argument would need to be implicitly coerced to a real data object. These checks may be performed using an operator table. Checking the left and right sides of an assignment operation to see whether they are type compatible (under whichever rules apply for the particular language) 6. OO Vad är ett Objekt-Orienterat språk? Svar ingående. Open Question Marks for good answers. Explain inheritance, reuse, polymorphism. DFR/ND 120112 PS omtentamen FACIT Sidan 5 av 8
7. PROLOG I bilaga A finner du de regler som definierar hur Pascal-program får skrivas. I den PROLOGparser som du förhoppningsvis skrivit utgörs del tre av syntaxkontroll. Indata är en lista av lexem som kommer från lexern. a) Reglerna kan i stort sett göras om direkt till Pascal-regler men vissa regler måste göras om för att parsern skall fungera. Vilka regler måste göras om och hur ska de se ut? Förklara utförligt. (2 p) b) Reglerna för terminala respektive icke-terminala symboler får olika utseende när de skrivs som PROLOG-regler. Visa exempel, skrivna i PROLOG, på en regel för terminal symbol och en regel för rekursiv icke-terminal och en regel för icke-rekursiv icketerminal symbol. (3 p) Totalt DFR/ND 120112 PS omtentamen FACIT Sidan 6 av 8
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 ((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/ND 120112 PS omtentamen FACIT Sidan 7 av 8
Bilaga A - Grammatik: Pascallikt 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/ND 120112 PS omtentamen FACIT Sidan 8 av 8