unit 3 principles of programming language

45

Click here to load reader

Upload: garima

Post on 07-May-2015

3.758 views

Category:

Education


7 download

TRANSCRIPT

Page 1: Unit 3 principles of programming language

By-Garima Jain

Page 2: Unit 3 principles of programming language

Sequence control with expressions Conditional Statements, Loops Exception Handling Subprogram definition and activation Simple and Recursive Subprogram Subprogram Environment

Page 3: Unit 3 principles of programming language

Control of the order of execution of the operations both primitive and user defined.

Implicit : determined by the order of the statements in the source program or by the built-in execution model

Explicit : the programmer uses statements to change the order of execution (e.g. uses If statement)

Page 4: Unit 3 principles of programming language

Expressions: How data are manipulated using precedence rules and parentheses.

Statements: conditional and iteration statements change the sequential execution.

  Declarative programming: an execution model that does not depend on the order of the statements in the source program.

Subprograms: transfer control from one program to another.

Page 5: Unit 3 principles of programming language

What is the sequence of performing the operations?

How is the sequence defined, and how is it represented?

Functional composition : Basic sequence-control mechanism:

Given an operation with its operands, the operands may be:·        Constants·        Data objects·        Other operations

Page 6: Unit 3 principles of programming language

Example 1: 3 * (var1 + 5)

operation - multiplication, operator: *, arity - 2

operand 1: constant (3)

operand 2: operation addition

operand1: data object (var1)

operand 2: constant (5)

Page 7: Unit 3 principles of programming language

Example 2: 3* var1 +5

Question: is the example equivalent to the above one?

 

Example 3: 3 + var1 +5

Question: is this equivalent to (3 + var1) + 5,

or to 3 + (var1 + 5) ?

Page 8: Unit 3 principles of programming language

Precedence concerns the order of applying operations

Associativity deals with the order of operations of same precedence.

 

Precedence and associativity are defined when the language is defined - within the semantic rules for expressions.

Page 9: Unit 3 principles of programming language

Linear representation of the expression tree:

       Prefix notation

·        Postfix notation

·        Infix notation

 

Prefix and postfix notations are parentheses-free.

Page 10: Unit 3 principles of programming language

Machine code sequence

Tree structures - software simulation

Prefix or postfix form - requires stack, executed by an interpreter.

Page 11: Unit 3 principles of programming language

Eager evaluation - evaluate all operands before applying operators.

Lazy evaluation

Page 12: Unit 3 principles of programming language

Side effects - some operations may change operands of other operations.

Error conditions - may depend on the evaluation strategy (eager or lazy evaluation)

Boolean expressions - results may differ depending on the evaluation strategy.

Page 13: Unit 3 principles of programming language

if expression then statement1 else statement2

  if expression then statement1

 a choice among many alternatives

nested if statements

case statements

Implementation: jump and branch machine instructions, jump table implementation for case statements

Page 14: Unit 3 principles of programming language

Simple repetition (for loop)

Specifies a count of the number of times to execute a loop:

perform statement K times;

  for loop -

Examples:

for I=1 to 10 do statement;

for(I=0;I<10; I++) statement;

Page 15: Unit 3 principles of programming language

while expression do statement;

Evaluate expression and if true execute statement, then repeat process.

  repeat statement until expression;

Execute statement and then evaluate expression. Repeat if expression is not true.

C++ for loop functionally is equivalent to repetition while condition holds

Page 16: Unit 3 principles of programming language
Page 17: Unit 3 principles of programming language
Page 18: Unit 3 principles of programming language

Multiple exit loops

Exceptional conditions

Do-while-do structure

 

Solutions vary with languages, e.g. in C++ - break statement, assert for exceptions.

Page 19: Unit 3 principles of programming language

Exception Handlers are subprograms that are not invoked by explicit calls

Special situations, called exceptions:

Error conditions Unpredictable conditions Tracing and monitoring

Page 20: Unit 3 principles of programming language

Exception handlers typically contain only:

A set of declarations of local variables A sequence of executable statements

Exception Handlers can be- predefined in the language- programmer defined

Page 21: Unit 3 principles of programming language

Languages provide methods for raising (throwing) and testing for exceptions.

try {statement1;statement2;…

if badCondition throw ExceptionName; }

catch ExceptionName{ ……….// do something for exception…….}

Page 22: Unit 3 principles of programming language

Operating system exceptions - raised directly by hardware interrupts.

Programmer defined - the translator inserts code to handle the exceptions.

Page 23: Unit 3 principles of programming language

Subprogram Control : interaction among subprograms how subprograms pass data among themselves

Page 24: Unit 3 principles of programming language

Simple subprogram call returnCopy rule view of subprograms:

the effect of a call statement is the same as if the subprogram were copied and inserted into the main program.

Page 25: Unit 3 principles of programming language

Subprograms cannot be recursive

Explicit call statements are required

Subprograms must execute completely at each call

Immediate transfer of control at point of call

Single execution sequence

Page 26: Unit 3 principles of programming language

CALL

RETURN

Page 27: Unit 3 principles of programming language

Execution of subprograms

Subprogram definition.

Subprogram activation.

Page 28: Unit 3 principles of programming language

The definition is translated into a template, used to create an activation each time a subprogram is called.

Page 29: Unit 3 principles of programming language

a code segment (the invariant part) - executable code and constants,

an activation record (the dynamic part) - local data, parameters.

created a new each time the subprogram is called, destroyed when the subprogram returns.

Page 30: Unit 3 principles of programming language

Current-instruction pointer – CIP address of the next statement to be executed

Current-environment pointer – CEPpointer to the activation record.

Page 31: Unit 3 principles of programming language
Page 32: Unit 3 principles of programming language

An activation record is created

Current CIP and CEP are saved in the created activation record as return point

CEP is assigned the address of the activation record.

CIP gets the address of the first instruction in the code segment

The execution continues from the address in CIP

Page 33: Unit 3 principles of programming language

The old values of CIP and CEP are retrieved.

The execution continues from the address in CIP

Restrictions of the model:

at most one activation of any subprogram

Page 34: Unit 3 principles of programming language

Allocate storage for a single activation record statically as an extension of the code segment. Used in FORTRAN and COBOL.

The activation record is not destroyed - only reinitialized for each subprogram execution.

Hardware support - CIP is the program counter, CEP is not used, simple jump executed on return.

Page 35: Unit 3 principles of programming language

The simplest run-time storage management techniquecall statements : push CIP and CEP return statements : pop CIP and CEP off of the stack.

Used in most C implementationsLISP: uses the stack as an environment.

Page 36: Unit 3 principles of programming language

SpecificationSyntactically - no difference

Semantically - multiple activations of the same subprogram exist simultaneously at some point in the execution.

E.G. the first recursive call creates a second activation within the lifetime of the first activation.

Page 37: Unit 3 principles of programming language

Stack-based -

CIP and CEP are stored in stack, forming a dynamic chain of links.

A new activation record is created for each call and destroyed on return.

The lifetimes of the activation records cannot overlap - they are nested.

Page 38: Unit 3 principles of programming language

Data control features determine the accessibility of data at different points during program execution.

Central problem: the meaning of variable names, i.e. the correspondence between names and memory locations.

Page 39: Unit 3 principles of programming language

Two ways to make a data object available as an operand for an operation

Direct transmission

Referencing through a named data object

Page 40: Unit 3 principles of programming language

A data object computed at one point as the result of an operation may be directly transmitted to another operation as an operand

Example: x = y + 2*z;

The result of multiplication is transmitted directly as an operand of the addition operation

Page 41: Unit 3 principles of programming language

A data object may be given a name when it is created, the name may then be used to designate it as an operand of an operation.

Page 42: Unit 3 principles of programming language

VariablesFormal parametersSubprogramsDefined typesDefined constantsLabelsException namesPrimitive operationsLiteral constants

Page 43: Unit 3 principles of programming language

Association: binding identifiers to particular data objects and subprograms

Referencing environment: the set of identifier associations for a given subprogram.

Referencing operations during program execution: determine the particular data object or subprogram associated with an identifier

Page 44: Unit 3 principles of programming language

The set of associations created on entry to a subprogram formal parameters, local variables, and subprograms defined only within that subprogram.

Subprogram EnvironmentSubprogram Environment

Non-local referencing environmentNon-local referencing environmentThe set of associations for identifiers • used within a subprogram• not created on entry to it

Global referencing environment: Global referencing environment: associations created at the start of execution of the main program, available to be used in a subprogram.

Predefined referencing environmentsPredefined referencing environments: predefined associations in the language definition.

Page 45: Unit 3 principles of programming language