1 CS1110 15 April 2010 while loops Reading: today: Ch. 7 and ProgramLive sections. For next time: Ch. 8.1-8.3 Prelim 2. Thursday evening, 7:30PM Watch.

Slides:



Advertisements
Similar presentations
SEARCHING AND SORTING HINT AT ASYMPTOTIC COMPLEXITY Lecture 9 CS2110 – Spring 2015 We may not cover all this material.
Advertisements

1 CS March 2009 While loops Reading: today: Ch. 7 and ProgramLive sections. For next time: Ch Prelim in two days: Th 7:30-9pm Uris Aud.
CSE 1301 Lecture 6B More Repetition Figures from Lewis, “C# Software Solutions”, Addison Wesley Briana B. Morrison.
CS100J October 07, 2003 Loops Repetitive statements, or iterative statements, or loops “O! Thou hast damnable iteration and art, indeed, able to corrupt.
1 CS100J October 06, 2005 For Loops Reading: Secs Quote for the Day: Perhaps the most valuable result of all education is the ability to make yourself.
1 CS100J 15 March, 2006 The while loop and assertions Read chapter 7 on loops. The lectures on the ProgramLive CD can be a big help. Some anagrams A decimal.
CS 1110 Prelim III: Review Session 1. Info My name: Bruno Abrahao – We have two other TA’s in the room to help you individually Beibei Zhu Suyong Zhao.
COMP 110 Introduction to Programming Mr. Joshua Stough October 1, 2007.
Arrays, Loops weeks 4-6 (change from syllabus for week 6) Chapter 4.
1 Recitation 7. Developing loops Introduction. This recitation concerns developing loops using their invariants and bound functions. Your recitation instructor.
1 Algorithmic analysis Introduction. This handout tells you what you are responsible for concerning the analysis of algorithms You are responsible for:
Algorithms: Selected Exercises Goals Introduce the concept & basic properties of an algorithm.
1 CS October 2008 The while loop and assertions Read chapter 7 on loops. The lectures on the ProgramLive CD can be a big help. Quotes for the Day:
Outlines Chapter 3 –Chapter 3 – Loops & Revision –Loops while do … while – revision 1.
1 “Not all recursive solutions are better than iterative solutions…” “… recursion, however, can provide elegantly simple solutions to problems of great.
Introduction to Programming (in C++) Algorithms on sequences. Reasoning about loops: Invariants. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept.
1 CS100J 09 March, 2006 More on Loops Reading: Secs 7.1–7.4 A Billion. The next time you hear someone in government rather casually use a number that includes.
Copyright © Cengage Learning. All rights reserved. CHAPTER 4 ELEMENTARY NUMBER THEORY AND METHODS OF PROOF.
The while Loop Syntax while (condition) { statements } As long condition is true, the statements in the while loop execute.
Introduction to Programming (in C++) Loops Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Arrays An array is a data structure that consists of an ordered collection of similar items (where “similar items” means items of the same type.) An array.
The while Loop Syntax while (condition) { statements } As long condition is true, the statements in the while loop execute.
1 CS1110, 8 March 2009 Two topics: elementary graphics (for A5); loops Reading: Sec and chapter 7 on loops. The lectures on the ProgramLive CD can.
1 CS March 2010 Read: Sec and chapter 7 on loops. The lectures on the ProgramLive CD can be a big help. Some anagrams A decimal pointI'm.
CSE1222: Lecture 7The Ohio State University1. logExample.cpp // example of log(k) for k = 1,2,..,8... int main() { cout
Application: Correctness of Algorithms Lecture 22 Section 4.5 Fri, Mar 3, 2006.
CS 100Lecture 131 Announcements Exam stats P3 due on Thursday.
Looping and Counting Lecture 3 Hartmut Kaiser
1 CS100J 4 March 2008 Two topics: Turtles; loops Start reading Sec and chapter 7 on loops. The lectures on the ProgramLive CD can be a big help.
CS161 Topic #16 1 Today in CS161 Lecture #16 Prepare for the Final Reviewing all Topics this term Variables If Statements Loops (do while, while, for)
1 On (computational) simplicity We are trying to teach not just Java, but how to think about problem solving. Computer science has its field called computational.
Application: Correctness of Algorithms Lecture 22 Section 4.5 Fri, Feb 18, 2005.
1 CompSci 105 SS 2005 Principles of Computer Science Lecture 6: Recursion Lecturer: Santokh Singh Assignment 1 due tomorrow. Should have started working.
CS November 2010 Developing array algorithms. Reading: Haikus (5-7-5) seen on Japanese computer monitors Yesterday it worked. Today it is.
Recursion A function that calls itself. Recursion A function which calls itself is said to be recursive. Recursion is a technique which will allow us.
Pascal Programming Pascal Loops and Debugging. Pascal Programming Pascal Loops In our first brush with the while do loops, simple comparisons were used.
1 CS April 2010 while loops Reading: today: Ch. 7 and ProgramLive sections. For next time: Ch Prelim 2. Thursday evening, 7:30PM Watch.
Programming Fundamentals. The setw Manipulator setw changes the field width of output. The setw manipulator causes the number (or string) that follows.
© 2007 Pearson Addison-Wesley. All rights reserved2-1 Character Strings A string of characters can be represented as a string literal by putting double.
Expressions and Order of Operations Operators – There are the standard operators: add, subtract, divide, multiply – Note that * means multiply? (No times.
Searching CSE 103 Lecture 20 Wednesday, October 16, 2002 prepared by Doug Hogan.
1 CS100J September 27, 2003 Loops Repetitive statements, or iterative statements, or loops “O! Thou hast damnable iteration and art, indeed, able to corrupt.
1 CS1110 Lecture 16, 26 Oct 2010 While-loops Reading for next time: Ch (arrays) Prelim 2: Tu Nov 9 th, 7:30-9pm. Last name A-Lewis: Olin 155 Last.
1 CS100J 06 March 2008 Read: Sec and chapter 7 on loops. The lectures on the ProgramLive CD can be a big help. Some anagrams A decimal pointI'm.
CS Class 04 Topics  Selection statement – IF  Expressions  More practice writing simple C++ programs Announcements  Read pages for next.
CS100A, Fall Review of loops 1 CS100A, Fall 1998, Review of Loops and Loop Invariants Some students are still having trouble understanding loop invariants.
CORRECTNESS ISSUES AND LOOP INVARIANTS Lecture 8 CS2110 – Fall 2014.
CORRECTNESS ISSUES AND LOOP INVARIANTS Lecture 8 CS2110 – Fall 2015.
Winter 2006CISC121 - Prof. McLeod1 Stuff Midterm exam in JEF234 on March 9th from 7- 9pm.
Recursion (Continued)
Correctness issues and Loop invariants
Start reading Sec and chapter 7 on loops
2.5 Another Java Application: Adding Integers
CS October 2009 Read: Sec and chapter 7 on loops. The lectures on the ProgramLive CD can be a big help. Some anagrams A decimal point I'm.
Introduction to C++ October 2, 2017.
Announcements P2 is due tomorrow Prelim on Monday
CS October 2008 The while loop and assertions
Testing change to a linked list
Output Variables {true} S {i = j} i := j; or j := i;
Binary Search and Loop invariants
Asymptotic complexity
Developing loops from invariants
CS100A Lecture 25 1 December 1998 Chance to replace grade on Prelim 3, Question 2. Everyone is expected to be in lecture on Thursday, 3 December.
CS100A Sections Dec Loop Invariant Review C Review and Example
Developing Loops from Invariants
Searching and Sorting Hint at Asymptotic Complexity
Searching and Sorting Hint at Asymptotic Complexity
COMPUTING.
CS100J 16 Oct, 2007 Assignment A5: loops
CS October 2010 Read: Sec and chapter 7 on loops. The lectures on the ProgramLive CD can be a big help. Some anagrams A decimal point I'm.
Presentation transcript:

1 CS April 2010 while loops Reading: today: Ch. 7 and ProgramLive sections. For next time: Ch Prelim 2. Thursday evening, 7:30PM Watch the lectures on A4: mean: 93.3 median: 97 std dev: 9.4 A4 times: mean: 7.3 median: 7 std dev: 3 A4 max times: 15 (4 people) 14 (1 people) 12 (4 people) 11 (7 people)

2 Beyond ranges of integers: the while loop while ( ) { sequence of declarations and statements } : a boolean expression. : sequence of statements. In comparison to for-loops: we get a broader notion of “there’s still stuff to do” (not tied to integer ranges), but we must ensure that “condition” stops holding (since there’s no explicit increment). condition repetend false true

3 Canonical while loops // Process b..c for (int k= b; k <= c; k= k+1) { Process k; } // Process b..c int k= b; while (k <= c) { Process k; k= k+1; } scope of k: the loop; k can’t be used after the loop // process a sequence of input not of fixed size ; while ( ) { Process next piece of input; make ready for the next piece of input; } Here’s one way to use the while loop

4 Understanding assertions about lists This is an assertion about v and k. It is true because chars of v[0..3] are greater than ‘C’ and chars of v[6..8] are ‘Z’s X Y Z X A C Z Z Z v This is a list of Characters v ≥ C ? all Z’s k k 8 v ≥ C ? all Z’s k k 8 v ≥ C all Z’s k 6 0 k 8 v ≥ W A C all Z’s k 4 0 k 8 Indicate whether each of these 3 assertions is true or false.

5 Linear search. Character c is in String s. Find its first position. 1. How does it start? ((how) does init. make inv true?) 2. When does it stop? (From the invariant and the falsity of loop condition, deduce that result holds.) 3. (How) does it make progress toward termination? 4. How does repetend keep invariant true? R: s c not here c ? 0 k s.length() // Store in k to truthify diagram R Idea: Start at beginning of s, looking for c; stop when found. How to express as an invariant? P : s c not here ? 0 k s.length() // See diagram P, below k= 0; while ( ) { } s.charAt(k) != c k= k + 1;

6 // Set c to the number of ‘e’s in String s. int n= s.length(); k= 0; c= 0; // inv: c = #. of ‘e’s in s[0..k-1] while (k < n) { if (s.charAt(k) == ‘e’) c= c + 1; k= k+ 1; } // c = number of ‘e’s in s[0..n-1] The while loop: 4 loopy questions. Allows us to focus on one thing at a time and thus separate our concerns. 1. How does it start? ((how) does init. make inv true?) 2. When does it stop? (From the invariant and the falsity of loop condition, deduce that result holds.) 3. (How) does it make progress toward termination? 4. How does repetend keep invariant true?

7 We add the postcondition and also show where the invariant must be true: initialization; // invariant: P while ( B ) { // { P and B} repetend // { P } } // { P and !B } // { Result R } The four loopy questions Suppose we are thinking of this while loop: initialization; while ( B ) { repetend } Second box helps us develop four loopy questions for developing or understanding a loop: 1. How does loop start? Initialization must truthify invariant P. 2. When does loop stop? At end, P and !B are true, and these must imply R. Find !B that satisfies P && !B => R. 3. Make progress toward termination? Put something in repetend to ensure this. 4. How to keep invariant true? Put something in repetend to ensure this.

8 Appendix examples: Develop loop to store in x the sum of How should the loop start? Make range 1..k–1 empty: k= 1; x= 0; We’ll keep this definition of x and k true: x = sum of 1..k–1 2. When can loop stop? What condition lets us know that x has desired result? When k == How can repetend make progress toward termination? k= k+1; 4. How do we keep def of x and k true? x= x + k; Four loopy questions k= 1; x= 0; // invariant: x = sum of 1..(k–1) while ( k != 101) { x= x + k; k= k + 1; } // { x = sum of }

9 Roach infestation /** = number of weeks it takes roaches to fill the apartment --see p 244 of text*/ public static int roaches() { double roachVol=.001; // Space one roach takes double aptVol= 20*20*8; // Apartment volume double growthRate= 1.25; // Population growth rate per week int w= ; // number of weeks int pop= ; // roach population after w weeks // inv: pop = roach population after w weeks AND // before week w, volume of roaches < aptVol while ( ) { } // Apartment is filled, for the first time, at week w. return w; } aptVol > pop * roachVol w= w + 1; pop= (int) (pop *(1 + growthRate));

10 Iterative version of logarithmic algorithm to calculate b**c (we’ve seen a recursive version before). /** set z to b**c, given c ≥ 0 */ int x= b; int y= c; int z= 1; // invariant: z * x**y = b**c and 0 ≤ y ≤ c while (y != 0) { if (y % 2 == 0) { x= x * x; y= y/2; } else { z= z * x; y= y – 1; } // { z = b**c }

11 Calculate quotient and remainder when dividing x by y x/y = q + r/y 21/4= 4 + 3/4 Property: x = q * y + r and 0 ≤ r < y /** Set q to quotient and r to remainder. Note: x >= 0 and y > 0 */ int q= 0; int r= x; // invariant: x = q * y + r and 0 ≤ r while (r >= y) { r= r – y; q= q + 1; } // { x = q * y + r and 0 ≤ r < y }

12 Building a fair coin from an unfair coin /** = result of flipping a fair coin (heads/tails is true/false) */ public static boolean fairFlip() { boolean f1= new unfair flip; boolean f2= new unfair flip; /* invariant P: f1, f2 contain results of 2 unfair flips, and in all previous flips, f1 and f2 were the same */ while (f1 == f2) { f1= new unfair flip; f2= new unfair flip; } // R: P and f1 != f2 return !f1 && f2 } John von Neumann: building a “fair coin” from an unfair coin loopy questions: 1. P is true initially 2. When it stops, R is true 4. Repetend keeps P true 3. But we can’t prove that the loop makes progress toward termination! Unfair flip produces heads with some probability p, 0 < p < 1 probability of !f1 && f2 = probability of f1 && !f2