Debugging
You’ve done a program – compiled…
A bug is an error in a program.
Debugging is the process of finding and removing errors from a program.
(why called a bug?)
1945 - Grace Murray Hopper, working on the Mark II computer, a computer failure was traced to a moth that had become wedged between relay contacts. She taped the moth into the logbook – that was the first case of a bug being found.) (trick – grasshopper)
There are various types of errors that a program might have: compilation, execution, and logic errors.
I Compilation Errors: Errors caught by the compiler while it is translating your program into machine language before running it. Compilation errors caused by mistakes in the syntax of a statement are called syntax errors.
Examples:
a = (b + 1 / 3; // missing parenthesis)
x + 3 = 5; (expression on the left of an assignment statement)
x = 5 // missing semicolon
(for spelled fir)//fir(i=1; i< 5; i++) (misspelled)
Linker Errors – errors discovered in the second phase. Phase is handled by the linker – the program that connects your program with the standard libraries. If you use a library function, the compiler looks for it in the standard library during the link phase of copilation. If it doesn’t find the function (either it’s misspelled or doesn’t exist), error message.
Ex:
Cuot << num; //misspelled
II Execution Errors or run-time errors: Not caught by the compiler. Detected once the program is running. Ex. suppose that your program attempts to divide by a variable whose value is zero. The compiler will not object to the expression, but the computer will not be able to execute it. Your program will normally stop at the error and display and error message.
Execution errors are more serious than compiler errors and can cause your machine to hang or not give off error messages.
III Logic Errors
Hardest to catch. Each statement may be valid in C++ and acceptable to the compiler. The program may run without causing any execution error, but the answer may be wrong.
Ex. initializing a variable to 1 instead of 0, multiplying by 2 instead of 3, or using an incorrect formula. The mistake may be hard to find since it won’t generate an error. You have to catch this kind of error by testing the program on all possible sets of data.
Also, many statements that look like compilation errors are actually valid c++ statements and the compiler won’t think it’s an error:
Ex. x = = x+3;
Even if you meant to use the assignment operator.
Another example is previous program / 3.
Arithmetic Operators
Addition +
Subtraction
Multiplication *
Division / (is integer division if operators are integers)
Modulus % (remainder)
e![](data:image/png;base64,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LVuWL18uU9mmTZvJkyer2ozkFc5K7b29dOnSsGHDZCqrV68uf9s3efILYcJjjz2meANmIrIAADQSFxc3ZMgQmUo3N7eVK1equp3i4sWLCQkJMpVKbWQReUVyxPnz5xv1IAJJhw8fli8WkVHxBsxEZAEAaEScs2Ueo2NnWBIy6jE6JtB47+369et37twpU/n0008/99xz5o/4sG+//VayskiRIm3btlWjB3MQWQAAWtixY8eWLVtkKqtXr67IndPyJ3+rNPMXhm7fvj1mzBiZSgcHh48//tjM4fJ06NChc+fOSRb36tWrdOnSarRhDiILAEB1qampo0aNkiyeOXOmk5PqpyfJWRZ3d3fz53vef/99mSukhBdffNHf39/M4fL0wQcfyBfL/8/SEpEFAKC6efPmnT9/XqYyKChInLbV7sdOOrIEBgaaOdClS5cWLlwoU+no6Pjuu++aOVyejh49un37dsniXr16WeHeWzsiCwBAbTdv3vzoo48ki42aDDBZUlKSZIQyfyOLSCGpqakyld27d69Zs6aZwz0sIyNj8ODBksUlSpSYP3++4j0ogsgCAFDX7NmzJa+UadGixdNPP612P3aGy5uzs7NlKs3cyHLp0qV169ZJFo8ePdqcsR5FZCbJy7mFBQsWKP7sSaUQWQAAKrpx48aSJUski0eOHKlqM/dpdrnQnDlzZJ6jJDQ1MGesPH311Vfyt3gRmal///6K96AUIgsAQEUir8g8/08Qb+67deumdj855C8XMieyiLi2evVqyeLXXnvN5IEeZefOna+++qpkcceOHeXX7yyCyAIAUEtaWtrixYsliwcPHqzBhUI5JGdZKlSo4OnpafIoX3zxheQuFnd39+7du5s8UJ42bNjQv3//jIwMmeJnn3128+bNCj6CUQ1EFgCAWtavX3/t2jWZShFWhg4dqnY/ObKzs0NCQmQqzVwVknw0gdCzZ083NzdzxnqQ+ALfe++9adOmZWVlSY7+1VdfaZYXTWbt/QEA9GvVqlWSlR06dChfvryqzdx39uxZybUqc/be7tu378yZM5LFffr0MXmgXOLi4vr167dr1y6ZYgcHh3cMlBpdVUQWAIAqxAl7//79ksUvvPCCqs08SJu9t+vXr5esLF26dOvWrU0e6EErV66cNGnSzZs3ZYq9vLzWrVvXrl07RYbWAJEFAKCKL774QrLS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) .g., if the value of
is to be assigned to variable x, it is coded:
x = b + c - d * e / f;
Parentheses may be used. These are evaluated first. e.g.,
x = (b + c - d)* e / f; is evaluated as:
![](data:image/png;base64,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)
order of operations
( )
* / %
+ -
left to right
ex. z= p*r%q+w/x-y; Order of operations?
Z
|
=
|
P
|
*
|
R
|
%
|
Q
|
+
|
W
|
/
|
X
|
-
|
Y
|
;
|
|
6
|
|
1
|
|
2
|
|
4
|
|
3
|
|
5
|
|
|
Operator Precedence
Operator
|
Associativity
|
Type
|
( )
|
L R
|
parenthesis
|
++ – – + – !
|
R L
|
unary operators
|
* ? %
|
L R
|
multiplicative
|
+ –
|
L R
|
additive
|
<< >>
|
L R
|
insertion
|
< <= > >=
|
L R
|
relational
|
= = !=
|
L R
|
equality
|
&&
|
L R
|
and
|
||
|
L R
|
or
|
?:
|
R L
|
conditional
|
= += –= *= /= %=
|
R L
|
assignment
|
Exercise: For each of the following arithmetic expressions, construct the equivalent C++ expression.
___(a + b) / (c – d)_____________
____(a+b) / (c * c)________________
_____d – (a + b) / (4 * c)_____
______(b*b – 4*a*c) / (2 * a)___________
______a / (b + c / (d – a))_________
A Simple Program Using Stored Data and Arithmetic
// from Schaum's ex 1.26 p. 27
// Prints the sum, difference, etc. of given integers.
#include
using namespace std;
int main(){
int m = 6, n = 7;
cout << "The integers are " << m << " and " << n << endl;
cout << "Their sum is " << (m+n) << endl;
cout << "Their difference is " << (m-n) << endl;
cout << "Their product is " << (m*n) << endl;
cout << "Their quotient is " << (m/n) << endl;
cout << "Their remainder is " << (m%n) << endl << endl << endl;
system(“pause”);
return 0;
}
Trace this program.
The integers are 6 and 7
Their sum is 13
Their difference is -1
Their product is 42
Their quotient is 0
Their remainder is 6
Press any key to continue . . .
Assignment
c = c + 3; same as c +=3;
The += operation adds the value of the expression of the right to the value of the variable on the left and stores the result in the variable on the left.
In general, = op ; can be written as: op = ;
Examples:
c = 4; same as c = c 4;
c *= 5; same as c = c *5;
c /= 6; same as c = c /6;
Can we reverse the order of the double operator? e.g.: c = 4;
No. This simply is the same as the assignment c = 4;
Share with your friends: |