AGB  ·  Datenschutz  ·  Impressum  







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

For oder While?

Ein Thema von Pseudemys Nelsoni · begonnen am 18. Nov 2004 · letzter Beitrag vom 18. Nov 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

For oder While?

  Alt 18. Nov 2004, 10:53
welche der beiden schleifen würdet ihr benutzen?

while schleife:

Delphi-Quellcode:
function TChans.ChannelExists(ChannelName: string): boolean;
var
  i: integer;
begin
  result := false;
  if ChannelName <> 'then
  begin
    i := Low(FChannels);
    while (not(result)) or (i <= High(FChannels)) do
    begin
      if CompareText(FChannels[i].Name, ChannelName) = 0 then
        result := true;
      inc(i);
    end;
  end;
end;
for schleife:

Delphi-Quellcode:
function TChans.ChannelExists(ChannelName: string): boolean;
var
  i: integer;
begin
  result := false;
  if ChannelName <> 'then
  begin
    for i := Low(FChannels) to High(FChannels)) do
      if CompareText(FChannels[i].Name, ChannelName) = 0 then
      begin
        result := true;
        break; // bzw exit;
      end;
  end;
end;
die while schleife prüft jedes mal aufs neue ihre Bedingung, die for schleife hingegen wird mit einem break/exit beendet... hab gehört das for schleifen perfformanter sind, break und exit aber wiederum ein schlechter stil sind.... also was sollte ich hier nehmen?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: For oder While?

  Alt 18. Nov 2004, 10:58
Pinzipiell sind while rsp. repeat Schleifen flexibler in der Handhabung, da du hier zudem die Möglichkeit, deine Zählvariable selbst zu ändern. In einer For-Schleife wird diese immer automatisch um einen festen Wert erhöht oder erniedrigt..

Das Ändern der Zählvariable ist aber in seltenen Fällen nur notwendig, von daher ists egal ob For- oder While-Schleife.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: For oder While?

  Alt 18. Nov 2004, 11:03
hoi jelly,

es geht mir bei der for-schleife darum ob das break/exit nicht "schlecht" ist.

Würde es was bringen wenn ich bei der while schleife eine extra variable anlege die den wert für "High(FChannels)) " enthält, so das die funktion high() nicht jedesmal neu aufgerufen wird?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

Re: For oder While?

  Alt 18. Nov 2004, 11:19
imho wird die nur einmal aufgerufen
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: For oder While?

  Alt 18. Nov 2004, 11:25
nein, wird jedes mal neu geprüft, sonst würde das ganze gar nicht funktionieren weil "i" dann ja immer den gleichen wert hätte
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#6

Re: For oder While?

  Alt 18. Nov 2004, 11:32
da müsste man mal den asm code prüfen ob das so ist...ich glaube nicht
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: For oder While?

  Alt 18. Nov 2004, 12:13
das ist in jeder while schleife so das ihre bedingung bei jedem durchlauf geprüft würd, anders würde die schleife keinen sinn machen

bei der for schleife wird es (in delphi, nicht in C) dagegen nur 1mal geprüft.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#8

Re: For oder While?

  Alt 18. Nov 2004, 12:29
oops habe die for-schleife gemeint, wer lesen kann ist klar im vorteil.

stimmt natürlich dass bei einer while oder repeat schliefe jedesmal geprüft wird und daher macht es sinn, die bedingungen durch eine variable festzulegen, damit sparst du dir natürlich einen etwaigen procedureaufruf
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: For oder While?

  Alt 18. Nov 2004, 12:34
jo stimmt
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:36 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