Commit d030039

mo khan <mo@mokhan.ca>
2022-12-05 20:51:05
add assignment questions
1 parent 93989f9
Changed files (2)
assignments/1.md
@@ -1,1 +1,119 @@
-Assignment 1 – choose ONE exercise each from Chapters 2 and 3
+# Assignment 1 – choose ONE exercise each from Chapters 2 and 3
+
+## Chapter 2: Exercises
+
+1. Write pseudocode instructions to carry out each of the following
+   computational operations:
+  * Determine the area of a triangle given values for the base `b` and the height `h`.
+  * Compute the interest earned in 1 year given the starting account balance B
+     and the annual interest rate / and assuming simple interest, that is, no
+     compounding. Also determine the final balance at the end of the year.
+  * Determine the flying time between two cities given the mileage M between
+    them and the average speed of the airplane.
+2. Using only the sequential operations described in Section 2.2.2, write an
+   algorithm that gets values for the starting account balance B, annual
+   interest rate I, and annual service charge S. Your algorithm should output
+   the amount of interest earned during the year and the final account balance
+   at the end of the year. Assume that interest is compounded monthly and the
+   service charge is deducted once, at the end of the year.
+3. Using only the sequential operations described in Section 2.2.2, write an
+   algorithm that gets four numbers corresponding to scores received on three
+   semester tests and a final examination. Your algorithm should compute and
+   display the average of all four tests, weighting the final exam twice as
+   heavily as a regular test.
+4. Write an algorithm that gets the price for item A plus the quantity
+   purchased. The algorithm prints the total cost, including 6% sales tax.
+5. Write an if/then/else primitive to do each of the following operations:
+  * a. Compute and display the value `x / y` if the value of `y` is not `0`. if
+    `y` does have the value `0`, then display the message `Unable to perform the
+    division.`
+  * b. Compute the area and circumference of a circle given the radius `r` if
+    the radius is greater than or equal to `1.0`; otherwise, you should compute
+    only the circumference.
+6. Modify the algorithm of Exercise 2 to include the annual service charge only
+   if the starting account balance at the beginning of the year is less than
+   $1,000. If it is greater than or equal to $1,000, then there is no annual
+   service charge.
+7. Write an algorithm that uses the `loop` (1) to input 10 pairs of numbers,
+   where each pair represents the score of a football game with the Computer
+   State University (CSU) score listed first, and (2) for each pair of numbers,
+   determine whether CSU won or lost. After reading in these 10 pairs of values,
+   print out the won/lost/tie record of CSU. In addition, if this record is
+   perfect 10-0, then print out the message `Congratulations on your undefeated
+   season.`
+8. Modify the test-averaging algorithm of Exercise 3 so that it reads in 15 test
+   scores rather than 4. There are 14 regular tests and a final examination,
+   which counts twice as much as a regular test. Use a loop to input and sume
+   the scores.
+9. Modify the sales computation algorithm of Exercise 4 so that after finishing
+   the computation for one item, it starts on the computation for the next. This
+   iterative process is repeated until the total cost exceeds $1,000.
+10. Write an algorithm that is given your electric meter readings (in
+    kilowatt-hours) at the beginning and end of each month of the year. The
+    algorithm determines your annual cost of electricity on the basis of a
+    charge of 6 cents per kilowatt-hour for the first 1,000 kilowatt-hours of
+    each month and 8 cents per kilowatt-hour beyond 1,000. After printing out
+    your total annual charge, the algorithm also determines whether you used
+    less than 500 kilowatt-hours for the entire year and, if so, prints out a
+    message thank you for conserving electricity.
+11. Develop an algorithm to compute gross pay. The inputs of your algorithm are
+    the hours worked per week and the hourly pay rate. The rule for determining
+    gross pay is to pay the regular pay rate for all hours worked up to 40,
+    time-and-a-half for all hours over 40 up to 54, and double time for all
+    hours over 54. Compute and display the value for gross pay using this rule.
+    After displaying one value, ask the user whether he or she wants to do
+    another computation. Repeat the entire set of operations until the user says
+    no.
+12. Develop a formal argument that "proves" that the sequential search algorithm
+    shown in Figure 2.13 cannot have an infinite loop; that is, prove that it
+    will always stop after a finite number of operations.
+13. Modify the sequential search algorithm of Figure 2.13 so that it works
+    correctively even if the names in the directory are not unique, that is, if
+    the desired name occurs more than once. Your modified algorithm should find
+    every occurrence of NAME in the directory and print out the telephone number
+    corresponding to every match. In addition, after all the numbers have been
+    displayed, your algorithm should print out how many occurrences of NAME were
+    located. For example, if NAME occurred three times, the output of the
+    algorithm might look something like this:
+
+        528-5638
+        922-7874
+        488-2020
+14. Use the Find Largest algorithm of Figure 2.14 to help you develop an
+    algorithm to find the median value in a list containing `N` unique numbers.
+    The median of `N` numbers is defined as the value in the list in which
+    approximately half the values are larger than it and half the values are
+    smaller than it. For example, consider the following list of seven number:
+
+      25, 50, 83, 44, 91, 20, 55
+
+    The median value is 50 because three values (20, 26, 44) are smaller and
+    three values (55, 83, and 91) are larger. if `N` is an even value, then the
+    number of values larger than the median will be one greater than the number
+    of values smaller than the median.
+15. With regard to the Find Largest algorithm of Figure 2.14, if the numbers in
+    our list were not unique and therefore the largest number could occur more
+    than once, would the algorithm find the first occurrence? The last
+    occurrence? Every occurrence? Explain precisely how this algorithm would
+    behave when presented with this new condition.
+16. On the sixth line of the Find Largest algorithm of Figure 2.14, there is an
+    instruction that reads, `while(i<=n) do`. Explain exactly what would happen
+    if we changed that instruction to read as follows:
+    * a. `while(i>=n) do`
+    * b. `while(i<n) do`
+    * c. `while(i==n) do`
+17. On the seventh line of the Find Largest algorithm of Figure 2.14, there is
+    an instruction that reads `if A > largest so far then ...`. Explain exactly
+    what would happen if we changed that instruction to rea as follows:
+    * a. `if A >= largest so far then...`
+    * b. `if A < largest so far then...`
+
+    Looking back at your answers in Exercises 16 and 17, what do they say about
+    the importance of using the correct relational operations (<,==,>,>=,<=,!=)
+    when writing out either an iterative or conditional algorithmic primitive?
+18. Refer to the pattern-matching algorithm in Figure 2.16.
+  * a. What is the output of the algorithm as it currently stands if our text is
+    `We must band together and handle adversity` and we search for `and`?
+  * b. How could we modify the algorithm so that it finds only the complete word
+    `and` rather than the occurrence of the character sequance `a`, `n` and `d`
+    that is contained within another word, such as `band`?
README.md
@@ -102,3 +102,8 @@ The formal term for "doable" is `effectively computable`.
 * sequential search : start at the beginning of the list and search for the item
   by visiting each item in the list until the end. (unsorted data)
 * library: collection of useful, prewritten algorithms.
+* abstraction: refers to the separation of the high-level view of an entity or
+  an operation from the low-level details of its implementation.
+* top-down design: Viewing an operation at a high level of abstraction and
+  fleshing out the details of its implementation at a later time constitute an
+  imporant computer science problem-solving strategy.