comp 114 foundations of programming instructor: prasun dewan

Post on 15-Jan-2016

220 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related