aboutsummaryrefslogtreecommitdiff
path: root/Ch 5 Debugging Project/Ch 5 Debugging Project.cpp
blob: 7996b00697f224a9f52fdf722b163a416985b4b7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
* Morgan Cyrus
* CST116 01P
* Lab0/CH5 Debugging
*/

/********************************************************************
* File: Chap_5_Debugging.cpp
*
* General Instructions: Complete each step before proceeding to the
* next.
*
* Debugging Exercise 1
*
* 1) On the lines indicated in the code below, insert a breakpoint.
* done
* 2) With the program not in debugging mode, start debugging by
*    using the "Step Into" tool.
* done
* 3) Click on the Watch1 tab.
* done
* 4) With the cursor in the Name column type money and press enter.
*    This adds a programmer defined watch on the variable money.
* done
* 5) Step Into until you reach the first cout statement. With
*    the current line being that cout statement, Step Into again.
* done
* 6) What happened? Where are we now? What is all of this nasty
*    looking code?
* We are on line 84. the value of 'money' is about to be printed (123.449997 is the assigned value, though it will print 123.45).
* That said, I don't see any assembly code displayed. 
* 
* 7) Remember, stepping into a predefined routine takes you to the
*    code for that routine. If the debugger can't find the code it
*    will show the assembly code for that routine.
* done, though I did not see the assembly code pop up anywhere.
* 
* 8) How do we get out of this mess? Use the "Step Out" tool.
* done, though upon selecting the step out tool (Shift + F11) the code appears to finish running at this point. 
* 9) In Visual Studio you will be taken back to the same cout
*    statement. Use the Step Over tool to take you to the next
*    line.
* done
* 10) Step over the next cout statement. Now look at the console
*     window. What was printed?
* The following was printed:
* 
* You have $123.45
* Enter percent raise:
* 
* This isn't exactly what I expected though.. The Step Out tool doesn't seem to be stepping back and instead goes to the next cout.
* 
* 11) Select Stop Debugging either from the Debug menu or from your
*     toolbar.
*done
*/

/* 
* Debugging Exercise 2
*
* 1) With the program stopped, run to Breakpoint 1 by selecting
*    the Start Debugging menu option, toolbar icon or press F5.
* done
* 
* 2) Step over the cout.
* done
* 
* 3) Step over the cin. Notice that you can now enter a value.
* done
* 
* 4) Enter the value .1 and press enter.
* done
* 
* 5) Notice that the current line of execution is now at the
*    calculation.
* done
* 
* 6) Look at your watch. What is the value of money?
* 123.449997
* 
* 7) Hover your mouse pointer over raise. What is its value?
* .100000001
* 
* 8) Step over the calculation. Notice the watch on money is now
*    red. This designates that the variable just changed its value.
* 
* 9) What happened to our money? I thought a raise was supposed
*    to increase our money? Stop debugging and fix the calculation.
* It asks for a % raise, though we entered .1
* It then multiplies by that number which shows us one tenth of the value of our money, rather than applying a 10% raise.
* 
*/

/* Debugging Exercise 3
*
* 1) Choose Disable All Breakpoints from the Debug menu.
* done
* 
* 2) With the cursor on the calculation, Run to Cursor. Remember
*    that the Run to Cursor tool can be accessed by right clicking
*    in the code window and choosing the correct menu option.
* done
* 
* 3) Step over the calculation and verify that this time
*    you end up with more money than before the raise.
* done; verified... $129.622
* 
* 4) Stop debugging. Now run the entire program by choosing the menu
*    option Start Without Debugging.
* done
*
********************************************************************/

#include <iostream>
#include <iomanip>
using std::cout;
using std::cin;
using std::endl;

int main()
{
    float money = 123.45F;
    float raise;

    cout << "You have $";
    cout << money << endl;

    // Breakpoint 1
    // Put a breakpoint on the following line
    cout << "Enter percent raise as a whole number: ";
    cin >> raise;

    cout << "You have entered: " << raise << "%\n";
    raise = 1 + (raise / 100);

    money = money * raise;

    cout << "After your raise you have $";
    cout << money << endl;

    return 0;
}