COMP 110:Introduction to Programming
Tyler JohnsonJanuary 26, 2009
MWF 11:00AM-12:15PMSitterson 014
COMP 110: Spring 20092
Announcements
Lab 0 graded
COMP 110: Spring 20093
Questions?
COMP 110: Spring 20094
Today in COMP 110
Type Casting
More Operators
Strings
Console I/O
COMP 110: Spring 20095
From Last Time
Type Name
Kind of Value
Memory Used
Range of Values
byte Integer 1 byte -128 to 127
short Integer 2 bytes -32,768 to 32,768
int Integer 4 bytes -2,147,483,648 to 2,147,483,647
long Integer 8 bytes -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
float Floating-point 4 bytes ±3.40282347 x 10+38 to ±1.40239846 x 10-45
double Floating-point 8 bytes ±1.79769313486231570 x 10308 to ±4.94065645841246544 x
10-324
char Character 2 bytes 0 to 65,535
boolean boolean 1 bit True or False (0 to 1)
COMP 110: Spring 20096
Assignment Compatibilities
You cannot store a value of one type in a variable of another type
int i = 0.1; //this does not compile!
However, some types can be converted into other types
double d = 1; //1 is automatically converted to 1.0
COMP 110: Spring 20097
Assignment Compatibilities
byte » short » int » long » float » double
A value of any type in the list can be assigned to a type further down the list
Exampleint iVar = 7;double dVar = iVar; //this is legal
COMP 110: Spring 20098
Assignment Compatibilities
In some cases, you may want to override the assignment compatibilities
This can be done using type casting
COMP 110: Spring 20099
Type Casting
Syntax(Type_Name) ExpressionExpression is a combination of numbers and variables
Exampledouble distance = 9.0;int points = (int)distance; //cast distance to an int//distance is not changed in any way//the value of points will be 9
COMP 110: Spring 200910
Type Casting
Type casting is not rounding!The effect of a type cast is truncation
Any fractional portion is discardedJust like when you divide two integers
Exampledouble bill = 25.75;int dollars = (int)bill ; //cast bill to an int//bill is not changed in any way//the value of dollars will be 25
COMP 110: Spring 200911
From Last Time
OperatorsAddition (+)• a + b
Subtraction (-)• a - b
Multiplication (*)• a * b
Division (/)• a / b
Remainder or Modulo (%)• a % b
COMP 110: Spring 200912
Parentheses and Precedence
Parentheses can be used to indicate the order in which operations should be performedExample
What is the value of “result”?
int a = 3, b = 1, c = 2, result = 0;
result = (a + b) * c;
result = a + (b * c);
result = 8
result = 5
COMP 110: Spring 200913
Binary Operators
Binary operators take two operandsAn operand is just a number or variable
For example, +,-,*,/ are binary operators
i = a + b;i = a - b;i = a * b;i = a / b;
COMP 110: Spring 200914
Unary Operators
Unary operators take a single operand
+ and – can also be unary operators
i = -7;f = +100.2;
COMP 110: Spring 200915
Specialized Assignment Operators
+=
a += 3; //same asa = a + 3;
-=
a -= 4; //same asa = a – 4;
*=
a *= 2; //same asa = a * 2;
/=
a /= 3; //same asa = a / 3;
COMP 110: Spring 200916
Increment and DecrementOperators
Increment Operator (++)
count++; //same ascount = count + 1;
Decrement Operator (--)
count--; //same ascount = count – 1;
COMP 110: Spring 200917
Increment and Decrement Operators
Can also be used in expressions in either prefix (++m) or postfix (m++) form
Examplen * (m++)• Increases m by 1 after the multiplication
n * (++m)• Increases m by 1 before the multiplication
COMP 110: Spring 200918
Increment and Decrement Operators
int n = 2;int m = 4;int result = n * (m++); //result = 8, m = 5result = n * (++m);
//result = 12, m = 6
COMP 110: Spring 200919
Operator Precedence
Java evaluates expressions in an order specified by precedence rules
Certain operations are performed before others
Example
i = 4 + 2 * 3 – 1; // the value of i will be 9
COMP 110: Spring 200920
Java Precedence Rules
Highest Precedence
First: the unary operators +, -, ++, --Second: the binary operators *, /, %Third: the binary operators +, -
Lowest Precedence
Binary operators of equal precedence are evaluated from left to right
COMP 110: Spring 200921
Precedence Examples
-3 * 7 % 3 – 4 – 6-21 % 3 – 4 – 60 – 4 – 6-10
3 * (3 % 2 ) / -2 3 * 1 / -23 / -2-1NOTE: Truncation of division operator on integers
COMP 110: Spring 200922
Constants
Constants or literals are values that don’t change
2, 6, ‘B’, 5.433e8NOTE: 5.433e8 means 5.433 x 108
Example uses of constantsint i = 2; // i is a variable, 2 is a constant char l = ‘J’; // l is a variable, ‘J’ is a constantdouble d = 6.1e38; //d is a variable, 6.1e38 is a //constant
COMP 110: Spring 200923
Named Constants
A constant that is given a name and can be used much like a variableSyntax
final Type Variable = Constant;
Examplesfinal double PI = 3.14159;final int HOURS_PER_DAY = 24;
COMP 110: Spring 200924
Representing Text in Java
How to represent sequences of characters in Java programs such as
“Enter a whole number from 1 to 99.”
Java provides the class “String” for this purpose
COMP 110: Spring 200925
Strings
String is a class provided by the Java language for representing sequences of characters
“Enter a whole number from 1 to 99.”
COMP 110: Spring 200926
Strings
Messages like these are called String literals or String constants
“Enter a whole number from 1 to 99.”“What is your name?”“I will add two numbers for you.”
They have the type “String”
COMP 110: Spring 200927
Strings
We can declare Strings in Java programs
Example
String greeting;greeting = “Hello!”;System.out.println(greeting); //prints Hello! to screenSystem.out.println(“Hello!”); //also prints Hello! to
//screen
COMP 110: Spring 200928
String Indices
Strings consist of a sequence of characters
Each character has a position in the String
U N C i s G r e a t
0 1 2 3 4 5 6 7 8 9 10
11
Positions
Characters
COMP 110: Spring 200929
String Concatenation
We can concatenate two Strings together using the (+) operator
Example
String name = “Bob”;String greeting = “Hi ” + name;System.out.println(greeting);//prints “Hi Bob” to the screen
COMP 110: Spring 200930
String Concatenation
We can also concatenate Strings with other data types
System.out.println("I am " + 21 + " years old!");//prints “I am 21 years old!” to screen
COMP 110: Spring 200931
Strings as a Class
String is a class type, not a primitive type
Class types have both data and methods (actions)
COMP 110: Spring 200932
String Length
The “length()” method of the String class returns the # of characters in the String
String myString = “Hi there!”;int len = myString.length();
Object
9Method
Class
COMP 110: Spring 200933
Strings
All objects of the same class have the same methods, but may have different dataExampleString s1 = “First!”;String s2 = “Second!”;
s1.length() returns 6s2.length() returns 7
COMP 110: Spring 200934
String Methods
string.indexOf(A_String)Returns the index of the first occurrence of A_String in string
ExampleString phrase = “UNC is Great”;int ind = phrase.indexOf(“Great”);
U N C i s G r e a t
0 1 2 3 4 5 6 7 8 9 10
11
COMP 110: Spring 200935
String Methods
string.substring(Start)Returns a new string having the same characters as the substring of string beginning at index Start through the end of string
ExampleString phrase = “UNC is Great”;String sub = phrase.substring(2);
U N C i s G r e a t
0 1 2 3 4 5 6 7 8 9 10
11
COMP 110: Spring 200936
String Methods
Other methods of the String class include
string.charAt(index)• Returns the character at index in string
string.toLowerCase()• Returns a new String with the same characters as
string, but with any uppercase characters changed to lowercase
string.equals(A_String)• Returns true if string and A_String are the same,
otherwise returns false
See Textbook pg 78 for full listing
COMP 110: Spring 200937
Quotations Marks in Strings
ProblemQuotation marks in Java indicate the beginning and end of a String literal
String phrase = “Enter a whole number from 1 to 99.”;
How to put quotation marks into Strings?
COMP 110: Spring 200938
Quotation Marks in Strings
ExampleWe’d like to print the message
This class is so "fun"
But we cannot use
System.out.println("This class is so "fun"");
because the Java compiler sees it as
System.out.println("This class is so "fun"");
COMP 110: Spring 200939
Quotation Marks in Strings
The way to do this in Java is with the escape character '\'
We can use the sequence \" inside a string to indicate a quotation mark
Example
System.out.println("This class is so \"fun\"");
will print to screen
This class is so "fun"
COMP 110: Spring 200940
Backslashes in Strings
If backslash '\' is the escape character, how can I put backslashes into Strings?
Use the sequence \\ for this
Example
System.out.println("This is a backslash \\");
will print to screen
This is a backslash \
COMP 110: Spring 200941
New Line Sequence
The sequence \n starts a new line of text
Example
System.out.println("Line 1\nLine 2");
will print to screen
Line 1Line 2
COMP 110: Spring 200942
Escape Characters
\" Double quote
\' Single quote
\\ Backslash
\n New line
\r Carriage return
\t Tab
COMP 110: Spring 200943
String Exercise
What is the output?
System.out.println("abc\ndef");
abcdef
System.out.println("abc\\ndef");
abc\ndef
COMP 110: Spring 200944
Testing & Debugging
It’s easy to make mistakes when programming
These mistakes are called bugs
The process of eliminating mistakes in a program is called debugging
COMP 110: Spring 200945
Programming Errors
Syntax Error – Failure to follow the rules of the language
E.g. missing semi-colon
Run-time Error – An error that causes the program to halt and produce an error message
E.g. Program crashes
Logic Error – When a program fails to produce the correct result
E.g accidentally using addition when you meant to use subtractionHardest to locate!
COMP 110: Spring 200946
Programming Demo
Fahrenheit to Celsius Converter
ProblemGiven a temperature in degrees Fahrenheit, convert to a temperature in degree Celsius
COMP 110: Spring 200947
Programming Demo
Fahrenheit to Celsius
StepsPseudocode
Programming
Testing/Debugging
COMP 110: Spring 200948
The Algorithm
Comes directly from the formula for conversion
tempC = (5/9)(tempF – 32)
COMP 110: Spring 200949
Fahrenheit to Celsius
PseudocodeAsk user for temp in FahrenheitConvert temp in Fahrenheit to temp in CelsiusOutput the result
COMP 110: Spring 200950
Wednesday
Documentation and Style
Introduction to Branching