Slide 1Slide 2A Foundation for ProgrammingAnatomy of a Java Method (a.k.a Function)Flow of ControlFlow of ControlFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFunction Call TraceFlow of ControlReturn valuesScope of variablesScopeNo duplicate names in the same scopeFunction Challenge 1aFunction Challenge 1bFunction Challenge 1cFunction Challenge 1dFunction Challenge 1ePassing by values vs. passing by referencesPassing by referencePassing by valuesModule 5: MethodsIntroduction to Programming in Java: An Interdisciplinary Approach · Robert Sedgewick and Kevin Wayne · Copyright © 2002–2010 · 1/14/19 07:10:10 AMMethodsfxyzf (x, y, z)3A Foundation for Programmingobjectsmethodsgraphics, sound, and image I/Oarraysconditionals and loopsMath text I/Oassignment statementsprimitive data typesany program you might want to writebuild bigger programsand reuse code4Anatomy of a Java Method (a.k.a Function)Java methods. Easy to write your own.f(x) = xinput2.0 1.414213…output5Flow of ControlKey point. Methods provide a new way to control the flow of execution.6Flow of ControlKey point. Functions provide a new way to control the flow of execution.7public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call Trace8public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call Trace% java Newton 1 2 39public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call Trace% java Newton 1 2 3{ "1", "2", "3" }args[]{ "1", "2", "3" }10public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call Trace% java Newton 1 2 3args[]{ "1", "2", "3" }a[]{ 0.0, 0.0, 0.0 }11public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call Trace% java Newton 1 2 3args[]{ "1", "2", "3" }a[]{ 0.0, 0.0, 0.0 }i012public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call Trace% java Newton 1 2 3a[]{ 1.0, 0.0, 0.0 }args[]{ "1", "2", "3" }i013public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call Trace% java Newton 1 2 3a[]{ 1.0, 0.0, 0.0 }args[]{ "1", "2", "3" }i114public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call Trace% java Newton 1 2 3a[]{ 1.0, 2.0, 0.0 }args[]{ "1", "2", "3" }i115public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; } public static void main(String[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) System.out.println(sqrt(a[i])); }}Function Call
View Full Document