Question? Leave a message!




Anatomy of a Java Function

Anatomy of a Java Function
2.1 Functions Introduction to Programming in Java: An Interdisciplinary Approach · Robert Sedgewick and Kevin Wayne · Copyright © 2002–2010 · 2/17/11 9:58 PM 2.1 Functions x y f (x, y, z) f z A Foundation for Programming any program you might want to write objects build bigger programs functions and modules and reuse code graphics, sound, and image I/O arrays conditionals and loops Math text I/O primitive data types assignment statements 3 Functions (Static Methods) Java function.   Takes zero or more input arguments.   Returns one output value. more general than   Side effects (e.g., output to standard draw). mathematical functions Applications.   Scientists use mathematical functions to calculate formulas.   Programmers use functions to build modular programs.   You use functions for both. Examples.   Builtin functions: Math.random(), Math.abs(), Integer.parseInt().   Our I/O libraries: StdIn.readInt(), StdDraw.line(), StdAudio.play().   Userdefined functions: main(). 4 Anatomy of a Java Function Java functions. Easy to write your own. input output 2.0 f(x) = √x 1.414213… 5 Flow of Control Key point. Functions provide a new way to control the flow of execution. 6 Flow of Control Key point. Functions provide a new way to control the flow of execution. What happens when a function is called:   Control transfers to the function code.   Argument variables are assigned the values given in the call.   Function code is executed.   Return value is assigned in place of the function name in calling code.   Control transfers back to the calling code. Note. This is known as "pass by value." 7 Scope Scope (of a name). The code that can refer to that name. Ex. A variable's scope is code following the declaration in the block. Best practice: declare variables to limit their scope. 8 Function Challenge 1a Q. What happens when you compile and run the following code public class Cubes1 public static int cube(int i) int j = i i i; return j; public static void main(String args) int N = Integer.parseInt(args0); for (int i = 1; i = N; i++) StdOut.println(i + " " + cube(i)); javac Cubes1.java java Cubes1 6 1 1 2 8 3 27 4 64 5 125 6 216 9 Function Challenge 1b Q. What happens when you compile and run the following code public class Cubes2 public static int cube(int i) int i = i i i; return i; public static void main(String args) int N = Integer.parseInt(args0); for (int i = 1; i = N; i++) StdOut.println(i + " " + cube(i)); 10 Function Challenge 1c Q. What happens when you compile and run the following code public class Cubes3 public static int cube(int i) i = i i i; public static void main(String args) int N = Integer.parseInt(args0); for (int i = 1; i = N; i++) StdOut.println(i + " " + cube(i)); 11 Function Challenge 1d Q. What happens when you compile and run the following code public class Cubes4 public static int cube(int i) i = i i i; return i; public static void main(String args) int N = Integer.parseInt(args0); for (int i = 1; i = N; i++) StdOut.println(i + " " + cube(i)); 12 Function Challenge 1e Q. What happens when you compile and run the following code public class Cubes5 public static int cube(int i) return i i i; public static void main(String args) int N = Integer.parseInt(args0); for (int i = 1; i = N; i++) StdOut.println(i + " " + cube(i)); 13 Gaussian Distribution Gaussian Distribution Standard Gaussian distribution.   "Bell curve."   Basis of most statistical analysis in social and physical sciences. Ex. 2000 SAT scores follow a Gaussian distribution with mean µ = 1019, stddev σ = 209. 601 1437 810 1019 1228 2 2 2 −x /2 −(x−µ) / 2σ 1 1 φ(x) = e φ (x, µ,σ ) = e 2π σ 2π x− µ = φ /σ ( ) σ € 15 € Java Function for φ(x) Mathematical functions. Use builtin functions when possible; build your own when not available. 2 −x /2 1 φ(x) = e public class Gaussian 2π public static double phi(double x) return Math.exp(xx / 2) / Math.sqrt(2 Math.PI); € public static double phi(double x, double mu, double sigma) return phi((x mu) / sigma) / sigma; x− µ φ (x, µ,σ) = φ /σ ( ) σ € Overloading. Functions with different signatures are different. Multiple arguments. Functions can take any number of arguments. Calling other functions. Functions can call other functions. library or userdefined 16 Gaussian Cumulative Distribution Function Goal. Compute Gaussian cdf Φ(z). Challenge. No "closed form" expression and not in Java library. 2 −x /2 1 φ(x) = e 2π Φ(z) € z Taylor series Bottom line. 1,000 years of mathematical formulas at your fingertips. 17 Java function for Φ(z) public class Gaussian public static double phi(double x) // as before public static double Phi(double z) if (z 8.0) return 0.0; if (z 8.0) return 1.0; double sum = 0.0, term = z; for (int i = 3; sum + term = sum; i += 2) sum = sum + term; term = term z z / i; return 0.5 + sum phi(z); accurate with absolute error 16 less than 8 10 public static double Phi(double z, double mu, double sigma) return Phi((z mu) / sigma); z Φ(z, µ, σ ) = φ (z, µ,σ ) = Φ((z− µ) /σ ) ∫ −∞ 18 € SAT Scores Q. NCAA requires at least 820 for Division I athletes. What fraction of test takers in 2000 do not qualify A. Φ(820, 1019, 209) ≈ 0.17051. approximately 17 area = 0.17 601 1437 810 1019 1228 820 double fraction = Gaussian.Phi(820, 1019, 209); 19 Gaussian Distribution Q. Why relevant in mathematics A. Central limit theorem: under very general conditions, average of a set of random variables tends to the Gaussian distribution. Q. Why relevant in the sciences A. Models a wide range of natural phenomena and random processes.   Weights of humans, heights of trees in a forest.   SAT scores, investment returns. Caveat. “ “ E Tout ver l ye body monde bel y ie c ve rs oi itn t ce he pe e nde xpone nt, c nt ar ial le lsaw of expé e rir m ror ent s: t eurhe s s e 'ix m pe agi rim ne ent nt ers, because t que hey c t'hi esnk t un t it ché an be orem pr de ov m ed by athé m mat athe ique mat s, e icts l ; and t es mat he hé m mat athe icim ens at que icians  , because c the 'es yt be un f lie ai ve t e it x has péri be mee nt n e als . tabl ” ished by observation. ” — — M. L M. Li ippm ppman i an in a l n a le et tt te er r t to H o H. P . Poi oinc ncar aré é 20 Building Functions Functions enable you to build a new layer of abstraction.   Takes you beyond prepackaged libraries.   You build the tools you need: Gaussian.phi(), … Process.   Step 1: identify a useful feature.   Step 2: implement it.   Step 3: use it.   Step 3': reuse it in any of your programs. 21 Digital Audio Crash Course in Sound Sound. Perception of the vibration of molecules in our eardrums. Concert A. Sine wave, scaled to oscillate at 440Hz. Other notes. 12 notes on chromatic scale, divided logarithmically. 23 Digital Audio Sampling. Represent curve by sampling it at regular intervals. ⎛ ⎞ 2π ⋅ i ⋅ 440 y(i) = sin ⎜ ⎟ audio CD ⎝ 44,100 ⎠ € 24 Musical Tone Function Musical tone. Create a music tone of a given frequency and duration. public static double tone(double hz, double seconds) int SAMPLERATE = 44100; int N = (int) (seconds SAMPLERATE); double a = new doubleN+1; for (int i = 0; i = N; i++) ai = Math.sin(2 Math.PI i hz / SAMPLERATE); ⎛ ⎞ return a; 2π ⋅ i ⋅ hz y(i) = sin ⎜ ⎟ ⎝ ⎠ 44,100 € Remark. Can use arrays as function return value and/or argument. 25 Digital Audio in Java Standard audio. Library for playing digital audio. library developed for this course Concert A. Play concert A for 1.5 seconds using StdAudio. (also broadly useful) double a = tone(440, 1.5); StdAudio.play(a); 26 Harmonics Concert A with harmonics. Obtain richer sound by adding tones one octave above and below concert A. 880 Hz 440 Hz 220 Hz 27 Harmonics public class PlayThatTuneDeluxe // return weighted sum of two arrays public static double sum(double a, double b, double awt, double bwt) double c = new doublea.length; for (int i = 0; i a.length; i++) ci = aiawt + bibwt; return c; // return a note of given pitch and duration public static double note(int pitch, double duration) double hz = 440.0 Math.pow(2, pitch / 12.0); double a = tone(1.0 hz, duration); double hi = tone(2.0 hz, duration); double lo = tone(0.5 hz, duration); double h = sum(hi, lo, .5, .5); return sum(a, h, .5, .5); public static double tone(double hz, double t) // see previous slide public static void main(String args) // see next slide 28 Harmonics Play that tune. Read in pitches and durations from standard input, and play using standard audio. public static void main(String args) while (StdIn.isEmpty()) int pitch = StdIn.readInt(); double duration = StdIn.readDouble(); double a = note(pitch, duration); StdAudio.play(a); 29 30
sharer
Presentations
Free
Document Information
Category:
Presentations
User Name:
Dr.AlexanderTyler
User Type:
Teacher
Country:
India
Uploaded Date:
21-07-2017