Presentation is loading. Please wait.

Presentation is loading. Please wait.

Types of Structured Sequential Control Types of Unstructured Control  GOTO  coroutines Asynchronous Control (stay tuned) Concurrent Control (stay tuned)

Similar presentations


Presentation on theme: "Types of Structured Sequential Control Types of Unstructured Control  GOTO  coroutines Asynchronous Control (stay tuned) Concurrent Control (stay tuned)"— Presentation transcript:

1 Types of Structured Sequential Control Types of Unstructured Control  GOTO  coroutines Asynchronous Control (stay tuned) Concurrent Control (stay tuned)

2 Simple Sequence - execute instructions in the written order  What instructions are inherently sequential?  Why {...} notation (or begin... end)? Selection - choose between alternative code clauses  What are the two forms in Java/C++ ?  Distinguishing characteristics between selection control structures:  Examples:  if -- Java  CASE -- Modula-2  COND -- Scheme  arithmetic- IF -- FORTRAN IF ( expression ) 100, 200, 300

3 Java/C/C++ Pascal/Algol 60 if ( condition ) thenClause ; else elseClause ; if condition then thenClause else elseClause Modula-2/Ada if condition thenClause ; else elseClause ; end if

4 1st Generation  IF ≈ optional branch (2-way selection)  examples: conditional branches -- assembler logical IF -- FORTRAN IF -- BASIC 2nd Generation  if-then-else replaces if-then  examples: Pascal & C  concern: branching into the midst of a clause  concern: dangling else

5 When does the else clause execute? if ( condition1 ) if ( condition2 ) thenClause ; else elseClause ; How to write the code as indented?

6 1st Generation  IF either branches or not (2-way selection)  examples: conditional branches -- assembler logical IF -- FORTRAN IF -- BASIC 2nd Generation  if-then-else replaces if-then  examples: Pascal & C  concern: branching into the midst of a clause  concern: dangling else 3rd Generation  elseif option is included  examples: Algol 68, Ada & Modula-2

7 Computed-GOTO -- FORTRAN GOTO (10, 20, 30, 40), integerExpression 10 Instruction1... GOTO 100 20 Instruction2... GOTO 100 30 Instruction3... GOTO 100 40 Instruction4... GOTO 100 100CONTINUE

8 Select -- PL/1 SELECT ( Expression ); WHEN(0, 1) Instruction1 ; WHEN(7) Instruction2 ;... OTHERWISE InstructionN ; END; OR SELECT; WHEN( Condition1 ) Instruction1 ; WHEN( Condition2 ) Instruction2 ;... OTHERWISE InstructionN ; END;

9 switch -- C switch ( Expression ) { case constant1 : Instruction1 ; break; case constant2 : case constant3 : Instruction1 ; break;... default: InstructionN ; break; }

10 Guarded-IF (by Edsgar Dijkstra) if condition1  clause1  condition2  clause2  condition3  clause3...  conditionN  clauseN fi Non-deterministic code has alternative valid behavior under the same circumstances. Ada Select select when condition1 => clause1 or when condition2 => clause2 or when condition3 => clause3... or when conditionN => clauseN end select

11 Repetition Control Structures - execute a body repeatedly    EXIT -- Modula-2 & Ada  break -- C et. al.  LEAVE -- PL/1 (What occurs when a continue instruction (C) executed?) DO J=1 TO 10 BY 2, 17, 23 WHILE (X>0);... IF (Y=1) THEN LEAVE;... END;  control structures run amuck - PL/1  top of loop ( while )  bottom of loop ( repeat/do )

12 The Counting Loop -- What hath FORTRAN wrought? Early versions of FORTRAN had one loop construct. DO 1000 j=1,20,1... 1000CONTINUE Modern versions of this loop are called for loops. Modula-2 restrictions. Ada version: for ControlVar in 7..20 loop... end loop Under what circumstances do these Modula-2 loops behave differently? FOR J:=1 TO A[N] DO loopBody ; END; J:=1; WHILE J<=A[N] DO loopBody ; J:=J+1; END;

13 Zahn’s Event Indicator  loop until repeat then fi  | or  |  : ; BNF loop until E 1 or... or E N loopBody repeat then E 1 : Instruction1 ;... E N : InstructionN ; fi Skeleton

14 Example: sequential array search j := 1; loop until Found or NotThere begin if j>arraySize then NotThere; if A[j]=lookupValue then Found; j := j + 1; end repeat then Found: index := j; NotThere: begin /* append value to array end */ arraySize := arraySize + 1; A[arraySize] := lookupValue; index := arraySize; end fi /* assert: A[index] = lookupValue */


Download ppt "Types of Structured Sequential Control Types of Unstructured Control  GOTO  coroutines Asynchronous Control (stay tuned) Concurrent Control (stay tuned)"

Similar presentations


Ads by Google