Hilfe ! Ich kann nicht programmieren ...
-
E: ein beliebiger Array a
F: Berechnung von 4 zufälligen Teilmengen aus verschiedenen
Elementen von a (Wann gibt es mindestens 4 Teilmengen?
Kontrolle!)
A: die berechneten Teilmengen jeweils untereinanderLegende
E: Eingaben
F: Funktionen, welche die Eingaben verarbeiten
A: AusgabenKann mir mal jemand erklären was hier genau gemacht werden soll?
Ich versteh das nicht ganz, liegt vllt. auch an den ziemlich kanpp gefassten
Aufgabestellungen.
Nein dieses mal mach ich keinem die Hausaufgaben, aber habe Lust es für mich
persönlich zu machen
-
Optimizer schrieb:
Das stimmt so nicht. Java kennt auch Pointer, auch wenn du nicht an deren Adressen kommst (was ja die eigentliche Sicherheit ist).
Meinst du diesen verstümmelten Mischmasch aus einem Pointer und einer Referenz? Also da fühle ich mich in C++ sicherer.
Optimizer schrieb:
Nicht, dass ich damit nicht klar komme, aber als Anfänger findet man so einen Fehler einfach nicht, wenn man z.B. [konstruiert]in einer for-Schleife was verplant, über den Index hinausgeht und den Wert einer anderen Variablen versehentlich ändert[/konstruiert].
Wo ist der Unteschied? Java schmeißt ne exception und in C++ schmiert das Programm mit einer access-violation ab.
Optimizer schrieb:
Wenn du in C++ ein int* kriegst, dann weisst du nicht, was das überhaupt ist, bzw wie weit du mit dem Index gehen kannst.
Wenn du eine Object-Referenz bekommst weißt du auch nicht was das ist. Zeigerarithmetik kennt Java nicht und deswegen hinkt der letzte Teil des Vergleichs.
Optimizer schrieb:
Das mit dem reduzieren auf harmlose Sprachmittel funktioniert also nicht, weil ein Array und ein Pointer ist ja nicht gerade was fortgeschrittenes.
Knock knock. Man muss Pointer aber nicht benutzen wenn man nicht will.
-
MaSTaH schrieb:
Meinst du diesen verstümmelten Mischmasch aus einem Pointer und einer Referenz? Also da fühle ich mich in C++ sicherer.
Völlig unabhängig davon, wie du dich fühlst, sind die Referenztypen in Java faktisch sicherer. Man kann nicht die Adresse manipulieren und wenn man das Zielobjekt ändert (oder auf null setzt) und das Objekt nicht mehr referenziert wird, sammelt es der Garbage Collector auf.
Und das einzige, was "verstümmelt" ist, ist dass man es nicht dereferenzieren muss.MaSTaH schrieb:
Wo ist der Unteschied? Java schmeißt ne exception und in C++ schmiert das Programm mit einer access-violation ab.
DAS ist eben nicht gesagt. Darauf kannst du dich nicht verlassen. Stattdessen kannst du auch den Wert von ein paar Variablen in deinem Programm überschreiben oder irgendeinen Mist auslesen.
MaSTaH schrieb:
Wenn du eine Object-Referenz bekommst weißt du auch nicht was das ist. Zeigerarithmetik kennt Java nicht und deswegen hinkt der letzte Teil des Vergleichs.
Ich kann immer abfragen, auf was für einen Typ die Referenz zeigt. Außerdem ist mir nicht ganz klar, was du jetzt meinst. Ich habe von Typensicherheit geredet.
MaSTaH schrieb:
Knock knock. Man muss Pointer aber nicht benutzen wenn man nicht will.
Ähm doch. Mir ist sonst keine Möglichkeit zum dynamischen Binden bekannt. Oder sagen wir es so. Ohne Pointer sind deine Möglichkeiten *sehr* eingeschränkt.
-
wer raw-pointer und raw-arrazs verwendet, der lebt nicht in der heutigen Welt.
In C++ schreibt man sich ne Klasse die die Arbeit uebernimmt, zB boost::array. Dort fuegt man dann noch asserts ein - und man ist auf der sicheren Seite.
Also Java ist da nicht wirklich sicherer - nur einfacher. Das einzige was schoen ist, ist dass ein Fehler nur einen Teil des Programmes zum abschmieren bringt.
-
@sirlant:
- eingabe
- abspeichern in einen array
- berechnung von 4 disjunkten teilmengen
- ausgabe
mind 4 elemente -> sobal leere Menge ausgeschlossen istbei uns an der FH hat man mit Scheme(lisp dialekt) und c++ angefangen
-
was bedeutet disjunktiv?
-
Shade Of Mine schrieb:
wer raw-pointer und raw-arrazs verwendet, der lebt nicht in der heutigen Welt.
In C++ schreibt man sich ne Klasse die die Arbeit uebernimmt, zB boost::array. Dort fuegt man dann noch asserts ein - und man ist auf der sicheren Seite.
Was sind raw-pointer, raw-arrays und asserts?
-
Wenn du diese Elemente der Sprache direkt benutzt, da dort keine Überprüfungen
stattfinden. Stattdessen ist es besser Klassen zu verwenden, welche diese direkte
Arbeit übernehmen und dir eine komfortable und sichere Arbeit mit Arrays ermöglichen.
Natürlich ist das etwas langsamer, aber dafür sicherer und höchstwarscheinlich
schneller beim coden (man hat ja weniger Arbeit).
-
SirLant schrieb:
Natürlich ist das etwas langsamer
Ein assert() ist eine Überprüfung, die (normalerweise) beim Release ausgeschaltet wird -> nicht langsamer. boost::array und viele Pointer-Wrapper haben keinen Overhead verglichen mit dem rohen Original. Dafür machen std::auto_ptr, boost::scoped_ptr und Konsorten das Programm wesentlich sicherer, indem sie nur die gerade nötigen Operationen erlauben und dann auch vereinfachen.
-
ah...alles klar...jetzt bin ich wieder ein wenig schlauer
danke!
-
SirLant schrieb:
was bedeutet disjunktiv?
und-terme mit oder-verknüpfung
-
Findet ihr nicht, ihr zieht den Thread ein wenig weit, dafür, dass Jenni sich nicht wieder gemeldet hat? ^^
-
nein.