Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Break schlechter Programmierstil? (https://www.delphipraxis.net/13121-break-schlechter-programmierstil.html)

mirage228 11. Dez 2003 12:35


Break schlechter Programmierstil?
 
Hallo,

in der heutigen Informatikstunde haben wollten wir einen spezifischen Wert aus einem Array suchen.
Unser Lehrer nutzte hierzu eine WHILE schleife. Ich schlug hierrauf vor, das mit einer FOR schleife und einem Break; nach dem Finden des Wertes (bzw. des indexes) die schleife zu verlassen. Er meinte daraufhin, dass man das so nicht machen könne(oder solle), da Break "extrem schlechter" Programmierstil sei.

Nun meine Frage: Ist da tatsächlich was dran? War die Benutzung von Break unter TurboPascal nun anders, sodass mein Lehrer das Break als schlechten Stil bezeichnet?

mfG
mirage228

Tyrael Y. 11. Dez 2003 12:37

Re: Break schlechter Programmierstil?
 
lol,

ich benutze Break nicht oft, aber ich benutze es und finde es nicht als
schlechten Programierstil

genauso exit, wobei ich exit wichtiger finde


Gruß

Dagon 11. Dez 2003 12:43

Re: Break schlechter Programmierstil?
 
Es ist schon so, das es nicht gerade zu einem guten Programmierstil gehört. Manchmal ermöglicht es aber eine übersichtlichere Konstruktion.

Sanchez 11. Dez 2003 12:51

Re: Break schlechter Programmierstil?
 
Ich benutze break eigentlich regelmäßig in der Form, wie es Mirage beschrieben hat.
Ich hatte dabei nicht das Gefühl, dass diese Konstruktionen meinen Programmierstil runterziehen. Da gibts schlimmere Sachen, die mich ärgern, wenn ich später mal was modifiziere.

Pseudemys Nelsoni 11. Dez 2003 12:52

Re: Break schlechter Programmierstil?
 
ka wieso das schlecht sein sollte, würde doch nur zeit kosten wenn man es nicht benutzt und die schleife ganz durchlaufen lässt ohne das es noch nötig ist

Phoenix 11. Dez 2003 12:56

Re: Break schlechter Programmierstil?
 
Ob schlechter oder guter Stil liegt in so einem Fall auch immer daran, wofür man ein bestimmtes Konstrukt verwendet.

Würdest Du, wenn Du einen Countdown brauchst, eine normale Uhr nehmen und an der Stelle wo 0 sein soll einen Nagel ins Zifferblatt hauen um den Zeiger zu stoppen (break), oder gleich eine Sanduhr nehmen und nur so viel Sand einfüllen wie Du für den Countdown brauchst (while)?

Eine For-Schleife ist nunmal dann das richtige Werkzeug, wenn Du für jedes (for each, wie es auch ab und zu woanders heisst) Element in der Schleife etwas bestimmtes tun willst.

Man sucht aber nicht für jedes Element, sondern solange wie man es noch nicht gefunden hat. Deshalb ist bei einer sequentiellen Suche nunmal eine while - Schleife die richtige.

Von daher würde ich Deinem Lehrer da in jedem Fall zustimmen: For / break für eine Suche ist schlechter Stil.

Sanchez 11. Dez 2003 13:01

Re: Break schlechter Programmierstil?
 
Ich finds einfach einfacher, wenn ich

Delphi-Quellcode:
  for i:=0 to Count - 1 do begin
    if gefunden then begin
      MachWasDraus;
      break;
    end;
  end;
schreibe als

Delphi-Quellcode:
  while NichtGefunden and (i < Count) do begin
    if Gefunden then begin
      NichtGefunden := false;
      MachWasDraus;
      i := i + 1;
    end;
  end;
zu schreiben. Wenns irgendeine plausible Erklärung gibt, while zu verwenden nehm ich halt while

Phoenix 11. Dez 2003 13:07

Re: Break schlechter Programmierstil?
 
Hrm..

Scheint, als hättest Du da was nicht ganz 100% optimiert :)
Also wenn man das richtig macht sieht das so aus:
Delphi-Quellcode:
while not gefunden do
   Suche;

Machwas;
Delphi-Quellcode:
for i := 0 to Count - 1 do
begin
   Suche;
   if gefunden then
      break;
end;

Machwas;
Und was ist nun besser?

Pseudemys Nelsoni 11. Dez 2003 13:11

Re: Break schlechter Programmierstil?
 
Zitat:

while not gefunden do
Suche;
ist das nicht ne endlosschleife? oder wird "gefunden" irgendwann auf true gesetzt?

mirage228 11. Dez 2003 13:13

Re: Break schlechter Programmierstil?
 
Phoenix, wenn das element nicht gefunden wurde, ergibt das obere gnadenlos eine endlosschleife :-D

wir hatten das so gemacht, dass wir das ergebins erstmal auf 0 (ausserhalb des arrays) setzen und die while schleife maximal bis zu CONST n = 10000 (so lang ist der Array) laufen lassen.

mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 Uhr.
Seite 1 von 3  1 23      

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