Introduction to Computers and Programming Lecture 7: First Midterm March 7th • I will tell you the exact material covered in the coming classes. • I.

Download Report

Transcript Introduction to Computers and Programming Lecture 7: First Midterm March 7th • I will tell you the exact material covered in the coming classes. • I.

Introduction to Computers and
Programming
Lecture 7:
First Midterm
March 7th
• I will tell you the exact material covered in the
coming classes.
• I will also talk about the format of the exam.
• There will be no make up exam so your attendance is
mandatory.
Road map
• char data type
Review
• True or False: An int variable can contain any
integer.
• When must you use an if / else if /
else statement instead of using a switch
statement?
• When is it preferable to use a switch statement?
• What is a magic number? How should you deal
with a magic number? Why?
• Explain what the exclusive or (^) operator tests.
(exp a) ^ (exp b)
• Define the purpose of each part of this expression:
(part a) ? (part b) : (part c)
Review continued
• What is the output of the following code
fragment?
int a = 100, b = 50;
if ((a == 60) && (b <= 100))
System.out.println ("Yes");
• What is the output of the following code
fragment?
int a = 100, b = 50;
if ((a == 60) || (b <= 100))
System.out.println ("Yes");
Review continued
• What is the output of this switch statement?
int a = 90;
switch (a)
{
case 80:
System.out.println (80);
case 90:
System.out.println (90);
case 100:
System.out.println (100);
}
char data type
char data type
•
•
•
•
•
•
•
•
Java allows us to store "single" character values.
char character = 'a'; // not the same as "a";
char character = '7';
char newline = '\n';
char tab = '\t';
char space = ' ';
The characters are actually stored as integers (ascii values).
See http://asciitable.com/
• Note: chars use single quotes. We have seen that
Strings use double quotes.
ASCII Table
Source: Liang
char arithmetic
• Given:
char letter = 'a';
• The following code:
letter = (char) (letter + 1);
• Would result in letter storing a 'b' character.
• If we add or subtract two char values, the result is
an int value.
– For example 'c' – 'a' would result in the value 2.
Casting between char and int values
• A char uses 16 bits of memory.
– You can implicitly cast a char to an int
char c = 'a';
int i = c;
– You must explicitly cast an int to a char
int i = 65;
char = (char) i;
• Note: Even though chars are equal to shorts in the
amount of memory they use, they do not hold the
same values (shorts can hold negative numbers).
Reading char values from the user
• You should use charAt(0) to parse the
character from user input.
• For example:
char c;
String cAsString;
cAsString = JOptionPane.showInputDialog
(null, "Enter a character");
c = cAsString.charAt(0);
• Will grab the first character from the user's input.
Warning about numeric digit characters
• The value of a the single digit numeric characters
are not equivalent to the values themselves. In
fact the ASCII value of '0' is 48, '1' is 49, …, '9' is
57.
• How do you think we could convert a numeric
char to an int?
Unicode
• In Java, there are many more characters available then in
the basic ascii table.
• The ascii table only has 128 characters in it.
• Java uses 2 bytes to store characters which allows it to
hold 65536 unique characters.
• Java can store any Unicode (see: unicode.org) character in
a char variable.
• That means you can print any character from any language
on any platform.
• To print a Unicode character, use '\uxxxx' where xxxx is a
hexadecimal representation of the Unicode for the desired
character.
Assignment Operators
• Given the following:
x = 2;
x = x + 1;
System.out.println ("x:
" + x);
• There are actually several ways to rewrite this
more concisely.
Short Cut Operator
• One option is to use the += operator
x = 2;
x += 1; // same as x = x + 1;
System.out.println ("x: " + x);
• There are similar operators for *, -, /.%
–
–
–
–
x
x
x
x
=
=
=
=
x
x
x
x
*
–
/
%
5
5;
5;
5;
is
is
is
is
equivalent
equivalent
equivalent
equivalent
to
to
to
to
x
x
x
x
*=
-=
/=
%=
5;
5;
5;
5;
• Good Practice: place a space before and after your
short cut operators.
Increment Operator
• A second option is to use an increment operator:
x++
Post-Increment Operator
++x
Pre-Increment Operator
• Both operators will increment x by 1, but they do
have subtle differences.
Pre v. Post Increment
• PostIncrement Operator (x++):
– use the current value of x in the expression.
Then, increment by 1.
• PreIncrement Operator (++x):
– Increment x by 1. Then, use the new value of x
in the expression.
How about a real example?
// Preincrementing v. PostIncrementing
public class PrePost
{
public static void main (String[] args)
{
Post Increment
int c = 5;
Output:
System.out.println (c);
5
System.out.println (c++);
System.out.println (c);
5
System.out.println();
6
c = 5;
System.out.println (c);
System.out.println (++c);
5
System.out.println (c);
6
}
}
Pre Increment
 2000 Prentice Hall, Inc. All rights reserved.
6
Modified by Evan Korth
Pre v. Post Decrement
• PostDecrement Operator (x--):
– use the current value of x in the expression.
Then, decrease by 1.
• PreDecrement Operator (--x):
– Decrease x by 1. Then, use the new value of x
in the expression.
• Good practice: Place unary operators
directly next to their operands, with no
intervening spaces.
Introduction to While Loops
While Loops
• While Loop: Keep repeating an action while some
condition remains true.
• Examples:
– Every Stairmaster Machine contains a while
loop (end condition is based on mode used).
• while the person is still climbing, keep
displaying the status, e.g. number of stairs
climbed, calories burned, etc.
– Keep prompting for book orders until the user
is done.
while loop (continued)
• For example (in pseudocode)
while (some Boolean expression is true)
{
do this (again and again...)
}
Parts of a While Loop
•
Every while loop will always contain three main
elements:
1) Priming: initialize your variables.
2) Testing: test against some known condition.
3) Updating: updates part (or all) of the
expression that is tested.
Simple While Loop
public class While1
{
public static void main (String args[])
{
1. Priming
int index = 1;
while (index <= 10)
2. Test Condition
{
System.out.println ("Index: " + index);
index++;
Index: 1
3. Update: In this
}
Index: 2
case, you can use
}
either the pre or
Index: 3
}
post increment
operator.
...
Index:
8
Index:
9
Index:
10
While Loop Flowchart
1. Priming
Set index=1
2. Test
index
<= 10
FALSE
TRUE
3. Print value of
index
Update index++
Infinite Loop
• Infinite Loop: A loop that never ends.
– Generally, you want to avoid these!
– There are special cases, however, when you do
want to create infinite loops on purpose.
• Common Exam Questions:
– Given a piece of code, identify the bug in the
code.
– You may need to identify infinite loops.
Infinite Loop Example #1
public class While2
{
public static void main (String args[])
{
int index = 1;
while (index <= 10)
{
System.out.println ("Index: " + index);
}
Index:
}
Index:
}
Here, I have deleted part 3:
Index:
1
1
1
The update statement (index++). Index:
1
Index:
1
…
[forever]
Infinite Loop, Example #2
public class While3
{
public static void main (String args[])
{
int index = 1;
while (index >= 0)
{
System.out.println ("Index: " + index);
index++;
Index:
}
Index:
Here, I have changed
}
Index:
}
Part 2: the test
condition.
1
2
3
Index:
4
Index:
5
…
[forever]
While Loops: Examples
While Loop Example
• Specification for the program:
– Find the first power of 2 larger than 1000.
• For example: 2, 4, 8, 16, 32, etc. are powers of 2.
– Which is the first power of 2 larger than 1000?
– Finding the answer to this requires some kind of a while
loop.
– Let’s see how…
 2000 Prentice Hall, Inc. All rights reserved.
Modified by Evan Korth
While Loop Example
• Example:
int product = 2;
while ( product <= 1000 )
product = 2 * product;
product <= 1000
false
 2000 Prentice Hall, Inc. All rights reserved.
true
product = 2 * product
public class PowerOfTwoOver1000
{
public static void main (String args[])
{
int product = 2;
while ( product <= 1000 )
product = 2 * product;
System.out.println (product);
}
}
 2000 Prentice Hall, Inc. All rights reserved.
Counter-Controlled Repetition
• Counter-controlled repetition
– Loop repeated until counter reaches a certain value
– Definite repetition: number of repetitions is known
– Example: A class of ten students took a quiz. The grades
(integers in the range 0 to 100) for this quiz are available to
you. Determine the class average on the quiz
 2000 Prentice Hall, Inc. All rights reserved.
4.8
Formulating Algorithms: Case Study 1
(Counter-Controlled Repetition)
• Counter
– Variable that controls number of times set of statements
executes
• Average1.java calculates grade averages
– uses counters to control repetition
 2003 Prentice Hall, Inc. All rights reserved.
Set total to zero
Set grade counter to one
While grade counter is less than or equal to ten
Input the next grade
Add the grade into the total
Add one to the grade counter
Set the class average to the total divided by ten
Print the class average
Fig. 4.6 Pseudocode algorithm that uses countercontrolled repetition to solve the class-average
problem.
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Fig. 4.7: Average1.java
// Class-average program with counter-controlled repetition.
import javax.swing.JOptionPane;
public class Average1 {
public
{
int
int
int
int
static void main( String args[] )
total;
gradeCounter;
grade;
average;
//
//
//
//
sum of grades input by user
number of grade to be entered next
grade value
average of grades
String gradeString; // grade typed by user
// initialization phase
total = 0;
// initialize total
gradeCounter = 1;
// initialize loop counter
// processing phase
while ( gradeCounter <= 10 ) {
// loop 10 times
// prompt for input and read grade from user
gradeString = JOptionPane.showInputDialog(
"Enter integer grade: " );
// convert gradeString to int
grade = Integer.parseInt( gradeString );
 2003 Prentice Hall, Inc. All rights reserved.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
total = total + grade;
gradeCounter = gradeCounter + 1;
// add grade to total
// increment counter
} // end while
// termination phase
average = total / 10;
// integer division
// display average of exam grades
JOptionPane.showMessageDialog( null, "Class average is " +
average, Class Average", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
// terminate the program
} // end main
} // end class Average1
 2003 Prentice Hall, Inc. All rights reserved.