Download NotesWeek16.Dec 6-10..

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CS 180 Problem Solving and Object Oriented
Programming
Fall 2010
http://www.cs.purdue.edu/homes/apm/courses/CS180Fall2010/
This Week:
Notes for Week 16:
Dec 6-10, 2010
Aditya Mathur
Department of Computer Science
Purdue University
West Lafayette, IN, USA
12/6
1.
2.
Exceptions
Recursion
Readings and Exercises for Week 16
Readings:
Chapter: 7.4, 11.2, 11.3
Exercises:
7.6, 7.8, 11.1, 11.2, 11.3
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
2
Revised Project Schedule
Additional office hours:
Tuesday Dec 7:
2-4pm. LWSN 1177
Saturday Dec 11: 2-4pm. LWSN 1177
Special class:
Sunday Dec 12, 2010. 4-7pm. LWSN 3102
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
3
Announcements
•
Final exam: Monday Dec 13, 2010. 1:00pm. EE 129.
•
Please attend the class on Wednesday Dec 8.
•
Programming competition. Chief Guest Dr. Tim Korb.
•
Cash prizes to winner and runner up teams. Thanks to
Lockheed Martin.
•
I will announce the format of the final exam.
•
Please complete course evaluation. Thanks.
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
4
Exceptions
An abnormal or unexpected condition during execution.
When such a condition occurs, Java run time
system does not always know how best to proceed
and hence raises an exception.
Some exceptions must be explicitly handled by the
programmer.
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
5
Exception: Example 1
public class ExceptionExampleDiv0{
public static void main(String [] args){
int y=1, z=0;
int x=y/z;
}
}
java.lang.ArithmeticException: / by zero
at ExceptionExampleDiv0.main(ExceptionExampleDiv0.java:8)
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
6
Exception: Example 2
public class ExceptionExampleDiv0{
public static void main(String [] args){
int y=1, z=0;
try{
int x=y/z;
Try-catch not required
}catch(ArithmeticException e){
System.out.println(“Divide by zero:”+e); }
}
Divide by zero java.lang.ArithmeticException: / by zero
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
7
Exception: Unchecked (or Error)
• Arise during runtime due to some programming error.
• Not flagged by the compiler. Programmer may choose to
handle these.
• Not subject to Catch requirement.
Examples:
ArithmeticException
ArrayIndexOutOfBounds
NullPOinterException
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
8
Exception: Example 3
public class ExceptionExampleFile{
public static void main(String [] args){
File f=new File("test.txt");
Scanner source=new Scanner(f);
}
}
1 error found:
File:
/Users/apm/www/courses/CS180Fall2010/Notes/Programs/Exc
eptions/ExceptionExampleFile.java [line: 8]
Error:
©Aditya Mathur. CS 180. Fall 2010. Week
/Users/apm/www/courses/CS180Fall2010/Notes/Programs/Exc
6/12/2010
9
16
Exception: Example 4
public class ExceptionExampleFile{
public static void main(String [] args){
File f=new File("test.txt");
try{
Scanner source=new Scanner(f);
}catch(FileNotFoundException e){
System.out.println("File not found "+e);
}
}
}
6/12/2010
File not found
java.io.FileNotFoundExce
ption: test.txt (No such
file or directory)
©Aditya Mathur. CS 180. Fall 2010. Week
16
10
Exception: Checked exceptions
These are subject to the catch requirement.
Programmer is expected to write code to recover from
these exceptions.
Example:
FileNotFoundException
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
11
Exception: try-catch
try{
code where exception might occur;
try-block
}catch(exception object){
code to handle exception
catch-block
}
A catch-block serves as an exception handler.
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
12
Exception: try-catch: multiple catch blocks
try{
code where exception might occur;
try-block
}catch(exception object){
code to handle exception;
catch-block
}catch(another exception object{
code to handle exception;
}
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
Another catchblock
13
Exception: try-catch-finally
try{
Code where exception might occur;
try-block
}catch(exception object){
code to handle exception;
catch-block
}finally{
code to handle exception;
finally-block
}
Finally-block always executes after the try-block.
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
14
Recursion
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
15
What is recursion?
Recursion is a technique to code functions (or methods) in Java.
We say that a method is recursive, when it calls itself. This
is known as direct recursion.
Indirect recursion occurs when a method is called, before it
completes, by another method.
Recursion is complementary to iteration. While solving a
problem, you may choose to use either.
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
16
Example: Factorial
Definition: Iterative [n>=0]
!n= 1, if n=0 or 1
= 1*2*3*…*n;
Definition: Recursive [n>=0]
!n= 1, if n=0 or 1
= n*!(n-1), if n>1
6/12/2010
Basis
Recursion
©Aditya Mathur. CS 180. Fall 2010. Week
16
17
Example: Factorial: Iterative method
Definition: Iterative [n>=0]
!n= 1, if n=0 or 1
= 1*2*3*…*n;
public int factIter(int n){
if(n==0 || n==1)
return 1;
int prod=1;
for (int i=2; i<=n; i++){
prod=prod*i;
}
return (prod);
}
!5=prod=1*2*3*4*5
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
18
Example: Factorial: Recursive method
Definition: Recursive [n>=0]
!n= 1, if n=0 or 1
= n*!(n-1), if n>1
public int factRecur(int n){
if(n==0 || n==1){
return 1;
}else{
return (n*factRecur(n-1));
}
}
factRecur(5)=5*factRecur(4)*factRecur(3)*factRecur(2)*factRecur(1)
=5*factRecur(4)*factRecur(3)*factRecur(2)*1
=5*factRecur(4)*factRecur(3)*2*1
=5*factRecur(4)*3*2*1
=5*4*3*2*1 ©Aditya Mathur. CS 180. Fall 2010. Week
6/12/2010
19
16
Recursion versus Iteration
Iteration suffices for most problems that arise in
practice.
However, in some cases recursion allows compact and
quick solution. An example follows.
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
20
Towers of Hanoi: The problem
Given: Three towers A, B, and C. A contains n discs arranged
from bottom to top as shown below.
Problem: Find a sequence of moves such that at the end of
these moves all discs are in C. No larger disc should ever be on
top of a smaller disk. Only one disk can be moved at a time
from one tower to another. Only the top disc can be moved
from a tower.
A
6/12/2010
B
©Aditya Mathur. CS 180. Fall 2010. Week
16
C
21
Towers of Hanoi: Initial and final configurations
Initial configuration
A
B
C
A
B
C
Final configuration
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
22
Towers of Hanoi: Iterative solution
Try this! This will be difficult but certainly worth a try.
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
23
Towers of Hanoi: Recursive solution
What is a move?
Only one disc can be moved from one tower to
another. Hence we will write a move as:
move x, y;
x is the tower from where the top disc is moved
and placed on top in tower y.
For example:
move A, B; will move the top disc on A to tower B
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
24
Towers of Hanoi: Recursive solution: Visualization
Start
1
3
A
B
C
2
A
B
C
A
B
C
4
A
6/12/2010
B
C
©Aditya Mathur. CS 180. Fall 2010. Week
16
25
Towers of Hanoi: Recursive program: Live
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
26
Towers of Hanoi: Challenge!
How many moves are required to move n discs from
tower A to tower C?
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
27
Week 16: December 6-10, 2010
Hope you enjoyed this week!
Questions?
Contact your recitation instructor. Make
full use of our office hours.
6/12/2010
©Aditya Mathur. CS 180. Fall 2010. Week
16
28