Comp 114 Foundations of Programming Instructor: Prasun Dewan.
-
date post
15-Jan-2016 -
Category
Documents
-
view
218 -
download
0
Transcript of Comp 114 Foundations of Programming Instructor: Prasun Dewan.
Comp 114Foundations of Programming
Instructor: Prasun Dewan
Topics Assumed & Reviewed
• Types– int, double, char, String
• Variables, constants, expressions
• Arrays
• Assignment, conditionals, loops
• Procedures/Functions/Subroutines/Methods
• Parameters/arguments
Hello World
Hello World
package warmup;public class AHelloWorldGreeter { public static void main (String[] args) { System.out.println ("Hello World"); }}
Array of user-supplied argumentsmain header
directory/library
Keyword Predefined Programmer-defined
Main Arguments
user-supplied
argument
Main Arguments
package warmup;public class AnArgPrinter { public static void main (String[] args) { System.out.println (args[0]); }}
First argument
args[0]
args[1]
Second argument
...
Main Arguments
user- supples no argument
package warmup;public class AnArgPrinter { public static void main (String[] args) { System.out.println (args[0]); }}
program refers to argument array element
exception!
Safe Arg Printer
Safe Arg Printer (edit in class)
package warmup;public class ASafeArgPrinter { public static void main (String[] args) { //args.length gives number of elements in args array.}
Safe Arg Printer
package warmup;public class ASafeArgPrinter { public static void main (String[] args) { if (args.length == 1)
System.out.println (args[0]); else {
System.out.println("Illegal no of arguments:" + args.length + ". Terminating program");
System.exit(-1); } }}
if-else Statement
if (<bool expr>)<statement 1>
else<statement 2>
if-else Statement
<bool expr>true false
<statement 1> <statement 2>
Compound Statement
if (args.length == 1) System.out.println (args[0]); else { System.out.println("Illegal no of arguments:" + args.length + ". Terminating program"); System.exit(-1); }
Nested if-elsepublic static char toLetterGrade (int score) {
if (score >= A_CUTOFF) return 'A';else if (score >= B_CUTOFF) return 'B';else if (score >= C_CUTOFF) return 'C';else if (score >= D_CUTOFF) return 'D';else return 'F';}
Nested if-elseif (score >= A_CUTOFF) return 'A';else
if (score >= B_CUTOFF) return 'B';else
if (score >= C_CUTOFF) return 'C';
else if (score >= D_CUTOFF) return 'D'; else
return 'F';
Nested if-else
If Statement
if (args.length = = 1) System.out.println (”args[0]”);
if (<bool expr>) <statement>;
Printing Multiple Arguments
Printing Multiple Arguments (edit in class)
package warmup;public class AnArgsPrinter {
public static void main(String[] args) {}
}
Printing Multiple Arguments
package warmup;public class AnArgsPrinter {
public static void main(String[] args) {int argNo = 0;while (argNo < args.length) {
System.out.println(args[argNo]);argNo++;
}}
}
if vs. while Statement
if (<bool expr>) <statement>;
while (<bool expr>) <statement>;
if Statement
<bool expr>true
false<statement>
while Statement
<bool expr>true
false<statement>
while loop
<bool expr>
true
false
<statement >
Scanning Problem
char Constants
char {letters, digits, operators ...}
‘a’
‘A‘
‘1’
‘< ‘ ‘’
16 bits
‘ ‘ ‘’’
‘\’’
Escape sequence
‘\n’
newline
‘
‘\’
‘\\’
Useful Escape Sequences
Escape Sequence Character Denoted\’ ‘\n new line\b back space\\ \\t tab\” “
Ordering Characters
‘’ ‘a’….
position in ordered character list
ordinal number (integer code)
….
Ordering Characters
‘’ ‘a’…. ….‘b’ ‘c’ ‘z’ ….
‘’ ‘A’…. ….‘B’ ‘C’ ‘Z’ ….
‘’ ‘0’…. ….‘1’ ‘2’ ‘3’ ….
‘a’ > ‘b’ false
‘B’ > ‘A’ true
‘4’ > ‘0’ true
‘0’ > ‘’ true
‘a’ > ‘A’ ???
‘a’ > ‘0’ ???
Converting between Characters and their Ordinal Numbers
(int) ‘a’ ordinal number of ’a’
(char) 55 character whose ordinal number is 55
(int) ‘’ 0
(char) 0 ‘’
(int) ‘d’ ???
(char) 1 ???
(char) -1
(int) ‘c’ - (int) ‘a’ 2
‘c’ - ‘a’ 2
Implicit cast to wider type
(char) (‘c’ - 2) ‘a’
(char) (‘A’ + 2) ‘C’
(char) (‘C’ - ‘A’ + ‘a’) ‘c’
String constants
String {sequences of characters}
“hello”
“123”
“hello 123”
“a”
variable size
‘a’
“”
“hello\n\n123”
“\” “\\”
Object Type
Accessing String Components
String s = “hello world”;
s[0]
s[1]
...
s.charAt(0) ‘h’
s.charAt(1) ‘e’
s.charAt(-1)
s.charAt(11)
StringIndexBounds exceptiom
index
s.length() 11
“ ”.length() 1
“”.length() 0
Accessing SubString
“hello world”.substring(4,7)
s.charAt(beginIndex) .. s.charAt(endIndex-1)
s.substring(beginIndex, endIndex)
“o w”
“hello world”.substring(4,4) “”
“hello world”.substring(7,4)
StringIndexBounds exceptiom
String Processing
int i = 0; while (i < s.length()) { System.out.println (s.charAt(i)); i++; }
prints each character on separate line
Dissecting a Loop
int i = 0; while (i < s.length()) { System.out.println (s.charAt(i)); i++; }
loop condition
loop body
Finer-grained Dissection
int i = 0; while (i < s.length()) { System.out.println (s.charAt(i)); i++; }
loop condition
real body
Resetting loop variable
initalizing loop variables
for (int i=0; i<s.length(); i++)
System.out.println(s.charAt(i));
Meaning of For Loop
S1; while ( E) { S3; S2; }
for (S1; E; S2)S3
for (; E; S2)
S3
while ( E) { S3; S2; }
for (; E; )S3
while ( E) { S3; }
for (; ; )S3
while ( true) S3;
Scanning Problem
Scanning
• Scanning image for text.
• Scanning frequencies for radio stations.
• Finding words in a sentence
• Finding identifiers, operators, in a program
Scanning
J o h n F . K e n n d ye
token token
Inputstream
TokenStream
token token token
Algorithm
J o h n F . K e n n d ye
marker 0 Output: J
Algorithm
J o h n F . K e n n d ye
marker 1 Output: J
String inputLine
Algorithm
J o h n F . K e n n d ye
marker 2 Output: J
Algorithm
J o h n F . K e n n d ye
marker 5 Output: JF
Algorithm
J o h n F . K e n n d ye
marker 6 Output: JF
Algorithm
J o h n F . K e n n d ye
marker 8 Output: JFK
Algorithm
J o h n F . K e n n d ye
marker 9 Output: JFK
Algorithm
J o h n F . K e n n d ye
marker 14 Output: JFK
Solution (edit in class)
package warmup;public class AnUpperCasePrinter { public static void main(String[] args){ } }
Solutionpackage warmup;public class AnUpperCasePrinter { public static void main(String[] args){
if (args.length != 1) {System.out.println("Illegal number of arguments:" + args.length + ".
Terminating program.");System.exit(-1);
}System.out.println("Upper Case Letters:");int index = 0;while (index < args[0].length()) {
if (isUpperCase(args[0].charAt(index))) System.out.print(args[0].charAt(index));
index++;}System.out.println();
} public static boolean isUpperCase(char c) {
return (c >= 'A') && (c <= 'Z'); }}
Function call
Actual parameter
Function definition
Formal parameter
Creating JBuilder Project
Creating JBuilder Project
Creating JBuilder Project
Creating JBuilder Project
Adding a Class
Adding a Class
Adding a Class
Editing the Class
Saving the Class
Running the Class
Viewing the Results
Running with arguments
Running with arguments
Running with arguments
Running with arguments
Running with arguments
Running with arguments
Setting a break point
Running in debugging mode
Stopping at breakpoint
Examining the call stack
Navigating main parameters
Stepping to next statement
(F8)
Stepping to next statement
Variable values
Stepping Over
Stepping Into
(F9)
Stepping Out
Resuming normal execution
Program termination
Starting Eclipse
Specifying Projects Directory
No Projects Screen
Adding a New Project
Selecting Java Project
Entering Project Name
Switching to Java Perspective
Empty Project
Adding a Package (Optional Step)
Entering Package Name
Workspace, Project, Package Folder
Worskspace Project Package
Adding a New Class File
Naming the File
.java suffix needed!
Empty File
Getting Rid of Welcome Pane
Editing the File
Saving the File
Running the Main Method
Output in Console Window
Console
Running Main with Parameters
Setting Run Configuration
Run Configuration
Arguments Tab
Executing Debug
Setting a Break PointDouble click where you want program to stop
Executing Debug
Starting the Debugger
Stopping at BreakpointDebug Perspective
Next statement to be executed
Examining Main Parameters
Main Parameters
Stepping to next statement
Next Statement
New Output and Local Variable
Index gets initialized
println() executed
Step Over
Step Into
Call stack
Called method parameters
Step Return
Resume
Returning to Java Perspective
AReverseUpperCasePrinter
AReverseUpperCasePrinter
No bold face!
No Outline!
Deleting File
Will also delete from file system
Renaming
Adding .java suffix
Renamed File
No bold face!
No Outline!
Downloading ObjectEditor Software
Downloading ObjectEditor Software
Downloading ObjectEditor Software
Installing ObjectEditor Software
Installing ObjectEditor Software
Must do this for each project!
Installing ObjectEditor Software
Installing ObjectEditor Software
Installing ObjectEditor Software
Installing ObjectEditor Software
Installing ObjectEditor Software
Installing ObjectEditor Software
Installing ObjectEditor Software
Testing ObjectEditor Software
Any object instance!
Testing ObjectEditor Graphics
Testing ObjectEditor Graphics
Adding a library in JBuilder
Adding a library in JBuilder
Adding a library in JBuilder
Adding a library in JBuilder
Adding a library in JBuilder
Adding a library in JBuilder
Adding a library in JBuilder
Location of All Libraries• http://www.cs.unc.edu/~dewan/oe
• Use Internet explorer (not Netscape) to download files
• Latest library names– oe8.jar – shapes3.jar
• oe8.jar version 8 of oe.jar
• Sotware may have lots of bugs!
• Send me mail for workarounds bugs.
The end
• The rest are extra slides
Previous Main.class shown
Running Another Program with Parameters
Resume