[C] goto , springen innerhalb des Prog

mmp05

Ensign
Registriert
Okt. 2005
Beiträge
209
Also hab bis jetzt eigentlich richtig nur MAschienencode programiert:

will mir jetzt C LANGSAM angewöhnen:

mein Lehrer hat gesagtm dass es sowas wie ein

goto

gibt, wo er zu einer bestimmten stelle im Programm Springt:

vielleicht so (z.B.)?

...
...
goto 1
...
...
...
...
1:


er soll von goto 1 auf 1: springen und alle schritte dazwischen ausseracht lassen;

wie sieht die syntax genau aus. Bitte an nem Beispiel wenn ihr habt ...

THX im voraus
 
Hi,

ich würde dir anraten, auf keinen Fall mit "goto" zu arbeiten, das wird dein Programm zwar kurz, aber auch sehr sehr fehleranfällig machen. Außerdem ist ein ganz schlechter Programmierstil. Solchen Code nennt man übrigends dann "Spaghetti-Code"...

Also, lieber konventionell arbeiten, sprich Schleifen, Cases usw. ...
 
Ich würd das auch nicht machen. Früher hab ich auch mal gesagt so en mist warum net goto. Aber wenns dir dann wirklich ma pasiert is das das Programm bösswillig abschmirt...
Nun hab das ganze Programm am ende umgeschrieben.

daher achte auf den Codinstyle und machs mit Schleifen usw. wie Götterwing schon sagte.
 
Hallo mmp05,

die Syntax ist korrekt.

Aber ein goto hat in Assembler vielleicht noch seine Berechtigung.
In Hochsprachen hat es aber nichts mehr verloren.

Es macht den Code einfach unübersichtlich und sehr wartungsunfreundlich.
In Code der von gotos lebt nach Fehlern zu suchen macht keinen Spass.

Damit lassen ziemlich komplizierte logische Verschachtelungen aufbauen, die ausser dem Programmierer nachher kein Mensch mehr versteht. Und nach einem halben Jahr auch der Programmierer nicht mehr :-).

Um Dein Problem zu lösen, teile die Funktionalitäten in Funktionen auf die dann aufgerufen werden.
Funktionen die nicht aufgerufen werden sollen, werden mit einem if umgangen nicht mit einem goto.

Code:
#include <stdio.h>

void funcA()
{
  printf( "A" );
}

void funcB()
{
  printf( "B" );
}

int main(int argc, char**argv )
{
  funcA();

  if( argc > 2)
    funcB();

  funcA();

  return 0;
}

Goto Variante

Code:
int main(int argc, char**argv )
{
  funcA();

  if( argc <= 2)
    goto weiter;

  funcB();

weiter:
  funcA();

  return 0;
}

Die goto Variante hat mehr Code und man muss mehr nachdenken um zu verstehen was das Programm macht, oder?

MfG

Arnd
 
Zuletzt bearbeitet:
Zurück
Oben