PDA

Visualizza la versione completa : [C] Differenza tra funzione e procedura


MatteoS86
24-05-2006, 19:20
Qual'e' la differenza????Aiuto (!!!) mi serve una risposta il prima possibile!!!!domani ho l'esame di informatica...

francesco_test
24-05-2006, 19:27
in c non esistono procedure ma solo funzioni.

una funzione e' una routine (insieme di istruzioni) che ritorna un solo valore, come le funzioni in matematica.
una procedura e' invece una routine che non ritorna nessun valore.

in pascal ci sono sia funzioni che procedure, cosi come in VB ci sono funzioni e procedure che in VB prendono il nome rispettivamente Function e Sub.

MatteoS86
24-05-2006, 19:32
le procedure operano anche con i puntatori?e le funzioni no?le procedure non cacciano nessun valore al contrario delle funzioni che cacciano un solo valore?

francesco_test
24-05-2006, 20:04
quando si passa ad una funzione o a una procedura l'indirizzo(invece che il valore ) di una variabile, entrambe possono modificarne il valore perche' ne e' stato passato il suo riferimento (o indirizzo) univoco in memoria alla funzione (procedura) permettondo cosi la sua modifica

MatteoS86
25-05-2006, 14:20
quale la differenza?(spiegalo in maniera che sia a me comprensibile --il + semplice possibile--)

http://digilander.libero.it/uzappi/C/C-funzioni.html

MatteoS86
25-05-2006, 14:36
correggimi se sbaglio:
una funzione un sottoprogramma in C che agisce su valori passati solo "per valore" e restituisce un valore al programma chiamante (attraverso il comando "return") e non pu operare con i puntatori alle variabili.
La procedura invece una funzione particolare che non ha valore di ritorno (manca il "return") e pu operare sia con i puntatori che con le varaibili normali (passaggio per "indirizzo" &/o passaggio "per valore"). Giusto?

francesco_test
25-05-2006, 15:06
il discorso deve essere avulso dal particolare linguaggio.
in generale in informatica la differenza tra procedure e funzioni e' quella che ti ho spiegato ieri, cioe' funzione n parametri in ingresso e solo uno in uscita, mentre la procedura ha n parametri in ingresso nessun valore in uscita.
quando si parla di puntatori (o passaggio per indirizzo che NON sono la stessa cosa ) si definisce la modalita' di passaggio di un parametro ad un sottoprogramma(funzione o procedura) che puo' permettere la modifica del parametro passato.
praticamente se ad un sottoprogramma passo un parametro per valore questo non puo' essere modificato, se passo un parametro per riferimento posso modificare il valore del parametro ma non il suo indirizzo, perche' tecnicamente (e questo complica i fatti) e' un passaggio per valore dell'indirizzo in memoria della variabile, il cui indirizzo in memoria non puo' essere modificato.
questo per stare sul semplice, altrimenti le cose si possono anche rendere piu' complicate. ma non credo sia il caso.

king64
25-05-2006, 16:28
Originariamente inviato da francesco_test
il discorso deve essere avulso dal particolare linguaggio.


Permettimi ma , una cosa sono i concetti informatici in generale ed un'altra sono le implementazioni nei particolari linguaggi di tali concetti . Ad es. il C sprovvisto di procedure ma queste possono essere "simulate" tramite le funzioni di tipo void . E comunque ben diverse dal concetto di procedura in senso ampio , che troviamo implementato nei compilatori Pascal ad es. Infatti mentre nei compilatori di questo linguaggio possiamo definire ed usare procedure all'interno di altre procedure , lo stesso non possiamo fare con le funzioni in C , anche di tipo void , in quanto soggette al vincolo di non poter definire al loro interno altre funzioni . A mio avviso sempre opportuno sottolineare a che linguaggio ci riferiamo . Saluti :ciauz:

oregon
25-05-2006, 16:55
Originariamente inviato da MatteoS86
correggimi se sbaglio:
una funzione un sottoprogramma in C che agisce su valori passati solo "per valore" e restituisce un valore al programma chiamante (attraverso il comando "return") e non pu operare con i puntatori alle variabili.
La procedura invece una funzione particolare che non ha valore di ritorno (manca il "return") e pu operare sia con i puntatori che con le varaibili normali (passaggio per "indirizzo" &/o passaggio "per valore"). Giusto?

E perche' una funzione dovrebbe ricevere parametri "solo per valore"?

francesco_test
25-05-2006, 21:03
ragazzi qui si rischia di impelagarci in un discorso senza fine.
alla fine conta come il professore di MatteoS86 ha spiegato il concetto e quindi come lo stesso vuole che i suoi alunni lo assimilino e lo espongano.


:ciauz: :ciauz: :ciauz:

Loading