cs 106a, lecture 6 - stanford practice: sentinel loops •sentinel: a value that signals the end of...

Post on 13-May-2018

212 views

Category:

Documents

Embed Size (px)

TRANSCRIPT

CS106A,Lecture6ControlFlowandParameters

• 2

Plan For TodayAnnouncementsRecap:IfandWhileinJavaForLoopsinJavaMethodsinJavaScopeParameters

HW2 Cutoff

• 3

Plan For TodayAnnouncementsRecap:IfandWhileinJavaForLoopsinJavaMethodsinJavaScopeParameters

• 4

Conditions in Java

while(condition) {body

}

if(condition) {body

}

Theconditionshouldbeabooleanwhichiseithertrue orfalse

• 5

Booleans

1 greaterthan 10 > 5 true= 5.0 true

* All have equal precedence

• 7

Relational Operatorsif (1 < 2) {

println("1 is less than 2!");}

int num = readInt("Enter a number: ");if (num == 0) {

println("That number is 0!");} else {

println("That number is not 0.");}

• 8

Practice: Sentinel Loops sentinel:Avaluethatsignalstheendofuserinput.

sentinelloop:Repeatsuntilasentinelvalueisseen.

Example:Writeaprogramthatpromptstheuserfornumbersuntiltheusertypes-1,thenoutputthesumofthenumbers. Inthiscase,-1isthesentinelvalue.

Type a number: 10Type a number: 20Type a number: 30Type a number: -1Sum is 60

• 9

Practice: Sentinel Loops// fencepost problem!// ask for number - post// add number to sum - fence

int sum = 0;int num = readInt("Enter a number: ");while (num != -1) {

sum += num;num = readInt("Enter a number: ");

}println("Sum is " + sum);

• 10

Practice: Sentinel Loops// Solution #2 (ok, but #1 is better)

int sum = 0;while (true) {

int num = readInt("Enter a number: ");if (num == -1) {

break; // immediately exits loop}sum += num;

}println("Sum is " + sum);

• 11

Compound Expressions

Operator Description Example Result! not !(2 == 3) true&& and (2 == 3) && (-1 < 5) false|| or (2 == 3) || (-1 < 5) true

Cannot "chain" tests as in algebra; use && or || instead

// assume x is 15 // correct version2

• 12

Boolean Variables// Store expressions that evaluate to true/falseboolean x = 1 < 2; // trueboolean y = 5.0 == 4.0; // false

// Directly set to true/falseboolean isFamilyVisiting = true;boolean isRaining = false;

// Ask the user a true/false (yes/no) questionboolean playAgain = readBoolean("Play again?, "y", "n");if (playAgain) {...

• 13

Practice: GuessMyNumber WewroteaprogramcalledGuessMyNumber thatpromptstheuserforanumberuntiltheyguessoursecretnumber.

Ifaguessisincorrect,theprogramprovidesahint;specifically,whethertheguessistoohighortoolow.

• 14

If/Else If/Elseif (condition1) {

...} else if (condition2) { // NEW

...} else {

...}

Runsthefirstgroupofstatementsifcondition1 istrue;otherwise,runsthesecondgroupofstatementsifcondition2 istrue;otherwise,runsthethirdgroupofstatements.

Youcanhavemultipleelseifclausestogether.

• 15

If/Else If/Elseint num = readInt("Enter a number: ");if (num > 0) {

println("Your number is positive");} else if (num < 0) {

println("Your number is negative");} else {

• 16

Plan For TodayAnnouncementsRecap:IfandWhileinJavaForLoopsinJavaMethodsinJavaScopeParameters

• 17

For Loops in Java

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

Repeats the loop if this condition

passes

• 18

For Loops in Java

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loop Redux

• 19

For Loops in Java

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loop Redux

i 0

• 20

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 0

• 21

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 0

I love CS 106A!

• 22

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 0

I love CS 106A!

• 23

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 1

I love CS 106A!

• 24

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 1

I love CS 106A!

• 25

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 1

I love CS 106A!

I love CS 106A!

• 26

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 2

I love CS 106A!

I love CS 106A!

• 27

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 2

I love CS 106A!

I love CS 106A!

• 28

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 2

I love CS 106A!

I love CS 106A!

I love CS 106A!

• 29

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 3

I love CS 106A!

I love CS 106A!

I love CS 106A!

• 30

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

i 3

I love CS 106A!

I love CS 106A!

I love CS 106A!

• 31

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

I love CS 106A!

I love CS 106A!

I love CS 106A!

• 32

for (int i = 0; i < 3; i++) {println("I love CS 106A!");

}

For Loops in Java

For Loop Redux

I love CS 106A!

I love CS 106A!

I love CS 106A!

• 33

Using the For Loop Variable

// prints the first 100 even numbersfor(int i = 1; i

• 34

Using the For Loop Variable// Launch countdownfor(int i = 10; i >= 1; i--) {

println(i);}println("Blast off!");

1098Blast off!

Output:

• 35

Using the For Loop Variable

// Adds up 1 + 2 + ... + 99 + 100int sum = 0;for(int i = 1; i

• 36

Nested loops nestedloop:Aloopplacedinsideanotherloop.

for (int i = 0; i < 5; i++) {for (int j = 0; j < 10; j++) {

print("*");}println(); // to end the line

}

Output:**************************************************

Theouterlooprepeats5times;theinnerone10times.

• 37

Nested loop question Q:Whatoutputisproducedbythefollowingcode?

for (int i = 0; i < 5; i++) {for (int j = 0; j < i + 1; j++) {

print("*");}println();

}

A. B. C. D. E.***** ***** * 1 12345***** **** ** 22***** *** *** 333***** ** **** 4444***** * ***** 55555

(Howwouldyoumodifythecodetoproduceeachoutputabove?)

• 38

Nested loop question 2 Howwouldweproducethefollowingoutput?

....1

...22

..333

.444455555

• 39

Nested loop question 2 Howwouldweproducethefollowingoutput?

....1

...22

..333

.444455555

Answer:for (int i = 0; i < 5; i++) {

}

• 40

Nested loop question 2 Howwouldweproducethefollowingoutput?

....1

...22

..333

.444455555

Answer:for (int i = 0; i < 5; i++) {

for (int j = 0; j < 5 i - 1; j++) {print(".");

}

}

• 41

Nested loop question 2 Howwouldweproducethefollowingoutput?

....1

...22

..333

.444455555

Answer:for (int i = 0; i < 5; i++) {

for (int j = 0; j < 5 i - 1; j++) {print(".");

}for (int j = 0; j

• 42

Nested loop question 2 Howwouldweproducethefollowingoutput?

....1

...22

..333

.444455555

Answer:for (int i = 0; i < 5; i++) {

for (int j = 0; j < 5 i - 1; j++) {print(".");

}for (int j = 0; j

• 43

Plan For TodayAnnouncementsRecap:IfandWhileinJavaForLoopsinJavaMethodsinJavaScopeParameters

• 44

Defining New Commands in Karel

Wecanmakenewcommands(ormethods)forKarel.Thisletsusdecompose ourprogramintosmallerpiecesthatareeasiertounderstand.

private void turnRight() {turnLeft();turnLeft();turnLeft();

}

private void name() {statement;statement;...

}

Forexample:

• 45

Methods in Java

Wecandefinenewmethods inJavajustlikeinKarel:

private void printGreeting() {println("Hello world!");println("I hope you have a great day.");

}

private void name() {statement;statement;...

}

Forexample:

• 46

Methods in Javapublic void run() {

int x = 2;printX();

}

private void printX() {// ERROR! "Undefined variable x"println("X has the value " + x);

}

• 47

Plan For TodayAnnouncementsRecap:IfandWhileinJavaForLoopsinJavaMethodsinJavaScopeParameters

• 48

By Chris Piech

Recommended