Slide 1 Chapter 5-b Attributes of variables
Slide 2 Attributes of variables { int sum = 5;... } sum int IdentifierType Value Address Storage Symbol Table
Slide 3 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.
Slide 4 Naming Conventions public void actionPerformed (ActionEvent e){ int value = Math.PI;... } Method names start with lower case Class names start with upper case Constants are all upper case Local variables are all lower case
Slide 5 Aliasing: Variables union { short i; float f; char c; } uval; c i f uval Aliasing using variables is meant for conserving storage space.
Slide 6 Aliasing: Pointers int i; int *p=&i; char *c; c=(char*)p; p c i Aliasing using pointer variables is not meant for conserving storage space.
Slide 7 Static Variables (Fortran) SUBROUTINE fun() DATA k/0/ K=K+1 PRINT *, K RETURN Call statementOutput CALL FUN() 1 CALL FUN() 2 CALL FUN() 3 CALL FUN() 4... In Fortran, all variables are by default static
Slide 8 Static Variables (C) void fun(){ int k=0; k++; printf(“\n %d”,k); } Call statementOutput fun( ); 1... fun( ); 1 fun( ); 2 fun( ); 3 fun( ); 4... void fun(){ static int k=0; k++; printf(“\n %d”,k); }
Slide 9 Stack Dynamic Variables i i ji { int i;... { int j;... }... }
Slide 10 Recursion n=3 n=2 n=3 n=2 n=1 n=3 n=2 1 n= int fact (int n){ if(n==1) return 1; else return n*fact(n-1); } 2 int fact (int n){ if(n==1) return 1; else return n*fact(n-1); } 1 int fact (int n){ if(n==1) return 1; else return n*fact(n-1); }
Slide 11 Heap-Dynamic Variables (1) int size=100; int *p; p = (int *) malloc(size*2);... free(p); 0 99 p p Heap allocation requires effective memory management ????
Slide 12 Heap-Dynamic Variables (2) int *node; node = new int; //Allocates an int cell.... delete node; //free the allocated memory. C++ Stack s = new Stack(); Java
Slide 13 Scope (C) int x;... main(){ int k;... { int k;... }... } Global variable Local variable
Slide 14 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
Slide 15 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.
Slide 16 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.
Slide 17 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.