Is like drugs. Some people abuse it so is banned for the rest of us.
The truth is the go-to is bad only when not used properly but, man, you must know when to stop...
The word your teacher wants to hear is 'goto'.
The goto statement.
An unconditional goto is a goto that has no associated conditional expression. The following example demonstrates conditional and unconditional goto statements. int x=rand(); if (x) goto label_1; // conditional goto (when x is non-zero) else goto label_2; // conditional goto (when x is zero) label_1: // ... goto label_3; // unconditional goto (jump past label_2) label_2: // ... label_3: // ...
Example: int main (void) { LOOP: goto LOOP; }
AGAIN: puts ("c"); goto AGAIN;
A 'goto' statement is an unconditional requirement to go to that part of the program. As such, statements like these cause programs to become unstructured and should be avoided if possible. Goto statements lead to some sloppy and unreadable logic.
Labels are used to mark the start of a code segment. They are often used in conjunction with goto statements, allowing procedural jumps and loops to be formed.
Control instructions are instructions that alter the flow of execution. In C++ this include if, if-else statements, switch-case statements and the conditional ternary operator (?:), as well as loop structures (for, while, do-while) and procedural goto statements.
The Goto call is considered bad for several reasons: - the call itself is almost superfluous, and the method that it is used in can always be achieved by using another form of manipulation. For example, if you wanted to break out of a loop by using a goto, you could achieve the same results by writing 'break;.' - code is meant to be structured and easy to understand. Because goto calls can be placed anywhere in code, it breaks up the structure, making it difficult to follow. - because the CPU has to read through the entire program to find the corresponding goto call, it is very memory inefficient.
The goto statement is a control flow statement that causes the CPU to jump to another spot in the code. This spot is identified through use of a statement label. The following is an example of a goto statement and statement label:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <iostream> #include <cmath> int main() { using namespace std; tryAgain: // this is a statement label cout << "Enter a non-negative number"; double dX; cin >> dX; if (dX < 0.0) goto tryAgain; // this is the goto statement cout << "The sqrt of " << dX << " is " << sqrt(dX) << endl; }
while, for, do-while (and perhaps goto)
b+b+b+c+c+c+c =3b+4c