660 likes | 671 Views
This lecture covers the basics of mathematical and relational operators in computer programming, including binary operators, integer division, modulus division, odd/even numbers, and operator precedence.
E N D
Introduction to Computers and ProgrammingLecture 4: Mathematical and Relational Operators
Basic Mathematical Operators Each of the operators in the table are binary operators. A binary operator acts on two operands
Lets look at a program toCalculate 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); } }
Integer Division - The Problem • Suppose you have the following code: • Using a calculator, the answer is 1.75. • But x can only hold integer values. • 1.75 is clearly not an integer value. int x; x = 7 / 4;
Integer Division - Solution • To understand the solution, you need to remember your 3rd Grade Math (really.) • 7/4 = 1 (Integer Division) • 7%4 = 3 (Modulus Division) 1 4 7 4 3 The answer: 1 remainder 3
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 • No matter what, your answers must be integers. 0 5/10 = 0 5%10 = 5 10 5 5/10: 0 5%10: 5 0 5
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)
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” ); } }
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"); } } month is 12 day is 13 Press any key to continue...
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 Precedence • Hence, option #2 is always correct • (multiplication is performed first): • Example: • Find the average of three variables a, b and c • Do not use: a + b + c / 3 • Use: (a + b + c ) / 3 x = 7 + 3 * 6; Evaluates to x = 7 + 18 = 25
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 = m * x + b ; y = (m * x) + b; • e.g. y = a * b * b + c * b – d; y = (((a * b) * b) + (c * b)) – d;
Lets look at a program to allow user to input datausing an imput text prompt window
Getting Input from Input Dialog Boxes String string = JOptionPane.showInputDialog( null, “Prompt Message”, “Dialog Title”, JOptionPane.QUESTION_MESSAGE));
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”.
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”.
Declare variables: name and type. Input first integer as a String, assign to firstNumber. Convert strings to integers. Add, place result in sum. 1 // Addition2.java uses JOptionPane prompt window to enter data 2 // Addition program that displays the sum of two numbers. 3 4 // Java packages 5 import javax.swing.JOptionPane; // program uses JOptionPane 6 7 public class Addition2 { 8 9 // main method begins execution of Java application 10 public static void main( String args[] ) 11 { 12 String firstNumber; // first string entered by user 13 String secondNumber; // second string entered by user 14 15 int number1; // first number to add 16 int number2; // second number to add 17 int sum; // sum of number1 and number2 18 19 // read in first number from user as a String 20 firstNumber = JOptionPane.showInputDialog( "Enter first integer" ); 21 22 // read in second number from user as a String 23 secondNumber = 24 JOptionPane.showInputDialog( "Enter second integer" ); 25 26 // convert numbers from type String to type int 27 number1 = Integer.parseInt( firstNumber ); 28 number2 = Integer.parseInt( secondNumber ); 29 30 // add numbers 31 sum = number1 + number2; 32 Addition2.java1. import2. class Addition2.1 Declare variables (name and type)3. showInputDialog4. parseInt5. Add numbers, put result in sum
33 // display result 34 JOptionPane.showMessageDialog( null, "The sum is " + sum, 35 "Results", JOptionPane.PLAIN_MESSAGE ); 36 37 System.exit( 0 ); // terminate application with window 38 39 } // end method main 40 41 } // end class Addition2 Program output
5 import javax.swing.JOptionPane; // program uses JOptionPane 7 public class Addition { 12 String firstNumber; // first string entered by user 13 String secondNumber; // second string entered by user Adding Integers • Location of JOptionPane for use in the program • Begins public class Addition • Recall that file name must be Addition.java • Lines 10-11: main • Declaration • firstNumber and secondNumber are variables
String firstNumber, secondNumber; 12 String firstNumber; // first string entered by user 13 String secondNumber; // second string entered by user Adding Integers • 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 ; • Can declare multiple variables of the same type at a time • Use comma separated list • Can add comments to describe purpose of variables
15 int number1; // first number to add 16 int number2; // second number to add 17 int sum; // sum of number1 and number2 Adding Integers • 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
20 firstNumber = JOptionPane.showInputDialog( "Enter first integer" ); Adding Integers • 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
20 firstNumber = JOptionPane.showInputDialog( "Enter first integer" ); Adding Integers • 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" )
23 secondNumber = 24 JOptionPane.showInputDialog( "Enter second integer" ); 27 number1 = Integer.parseInt( firstNumber ); 28 number2 = Integer.parseInt( secondNumber ); Adding Integers • Similar to previous statement • Assigns variable secondNumber to second integer input • 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
31 sum = number1 + number2; Adding Integers • Assignment statement • Calculates sum ofnumber1 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 number2are operands
34 JOptionPane.showMessageDialog( null, "The sum is " + sum, 35 "Results", JOptionPane.PLAIN_MESSAGE ); Adding Integers • Use showMessageDialog to display results • "Thesumis"+sum • Uses the operator + to "add" the string literal "Thesumis" and sum • Concatenation of a String and another type • Results in a new string • If sum contains 117, then "Thesumis"+sum results in the new string "Thesumis117" • Note the space in "Thesumis" • More on strings in Chapter 11
34 JOptionPane.showMessageDialog( null, "The sum is " + sum, 35 "Results", JOptionPane.PLAIN_MESSAGE ); Adding Integers • 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
Relational Operators Decision using if statements
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
1 // Comparison.java 2 // Compare integers using if statements, relational operators 3 // and equality operators. 4 5 // Java packages 6 import javax.swing.JOptionPane; 7 8 public class Comparison { 9 10 // main method begins execution of Java application 11 public static void main( String args[] ) 12 { 13 String firstNumber; // first string entered by user 14 String secondNumber; // second string entered by user 15 String result; // a string containing the output 16 17 int number1; // first number to compare 18 int number2; // second number to compare 19 20 // read first number from user as a string 21 firstNumber = JOptionPane.showInputDialog( "Enter first integer:" ); 22 23 // read second number from user as a string 24 secondNumber = 25 JOptionPane.showInputDialog( "Enter second integer:" ); 26 27 // convert numbers from type String to type int 28 number1 = Integer.parseInt( firstNumber ); 29 number2 = Integer.parseInt( secondNumber ); 30 31 // initialize result to empty String 32 result = ""; 33 Comparison.java1. import2. Class Comparison2.1 main2.2 Declarations2.3 Input data (showInputDialog)2.4 parseInt2.5 Initialize result
Test for equality, create new string, assign to result. Notice use of JOptionPane.INFORMATION_MESSAGE 34 if ( number1 == number2 ) 35 result = result + number1 + " == " + number2; 36 37 if ( number1 != number2 ) 38 result = result + number1 + " != " + number2; 39 40 if ( number1 < number2 ) 41 result = result + "\n" + number1 + " < " + number2; 42 43 if ( number1 > number2 ) 44 result = result + "\n" + number1 + " > " + number2; 45 46 if ( number1 <= number2 ) 47 result = result + "\n" + number1 + " <= " + number2; 48 49 if ( number1 >= number2 ) 50 result = result + "\n" + number1 + " >= " + number2; 51 52 // Display results 53 JOptionPane.showMessageDialog( null, result, "Comparison Results", 54 JOptionPane.INFORMATION_MESSAGE ); 55 56 System.exit( 0 ); // terminate application 57 58 } // end method main 59 60 } // end class Comparison Comparison.java3. if statements4. showMessageDialog
13 String firstNumber, 14 secondNumber, 15 result; 2.8 Decision Making: Equality and Relational Operators • Lines 1-12: Comments, importJOptionPane, beginclass Comparison and main • Lines 13-18: declare variables • Can use comma-separated lists instead: • Lines 21-30: obtain user-input numbers and parses input string into integer variables
32 result = ""; 34 if ( number1 == number2 ) 35 result = result + number1 + " == " + number2; 2.8 Decision Making: Equality and Relational Operators • Initialize result with empty string • 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
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
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)
Increment andDecrement 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: int k = ++i + I;
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--;
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)
Type Casting • double • float • long • int • short • byte