A First Book of C++ Chapter 3 Assignment and Interactive Input Objectives • In this chapter, you will learn about: – Assignment Operators – Formatted Output – Mathematical Library Functions – Interactive Keyboard Input – Symbolic Constants – Common Programming Errors – Errors, Testing, and Debugging A First Book of C++ 4th Edition 2 Assignment Operators • Basic assignment operator – Format: variable = expression; – Computes value of expression on right of = sign, assigns it to variable on left side of = sign • If not initialized in a declaration statement, a variable should be assigned a value before used in any computation • Variables can only store one value at a time – Subsequent assignment statements will overwrite previously assigned values A First Book of C++ 4th Edition 3 Assignment Operators (cont'd.) • Operand to right of = sign can be: – A constant – A variable – A valid C++ expression • Operand to left of = sign must be a variable • If operand on right side is an expression: – All variables in expression must have a value to get a valid result from the assignment A First Book of C++ 4th Edition 4 Assignment Operators (cont'd.) • Expression: combination of constants and variables that can be evaluated – Examples: • sum = 3 + 7; • diff = 15 –6; • product = .05 * 14.6; • tally = count + 1; • newtotal = 18.3 + total; • average = sum / items; • slope = (y2 – y1) / (x2 – x1); A First Book of C++ 4th Edition 5 Assignment Operators (cont'd.) A First Book of C++ 4th Edition 6 Coercion • Value on right side of a C++ expression is converted to data type of variable on the left side • Example: – If temp is an integer variable, the assignment temp = 25.89; causes integer value 25 to be stored in integer variable temp A First Book of C++ 4th Edition 7 Assignment Variations • sum = sum + 10; is a valid C++ expression – The value of sum + 10 is stored in variable sum – Not a valid algebra equation A First Book of C++ 4th Edition 8 Assignment Variations (cont'd.) A First Book of C++ 4th Edition 9 Assignment Variations (cont'd.) A First Book of C++ 4th Edition 10 Assignment Variations (cont'd.) • Assignment expressions such as: sum = sum + 25; can be written by using the following shortcut operators: += -= *= /= %= • Example: sum = sum + 10; can be written as: sum += 10; A First Book of C++ 4th Edition 11 Accumulating • The following statements add the numbers 96, 70, 85, and 60 in calculator fashion: A First Book of C++ 4th Edition 12 Accumulating (cont'd.) A First Book of C++ 4th Edition 13 Accumulating (cont'd.) A First Book of C++ 4th Edition 14 Counting • Has the form: variable = variable + fixedNumber; – Each time statement is executed, value of variable is increased by a fixed amount • Increment operators (++), (--) – Unary operator for special case when variable is increased or decreased by 1 – Using the increment operator, the expression: variable = variable + 1; can be replaced by either: ++variable; or variable++; A First Book of C++ 4th Edition 15 Counting (cont'd.) • Examples of counting statements: i= i + 1; n = n + 1; count = count + 1; j = j + 2; m = m + 2; kk = kk + 3; A First Book of C++ 4th Edition 16 Counting (cont'd.) • Examples of the increment operator: A First Book of C++ 4th Edition 17 Counting (cont'd.) A First Book of C++ 4th Edition 18 Counting (cont'd.) • Prefix increment operator: the ++ or -- operator appears before a variable ̶ The expression k = ++n performs two actions: n = n + 1; // increment n first k = n; // assign n’s value to k • Postfix increment operator: the ++ or -- operator appears after a variable ̶ The expression k = n++ works differently: k = n; // assign n’s value to k n = n + 1; // and then increment n A First Book of C++ 4th Edition 19 Formatted Output • A program must present results attractively • Field width manipulators: control format of numbers displayed by cout – Manipulators included in the output stream A First Book of C++ 4th Edition 20 Formatted Output (cont'd.) A First Book of C++ 4th Edition 21 A First Book of C++ 4th Edition 22 The setiosflags() Manipulator • Field justification manipulator • Example: cout << “|” << setw(10) << setiosflags(ios::left) << 142 << “|”; A First Book of C++ 4th Edition 23 Hexadecimal and Octal I/O • oct and hex manipulators are used for conversions to octal and hexadecimal • Display of integer values in one of three possible numbering systems (decimal, octal, and hexadecimal) doesn’t affect how the number is stored in a computer – All numbers are stored by using the computer’s internal codes A First Book of C++ 4th Edition 24 Hexadecimal and Octal I/O (cont'd.) A First Book of C++ 4th Edition 25 Hexadecimal and Octal I/O (cont'd.) A First Book of C++ 4th Edition 26 Hexadecimal and Octal I/O (cont'd.) A First Book of C++ 4th Edition 27 Relationship between Input, Storage, and Display of Integers A First Book of C++ 4th Edition 28 Hexadecimal and Octal I/O (cont'd.) A First Book of C++ 4th Edition 29 Mathematical Library Functions • Standard preprogrammed functions that can be included in a program – Example: sqrt(number) calculates the square root of number • Table 3.5 lists more commonly used mathematical functions provided in C++ – To access these functions in a program, the header file cmath must be used – Format: #include <cmath> <- no semicolon A First Book of C++ 4th Edition 30 Mathematical Library Functions (cont'd.) • Before using a C++ mathematical function, the programmer must know: – Name of the desired mathematical function – What the function does – Type of data required by the function – Data type of the result returned by the function A First Book of C++ 4th Edition 31 Mathematical Library Functions (cont'd.) A First Book of C++ 4th Edition 32 Mathematical Library Functions (cont'd.) A First Book of C++ 4th Edition 33 Mathematical Library Functions (cont'd.) A First Book of C++ 4th Edition 34 Mathematical Library Functions (cont'd.) A First Book of C++ 4th Edition 35 Casts • Cast: forces conversion of a value to another type – Two versions: compile-time and runtime • Compile-time cast: unary operator – Syntax: dataType (expression) – expression converted to data type of dataType • Run-time cast: requested conversion checked at runtime, applied if valid – Syntax: staticCast<dataType> (expression) – expression converted to data type dataType A First Book of C++ 4th Edition 36 Interactive Keyboard Input • If a program only executes once, data can be included directly in the program – If data changes, program must be rewritten – Capability needed to enter different data • cin object: used to enter data while a program is executing – Example: cin >> num1; – Statement stops program execution and accepts data from the keyboard A First Book of C++ 4th Edition 37 Interactive Keyboard Input (cont'd.) A First Book of C++ 4th Edition 38 Interactive Keyboard Input (cont'd.) A First Book of C++ 4th Edition 39 Interactive Keyboard Input (cont'd.) • First cout statement in Program 3.8 prints a string – Tells the person at the terminal what to type – A string used in this manner is called a prompt • Next statement, cin, pauses computer – Waits for user to type a value – User signals the end of data entry by pressing Enter key – Entered value stored in variable to right of extraction symbol • Computer comes out of pause and goes to next cout statement A First Book of C++ 4th Edition 40 Interactive Keyboard Input (cont'd.) A First Book of C++ 4th Edition 41 Interactive Keyboard Input (cont'd.) A First Book of C++ 4th Edition 42 Interactive Keyboard Input (cont'd.) • The following sample run was made with Program 3.12; the bold code indicates what the user enters: A First Book of C++ 4th Edition 43 Interactive Keyboard Input (cont'd.) • In Program 3.12, each time cin is invoked, it’s used to store one value in a variable. • The cin object, however, can be used to enter and store as many values as there are extraction operators and variables to hold the entered data. A First Book of C++ 4th Edition 44 Interactive Keyboard Input (cont'd.) • For example, the statement cin >> num1 >> num2; results in two values being read from the keyboard and assigned to the variables num1 and num2. • If the data entered at the keyboard is 0.052 & 245.79, the variables num1 and num2 contain the values 0.052 and 245.79, respectively. A First Book of C++ 4th Edition 45 Interactive Keyboard Input (cont'd.) • The same spacing is applicable to entering character data; that is, the extraction operator, >> , skips blank spaces and stores the next nonblank character in a character variable. • For example, in response to these statements, char ch1, ch2, ch3 ; // declare three character variables cin >> ch1 >> ch2 >> ch3 ; // accept three characters A First Book of C++ 4th Edition 46 Interactive Keyboard Input (cont'd.) • The input a, b, c causes the letter a to be stored in the variable ch1, the letter b to be stored in the variable ch2, and the letter c to be stored in the variable ch3. • Because a character variable can be used to store only one character, the following input, without spaces, can also be used: abc. A First Book of C++ 4th Edition 47 Interactive Keyboard Input (cont'd.) A First Book of C++ 4th Edition 48 A First Look at User-Input Validation • A well-constructed program should validate all user input – Ensures that program does not crash or produce nonsensical output • Robust programs: programs that detect and respond effectively to unexpected user input – Also known as “bulletproof” programs • User-input validation: checking entered data and providing user with a way to reenter invalid data A First Book of C++ 4th Edition 49 A First Look at User-Input Validation • The first problem with a program becomes evident when a user enters a nonnumerical value. • For example, examine the following sample run of Program 3.13: A First Book of C++ 4th Edition 50 A First Look at User-Input Validation • This output occurs because the conversion of the second input number results in assigning the integer value 20 to num2 and the value -858993460 to num3. • The -858993460 value results because an invalid character, the decimal point, is assigned to a variable that expects an integer value. A First Book of C++ 4th Edition 51 Symbolic Constants • Magic numbers: literal data used in a program – Some have general meaning in context of program • Tax rate in a program to calculate taxes – Others have general meaning beyond the context of the program • π = 3.1416; Euler’s number = 2.71828 • Constants can be assigned symbolic names const float PI = 3.1416f; const double SALESTAX = 0.05; A First Book of C++ 4th Edition 52 Symbolic Constants (cont'd.) • const: qualifier specifies that the declared identifier cannot be changed • A const identifier can be used in any C++ statement in place of number it represents circum = 2 * PI * radius; amount = SALESTAX * purchase; • const identifiers commonly referred to as: – Symbolic constants – Named constants A First Book of C++ 4th Edition 53 Placement of Statements • A variable or symbolic constant must be declared before it is used • C++ permits preprocessor directives and declaration statements to be placed anywhere in program – Doing so results in very poor program structure A First Book of C++ 4th Edition 54 Placement of Statements (cont'd.) • As a matter of good programming practice, the order of statements should be: preprocessor directives int main() { // symbolic constants // variable declarations // other executable statements return 0; } A First Book of C++ 4th Edition 55 Placement of Statements (cont'd.) A First Book of C++ 4th Edition 56 Common Programming Errors • Forgetting to assign or initialize values for all variables before they are used in an expression • Using a mathematical library function without including the preprocessor statement #include <cmath> • Using a library function without providing the correct number of arguments of the proper data type • Applying increment or decrement operator to an expression A First Book of C++ 4th Edition 57 Common Programming Errors (cont'd.) • Forgetting to use the extraction operator, >>, to separate variables in a cin statement • Using an increment or decrement operator with variables that appear more than once in the same statement • Being unwilling to test a program in depth A First Book of C++ 4th Edition 58 Summary • Expression: sequence of operands separated by operators • Expressions are evaluated according to precedence and associativity of its operands • The assignment symbol, =, is an operator – Assigns a value to variable – Multiple assignments allowed in one statement • Increment operator(++): adds 1 to a variable • Decrement operator(--): subtracts 1 from a variable A First Book of C++ 4th Edition 59 Summary (cont'd.) • Increment and decrement operators can be used as prefixes or postfixes • C++ provides library functions for various mathematical functions – These functions operate on their arguments to calculate a single value – Arguments, separated by commas, included within parentheses following function’s name • Functions may be included within larger expressions A First Book of C++ 4th Edition 60 Summary (cont'd.) • cin object used for data input • cin temporarily suspends statement execution until data entered for variables in cin function • Good programming practice: prior to a cin statement, display message alerting user to type and number of data items to be entered – Message called a prompt • Values can be equated to a single constant by using the const keyword A First Book of C++ 4th Edition 61 Chapter Supplement: Errors, Testing, and Debugging • Program errors can be detected: – – – – Before a program is compiled While the program is being compiled While the program is running After the program has been run and the output is being examined • Desk checking – Method for detecting errors before a program is compiled • Program verification and testing A First Book of C++ 4th Edition 62 Compile-Time and Runtime Errors • Compile-time errors – Errors detected while a program is being compiled – No one but the programmer ever knows they occurred • Runtime errors – Errors that occur while a program is running – More troubling because they occur while a user is running the program – Can be caused by program or hardware failures A First Book of C++ 4th Edition 63 Syntax and Logic Errors • Syntax error – Error in ordering valid language elements in a statement or the attempt to use invalid language elements • Logic error – Characterized by erroneous, unexpected, or unintentional output that’s a result of some flaw in the program’s logic A First Book of C++ 4th Edition 64 Testing and Debugging • Program testing should be well thought out to maximize the possibility of locating errors • Bug: a program error • Debugging – Process of isolating and correcting the error and verifying the correction • Program tracing – Process of imitating the computer by executing each statement by hand as the computer would • Echo printing A First Book of C++ 4th Edition 65