#### For Statement, Functions and Comments

Introduction:

for Statement:

The ‘for’ statement is a somewhat general while that lets us place the initialization and increment portions of a loop into a single statement all along with the test. The common form of the for is

for( initialization; expression; increment )
statement

The meaning is precisely:

initialization;
while( expression ) {
statement
increment;
}

This slightly more elaborate illustration adds up the elements of an array:

sum = 0;
for( i=0; i<n; i++)sum = sum + array[i];

In the ‘for’ statement, the initialization can be left out when you want, however the semicolon has to be there. The increment is as well optional. It is not followed by the semicolon. The second clause, the test, works in similar way as in the while: if the expression is true (that is, not zero) do another loop, or else get on with the next statement. Since with the while, the for loop might be done zero times. If the expression is left out, it is taken to be for all time true, therefore,

for( ; ; ) ...
while( 1 ) ...

are both infinite loops.

You valor ask why we employ a for as it is so much like a while. (You may too ask why we use a while because...) The for is generally preferable as it keeps the code where it is employed and sometimes removes the requirement for compound statements, as in this code that zeros a 2-dimensional array:

for( i=0; i<n; i++ )
for( j=0; j<m; j++ )
array[i][j] = 0;

Assume that we want, as part of a big program, to count the occurrences of the ASCII characters in some input text. Let us as well map illegal characters (such with value>127 or <0) into one pile. As this is presumably an isolated portion of the program, good practice dictates making it a separate function. Here is one method:

main( ) {
int hist[129];
/*  128 legal chars + 1 illegal group*/
...
count(hist, 128);
/* count the letters into hist */
printf( ... );
/* comments look like this; use them */
...
/* anywhere blanks, tabs or newlines could appear */
}

count(buf, size)
int size, buf[ ]; {
int i, c;
for( i=0; i<=size; i++ )
buf[i]  =  0;
/*  set buf to zero */
while(  (c=getchar(  )) != '\0' ) {
if( c > size || c < 0 )
c = size;
/* fix illegal input */
buf[c]++;
}
return;
}

We know many instances of calling a function; therefore let us concentrate on how to define one. As count has two arguments, we require declaring them, as shown, giving their types, and in the case of buf, the fact which it is an array. The declarations of arguments go among the argument list and the opening `{'. There is no requirement to specify the size of the array buf, for it is defined exterior of count.

The return statement merely says to go back to calling routine. However, we could have omitted it, as a return is implied at the end of a function.

What if we required count to return a value, state the number of characters read? The return statement permits for this too:

int i, c, nchar;
nchar = 0;
...
while( (c=getchar( )) != '\0' ) {
if( c > size || c < 0 )
c = size;
buf[c]++;
nchar++;
}
return(nchar);

Any expression can emerge in the parentheses. Here is a function to evaluate the minimum of two integers:

min(a, b)
int a, b; {
return( a < b ? a : b );
}

To copy a character array, we write the function:

strcopy(s1, s2)
/* copies s1 to s2 */
char s1[ ], s2[ ]; {
int i;
for( i = 0; (s2[i] = s1[i]) != '\0'; i++ );       }

As is frequently the case, all the work is completed by the assignment statement embedded in the test portion of the for. Again, the declarations of arguments s1 and s2 omit the sizes, since they do not matter to strcopy.

There is a subtlety in function usage that can trap the unsuspecting FORTRAN programmer. Simple variables (that is, not arrays) are passed in C by ‘call by value’, that means that the called function is given a copy of its arguments, and does not know their addresses. This makes it unfeasible to modify the value of one of the real input arguments.

There are two methods to out of this problem. One is to make special arrangements to pass to the function, the address of a variable rather than its value. The other is to make the variable a global or an external variable that is known to each function by its name.

Latest technology based Programming Languages Online Tutoring Assistance

Tutors, at the www.tutorsglobe.com, take pledge to provide full satisfaction and assurance in Programming Languages help via online tutoring. Students are getting 100% satisfaction by online tutors across the globe. Here you can get homework help for Programming Languages, project ideas and tutorials. We provide email based Programming Languages help. You can join us to ask queries 24x7 with live, experienced and qualified online tutors specialized in Programming Languages. Through Online Tutoring, you would be able to complete your homework or assignments at your home. Tutors at the TutorsGlobe are committed to provide the best quality online tutoring assistance for Programming Languages Homework help and assignment help services. They use their experience, as they have solved thousands of the Programming Languages assignments, which may help you to solve your complex issues of Programming Languages. TutorsGlobe assure for the best quality compliance to your homework. Compromise with quality is not in our dictionary. If we feel that we are not able to provide the homework help as per the deadline or given instruction by the student, we refund the money of the student without any delay.