Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
21.05.2012, 12:54:30
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Einsteiger Forum
| | |-+  Schleifenfunktionen?
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Schleifenfunktionen?  (Gelesen 4403 mal)
Sniff
Newbie
*
Offline Offline

Beiträge: 33



« am: 28.03.2002, 16:29:50 »

Kann mir mal jemand die funktionen geben mit denen ich:
-aus einer Schleife springen kann
-zum nächsten schleifen durchlauf springen kann

Oh Ja und wie geht noch gleich eine Fussgesteuerte SChleife?
Gespeichert

while myPromilleWert<Besoffen do Inc(bier); while myPromilleWert<Besoffen do Inc(bier);
Rainer
Hero Member
*****
Offline Offline

Beiträge: 1666


WWW
« Antworten #1 am: 28.03.2002, 16:40:12 »

Auszüge aus der Hilfe

Zitat
Continue (Prozedur)

Die Prozedur Continue setzt die Programmausführung mit dem nächsten Durchlauf einer for-, while- oder repeat-Schleife fort.

Unit

System

Kategorie

Ablaufsteuerung

procedure Continue;

Beschreibung

Continue bewirkt, daß der nächste Durchlauf der for-, while- oder repeat-Anweisung ausgeführt wird.

Wird Continue außerhalb eines for-, while- oder repeat-Konstrukts aufgerufen, gibt der Compiler eine entsprechende Fehlermeldung aus.

Hinweis

In der Beschreibung der Prozedur Break erfahren Sie, wie Sie Schleifen und finally-Blöcke verlassen können.

----

Break (Prozedur)

Unit

System

Die Prozedur Break verläßt eine for-, while- oder repeat-Schleife.

Kategorie

Ablaufsteuerung

procedure Break;

Beschreibung

Break bewirkt, daß eine for, while oder repeat-Schleife verlassen und die Ausführung mit der nächsten Anweisung fortgesetzt wird.

Wird Break außerhalb eines for-, while- oder repeat-Konstrukts aufgerufen, gibt der Compiler eine entsprechende Fehlermeldung aus.

Hinweis

Mit Break können keine try..finally-Blöcke verlassen werden. Wenn Sie Break in einem try..finally-Konstrukt aufrufen, wird die Ausführung in der finally-Klausel fortgesetzt.
Also z.B. sowas
[font class=code style="background-color: transparent; border: none;"]var
  
i: Integer;
begin
  for 
i := 1 to do
  begin
    if 
i = 1 then Continue; 
//direkt zur 2 weiter
   
[/color]//aufhören
   
[/color]ListBox1.Items.Add(IntToStr(i));
  end;
end;
[/color][/font]
Gespeichert

MfG Rainer

end.
AndreasMascher
Gast
« Antworten #2 am: 28.03.2002, 21:01:55 »

ich sage dir einfach was ich alles kann okay?

Exit --] verlässt die procedure, function usw
break --] verlässt aktuelle schleife

du kannst auch ein label (innerhalb einer Procedure) deklarieren:

Procedure tuhwas;
var message : string;
label anfang, ende;
begin
  Anfang : ShowMessage('Du bist am Anfang');
  tuhwas;
  tuhnochwas;
  if ... then
  begin
     if ... then goto anfang else goto ende;
   end;

  Ende : ShowMessage ('Du bistam Ende ;-)');

end;

probier einfadch mal n bisschen aus... ist jetzt n bisschen unübersichtlich alles aber ich denke das geht
Gespeichert
marian19
Full Member
***
Offline Offline

Beiträge: 248



« Antworten #3 am: 28.03.2002, 22:24:57 »

frag mich nicht warum, aber viele Delphi programierer finden break und exit nicht besonders gut.
Ich habe immer blind angenommen das die ein guten grund haben und regel deshalb das meiste mit booleans.
ich kan nochmal nach fragen warum genau man break und exit (in gegenteil zu C++) besser nicht benutzen kan.
Gespeichert

Veni Vidi Vici
katjah
Sr. Member
****
Offline Offline

Beiträge: 280


129345904
WWW
« Antworten #4 am: 29.03.2002, 10:23:25 »

Man sollte sie nicht benutzen, weil das der Strukturierten Programmierung widerspricht.
Demnach darf eine Schleife oder eine Funktion nur einen Aussprungpunkt haben. Mit break oder exit produziert man aber mehrere Aussprungpunkte.
Gespeichert

Gruss Katja
AndreasMascher
Gast
« Antworten #5 am: 29.03.2002, 11:14:19 »

Zitat von: \"katjah\"

Demnach darf eine Schleife oder eine Funktion nur einen Aussprungpunkt haben. Mit break oder exit produziert man aber mehrere Aussprungpunkte.

das ist aber noch kein grund, der dagegen spricht!

//Unstrukturiert?
repeat
  //tuh was
  if abbruch then break;
until alles getutet;

//Strukturiert?
repeat
  //tuh was
until (alles getutet = true) or (abruch = true);

(abbruch : boolean, wenn auf den abbrechen button gedrückt wird = true)


Katja, was ist daran nicht strukturiert?
Gespeichert
marian19
Full Member
***
Offline Offline

Beiträge: 248



« Antworten #6 am: 29.03.2002, 16:02:33 »

@ katje

genau das hab ich schon ganz oft gehort....
Gespeichert

Veni Vidi Vici
Elias Zurschmiede
Global Moderator
Sr. Member
*****
Offline Offline

Beiträge: 411



WWW
« Antworten #7 am: 29.03.2002, 16:12:54 »

Hallo

In einer for-do Schlaufe kann Break durchaus Sinn machen.
In while-do und repeat-until kann man gut ohne auskommen.
Gespeichert

delight software gmbh
http://www.delight.ch
marian19
Full Member
***
Offline Offline

Beiträge: 248



« Antworten #8 am: 29.03.2002, 16:13:58 »

wenn man in einer for loop ein break braucht, kann mann besser ein while statement benutzen.....
Gespeichert

Veni Vidi Vici
katjah
Sr. Member
****
Offline Offline

Beiträge: 280


129345904
WWW
« Antworten #9 am: 29.03.2002, 17:42:07 »

@AndresMascher:

Versuch mal Deinen Code in einem Struktogramm (Nassi-Shneiderman) darzustellen.
Gespeichert

Gruss Katja
AndreasMascher
Gast
« Antworten #10 am: 29.03.2002, 21:01:41 »

@katjah
was ist das? (Struktogramm (Nassi-Shneiderman))

@Elias Zurschmiede
Ja, da gebe ich dir durchaus recht. Aber es ging eher um die Frage, warum dieser Befehl "schlecht" ist. Ab dem moment, wo ich befehle wie label oder break und exit kennengelernt hatte, konnte ich mich viel "freier" in meiner Procedure bewegen. Also, ich finde es erleichtert! Man kann halt jederzeit "raus" ;-)
Gespeichert
Peda
Newbie
*
Offline Offline

Beiträge: 38


58549660
WWW
« Antworten #11 am: 29.03.2002, 23:01:59 »

hm, von Labels sollte man in der Delphi-Welt überhaupt die Finger lassen...
Gespeichert

So long...
AndreasMascher
Gast
« Antworten #12 am: 29.03.2002, 23:09:16 »

"von Labels sollte man in der Delphi-Welt überhaupt die Finger lassen", begründen konnte das hier aber noch keiner.
Gespeichert
Loïs Bégué
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1718



WWW
« Antworten #13 am: 30.03.2002, 00:40:10 »

Also, ich glaube wir sollten alle die Bank drücken...

Ich kann mich etwa daran erinern, daß "break/continue" in Turbo-Pascal nicht so angebracht waren. Damals konnte man z.B. den Wert der Laufvariable einer FOR-Schleife von innerhalb der Schleife selbst ändern.

Soweit ich weiß ist es Heute unter Delphi anders.
Und zwar weil der Optimierer/Compiler die Änderungen der Laufvariable unterbindet/unmöglich macht.

Demnach ist es Heute durchaus Sinnvoll (z.T. die einzige Möglichkeit) "break/Continue..." zu benutzen.

Das nennt man "Entwicklung" der hohen Programmiersprachen :o)

Labels sind zugegebenermaßen nicht davon betroffen. Die Benutzung von Labels kann man sich aber durch entsprechende Benutzung von Try Except/finally + Repeat/while + Case..of + Prozeduraler Aufbau ersparen.

Gruß,
Gespeichert

Prof.Y
Arpoon
katjah
Sr. Member
****
Offline Offline

Beiträge: 280


129345904
WWW
« Antworten #14 am: 30.03.2002, 11:50:03 »

@Andreas Mascher:

ein Struktogramm ist ein Darstellungsmittel, welches bei der Planung von Programmen eingesetzt werden kann.

label und goto sind übrigens in der "Strukturierten Programmierung" strikt verboten.

Bei "Strukturierter Programmierung" handelt es sich um einen Begriff aus der Informatik (also keine Erfindung von mir).
Aus diesem Konzept heraus ist übrigens die Programmiersprache Pascal enstanden (Anfang der 70er? Jahre durch Nikolaus Wirth an der ETH Zürich).
Gespeichert

Gruss Katja
AndreasMascher
Gast
« Antworten #15 am: 30.03.2002, 16:42:29 »

@katjah

Cool, darauf wollte ich hinaus:

Du sagtest:
"Man sollte sie nicht benutzen, weil das der Strukturierten Programmierung widerspricht. (ein Struktogramm ist ein Darstellungsmittel, welches bei der Planung von Programmen eingesetzt werden kann.)"
So, aber wen in diesem Forum (und gerade im Einsteiger Forum) betrifft das denn? Wohl eher wenige... Und solange ich eindimensionalen Programmtext verwende, KANN es einfach nicht "schlecht" sein.

Daher denke ich weiterhin, dass die Verwendung von Befehlen dieser Art bei der Programmierung durchaus hilfreich sind. (Bei der Verwendung von Labels sehe ich das gewissermaßen ein, da ich sie sowieso noch nicht gebraucht habe).

Ich möchte aber noch einmal erwähnen, dass ich erst seit 4 Jahren programmiere, und das nicht einmal wirklich gut (selbst beigebracht) und du machst eher den Eindruck als verstündest du etwas vom coden. Aber die Argumente leuchten mir einfach nicht ein, die gegen diese Art von programmieren sprechen.
Gespeichert
katjah
Sr. Member
****
Offline Offline

Beiträge: 280


129345904
WWW
« Antworten #16 am: 30.03.2002, 17:09:50 »

@AndreasMascher:

Wenn Du dieses Topic mal genau durchliest, wirst Du hoffentlich feststellen, daß ich nicht nicht gesagt habe, daß break und exit schlecht sind.

Ich habe lediglich marian19 eine Antwort darauf gegeben, warum diese Befehle bei vielen Delphi-Programmieren verpönt sind.
Gespeichert

Gruss Katja
AndreasMascher
Gast
« Antworten #17 am: 30.03.2002, 17:17:52 »

du hattest irgendwas von ausgangspunkten gesagt, die zusätzlich entstehen.

Aber wahrscheinlich hatte ich dich einfach falsch verstanden.
Friede? *lach*
Gespeichert
katjah
Sr. Member
****
Offline Offline

Beiträge: 280


129345904
WWW
« Antworten #18 am: 30.03.2002, 17:20:56 »

Ok, Friede.

;-)
Gespeichert

Gruss Katja
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS