comp 114 foundations of programming instructor: prasun dewan (pr sün divän)

95
Comp 114 Foundations of Programming Instructor: Prasun Dewan (Prsün Divän)

Post on 22-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Comp 114Foundations of Programming

Instructor: Prasun Dewan

(Prsün Divän)

Hello World

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 argumentsmain header

directory/library

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

Printing Scanned Characters Backwards

Strings = Char Sequences

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

h e l l o

String {sequences of characters}

1 4 3 l 0

Other Sequences as Predefined Types

100 98 99 100 90

60 40 50

{sequences of integers}

80

JFK FDR

{sequence of Strings}

JC BC RR GB

3.8 3.1

{sequences of doubles}

3.7 3.1 3.6 3.9

IntSequence

DoubleSequence

StringSequence

Other Sequences as Array Types

100 98 99 100 90

60 40 50

{sequences of integers}

80

{sequence of strings}

3.8 3.1

{sequences of doubles}

3.7 3.1 3.6 3.9

int[]

double[]

String[]

JFK FDR JC BC RR GB

Initializing Array Declarations

100 98 99 100 90 80

int[] assignmentScores = {100, 98, 99, 100, 90 80};

3.8 3.1 3.7 3.1 3.6 3.9

double[] gpas = {3.8, 3.1, 3.7, 3.1, 3.6, 3.9};

String[] initials = {“JFK”, “FDR”, “JC”, “BC”, “GW”, “WW”};

JFK FDR JC BC GW WW

assignmentScores

Array Type

Element Type

Array Literal

Array Variable

Array Operations

String[] initials = {“JFK”, “FDR”, “JC”, “BC”, “GW”, “WW”};

JFK FDR JC BC GW WW

initials.length 6

initials[0]

initials[initials.length - 1]

initials[initials.length] ArrayIndexOutOfBoundsException

public named constant

initials[0] = “HT”

HT

initials[initials.length] = “HT” ArrayIndexOutOfBoundsException

Array Instance Size Fixed

Array Types have Variable-Size

100 98 99 100 90

60 40 50

80

int[]

100 98 99 100 90 80

int[] assignmentScores = {100, 98, 99, 100, 99, 80};

assignmentScores

assignmentScores = {60, 40, 50};

assignmentScores60 40 50

Uninitializing Array Declaration

int[] assignmentScores;

assignmentScores

null

assignmentScores = {60, 40, 50};

assignmentScores60 40 50

Array Elements Uninitialized

int[] assignmentScores = new int[3];

assignmentScores0 0 0

Printing Scanned Characters Backwards

Variable-Size Collection

filled part

unfilled part

current size

maximum size

3 J

F

K

size array

Variable-Size Collection

filled part

unfilled part

current size

maximum size

Variable-Size Collection

static final int MAX_CHARS = 7;static char[] upperCaseLetters = new char[MAX_CHARS];static int numberOfUpperCaseLetters = 0;

Solutionpackage warmup;public class AReverseUpperCasePrinter {

static final int MAX_CHARS = 5;static char[] upperCaseLetters = new char[MAX_CHARS];static int numberOfUpperCaseLetters = 0;public static void main(String[] args){

if (args.length != 1) {System.out.println("Illegal number of arguments:" +

args.length + ". Terminating program.");System.exit(-1);

}int index = 0;System.out.println("Upper Case Letters:");while (index < args[0].length()) {

if (isUpperCase(args[0].charAt(index))) {System.out.print(args[0].charAt(index));storeChar(args[0].charAt(index));

}index++;

}System.out.println();printReverse();

}

Solution (contd.)

public static void storeChar(char c) {if (numberOfUpperCaseLetters == MAX_CHARS) {

System.out.println("Too many upper case letters. Terminating program. ");

System.exit(-1);}upperCaseLetters[numberOfUpperCaseLetters] = c;numberOfUpperCaseLetters++;

}public static void printReverse() {

System.out.println("Upper Case Letters in Reverse:");for (int index =numberOfUpperCaseLetters - 1; index >= 0; index--) {

System.out.print(upperCaseLetters[index]);}

}}

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