Download presentation
Presentation is loading. Please wait.
Published byFrancine Hall Modified over 9 years ago
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 */
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.