TOPIC J: Scope

Contents :

  Scope of variables, types & procedures.

Exercises :


D1:

 Solution

S1: Exam january '99

Write between the (* *) ALL identifiers that may be used.
Schrijf tussen de (* *) van volgend programma alle identifiers die in die lijn gebruikt mogen worden.
 
MODULE S1;
  FROM bib IMPORT a;

  PROCEDURE X;
     VAR b: CARDINAL;

     PROCEDURE Z;
       VAR a : [0..100];
       TYPE T = [1..10];
     BEGIN
       (* ... *)
     END Z;

     PROCEDURE Y(c:REAL);
     BEGIN
       (* ... *)
     END Y;

   BEGIN
     (* ... *)
  END X;

BEGIN
  (* ... *)
END S1.

Hint: Solve this first without running it. If you want to run the program, change the 2nd line into VAR a: CARDINAL; (because the library bib does noet exist)


S2: i.

MODULE S2;
VAR
  i : INTEGER;

PROCEDURE een ( ) ;
VAR
  i : INTEGER;

PROCEDURE drie ( ) ;
VAR
  xxx : INTEGER;

BEGIN
xxx := 6;

(* Wat is de waarde van i? Is er een i? I*)
een();  (* A *)
twee(); (* B *)
drie(); (* C *)
END drie;
 

BEGIN
i := 1;

(*  Wat is de waarde van i? Is er een i? II*)
een();  (* D *)
twee(); (* E *)
drie(); (* F *)

END een;

PROCEDURE twee ( ) ;
VAR
    i : INTEGER;

BEGIN
i := 2;

(* Wat is de waarde van i? Is er een i? III*)

een();  (* G *)
twee(); (* H *)
drie(); (* I *)
END twee;

BEGIN

i := 6;

een();  (* J *)
twee(); (* K *)
drie(); (* L *)

END S2.
 

    1. Kijk eerst naar de lijnen met de letters van het ALFABET. Zijn alle procedure-oproepen correct?
    2. Kijk dan naar de lijnen met de letters van het ROMEINSE cijfers. Wat is de waarde van 'i' op deze plaatsen.

Opmerking:



S3:


X1:



H1:



H2:



T1: Output

MODULE Test1;
FROM IO IMPORT WrLn, WrCard, RdCard;

BEGIN

END Test1.