Minggu, 31 Maret 2013

Concepts of Programming Languages - Chapter 3


Review Questions
1.       Syntax is the form of programming language expressions, statements, and program units. Semantics is the meaning of those expressions, statements, and program units.
7.    Brackets, braces, multiple-choice options.
9.    State the static semantic rules of the language.
12.  To provide complete descriptions of the syntax and static semantics of programming languages.
14.  The individual steps in the execution of machine language and the resulting changes to the state of the machine are too small and too numerous, and the storage of a real computer is too large and complex.
16.  Syntactic domain is the domain that syntactic structures are mapped, semantic domain is the range of the map.
18.  Denotational semantics
27.  Loop invariant is the corresponding step in the axiomatic semantics of a while loop is finding an assertion. Example: I is the loop variant
P=> I
{I and B} S{I}
(I and (not B)) => Q
28.  To treat the process of producing a weakest precondition as a function, because it takes a predicate, or assertion, as a parameter and returns another predicate.
29. Total correctness is if loop termination can be shown, partial correctness if the other conditions can be met but termination isn’t guaranteed.

Problem Set
1.       A syntax error is an error in the typing of the code or statement, and a semantic error is a logic error.
scanf(%d,&a); >> syntax error because in %d it should be start and end with “
char asd[50]; char asd2[25]; printf(“%d”,asd); >> logic error because it is a string data type but it print out with integer data type

3.
<assign> <id> = <expr>
<id> A | B | C
<expr> <expr> + <term>
             |   <term>
<term> <term> * <factor>
              |   <factor>
<factor> ( <expr> )
                |   <id>


13. S->ab | aSb
      b->bb
15.
<program> -> begin <stmt_list> end
<stmt_list> -> <stmt>
| <stmt> ; <stmt_list>
<stmt> -> <var> = <expression>
<var> -> A | B | C
<expression> -> <var> {(+|-) <var>}

16.
<expression> -> <var> {(+|-) <var>}
<assign> -> <id> = <expr>
<id> -> A | B | C
<expr> -> <expr> {(+|*) <expr>}
| <id>

18. Fully attributed parse tree is a condition of a parse tree when all the attribute values in it have been computed.

23.
a.
a = 2 * ( b – 1 ) – 1 { a > 0 }
a = 2b – 2 – 1 { a > 0 }
a = 2b – 3 { a > 0 }
2b – 3 > 0
2b > 3
b > 3/2

b.
b = ( c + 10 ) / 3 { b > 6 }
b = c / 3 + 10 / 3 { b > 6 }
c / 3 + 10 / 3 > 6
c + 10 > 18
c > 8

c.
a = a + 2 * b ? 1 { a > 1 }
a = a + 2b – 1 { a > 1 }
a + 2b – 1 > 1
2b > 2 – a
b > 1 – a/2

d.
x = 2 * y + x ? 1 { x > 11 }
x = 2y + x – 1 { x > 11 }
2y + x – 1 > 11
2y > 12 – x
y > 6 – x/2

24.
a.
a = 2*b+1;
b = a – 3
{ b < 0 }
a – 3 < 0
a < 3
a = 2 * b + 1 { a < 3 }
2b + 1 < 3
2b < 2
b < 1

b.
a = 3*( 2*b+a );
b = 2*a – 1
{ b > 5 }
2a – 1 > 5
2a > 6
a > 3
a = 3 * ( 2 * b + a) { a > 3 }
3 * ( 2b + a ) > 3
2b + a > 1
2b > 1 – a
B > ( 1 – a ) / 2


Tidak ada komentar:

Posting Komentar