Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[JAVA][C] Un break che salta fuori di due blocchi

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[JAVA][C] Un break che salta fuori di due blocchi

Messaggioda Zane » lun mar 06, 2006 6:58 pm

Ciao ragazzi, una curiosità più che un vero problema.

Se ho

Codice: Seleziona tutto
while (true)
   {
   switch (pippo)
      {
      case (1)
         {
         break due volte!
         Cioè, esci dallo switch ma anche dal while
         }
      }
   }


Cosa ne dite? esiste un break doppio?
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Re: [JAVA][C] Un break che salta fuori di due blocchi

Messaggioda Boo » lun mar 06, 2006 7:02 pm

Non saprei
Provato con break e return?
Avatar utente
Boo
Silver Member
Silver Member
 
Messaggi: 1276
Iscritto il: sab dic 04, 2004 3:41 pm

Messaggioda Leo » lun mar 06, 2006 7:11 pm

Che sappia io nn esiste un break doppio.... Comunque, invece di fare

Codice: Seleziona tutto
while (true)
   {
   switch (pippo)
      {
      case (1)
         {
         break due volte!
         Cioè, esci dallo switch ma anche dal while
         }
      }
   }


non ti conviene fare:

Codice: Seleziona tutto
flag = 1;
while (flag)
   {
   switch (pippo)
      {
      case (1)
         {
             flag = 0;
             break;
         }
      }
   }
Leo
Responsabile Tecnico MegaLab.it
Avatar utente
Leo
Silver Member
Silver Member
 
Messaggi: 1683
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara


Messaggioda thomas » lun mar 06, 2006 7:41 pm

break nel while??? brrrrrrrrrrrr ZANEEEEEEEEEEE
"Am too late to get too high to get, too late to wash my face and hands "
Mr Hudson and the Library - Too Late Too Late
Avatar utente
thomas
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 6858
Iscritto il: mer lug 09, 2003 6:30 pm
Località: Parma

Messaggioda Zane » mar mar 07, 2006 8:25 am

Leo ha scritto:non ti conviene fare:

Si, sicuramente, ma speravo ci fosse una cosa un po' più raffinata: l'uso dei flag mi fa sempre molto spaghetti coding [:-D]

thomas ha scritto:break nel while??? brrrrrrrrrrrr ZANEEEEEEEEEEE

Adoro while(true) e for(;;)!

I miei libri di testo riportano che è pericoloso (nel senso che deve essere gestito con attenzione, anche se sinceramente non capisco bene cosa ci sia da usare con prudenza...), ma non scorretto o poco elegante.
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda Silver Black » mar mar 07, 2006 11:24 am

Zane ha scritto:Si, sicuramente, ma speravo ci fosse una cosa un po' più raffinata: l'uso dei flag mi fa sempre molto spaghetti coding [:-D]


Allora, il problema è che vuoi fare un ciclo infinito (While True) ma poi però nell'istruzione case vuoi interrompere il ciclo al determinarsi di una certa condizione! E' contorto!

Fai come ti hanno già suggerito: il While valorizzalo al controllo di una variabile (flag) e nel Select case imposta tale variabile al valore di uscita.

Questo è il modo giusto di usare un ciclo While, non un ciclo che prima è infinito e poi c'è una condizione di uscita all'interno, se no tanto vale che usi l'orrendo GOTO!!!! [:-D] Il ciclo infinito va usato se e solo se... è infinito!! Cioè fino alla chiusura del processo. Altrimenti devi sempre controllare un valore.
Sergio Pappalardo aka Silver Black
https://www.silvercybertech.com
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1148
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Italia

Messaggioda thomas » mar mar 07, 2006 12:01 pm

[8D]
Non sarei riuscito a spiegarmi meglio!
"Am too late to get too high to get, too late to wash my face and hands "
Mr Hudson and the Library - Too Late Too Late
Avatar utente
thomas
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 6858
Iscritto il: mer lug 09, 2003 6:30 pm
Località: Parma

Messaggioda morskott » mar mar 07, 2006 11:55 pm

prova a etichettare il while, tipo
Codice: Seleziona tutto
ciclo:while(true){
switch(qualcosa){
case 1:{
 //qualcosa
break ciclo;
}
}
}

dovrebbe funzionare
Avatar utente
morskott
Aficionado
Aficionado
 
Messaggi: 147
Iscritto il: lun nov 03, 2003 7:40 pm

Messaggioda Silver Black » mer mar 08, 2006 12:12 am

morskott ha scritto:prova a etichettare il while, tipo


W l'eleganza, la leggibilità e la riusabilità del codice... [:p] [:p] [:p]
Sergio Pappalardo aka Silver Black
https://www.silvercybertech.com
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1148
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Italia

Messaggioda Zane » mer mar 08, 2006 11:36 am

Grazie a tutti per gli interessanti interventi.. come dicevo, era più una curiosità che una reale necessità. [afro]
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda Silver Black » mer mar 08, 2006 11:42 am

Zane ha scritto:Grazie a tutti per gli interessanti interventi.. come dicevo, era più una curiosità che una reale necessità. [afro]


Sei sempre il benvenuto! [:-D]
Sergio Pappalardo aka Silver Black
https://www.silvercybertech.com
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1148
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Italia

Messaggioda Boo » mer mar 08, 2006 11:47 am

Zane ha scritto:Grazie a tutti per gli interessanti interventi.. come dicevo, era più una curiosità che una reale necessità. [afro]

Continua a seguirci mi raccomando.
Avatar utente
Boo
Silver Member
Silver Member
 
Messaggi: 1276
Iscritto il: sab dic 04, 2004 3:41 pm

Messaggioda M@ttia » mer mar 08, 2006 6:44 pm

morskott ha scritto:
Codice: Seleziona tutto
ciclo:while(true)
{
  switch(qualcosa)
  {
    case 1:
    {
      //qualcosa
      break ciclo;
    }
  }
}
Beh d'accordo che non sia l'eleganza fatta codice, però in fin dei conti è proprio quello che chiedeva lo Zane dopotutto, x curiosità o bisogno che si voglia...
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda morskott » mer mar 08, 2006 6:57 pm

la mia soluzione non è affatto elegante, era solo per risolvere in quel modo questo determinato problema, so benissimo che dovrebbe esser risolto in una maniera piu "elegante"
Avatar utente
morskott
Aficionado
Aficionado
 
Messaggi: 147
Iscritto il: lun nov 03, 2003 7:40 pm

Messaggioda Silver Black » mer mar 08, 2006 7:01 pm

M@ttia ha scritto:Beh d'accordo che non sia l'eleganza fatta codice, però in fin dei conti è proprio quello che chiedeva lo Zane dopotutto, x curiosità o bisogno che si voglia...


No, questo è un salto incondizionato. E il GOTO proprio non mi va giù, come scrivevo nel mio primo post di questo thread:

Questo è il modo giusto di usare un ciclo While, non un ciclo che prima è infinito e poi c'è una condizione di uscita all'interno, se no tanto vale che usi l'orrendo GOTO!!!!


Se no tanto vale lasciare perdere il While e scrivere (in pesudo-codice)

Codice: Seleziona tutto
10: Inizio blocco
20: fai qualcosa
30: fai qualcosa
40: if <condizione> then goto 60
50: goto 10
60: fine blocco


Evviva lo spaghetti code!!! Evviva il Basic!!! [:p]
No dai, non il goto nè le etichette in linguaggi ad alto livello magari ad oggetti.

Comunque è solo la mia opinione... si resta amici! [angel] [cazzegg]
Sergio Pappalardo aka Silver Black
https://www.silvercybertech.com
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1148
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Italia

Messaggioda atomik » mer mar 08, 2006 8:11 pm

while(true) si usa per lo piu' nei daemon, dove non ci deve essere nessuna condizione d'uscita...


PS:
Usare i break in questo modo non e' bene, piu' che una questione di eleganza del codice e' una questione di buona programmazione..
Avatar utente
atomik
Senior Member
Senior Member
 
Messaggi: 266
Iscritto il: gio feb 24, 2005 1:42 pm
Località: Catania

Messaggioda TixXio » lun mag 01, 2006 10:40 am

Suggerisco così
Codice: Seleziona tutto
for(esci = 1; esci;;)
{  switch (pippo)
   {
      case (1)
         {
             esci = 0;
             break;
         }
    }
Avatar utente
TixXio
Neo Iscritto
Neo Iscritto
 
Messaggi: 1
Iscritto il: lun mag 01, 2006 10:37 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising