Anfängerfrage zu "break"-Schleifenunterbrechung

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
derkleinemann
Beiträge: 3
Registriert: Di Jul 05, 2011 10:24 pm

Anfängerfrage zu "break"-Schleifenunterbrechung

Beitrag von derkleinemann » Di Jul 05, 2011 10:37 pm

Hallo erstmal,
ich bin gerade dabei mir C beizubringen und habe euer C-Tutorial gefunden.
Dazu hätte ich nun folgene Frage/folgendes Problem ...

Ich versteh nicht so recht wie sich ein "break" verhält.

Wo genau springt es hin ? Also was überspringt es alles?

Wäre cool wenn ihr mir vielleicht mit dem einen oder anderen Beispiel weiterhelfen könntet.
Habs mit Google versucht allerdings hat das nur noch mehr verwirrung gestiftet :roll:

Gruß vom kleinen

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Anfängerfrage zu "break"-Schleifenunterbrechung

Beitrag von nufan » Di Jul 05, 2011 10:51 pm

Hallo :)
"break" springt ans Ende der aktuellen Schleife und beendet diese. Hier ein (zugegebenermaßen nicht besonders sinnvolles) Beispiel:

Code: Alles auswählen

#include <stdio.h>

int main()
{
  printf( "Vor der Schleife\n" );
  int i;
  for( i = 0; i < 5; i++ )
  {
    printf( "i: %d\n", i );
    if( i == 3 )
    {
      printf( "Vor dem break\n" );
      break;
      printf( "Nach dem break\n" );
    }
  }
  printf( "Nach der Schleife\n" );
  return 0;
}
Ausgabe:
Vor der Schleife
i: 0
i: 1
i: 2
i: 3
Vor dem break
Nach der Schleife
Vielleicht fällt jemanden ein besseres Beispiel ein, aber ich denke das Prinzip ist damit gut ersichtlich ;)

canlot
Beiträge: 393
Registriert: Di Mär 08, 2011 11:01 pm
Wohnort: NRW

Re: Anfängerfrage zu "break"-Schleifenunterbrechung

Beitrag von canlot » Di Jul 05, 2011 10:55 pm

mit break; kannst du z.B. aus aus der aktuellen Schleife rausspringen.
BS.

Code: Alles auswählen

while(1) //Endlosschleife
{
  printf("Nur das wird ausgegeben");
  break;  // raus aus der Schleife
  printf("Das wird niemals ausgegeben");
  // Die Schleife wird nicht wiederholt
}
break kann aber noch in anderen Bereichen eingesetzt werden z.B.
http://www.proggen.org/doku.php?id=c:switch
wenn du bei "switch" break vergisst dann wird alles nachfolgende mit ausgeführt, dies kann aber auch sinnvoll genutzt werden.
Unwissenheit ist ein Segen

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Anfängerfrage zu "break"-Schleifenunterbrechung

Beitrag von Xin » Di Jul 05, 2011 11:17 pm

derkleinemann hat geschrieben:Ich versteh nicht so recht wie sich ein "break" verhält.
Könntest Du genauer beschreiben, was Du nicht verstanden hast, bzw. was Du verstanden hast.
Dann kann ich das Tutorial vielleicht anpassen, so dass man es besser versteht.
derkleinemann hat geschrieben:Wo genau springt es hin ? Also was überspringt es alles?
Jeder Schleife folgt ein Anweisungsblock (also { Anweisungen }). Mit break springt man hinter die schließende, geschweifte Klammer.
derkleinemann hat geschrieben:Wäre cool wenn ihr mir vielleicht mit dem einen oder anderen Beispiel weiterhelfen könntet.
Dafür ist das Forum da. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

derkleinemann
Beiträge: 3
Registriert: Di Jul 05, 2011 10:24 pm

Re: Anfängerfrage zu "break"-Schleifenunterbrechung

Beitrag von derkleinemann » Mi Jul 06, 2011 3:42 pm

*Kopf_auf_Tisch*

Oh man hey, fragt mich nicht warum ich das nicht verstanden habe ...
Ich hab immer die Angewohnheit eine weitere Quelle aufzusuchen, wenn ich ein Problem habe und irgendwie hat es da nur noch geknallt in meinem Kopf, keine Ahnung warum ich nicht verstanden hatte das ...

break = Sprung hinter nächste }

...
Danke für eure Beispiele und Antworten!
Xin hat geschrieben:Könntest Du genauer beschreiben, was Du nicht verstanden hast, bzw. was Du verstanden hast.
Dann kann ich das Tutorial vielleicht anpassen, so dass man es besser versteht.
Das einzige das mir aufgefallen ist, ist das auf ein paar Seiten, die ALLER ALLER LETZTE Zeile nicht gesehen werden kann, da dort eure (ich nenn das jetzt einfach mal so) "Navigationsleiste" im Weg ist. Ansonsten ... echt TOP! ich bin nun beim 2. Versuch mir C beizubringen und beim letzten mal bin ich gescheitert weil ich immer dumme Fragen habe und nur ungenaue oder unbefriedigende Antworten gefunden habe. Das ist halt wie wenn man einem Kind das lesen/schreiben beibringt *hust* und irgendwann hatte ich dann die Motivation verloren und das ganze hat sich im Sand verlaufen.

ich danke euch! und seid euch im klaren, ich komm wieder :P

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Anfängerfrage zu "break"-Schleifenunterbrechung

Beitrag von Xin » Mi Jul 06, 2011 3:54 pm

derkleinemann hat geschrieben:*Kopf_auf_Tisch*

Oh man hey, fragt mich nicht warum ich das nicht verstanden habe ...
Ich hab immer die Angewohnheit eine weitere Quelle aufzusuchen, wenn ich ein Problem habe und irgendwie hat es da nur noch geknallt in meinem Kopf, keine Ahnung warum ich nicht verstanden hatte das ...

break = Sprung hinter nächste }
Nein, nicht hinter die nächste }, sondern die erste }, die eine Schleife abschließt. Schließt die Klammer einen if- oder else-Block ab, so zählt diese Klammer für break nicht!
derkleinemann hat geschrieben:
Xin hat geschrieben:Könntest Du genauer beschreiben, was Du nicht verstanden hast, bzw. was Du verstanden hast.
Dann kann ich das Tutorial vielleicht anpassen, so dass man es besser versteht.
Das einzige das mir aufgefallen ist, ist das auf ein paar Seiten, die ALLER ALLER LETZTE Zeile nicht gesehen werden kann, da dort eure (ich nenn das jetzt einfach mal so) "Navigationsleiste" im Weg ist.
Ich glaube, die stört echt ;-D

Wir arbeiten dran. ^^
derkleinemann hat geschrieben:Ansonsten ... echt TOP! ich bin nun beim 2. Versuch mir C beizubringen und beim letzten mal bin ich gescheitert weil ich immer dumme Fragen habe und nur ungenaue oder unbefriedigende Antworten gefunden habe. Das ist halt wie wenn man einem Kind das lesen/schreiben beibringt *hust* und irgendwann hatte ich dann die Motivation verloren und das ganze hat sich im Sand verlaufen.
Dumme Fragen sind hier absolut in Ordnung, dumme Antworten nicht.
proggen.org ist dafür da, damit man hier programmieren lernen und verstehen kann. Dafür geben sich hier einige Autoren viel Mühe, um das Wiki verständlich aufzubauen und jede "dumme" Frage hilft dabei, es noch verständlicher zu machen.
Die Mühe Tutorials zu schreiben lohnt nicht, wenn man die Leute dann mit unbefriedigenden Antworten hängen lässt.
derkleinemann hat geschrieben:ich danke euch! und seid euch im klaren, ich komm wieder :P
Viel Erfolg beim 2. Versuch. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

derkleinemann
Beiträge: 3
Registriert: Di Jul 05, 2011 10:24 pm

Re: Anfängerfrage zu "break"-Schleifenunterbrechung

Beitrag von derkleinemann » Mi Jul 06, 2011 3:58 pm

Xin hat geschrieben:Nein, nicht hinter die nächste }, sondern die erste }, die eine Schleife abschließt. Schließt die Klammer einen if- oder else-Block ab, so zählt diese Klammer für break nicht!
Das meine ich doch, aber gut das du das klar stellst!
Xin hat geschrieben:Viel Erfolg beim 2. Versuch. :-)
Danke :-)

Antworten