Le funzioni nel C++: suddividere un programma in più parti, La breve guida di Metal H sul C++ - Capitolo III

« Older   Newer »
  Share  
Metal H
view post Posted on 28/2/2006, 14:15




La lezione è fatta per gli iscritti al corso, ma rimarrà a disposizione di tutti. Se volete postare nei topic delle lezioni, iscrivetevi qui.
Infine, prima di cominciare, ricordo che è possibile riportare quanto scritto qui in altri siti o forum, chi lo fa è però pregato di inserire il mio nick nei riconoscimenti.


Eccomi qui per la terza lezione, che avrà come argomento le funzioni.
Entro pochi giorni metterò il primo post.
 
Top
Metal H
view post Posted on 2/3/2006, 21:26




Ok, cominciamo.
Prima di tutto, cos'è una funzione?
Una funzione è un segmento di codice (un insieme di istruzioni) che può essere eseguito più volte e in più punti di un programma attraverso una semplice istruzione, che prende il nome di chiamata alla funzione.
Vediamo, tanto per cambiare, la sintassi della dichiarazione di una funzione:
CODICE
tipo_funzione nome_funzione ( argomenti )
{
   codice_della_funzione
}

Allora, analizziamo questa sintassi. Il tipo della funzione indica il tipo di dato che essa restituisce. Ad esempio, una funzione che calcola il cubo di un numero restituirà al programma un numero intero o decimale. Il tipo, quindi, può essere int, double etc.
Il nome della funzione può essere qualsiasi sequenza di caratteri non contenete spazi od operatori e non uguale al nome di un'altra funzione o di una parola riservata, come ad esempio return o int.
Gli argomenti della funzione sono generalmente delle variabili, separate da virgole, che la funzione riceve e può elaborare. Il blocco di codice indica ciò che la funzione deve eseguire.
Dopo questa piccola parte di teoria, nel prossimo post metterò un esempio di funzione.

 
Top
Metal H
view post Posted on 4/3/2006, 13:39




CODICE
double cubo ( double x )
{
   return x * x * x;
}

Questo esempio di funzione restituisce il cubo del numero x passatole come argomento.
La definizione, cioè il segmento di codice contenente il compito della funzione, deve essere scritto prima del suo utilizzo, quindi prima di main. Se lo volete scrivere dopo, doete mettere prima di main un prototipo di funzione, di questo tipo:
CODICE
double cubo ( double );

Il prototipo informa il programma che più avanti troverà la definzione della funzione cubo.
Ora, la restituzione di un valore da parte di una funzione si ottiene con la parola chiave return. Quando una funzione incontra un'istruzione return, restituisce il valore previsto da return e rimanda il controllo del programma a main.
Vediamo ora come utilizzare una funzione praticamente:
CODICE
cout << cubo ( 5 );

Questa riga di codice, inserita in un programma dove compare la precedente definizione della funzione cubo, manda in output il valore 15.
Questa riga
CODICE
cout << cubo ( a + b );

Calcola la somma delle variabili a e b, eleva il risultato alla tre e lo manada in output.
Quest'istruzione
CODICE
a = cubo ( 50.6 );

assegna alla variabile a il cubo di 50,6.
 
Top
Metal H
view post Posted on 13/3/2006, 13:50




Ahhhh... ed eccoci ai file di intestazione...
Questi file, generalmente in formato .h, sono file in cui vengono definite delle parti del programma o delle funzioni che il programma userà. Più avanti vedremo l'importanza che questi file hanno per le classi.
Per adesso, noi non faremo uso dei file di intestazione nei nostri programmini, però è utile sapere alcune cose riguardo ai file di intestazione della Libreria Standard del C++, un'insieme di classi e funzioni in C++ distribuito con ogni pacchetto software per la programmazione in questo linguaggio.
Ad esempio, nei programmi precedenti, abbiamo incluso il file iostream. Questo file è la versione nuova del file iostream.h. Questo file serve per la maggior parte delle nostre operazioni di I/O (Input/Output). Se lo includiamo, possiamo usare cout, cin, e tantissimi altri manipolatori e funzioni.
Ecco un altro paio di file di intestazione della Libreria Standard che ci saranno utili durante il corso:

math.h contiene molte funzioni matematiche. Nuova versione: cmath

stdlib.h contiene funzioni per convertire acuni tipi di dato. A voi interessa perché contiene rand, la funzione per randomizzare i numeri. Nuova versione: cstdlib

Per includere un file in un programma, si utilizza la direttiva al preprocessore #include.
Esempio:
CODICE
#include <iostream>
 
Top
matt955
view post Posted on 15/4/2006, 10:49




quand'è che continuerà il corso?
 
Top
IlGenioNero
view post Posted on 15/4/2006, 14:17




QUOTE (Metal H @ 4/3/2006, 14:39)
Vediamo ora come utilizzare una funzione praticamente:
CODE
cout << cubo ( 5 );

Questa riga di codice, inserita in un programma dove compare la precedente definizione della funzione cubo, manda in output il valore 15.

io non ho capito alcune cosa di questa parte...
1) Dovè l'istruzione ke attribuisce a cubo lo sua funzione???
2) 5 elevato a 3 non 125?? no 15...
 
Top
Metal H
view post Posted on 17/4/2006, 14:38




@IlGenioNero
1) è scritta prima
2) hai ragione correggo
@matt955
scusa hai ragione in questo periodo ho un po' trascurato il corso xke ho avuto un po' di impegni scolastici. ma non preoccupatevi, non interromperò il corso!

 
Top
IlGenioNero
view post Posted on 17/4/2006, 20:42




A scusa, Non mi ero accorto del x*x*x....
XD
 
Top
Metal H
view post Posted on 26/4/2006, 20:37




Ok, proseguiamo pure, e vediamo le funzioni con una lista di parametri vuota.
Si presentano sotto questa forma:
CODICE
void funzione ( void );

La parola chiave void indica un tipo di dato che in realtà... è l'ASSENZA di un tipo di dato. La funzione sopra è una funzione che non prende argomenti e non restituisce alcun valore.
Programma di esempio:
CODICE
#include <iostream>


void funzione ();

int main ()
{
   funzione ();

   return 0;
}

void funzione ()
{
   cout << "Questa funzione non prende argomenti << endl;
}

Questo programma mostra come viene gestito il controllo da una funzione che non prende argomenti.
Notare l'omissione di void nella lista di parametri.
 
Top
IlGenioNero
view post Posted on 29/4/2006, 14:03




l'utilità di questa funzione quel è???
 
Top
Metal H
view post Posted on 1/5/2006, 20:53




Nessuna, queste sono funzioni esemplificative.
 
Top
Metal H
view post Posted on 9/5/2006, 17:05




Procediamo ora con le funzioni inline.
Queste funzioni vengono dichiarate con la seguente sintassi:
CODICE
inline tipo nome ( param ) { funzione }

Queste funzioni sono molto veloci da eseguire per il programma, in quanto viene effettuata più di una copia della funzione in diversi punti del programma. In genere, però, l'uso delle funzioni inline aumenta le dimensioni del codice eseguibile.
 
Top
IlGenioNero
view post Posted on 13/5/2006, 18:24




Vorrei porre un domande sulla condizione if...
io vorrei fare in modo ke se un numero viene intero succede questo
se il numero è con la virgola succede un altra cosa...
ho provato a vare cosi:
if (a==int)
ma non funziona....
come faccio???
---------EDIT------------
Come faccio a dare l'istruzione di una radice quadrata (o anke cubica ecc..)???
faccio un esempio
double b=(qui voglio mettere la radice quadrata di 9);
--------EDIT2--------------
Ho risolto il fatto della radice

Edited by IlGenioNero - 13/5/2006, 21:05
 
Top
IlGenioNero
view post Posted on 14/5/2006, 11:51




Ho creato un programma ke calcola l'intersezione fra rette o fra retta e circonferenza....
Ora volgio fare in modo ke queste rette vengono rappresentate dal programma come devo fare???
 
Top
Metal H
view post Posted on 15/5/2006, 13:02




CITAZIONE (IlGenioNero @ 13/5/2006, 19:24)
Vorrei porre un domande sulla condizione if...
io vorrei fare in modo ke se un numero viene intero succede questo
se il numero è con la virgola succede un altra cosa...
ho provato a vare cosi:
if (a==int)
ma non funziona....
come faccio???

Per questo serve l'overloading, o sovraccarico, delle funzioni. Sarebbe stato uno dei prossimi argomenti, quindi lo spiego adesso.
Puoi creare una funzione che svolga un compito, e poi crearne un altra con nome identico ma tipo di dato diverso. In questo modo, il compilatore sceglierà automaticamente la versione da utilizzare ogni volta che la chiamerai.
Vediamo un esempio:
CODICE
#include <iostream.h>

int quadrato ( int i ) { return i * i; }

double quadrato ( double d ) { return d * d; }

int main ( )
{
   int numeroIntero = 0;
   int numeroDecimale = 0.0;

   cout << "Inserire un numero intero e uno decimale: "
   cin >> numeroIntero >> numeroDecimale;
   cout << numeroIntero << "^2 = " << quadrato ( numeroIntero ) << endl;
   cout << numeroDecimale << "^2 = " << quadrato ( numeroDecimale ) << endl;
   
   system ( "pause" );
   return 0;
}

Come potrete vedere, se provate il programma, il codice è perfettamente funzionante: il programma decide da solo se usare la versione int o quella double di quadrato, a seconda del parametro passato alla funzione.
 
Top
15 replies since 28/2/2006, 14:15   1557 views
  Share