Section 004 Spring CS 170 Exam 1. Name (print): Instructions:

Similar documents
Question: Total Points: Score:

Section 002 Spring CS 170 Exam 1. Name (print): Instructions:

Question: Total Points: Score:

Section 003 Fall CS 170 Exam 1. Name (print): Instructions:

Place your name tag here

Question: Total Points: Score:

Question: Total Points: Score:

Question: Total Points: Score:

Section 003 Fall CS 170 Exam 2. Name (print): Instructions:

Question: Total Points: Score:

CS 170 Section 3, Spring 2015 Programming in Java Midterm Exam 1. Name (print):

CS 170 Exam 1. Version: B Fall Name (as on OPUS):

CS 170 Exam 1. Version: C Fall Name (as on OPUS):

CS 170 Section 3, Spring 2015 Programming in Java Midterm Exam 1. Name (print):

Question: Total Points: Score:

Question: Total Points: Score:

Question: Total Points: Score:

Question: Total Points: Score:

CS 170 Exam 2. Version: A Spring Name (as in OPUS) (print): Instructions:

CS 170 Exam 2. Version: A Fall Name (as in OPUS) (print): Instructions:

Question: Total Points: Score:

CS 170 Exam 2. Version: A Spring Name (as in OPUS) (print): Instructions:

Question: Total Points: Score:

Instructor: Yu Wang 11/16/2012

CS 170 Exam 2. Section 004 Fall Name (print): Instructions:

Question: Total Points: Score:

CS 190 Exam 2 Fall 2014

CS 110 Exam 2 Spring 2011

Question: Total Points: Score:

CS 155 Exam 2 Spring 2015

CS170 (005): Introduction to Computer Science Exam 2

Exam Percentage: / 55 = %

CS 1301 Exam 1 Fall 2010

CS 110 Exam 2 Fall 2011

CS 1301 Exam 1 Fall 2010

Exam 2. Programming I (CPCS 202) Instructor: M. G. Abbas Malik. Total Marks: 40 Obtained Marks:

CS 190 Exam 1 Fall 2010

Programming with Java

CS 1301 Exam 1 Spring 2011

CS 1803 Fall 2010 Exam 1

CS 1301 Exam 1 Fall 2011

CS 2316 Exam 1 Spring 2014

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Spring 2016 Howard Rosenthal

CS 2316 Exam 4 Fall 2011

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Fall 2016 Howard Rosenthal

AP CS Unit 3: Control Structures Notes

M105: Introduction to Programming with Java Midterm Examination (MTA) Makeup Spring 2013 / 2014

Exam 2, Version 2. For the following code, mark True or False for statements 1.8 to 1.10.

Midterm Examination (MTA)

Loops. CSE 114, Computer Science 1 Stony Brook University

School of Computer Science CPS109 Course Notes 5 Alexander Ferworn Updated Fall 15

CSE 114 Computer Science I

St. Edmund Preparatory High School Brooklyn, NY

CS Exam 2 - Spring 2010

CIS 110 Introduction To Computer Programming. February 29, 2012 Midterm

CS 1803 Fall 2010 Exam 1

Loops and Expression Types

CS 1301 Exam 3 Spring 2014

Oct Decision Structures cont d

Please answer the following questions. Do not re-code the enclosed codes if you have already completed them.

Choose 3 of the 1 st 4 questions (#'s 1 through 4) to complete. Each question is worth 12 points.

Your (printed!) Name: CS 1803 Exam 3. Grading TA / Section: Monday, Nov. 22th, 2010

Chapter 4: Control Structures I

CS 2316 Exam 1 Spring 2013

CS 1301 Exam 1 Fall 2014

CS 1301 Exam 1 Fall 2014

Java Foundations: Introduction to Program Design & Data Structures, 4e John Lewis, Peter DePasquale, Joseph Chase Test Bank: Chapter 2

CS 1301 Exam 2 Fall 2014

COMP-202B - Introduction to Computing I (Winter 2011) - All Sections Example Questions for In-Class Quiz

Last Name: Circle One: OCW Non-OCW

CS 1301 Exam 3 Fall 2014

CS Introduction to Programming Midterm Exam #1 - Prof. Reed Fall 2009

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Simple Control Flow: if-else statements

CS111: PROGRAMMING LANGUAGE II

COE 212 Engineering Programming. Welcome to Exam II Thursday April 21, Instructors: Dr. Salim Haddad Dr. Joe Tekli Dr. Wissam F.

CS 251 Intermediate Programming Java Basics

STUDENT LESSON A12 Iterations

CIS 110 Introduction to Computer Programming 8 October 2013 Midterm

COMP-202: Foundations of Programming. Lecture 3: Boolean, Mathematical Expressions, and Flow Control Sandeep Manjanna, Summer 2015

CS 231 Data Structures and Algorithms Fall Event Based Programming Lecture 06 - September 17, Prof. Zadia Codabux

CS 2316 Exam 4 Fall 2012

Chapter 3. Selections

Sequence structure. The computer executes java statements one after the other in the order in which they are written. Total = total +grade;

CS Name : Grading TA:

Darrell Bethea May 25, 2011

CS 1301 Exam 1 Fall 2013

Array. Array Declaration:

Q1 Q2 Q3 Q4 Q5 Total 1 * 7 1 * 5 20 * * Final marks Marks First Question

CS 1301 Exam 2 A Fall 2015

Chapter 3. More Flow of Control. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

CIS 1068 Program Design and Abstraction Spring2016 Midterm Exam 1. Name SOLUTION

CONTENTS: Compilation Data and Expressions COMP 202. More on Chapter 2

CS Introduction to Programming Midterm Exam #1 - Prof. Reed Spring 2010

Building Java Programs

CSC 1051 Algorithms and Data Structures I. Midterm Examination February 24, Name: KEY 1

CS 2316 Exam 3 Spring 2013

Interpreted vs Compiled. Java Compile. Classes, Objects, and Methods. Hello World 10/6/2016. Python Interpreted. Java Compiled

CS 2316 Exam 4 Fall 2011

Introduction to Programming Using Java (98-388)

CS 1301 Exam 2 Fall 2013

Transcription:

CS 170 Exam 1 Section 004 Spring 2014 Name (print): Instructions: Keep your eyes on your own paper and do your best to prevent anyone else from seeing your work. Do NOT communicate with anyone other than the professor/proctor for ANY reason in ANY language in ANY manner. This exam is closed notes, closed books, and no calculator. Turn all mobile devices off and put them away now. You cannot have them on your desk. Write neatly and clearly indicate your answers. What I cannot read, I will assume to be incorrect. Stop writing when told to do so at the end of the exam. I will take 5 points off your exam if I have to tell you multiple times. Academic misconduct will not be tolerated. Suspected academic misconduct will be immediately referred to the Emory Honor Council. Penalties for misconduct will be a zero on this exam, an F grade in the course, and/or other disciplinary action that may be applied by the Emory Honor Council. Time: This exam has 8 questions on 12 pages including the title page. Please check to make sure all pages are included. You will have 75 minutes to complete this exam. I commit to uphold the ideals of honor and integrity by refusing to betray the trust bestowed upon me as a member of the Emory community. I have also read and understand the requirements and policies outlined above. Signature: Question: 1 2 3 4 5 6 7 8 Total Points: 13 7 5 19 5 5 8 13 75 Score: 1

1. (13 points) Evaluate each expression. Then give the result of the evaluation and the data type of the result. If the expression cannot be evaluated or is not proper Java syntax, you may simply write error for the value. The first row has been done for you. String s1 = "CS170", s2 = "5", s3 = "13.0"; char c1 =!, c2 = r ; int i1 = 4, i2 = 6; i3 = 315 double d1 = 3.0, d2 = 13.0; boolean b1 = false; b2 = true; b3 = false; Expression Value Type 4+1 5 int i3 % 100 15 int "" + i1 + i2 46 String i2 / d1 2.0 double i1 >= d1 + d2-10 false boolean c2 + 2 116 int (int)d2 + d1 + i3 331.0 double b1!(i3 > d2 * d1) false boolean b1 &&!b1 false boolean i2 + 6 < i2 + 7 < i2 + 8 error can t compare booleans to ints (int)s1.charat(3) 55 int -(-i2) 6 int!(b1 && (b2!b3)) true boolean d1 + c1 + s2 36.05 String Notes: The parenthesis operator has the highest precedence of all operators. The logical not operator and the casting operator have higher precedence than arithmetic operators, relational/comparison operators, and the other logical operators. Arithmetic operators have higher precedence than relational/comparison or logical operators. Relational/comparison operators have higher precedence than logical operators. Assignment operators have the lowest precedence of all operators 2

2. Briefly (no more than 2 sentences!) answer each question below. You may give an example if you wish. (a) (1 point) What is the function of a compiler? Solution: translate high level language (such as Java) to a low level (machine) language. (b) (1 point) What is the command used to compile a file named MyProgram.java? Solution: javac MyProgram.java (c) (1 point) In Java, what is a library? Solution: container for related classes (d) (1 point) What is casting? Solution: Changing datatype of a value. Can be explicit (done by programmer using casting operator) or implicit (handled by Java in safe situations). (e) (1 point) List 3 comparison operators. Solution: >=, >, <=, <, ==,!= (f) (1 point) List 3 shortcut assignment operators. Solution: +=, -+, *=, /=, %=, ++, -- (g) (1 point) What is the smallest unit of executable program code in Java? Solution: a statement 3

3. (5 points) Assume the statements below are part of a Java program which compiles and runs. What is the output if the user types 7? Scanner in = new Scanner(System.in); int num = in.nextint(); if (num < 0 && num > 10) { System.out.println("Bert"); else if (num < 0 num > 10) { System.out.println("Ernie"); System.out.println("Big Bird"); System.out.println("One. Ah-ah-ah"); if (num > 0 && num < 10) { System.out.println("Oscar"); if (num >= 0 && num <= 10) { System.out.println("Grover"); else if (num >= 5 num <= 8) { System.out.println("Cookie Monster"); System.out.println("Elmo"); System.out.println("Two. Ah-ah-ah"); if (num >= 4) { System.out.println("Telly"); if (num > 5) { System.out.println("Baby Bear"); System.out.println("The Count") Solution: Big Bird One. Ah-ah-ah. Oscar Grover Two. Ah-ah-ah. Telly Baby Bear Scoring: -.5 for each incorrect inclusion or exclusion except One... and Two... 4

4. For each of the code fragments below, give the output. If the code contains a syntax error, correct it and then give the output of the corrected code. If the code results in an infinite loop, write the first few outputs, and then indicate that it is an infinite loop. (a) (3 points) for (int i = 1; i < 15; i+=1) { if (i % 6 == 5) { break; i = i + 1; System.out.println(i); Solution: 2 4 (b) (3 points) String s = "Emory"; for(int i = s.length()-2; i>=0; i--) { System.out.print(s.charAt(i+1)); Solution: yrom (c) (3 points) for (int i = -2; i < 2; i++) { System.out.println(i*2); Solution: -4, -2, 0, 2 5

(d) (3 points) String s = "Emory"; for(int i = 0; i < s.length(); i++) { s = s + s.charat(i); System.out.println(s) Solution: infinite loop! The string s grows with every iteration of the loop, so s.length() increases by 1 each iteration of the loop. Many students thought the loop ended when the string reached EmoryEmory. EmoryE EmoryEm EmoryEmo... (e) (2 points) int n = 0; while(n < 4); { System.out.println(n); n++; Solution: This is tricky! Notice the ; after the while. As written, this is an infinite loop that always prints 0. I also accepted answers where the semicolon was removed and the output was 0, 1, 2, 3. However, if you did this, you had to indicate that you knew/recognized that the semi-colon changed the execution. (f) (3 points) int sum = 0; for(int i = 0; i <= 3; i++) sum+= i; System.out.println(sum); Solution: Careful! The SOP lines looks like it s included in the for loop, but the for loop was written without curly braces! (This was very similar to one of your earlier quiz problems.) Output is only the final sum after the loop has finished: 6. Also accepted if students added braces to match the indentation in which case the output was 0, 1, 3, 6. (g) (2 points) String name = "456"; if( name.length() = 3) { System.out.println("Length is three."); Solution: Syntax error. Assignment operator (=)used instead of equality operator (==). After correcting error, output is Length is three 6

5. Professor Summet wants to swap the values of the two variables x and y. In other words, after the code below executes, x should have the value 13 and y should have the value 14. However, her code doesn t work! /****************************************/ int x = 14; int y = 13; System.out.println("x: " + x); System.out.println("y: " + y); //swap the values of x and y x = y; y = x; System.out.println("after swap x: " + x); System.out.println("after swap y: " + y); /****************************************/ (a) (2 points) What is the output of the code above as it is currently written? Solution: x: 14 y: 13 after swap x: 13 after sway y: 13 (b) (3 points) Rewrite the swap code (after the comment in the original code) so that the values are correctly swapped. Hint: you may add additional variables if you need to. Solution: int temp = x; x = y; y = temp; Common error: writing a solution that only worked with the given values of x and y. For example: x = 14; y = 13; 7

6. Professor Summet wrote the code below to check whether the times for two appointments overlap given 4 integer values for the variables start1, end1, start2, and end2. The starting times of the two appointments are represented by start1 and start2 while end1 and end2 represent the respective ending times. For simplicity, assume appoinments are given in 24-hour (ie military) time (0-24) and start on the hour. Consider the following code to solve this problem: int start1, end1, start2, end2, s, e; //variables initialized here with values in table below if (start1 > start2) { s = start1; s = start2; if (end1 < end2) { e = end1; e = end2; boolean overlap = s < e; (a) (3 points) Complete the table below with the value that results given the 4 variable values for start1, end1, start2, end2. start1 end1 start2 end2 overlap 10 12 11 13 true 10 11 11 12 false 10 12 14 15 false (b) (2 points) Does the code work as intended? If not, explain why not. Solution: Yes, it does, assuming that no appointments span a day (eg. begin at 20:00 and end at 1:00). Some students also modified the code to not allow appointments to start and end at the same time (eg. Appt1 end at 12:00 and Appt2 start at 12:00). 8

7. (8 points) Complete the code below which determines if 3 integer numbers are evenly distributed. Evenly distributed numbers are separated by the same amount. In other words, the difference between thelargestandmiddlenumberisthesameasthedifferencebetweenthemiddleandthesmallestnumber. Your code should print out a statement to indicate whether or not the numbers are evenly distributed. a b c Evenly Distributed? 3 6 9 Yes 6 3 9 Yes 9 3 6 Yes 9 9 9 Yes 9 8 6 No 9 6 6 No Hint: recall that the Math.max function takes two integers as input parameters and returns the larger of the two. Likewise, the Math.min function takes two integers but returns the smallest of them. int a, b, c; //You may assume the variables are initialized here. You DO NOT need //to initialize them or use a Scanner to initialize them. /*************** Your code here *****************/ Solution: int big, mid, small; if (a >= b && a >= c) { big = a; mid = Math.max(b, c); small = Math.min(b, c); else if (b >= a && b >= c) { big = b; mid = Math.max(a, c); small = Math.min(a, c); big = c; mid = Math.max(a, b); small = Math.min(a, b); if (big - mid == mid - small) System.out.println("Evenly distributed"); else System.out.println("Not evenly distributed"); +2 Identified overall max +2 Identified overall min +2 Identified middle number +2 Correctly determines distributed or not and prints to terminal Common mistakes: 9

Not accounting for case where all numbers were equal. Accounting for only certain cases (eg. code only works when a is the largest number or c is the smallest, etc). 10

8. (13 points) Complete the program below which determines whether or not a phone number is valid. A phone number is considered to be valid if it is a 7 digit number which does not contain the number 15 (ie the digits 1 and 5 in order) as any part of it. You may assume the user always enters a 7 digit integer. import java.util.scanner; public class ValidNum{ public static void main (String[] args){ Scanner in = new Scanner(System.in); System.out.print("Enter a number: "); int num = in.nextint(); /*----------- Your code here -------------*/ Solution: boolean valid = true; while(num!= 0) { int rem = num % 100; // check last 2 digits! if (rem == 15) { valid = false; break; //not necessary but more efficient num = num / 10; // remove only 1 digit! if (valid) { // or if(valid == true) SOP("Number is valid"); SOP("Number is invalid"); Another solution using a conversion to a String: String s = "" + num; boolean valid = true; for (i = 0; i < s.length()-1; i++) { if (s.charat(i) == 1 && s.charat(i+1)== 5 ) { valid = false; if (valid) { S.O.P("valid"); S.O.P("invalid"); 11

Scoring: +3 loop runs correctly +2 inspects 2 digits of loop each time +2 correctly identifies 15 in number +2 correctly identifies valid numbers +2 correctly identifies invalid numbers +2 prints output(valid or invalid) to screen correctly Common mistakes: Printing valid or invalid each iteration of loop rather then just printing once at end of loop. Converting to String by casting. (ie String s =(String)num;) You can only use the casting operator for primitive datatypes. Letting loop go too far and trying to examine characters that don t exist: for (int i = 0; i < s.length(); i++) { if (s.charat(i) == 1 && s.charat(i+1) == 5 )... Note that s.length() will be 7 so loop will run from 0 to 6 (inclusive). When i is 6, you will be examining characters at indices 6 and 7 (which doesn t exist) and you will generate an IndexOutOfBounds runtime error. 12