CS 1312 - PowerPoint PPT Presentation

1 / 70
About This Presentation
Title:

CS 1312

Description:

... direction (accumulating bytes and shorts into an int), no ... The Short End of Shorthand. Be careful to avoid clever' expressions with shorthand notations. ... – PowerPoint PPT presentation

Number of Views:90
Avg rating:3.0/5.0
Slides: 71
Provided by: ccGa
Category:
Tags: short | shorts

less

Transcript and Presenter's Notes

Title: CS 1312


1
CS 1312
  • Introduction to
  • Object Oriented Programming
  • Lecture 2
  • January 11, 2001

2
Computer Numbers
  • Integers (byte, short, int, long)
  • whole numbers
  • exact
  • Relatively limited in magnitude (1019)
  • Floating Point (float, double)
  • fractional
  • often approximations (0.33333)
  • larger magnitude (10308)
  • Actually hold signed mantissa exponent
  • 6.023 x 1023

3
List of Data Types
Primitive Type Default Value boolean
false char
'\u0000' (null) byte (byte) 0 short
(short) 0 int
0 long
0L float 0f double
0d void
N/A
Note At times, the Java Language Specification
refers to void as a primitive, though other parts
(e.g., s. 14.7) say void is not a primitive as
in C/C. One cannot cast to a void type in Java.
4
Data Type Ranges
Type
Size
Min
Default
Max
boolean
false
1
false
true
char
'\u0000' (null)
16
byte
(byte) 0
8
-128
127
short
(short) 0
16
-32,768
32,767
int
0
32
-2,147,483,648
2,147,483,647
long
0L
64
-9,223,372,036,854,775,808
9,223,372,036,854,775,807
float
0.0F
32
Approx 3.4E38 with 7 significant digits
double
0.0D
64
Approx 1.7E308 with 15 significant digits
void
Not truly min and max.
5
Understanding Casting
Last class, we covered some basics of
casting. Sometimes an explicit cast is required,
sometimes its not.
float f2 11.234f int y f2
int x 10 float f1 x
Which one requires a cast to compile? Why?
6
Understanding Casting
To understand when we need casting, lets look
closely at an example.
Lets work with these two types and
identifiers int x char c
The real question is, How BIG are these data
types in memory?
7
Recall
We already discussed the sizes of various data
types in Java. You are guaranteed to have four
bytes in each and every int. We can think of an
int as a container--much like a box.
cereal box
Nutritional Facts Serv. Size 1 int Amount per
Serving Calories 0 Daily
Value Total Bytes 4 100
8
And recall...
A char on the other hand is only 2 bytes. Its
smaller than an int. We might imagine it as a
smaller container.
tuna can
9
So...
A char is 2 bytes, and an int is 4 bytes. So
when we code the following int x
char c We get
Symbol Picture of
Memory
x
0000 0000
0000 0000
0000 0000
0101 0110
Each block is one byte
c
0100 0001
0000 0000
10
Reality Check
Will a can of tuna fit into a box of cereal?
Yes, the can is smaller.
Will a box of cereal fit into a can of tuna? Not
neatly, the box is larger.
11
In a similar vein...
Will a char fit into an int? Will an int fit
into a char?
Symbol Picture of
Memory
x
c
12
Reality Check
What if you wanted to fit HALF the box into the
can. That would fit!
For example, if we know the top half of the box
is empty, we can throw it away!
13
Explicit Casting Intentional Loss of Precision
int x 45 char c A c (char) x //
cast needed

Symbol Picture of
Memory
x
c
cast needed!
14
Testing Yourself
Fill in the blank.
What happens when we do this int someInt
2000 long longNumber longNumber
(long) someInt Is that cast legal? Is that cast
required?
15
Another Example
float f int i, j i 9 j 2 f i / j
Returns 4 because of integer truncation!
If that is not what was intended, Three possible
solutions
f (float) i / j
f (float) i / (float) j
f i / (float)j
16
Another example
We also have to consider how Java preserves the
sign of a value through casting. Consider the
eight bytes used for an int. The highest bit is
used for a sign (plus or minus, through a 0 or 1).
int
Sign bit
31 bits for data
17
Casting and Sign
Casting is not merely chopping one data type into
another. The VM doesnt merely throw away half
of the information. The sign is preserved.
Preserves sign bit
byte
int
18
Another Example
Suppose we had some very, very old data, where
the date was expressed in a int (four byte)
format, such as
19291031
This is very crude, but some old data source
(e.g., tape archives) might have this format.
19
public class CutData public static void
main(String args) int iDate 20001225 //
this is how it was read in byte byDay (byte)
(iDate 100) System.out.println ("The day was
" byDay) iDate iDate / 100 byte
byMonth (byte) (iDate 100) System.out.print
ln ("The month was " byMonth) iDate iDate
/ 100 short sYear (short)
iDate System.out.print ("The year was "
sYear) // CutData
Explicit Cast needed
20
When working in the opposite direction
(accumulating bytes and shorts into an int), no
casting is needed, because we do not lose
precision or information.
public class PackDate public static void
main(String args) byte month 12 byte
day 25 short year 2000 int date
year 10000 month
100 day System.out.print
ln ("The date " date) //
PackDate
21
Casting Test Your Knowledge
  • Given
  • int start 10
  • float temp 5.5f
  • temp (int) temp start
  • What does temp now hold?

Quick Review
22
Test Your Knowledge
  • Heres the problem
  • int iVar 10
  • float fVar 23.26f
  • // gives compile-time error
  • iVar iVar fVar
  • Which solution works best?

3
230
4
1
232
232
2
Quick Review
Same Compile Error
23
Shorthand Operators
  • counter counter 1 OR counter
  • counter counter - 1 OR counter--
  • counter counter 2 OR counter2
  • counter counter 5 OR counter5Last
    two examples perform operation first (eg.
    counter2) then performs the assignment.

Quick Review
Understand this, but please avoid these types of
expressions.
24
The Short End of Shorthand
Be careful to avoid clever expressions with
shorthand notations. For example, we can declare
a variable called _. (Yes, and underline
character alone is a valid name.)
int _ 1 We can then use a combination of
operators to make Morse code _
- --_ - _-- Yes, this is valid however, its
completely unreadable. (Your replacement will not
appreciate this style!)
25
Documentation Comments
Quick Review
  • Three ways to do it
  • // comments out everything until the end of the
    line
  • / comments out everything until the /
  • (There are no nested comments as in C.)
  • /
  • This is syntax for Javadoc comments (similar
    to second style
  • of commenting, but allows for HTML formatting
    features.
  • /
  • For CS1302, use Javadoc comments

Lets work a javadoc example
26
Javadoc Simple Example
import java.util. / HelloComments.java
Created Wed Jan 12 181729 2000
_at_author David Dagon _at_version 98 beta
/ public class HelloComments /
A ltbgt VERY lt/bgt simple variable. /
public int x 10
Javadoc comments must appear above the item they
modify. In the case of class comments, place
them BELOW the import statements.
Recall HTML is OK!
27
Simple Example (contd)
/ This comment is reproduced twice,
because of the comma delimited
declaration of ints. The solution would
be to use separate lines for each
declaration. / public int y 4, z
11 / The Main method. This
method is the starting point of this
program, when this class is run.
_at_param args The arguments from the command line.
/ public static void main(String args)
// HelloComments
28
Et Voila...
29
Javadoc (Contd)
  • You may include HTML tags (but avoid structuring
    tags, like ltH1gt, etc.)
  • Javadoc comments should immediately preceed the
    declaration of the class, field or method. The
    first sentence should be a summary. Use the
    special javadoc tags--_at_. When '_at_' tags are used,
    the parsing continues until the doc compiler
    encounters the next '_at_' tag.

_at_see ltclass namegt _at_see ltfull-class namegt _at_see
ltfull-class namemethod.namegt _at_versio
n
You might refer back to these notes once you
start writing your own javadoc comments.
_at_author _at_param _at_return
_at_exception
_at_deprecated // jdk 1.1
_at_since
// jdk 1.1 _at_serial // jdk 1.2
30
Announcements
31
All about me.
  • Instructor Monica Sweat
  • sweat_at_cc.gatech.edu
  • Office Hours TBA or by appt.Where CCB 119 on
    first floor of College of Computing
    building(Take a left as you enter front door)

32
Useful Stuff
  • Course web page
  • www.cc.gatech.edu/classes/AY2001/cs1312/
  • My web page
  • www.cc.gatech.edu/sweat
  • Newsgroups
  • git.cc.class.cs1312.announce
  • git.cc.class.cs1312.program
  • git.cc.class.cs1312.questions
  • git.cc.class.cs1312.lab
  • git.cc.class.cs131x.misc
  • git.cc.class.cs131x.macusers

33
A Question for You
Did you know a take home quiz was handed
out during the first class? Did you know its
due next week during recitation? If you need a
copy, see the class web page. Make sure you are
reading .announce!!!
34
Questions?
35
Constants
Quick Review
  • CS1501/CS1311
  • ltCONST_IDgt is ltconstant valuegt
  • MIN_PASSING is 60
  • PI is 3.14159
  • Java
  • public final static lttypegt ltIDergt ltvaluegt
  • public final static int MIN_PASSING 60
  • public final static float PI 3.14159f
  • Details on why this syntax to come soon...

36
Printing to Screen
  • CS1501/CS1311
  • print (ltargumentsgt)
  • Java
  • System.out.println(ltargumentgt)
  • System.out.println( ) // prints blank line
  • System.out.println(5) // prints 5
  • System.out.println(Hello World) // prints
    Hello World
  • println vs. print in Java
  • println includes carriage return at end, hence
    the next print or println starts new line
  • print not carriage return included.causes next
    print or println to begin on same line

Quick Review
37
MethodMadness
38
Caution
Before we can talk about methods in Java, we need
to look at programming languages in general,
from a very high level. Dont be alarmed by some
of the syntax on the following slides. The big
picture is whats important, not the coding
details....
39
Programming Paradigms
Procedural Programming Imperative
assignment used to create state, and procedures
manipulate state. E.g., C, Assembly, Pascal
int y int x 3 y
manipulateData(x) Functional Programming
Functions (procedures that do not depend on
outside data) are used to provided data. E.g.,
Lisp. (defun check-member (input-item
input-list) (cond ((null input-list)
nil) ((equal input-item
(first input-list)) T) (T
(check-member input-item (rest input-list)))))
40
Programming Paradigms
Object-Oriented Programming All data exists
in objects interaction occurs only between
objects. Even numbers are objects that know how
to add themselves. E.g., SmallTalk array
array Array new 5. rect 0_at_0 corner
8_at_9. 1 to array size do item rect
origin item_at_item. array at item put rect
copy . Where does Java fit?
Object-oriented, but not 100 OO, since it
contains primitives, and tolerates some
(hopefully small) degree of procedural
programming.
There are other paradigms, but these three help
explain where Java comes from
41
Java Methods
  • There exists in Java a single construct, the
    method, for both procedures and functions
  • when a procedure is called for, specify the
    return type void before method name
  • public void printHelloWorld( )
  • System.out.println(Hello World!)
  • // printHelloWorld
  • Note All methods must have parentheses for
    parameters . . . even if no parameters!

Note the comment
42
Java Methods
  • Single construct (method) for both procedures and
    functions
  • when a function is called for, specify the
  • appropriate return type before method name
  • public float average (float num1, float num2,
    float num3)
  • float answer
  • answer
  • (num1 num2 num3)/ 3
  • return (answer)
  • // of average

43
Writing Methods A Larger Look
A Java requirement --Each method belongs to an
object (or class). --It must be unambiguous which
object or class that is when a method
called. --To run an application program, there
must be a class whose name is that of the
program and that class must have a method
called main
for command line parameters
visible to all
nothingreturned
public static void main (String argv)
a class method,not aninstancemethod
Method name
44
class A public static void main(...
Thus, each class may have its own main method.
You pick the one you wish to run when invoking
the JVM. This fact becomes critical when we
learn to write debug test mains.
class B public static void main(...
class C public static void main(...
45
Method Signatures
The signature of a method consists of the name
of the method and the number and types of formal
parameters to the method. A class may not declare
two methods with the same signature, or a compile
time error occurs. --Java Language
Specification s.8.4.2 Method overloading occurs
where identically named methods have subtle
variations in the method parameters. public int
getCube(int num) return numnumnum
public int getCube(float num) return
(int)(numnumnum) public int
getCube(double num) return (int)
(numnumnum)
cs1311 associated two similar methods by
calling one a helper method. Java lets
you overload instead.
46
Methods Common Mistakes
public float average (float num1, float num2,
float num3) float answer
answer (num1 num2
num3)/ 3 return (answer) //
average
Note ending semicolon -- could be viewed as
abstract method (more on abstract methods
later) -- results in unhelpful error message
about abstract methods (more
on this later) -- EASY mistake to make!
47
Where do Methods Go?
Just like the main method we saw last time, any
method we create must appear in classes, as
either class or instance members. More on
creating classes and objects shortly . . . For
now, just know that methods belong in a class.
i.e. They are defined inside a class.
48
OO Programming Note
Already, weve covered one of the most important
aspects of Object Oriented (OO) programming
Data and methods belong together in a
class. Right now, its sufficient that you
merely know that variables and methods belong in
classes. Later, well see how this enables us to
encapsulate state (the variables) with behavior
(the methods). So, remember this day. Youve
started to learn THE cornerstone of OO
programming.
49
Questions?
50
Conditionals
51
Decision Statements
  • CS 1501/1311 pseudocode
  • if (condition) then
  • statements
  • else
  • other statements
  • endif
  • Java
  • if (condition)
  • single statement
  • else
  • single statement
  • or
  • if (condition)
  • statements
  • else
  • statements

52
Examples
  • CS1311/1501
  • test_grade isoftype Num
  • test_grade lt- 65
  • is_passing isoftype Boolean
  • is_passing lt- TRUE
  • if (test_grade lt 60) then
  • is_passing lt- FALSE
  • endif
  • print (Is , testGrade,
  • passing? , is_passing)
  • Java What happens here?
  • int testGrade 65
  • boolean passing true
  • if (testGrade lt 60)
  • passing false
  • System.out.println
  • (Is testGrade
  • passing?
  • passing)

53
Boolean and Relational Operators
  • Boolean CS1311/1501 Java
  • AND AND
  • OR OR
  • NOT NOT
    !
  • Relational
  • equal to
  • not equal to ltgt
    !
  • less than lt
    lt
  • less than or equal to lt
    lt
  • greater than gt
    gt
  • greater than or equal to gt
    gt
  • Note
  • Assignment lt-

54
Example
if (enrolled passing) // etc.
Java also supports short-circuiting, where only
part of a boolean will be evaluated, as
necessary
if (enrolled(studentNum)
getPassing(studentNum)) // etc.
If first condition is true, it stops evaluation
55
A bit o code
  • public static void main(String args)
  • int quiz1 42
  • int quiz2 99
  • if(isPassing(quiz1) isPassing(quiz2))
  • System.out.println(Passed both quizzes)
  • public static boolean isPassing(int testGrade)
  • boolean passing true
  • if (testGrade lt 60)
  • passing false
  • System.out.println(Is testGrade
  • passing? passing)
  • return passing

Output?
56
Final Answer?
a
  • Is 42 passing? false

b
Is 42 passing? false Is 99 passing? true
Why?
57
Multiple Selections via switch
  • Use if construct for one selection.
  • Use if/else construct for double selection.
  • Use switch construct for multiple selection.
    (e.g., situations appropriate for
    if-elseif-elseif-else)Note
  • Useful when making a selection among
    multiple values of the same variable.
  • Not useful when selecting among values of
    different variables.

58
Switch
  • switch (ltvariablegt)
  • case ltvaluegt
  • // whatever code you want
  • break // optional
  • case ltvaluegt
  • // whatever code you want
  • break // optional
  • default
  • // whatever code you want
  • break // optional

59
Multiple Selections via switch
Note the optional default case at the end of
the switch statement. It is optional only in
terms of syntax. switch (iNumber) case
1 System.out.println (One) break
case 2 System.out.println (Two) break
case 3 System.out.println
(Three) break default
System.out.println(Not 1, 2, or 3)
break // Needed??? // switch In
practice you should always include a default
case statement. E.g., 1989 ATT phone system
crash
This would work without the default, but would
be poor technique
60
How many days?
  • if(month 4 month 6
  • month 9 month 11)
  • numdays 30
  • else if(month 2)
  • numdays 28
  • if(leap)
  • numdays 29
  • else
  • numdays 31

61
Switch
  • switch (month)
  • case 4
  • case 6
  • case 9
  • case 11
  • numdays 30
  • break
  • case 2
  • numdays 28
  • if(leap)
  • numdays 29
  • break
  • default / Good idea? /
  • numdays 31

62
Multiple Selections via switch--Notes
  • The switch statement can only be used with
  • the following types
  • int, char, short byte
  • (You can cast floats, doubles, etc.)
  • The case values must all be of the same type.
  • The case values must all be FINAL constants.

63
switch (grade) case A case a
countOfAGrades break case B
case b countOfBGrades
break case C case c
countOfCGrades break case D
case d countOfDGrades
break case F case f
countOfFGrades break default
System.out.println(Invalid grade)
break
if (gradeA gradea) countOfAGrades
else if (gradeB gradeb) countOfBGrade
s else if (gradeC gradec) countOfCG
rades else if (gradeD graded)
countOfDGrades else if (gradeF
gradef) countOfFGrades else System.out.p
rintln (Invalid grade)
Multiple Selections via switch
64
Before we go too far...
  • We often take liberties with good coding practice
    just to fit material onto a slide.
  • Your coding style should reflect clearly and
    unambiguously what the code is supposed to do.
  • Keep in mind your two audiences
  • The machine
  • Other programmers

65
IfStyle 1
  • if(ltboolean expressiongt)
  • // code if true
  • // see your TA (not exactly subliminal)
  • else
  • // code if false
  • // see your TA (not exactly subliminal)

66
IfStyle 2
  • if(ltboolean expressiongt)
  • // code if true
  • // comment
  • else
  • // code if false
  • // comment

67
Conditional Assignment
ltbooleangt ? lttrue conditiongt ltfalse conditiongt
boolean b int count b checkCompletion() cou
nt (b) ? 3 1
Note This is not any faster. Its less
readable. It exists only for recovering
C hackers
Must resolve to boolean
If true . . .
. . . if false
68
A Semi Partial Conditional Summary
  • Control structures
  • Two kinds of conditional (summary)
  • if ... else ...
  • branch on boolean expression
  • switch (...) case ... break default ...
  • branch on constant value
  • dont forget to break !!

69
Questions?
70
Just a few notes aboutchanges this semester
  • No pop quizzes woohoo!
  • No Coding Final phew!!!
Write a Comment
User Comments (0)
About PowerShow.com