Programmazione per computer - Funzioni

Una funzione è un blocco di codice organizzato e riutilizzabile che viene utilizzato per eseguire una singola azione correlata. Le funzioni forniscono una migliore modularità per la tua applicazione e un elevato grado di riutilizzo del codice. Hai già visto varie funzioni comeprintf() e main(). Queste sono chiamate funzioni integrate fornite dal linguaggio stesso, ma possiamo scrivere anche le nostre funzioni e questo tutorial ti insegnerà come scrivere e utilizzare quelle funzioni nel linguaggio di programmazione C.

La cosa buona delle funzioni è che sono famose con diversi nomi. Diversi linguaggi di programmazione li denominano in modo diverso, ad esempio funzioni, metodi, sub-routine, procedure, ecc. Se ti imbatti in una terminologia di questo tipo, immagina semplicemente lo stesso concetto, che discuteremo in questo tutorial.

Cominciamo con un programma in cui definiremo due array di numeri e poi da ogni array troveremo il numero più grande. Di seguito sono riportati i passaggi per scoprire il numero massimo da un determinato insieme di numeri:

1. Get a list of numbers L1, L2, L3....LN
2. Assume L1 is the largest, Set max = L1
3. Take next number Li from the list and do the following
4.    If max is less than Li
5.       Set max = Li
6.    If Li is last number from the list then
7.       Print value stored in max and come out
8. Else prepeat same process starting from step 3

Traduciamo il programma sopra in linguaggio di programmazione C -

#include <stdio.h>

int main() {
   int set1[5] = {10, 20, 30, 40, 50};
   int set2[5] = {101, 201, 301, 401, 501};
   int i, max;
   
   /* Process first set of numbers available in set1[] */
   max = set1[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set1[i] ) {
         max = set1[i];
      }
      i = i + 1;
   }
   
   printf("Max in first set = %d\n", max );
    
   /* Now process second set of numbers available in set2[] */
   max = set2[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set2[i] ) {
         max = set2[i];
      }
      i = i + 1;
   }
   printf("Max in second set = %d\n", max );
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Max in first set = 50
Max in second set = 501

Se sei chiaro sull'esempio precedente, diventerà facile capire perché abbiamo bisogno di una funzione. Nell'esempio sopra, ci sono solo due serie di numeri, serie1 e serie2, ma considera una situazione in cui abbiamo 10 o più serie di numeri simili per scoprire i numeri massimi di ciascuna serie. In una situazione del genere, dovremo ripetere, elaborando 10 o più volte e alla fine il programma diventerà troppo grande con codice ripetuto. Per gestire tale situazione, scriviamo le nostre funzioni in cui cerchiamo di mantenere il codice sorgente che verrà utilizzato ancora e ancora nella nostra programmazione.

Vediamo ora come definire una funzione in linguaggio di programmazione C e poi nelle sezioni successive spiegheremo come usarle.

Definizione di una funzione

La forma generale di una definizione di funzione nel linguaggio di programmazione C è la seguente:

return_type function_name( parameter list ) {
   body of the function
   
   return [expression];
}

Una definizione di funzione nella programmazione C consiste in un'intestazione di funzione e un corpo di funzione . Ecco tutte le parti di una funzione:

  • Return Type- Una funzione può restituire un valore. Ilreturn_typeè il tipo di dati del valore restituito dalla funzione. Alcune funzioni eseguono le operazioni desiderate senza restituire un valore. In questo caso, return_type è la parola chiavevoid.

  • Function Name- Questo è il nome effettivo della funzione. Il nome della funzione e l'elenco dei parametri insieme costituiscono la firma della funzione.

  • Parameter List- Un parametro è come un segnaposto. Quando viene richiamata una funzione, si passa un valore come parametro. Questo valore è denominato parametro o argomento effettivo. L'elenco dei parametri si riferisce al tipo, all'ordine e al numero dei parametri di una funzione. I parametri sono opzionali; ovvero, una funzione non può contenere parametri.

  • Function Body - Il corpo della funzione contiene una raccolta di istruzioni che definisce cosa fa la funzione.

Chiamare una funzione

Durante la creazione di una funzione C, dai una definizione di ciò che la funzione deve fare. Per utilizzare una funzione, dovrai chiamare quella funzione per eseguire un'attività definita.

Ora, scriviamo l'esempio sopra con l'aiuto di una funzione:

#include <stdio.h>

int getMax( int set[] ) {
   int i, max;
   
   max = set[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set[i] ) {
         max = set[i];
      }
      i = i + 1;
   }
   return max;
}
main() {
   int set1[5] = {10, 20, 30, 40, 50};
   int set2[5] = {101, 201, 301, 401, 501};
   int max;

   /* Process first set of numbers available in set1[] */
   max = getMax(set1);
   printf("Max in first set = %d\n", max );
    
   /* Now process second set of numbers available in set2[] */
   max = getMax(set2);
   printf("Max in second set = %d\n", max );
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Max in first set = 50
Max in second set = 501

Funzioni in Java

Se le funzioni nella programmazione C sono chiare, è facile comprenderle anche in Java. La programmazione Java li denomina comemethods, ma il resto dei concetti rimane più o meno lo stesso.

Di seguito è riportato il programma equivalente scritto in Java. Puoi provare ad eseguirlo per vedere l'output -

public class DemoJava {
   public static void main(String []args) {
      int[] set1 = {10, 20, 30, 40, 50};
      int[] set2 = {101, 201, 301, 401, 501};
      int max;

      /* Process first set of numbers available in set1[] */
      max = getMax(set1);
      System.out.format("Max in first set = %d\n", max );

      /* Now process second set of numbers available in set2[] */
      max = getMax(set2);
      System.out.format("Max in second set = %d\n", max );
   }
   public static int getMax( int set[] ) {
      int i, max;
      max = set[0];
      i = 1;    
      
      while( i < 5 ) {
         if( max <  set[i] ) {
            max = set[i];
         }
         i = i + 1;
      }
      return max;
   }
}

Quando il programma di cui sopra viene eseguito, produce il seguente risultato:

Max in first set = 50
Max in second set = 501

Funzioni in Python

Ancora una volta, se conosci il concetto di funzioni nella programmazione C e Java, Python non è molto diverso. Di seguito è riportata la sintassi di base per definire una funzione in Python:

def function_name( parameter list ):
   body of the function
   
   return [expression]

Usando questa sintassi della funzione in Python, l'esempio sopra può essere scritto come segue:

def getMax( set ):
   max = set[0]
   i = 1   
   
   while( i < 5 ):
      if( max <  set[i] ):
         max = set[i]
      
      i = i + 1
   return max

set1 = [10, 20, 30, 40, 50]
set2 = [101, 201, 301, 401, 501]

# Process first set of numbers available in set1[]
max = getMax(set1)
print "Max in first set = ", max
    
# Now process second set of numbers available in set2[]
max = getMax(set2)
print "Max in second set = ", max

Quando il codice sopra viene eseguito, produce il seguente risultato:

Max in first set =  50
Max in second set =  501