Go Down

Topic: dubbio di programmazione (Read 1 time) previous topic - next topic

?R

#15
Dec 26, 2011, 10:47 am Last Edit: Dec 26, 2011, 10:50 am by er_like_no_other Reason: 1
ok ma se io dichiaro in due funzioni int a in due funzioni, non c'è alcun legame tra le due funzioni sono come due variabili distinte o sbaglio?
anche se la dichiaro nel void loop e in un'altra funzione void richiamata nel loop?
grazie
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

fonzod

si perchè come dice leo, le due variabili appartengono allo spazio dei nomi della rispettiva funzione
http://it.wikipedia.org/wiki/Funzione_(informatica)

?R

si può fare lo stesso ragionamento con le librerie?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

fonzod

le liubreri sono dei moduli sorgente di programma. se vuoi per esempio utilizzare, all'interno di un modulo sorgente "a", funzioni definite all'interno della libreria "b",, devi includere la libreria b all'innerno di a.
all'inizio di a avrai

Code: [Select]
#include "b.h"

o

Code: [Select]
#include <b.h>

federico


?R

si si ok ma mi chiedevo se dichiaro una libreria all'interno di una funzione anzi che per tutto il programma ho dei vantaggi o no?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

fonzod

no.
il codice sorgente è contenuto in dei file(contenitori o moduli). alcuni moduli -librerie- contengono del codice sorgente che puo essere utilizzato da altri moduli atteaverso l'utilizzo della direttiva #include.
quindi il concetto di libreria è al di fuori, al di sopra di funzione. la libreria contiene funzioni (subroutine).

un modulo sorgente (contenitore) può includere altri moduli sorgenti tra cui librerie
non ha senso parlare di libreria definita all'interno di funzione

federico

leo72

Ma.... il succo di tutto questo disquisire qual è? Dove vuoi arrivare?  :smiley-sweat:

?R

ok ok semplicemente voglio capire come ottimizzare il più possibile i miei programmi :)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72


lesto


non hanno il valore che avevano prima ma 0?


perchè dovrebbe valere 0? Se DICHIARI e basta una variabile (esempio int c;), àquella variabile contine un valore A CASO che corrisponde al valore che ha assunto l'ultima volta quella cella di memoria. per questo le varibili in C vanno sempre INIZIALIZZATE, ovvero gli si assegna un valore, prima di essere utilizzate in operazioni matematiche o altro. (esempio int c=0;)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

?R

da una funzione posso avere più di una variabile di return?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

MauroTec

Quote
da una funzione posso avere più di una variabile di return?


No, nel modo classico di return var, var ecc, questo è python.

Però puoi passare ad una funziona un riferimento ad una variabile e all'interno della funzione ne modifichi il valore, terminata la funzione il codice ritorna ad eseguire la riga dopo la chiamata alla funzione e già li puoi vedere il valore della variabile che hai passato come riferimento.

Es

byte ncol = 0;
byte nrow = 0;
int result = toDisplay(&ncol, &nrow, "my title")

Internamente a toDisplay, modifichi ncol e nrow, al ritorna dalla funzione puoi leggere il valore di queste variabili e verificare che non contengono più uno zero ma valore che hai dato dentro la funzione.

Ciao.
AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

?R

ok graie mille della spiegazione :) un po alla volta ce la faccio a capire bene come funzionano, dovrebbero insegnarmelo a scuola, ma non lo fanno...
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Oppure puoi usare delle variabili globali, il cui contenuto può essere modificato in qualunque parte dello sketch.

Go Up