Presentation is loading. Please wait.

Presentation is loading. Please wait.

sequence of execution of high-level statements

Similar presentations


Presentation on theme: "sequence of execution of high-level statements"— Presentation transcript:

1 sequence of execution of high-level statements
Control Structures sequence of execution of high-level statements

2 Control is control of sequence of execution
machine level – manipulate address register: (un)conditional branch high level branch to label  goto GOTO GO TO constrained branch: break high level: selection, iteration

3 Control by branching - FORTRAN
IF(X .EQ. Y) X=X+1 IF(X .EQ. Y) GO TO 100 << ‘else’ statements >> GO TO 200 100 CONTINUE (dummy statement) << ‘then’ statements >> 200 CONTINUE << rest of program >>

4 Control by branching - FORTRAN
IF(X-Y) 10,10,20 10 CONTINUE << statements for X<=Y GO TO 30 20 CONTINUE << statements for X>Y >> 30 CONTINUE << rest of program >>

5 Statement labels integers: FORTRAN, Pascal
identifiers as constants: ALGOL, C variables! PL/1

6 The ‘goto’ debate: is branching needed?
powerful: only control needed easy to abuse: readability, reliability suffer ‘goto’ unnecessary (Böhm and Jacopini, 1966) but most languages retain limited (unlabelled) branching – e.g., break

7 Top-down structured programming 1975
flow chart model: no goto 3 flow structures -sequence -if-then-else (selection) -do-while (iteration) boolean expr statement

8 Selection: either / or how many alternatives:
1 do something or nothing 2 if then else 3 IF (X-Y) 10,20,30 many switch, nested IF, COND (LISP) variations on the selection structure

9 Selection design decisions - 1
control of multiple statements in the control statement if (condition) then <statements> else endif compound statement / block

10 Selection design decisions - 1
control of multiple statements in the control statement  compound statement / block if (condition) if (condition) <statement> { <statements> else } <statement> else { <statements> }

11 Selection design decisions - 2
nesting selection – syntax and logic syntax – use block or control structure if (sum==0) if (count==0) then result = 0; endif; else result = 1; convention/rule

12 Selection design decisions - 2
nesting selection – syntax and logic syntax – use block or control structure convention/rule java, etc if (sum==0) //p ? if (count==0) result = 0; else result = 1;

13 Multiple selection many variations
FORTRAN computed goto is multiple branch GO TO (10,20,30,40,50,60), X^^2+Y case / switch model (independent selections) design decisions default case allowed/ignored? branch after section nested ifs (dependent selections) guarded statements

14 Multiple selection - 1 GO TO (10,20,30,40,50,60), X^^2+Y
FORTRAN computed goto is multiple branch GO TO (10,20,30,40,50,60), X^^2+Y label list computed index semantics: compute index if index < 1 or > max(6), go to next statement go to label at index location in label list

15 Multiple selection - 2 switch/case model

16 Multiple selection - 3 using if
Ada: if (condition) <stmt> elsif (condition) else LISP (COND ((condition)(value)) ((condition)(value)) ((condition)(value)) ( T (value))) 1 2 1 3 4 2 3 4 1 2 3 4

17 Multiple selection - 4 guarded statements – Dijkstra
evaluate all conditions: none true – error one true – do statement many true – select statement at random if <condition> -> <statement> [] <condition> -> <statement> fi

18 Iteration: repetition of statements
control by counter - for loop control by data (by logic) - while loop number of executions: 0 or more - pretest at beginning of loop body 1 or more - posttest at end of loop body branching models of repetition

19 Counter controlled loops
developed with array indexing counter (loop variable) parameters start, stop, stepsize

20 Counter controlled loops
design decision parameters computed when once or every execution? x = 10; do I = 0 to x x = x - 1 11 executions or 6 executions

21 Counter controlled loops
design decisions: loop variable type, scope and value x = 0; I = 100; do I = 1 to 10 by 3 begin x = x + I; I = I - 1; print I end; print I, x;

22 Counter controlled loops
FORTRAN DO loop posttest, parameters evaluated once, number of executions predetermined, loop variable retains last value DO 100 K = 1, 10, 2 << body >> 100 CONTINUE

23 Generalizing the counter
start, stop, step - FORTRAN sequence, index expression & condition, “all of the above” - ALGOL for i = 4,5,6 i*10 while i,10000, 12, 14 step 10 until 25 do simple counting – Ada, Pascal expressions – C,C++,java for (<expr1>,<expr2>,<expr3>) <statement>

24 Logical control design issue: pretest or posttest?
most languages have ‘while’ pretest loop posttest: Pascal C sum := 0; sum = 0; repeat do sum := sum sum += 15; until (sum > 100); while (sum <= 100);

25 Constrained branching
break switch statement programmer control of loop when to exit (between start and end) branch to end or branch out orthogonality – separate repetition (infinite loop) from branching out


Download ppt "sequence of execution of high-level statements"

Similar presentations


Ads by Google