Upload
charlene-mosley
View
216
Download
0
Embed Size (px)
Citation preview
CS 121Week 15 - Monday
Last time
What did we talk about last time? File I/O
Questions?
Project 5
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
Review up to Exam 1
Week 1 review topics
History of computers Hardware Software development Basic Java syntax Output with System.out.print()
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
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
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
Input/Output
Monitor• Common visual output device
Speakers• Common audio output device
Mouse• Common input device
Keyboard• Common input device
General compilation model
Computer!
Solve a problem;
Compile
010101010
010100101
001110010
Execute
Source Code
Machine Code Hardwar
e
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
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!
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!");}
}
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!");
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
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!");
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 */
Week 2 review topics
Binary representation Basic data types Using Scanner for input
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
Base 2 Example
11111011111
Ones
1024’s
Sixteens
Thirty twosEights
Sixty fours
Twos
Fours256’s
128’s
512’s
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
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"
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)
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;
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;
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';
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!";
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
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;
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);
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();
Week 3 review topics
Numerical operations Advanced math operationsboolean operationschar operationsString operations Wrapper classes
Numerical operations
+ adds- subtracts* multiplies/ divides (integer division for int
type and fractional parts for double type)
% finds the remainder
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;
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)
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 );
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
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
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
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
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
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"
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
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
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
The if part
Any boolean expression
Any single executable statement
Anatomy of an if
if( condition ) statement;
Anatomy of an if-else
Two different
outcomes
if( condition ) statement1;
elsestatement2;
An if with multiple statements
if( condition ){
statement1;statement2;…statementn;
}
A whole bunch of
statements
Nested ifs
if( condition1 ){
statement1;if( condition2 ) {
if( condition3 )statement2;
…}
}
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
Anatomy of a switch statement
switch( data ){
case value1:statements 1;
case value2:statements 2;
…case valuen:
statements n;default:
default statements;}
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
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
IDEA forms
Upcoming
Next time…
Review up to Exam 2
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)