Monday, January 19, 2015

Assignment 7

Pada post kali ini, saya akan menjawab pertanyaan-pertanyaan Assignment #7 dari Chapter 7, dari buku "Concepts of Programming Languages" karya Robert W. Sebesta.

Review Questions

        1. What associativity rules are used by APL?
APL used right to left associativity rules for all operators.


        2. What is the difference between the way operators are implemented in C++ and Ruby?
All of the arithmetic, relational, and assignment operators, as well as array indexing, shifts, and bitwise logic operators, are
implemented as methods in Ruby while C++ doesn’t.

        3. Define functional side effect.
Functional side effect is when the function changes either one of its parameters or a global variable. (A global variable is declared outside the function but is accessible in the function.)

        4. What is a coercion?
Coercion is an implicit type of conversion only if they are widening (from a “smaller” type to a “larger” type). So int to float coercions are done across the assignment operator, but float to int coercions are not.

        5. What is a conditional expression?
Conditional expression is a feature of programming language which perform different computations or actions depending on whether a programmer-specified boolean condition evaluates to true or false.

Problem Sets

        6. Should C’s single-operand assignment forms (for example, ++count) be included in other languages (that do not already have them)? Why or why not?
Yes because it will make easier the increment or even decrement while we use in looping rather than manually by the assigning, and also by using that we can easily know that it is not operation, instead it is an increment or decrement which is usually used in repetition.

        7. Describe a situation in which the add operator in a programming language would not be commutative.
It wouldn’t be commutative when it deals with the negative integers. For example -9 – 6 equals to -15
        8. Describe a situation in which the add operator in a programming lan- guage would not be associative.
It is not associative when it includes the other operator with higher precedence like the multiplication and division.

        9. Assume the following rules of associativity and precedence for expressions:

Show the order of evaluation of the following expressions by parenthesizing all subexpressions and placing a superscript on the right parenthesis to indicate order. For example, for the expression
a + b * c + d
the order of evaluation would be represented as
((a + (b * c)1)2 + d)3
a. a * b - 1 + c
b. a * (b - 1) / c mod d
c. (a - b) / c & (d * e / a - 3)
d. -a or c = d and e
e. a > b xor c or d <= 17
f. -a + b
(a) ( ( ( a * b )1 – 1 )2 + c )3

(b) ( ( ( a * ( b – 1 )1 )2 / c )3 mod d )4

(c) ( ( ( a – b )1 / c )2 & ( ( ( d * e )3 / a )4 – 3 )5 )6

(d) ( ( ( a )1 or ( c = d )2 )3 and e )4

(e) ( ( a > b )1 xor ( c or ( d <= 17 )2 )3 )4

(f) ( ( a + b )1 )2

        10. Show the order of evaluation of the expressions of Problem 9, assuming that there are no precedence rules and all operators associate right to left.
(a) ( a * ( b – ( 1 + c )1 )2 )3

(b) ( a * ( ( b – 1 )2 / ( c mod d )1 )3 )4

(c) ( ( a – b )5 / ( c & ( d * ( e / ( a – 3 )1 )2 )3 )4 )6

(d) ( ( a or ( c = ( d and e )1 )2 )3 )4

(e) ( a > ( xor ( c or ( d <= 17 )1 )2 )3 )4

(f) ( – ( a + b )1 )2

No comments:

Post a Comment