V I S U A L I Z Z A D I S C U S S I O N E |
mrfal |
Inserito il - 19/10/2008 : 15:15:15 Ciao, vorrei ke qualcuno mi aiutasse a capire meglio la differenza tra procedure e funzioni e tra passaggio di parametri per indirizzo e passaggio di parametri per valore. Inoltre,vorrei capire meglio quando si usano le funzioni e quando le procedure Sono graditi esempi.
Grazie in anticipo, ciao |
14 U L T I M E R I S P O S T E (in alto le più recenti) |
jwein |
Inserito il - 11/01/2009 : 10:30:17 Dimenticavo, anche con le struct il passaggio per riferimento è utile. Si può dire che quello esplicito ( uso di puntatori ) sia utile ogni volta che serva modificare direttamente un oggetto o accedere a un oggetto di grosse dimensioni. Ma comunque è difficile trarre conclusioni oggettive... |
jwein |
Inserito il - 10/01/2009 : 18:21:58 Non penso che ci siano casi in cui la procedura possa essere vista come un caso particolare di funzione, neanche quando si passano i valori per riferimento. La funzione, a causa della sua conformazione ( ritorno del valore ) può essere inserita all'interno di una espressione.
Citazione:
E' giusto dire: - per qualsiasi operazione di lettura si usa la procedura con passaggio x riferimento; - per qualsiasi operazione di scritturastampa si usa il passaggio x valore?
Non mi sembra una conclusione adatta. Anzi, porta ai cosiddetti 'effetti collaterali'. Io direi (per quanto riguarda la procedura): per operazioni di lettura di un singolo valore o di calcolo aritmetico che restituiscano un singolo valore, si usa il passaggio per valore, mentre per operazioni che richiedano il salvataggio e la restituzione di più valori (riferito anche al vettore), si usa il passaggio per riferimento.
Ma non è saggio fare affermazioni assolute, in ogni caso. Dipende dall'esigenza del momento. Se non bisogna lavorare su vettori (con cui viene simulato di default il passaggio per riferimento, dato che è come se venisse passato un puntatore al primo elemento situato in memoria) è bene evitare operazioni con passaggio per riferimento, a meno che non si abbia poca memoria a disposizione (sistemi embedded) o non si abbiano particolari esigenze di velocità...
|
mrfal |
Inserito il - 26/10/2008 : 15:21:16 E' giusto dire: - per qualsiasi operazione di lettura si usa la procedura con passaggio x riferimento; - per qualsiasi operazione di scritturastampa si usa il passaggio x valore? |
mrfal |
Inserito il - 24/10/2008 : 16:09:59 Quindi: uso le procedure x inserire, cancellare visualizzare dei dati; uso le funzioni x effettuare calcoli.
se devo ricercare un dato devo usare una funzione con il passaggio di parametri x valore?
se devo modificare un dato precedentemente inserito (tipo c'è un elenco di nomi di studenti e voglio modificare il nome di uno studente) devo usare una procedura con il passaggio di parametri x riferimento?
grazie |
SD83 |
Inserito il - 21/10/2008 : 16:49:45 non ti devi scusare di niente.. |
genius |
Inserito il - 21/10/2008 : 10:12:29 Citazione: Messaggio inserito da SD83
una procedura in c è una funzione che non restituisce nessun valore.. tipo restituito void
in sostanza quello volevo dire che le funzioni restituiscono un valore le procedure invece compiono delle azioni ma nn restituiscono niente..
non volevo riprenderti, scusa se è sembrato questo. Volevo solo sottolineare che il c è un caso particolare, in cui una procedura è vista come caso particolare delle funzioni. In genere però esiste la differenza ke ho sottolineato precedentemente... |
SD83 |
Inserito il - 20/10/2008 : 21:00:39 una procedura in c è una funzione che non restituisce nessun valore.. tipo restituito void
in sostanza quello volevo dire che le funzioni restituiscono un valore le procedure invece compiono delle azioni ma nn restituiscono niente.. |
genius |
Inserito il - 20/10/2008 : 17:01:46 Funzioni e procedure NON sono la stessa cosa. SEMBRANO la stessa cosa in c/c++ perchè in realtà in questo linguaggio NON esistono le procedure ma solo le funzioni.
Funzione: è un sottoprogramma che restituisce un valore Procedura: è un sottoprogramma che restituisce un "comportamento"
Per quanto riguarda parametri per valore e per indirizzo ti ha risposto correttamente SD83 |
SD83 |
Inserito il - 19/10/2008 : 17:37:32 te l'ho fatto prima dai in input un numero e vuoi in output il quadrato..
int quadrato(int a) { return a*a; }
se qui passassi l'indirizzo di a modificheresti il valore di a |
mrfal |
Inserito il - 19/10/2008 : 17:04:19 un esempio concreto? |
SD83 |
Inserito il - 19/10/2008 : 17:02:36 quando non hai necessità di modificare il dato |
mrfal |
Inserito il - 19/10/2008 : 16:18:57 ma in quali casi conviene utilizzare il passaggio di parametri per valore? |
SD83 |
Inserito il - 19/10/2008 : 15:31:38 passare parametri per valore significa passare al sottoprogramma il valore della variabile, se il sottoprogramma modifica tale valore la variabile globale non viene modificata passare parametri per indirizzo vuol dire passare l'indirizzo della variabile, quindi ogni modifica effettuata dal sottoprogramma è una modifica alla variabile globale |
SD83 |
Inserito il - 19/10/2008 : 15:29:28 funzioni e procedure sono sostanzialmente la stessa cosa.. solo che le funzioni si utilizzano quando si ha bisogno che tale sottoprogramma restituisca un valore ad esempio gli dai in input un numero e vuoi come output il suo quadrato la procedura la usi per esempio per stampare un messaggio. il tipo restituito è void cioè nessun tipo |