kostenloser Webspace werbefrei: lima-city


break; - Veraltet?

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    m**********n

    Hallo LC-Community,

    meine Informatiklehrerin (die wollt ihr nicht kennenlernen, außerdem hat sie eig. keine Ahnung :D) hat meinen Programmcode bemänglet, dass ich das Schlüsselwort break in einer for-Schleife verwendet habe, da break veraltet ist und nur noch ein Überbleibsel aus Basic-Zeiten sei.

    Ist das wirklich so, oder ist es ganz legitim, break zu verwenden?

    Bedanke mich für Antworten

    mfg

    Mator
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich halte Dinge wie break und continue für sehr wertvolle Werkzeuge, um Sonderfälle abzufangen. Von daher sehe ich das keineswegs als veraltet an. Genausogut könnte man switch-Statements als veraltet ansehen, denn das sind auch nur etwas hübschere gotos.

    Wenn das so veraltet ist, dann soll sie dir zeigen, wie man es ohne break macht. Sie ist schließlich deine Lehrererin und ist dafür verantwortlich dir zu zeigen, wie man es besser macht. Und dann kannst du gerne entscheiden, ob die Lösung deiner Lehrerin hübscher/lesbarer ist, als wenn man einen Sonderfall einfach mit break behandelt.
  4. Wenn du break in einem if verwendest, könntest du diese Bedingung auch in den Schleifenkopf schreiben. Es ist in der Tat ein eher schlechter Stil. Break ist eigentlich nur noch in Switch-case gern gesehen und solltest du in einem öffentlichen Projekt mit proggen solltest du es unterlassen, ansonsten machst du dir wohl nur Feinde, denn es macht den Sourcecode höchstwahrscheinlich schwer leserlich. Break also nur verwenden, wenn du weißt, was du tust.
    Würde mich aber mal der Sourcecode der Schleife interessieren.
    €dit da bladehunter schneller war: Continue finde ich aber auch manchmal ganz nützlich, da die Alternative ein if um den gesamten weiteren Schleifeninhalt ist.

    Beitrag zuletzt geändert: 22.4.2011 9:58:10 von reimann
  5. Autor dieses Themas

    m**********n

    Danke für die SEEEHHHR schnellen Antworten :D

    Wenn du break in einem if verwendest, könntest du diese Bedingung auch in den Schleifenkopf schreiben.


    Also du meinst, man sollte das so machen:
    for(int i = 0; i < var && [BEDINGUNG]; i++)
    {/* Anweisungen */}


    Darf man das denn so machen?

    mfg

    Mator
  6. Also meine persönliche Ansicht dazu ist: Ich finde es häßlich und hätte lieber ein separates break;

    Und wenn man die zusätzliche Abbruchbedingung im Schleifenkopf versteckt, überliest man sie relativ leicht. Da investiere ich lieber 1-2 zusätzliche Zeilen im Schleifenkörper, um den Code lesbarer zu gestalten.

    Beitrag zuletzt geändert: 22.4.2011 10:09:07 von bladehunter
  7. Autor dieses Themas

    m**********n

    Ich finde nämlich auch, dass das nicht wie eine normale for-Schleife aussieht. Danke für die Antworten.

    mfg

    Mator
  8. Das kommt drauf an welche Sprache du benutzt, aber in Java und C++ ja. In einem Struktogramm hingegen leider nicht, obwohl selbst da meine Lehrerin einen Aussprung (break) verboten hat. Ich bin also auch betroffen davon.:wink:

    @bladehunter: Ja naja, aber ich finde es schöner gleich zu Anfang zu wissen, warum etwas aus einer Schleife springt, als in endlosen ifs alle breaks rauszusuchen. In einer kleinen Schleife mag das noch gehn, aber ab 100 Zeilen Schleifeninhalt mit mindestens 20 ifs würde ich den Progger am liebsten erwürgen, köpfen und vierteiln. Höchstes Ziel ist immer Leserlichkeit und da kann mans nicht jedem recht machen, aber man sollte schon darauf achten, dass jemand der es liest nicht mit 50 Parametern debuggen muss, um den Ablauf der Schleife zu verstehn. Ein generelles Verbot kann man aber nicht aussprechen, da ansonsten diese Funktion schon aus der Spezifikation entfernt worden wäre.

    @mator-kaleen:
    Es ist ja nicht so, als ob es nur for-Schleifen geben würde. Kannst auch gleich eine Zählvariable benutzen, aber das passt wohl auch nicht in die Ästhetik

    Beitrag zuletzt geändert: 22.4.2011 10:12:42 von reimann
  9. Autor dieses Themas

    m**********n

    Ich kenne immer ein gutes Mittel: Kommentare

    Ich denke, es ist am einfachsten, einfach ein paar Zeilen Kommentar vor eine schleife zu schreiben, um so etwas gleich klar zu stellen.

    @reimann
    Außerdem: im Bedingungsteil einer Schleife 20 Bedingungen unterbringen? Das sieht doch auch nicht gut aus und so kann man wenigsten irgendwo ausgeben, an welchem if man aus der Schleife raus ist. Das kannst du im Bedingungsteil der Schleife nicht.
  10. reimann schrieb:
    @bladehunter: Ja naja, aber ich finde es schöner gleich zu Anfang zu wissen, warum etwas aus einer Schleife springt, als in endlosen ifs alle breaks rauszusuchen. In einer kleinen Schleife mag das noch gehn, aber ab 100 Zeilen Schleifeninhalt mit mindestens 20 ifs würde ich den Progger am liebsten erwürgen, köpfen und vierteiln. Höchstes Ziel ist immer Leserlichkeit

    Vollkommen richtig. Ich denke bei solchen Breaks an Bedingungen, die sehr nah am Anfang des Schleifenkörpers getestet werden. Dass irgendwo hinten im Schleifenkörper noch ein break kommt, ist in der Tat schlechter Stil.

    Unabhängig davon sollte man immer versuchen seine Blöcke möglichst kurz zu halten und größere Teile in Funktionen auslagern, sofern es Sinn ergibt.
  11. reimann schrieb:
    Wenn du break in einem if verwendest, könntest du diese Bedingung auch in den Schleifenkopf schreiben. Es ist in der Tat ein eher schlechter Stil. Break ist eigentlich nur noch in Switch-case gern gesehen und solltest du in einem öffentlichen Projekt mit proggen solltest du es unterlassen, ansonsten machst du dir wohl nur Feinde, denn es macht den Sourcecode höchstwahrscheinlich schwer leserlich. Break also nur verwenden, wenn du weißt, was du tust.
    Ich sehe das auch so, dass der Einsatz eines break; eher ein schlechter Programmierstil ist. Sollte also wirklich nur in Switch-Anweisungen (oder Case, je nach Programmiersprache) und Ausnahmefällen verwendet werden.

    mator-kaleen schrieb:
    Danke für die SEEEHHHR schnellen Antworten :D

    Wenn du break in einem if verwendest, könntest du diese Bedingung auch in den Schleifenkopf schreiben.


    Also du meinst, man sollte das so machen:
    for(int i = 0; i < var && [BEDINGUNG]; i++)
    {/* Anweisungen */}


    Darf man das denn so machen?

    mfg

    Mator

    In so einem Fall würde ich von einer FOR-Schleife aufgrund der schwereren Lesbarkeit abraten und dafür eine WHILE- oder DO-WHILE-Schleife einsetzen.

    Beitrag zuletzt geändert: 22.4.2011 10:22:15 von wagnerm
  12. Ähm naja bei 20 Bedingungen, warum die Schleife vorzeitig verlassen werden soll, sollte man vielleicht das Design nochmal überdenken. Ich streite wie auch bei break nicht ab, dass es solche Situationen gibt, aber ich persönlich bin noch nie über 4 Bedingungen hinausgekommen. Es gab icher schon ifs mit mehr Bedingungen, aber so einen Schleifenkopf (auch (do) while eingeschlossen) habe ich noch nie gesehen.:eek:
    Vllt hat da bladehunter ja mehr gesehn.

    @bladehunter:
    Ja, aber da ist sicher auch das Problem, dass diese Inhalte bis dahin nicht gelehrt wurden und deshalb sich die Schüler oftmals schon nen Kopf machen, um Dinge die dann später eigentlich nie auftreten werden. Merke ich auch in meiner Ausbildung. Da sind Unterprozeduren oder Funktionen noch nicht dran gewesen und einige verstehen deshalb nicht, warum manches so oder so gemacht werden muss/soll.
  13. Autor dieses Themas

    m**********n


    reimann schrieb:
    @bladehunter:
    Ja, aber da ist sicher auch das Problem, dass diese Inhalte bis dahin nicht gelehrt wurden und deshalb sich die Schüler oftmals schon nen Kopf machen, um Dinge die dann später eigentlich nie auftreten werden. Merke ich auch in meiner Ausbildung. Da sind Unterprozeduren oder Funktionen noch nicht dran gewesen und einige verstehen deshalb nicht, warum manches so oder so gemacht werden muss/soll.


    Ich bin zwar Schüler und das stimmt zwar, aber:
    1. Machen wir nichts das so komplex ist, dass das nicht nötig
    2. Haben wir Funktionen schon gemacht
    3. Habe ich einen Nebenjob in C#

    Das Problem ist eher die Lehrerin: Die mach alles genauestens aus dem Buch und lässt sich nicht auf andere Ideen ein. Das ist das Problem. Die hat in meinem Code nur das Schlüsselwort break gesehen -> "Break ist veraltet. Der Code ist schlecht.". Mehr hat sie sich gar nicht angeschaut.

    @wagnern
    Das könnte u.U. heißen, dass man am Ende mit i++ noch höher zählen muss. Darüber könnte man nun auch diskutieren und ich denke, dass ich jetzt eineige Ideen bekommen habe.
  14. mator-kaleen schrieb:
    [...]@wagnern
    Das könnte u.U. heißen, dass man am Ende mit i++ noch höher zählen muss.[...]
    Hmm ... wie meinst du das? Die WHILE-Schleife ist genauso kopfgesteuert wie die FOR-Schleife...
  15. reimann schrieb:
    @bladehunter:
    Ja, aber da ist sicher auch das Problem, dass diese Inhalte bis dahin nicht gelehrt wurden und deshalb sich die Schüler oftmals schon nen Kopf machen, um Dinge die dann später eigentlich nie auftreten werden. Merke ich auch in meiner Ausbildung. Da sind Unterprozeduren oder Funktionen noch nicht dran gewesen und einige verstehen deshalb nicht, warum manches so oder so gemacht werden muss/soll.

    Ich denke das Problem ist weniger dass gewisse Themen nicht behandelt wurden, sondern dass die Problematik mit bestimmten Techniken nicht deutlich genug wird. Wenn du nur nen 0815-Informatik-Kurs hast, der nicht über 300-Zeilen-Programme hinausgeht, dann entstehen viele Probleme aus der Praxis erst gar nicht, da die entsprechende Komplexität nicht gegeben ist.

    Daher wäre es wahrscheinlich ratsam die Schüler mit umfangreichem Quellcode (von jemand anderem) zu konfrontieren, damit sie kapieren, welche Techniken für das Verständnis hinderlich sind. Ansonsten ist das alles nur theoretisches Geschwafel.

    Achja, die for-Schleifen, die mir so über den Weg laufen haben selten mehr als eine kopfgesteuerte Abbruchbedingung.

    @mator-kaleen: Ich kenne deine Lehrerin (zum Glück?) ja nicht. Aber wenn sie sowas sagt, wie "Break ist veraltet, der Code ist schlecht", dann solltest du eben Rückfragen stellen und sie soll dir genau erklären, was daran problematisch ist.
  16. Das Problem ist, dass wir alles auch erst in Struktogrammen machen müssen und die sind sehr platzintensiv, wenn man >300 Zeilen erreichen will.
    Das Problem ist aber, dass in den Prüfungen auch nur Struktogramme drankommen und demzufolge wird es nie wirklich komplex. Wir Anwendungsentwickler machen deshalb auch immermal so unsere Späßchen und versuchen den anderen n bisschen Hilfe zu geben. (Anwendungsentwickler und Systemadministratoren werden größtenteils gemeinsam unterrichtet, was Probleme in der Programmierung zur Folge hat, lustigerweise aber nicht andersrum in dem Computerbasteln:lol: )

    Und ich meinte auch generell andere Schleifen bzw. auch Bedingungen für break. Mich würde es wundern, wenn eine Schleife, ob nun im Kopf/Fuß oder per if und break mehr als 5 Abbruchbedingungen hat.
  17. Autor dieses Themas

    m**********n

    @wagnerm
    Bei einer for-Schleife geht es ja meistens darum einen Counter zu haben. Also muss man dann z.B. ein i++; am Edner der Schleife anhängen.


    @bladehunter
    Daher wäre es wahrscheinlich ratsam die Schüler mit umfangreichem Quellcode (von jemand anderem) zu konfrontieren, damit sie kapieren, welche Techniken für das Verständnis hinderlich sind. Ansonsten ist das alles nur theoretisches Geschwafel.


    Klar wäre das sinnvoll, nur muss man die Grundlagen von Java erst mal verstehen, bevor man anfangen, Quellcode von anderen Leuten anzuschauen. Das Problem ist, unsere Lehrerin macht das alles wortwörtlich aus dem Buch, d.h. das versteht sowieso niemand, der keine Erfahrung im Programmieren hat.

    @mator-kaleen: Ich kenne deine Lehrerin (zum Glück?) ja nicht. Aber wenn sie sowas sagt, wie "Break ist veraltet, der Code ist schlecht", dann solltest du eben Rückfragen stellen und sie soll dir genau erklären, was daran problematisch ist.


    Wollte ich auch, aber sie hat sich meinen Code erst in der letzten Minute vor Stundenende angeschaut. Außerdem geht sie nicht auf die Fragen der Schüler richtig ein.
  18. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    break benutze ich vor allem bei erweiterten for-Schleifen. Wenn ich die Zählvariable nicht brauche, ist das die imho eleganteste Lösung:

    Point x5y3Point;
    for(Point p : points)
        if(p.x ==5 && p.y == 3){
            x5y3Point = p;
            break;
        }

    Und nein, ein blöderes Beispiel fällt mir grad nun wirklich nicht ein.
  19. mator-kaleen schrieb:
    @bladehunter
    Daher wäre es wahrscheinlich ratsam die Schüler mit umfangreichem Quellcode (von jemand anderem) zu konfrontieren, damit sie kapieren, welche Techniken für das Verständnis hinderlich sind. Ansonsten ist das alles nur theoretisches Geschwafel.


    Klar wäre das sinnvoll, nur muss man die Grundlagen von Java erst mal verstehen, bevor man anfangen, Quellcode von anderen Leuten anzuschauen.

    Java ist meiner Ansicht nach sowieso total ungeeignet für den Einstieg in die Programmierung. Java verwendet zu viele abstrakte Konzepte, die für kleinere Programme (die typisch für den Informatikunterricht sind) mehr hinderlich als hilfreich sind. Viel besser wäre zum Beispiel Lua.


    Das Problem ist, unsere Lehrerin macht das alles wortwörtlich aus dem Buch, d.h. das versteht sowieso niemand, der keine Erfahrung im Programmieren hat.

    Dann überrascht es mich auch nicht, dass sie nicht auf eure Fragen eingeht. Weißt du, ob sie überhaupt Informatik auf Lehramt studiert hat?
  20. Autor dieses Themas

    m**********n

    Nein, sie hat nicht auf Lehramt studiert. Und JAVA steht halt mal im Lehrplan... also kann man da nicht viel machen. LUA kennen die vom Kultesministerium halt nicht.
  21. Manche Lehrer fordern halt den Stil den sie im Kopf haben, weichst du von ihrem Muster ab, hast du nen "unsauberen" schreibstil.. ist mir schon oft genug passiert.. interessiert´ mich herzlich wenig... solange du nicht sitzenbleibst brauchts dich auch nicht kümmer..
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!