2011 - Yale "Zoo"
Download
Report
Transcript 2011 - Yale "Zoo"
CS 112 Introduction to
Programming
Pre-Midterm Exam Review Session
Computer Science Department
Yale University
March 23, 2011
Admin
Assignments
Assignments 1-4: Returned (via Assignments tab)
Assignment 5: Being Reviewed (Due 3/1)
Assignment 6: Due Mar. 24 (yesterday), 9:55 PM
Assignment 7: Will Be Posted Shortly
Midterm – Friday, Mar. 25 during class
Office Hours – Every Day this Week
Send us feedback!
2
Midterm Structure
Content
List of topics covered available on the class website
Question Types
Writing Methods or Code Snippets
Making Corrections to Code
Analyzing “Black Box” Algorithms
Discussing Code Implications, Trade-offs, etc.
Study
Lectures thru Mar. 4
Homework thru Assignment 6
Readings Listed in the Class Schedule (thru Mar. 4)
3
Review Session Overview
Core Content Areas
Basic Java Architecture
Primitive Data Types
Variables
Flow Control
Program Analysis Using Assertions
Methods
Standard Java Classes
Sample Questions
4
Basic Java Architecture
Java is architecture-neutral – compile once,
and your code works anywhere via the “Java
Runtime Environment”
Using Java:
runs a Java .class file via the Java runtime
javac compiles Java source code (.java files) into
Java “bytecode” (.class files)
jar enables compression of multiple files (e.g.,
.java, .class, etc) into a single file
java
5
Primitive Data Types
Data Type
Description
Examples
int
Numeric: Whole numbers
int x = 123;
double, float Numeric: Includes Decimal
double x = 123.001;
boolean
True/False (yes/no, on/off)
boolean x = true;
char
Single letter/number character
char x = ‘a’;
String
Multiple letter/number characters
String x = “Hello world”;
Traditional order of operations applies
Remember:
Numeric operations require numeric data types
Typecasting numeric values is a “safe” approach
Integer math is non-conventional! (e.g., rounding)
6
Primitive Data Types
Operator
Description
Examples
=
Assignment operator
int x = 123;
==, !=
Tests for equality/inequality
if (x == y)
<=, >=
Less than/greater than
comparators
if (a >= b)
+, -, *, /, %
Addition, subtraction, division,
multiplication, and modulus
int x = 1701 – 30;
+=, -=, *=,
/=, %=
In-line arithmetic/assignment
operators
x += 2;
!
The “not” operator – reverses the
true/false result of an expression
If (!(a == b))
||
Boolean “or” operator
if (a == b || b == c)
&&
Boolean “and” operator
if (a == b && b == c)
7
Variables
Distinguish local from global variables
public class Hello{
public static String name = “World”; // Global Variable
public static void main(String args[]){
int numTimes = 5; // Local Variable
for (int i = 0; i < numTimes; i++){
System.out.println(“Hello “ + name);
}
}
}
Use the final keyword for constants!
public static final double PI = 3.14159;
8
Flow Control
Conditional Statements
Loops
if/else if/else
for
switch
while
All control statements rely on evaluation of
boolean expressions
Determines whether to enter/continue or skipover/exit
Interchangeability of if/else if/else with
switch, and for with while
Recognize appropriateness of each
9
Flow Control
for (initialization; test; update) {
header
statement;
statement;
...
body
statement;
}
======================================
initialization;
while (test) {
header
for is more appropriate
statement;
when number of
statement;
iterations is known in
...
advance! Otherwise, use
body
statement;
while.
update;
}
10
Flow Control
Several different loop designs
Continuous – iterates ad infinitum
Early Exit – use of the break keyword causes the
loop to “stop early”
Sentinels – a certain condition is tested on each
iteration and when it is no longer true, the loop exits
(most common)
11
Flow Control
Optional
Optional
if (test) {
statement;
}
else if (test) {
statement;
}
else {
statement;
}
switch (variable) {
case value:
statement;
break;
case value:
Optional
statement;
break;
default:
Optional
statement;
break;
}
A switch statement is only capable of testing
for equality! (i.e., cannot use other comparison
operations)
12
Program Analysis Using Assertions
Recognize that testing for a particular
condition in one place ensures that a condition
is true elsewhere
int studentGradeLevel = 9;
if (studentGradeLevel >= 9) {
// Student is grade 9 or higher
...
statement;
// Student is still grade 9 or higher
}
13
Methods
Definition Format
public static <return-type> <name> (<type> <name>, …) {
<statement>(s);
}
Calling and Passing Parameters
rand.nextInt(); no parameters
rand.nextInt(50); 50 is the parameter
Because nextInt() is overloaded (i.e., has more than one
definition), both calls work!
Overloading methods
Allows multiple methods to share the same name
Overloaded methods must differ in terms of parameter data
types and/or order
Variables declared inside methods are local
14
Standard Java Classes
Data
Type
Relevant Methods
Examples
String
length()
Returns length (number of characters) in the String
charAt(int x)
Returns the character in the String at position x
substring(int
startPos, int endPos)
Returns a String containing the characters in the
string from startPos to endPos, inclusive
round(double x)
Returns the integer-rounded value of x
max(int a, int b) /
min (int a, int b)
Returns the larger/smaller of a or b
sqrt(double x)
Returns the square root value of x
Math
Scanner next(), nextInt(),
nextDouble()
Random
Reads next String/int/double from Scanner
hasNext(),
hasNextInt(),
hasNextDouble()
Determines whether there is another
String/int/double to be read from the Scanner
nextInt(int x)
Returns a randomly-generated integer between 0
(inclusive) and x (exclusive)
15
Standard Java Classes
Other common methods:
System.out.print();
System.out.println();
System.out.printf();
Review printf placeholders
DrawingPanel and Graphics
16
Standard Java Classes
Method name
Description
g.setColor(Color);
set Graphics to paint any following
shapes in the given color
g.drawLine(x1, y1, x2, y2);
line between points (x1, y1), (x2, y2)
g.drawOval(x, y, width, height);
outline largest oval that fits in a box of
size width * height with top-left at (x, y)
g.drawRect(x, y, width, height);
outline of rectangle of size
width * height with top-left at (x, y)
g.drawString(text, x, y);
text with bottom-left at (x, y)
g.fillOval(x, y, width, height);
fill largest oval that fits in a box of size
width * height with top-left at (x, y)
g.fillRect(x, y, width, height);
fill rectangle of size width * height
with top-left at (x, y)
http://download.oracle.com/javase/6/docs/api/java/awt/Graphics.html
17
Sample Questions
Identify the syntax and logic problems in the
below code, as well as stylistic issues:
class Hello{ static
public void main(String args[]){
int x = 0;
Add quotes
while (x < 5){
System.out.println(Hello world!);
Use a
x += 1;
x++ is shorter
for
loop
}
instead
public
return true;
}
Method is void, thus
should not have a
return value
}
18
Sample Questions
What does the below method do?
public static void doSomething(){
for (int i = 0; i < 8; i++){
for (int j = 0; j < i; j++){
System.out.print(“+”);
}
for (int j = 0; j < 8 – i; j++){
System.out.print(“*”);
}
System.out.println(“”);
}
}
Prints:
********
+*******
++******
+++*****
++++****
+++++***
++++++**
+++++++*
Note that this line is not completely filled by plus
signs – be cognizant of off-by-one issues with loops!
19
Questions?
20
Thank You!
21