CS100J Lecture 5 - PowerPoint PPT Presentation

1 / 16
About This Presentation
Title:

CS100J Lecture 5

Description:

CS100J Lecture 5 – PowerPoint PPT presentation

Number of Views:46
Avg rating:3.0/5.0
Slides: 17
Provided by: Mill1
Category:
Tags: cs100j | albany | lecture

less

Transcript and Presenter's Notes

Title: CS100J Lecture 5


1
CS100J Lecture 5
  • Previous Lecture
  • Programming Concepts
  • Rules of thumb
  • learn and use patterns
  • inspiration from hand-working problem
  • boundary conditions
  • validation
  • Pattern for processing input values up to (but
    not including) a stopping signal
  • Example
  • Processing exam grades
  • Java Constructs
  • Casts and Rounding
  • Reading, Lewis Loftus, Section 3.9
  • This Lecture
  • Programming Concepts
  • Programming by stepwise refinement
  • a pattern
  • sequential refinement
  • case analysis

2
Programming By Stepwise Refinement
  • An algorithm for you to follow when writing a
    program that solves problem P
  • if ( P is simple enough to code immediately )
  • Write the code that solves P
  • else
  • Refine P into subproblems
  • Write the code that solves each subproblem
  • Stepwise refinement is an example of
  • a divide-and-conquer algorithm, because it breaks
    problems down into simpler parts,
  • a recursive algorithm, because you use the same
    algorithm to write the code for any given
    subproblem.
  • The refinement of P into subproblems must include
    a description of how the code segments solving
    the subproblems combine to form code that solves
    P.
  • You can write the code segments that solve the
    subproblems in any order.

3
Ways to Refine P into Subproblems
  • A program pattern
  • Do whatever n times
  • Process input values up until (but not including)
    a stopping value.
  • A sequential refinement
  • A case analysis
  • An iterative refinement

4
Sequential Refinement
  • The refinement is structured so that solving P1
    through Pn in sequence solves P.
  • / Solve problem P /
  • / Solve subproblem P1 /
  • . . .
  • / Solve subproblem P2 /
  • . . .
  • .
  • .
  • .
  • / Solve subproblem Pn /
  • . . .

5
Sequential Refinement, cont.
  • Example 1
  • / Drive from Ithaca to NYC. /
  • / Drive from Ithaca to Binghamton /
  • . . .
  • / Drive from Binghamton to NYC /
  • . . .
  • Example 2
  • / Drive from Ithaca to NYC. /
  • / Drive from Ithaca to Albany. /
  • . . .
  • / Drive from Albany to NYC. /
  • . . .

6
Sequential Refinement, cont.
  • Example 1, continued
  • / Drive from Ithaca to NYC. /
  • / Drive from Ithaca to Binghamton. /
  • . . .
  • / Drive from Binghamton to NYC. /
  • / Drive from Binghamton to
  • Stroudsburg. /
  • . . .
  • / Drive from Stroudsburg to
  • NYC. /
  • . . .

7
Sequential Refinement, cont.
  • Example 3
  • Let X1,,Xn be an ordered sequence of
    variables.
  • Let k be an integer between 1 and n.
  • / Rotate the values in X1,,Xn left k places,
    where values shifted off the left end reenter at
    the right. /
  • E.g., suppose k 3, n 7, and the xs contain
    letters.
  • Before
  • x1 x2 x3 x4 x5 x6 x7
  • a b c d e f g
  • After
  • x1 x2 x3 x4 x5 x6 x7
  • d e f g a b c

8
Sequential Refinement, cont.
  • / Rotate the values in X1,,Xn left k places,
    where values shifted off the left end reenter at
    the right. /
  • / Reverse the order of X1,,Xk /
  • . . .
  • / Reverse the order of Xk1,,Xn /
  • . . .
  • / Reverse the order of X1,,Xn /
  • . . .

9
Sequential Refinement, cont.
  • Example 3, continued
  • E.g., suppose k 3 and n 7
  • x1 x2 x3 x4 x5 x6 x7
  • a b c d e f g
  • c b a d e f g
  • c b a g f e d
  • d e f g a b c

time ?
10
Case Analysis
  • The refinement is structured so that solving one
    of the subproblems P1,,Pn solves P. Which Pi is
    solved is determined during execution by testing
    conditions.
  • / Solve problem P /
  • if (P is an instance of case 1)
  • / Solve subproblem 1 /
  • . . .
  • else if (P is an instance of case 2)
  • / Solve subproblem 2 /
  • . . .
  • else if (P is an instance of case 3)
  • / Solve subproblem 3 /
  • . . .
  • .
  • .
  • .
  • else / P is an instance of case n /
  • / Solve subproblem n /
  • . . .

11
Case Analysis, cont.
  • Example 1
  • / Let x be the absolute value of y. /
  • if ( y lt 0 )
  • / Let x be -y. /
  • . . .
  • else
  • / Let x be y. /
  • . . .
  • Example 2
  • / Let x be the absolute value of y. /
  • x Math.abs(y)
  • I.e., sometimes case analysis is
    counter-productive and there is a uniform way to
    solve the problem.

12
Iterative Refinement
  • The refinement of P is structured so that
    repeated solution of subproblem P eventually
    solves P.
  • / Solve problem P /
  • while (P has not yet been solved)
  • / Solve subproblem P /
  • . . .
  • Question How can repeatedly doing P solve P ?
  • Answer P must be parameterized in terms of
    some state. Each execution of P must change
    the state so that progress is made, i.e., with
    each iteration, we move to a state that is
    closer to a solution for P.
  • The notion of distance must be well-founded,
    i.e., it must converge to 0 in a finite number of
    steps that get closer.
  • Different notions of distance lead to different
    programs.

13
Iterative Refinement, cont.
  • Example Running a maze
  • / There are n2 rooms arranged in an n-by-n grid.
    Some adjacent rooms have connecting doors. No
    doors lead outside. You are in the upper-leftmost
    room facing left. A sequence of doors leads to
    the lower-rightmost room. Get there. /
  • Rule of thumb Work some test cases by hand.
  • Inspiration Keep your left hand on the wall
    and keep walking (the left-hand rule).

14
Iterative Refinement, cont.
  • / There are n2 rooms arranged in an n-by-n grid.
    Some adjacent rooms have connecting doors. No
    doors lead outside. You are in the upper-leftmost
    room facing left. A sequence of doors leads to
    the lower-rightmost room. Get there. /
  • while ( you are not in lower rightmost room )
  • / Get closer to lower rightmost room. /
  • . . .
  • Different notions of closer lead to different
    versions of
  • / Get closer to lower rightmost room. /
  • . . .
  • Notion A wall length away, using the left-hand
    rule.
  • Notion B of rooms away, using the left-hand
    rule.

15
Iterative Refinement, cont.
  • Refinement A (using wall-length distance)
  • / There are n2 rooms arranged in an n-by-n grid.
    Some adjacent rooms have connecting doors. No
    doors lead outside. You are in the upper-leftmost
    room facing left. A sequence of doors leads to
    the lower-rightmost room. Get there. /
  • while ( you are not in lower rightmost room )
  • / Get at least one wall closer to
  • the lower rightmost room. /
  • if (you are facing a door)
  • Go through the door
  • Turn 90 degrees counter-clockwise
  • else
  • Turn 90 degrees clockwise

16
Iterative Refinement, cont.
  • Refinement B (using rooms distance)
  • / There are n2 rooms arranged in an n-by-n grid.
    Some adjacent rooms have connecting doors. No
    doors lead outside. You are in the upper-leftmost
    room facing left. A sequence of doors leads to
    the lower-rightmost room. Get there. /
  • while ( you are not in lower rightmost room )
  • / Get at least one room closer to
  • the lower rightmost room. /
  • while (you are not facing a door)
  • Turn 90 degrees clockwise
  • Go through door
  • Turn 90 degrees counter-clockwise
Write a Comment
User Comments (0)
About PowerShow.com