1 / 54

4. More Control Structures and Types

4. More Control Structures and Types. 4.1 Logical (Conditional) AND, OR, and NOT 4.2 Nested Ifs and the Switch Statement 4.3 The For and Do-While Loops 4.4 Additional Primitive Types 4.5 Using the Math Library 4.6 Solving Problems with Java: An Iterative Development Cycle. Objectives.

jeanieb
Télécharger la présentation

4. More Control Structures and Types

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4. More Control Structures and Types 4.1 Logical (Conditional) AND, OR, and NOT 4.2 Nested Ifs and the Switch Statement 4.3 The For and Do-While Loops 4.4 Additional Primitive Types 4.5 Using the Math Library 4.6 Solving Problems with Java: An Iterative Development Cycle

  2. Objectives • Learn useful selection and repetition statement • Use primitive types and operators • Use the Math library • Build software using an iterative development cycle

  3. Logical Operators • Boolean expressions can use logical (conditional) ! Logical NOT && Logical AND || Logical OR • They all take boolean operands and produce boolean results • Logical NOT (Conditional Complement) is a unary operator (one operand), but the other two are binary operators (two operands)

  4. Logical Operators • Conditions in selection statements and loops can use logical operators to form complex expressions if (b >= a && c >= a) min = a; if (a >= b && c >= b) min = b; if (a >= c && b >= c) min = c; • Logical operators have precedence relationship between themselves and other operators

  5. Figure 4.2 Conditional Operators

  6. Figure 4.3 Evaluating an example of a conditional AND expression

  7. Figure 4.4 Evaluating a conditional AND expression

  8. Figure 4.5 Evaluating an example of a conditional OR expression

  9. Figure 4.6 Evaluating a condition OR expression

  10. Figure 4.7 Evaluating a logical complement expression

  11. Highest NOT! ! multiplicative * / % additive + - relational < > <= >= equality == != conditional AND && conditional OR || assignment = += -= *= /= %= Lowest Figure 4.8 Operator precedence*

  12. if (score >= 60 && score < 80) System.out.println("Score " + score + " receives a C"); else System.out.println("Score " + score + " receives a B or an A"); Figure 4.9 If-else statement to choose between two alternatives

  13. Nested If Statements • The if-true-statement and if-false-statement of an if statement could be another if statement • These are called nested if statements if (a >= b) if (b >= c) min = c; else min = b; else if (a >= c) min = c; else min = a; • An else clause is matched to the last unmatched if (no matter what the indentation implies)

  14. if (score >= 60 && score < 80) System.out.println("Score " + score + " receives a C"); else if (score >=80 && score < 90) System.out.println("Score " + score + " receives a B"); else System.out.println("Score " + score + " receives an A"); Figure 4.10 Nested if-else statement to choose among three alternatives

  15. if (score >= 60 && score < 80) System.out.println("Score " + score + " receives a C"); else if (score >=80 && score < 90) System.out.println("Score " + score + " receives a B"); else if (score >= 90 && score <= 100) System.out.println("Score " + score + " receives an A"); Figure 4.11 Improved version of Figure 4.10

  16. True Test1 true code Test1? False True Test2 true code Test2? False ... False True Last true code Last? False Last false code Figure 4.12 Flow chart for nested if-else statements

  17. if (score >= 60) if (score >= 80) System.out.println("You got a B or an A"); else System.out.println("You got a D or an F"); // Wrong pairing Figure 4.13 Incorrect attempt to pair an else with an if

  18. if (score >= 60) if (score >= 80) System.out.println("You got a B or an A"); else System.out.println("You got a C"); // Correct pairing Figure 4.14 Corrected pairing of else and if

  19. if (score >= 60) { if (score >= 80) System.out.println("You got a B or an A"); } Else // Paired to first 'if' System.out.println("You got a D or an F"); Figure 4.15 Figure 4.13 rewritten as an if-else with nested if

  20. The Switch Statement • The switch statement provides another means to decide which statement to execute next • The switch statement evaluates an expression, then attempts to match the result to one of several possible cases • Each case contains a value and a list of statements • The flow of control transfers to statement list associated with the first value that matches

  21. The Switch Statement • A switch statement can have an optional defaultcase which has no associated value • If the default case is present, control will transfer to it if no other case value matches • The default case can be positioned anywhere in the switch, it is usually placed at the end • If there is no default case, and no other value matches, control falls through to the next statement after the switch

  22. The Switch Statement • Often a break statement is used as the last statement in each case’s statement list • A break statement causes control to transfer to the end of the switch statement • If a break statement is not used, the flow of control will continue into the next case • The expression of a switch statement must result in an integral data type, like an integer or character • You cannot perform relational checks with a switch staement

  23. switch(mark) { case 0: case 1: case 2: case 3: case 4: System.out.println("F"); break; case 5: System.out.println("D"); break; case 6: case 7: System.out.println("C"); break; case 8: System.out.println("B"); break; case 9: case10: System.out.println("A"); break; default:System.out.println("Incorrect score"); } Figure 4.16 An example of a switch statement

  24. The For Statement • The for statement has the following syntax: for ( initialization ; condition ; increment ) statement ; • The initialization is executed once before the loop begins • The statement is executed until the condition becomes false • The increment portion is executed at the end of each iteration

  25. The For Statement • The for statement is equivalent to the following while loop structure initialization ; while ( condition ) { statement ; increment ; } • Like a while loop, the condition of a for loop is tested prior to executing the loop body • Therefore, the body of a for loop can be executed zero or more times

  26. int sum = 0; for (int i = 1; i <= 4; i++) sum += i; Figure 4.17 A for statement for the sum 1+2+3+4

  27. Figure 4.18 Trace of execution of the for loop of Figure 4.17

  28. int sum = 0; for (int i = 1; i < 10; i += 2) sum += i; Figure 4.19 A for statement for the sum 1+3+5+7+9

  29. int sum = 0; for (int i = 4; i >= l; i--) sum += i; Figure 4.20 A for statement for the sum 4+3+2+1

  30. int i; // declare loop index int sum = 0; for (i = 4; i >= 1; i--) // initialize loop index sum += i; ... i += 17; // use variable i Figure 4.21 Declaring an index variable before the for loop

  31. Examples • TwelveDays.java (extra) • Diamond.java (extra) • Growth.java • Mortgage.java (extra)

  32. The StringTokenizer Class • StringTokenizer(String str) Constructor. Creates a new StringTokenizer object to parse str based on white space • StringTokenizer(String str, String delimiter) Constructor. Creates a new StringTokenizer object to parse str based on specified set of delimiteds • int countTokens() Returns the number of token still left to be processed in the string • boolean hasMoreTokens() Returns true if there are tokens still left to be processed in the string • String nextToken() Returns the next token in the string

  33. do statement while (condition) ; Figure 4.22 Syntax for the do-while statement

  34. Do-while Statement • A do-while statement checks the condition after executing the loop body • The loop body of a do-while statement is executed at least once • Do-while statements are suitable for writing loops that are executed at least once • DoGrowth.java • Babylonian.java (extra)

  35. do { Compute balance as in Example 4.5 Ask the user -- Repeat or Quit? } while (User chooses to repeat); Figure 4.23 Pseudocode for example 4.5 enhancement

  36. The char Type • Java uses Unicode charater set (16 bits) • ASCII, American Standard Code for Information Interchange, is a seven-bit code used by other language like C and C++ • ASCII is a subset of Unicode • Keyword char to denote character type • Character constants are quoted in single quotes, e.g. ‘A’ • Ascii.java

  37. Escape Sequence • Escape sequence: preceding certain character with the escape character\ for special meaning • The newline, '\n', positions the next output at the start of the next line • The return, '\r', positions the next output at the start of the curent line • The backspace, '\b', positions the next output one character to the left • The tab, '\t', position the next output at the next tab position

  38. Escape Sequence • The escape needs to be "escaped" when quoted like '\\' and "\\" • The single quote character must be "escaped" in single quotes like '\'' • The double quote must be "escaped" in double quotes like ”\”This is a quote\”" • Special.java

  39. \\backlash Figure 4.24 Escape sequences for special characters

  40. The byte, short, and long Types • byte: one byte = 8 bits, range from -128 to 127 • short: two bytes = 16 bits • range from -32,768 to 32,767 • int: four bytes = 32 bits • range from -2,147,483,648 to 2,147,483,647 • long: eight bytes = 64 bits • range 9,223,372,036,854,808 to 9,223,372,036,854,807 • int is the default for integer constant • Integer constants can be made long by adding the suffix l or L

  41. The float Type • float: four bytes = 32 bits • Exponent can range from -45 to 48 • Min ~ -3.4E+38 with seven significant digits • Max ~ 3.4E+38 with seven significant digits • double: eight bytes = 64 bits • Exponent can range from -324 to 308 • Min ~ -1.7E+308 with 16 significant digits • Max ~ 1.7E+308 with 16 significant digits • double is the default for real constants • Make a number float by adding an f or F suffix float good = 4.25f; // valid float ok = (float)4.25; // valid float bad = 4.25; // invalid

  42. The Math Class • In java.lang package • Two static constants: E (base of natural log) and PI (ratio of circumference of a circle to its diameter) • General functions abs - absolute value ceil - ceiling, smallest integer >= argument floor - flooring, greatest integer <= argument round - rounding, integer closest to argument max - maximum of the two arguments min - minimum of the two arguments

  43. The Math Class • Simple mathematical operations sqrt(double a) - Return the square root of the argument pow(double a, double b) - Returns of value of the first argument raised to the power of the second argument log(double a) - Returns the natural logarithm (base e) of a double value exp(double a) - Returns the exponential number e (i.e., 2.718...) raised to the power of a double value • Random number random() - Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0

  44. The Math Class • Trigonometric functions sin, cos, tan - sine, cosine, and tangent asin, acos, atan- arc-sine, arc-cosine, and arc-tangent atan2(double a, double b) - Returns the theta component in the polar coordinates (r, theta) corresponding to the point (b, a) in Cartesian coordinates • Degree/Radian conversion toDegrees(double angrad) - Converts an angle in radians to the equivalent angle measured in degrees toRadians(double angdeg) - Converts an angle in degrees to the equivalent angle measured in radians

  45. The Math Class • Library.java • Toss.java • CoinToss.java

  46. 16 8 (grains of rice) Reward 4 2 1 1 2 4 8 12 16 Days Figure 4.25 Size of the reward given each day

  47. HHHHHHHHHHHHHHHHHTTTTTTTTTTTTTTTTTT 0.5 0.0 1.0 Heads Tails Figure 4.26 Using random numbers to represent heads and tails

  48. Iterative Development Cycle • First iteration - CovertMenu.java (with stubs for methods) • Second iteration - CovertFromMetric.java (implement MetricToEnglish()) • Third iteration - Convert.java (implement EnglishToMetric())

  49. Formulate the problem; do { Develop pseudocode; Implement pseudocode in Java program; Test program; while (More subproblems to refine); Figure 4.27 Iterative problem-solving process

  50. do [ Display the menu; Get the user's choice; Execute the user's choice; } while (user does not choose to quit); Figure 4.28 Top-level Pseudocode

More Related