PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : goto ersatz


Tobi101
18.08.2002, 21:09
Es wird immer so viel davon geredet das man das goto ersetzten kann, aber wie


#include <iostream.h>
#include <stdio.h>
#include <conio.h>


int int_stern;
int wahl;
int wahle;
int nummer;
char name[40];

int main()
{
start:
void clrscr(void);

for (int_stern = 0; int_stern <= 34; int_stern ++)
cout << "*";
cout <<"Telefonbuch";

int_stern =0;

while(int_stern <= 33)
{
cout << "*";
int_stern++;
}

cout << "\n\n\n\t1.Eintrag\n\n\t";
cout << "2.Suchen\n\n\t";
cout << "3.Durchblaettern\n\n\t";
cout << "4.Beenden\n\n\t";
cin >> wahl;

switch (wahl)
{
case 1:
eintrag:
cout << "Geben sie den Namen ein: ";
cin >> name;
cout << "\nGeben sie die Nummer ein: ";
cin >> nummer;
cout << "\n\n" << name << " "<<nummer;
cout << "\n Stimmen die Angaben?\n";
cout << "1.ja 2.nein";
cin >> wahle;

if (wahle = 1) goto start;
else if (wahle = 2)goto eintrag;
else
{
cout <<"\nFalsche Eingabe!";
}

}
return 0;
}

und ausserdem möchte ich wissen wie das mit clrscr() funktioniert.
verwennde Vc++ und Dev-C++


Alfred
19.08.2002, 09:25
goto kommt noch aus den basic zeiten und war als funktionsersatz gedacht.denk ich jedenfalls.. :D

naja goto ersetzen... wenn du schon c++ benutzt soltest du auch die möglichkeiten ausreitzen.

du kannst nartürlich goto benutzten, spätestens wenn dein programm dimesionen erreicht für die eine strukturierung nötig ist um den überblick zu behalten wirst schreien und toben solltest du alles mit dem goto programmiert haben.

warum ? wenn du einen fehler bekommst wie willst du ihn finden?

ein abschnitt kann 500 mal richtig sein, aber sobald du eine unbedachte variabelveränderung durchführst stehst du da.

desshalb benutze funktionen und/oder klassen.

das erhöht die funktionalität und lesbarkeit deines proggies
und was ganz wichtig ist ,erleichter die fehlersuche ungemein.
und wie wir alle wissen macht die fehlersuche ein löwenanteil der programmierung aus.

das sein meine meihnung

clr() funtzt so :
system("clr");

mfg alfred

DerWolf
19.08.2002, 11:15
Du kannst eine do{...} while (...); schleife für dein "goto start;" benutzen.if (wahle = 1)
goto start;
else if (wahle = 2)
goto eintrag;
else
{
cout <<"\nFalsche Eingabe!";
} Ich hoff du weißt was das einzelne = in ner if Anweisung bei C/C++ heißt. in dem Fall wie dus hier hast wirds wohl immer zum start springen :) Das heißt wenn man die Daten falsch eingibt und dann 2 drückt ums zu verbessern, gibt man aber immer wieder neue Daten ein. Du kannst auch für dein "goto Eintrag" eine do {...} while(...), schleife einsetzen :) also nix Goto. Wenn du willst kann ich dir ja ein Beispiel schreiben :) Cu

Lord_Otter
19.08.2002, 11:42
Warum willst du überhaupt goto ersetzen ? goto geht doch gut.

DerWolf
19.08.2002, 11:47
goto gehört für mich zu basic und sonst nirgends hin *g*.

Lord_Otter
19.08.2002, 13:48
print gehört auch zu Basic, weil Basic das vor C hatte. Darf man denn keine Befehle gleich hbaen ? Das ist doch sowiese besser, denn dann fällt einem der Umstieg leichter.

K21
19.08.2002, 15:58
geht ja nicht darum dass der befehl gleich lautet sondern dass die verwendung eines speziellen befehles (nämlich goto) unsauberer und fehleranfälliger programmierstil ist.
gleiche befehlsnamen sind wie du schon sagst oftmals angebracht und gerade java hat dieses prinzip auch oft angewandt (halt immer dann wenn es in den augen der entwickler perfekt war - wie z.b. die switch anweisung aus c/c++ her)

Lord_Otter
20.08.2002, 20:30
Ich verstehe