1. Erklären Sie kurz: Was sind „vordefinierte“ Typen? Stellen Sie alle vordefinierten Typen
zusammen, gruppieren Sie diese Typensammlung nach sinnvollen Kriterien und
geben Sie zu jedem Typ eine kurze Charakteristik.
2. Erklären Sie kurz: Was sind in C# „einfache Typen“?
3. Schreiben Sie eine Methode zur Berechnung der Fakultät einer Zahl, in der die Berechnung
mithilfe einer for-Schleife durchgeführt wird. Die Zahl soll als Parameter
an die Methode übergeben, die berechnete Fakultät von der Methode zurückgegeben
werden.
4. In der Mathematik nennt man einen Algorithmus, dessen allgemeine Gültigkeit
noch nicht bewiesen wurde, eine „Vermutung“. Eine berühmte Vermutung dieser Art
wurde von dem amerikanischen Mathematiker Ulam aufgestellt und heißt seitdem
Ulamsche Vermutung. Sie ist gar nicht kompliziert – umso mehr erstaunt es, dass sie
bislang nicht bewiesen werden konnte:
Wenn Sie mit einer Zahl zahl > 0 beginnen und diese Zahl wiederholt halbieren –
sofern sie gerade ist –, oder aber mit 3 multiplizieren und 1 addieren – sofern sie
ungerade ist –, dann landen Sie [dies ist bislang nicht allgemein gültig bewiesen]
irgendwann bei der Zahl 1.
a) Planen Sie eine Methode UlamVermutung durch Entwurf eines Struktogramms.
Die Methode soll zunächst die Zahl, mit der sie aufgerufen wurde, ausgeben
und sodann in jedem Berechnungsschritt den aktuellen Wert der Variablen
zahl ausgeben. Die Berechnung endet, wenn zahl den Wert 1 erreicht
hat. Hinweis: Sie werden eine Schleife benötigen.
b) Setzen Sie Ihr Struktogramm in die Programmierung einer Methode
UlamVermutung um.
Reichen Sie die Struktogrammzeichnung und einen Ausdruck Ihres Methodenprogrammcodes
ein.
5. Diese Methode
public int BitMusterPruefen(int zahl, int operand)
{
return zahl & operand;
}
gibt eine Zahl zurück, die sich aus den Zweierpotenzen zusammensetzt, die sowohl
in zahl als auch operand enthalten sind. Wenn Sie für operand eine Zweierpotenz
angeben, können Sie mit dieser Methode ermitteln, ob die Zweierpotenz
operand in zahl enthalten ist. So gibt z. B. der Methodenaufruf
<objekt>.BitmusterPruefen(1234, 1024);
die Zahl 1024 zurück (entspricht 210), weil die Zweierpotenz 1024 in 1234 enthalten
ist.
Wandeln Sie die Methodendefinition so ab, dass die Methode den Wert true zurückgibt,
wenn alle Zweierpotenzen, die im Parameter operand enthalten sind,
auch im Wert des Parameters zahl enthalten sind. In allen anderen Fällen soll
false zurückgegeben werden.
Beispiel:
Der Methodenaufruf BitMusterPruefen(2345, 2049) ergibt True, der
Aufruf BitMusterPruefen(2345, 2050) hingegen False, weil zwar die
Zweierpotenzen 2048 und 1 in 2345 enthalten sind, nicht aber 2048 und 2.
Reichen Sie den Code Ihrer abgeänderten Methode ein.
Hinweis: Es ist nur eine einzige Implementierungszeile erforderlich.