Una funzione può essere vista come un sottoprogramma dove vengono aggregati gruppi di istruzioni.
Le funzioni in C sono utilizzate proprio per evitare di replicare porzioni di codice; infatti invocare un sottoprogramma vuol dire mandare in esecuzione la porzione di codice ad esso relativa.
In questo esempio è stata sviluppata la funzione potenza.
/*
Le funzioni in C
Una funzione può essere vista come un sottoprogramma dove vengono aggregati gruppi di istruzioni.
Le funzioni in C sono utilizzate proprio per evitare di replicare porzioni di codice;
infatti invocare un sottoprogramma vuol dire mandare in esecuzione la porzione di codice
ad esso relativa.
*/
#include <stdio.h>
// Dichiarazione del prototipo della funzione head
void head();
// Dichiarazione del prototipo della funzione potenza
int potenza (int base, int esp);
int main(void){
// Variabili che passo alla funzione potenza
int x, y;
// Invoco la funzione head
head();
// Acquisisco i valori
printf("Inserisci base: ");
scanf("%d", &x);
printf("Inserisci esponente: ");
scanf("%d", &y);
// Invoco la funzione potenza e gli passo i valori x, y
printf("--> %d elvato a %d vale %d", x, y, potenza(x, y));
//Fine
printf("\n*** FINE PROGRAMMA ***");
}
// Definizione della funzione head
void head(){
printf("*** PROGRAMMA CHE TRAMITE UNA FUNZIONE CALCOLA IL VALORE DI X ELEVATO A Y ***\n\n");
}
// Definizione della funzione potenza
int potenza (int base, int esp){
/* Varibili locali della funzione potenza con scope (visibilità)
solo dentro la stessa funzione*/
int i, ris = 1;
/* Implemento un ciclo for per calcolare il valore pari a base^esp
se base = 2 ed esp = 3 ---> debbo ciclare 3 volte per fare il prodotto 2*2*2,
quindi ottenere il valore 8 che equavale a scrivere 2^3*/
for(i = 0; i < esp; i++){
ris = ris * base;
// base = 2, esp = 3
// Step 1 --> i = 0 --> 1 * 2 = 2 --> ris = 2
// Step 2 --> i = 1 --> 2 * 2 = 4 --> ris = 4
// Step 3 --> i = 2 --> 4 * 2 = 0 --> ris = 8
// Step 4 --> i = 3 --> esce dal ciclo poichè i non è più < esp
}
printf("\n...sto elaborando!!!\n");
// Attende 1 secondo
sleep(1);
// Valore di ritorno della funzione
return ris;
}