Einzelnen Beitrag anzeigen

hardy1234

Registriert seit: 8. Aug 2004
Ort: Hamburg
26 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: If Anweisung mit 2 Bedingungen?

  Alt 23. Jun 2005, 07:37
Zitat von malo:
@hardy1234: Wegen den Schleifen: Es waren bestimmt die if-Abfragen gemeint
Bei der ersten Variante fehlen jedoch die Klammern.


Die zweite Variante halte ich (besonders für Anfänger) viel zu kompliziert.

Was mich bei Schleifen in diesem Fall stört: Der Code wird IMMER WIEDER ausgeführt. Deshalb sind es auch Schleifen. Man müsste künstlich die Bedingung unterbrechen oder ein Break einbauen, was nicht so schön ist.
Pfui, break. wer macht denn sowas. der witz an while do begin ... end und repeat ... until ist es ja gerade, das man sich den break schenken kann. Es gibt da noch das Paradigma des middle-check, mit dem man den break leicht umgeht, nämlich so:

Delphi-Quellcode:
function TestIrgendwas(var i: integer;...): boolean;
var
  good: boolean;
begin
  i:= 0; good:= false;
  while (i <= maxloop) and not(good) do begin
    good:= {*** hier irgendeine expression ***}
    if not(good) then inc(i);
  end;
  if good then begin
    {*** hier die nachverarbeitung im Erfolgsfall, wenn nötig ***}
    {*** falls das ne Liste ist, hat man nun auch den richtigen index. ***}
    {*** was will man mehr? ***}
  end;
  {*** falls boolean-function, wie hier  ***}
  Result:= good;
end;
Der charme der geschichte dürfte klar sein. die schleife läuft genauso lange bis etwas bestimmtes gefunden wurde und dann ist schluß. da man die expression in der mitte der schleife jeweils neu setzt steuert diese die schleife und sorgt für die Abbruchbedingung. Wie man sieht kein "break". Da hab ich schon richtig komplexe tests damit duchgeführt und das klappt immer. Nebenbei ist es äußerst elegant programmiert. Die Abbruchbedingungen lassen sich ja genauso gut auch mit weiteren funktionen auslagern, die dürfen ja auch lokal vereinbart sein. Hätte ich solche dinger wie break oder noch schlimmer goto verwendet, hätte ich nicht mal das 1ste Semester überstanden. Derlei schweinereien sind den Basic- und Script-Programmierern vorbehalten...
Es gibt keinen schöneren Tag als den heutigen. Der gestrige ist vorbei und von den kommenden weiß man nicht was sie bringen.
  Mit Zitat antworten Zitat