Lecture 14: Iteration and Recursion (Section 6.5 – 6.6)

Slides:



Advertisements
Similar presentations
ICE1341 Programming Languages Spring 2005 Lecture #13 Lecture #13 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
Advertisements

Programming Languages and Paradigms
Statement-Level Control Structures
Adapted from Scott, Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
CSCI 330: Programming Language Concepts Instructor: Pranava K. Jha Control Flow-II: Execution Order.
Control Structures Any mechanism that departs from straight-line execution: –Selection: if-statements –Multiway-selection: case statements –Unbounded iteration:
Expressions and Statements. 2 Contents Side effects: expressions and statements Expression notations Expression evaluation orders Conditional statements.
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
(8.1) COEN Control Structures  Control structure general issues  Compound statements  Selectors (conditional structures) – single – two-way –
ISBN Chapter 8 Statement-Level Control Structures.
ISBN Chapter 8 Statement-Level Control Structures.
ISBN Chapter 8 Statement-Level Control Structures.
Control Structures. Hierarchical Statement Structure Standard in imperative languages since Algol60. Exceptions: Early FORTRAN, COBOL, early BASIC, APL.
Statement-Level Control Structures Sections 1-4
ISBN Chapter 8 Statement-Level Control Structures.
ISBN Lecture 08 Statement-Level Control Structures.
1 Control Flow Aaron Bloomfield CS 415 Fall 2005.
COMP4730/2002/lec8/H.Melikian Statement-Level Control Structures Introduction Compound Statements Selection Statements Iterative Statements Unconditional.
1 Statement-Level Control Structures Levels of flow control Control Statements 1. Sequence 2. Selection 3. Iteration Unconditional branching Guarded commands.
Imperative Programming
Iteration and Recursion Prepared by Manuel E. Bermúdez, Ph.D. Associate Professor University of Florida Programming Language Principles Lecture 21.
Meet Perl, Part 2 Flow of Control and I/O. Perl Statements Lots of different ways to write similar statements –Can make your code look more like natural.
1 Control Flow: Expressions, Sequencing & Selection (Section ) A compilation of material developed by Felix Hernandez-Campos and Michael Scott.
Chapter 8 Chapter 8 Control Structures. Control Structures  A control structure is a control statement and the statements whose execution it controls.
ISBN Chapter 8 Statement-Level Control Structures.
1 CS Programming Languages Class 11 September 26, 2000.
第八章 敘述層級的控制結構 (Statement-Level Control Structures)
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 5: Introduction to C: More Control Flow.
CSE 425: Control Flow I Categories of Control Flow Constructs Sequencing –order of expressions and statements Selection –if, else, switch Iteration –loops.
8-1 Statement-Level Control Structures Introduction Selection Statements Iterative Statements Unconditional Branching Guarded Commands Conclusions.
April 16, ICE 1341 – Programming Languages (Lecture #14) In-Young Ko Programming Languages (ICE 1341) Lecture #14 Programming Languages (ICE 1341)
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter 7 Levels of Control Flow: 1. Within expressions 2. Among program units 3. Among program statements.
1 Iterative Statements Repeated execution of a (compound) statement by iteration or recursion –Iteration is statement level –Recursion is unit-level control.
1 Iteration and Recursion (Section 6.5 – 6.6) CSCI 431 Programming Languages Fall 2003 A compilation of material developed by Felix Hernandez-Campos and.
Chapter 8 © 2002 by Addison Wesley Longman, Inc Introduction - Levels of Control Flow: 1. Within expressions 2. Among program units 3. Among program.
W E E K F I V E Statement-Level Control Structures.
LECTURE 18 Control Flow. CONTROL FLOW Sequencing: the execution of statements and evaluation of expressions is usually in the order in which they appear.
W E E K F I V E Control Flow. Copyright © 2006 Addison-Wesley. All rights reserved.1-2 Chapter 8 Topics Introduction Selection Statements Iterative Statements.
Copyright © 2009 Elsevier Chapter 6:: Control Flow Programming Language Pragmatics Michael L. Scott.
Chapter 8 Statement-Level Control Structures. Copyright © 2012 Addison-Wesley. All rights reserved.1-2 Chapter 8 Topics Introduction Selection Statements.
Lecture 18 Control Flow.
Chapter 6: Loops.
Why study programming languages?
REPETITION CONTROL STRUCTURE
Def: A control structure is a control statement and
Lexical Analysis (Sections )
8.1 Introduction - Levels of Control Flow: 1. Within expressions
CS 326 Programming Languages, Concepts and Implementation
Lecture 16: Introduction to Data Types
Dr. Vamsi Paruchuri University of Central Arkansas
Statement-Level Control Structures
Chapter 8: Control Structures
Imperative languages Most familiar: computation modifies store
CSCI 3370: Principles of Programming Languages Chapter 9 Subprograms
Chap. 6 :: Control Flow Michael L. Scott.
Chapter 10 Programming Fundamentals with JavaScript
Statement-Level Control Structures
Introduction (Sections )
Control Flow.
Control Flow Chapter 6.
Conditional Statements
Control statements Simple statements Basic structured statements
Control Structures In Text: Chapter 8.
Chap. 6 :: Control Flow Michael L. Scott.
Iteration Implemented through loop constructs (e.g., in C++)
Statement-Level Control Structures
Data Flow Analysis Compiler Design
Chapter8: Statement-Level Control Structures April 9, 2019
Conditional Loops Counted Loops
Chapter 8: Statement Level Control Structures
Presentation transcript:

Lecture 14: Iteration and Recursion (Section 6.5 – 6.6) CSCI 431 Programming Languages Fall 2002 Lecture 14: Iteration and Recursion (Section 6.5 – 6.6) A compilation of material developed by Felix Hernandez-Campos and Michael Scott

Control Flow Mechanisms Sequencing Textual order, Precedence in Expression Selection Iteration Procedural abstraction Recursion Concurrency Nondeterminacy

Iteration and Recursion These two control flow mechanism allow a computer to perform the same set of operations repeatedly They make computers useful Go beyond the power of deterministic finite automata Imperative languages mainly rely on iterations Functional languages make more use of recursion

Iteration Iteration usually takes the form of loops There are two principal varieties Enumeration-controlled loops E.g. for (int i = 0; i <= 10; i++) { … } Logically controlled loops int i = 0; while (i <= 10) { i++;

Iteration Enumeration-controlled loops Index variable Step size and bounds Body of the loop Fortran I, II and IV do 10 i = 1, 10, 2 ... 10: continue The value of i is tested at the end of the loop When continue is reached Implementation is very fast This statement is very close to assembly code It seems trivial to get this right, but…

Iteration Enumeration-controlled loops Problems: Loop boundaries must be integer Expressions are not allowed The index variable can change within the body of the loop Goto statements may jump in and out of the loop The value of i after the termination of the loop is implementation dependent The test of the loop takes place at the end, so the body is executed at least once Even if the lower bound is larger than the upper bound!

Iteration Loop should check for empty bounds Code generation Optimization

Iteration Backward loops Previous code assumed a positive step size

Iteration Access to Index Outside the Loop The value of the index variable at the end of loop is undefined in several languages E.g. Fortran, Pascal Compilers can fix this, but… Generating slower code

Iteration Access to Index Outside the Loop The value of the index after the loop completes may not be valid E.g. var c: ‘a’..’z’; … for c:= ‘a’ to ‘z’ do begin end; (* what comes after ‘z’? *) In summary, even the simplest type of loop requires a good design You will use language with poorly designed statements!

Iteration Iterators Iterators generalize enumeration-controlled loops In the previous examples, the iteration was always over the elements of an arithmetic sequence Iterators are used to enumerate the elements of any well-defined set E.g. In Clu, for i in from_to_by(first, last, step) do … end Notice some similarity to Perl’s foreach statement Iterators are Clu’s claim to fame

Iteration Iterators Clu allows any set-like abstract data type to provide an iterator E.g. integer iterator

Iterations Iterators Iterators can also be based on object-oriented design patterns Java’s Iterator interface http://java.sun.com/docs/books/tutorial/collections/interfaces/collection.html Notice that the loop statement is a logically-controlled one, but it is used for an enumeration-controlled task Enumeration-controlled loops evolved significantly since FORTRAN’s original for

Iteration Logically-Controlled Loops They have fewer semantic subtleties The programmer has to be more explicit There are some design options Pre-test http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html#237277 Post-test http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html#6045 Midtest C/C++/Java idiom: for (;;) { ... if (condition) break ... }

Recursion Recursion requires no special syntax Recursion and logically-controlled iteration are equally powerful Example Compute the greatest common divisor It can be defined as a recurrence: for a, b positive integers

Recursion Implementation using recursion is direct Recursion Iteration

Nondeterminacy Nondeterministic constructs make choices between alternatives deliberately unspecified This mechanism is specially useful in concurrent programs Message-based concurrent languages We will discuss concurrent programming later in this class

Nondeterminacy This is a very practical matter Event-driven programming is related to nondeterminacy See events and listeners in Java http://java.sun.com/docs/books/tutorial/uiswing/overview/event.html Non-blocking IO is related to nondeterminacy See the lastest addition to Java (1.4): Channels and Selectors http://java.sun.com/j2se/1.4/docs/guide/nio/index.html