Week 6 CS 302 Jim Williams, PhD
This Week Lab: Multi-dimensional Arrays Exam 1: Thursday Lecture: Methods Review
Midterm Exam 1 What is the location of the exam? 3650 Humanities 125 Ag Hall 272 Bascom Other (due to conflicts)
Midterm Exam - Thursday Bring ID and #2 pencil Exam seating directly in front/behind, 1 empty seat to each side Multiple choice - focus on reading Java Write on your exam any assumptions Review Questions posted on Piazza
P2 - Game of Life Key Concepts arrays static methods parameter passing
Defining and Calling Methods
mprint - which is Call, Definition? static void mprint() { System.out.println("my print"); public static void main(string []args) { mprint(); mprint call then mprint definition mprint definition then mprint call
Is count: Argument or Parameter? public static void main(string []args) { int num = 10; printcount( 23); printcount( num+3); static void printcount(int count) { System.out.println( count); argument parameter actual parameter formal parameter
Compile or Not Compile? static int mprint(string str) { System.out.println( "my:" + str); compiles as part of a class will not compile as part of a class missing a statement invalid data type
What prints out? static void calc(int num) { num = 3; public static void main(string []args) { int n = 5; calc( n); System.out.println( n); 3 5 35 error
What prints out? public static void main(string []args) { int n = 5; calc( n); System.out.println( n); static int calc(int num) { return 3; 3 5 35 error
What prints out? static int calc(int num) { return 3; public static void main(string []args) { int n = 5; n = calc( n); System.out.println( n); 3 5 35 error
Which is called first: calc or println? static int calc(int num) { num -= 33; return num; public static void main(string []args) { int n = 55; System.out.println( calc( n)); calc println error
Multiple parameters and overloading
What prints out? static void print( double value) { System.out.println( "print(double)"); static int print( int value) { System.out.print( "print(int)"); return 1; public static void main( String [] args) { print( 10); print(double) print(int) invalid overloading error
What prints out? static void print( double val1, double val2) { System.out.println( "print(double)"); public static void main( String [] args) { double value = 10.0; print( value, 20); static void print( int val1, int val2) { System.out.println( "print(int)"); print(double) print(int) invalid overloading error
What prints out? static void print( double val1, double val2) { System.out.println( "void print"); static int print( double num1, double num2) { System.out.print( "int print"); return 1; public static void main( String [] args) { print( 10.0, 20.0); void print int print invalid overloading other error
What prints out? static void print( double val1, double val2) { System.out.println( "print(double)"); static int something( int val1, int val2) { System.out.print( "something(int)"); return 1; public static void main( String [] args) { print( 10, 20); print(double) something(int) invalid overloading error
Memory Areas Stack Frame Stack - local, parameters Heap - instances (object), arrays static Code
What prints out? static void change( int num, int [] list) { num = 11; list[2] = num; public static void main( String [] args) { int [] list = {1,2,3; int num = 10; change( num, list); System.out.println("num:" + num + "\nlist:" + Arrays.toString( list)); num:10 list:[1, 2, 11] num:11 list:[1, 2, 11] num:10 list:[1, 2, 3] num:10 list:[1, 2, 10]
What prints out? static void change( int num, int [] list) { list = new int[]{4,5,6; list[2] = num; public static void main( String [] args) { int [] list = new int[] {1,2,3; int num = 10; change( num, list); System.out.println("num:" + num + "\nlist:" + Arrays.toString( list)); num:10 list:[1, 2, 11] num:10 list:[4,5,10] num:10 list:[1, 2, 3] num:10 list:[1, 2, 10]
What is the value of num? class Stuff { final static int MAX_VALUE = 10; //allowed static int num = 6; //NOT allowed in P2 static void change( int n) { num = n + 1; public static void main( String [] args) { int num = MAX_VALUE; change( num); System.out.println("num:" + num); System.out.println("Stuff.num:" + Stuff.num); num: 10 Stuff.num: 6 num: 10 Stuff.num: 10 num: 10 Stuff.num: 11 error
Where in memory is variable z? static void main(string []args) { int [][] z = new int[r][c]; stack heap it is local Error
Can you call this method to get the new array outside the method? yes static void createboard(int [][] board) { board = new int[3][3]; no sometimes Error
Can you call this method to get the new array? static int [][] createboard(int r, int c) { return new int[r][c]; yes no reference lost Error
Will this initialize the array to all 1's? public static void main(string []args) { int [][] board = {{2,3,{4,3,2; initboard( board); static void initboard(int[][] board) { for ( int i = 0; i < 2; i++) for ( int j = 0; j < 3; j++) board[ i ][ j ] = 1; yes no don't know Error
Will this initialize the array to all 1's? public static void main(string []args) { int [][] board = {{2,3,{4,3,2; initboard( board); static void initboard(int[][] b) { for ( int i = 0; i < b[i].length; i++) for ( int j = 0; j < b[j].length; j++) b[ i ][ j ] = 1; yes no don't know Error
Will this initialize the array to all 1's? public static void main(string []args) { int [][] board = {{2,3,{4,3,2; initboard( board); static void initboard(int[][] b) { for ( int i = 0; i < b.length; i++) for ( int j = 0; j < b[ i ].length; j++) b[ i ][ j ] = 1; yes no don't know Error
What do a and b have in common? public static void main(string []args) { ma(); mb(); static void ma() { int a = 10; static void mb() { int b; System.out.println( b); may be the exact same memory location looking at b will reveal a (unintentially) nothing Error
How many times is fib method called? static int fib(int num) { if ( num <= 1) return 1; else return fib( num -1) + fib( num -2); public static void main(string[] args) { System.out.println("fibonacci 4: " + fib(4)); 1 3 9 Error
Recall Fibonacci Sequence 1 1 2 3 5 8 13 21 Each is the sum of the previous 2. https://en.wikipedia.org/wiki/fibonacci_number
Iterative solution public static void main(string[] args) { int n = 10; int [] fib = new int[n]; fib[0] = 1; fib[1] = 1; for (int i = 2; i < n; i++) { fib[i] = fib[i-1] + fib[i-2]; System.out.println("fib "+n+"= " + fib[n-1]);
Review Questions Scanner Arrays Loops
What is value of str? String str = ""; String [] words = {"a", "b", "c"; for ( int i = 0; i < words.length; i++) { str += "." + words[i]; "" "a.b.c." ".a.b.c" error
What is the value of sum? double sum = 0.0; double []nums = {3.1, 4.5, 2.3; for ( int i = 0; i > nums.length; i++) { sum += nums[i]; 0.0 9.9 compiler error logic error
What does this do? int [] list = new int[4]; for ( int i = 0; i <= list.length; i++) { list[i] = i * 2; set each element to i * 2 0, 2, 4, 8 compiler error runtime error