Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Welche Schleife ??
Mühli - Do 10.02.11 15:57
Titel: Welche Schleife ??
Hallo! Ich bin noch ein ziemlicher Anfänger beim Programmiern mit Delphi und ich hab jetzt ein Problem. Ich hab ein Array dass von 0-99 läuft. die Variable auf der ich es speichere ist x und diese wird mit jedem Klick auf den speichern Button um 1 erhöht und ins Array gespeichert. So weit so gut. Doch jetzt möchte ich keine doppelten Namen, etc. also habe ich eine y Variable erstellt. Was muss ich jetzt machen um mit der y Variable alle Array Felder also Array[0-99] auf diesen Namen zu überprüfen. Welche Schleife muss ich verwenden?
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Do 10.02.2011 um 16:48
shadow123 - Do 10.02.11 16:17
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| found := false; for i := 0 to 99 do begin if arr[i] = y then begin found := true; break; end; end;
if not found then /* füge hinzu */ |
Meinst du sowas?
elundril - Do 10.02.11 16:24
dafür verwendet man ne while-schleife, da kann man das found in die abbruch-bedingung schreiben und braucht ned so hässlich mit einem unsauberen break hantieren.
lg elundril
Mühli - Do 10.02.11 17:51
shadow123 hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| found := false; for i := 0 to 99 do begin if arr[i] = y then begin found := true; break; end; end;
if not found then /* füge hinzu */ |
Meinst du sowas? |
Hatte es schon selber herausgefunden aber danke für deine Antwort (:
shadow123 - Do 10.02.11 18:29
elundril hat folgendes geschrieben : |
dafür verwendet man ne while-schleife, da kann man das found in die abbruch-bedingung schreiben und braucht ned so hässlich mit einem unsauberen break hantieren.
|
Das kommt doch auf's selbe hinaus...
Sieh es doch mal so, wenigstens hab ich kein goto/gosub verwendet :rofl:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if needbeer then goto tavern else if drunken then gosub bank else if not money then gohome else throw puke; |
elundril - Do 10.02.11 18:32
kommt nicht aus selbe hinaus. bei der schleife weiß ich genau wann die terminieren könnte ohne mir den schleifenrumpf einmal angesehen zu haben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| i := 0; found := false; while (i < 100) AND NOT found do begin if arr[i] = y then found := true; inc(i); end; |
lg elundril
Tankard - Do 10.02.11 18:35
shadow123 hat folgendes geschrieben : |
Das kommt doch auf's selbe hinaus...
|
das hier auch, wuerde aber so bestimmt keiner machen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| if arr[0]=y then found:=true; if arr[1]=y then found:=true; . . . if arr[99]=y then found:=true; |
Flamefire - Do 10.02.11 18:45
@elundril: außerdem hat die for-schleife einen performance-vorteil ;)
einerseits prüft sie ne bedingung je durchlauf (-->bis zu 100 mal in dem fall) weniger andrerseits lässt die sich vom compiler besser optimieren.
macht also schon sinn und wird auch meist so gemacht.
Tankard - Do 10.02.11 18:48
Flamefire hat folgendes geschrieben : |
@elundril: außerdem hat die for-schleife einen performance-vorteil ;)
einerseits prüft sie ne bedingung je durchlauf (-->bis zu 100 mal in dem fall) weniger andrerseits lässt die sich vom compiler besser optimieren.
macht also schon sinn und wird auch meist so gemacht. |
du programmiest oefters in c nech. die machen sowas. ich finde lesbarkeit des codes wichtiger als preformance. solche sachen mach ich nur wenn die geschwindigkeit wichtg ist.
aber bei normalen anwendungen hat man das problem nicht. man wartet eher auf den user, als anders rum.
Flamefire - Do 10.02.11 19:14
nö. hauptsächlich delphi. c kann ich nur theoretisch gut. um wirklich gut zu sein müsste man es mehr machen.
man findet aber for..to..break konstrukte wirklich häufig. (auch in den standart-datein von delphi)
klar wartet man meist auf den user. aber lass das mal in ner liste sein, davon mehrere und das noch verschachtelt. dann wartet der user auf das programm. und ab da wirds mist ;)
und bei kleinen schleifen wie der obigen ist das auch noch ok. da leidet die lesbarkeit (m.M.n.) nicht.
jaenicke - Do 10.02.11 20:08
Flamefire hat folgendes geschrieben : |
| und bei kleinen schleifen wie der obigen ist das auch noch ok. da leidet die lesbarkeit (m.M.n.) nicht. |
Vorausgesetzt man macht die Methoden nicht zu lang. Wenn da eine Methode IndexOf ist, die aus praktisch nur der Schleife besteht, ist das überhaupt kein Problem.
Wenn man sowas in eine 1000 Zeilen Methode in die Mitte packt, ist es mit der Lesbarkeit vorbei... (aus beiden Gründen ;-))
shadow123 - Do 10.02.11 21:05
Tankard hat folgendes geschrieben : |
Flamefire hat folgendes geschrieben : | @elundril: außerdem hat die for-schleife einen performance-vorteil ;)
einerseits prüft sie ne bedingung je durchlauf (-->bis zu 100 mal in dem fall) weniger andrerseits lässt die sich vom compiler besser optimieren.
macht also schon sinn und wird auch meist so gemacht. |
du programmiest oefters in c nech. die machen sowas. ich finde lesbarkeit des codes wichtiger als preformance. solche sachen mach ich nur wenn die geschwindigkeit wichtg ist.
aber bei normalen anwendungen hat man das problem nicht. man wartet eher auf den user, als anders rum. |
Man sollte immer auf die Performance achten :wink:
Was denkst du wieviel Mehraufwand du hast wenn deine "Mini"-Anwendung auf einmal eine richtige Enterprise-Anwendung wird mit ca. 600 User ständig aktiv am arbeiten mit Millionen von Datensätzen sind... Dann wird diese unscheinbare for-Schleife zu einem Segen :zustimm:
Im übrigen hat die while-Schleife 2 Instruktionen mehr, und das ist nicht wenig wenn diese z. B. Milliarde mal ausgeführt werden muss ...
Marc. - Do 10.02.11 21:31
Tankard hat folgendes geschrieben : |
du programmiest oefters in c nech. die machen sowas. ich finde lesbarkeit des codes wichtiger als preformance. solche sachen mach ich nur wenn die geschwindigkeit wichtg ist.
aber bei normalen anwendungen hat man das problem nicht. man wartet eher auf den user, als anders rum. |
Ich empfinde Lesbarkeit auch als wichtig. Groß- und Kleinschreibung ist schon was tolles. ;)
Pr0g3r - Do 10.02.11 21:48
man kann seinen tag auch sinnvoller gestalten als über so was zu diskutieren :mahn: :wink:
elundril - Do 10.02.11 22:22
Wenn jeder sich das gedacht hätte, dann würden wir eventuell noch in Höhlen wohnen und gerade mal halbwegs das Feuer beherrschen. ;)
lg elundril
jaenicke - Do 10.02.11 22:44
Wo kämen wir hin, wenn alle sagten "wo kämen wir hin" und keiner ginge um nachzuschauen? :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!