The Parts of a C++ Program

C++ programs consist of objects, functions, variables, and other component parts. Most of this guide is devoted to explaining these parts in depth, but to get a sense of how a program fits together you must see a complete working program. To Chapter you learn

  • The parts of a C++ program.
  • How the parts work together.
  •  What a function is and what it does.

A Simple Program

Even the simple program HELLO.CPP from Chapter 1, "Getting Started," had many interesting parts. This section will review this program in more detail. Listing 2.1 reproduces the original version of HELLO.CPP for your convenience.

Listing 2.1. HELLO.CPP demonstrates the parts of a C++ program.

1: #include <iostream.h>

2:

3: int main()

4: {

5: cout << "Hello World!\n";

6: return 0;

7: }

 

Hello World!

On line 1, the file iostream.h is included in the file. The first character is the # symbol, which is a signal to the pre-processor. Each time you start your compiler, the pre-processor is run. The pre-processor reads through your source code, looking for lines that begin with the pound symbol (#), and acts on those lines before the compiler runs.

include is a pre-processor instruction that says, "What follows is a filename. Find that file and read it in right here." The angle brackets around the filename tell the pre-processor to look in all the usual places for this file. If your compiler is set up correctly, the angle brackets will cause the pre-processor to look for the file iostream.h in the directory that holds all the H files for your compiler. The file iostream.h (Input-Output-Stream) is used by cout, which assists with writing to the screen. The effect of line 1 is to include the file iostream.h into this program as if you had typed it in yourself.

New Term: The pre-processor runs before your compiler each time the compiler is invoked. The pre-processor translates any line that begins with a pound symbol (#) into a special command, getting your code file ready for the compiler.

Line 3 begins the actual program with a function named main(). Every C++ program has a main() function. In general, a function is a block of code that performs one or more actions. Usually functions are invoked or called by other functions, but main() is special. When your program starts, main() is called automatically.

main(), like all functions, must state what kind of value it will return. The return value type for main() in HELLO.CPP is void, which means that this function will not return any value at all. Returning values from functions is discussed in detail on Chapter 4, "Expressions and Statements."

All functions begin with an opening brace ({) and end with a closing brace (}). The braces for the main() function are on lines 4 and 7. Everything between the opening and closing braces is considered a part of the function.

The meat and potatoes of this program is on line 5. The object cout is used to print a message to the screen. We'll cover objects in general on Chapter 6, "Basic Classes," and cout and its related object cin in detail on Chapter 17, "The Preprocessor." These two objects, cout and cin, are used in C++ to print strings and values to the screen. A string is just a set of characters.

Here's how cout is used: type the word cout, followed by the output redirection operator (<<). Whatever follows the output redirection operator is written to the screen. If you want a string of characters written, be sure to enclose them in double quotes ("), as shown on line 5.

New Term: A text string is a series of printable characters.

The final two characters, \n, tell cout to put a new line after the words Hello World! This special code is explained in detail when cout is discussed on Chapter 17.

All ANSI-compliant programs declare main() to return an int. This value is "returned" to the operating system when your program completes. Some programmers signal an error by returning the value 1. In this guide, main() will always return 0.

The main() function ends on line 7 with the closing brace.

A Brief Look at cout

On Chapter 16, "Streams," you will see how to use cout to print data to the screen. For now, you can use cout without fully understanding how it works. To print a value to the screen, write the word cout, followed by the insertion operator (<<), which you create by typing the less-than character (<) twice. Even though this is two characters, C++ treats it as one.

Follow the insertion character with your data. Listing 2.2 illustrates how this is used. Type in the example exactly as written, except substitute your own name where you see Jesse Liberty (unless your name is Jesse Liberty, in which case leave it just the way it is; it's perfect-- but I'm still not splitting royalties!).

Listing 2.2.Using cout.

1: // Listing 2.2 using cout

2:

3: #include <iostream.h>

4: int main()

5: {

6: cout << "Hello there.\n";

7: cout << "Here is 5: " << 5 << "\n";

8: cout << "The manipulator endl writes a new line to the screen." << ?endl;

9: cout << "Here is a very big number:\t" << 70000 << endl;

10: cout << "Here is the sum of 8 and 5:\t" << 8+5 << endl;

11: cout << "Here's a fraction:\t\t" << (float) 5/8 << endl;

12: cout << "And a very very big number:\t" << (double) 7000 * 7000 << ?endl;

13: cout << "Don't forget to replace Jesse Liberty with your name...\n";

14: cout << "Jesse Liberty is a C++ programmer!\n";

15: return 0;

16: } 

 

Hello there.

Here is 5: 5

The manipulator endl writes a new line to the screen.

Here is a very big number: 70000

Here is the sum of 8 and 5: 13

Here's a fraction: 0.625

And a very very big number: 4.9e+07

Don't forget to replace Jesse Liberty with your name...

Jesse Liberty is a C++ programmer!

On line 3, the statement #include <iostream.h> causes the iostream.h file to be added to your source code. This is required if you use cout and its related functions.

On line 6 is the simplest use of cout, printing a string or series of characters. The symbol \n is a special formatting character. It tells cout to print a newline character to the screen.

Three values are passed to cout on line 7, and each value is separated by the insertion operator. The first value is the string "Here is 5: ". Note the space after the colon. The space is part of the string. Next, the value 5 is passed to the insertion operator and the newline character (always in double quotes or single quotes). This causes the line

Here is 5: 5

to be printed to the screen. Because there is no newline character after the first string, the next value is printed immediately afterwards. This is called concatenating the two values.

On line 8, an informative message is printed, and then the manipulator endl is used. The purpose of endl is to write a new line to the screen. (Other uses for endl are discussed on Chapter 16.)

On line 9, a new formatting character, \t, is introduced. This inserts a tab character and is used on lines 8-12 to line up the output. Line 9 shows that not only integers, but long integers as well can be printed. Line 10 demonstrates that cout will do simple addition. The value of 8+5 is passed to cout, but 13 is printed.

On line 11, the value 5/8 is inserted into cout. The term (float) tells cout that you want this value evaluated as a decimal equivalent, and so a fraction is printed. On line 12 the value 7000 * 7000 is given to cout, and the term (double) is used to tell cout that you want this to be printed using scientific notation. All of this will be explained on Chapter 3, "Variables and Constants," when data types are discussed.

On line 14, you substituted your name, and the output confirmed that you are indeed a C++ programmer. It must be true, because the computer said so!

Comments

When you are writing a program, it is always clear and self-evident what you are trying to do. Funny thing, though--a month later, when you return to the program, it can be quite confusing and unclear. I'm not sure how that confusion creeps into your program, but it always does.

To fight the onset of confusion, and to help others understand your code, you'll want to use comments. Comments are simply text that is ignored by the compiler, but that may inform the reader of what you are doing at any particular point in your program.

Types of Comments

C++ comments come in two flavours: the double-slash (//) comment, and the slash-star (/*) comment. The double-slash comment, which will be referred to as a C++-style comment, tells the compiler to ignore everything that follows this comment, until the end of the line.

The slash-star comment mark tells the compiler to ignore everything that follows until it finds a star-slash (*/) comment mark. These marks will be referred to as C-style comments. Every /* must be matched with a closing */.

As you might guess, C-style comments are used in the C language as well, but C++-style comments are not part of the official definition of C.

Many C++ programmers use the C++-style comment most of the time, and reserve C-style comments for blocking out large blocks of a program. You can include C++-style comments within a block "commented out" by C-style comments; everything, including the C++-style comments, is ignored between the C-style comment marks.

Using Comments

As a general rule, the overall program should have comments at the beginning, telling you what the program does. Each function should also have comments explaining what the function does and what values it returns. Finally, any statement in your program that is obscure or less than obvious should be commented as well.

Listing 2.3 demonstrates the use of comments, showing that they do not affect the processing of the program or its output.

Listing 2.3. HELP.CPP demonstrates comments.

1: #include <iostream.h>

2:

3: int main()

4: {

5: /* this is a comment

6: and it extends until the closing

7: star-slash comment mark */

8: cout << "Hello World!\n";

9: // this comment ends at the end of the line

10: cout << "That comment ended!\n";

11:

12: // double slash comments can be alone on a line

13: /* as can slash-star comments */

14: return 0;

15: }

 

Hello World!

That comment ended!

The comments on lines 5 through 7 are completely ignored by the compiler, as 
are the comments on lines 9, 12, and 13. The comment on line 9 ended with the 
end of the line, however, while the comments on lines 5 and 13 required a closing comment mark.