Top Banner
CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4
32

CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

Dec 13, 2015

Download

Documents

Jayson Lamb
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.1

Today’s topics

ParsingJava ProgrammingNotes from Tammy Bailey

ReadingGreat Ideas, Chapter 3 & 4

Page 2: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.2

Java programs

Java programs are created as text files using a text editor (like emacs)

Save to disk with .java file extension HelloWorld.java

The file contains characters (stored as bytes) file can be printed, displayed on monitor, or

edited file cannot be directly executed (run) by the

computer system Java must first translate the program into

bytecodes before it can be run

Page 3: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.3

Java Details

Java tutorial http://java.sun.com/docs/books/tutorial1. Do “Your First Cup of Java” and create your First

Applet2. Go to “Learning the Java Language” and read

“Language Basics” Variable: an item of data named by an identifier Operators

Arithmetic Relational and conditional Assignment Other

Expression: a series of variables, operators, and method calls that evaluates to a single value

Page 4: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.4

Bytecodes

Java bytecode machine instruction for the Java processor

Java compiler javac translates the source program into bytecodes

Bytecode file has same name as the source program with a .class file extension: HelloWorld.class

HelloWorld.java javac HelloWorld.class

source program Javacompiler

Java bytecodes

Page 5: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.5

Java Virtual Machine (JVM) Bytecode (class) file will contain exactly the same

bytecodes no matter what computer system is used

Bytecode file is executed by a Java bytecode interpreter processor specific executable program

Each type of computer system has its own Java interpreter that can run on that system

Any computer system can execute Java bytecode programs if it has a Java interpreter

Computers with Java interpreters are called Java Virtual Machines a “computer” with a Java processor that can

run Java bytecodes

Page 6: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.6

Java applets

An applet is a Java bytecode program that runs on a Web browser

Most newer Web browsers have Java interpreters Web pages on the Internet contain instructions

that send Java bytecodes to your computer Web browser runs the Java applet with its built-in

interpreter

Page 7: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.7

Data types

Computer memory stores arbitrary bit patterns Meaning of a bit pattern depends on its use Pattern used for a particular string of bits is a data

type values are any kind of data a computer can

process all values are represented using some data type

Example: What does the following pattern of 16 bits represent?

0000000001100111 No way to know without more information If data type is short (a Java type) it represents 103

Page 8: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.8

Java data types

Primitive types of data that are so fundamental ways to

represent them are built into Java Object

built-in or user-defined

Page 9: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.9

Primitive data types

All primitive values belong to one of eight primitive types

byte short int long floatdouble char boolean

Primitive data types use a fixed number of bytes four of these types designate different sizes of

bounded integers: byte, short, int, long A programmer can not create new primitive data

types Any data type you invent will be a type of object Most commonly used types in practice: int,

boolean, and double

Page 10: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.10

Java primitive data types

Primitive Type Description Range

byte 8-bit integer -128 to 127

short 16-bit integer -32768 to 32767

int 32-bit integer-2147483648 to

2147483647

long 64-bit integer -263 to 263-1

float 32-bit floating point 10-46 to 1038

double 64-bit floating point 10-324 to 10308

char Unicode character

boolean Boolean variable false and true

Page 11: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.11

Basic operators

Operator Java Description

Assignment = assigns rhs to lhs

Arithmetic +,-,*,/,%addition, subtraction, multiplication, division, remainder

Unary -,++,--negative, auto increment, auto decrement

Equality ==, != equals to, not equals to

Relational <,<=,>,>=less than, less than or equals to, greater than, greater than or equals to

Logical &&,||,! AND, OR, NOT

Page 12: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.12

Variable declaration

Declarationtype <variable-name>;

Declaration + initialization:type <variable-name> = <value>;

Variable names any combination of letters, numbers, and the

underscore character may not start with number may not be reserved word

• e.g. int, return, if, for, while may not be same as a subroutine name case-sensitive (num and Num are different)

Page 13: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.13

Examples

int x, y, z; int sum = 0; float f; double pi = 3.14; char first = ‘T’,

middle = ‘L’, last = ‘B’;

char first = ‘T’; char middle = ‘L’; char last = ‘B’;

Page 14: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.14

Operator precedence

Evaluate a + b * c multiplication first? a + (b * c) addition first? (a + b) * c

Java solves this problem by assigning priorities to operators (operator precedence)

operators with high priority are evaluated before operators with low priority

operators with equal priority are evaluated left to right

Operator priority(highest to lowest)

1. ( ) 2. * / % 3. + - 4. =

Page 15: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.15

When in doubt, use parentheses a + b * c = a + (b * c)

because * has higher priority than + To perform the + operation first we need to use

parentheses (a + b) * c

If in any doubt use extra parentheses to ensure the correct order of evaluation parentheses are free! cause no extra work for the computer only make it easier for you to work out what is

happening

Page 16: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.16

Examples Java adheres to traditional order of operations * and / have higher priority than + and –

int x = 3 + 5 * 6; (x = 33)int y = (3 + 5) * 6; (y = 48)

Parentheses are free, use them liberallyint z = ((3 + 5) * (6)); (z = 48)

Equal priority operations are evaluated left-to-right in the absence of parenthesesint w = 3 * 4 / 2 * 6; (w = 36)int x = 3 * 4 / (2 * 6); (x = 1)int y = 3 * 4 + 2 * 6; (y = 24)int z = 3 * (4 + 2) * 6; (z = 108)

Page 17: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.17

Syntax and semantics

Addition, subtraction: + and –, int and doubleint x = 21+4; (x = 25) double y = 14.1-2; (y = 12.1)

Multiplication: *, int and doubleint x = 21*4; (x = 84)double y = 14.1*2.5; (y = 35.25)

Division: /, different for int and doubleint x = 21/4; (x = 5)double y = 21/4; (y = 5.0)double y = 21/4.0; (y = 5.25)

Modulus: %, only for intint x = 21%4; (x = 1)

Page 18: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.18

Automatic type conversion Mixed type expressions

are converted to higher compatible types

If all operands are of type int then result is type int

If any operand is of type double then result is of type double

Cannot convert to a lower type

Conversion may result in loss of precision

Example:Convert Fahrenheit to

Celsius

double F=41.0;

double C=(F-32.0)*(5/9);

Question: What is the value of C?a) 5b) 0.0c) 9.0d) 5.0e) 9

Page 19: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.19

More expressions

int g = 12 + 2.5;What is the value of g?a. 0b. 12c. 14d. 14.5

e. error

int x = 8 * (7 – 6 + 5) % (4 + 3 / 2) – 1;What is the value of x?a. -1b. 0c. 2d. 3

e. none of the above

int n = 1 – 2 * 3 – (4 + 5); What is the value of n?

Page 20: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.20

Syntax errors

The following Java subroutine computes the inclusive sum between two integers. Find all the syntax errors.

int sumBetween( x, y )

{

int z = x;

Int sum = 1;

while( z <= y ){

sum = sum*z;

z++

}

}

Page 21: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.21

Logic errors

The computer will do precisely what you say even though it may not be what you want

What is wrong with this code?

int sumBetween( int x, int y )

{

int z = x;

int sum = 1;

while( z <= y )

sum = sum*z;

z++;

}

Page 22: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.22

Java objects

Java is an object-oriented programming language use objects to define both the data type and

the operations that can be applied to the data Objects have attributes and functionality

attributes describe the state of the object the functionality of an object is the set of

actions the object can perform In Java, we define an object’s attributes using

variables and its functionality using methods

Page 23: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.23

Real-world objects Suppose we want to describe a car in terms of its

attributes and functionality Attributes:

int year; int mileage; String make; String model; boolean manual_transmission;

Methods: void brake() int getMileage() boolean needsGas() void shift(int gear)

Page 24: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.24

Java classes

Java objects are created using classes Encapsulation

combining elements to create a new entity A class encapsulates the variables and methods

that define an object Instantiation

the act of creating an object objects are called class instances

Java provides many predefined classes You can also define your own classes

Page 25: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.25

Java String class

The String class represents character stringsString first = “Tammy”;

String last = “Bailey”;

Strings can be concatenated (added together) using the concatenation operator + String fullname = first + “ ” + last;

Testing for equality: first.equals(“Tammy”); /* returns true */

first.equals(“Amy”); /* returns false */

Page 26: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.26

Instantiation

Creating an object is called instantiation the new operator is used with class name

Example: Create a TextField objectTextField t = new TextField();

Can create multiple instances of the same classTextField t1 = new TextField();TextField t2 = new TextField();

Exception the new operator is not required when creating a

String

Page 27: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.27

Java TextField class

The TextField class allows the editing and display of a single line of text

TextField t = new TextField();

Methods setText(String s)

• set the text of the field to the string s String getText()

• get the text of the field and assign it to a variable of type string

Page 28: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.28

Invoking an object’s methods

Once we create a text field, we can perform actions on it using its methods

The variables and methods of an object are accessed using the dot operator

TextField t = new TextField();

t.setText(“Hello”); Syntax

object.verb(data); Perform verb on object using data

Page 29: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.29

Interactive objects

User interaction determines the behavior of the program

Program receives user input through mouse and keyboard and performs associated method or action

Text fields edit and display single line of text

Buttons can specify action to occur when button is

clicked

Page 30: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.30

Action listeners

If we want a button to know when it is clicked, we have to enable it to “listen” for user input

Use the button method addActionListener

Button b = new Button(“click!”);

b.addActionListener(this);

If we don’t invoke the addActionListener method on a button, nothing will happen when the button is clicked

Page 31: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.31

Example

We would like our applet to do the following: get text from text field t1 and display it in text

field t2 when button b is clicked

TextField t1 = new TextField();

TextField t2 = new TextField();

Button b = new Button(“copy text”);

b.addActionListener(this);

Page 32: CompSci 001 8.1 Today’s topics Parsing Java Programming Notes from Tammy Bailey Reading Great Ideas, Chapter 3 & 4.

CompSci 001 8.32

Think about it

Puzzle: Toggling Frogs You have 100 light switches, numbered 1-100, and 100 frogs, also numbered 1-100. Whenever a frog jumps on a light switch, it toggles a light between on and off. All

lights are initially off. • frog #1 jumps on every light switch (ie turning them all on). • frog #2 jumps on every 2nd light switch, toggling some of them back off.

... • frog #k jumps on every kth light switch.

After 100 frogs, which lights are on?

Game: Don’t be last You and a friend have a stack of 10 coins. On each person's turn, they remove either 1 or 2 coins from the stack. The person who removes the last coin wins. What is a winning strategy? Should you go first or second?