59
CS 121 Week 15 - Monday

Week 15 - Monday. What did we talk about last time? File I/O

Embed Size (px)

Citation preview

Page 1: Week 15 - Monday.  What did we talk about last time?  File I/O

CS 121Week 15 - Monday

Page 2: Week 15 - Monday.  What did we talk about last time?  File I/O

Last time

What did we talk about last time? File I/O

Page 3: Week 15 - Monday.  What did we talk about last time?  File I/O

Questions?

Page 4: Week 15 - Monday.  What did we talk about last time?  File I/O

Project 5

Page 5: Week 15 - Monday.  What did we talk about last time?  File I/O

Final Exam Format

20% multiple choice questions 20% short answer questions 60% programming Designed to take 2 hours (50%

longer than the previous exams) But, you will have the full 3 hour time

period More focus will be on the second half

of the semester

Page 6: Week 15 - Monday.  What did we talk about last time?  File I/O

Review up to Exam 1

Page 7: Week 15 - Monday.  What did we talk about last time?  File I/O

Week 1 review topics

History of computers Hardware Software development Basic Java syntax Output with System.out.print()

Page 8: Week 15 - Monday.  What did we talk about last time?  File I/O

History of computers

Mechanical Calculation Devices (2400BC onward)• Aid to human calculation• No stored program

Mechanical Computers (1725 onward) • Punch card programming• Serious limitations

Early Electronic Computers (1941 onward)• General purpose, stored program computers• Electronic, using vacuum tubes

Microprocessors (1970's onward)• Succeeded transistors• Now billions of computations per second at a nanometer scale

Page 9: Week 15 - Monday.  What did we talk about last time?  File I/O

Memory

Cache• Actually on the CPU• Fast and expensive

RAM• Primary memory for a desktop computer• Pretty fast and relatively expensive

Flash Drive• Faster than hard drives• Most commonly on USB keychains

Hard Drive• Secondary memory for a desktop computer• Slow and cheap

Optical Drive• Secondary memory that can usually only be written once• Very slow and very cheap

Page 10: Week 15 - Monday.  What did we talk about last time?  File I/O

Memory

Storage for all the data and instructions on your computer

Modern computers store everything as binary digits (bits) which have a value of 0 or 1.1 byte = 8 bits

1 kilobyte (kb) = 210 bytes

1 megabyte (mb)

= 220 bytes

1 gigabyte (gb)

= 230 bytes

1 terabyte (tb) = 240 bytes

Page 11: Week 15 - Monday.  What did we talk about last time?  File I/O

Input/Output

Monitor• Common visual output device

Speakers• Common audio output device

Mouse• Common input device

Keyboard• Common input device

Page 12: Week 15 - Monday.  What did we talk about last time?  File I/O

General compilation model

Computer!

Solve a problem;

Compile

010101010

010100101

001110010

Execute

Source Code

Machine Code Hardwar

e

Page 13: Week 15 - Monday.  What did we talk about last time?  File I/O

Compilation and Execution for Java

class A

{

Problem p;

p.solve();

}

Compile

101110101101011010110010011

JVM010101010010100101001110010

Execute

Java SourceCode

Machine Code Hardwar

e

Java Bytecod

e

PlatformIndependent

PlatformDependent

Page 14: Week 15 - Monday.  What did we talk about last time?  File I/O

Software development

Often goes through phases similar to the following:

1. Understand the problem2. Plan a solution to the problem3. Implement the solution in a

programming language4. Test the solution5. Maintain the solution and do bug fixesFactor of 10 rule!

Page 15: Week 15 - Monday.  What did we talk about last time?  File I/O

A basic Java program

The absolute smallest program possible, with a print statement

public class Hello{public static void main(String[] args){

System.out.println("Hello, world!");}

}

Page 16: Week 15 - Monday.  What did we talk about last time?  File I/O

Sequencing

For example, instead of one print statement, we can have several:

Each statement is an instruction to the computer

They are printed in order, one by one

System.out.println("Hello, world!");System.out.println("Hello, galaxy!");System.out.println("Goodbye, world!");

Page 17: Week 15 - Monday.  What did we talk about last time?  File I/O

Case Sensitivity

Java is a case sensitive languageClass is not the same as classSystem.out.println("Word!");

prints correctlysystem.Out.Println("Word!");

does not compile

Page 18: Week 15 - Monday.  What did we talk about last time?  File I/O

Whitespace

Java generally ignores whitespace (tabs, newlines, and spaces)

is the same as:

You should use whitespace effectively to make your code readable

System.out.println("Hello, world!");

System.out.

println( "Hello, world!");

Page 19: Week 15 - Monday.  What did we talk about last time?  File I/O

Comments

There are two kinds of comments (actually 3)

Single line comments use //

Multi-line comments start with a /* and end with a */

System.out.println("Hi!"); // this is a comment

System.out.println("Hi!"); /* this is a multi-linecomment */

Page 20: Week 15 - Monday.  What did we talk about last time?  File I/O

Week 2 review topics

Binary representation Basic data types Using Scanner for input

Page 21: Week 15 - Monday.  What did we talk about last time?  File I/O

Base 2 (binary) numbers

The binary number system is base 2 This means that its digits are: 0 and

1 Base 2 means that you need 2 digits

to represent two, namely 1 and 0 Each place in the number as you

move left corresponds to an increase by a factor of 2 instead of 10

Page 22: Week 15 - Monday.  What did we talk about last time?  File I/O

Base 2 Example

11111011111

Ones

1024’s

Sixteens

Thirty twosEights

Sixty fours

Twos

Fours256’s

128’s

512’s

Page 23: Week 15 - Monday.  What did we talk about last time?  File I/O

Built-in types

We are going to focus on five basic types of data in Java

These are: int For whole numbers double For rational numbers boolean For true or false values char For single characters String For words

As you now know, String is a little different from the rest

Page 24: Week 15 - Monday.  What did we talk about last time?  File I/O

Summary of types

Type Kind of values Sample Literals

int Integers-50

900031

double Floating-pointNumbers

3.14-0.6

6.02e23

boolean Boolean valuestrue false

char Single characters'A''Z''&'

String Sequences ofcharacters

"If you dis Dr. Dre""10 Sequipedalians"

Page 25: Week 15 - Monday.  What did we talk about last time?  File I/O

The int type

The int type is used to store integers (positive and negative whole numbers and zero)

Examples: 54 -893992 0

Inside the computer, an int takes up 4 bytes of space, which is 32 bits (1's and 0's)

Page 26: Week 15 - Monday.  What did we talk about last time?  File I/O

The double type

You will use the int type very often Sometimes, however, you need to

represent numbers with a fractional part

The double type is well suited to this purpose

Declaration of a double variable is just like an int variable:double x = 1.28;

Page 27: Week 15 - Monday.  What did we talk about last time?  File I/O

The boolean type

Numbers are great But, sometimes you only need to

keep track of whether or not something is true or false

This is what the boolean type is for Hopefully you have more

appreciation for booleans now Declaration of a boolean variable is

like so:boolean value = false;

Page 28: Week 15 - Monday.  What did we talk about last time?  File I/O

The char type

Sometimes you need to deal with characters

This is what the char type is for The char type only allows you to

store a single character like '$' or 'q'

Declaration of a char variable is like so:char c = 'L';

Page 29: Week 15 - Monday.  What did we talk about last time?  File I/O

The String type

The String type is different from the other types in several ways

The important thing to focus on is that it can hold a large number of char values

A String literal is what we used in the Hello, World program

A String variable is declared much like any other type

String word = "Terrifying!";

Page 30: Week 15 - Monday.  What did we talk about last time?  File I/O

Using Scanner

There are three parts to using Scanner for input1. Include the appropriate import

statement so that your program knows what a Scanner object is

2. Create a specific Scanner object with a name you choose

3. Use the object you create to read in data

Page 31: Week 15 - Monday.  What did we talk about last time?  File I/O

Importing Scanner

Lots of people have written all kinds of useful Java code

By importing that code, we can use it to help solve our problems

To import code, you type import and then the name of the package or class

To import Scanner, type the following at the top of your program (before the class!)

import java.util.Scanner;

Page 32: Week 15 - Monday.  What did we talk about last time?  File I/O

Creating a Scanner object Once you have imported the Scanner class,

you have to create a Scanner object To do so, declare a reference of type Scanner,

and use the new keyword to create a new Scanner with System.in as a parameter like so:

You can call it whatever you want, I chose to call it in

Hopefully this code makes more sense now

Scanner in = new Scanner(System.in);

Page 33: Week 15 - Monday.  What did we talk about last time?  File I/O

Using a Scanner object

Now that you've got a Scanner object, you can use it to read some data

It has a method that will read in the next piece of data that user types in, but you have to know if that data is going to be an int, a double, or a String

Let's say the user is going to input her age (an int) and you want to store it in an int variable called years

We'll use the nextInt() method to do so:int years;years = in.nextInt();

Page 34: Week 15 - Monday.  What did we talk about last time?  File I/O

Week 3 review topics

Numerical operations Advanced math operationsboolean operationschar operationsString operations Wrapper classes

Page 35: Week 15 - Monday.  What did we talk about last time?  File I/O

Numerical operations

+ adds- subtracts* multiplies/ divides (integer division for int

type and fractional parts for double type)

% finds the remainder

Page 36: Week 15 - Monday.  What did we talk about last time?  File I/O

Complex expressions

Order of operations holds like in math

You can use parentheses to clarify or change the precedence

Now a is 16

int a = 31;int b = 16;int c = 1;int d = 2;

a = (((b + c) * d) – a / b) / d;

Page 37: Week 15 - Monday.  What did we talk about last time?  File I/O

Casting

You cannot directly store a double value into an int variable

However, you can cast the double value to convert it into an int

Casting tells the compiler that you want the loss of precision to happen

You can always store an int into a double

int a = 2.6; // fails!

int a = (int)2.6; // succeeds! (a is 2)

Page 38: Week 15 - Monday.  What did we talk about last time?  File I/O

Math method example with sin()

The sin() method allows you to find the sine of an angle (in radians)

This method is inside the Math class The answer that it gives back is of

type double To use it, you might type the

following:

double value = Math.sin( 2.4 );

Page 39: Week 15 - Monday.  What did we talk about last time?  File I/O

Rounding

In Java, the conversion of a double into an int does not use rounding

As in the case of integer division, the value is always rounded down

You can think of this as using the floor function from math

If you want to round normally, you can simply add 0.5 before the cast

double x = 2.6;int a = (int)(x + 0.5); // rounds

Page 40: Week 15 - Monday.  What did we talk about last time?  File I/O

Math methodsReturn type Name Job

double sin(double theta) Find the sine of angle theta

double cos(double theta) Find the cosine of angle theta

double tan(double theta) Find the tangent of angle theta

double exp(double a) Raise e to the power of a (ea)

double log(double a) Find the natural log of a

double pow(double a, double b) Raise a to the power of b (ab)

long round(double a) Round a to the nearest integer

double random() Create a random number in [0, 1)

double sqrt(double a) Find the square root of a

Page 41: Week 15 - Monday.  What did we talk about last time?  File I/O

boolean operations

! NOT Flips value of operand from true to false or vice versa

&& AND true if both operands are true

|| OR true if either operand is true

^ XOR true if operands are different

Page 42: Week 15 - Monday.  What did we talk about last time?  File I/O

char operations

char values can be treated like an int

It can be more useful to get the offset from a starting point

int number;number = 'a'; // number contains 97

char letter = 'r';int number;number = letter – 'a' + 1;

//number is 18

Page 43: Week 15 - Monday.  What did we talk about last time?  File I/O

Escape sequences

Remember that we use single quotes to designate a char literal: 'z'

What if you want to use the apostrophe character ( ' )? apostrophe: '\''

What if you want to use characters that can't be printed, like tab or newline? tab: '\t' newline: '\n'

The backslash is a message that a special command called an escape sequence is coming

Page 44: Week 15 - Monday.  What did we talk about last time?  File I/O

String concatenation

The only operator that we will use directly with Strings is the + (concatenation) operator

This operator creates a new String that is the concatenation of the two source Strings

Concatenation can be used to insert the values of other types into Strings as well

String word;word = "tick" + "tock"; // word is "ticktock"

Page 45: Week 15 - Monday.  What did we talk about last time?  File I/O

String methods

equals() Tests two Strings to see if they are the same

compareTo() Returns a negative number if the first String comes earlier

in the alphabet, a positive number if the first String comes later in the alphabet, and 0 if they are the same

length() Returns the length of the String

charAt() Returns the character at a particular index inside the String

substring() Returns a new String made up of the characters that start

at the first index and go up to but do not include the second index

Page 46: Week 15 - Monday.  What did we talk about last time?  File I/O

Wrapper classes

Each primitive data type in Java has a wrapper class Integer▪ Allows String representations of integer values to be

converted into ints Double▪ Allows String representations of floating point values to

be converted into doubles Character▪ Provides methods to test if a char value is a digit, is a

letter, is lower case, is upper case▪ Provides methods to change a char value to upper case

or lower case

Page 47: Week 15 - Monday.  What did we talk about last time?  File I/O

Week 4 review topics

Making choices with if statements Basics Having if bodies with more than one line Using else blocks Nesting if statements

Using switch statements

Page 48: Week 15 - Monday.  What did we talk about last time?  File I/O

The if part

Any boolean expression

Any single executable statement

Anatomy of an if

if( condition ) statement;

Page 49: Week 15 - Monday.  What did we talk about last time?  File I/O

Anatomy of an if-else

Two different

outcomes

if( condition ) statement1;

elsestatement2;

Page 50: Week 15 - Monday.  What did we talk about last time?  File I/O

An if with multiple statements

if( condition ){

statement1;statement2;…statementn;

}

A whole bunch of

statements

Page 51: Week 15 - Monday.  What did we talk about last time?  File I/O

Nested ifs

if( condition1 ){

statement1;if( condition2 ) {

if( condition3 )statement2;

…}

}

Page 52: Week 15 - Monday.  What did we talk about last time?  File I/O

Comparison

The most common condition you will find in an if is a comparison between two things

In Java, that comparison can be: == equals != does not equal < less than <= less than or equal to > greater than >= greater than or equal to

Page 53: Week 15 - Monday.  What did we talk about last time?  File I/O

Anatomy of a switch statement

switch( data ){

case value1:statements 1;

case value2:statements 2;

…case valuen:

statements n;default:

default statements;}

Page 54: Week 15 - Monday.  What did we talk about last time?  File I/O

Peculiarities of switch

int data = 3;switch( data ){

case 3:System.out.println("Three");

case 4:System.out.println("Four");break;

case 5:System.out.println("Five");

}

Both "Three" and "Four" are

printed

The break is optional

The default is

optional too

Page 55: Week 15 - Monday.  What did we talk about last time?  File I/O

Rules for switch

1. The data that you are performing your switch on must be either an int, a char, or a String

2. The value for each case must be a literal3. Execution will jump to the case that

matches4. If no case matches, it will go to default5. If there is no default, it will skip the whole

switch block6. Execution will continue until it hits a break

Page 56: Week 15 - Monday.  What did we talk about last time?  File I/O

IDEA forms

Page 57: Week 15 - Monday.  What did we talk about last time?  File I/O

Upcoming

Page 58: Week 15 - Monday.  What did we talk about last time?  File I/O

Next time…

Review up to Exam 2

Page 59: Week 15 - Monday.  What did we talk about last time?  File I/O

Reminders

Bring a question to class Wednesday! Any question about any material in

the courseKeep working on Project 5

Due on Friday before midnightStudy for Final Exam

2:30 - 5:30pm, Thursday, 12/10/2015 (CS121B)

11:00am - 2:00pm, Monday, 12/07/2015 (CS121C)