CS 106 Introduction to Computer Science I 09 / 18 / 2006 Instructor: Michael Eckmann.

Slides:



Advertisements
Similar presentations
Chapter 41 Variables and JSP Control Structures JavaServer Pages By Xue Bai.
Advertisements

CS 106 Introduction to Computer Science I 02 / 29 / 2008 Instructor: Michael Eckmann.
Data Types in Java Data is the information that a program has to work with. Data is of different types. The type of a piece of data tells Java what can.
CS 106 Introduction to Computer Science I 09 / 25 / 2006 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 11 / 09 / 2007 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 09 / 13 / 2006 Instructor: Michael Eckmann.
Introduction to Programming with Java, for Beginners Primitive Types Expressions Statements Variables Strings.
CS 106 Introduction to Computer Science I 02 / 04 / 2008 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 01 / 30 / 2008 Instructor: Michael Eckmann.
Chapter 4 - Control Structures: Part 1 Outline 4.4Control Structures 4.5The if Selection Structure 4.6The if/else Selection Structure 4.7The while Repetition.
CS 106 Introduction to Computer Science I 09 / 14 / 2007 Instructor: Michael Eckmann.
© Janice Regan, CMPT 102, Sept CMPT 102 Introduction to Scientific Computer Programming Expressions and Operators Program Style.
Aalborg Media Lab 21-Jun-15 Software Design Lecture 2 “ Data and Expressions”
CS 106 Introduction to Computer Science I 02 / 11 / 2008 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 10 / 04 / 2006 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 03 / 30 / 2007 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 10 / 09 / 2006 Instructor: Michael Eckmann.
ECE122 L3: Expression Evaluation February 6, 2007 ECE 122 Engineering Problem Solving with Java Lecture 3 Expression Evaluation and Program Interaction.
CS 106 Introduction to Computer Science I 02 / 24 / 2010 Instructor: Michael Eckmann.
CSci 142 Data and Expressions. 2  Topics  Strings  Primitive data types  Using variables and constants  Expressions and operator precedence  Data.
CS 106 Introduction to Computer Science I 02 / 19 / 2007 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 09 / 28 / 2007 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 09 / 11 / 2006 Instructor: Michael Eckmann.
Expressions, Data Conversion, and Input
Java Primitives The Smallest Building Blocks of the Language (corresponds with Chapter 2)
Chapter 2: Basic Elements of Java J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Second Edition.
Chapter 2 Basic Elements of Java. Chapter Objectives Become familiar with the basic components of a Java program, including methods, special symbols,
Operators Using Java operators An operator takes one or more arguments and produces a new value. All operators produce a value from their.
Introduction to Java Applications Part II. In this chapter you will learn:  Different data types( Primitive data types).  How to declare variables?
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Java Software Solutions Foundations of Program Design Sixth Edition by Lewis.
Java Programming: From Problem Analysis to Program Design, 4e Chapter 2 Basic Elements of Java.
Java Programming: From Problem Analysis to Program Design, 5e Chapter 2 Basic Elements of Java.
CS 106 Introduction to Computer Science I 01 / 31 / 2007 Instructor: Michael Eckmann.
Operators Precedence - Operators with the highest precedence will be executed first. Page 54 of the book and Appendix B list C's operator precedence. Parenthesis.
Mathematical Calculations in Java Mrs. C. Furman.
CS 106 Introduction to Computer Science I 09 / 26 / 2007 Instructor: Michael Eckmann.
School of Computer Science & Information Technology G6DICP - Lecture 4 Variables, data types & decision making.
Outline Character Strings Variables and Assignment Primitive Data Types Expressions Data Conversion Interactive Programs Graphics Applets Drawing Shapes.
COM S 207 Literal, Operator, and Expression Instructor: Ying Cai Department of Computer Science Iowa State University
Programming in Java (COP 2250) Lecture 4 Chengyong Yang Fall, 2005.
CSC 1051 – Algorithms and Data Structures I Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Course website:
CS 106 Introduction to Computer Science I 02 / 01 / 2008 Instructor: Michael Eckmann.
Introduction to Java Applications Part II. In this chapter you will learn:  Different data types( Primitive data types).  How to declare variables?
1 CSC 221: Computer Programming I Fall 2005 simple conditionals and expressions  if statements, if-else  increment/decrement, arithmetic assignments.
CS 106 Introduction to Computer Science I 09 / 10 / 2007 Instructor: Michael Eckmann.
Java Programming: From Problem Analysis to Program Design, Second Edition 1 Lecture 1 Objectives  Become familiar with the basic components of a Java.
1 1 Chapter 2 Elementary Programming. 2 2 Motivations In the preceding chapter, you learned how to create, compile, and run a Java program. Starting from.
CSCI 1100/1202 January 18, Arithmetic Expressions An expression is a combination of operators and operands Arithmetic expressions compute numeric.
Expressions Version Topics Arithmetic expressions Conversions Operator precedence String class 2.
CS 106 Introduction to Computer Science I 01 / 24 / 2007 Instructor: Michael Eckmann.
CS0007: Introduction to Computer Programming Primitive Data Types and Arithmetic Operations.
Data and Expressions. Let's explore some other fundamental programming concepts Chapter 2 focuses on: Character Strings Primitive Data The Declaration.
Lecture 3: More Java Basics Michael Hsu CSULA. Recall From Lecture Two  Write a basic program in Java  The process of writing, compiling, and running.
CompSci 230 S Programming Techniques
Chapter 2 Basic Computation
Chapter 7: Expressions and Assignment Statements
Lecture 3 Java Operators.
Lecture 3: Operators, Expressions and Type Conversion
2.5 Another Java Application: Adding Integers
Chapter 7: Expressions and Assignment Statements
Data Conversion & Scanner Class
Multiple variables can be created in one declaration
Assignment and Arithmetic expressions
Type Conversion, Constants, and the String Object
Java Programming: From Problem Analysis to Program Design, 4e
Operators and Expressions
Chapter 2: Basic Elements of Java
elementary programming
CS2011 Introduction to Programming I Elementary Programming
Primitive Types and Expressions
Presentation transcript:

CS 106 Introduction to Computer Science I 09 / 18 / 2006 Instructor: Michael Eckmann

Michael Eckmann - Skidmore College - CS Fall 2006 Today’s Topics Comments and/or Questions? Any successful installations of Eclipse/Java? lab issues Scanner class for keyboard input (vs. JoptionPane.showInputDialog ) how Java determines the resulting type in an expression type promotion (done automatically by Java) type casting (done explicitly by the programmer) increment and decrement operators more assignment operators besides = calling methods and method terminology comparing data

Empty statement ; The above is a valid statement in Java called the empty statement. Michael Eckmann - Skidmore College - CS Fall 2006

Semicolon after if condition is (almost) always a logic error if (condition) ; System.out.println(“Hey”); semicolons are at the end of statements (ifs are not statements) The first ; is an “empty statement” and that is what gets executed if the condition is true. The next line will always execute, regardless of whether condition is true or not! Michael Eckmann - Skidmore College - CS Fall 2006

lab exercises Double is not the same as double. double is a primitive type, Double (with a capital D) is a class. There are what are called “wrapper” classes for all the primitive types. They are: Integer int Double double Character char Float float Boolean boolean Byte byte Long long Short short Michael Eckmann - Skidmore College - CS Fall 2006

lab exercises We used a method in a few of the wrapper classes to convert a String into the wrapper class' associated primitive type. How did we do that? Does anyone remember? Michael Eckmann - Skidmore College - CS Fall 2006

lab exercises We used a method in a few of the wrapper classes to convert a String into the wrapper class' associated primitive type. How did we do that? Does anyone remember? int homers_int; String homers_str = “49”; homers_int = Integer.parseInt(homers_str); int weight; String weight_str = “182.5”; weight = Double.parseDouble(weight_str); Michael Eckmann - Skidmore College - CS Fall 2006

java.util.Scanner Scanner input_scan = new Scanner(System.in); methods that you can call on your scanner object include: –nextInt() --- reads an int from keyboard (store what's returned into an int) –nextDouble() --- reads a double from keyboard –nextLine() --- reads a line (as a String) from keyboard –next() --- reads a “word” from the keyboard --- which is a string of nonwhitespace chars delimited by whitespace. whitespace is \n, blank space character, \t, \r Michael Eckmann - Skidmore College - CS Fall 2006

java.util.Scanner nextLine() --- reads a line (as a String) from keyboard –this method “consumes” the \n but does not make it part of the String that is returned. String s1, s2; Scanner my_scan = new Scanner(System.in); s1 = my_scan.nextLine(); s2 = my_scan.nextLine(); –if input is: CS106 Introduction to Computer Science I –there is a \n after CS106 in the input (i.e. user hit enter key), but s1 will be “CS106” and s2 will be “Introduction to Computer Science I” neither will have \n as a character in its String. Michael Eckmann - Skidmore College - CS Fall 2006

How Java determines type Each operator in a complex expression is evaluated one at a time. The order they are done is according to the precedence rules we learned last time. What Java does (and we need to do as well if we are to understand how it works) is it evaluates one operator at a time and uses information about the type of operand(s) being worked on to determine the type of the result. example expressions: 14 * some_int // assume that the type of some_int is int * diameter // assume that the type of diameter is double Java figures out the resulting types according to the types of the operands. This is easy if the operands are the same type. Michael Eckmann - Skidmore College - CS Fall 2006

How Java determines type If the operands are of different types, Java promotes/converts one of the operands to the type of the other thereby temporarily making them the same type and makes that the resulting type as well. This promotion is sometimes called type coercion. We saw a kind of type coercion when we concatenate Strings with non-strings. Java temporarily converts the non-string to a String and concatenates them. In expressions among operands of different types, Java does the following. It temporarily converts the smaller type into the larger type, then does the operation and the result is the larger type. The order of the primitive types from “smaller” to “larger” is: –byte, short, int, long, float, double –this list excludes char and boolean Michael Eckmann - Skidmore College - CS Fall 2006

How Java determines types Examples // an int is being added to a double 19 / 9 // an int is being divided by an int Michael Eckmann - Skidmore College - CS Fall 2006

How Java determines types Examples: int a = 5, b = 6, c; double d1 = 4.3, d2 = 88.4, d3; d3 = d1 * a; /* here a is temporarily converted to be used as a double (just for this calculation) and then the multiplication is done and the result is a double. This result is then assigned to the variable d3 */ //problem if try to assign a double to an int, e.g. c = d2 * b; // what will happen? Try it and see. Michael Eckmann - Skidmore College - CS Fall 2006

another promotion example E.g. int count = 3; double sum=6.7, result; result = sum / count; /* count is promoted to be used as a double automatically so the division can take place */ Michael Eckmann - Skidmore College - CS Fall 2006

Assignment conversion The name given to Java’s type conversion that is done when a value of one type is assigned to a variable of another type. This is allowed as long as we are assigning a “smaller” type to a “larger” type. What does that mean? E.g. int count = 3; float result; result = count; /* count is converted to be used as a float automatically and it’s value is assigned to result 3.0 */ Michael Eckmann - Skidmore College - CS Fall 2006

Casting conversion The name given to the programmer’s ability to force type conversion. E.g. int number_of_students, number_of_faculty; double students_per_faculty; students_per_faculty = (double) number_of_students / number_of_faculty; /* force number_of_students to be used as a double and then result of division is double… also contains use of promotion --- where is promotion done? */ Michael Eckmann - Skidmore College - CS Fall 2006

Casting conversion Another example. int homers_so_far, games_so_far; double projected_homers; // assume the ints get values from somewhere then... projected_homers = (double)162 * homers_so_far / games_so_far; // I'll explain exactly what is going on here with the types Michael Eckmann - Skidmore College - CS Fall 2006

Increment & decrement (sec. 2.1) ++ and - - note: there must be no space btwn the minuses or the plusses ++ adds 1 to the variable - - subtracts 1 from the variable int count = 55; count++; // same as count = count + 1; Michael Eckmann - Skidmore College - CS Fall 2006

Increment & decrement (sec. 2.1) count++; // adds 1 to count ++count; // also adds 1 to count count--; // subtracts 1 from count --count; // also subtracts 1 from count Which side the ++ or - - is on only matters when it's used within an expression. Michael Eckmann - Skidmore College - CS Fall 2006

Increment & decrement (sec. 2.1) Note: ++ before a variable or expression is a preincrement, ++ after a variable or expression is postincrement, -- before a variable or expression is a predecrement, -- after a variable or expression is a postdecrement. Michael Eckmann - Skidmore College - CS Fall 2006

Increment & decrement (sec. 2.1) Which side the ++ or -- is on only matters when it's used within an expression. e.g. total = count++; acts differently than total = ++count; Michael Eckmann - Skidmore College - CS Fall 2006

Increment & decrement (sec. 2.1) total = count++; /* the above line assigns the value of count to total and then adds 1 to count (hence the name post- increment) */ total = ++count; /* the above line adds 1 to the value of count and then assigns this new value of count to total (pre- increment) */ // so what's the difference? Michael Eckmann - Skidmore College - CS Fall 2006

Increment & decrement (sec. 2.1) Also similar behavior in conditions of if's e.g. if (index++ >= 5) // execute something if true else // execute something if false /* the above first compares index and 5 to determine if index is >=5, then 1 is added to index, then depending on result of the compare, the if or else line will execute */ Michael Eckmann - Skidmore College - CS Fall 2006

Increment & decrement (sec. 2.1) Also similar behavior in conditions of if's e.g. if (++index >= 5) // execute something if true else // execute something if false /* the above first adds 1 to index and then compares this new value of index to 5 to determine if index is >=5, then depending on result of the compare, the if or else line will execute */ Michael Eckmann - Skidmore College - CS Fall 2006

More assignment operators besides = +=, -=, *=, /=, %= Here's what they mean. Suppose we have: int a=7; a = a + 6; // is equivalent to: a += 6; These assignment operators are used only if the LHS (left hand side of the assignment) is also the first variable on the RHS. Michael Eckmann - Skidmore College - CS Fall 2006

More assignment operators besides = +=, -=, *=, /=, %= More examples: degrees -= 5; /* subtract 5 from degrees and store this new value in degrees. */ halve_me /= 2; /* divides the value in halve_me by 2 and stores this new value in itself */ fine *= 3; // value in fine is tripled Michael Eckmann - Skidmore College - CS Fall 2006

method terminology void – another type in Java which is used when no value is needed. Michael Eckmann - Skidmore College - CS Fall 2006

method terminology Parameter – methods have 0 or more parameters. These specify what types of values are used when a method call is made. Calling a method – invoking a method by giving its name in a statement in your program: –e.g. –System.out.println(“Hey”); // method call for println method –height = Integer.parseInt(height_str); // method call for parseInt method Note: A String is being passed in as a parameter for println. Same for parseInt. Michael Eckmann - Skidmore College - CS Fall 2006

method terminology Return type of a method – This is what type the result of a method call gives. e.g. –System.out.println(“Hey”); // nothing is returned (void) –height = Integer.parseInt(height_str); // an int is returned The return type and number of parameters and types are all specified in the definition of a method. For the Java API methods, we can look this stuff up online. Michael Eckmann - Skidmore College - CS Fall 2006

Comparing data Comparing primitive type variable values is different than comparing variables of non-primitive types. Recall the primitive types: char, byte, short, int, long, float, double, boolean. String, Scanner, and many others which we have yet to see are classes which can be types for variables. These kinds of variables are not of the primitive types. These kids of variables are also called objects or object references. Michael Eckmann - Skidmore College - CS Fall 2006

Comparing data Example chars char some_char = 'a', first_letter = 'E', a_digit = '7'; // note: a char literal is always in single quotes. Examples of how to compare chars for equality (some_char == 'a') (some_char == 'b') (some_char == a_digit) Also could compare less than, greater than, etc. for chars What would that mean? Michael Eckmann - Skidmore College - CS Fall 2006

Comparing data Example ints (same for byte, long, short) int height = 65, length = 4, width = 6; Examples of how to compare ints (height < 70) (width == length) Michael Eckmann - Skidmore College - CS Fall 2006

Comparing data Example booleans boolean done_yet = false, old_enough = true; Examples of how to compare booleans (done_yet == true) (done_yet) (old_enough) (!old_enough) (done_yet == old_enough) Michael Eckmann - Skidmore College - CS Fall 2006

Comparing data Example doubles (same for floats) double weight = 5.6; // note: a decimal number literal is assumed by Java to be // a double (not a float) Examples of how to compare doubles (weight > 5.1) (weight == 5.6) // problem because doubles (and floats) // are not stored exactly (depending on the value) // so it is dangerous to check for equality – don't do it. Michael Eckmann - Skidmore College - CS Fall 2006

Comparing data Example Strings String name = “Mike”; // note: a String literal is enclosed in double quotes Example of how not to compare Strings (name == “Mike”) /* sometimes works sometimes doesn't because since name is an object (not a variable of a primitive type), when compared using the comparison operators, Java compares the memory locations, not the values. */ Michael Eckmann - Skidmore College - CS Fall 2006

Comparing data Example Strings String name = “Mike”; Example of how to compare Strings (use method(s) in the String class for this purpose) (name.equals(“Mike”)) // or (name.equalsIgnoreCase(“mike”)) Here we are calling methods in the String class. What is the type of the value that is returned by these methods? Michael Eckmann - Skidmore College - CS Fall 2006

Comparing data Another way to compare Strings is to use the compareTo method of the String class. The calling String (the one to the left of the. ) is compared lexicographically to the String that is passed in as a parameter. If the calling String is less than the parameter String the result is a negative number. If they are equal, the result is 0. Otherwise the result is a positive number. What is the type of the value that is returned by this method? Michael Eckmann - Skidmore College - CS Fall 2006