Return e Void

Ciao a tutti volevo chiedervi due cosine....

A cosa serve la funzione return?

E che cosa cambua tra queste due righe di codice scritte qui sotto?

Void Loop()
Void Loop(void)

Grazie

return non è una funzione ma un istruzione.
Server per restituire un valore da una funzione creata, se la funzione ha tipo di ritorno diverso da void.
Se la funzione ha tipo ritorno void, return può essere usata per terminare la funzione in seguito a una condizione.

La sintassi funzione() e funzione(void), sono equivalenti, dichiarano che la funzione non accetta parametri, essendo equivalenti è quasi sempre usata la sintassi di parentesi vuote (), evitando di scrivere la void.

ESEMPIO return

int miafunzione() //Funzione che ha tipo di ritorno int=intero, return è obbligatorio che ci sia.
{

return 17;

}

void funzione()// Funzione che non ritorna nessun valore, return è facoltativo e serve solo per terminare la funzione
{
int i=0;
while(i<100){

i++;
if(i==15) return; // esco dalla funzione e tutte le istruzioni che seguono non vengono eseguite

}

Serial.println(“prova”);// Quando i arriva a 15 la funzione termina con return, e queste righe non vengono eseguite

Serial.println(“prova”);

}

Ci sono ebook sul linguaggio c di arduino, e anche sul linguaggio c in generale, sarebbe bene per approfondire il linguaggio, perché in nessun forum di programmazione è ammesso fare domande sulle nozioni base del linguaggio, si presume che una lettura veloce la si sia data a qualche manuale :wink:

torn24:
return non è una funzione ma un istruzione.
Server per restituire un valore da una funzione creata, se la funzione ha tipo di ritorno diverso da void.
Se la funzione ha tipo ritorno void, return può essere usata per terminare la funzione in seguito a una condizione.

La sintassi funzione() e funzione(void), sono equivalenti, dichiarano che la funzione non accetta parametri, essendo equivalenti è quasi sempre usata la sintassi di parentesi vuote (), evitando di scrivere la void.

ESEMPIO return

int miafunzione() //Funzione che ha tipo di ritorno int=intero, return è obbligatorio che ci sia.
{

return 17;

}

void funzione()// Funzione che non ritorna nessun valore, return è facoltativo e serve solo per terminare la funzione
{
int i=0;
while(i<100){

i++;
if(i==15) return; // esco dalla funzione e tutte le istruzioni che seguono non vengono eseguite

}

Serial.println(“prova”);// Quando i arriva a 15 la funzione termina con return, e queste righe non vengono eseguite

Serial.println(“prova”);

}

Ci sono ebook sul linguaggio c di arduino, e anche sul linguaggio c in generale, sarebbe bene per approfondire il linguaggio, perché in nessun forum di programmazione è ammesso fare domande sulle nozioni base del linguaggio, si presume che una lettura veloce la si sia data a qualche manuale :wink:

Grazie

@Ernesto, per favore se rispondi ad un msg posto subito prima, non quotarlo. Si capisce lo stesso che replichi a quello. Grazie

torn24:
return non è una funzione ma un istruzione.
Server per restituire un valore da una funzione creata, se la funzione ha tipo di ritorno diverso da void.

Se la funzione ha tipo ritorno void, return può essere usata per terminare la funzione in seguito a una condizione.

Return puo sempre essere usato per terminare (uscire) da una funzione.
Puó essere reso UNO ( uno solo) valore.

esempio:

int miafunzione(int valoreentrata, int secondovalore) 
{
return (valoreentrata + secondovalore);
}
risulatato = miafunzione ( 1,2);

La funziona calcola la soma dei 2 valori dati e la rende alla variabile risulatato.

return da solo 1 valore, non é possibile renderne 2 o di piú. Se la funzione deve dare piú variabili come risultato allora devi lavorare con variabili globali o puntatori (modo migliore di lavorare in C)

Ciao Uwe

uwefed:
return da solo 1 valore, non é possibile renderne 2 o di piú. Se la funzione deve dare piú variabili come risultato allora devi lavorare con variabili globali o puntatori (modo migliore di lavorare in C)

Oppure ritornare una struct ;).

uwefed:
return da solo 1 valore, non é possibile renderne 2 o di piú. Se la funzione deve dare piú variabili come risultato allora devi lavorare con variabili globali o puntatori (modo migliore di lavorare in C)

i microcontrollori Avr supportano le tuple grazie al cospicuo numero di registri che hanno.

quindi per ritornare due interi

uint32_t rettuple()
{
    int a=1;
    int b=2;
    ret (a<<16)|b;
}

.....
ret = rettuple();
a = ret>>16
b = ret | 0xFF;

tutte le operazioni di bitwise che vedete saranno rimosse dal compilatore ottenendo appunto il ritorno di una tupla.