Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

05.05.2010, 18:15

in diesem fall gibt es keinen unterschied zwischen break und return und es ist beides schlecht. wie gesagt, es ist keine perfekte lösung. das war auch nicht mein ziel.
Ja in diesem Fall ist es vielleicht das Gleiche, aber wozu falsch machen? Es geht auch nicht darum eine gute Lösung zu posten, aber wenn er jetzt z.B. deine Lösung benutzt und später etwas freigeben will, landet er wieder hier im Forum, nachdem er ein paar Stunden entnervt vor dem Compiler saß.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

Mischu

Frischling

Beiträge: 21

Wohnort: Olten (Schweiz)

Beruf: Javaentwickler (swissinfo.ch)

  • Private Nachricht senden

12

05.05.2010, 19:02

also, du beendest ja sdl in der schleife...wieso benutzt du den zustand von sdl nicht als condition für die while schlaufe? Kenn zwar sdl ned...aber du kannst doch sicher prüfen ob die engine beendet wurde

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

05.05.2010, 22:00

@insane: durch fehler lernt man und die benutztung von break; ist auch eine gute möglichkeit einen schwer zu findenden fehler zu produzieren. wenn es nicht der fehler ist, ists ein anderer(falls IAmRegistered einer der user sein sollte der nach 20minuten suche schon nen thread eröffnet). daher die empfehlung sich mit etwas einfacheren zu beschäftigen. reines c++ ist schon schwer genug für den anfang.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

14

05.05.2010, 22:45

D.h. wir geben jetzt einfach allen falsche Antworten, damit sie Fehler machen und draus lernen???
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

15

05.05.2010, 23:05

break ist genau so falsch wie return. was ist daran so schwer zu verstehen?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

16

05.05.2010, 23:17

Was ist an break falsch? Mit return springt man ans Ende der Funktion, d.h. wenn noch etwas freizugeben ist, wird es nicht freigegeben. Mit break springt man aus der Schleife. Es mag in diesem Fall egal sein, aber die Verwendung von return ist hier definitiv falsch. break ist hier vollkommen richtig. Ich weiß nicht was du daran jetzt nicht verstehst...
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

17

05.05.2010, 23:45

break sollte man allgemein meiden. das return kommt wenn möglich ans ende von der funktion.
ob ich jetzt den einen oder den anderen stilbruch begehe ist egal.
das ist nur ein beispiel zu dem ich sogar gesagt hab, dass es schlecht ist. es sollte den fehler zeigen. break wäre tatsächlich etwas besser. ich war zu faul nachzusehen wie genau der befehl heißt(ich brauch ihn ja nie). im endeffekt ist es aber absolut egal. ich bin mir sicher er wird früher oder später selbst herausfinden wie es am besten geht.

kann es sein, dass du es nicht ertragen kannst den fehler übersehen zu haben? das hier ist doch kein wettbewerb. oder willst du dich für meine fehlersuche rächen? denn such dir bitte einen richtigen fehler und nicht so einen scheiss.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

18

06.05.2010, 00:29

Zitat

break sollte man allgemein meiden. das return kommt wenn möglich ans ende von der funktion.
ob ich jetzt den einen oder den anderen stilbruch begehe ist egal.


Solche (und andere) Generalisierungen sind eh völlig unsinnig. break und return sind weder falsch noch richtig. Man kann sie benutzen und wenn man eine Begründung hat wieso man das eine nutzt und nicht das andere, dann ist es Ok. Das gilt auch bei goto. Wenn ich finde, dass break, goto, return o.ä. an einer Stelle angebracht sind, dann ist das nicht falsch.
Viele solche Einteilungen kommen von früheren Zeiten, wie z.B das mit dem return am Ende der Funktion kommt wohl von der strukturierten Programmierung und wurde wohl auch in C weit gebraucht, weil man sonst Ressourcen nicht gescheit freigeben kann. Das ist aber beides Geschichte und sollte einen nicht daran hindern gut lesbaren/verständlichen Code zu erzeugen.

Viel eher als in gut und böse einzuteilen sollte man sich klar machen, wo die Unterschiede sind und Alternativen abwägen, wenn man etwas macht.
Dazu kann man sich dann noch Design Dinge überlegen und oft erübrigen sich dann weitere Überlegungen, weil man oft das ganze einiges eleganter machen kann ohne ein solches Mittel überhaupt brauchen zu müssen.

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

19

06.05.2010, 10:27

Zitat
break sollte man allgemein meiden. das return kommt wenn möglich ans ende von der funktion.
ob ich jetzt den einen oder den anderen stilbruch begehe ist egal.


Solche (und andere) Generalisierungen sind eh völlig unsinnig. break und return sind weder falsch noch richtig. Man kann sie benutzen und wenn man eine Begründung hat wieso man das eine nutzt und nicht das andere, dann ist es Ok. Das gilt auch bei goto. Wenn ich finde, dass break, goto, return o.ä. an einer Stelle angebracht sind, dann ist das nicht falsch.
Sehe ich auch so, break und return haben einfach völlig andere Zwecke. Was das nicht freigeben von Speicher anbelangt, das hier erwähnt wurde, ist das dann eher ein Problem von unsauberem Code, denn dafür bietet C++ genug Möglichkeiten via AutoPointer, Auto-Mutex-Locks/Unlocks etc. pp, dass so etwas eigentlich nur in seltenen Ausnahmefällen ein Problem sein sollte.
Über den Daumen würde ich sagen, dass... von Rückgabewerten mal ab... return halt sehr häufig als Pre-Check eingesetzt wird, sprich, dass die Parameter der Funktion bzw. die vorhandenen Daten eine saubere Ausführung erlauben, z.Bsp. Vektor-Länge != 0 in einem Normalize, während ich break wohl am häufigsten dort einsätze, wenn ich in einer Liste den ersten passenden Treffer für eine bestimmte Bedingung suche, also a la int index = -1; for( int i ... ) { if( object matches condition ) { index = i; break; } } if( index!=-1 ) ...

LG
Alyx

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Alyx« (06.05.2010, 13:38)


20

06.05.2010, 10:44

Ich wollte hier doch niemanden angreifen oder ähnliches, ich wollte nur klar stellen, das return an dieser Stelle zu Problemen führen kann. Vielleicht sollte ich nochmal für alle verdeutlichen, was ich konkret meine:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
int main() 
{ 
    while(true) 
    { 
        if(KeyPressed(ESC)) 
            return 0; 
    } 

    SachenFreigeben(); // <- wird übersprungen 
}


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
int main() 
{ 
    while(true) 
    { 
        if(KeyPressed(ESC)) 
            break; 
    } 

    // Hier wird weitergemacht 
    SachenFreigeben(); // <- wird nicht übersprungen 

    return 0; 
}
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

Werbeanzeige