names - mathematical sciences home pages--college...
TRANSCRIPT
![Page 1: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/1.jpg)
22c:111 Programming Language Concepts - Fall 2008
22c:111 Programming Language Concepts
Fall 2008
Copyright 2007-08, The McGraw-Hill Company and Cesare Tinelli.These notes were originally developed by Allen Tucker, Robert Noonan and modified by Cesare Tinelli. They arecopyrighted materials and may not be used in other course settings outside of the University of Iowa in their current formor modified form without the express written permission of one of the copyright holders. During this course, students areprohibited from selling notes to or being paid for taking notes by any person or commercial firm without the expresswritten permission of one of the copyright holders.
Names
![Page 2: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/2.jpg)
22c:111 Programming Language Concepts - Fall 2008
4.1 Syntactic Issues4.2 Variables4.3 Scope4.4 Symbol Table4.5 Resolving References4.6 Dynamic Scoping4.7 Visibility4.8 Overloading4.9 Lifetime
![Page 3: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/3.jpg)
22c:111 Programming Language Concepts - Fall 2008
Recall that the term binding is an association betweenan entity (such as a variable) and a property (suchas its value).
A binding is static if the association occurs beforerun-time.
A binding is dynamic if the association occurs at run-time.
Name bindings play a fundamental role.The lifetime of a variable name refers to the time
interval during which memory is allocated.
![Page 4: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/4.jpg)
22c:111 Programming Language Concepts - Fall 2008
Syntactic Issues
Lexical rules for names.Collection of reserved words or keywords.Case sensitivity
C-like: yesEarly languages: noPHP: partly yes, partly no
![Page 5: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/5.jpg)
22c:111 Programming Language Concepts - Fall 2008
Reserved Words
Cannot be used as IdentifiersUsually identify major constructs: if while switchPredefined identifiers: e.g., library routines
![Page 6: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/6.jpg)
22c:111 Programming Language Concepts - Fall 2008
Variables
Basic bindings• Name• Address• Type• Value• Lifetime
![Page 7: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/7.jpg)
22c:111 Programming Language Concepts - Fall 2008
L-value - use of a variable name to denote its address.Ex: x = …
R-value - use of a variable name to denote its value.Ex: … = … x …
Some languages support/require explicitdereferencing.Ex: x := !y + 1
![Page 8: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/8.jpg)
22c:111 Programming Language Concepts - Fall 2008
// Pointer example:int x,y;int *p;x = *p;*p = y;
![Page 9: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/9.jpg)
22c:111 Programming Language Concepts - Fall 2008
Scope
The scope of a name is the collection of statementswhich can access the name binding.
In static scoping, a name is bound to a collection ofstatements according to its position in the sourceprogram.
Most modern languages use static (or lexical) scoping.
![Page 10: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/10.jpg)
22c:111 Programming Language Concepts - Fall 2008
Two different scopes are either nested or disjoint.In disjoint scopes, same name can be bound to
different entities without interference.What constitutes a scope?
![Page 11: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/11.jpg)
22c:111 Programming Language Concepts - Fall 2008
Algol C Java AdaPackage n/a n/a yes yesClass n/a n/a nested yesFunction nested yes yes nestedBlock nested nested nested nestedFor Loop no no yes automatic
![Page 12: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/12.jpg)
22c:111 Programming Language Concepts - Fall 2008
The scope in which a name is defined or delared iscalled its defining scope.
A reference to a name is nonlocal if it occurs in anested scope of the defining scope; otherwise, it islocal.
![Page 13: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/13.jpg)
22c:111 Programming Language Concepts - Fall 2008
1 void sort (float a[ ], int size) {
2 int i, j;
3 i = j = 0;
4 for (i = 0; i < size; i++)
5 for (j = i + 1; j < size; j++)
6 if (a[j] < a[i]) {
7 float t1,t2;
8 t1 = a[i];
9 a[i] = a[j];
10 a[j] = t2;
11 };
12 j = i + 1
13 };
14 i = 2*j }
![Page 14: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/14.jpg)
22c:111 Programming Language Concepts - Fall 2008
1 void sort (float a[ ], int size) { // C language
2 int i, j;
3 i = j = 0;
4 for (i = 0; i < size; i++) // i, size local
5 for (j = i + 1; j < size; j++) // j local
6 if (a[j] < a[i]) { // a, i, j local
7 float t1,t2;
8 t1 = a[i]; // t1 local; a, i nonlocal
9 a[i] = a[j]; // j nonlocal
10 a[j] = t2; // t2 local
11 };
12 j = i + 1 // i, j local
13 };
14 i = 2*j } // i, j local
![Page 15: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/15.jpg)
22c:111 Programming Language Concepts - Fall 2008
1 void sort (float a[ ], int size) { // C++ language
2 int i, j;
3 i = j = 0;
4 for (int i = 0; i < size; i++) { // i local, size nonlocal
5 for (int j = i + 1; j < size; j++) // j local
6 if (a[j] < a[i]) { // j local, a, i nonlocal
7 float t1,t2;
8 t1 = a[i]; // t1 local; a, i nonlocal
9 a[i] = a[j]; // j nonlocal
10 a[j] = t2; // t2 local
11 };
12 j = i + 1; // i local, j nonlocal
13 };
14 i = 2*j } // i, j local
![Page 16: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/16.jpg)
22c:111 Programming Language Concepts - Fall 2008
for (int i = 0; i < 10; i++) { System.out.println(i); ...}... i ... // invalid reference to i
![Page 17: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/17.jpg)
22c:111 Programming Language Concepts - Fall 2008
Symbol Table
A symbol table is a data structure kept by a translatorthat allows it to keep track of each declared nameand its binding.
Assume for now that each name is unique within itslocal scope.
The data structure can be any implementation of adictionary, where the name is the key.
![Page 18: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/18.jpg)
22c:111 Programming Language Concepts - Fall 2008
1. Each time a scope is entered, push a newdictionary onto the stack.
2. Each time a scope is exited, pop a dictionary offthe top of the stack.
3. For each name declared, generate an appropriatebinding and enter the name-binding pair into thedictionary on the top of the stack.
4. Given a name reference, search the dictionary ontop of the stack:
a) If found, return the binding.b) Otherwise, repeat the process on the next dictionary
down in the stack.c) If the name is not found in any dictionary, report an
error.
![Page 19: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/19.jpg)
22c:111 Programming Language Concepts - Fall 2008
1 void sort (float a[ ], int size) { // C++ language
2 int i, j;
3 i = j = 0;
4 for (int i = 0; i < size; i++) { // i local, size nonlocal
5 for (int j = i + 1; j < size; j++) // j local
6 if (a[j] < a[i]) { // j local, a, i nonlocal
7 float t1,t2;
8 t1 = a[i]; // t1 local; a, i nonlocal
9 a[i] = a[j]; // j nonlocal
10 a[j] = t2; // t2 local
11 };
12 j = i + 1; // i local, j nonlocal
13 };
14 i = 2*j } // i, j local
![Page 20: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/20.jpg)
22c:111 Programming Language Concepts - Fall 2008
Example: previous C++ programBindings: 〈var name, line location in code〉
Dictionary Stack at line 7:
{〈t1,7〉, 〈t2,7〉}{〈j,4〉}{〈i,4〉}{〈a,1〉, 〈size,1〉, 〈i,2〉, 〈j,2〉}
![Page 21: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/21.jpg)
22c:111 Programming Language Concepts - Fall 2008
Resolving References
For static scoping, the referencing environment for aname is its defining scope and all nestedsubscopes.
The referencing environment defines the set ofstatements which can validly reference a name.
![Page 22: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/22.jpg)
22c:111 Programming Language Concepts - Fall 2008
1 int h, i;2 void B(int w) {3 int j, k;4 i = 2*w;5 w = w+1;6 ...7 }8 void A (int x, int y) {9 float i, j;10 B(h);11 i = 3;12 ...13 }
14 void main() {15 int a, b;16 h = 5; a = 3; b = 2;17 A(a, b);18 B(h);19 ...20 }
![Page 23: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/23.jpg)
22c:111 Programming Language Concepts - Fall 2008
1. Outer scope: <h, 1> <i, 1> <B, 2> <A, 8> <main, 14>
2. Function B: <w, 2> <j, 3> <k, 4>3. Function A: <x, 8> <y, 8> <i, 9> <j, 9>4. Function main: <a, 15> <b, 15>
![Page 24: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/24.jpg)
22c:111 Programming Language Concepts - Fall 2008
Symbol Table Stack for Function B: <w, 2> <j, 3> <k, 4><h, 1> <i, 1> <B, 2> <A, 8> <main, 14>
Symbol Table Stack for Function A: <x, 8> <y, 8> <i, 9> <j, 9><h, 1> <i, 1> <B, 2> <A, 8> <main, 14>
Symbol Table Stack for Function main: <a, 15> <b, 15><h, 1> <i, 1> <B, 2> <A, 8> <main, 14>
![Page 25: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/25.jpg)
22c:111 Programming Language Concepts - Fall 2008
Line Reference Declaration4 i 110 h 111 i 916 h 118 h 1
![Page 26: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/26.jpg)
22c:111 Programming Language Concepts - Fall 2008
Dynamic Scoping
In dynamic scoping, a name is bound to its mostrecent declaration based on the program’s callhistory.
Used be early Lisp, APL, Snobol, Perl.Symbol table for each scope built at compile time, but
managed at run time.Scope pushed/popped on stack when entered/exited.
![Page 27: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/27.jpg)
22c:111 Programming Language Concepts - Fall 2008
1 int h, i;2 void B(int w) {3 int j, k;4 i = 2*w;5 w = w+1;6 ...7 }8 void A (int x, int y) {9 float i, j;10 B(h);11 i = 3;12 ...13 }
14 void main() {15 int a, b;16 h = 5; a = 3; b = 2;17 A(a, b);18 B(h);19 ...20 }
![Page 28: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/28.jpg)
22c:111 Programming Language Concepts - Fall 2008
Using Figure 4.2 as an example: call historymain (17) → A (10) → B
Function DictionaryB <w, 2> <j, 3> <k, 3>A <x, 8> <y, 8> <i, 9> <j, 9>main <a, 15> <b, 15>
<h, 1> <i, 1> <B, 2> <A, 8> <main, 14>
Reference to i (4) resolves to <i, 9> in A.
![Page 29: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/29.jpg)
22c:111 Programming Language Concepts - Fall 2008
1 int h, i;2 void B(int w) {3 int j, k;4 i = 2*w;5 w = w+1;6 ...7 }8 void A (int x, int y) {9 float i, j;10 B(h);11 i = 3;12 ...13 }
14 void main() {15 int a, b;16 h = 5; a = 3; b = 2;17 A(a, b);18 B(h);19 ...20 }
![Page 30: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/30.jpg)
22c:111 Programming Language Concepts - Fall 2008
Using Figure 4.2 as an example: call historymain (17) → B
Function DictionaryB <w, 2> <j, 3> <k, 3>main <a, 15> <b, 15>
<h, 1> <i, 1> <B, 2> <A, 8> <main, 14>
Reference to i (4) resolves to <i, 1> in global scope.
![Page 31: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/31.jpg)
22c:111 Programming Language Concepts - Fall 2008
Visibility
A name is visible if its referencing environmentincludes the reference and the name is not reclaredin an inner scope.
A name redeclared in an inner scope effectively hidesthe outer declaration.
Some languages provide a mechanism for referencinga hidden name; e.g.: this.x in C++/Java.
![Page 32: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/32.jpg)
22c:111 Programming Language Concepts - Fall 2008
1 public class Student {2 private String name;3 public Student (String name, ...) {4 this.name = name;5 ...6 }7 }
![Page 33: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/33.jpg)
22c:111 Programming Language Concepts - Fall 2008
procedure Main is x : Integer; procedure p1 is x : Float; procedure p2 is begin ... x ... end p2; begin ... x ... end p1;
procedure p3 is begin ... x ... end p3;begin ... x ...end Main; -- Ada-- x in p2?-- x in p1? Main.x?-- x in p3? p1.x?-- x in Main?
![Page 34: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/34.jpg)
22c:111 Programming Language Concepts - Fall 2008
Overloading
Overloading uses the number or type of parameters todistinguish among identical function names oroperators.
Examples:• +, -, *, / can be float or int• + can be float or int addition or string
concatenation in Java• System.out.print(x) in Java
![Page 35: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/35.jpg)
22c:111 Programming Language Concepts - Fall 2008
Modula: library functions• Read( ) for characters• ReadReal( ) for floating point• ReadInt( ) for integers• ReadString( ) for strings
![Page 36: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/36.jpg)
22c:111 Programming Language Concepts - Fall 2008
public class PrintStream extends FilterOutputStream { ... public void print(boolean b); public void print(char c); public void print(int i); public void print(long l); public void print(float f); public void print(double d); public void print(char[ ] s); public void print(String s); public void print(Object obj);}
![Page 37: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/37.jpg)
22c:111 Programming Language Concepts - Fall 2008
Lifetime
The lifetime of a variable is the time interval duringwhich the variable has been allocated a block ofmemory.
Earliest languages used static allocation.Algol introduced the notion that memory should be
allocated/deallocated at scope entry/exit.Remainder of section considers mechanisms which
break scope equals lifetime rule.
![Page 38: Names - Mathematical Sciences Home Pages--College …homepage.cs.uiowa.edu/~tinelli/classes/111/Fall08/Notes/...The scope in which a name is defined or delared is called its defining](https://reader030.vdocuments.net/reader030/viewer/2022020412/5ae3fa817f8b9a097a8ed639/html5/thumbnails/38.jpg)
22c:111 Programming Language Concepts - Fall 2008
C:• Global compilation scope: static• Explicitly declaring a variable static• Remark: Java also allows a variable to be declared
static