Wednesday, 15 June 2011

Week-3 First Activity

1.What is encapsulation, and what do functions encapsulate?
   Encapsulation is hide the data and methods in single unit from outside world. To access the data and    methods we need to create instance of that class and access that data through public data members which are declared in that class.

2.What is a pure function?
The function always evaluates the same result value given the same argument value(s). The function result value cannot depend on any hidden information that may change as program execution proceeds or between different executions of the program, nor can it depend on any external input from I/O devices.
Examples:
         sin(x), returning the sine of a number x
         length(s), returning the size of a string s

3.A recursive function, must have some sort of an end condition. Why would we get a "out of stack space" error message if a recursive function does not have an end condition?
A Recursive function is function which call itself during execution.This enables the function to repeat itself several times, outputting the result and the end of each iteration. In every function call the local variables, result of that each call is saved temprary in Stack and when get the end condition that saved values is reuse for that next procedure of that function. But, when end condition will not met the stack data could not be pop, else local veriable will push continuously in stack and because of no way to emapty the stack when stack will get full the error message will ocur.

4.What is object augmentation, and how do we do it?
In JavaScript, you can add methods to individual objects without the need for additional classes. This has enormous power because you can write far fewer classes and the classes you do write can be much simpler. Recall that JavaScript objects are like hashtables. You can add new values at any time. If the value is a function, then it becomes a method.
So in the example above, I didn't need a Parenizor class at all. I could have simply modified my instance.
myParenizor = new Parenizor(0);
myParenizor.toString = function () {
    if (this.getValue()) {
        return this.uber('toString');
    }
    return "-0-";
};
myString = myParenizor.toString();

We added a toString method to our myParenizor instance without using any form of inheritance. We can evolve individual instances because the language is class-free.
1) When parsing a String into a number using the parseInt() method, we are advised to always provide the radix. Why is it so strongly recommended?
Ans:- If the radix parameter is omitted, JavaScript assumes the following:
        
  • If the string begins with "0x", the radix is 16 (hexadecimal)

  • If the string begins with "0", the radix is 8 (octal).

  • If the string begins with any other value, the radix is 10 (decimal)

  • if you try to parseInt("08") which result gives 0 because the string begins with "0" and converts next number  into Octal number."8" is not include in octal number so result gives 0.

    2)Do you understand why the following operation produces the given result 115 * 4 - 4 + 88 / 2 = 500?
    Ans:- Yes. As per the operator priority the * and / has first priority rather than - and +. which start from left to right. hence first 115*4 is calculate which is equal to 460. the equation is now
    460-4+88/2. now as per operator priority 88/2=44. now equation is 460-4+44=500

    3)Will the following statement evaluate to true or false
        (("red" != "car") || (3 >= 9)) && !(((10 * 2) == 100) && true) ?
    Ans:- Above function evaluate to true.
             ("red"!="car") --> TRUE. Because of || to next not evaluate next condition that is (3>=9) and return true for   (("red" != "car") ||  (3 >= 9))  statement.--i
       (20==100)--> FALSE. Because of && it gives result False to  ((10 * 2) == 100) && true)  statement. !(False)--> TRUE --ii
    so  as per i and ii TRUE &&TRUE-->Evaluate TRUE.