FUNZIONI:PASSAGGIO DI PARAMETRI

di il
7 risposte

FUNZIONI:PASSAGGIO DI PARAMETRI

Salve ragazzi premetto che non sono un esperto in materia ma, un dilettante che deve affrontare l'esame sul linguaggio di programmazione c++.
La domanda è: ho notato che nel passaggio dei parametri per valore all'interno della definizione della funzione chiamata vi è l'istruzione "return " , e ho notato che se passo i parametri per valore, posso eseguire solo un operazione all'interno della funzione chiamata . Invece per quanto riguarda il passaggio di parametri per riferimento non vi è il return e mi fa effettuare più operazioni/istruzioni al suo interno.
E' solo una mera osservazione data da molti esempi in cui ho visto tale differenza.
Mi sbaglio? Se si, come faccio ad effettuare piu operazioni all'internoi di una funzione chiamata in cui vi è il passaggio di parametri per valore?
Grazie mille!!

7 Risposte

  • Re: FUNZIONI:PASSAGGIO DI PARAMETRI

    Non si è capito molto... Spiegati con degli esempi.
  • Re: FUNZIONI:PASSAGGIO DI PARAMETRI

    Si adesso ti posto degli esempi.
    Esempio con passaggio di parametri per valore o copia:
    // esempio di funzione
    #include <iostream>
    using namespace std;

    int somma (int a, int b)
    {
    int r;
    r=a+b;
    return r; //NOTARE la presenza del return
    }


    int main ()
    {
    int z;
    z = somma (5,3);
    cout << "Il risultato e' " << z;
    return 0;
    }

    Esempio con passaggio di parametri per riferimento o variabile:
    // passaggio di parametri per riferimento
    #include <iostream>
    using namespace std;

    void raddoppia (int &a, int &b, int &c)
    {
    a=a*2;
    b=b*2; //non presenza del return
    c=c*2;
    }

    int main ()
    {
    int x=1, y=3, z=7;
    raddoppia (x, y, z);
    cout << "x=" << x << ", y=" << y << ", z=" << z;
    return 0;
    }

    Il mio dubbio è:
    in molti esempi ho notato che nelle definizioni delle funzioni chiamate quando vi è il passaggio di parametri per valore dalla funzione chiamante a quella chiamata , vi è il return del valore.
    Invece quando vi è un passaggio di parametri per riferimento nella definizione delle funzioni chiamate non vi è piu il return.

    L'unica spiegazione che mi sono fatto è che , mentre nel passaggio di parametri per valore vi è una preventiva copia quindi il return serve per restituire il valore mentre nel passaggio di parametro per riferimenti si agisce direttamente sulla variabile e nel caso modificarla quindi non vi è bisogno del return nella definizione della funzione chiamata.

    Un altro dubbio: ma con il passaggio di parametri per riferimento, posso fare più operazioni/istruzioni all'interno del corpo della funzione chiamata?rispetto a un passaggio di parametri per valore?
  • Re: FUNZIONI:PASSAGGIO DI PARAMETRI

    C'è un po' di confusione anche per una terminologia poco appropriata.

    Non ha senso dire che puoi fare più operazioni/istruzioni perché non dipende dal tipo di passaggio dei parametri né dalla presenza del return o meno.

    Prima di tutto, la funzione può restituire o meno un valore con il return. Se non lo deve fare, la funzione sarà di tipo void indipendentemente dai parametri degli argomenti. Nelle funzioni void il return è implicito ma puoi sempre scriverlo

    void funzione()
    {
    printf("CIAO");
    return;
    }

    Se la funzione deve restituire un valore indipendentemente dagli argomenti, lo potrà fare scrivendo

    funzione funzione()
    {
    double v = sqrt(15.0);
    return v;
    }

    In una funzione puoi passare parametri come vuoi ad esempio

    void funzione(int a, int &b)
    {
    b=a*2;
    return;
    }

    In generale se li passi per riferimento è perché vuoi variare il loro valore all'interno della funzione. Al contrario, se li passi per copia non vuoi che il loro valore cambi.
  • Re: FUNZIONI:PASSAGGIO DI PARAMETRI

    Ti ringrazio tantissimo. Hai risolto un grande dubbio sorto in questi giorni perché è da due giorni che sto iniziando a studiare e "smanettare".

    Grazie!!
  • Re: FUNZIONI:PASSAGGIO DI PARAMETRI

    Carlom ha scritto:


    Hai risolto un grande dubbio sorto in questi giorni perché è da due giorni che sto iniziando a studiare e "smanettare".
    Domanda di rito: su quale manuale stai studiando il linguaggio?
  • Re: FUNZIONI:PASSAGGIO DI PARAMETRI

    Allora sto studiando su "C++ Fondamenti di programmazione" Deitel. Ho preso come riferimento tale libro però per comprendere meglio girovago su tanti siti con esempi e controesempi.
  • Re: FUNZIONI:PASSAGGIO DI PARAMETRI

    Carlom ha scritto:


    Allora sto studiando su "C++ Fondamenti di programmazione" Deitel. Ho preso come riferimento tale libro però per comprendere meglio girovago su tanti siti con esempi e controesempi.
    Mi duole informarti che il testo non è tra i migliori in circolazione, anzi.
    Se lo studio è finalizzato unicamente al superamento dell'esamino, transeat. Altrimenti meglio prendere in considerazione qualcosa di più serio.

    Quanto ai vari siti, consiglio molta prudenza. La qualità ingegneristica del materiale online è quasi sempre opinabile, occorre una discreta dose di esperienza per discernere gli esempi validi dal troppo ciarpame fuorviante e diseducativo.
Devi accedere o registrarti per scrivere nel forum
7 risposte