Hallo liebes Forum,
Ich komme bald in den Genuss mich wiederholt einer Klausur in Algorithmen und Programmieren zu stellen und probier gerade die uns bereitgestellten Aufgaben zu lösen.
Ich muss aber bei mindestens 50 % der Aufgaben kapitulieren.
Vielleicht kann mir ja jemand von euch weiterhelfen.
Die folgende Übungsserie soll den unterschied zwischen applikativen und imperativen Algorithmen verdeutlichen.
Dazu wurde folgende Aufgabe gestellt:
Gegeben sei folgender imperativer Algorithmus in Java:
a) Führen Sie für die Zahlen x=17 und y=5 den oben stehenden Algorithmus schrittweise aus und notieren Sie die Ergebnisse.
b) Welche Funktion wird durch diesen Algorithmus realisiert?
c) Fu ̈r welche Werte von x und y terminiert func1?
d) U ̈berfu ̈hren Sie func1 in einen applikativen Java-Algorithmus und nennen Sie diesen
func2.
So ehrlich gesagt hab ich keine Ahnung wie ich hier ran gehen soll
Hab auch probiert das ganze in Eclipse mal in Java zu schreiben aber da kamen nur Fehlermeldungen in der Console...
ich probier trotzdem mal eine Lösung zu finden:
a) also es gibt eine methode func1 mit den int werten x und y
in der dritten Zeile wird ein Datentyp Int mit dem Namen result deklariert und sein Wert auf 0 initialisiert.
in Zeile fünf kommt dann die Bedingung wenn y gleich 0 ist gib 0 zurück
Danach kommt eine Whileschleife mit der Bedingung x muss größer oder gleichgroß y sein, solange führe x-=y aus
und result++
nach der while schleife soll return zurück gegeben werden.
Nun also konkret zu den zwei Werten
x=17 und y=5
if(5 ==0) gebe 0 zurück // nichT der Fall also weiter zur While-Schleife...
while(17>=5)
x=17-5 //(das ergibt x= 12)
result++ //(erhöhe result um eins, das ergibt 1)
while (12>=5)
x= 12-5 //(das ergibt x= 7)
result++ //(erhöhe result wieder um eins, das ergibt 2)
while(7>=5)
x=7-5 //(das ergibt x= 2)
result++ //(erhöhe result wieder um eins, das ergibt 3)
while (2>=5) //(ist nicht der Fall also springe ich ans Ende der Whileschleife
und gebe result zurück //(result sollte zu diesem Zeitpunkt 3 sein)
if (2 ==0) //(ist nicht der Fall )
also return result //(result = 3)
Dann sollte in Java bei dem Befehl System.out.println(result) eigentlich 3 rauskommen oder sehe ich das Falsch?
b) Mhh Subtraktion von zwei natürlichen Zahlen im positiven Wertebereich
c) für x=5 y=5 oder auch für die Werte x=20 und y=2
d)
Könnt ihr mir vielleicht weiterhelfen? Vielen Dank Liebe Grüße Felix
Ich komme bald in den Genuss mich wiederholt einer Klausur in Algorithmen und Programmieren zu stellen und probier gerade die uns bereitgestellten Aufgaben zu lösen.
Ich muss aber bei mindestens 50 % der Aufgaben kapitulieren.
Vielleicht kann mir ja jemand von euch weiterhelfen.
Die folgende Übungsserie soll den unterschied zwischen applikativen und imperativen Algorithmen verdeutlichen.
Dazu wurde folgende Aufgabe gestellt:
Gegeben sei folgender imperativer Algorithmus in Java:
Java:
public static int func1(int x, int y)
{
int result = 0;
}
if(y == 0)
{
return 0;
}
while(x >= y) {
x -= y;
result++;
}
return result;
a) Führen Sie für die Zahlen x=17 und y=5 den oben stehenden Algorithmus schrittweise aus und notieren Sie die Ergebnisse.
b) Welche Funktion wird durch diesen Algorithmus realisiert?
c) Fu ̈r welche Werte von x und y terminiert func1?
d) U ̈berfu ̈hren Sie func1 in einen applikativen Java-Algorithmus und nennen Sie diesen
func2.
So ehrlich gesagt hab ich keine Ahnung wie ich hier ran gehen soll
ich probier trotzdem mal eine Lösung zu finden:
a) also es gibt eine methode func1 mit den int werten x und y
in der dritten Zeile wird ein Datentyp Int mit dem Namen result deklariert und sein Wert auf 0 initialisiert.
in Zeile fünf kommt dann die Bedingung wenn y gleich 0 ist gib 0 zurück
Danach kommt eine Whileschleife mit der Bedingung x muss größer oder gleichgroß y sein, solange führe x-=y aus
und result++
nach der while schleife soll return zurück gegeben werden.
Nun also konkret zu den zwei Werten
x=17 und y=5
if(5 ==0) gebe 0 zurück // nichT der Fall also weiter zur While-Schleife...
while(17>=5)
x=17-5 //(das ergibt x= 12)
result++ //(erhöhe result um eins, das ergibt 1)
while (12>=5)
x= 12-5 //(das ergibt x= 7)
result++ //(erhöhe result wieder um eins, das ergibt 2)
while(7>=5)
x=7-5 //(das ergibt x= 2)
result++ //(erhöhe result wieder um eins, das ergibt 3)
while (2>=5) //(ist nicht der Fall also springe ich ans Ende der Whileschleife
und gebe result zurück //(result sollte zu diesem Zeitpunkt 3 sein)
if (2 ==0) //(ist nicht der Fall )
also return result //(result = 3)
Dann sollte in Java bei dem Befehl System.out.println(result) eigentlich 3 rauskommen oder sehe ich das Falsch?
b) Mhh Subtraktion von zwei natürlichen Zahlen im positiven Wertebereich
c) für x=5 y=5 oder auch für die Werte x=20 und y=2
d)
Java:
public class func2
{ public static void main(String [] args)
{
int x = 17;
int y = 5;
int result = 0;
if(y == 0)
{
} while(x >= y) {
x -= y;
result++;
}
System.out.println(result);
}
}
Könnt ihr mir vielleicht weiterhelfen? Vielen Dank Liebe Grüße Felix
Zuletzt bearbeitet von einem Moderator: