1、Chapter 3: Program Statements,Presentation slides forJava Software Solutions Foundations of Program Design Second Editionby John Lewis and William LoftusJava Software Solutions is published by Addison-WesleyPresentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved.
2、 Instructors using the textbook may use and modify these slides for pedagogical purposes.,2,Program Statements,We will now examine some other program statementsChapter 3 focuses on: the flow of control through a method decision-making statements operators for making complex decisions repetition stat
3、ements software development stages more drawing techniques,Flow of Control,Unless indicated otherwise, the order of statement execution through a method is linear: one after the other in the order they are writtenSome programming statements modify that order, allowing us to: decide whether or not to
4、 execute a particular statement, or perform a statement over and over repetitivelyThe order of statement execution is called the flow of control,Conditional Statements,A conditional statement lets us choose which statement will be executed nextTherefore they are sometimes called selection statements
5、Conditional statements give us the power to make basic decisionsJavas conditional statements are the if statement, the if-else statement, and the switch statement,5,The if Statement,The if statement has the following syntax:,if ( condition )statement;,The if Statement,An example of an if statement:,
6、if (sum MAX)delta = sum - MAX; System.out.println (“The sum is “ + sum);,First, the condition is evaluated. The value of sum is either greater than the value of MAX, or it is not.,If the condition is true, the assignment statement is executed. If it is not, the assignment statement is skipped.,Eithe
7、r way, the call to println is executed next.,See Age.java (page 112),Logic of an if statement,false,8,Boolean Expressions,A condition often uses one of Javas equality operators or relational operators, which all return boolean results:= equal to != not equal togreater than = greater than or equal to
8、Note the difference between the equality operator (=) and the assignment operator (=),9,The if-else Statement,An else clause can be added to an if statement to make it an if-else statement:,if ( condition )statement1; elsestatement2;,See Wages.java (page 116),If the condition is true, statement1 is
9、executed; if the condition is false, statement2 is executed,One or the other will be executed, but not both,Logic of an if-else statement,11,Block Statements,Several statements can be grouped together into a block statementA block is delimited by braces ( )A block statement can be used wherever a st
10、atement is called for in the Java syntaxFor example, in an if-else statement, the if portion, or the else portion, or both, could be block statementsSee Guessing.java (page 117),12,Nested if Statements,The statement executed as a result of an if statement or else clause could be another if statement
11、These are called nested if statementsSee MinOfThree.java (page 118)An else clause is matched to the last unmatched if (no matter what the indentation implies),Comparing Characters,We can use the relational operators on character data The results are based on the Unicode character set The following c
12、ondition is true because the character + comes before the character J in Unicode:,if (+ J)System.out.println (“+ is less than J“);,The uppercase alphabet (A-Z) and the lowercase alphabet (a-z) both appear in alphabetical order in Unicode,Comparing Strings,Remember that a character string in Java is
13、an objectWe cannot use the relational operators to compare stringsThe equals method can be called on a string to determine if two strings contain exactly the same characters in the same orderThe String class also contains a method called compareTo to determine if one string comes before another alph
14、abetically (as determined by the Unicode character set),Comparing Floating Point Values,We also have to be careful when comparing two floating point values (float or double) for equality You should rarely use the equality operator (=) when comparing two floats In many situations, you might consider
15、two floating point numbers to be “close enough“ even if they arent exactly equal Therefore, to determine the equality of two floats, you may want to use the following technique:,if (Math.abs (f1 - f2) 0.00001)System.out.println (“Essentially equal.“);,16,The switch Statement,The switch statement pro
16、vides another means to decide which statement to execute nextThe switch statement evaluates an expression, then attempts to match the result to one of several possible casesEach case contains a value and a list of statementsThe flow of control transfers to statement list associated with the first va
17、lue that matches,The switch Statement,The general syntax of a switch statement is:,switch ( expression ) case value1 :statement-list1case value2 :statement-list2case value3 :statement-list3case .,If expression matches value2, control jumps to here,The switch Statement,Often a break statement is used
18、 as the last statement in each cases statement listA break statement causes control to transfer to the end of the switch statementIf a break statement is not used, the flow of control will continue into the next caseSometimes this can be helpful, but usually we only want to execute the statements as
19、sociated with one case,The switch Statement,A switch statement can have an optional default caseThe default case has no associated value and simply uses the reserved word defaultIf the default case is present, control will transfer to it if no other case value matchesThough the default case can be p
20、ositioned anywhere in the switch, it is usually placed at the endIf there is no default case, and no other value matches, control falls through to the statement after the switch,The switch Statement,The expression of a switch statement must result in an integral data type, like an integer or charact
21、er; it cannot be a floating point valueNote that the implicit boolean condition in a switch statement is equality - it tries to match the expression with a valueYou cannot perform relational checks with a switch statementSee GradeReport.java (page 121),21,Logical Operators,Boolean expressions can al
22、so use the following logical operators:! Logical NOT& Logical AND| Logical ORThey all take boolean operands and produce boolean resultsLogical NOT is a unary operator (it has one operand), but logical AND and logical OR are binary operators (they each have two operands),22,Logical NOT,The logical NO
23、T operation is also called logical negation or logical complementIf some boolean condition a is true, then !a is false; if a is false, then !a is trueLogical expressions can be shown using truth tables,23,Logical AND and Logical OR,The logical and expressiona & bis true if both a and b are true, and
24、 false otherwiseThe logical or expressiona | bis true if a or b or both are true, and false otherwise,Truth Tables,A truth table shows the possible true/false combinations of the terms Since & and | each have two operands, there are four possible combinations of true and false,25,Logical Operators,C
25、onditions in selection statements and loops can use logical operators to form complex expressions,if (total MAX ,Logical operators have precedence relationships between themselves and other operators,26,Truth Tables,Specific expressions can be evaluated using truth tables,27,More Operators,To round
26、out our knowledge of Java operators, lets examine a few moreIn particular, we will examine the:increment and decrement operators assignment operators conditional operator,28,Increment and Decrement Operators,The increment and decrement operators are arithmetic and operate on one operand The incremen
27、t operator (+) adds one to its operand The decrement operator (-) subtracts one from its operand The statementcount+;is essentially equivalent tocount = count + 1;,29,Increment and Decrement Operators,The increment and decrement operators can be applied in prefix form (before the variable) or postfi
28、x form (after the variable)When used alone in a statement, the prefix and postfix forms are basically equivalent. That is,count+;is equivalent to+count;,30,Increment and Decrement Operators,When used in a larger expression, the prefix and postfix forms have a different effect In both cases the varia
29、ble is incremented (decremented) But the value used in the larger expression depends on the form:,31,Increment and Decrement Operators,If count currently contains 45, thentotal = count+;assigns 45 to total and 46 to countIf count currently contains 45, thentotal = +count;assigns the value 46 to both
30、 total and count,32,Assignment Operators,Often we perform an operation on a variable, then store the result back into that variable Java provides assignment operators to simplify that process For example, the statementnum += count;is equivalent tonum = num + count;,33,Assignment Operators,There are
31、many assignment operators, including the following:,34,Assignment Operators,The right hand side of an assignment operator can be a complete expression The entire right-hand expression is evaluated first, then the result is combined with the original variable Thereforeresult /= (total-MIN) % num;is e
32、quivalent toresult = result / (total-MIN) % num);,35,The Conditional Operator,Java has a conditional operator that evaluates a boolean condition that determines which of two other expressions is evaluatedThe result of the chosen expression is the result of the entire conditional operatorIts syntax i
33、s:condition ? expression1 : expression2If the condition is true, expression1 is evaluated; if it is false, expression2 is evaluated,36,The Conditional Operator,The conditional operator is similar to an if-else statement, except that it is an expression that returns a valueFor example:larger = (num1
34、num2) ? num1 : num2;If num1 is greater that num2, then num1 is assigned to larger; otherwise, num2 is assigned to largerThe conditional operator is ternary, meaning that it requires three operands,37,The Conditional Operator,Another example:System.out.println (“Your change is “ + count +(count = 1)
35、? “Dime“ : “Dimes“);If count equals 1, then “Dime“ is printed If count is anything other than 1, then “Dimes“ is printed,Repetition Statements,Repetition statements allow us to execute a statement multiple times repetitivelyThey are often simply referred to as loopsLike conditional statements, they
36、are controlled by boolean expressionsJava has three kinds of repetition statements: the while loop, the do loop, and the for loopThe programmer must choose the right kind of loop for the situation,39,The while Statement,The while statement has the following syntax:,while ( condition )statement;,The
37、statement is executed repetitively until the condition becomes false.,Logic of a while loop,false,41,The while Statement,Note that if the condition of a while statement is false initially, the statement is never executedTherefore, the body of a while loop will execute zero or more timesSee Counter.j
38、ava (page 133)See Average.java (page 134)See WinPercentage.java (page 136),42,Infinite Loops,The body of a while loop must eventually make the condition falseIf not, it is an infinite loop, which will execute until the user interrupts the programSee Forever.java (page 138) This is a common type of l
39、ogical errorYou should always double check to ensure that your loops will terminate normally,Nested Loops,Similar to nested if statements, loops can be nested as wellThat is, the body of a loop could contain another loopEach time through the outer loop, the inner loop will go through its entire set
40、of iterationsSee PalindromeTester.java (page 137),The do Statement,The do statement has the following syntax:,do statement; while ( condition ),The statement is executed once initially, then the condition is evaluated,The statement is repetitively executed until the condition becomes false,Logic of
41、a do loop,true,false,The do Statement,A do loop is similar to a while loop, except that the condition is evaluated after the body of the loop is executedTherefore the body of a do loop will execute at least one timeSee Counter2.java (page 143)See ReverseNumber.java (page 144),Comparing the while and
42、 do loops,The for Statement,The for statement has the following syntax:,for ( initialization ; condition ; increment )statement;,The for Statement,A for loop is equivalent to the following while loop structure:,initialization; while ( condition ) statement;increment; ,Logic of a for loop,false,The f
43、or Statement,Like a while loop, the condition of a for statement is tested prior to executing the loop body Therefore, the body of a for loop will execute zero or more times It is well suited for executing a specific number of times that can be determined in advanceSee Counter3.java (page 146)See Mu
44、ltiples.java (page 147)See Stars.java (page 150),The for Statement,Each expression in the header of a for loop is optionalIf the initialization is left out, no initialization is performed If the condition is left out, it is always considered to be true, and therefore creates an infinite loop If the
45、increment is left out, no increment operation is performedBoth semi-colons are always required in the for loop header,53,Program Development,The creation of software involves four basic activities:establishing the requirements creating a design implementing the code testing the implementationThe dev
46、elopment process is much more involved than this, but these basic steps are a good starting point,54,Requirements,Requirements specify the tasks a program must accomplish (what to do, not how to do it) They often include a description of the user interface An initial set of requirements are often pr
47、ovided, but usually must be critiqued, modified, and expanded It is often difficult to establish detailed, unambiguous, complete requirements Careful attention to the requirements can save significant time and money in the overall project,55,Design,An algorithm is a step-by-step process for solving
48、a problem A program follows one or more algorithms to accomplish its goal The design of a program specifies the algorithms and data needed In object-oriented development, the design establishes the classes, objects, and methods that are required The details of a method may be expressed in pseudocode
49、, which is code-like, but does not necessarily follow any specific syntax,56,Implementation,Implementation is the process of translating a design into source code Most novice programmers think that writing code is the heart of software development, but it actually should be the least creative step A
50、lmost all important decisions are made during requirements analysis and design Implementation should focus on coding details, including style guidelines and documentationSee ExamGrades.java (page 155),57,Testing,A program should be executed multiple times with various input in an attempt to find errors Debugging is the process of discovering the cause of a problem and fixing it Programmers often erroneously think that there is “only one more bug“ to fix Tests should focus on design details as well as overall requirements,