Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your...

34
Copyright 2009 by Pearson Education Midterm Review Session Programming Problems For more practice: http://webster.cs.washington.edu:8080/practiceit/

Transcript of Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your...

Page 1: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education

Midterm Review Session

Programming Problems

For more practice:

http://webster.cs.washington.edu:8080/practiceit/

Page 2: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 2

Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with you while you exit (don’t go back to seat)

60 minute exam -10 if you start early or try to write after time

Any paper notes allowed, but NO ELECTRONICS Book OK, section handouts OK, past exams + solutions OK, etc. NO CALCULATORS! NO LAPTOPS!

Aiming for a median of 80 Will be a curve if the exam is too hard, will not have a hurtful

curve if exam is too easy

Page 3: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 3

About the Exam 100 pts, 20% of course grade Non-programming – 61 pts Expressions (10), parameter mystery (12), if/else simulation (12),

while loop simulation (12), assertions (15)

Easy Programming – 15 pts Medium Programming – 15 pts Really Hard Programming – 9 pts

Topics covered: Chapters 1-5

Topics not covered: see website! Includes Graphics, printf, do/while, break

Page 4: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 4

More Exam Info Non-programming questions You do not need to show your work You are not allowed to use calculators (e.g. on expressions)

Programming questions Are not graded on style, only external correctness Must write valid Java code that would compile Will not grade comments or pseudo-code Do NOT use abbreviations Do not have to write import statements

Substantial partial credit is given for partially working solutions Write as much as you can: even a method header and the beginnings

of a while loop could earn you partial points!

More info on course website!

Page 5: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 5

General Tips BE AFRAID. Success on HW is not an indication of being

prepared for the exam.

Watch the clock! The hardest part about this exam will be the time limit.

PRACTICE Q1-Q5 so that you can go through them fast and accurately! You want as much time as possible for the programming questions.

Write as much as you can! A partial answer is better than none at all. Writing the correct method header will earn at least 1 point. Writing a partial loop, if statements, returns, etc. will points too

Page 6: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 6

General Tips Read the instructions now and learn the format so you

won't be surprised tomorrow The format of the midterm will be the same as the samples

For more practice, use Marty Stepp's Practice-it tool: http://webster.cs.washington.edu:8080/practiceit/

Page 7: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education

Concepts Review

Some essential topics from Ch1-5

Page 8: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 8

For-loops Use to repeat stuff when you know exactly* how much

you want to repeat * Could also have a variable or expression that tells you exactly

how much you want to repeat

Nested for-loops: loops within a loop When you want to do task multiple times, and that task has

repetition to it E.g. multiplication table

Cumulative sum: variable that keeps a sum in progress and is updated repeatedly until summing is finished

In general: think about bounds, possible fencepost issues

Page 9: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 9

Conditionals and Tests If/else statement: Decide between several logical choices

While loop: Repeat unknown number of times Sentinel loops: repeat until a certain signal is seen (e.g. prompt

until you see a -1)

boolean: primitive type with a true or false value When to return?? Boolean flag is helpful

Page 10: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 10

Strings length() to get length of a String

indexOf/contains to search for substring within String

equals/equalsIgnoreCase to test equality startsWith/endsWith to test beginning/end of word

substring(index1, index2) to get a piece of a String index1 inclusive, index2 exclusive Index 0 for first letter, index length() -1 for last letter

+ to concatenate Strings together

Page 11: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 11

Other miscellaneous stuff Scanner to prompt for input hasNext, hasNextInt, hasNextDouble, hasNextLine

Random to get a random value To generate random number between [min, max]:r.nextInt(range) + minWhere range: max – min + 1 r.nextInt(51) + 50; // produces random value 50 - 100

Expressions stuff: % 10 and / 10 to get digits % 2 == 0 to test for even (!= for odd)

Page 12: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education

Programming Practice

Practice problems from previous exams

Page 13: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 13

Programming Tips Read the problems carefully: Does it want you to print a result, or return it?

What values does the method use for computation? Are these values parameters, are they read from a Scanner, etc.?

What type of value (if any) does the method return?

Have you handled all special cases? What if the integer is 0, or negative? What if the string has no letters? What if there is only one word in the string? Many words?

Page 14: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 14

Practice Problem 1: Print MultiplesWrite a static method named printMultiples

Takes two integers n and m as parameters and prints the first m multiples of n Assume m >= 1

Multiples are separated by commas

printMultiples(3, 5);The first 5 multiples of 3 are 3, 6, 9, 12, 15

printMultiples(7, 3);The first 3 multiples of 7 are 7, 14, 21

Page 15: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 15

Print Multiples Solutionpublic static void printMultiples(int n, int times) {

System.out.print("The first " + times +

" multiples of " + n + " are " + n);

for (int i = 2; i <= times; i++) {

System.out.print(", " + i * n);

}

System.out.println();

}

Page 16: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 16

Practice Problem 2: Count Even Digits

Write a static method named countEvenDigits

Accepts an integer as its parameter and returns the number of even-valued digits in that number. Even digits: 0, 2, 4, 6, or 8

Assume value passed to your method is non-negative

// 4 even digits: two 8s, the 4, and 6int x = countEvenDigits(8346387) ;

System.out.println("x is " + x); // x is 4

Page 17: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 17

Count Even Digits Solutionpublic static int countEvenDigits(int n) {

int count = 0;

while (n != 0) {

int digit = n % 10;

n = n / 10;

if (digit % 2 == 0) {

count++;

}

}

return count;

}

Page 18: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 18

Practice Problem 3: CheerleaderWrite a static method named cheerleader

Takes two params: number of lines of output number of "cheers" per line

Cheer structure: 1 cheer: Go 2 cheers: Go Team Go 3 cheers: Go Team Go Team Go

Each line indented by 3 spaces; first line at 0 spaces

cheerleader(2, 1);Go

Go

cheerleader(4, 3); Go Team Go Team Go

Go Team Go Team GoGo Team Go Team Go

Go Team Go Team Go

cheerleader(2, 4);Go Team Go Team Go Team Go

Go Team Go Team Go Team Go

Page 19: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 19

Cheerleader Solutionpublic static void cheerleader(int lines, int cheers) {

for (int line = 1; line <= lines; line++) {

for (int space = 1; space <= line - 1; space++) {

System.out.print(" ");

}

for (int cheer = 1; cheer <= cheers - 1; cheer++) {

System.out.print("Go Team ");

}

System.out.println("Go");

}

}

Page 20: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 20

Practice Problem 4: Favorite Letter Write a static method named faveLetter

Accepts two parameters: Scanner for the console Favorite letter represented as a

one-letter String

Repeatedly prompt the user until two consecutive words are entered that start with that letter. Case sensitive

Print a message showing the last word typed.

(assume a Scanner named console was made earlier in code)

faveLetter(console, "y");Looking for two "y" words.Type a word: hiType a word: byeType a word: yesType a word: what?Type a word: yellowType a word: yippee"y" is for "yippee"

Page 21: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 21

Favorite Letter Solutionpublic static void faveLetter(Scanner console, String letter) {

System.out.println("Looking for two \"" + letter + "\" words.");

int count = 0;

String word = "";

while (count < 2) {

System.out.print("Type a word: ");

word = console.next();

if (word.startsWith(letter)) {

count++;

} else {

count = 0;

}

}

System.out.println("\"" + letter + "\" is for \"" + word + "\"");

}

Page 22: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 22

Practice Problem 5: Random Rects Write a static method named randomRects

Calculates and displays the area of randomly-generated rectangles.

Each rectangle has random width and height btwn 1 and 10 inclusive

Keep generating rectangles until an increasing sequence of four areas is printed. Stop when the last four rectangles

generated have areas of a1, a2, a3 and a4 such that a1 < a2 < a3 < a4

randomRects();w: 5, h: 6, area: 30w: 10, h: 5, area: 50w: 2, h: 8, area: 16w: 4, h: 4, area: 16w: 2, h: 9, area: 18w: 8, h: 3, area: 24w: 7, h: 2, area: 14w: 3, h: 10, area: 30w: 7, h: 9, area: 63w: 9, h: 8, area: 72End random rectangles.

Page 23: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 23

Random Rectangles Solutionpublic static void randomRects() {

Random r = new Random();

int last = 0;

int count = 0;

while (count != 4) {

int w = r.nextInt(10) + 1;

int h = r.nextInt(10) + 1;

int area = w * h;

if (area <= last) {

count = 1; // need to count first rect in sequence

} else {

count++;

}

System.out.println("w: " + w + ", h: " + h + ", area: " + area);

last = area;

}

System.out.println("End random rectangles.");

}

Page 24: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education

Non-Programming Practice

Tips on Questions 1-4

(For assertions help, see lecture 14)

Page 25: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 25

Expressions integer division and mod: quotient and remainder

14 / 3 is 4, 14 % 3 is 27 / 10 is 0, 7 % 10 is 7

precedence: ( ) before * / % before + -5 + 2 * 6 - (1 + 7) % 3

5 + 2 * 6 - 8 % 3

5 + 12 - 8 % 3

5 + 12 - 2

17 - 2

15

Page 26: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 26

Expressions 2 String concatenation: same precedence as integer + -,

evaluated left-to-right with other + - operations1 + 2 + "3" + 4 + 5

3 + "3" + 4 + 5

"33" + 4 + 5

"334" + 5

"3345"

type promotion: done as needed when int and doubleare mixed50 / 6 / 5.0

8 / 5.0

1.6

Page 27: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 27

Expression questions Evaluate the following expressions:

16 / 3 + 3.2 * 2

8 / 7 + "5 / 4" + 8 / 3

88 % 10 % 3 * 16 / 10

29 / 3 / 2 / 4.0 + 3.6 * 2

1.4 + (3 + 2 * 6) / (8 - 14 / 3) * 2.2

Page 28: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 28

Expression answers Correct answers:

16 / 3 + 3.2 * 2 11.4

8 / 7 + "5 / 4" + 8 / 3 "15 / 42"

88 % 10 % 3 * 16 / 10 3

29 / 3 / 2 / 4.0 + 3.6 * 2 8.2

1.4 + (3 + 2 * 6) / (8 - 14 / 3) * 2.2 8.0

Page 29: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 29

Parameter mystery questionWhat is the output of the following program?public class Mystery {

public static void main(String[] args) {

String john = "skip";

String mary = "george";

String george = "mary";

String fun = "drive";

String work = "john";

speak(mary, john, fun);

speak(george, work, john);

speak(fun, "george", "work");

speak(george, mary, john);

speak(george, "john", "dance");

}

public static void speak(String mary, String john, String fun) {

System.out.println(john + " likes to " + fun + " with " + mary);

}

}

Page 30: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 30

Parameter mystery tips Try making a table of the parameters passed to each call:public class Mystery {

public static void main(String[] args) {

String john = "skip";

String mary = "george";

String george = "mary";

String fun = "drive";

String work = "john";

speak(mary, john, fun);

speak(george, work, john);

speak(fun, "george", "work");

speak(george, mary, john);

speak(george, "john", "dance");

}

public static void speak(String mary, String john, String fun) {

System.out.println(john + " likes to " + fun + " with " + mary);

}

}

george skip drive

mary john skip

drive george work

mary george skip

mary john dance

Page 31: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 31

Parameter mystery answerWhat is the output of the following program?public class Mystery {

public static void main(String[] args) {

String john = "skip";

String mary = "george";

String george = "mary";

String fun = "drive";

String work = "john";

speak(mary, john, fun); skip likes to drive with george

speak(george, work, john); john likes to skip with mary

speak(fun, "george", "work"); george likes to work with drive

speak(george, mary, john); george likes to skip with mary

speak(george, "john", "dance"); john likes to dance with mary

}

public static void speak(String mary, String john, String fun) {

System.out.println(john + " likes to " + fun + " with " + mary);

}

}

Page 32: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 32

While loop mystery question Given the following program,

public static void mystery(int y) {

int x = 0;

int z = 0;

while (y > 0) {

System.out.print(x + " " + z + " ");

x++;

z = z + y % 10;

y = y / 10;

}

System.out.println(x + " " + z);

}

What is the output of the following sequence of calls?mystery(0);

mystery(8);

mystery(32);

mystery(72);

mystery(184);

mystery(8239);

Page 33: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 33

While loop mystery tips Keep track of each variable's value as it changes:

public static void mystery(int y) {

int x = 0;

int z = 0;

while (y > 0) {

System.out.print(x + " " + z + " ");

x++;

z = z + y % 10;

y = y / 10;

}

System.out.println(x + " " + z);

}

What is the output of the following call?mystery(184);

Sometimes, these problems are performingreal computations in disguise. What is this problem really doing?

x y z

0 184 0

1 18 4

2 1 12

3 0 13

Page 34: Midterm Review Session - courses.cs.washington.edu · 7/24/2009  · Midterm Logistics Bring your UW Student ID card!! Will check your ID while you’re leaving Bring your stuff with

Copyright 2009 by Pearson Education 34

While loop mystery answers Given the following program,

public static void mystery(int y) {

int x = 0;

int z = 0;

while (y > 0) {

System.out.print(x + " " + z + " ");

x++;

z = z + y % 10;

y = y / 10;

}

System.out.println(x + " " + z);

}

What is the output of the following sequence of calls?mystery(0); 0 0

mystery(8); 0 0 1 8

mystery(32); 0 0 1 2 2 5

mystery(72); 0 0 1 2 2 9

mystery(184); 0 0 1 4 2 12 3 13

mystery(8239); 0 0 1 9 2 12 3 14 4 22