AGB  ·  Datenschutz  ·  Impressum  







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

For-do Schleife mit Sprung

Ein Thema von F.W. · begonnen am 9. Dez 2003 · letzter Beitrag vom 16. Dez 2003
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#21

Re: For-do Schleife mit Sprung

  Alt 10. Dez 2003, 07:11
Zitat:
goil! das ist ja end-praktisch. man sollte die while schleifen weglassen, die sind ja voll überflüssig
ich find die wichtiger als die Repeat schleife :\
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#22

Re: For-do Schleife mit Sprung

  Alt 10. Dez 2003, 14:07
Beide Schleifen sind wichtig, vllt solltet ihr euch mal klar machen was der Unterschied zwischen einer "Kopf" und ner "Fuß" gesteuerten Schleife ist
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#23

Re: For-do Schleife mit Sprung

  Alt 10. Dez 2003, 15:55
[offtopic] das Gegenteil von "Kopf" gesteuert ist "Schwanz" gesteuert [/offtopic]

Mein Beitrag mit "goil! dann..." war ironisch gemeint. Das nur nochmal für alle, denen das nicht ganz klar war.
Fakt ist, dass man ausgehen von einer while-Schleife die beiden anderen relativ schnell geschrieben hat:

bei der repeat-Schleife:

Delphi-Quellcode:
anweisung;
while ISTrue do
anweisung;
bei der for schleife:

Delphi-Quellcode:
while soOft >= 0 do
begin
dec(soOft);
anweisung;
end;
aber wer will das schon immer machen. Also doch gut, dass es alle drei gibt!
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#24

Re: For-do Schleife mit Sprung

  Alt 10. Dez 2003, 17:08
Zitat von Nailor:
Allerdings habe ich immer gedacht, dass Schleifen intern anders funktionieren, und Luckies Gebastel daher eh nicht funktioniert.
Wenn der Optimierer Lust dazu hat, ist das auch so. Dann wird das CX-Register als Schleifenvariable benutzt und der Sprung funktioniert mit dem LOOP-Befehl statt mit einem CMP- und einem JZ-Befehl (braucht 3 Takte weniger). Der Nachteil ist natürlich, dass die Schleife dann rückwärts läuft, was nicht immer gewollt ist und was du ganz hart zu spüren bekommst, wenn der Optimierer mal Amok läuft.
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#25

Re: For-do Schleife mit Sprung

  Alt 10. Dez 2003, 18:11
Ich denke, ich werde mich für den Code von himitsu entscheiden, der ist für mich(auf Grund meiner Erfahrung und Faulheit) der Beste.

Danke für die vielen Antworten!.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#26

Re: For-do Schleife mit Sprung

  Alt 10. Dez 2003, 19:24
noch ein tipp: du musst nichtmal bis "maxZahl div 2" durchgehen. "ceil(sqrt(maxZahl))" reicht!
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#27

Re: For-do Schleife mit Sprung

  Alt 12. Dez 2003, 20:30
Die Anweisung kann ja schnell mal 10 Sekunden (und meistens noch drüber) dauern. Damit ich Fortschritte sehen kann, habe ich mir was ausgedacht:

Ich nehme mir die Startzeit und die Endzeit und führe dann SecondsBetween(...) aus. Allerdings ist eine Sekunde bei solchen größenverhältnissen nicht gerade genau. Aber mit einem Timer(der dann aller 10 ms den Zeitwert erhöht) kann ich's nicht machen, weil der ja seine Anweisungen erst nach der Beendigung der Primzahlsuche fortsetzt.

Habt ihr noch 'ne Idee?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#28

Re: For-do Schleife mit Sprung

  Alt 12. Dez 2003, 20:34
wie wird der Fortschritt angezeiht? Ruf in der Schleife mal die Refresh-Methode der entsprechenden Komponent auf. Oder pack das in einen Thread und lass dir vom Thread eine Message an dein fenster schicken bei jedem Fortschritt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#29

Re: For-do Schleife mit Sprung

  Alt 14. Dez 2003, 19:47
Also der Fortschritt wird über eine TProgressBar angezeigt. Das habe ich schon ziemlich optimiert. Aber darüber sehe ich ja nicht, wie lange es von Zahl X bis Zahl Y gesucht hat. Ich habe ja schon oben meine momentane Zeitmessmethode beschrieben. Aber wie kann ich es Zehntelsekundengenau machen?

Wie meinst du das, mit der Refresh-Methode? Soll ich einen Timer mit der Aufgabe "Benötigte Zeit := Benötigte Zeit + 0,01" und den dann mit der Refresh-Methode aufrufen?
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#30

Re: For-do Schleife mit Sprung

  Alt 14. Dez 2003, 19:51
Luckie meinte, dass wenn du innerhalb deiner Methode den Progress erhöhst, man das trotzdem erst sehen wird, wenn deine Methode fertig abgearbeitet ist. Um das zu verhindern, und zwischendurch die ANzeige auf den aktuellen Stand, sollte man irgendwas von wegen Repaint/Refresh/Update einbauen [aber nicht ZU OFT, sonst wirds merklich langsamer]
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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:30 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