control procedures and environments control
play

Control - Procedures and Environments Control Procedure definition - PowerPoint PPT Presentation

Control - Procedures and Environments Control Procedure definition and activation: A procedure is a mechanism in a programming language for abstracting a group of actions or computations. The group of actions is called the body of the


  1. Control - Procedures and Environments

  2. Control  Procedure definition and activation:  A procedure is a mechanism in a programming language for abstracting a group of actions or computations.  The group of actions is called the body of the procedure.  A procedure is represented by a specification including A name,  The types and names of parameters.  The type of the return value.   We shall not make a significant distinction between a function and a procedure, although differences exist. Dr. Sherif G. Aly 2

  3. Control  Procedure definition and activation: Formal  Example: Parameters //C++ code void intSwap (int &x, int &y) //Specification { int temp = x; //Body x = y; //Body y = temp; //Body } Dr. Sherif G. Aly 3

  4. Control  Procedure definition and activation:  A procedure is called or activated by stating its name, together with arguments to the call corresponding to the parameters.  Example: Actual Parameters intSwap(a, b); Dr. Sherif G. Aly 4

  5. Control  Procedure definition and activation:  A call to the procedure transfers control to the beginning of the body of the called procedure (The Callee).  In some languages, control can be returned to the caller even before reaching the end of the callee ’ s body by using a return statement. Dr. Sherif G. Aly 5

  6. Control  Procedure definition and activation:  Example: //C++ code void intSwap (int &x, int &y) { If x is equal to y, the function will exit here if (x == y) return; int temp = x; x = y; y = temp; } Dr. Sherif G. Aly 6

  7. Control  Procedure definition and activation:  In some languages such as FORTRAN, to call a procedure, one must also include the keyword CALL.  CALL INTSWAP (A, B)  In FORTRAN, procedures are called subroutines. Dr. Sherif G. Aly 7

  8. Control  Procedure definition and activation:  In some languages, procedure and function declarations are written in a form similar to constant declarations:  Example: ML (* ML code *) fun swap (x, y) = let val t = !x in x:= !y y:= t end; Dr. Sherif G. Aly 8

  9. Control  Procedure definition and activation:  In such ML case, we can say that a procedure declaration creates a constant procedure value.  It associates a symbolic name (the name of the procedure) with the value.  A procedure communicates with the rest of the program through its: Parameters  Non-local references (references to variables outside the procedure body)  Dr. Sherif G. Aly 9

  10. Control  Procedure Semantics:  When a block is encountered during execution, it causes the allocation of local variables and other objects corresponding to the declarations of the block.  The memory allocated for the local objects of the block is called the activation record (stack frame). Dr. Sherif G. Aly 10

  11. Control  Procedure Semantics:  When a block is encountered during execution, it causes the allocation of local variables and other objects corresponding to the declarations of the block.  The memory allocated for the local objects of the block is called the activation record (stack frame). Dr. Sherif G. Aly 11

  12. Control Global Environment x x  Procedure Semantics: Activation Record of A y int x; void B(void){ int i; i Activation Record of B Using Lexical i = x/2; Scoping, which } x is this? void A(void){ int x, y; B(); } main(){ A(); return 0; } Dr. Sherif G. Aly 12

  13. Control Global Environment x x  Procedure Semantics: Activation Record of A y int x; void B(void){ int i; i Activation Record of B Using Lexical i = x/2; Scoping, which } x is this? void A(void){ int x, y; B(); The global environment is called the defining } environment of B The activation record of A is called the calling main(){ environment of B A(); return 0; } Dr. Sherif G. Aly 13

  14. Control Global Environment x x  Procedure Semantics: Activation Record of A y int x; void B(void){ int i; i Activation Record of B Using Lexical i = x/2; Scoping, which } x is this? void A(void){ int x, y; B(); The global environment is called the defining } environment of B The activation record of A is called the calling main(){ environment of B A(); return 0; } The x is that of the defining environment : The global x Dr. Sherif G. Aly 14

  15. Control  Procedure Semantics:  A procedure may have multiple calling environments (could be called from more than one place).  However, a procedure will have one defining environment. Dr. Sherif G. Aly 15

  16. Control  Parameter Passing Mechanisms:  Pass by value.  Pass by reference.  Pass by value result.  Pass by name and delayed evaluation. Dr. Sherif G. Aly 16

  17. Control  Parameter Passing Mechanisms:  Pass by value: The value of the parameter is evaluated.  The parameter is passed as a constant.  It ’ s value cannot be modified, or if modified does not affect the actual  parameter. This is by far the most common mechanism for parameter passing.  In Java, all primitive data types are passed by value.  Dr. Sherif G. Aly 17

  18. Control  Parameter Passing Mechanisms:  Pass by value (C): void increment (int x){ A copy of y is made and x++; passed to x. } Changing x DOES NOT increment (y); change y. Dr. Sherif G. Aly 18

  19. Control  Parameter Passing Mechanisms:  Pass by reference: The location of the parameter is passed.  The formal parameter becomes an alias to the actual parameter.  Any change in the formal parameter affects the actual parameter.  In FORTRAN, passing by reference is the only allowed parameter  passing mechanism. In C++ and Pascal, passing by reference is specified using an extra  syntax. Dr. Sherif G. Aly 19

  20. Control  Parameter Passing Mechanisms:  Pass by reference (C): void increment (int &x){ x becomes an alias of y. x++; Changing x affects y. } The & before x specifies passing by reference. increment (y); Dr. Sherif G. Aly 20

  21. Control  Parameter Passing Mechanisms:  Pass by reference:  If FORTRAN only allows passing by reference.  How is a call such as inc(2) achieved?  A temporary variable is located, initialized with 2, and passed.  This mimics passing by value in a passing by reference mechanism. Dr. Sherif G. Aly 21

  22. Control  Parameter Passing Mechanisms:  Pass by Value-Result: This mechanism achieves a similar result to passing by  reference. No actual alias is established.  A copy of the actual parameter is made, used in the  procedure, and then copied back to the actual parameter. Also known as copy-in, copy-out.  Also known as copy-restore.  Dr. Sherif G. Aly 22

  23. Control  Parameter Passing Mechanisms:  Pass by Name and Delayed Evaluation:  The actual parameter passed to the procedure is NOT evaluated until it is actually used in the called procedure. Dr. Sherif G. Aly 23

  24. Control  Parameter Passing Mechanisms:  Pass by Name and Delayed Evaluation:  Example: Void inc(int x) { … x++; a[i] only evaluated here! } If i somehow changed in procedure inc before this point, BIG problem!! We will not be incrementing inc(a[i]); the actually intended a[i] Dr. Sherif G. Aly 24

  25. Control  Parameter Passing Specification:  Parameter passing specification is different than parameter passing mechanisms.  Parameter passing mechanisms are tied closely to the internal mechanics of the code used to implement them. Dr. Sherif G. Aly 25

  26. Control  Parameter Passing Specification:  In Ada for example, we can specify parameters as In:  Cannot be legally assigned a new value inside the procedure, or otherwise  have its value changed! More like a constant.  Out:  Can only be assigned to.  Its value can never be used.  In Out :  Both   The meaning of such words is exactly what we can expect.  Any programs violating the rules above is considered erroneous! Dr. Sherif G. Aly 26

  27. Control  Type Checking of Parameters:  In strongly typed languages:  Procedure calls must be checked so that the actual parameters agree in type and number with the formal parameters.  Procedures may not have a variable number of parameters.  Rules must be stated for type compatibility. Dr. Sherif G. Aly 27

  28. Control  Procedure Environments, Activations, and Allocation:  In block structured language with recursion, such as C and Algol like languages, we need a stack to store various scope information.  In stack based runtime environments: An environment pointer is needed to point to the current  activation. A control link is needed to point to the previous activation  record of the block from which control passed to the current block and to which control will return. Dr. Sherif G. Aly 28

  29. Control  Dynamic Memory Management:  In an imperative language such as C, the automatic allocation and deallocation of storage occurs only for activation records on the stack.  Space is allocated for an activation record on the stack when a procedure is called, and deallocated when the procedure exits.  Explicit dynamic allocation and use of pointers is also available under manual programmer control using a heap of memory separate from the stack. Dr. Sherif G. Aly 29

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend