English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base di C++

Controllo di flusso C++

Funzione in C++

Array e stringhe C++

Strutture dati C++

Classi e oggetti C++

Puntatore in C++

Ereditarietà in C++

Tutorial di STL in C++

Manuale di riferimento C++

Tipi di funzione definiti dall'utente in C++

In questo tutorial, imparerai a utilizzare le funzioni per risolvere diversi problemi singoli.

Per meglio comprendere i parametri e il valore di ritorno delle funzioni, possiamo classificare le funzioni definite dall'utente in:

Consideriamo una situazione in cui è necessario verificare i numeri primi. Attraverso i 4 modi diversi di definire la funzione dell'utente descritti sopra, è possibile risolvere i seguenti problemi.

Esempio 1: Non vengono passati parametri né viene restituito alcun valore

#include <iostream>
using namespace std;
void prime();
int main()
{
    // Nessun parametro viene passato a prime()
    prime();
    return 0;
}
// Il tipo di ritorno della funzione è void, perché non restituisce alcun valore.
void prime();
{
    int num, i, flag = 0;
    cout << "Inserisci un numero intero positivo per la verifica: ";
    cin >> num;
    for (i = 2; i <= num / 2; ++i)
    {
        if (num % i == 0)
        {
            flag = 1; 
            break;
        }
    }
    if (flag == 1)
    {
        cout << num << " non è un numero primo.";
    }
    else
    {
        cout << num << " è un numero primo.";
    }
}

Nel programma sopra, la funzione prime() viene chiamata in main(), ma senza parametri.

La funzione prime() viene utilizzata per ottenere un numero positivo dall'utente e verificare se il numero è un numero primo.

Poiché il tipo di ritorno di prime() è void, la funzione non restituisce alcun valore.

Esempio 2: Non vengono passati parametri, ma c'è un valore di ritorno

#include <iostream>
using namespace std;
int prime();
int main()
{
    int num, i, flag = 0;
    // Nessun parametro viene passato a prime()
    num = prime();
    for (i = 2; i <= num / 2; ++i)
    {
        if (num % i == 0)
        {
            flag = 1;
            break;
        }
    }
    if (flag == 1)
    {
        cout << num << " non è un numero primo.";
    }
    else
    {
        cout << num << "  è un numero primo.";
    }
    return 0;
}
// Il tipo di ritorno della funzione è int
int prime()
{
    int n;
    printf("Inserisci un numero intero positivo per la verifica: ");
    cin >> n;
    return n;
}

Nel programma sopra, la funzione prime() viene chiamata da main() senza parametri.

La funzione prime() ottiene un numero intero positivo dall'utente. Poiché il tipo di ritorno della funzione è int, restituisce il numero inserito alla funzione main().

Poi, nel main() stesso, verifica se il numero è primo e lo stampa a schermo.

Esempio 3: Parametro passato ma senza valore di ritorno

#include <iostream>
using namespace std;
void prime(int n);
int main()
{
    int num;
    cout << "Inserisci un numero intero positivo per la verifica: ";
    cin >> num;
    
    // Il parametro num viene passato alla funzione prime()
    prime(num);
    return 0;
}
/* La chiamata alla funzione non ha valore di ritorno. Pertanto, il tipo di ritorno della funzione è void. */
void prime(int n)
{
    int i, flag = 0;
    for (i = 2; i <= n/2; ++i)
    {
        if (n % i == 0)
        {
            flag = 1;
            break;
        }
    }
    if (flag == 1)
    {
        cout << n << " non è un numero primo.";
    }
    else {
        cout << n << " è un numero primo.";
    }
}

Nel programma sopra, prima si richiede all'utente di inserire un numero positivo, che viene memorizzato nella variabile num.

Poi, passa num alla funzione prime(), dove verifica e stampa se il numero è primo.

Poiché, la funzione prime() restituisce il tipo void, la funzione prime() non ha valore di ritorno.

Esempio 4: Parametro passato e valore restituito.

#include <iostream>
using namespace std;
int prime(int n);
int main()
{
    int num, flag = 0;
    cout << "Inserisci un numero intero positivo per la verifica: ";
    cin >> num;
    // Il parametro num viene passato alla funzione check()
    flag = prime(num);
    if(flag == 1)
        cout << num << " non è un numero primo.";
    else
        cout << num << " è un numero primo.";
    return 0;
}
/* Questa funzione restituisce un valore intero. */
int prime(int n)
{
    int i;
    for(i = 2; i <= n/2; ++i)
    {
        if(n % i == 0)
            return 1;
    }
    return 0;
}

Nel programma sopra, viene chiesto all'utente di inserire un numero intero positivo e viene memorizzato nella variabile num.

Poi, viene passato il numero a funzione prime(), dove viene verificato se il numero è un numero primo.

Poiché il tipo di ritorno di prime() è int, viene restituito 1 o 0 al metodo chiamante main(). Se il numero è un numero primo, viene restituito 1. Se non lo è, viene restituito 0.

Nel metodo main(), il valore 1 o 0 restituito viene memorizzato nella variabile flag e il testo corrispondente viene stampato a schermo.

Quale metodo è migliore?

Tutti e quattro i programmi elencati sopra forniscono lo stesso risultato di output e sono tecnicamente programmi corretti.

Non ci sono specifiche rigorose per la scelta del metodo.

Scegli un metodo specifico in base alla situazione specifica e al modo in cui intendi risolvere il problema.