Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    6

    c++ Procedure e funzioni

    Salve ragazzi,....non riesco a capire la differenza tra procedura e funzione....mi spiego meglio,,,il prof ha detto ke quando il sottoprogramma ci restituisce un solo valore è una funzione altrimenti è una procedura.
    Ho visto ke però all interno di una procedura è possibile cmq farer dei calcoli e restituire il risultato di quel calcolo e non soltanto come aveva detto il prof ke è utilizzata prettamente quando non restituisce alcun valore e quindi una semplice operazione di cout per fare ad esempio una stampa....cioè, una procedura puo restituire o meno un valore(perke il prof ha detto ke nn restituisce nessun valore relativo al tipo della funzione)...????....e se volete anke un kiarimento tra passaggio per riferimento e per valore...(se non erro nel riferimento e possibile fare delle modifiche sulla variabile fornita mentre per valore no)...grazie ragazzi..ma sono un po confuso sui questo argomento

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: c++ Procedure e funzioni

    Originariamente inviato da corallo
    Salve ragazzi,....non riesco a capire la differenza tra procedura e funzione....mi spiego meglio,,,il prof ha detto ke quando il sottoprogramma ci restituisce un solo valore è una funzione altrimenti è una procedura.
    Una funzione può restituire UN SOLO valore, in ogni caso.

    In linea di massima sono la stessa cosa, la differenza è che una funzione restituisce qualcosa mentre una procedura non ha un valore di ritorno.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3

    Re: c++ Procedure e funzioni

    Originariamente inviato da corallo

    Ho visto ke però all interno di una procedura è possibile cmq farer dei calcoli e restituire il risultato di quel calcolo e non soltanto come aveva detto il prof ke è utilizzata prettamente quando non restituisce alcun valore e quindi una semplice operazione di cout per fare ad esempio una stampa....

    cioè, una procedura puo restituire o meno un valore(perke il prof ha detto ke nn restituisce nessun valore relativo al tipo della funzione)...????....
    Perché il tuo prof con ogni probabilità stava facendo considerazioni di base e non strettamente relative al c/c++.
    In molti linguaggi di programmazione ci sono differenze proprio sintattiche tra funzioni e procedure, mentre nel c/c++ la differenza tra funzione e procedura è puramente concettuale: esiste una sola sintassi.

    Quindi lo stesso identico codice è definito procedura se restituisce void e non ha un return, mentre è definito funzione se restituisce una altro tipo di dati diverso da void e ha almeno un return.


    infatti tu giustamente hai notato che
    all interno di una procedura è possibile cmq farer dei calcoli e restituire il risultato di quel calcolo
    solo che in quel caso non è più una procedura ma una funzione...
    proprio perché nel c/c++ funzioni e procedure sono sintatticamente la stessa cosa, la differenza è solo concettuale (ritorna un valore o non lo ritorna?)


    Per quanto riguarda passaggio per riferimento e per valore è giusto come hai capito tu, non c'è nulla da aggiungere

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219

    Re: c++ Procedure e funzioni

    Quindi una procedura non ritorna un valore.
    Ma se io questa funzione:
    codice:
    bool stampa_eta(int eta)
    {
        bool result=false;
        if(eta>=0 && eta<120)
        {
            cout << "Eta' : " << eta<<endl;
            result=true;
        } 
        return result;
    }
    La sto a tutti gli effetti usando come una procedura.Ufficialmente è una procedura o una funzione?

    Originariamente inviato da corallo
    ....e se volete anke un kiarimento tra passaggio per riferimento e per valore...(se non erro nel riferimento e possibile fare delle modifiche sulla variabile fornita mentre per valore no)...grazie ragazzi..ma sono un po confuso sui questo argomento
    Ogni volta che si chiama una procedura o una funzione passandogli dei parametri, il valore dei parametri viene copiato in altre aree di memoria,quindi se dichiaro:
    codice:
    void modifica(int a)
    {
        a=5;
    }
    E' a tutti gli effetti una procedura sterile, perchè a viene copiato localmente ed è un parametro formale,se lo modifico non modifico il valore originale che ho passato alla funzione, ma modifico solo la sua copia (che è temporanea, e cessa di esistere quando la procedura termina).
    Se invece alla funzione gli passo un puntatore:
    codice:
    void modifica(int *a)
    {
        *a=5;
    }
    int main(int argc, char **argv)
    {
        int var;
        modifica(&var);
        return 0;
    }
    Allora si che ha effetto, perchè localmente in a viene copiato l' indirizzo di var, e quando si accede a *a, si accede al valore a cui punta a, cioè si accede al valore contenuto nell' indirizzo di var.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465

    Re: Re: c++ Procedure e funzioni

    Originariamente inviato da ramy89
    La sto a tutti gli effetti usando come una procedura.
    In che senso? Mi sfugge qualcosa ...

    ... E' a tutti gli effetti una procedura sterile ... Allora si che ha effetto
    Sì, ma cosa c'entra tutto ciò con le procedure e le funzioni ? Anche questo mi sfugge ...

    Le procedure e le funzioni si differenziano per il risultato restituito sullo stack non per quello che fanno o le locazioni di memoria che modificano (se lo fanno).

    E quella procedura non è "sterile" perché perde tempo e potrebbe essere usata come "ritardo" in un qualsiasi programma ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Aveva chiesto anche un chiarimento sui passaggi di parametro per valore e per riferimento.

    In che senso? Mi sfugge qualcosa ...
    Nel senso che viene usata solo per eseguire codice (stampare l' età),il valore di ritorno è solo per sapere se c'è un errore o meno.Io il concetto di procedura lo avevo in mente così.

    E quella procedura non è "sterile" perché perde tempo e potrebbe essere usata come "ritardo" in un qualsiasi programma ...
    Ok che l' istruzione di per se prende tempo cpu, ma non ha effetto sulla memoria.

  7. #7
    Originariamente inviato da ramy89
    Nel senso che viene usata solo per eseguire codice (stampare l' età),il valore di ritorno è solo per sapere se c'è un errore o meno.Io il concetto di procedura lo avevo in mente così.
    Se restituisce un valore di ritorno concettualmente è una funzione.
    Un valore di errore è a tutti gli effetti una valore di ritorno!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da ramy89
    Nel senso che viene usata solo per eseguire codice (stampare l' età),il valore di ritorno è solo per sapere se c'è un errore o meno.Io il concetto di procedura lo avevo in mente così.
    Un valore di ritorno, qualsiasi cosa voglia dire, è comunque indicativo di una funzione.

    Ok che l' istruzione di per se prende tempo cpu, ma non ha effetto sulla memoria.
    Non importa assolutamente se non ha effetto sulla memoria.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.