the if-else statement

51
The if-else statement

Upload: tamyra

Post on 09-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

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; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: The if-else statement

The if-else statement

Page 2: 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 b2 - 4ac < 0

Page 3: The if-else statement

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"); }

Page 4: The if-else statement

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

Page 5: The if-else statement

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" ); } } }

Page 6: The if-else statement

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

Page 7: The if-else statement

Introducing the if-else statement (cont.)

• Example:

Enter a:1

Enter b:2

Enter c:5

-1.0+2.0i

-1.0-2.0i

Page 8: The if-else statement

Introducing the if-else statement (cont.)

• Shortcoming:

• We have to negate the if-condition ourselves...

• This can introduce unnecessary errors

Page 9: The if-else statement

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

Page 10: The if-else statement

The if-else statement in Java

• The if-else statement:

• The if-else statement is the second conditional statement in Java

• The if-else statement selects one of two statements to be executed based on a given condition

Page 11: The if-else statement

Syntax and meaning of the if-else-statement

• Syntax of the if-else-statement:

if ( CONDITION ) ONE-statement

else

ONE-statement

Page 12: The if-else statement

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

Page 13: The if-else statement

Syntax and meaning of the if-else-statement (cont.)

• This is the condition of the if-else-statement

• Following the condition clause, you can write (only) one statement

• Following the then-part, you must specify the keyword else followed by (only) one statement

• This statement will only be executed if the condition is true

• This statement will only be executed if the condition is false

Page 14: The if-else statement

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

Page 15: The if-else statement

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)

Page 16: The if-else statement

Computer Jargon: else-part (cont.)

• Schematically:

Page 17: The if-else statement

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

Page 18: The if-else statement

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;

Page 19: The if-else statement

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" ); } } }

Page 20: The if-else statement

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

Page 21: The if-else statement

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

Page 22: The if-else statement

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

• Algorithm:

Page 23: The if-else statement

Programming example: find maximum of 2 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

if ( a >= b ) max = a; else max = b;

System.out.println( "max value = " + max ); } }

Page 24: The if-else statement

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

Page 25: The if-else statement

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

Page 26: The if-else statement

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

• Algorithm:

Page 27: The if-else statement

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

Page 28: The if-else statement

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 ); } }

Page 29: The if-else statement

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

Page 30: The if-else statement

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

Page 31: The if-else statement

Programming example: leap year (cont.)

• Algorithm:

Page 32: The if-else statement

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;

Page 33: The if-else statement

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); } }

Page 34: The if-else statement

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

Page 35: The if-else statement

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;

Page 36: The if-else statement

Common errors in if-else-statements (cont.)

• Compiler message:

Error01.java:18: 'else' without 'if' else ^

Page 37: The if-else statement

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;

Page 38: The if-else statement

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" );

Page 39: The if-else statement

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" );

Page 40: The if-else statement

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;

Page 41: The if-else statement

Common errors in if-else-statements (cont.)

• Compiler message:

Error03.java:17: ';' expected max = a ^

Page 42: The if-else statement

Common errors in if-else-statements (cont.)

• Reason:

• The then-part is ONE statement

• A statement must be ended with a semicolon   

Page 43: The if-else statement

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; }

Page 44: The if-else statement

Common errors in if-else-statements (cont.)

• Compiler message:

Error04.java:20: 'else' without 'if' else ^

Page 45: The if-else statement

Common errors in if-else-statements (cont.)

• Reason:

• The then-part is ONE statement

• A statement must be ended with a semicolon       

Page 46: The if-else statement

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; }

Page 47: The if-else statement

Common errors in if-else-statements (cont.)

• Compiler message:

Error04.java:20: 'else' without 'if' else ^

Page 48: The if-else statement

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; }

Page 49: The if-else statement

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 !!!

Page 50: The if-else statement

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) }

Page 51: The if-else statement

Programming advice (cont.)

I fill in the statements in the then-part and else-part later.

So even when the if-part and/or else-part consist of 1 statement, I write them as blocks.