Presentation is loading. Please wait.

Presentation is loading. Please wait.

Midterm Review Session

Similar presentations


Presentation on theme: "Midterm Review Session"— Presentation transcript:

1 Midterm Review Session
Programming Problems For more practice:

2 Midterm Logistics Bring your UW Student ID card!! 60 minute exam
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

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

4 More Exam Info Non-programming questions 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!

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

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:

7 Some essential topics from Ch1-5
Concepts Review Some essential topics from Ch1-5

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

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

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

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) + min Where range: max – min + 1 r.nextInt(51) + 50; // produces random value Expressions stuff:  % 10 and / 10 to get digits % 2 == 0 to test for even (!= for odd)

12 Practice problems from previous exams
Programming Practice Practice problems from previous exams

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?

14 Practice Problem 1: Print Multiples
Write 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

15 Print Multiples Solution
public 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();

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 6 int x = countEvenDigits( ) ; System.out.println("x is " + x); // x is 4

17 Count Even Digits Solution
public 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;

18 Practice Problem 3: Cheerleader
Write 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 cheerleader(4, 3); Go Team Go Team Go cheerleader(2, 4); Go Team Go Team Go Team Go

19 Cheerleader Solution public 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");

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: hi Type a word: bye Type a word: yes Type a word: what? Type a word: yellow Type a word: yippee "y" is for "yippee"

21 Favorite Letter Solution
public 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 + "\"");

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: 30 w: 10, h: 5, area: 50 w: 2, h: 8, area: 16 w: 4, h: 4, area: 16 w: 2, h: 9, area: 18 w: 8, h: 3, area: 24 w: 7, h: 2, area: 14 w: 3, h: 10, area: 30 w: 7, h: 9, area: 63 w: 9, h: 8, area: 72 End random rectangles.

23 Random Rectangles Solution
public 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.");

24 Non-Programming Practice
Tips on Questions 1-4 (For assertions help, see lecture 14)

25 Expressions integer division and mod: quotient and remainder
14 / 3 is 4, 14 % 3 is 2 7 / 10 is 0, 7 % 10 is 7 precedence: ( ) before * / % before + - 5 + 2 * 6 - (1 + 7) % 3 5 + 2 * % 3 % 3 15

26 Expressions 2 String concatenation: same precedence as integer + -, evaluated left-to-right with other + - operations "3" 3 + "3" "33" "334" + 5 "3345" type promotion: done as needed when int and double are mixed 50 / 6 / 5.0 8 / 5.0 1.6

27 Expression questions Evaluate the following expressions:
16 / * 2 8 / 7 + "5 / 4" + 8 / 3 88 % 10 % 3 * 16 / 10 29 / 3 / 2 / * 2 1.4 + (3 + 2 * 6) / ( / 3) * 2.2

28 Expression answers Correct answers: 16 / 3 + 3.2 * 2 11.4
16 / * 8 / 7 + "5 / 4" + 8 / 3 "15 / 42" 88 % 10 % 3 * 16 / 10 3 29 / 3 / 2 / * 2 8.2 1.4 + (3 + 2 * 6) / ( / 3) *

29 Parameter mystery question
What 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);

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 work dance

31 Parameter mystery answer
What 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);

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);

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 performing real computations in disguise. What is this problem really doing? x y z 184 1 18 4 2 12 3 13

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); mystery(32); mystery(72); mystery(184); mystery(8239);


Download ppt "Midterm Review Session"

Similar presentations


Ads by Google