Comp 114 Foundations 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
package warmup; public class AHelloWorldGreeter { public static void main (String[] args) { System.out.println ("Hello World"); } Array of user-supplied arguments main 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 ( ) else
if-else Statement true false
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-else public 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-else 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-else
If Statement if (args.length = = 1) System.out.println (”args[0]”); if ( ) ;
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 ( ) ; while ( ) ;
if Statement true false
while Statement true false
while loop true false
Scanning Problem
char Constants char {letters, digits, operators...} ‘a’ ‘A‘ ‘1’ ‘< ‘ ‘’ 16 bits ‘ ‘’’ ‘\’’ Escape sequence ‘\n’ newline ‘ ‘\’ ‘\\’
Useful Escape Sequences
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 0 (char) 0 ‘’ (int) ‘d’ ??? (char) 1 ??? (char) -1 (int) ‘c’ - (int) ‘a’ 2 2 ‘c’ - ‘a’ 2 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 1 0 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 JohnF.Kenndye token Input stream Token Stream token
Algorithm JohnF.Kenndye marker 0 Output: J
Algorithm JohnF.Kenndye marker 1 Output: J String inputLine
Algorithm JohnF.Kenndye marker 2 Output: J
Algorithm JohnF.Kenndye marker 5 Output: JF
Algorithm JohnF.Kenndye marker 6 Output: JF
Algorithm JohnF.Kenndye marker 8 Output: JFK
Algorithm JohnF.Kenndye marker 9 Output: JFK
Algorithm JohnF.Kenndye marker 14 Output: JFK
Solution (edit in class) package warmup; public class AnUpperCasePrinter { public static void main(String[] args){ }
Solution package 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
Adding a Class
Editing the Class
Saving the Class
Running the Class
Viewing the Results
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 Point Double click where you want program to stop
Executing Debug
Starting the Debugger
Stopping at Breakpoint Debug 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
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
Installing ObjectEditor Software
Must do this for each project!
Installing ObjectEditor Software
Testing ObjectEditor Software Any object instance!
Testing ObjectEditor Graphics
Adding a library in JBuilder
Location of All Libraries 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