Introduction to Computers and Programming Lecture 4: Mathematical and Relational Operators Basic Mathematical Operators.

Download Report

Transcript Introduction to Computers and Programming Lecture 4: Mathematical and Relational Operators Basic Mathematical Operators.

Introduction to Computers and
Programming
Lecture 4: Mathematical and
Relational Operators
Basic Mathematical Operators
Basic Mathematical Operators
C op era tion
Addition
Subtraction
Multiplication
Division
Modulus
Arithm etic
op era tor
+
*
/
%
Alg eb ra ic
exp ression
f+7
p–c
bm
x/y
r mod s
C exp ression
f
p
b
x
r
+
*
/
%
7
c
m
y
s
Each of the operators in the table are binary operators. A binary operator acts on two operands
4
Lets look at a program to
Calculate the area of a circle
// Program calculates area of a circle (uses double data types)
public class circle_area {
public static void main(String[] args)
{
double radius, area; // declare variables double
radius = 3.00; // assign radius of the circle
area = radius * radius * 3.14159 ;
System.out.println("The area of the circle of radius " + radius + " is " + area);
System.exit(0);
}
}
 2000 Prentice Hall, Inc. All rights reserved.
Integer Division - The Problem
• Suppose you have the following code:
int x;
x = 7 / 4;
• Using a calculator, the answer is 1.75.
• But x can only hold integer values.
• 1.75 is clearly not an integer value.
Integer Division - Solution
• To understand the solution, you need to remember
your 3rd Grade Math (really.)
1
4
7
4
3
The answer: 1 remainder 3
• 7/4 = 1 (Integer Division)
• 7%4 = 3 (Modulus Division)
Example: Integer and Modulus Division
/*
Integer and Modulus Division
*/
public class mod_division
{
public static void main(String args[])
{
int x = 5, y =10;
System.out.println ("5/10: " + x/y);
System.out.println ("5%10: " + x%y);
} // end method main
} // end class mod_division
5/10 = 0
5%10 = 5
10
0
5
0
5/10: 0
5%10: 5
5
• No matter what, your answers must be integers.
Odd / Even Numbers
• Modulus division can also be used to determine
whether a number is odd or even.
• Just divide by 2.
– If the remainder (modulus) is 0, the number is even.
• Examples:
– 10 % 2 = 0. Hence 10 is even.
– 11 % 2 = 1. Hence 11 is odd.
Common Programming Error:

Dividing by zero is normally undefined on computer systems
generally results in a fatal error.

To find out if number evenly divide by
another number
• Modulus division can also be used to determine
whether a number evenly divide into another
number or not.
• If the remainder (modulus) is 0, the number
evenly divide.
• Examples:
–
–
–
–
10 % 2 = 0. Hence 10 is evenly divide into 2 .
11 % 2 = 1. Hence 11 is does not divide evenly into 1.
30 % 5 = 0. Hence 30 evenly divide into 5.
100 % 8 = 5.
( 100 / 8 = 12.5 )
» Hence 100 does not evenly divide into 8.
Lets do this in class- what's the answer?
Can we notice a pattern?
1234 / 1000 = ?
1234 % 1000 =?
234 / 100= ?
234 % 100= ?
34 / 10= ?
34 % 10=?
Lets do this in class- what's the answer?
Can we notice a pattern?
1234 / 1000 = 1
( lost three right digits and ended up with the left (first) digit)
1234 % 1000 = 234
(lost the left most digit and ended up with the remaining 3 digits)
234 / 100= 2
( lost the 2 right digits and ended up with the left (first) digit)
234 % 100= 34
(lost the left most digit and ended up with the remaining 2 digits)
34 / 10= 3
( lost right digit and ended up with the left (first) digit)
34 % 10= 4
(lost the left most digit and ended up with the remaining right digit)
12
What is the out put of this program?
public class date_digits
{
public static void main(String[] args)
{
int date, month, day, div;
date = 1213;
month = date/100;
day = date % 100;
System.out.println("month is " +month
+"\n" + "day is " + day + "\n” );
}
}
 2000 Prentice Hall, Inc. All rights reserved.
13
What is the out put of this program?
public class date_digits
{
public static void main(String[] args)
{
int date, month, day, div;
month is 12
date = 1213;
day is 13
month = date/100;
Press any key to continue...
day = date % 100;
System.out.println("month is " +month
+"\n" + "day is " + day + "\n");
}
}
 2000 Prentice Hall, Inc. All rights reserved.
Operator Precedence
Operator Precedence
• Here’s another problem. What’s the answer to this?
x = 7 + 3 * 6;
• Two Options (depending on the order of operations):
Perform addition first: 7 + 3 = 10  10 * 6 =
60
Perform multiplication first: 3*6 =18  7+18 = 25
• Which option is correct?
– Clearly, we cannot have this kind of ambiguity.
Operator Precedence
• Operator precedence represent rules for evaluating
mathematical expressions.
• Every programming language has similar rules.
Operator(s)
()
*, /, or %
+ or -
Operation(s)
Parentheses
Order of evaluation (precedence)
Evaluated first. If the parentheses are nested, the
expression in the innermost pair is evaluated first. If there
are several pairs of parentheses “on the same level” (i.e.,
not nested), they are evaluated left to right.
Multiplication,Divi Evaluated second. If there are several, they are
sion, Modulus
evaluated left to right.
Addition
Evaluated last. If there are several, they are
Subtraction
evaluated left to right.
Operator Precedence
• Hence, option #2 is always correct
– (multiplication is performed first):
x = 7 + 3 * 6;
Evaluates
to
x
=
7
+
18
=
25
Example:
•
• Find the average of three variables a, b and c
• Do not use:
a + b + c / 3
• Use:
(a + b + c ) / 3
Parentheses
• Are your friends
• Are your really good friends
• Because with them you can ensure expressions
are evaluated as you expect
• Can avoid mistakes with operator precedence
(one less thing to think about)
– e.g. y
y
– e.g. y
y
=
=
=
=
m * x + b
(m * x) +
a * b * b
(((a * b)
;
b;
+ c * b – d;
* b) + (c * b)) – d;
19
Lets look at a program to allow user to input data
using an imput text prompt window
 2000 Prentice Hall, Inc. All rights reserved.
20
Getting Input from Input Dialog Boxes
String string =
JOptionPane.showInputDialog(
null, “Prompt Message”,
“Dialog Title”,
JOptionPane.QUESTION_MESSAGE));
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
21
Converting Strings to Integers
• The input returned from the input dialog
box is a string.
• If you enter a numeric value such as 123,
it returns “123”.
• To obtain the input as a number, you have
to convert a string into a number.
• To convert a string into an int value, you
can use the static parseInt method in the
Integer class as follows:
int intValue = Integer.parseInt(intString);
•
Where intString is a numeric string such as “123”.
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
22
Converting Strings to Doubles
•To convert a string into a double value, you
can use the static parseDouble method in the
Double class as follows:
double doubleValue =Double.parseDouble(doubleString);
where doubleString is a numeric string such
as “123.45”.
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Addition2.java uses JOptionPane prompt window to enter data
// Addition program that displays the sum of two numbers.
// Java packages
import javax.swing.JOptionPane;
// main method begins execution of Java application
public static void main( String args[] )
{
String firstNumber;
// first string entered by user
String secondNumber; // second string entered by user
int number1;
int number2;
int sum;
// first number to add
// second number to add
// sum of number1 and number2
Outline
Addition2.java
// program uses JOptionPane
Declare variables: name and type.
public class Addition2 {
23
1. import
2. class Addition
2.1 Declare variables
(name and type)
Input first integer as a String, assign
to firstNumber.
3.
showInputDialog
// read in first number from user as a String
firstNumber = JOptionPane.showInputDialog( "Enter first integer" );
// read in second number from user as a String
secondNumber =
JOptionPane.showInputDialog( "Enter second integer" );
4. parseInt
5. Add numbers, put
Convert strings to integers. result in sum
// convert numbers from type String to type int
number1 = Integer.parseInt( firstNumber );
number2 = Integer.parseInt( secondNumber );
// add numbers
sum = number1 + number2;
Add, place result in sum.
 2003 Prentice Hall, Inc.
All rights reserved.
24
33
34
35
36
37
38
39
40
41
// display result
JOptionPane.showMessageDialog( null, "The sum is " + sum,
"Results", JOptionPane.PLAIN_MESSAGE );
System.exit( 0 );
Outline
// terminate application with window
} // end method main
} // end class Addition2
Program output
 2003 Prentice Hall, Inc.
All rights reserved.
25
Adding Integers
5
import javax.swing.JOptionPane;
// program uses JOptionPane
– Location of JOptionPane for use in the program
7
public class Addition {
– Begins public class Addition
• Recall that file name must be Addition.java
– Lines 10-11: main
12
13
String firstNumber;
String secondNumber;
// first string entered by user
// second string entered by user
– Declaration
• firstNumber and secondNumber are variables
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
26
Adding Integers
12
13
String firstNumber;
String secondNumber;
// first string entered by user
// second string entered by user
– Variables
• Location in memory that stores a value
– Declare with name and type before use
• firstNumber and secondNumber are of type String
(package java.lang)
– Hold strings
• Variable name: any valid identifier
• Declarations end with semicolons ;
String firstNumber, secondNumber;
– Can declare multiple variables of the same type at a time
– Use comma separated list
– Can add comments to describe purpose of variables
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
27
Adding Integers
15
16
17
int number1;
int number2;
int sum;
// first number to add
// second number to add
// sum of number1 and number2
– Declares variables number1, number2, and sum of type
int
• int holds integer values (whole numbers): i.e., 0, -4, 97
• Types float and double can hold decimal numbers
• Type char can hold a single character: i.e., x, $, \n, 7
• Primitive types - more in Chapter 4
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
28
Adding Integers
20
firstNumber = JOptionPane.showInputDialog( "Enter first integer" );
– Reads String from the user, representing the first number
to be added
• Method JOptionPane.showInputDialog displays the
following:
• Message called a prompt - directs user to perform an action
• Argument appears as prompt text
• If wrong type of data entered (non-integer) or click Cancel,
error occurs
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
29
Adding Integers
20
firstNumber = JOptionPane.showInputDialog( "Enter first integer" );
– Result of call to showInputDialog given to
firstNumber using assignment operator =
• Assignment statement
• = binary operator - takes two operands
– Expression on right evaluated and assigned to variable on
left
• Read as: firstNumber gets value of
JOptionPane.showInputDialog( "Enter first
integer" )
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
30
Adding Integers
23
24
secondNumber =
JOptionPane.showInputDialog( "Enter second integer" );
– Similar to previous statement
• Assigns variable secondNumber to second integer input
27
28
number1 = Integer.parseInt( firstNumber );
number2 = Integer.parseInt( secondNumber );
– Method Integer.parseInt
• Converts String argument into an integer (type int)
– Class Integer in java.lang
• Integer returned by Integer.parseInt is assigned to
variable number1 (line 27)
– Remember that number1 was declared as type int
• Line 28 similar
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
31
Adding Integers
31
sum = number1 + number2;
– Assignment statement
• Calculates sum of number1 and number2 (right hand side)
• Uses assignment operator = to assign result to variable sum
• Read as: sum gets the value of number1 + number2
• number1 and number2 are operands
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
32
Adding Integers
34
35
JOptionPane.showMessageDialog( null, "The sum is " + sum,
"Results", JOptionPane.PLAIN_MESSAGE );
– Use showMessageDialog to display results
– "The sum is " + sum
• Uses the operator + to "add" the string literal "The sum is"
and sum
• Concatenation of a String and another type
– Results in a new string
• If sum contains 117, then "The sum is " + sum results in
the new string "The sum is 117"
• Note the space in "The sum is "
• More on strings in Chapter 11
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
33
Adding Integers
34
35
JOptionPane.showMessageDialog( null, "The sum is " + sum,
"Results", JOptionPane.PLAIN_MESSAGE );
– Different version of showMessageDialog
•
•
•
•
•
Requires four arguments (instead of two as before)
First argument: null for now
Second: string to display
Third: string in title bar
Fourth: type of message dialog with icon
– Line 35 no icon: JOptionPane.PLAIN_MESSAGE
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
34
Adding Integers
Messa g e d ia lo g typ e
Ic o n
Desc rip tio n
JOptionPane.ERROR_MESSAGE
Displays a dialog that indicates an error
to the user.
JOptionPane.INFORMATION_MESSAGE
Displays a dialog with an informational
message to the user. The user can simply
dismiss the dialog.
JOptionPane.WARNING_MESSAGE
Displays a dialog that warns the user of a
potential problem.
JOptionPane.QUESTION_MESSAGE
Displays a dialog that poses a question to
the user. This dialog normally requires a
response, such as clicking on a Yes or a
No button.
JOptionPane.PLAIN_MESSAGE
no icon
Displays a dialog that simply contains a
message, with no icon.
Fig. 2.12 JOptionPane c o nsta nts fo r m essa g e d ia lo g s.
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
Relational Operators
Decision using if statements
36
Decision Making: Equality and Relational
Operators
• if control statement
– Simple version in this section, more detail later
– If a condition is true, then the body of the if statement
executed
– Control always resumes after the if structure
– Conditions for if statements can be formed using equality
or relational operators (next slide)
if ( condition )
statement executed if condition true
• No semicolon needed after condition
– Else conditional task not performed
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
Equality and Relational Operators
Standard algebraic
equality operator or
relational operator
C equality or
relational
operator
Example of C Meaning of C
condition
condition
=
==
x == y
x is equal to y
not =
!=
x != y
x is not equal to y
>
>
x > y
x is greater than y
<
x < y
x is less than y
>=
<
>=
x >= y
x is greater than or
equal to y
<=
<=
x <= y
x is less than or
equal to y
Equality Operators
Relational Operators
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Comparison.java
// Compare integers using if statements, relational operators
// and equality operators.
// Java packages
import javax.swing.JOptionPane;
public class Comparison {
Outline
Comparison.java
1. import
// main method begins execution of Java application
public static void main( String args[] )
{
String firstNumber;
// first string entered by user
String secondNumber; // second string entered by user
String result;
// a string containing the output
int number1;
int number2;
38
// first number to compare
// second number to compare
2. Class
Comparison
2.1 main
2.2 Declarations
// read first number from user as a string
firstNumber = JOptionPane.showInputDialog( "Enter first integer:" );
2.3 Input data
(showInputDialo
g)
// read second number from user as a string
secondNumber =
JOptionPane.showInputDialog( "Enter second integer:" );
2.4 parseInt
// convert numbers from type String to type int
number1 = Integer.parseInt( firstNumber );
number2 = Integer.parseInt( secondNumber );
// initialize result to empty String
result = "";
2.5 Initialize result
 2003 Prentice Hall, Inc.
All rights reserved.
39
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Outline
if ( number1 == number2 )
result = result + number1 + " == " + number2;
if ( number1 != number2 )
result = result + number1 + " != " + number2;
Test for equality, createComparison.java
new string,
assign to result.
if ( number1 < number2 )
result = result + "\n" + number1 + " < " + number2;
if ( number1 > number2 )
result = result + "\n" + number1 + " > " + number2;
if ( number1 <= number2 )
result = result + "\n" + number1 + " <= " + number2;
3. if statements
4.
showMessageDialo
g
if ( number1 >= number2 )
result = result + "\n" + number1 + " >= " + number2;
// Display results
JOptionPane.showMessageDialog( null, result, "Comparison Results",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
// terminate application
} // end method main
} // end class Comparison
Notice use of
JOptionPane.INFORMATION_MESSAGE
 2003 Prentice Hall, Inc.
All rights reserved.
40
Outline
Program Output
 2003 Prentice Hall, Inc.
All rights reserved.
41
2.8
Decision Making: Equality and
Relational Operators
– Lines 1-12: Comments, import JOptionPane, begin
class Comparison and main
– Lines 13-18: declare variables
• Can use comma-separated lists instead:
13
14
15
String firstNumber,
secondNumber,
result;
– Lines 21-30: obtain user-input numbers and parses input
string into integer variables
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
42
2.8
32
Decision Making: Equality and
Relational Operators
result = "";
– Initialize result with empty string
34
35
if ( number1 == number2 )
result = result + number1 + " == " + number2;
– if statement to test for equality using (==)
• If variables equal (condition true)
– result concatenated using + operator
– result = result + other strings
– Right side evaluated first, new string assigned to result
• If variables not equal, statement skipped
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
43
2.8
Decision Making: Equality and
Relational Operators
– Lines 37-50: other if statements testing for less than, more
than, etc.
• If number1 = 123 and number2 = 123
– Line 34 evaluates true (if number1 = = number 2)
• Because number1 equals number2
– Line 40 evaluates false (if number1 < number 2)
• Because number1 is not less than number2
– Line 49 evaluates true (if number1 >= number2)
• Because number1 is greater than or equal to number2
– Lines 53-54: result displayed in a dialog box using
showMessageDialog
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
44
2.8
Decision Making: Equality and
Relational Operators
• Precedence of operators
– All operators except for = (assignment) associates from left
to right
• For example: x = y = z is evaluated x = (y = z)
Op era tors
Assoc ia tivity
Typ e
* / %
left to right
multiplicative
+ left to right
additive
< <= > >=
left to right
relational
== !=
left to right
equality
=
right to left
assignment
Fig. 2.21 Prec ed enc e a nd a ssoc ia tivity of the op era tors d isc ussed so fa r.
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
45
Increment and
Decrement Operators
suffix
x++; // Same as x = x + 1;
prefix
++x; // Same as x = x + 1;
suffix
x––; // Same as x = x - 1;
prefix
––x; // Same as x = x - 1;
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
46
Increment and
Decrement Operators, cont.
int i=10;
int newNum = 10*i++;
int i=10;
int newNum = 10*(++i);
Equivalent to
Equivalent to
int newNum = 10*i;
i = i + 1;
i = i + 1;
int newNum = 10*i;
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
47
Increment and
Decrement Operators, cont.
Using
increment and decrement operators
makes expressions short
but it also makes them complex and
difficult to read.
Avoid
using these operators in
expressions that
modify multiple variables, or the same
variable for multiple times such as
this:
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
48
Assignment Expressions and Assignment
Statements
Prior to Java 2, all the expressions can be
used as statements. Since Java 2, only the
following types of expressions can be
statements:
variable op= expression; // Where op is +, -,
*, /, or %
++variable;
variable++;
--variable;
variable--;
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
49
Numeric Type Conversion
Consider the following statements:
byte i = 100;
long k = i*3+4;
double d = i*3.1+k/2;
int x = k; //(Wrong)
long k = x; //(fine,implicit casting)
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
50
Type Casting
•
•
•
•
•
•
double
float
long
int
short
byte
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
51
Type Casting, cont.
Implicit casting
double d = 3; (type widening)
Explicit casting
int i = (int)3.0; (type narrowing)
What is wrong?
int x = 5/2.0;
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
52
Character Data Type
char letter = 'A'; (ASCII)
char numChar = '4'; (ASCII)
char letter = '\u0041'; (Unicode)
char numChar = '\u0034'; (Unicode)
Special characters
char tab = ‘\t’;
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
53
Appendix B: ASCII Character Set
ASCII Character Set is a subset of the Unicode from \u0000 to \u007f
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
54
ASCII Character Set, cont.
ASCII Character Set is a subset of the Unicode from \u0000 to \u007f
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
55
Casting between char and Numeric Types
int i = 'a'; // Same as int i = (int)'a';
char c = 97; // Same as char c = (char)97;
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
56
The boolean Type and Operators
boolean lightsOn = true;
boolean lightsOn = false;
boolean b = (1 > 2);
• && (and)
(1 < x) && (x < 100)
• || (or)
(lightsOn) || (isDayTime)
•!
(not)!(isStopped)
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
57
Comparison Operators
Operator Name
<
less than
<=
less than or equal to
>
greater than
>=
greater than or equal to
==
equal to
!=
not equal to
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
58
Boolean Operators
Operator Name
!
not
&&
and
||
or
^
exclusive or
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
59
Truth Table for Operator !
Truth Table for Operator !
Operand !Operand
true
false
false
true
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
60
Truth Table for Operator &&
Operand1 Operand2 Operand1 &&
Operand2
false
false
false
false
true
false
true
false
false
true
true
true
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
61
Truth Table for Operator ||
Operand1 Operand2 Operand1 ||
Operand2
false
false
false
false
true
true
true
false
true
true
true
true
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
62
Truth Table for Operator ^
Operand1 Operand2 Operand1 ^
Operand2
false
false
false
false
true
true
true
false
true
true
true
false
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
63
The & and | Operators
&&: conditional AND operator
&: unconditional AND operator
||: conditional OR operator
|: unconditional OR operator
exp1 && exp2
(1 < x) && (x < 100)
(1 < x) & (x < 100)
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
64
The & and | Operators
If x is 1, what is x after this expression?
(x > 1) & (x++ < 10)
If x is 1, what is x after this expression?
(1 > x) && ( 1 > x++)
How about (1 == x) | (10 > x++)?
(1 == x) || (10 > x++)?
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
65
Operator Precedence
How to evaluate
3 + 4 * 4
>
5 * (4 + 3) - ++i
 2003 Prentice Hall, Inc. All rights reserved (Modified) .
66
Operator Precedence
•
•
•
•
•
•
•
•
•
•
•
•
•
•
var++, var-+, - (Unary plus and minus), ++var,--var
(type) Casting
! (Not)
*, /, % (Multiplication, division, and modulus)
+, - (Binary addition and subtraction)
<, <=, >, >= (Comparison)
==, !=; (Equality)
& (Unconditional AND)
^ (Exclusive OR)
| (Unconditional OR)
&& (Conditional AND) Short-circuit AND
|| (Conditional OR) Short-circuit OR
=, +=, -=, *=, /=, %= (Assignment operator)
 2003 Prentice Hall, Inc. All rights reserved (Modified) .