Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

11

02.02.2005, 14:13

Auf einem normalen Compiler ist std::string vielleicht nicht schneller, aber auch nicht langsamer, als ein char-Feld, was doch das wichtigste ist. Wenn du aber die Fähigkeiten, wie automatisches Wachstum, etc. nutzt wirst du sehr viel Mühe investieren müssen, um eine ähnliche Geschwindigkeit zu erziehlen. Mit std::string erhälst du eine allgemein einsetzbare und fehlerfreie Implementierung.
Why is 6 afraid of 7?
Because 7 8 9

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

02.02.2005, 16:10

Zitat

Alter, für sowas kannst Du strafrechtlich verfolgt werden!!! ;)


der zweck heiligt die mittel...

ähM_key

Frischling

  • »ähM_key« ist der Autor dieses Themas

Beiträge: 49

Beruf: Schüler

  • Private Nachricht senden

13

02.02.2005, 21:45

Zitat


Ok, haste sonst noch Fragen zu dem Thema, ähM_key?


Ne, hätte gar nicht so 'ne große Anzahl an MEinugen erwartet ;)


Zitat

std::string ist die C++-Variante, die eleganter, schneller und bequemer ist


letzteres auf jeden Fall. :)


Allerdings weiß ich net, was alle gegen goto haben. Gut, in nem großen Projekt mit vieeeelen Codern wird's bestimmt recht unübersichtlich....
aber bei einem ein-mann-projekt?

außerdem ist das ganz nett, z.B. bei folgendem Code Schnipsel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void func()
{
for()
{
  for()
  {
     while()
     {
        if(a==0)
          GOTO ABC;
     }
  }
}
ABC:
//Hier folgt der Rest der Funktion

} 


Und jetzt kommt nicht mit
"Bei den Schleifen fehlen die Bedingungen........" oder sowas.
Das seh ich selbst. ;)
--
www.aqualocity.de

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

02.02.2005, 22:02

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void func() 
{ 
for() 
{ 
  for() 
  { 
     while() 
     { 
        if(a==0) 
          GOTO ABC; 
     } 
  } 
} 

int x = 0;

ABC: 
//Hier folgt der Rest der Funktion 
}


und jetzt probier einmal das...

ähM_key

Frischling

  • »ähM_key« ist der Autor dieses Themas

Beiträge: 49

Beruf: Schüler

  • Private Nachricht senden

15

02.02.2005, 22:12

Das brauch ich nicht probieren, ich weiß genau was dabei rauskommt.... ;)
Selbst schon am eigenen Code erlebt.
--
www.aqualocity.de

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

16

03.02.2005, 11:12

Ja, generell gilt: goto verwenden, um einen Block zu verlassen führ nie zu fehlern.

C-/C++-Quelltext

1
2
3
4
5
6
{
   ...
   goto endeDesBlocks;
   ...
} 
endeDesBlocks:


Egal, um was für eine Art von Block es sich handelt. Deswegen ist sowas, wie break ja auch in Ordnung, weil es nichts anders ist. Das selbe gilt für den Anfang eines Blocks.

Würde ich eine Sprache designen würde ich es verbieten irgendwo anders hinzuspringen.
Why is 6 afraid of 7?
Because 7 8 9

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

17

03.02.2005, 12:30

break und goto sind meiner meinung nach (und gelten soweit ich weiß auch generell als) schlechter stil.
beispiel abbruchbedingung einer schleife: hat man mehrer breaks drin, weiß man nicht genau wann sie abbricht, mit ner klar definierten abbruchsbedingung erkennt mans auf einen blick.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

18

03.02.2005, 15:37

wie willst du ohne break arbeiten, wenn du z.b. verhindern willst dass alles dannach ncihtmer ausgeführt wird? break und continue sind einfahc und pratisch...

PD

unregistriert

19

03.02.2005, 15:44

Manchmal gibts aber mehr als eine Abbruch bedinung und dann ist es wesentlich leichter mit einem break als einer Abbruchbedinung ;) Also break find ich noch voll ok um aus ner schleife zu springen. Stell dir z.B. ne for schleife vor. Du möchtest genau 10 Zeilen aus ner Datei lesen. Da bietet sich for eher an als while (imho). Allerdings kann es ja auch vorkommen das die Datei weniger als 10 Zeilen hat und das muss abgefangen werden. Also muss man aus der Schleife springen. Natürlich kann man dann i direkt auf 10 setzen. Aber vielleicht muss man auch nach der shcleife wissen wieviele zeilen es denn nun waren. Ok, du kannst argumentieren das man ne weitere variable j mitlaufen lassen kann zum zählen... aber da seh ich ein break doch als wesentlich schöner und übersichtlicher an.

Zu dem oben genannten code... mhh... verschachtelte Schleifen und breaks sind immer so ne sache. Wenn man nun auf goto verzichten will wird man wohl ne Variable (bool reicht meistens ja schon) deklarieren müssen die bei nem break z.B. auf true gesetzt wird (vor dem break ;)) und in den folgenden schleifen ebenfals mit nem break reagieren wenn die var true ist. Etwas umständlich aber man hat sich das goto gespart ;)

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

20

04.02.2005, 13:45

Zitat

break und goto sind meiner meinung nach (und gelten soweit ich weiß auch generell als) schlechter stil.
beispiel abbruchbedingung einer schleife: hat man mehrer breaks drin, weiß man nicht genau wann sie abbricht, mit ner klar definierten abbruchsbedingung erkennt mans auf einen blick.


Du spielst auf die Regeln der strukturierten Programmierung an: Alles sollte nur genau einen Austrittspunkt haben. Das beudeutet dann im übrigen auch, dass eine Funktion nur ein return haben darf.

Allerdings muss eine Schleife nicht zwangsläufig fuß oder Kopf gesteuert sein. Eine quais "Endlos"-Schleife mit genau einem break (also doch nicht endlos) wäre laut diesen Regeln gestattet.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
while (bedingung) {  // Kopfgesteuert

}

do {  // Fußgesteuert

} while (bedingung);

for (;;) {     # "Bauch gesteuert" (kenne den offiziellen Namen nicht)

  if (bedingung)
     break;

}
Why is 6 afraid of 7?
Because 7 8 9

Werbeanzeige