AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Schleifen wiederholen

Ein Thema von Kegasetu · begonnen am 23. Okt 2020 · letzter Beitrag vom 2. Nov 2020
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Kegasetu

Registriert seit: 26. Sep 2013
64 Beiträge
 
#1

Schleifen wiederholen

  Alt 23. Okt 2020, 07:35
Hallo Zusammen.
Ich stoße mittlerweile ein Bisschen an meine Grenzen. Das Problem, ich will über einen Integer einen Wert eingeben, über welchen bestimmt wird, wie oft eine Schleife durchlaufen wird. Diese Schleifen können als Exponenten angesehen werden.

Hier ein kleines Beispiel zu der manuellen Lösung des Problems:

Delphi-Quellcode:
for z1 := 1 to 10 do
  begin
    l12 := l11 +0.1;
    l11 := l11 + 0.1;
      for z2 := 1 to 10 do
      begin
        l13 := l12 + 0.1;
        l12 := l12 + 0.1;
          for z3 := 1 to 10 do
          begin
          l14 := l13 + 0.1;
          l13 := l13 + 0.1;
            for z4 := 1 to 10 do
            begin
              l15:= l14 + 0.1;
              l14:= l14 + 0.1;
                for z5 := 1 to 10 do
                   ..
Das ist so natürlich überaus unpraktisch. Ich kam nun auf die Idee eine Funktion entsprechend zu erstellen, jedoch bin ich auch nach längerem Überlegen nicht auf eine Lösung gekommen...

Noch ein Hinweis, es werden maximal 20 Loops durchlaufen.

Hat jemand vielleicht eine Idee?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.417 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 07:51
Warum hast du da tausend einzelne Variablen und kein Array?
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
64 Beiträge
 
#3

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 07:58
Warum hast du da tausend einzelne Variablen und kein Array?
Das ist aus älteren Beiträgen zu entnehmen. Die Bezeichnung hilft mir bei meinen Formeln nicht durcheinander zu kommen.
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
439 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 08:40
Etwas in der Art?

Delphi-Quellcode:
procedure Machwas(AWieoft: Integer);
var
  LiLooper: Integer;
begin
  for LiLooper := 1 to AWieoft do begin
    //
  end;
end;
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
64 Beiträge
 
#5

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 09:05
Etwas in der Art?

Delphi-Quellcode:
procedure Machwas(AWieoft: Integer);
var
  LiLooper: Integer;
begin
  for LiLooper := 1 to AWieoft do begin
    //
  end;
end;
Ja, so ungegefähr. Aber ich verstehe noch nicht so ganz wie ich mir das zusammenstelle.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.146 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 09:21
Warum hast du da tausend einzelne Variablen und kein Array?
Das ist aus älteren Beiträgen zu entnehmen. Die Bezeichnung hilft mir bei meinen Formeln nicht durcheinander zu kommen.
Sorry, aber das lasse ich nicht so stehen.
Ob man l12 := l11 + 0.1 schreibt oder l[12] := l[11] + 0.1 ändert an der Lesbarkeit nicht viel und man kommt dabei auch nicht mehr oder weniger durcheinander.
Aber sei es so, wie du möchtest.

Etwas in der Art?

Delphi-Quellcode:
procedure Machwas(AWieoft: Integer);
var
  LiLooper: Integer;
begin
  for LiLooper := 1 to AWieoft do begin
    //
  end;
end;
Ja, so ungegefähr. Aber ich verstehe noch nicht so ganz wie ich mir das zusammenstelle.
Du brauchst noch zwei weitere Parameter, nämlich die Werte, die du in der Schleife verändern willst:

Delphi-Quellcode:
procedure Machwas(AWieoft: Integer; Var L1, L2 : <Dein-Float-Typ>);
var
  LiLooper: Integer;
begin
  for LiLooper := 1 to AWieoft do begin
    L1 := L2 + 0.1;
    L2 := L2 + 0.1;
  end;
end;
Allerdings wird es dann immer noch nicht funktionieren, da deine Schleifen geschachtelt sind. Somit kannst du die Prozedur nicht iterativ aufrufen. Hier hilft meiner Ansicht nach nur ein rekursiver Aufruf, was aber nicht geht, weil du keinen Zähler für die Rekursionstiefe hast. Dafür müsstest du deine Werte in einem Array speichern.
Also entweder feste Variablenbezeichner für deine Werte und deine geschachtelten Schleifen nehmen oder auf Array umstellen und rekursiv programmieren.

Aber vielleicht fällt ja noch jemandem etwas besseres ein.
Peter
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
64 Beiträge
 
#7

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 09:33
Warum hast du da tausend einzelne Variablen und kein Array?
Das ist aus älteren Beiträgen zu entnehmen. Die Bezeichnung hilft mir bei meinen Formeln nicht durcheinander zu kommen.
Sorry, aber das lasse ich nicht so stehen.
Ob man l12 := l11 + 0.1 schreibt oder l[12] := l[11] + 0.1 ändert an der Lesbarkeit nicht viel und man kommt dabei auch nicht mehr oder weniger durcheinander.
Aber sei es so, wie du möchtest.

Etwas in der Art?

Delphi-Quellcode:
procedure Machwas(AWieoft: Integer);
var
  LiLooper: Integer;
begin
  for LiLooper := 1 to AWieoft do begin
    //
  end;
end;
Ja, so ungegefähr. Aber ich verstehe noch nicht so ganz wie ich mir das zusammenstelle.
Du brauchst noch zwei weitere Parameter, nämlich die Werte, die du in der Schleife verändern willst:

Delphi-Quellcode:
procedure Machwas(AWieoft: Integer; Var L1, L2 : <Dein-Float-Typ>);
var
  LiLooper: Integer;
begin
  for LiLooper := 1 to AWieoft do begin
    L1 := L2 + 0.1;
    L2 := L2 + 0.1;
  end;
end;
Allerdings wird es dann immer noch nicht funktionieren, da deine Schleifen geschachtelt sind. Somit kannst du die Prozedur nicht iterativ aufrufen. Hier hilft meiner Ansicht nach nur ein rekursiver Aufruf, was aber nicht geht, weil du keinen Zähler für die Rekursionstiefe hast. Dafür müsstest du deine Werte in einem Array speichern.
Also entweder feste Variablenbezeichner für deine Werte und deine geschachtelten Schleifen nehmen oder auf Array umstellen und rekursiv programmieren.

Aber vielleicht fällt ja noch jemandem etwas besseres ein.
Erstmal vielen Dank für die Unterstützung!

Ich verzichte nicht im allgemeinen auf Arrays, sondern nur in diesem speziellen Fall.

Das Problem sehe ich auch in der Verschachtelung und das ist der Punkt, an dem ich nicht weiterkomme. Nimm es mir bitte nicht übel, aber ich verstehe nicht ganz so viel der Informationstechnik. Ich selber bin auch nur kurzweilig gezwungen mich damit auseinander zusetzten.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.146 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 09:45
Das Problem sehe ich auch in der Verschachtelung und das ist der Punkt, an dem ich nicht weiterkomme. Nimm es mir bitte nicht übel, aber ich verstehe nicht ganz so viel der Informationstechnik. Ich selber bin auch nur kurzweilig gezwungen mich damit auseinander zusetzten.
Sorry, ich wollte nicht vorwurfsvoll bei dir ankommen. Ich bin eher der pragmatische Typ.
Rekursiv heißt, dass du eine Prozedur oder Funktion schreibst, die sich selbst wieder aufruft. Dafür brauchst du ein Kriterium, dass die Rekursion irgendwann abbricht. Bei einem Array könnte es die Arraygröße sein. Bei festen Variablen habe ich spontan keine Idee, wie man das sinnvoll realisieren kann.
Daher bleibt nur deine Variante mit der Verschachtelung übrig.
Peter
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
64 Beiträge
 
#9

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 09:59

Daher bleibt nur deine Variante mit der Verschachtelung übrig.
An sich ist das mit der Verschachtelung gar nicht so schlimm, mir ist nur wichtig, dass es irgendwie funktioniert. Ich erinnere mich düster an Batch Dateien, welche über einen GoTo Befehl verfügen. Bei Delphi gibt es diese Möglichkeit auch so ähnlich. Ergibt es Sinn, sich damit auseinander zu setzten? Ich habe mich mal ein kleines bisschen darüber informiert, aber meist wird davon abgeraten.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.978 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Schleifen wiederholen

  Alt 23. Okt 2020, 10:04
Das ist aus älteren Beiträgen zu entnehmen. Die Bezeichnung hilft mir bei meinen Formeln nicht durcheinander zu kommen.
Und was ist dann der Unterschied zwischen l14, l[14], myvars[l14] und myvars['l14'] ?

OK, Letzteres ist unünstiger, da der Compiler hier nicht schon alles prüfen kann und ein ungültiger Bezeichner erst zur Laufzeit knallen "kann"
und natürlich auch die Codevervollständigung hier nicht hilft.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (23. Okt 2020 um 10:50 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf