Ergebnis 1 bis 4 von 4

Thema: .

  1. #1

    .

    .

    Geändert von Merovinger (03.07.2021 um 03:08 Uhr)

  2. #2
    Abgesehen von break nicht, hab aber auch selbigen niemals gebraucht, da man auch einfach while bzw. repeat Schleifen nutzen kann und die dann sehr viel eleganter sind. Du kannst auch im Prinzip eine boolische Variable definieren und es so loesen:

    Code:
    var
      SExit: Boolean;
      i: Integer;
    begin
      SExit := False;
      for i := 0 to 99 do
      begin
        if not SExit then
        begin
          if i > 10 then
            SExit := True;
        end;
      end;
    end;
    Aber in 100% der Faelle laesst es sich mit while besser loesen. Siehe auch hier:

    Code:
    var
      i: Integer;
    begin
      I := 0;
      while ((I <= 99) OR not (I > 10)) do
      // bzw. <, ich wollte aber die Bedingung von oben kopieren
      begin
    
      end;
    end;

  3. #3
    Zitat Zitat von Crash-Override Beitrag anzeigen
    Abgesehen von break nicht, hab aber auch selbigen niemals gebraucht, da man auch einfach while bzw. repeat Schleifen nutzen kann und die dann sehr viel eleganter sind. Du kannst auch im Prinzip eine boolische Variable definieren und es so loesen:

    Code:
    var
      SExit: Boolean;
      i: Integer;
    begin
      SExit := False;
      for i := 0 to 99 do
      begin
        if not SExit then
        begin
          if i > 10 then
            SExit := True;
        end;
      end;
    end;
    Aber in 100% der Faelle laesst es sich mit while besser loesen. Siehe auch hier:

    Code:
    var
      i: Integer;
    begin
      I := 0;
      while ((I <= 99) OR not (I > 10)) do
      // bzw. <, ich wollte aber die Bedingung von oben kopieren
      begin
    
      end;
    end;
    Hat Delphi ein so krass unterschiedliches Verständnis von Logik? o_O
    Für mich sieht es so aus, als würde die while-Schleife in jedem Fall bis I = 99 laufen. Wenn I > 10 ist zwar not (I > 10) false, aber da dazwischen ein OR steht ist das egal, da ((I <= 99)) ja immer noch true ist. Habe ich da jetzt nen Denkfehler drin?

    Auf jeden Fall inkrementierst du aber I nicht. Wenn die Code Snippets identisch sein sollen, muss das auch mit rein.

  4. #4
    Zitat Zitat von dead_orc Beitrag anzeigen
    Hat Delphi ein so krass unterschiedliches Verständnis von Logik? o_O
    while ((I <= 99) OR not (I > 10)) do

    Mache weiter, solange eine der folgenden Bedingungen gegeben ist:
    a) I ist kleiner oder gleich 99
    b) I ist nicht groesser als 10

    while ((I <= 99) AND not (I > 10)) do
    wuerde heissen das beide Bedingungen erfuellt sein muessen und

    while ((I <= 99) XOR not (I > 10)) do
    das Entweder die eine oder die andere true sein darf, aber nicht beide, was bei OR durchaus geht.

    @Merovinger: Die Schleife wird beim ersten Beispiel nicht abgebrochen. Sie lauft durch bis zum bitteren Ende, aber ohne irgendwas zu tun. Wenn du nicht grad bis x-Millionen durchzaehlen laesst macht das keinen grossen Unterschied.

    edit: lol, jetzt wo ich es mir durchlese muesste es tatsaechlich AND sein. damn.

    Geändert von Crash-Override (17.08.2008 um 14:46 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •