C / C++ Tutorial Part 3


Looping

Download Source

Looping constucts work on the same principle as the if statement. They work on a condition. If the condition is zero then the loop will stop.

The first looping construct we will will look at is the do-while, while-do loop.

do
{
   ....
}while(condition);	
while(condition)
{
   ....
};

The code is similar and the important facts remain the same. The difference between these two construct is that the do-while will always do something before testing the condition. The while-do construct carries out the test before going into the loop, if the condition is zero then the loop is never enterred into.

Lets start with an example :

#include <stdio.h>

void main(void)
{
    /* Set up our variables   */
    int iCounter = 0;
    /* Lets set up our loop   */
    while(iCounter < 10)
    {
        printf("Loop %d\n",iCounter);
        iCounter = iCounter + 1;
    }
}

The for loop.
for( initialise ; condition ; loop-execute)
{
}
initialise set up variables etc before going into the loop
condition like if the for loop ends when the condition is zero
loop-execute code that is executed at the end of each loop

Example :

#include <stdio.h>

void main(void)
{
    /* Set up our variable   */
    int iCounter = 0;

    /* Go into the loop      */
    for(iCounter=10;iCounter>0;iCounter = iCounter - 1)
    {
         printf("Loop %d\n",iCounter);
    }
}
Lets just cap this off with something that does something a bit more exciting.

#include <stdio.h>

void main(void)
{
    /* Set up our variable */
    int iFoundEndOfString = 0;
    int iInputLength=0;
    int iPosOfLastCharInInput=0;
    int iInputPosition = 0;
    int iOutputPosition = 0;
    char acDataIn[25];
    char acDataOut[25];

    /* Get some text */
    printf("Enter some text - max 25 characters : ");
    gets(acDataIn);

    /* Show what was typed in */
    printf("You entered %s\n",acDataIn);

    /* We know that gets puts a 0 at the end of the */
    /* string                                       */

    /* Find out the length of the string enterred   */
    for(iInputLength=0, iFoundEndOfString = 0;
        ((iInputLength < 25)&&(iFoundEndOfString == 0));
        iInputLength++)
    {
        if(acDataIn[iInputLength] == 0)
        {
            iFoundEndOfString = 1;
        }
    }

    /* The position of the last character is 2 less */
    /* than the position of the zero                */
    /* we found the 0 and set our flag as 1         */
    /* then the loop-execute was called before the  */
    /* condition was checked                        */
    iPosOfLastCharInInput = iInputLength - 2;

    /* OK we got the string length                   */
    /* Lets use that to reverse the string           */
    for(iInputPosition = iPosOfLastCharInInput, iOutputPosition = 0;
        iInputPosition > 0;
        iInputPosition = iInputPosition - 1)
    {
        acDataOut[iOutputPosition] = acDataIn[iInputPosition];
        iOutputPosition = iOutputPosition + 1;
    }

    /* Cap off the array with a zero to use as a string */
    acDataOut[iOutputPosition+1] = 0;

    /* Show off */
    printf("That is %s backwards\n",acDataOut);
}

We will see easier ways of doing theabove later on but what it shows is that at the end of Part 3 of these etutorials you should be able to do quite interesting things.

Note : I have used a seperate variable for everything I wanted to know. You can probably see that there are variables that I could have used for more than one purpose. The reason I haven't is so that it is clear what a variable is.

Things to try. Take the above example and replace the first for loop with a call to a function called strlen(); This is an ANSI standard C function which returns the lenght in an int.

Make the y / n tester remain in the loop until y is pressed.

Have you got it to work ?

Next some simple maths and onto creating you own functions.

Part 4

Index


Last Updated 22 February 1998 by Nik Swain (email: nikswain@geocities.com)

This page hosted by Geocities Icon Get your own Free Home Page

1