Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C For Dummies 2nd Ed 2004.pdf
Скачиваний:
43
Добавлен:
17.08.2013
Размер:
8.34 Mб
Скачать

Chapter 16

C the Loop, C the Loop++

In This Chapter

Incrementing variables with ++

Decrementing variables with --

Using other math operator shortcuts

Looping is a core part of programming, just as compromising your princi­ ples is central to getting ahead in politics. And, closely tied to looping is

a concept you have already been exposed to: incrementation, which I’m not certain is a real word, but it means to increment something.

Just as loops flip through various iterations, variables are incremented or decremented to help the computer keep track of things. In fact, the concepts of looping and incrementation are so closely linked that it was tough to write the preceding chapter about the for command while utterly avoiding the issue. The time has come for your full exposure to that ancient art and mysterious practice of incrementation.

The Art of Incrementation

When a for loop repeats something seven times, a variable somewhere gets incremented seven times. For example:

for(i=0;i<7;i=i+1)

This for statement sets up a loop that is repeated seven times, from i=0 and up by 1 seven times as long as the value of i is less than 7 (i<7).

If you find the concept of starting the loop at 0 strange, the following for state­ ment performs the same trick, working itself out, over and over, seven times:

for(i=1;i<=7;i=i+1)

202 Part III: Giving Your Programs the Ability to Run Amok

In this example, i increments from 1 up to 7. The C lords prefer to start loops with the counting variable at 0 because that’s where the computer itself starts counting internally. Either way, incrementing is central to the idea of looping.

Keep in mind that the for statement is merely a frame for a loop. It repeats a group of statements a given number of times. The for statement itself only controls the looping.

Cryptic C operator symbols, Volume I:

The inc operator (++)

The art of incrementation involves taking a variable and adding 1 to its value. So, no matter what the original value of the variable count, it’s 1 greater after this equation:

count=count+1;

Face it: This equation is an awkward thing to look at. Yet, no loop happens without it, which means that incrementing happens frequently in C programs. Even so, few C programmers use the preceding statement. Instead, they resort to a shortcut, the incrementation operator, which is two plus signs holding hands:

count++;

The incrementation operator, ++, works like other mathematical operators you may have seen in other horrid math chapters: the +, -, *, and / for addition, subtraction, multiplication, and division, respectively. The difference here is that ++ works without an equal sign. It just tells the compiler, “Yo! Add 1 to the value of this variable. Thank you. Thank you very much.” It’s quick and tidy, but a bit cryptic (which is why I didn’t throw it at you right away).

Yes, you can say “plus plus” in your head when you see ++ in a program.

Yes, that’s why C++ is called “See plus plus.” It’s also the punch line of the joke: C++ is “one more” than regular C.

You don’t need an equal sign when you use ++. Just stick it at the end of a variable and that variable is incremented by 1.

The equation i++ is the same as i=i+1.

Here we go:

var=3;

/* the variable var equals three */

var++;

/* Oops! var is incremented here */

 

/* From here on, var equals four */

Chapter 16: C the Loop, C the Loop++ 203

The ++ operator is used this way in a for statement:

for(i=0;i<7;i++)

This line means that variable i is incremented every iteration of the loop.

This area is where the C language begins to get truly cryptic. Given the separate pieces of a for loop, most knowledgeable humans can detect that i=1 means “i equals 1” and that i<7 means “i is less than 7,” and even that i=i+1 is “i equals i plus 1.” But toss i++ at them and they think “i plus plus? Weird.”

Another look at the LARDO.C program

Chapter 11 touches on the idea of incrementing a variable in a program. That program is LARDO.C, which I’m certain is near and dear to your heart and has impressed many a friend and family member. Unfortunately, now that you know the ++ thing, the program would really be an embarrassment if you showed it to a C guru. Seriously, all those gauche w=w+1 things need to be properly changed to w++ commands. Short. Sweet. Cryptic. It’s what computers are all about!

The following program is an update to the LARDO.C source code, which is probably still sitting on your hard drive somewhere. Load that old file into your editor and make the necessary changes so that the program looks like the source code listed here:

#include <stdio.h> #include <stdlib.h>

int main()

{

char weight[4]; int w;

printf(“Enter your weight:”); gets(weight); w=atoi(weight);

printf(“Here is what you weigh now: %i\n”,w); w++;

printf(“Your weight after the potatoes: %i\n”,w); w++;

printf(“Here you are after the mutton: %i\n”,w); w=w+8;

printf(“And your weight after dessert: %i pounds!\n”,w); printf(“Lardo!\n”);

return(0);

}

204 Part III: Giving Your Programs the Ability to Run Amok

Edit your source code. The only changes are to Lines 14 and 16.

Save the file to disk again, using the same name, because this program is so much more superior to the original. Then compile.

Fix any errors if you got ’em. Otherwise, the program runs the same as it did before. The only true difference? You took advantage of the incrementation operator, ++, and earned the clever wink of sophisticated C language pro­ grammers worldwide.

Notice that the w=w+8 statement wasn’t modified. The reason is that the vari­ able w is increased by 8, not just by 1. Yes, I have a shortcut for that, but you aren’t exposed to it until the end of this chapter.

The Mysterious Practice

of Decrementation

Loops don’t necessarily have to go forward. They can also count down, which is definitely more dramatic and required in some occupations — such as launching spacecraft and many other common things you find yourself doing every day.

Consider OLLYOLLY.C, a program that counts backward. And, that’s about all it’s good for:

#include <stdio.h>

int main()

{

int count;

for(count=10;count>0;count=count-1) printf(“%d\n”,count);

printf(“Ready or not, here I come!\n”); return(0);

}

Start off your editor with a new slate and carefully type this source code. The only strange stuff you encounter is in the for loop’s parentheses, which may look a little funky — but it’s counting backward! Will the loop work? Will the computer explode? Is Jane really cheating on Ralph? How can this be happening?