From: Subject: CSSE 120 Homework Date: Sun, 10 Jan 2010 03:45:32 -0500 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01CA91A7.5C3F78F0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01CA91A7.5C3F78F0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.rose-hulman.edu/class/csse/csse120/201010/Homework/hw12.html =EF=BB=BF CSSE 120 = Homework

CSSE 120 -- Intro. to Software Development

Homework 12

  1. Complete the assigned reading for the next session (Zelle sections = 9.1-=20 9.6).=20

    Read it very carefully to understand the top-down = design=20 process. Come to class prepared with questions on anything you do not=20 understand. For Session 14, we will assume that you have read and = understood=20 whatever you do not ask about; we will spend most of the class time = developing=20 another (and more complex) example to reinforce and extend what you = learned by=20 reading.

  2. (44 pts) Complete the Angel quiz over the reading assignment. = Because of=20 the way we are handling this material in class, this quiz will be a = little bit=20 more detailed than most of the ANGEL quizzes have been. You'll find = the quiz=20 on the course Angel = page, under=20 Lessons =E2=86=92 Homework =E2=86=92 Homework 12 =E2=86=92 = Simulation and Design
  3. (60 pts total) You must do this assignment = using=20 Eclipse and the Session12 project that you checked = out in=20 class. Within that project, open the file = NestedLoopsPatterns.py. It=20 contains a template for the rest of this assignment.
  4. (2 points) You will write the function = rectangleOfStars=20 together in class. Make sure you understand how it works. Ask for help = if=20 you're confused.
  5. (5 points) Based on rectangleOfStars, fill in code for the = function=20 triangleOfStars. This prints out a triangle-shaped = grid of=20 stars. For example, the code:
    triangleOfStars(6)
    
    should produce the output:
    *
    **
    ***
    ****
    *****
    ******
    

    After testing and debugging this function, commit your work to your = Subversion repository. Do this by right-clicking on your Session12 = in=20 Eclipse and choosing Team =E2=86=92 Commit.... Be sure to = enter in a sensible=20 log message as the course staff will review the messages.

  6. (5 points) Now make a function called=20 triangleSameNumEachRow. This function will be like=20 triangleOfStars, except each row shows its number, rather than = asterisks. For=20 example, the code:
    triangleSameNumEachRow(7)
    
    should produce the output:
    1
    22
    333
    4444
    55555
    666666
    7777777
    

    After testing and debugging this function, commit your work to your = Subversion repository. Be sure to enter in a sensible log message as = the=20 course staff will review the messages.

  7. (5 points) The next function, = triangleAllNumsEachRow, is=20 like triangleSameNumEachRow, except that each character is its = position from=20 the left, instead of from the top. For example: =
    triangleAllNumsEachRow(6)
    
    should produce the output:
    1
    12
    123
    1234
    12345
    123456
    

    After testing and debugging this function, commit your work to your = Subversion repository using a sensible log message.

  8. (7 points) The next function, = triangleNumsRightJustified,=20 is like triangleSameNumEachRow (from problem 6, = not=20 the previous problem), except that the triangle is = right-justified.=20 For example:
    triangleNumsRightJustified(8)
    
    should produce the output:
           1
          22
         333
        4444
       55555
      666666
     7777777
    88888888
    

    After testing and debugging this function, commit your work to your = Subversion repository using a sensible log message.

  9. (10 points) The next function, = triangleNumsCentered, is=20 like triangleNumsRightJustified, except that the triangle is = centered=20 and includes spaces. For example:
    triangleNumsCentered(9)
    
    should produce the output:
            1=20
           2 2=20
          3 3 3=20
         4 4 4 4=20
        5 5 5 5 5=20
       6 6 6 6 6 6=20
      7 7 7 7 7 7 7=20
     8 8 8 8 8 8 8 8=20
    9 9 9 9 9 9 9 9 9=20
    

    After testing and debugging this function, commit your work to your = Subversion repository using a sensible log message.

  10. (5 points) The next function, = numbersConstantForward,=20 takes three arguments: the number of rows, a maximum number to = display, and a=20 number of occurrences. The function displays a block of numbers. Each = row=20 should be identical and consist of the given number of occurrences of = each=20 number from 1 to the maximum number. For example: =
    numbersConstantForward(4, 7, 3)
    
    should produce the output:
    111222333444555666777
    111222333444555666777
    111222333444555666777
    111222333444555666777
    

    After testing and debugging this function, commit your work to your = Subversion repository using a sensible log message.

  11. (6 points) The next function, = numbersConstantBackward, is=20 just like numbersConstantForward, except the numbers go from the = maximum=20 number down to one. For example:
    numbersConstantBackward(4, 7, 3)
    
    should produce the output:
    777666555444333222111
    777666555444333222111
    777666555444333222111
    777666555444333222111
    

    After testing and debugging this function, commit your work to your = Subversion repository using a sensible log message.

  12. (5 points) The next function, = numbersIncreasingForward,=20 also produces a block of numbers. But it takes just two arguments: the = number=20 of rows to print and the maximum number, n, to reach. Each = row should=20 be identical and consist of a single 1, a pair of 2's, and so on, up = to n=20 occurrences of the number n. For example: =
    numbersIncreasingForward(5, 6)
    
    should produce the output:
    122333444455555666666
    122333444455555666666
    122333444455555666666
    122333444455555666666
    122333444455555666666
    

    After testing and debugging this function, commit your work to your = Subversion repository using a sensible log message.

  13. (10 points) The final function, = triangularPyramid, uses=20 nested loops with graphics, rather than printing text. The function = takes a=20 single argument, n, giving the height of a pyramid made of = triangles.=20 It should create an appropriately sized graphics window and draw a = pyramid of=20 triangles in the window. Each triangle should be the same size, with a = single=20 upright triangle in the top row, two in the second, and so on down to = n=20 upright triangles in the bottom row. (Hint: you don't need to = draw the=20 upside-down triangles explicitly.) You can choose how narrow you want = your=20 triangles to be, I chose the height to be half the width of the = triangle. For=20 example:
    triangularPyramid(9)
    

    could produce the output (color and thick lines optional):

    =20

    Include a getMouse() call at the end of your function so the = graphics window is displayed long enough to be seen.

  14. BONUS: (5 points) Decorate your pyramid with flags or = poles. Hang=20 them using loop patterns, of course. You could even hang photos = (zellegraphics=20 accepts GIF format only) on the poles.
  15. Submit your code by committing the final version to your = Subversion=20 repository.
------=_NextPart_000_0000_01CA91A7.5C3F78F0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.rose-hulman.edu/class/csse/csse120/201010/Homework/HW12Files/tree.png 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 AElFTkSuQmCC ------=_NextPart_000_0000_01CA91A7.5C3F78F0--