Sie sind auf Seite 1von 9

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

Question 1 a) Darstellung des Algorithmus in Prosa


Lsungsansatz Es muss ein Maximum ermittelt werden aus einer Reihe von eingegebenen Zahlen. Wird ein Punkt (.) eingegeben, wird die Eingabesequenz beendet. Da wir wissen, dass die Zahlen vom Benutzer/der Benutzerin selbst eingegeben werden, mssen wir uns keine Gedanken darber machen, ob und wie eine Sequenz von Zahlen, die der Computer ohne jegliches Zutun abfertigt, machbar wre. Auch dass wir uns in diesem Beispiel noch keine Gedanken um Datentyp-Konvertierungen machen mssen, erleichtert die Sache ungemein. Der Algorithmus sollte universell sein fr Eingabesequenzen der Angabe. Das Maximum habe ich mit 0 schon vordefiniert (max = 0), da in der zweiten Sequenz ja mit der 0 der hchste Wert eingegeben wird, habe ich die Abfrage nach der Schleife so festgelegt, dass number grer oder gleich hoch sein kann als der Wert in der Variable max. Der neue Maximalwert, der am Ende vom Algorithmus ausgegeben wird, soll der eingegebe number-Wert sein, sofern number eben grer oder gleich gro als der vorherige Wert in max ist. Ist number kleiner als der max-Wert von vorhin, soll der neue Maximalwert auch der bisherige max-Wert bleiben.

Darstellung in Prosa-Form 1. Definiere einen Algorithmus namens findmaximum mit dem Ausgangswert max 2. Deklariere die Variable max und weise ihr den Wert 0 zu. 3. Deklariere die variable number und weise ihr eine von der Benutzerin/dem Benutzer eingegebene Zahl als Wert zu. 4. Wenn number grer oder gleich max, dann weise max den Wert der Variable number zu. Wenn number kleiner als max, dann weise der Variable max wieder den Wert der Variable max (sprich max=max;) zu. 5. Wenn number ungleich . (number!=.) dann gehe zu Schritt 3, sonst zu Schritt 6. 6. Gib die Zeichnkette Maximum: plus der Variable max aus. 7. Ende

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

Question 2 a) Darstellung des Algorithmus in Prosa


Lsungsansatz Es muss das Produkt aus einer Eingabesequenz von Zahlen errechnet werden, wobei nur ein Teil der eingegeben Zahlen fr die Produktberechnung bentigt wird. Die Beschrnkung des Indexes, also die Festlegung, welche Zahlen zur Produktberechnung verwendet werden, geschieht durch die Variablen N und M, welche vom Benutzer/der Benutzerin selbst eingegeben werden mssen. Damit der Computer auch erkennt, dass man sich nun bei der xten Angabe und somit auch in der Indexbeschrnkung befindet, ist der Schlssel dazu eine Variable, die nach jeder Eingabe +1 dazu zhlt und somit die Schritte misst (Variable index). Danach wird gemessen, ob index >=N und <=M ist und somit im Rahmen der Indexbeschrnkung ist und somit die eingegeben Zahlen nun miteinander multiplizieren muss. Weil M aber auch grer als N sein kann, wird am Anfang des Algorithmus geprft, ob N oder M grer ist. Der grere der beiden Werte wird der Variable max, der kleinere Wert der Variable min zugewiesen, folglich wird bei der vorher erwhnten Abfrage geprft ob index>=min und index<=max. Die Variable product wird am Anfang auf 1 gesetzt, damit kann nach Zutreffen der vorher erwhnten Bedingung gleich die entsprechende eingegeben Zahl (Variable number) mit einem kombinierten Zuweisung-Multiplikations-Operator (*=) dem bisherigen Ergebnis bzw. product zugewiesen werden.

Darstellung in Prosa-Form 1: Definiere einen Algorithmus mit dem Namen calcproduct mit dem Ausgangswert product. 2. Deklariere folgende Variablen und weise Ihnen entspreche Werte zu: index=0, product=1, max=0, min=0. 3. Deklariere die Variable N und weise ihr den Wert einer vom Benutzer/von der Benutzerin eingegeben Zahl zu. 4. Deklariere die Variable N und weise ihr den Wert einer vom Benutzer/von der Benutzerin eingegeben Zahl zu. 5. Prfe ob N grer als M ist, wenn ja weise der Variable max den Wert von N zu, der Variable min den Wert von M. Wenn N kleiner als M ist, dann weise weise der Variable min den Wert von N zu, der Variable max den Wert von M.

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

6. Deklariere die Variable number und weise ihr den Wert einer vom Benutzer/von der Benutzerin eingegeben Zahl zu. 7. Prfe ob number==., wenn ja, gehe gleich zu Schritt 10, ansonsten fahre mit Schritt 8 fort.. 8. Addiere Index+1 und weise das Ergebnis der Variable Index zu. 9. Prfe ob index grer oder gleich min und kleiner oder gleich max ist. Wenn ja, multipliziere den Wert in der Variable product mit dem Wert der Variable number und weise das Ergebnis der Variable product zu. Wenn die Bedingung nicht zutrifft, ist product=product. 10. Ende

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

Question 3 a) Darstellung des Algorithmus in Prosa


Lsungansatz Es muss ein Algorithmus definiert werden, in dem ein Startwert eingegeben wird (also N) von dem durch dem Wert einer eingegeben Variable M stetig abgezogen wird und zuletzt N mit all den Differenzwerten ausgegeben wird. Da Differenzwerte unter 0 nicht dargestellt werden mssen, sondern immer nur der letzte mgliche Differenzwert und dieser auch nicht unbedingt 1 betragen muss, verlangt dieser Algorithmus lediglich nach einer simplen Abweisschleife, in der als Bedingung festgelegt wird, dass N grer oder gleich 0 sein muss, damit M von N stetig abgezogen und die Differenzwerte daraus ausgegeben werden. Darstellung in Prosa-Form 1. Definiere einen Algorithmus mit dem Namen decrease. 2. Deklariere die Variable N und weise ihr den Wert einer von der Benutzerin/dem Benutzer eingegeben Zahl zu. 3. Deklariere die Variable M und weise ihr den Wert einer von der Benutzerin/dem Benutzer eingegeben Zahl zu. 4. Gib die Variable N aus. 5. Zhle von dem Wert der Variable N den Wert von M ab und speichere das Ergebnis in N. 6. Wenn N >= 0, dann gehe zu Schritt 4, ansonsten zu Schritt 7. 7. Ende

Question 3 b) Darstellung des Algorithmus als Struktogramm

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

Question 3 c) Darstellung des Algorithmus als Java-Programm


/* Software Development 1 Exercises - Assignment Question 3 c. Christian Kolb Matrikelnummer: 1156396 * LVA-Nummer: 367010 21.10.2012 Verwendete IDE: Geany */ public class CKolb_decrease { public static void main(String[] args){ int N, M; System.out.println("Geben Sie den Wert an, von dem abgezaehlt werden soll"); N=Input.readInt(); // Hier kann der Benutzer/die Benutzerin den Startwert selbst durch Eingabe festlegen System.out.println("Geben Sie den Subtrahenden an"); M=Input.readInt(); // Hier kann der Benutzer/die Benutzerin den Subtrahenden festlegen, der stetig vom Startwert abgezogen wird. while(N>=0) // Wiederhole den Vorgang, solange N nicht negativ wird. { System.out.print(N+" "); // +" " fr einen Leerschritt zwischen den einzelnen Differenzen N=N-M; } } // end main } // end class CKolb_decrease

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

Assignment 1 Question 3 c. Ergebnisse des Testlaufs Zunchst sollten wir berprfen, ob das Programm wie beabsichtigt berhaupt funktioniert. Dazu nehmen wir die Testwerte von example 1 von Question 3:, also N=10 und M=5; Ergebnis:

Funktioniert also wie beabsichtigt Was als nchstes berprft werden sollte, ist ob als Output wirklich nur der Wert N ausgegeben wird, wenn N < M wie auf der Angabe des bungsblattes ersichtlich. Dazu nehmen wir als Testwerte N=10, M=20; Ergebnis:

Funktioniert also wie erwnscht. Gibt das Programm, wie auf den Beispielen der Angabe auch zu sehen, immer den letzten Differenzwert aus, ohne in den Negativbereich zu gehen? Testwerte: N=20, M=7; Ergebnis:

Funktioniert also wie erwnscht, Differenzwerte unter 0 werden nicht angegeben.

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

Wird auch 0 als letzter Differenzwert ausgegeben, wenn die letzte Subtraktion wirklich auf 0 erfolgt bzw. 0 der letzte Differenzwert, so wie auf der Angabe ersichtlich? Testwerte: N=16, M=8; Ergebnis:

Funktioniert ebenfalls wie erwnscht. Was passiert eigentlich, wenn N ein negativer Wert ist, M ebenfalls negativ? Testwerte: N=-7, M=-20; Ergebnis:

Testwerte: N=-7, M=-5: Ergebnis:

Sowohl wenn N>M und vice versa, sind beide negativ, gibt das Programm keinen Wert aus.

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

Nun im letzten Testlauf probieren wir noch aus, welche Ausgabe erfolgt, wenn N ein positiver Wert ist und M ein negativer Wert. Testwerte: N=30, M=-5 Ergebnis:

Das ergibt logischerweise eine Endlosschleife. Denn wenn M ein negativer Wert ist (also ein als Vorzeichen hat) und im Quelltext steht N=N-M, dann treffen zwei Minus aufeinander was folglich Plus ergibt, somit wird dann zu N stndig dazuaddiert, die Schleife ist aber darauf ausgelegt, gegen 0 zu gehen.

Christian Kolb, 1156396 Assignment 1

SE1UE, LVA-Nummer: 367010 (2012W), 23.10.2012

Question 3 d) Vergleich der drei verschieden Darstellungsarten


1.) Prosa Vorteile: Ist fr jede Person lesbar, sei es ob sie Erfahrung in der ProgrammierMaterie hat oder nicht Nachteile: Es ist sehr umstndlich zu schreiben. Dazu kommt, dass die verfasste Prosa in einer bestimmten Sprache in vollen Stzen verfasst ist. Deutsche Prosa kann also von z.B. amerikanischen EntwicklerInnen nicht gelesen werden. 2.) Struktogramm (Nassi-Shneiderman-Diagramm) Vorteile: Der Algorithmus ist visuell schn bersichtlich dargestellt, die Darstellung kann weltweit interpretiert werden, vor allem auch deshalb, weil anstatt langer Texte nur kurze, einzelne Wrter auf Englisch in Form von Anweisungen (in Pseudocode) angegebenen sind. Nachteile: Will man einen umfangreichen Algorithmus darstellen, verliert man bei einem Struktogramm schnell die bersicht. Ein weiterer gravierenderNachteil bei Struktogrammen ist, dass man sehr viel zeichnen muss, will man nur kurze Schreibtischtests anfertigen und/oder man hat kein entsprechendes Programm zur Anfertigung von Struktogrammen parat. 3.) Java-Code Vorteile: Der Algorithmus wurde fixfertig in Programmiersprachen-Form gegossen und ist somit von einer Maschine verarbeitbar (semantische Eindeutigkeit). Nachteile: Allerdings ist diese Darstellungsform auch nur fr eine Programmiersprache gltig, man kann diesen Code nicht einfach in eine C#- oder Object-Pascal-IDE eingeben und er funktioniert. Zudem ist solch Code nicht ohne weiteres von einer Maschine verarbeitbar, Java z.B. bentigt dazu noch das JDK. Auerdem ist diese Darstellungsform des Algorithmus auch nur fr jene Personen lesbar, die explizit diese Programmiersprache auch beherrschen.