The if-statement

advertisement
The if-statement
The if-statement in Java
• What is an if-statement:
• The if-statement is a conditional statement
• The statement is executed only if a given condition is
satisfied
The if-statement in Java (cont.)
• Purpose of an if-statement:
• An if-statement makes sure that the correct condition is
satisfied before a certain action is performed
Syntax and meaning of the if-statement
• Syntax of the if-statement:
if ( CONDITION )
ONE-statement
Syntax and meaning of the if-statement
(cont.)
• Explanation:
• The keyword if announces (to the Java compiler) that we started
an if-statement
• A conditional clause ( CONDITION ) follows the keyword if
• This is the condition of the if-statement
• Following the condition clause, you can write (only) one
statement
• This statement will only be executed if the condition is true
The condition clause of the if-statement
• The condition clause of the if-statement is an expression
that evaluates to true or false
• Expressions that evaluates to true or false are known in
Computer Science as:
• Boolean expressions
The condition clause of the if-statement
(cont.)
• We will learn more about Boolean expressions later
Here, we will first use a few simple Boolean expressions to
learn about the if-statement
The condition clause of the if-statement
(cont.)
• A simple Boolean expression:
• The expression
a<0
will return
• true if the variable a contains a negative value
• false otherwise (i.e., if the variable a contains
zero or a positive value)
Example if-statement: find absolute value
• Consider the following Java program:
import java.util.Scanner;
public class If1
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int a;
System.out.print("Enter an integer value: ");
a = in.nextInt();
// Read in an integer from keyboard
System.out.print("Input value = ");
System.out.println(a);
if ( a < 0 )
a = -a;
// If-statement
// Negate a ONLY if a < 0
System.out.print("It's absolute value = ");
System.out.println(a);
}
}
Example if-statement: find absolute value
(cont.)
• Example outputs:
cheung@HOME2(40)> java If1
Enter an integer value: -4
Input value = -4
It's absolute value = 4
cheung@HOME2(41)> java If1
Enter an integer value: 4
Input value = 4
It's absolute value = 4
Example if-statement: find absolute value
(cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/I
f1.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac If1.java
• To run:
java If1
How is the if-statement executed ?
• Instead of using words, we will use 2 representation
techniques to illustrate how an if-statement is executed
How is the if-statement executed ? (cont.)
• Representation techniques used:
• Flow chart:
• A flow chart is a diagram that represents a
computer algorithm.
• It uses a rectangular box to represent an
assignment statement
• It uses a diamond box to represent a condition
• Lines are used to indicate the flow of the steps in
the algorithm
How is the if-statement executed ? (cont.)
• Structure diagram
• A structure diagram is another type of diagram
to represent a computer algorithm.
• It uses different shapes of boxes to represent
assignment statements and conditions
• The structure diagram does not use lines
Flow chart of if-statement
• Pseudo code of the program:
a = read input from keyboard;
if ( a < 0 )
a = -a;
Print a;
Flow chart of if-statement (cont.)
• Flow chart of the program:
Flow chart of if-statement (cont.)
• If a negative number (e.g., -4) is entered in the input, the
program flow will be as follows:
Flow chart of if-statement (cont.)
• Explanation:
• Because the condition (test) a < 0 is satisfied, the
statement a = −a; is executed
• a is updated to −a
(in example, with 4)
• The execution continues with the subsequent
statement (which prints a) The value 4 is printed.
Flow chart of if-statement (cont.)
• If a non-negative number (e.g., 4) is entered in the input,
the program flow will be as follows:
Flow chart of if-statement (cont.)
• Explanation:
• Because the condition (test) a < 0 is not satisfied,
the statement a = −a; is not executed
• a retains the value 4 !!!
• The execution continues with the subsequent
statement (which prints a) The value 4 is printed.
Structure diagram of if-statement
• Pseudo code of the program:
a = read input from keyboard;
if ( a < 0 )
a = -a;
Print a;
Structure diagram of if-statement (cont.)
• Structure diagram of the program:
Structure diagram of if-statement (cont.)
• If a negative number (e.g., -4) is entered in the input, the
program flow will be as follows:
Structure diagram of if-statement (cont.)
• Explanation:
• Because the condition (test) a < 0 is satisfied, the
statement a = −a; is executed
• a is updated to −a
(in example, with 4)
• The execution continues with the subsequent
statement (which prints a)
The value 4 is printed.
Structure diagram of if-statement (cont.)
• If a non-negative number (e.g., 4) is entered in the input,
the program flow will be as follows:
Structure diagram of if-statement (cont.)
• Explanation:
• Because the condition (test) a < 0 is not satisfied,
the statement a = −a; is not executed
• a retains the value 4 !!!
• The execution continues with the subsequent
statement (which prints a)
The value 4 is printed.
Structure diagram of if-statement (cont.)
• Note:
• I will use the structure diagram technique to illustrate
some of the algorithms discussed later in this course.
Computer jargon
• Terminology:
• If-condition = the condition clause in the if-statement
• Then-part = the statement(s) that are executed when the
if-condition is true
Schematically:
Multiple statements in the "then"-part of
the if-statement
• Previously discussed: syntax of the if-statement:
if ( CONDITION )
ONE-statement
Multiple statements in the "then"-part of
the if-statement (cont.)
• Notes:
• You can only use one statement in the then-part
• Fact:
• It is very common to use multiple statements in the
then-part of an if-statement.
Multiple statements in the "then"-part of
the if-statement (cont.)
• Previously discussed: block
(http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/0
3/intro-java.html#block)
• Block:
• Block = a pair of "{" and "}" braces that
groups components in a Java program together
Multiple statements in the "then"-part of
the if-statement (cont.)
• Example:
Multiple statements in the "then"-part of
the if-statement (cont.)
• Statement block: multiple statements considered as one
statement:
• Statement block:
• Statement block = multiple statements grouped
together by braces { .... }
Multiple statements in the "then"-part of
the if-statement (cont.)
• Example:
Multiple statements in the "then"-part of
the if-statement (cont.)
• Java language fact:
• A statement block in Java is considered as one
(single) statement
Statement block are commonly used as the then-body of ifstatements
Example if-statement: using a statement
block in the then-body
• Previously discussed: Java program that implements the
a,b,c-formula
import java.util.Scanner; // Import Scanner class (contains methods
// for reading keyboard input)
public class Abc2
{
public static void main(String[] args)
{
double a, b, c, x1, x2; // Define 5 variable
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
Example if-statement: using a statement
block in the then-body (cont.)
x1 = ( -b - Math.sqrt( b*b - 4*a*c ) ) / (2*a);
x2 = ( -b + Math.sqrt( b*b - 4*a*c ) ) / (2*a);
System.out.print("x1 = ");
System.out.println(x1);
System.out.print("x2 = ");
System.out.println(x2);
}
}
Example if-statement: using a statement
block in the then-body (cont.)
• Shortcoming:
• The program does not work when b*b - 4*a*c < 0
Schematically:
Example if-statement: using a statement
block in the then-body (cont.)
• Java program:
import java.util.Scanner;
public class If2
{
public static void main(String[] args)
{
double a, b, c, x1, x2; // Define 5 variable
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
Example if-statement: using a statement
block in the then-body (cont.)
x1 = x2 = 0;
// Default solution
/* -----------------------------------------------------Only compute solution if determinant b*b - 4*a*c >= 0
------------------------------------------------------ */
if ( b*b - 4*a*c >= 0 )
{
x1 = ( -b - Math.sqrt( b*b - 4*a*c ) ) / (2*a);
x2 = ( -b + Math.sqrt( b*b - 4*a*c ) ) / (2*a);
}
System.out.print("x1 = ");
System.out.println(x1);
System.out.print("x2 = ");
System.out.println(x2);
}
}
Example if-statement: using a statement
block in the then-body (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/I
f2.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac If2.java
• To run:
java If2
Some commonly made mistakes in ifstatements
• Common error 1: bogus semicolon after the if-condition
• Example:
import java.util.Scanner;
public class If3
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
Some commonly made mistakes in ifstatements (cont.)
int a;
System.out.print("Enter an integer value: ");
a = in.nextInt();
// Read in an integer from keyboard
System.out.print("Input value = ");
System.out.println(a);
if ( a < 0 ) ;
a = -a;
// Bogus ;
System.out.print("It's absolute value = ");
System.out.println(a);
}
}
Some commonly made mistakes in ifstatements (cont.)
• Structure diagram of this erroneous program:
Some commonly made mistakes in ifstatements (cont.)
• Notes:
• The then-part contains no statement !!
• The statement a = -a; is not part of the then-part !!!
Therefore, the statement a = -a; is always executed.
Some commonly made mistakes in ifstatements (cont.)
• Example output:
Enter an integer value: 4
Input value = 4
It's absolute value = -4 (Because a = -a; is always executed)
Some commonly made mistakes in ifstatements (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/I
f3.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac If3.java
• To run:
java If3
Some commonly made mistakes in ifstatements (cont.)
• Common error 2: forgetting to use statement block in the
then-part
• Example:
import java.util.Scanner;
public class If2
{
public static void main(String[] args)
{
double a, b, c, x1, x2; // Define 5 variable
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
Some commonly made mistakes in ifstatements (cont.)
x1 = x2 = 0;
// Default solution
/* -----------------------------------------------------Only compute solution if determinant b*b - 4*a*c >= 0
------------------------------------------------------ */
if ( b*b - 4*a*c >= 0 )
x1 = ( -b - Math.sqrt( b*b - 4*a*c ) ) / (2*a);
x2 = ( -b + Math.sqrt( b*b - 4*a*c ) ) / (2*a);
System.out.print("x1 = ");
System.out.println(x1);
System.out.print("x2 = ");
System.out.println(x2);
}
}
Some commonly made mistakes in ifstatements (cont.)
• Structure diagram of this erroneous program:
Some commonly made mistakes in ifstatements (cont.)
• Notes:
• The then-part contains only the first of the 2 statements !!
(Remember: the syntax rule says that the then-part consists
of only one statement !!)
• The second assignment statement is not part of the thenpart !!!
(Therefore, the second assignment statement is always
executed - and it will cause an error)
Some commonly made mistakes in ifstatements (cont.)
• Example output: (use: a = 1, b = 1, c = 1)
x1 = 0.0
x2 = NaN
<----- x2 was computed with sqrt(neg. value)
Some commonly made mistakes in ifstatements (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/I
f4.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac If4.java
• To run:
java If4
Download