@sanghino: mi sono permesso di "correggerti" nella tua affermazione
L'istruzione GoTo non si usa nella programmazione ad oggetti perchè non serve, anzi è anche dannosa (del resto ne hai una prova tangibile anche tu).
perchè a mio avviso stavi facendo molta confusione e ti ho spiegato i miei motivi.
Aggiungo solo che secondo me non è il GOTO ad essere dannoso, né il WHILE o l'IF... ad essere dannoso è l'uso che se ne fa; anche un martello può essere dannoso, se ci si batte il dito!, ma non per questo diciamo che il martello non bisogna utilizzarlo perchè dannoso!
La leggibilità di un programma, argomento principe dei detrattori del GOTO, può essere penalizzata anche da una serie di "break" o "continue" o un ciclo scritto male, non solo da un GOTO: magari in una serie di loop innestati per uscire da tutti i livelli di loop può essere conveniente, e più leggibile, piazzarci un bel GOTO.
Termino con questo: nel '92 c'era una gran quantità di programmatori che sviluppavano in "spaghetti code", forse spinti dalle allora limitatezze del BASIC (in GWBASIC mi sembra che per l'IF su più righe si dovesse proprio fare un GOTO...), e per questo era molto forte il sentimento che per scrivere buon codice non bisogna usare GOTO. Oggi è tutto cambiato.