View Full Version : [Frage] 4te Runde Rekursion?
PsychoTheRapist
02-06-2003, 15:18
Ein Kollege der Eprog schon gemacht hat erzählt dass die 4te Runde rekursiv zu lösen ist. Hab mir gerade die Spez. geholt und finde keinen Hinweis darauf.... Hab ich was überlesen?
mfg
die schweren Bsp. sind AM BESTEN mit Rekursion zu lösen; das heißt aber nicht, das man es so lösen MUSS. ich hab letztes semester das leichte gemacht in der 4. runde und da hab ich überhgauptnix mit rekursion gemacht.... und es hat keinen gestört!
was allerdings wichtig is bei der runde ist, dass dus OBJEKTORIENTIERT machst (d.h. dass du dir selbst objekte definierst, auf denen du dann arbeitest) und das eine KLASSENHIERARCHIE besteht. Ich hab sdamals so gemacht, dass ich alles zuerst in einer klasse programmiert hab und dann am shcluss die einzelnen methoden auf 3 klassen aufgeteilt.
wenn du dich da nicht so gut auskennst, schau mal beim source-forge nach und sieh dir bsple aus der 4. runde an. da kann man zumindest das mit der klassenhierarchie mal durchschauen.
cu, hoffe geholfen zu haben
Die Objektorientiertheit ein Muss! Wenn du nur eine Klasse hast sind das 0 Punkte (das is nämlich das Kriterium fürs Abgabegespräch); die Rekursion is bei den Beispielen im Normalfall eine spürbare Erleichterung (auch wenn das am Anfang nicht so ausschaut), und schadet auch nicht beim Abgabegespräch.
abumaster
03-06-2003, 14:03
Ich hab sdamals so gemacht, dass ich alles zuerst in einer klasse programmiert hab und dann am shcluss die einzelnen methoden auf 3 klassen aufgeteilt.
naja wäre besser wenn du dir am anfang auf dem papier überlgest welche Objekte du verwenden willst. da tust dich dann im endefekt wirklich leichter als dann am ende 1 objekt in mehrere aufspalten.
bei der abgabe müssen nur die versch klassen vorhanden sein, mein tutor hat zb. nicht geschaut welche datentype bzw funktionen die einzelnen klassen enthalten. ist also nicht so tragisch.
bei der abgabe müssen nur die versch klassen vorhanden sein, mein tutor hat zb. nicht geschaut welche datentype bzw funktionen die einzelnen klassen enthalten. ist also nicht so tragisch.
...ich würd mich auf das aber nicht verlassen: es gibt keine genaue Richtlinie was genau zu überprüfen ist ("objektorientiert gelöst"), also wenn der Tutorin/dem Tutor fad is schaut er sichs ein bissi genauer an, wenn er im Stress is eben nicht... was aber natürlich nicht heißt, dass alle dann kommen sollen, wenn eh schon viel los is ;)
Hallo,
also ich finde das aber ziemlich blöd, dass es da keine genauen angaben dazu gibt....
war dieses Semester auch nie in der Vorlesung, weil...
a) die letztes Semester schon zum einschlafen fad war
b) man mit vorhandenen Grundkenntnissen in der VO eh nix neues lernt (aber Java spezifisches selber ausm Buch lernen muss, weil auf Klassen viel zu spät eingegangen wird IMHO)
und
c) die Folien, soweit ich das geschaut hab, genau die gleichen sind wie letztes Semester
...
@ Objektorientiert:
Hatte in Runde 3 das Invertieren einer Matrix mittels Gauss'schem Eliminationsverfahren
(Bsp 3036 glaub ich). Weil man da mit Bruchzahlen rechnen muss, hab ich mir zusätzlich eine komplette Klasse geschrieben nur um Bruchzahlen leichter handhaben zu können.
Zählt das schon als Objektorientiert? Ich würde sagen ja ;)... aber wer weiß...
Genaugenommen würde ja ein einfaches Aufteilen der Aufgabe auf verschiedene Methoden / Funktionen bereits dem Anspruch der Objektorientiertheit genügen.
Die Frage ist, ob das der Übungsleitung genügt :confused: ....
... das Beispiel mit dem Gauss und den Bruchzahlen ist genau das, was ich im Zuge von Eprog unter "objektorientiert" verstehe. Das mit dem Aufteilen lass ich aber auch durchgehen, man muss ja net gemein sein ;)
... das Beispiel mit dem Gauss und den Bruchzahlen ist genau das, was ich im Zuge von Eprog unter "objektorientiert" verstehe. Das mit dem Aufteilen lass ich aber auch durchgehen, man muss ja net gemein sein ;)
thx for info ;)
PsychoTheRapist
05-06-2003, 16:46
@objektorientiert
laut spez.: Sie können für die Lösung der gewählten Aufgabe eine oder mehrere Klassen programmieren. Die Klasse Main.java muß aber die Methode main enthalten. Weiters müssen alle anderen abgegebenen Klassenfiles in Verzeichnis wider vorliegen, Pfadangaben sind nicht gestattet.
Ich sehe ehrlich gesagt bei meinem Beispiel auch nicht den sinn mehrere klassen zu erstellen.. ???
Ich sehe ehrlich gesagt bei meinem Beispiel auch nicht den sinn mehrere klassen zu erstellen.. ???Najo, eine Klasse Widerstand mit den Funktionen parallel() und seriell() macht da schon Sinn, würd ich sagen. Wenn du nur eine einzige Klasse hast, wirst du seeehr genau erklären müssen, warum du denkst, dass das in Ordnung ist.
Desweiteren steht in der Spzifikation: Das Beispiel dieser Runde objektorientiert und als package zu lösen.
Für ein package brauchst du wohl oder übel mindestens eine Klasse in dem Package...
leviathan
05-06-2003, 16:55
Das ist ein allgemeiner teil der nur kopiert wird. Bei manchen Bsp. sind mehrere Klassen im Package nützlich.
lg leviathan
PsychoTheRapist
05-06-2003, 17:21
Tut mir leid vielleicht hab ich mich schlecht ausgedrückt: Ich habe eine klasse main und eine Klasse Calculate erstellt. Da ich eigentlich Programmieranfänger bin und in dem sinn noch nie objektorientiert programmiert habe würde ich gerne wissen ob mein Programm objektorientiert genug ist. http://hades.gothic.at/iforum/images/smilies/wink.gif
Die klasse main schaut bei mir so aus: (bsp4033)
import wider.*;
import eprog.*;
public class main
{ public static void main (String[] args)
{
String strEingabe = EprogIO.readWord();
Calculate.syntax(strEingabe);
Calculate.Calc(strEingabe);
}
}
Dokumenation:
Programmablauf:
Calculate.syntax:
String wird von der Klasse main eingelesen. Und der Klasse Calculate bzw. Calculate.syntax übergeben. Hier wird überprüft ob es zu jeder öffnenden Klammer eine schliessende, ob die Operatoren richtig gesetzt sind, ob der string nur jene Zeichen enthält die laut Spezifikation vorgegeben sind und ob es nicht mehr als 15 widerstände gibt.
Calculate.Calc(rekursiv):
Ist der sytnax ok wird der string(strEingabe) der Methode Calc übergeben. Als erstes wird dieser String in einen editierbaren stringbuffer konvertiert(zuberechnen). Nun durchläuft die Methode diesen StringBuffer und speichert die zuletzt öffnende Klammer in Variable indexKlammerauf. --> es wird der substring bis zur dazugehörigen schliessenden Klammer gebilden und dem Stringbuffer zuberechnentemp übergeben(ohne klammern) und dieser substring aus zuberechnen gelöscht (mit klammern). als erstes wird zuberechnen temp der mehtode ueberprüfung übergeben. Hier wird geprüft ob der string nur gleiche operatoren enthält ( / und + die nicht durch klammern getrennt sind ist nicht erlaubt) bzw ob der string überhaupt einen operator enthält.
Ueberpruefung:
Kein Operator:
Falls er keinen operator enthält wird der String(kann nur noch eine Zahl sein bsp( 380 ) ) an der stelle vom zuberechnen eingefügt an dem sich die öffnende klammer befundnen hat eingefügt. zuberechen wird in den string strEingabe konvertiert und die Methode calc wird rekuriv aufgerufen.
Ein oder mehrere Operatoren:
In diesen Fall Wird zuberechnentemp jenachdem ob sich um eine serienschaltung oder parallelschaltung handelt an die Methode plusberechnen oder paraberechnen übergeben.
plusberechen und paraberechnen(rekursiv):
Ich werde nur kurz auf diese methoden eingehen: beide sind rekursive Prozeduren und funktionieren im Prinzip gleich: Es wird der erste Integer wert aus dem string extrahiert und in einer Hilfsvariable gespeiert ( A oder C) --> dann wird dier nächste integer wert extrahiert und die Berechnung wird durchgeführt ( bsp serienschaltung: A = A + B) und die methode wird rekursiv aufgerufen solange werte vorkommen. Kommen keine mehr vor wird der berechnete wert ( wie in ueberpruefung ) an der stelle von zuberechnen eingefügt an dem der substring entnommen wurde und
Calculate.Calc wird wiederum rekursiv aufgerufen solange es keine Klammern mehr gibt und nur noch ein Wert übrig ist . Dieser Wert ist der zuberechnende Gesamtwiderstand ;)
jegliche ausgaben werden von der Klasse Calculate durchgeführt
mfg
Is zwar net jetzt der Prototyp der Objektorientierung, aber für mich isses ok.
PsychoTheRapist
05-06-2003, 21:01
Is zwar net jetzt der Prototyp der Objektorientierung, aber für mich isses ok.
:D Danke
mfg
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.