1 / 51

The if-else statement

The if-else statement. Introducing the if-else statement. Programming problem:. Re-write the a,b,c-formula program to solve for complex number solutions when b 2 - 4ac < 0. Introducing the if-else statement (cont.). Algorithm:. input a, b, c;

tamyra
Télécharger la présentation

The if-else statement

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. The if-else statement

  2. Introducing the if-else statement • Programming problem: • Re-write the a,b,c-formula program to solve for complex number solutions when b2 - 4ac < 0

  3. Introducing the if-else statement (cont.) • Algorithm: input a, b, c; Det = b*b - 4*a*c; // Compute the determinant if ( Det >= 0 ) { print -b/(2a) + sqrt(Det)/(2a); // Real number solutions print -b/(2a) - sqrt(Det)/(2a); } if ( Det < 0 ) { print -b/(2a) "+" (sqrt(-Det)/(2a) + "i"); // Complex number solutions print -b/(2a) "-" (sqrt(-Det)/(2a) + "i"); }

  4. Introducing the if-else statement (cont.) • Java program: import java.util.Scanner; public class Abc3 { public static void main(String[] args) { double a, b, c, Det, re, im; Scanner in = new Scanner(System.in); // Construct Scanner object a = in.nextDouble(); // Read in next number into a b = in.nextDouble(); // Read in next number into b c = in.nextDouble(); // Read in next number into c

  5. Introducing the if-else statement (cont.) Det = b*b - 4*a*c; if ( Det >= 0 ) { System.out.println( (-b + Math.sqrt( Det ) ) / (2*a) ); System.out.println( (-b - Math.sqrt( Det ) ) / (2*a) ); } if ( Det < 0 ) { re = -b/(2*a); // Compute real part im = Math.sqrt( -Det )/(2*a); // Compute imaginary part System.out.println( re + "+" + im + "i" ); System.out.println( re + "-" + im + "i" ); } } }

  6. Introducing the if-else statement (cont.) • Example Program: (Demo above code) • Prog file: http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/Abc3.java     • How to run the program: • Right click on link and save in a scratch directory • To compile:   javac Abc3.java • To run:          java Abc3

  7. Introducing the if-else statement (cont.) • Example: Enter a:1 Enter b:2 Enter c:5 -1.0+2.0i -1.0-2.0i

  8. Introducing the if-else statement (cont.) • Shortcoming: • We have to negate the if-condition ourselves... • This can introduce unnecessary errors

  9. Introducing the if-else statement (cont.) • Solution: • Extend the if-statement with an alternative statement • The alternative statement is only executed when the if-condition is false

  10. The if-else statement in Java • The if-else statement: • The if-else statement is the second conditional statement in Java • The if-else statementselectsone of two statements to be executed based on a given condition

  11. Syntax and meaning of the if-else-statement • Syntax of the if-else-statement: if ( CONDITION ) ONE- statement else ONE-statement

  12. Syntax and meaning of the if-else-statement (cont.) • Explanation: • The keyword if announces (to the Java compiler) that we started an if-else-statement • A conditional clause ( CONDITION ) follows the keyword if • This is the condition of the if-else-statement

  13. Syntax and meaning of the if-else-statement (cont.) • Following the condition clause, you can write (only) one statement • Following the then-part, you must specify the keywordelse followed by (only) one statement • This statement will only be executed if the condition is true • This is the condition of the if-else-statement • This statement will only be executed if the condition is false

  14. Syntax and meaning of the if-else-statement (cont.) • Note: The way that the Java compiler decide whether a conditional statement is: is by the presence/absence of the keyword else. • An if-statement • An if-else-statement

  15. Computer Jargon: else-part • The statement following the keyword else in an if-else-statement is called • The else-part of the if-else-statement (Or else-part for short)

  16. Computer Jargon: else-part (cont.) • Schematically:

  17. The a,b,c-formula using an if-else-statement • Programming problem: • Algorithm: • Re-write the a,b,c-formula program to solve for complex number solutions when b2 - 4ac < 0

  18. The a,b,c-formula using an if-else-statement (cont.) • Java program: import java.util.Scanner; public class Abc4 { public static void main(String[] args) { double a, b, c, Det, re, im; Scanner in = new Scanner(System.in); // Construct Scanner object a = in.nextDouble(); // Read in next number into a b = in.nextDouble(); // Read in next number into b c = in.nextDouble(); // Read in next number into c Det = b*b - 4*a*c;

  19. The a,b,c-formula using an if-else-statement (cont.) if ( Det >= 0 ) { System.out.println( (-b + Math.sqrt( Det ) ) / (2*a) ); System.out.println( (-b - Math.sqrt( Det ) ) / (2*a) ); } else { re = -b/(2*a); // Compute real part im = Math.sqrt( -Det )/(2*a); // Compute imaginary part System.out.println( re + "+" + im + "i" ); System.out.println( re + "-" + im + "i" ); } } }

  20. The a,b,c-formula using an if-else-statement (cont.) • Example Program: (Demo above code) • Prog file: http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/Abc4.java    • How to run the program: • Right click on link and save in a scratch directory • To compile:   javac Abc4.java • To run:          java Abc4

  21. Programming example: find maximum of 2 numbers • Programming problem: • Read in 2 number a and b • Assign to the variable max the largest value of a and b

  22. Programming example: find maximum of 2 numbers (cont.) • Algorithm:

  23. Programming example: find maximum of 2 numbers (cont.) import java.util.Scanner; public class Max01 { public static void main(String[] args) { double a, b, max; Scanner in = new Scanner(System.in); // Construct Scanner object a = in.nextDouble(); // Read in next number into a b = in.nextDouble(); // Read in next number into b if ( a >= b ) max = a; else max = b; System.out.println( "max value = " + max ); } } • Java program:

  24. Programming example: find maximum of 2 numbers (cont.) • Example Program: (Demo above code) • Prog file: http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/Max01.java • How to run the program: • Right click on link and save in a scratch directory • To compile:   javac Max01.java • To run:          java Max01

  25. Program example: find maximum of 3 numbers • Programming problem: • Read in 3 number a, b and c • Assign to the variable max the largest value of a, b and c

  26. Program example: find maximum of 3 numbers (cont.) • Algorithm:

  27. Program example: find maximum of 3 numbers (cont.) • Java program: import java.util.Scanner; public class Max01 { public static void main(String[] args) { double a, b, max; Scanner in = new Scanner(System.in); // Construct Scanner object a = in.nextDouble(); // Read in next number into a b = in.nextDouble(); // Read in next number into b c = in.nextDouble(); // Read in next number into c

  28. Program example: find maximum of 3 numbers (cont.) if ( a >= b ) // Find max(a,b) max = a; else max = b; if ( c > max ) // Check c > max ? max = c; System.out.println( "max value = " + max ); } }

  29. Program example: find maximum of 3 numbers (cont.) • Example Program: (Demo above code) • Prog file: http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/Max02.java • How to run the program: • Right click on link and save in a scratch directory • To compile:   javac Max02.java • To run:          java Max02

  30. Programming example: leap year • Leap year description (Wikipedia): • In the Gregorian calendar, the current standard calendar in most of the world, most years that are evenly divisible by 4 are leap years. • Years that are evenly divisible by 100 are not leap years, unless they are also evenly divisible by 400, in which case they are leap years

  31. Programming example: leap year (cont.) • Algorithm:

  32. Programming example: leap year (cont.) • Program in Java: import java.util.Scanner; public class LeapYear01 { public static void main(String[] args) { int year; boolean leap;

  33. Programming example: leap year (cont.) Scanner in = new Scanner(System.in); // Construct Scanner object year = in.nextInt(); // Read in year if ( year % 4 == 0 ) leap = true; else leap = false; if ( year % 100 == 0 ) leap = false; if ( year % 400 == 0 ) leap = true; System.out.println("Year is leap year ? " + leap); } }

  34. Programming example: leap year (cont.) • Example Program: (Demo above code) • Prog file: http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/LeapYear01.java • How to run the program: • Right click on link and save in a scratch directory • To compile:   javac LeapYear01.java • To run:          java LeapYear01

  35. Common errors in if-else-statements • Common error 1:bogus semicolon after the if-condition Example: if ( a >= b ) ; // Bogus ; max = a; else max = b;

  36. Common errors in if-else-statements (cont.) • Compiler message: Error01.java:18: 'else' without 'if' else ^

  37. Common errors in if-else-statements (cont.) • because the compiler "reads" the program as follows: if ( a >= b ) // A correct if-statement ; // Note: the if-statement ended here ! max = a; // A correct assignment statement else // else ? Where is the if ??? max = b;

  38. Common errors in if-else-statements (cont.) • Common error 2:forgetting to use statement block in the then-part Example: if ( Det >= 0 ) System.out.println( (-b + Math.sqrt( Det ) ) / (2*a) ); System.out.println( (-b - Math.sqrt( Det ) ) / (2*a) ); else re = -b/(2*a); // Compute real part im = Math.sqrt( -Det )/(2*a); // Compute imaginary part System.out.println( re + "+" + im + "i" ); System.out.println( re + "-" + im + "i" );

  39. Common errors in if-else-statements (cont.) • The Java compiler will report the error'else' without 'if' because syntactically, the program is read as follows: if ( Det >= 0 ) System.out.println( (-b + Math.sqrt( Det ) ) / (2*a) ); // If-statement System.out.println( (-b - Math.sqrt( Det ) ) / (2*a) ); // Print else // Else without if re = -b/(2*a); // Compute real part im = Math.sqrt( -Det )/(2*a); // Compute imaginary part System.out.println( re + "+" + im + "i" ); System.out.println( re + "-" + im + "i" );

  40. Common errors in if-else-statements (cont.) • Common error 3:missing semicolon after the then-part Example: if ( a >= b ) max = a // Missing semicolon !!! else max = b;

  41. Common errors in if-else-statements (cont.) • Compiler message: Error03.java:17: ';' expected max = a ^

  42. Common errors in if-else-statements (cont.) • Reason: • The then-part is ONE statement • A statement must be ended with a semicolon

  43. Common errors in if-else-statements (cont.) • Common error 4:bogus semicolon after the block in the then-part • Example: if ( a >= b ) { max = a; }; // bogus semicolon !!! else { max = b; }

  44. Common errors in if-else-statements (cont.) • Compiler message: Error04.java:20: 'else' without 'if' else ^

  45. Common errors in if-else-statements (cont.) • Reason: • The then-part is ONE statement • A statement must be ended with a semicolon

  46. Common errors in if-else-statements (cont.) • Common error 4:bogus semicolon after the block in the then-part Example: if ( a >= b ) { max = a; }; // bogus semicolon !!! else { max = b; }

  47. Common errors in if-else-statements (cont.) • Compiler message: Error04.java:20: 'else' without 'if' else ^

  48. Common errors in if-else-statements (cont.) • Because syntactically, the program is read as follows: if ( a >= b ) // An if-statement { max = a; } ; // An empty statement !!! else // Else without if... { max = b; }

  49. Programming advice • As you can see, forgetting a ";" and adding an extra ";" can cause serious syntax errors The best thing is to stick to one useful form: use block !!!

  50. Programming advice (cont.) • I always write if-statements and if-else-statements using blocks first: if ( ..... ) { (leave empty first) } ---------------------------------------------- if ( ..... ) { (leave empty first) } else { (leave empty first) }

More Related