167
Comp 114 Foundations of Programming Instructor: Prasun Dewan

Comp 114 Foundations of Programming Instructor: Prasun Dewan

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Comp 114Foundations of Programming

Instructor: Prasun Dewan

Page 2: 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

Page 3: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Hello World

Page 4: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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

Page 5: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Main Arguments

user-supplied

argument

Page 6: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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

...

Page 7: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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!

Page 8: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Safe Arg Printer

Page 9: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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.}

Page 10: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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); } }}

Page 11: Comp 114 Foundations of Programming Instructor: Prasun Dewan

if-else Statement

if (<bool expr>)<statement 1>

else<statement 2>

Page 12: Comp 114 Foundations of Programming Instructor: Prasun Dewan

if-else Statement

<bool expr>true false

<statement 1> <statement 2>

Page 13: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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); }

Page 14: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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';}

Page 15: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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'; 

Page 16: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Nested if-else

Page 17: Comp 114 Foundations of Programming Instructor: Prasun Dewan

If Statement

if (args.length = = 1) System.out.println (”args[0]”);

if (<bool expr>) <statement>;

Page 18: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Printing Multiple Arguments

Page 19: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Printing Multiple Arguments (edit in class)

package warmup;public class AnArgsPrinter {

public static void main(String[] args) {}

}

Page 20: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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++;

}}

}

Page 21: Comp 114 Foundations of Programming Instructor: Prasun Dewan

if vs. while Statement

if (<bool expr>) <statement>;

while (<bool expr>) <statement>;

Page 22: Comp 114 Foundations of Programming Instructor: Prasun Dewan

if Statement

<bool expr>true

false<statement>

Page 23: Comp 114 Foundations of Programming Instructor: Prasun Dewan

while Statement

<bool expr>true

false<statement>

Page 24: Comp 114 Foundations of Programming Instructor: Prasun Dewan

while loop

<bool expr>

true

false

<statement >

Page 25: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Scanning Problem

Page 26: Comp 114 Foundations of Programming Instructor: Prasun Dewan

char Constants

char {letters, digits, operators ...}

‘a’

‘A‘

‘1’

‘< ‘ ‘’

16 bits

‘ ‘ ‘’’

‘\’’

Escape sequence

‘\n’

newline

‘\’

‘\\’

Page 27: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Useful Escape Sequences

Escape Sequence Character Denoted\’ ‘\n new line\b back space\\ \\t tab\” “

Page 28: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Ordering Characters

‘’ ‘a’….

position in ordered character list

ordinal number (integer code)

….

Page 29: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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’ ???

Page 30: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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’

Page 31: Comp 114 Foundations of Programming Instructor: Prasun Dewan

String constants

String {sequences of characters}

“hello”

“123”

“hello 123”

“a”

variable size

‘a’

“”

“hello\n\n123”

“\” “\\”

Object Type

Page 32: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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

Page 33: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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

Page 34: Comp 114 Foundations of Programming Instructor: Prasun Dewan

String Processing

int i = 0; while (i < s.length()) { System.out.println (s.charAt(i)); i++; }

prints each character on separate line

Page 35: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Dissecting a Loop

int i = 0; while (i < s.length()) { System.out.println (s.charAt(i)); i++; }

loop condition

loop body

Page 36: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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));

Page 37: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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;

Page 38: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Scanning Problem

Page 39: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Scanning

• Scanning image for text.

• Scanning frequencies for radio stations.

• Finding words in a sentence

• Finding identifiers, operators, in a program

Page 40: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Scanning

J o h n F . K e n n d ye

token token

Inputstream

TokenStream

token token token

Page 41: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Algorithm

J o h n F . K e n n d ye

marker 0 Output: J

Page 42: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Algorithm

J o h n F . K e n n d ye

marker 1 Output: J

String inputLine

Page 43: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Algorithm

J o h n F . K e n n d ye

marker 2 Output: J

Page 44: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Algorithm

J o h n F . K e n n d ye

marker 5 Output: JF

Page 45: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Algorithm

J o h n F . K e n n d ye

marker 6 Output: JF

Page 46: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Algorithm

J o h n F . K e n n d ye

marker 8 Output: JFK

Page 47: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Algorithm

J o h n F . K e n n d ye

marker 9 Output: JFK

Page 48: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Algorithm

J o h n F . K e n n d ye

marker 14 Output: JFK

Page 49: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Solution (edit in class)

package warmup;public class AnUpperCasePrinter { public static void main(String[] args){ } }

Page 50: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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

Page 51: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Creating JBuilder Project

Page 52: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Creating JBuilder Project

Page 53: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Creating JBuilder Project

Page 54: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Creating JBuilder Project

Page 55: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a Class

Page 56: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a Class

Page 57: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a Class

Page 58: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Editing the Class

Page 59: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Saving the Class

Page 60: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running the Class

Page 61: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Viewing the Results

Page 62: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running with arguments

Page 63: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running with arguments

Page 64: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running with arguments

Page 65: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running with arguments

Page 66: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running with arguments

Page 67: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running with arguments

Page 68: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Setting a break point

Page 69: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running in debugging mode

Page 70: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Stopping at breakpoint

Page 71: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Examining the call stack

Page 72: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Navigating main parameters

Page 73: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Stepping to next statement

(F8)

Page 74: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Stepping to next statement

Page 75: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Variable values

Page 76: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Stepping Over

Page 77: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Stepping Into

(F9)

Page 78: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Stepping Out

Page 79: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Resuming normal execution

Page 80: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Program termination

Page 81: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Starting Eclipse

Page 82: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Specifying Projects Directory

Page 83: Comp 114 Foundations of Programming Instructor: Prasun Dewan

No Projects Screen

Page 84: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a New Project

Page 85: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Selecting Java Project

Page 86: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Entering Project Name

Page 87: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Switching to Java Perspective

Page 88: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Empty Project

Page 89: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a Package (Optional Step)

Page 90: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Entering Package Name

Page 91: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Workspace, Project, Package Folder

Worskspace Project Package

Page 92: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a New Class File

Page 93: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Naming the File

.java suffix needed!

Page 94: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Empty File

Page 95: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Getting Rid of Welcome Pane

Page 96: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Editing the File

Page 97: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Saving the File

Page 98: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running the Main Method

Page 99: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Output in Console Window

Console

Page 100: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running Main with Parameters

Page 101: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Setting Run Configuration

Page 102: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Run Configuration

Page 103: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Arguments Tab

Page 104: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Executing Debug

Page 105: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Setting a Break PointDouble click where you want program to stop

Page 106: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Executing Debug

Page 107: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Starting the Debugger

Page 108: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Stopping at BreakpointDebug Perspective

Next statement to be executed

Page 109: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Examining Main Parameters

Main Parameters

Page 110: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Stepping to next statement

Page 111: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Next Statement

Page 112: Comp 114 Foundations of Programming Instructor: Prasun Dewan

New Output and Local Variable

Index gets initialized

println() executed

Page 113: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Step Over

Page 114: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Step Into

Call stack

Called method parameters

Page 115: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Step Return

Page 116: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Resume

Page 117: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Returning to Java Perspective

Page 118: Comp 114 Foundations of Programming Instructor: Prasun Dewan

AReverseUpperCasePrinter

Page 119: Comp 114 Foundations of Programming Instructor: Prasun Dewan

AReverseUpperCasePrinter

No bold face!

No Outline!

Page 120: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Deleting File

Will also delete from file system

Page 121: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Renaming

Page 122: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding .java suffix

Page 123: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Renamed File

No bold face!

No Outline!

Page 124: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Downloading ObjectEditor Software

Page 125: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Downloading ObjectEditor Software

Page 126: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Downloading ObjectEditor Software

Page 127: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Page 128: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Must do this for each project!

Page 129: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Page 130: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Page 131: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Page 132: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Page 133: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Page 134: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Page 135: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Installing ObjectEditor Software

Page 136: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Testing ObjectEditor Software

Any object instance!

Page 137: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Testing ObjectEditor Graphics

Page 138: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Testing ObjectEditor Graphics

Page 139: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a library in JBuilder

Page 140: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a library in JBuilder

Page 141: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a library in JBuilder

Page 142: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a library in JBuilder

Page 143: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a library in JBuilder

Page 144: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a library in JBuilder

Page 145: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Adding a library in JBuilder

Page 146: Comp 114 Foundations of Programming Instructor: Prasun Dewan

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.

Page 147: Comp 114 Foundations of Programming Instructor: Prasun Dewan

The end

• The rest are extra slides

Page 148: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 149: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 150: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 151: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 152: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 153: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 154: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Previous Main.class shown

Page 155: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 156: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 157: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 158: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Running Another Program with Parameters

Page 159: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 160: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 161: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 162: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 163: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 164: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 165: Comp 114 Foundations of Programming Instructor: Prasun Dewan
Page 166: Comp 114 Foundations of Programming Instructor: Prasun Dewan

Resume

Page 167: Comp 114 Foundations of Programming Instructor: Prasun Dewan