20
Alice Control Statements: Introduction Control structures/statements allow you to change the order in which state- ments are executed in a program The order is sometimes referred to as flow of control We’ve already seen two such structures: 1. do in order 2. do together do in order represents sequential control or processing Statements are executed one after the other, in the order they are listed do together represents parallel control or processing Statements are executed at the same time, in tandem This chapter introduces two types of control statements: 1. Selection 2. Iteration (repetition, looping) To help visualize flow of control, flow charts are used A flow chart is made of symbols, each with a special meaning By following the arrows through the chart, you see the order in which statements are executed A few flow chart symbols: 1

Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Introduction

• Control structures/statements allow you to change the order in which state-ments are executed in a program

• The order is sometimes referred to as flow of control

• We’ve already seen two such structures:

1. do in order

2. do together

• do in order represents sequential control or processing

– Statements are executed one after the other, in the order they are listed

• do together represents parallel control or processing

– Statements are executed at the same time, in tandem

• This chapter introduces two types of control statements:

1. Selection

2. Iteration (repetition, looping)

• To help visualize flow of control, flow charts are used

– A flow chart is made of symbols, each with a special meaning

– By following the arrows through the chart, you see the order in whichstatements are executed

– A few flow chart symbols:

1

Page 2: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Introduction (2)

– The flow chart for sequential control is

– The flow chart for parallel control is

2

Page 3: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Boolean Expressions

• The Boolean data type has two values:

1. true

2. false

• Alice variables can be of type Boolean, and they are assigned Boolean expres-sions

– A Boolean expression is one that evaluates to true/false

• Types of Boolean expressions:

1. Boolean literal (true/false)

2. Boolean variable

3. Relational expression

– constructed from relational operators:

==, !=, <, >, >=, <=

4. Logical expression

– Logical expressions are constructed from three logical operators:

(a) && (and)

(b) || (or)

(c) ! (not)

– Arguments must be Boolean

– Semantics are represented by truth tables:Graphical way of expressing value of boolean expression

A B A && B A || B !A

true true true true false

true false false true false

false true false true true

false false false false true

3

Page 4: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Boolean Expressions (2)

• Boolean variables

– Often have names like isDone, isZero, isValid

– This also holds for Boolean functions (those returning boolean values)

• Cautions

1. English does not translate directly to Boolean expressions

– ”If the color is red or blue, ....”

– Wrong: color == RED OR BLUE ...

– Right: (color == RED) OR (color == BLUE)

2. Strings cannot be compared with the relational operators; they use specialfunctions (p 143)

– str1.contentEquals(str2)

– str1.equalsIgnoreCase(str2)

– str1.startsWith(str2)

– str1.endsWith(str2)

– str1.contains(str2)

4

Page 5: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Selection

• Selection deals with making a choice

• If/Else is the basic selection statement

• Syntax:

if <boolean_expression>

<if_statements>

else

<else_statements>

• Semantics:

– if Boolean expression is true, execute if statements after if

– if Boolean expression is false, execute else statements following else (if theelse is included)

5

Page 6: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Selection (2)

• To add to program:

1. Drag from control statement list in editor window

2. Select a condition (Boolean expression)

– This value can be replaced by a Boolean expression of your choice later

3. If there is nothing to do when the condition is false, simply add nothing tothe else part

6

Page 7: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Selection - Nested If/Else Statements

• If/Else statements can be nested

• This is done by just dropping if statement in the drop statement here locationof another if

7

Page 8: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Selection - To Nest or Not to Nest If/Else Statements?

• Example:

• Proper use of nested if-else:

if (avg >= 90)

grade = "A"

else

if (avg >= 80)

grade = "B"

else

if (avg >= 70)

grade = "C"

else

if (avg >= 60)

grade = "D"

else

grade = "F"

– Improper use of nested if-else:

if (age >= 65)

exemptions = exemptions + 1;

else

if (spouseAge >= 65)

exemptions = exemptions + 1;

else

if (dependents > 0)

exemptions = exemptions + dependents;

else

if (married AND (filingStatus == 2))

exemptions = exemptions + 1;

else

NULL

NOTE: NULL means no statement; it is NOT an Alice3 statement

8

Page 9: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Selection - Issues When Writing Nested If/ElseStatements (2)

– Proper version of above - do not nest:

...

if (age >= 65)

exemptions = exemptions + 1;

else

NULL

if (spouseAge >= 65)

exemptions = exemptions + 1;

else

NULL

if (dependents > 0)

exemptions = exemptions + dependents;

else

NULL

if (married AND (filingStatus == 2))

exemptions = exemptions + 1;

else

NULL

This is an example of sequential if/else statements

• Usage rules of thumb:

– Use sequences of ifs for independent situations

– Use nested ifs for dependent, mutually-exclusive situations

9

Page 10: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Introduction

• Iteration/repetition/looping: Executing a sequence of instructions multi-ple times

• Loop components:

– Condition: determines whether loop should continue

– Body (process): instructions being repeated

– Loop control variable (LCV): Variable whose value determines when loopstops

• Basic steps of loop control:

Initialize Process

Initialize LCV

BEGIN LOOP

Update Process

Update LCV

END LOOP

10

Page 11: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Loop Control

• Main issue with loops is loop control

– Determining

1. How many times the loop body should execute, and

2. The methods for controlling this

• 2 general types of loop control:

1. Definite iteration:

– Loop executes a fixed number of times

2. Indefinite iteration:

– Loop executes an indeterminate number of times

11

Page 12: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Definite Iteration

• Sometimes called count-controlled iteration

• Body will execute a fixed number of times

• LCV is an example of a variable called a counter

– It counts how many times something occurs

• Example:

– count is the LCV

– count is a counter variable

12

Page 13: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Definite Iteration (2)

• Alice 3 uses a count control structure for implementing definite iteration

– It appears as a for loop in the code when the programming language pref-erence is set to Java

– Dragging count from the control structure list will create a for loop with asystem-generated LCV (whose name can be changed with a right-click)

– You will be asked what value to count to

– Note that it counts from zero

– If you have added variables to your code (or parameters), you have theoption of using one of them as the value to count to

13

Page 14: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Definite Iteration (3)

– What the count loop can’t do:

∗ Start at a value other than zero

∗ Count by increments other than one

∗ Count backwards

14

Page 15: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Indefinite Iteration

• Used when don’t know ahead of time how many times loop should execute

• Types of control:

1. Count controlled: Stop when an event has occurred a predefined numberof times

2. Sentinel: Stop when a particular value (or value from a set of values) isencountered

• Count controlled

– Iterations determined by occurrence of some event a specified number oftimes

– Loop may need to iterate more than this number

– Example:

15

Page 16: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Indefinite Iteration (2)

• Sentinel control

– Sentinel is one or more values that signal the end of iteration

– They are frequently values that are outside of range of acceptable valuesused for processing

∗ For example:

1. Temperatures below absolute 0

2. Ages below 0

3. Numeric grades below 0

4. Letter grades other than A, B, C, D, F

– Example:

– Requires initialization of the LCV prior to entering loop

– A Boolean variable that is used for sentinel control is sometimes called aflag

16

Page 17: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - While Loops

• Pretest loop

• Most general loop construct

– All other loop types can be written as while loops

• General structure:

17

Page 18: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - While Loops in Alice

• These are created like any other control structure

• The while loop in Alice works exactly as described above

• Example:

• When initially added to a program, you select an initial condition

• Afterwards, you can construct as complicated Boolean expression as you likeby dragging and dropping

– The expressions are constructed in the same way as they are for if/elsestatements

• The following for and while are equivalent

18

Page 19: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Potential Problems

1. Infinite loop

• Loop that never ends

• Can result due to many reasons:

– Failure to initialize LCV

– Failure to update LCV properly

– Poor choice of termination condition

– Failure to update process

2. Off-by-one error

• Count-controlled loop that iterates one too many or one too few times

19

Page 20: Alice Control Statements: Introductiondjmoon/csgeneral/csgeneral-notes/alice3-control.pdf · Alice Control Statements: Boolean Expressions The Boolean data type has two values: 1

Alice Control Statements: Iteration - Nested Loops

• Can place one loop inside of another

• Must make sure that initializations and updates occur for each loop and in theappropriate places

• Example:

20