Visualizzazione dei risultati da 1 a 7 su 7

Discussione: c++ capire funzioni

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    c++ capire funzioni

    mmm, ciao a tutti, premetto che ho già guardato online la guida relativa al c++, fin ora penso di aver capito tutto, stando agli esercizi che sono riuscito ad eseguire..tuttavia ora sono al punto delle funzioni e non ne ho capito bene l'utilizzo; stando alle mie supposizioni le funzioni in c++ servono per racchiudere codice che sarà poi utilizzato successivamente, se richiamato, dico bene?? ora.. volendo fare una funzione che sommi due numeri:
    codice:
    #include <cstdlib>
    #include <iostream>
    
    
    using namespace std;
    int main(int argc, char *argv[])
    {
        int a;
        int b;
        cout << "\n dammi il primo numero\n";
        cin >> a;
        cout << "\n dammi il secondo numero\n";
        cin >> b;
        int somma(int a, int b);
        cout << a+b;
        system("PAUSE");
        return 0;
    }
    bene, il programmino(stupido) in se funziona, ma non come voglio io, a me interessa capire come poter effettuare la funzione, la quale parte solamente se richiamata, in questo modo invece segue il flusso del programma; dovrei metterla al di fuori di main?Vi ringrazio e scusate per l'ignoranza.

  2. #2
    codice:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    
    int somma(int a, int b);
    
    int main(int argc, char *argv[])
    {
        int a;
        int b;
        cout << "\n dammi il primo numero\n";
        cin >> a;
        cout << "\n dammi il secondo numero\n";
        cin >> b;
        cout << somma(a,b);
        system("PAUSE");
        return 0;
    }
    
    int somma(int a, int b)
    {
        return a+b;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    mmm..potresti commentarmelo?! Perchè è questo che mi serve, capirne l'uso.
    Dal tuo code non ho capito una cosa:

    codice:
    #include <cstdlib>
    #include <iostream>
    using namespace std;
    
    int somma(int a, int b);   // a cosa serve dichiararla qua?
    
    int main(int argc, char *argv[])
    {
        int a;
        int b;
        cout << "\n dammi il primo numero\n";
        cin >> a;
        cout << "\n dammi il secondo numero\n";
        cin >> b;
        cout << somma(a,b);
        system("PAUSE");
        return 0;
    }
    
    int somma(int a, int b)  // la funzione non potrebbe essere dichiarata interamente all'inizio e poi              // richiamarla solamente senza il contenuto delle parentesi graffe? 
    {
        return a+b;
    }

  4. #4
    a cosa serve dichiararla qua?
    Si tratta del prototipo della funzione; in sostanza, dici al compilatore che in seguito definirai una funzione con quel nome, che accetta quei parametri e che ha quel valore di ritorno; questo consente al compilatore di effettuare controlli di sintassi anche senza avere in mano la funzione vera e propria. In questo caso avrei potuto anche evitare il prototipo e semplicemente spostare il corpo della funzione prima del main, ma è buona abitudine, specie nei progetti più grandi, dove i prototipi stanno in file separati (header), dichiarare sempre all'inizio le funzioni prima di definirle.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    ok, grazie della dritta, essendo agli inizi non sapevo di questa prassi.. l'ultima cosa;
    sempre nella funzione:
    se al posto del return, metto un cout(quindi per stampare a video), i valori della somma, una volta avviato l'exe diventano decimali...
    5+3= 84469696
    con il return si presenta tutto norlame, questo perchè? eppure i tipi int a, b sono sempre gli stessi.
    Grazie della pazienza e dell'aiuto.

  6. #6
    Allora, quando tu metti il return stai dicendo che la funzione restituirà quel risultato; solitamente infatti le funzioni non scrivono su cout, ma restituiscono un risultato, in modo che il chiamante possa decidere cosa farci. In ogni caso se non specifichi un return in una funzione che ha un tipo restituito non-void il valore restituito è indefinito (o meglio, se non sbaglio non dovrebbe neanche essere possibile omettere il return in questi casi, ma se il compilatore te lo lascia fare il valore di solito è indefinito).
    Comunque ti consiglio vivamente di leggerti per bene il capitolo del tuo libro dedicato alle funzioni, visto che non è nulla di così difficile.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    ok, ti ringrazio per il consiglio.

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.