Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Istruzione salto C

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Istruzione salto C

Messaggioda Foto Utentewizard » 16 set 2013, 16:56

Salve
Volevo avere un suggerimento riguardo un pezzo di codice
La situazione che devo sbrogliare è la seguente:

if(condizione1)
{
statement1;
statement2;
statement3;
}
else if(condizione2)
//esegui statement2
else
//esegui statement3

La mia domanda è: come posso saltare agli statement2 e 3 senza usare il goto e usare funzioni o macro? Esiste qualche "trucchetto" che magari si acquisisce con l'esperienza?
Qualora non ci fosse, quale soluzione è la migliore?
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

0
voti

[2] Re: Istruzione salto C

Messaggioda Foto UtenteAjKDAP » 16 set 2013, 17:02

Spiegati meglio, dici di volere eseguire subito gli statement2 e 3, ma quali? quelli all'interno del primo IF ? oppure quelli successivi?

In ogni caso una possibilità è di aggiungere un'ulteriore variabile booleana da inserire assieme ad una determinata condizione utilizzando l'operatore "and" (&&).

Codice: Seleziona tutto
nuovaVariabile=false;
if(condizione1 && nuovaVariabile)
...
'˙˙˙·٠•● Alberto ●•٠·˙˙˙'
________________________
http://www.ajk.altervista.org
Avatar utente
Foto UtenteAjKDAP
1.250 2 6 9
Expert EY
Expert EY
 
Messaggi: 796
Iscritto il: 17 mag 2006, 0:13
Località: nella coda dei pronti

0
voti

[3] Re: Istruzione salto C

Messaggioda Foto Utentec1b8 » 16 set 2013, 17:05

Potresti fare un esempio più concreto? Sinceramente non ho compreso bene il tuo dubbio.

Ps.: vedo che non sono l'unica ad avere questo dubbio...
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[4] Re: Istruzione salto C

Messaggioda Foto Utentewizard » 16 set 2013, 17:13

Provo a spiegare meglio visti i dubbi di Foto UtenteAjKDAP e Foto Utentec1b8
Si verifica la condizione1: vengono eseguiti gli statement1, 2 e 3...non ho problemi di alcun genere.
Si verifica la condizione2: vorrei saltare allo statement2 ed eseguire statements2 e 3 (statements contenuti nel primo if)...stesso discorso se non dovesse verificarsi né la condizione1 né 2: vorrei saltare allo statement3 ed eseguirlo
Faccio un esempio pratico utilizzando il goto (anche se mi hanno detto che nei linguaggi alto livello è da evitare)

if(condizione1)
{
statement1;
secondo_statement: statement2;
terzo_statement: statement3;
}
else if(condizione2)
goto secondo_statement;
else
goto terzo_statement;

Spero di essere stato più chiaro :-)
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

2
voti

[5] Re: Istruzione salto C

Messaggioda Foto Utentec1b8 » 16 set 2013, 17:21

Vista così io scriverei:
Codice: Seleziona tutto
if(condizione1)
     statement1;
if(condizione1 || condizione2)
     statement2;

statement3;

Infatti lo statement3 deve essere sempre eseguito.
Lo statement1 viene eseguito solo per condizione1.
Lo statement2 per condizione1 o condizione2.
Non usi goto e scrivi gli statement una sola volta
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[6] Re: Istruzione salto C

Messaggioda Foto Utentewizard » 16 set 2013, 17:27

Già!!! Così dal punto di vista logico va bene e non c'è bisogno di cambiare o aggiungere nulla :D
Lo proverò e ti farò sapere (anche se non credo ci saranno problemi)
Grazie :-)
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

0
voti

[7] Re: Istruzione salto C

Messaggioda Foto Utentewizard » 16 set 2013, 18:31

In realtà non va bene Foto Utentec1b8
Infatti quando si verifica la condizione1 esegue (giustamente) solo lo statement1 e 3 ignorando completamente il 2
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

0
voti

[8] Re: Istruzione salto C

Messaggioda Foto UtenteAjKDAP » 16 set 2013, 18:35

Ne sei sicuro ? :roll:

Leggiti questo.
'˙˙˙·٠•● Alberto ●•٠·˙˙˙'
________________________
http://www.ajk.altervista.org
Avatar utente
Foto UtenteAjKDAP
1.250 2 6 9
Expert EY
Expert EY
 
Messaggi: 796
Iscritto il: 17 mag 2006, 0:13
Località: nella coda dei pronti

0
voti

[9] Re: Istruzione salto C

Messaggioda Foto Utentewizard » 16 set 2013, 18:43

Foto UtenteAjKDAP ne sono sicuro al 100% semplicemente perché il risultato è sotto i miei occhi...lo statement2 viene ignorato quando si verifica la condizione1 perché viene eseguito il primo if; dopo che viene eseguito lo statement1 viene eseguito quello 3...non mi sto mi inventanto nulla perché il risultato ottenuto è mancante del valore che sarebbe uscito eseguendo lo statement2 ;-)
Avatar utente
Foto Utentewizard
25 1 5
Frequentatore
Frequentatore
 
Messaggi: 162
Iscritto il: 12 gen 2013, 17:48

0
voti

[10] Re: Istruzione salto C

Messaggioda Foto UtenteAjKDAP » 16 set 2013, 18:57

Sicuro di aver messo bene tutte le parentesi? :D

Il codice di Foto Utentec1b8 è corretto, quindi presumo che ci sia un tuo errore nel codice. Puoi postare la parte di codice interessata?
'˙˙˙·٠•● Alberto ●•٠·˙˙˙'
________________________
http://www.ajk.altervista.org
Avatar utente
Foto UtenteAjKDAP
1.250 2 6 9
Expert EY
Expert EY
 
Messaggi: 796
Iscritto il: 17 mag 2006, 0:13
Località: nella coda dei pronti

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite