Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Microsoft CSharp Programming For The Absolute Beginner (2002) [eng]-1.pdf
Скачиваний:
46
Добавлен:
16.08.2013
Размер:
15.71 Mб
Скачать

Absolute Beginners. However, if you count the characters, you find that the word for starts at character 16! The reason for this anomaly is that humans usually begin counting with the number 1. Computers almost always begin counting with the value 0. This can trip you up if you’re not careful.

You can do much more with strings, and there are variations of the methods I have shown you. However, the real focus here is not to show you every method of the string object. Instead, I hope that you will see how you can investigate the string object (or any other object you might encounter) so that you can exploit its properties, methods, and events.

Using a For Loop

The branching behavior you learned in Chapter 2, “Branching and Operators: The Math Game,” is very important because it gives your programs the capability to make rudimentary choices. The other major way to control the flow of your programs is through looping behavior. Loops are code structures that allow parts of your program to repeat. There are a couple standard types of loops. One prominent type of looping structure repeats a code segment some specified number of times. This counting loop is called the for loop. To demonstrate the for loop, I’ll imitate a bureaucrat.

Examining The Bean Counter Program

Although many of my sample programs are pointless, this one takes special pride in looking as though it’s doing something important. The program featured in Figure 3.4 simply counts beans.

Figure 3.4: The bean counter uses a for loop to repeat behavior.

The program behind this code is reminiscent of a bureaucrat trying to look busier than he is. If you examine the output, you would expect there to be 11 different WriteLine calls, but when you examine the code, you see that there are only two! The for loop structure causes the two WriteLine calls to repeat.

using System;

namespace BeanCounter

{

///<summary>

///Repeats a simple task a number of times

///Demonstrates the basic for loop

///Andy Harris, 11/29/01

60

/// </summary> class Counter

{

static void Main(string[] args)

{

int beanNumber;

for (beanNumber = 1; beanNumber <= 10; beanNumber++){ Console.WriteLine("bean {0}", beanNumber);

} // end for

Console.WriteLine();

Console.WriteLine("press enter key to quit");

Console.ReadLine();

} // end main } // end class

}// end namespace

The only new part of this program is the line starting with for, which indicates the beginning of a for loop. Only three elements belong in the parentheses after for. These elements help to ensure that the loop will operate smoothly. The for line is followed by a set of braces containing one or more lines of code. The code inside the braces will repeat a certain number of times, based on the way the for loop is set up.

Creating a Sentry Variable

The part that says beanNumber = 1; establishes a special variable that will be used to control the loop. The value of this variable will control how long the loop continues. Because the variable is like a gatekeeper for the loop, it is frequently referred to as a sentry variable. For loops almost always use integers as sentry variables. It is important that I established the starting value of the variable at 1. As you will see shortly, you can start with other values, but most often your loop’s sentry variable will start at 0 or 1.

Checking for an Upper Limit

The next part of the for loop is a condition that checks whether the variable is past a limit. In the Bean Counter program, this section looks like beanNumber <= 10;. As long as the condition is true (in this case, as long as beanNumber is less than or equal to the value 10), the loop will continue. As soon as the condition is evaluated to false (because, for example, beanNumber is 11), the loop will stop, and the next line of code after the right brace (}) will execute.

Incrementing the Variable

The last part of the for line increments the sentry variable. Remember from Chapter 2 that the beanNumber++ statement is actually a shortcut for beanNumber = beanNumber + 1. The sentry variable must be incremented for the loop to exit.

Examining the Behavior of the For Loop

Even though I have explained the structure of the for loop statement, I recommend that you take advantage of the IDE’s terrific debugging mode so you will really understand what’s going on. Load or type the Bean Counter program in your editor, and use the F11 (function key F11) to run your program one line at a time. As you run your program, you will see the current line in your editor highlighted in yellow. Be sure that the debugging box at the bottom−left of the screen is set to Autos

61

(as I have done in Figure 3.5), and you’ll see the value of beanNumber, which starts at 0.

Figure 3.5: The highlight indicates the current line being executed, and the Autos window describes the value of the variables.

Press the F11 key repeatedly, and see what happens to the highlight indicating program control. Also watch what happens to the beanNumber variable. The first time through, the program sets the value of beanNumber to 1 and then checks whether beanNumber is less than or equal to 10. It is, so the code in the loop activates. After the WriteLine code happens, look at the output screen. (It is probably running, but you will not see it unless you call it to the foreground by clicking its icon in the task bar.) When the program reaches the right brace that ends the for loop, it goes back to the top of the loop. It increments the variable and checks the condition again. It still finds the condition true, so it continues executing the loop. Eventually, the value of beanNumber will be larger than 10, so the loop will exit.

Trick Learning how and when to use the debugging mode can save you hours of frustration. The worst kinds of bugs to fix are those that occur when the program is working almost correctly, but somewhere something is going wrong. The ability to step through the code one line at a time and examine the values of the variables in slow motion is invaluable. It’s also a great technique for making sure that you understand how program control is flowing, as you’re doing in this example.

Varying the For Loop’s Behavior

Several variations of this basic loop are used for different kinds of counting situations. You can set up for loops that skip over numbers, count by two, or count backwards. The basic design of the for statement is the same, but you can change the way the three parts of the for loop are written to change the way the loop acts.

62

The Fancy Beans Program

The Fancy Beans program demonstrates a few variations on the theme of the basic for loop. Take a look at the output of this program in Figure 3.6, then I’ll show you how the code works.

Figure 3.6: This bean counter can count by fives, backwards, and pulls the words out of a sentence one at a time.

Take a look at the code for the fancier bean counter, and I’ll explain the details:

using System;

namespace fancyBean

{

///<summary>

///Demonstrates a number of variations of the for loop

///Andy Harris, 11/29/01

///</summary>

class fancyBean

{

static void Main(string[] args)

{

int i;

string sentence = "Count those fancy beans";

//counting by fives Console.WriteLine("Counting by fives:"); for(i = 0; i <= 100; i += 5){

Console.Write(i + "\t"); } // end for loop Console.WriteLine(); Console.WriteLine();

//count backwards Console.WriteLine("Counting backwards:"); for(i = 10; i > 0; i−−){

Console.Write(i + "\t"); } // end for loop Console.WriteLine(); Console.WriteLine();

//demonstrate foreach loop Console.WriteLine("Getting words in a sentence"); foreach (string word in sentence.Split()){

Console.WriteLine(word);

63

Соседние файлы в предмете Программирование на C++