Philosophiefrage: Break in C

Tapio Bearking

Level-1
Beiträge
49
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forum,

ich habe mal eine Philosophiefrage betreffend den Befehl "break" in C.

Zuerst, er ist möglich und auch definiert aber meines Erachtens nach, sollte man, wenn möglich diesen Befehl nicht verwenden, da es ein Sprung quer durch den Quellcode ist. Deswegen sollte man break nur in Verbindung mit switch/case verwenden.

Man kann Break also jederzeit benutzen um Schleifen zu verlassen, aber ich z.B. habe dabei die berühmt berüchtigten Bauchschmerzen das es irgendwann einmal schief geht.

Wie steht ihr zu dem Kommando break?

Nachtrag: Plattform auf dem das ganze laufen soll ist ein netX500
 
Zuletzt bearbeitet:
Was hast du gegen break? Da wird nicht quer durch das Programm gesprungen, sondern:

Diese Anweisung ermöglicht den Abbruch von for, while, do ... while Zyklen sowie switch Anweisungen. Das Programm wird mit der ersten Anweisung nach dem Zyklus bzw. der Fallauswahl fortgestetzt.

Das ist absolut nachvollziehbar und auch sinnvoll.

Nicht zu Verwechseln mit der berühmten GoTo-Anweisung aus Basic ;)!
 
@Ralle: Ich hatte es anders gelernt und da waren break (außer im switch/case) und das goto (gibt es auch im C) "No go"s. Wenn man darauf angwiesen ist, eine for Schleife vor ihrem eigentlichen Ende (Limit eines Zählers) zu verlassen, soll man die Schleife entsprechend aufbauen, nämlich mit einem do...while(condition).
 
Gotos sind hier im Code auch massenweise verstreut *schauder*

ich wars nicht *pfeif*

also um nochmal zum break zu kommen ... wenn es ordentlich dokumentiert ist, ist es nachvollziehbar und damit geht keine gefahr mehr davon aus. eine vernünftige schleife natürlich, macht ein break überflüssig, aber das ist wie in allen programmiersprachen, man kann viele konstrukte durch andere ersetzen - muß man manchmal sogar um laufzeiten einhalten zu können oder den speicherkonventionen zu genügen :rolleyes:
 
da hab ich grad abi gemacht ... keine ahnung ... besoffen aufm "lern"-hügel? :rolleyes:

Ne, ne 4L, du hast doch nicht mal die HS geschafft *ROFL*!
Ich tippe auf Kindergarten "Große Gruppe".

Wieso break ordentlich dokumentieren? Ist doch eindeutig, was nach break passiert. Braucht man übrigens doch recht häufig, wenn man Listen oder Datenbanken schrittweise durchsucht und, nachdem man einen Treffer hat, die Suche abbrechen möchte.
 
Wieso break ordentlich dokumentieren?
weil man grundsätzlich code ordentlich dokumentieren sollte! ;)

Die break Anweisung steht irgendwo im Schleifenrumpf meist in Verbindung mit einer if Abfrage. Läuft das Programm in sie hinein, bricht sie die Schleife ab. Stößt man im bei der Abarbeitung der Schleife auf eine break Anweisung wird die Schleife ohne weiteres verlassen und das Programm danach vortgesetzt. Sinn der break Anweisung ist es also, die Schleife abzubrechen, wenn ein bestimmter Zustand eintritt, ohne eine Orgie von if ... else... Abfragen einbauen zu müssen.

ich find break nicht verwerflich PUNKT

achso: @ralle: ja nee, is klar biene!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Auch ich finde break nicht nur nützlich sondern sinnvoll. Dies entspricht vom Prinzip her ja auch dem __leave in einem __try-block. Und dies sieht sogar mein Freund Bill gern ;-).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
weil man grundsätzlich code ordentlich dokumentieren sollte! ;)
Mir ist selbsterklärender Code lieber als irgendwelche Wischi-Waschi-Kommentare, die nur deswegen hingeschrieben werden, weil halt Kommentare drin sein müssen. Eine vernunftige Namensgebung bei Funktionen, Typen, Variablen und Konstanten ist da oft wesentlich hilfreicher und leider wesentlich seltener, als manch nichtssagende Prosa in Kommentaren, die mehr verwirrend als erklärend wirken.

Was den break angeht, der ist nichts Negatives und IMHO mit einem goto absolut nicht zu vergleichen, sonst dürfte man in C-Funktionen den return auch nur noch als letzte Anweisung in einer Funktion zulassen, das wäre dann in etwa das Gleiche. Der break dient ja ganz einfach dazu, eine Schleife an einer beliebigen Position innerhalb der Schleife strukturiert zu verlassen, ist also eigentlich eine Erweiterung der "guten" Strukturelemente einer Hochsprache. Ohne Einsatz von break wäre oft viel unübersichtlicher Code notwendig, um das gleiche Ergebnis zu bekommen.


Gruß aus Narvik
Axel
 
Mir ist selbsterklärender Code lieber als irgendwelche Wischi-Waschi-Kommentare, die nur deswegen hingeschrieben werden, weil halt Kommentare drin sein müssen. Eine vernunftige Namensgebung bei Funktionen, Typen, Variablen und Konstanten ist da oft wesentlich hilfreicher und leider wesentlich seltener, als manch nichtssagende Prosa in Kommentaren, die mehr verwirrend als erklärend wirken.

na aber, wer wird denn hier über gute prosa schimpfen?
dass varibalen nach dem schema 'typ in einem buchstaben''NameMitFunktion' benannt werden ist doch wohl klar und das funktionen nicht "test" oder "xxx" heißen sollten, sondern ähnlichen konventionen, zumindest wenn man es gut machen will, wie die variablen unterliegen sollten auch jedem >pascal-programmierer bekannt sein ... und wenn man sich selberst dazu zwingt, dann kann man das ganze, mit der prosa(!) auch nach ein paar wochen noch verstehen :rolleyes: ... aber ich werde OT und ich habe in einem anderen beitrag von dir, es war sogar eine umfrage, glaub ich, heut gelesen, dass man dann ein neues thema erstellen soll ... das find ich in dem zusammenhang aber grad bestuhlt :cool:
 
Der break dient ja ganz einfach dazu, eine Schleife an einer beliebigen Position innerhalb der Schleife strukturiert zu verlassen
Eben genau das ist das Problem. Meiner (und scheinbar nur meiner, aber was soll's, ich war schon immer ein Einzelkämpfer) Meinung nach wird diese Struktur durch ein Break eben zerbrochen, zwar nicht sehr, aber sagen wir mal, sie hat einen Knacks, der eventuell weiter bricht.
Nehmen wir mal ein einfaches For(Start; Abbruchbedingung; xyz++); Wenn ich z.B. eine Schleife vorzeitig verlassen will, ist für ein break kein bedarf, da ich die Abbruchbedingung ja in dem Schleifenkopf, bzw. Schleifenende bei do/while() untergebracht habe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich oute mich als Gerne-Breaker

Wenn Du ein vorzeitiges Ende einer Schleife brauchst, kannst Du entweder ein Flag setzen und dieses als Abbruchbedingung nehmen, oder Du schreibst kurz "break".

Ob das break jetzt den Code unübersichtlich macht?
 
Eben genau das ist das Problem. Meiner (und scheinbar nur meiner, aber was soll's, ich war schon immer ein Einzelkämpfer) Meinung nach wird diese Struktur durch ein Break eben zerbrochen, zwar nicht sehr, aber sagen wir mal, sie hat einen Knacks, der eventuell weiter bricht.
Nehmen wir mal ein einfaches For(Start; Abbruchbedingung; xyz++); Wenn ich z.B. eine Schleife vorzeitig verlassen will, ist für ein break kein bedarf, da ich die Abbruchbedingung ja in dem Schleifenkopf, bzw. Schleifenende bei do/while() untergebracht habe.

Irre ich, oder ist das, was hier als "Abbruchbedingung" im Schleifenkopf deklariert wurde nicht in Wirklichkeit die "Schleifenausführbedingung" ??? :D
 
Zurück
Oben