AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schleifendurchlauf abbrechen

Ein Thema von Nightfly · begonnen am 28. Jul 2005 · letzter Beitrag vom 28. Jul 2005
Antwort Antwort
Seite 2 von 2     12   
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#11

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:30
Naja, das stammt nicht via Copy & PAste aus dem Quelltext, sondern ist, da nur ein kleines Beispiel, gleich im Browser getippt. Werde mich bessern
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#12

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:32
Zitat von Nightfly:
In meinem Späteren Programm weiß ich's aber vorher noch nicht [...]
Bedenke aber, dass mit wachsender Komplexität von Prozeduren und Funktionen Sprunganweisungen wie continue, break und exit besonders mittendrin immer gerne übersehen werden und somit die Wartbarkeit von Code (ein nicht gerade unerhebliches Kriterium für guten Code) stark einschränken. Einzige in meinen Augen zulässige Ausnahme ist das überprüfen einer Bedingung am Anfang einer Prozedur/Funktion:

Delphi-Quellcode:
procedure GanzLangeProzedur(const Bedingung: boolean);
begin
  if (Bedingung = False) then
    exit;

  [ganz lange Berechnungen]
end;
In den allermeisten Fällen gibt es elegantere Lösungen, die vielleicht langweiliger zu lesen sind, aber genau das macht gut wartbaren Code aus.
Robert Wachtel
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:51
Zitat von Nightfly:
In meinem Späteren Programm weiß ich's aber vorher noch nicht, wie gesagt, dies hier ist nur ein einfaches Beispiel, um mein Anliegen zu verdeutlichen. (und in welchem, zugegeben, <> einfacher wäre)
Aber ich frage nochmal: Was ist der Unterschied? So wie du es machen willst, fragst du ab, ob der Wert erreicht ist und übergehst dann die Berechnung. Genauso könntest du die Berechnung eben einfach nur dann ausführen, wenn der Wert nicht erreicht ist. Macht genau das selbe, ist aber einfach zu verstehen und spart Code. Es ist ja nicht nötig, daß du bereits beim Programmieren weißt, welcher Wert übersrpungen werden soll. Irgendwo wirst du den ja speichern, und kannst ihn dann genauso wie in deiner Version abfragen. Wo da was nicht funktionieren soll, leuchtet mir nicht ein...
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#14

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 14:07
Naja, ich kann es dir nun schwer erläutern, aber mir scheint es für diesen Fall weitaus logischer.
Du kannst alles mit "if..then" und "loop(repeat)..until" machen, alle anderen Kontrollstrukturen sind meines Wissens nach redundant, trotzdem gibt es sie (for, while,case,else).

Mit ist klar, das ich jede if Entscheidung nach postitiver Logik auswerten und abarbeiten kann. Aber ebenso kann ich sie nach negativer Logik auswerten, und dann nicht abarbeiten.

Nach den Gesetzen der Logik gibt es immer das Paar (Pseudocode) {IF a = wahr DO} und {IF a = falsch DO NOT}

Es reicht eines von beiden, der bequemlichkeit halber hat man aber beide. Ich würde die Mächtigkeit von Delphi nicht beschneiden, wenn es break und continue nicht gäbe (wenn wir das ausdiskutieren wollen bitte in nem neuen Thread, der beweis wird lang).

Aber ich habe die Mittel, und wenn es MIR(!) offensichtlicher erscheint nutze ich mal das eine, mal das andere.

@rwachtel ja, Sprünge sind fieß, aber genau in dem Fall den du ansprichst nutze ich sie, um Schleifen und Prozeduren am Anfang zu verlassen, und nicht mit unsinnigen Parametern durchzulaufen.
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#15

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 14:14
der verfasser dieses threads sollte sich vllt mal die hilfe zu rate ziehen und einfach mal auf break() continue() bzw for und while nen F1 drüggn...
dann ersparen wir uns mutmaßungen über irgendwelche unvollständigen codeschnipsel die von irgendwo her einfach in vorhandenen code eingefügt werden ...
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 14:18
Klar ist es letztendlich deine Entscheidung, was du wählst. Nur wie rwachtel es ja schon gesagt hat, wird Code mit breaks, exits und continues immer recht schnell schwer verständlich. Daher sollte man das wirklich nur dann verwenden, wenn es nicht - oder nur sehr schwer - anders geht. Und da dein Problem - zumindest so, wie du es bisher geschildert hast - meiner Meinung nach am einfachsten über "<>" zu lösen ist, hab ich das jetzt halt vorgeschlagen. Ich würds so machen, du mußt natürlich nicht. Nur daß es nicht sinnvoll ist, wollte ich nicht auf mir sitzen lassen
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#17

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 14:21
@ barf00s
Dieser Post zum jetztigen Diskussionsfortschritt ist in seiner Gesammtheit völlig redundant.

@ leddl
Eben, und bei mir ist es nur schwer und umständlich zu vermeiden. Es war ein Fehler von mir, ein Beispiel anzugeben, welches kaum etwas mit meinem Probblem zu tun hat, sondern einzig und allein verdeutlichen sollte was ich tun möchte.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz