PDA

View Full Version : [C]info switch e goto


NeoNum6
18-12-2005, 10:54
ciao a tutti! in un mio programma mi trovo a iniziare con una istruzione switch...io vorrei che dopo l'esecuzione ogni "case"(tutti seguiti da break) fosse possibile ri-effettuare la scelta dei casi...insomma vorrei che il programma ricominciasse dall'inizio!
ho fatto alcune ricerce e mi sono inbattutto nell'istruzione goto, questa è molto antipatica ai programmatori esperti.
la mia domanda è:
è possibile fare quello di cui ho bisogno senza un goto?
se si come?
e perchè goto è fortemente sconsigliata da tutti i libri di C?

motogpdesmo16
18-12-2005, 11:02
allora secondo me per risolvere il tuo problema a monte del case ci vorrebbe una struttura di repeat così viene ripetuto tutto il blocco istruzioni finchè non si verifica una certa condizione che devi stabilire tu.

Riguardo il fatto del goto, ricerca in rete un articolo di djikstra intitolato (vado a memoria) "why goto statement is considered harmful" o una cosa simile...poi fammi sapere se vuoi ancora utilizzare l'istruzione goto.

Comunque non so chi ti ha detto che il goto è una istruzione simpatica: è caldamente sconsigliata da molti programmatori.
Personalmente non l'ho mai usata fino ad ora e spero di non doverne mai fare uso...brrr.

ciao

NeoNum6
18-12-2005, 11:18
...hoi sbagliato volevo dire "antipatica"...in ogni caso io vorrei che si ripetesse indefinitamante il ciclo di istruzioni...fino a quando non si scelga un certo case che porta al comando exit()...
credi sia possibile con repeat questa cosa?

andbin
18-12-2005, 11:35
ciao a tutti! in un mio programma mi trovo a iniziare con una istruzione switch...io vorrei che dopo l'esecuzione ogni "case"(tutti seguiti da break) fosse possibile ri-effettuare la scelta dei casi...insomma vorrei che il programma ricominciasse dall'inizio!
Ciao, devi usare i costrutti while oppure do-while, che ripetono un blocco di codice in base ad una condizione. Esempi:

while (condizione)
{
/*...*/
}

do
{
/*...*/
} while (condizione);

I goto ... dimenticali. ;)

motogpdesmo16
18-12-2005, 11:39
diciamo che la soluzione che ho dato io (repeat...until) era più pascal like mentre quella che ha dato l'amico andbin è la corretta sintassi del linguaggio che c che non mi sovveniva.
Segui il suo consiglio e, ribadisco, i goto dimenticali...