COS 126

Conditionals and Loops
Practice Programming Exercises


These exercises are for practice with loops and conditionals—they are not a component of your course grade. Exercise 1 involves a single loop and the Math library; Exercise 2 involves nested loops and conditionals.

  1. Pepys problem. In 1693, Samuel Pepys asked Isaac Newton which was more likely: getting at least one 1 when rolling a fair die 6 times or getting at least two 1s when rolling a fair die 12 times. Write a program Pepys.java that uses simulation to determine the correct answer.

    This exercise will be live-coded during the class meeting.

  2. Generalized harmonic numbers. Write a program GeneralizedHarmonic.java that takes two integer command-line arguments n and r and uses a for loop to compute the nth generalized harmonic number of order r, which is defined by the following formula:

    \(H(n, r) = \frac{1}{1^r} + \frac{1}{2^r} + \cdots + \frac{1}{n^r}.\)
    For example, \(H(3, 1) = \frac{1}{1^1} + \frac{1}{2^1} + \frac{1}{3^1} = \frac{11}{6} \approx 1.833333\) and \(H(3, 2) = \frac{1}{1^2} + \frac{1}{2^2} + \frac{1}{3^2} = \frac{49}{36} \approx 1.361111\).
    % java GeneralizedHarmonic 1 1
    1.0
    
    % java GeneralizedHarmonic 2 1
    1.5
    
    % java GeneralizedHarmonic 3 1
    1.8333333333333333
    
           
    % java GeneralizedHarmonic 1 2
    1.0
    
    % java GeneralizedHarmonic 2 2
    1.25
    
    % java GeneralizedHarmonic 3 2
    1.3611111111111112
    

    Note: you may assume that n is a positive integer.

    Hint: use Math.pow(x, y) to raise x to the power y.

    Remark: the generalized harmonic numbers are closely related to the Riemann zeta function, which plays a central role in number theory.

  3. Band matrices. Write a program BandMatrix.java that takes two integer command-line arguments n and width and prints an an n-by-n pattern like the ones below, with a zero (0) for each element whose distance from the main diagnonal is strictly more than width, and an asterisk (*) for each entry that is not. Here, distance means the minimum number of cells you have to move (either left, right, up, or down) to reach the main diagonal.
    % java BandMatrix 8 0
    * 0 0 0 0 0 0 0 
    0 * 0 0 0 0 0 0 
    0 0 * 0 0 0 0 0 
    0 0 0 * 0 0 0 0 
    0 0 0 0 * 0 0 0 
    0 0 0 0 0 * 0 0 
    0 0 0 0 0 0 * 0 
    0 0 0 0 0 0 0 * 
    
           
    %java BandMatrix 8 1
    * * 0 0 0 0 0 0 
    * * * 0 0 0 0 0 
    0 * * * 0 0 0 0 
    0 0 * * * 0 0 0 
    0 0 0 * * * 0 0 
    0 0 0 0 * * * 0 
    0 0 0 0 0 * * * 
    0 0 0 0 0 0 * * 
    
           
    % java BandMatrix 8 2
    * * * 0 0 0 0 0 
    * * * * 0 0 0 0 
    * * * * * 0 0 0 
    0 * * * * * 0 0 
    0 0 * * * * * 0 
    0 0 0 * * * * * 
    0 0 0 0 * * * * 
    0 0 0 0 0 * * * 
    
           
    % java BandMatrix 8 3
    * * * * 0 0 0 0 
    * * * * * 0 0 0 
    * * * * * * 0 0 
    * * * * * * * 0 
    0 * * * * * * * 
    0 0 * * * * * * 
    0 0 0 * * * * * 
    0 0 0 0 * * * * 
    

    Note: you may assume that n and width are nonnegative integers.

    Hint 1: Do not use arrays.

    Hint 2: Devise an expression that determines the distance of element (i, j) from the main diagonal. For reference, the following diagram illustrates the distance of each element in an 8-by-8 matrix. Solution to hint.

    Band matrix

    Remark: band matrices are matrices whose nonzero entries are restricted to a diagnonal band. They arise frequently in numerical linear algebra.

Submission. Submit the file GeneralizedHarmonic.java and BandMatrix.java.