More Fun With Functions

Featured Animated Featured Animated
Uploaded from authorPOINT
Download as
 PPT
Presentation Description 

No description available

Views: 227
Like it  ( Likes) Dislike it  ( Dislikes)
Added: June 18, 2007 This Presentation is Public 
Presentation Category : Education All Rights Reserved
Presentation Transcript

Warm up!!: Warm up!! public class MoreFunctionFun { public static void main(String[] args) { int a=2, b=3, c=4; c = fun(a, b); b = fun(a, c); System.out.println('a='+a); System.out.println('b='+b); System.out.println('c='+c); } public static int fun(int n1, int n2){ n1++; n2 += n1; return n1*n2; } }


More Fun With Functions!: More Fun With Functions! AP Computer Science


Lesson 1: functions are dumb: Lesson 1: functions are dumb Functions only know what main 'tells' them. Main passes information to a function through parameters. The function ONLY knows what the parameters tell it.


Try this…: Try this… public static void main(String[] args){ final double TAX_RATE = 0.06; KeyboardReader reader = new KeyboardReader(); double subtotal, total; subtotal = reader.readDouble('Enter Purchase Amount:'); total = subtotal + tax(subtotal); } public static double tax(double amount){ return amount * TAX_RATE; }


Slide5: public static void main(String[] args){ final double TAX_RATE = 0.06; KeyboardReader reader = new KeyboardReader(); double subtotal, total; subtotal = reader.readDouble('Enter Purchase Amount:'); total = subtotal + tax(subtotal, TAX_RATE); } public static double tax(double amount, double tr){ return amount * tr; }


Lesson 2: functions are really dumb: Lesson 2: functions are really dumb Functions assume that they have been passed parameters in a certain order. This order is defined by the function header. Even though variable names may make it seem sensible, the function ONLY cares about the order.


Slide7: public static void main(String[] args){ int leg1=3, leg2=4, hyp=5; if(pythag(hyp, leg1, leg2)) System.out.println('Right Triangle!!'); else System.out.println('NOT right triangle'); if(pythag(leg1, leg2, hyp)) System.out.println('Right Triangle!!'); else System.out.println('NOT right triangle'); } public static boolean pythag(int a, int b, int c){ return ((a*a + b*b)==c*c); } Output: NOT right triangle Right Triangle!!


Lesson 3: main doesn’t trust functions: Lesson 3: main doesn’t trust functions When a function is called, it only gets a copy of the parameters’ values. The function CANNOT change any of main’s variables. The only change possible is if main assigns the function’s returned value into a variable.


Slide9: public static void main(String[] args){ int a=5, b=15, c=25; change(a, b); b=change(a, b); c = change(a, b); } public static int change(int n1, int n2){ n1 *= 100; n1 += n2; return (n2-1); }


Slide10: public static void main(String[] args){ int a=5, b=15, c=25; change(a, b); b=change(a, b); c = change(a, b); } public static int change(int n1, int n2){ n1 *= 100; n1 += n2; return (n2-1); } 5 a 15 b 25 c 5 5 15 15


Slide11: public static void main(String[] args){ int a=5, b=15, c=25; change(a, b); b=change(a, b); c = change(a, b); } public static int change(int n1, int n2){ n1 *= 100; n1 += n2; return (n2-1); } 5 a 15 b 25 c 5 n1 15 n2


Slide12: public static void main(String[] args){ int a=5, b=15, c=25; change(a, b); b=change(a, b); c = change(a, b); } public static int change(int n1, int n2){ n1 *= 100; n1 += n2; return (n2-1); } 5 a 15 b 25 c 5 5 15 15


Slide13: public static void main(String[] args){ int a=5, b=15, c=25; change(a, b); b=change(a, b); c = change(a, b); } public static int change(int n1, int n2){ n1 *= 100; n1 += n2; return (n2-1); } 5 a 15 b 25 c 5 n1 15 n2


Slide14: public static void main(String[] args){ int a=5, b=15, c=25; change(a, b); b=change(a, b); c = change(a, b); } public static int change(int n1, int n2){ n1 *= 100; n1 += n2; return (n2-1); } 5 a 14 b 25 c 5 5 14 14


Slide15: public static void main(String[] args){ int a=5, b=15, c=25; change(a, b); b=change(a, b); c = change(a, b); } public static int change(int n1, int n2){ n1 *= 100; n1 += n2; return (n2-1); } 5 a 14 b 25 c 5 n1 14 n2


Function Overloading:Same name, different parameters: Function Overloading: Same name, different parameters Every function has a name public static int area(int l, int w) Your program can have 2 (or more) functions with the same name if they have a different number and/or type of parameters.


Slide17: public class Overloading { public static void main(String[] args) { System.out.print ('3x5 Rectangle has area: '); System.out.println(area(3,5)); System.out.print ('Circle w/radius 5 has area: '); } public static double area(int l, int w){ return l*w; } }//end class Now write an 'area' function for circles and call it from the main.


Slide18: public class Overloading { public static void main(String[] args) { System.out.print ('3x5 Rectangle has area: '); System.out.println(area(3,5)); System.out.print ('Circle w/radius 5 has area: '); System.out.println(area(5)); } public static double area(int l, int w){ return l*w; } public static double area(int r){ return Math.PI*r*r; } }//end class Output: 3x5 Rectangle has area: 15.0 Circle w/radius 5 has area: 78.53981633974


Don’t Confuse the Computer!: Don’t Confuse the Computer! Overloaded functions MUST have a different number and/or type of parameters. Having a different parameter name is not enough!! public static double area(int r){ return Math.PI*r*r; } public static double area(int s){ return s*s; }


Preconditions & Postconditions: Preconditions andamp; Postconditions When you write functions, they should be accompanied by special comments: Preconditions: What needs to be true when the function is called. What do the parameters represent? What values are legal for the parameters? Postconditions: What will be true when the function returns. What type of value is returned? What does it represent?


Preconditions & Postconditions: Preconditions andamp; Postconditions These comments provide a guarantee: If the preconditions are met, then the postconditions will be true. If the preconditions are not met, then there is no guarantee the function will work.


Example:: Example: /* * Preconditions:l andamp; w are nonnegative integers * representing the length andamp; width of a rectangle * Postconditions:the area of the rectangle is returned */ public static double area(int l, int w){ return l*w; } /* * Preconditions:r is a nonnegative integer * representing the radius of a circle * Postconditions:the area of the circle is returned */ public static double area(int r){ return Math.PI*r*r; }


Pizza per Inch:Some Practice: Pizza per Inch: Some Practice Now write a program that helps someone make pizza purchasing decisions. The program should: Ask the user for the price and diameter of a large pizza Ask the user for the price and diameter of a medium pizza Ask the user for the price and diameter of a small pizza Use a function to calculate the unit price (price per square inch) for each. Inform the user of the best deal.