Aufgabenblatt 02a

Conditionals and Loops
PI-1 2008/09

Lernziel: Sie sollen den Umgang mit dem Werkzeug Eclipse festigen und die Benutzung einfacher Java-Programmkonstrukte an kleinen Beispielen erlernen. Sie sollten sich bei dieser Gelegenheit ebenfalls damit vertraut machen, wie sie mit Hilfe von Eclipse (mit Subclipse-Plugin) auf die Beispielprogramme aus der Vorlesung zugreifen können.

 

Assignment #1:   Boolean and integer variables (UE)

Write a program Ordered.java that reads in three integer command line arguments, x, y, and z. Define a boolean variable isOrdered whose value is true if the three values are either in strictly ascending order (x < y < z) or in strictly descending order (x > y > z), and false otherwise. Print out the variable isOrdered using System.out.println(isOrdered).

% java Ordered 10 17 49
true

% java Ordered 49 17 10
true

% java Ordered 10 49 17
false

Be prepared to explain the following files in class (we recommend that you bring notes or a printout with you): Ordered.java.


Assignment #2:   Floating point numbers, Math library (UE)

Write a program StdGaussian.java that prints out a random value z from a standard Gaussian (normal) distribution using the polar form of the Box-Muller formula:

z = (-2 ln u)1/2 sin(2 π v)

where u and v are real numbers between 0 and 1 generated by Math.random(). Note that Math.PI is the mathematical constant π,   Math.log(x) is the natural logarithm of x, Math.sqrt(x) is the square root of x, and Math.sin(x) is the sine of x.

% java StdGaussian
0.9500138326397604

% java StdGaussian
-0.6001188427428142

Be prepared to explain the following files in class (we recommend that you bring notes or a printout with you):  StdGaussian.java


Assignment #3:   Iterative computation (UE)

Write a Java program ln2.java that computes the numerical value of ln 2 according to the following formula:

The summation of the terms should finish once the absolute value of the last term becomes smaller than a previously specified value ε. Your program should expect ε as a command line argument. The output of your program should be  the computed approximation for the value of ln2 as well as the value of the last term that was actually added in the summation.

Q. Why do we say "nummerical value of ln2" and not "the value of ln2"?

Be prepared to explain the following files in class (we recommend that you bring notes or a printout with you):  ln2.java.


Assignment #4:   Russische Bauernmultiplikation  (UE,PR) (10 points)

Die Multiplikation von natürlichen Zahlen (m, n > 0) kann man wie folgt auf das Addieren, Subtrahieren, Halbieren und Verdoppeln zurückführen (Russische Bauernmultiplikation):

Schreiben Sie ein Java-Programm Mult.java ohne Verwendung des Multiplikationsoperators, das die obige Rechenregel benutzt.

Ihr Programm sollte exakt folgende Ausgaben bei folgenden Aufrufen liefern:

java Mult 11 8
Das Produkt aus 11 und 8 ist: 88

java Mult 88 111
Das Produkt aus 88 und 111 ist: 9768

java Mult 1 7
Das Produkt aus 1 und 7 ist: 7

Be prepared to explain the following files in class (we recommend that you bring notes or a printout with you): Mult.java
What to submit. Submit the file
Mult.java to Goya.


Assignment #5: Integer Manipulation (1)  (UE)

Schreiben Sie ein Java-Programm Numbers1.java, welches alle dreistelligen Zahlen, die durch alle ihre Ziffern teilbar sind, ausgibt. Die Zahl 126 ist zum Beispiel durch 1, durch 2 und durch 6 teilbar. Zahlen, die die Ziffer 0 enthalten, sollen nicht berücksichtigt werden.

Be prepared to explain the following files in class (we recommend that you bring notes or a printout with you):  Numbers1.java


Assignment #6: Integer Manipulation (2)  (UE)

Schreiben Sie ein Java-Programm Numbers2.java, welches die natürlichen Zahlen von 1 bis 99 wie folgt ausgibt: Zahlen, die entweder durch 7 teilbar sind oder deren Quersumme gleich 7 ist, werden durch einen Stern (*) ersetzt, alle anderen werden unverändert ausgegeben.
Hinweis: Felder (Arrays) lernen Sie erst in der nächsten Woche kennen - sie dürfen für diese Aufgabe nicht verwendet werden.

Be prepared to explain the following files in class (we recommend that you bring notes or a printout with you):  Numbers2.java.


Assignment #7: Checkerboard  (UE)

Write a program Checkerboard.java that takes a command-line argument N, and prints out an N-by-N checkerboard pattern with alternating spaces and asterisks, like the following patterns. Use two nested for loops.

% java Checkerboard 4             % java Checkerboard 5
* * * *                           * * * * * 
 * * * *                           * * * * *
* * * *                           * * * * * 
 * * * *                           * * * * *
                                  * * * * * 

Be prepared to explain the following files in class (we recommend that you bring notes or a printout with you): Checkerboard.java.


Assignment #8: Bit-Counter  (UE)

Write a program Bits.java that takes a command-line argument N and uses a while loop to compute the number of times you need to divide N by 2 until it is strictly less than 1. Print out an error message if the integer N is negative.

% java Bits 0                     % java Bits 8
0                                 4

% java Bits 1                     % java Bits 16
1                                 5

% java Bits 2                     % java Bits 1000
2                                 10

% java Bits 4                     % java Bits -23
3                                 Illegal input

Remark: This computes the number of bits in the binary representation of N. This quantity arises in information theory and the analysis of algorithms.

Be prepared to explain the following files in class (we recommend that you bring notes or a printout with you): Bits.java