Aufgaben zum Programmierkurs FORTRAN Aufgabe 1 Eingabe: Ausgabe: Erläuterung: Lösung: (Schwierigkeitsgrad: 1) Radius r Kreisumfang, Kreisfläche, Kugelfläche, Kugelvolumen jeweils mit Radius r Der Kreisumfang ist 2πr, die Kreisfläche πr2 , die Kugelfläche 4πr2 und das Kugelvolumen 4πr3 . KreisKugel.f90 Aufgabe 2 Eingabe: Ausgabe: Erläuterung: (Kreis und Kugel) (Zinsen) (Schwierigkeitsgrad: 1) Betrag x, Zins (r) und Wachstum (w) in Prozent , Periodenzahl n Barwert, Endwert Der Barwert ist definiert als n 1 − 1+w 1+r x · BW F , BW F = . r−w Der Endwert ist definiert als x · BW F · (1 + r)n . Lösung: Zinsen.f90 Aufgabe 3 Teilaufgabe 1: Eingabe: Ausgabe: Erläuterung: (Annuitätendarlehen) (Schwierigkeitsgrad: 2) Darlehenshöhe D, Zins in Prozent r, Laufzeit L Annuität Ann und Tilgung til Die Annuität ist definiert als Ann = die Tilgung als til = 1 D , BW F A − r. D Teilaufgabe 2: Eingabe: Ausgabe: Erläuterung: Darlehenshöhe D, Zins in Prozent r, erste Tilgung til in Prozent Annuität Ann, Laufzeit L und letzte Rate lRate Sei T il1 = D · til die erste Tilgung in Euro, dann gilt: n T ilj = T1 j=1 (1 + r)n − 1 . r Die beiden Teilaufgaben sollen in einem einzigen Programm verarbeitet werden. Dabei soll der Benutzer zwischen der Eingabe von Laufzeit und Tilgung wählen können. Lösung: Annuitaetendarlehen.f90 Aufgabe 4 (Funktionen) (Schwierigkeitsgrad: 2) Erläuterung: Es sollen die Funktionen absE, modE, moduloE, signE, dimE, maxE, minE geschrieben werden (Erläuterungen dieser Funktionen, siehe Blatt „Vordefinierte Funktionen in FORTRAN“, abs, mod, modulo, sign, dim, max, min). Für die Funktionen modE und moduloE dürfen Umwandlungsfunktionen benutzt werden. Die Funktionen maxE und minE sollen mit einem Array und der dazugehörigen Dimension aufgerufen werden. Für jede Funktion soll ein exemplarischer Aufruf geschrieben werden. Lösung: Funktionen.f90 Aufgabe 5 Eingabe: Ausgabe: Erläuterung: (Nullstellen quadratischer Polynome) (Schwierigkeitsgrad: 2) Die Koeffizienten a, b, c eines quadratischen Polynoms ax2 +bx+c. Die Nullstellen des Polynoms. Die Nullstellen des Polynoms können mit Hilfe der Formel √ −b ± b2 − 4ac x1,2 = 2a berechnet werden. Dabei ist die Anzahl der Nullstellen zu beachten. Die Anzahl der Nullstellen kann mit Hilfe der Diskriminante D = b2 − 4ac bestimmt werden. Es gilt D > 0 ⇒ Das Polynom besitzt 2 Nullstellen, D = 0 ⇒ Das Polynom besitzt 2 Nullstelle, D < 0 ⇒ Das Polynom besitzt keine Nullstelle. Die Ausgabe der Nullstellen soll entsprechend ihrer Anzahl formatiert werden. Lösung: NullstellePol.f90 2 Aufgabe 6 (Nullstelle der Exponentialfunktion) (Schwierigkeitsgrad: 2) Eingabe: Ausgabe: Erläuterung: Die Koeffizienten a, b der Funktion a · ex + b. Die Nullstelle der Funktion. Im Gegensatz zur vorhergehenden Aufgaben soll hier die Nullstelle in einem Iterationsverfahren berechnet werden. Zu beachten ist, dass die Funktion für a · b ≥ 0 keine Nullstelle besitzt. (nähere Hinweise in der Veranstaltung) Lösung: NullstelleExp.f90 Aufgabe 7 (Standardabweichung) (Schwierigkeitsgrad: 3) Eingabe: Ausgabe: Erläuterung: Eine Menge von n real–Zahlen als Array. Die Standardabweichung der Zahlenmenge. Die Anzahl n der Zahlen soll zuerst eingelesen werden. Danach können die einzelnen Zahlen eingegeben werden. Die Standardabweichung einer Zahlenmenge von n Zahlen ist definiert als n n 1 1 2 (xi − x̄) , x̄ = xi . σ= n i=1 n i=1 Lösung: Standardabw.f90 Aufgabe 8 (Bubble–Sort) (Schwierigkeitsgrad: 3) Eingabe: Ausgabe: Erläuterung: Eine Menge von n integer–Zahlen als Array. Die n Zahlen als Array aufsteigend sortiert. Zu verwenden ist der Algorithmus Bubble–Sort. Man durchläuft wiederholt den Array von 1 bis i, wobei i bei der Länge des Arrays beginnt und in jeder Iteration um 1 abnimmt. Es werden bei jedem Schritt die Elemente an der Stelle j und j+1, j von 1 bis i-1, verglichen. Ist das Element an der Stelle j größer als das an der Stelle j+1, so werden die beiden Elemente getauscht. Lösung: BubbleSort.f90 Aufgabe 9 Eingabe: Ausgabe: (Nutzenfunktion) (Schwierigkeitsgrad: 4) Wertebereich von X (minX, maxX, schrittweiteX), Wertebereich von Y (minY, maxY, schrittweiteY) und Funktionsparameter alpha. Eine Wertetabelle für die Cobb–Douglas–Funktion U (X, Y ) = X α · Y 1−α . Erläuterung: Die Wertetabelle ist für die Wertebereiche von X und Y als zweidimensionales Feld in einer Outputdatei Werte.txt auszugeben. Lösung: Nutzenfunktion.f90 3 Aufgabe 10 (Glücksspiel) (Schwierigkeitsgrad: 4) Erläuterung: Es soll ein Würfelspiel implementiert werden. Der Anwender besitzt einen Anfangskontostand von 100. Er darf die ganzzahlige Höhe seines Einsatzes und die Zahl auf die er setzt wählen. Zu beachten ist, dass der Einsatz nicht größer sein darf als der Betrag auf dem Konto. Wird die Zahl gewürfelt, auf die gesetzt wurde, so erhält der Anwender das fünffache seines Einsatzes auf sein Konto, sonst wird der Einsatz von seinem Konto abgezogen. Nach jedem Spiel soll der Anwender entscheiden können, ob er ein weiteres Spiel durchführen oder abbrechen möchte. Verloren hat der Anwender, wenn sei Kontostand 0 beträgt. (Hinweis zu Zufallszahlen in der Veranstaltung) Lösung: üGlcksspiel.f90 Aufgabe 11 (Türme von Hanoi) (Schwierigkeitsgrad: 5) Erläuterung: Es soll das Spiel „Türme von Hanoi“ (Erklärung des Spiels unter http://de.wikipedia.org/wiki/Türme_von_Hanoi) implementiert werden. Der Anwender soll dabei die Möglichkeit haben das Spiel selbst zu steuern. Ein Lösungsalgorithmus für das Spiel soll nicht programmiert werden. Allerdings soll dem Anwender nach Beendigung des Spiels seine benötigten Züge sowie die optimale Zugzahl ausgegeben werden. Die Gestaltung der Benutzeroberfläche beleibt dem Programmierer überlassen. Lösung: Hanoi.f90 4