Download presentation
Presentation is loading. Please wait.
1
Chapter 8: Control Structures
Lectures # 15
2
Chapter 8 Topics Introduction Compound Statements Selection Statements
Iterative Statements Unconditional Branching Conclusions Chapter 8: Control Structures 2
3
Levels of Control Flow Within expressions
(governed by associativity and precedence rules Ch 7.). Among program units ( highest level we will see in Ch 9 and Ch 13). Among program statements (in this lecture). Chapter 8: Control Structures 3
4
Control Statements, Control Structures
Statements that provide capabilities such as: Selection among several alternative control flow paths. Repeated execution of collections of statements. Control Structure: A control statement and the collection of statements whose execution it controls. Categories include: Compound statements. Selection statements. Iterative statements. Unconditional branching. Chapter 8: Control Structures 4
5
Compound Statements Allow a collection of statements to be abstracted to a single statement. A block is a compound statement which includes data declarations. Some languages have specially delimited compound statements: begin … end : in Pascal. { … } : in C, C++, C#. Some control constructs have built-in delimiters such as: repeat…until Chapter 8: Control Structures 5
6
Selection Statements A selection statement provides the means of choosing between two or more paths of execution. Two general categories: Two-way selectors. Multiple-way selectors. Chapter 8: Control Structures 6
7
Two-Way Selection Statements
General form: if control_expression then clause else clause ALGOL 60 and some other languages: if (boolean_expr) then statement (then clause) else statement (else clause) The statements could be single or compound. Chapter 8: Control Structures 7
8
Nesting Selectors Java example: if (sum == 0) if (count == 0)
result = 0; else result = 1; Which if gets the else ? Java's static semantics rule: else matches with the nearest if. Chapter 8: Control Structures 8
9
Nesting Selectors (cont.)
To force an alternative semantics, compound statements may be used: if (sum == 0) { if (count == 0) result = 0;} else result = 1; The above solution is used in C, C++, and C#. Perl requires that all then and else clauses to be compound. Chapter 8: Control Structures 9
10
Multiple-Way Selection Statements
Allow the selection of one of any number of statements or statement groups. Modern multiple selectors: C’s switch statement: switch (expression) { case const_expr_1: stmt_1; … case const_expr_n: stmt_n; [default: stmt_n+1] } Chapter 8: Control Structures 10
11
Multiple-Way Selection: Examples
Early multiple selectors: FORTRAN arithmetic IF (a three-way selector): IF (arithmetic expression) N1, N2, N3 Ex: IF (expression) 10, 20, … … GO TO … … GO TO … … Segments require GOTOs. The arithmetic IF can be entered through any of its statements from anywhere in the program. Chapter 8: Control Structures 11
12
Multiple-Way Selection: Examples
The Ada’s case statement: case expression is when choice list => stmt_sequence; … [when others => stmt_sequence;] end case; More reliable than C’s switch: once a stmt_sequence execution is completed, control is passed to the first statement after the case statement. Chapter 8: Control Structures 12
13
Multiple-Way Selection Using if
Multiple Selectors can appear as direct extensions to two-way selectors, using else-if clauses, for example in Ada: if ... then ... elsif ... else ... end if Chapter 8: Control Structures 13
14
Iterative Statements The repeated execution of a statement or compound statement is accomplished either by iteration or recursion. Iterative statements categories: Counter-controlled loops. Logically-controlled loops. User-located loop control mechanisms. Data structure based-iteration. Chapter 8: Control Structures 14
15
Iterative Statements: Counter-Controlled Loops
A counting iterative statement has a loop variable, and a means of specifying the initial and terminal, and stepsize values. Chapter 8: Control Structures 15
16
Counter-Controlled Loops: Examples
Pascal’s for statement: for variable := initial (to|downto) final do statement; Design choices: Loop variable must be an ordinal (such as int or char) type of usual scope. After normal termination, loop variable is undefined. The loop variable cannot be changed in the loop. Chapter 8: Control Structures 16
17
Counter-Controlled Loops: Examples (cont.)
Ada: for var in [reverse] discrete_range loop end loop A discrete range is a sub-range of an integer or enumeration type. Scope of the loop variable is the range of the loop. Loop variable is implicitly undeclared after loop termination. Chapter 8: Control Structures 17
18
Counter-Controlled Loops: Examples (cont.)
C’s for statement: for ([expr_1] ; [expr_2] ; [expr_3]) statement; Everything can be changed in the loop. The first expression is evaluated once, but the other two are evaluated with each iteration. Chapter 8: Control Structures 18
19
Counter-Controlled Loops: Examples (cont.)
C++ differs from C in: The initial expression can include variable definitions (scope is from the definition to the end of the loop body). Chapter 8: Control Structures 19
20
Summing numbers in C++ (Reading)
int sum(int start, int finish, int incr) { int total = 0; for (int i = 0; i <= finish; i += incr) { total += i; } return total; } Chapter 8: Control Structures 20
21
Summing numbers in Scheme (Reading)
(define (sum start finish incr) (let ((total 0)) (do ((i start (+ i incr))) ((> i finish) total) (set! total (+ i total))))) Local variable total = 0 Loop increment Initial value for i Return value Test to quit Loop “body” Chapter 8: Control Structures 21
22
Iterative Statements: Logically-Controlled Loops
Repetition control is based on a Boolean. General forms: while (ctrl_expr) do loop body dO while (ctrl_expr) Chapter 8: Control Structures 22
23
Logically-Controlled Loops: Examples
Pascal has separate pre-test and post-test logical loop statements (while-do and repeat-until). C and C++ also have both, but the control expression for the post-test version is treated just like in the pre-test case (while-do and do-while). Java is like C, except the control expression must be Boolean. Ada has a pre-test version, but no post-test. Perl has two pre-test logical loops, while and until, but no post-test logical loop. Chapter 8: Control Structures 23
24
Iterative Statements: User-Located Loop Control Mechanisms
Sometimes it is convenient for the programmers to decide a location for loop control (other than top or bottom of the loop). Examples: Ada loop – exit [loop_label] [when condition]. C loops – break and continue. Chapter 8: Control Structures 24
25
User-Located Loop Control Mechanisms break and continue
C, C++, and Java: break statement. Unconditional; for any loop or switch; one level only. Java and C# have a labeled break statement: control transfers to the label. An alternative: continue statement; it skips the remainder of this iteration, but does not exit the loop. Chapter 8: Control Structures 25
26
Iterative Statements: Iteration Based on Data Structures
C#’s foreach statement iterates on the elements of arrays and other collections: Strings[] = strList = {“Bob”, “Carol”, “Ted”}; foreach (Strings name in strList) Console.WriteLine (“Name: {0}”, name); The notation {0} indicates the position in the string to be displayed. Perl has foreach which iterates through lists: @names = {“Bob”, “Carol”, “Ted”, “Alice”}; … foreach $name { print $name } Chapter 8: Control Structures 26
27
Unconditional Branching
Transfers execution control to a specified place in the program. Well-known mechanism: goto statement. Label forms: <<ADA_LABEL>> Label: (in other languages). Major concern: Readability. Chapter 8: Control Structures 27
28
Unconditional Branching (cont.)
Some languages do not support goto statement (e.g., Module-2 and Java). C# offers goto statement (can be used in switch statements). Restrictions on branches: Into a function from another function? Into a loop or selection statement? Chapter 8: Control Structures 28
29
Conclusion Variety of statement-level structures.
Functional and logic programming languages are quite different control structures. Chapter 8: Control Structures 29
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.