1 / 33

Control Statements: Part 1

4. Control Statements: Part 1. OBJECTIVES. In this chapter you will learn: To use basic problem-solving techniques. To develop algorithms through the process of top-down, stepwise refinement. To use the if and if … else selection statements to choose among alternative actions.

griffint
Download Presentation

Control Statements: Part 1

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 • Control Statements: Part 1

  2. OBJECTIVES In this chapter you will learn: • To use basic problem-solving techniques. • To develop algorithms through the process of top-down, stepwise refinement. • To use the if and if…else selection statements to choose among alternative actions. • To use the while repetition statement to execute statements in a program repeatedly. • To use counter-controlled repetition and sentinel-controlled repetition. • To use the assignment, increment and decrement operators. • The primitive data types.

  3. 4.1   Introduction • 4.2   Algorithms • 4.3   Pseudocode • 4.4   Control Structures • 4.5   if Single-Selection Statement • 4.6   if…else Double-Selection Statement • 4.7   while Repetition Statement • 4.8   Formulating Algorithms: Counter-Controlled Repetition • 4.9   Formulating Algorithms: Sentinel-Controlled Repetition • 4.10   Formulating Algorithms: Nested Control Statements • 4.11   Compound Assignment Operators • 4.12   Increment and Decrement Operators • 4.13   Primitive Types • 4.16   Wrap-Up

  4. 4.2  Algorithms • Algorithms • The actions to execute • The order in which these actions execute • Program control • Specifies the order in which actions execute in a program • Experience has shown that the most difficult part of solving a problem on a computer is developing the algorithm for the solution.

  5. 4.3  Pseudocode • Pseudocode • An informal language similar to English • Helps programmers develop algorithms • Does not run on computers • Should contain input, output and calculation actions • Typically do not contain variable declarations, but some choose to list variables and mention their purposes at the beginning • 參考上學期 第 6 章講義 • 指定、輸入、輸出、if、while

  6. 4.4  Control Structures • Sequential execution • Statements are normally executed one after the other in the order in which they are written • Transfer of control • Specifying the next statement to execute that is not necessarily the next one in order • Can be performed by the goto statement • Structured programming eliminated goto statements

  7. 4.4  Control Structures (Cont.) • Bohm and Jacopini’s research • Demonstrated that goto statements were unnecessary • Demonstrated that all programs could be written with three control structures • The sequence structure, • The selection structure and • The repetition structure Fig. 4.1 UML Sequence structure activity diagram.

  8. 4.4  Control Structures (Cont.) • Selection Statements • if statement • Single-selection statement • if…else statement • Double-selection statement • switch statement • Multiple-selection statement

  9. 4.4  Control Structures (Cont.) • Repetition statements • Also known as looping statements • Repeatedly performs an action while its loop-continuation condition remains true • while statement • Performs the actions in its body zero or more times • do…while statement • Performs the actions in its body one or more times • for statement • Performs the actions in its body zero or more times

  10. 4.4  Control Structures (Cont.) • Java has three kinds of control structures • Sequence statement, • Selection statements (three types) and • Repetition statements (three types) • All programs are composed of these control statements • Control-statement stacking • All control statements are single-entry/single-exit • Control-statement nesting

  11. 4.5  if Single-Selection Statement • if statements • Execute an action if the specified condition is true • Ex: if (studentGrade >= 60 ) System.out.println(“Passed”); • Can be represented by a decision symbol (diamond) in a UML activity diagram • Transition arrows out of a decision symbol have guard conditions • Workflow follows the transition arrow whose guard condition is true Fig. 4.2 | if single-selection statement UML activity diagram.

  12. 4.6  if…else Double-Selection Statement • if…else statement • Executes one action if the specified condition is true or a different action if the specified condition is false • Ex: if (studentGrade >= 60 ) System.out.println(“Passed”); else System.out.println(“Failed”); Fig. 4.3 | if…else double-selection statement UML activity diagram.

  13. 課堂練習-1 • 輸入 3 個實數,請列印此 3 個實數中的最大值及最小值 • 提示 1:實數輸入 的方法類似整數輸入,不過方法名稱不是 nextInt( ),改用 nextFloat( ) 或 nextDouble( ); • 提示 2:實數輸出的方法類似整數輸出,使用 printf 方法,不過格式不是 %d,改用 %.2f 以輸出小數點後 2 位,可以依照精準度的要求,修改為需要輸出的位數

  14. Indent both body statements of an if…else statement. Good Programming Practice 4.1, 4.2 If there are several levels of indentation, each level should be indented the same additional amount of space.

  15. 4.6 if…else Double-Selection Statement 的變形 • Conditional Operator ( ?: ) • Java’s only ternary operator (takes three operands) • ?: and its three operands form a conditional expression • Example: System.out.println( studentGrade >= 60 ? “Passed” : “Failed”) • Entire conditional expression evaluates to the second operand if the first operand is true • Entire conditional expression evaluates to the third operand if the first operand is false • Conditional expressions are more difficult to read than if…else statements. They should be used to replace only simple if…else statements that choose between two values.

  16. 4.6  if…else Double-Selection Statement (Cont.) • Nestedif…else statements • if…else statements can be put inside other if…else statements • Ex: if ( studentGrade >= 90) System.out.println( “A” ); else if ( studentGrade >= 80) System.out.println( “B” ); else if ( studentGrade >= 70) System.out.println( “C” ); else if ( studentGrade >= 60) System.out.println( “D” ); else System.out.println( “F” );

  17. 4.6  if…else Double-Selection Statement (Cont.) • Dangling-else problem • elses are always associated with the immediately preceding ifunless otherwise specified by braces {} • Ex: if ( x > 5) if ( y > 5 ) System.out.println( “x and y are > 5”); else System.out.println( “x is <= 5”); • Correct: if ( x > 5) { if ( y > 5 ) System.out.println( “x and y are > 5”); } else System.out.println( “x is <= 5”);

  18. 課堂練習-2 (Ex 4-24, 4-25) if ( x < 10 ) if ( y > 10 ) System.out.println( "*****" ); else System.out.println( "#####" ); System.out.println( "$$$$$" ); (a) 當 x=9, y=11 時輸出為何? (b)當 x=11, y=9 時輸出為何? • 課後練習: ex04-27, ex04-32 請加上 ‘{‘ ‘}’ 使得當 x=5, y=8 輸出為 (a) @@@@@ $$$$$ &&&&& (b)@@@@@ (c)@@@@@ &&&&& if ( y == 8 ) if ( x == 5 ) System.out.println( “@@@@@" ); else System.out.println( "#####" ); System.out.println( "$$$$$" ); System.out.println( “&&&&&" );

  19. 4.6  if…else Double-Selection Statement (Cont.) • Blocks • Braces {} associate statements into blocks • Blocks can replace individual statements as an if body if (grade >= 60) System.out.println(“過關”); else { System.out.println(“當掉”); System.out.println(“重修”); }

  20. 4.6  if…else Double-Selection Statement (Cont.) • Logic errors • Fatal logic errors cause a program to fail and terminate prematurely • Example: 某數 除以 0 • Nonfatal logic errors cause a program to produce incorrect results • Forgetting one or both of the braces that delimit a block can lead to syntax errors or logic errors in a program. • Empty statements • Represented by placing a semicolon ( ; ) where a statement would normally be • Can be used as an if body • Placing a semicolon after the condition in single-selection if statements leads to a logic error • Placing a semicolon after the condition in double-selection if...else statements (when the if-part contains an actual body statement) leads to a syntax error

  21. Always using braces in an if...else (or other) statement helps prevent their accidental omission, especially when adding statements to the if-part or the else-part at a later time. To avoid omitting one or both of the braces, some programmers type the beginning and ending braces of blocks before typing the individual statements within the braces. Good Programming Practice 4.4

  22. 4.7  while Repetition Statement • while statement • Repeats an action while its loop-continuation condition remains true • Uses a merge symbol in its UML activity diagram • Merges two or more workflows • Represented by a diamond (like decision symbols) but has: • Multiple incoming transition arrows, • Only one outgoing transition arrow and • No guard conditions on any transition arrows

  23. 4.7  while Repetition Statement int product = 3; while ( product <= 100 ) product = 3 * product; Fig. 4.4 | while repetition statement UML activity diagram.

  24. Notproviding, in the body of a while statement, an action that eventually causes the condition in the whileto become false normally results in a logic error called an infinite loop, in which the loop never terminates. Common Programming Error 4.3

  25. 4.8  Formulating Algorithms: Counter-Controlled Repetition • Example: • 計算 10 個學生的平均成績 • Counter-controlled repetition • Use a counter variable to count the number of times a loop is iterated • Integer division • The fractional part (小數點部份) of an integer division calculation is truncated (thrown away)

  26. 1 Set total to zero • 2 Set grade counter to one • 3 • 4 While grade counter is less than or equal to ten • 5 Prompt the user to enter the next grade • 6 Input the next grade • 7 Add the grade into the total • 8 Add one to the grade counter • 9 • 10 Set the class average to the total divided by ten • 11 Print the class average Fig. 4.5|Pseudocode algorithm that uses counter-controlled repetition to solve the class-average problem.

  27. Outline • GradeBook.java (1 of 3) Separate declarations from other statements in methods with a blank line for readability. Assign a value to instance variable courseName Declare method setCourseName Declare method getCourseName

  28. Outline Declare method displayMessage • GradeBook.java (2 of 3) Declare method determineClassAverage Declare and initialize Scanner variable input Declare local int variables total, gradeCounter, grade and average

  29. Outline while loop iterates as long as gradeCounter<=10 • GradeBook.java (3 of 3) Increment the counter variable gradeCounter Calculate average grade Display results

  30. Using the value of a local variable before it is initialized results in a compilation error. All local variables must be initialized before their values are used in expressions. Common Programming Error 4.4 • Initialize each counter and total, either in its declaration or in an assignment statement. • Totals are normally initialized to 0. • Counters are normally initialized to 0 or 1, depending on how they are used (we will show examples of when to use 0 and when to use 1).

  31. Outline Create a new GradeBook object • GradeBookTest.java Pass the course’s name to the GradeBook constructor as a string Call GradeBook’s determineClassAverage method

  32. Assuming that integer division rounds [四捨五入] (rather than truncates[直接捨去]) can lead to incorrect results. For example, 7 ÷ 4, which yields 1.75 in conventional arithmetic, truncates to 1 in integer arithmetic, rather than rounding to 2. Common Programming Error 4.5

  33. 課堂練習-3 • Use counter-controlled repetition to write a program that calculates the sum of the integers from 1 to 10. Then print the sum. • 請輸入 10 筆數字,輸出其加總結果 • 請輸入 n 的值,再輸入 n 筆數字,輸出其加總結果 • 課後練習: ex04-15

More Related