Lecture 3: Loops. While Loops. While Loops: Powers of Two. While Loops: Newton-Raphson Method

Similar documents
Lecture 3: Loops. While Loops. While Loops: Newton-Raphson Method. While Loops: Powers of Two

2.3 Flow Control. Flow-Of-Control. If-Else: Leap Year. If-Else

! Sequence of statements that are actually executed in a program. ! Conditionals and loops: enable us to choreograph control flow.

1.3 Conditionals and Loops

1.3 Conditionals and Loops

1.3 Conditionals and Loops

1.3 Conditionals and Loops. 1.3 Conditionals and Loops. Conditionals and Loops

1.3 Conditionals and Loops

1.3 Conditionals and Loops

CS 112 Introduction to Programming

3. Conditionals & Loops

3. Conditionals & Loops

3. Conditionals and loops

I/O (cont) and Program Development. Standard Audio. A Foundation for Programming. Crash Course in Sound

TESTING AND DEBUGGING

Program Development. Program Development. A Foundation for Programming. Program Development

A Foundation for Programming

More on variables, arrays, debugging

Review. Primitive Data Types & Variables. String Mathematical operators: + - * / % Comparison: < > <= >= == int, long float, double boolean char

Debugging [continued]

Debugging [continued]

Lecture 2: Intro to Java

Learning Outcomes for this week. Inf1-OP. A Foundation for Programming. A Foundation for Programming

Outline. 1 If Statement. 2 While Statement. 3 For Statement. 4 Nesting. 5 Applications. 6 Other Conditional and Loop Constructs 2 / 19

1.1 Your First Program

Conditionals, Loops, and Style

! Widely available. ! Widely used. ! Variety of automatic checks for mistakes in programs. ! Embraces full set of modern abstractions. Caveat.

Conditionals, Loops, and Style. Control flow thus far. if statement. Control flow. Common branching statement Evaluate a boolean expression

Condi(onals and Loops

1.1 Your First Program

Java. Programming: Chapter Objectives. Why Is Repetition Needed? Chapter 5: Control Structures II. Program Design Including Data Structures

1.1 Your First Program

1.1 Your First Program

Unit 1 Lesson 4. Introduction to Control Statements

Lecture 2: Intro to Java

Sequence structure. The computer executes java statements one after the other in the order in which they are written. Total = total +grade;

Computer Programming I - Unit 5 Lecture page 1 of 14

1/16/12. CS 112 Introduction to Programming. A Foundation for Programming. (Spring 2012) Lecture #4: Built-in Types of Data. The Computer s View

AP CS Unit 3: Control Structures Notes

Chapter 4: Control structures. Repetition

AP Programming - Chapter 6 Lecture

Chapter 4: Control structures

CS112 Lecture: Repetition Statements

Recap: Assignment as an Operator CS 112 Introduction to Programming

Java Methods. Lecture 8 COP 3252 Summer May 23, 2017

Repetition Structures

Condition-Controlled Loop. Condition-Controlled Loop. If Statement. Various Forms. Conditional-Controlled Loop. Loop Caution.

Chapter 4 Introduction to Control Statements

You have seen abstractions in many places, lets consider them from the ground up.

CS 112 Introduction to Programming

COMP-202 Unit 4: Programming With Iterations. CONTENTS: The while and for statements

Definite Loops. Computer Science S-111 Harvard University David G. Sullivan, Ph.D. Using a Variable for Counting

Algorithms. Abdelghani Bellaachia, CSCI 1121 Page: 1

Repetition with for loops

Repe$$on CSC 121 Spring 2017 Howard Rosenthal

Lecture Programming in C++ PART 1. By Assistant Professor Dr. Ali Kattan

Repetition, Looping. While Loop

CS112 Lecture: Loops

All copyrights reserved - KV NAD, Aluva. Dinesh Kumar Ram PGT(CS) KV NAD Aluva

Debugging [continued]

Running Time. Analytic Engine. Charles Babbage (1864) how many times do you have to turn the crank?

School of Computer Science CPS109 Course Notes 6 Alexander Ferworn Updated Fall 15. CPS109 Course Notes 6. Alexander Ferworn

1.1 Your First Program

Introduction to the Java Basics: Control Flow Statements

1.1 Your First Program

CSC 1051 Villanova University. CSC 1051 Data Structures and Algorithms I. Course website:

Assignment 2.4: Loops

STATS 507 Data Analysis in Python. Lecture 2: Functions, Conditionals, Recursion and Iteration

IT 1033: Fundamentals of Programming Loops

Quiz Determine the output of the following program:

CONDITIONAL EXECUTION

int n = 10; int sum = 10; while (n > 1) { sum = sum + n; n--; } cout << "The sum of the integers 1 to 10 is " << sum << endl;

Chapter 4 Loops. int x = 0; while ( x <= 3 ) { x++; } System.out.println( x );

CS1004: Intro to CS in Java, Spring 2005

Announcements. Project 1 will be posted today on webpage and cvs. Due Tuesday

CSC 1051 Data Structures and Algorithms I

C212 Early Evaluation Exam Mon Feb Name: Please provide brief (common sense) justifications with your answers below.

2.3 Recursion. Overview. Greatest Common Divisor. Greatest Common Divisor. What is recursion? When one function calls itself directly or indirectly.

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018

2.3 Recursion. Overview. Greatest Common Divisor. Greatest Common Divisor. What is recursion? When one function calls itself directly or indirectly.

COMP-202 Unit 4: Programming with Iterations

Basic computer skills such as using Windows, Internet Explorer, and Microsoft Word. Chapter 1 Introduction to Computers, Programs, and Java

CS 112 Introduction to Programming

Flow of Control of Program Statements CS 112 Introduction to Programming. Basic if Conditional Statement Basic Test: Relational Operators

CSCI 135 Exam #0 Fundamentals of Computer Science I Fall 2013

Lecture 6: While Loops and the Math Class

Chapter 7. Iteration. 7.1 Multiple assignment

Loops and Files. Chapter 04 MIT 12043, Fundamentals of Programming By: S. Sabraz Nawaz

Repe$$on CSC 121 Fall 2015 Howard Rosenthal

Selec%on and Decision Structures in Java: If Statements and Switch Statements CSC 121 Spring 2016 Howard Rosenthal

Michele Van Dyne Museum 204B CSCI 136: Fundamentals of Computer Science II, Spring

4.1 Performance. Running Time. Scientific Method. Algorithmic Successes

CONDITIONAL EXECUTION

STUDENT LESSON A12 Iterations

Computer Programming. Basic Control Flow - Loops. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons

Key Concept: all programs can be broken down to a combination of one of the six instructions Assignment Statements can create variables to represent

Repetition, Looping CS101

Chapter 4 Lab. Loops and Files. Objectives. Introduction

COMPUTER SCIENCE. 4. Arrays. Section 1.4.

CS111: PROGRAMMING LANGUAGE II

Transcription:

While Loops Lecture : Loops The while loop is a common repetition structure. Check loop-continuation condition. Execute a sequence of statements. Repeat. while (boolean expression) statement; while loop syntax loop-continuation condition boolean expression false statement body Introduction to Computer Science Robert Sedgewick and Kevin Wayne http://www.princeton.edu/~cs6 while loop flow chart While Loops: Powers of Two While Loops: Newton-Raphson Method While loop example: print powers of. Increment i from to 6 by. How are functions like Math.sqrt implemented? Goal: compute the square root of c. Double N each time. Initialize t = c. Replace t with the average of t and c / t. int i = 0; int N = ; while (i <= 6) { System.out.println(N); i = i + ; N = * N; a block statement Click for demo i 0 5 6 7 N 8 6 6 8 i <= 6 false % java Powers 8 6 6 Repeat until t = c / t, up to desired precision. public class Sqrt { double c = Double.parseDouble(args[0]); double t = c; while (t - c/t > 0.00000000000000) { t = (c/t + t) /.0; error tolerance System.out.println(t); % java Sqrt.0.567095 Accurate to 5 decimal places in 5 iterations.

While Loops: Newton-Raphson Method For Loops Newton-Raphson method explained. The for loop is another common repetition structure. Goal: find root of function f(x). Initialize variable. Ex: f(x) = x - c Start with estimate t 0. Draw line tangent to curve at x= t i. Set t i+ to be x-coordinate where line hits x-axis. Repeat until desired precision. Check loop-continuation condition. Execute sequence of statements. Increment variable. Repeat. for (init; boolean; update) statement; initialization update Applications and extensions. for loop syntax Find the roots of any differentiable function of a single variable. Find the roots of a function of several variables. Optimize a twice differentiable function: find where derivative = 0. Optimize a function subject to constraints. loop-continuation condition boolean expression false statement body for loop flow chart 5 6 For Loops: Subdivisions of a Ruler For Loops: Subdivisions of a Ruler Create subdivision of a ruler. Initialize ruler to the empty string. For each value i = to N. Sandwich two copies of the ruler on either side of i. Observation. Program produces N integers. Loops can produce a huge amount of output! String ruler = " "; for (int i = ; i <= N; i++) { ruler = ruler + i + ruler; i ruler % java Ruler % java Ruler % java Ruler System.out.println(ruler); Java code N = % java Ruler % java Ruler 00 Exception in thread "main" java.lang.outofmemoryerror 7 8

Nesting Conditionals and Loops Nested If-Else Conditional statements enable you to perform one of N sequences of operations with N lines of code. Loops enable you to do something N times using only lines of code. Nesting conditionals within conditionals. Pay a certain tax rate depending on income level. if (a0 > 0) System.out.print(0); if (a > 0) System.out.print(); if (a > 0) System.out.print(); if (a > 0) System.out.print(); if (a > 0) System.out.print(); if (a5 > 0) System.out.print(5); if (a6 > 0) System.out.print(6); if (a7 > 0) System.out.print(7); if (a8 > 0) System.out.print(8); if (a9 > 0) System.out.print(9); 0 possible results, depending on input sum = 0.0; for (int i = ; i <= 0; i++) ans +=.0 / i; computes / + / +... + /0 if (income < 750) rate = 0.; else if (income < 650) rate = 0.5; else if (income < 7700) rate = 0.8; else if (income < 950) rate = 0.; else rate = 0.5; graduated income tax calculation Income 0-750 750,650,650 7,700 7,700 950,950 Rate % 5% 8% % 5% More sophisticated programs. Nest conditionals within conditionals. Nest loops within loops. Nest conditionals within loops within loops. 9 0 Gambler's Ruin Library Functions: Math.random Gambler starts with $stake and places $ even bets until going broke or reaching $goal. What are the chances of winning? How many bets will it take? Cash One approach: numerical simulation. Flip digital coins and see what happens. Repeat and compute statistics. goal = stake = 6 Math.random generates number between 0 and. How is Math.random implemented? Linear feedback shift register? Cosmic rays? User doesn't need to know details. User doesn't want to know details. Caveats. "Random" numbers are not really random. Don't use for crypto or Internet gambling! Check assumptions about library function before using. Time One simulation of the gambler's ruin problem. $0

Gambler's Ruin Simulation and Analysis a complicated block statement public class Gambler { int stake = Integer.parseInt(args[0]); int goal = Integer.parseInt(args[]); int N = Integer.parseInt(args[]); int wins = 0; // do N simulations for (int i = 0; i < N; i++) { // do one simulation int t = stake; while (t > 0 && t < goal) { if (Math.random() > 0.5) t++; else t--; if (t == goal) wins++; flip one coin System.out.println(wins + " wins of " + N); Gambler starts with $stake and places $ even bets until going broke or reaching $goal. What are the chances of winning? How many bets will it take? stake goal N % java Gambler 0 0 000 5 wins of 000 % java Gambler 0 0 000 9 wins of 000 % java Gambler 500 500 00 wins of 00 takes a few minutes Fact: Probability of winning is ratio of stake to goal. Fact: Expected number of bets is product of stake and desired gain. Ex: You have a 0% chance of turning $500 into $500, but you should expect to make one million $ bets. Debugging a Program: Syntax Errors Debugging a Program: Semantic Errors Given an integer N, compute its prime factorization. Application: break RSA cryptosystem. 68 = 7 Semantic error: legal but wrong Java program. Use "System.out.println" method to identify problem. Syntax error: illegal Java program. Compiler error messages help locate problem. Eventually, a file named Factors.class. public class Factors { long N = Long.parseLong(args[0]) for (i = 0; i < N; i++) { while (N % i == 0) System.out.print(i + " ") N = N / i Check if i is a factor. public class Factors { long N = Long.parseLong(args[0]); for (long i = ; i < N; i++) { while (N % i == 0) System.out.print(i + " "); N = N / i; Check if i is a factor. Does not compile No output (7) or infinite loop (9) 5 6

Debugging a Program: Performance Errors Debugging a Program: Success Performance error: correct program but too slow. Use profiling to discover bottleneck. Devise better algorithm. If N has a factor, it has one less than or equal to its square root. Many fewer iterations of for loop. public class Factors { long N = Long.parseLong(args[0]); public class Factors { long N = Long.parseLong(args[0]); for (long i = ; i <= N; i++) { while (N % i == 0) { System.out.print(i + " "); N = N / i; Too slow for large N Check if i is a factor. Check if i is a factor. for (long i = ; i <= N / i; i++) { while (N % i == 0) { System.out.print(i + " "); N = N / i; if (N > ) System.out.println(N); else System.out.println(); Special case. 7 8 Debugging a Program: Analysis Debugging a Program How big of an integer can I factor? % java Factors 68 7 % java Factors 6065007 009 00 00 Debug: cyclic process of editing, compiling, and fixing errors. Always a logical explanation. What would the machine do? Say it to the teddy bear. biggest factor Dec Digits 6 9 5 8 % java Factors 906975555570 906975555570 minutes i <= N i <= N / i i * i <= N 0.5 seconds 77 seconds hours 0. seconds 0.6 seconds. years.5 seconds.7 seconds. millennia 57 seconds 9 seconds estimated You will make many mistakes as you write programs. It's normal. "As soon as we started programming, we found out to our surprise that it wasn't as easy to get programs right as we had thought. I can remember the exact when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs." --Maurice Wilkes, 99 9 0

Etymology and Entomology of Computer "Bug" Flow Of Control Summary Flow of control. Sequence of statements that are actually executed in a program. Flow-of-Control Straight-line programs Conditionals Loops Description All statements are executed in the order given. Certain statements are executed depending on the values of certain variables. Certain statements are executed repeatedly until certain conditions are met. Examples if if-else while for do-while Grace Hopper Admiral, US Navy Conditionals and loops. Simple, but powerful tools. Enables us to harness power of the computer.