Matlab

Von: , Frage gestellt am Do, 8. Apr 2004

Hallo,
weiß einer von euch wie in Matlab fussgesteuerte Schleifen zu realisieren sind.
Z.B.
do
{.....
}while Wert!=0 (~=0)

Das Problem ist der Wert soll erst berechnet werden in einer Schleife und dann wird erst auf die Zulässigkeitsbedingung geprüft.
Wäre dankbar für Ihre Vorschläge
Olga.

4 Antworten zu dieser Frage

  1. Antwort von nach 3 Stunden 0 hilfreich
    Re: Matlab

    Hallo Olga!

    Ich hab' zwar (schon wieder) keine konkrete Lösung für dich (ich hab' Matlab bisher noch nicht mal von weitem gesehen), aber eine allgemeingültige (also unabhängig von Programmiersprache) Lösung gibt es schon: Jede fussgesteuerte Schleife lässt sich durch eine kopfgesteuerte solche ersetzen; im Pseudocode sieht das so aus:

    loop
    a = calculate(x);
    until a = 0;
    wird zu
    a = calculate(x);
    while a != 0
    a = calculate(x);
    end while;

    Sieht zwar etwas umständlicher aus, führt aber zum gleichen Ergebnis. Ich hoffe das hilft.

    Liebe Grüße,
    Martin

    P.S.: Ich persönlich verwende fussgesteuerte Schleifen höchst ungern, und wenn, dann nur für kurze Schleifenkörper, weil sie meiner Meinung nach die Lesbarkeit verschlechtern (und somit u.a. die Fehlersuche erschweren).

    • Antwort von nach 5 Tagen 0 hilfreich
      einfacher :-)

      im Pseudocode sieht das so aus:

      loop
      a = calculate(x);
      until a = 0;
      wird zu
      a = calculate(x);
      while a != 0
      a = calculate(x);
      end while;

      Sieht zwar etwas umständlicher aus, führt aber zum gleichen
      Ergebnis. Ich hoffe das hilft.

      Liebe Grüße,
      Martin

      a=0
      while a!=0

      a=calc(x)
      end


      oder noch einfacher:
      while 0==0

      if calculate(x)==0 break
      end


      Gruss, Marco

      • Antwort von nach 5 Tagen 0 hilfreich
        Re: Kritik der reinen Vernunft *ggg*

        Hallo Marco! a=0
        while a!=0

        a=calc(x)
        end
        Ist das die Neuerfindung der "never-execute-loop"? Ich mein' ja nur, wegen a=0
        und while a!=0
        Vielleicht würde sich da doch das hier besser machen *g*. a=1
        Die andere Variante funktioniert natürlich wie von dir gepostet...

        Gruß,
        Martin

        • Antwort von nach 6 Tagen 0 hilfreich
          uups...

          ich meinte selbstverständlich

          while not(a!=0) ;-)


          es muesste aber auch so funktionieren:


          for a=1:exp(500)
          ...
          if calculate(x)==0 break end
          end

          Eigentlich schade, dass es in Matlab keine gotos gibt.


          function [args}=whileschleife(args)
          ...
          if calculate(x)!=0 args=whileschleife(args); end


          oder:
          n3=1;
          while n3==n3


          try
          n3=n3(calculate(x)/calculate(x));
          catch
          break
          end
          end

          ok, das ist nicht mehr ganz sooo einfach...

          Gruss, Marco

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!