170 likes | 277 Views
Chapter 5-b. Attributes of variables. Attributes of variables. { int sum = 5; ... ... }. Symbol Table. Identifier. Type. sum. int. 0000 0000 0000 0101. 0110 0010. Address. Value. Storage. Variable Names. sum=0.0 DO I = 1 TO 10 sum = sum + i END DO ...
E N D
Chapter 5-b • Attributes of variables
Attributes of variables { int sum = 5; ... ... } Symbol Table Identifier Type sum int 0000 0000 0000 0101 0110 0010 Address Value Storage
Variable Names sum=0.0 DO I = 1 TO 10 sum = sum + i END DO ... t = SQR(SUM) ... FUNCTION sqr(val) val = val*val RETURN VAL • Names: Fortran is not case sensitive. • Type: Fortran allows implicit declarations.
Naming Conventions Method names start with lower case public void actionPerformed (ActionEvent e){ int value = Math.PI; . . . } Class names start with upper case Constants are all upper case Local variables are all lower case
Aliasing: Variables c union { short i; float f; char c; } uval; i f uval Aliasing using variables is meant for conserving storage space.
Aliasing: Pointers int i; int *p=&i; char *c; c=(char*)p; i p c Aliasing using pointer variables is not meant for conserving storage space.
Static Variables (Fortran) Call statement Output CALL FUN() 1 CALL FUN() 2 CALL FUN() 3 CALL FUN() 4 . . . . . . SUBROUTINE fun() DATA k/0/ K=K+1 PRINT *, K RETURN In Fortran, all variables are by default static
Static Variables (C) Call statement Output fun( ); 1 fun( ); 1 fun( ); 1 fun( ); 1 . . . fun( ); 1 fun( ); 2 fun( ); 3 fun( ); 4 . . . void fun(){ int k=0; k++; printf(“\n %d”,k); } void fun(){ static int k=0; k++; printf(“\n %d”,k); }
i j i i Stack Dynamic Variables { int i; . . . { int j; . . . . . . } . . . . . . }
3 6 int fact (int n){ if(n==1) return 1; else return n*fact(n-1); } n=3 2 n=2 int fact (int n){ if(n==1) return 1; else return n*fact(n-1); } 2 n=3 n=3 n=1 1 n=2 n=3 1 int fact (int n){ if(n==1) return 1; else return n*fact(n-1); } n=2 n=3 Recursion
Heap-Dynamic Variables (1) p 0 int size=100; int *p; p = (int *) malloc(size*2); ... ... free(p); 99 ???? p Heap allocation requires effective memory management
Heap-Dynamic Variables (2) int *node; node = new int; //Allocates an int cell. ... ... delete node; //free the allocated memory. C++ Java Stack s = new Stack();
Scope (C) Global variable int x; ... main(){ int k; ... ... { int k; ... ... } ... } Local variable Local variable
Scope (Java) public float fun(){ int[] x = {10, 20, 30}; float sum=0; for (int i=0; i<3; i++){ sum=sum+x[i]; } System.out.println(“Sum=”+sum); float v; v=sum/2; return v; } Local variables
Scope (Java classes) public class Myclass{ public void add(int y){ x = x+y; } int x=10; } Java allows the above type of declaration of instance variables but it is not advised.
Scope Vs. Lifetime (1) void compute() { static int k; ... ... ... ... } Scope of the variable is limited to the function block, while its lifetime is the same as the total program execution time.
Scope Vs. Lifetime (2) void compute() { int value; ... ... printinfo(); ... ... } void printinfo(){ ... ... } Scope of “value” does not extend to the function “printinfo”, but lifetime of value does.