a. Un programma in C è un insieme di funzioni;

b. Ogni funzione prende in ingresso un insieme di argomenti e restituisce un valore.

c. Ci deve sempre essere una funzione principale main()

Fino ad ora abbiamo visto la sola funzione main() e le funzioni di libreria (#include).

Vediamo di seguito:

a. Come si definiscono le funzioni (definizione di funzione)

b. Come si usano le funzioni (chiamata o attivazione di funzione).

Questo si potra' vedere quando costruiremo  le funzioni di libreria.

Definiamo le funzioni

I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato:

tipo-ritornato nome-funzione(lista-parametri) {

                             dichiarazioni istruzioni

                                                           }

Le definizioni di funzioni possono comparire in qualsiasi ordine all’interno di uno o pi`u file sorgente, ma non possono essere spezzate in pi`u file. 

Analizziamo questo esempio della potenza:

 La dichiarazione int potenza(int m, int n) all’inizio del programma `e detta prototipo della funzione, indica che potenza si aspetta due argomenti interi e restituisce un intero.

Il prototipo deve essere in accordo con la definizione della funzione stessa (a parte per i nomi dei parametri).

La prima linea della funzione potenza dichiara i nomi e i tipi dei parametri e il tipo del risultato.

I nomi dei parametri sono locali a potenza, cos`ı come le variabili i, p dichiarate all’interno di potenza.

L’istruzione return ritorna il controllo al chiamante, eventualmente restuituendo il valore specificato.

Per le funzioni in cui l’istruzione return non compare, il controllo ritorna al chiamante alla fine dell’esecuzione della funzione.

Anche la funzione speciale main puo' avere un’istruzione return, che ritorna il controllo al chiamante, cioe' l’ambiente in cui il programma e' eseguito. 

Esempio: costruiamo la funzione potenza

Il seguente programma `e costituito da una funzione power(m,n) che eleva un intero m alla potenza intera n, e dalla funzione speciale main che utilizza potenza. 

potenza=m^n

ESEMPIO di una funzione prototipo che calcola la potenza di un numero

# include int potenza(int m, int n); /* prototipo */

main() { int i;

for (i=0; i<10; ++i)

    printf("%d %d %d\n", i, potenza(2,i), potenza(-3,i));

        return 0; }

 

int potenza(int base, int n) {

                   int i,p;

                  p=1;

                  for (i=1; i<=n; ++i)

                         p=p*base;

                            return p; /* restituisce il valore di p al chiamante */

                             }

Chiamata ad una funzione: Programma calcolatrice

Programma in turbo C che calcola le quattro operazioni:

#include
#include
float divisione(float a,float b);             //chiamata alla funzione divisione
float somma(float a,float b);               //chiamata alla funzione somma
float moltiplicazione(float a,float b);  //chiamata alla funzione moltiplicazione
float sottrazione(float a,float b);        //chiamata alla funzione sottrazione

 

//funzione main
int main(float)
{
float a, b, som,sot,mol, div;//dichiaro le variabili globali
printf(" CALCOLATRICE \n");
printf("_______________________________________________");
printf("\nCALCOLIAMO LE QUATTRO OPERAZIONI\n");
printf("\n_______________________________________________");
printf("\nInserisci il primo numero\n");
scanf("%f",&a);
printf("Inserisci il secondo numero\n");
scanf("%f",&b);
som= somma(a,b);
mol=moltiplicazione(a,b);
sot=sottrazione(a,b);
div=divisione(a,b);
printf("_______________________________________________");
printf("\n \n SOMMA=%-15.3f",som);
printf("\n\n sottrazione=%-15.3f",sot);
printf("\n\nmoltiplicazione=%-15.3f",mol);
printf("\n\n divisione=%-10.3f",div);
printf("\n_______________________________________________");
getch();
}
//costruisco le funzioni

float somma(float a, float b){
float som;
som=a+b;
return(som);
}
float sottrazione(float a,float b)
{ float sot;
sot=a-b;
return(sot);
}
float moltiplicazione(float a,float b)
{ float mol;
mol=a*b;
return(mol);
}
float divisione(float a,float b)
{ float div;
div=a/b;
return(div);
}

Funzione perimetro

Funzione goto

Utilizziamo la funzione

gotoxy(int column, int line)

per muovere le scritture sullo schermo.

Questa funzione e' molto utile per abbellire la nostra console di uscita o il nostro output.

Vediamo il seguente programma che visualizza tre scritture posizionate in tre coordinate distinte che possiamo variare a piacere:

 

#include
#include
#include
#include

using namespace std;

void gotoxy( int column, int line ) {
COORD coord;
coord.X = column;
coord.Y = line;
SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord);
}

main() {
gotoxy(15,10);
cout<<"Elettronicadoc";
gotoxy(30,14);
cout<<"Elettronicadoc";
gotoxy(15,20);
printf("GRAZIE A TUTTI I FANS DI ELETTRONICADOC");
getch();
}

Altro metodo per costruire la funzione goto

Eseguiamo adesso un altro metodo per utilizzare la funzione gotox,y del vecchio C della borland, utilizzando il software Dev C++.

Scriviamo quindi due scritte con la funzione printf spostandoci nelle coordinate dichiarate dalla funzione gotoxy.

 

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<conio.h>

void gotoxy(int x, int y) {
                for (int i = 0; i < y; i++) {
                printf("\n");
                }
                for (int i = 0; i < x; i++) {
                printf(" ");
                }
                }
main()
{     gotoxy(20,10);
      printf("CIAO A TUTTI");
      gotoxy(30,5);
      printf("da Elettronicadoc");
      getch();
      }