First Program in C++: Printing a Line of Text
First Program in C++ Printing a Line of Text
C++ uses notations that may appear strange to nonprogrammers. We now consider a simple program that prints a line of text (Fig. 2.1). This program illustrates several important features of the C++ language. We consider each line in detail.
Figure 2.1. Text-printing program.
(This item is displayed on page 38 in the print version)
1 // Fig. 2.1: fig02_01.cpp 2 // Text-printing program. 3 #include // allows program to output data to the screen 4 5 // function main begins program execution 6 int main() 7 { 8 std::cout << "Welcome to C++! "; // display message 9 10 return 0; // indicate that program ended successfully 11 12 } // end function main
|
Lines 1 and 2
// Fig. 2.1: fig02_01.cpp // Text-printing program.
each begin with //, indicating that the remainder of each line is a comment. Programmers insert comments to document programs and also help people read and understand them. Comments do not cause the computer to perform any action when the program is runthey are ignored by the C++ compiler and do not cause any machine-language object code to be generated. The comment Text-printing program describes the purpose of the program. A comment beginning with // is called a single-line comment because it terminates at the end of the current line. [Note: C++ programmers also may use C's style in which a commentpossibly containing many linesbegins with the pair of characters /* and ends with */.]
Good Programming Practice 2.1
Every program should begin with a comment that describes the purpose of the program, author, date and time. (We are not showing the author, date and time in this book's programs because this information would be redundant.) |
Line 3
#include // allows program to output data to the screen
is a preprocessor directive, which is a message to the C++ preprocessor (introduced in Section 1.14). Lines that begin with # are processed by the preprocessor before the program is compiled. This line notifies the preprocessor to include in the program the contents of the input/output stream header file . This file must be included for any program that outputs data to the screen or inputs data from the keyboard using C++-style stream input/output. The program in Fig. 2.1 outputs data to the screen, as we will soon see. We discuss header files in more detail in Chapter 6 and explain the contents of iostream in Chapter 15.
Common Programming Error 2.1
Forgetting to include the header file in a program that inputs data from the keyboard or outputs data to the screen causes the compiler to issue an error message, because the compiler cannot recognize references to the stream components (e.g., cout). |
Line 4 is simply a blank line. Programmers use blank lines, space characters and tab characters (i.e., "tabs") to make programs easier to read. Together, these characters are known as white space. White-space characters are normally ignored by the compiler. In this chapter and several that follow, we discuss conventions for using white-space characters to enhance program readability.
Good Programming Practice 2.2
Use blank lines and space characters to enhance program readability. |
Line 5
// function main begins program execution
is another single-line comment indicating that program execution begins at the next line.
Line 6
int main()
is a part of every C++ program. The parentheses after main indicate that main is a program building block called a function. C++ programs typically consist of one or more functions and classes (as you will learn in Chapter 3). Exactly one function in every program must be main. Figure 2.1 contains only one function. C++ programs begin executing at function main, even if main is not the first function in the program. The keyword int to the left of main indicates that main "returns" an integer (whole number) value. A keyword is a word in code that is reserved by C++ for a specific use. The complete list of C++ keywords can be found in Fig. 4.3. We will explain what it means for a function to "return a value" when we demonstrate how to create your own functions in Section 3.5 and when we study functions in greater depth in Chapter 6. For now, simply include the keyword int to the left of main in each of your programs.
The left brace, {, (line 7) must begin the body of every function. A corresponding right brace, }, (line 12) must end each function's body. Line 8
std::cout << "Welcome to C++! "; // display message
instructs the computer to perform an actionnamely, to print the string of characters contained between the double quotation marks. A string is sometimes called a character string, a message or a string literal. We refer to characters between double quotation marks simply as strings. White-space characters in strings are not ignored by the compiler.
The entire line 8, including std::cout, the << operator, the string "Welcome to C++! " and the semicolon (;), is called a statement. Every C++ statement must end with a semicolon (also known as the statement terminator). Preprocessor directives (like #include) do not end with a semicolon. Output and input in C++ are accomplished with streams of characters. Thus, when the preceding statement is executed, it sends the stream of characters Welcome to C++! to the standard output stream objectstd::coutwhich is normally "connected" to the screen. We discuss std::cout's many features in detail in Chapter 15, Stream Input/Output.
Notice that we placed std:: before cout. This is required when we use names that we've brought into the program by the preprocessor directive #include . The notation std::cout specifies that we are using a name, in this case cout, that belongs to "namespace" std. The names cin (the standard input stream) and cerr (the standard error stream)introduced in Chapter 1also belong to namespace std. Namespaces are an advanced C++ feature that we discuss in depth in Chapter 24, Other Topics. For now, you should simply remember to include std:: before each mention of cout, cin and cerr in a program. This can be cumbersomein Fig. 2.13, we introduce the using declaration, which will enable us to omit std:: before each use of a name in the std namespace.
The << operator is referred to as the stream insertion operator. When this program executes, the value to the right of the operator, the right operand, is inserted in the output stream. Notice that the operator points in the direction of where the data goes. The characters of the right operand normally print exactly as they appear between the double quotes. Notice, however, that the characters are not printed on the screen. The backslash () is called an escape character. It indicates that a "special" character is to be output. When a backslash is encountered in a string of characters, the next character is combined with the backslash to form an escape sequence. The escape sequence means newline. It causes the cursor (i.e., the current screen-position indicator) to move to the beginning of the next line on the screen. Some other common escape sequences are listed in Fig. 2.2.
Escape sequence |
Description |
---|---|
|
Newline. Position the screen cursor to the beginning of the next line. |
|
Horizontal tab. Move the screen cursor to the next tab stop. |
|
Carriage return. Position the screen cursor to the beginning of the current line; do not advance to the next line. |
a |
Alert. Sound the system bell. |
\ |
Backslash. Used to print a backslash character. |
' |
Single quote. Use to print a single quote character. |
" |
Double quote. Used to print a double quote character. |
Common Programming Error 2.2
Omitting the semicolon at the end of a C++ statement is a syntax error. (Again, preprocessor directives do not end in a semicolon.) The syntax of a programming language specifies the rules for creating a proper program in that language. A syntax error occurs when the compiler encounters code that violates C++'s language rules (i.e., its syntax). The compiler normally issues an error message to help the programmer locate and fix the incorrect code. Syntax errors are also called compiler errors, compile-time errors or compilation errors, because the compiler detects them during the compilation phase. You will be unable to execute your program until you correct all the syntax errors in it. As you will see, some compilation errors are not syntax errors. |
Line 10
return 0; // indicate that program ended successfully
is one of several means we will use to exit a function. When the return statement is used at the end of main, as shown here, the value 0 indicates that the program has terminated successfully. In Chapter 6 we discuss functions in detail, and the reasons for including this statement will become clear. For now, simply include this statement in each program, or the compiler may produce a warning on some systems. The right brace, }, (line 12) indicates the end of function main.
Good Programming Practice 2.3
Many programmers make the last character printed by a function a newline ( ). This ensures that the function will leave the screen cursor positioned at the beginning of a new line. Conventions of this nature encourage software reusabilitya key goal in software development. |
Good Programming Practice 2.4
Indent the entire body of each function one level within the braces that delimit the body of the function. This makes a program's functional structure stand out and helps make the program easier to read. |
Good Programming Practice 2.5
Set a convention for the size of indent you prefer, then apply it uniformly. The tab key may be used to create indents, but tab stops may vary. We recommend using either 1/4-inch tab stops or (preferably) three spaces to form a level of indent. |