COMP 110: Introduction to Programming Tyler Johnson January 26, 2009 MWF 11:00AM-12:15PM Sitterson 014
COMP 110: Spring Announcements Lab 0 graded
COMP 110: Spring Questions?
COMP 110: Spring Today in COMP 110 Type Casting More Operators Strings Console I/O
COMP 110: Spring From Last Time Type Name Kind of Value Memory Used Range of Values byteInteger1 byte-128 to 127 shortInteger2 bytes-32,768 to 32,768 intInteger4 bytes-2,147,483,648 to 2,147,483,647 longInteger8 bytes-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 floatFloating-point4 bytes± x to ± x doubleFloating-point8 bytes± x to ± x charCharacter2 bytes0 to 65,535 boolean 1 bitTrue or False (0 to 1)
COMP 110: Spring 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 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 Example int iVar = 7; double dVar = iVar; //this is legal
COMP 110: Spring Assignment Compatibilities In some cases, you may want to override the assignment compatibilities This can be done using type casting
COMP 110: Spring Type Casting Syntax (Type_Name) Expression Expression is a combination of numbers and variables Example double 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 Type Casting Type casting is not rounding! The effect of a type cast is truncation Any fractional portion is discarded Just like when you divide two integers Example double 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 From Last Time Operators Addition (+) a + b Subtraction (-) a - b Multiplication (*) a * b Division (/) a / b Remainder or Modulo (%) a % b
COMP 110: Spring Parentheses and Precedence Parentheses can be used to indicate the order in which operations should be performed Example 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 Binary Operators Binary operators take two operands An 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 Unary Operators Unary operators take a single operand + and – can also be unary operators i = -7; f = ;
COMP 110: Spring Specialized Assignment Operators += a += 3; //same as a = a + 3; -= a -= 4; //same as a = a – 4; *= a *= 2; //same as a = a * 2; /= a /= 3; //same as a = a / 3;
COMP 110: Spring Increment and Decrement Operators Increment Operator (++) count++; //same as count = count + 1; Decrement Operator (--) count--; //same as count = count – 1;
COMP 110: Spring Increment and Decrement Operators Can also be used in expressions in either prefix (++m) or postfix (m++) form Example n * (m++) Increases m by 1 after the multiplication n * (++m) Increases m by 1 before the multiplication
COMP 110: Spring Increment and Decrement Operators int n = 2; int m = 4; int result = n * (m++); //result = 8, m = 5 result = n * (++m); //result = 12, m = 6
COMP 110: Spring Operator Precedence Java evaluates expressions in an order specified by precedence rules Certain operations are performed before others Example i = * 3 – 1; // the value of i will be 9
COMP 110: Spring 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 Precedence Examples -3 * 7 % 3 – 4 – % 3 – 4 – 6 0 – 4 – * (3 % 2 ) / -2 3 * 1 / -2 3 / -2 NOTE: Truncation of division operator on integers
COMP 110: Spring Constants Constants or literals are values that dont change 2, 6, B, 5.433e8 NOTE: 5.433e8 means x 10 8 Example uses of constants int i = 2; // i is a variable, 2 is a constant char l = J; // l is a variable, J is a constant double d = 6.1e38; //d is a variable, 6.1e38 is a //constant
COMP 110: Spring Named Constants A constant that is given a name and can be used much like a variable Syntax final Type Variable = Constant; Examples final double PI = ; final int HOURS_PER_DAY = 24;
COMP 110: Spring 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 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 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 Strings We can declare Strings in Java programs Example String greeting; greeting = Hello!; System.out.println(greeting); //prints Hello! to screen System.out.println(Hello!); //also prints Hello! to //screen
COMP 110: Spring String Indices Strings consist of a sequence of characters Each character has a position in the String UNCisGreat Positions Characters
COMP 110: Spring 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 String Concatenation We can also concatenate Strings with other data types System.out.println("I am " " years old!"); //prints I am 21 years old! to screen
COMP 110: Spring Strings as a Class String is a class type, not a primitive type Class types have both data and methods (actions)
COMP 110: Spring 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 9 Method Class
COMP 110: Spring Strings All objects of the same class have the same methods, but may have different data Example String s1 = First!; String s2 = Second!; s1.length() returns 6 s2.length() returns 7
COMP 110: Spring String Methods string.indexOf(A_String) Returns the index of the first occurrence of A_String in string Example String phrase = UNC is Great; int ind = phrase.indexOf(Great); UNCisGreat
COMP 110: Spring 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 Example String phrase = UNC is Great; String sub = phrase.substring(2); UNCisGreat
COMP 110: Spring 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 Quotations Marks in Strings Problem Quotation 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 Quotation Marks in Strings Example Wed 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 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 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 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 1 Line 2
COMP 110: Spring Escape Characters \"\" Double quote \'\' Single quote \\Backslash \nNew line \rCarriage return \tTab
COMP 110: Spring String Exercise What is the output? System.out.println("abc\ndef"); abc def System.out.println("abc\\ndef"); abc\ndef
COMP 110: Spring Testing & Debugging Its 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 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 subtraction Hardest to locate!
COMP 110: Spring Programming Demo Fahrenheit to Celsius Converter Problem Given a temperature in degrees Fahrenheit, convert to a temperature in degree Celsius
COMP 110: Spring Programming Demo Fahrenheit to Celsius Steps Pseudocode Programming Testing/Debugging
COMP 110: Spring The Algorithm Comes directly from the formula for conversion tempC = (5/9)(tempF – 32)
COMP 110: Spring Fahrenheit to Celsius Pseudocode Ask user for temp in Fahrenheit Convert temp in Fahrenheit to temp in Celsius Output the result
COMP 110: Spring Wednesday Documentation and Style Introduction to Branching