Tutorial 3
Completing the Problem-Solving Process and Getting Started with C++
This tutorial picks up in the problem-solving process at the point where the algorithm is converted into actual program code. In order to do this the programmer must understand the rules and syntax of the language. The beginning syntax of a simple C++ program is introduced, as well as C++ compiler implementation of the final program.
After completing the tutorial, the student will be able to:
Code an algorithm into a program
Desk-check a program
Evaluate and modify a program
Understand the components of a C++ program
Differentiate between source code, object code, and executable code
Open a C++ source file
Save, compile, build, and execute a C++ program
Reviewing and continuing the problem-solving process
In Tutorial 2 the problem-solving process was taken up to step 3, which is desk-checking the algorithm. At this point the reviewed algorithm is ready to be converted into actual program code. Once the algorithm has been converted, the problem-solving process will continue with the program code being desk-checked, and then the program will be evaluated and modified if necessary.
Understanding variables and writing code from the algorithm
In the next tutorial variables will be covered in great detail, however when coding the program from the IPO chart you will want to assign names, data types, and initial values the IPO items. While most C++ programmers use lower case for names, if names are more than one word then the beginning of the second word is capitalized to stand out. Remember that in most programming languages that variable names can consist of letters, numbers, and maybe an underscore, however no punctuation characters or spaces. The actual rules for naming variables in C++ will be covered in the next tutorial.
After naming the item, a data type must be chosen. The data type specifies the type of data that the item is permitted to store (for example, whether a number would have a decimal in it or be an integer). While the actual data types that C++ permits will be covered at a later time, in this tutorial we will learn that the float type will contain numbers with decimals. Therefore the only remaining step is to assign the variable an initial value, which is commonly called initializing the variable. As you will learn in the next tutorial, items declared using the float data type typically are initialized to zero using the value 0.0.
C++ syntax for declaring a variable
Remember that there are three parts to declaring a variable in C++. First determine the name of the variable, then the type, and finally assign an initial value to it. The first item coded is the data type, which is set using the C++ keyword that corresponds to the data type. In our example this will be float. Secondly we state the variable name as discussed previously. And finally we assign as initial value to the variable after the equal sign. Also remember that in C++ the variable declaration ends with a semicolon. The entire syntax would look like the following:
datatype variableName = initialValue;
An example could be:
float length = 0.0;
Basic input and output statements
In C++, streams are used to perform standard input and output operations. The standard output stream is called cout, which refers to the monitor. On the other hand, the standard input stream is called cin, which refers to the keyboard. When using cout, the insertion operator (<<) is used to separate the different data items in which you would like to display. For example, the following statement would display Hello to the screen:
cout << "Hello";
While the cout statement uses the insertion operator (<<), the cin statement uses the extraction operator (>>). For example, the following statement would use the cin stream to allow the user to enter a length:
cin >> length;
Note that by grouping together a cout and cin statement, the user can be prompted with a very specific message, and then enter the data into a variable specified by the programmer. For example, the following statements are used in conjunction to prompt the user for their age and place the value entered into the variable age:
cout << "Please enter your age in years (example: 21):";
cin >> age;
One additional item that could be used to better format your output would be a stream manipulator. A stream manipulator allows the program to manipulate, or manage, the input and output stream characters in some way. When outputting information to the computer screen, you could use the endl stream manipulator to advance the cursor to the next line on the screen (therefore creating a carriage return and line feed on the screen). An example where you would like two different lines of text printed on separate lines would be as follows:
cout << "Line One" << endl;
cout << "Line Two" << endl;
Desk-checking the program
Even though it appears that after the program has been coded from the algorithm you are ready to execute it and evaluate, however you can save yourself many hours of grief by taking the time to desk-check the program. Just like with the algorithm a sample set of data should be used (you could use the same one), and you should step through each program instruction similar to the way the computer will when the program is executed. Then once the program has been executed, you may compare the results to that of the desk-check for accuracy.
Evaluating and modifying the program
Once the program is ready to be executed, it must be thoroughly tested to make sure it produces correct results. If for any reason the program produces different results than the desk-check, the program should be debugged. Debugging refers to the process of locating and removing any errors, commonly called bugs, in a program. Program errors may be one of two types: syntax errors or logic errors. Syntax errors occur when you violate the rules of the language (the syntax of the language). For example, grammatical errors such as misspellings and incorrect punctuation are considered syntax errors and are relatively easy to fix compared to logic errors. Logic errors occur when the computer does what you told it to do vs. what you meant for it to do. For example, if you wished to add two items together you would use the plus sign (+), however if you accidentally hit the asterisk (*) then the two items would be multiplied together. While this would not be what you intended to occur, it would be syntactically correct and would produce inaccurate results. It would then be up to you as the programmer to locate and fix the problem (debug the program).
Origins of C++
C++ evolved from the procedure-oriented C programming language, which was developed in 1972 at Bell Laboratories by Dennis Ritchie. In 1985, Bjarne Stroustrup added object-oriented features to the C language. This enhanced version of the C language was named C++. It is important to understand that C++ is a superset of C, which means that for the most part everything available in C is available in C++. Therefore you could use C++ as a procedural-oriented language, as well as an object-oriented language.
IDE
To create and execute a C++ program, you need to access to a text editor and a C++ compiler. Both of these are combined in Microsoft Visual C++ 6.0 into what is called IDE or Integrated Development Environment. By having these two items integrated vs. separate, there is a great deal of time saved in the development, as well as the debugging part of the programming process.
Source code vs. Object code
In Microsoft Visual C++ 6.0 the text editor is used to enter the C++ program itself, commonly called the source code. You will then save the source code on the computer using the filename extension of .cpp (which stands for C plus plus). This file containing the original program (source code) will be referred to as the source file.
In order for the computer to understand your program it must first be converted to machine language (remember from the previous tutorials that this is the only thing the computer understands). In order for the computer to convert the source code to machine language it needs a compiler. The compiler will perform this conversion. Once you compile your program (source code), the outcome of this step is a set of code called the object code. The object code will be saved in a file with the same filename as the source code, except the extension will be .obj instead of .cpp. The file containing the object code will be referred to as the object file.
After the compiler creates the object file, another program called a linker should be invoked. The linker combines the object file with other machine code necessary for the C++ program to run correctly. The linker will produce an executable file, which is the code necessary to execute your program without compiling it again. The executable file will have the same name as the source and object files, except the extension for it will be .exe.
Starting to program in C++
Before creating a C++ program, you need to start C++. The instructions for starting C++ depend upon the system you are using. The textbook shows you how to start Microsoft Visual C++ 6.0 Introductory Edition. If you are using a different version of C++, you will need to talk with your instructor about the necessary steps to start your particular version. See page 92 for the beginning of how to start Microsoft Visual C++ 6.0 and how to open an existing partially completed program (note that this program is included in the student files that should be made available to you by your instructor).
Basic structure of a C++ program
The basic structure of a simple C++ program consists of the following:
Documentation about the program
#include directive(s)
main function
Every program should have internal documentation at the beginning identifying important information about the program, such as the name of the program, author, date, filename where the program is saved, limitations of the program, etc. This information can save the programmer a great deal of time in the future when referencing the program.
The #include directive is a special instruction for the C++ compiler that tells the compiler to include the contents of another file. Files that are included in programs are called include files or header files. We will be creating our own header files in a later tutorial. The #include directive provides a convenient way to merge the source code from one file with the source code in another file, without having to retype the code. In C++, the iostream.h header file contains the instructions (source code) needed to handle input and output operations (such as cin and cout).
Functions will be covered in great detail in later tutorials, however each C++ program has a primary function called main. This is established with what is called a function header. A function header begins with the type of function (we will cover more on this later) followed by main (). After the function header the function code is enclosed in braces {}, marking the beginning and ending of the code. Within this function you will begin to code the program as developed through the problem-solving process.
Note: When keying in a C++ program please note that C++ is a case sensitive language. For example, by capitalizing the I in the #include directive you will cause a syntax error, because C++ is expecting the I to be lower case.
Executing a C++ program
Beginning of page 98 of your textbook the author begins the process of compiling, building, debugging, executing, printing, etc. a C++ program. Please follow along with these examples on your computer.
Discussion Topics/Additional Activities
(Optional unless assigned)Technical Notes
Note: If hard drive space is a consideration and you choose not to perform a complete installation, please test
the exercises in each tutorial thoroughly to ensure that the students will not encounter any difficulties in
performing their assignments. By doing this well in advance, you will be able make any necessary adjustments
to the installation and/or your lecture.
Note: Once you have downloaded and expanded the student files, instead of copying them to each
workstation you may consider making a set of disks that contain the information. This way each
student will have their own copy of the files and you will not have to worry about the files being
modified at each workstation (and you/someone having to constantly update/refresh them).
You will need to experiment to know how many student files for each tutorial will fit on each disk.
1. b Code the algorithm into a program 9. a >>
2. d syntax 10. b cin >> currentPay;
3. c float hourlyPay = 0.0; 11. b <<
4. c semicolon 12. c endl
5. c streams 13. a evaluate and modify the program
6. b cout 14. c debugging
7. a cin 15. d a syntax error
8. c cout << "Hello"; 16. c a logic error
Solutions to Concept Lesson Exercises
IPO Chart Information |
C++ Instructions |
Input first number second number Processing Output sum Algorithm
|
float num1 = 0.0; float num2 = 0.0;
float sum = 0.0;
cout << "Enter first number: "; cin >> num1; cout << "Enter second number: "; cin >> num2; sum = num1 + num2;
cout << "The sum is " << sum << endl; |
2.
num1 |
num2 |
sum |
0.0 3 0.0 50.5 |
0.0 5 0.0 31.3 |
0.0 8 0.0 81.8 |
3. Added instructions are shaded in the IPO chart.
IPO Chart Information |
C++ Instructions |
Input current weekly pay raise rate Processing weekly raise Output new weekly pay Algorithm
|
float currentPay = 0.0; float rate = 0.0;
float raise = 0.0;
float newPay = 0.0;
cout << "Enter current weekly pay: "; cin >> currentPay; cout << "Enter raise rate: "; cin >> rate; raise = currentPay * rate;
newPay = currentPay + raise;
cout << "New weekly pay is " << newPay << endl; |
4.
currentPay |
rate |
raise |
newPay |
0.0 250 0.0 100 |
0.0 .03 0.0 .10 |
0.0 7.50 0.0 10 |
0.0 257.50 0.0 110 |
5. Added instructions are shaded in the IPO chart. (Answers may vary.)
a.
IPO Chart Information |
C++ Instructions |
Input first number second number third number Processing Output sum Algorithm
|
int num1 = 0; int num2 = 0; int num3 = 0;
int sum = 0;
cout << "First number: "; cin >> num1; cout << "Second number: "; cin >> num2; cout << "Third number: "; cin >> num3; sum = num1 + num2 + num3;
cout << "Sum: " << sum << endl; |
b.
num1 |
num2 |
num3 |
sum |
0 25 0 10 |
0 76 0 15 |
0 33 0 20 |
0 134 0 45 |
6.
a. Results of desk-checking the original program.
original |
rate |
discount |
sale |
0.0 100 |
0.0 .25 |
0.0 |
0.0 |
b. Changes made to the original program are shaded in the IPO chart.
IPO Chart Information |
C++ Instructions |
Input original price discount rate Processing discount Output sale price Algorithm
|
float original = 0.0; float rate = 0.0;
float discount = 0.0;
float sale = 0.0;
cout << "Original price: "; cin >> original; cout << "Discount rate: "; cin >> rate discount = original * rate;
sale = original - discount;
cout << "Sales price: " << sale << endl; |
Results of desk-checking the corrected program.
original |
rate |
discount |
sale |
0.0 100 |
0.0 .25 |
0.0 25 |
0.0 75 |
Solutions to Application Lesson Exercises
1.
//T3AppE01.cpp - calculates and displays the sum of two numbers #include <iostream> using namespace std; int main() { //declare variables float num1 = 0.0; float num2 = 0.0; float sum = 0.0;
//enter input items cout << "Enter first number: "; cin >> num1; cout << "Enter second number: "; cin >> num2; //calculate sum sum = num1 + num2; //display output item cout << "The sum is " << sum << endl; return 0; } //end of main function |
2.
//T3AppE02.cpp - calculates and displays the new weekly pay #include <iostream> using namespace std; int main() { //declare variables float currentPay = 0.0; float rate = 0.0; float raise = 0.0; float newPay = 0.0; //enter input items cout << "Enter current weekly pay: "; cin >> currentPay; cout << "Enter raise rate: "; cin >> rate; //calculate raise and new pay raise = currentPay * rate; newPay = currentPay + raise; //display output item cout << "New weekly pay is " << newPay << endl; return 0; } //end of main function |
3.
//T3AppE03.cpp - calculates and displays a commission amount #include <iostream> using namespace std; int main() { ///declare variables float sales = 0.0; float rate = 0.0; float commission = 0.0;
//enter input items cout << "Enter the sales: "; cin >> sales; cout << "Enter the commission rate: "; cin >> rate; //calculate commission commission = sales * rate; //display commission cout << "Your commission is $" << commission << endl; return 0; } //end of main function |
sales |
rate |
commission |
0.0 2000 0.0 5000 |
0.0 .10 0.0 .06 |
0.0 200 0.0 300 |
4.
//T3AppE04.cpp - calculates and displays the ending balance #include <iostream> using namespace std; int main() { //declare variables float begBal = 0.0; float deposits = 0.0; float withdrawals = 0.0; float endBal = 0.0; //enter input items cout << "Beginning balance: "; cin >> begBal; cout << "Deposits: "; cin >> deposits; cout << "Withdrawals: "; cin >> withdrawals; //calculate ending balance endBal = begBal + deposits - withdrawals; //display ending balance cout << "Ending balance: " << endBal << endl; return 0; } //end of main function |
begBal |
deposits |
withdrawals |
endBal |
0.0 2000 0.0 500 |
0.0 775 0.0 100 |
0.0 1200 0.0 610 |
0.0 1575 0.0 -10 |
5.
//T3AppE05.cpp - calculates and displays the average #include <iostream> using namespace std; int main() { //declare variables float num1 = 0.0; float num2 = 0.0; float num3 = 0.0; float avg = 0.0; //enter input items cout << "Number 1: "; cin >> num1; cout << "Number 2: "; cin >> num2; cout << "Number 3: "; cin >> num3; //calculate average avg = (num1 + num2 + num3) / 3; //display average cout << "Average: " << avg << endl; return 0; } //end of main function |
num1 |
num2 |
num3 |
avg |
0.0 25 0.0 10 |
0.0 76 0.0 15 |
0.0 33 0.0 20 |
0.0 44.6667 0.0 15 |
6. Each of the three ways displays the identical message. The cout stream will essentially be used in
conjunction with the insertion operator (<<) and will concatenate what is to be printed until the endl stream
manipulator is encountered.
7.
//T3AppE07.cpp - calculates and displays the discount and new price #include <iostream> using namespace std; int main() { //declare variables float original = 0.0; float rate = 0.0; float discount = 0.0; float sale = 0.0; //enter input items cout << "Original price: "; cin >> original; cout << "Discount rate: "; cin >> rate; //calculate discount and new price discount = original * rate; sale = original - discount; //display discount and new price cout << "The sales discount is: " << discount << endl; cout << "The new sales price is: " << sale << endl; return 0; } //end of main function |
Results of desk-checking the original program
original |
Rate |
discount |
sale |
0.0 100 |
0.0 .25 |
0.0 |
0.0 |
Results of desk-checking the corrected program
original |
Rate |
discount |
sale |
0.0 100 0.0 50 |
0.0 .25 0.0 .1 |
0.0 25 0.0 5 |
0.0 75 0.0 45 |