Programación de computadoras - Funciones

Una función es un bloque de código organizado y reutilizable que se utiliza para realizar una única acción relacionada. Las funciones proporcionan una mejor modularidad para su aplicación y un alto grado de reutilización de código. Ya has visto varias funciones comoprintf() y main(). Estas se denominan funciones integradas proporcionadas por el lenguaje mismo, pero también podemos escribir nuestras propias funciones y este tutorial le enseñará cómo escribir y usar esas funciones en el lenguaje de programación C.

Lo bueno de las funciones es que son famosas con varios nombres. Los diferentes lenguajes de programación los nombran de manera diferente, por ejemplo, funciones, métodos, subrutinas, procedimientos, etc. Si encuentra alguna terminología de ese tipo, imagínese el mismo concepto, que vamos a discutir en este tutorial.

Comencemos con un programa en el que definiremos dos matrices de números y luego de cada matriz, encontraremos el número más grande. A continuación se muestran los pasos para averiguar el número máximo de un conjunto dado de números:

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

Traduzcamos el programa anterior en lenguaje de programación 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 );
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Si tiene claro el ejemplo anterior, será fácil entender por qué necesitamos una función. En el ejemplo anterior, solo hay dos conjuntos de números, conjunto1 y conjunto2, pero considere una situación en la que tenemos 10 o más conjuntos de números similares para averiguar los números máximos de cada conjunto. En tal situación, tendremos que repetir, procesando 10 o más veces y, finalmente, el programa se volverá demasiado grande con el código repetido. Para manejar tal situación, escribimos nuestras funciones donde tratamos de mantener el código fuente que será usado una y otra vez en nuestra programación.

Ahora, veamos cómo definir una función en el lenguaje de programación C y luego, en las secciones siguientes, explicaremos cómo usarlas.

Definición de una función

La forma general de una definición de función en el lenguaje de programación C es la siguiente:

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

Una definición de función en la programación C consta de un encabezado de función y un cuerpo de función . Aquí están todas las partes de una función:

  • Return Type- Una función puede devolver un valor. losreturn_typees el tipo de datos del valor que devuelve la función. Algunas funciones realizan las operaciones deseadas sin devolver un valor. En este caso, return_type es la palabra clavevoid.

  • Function Name- Este es el nombre real de la función. El nombre de la función y la lista de parámetros juntos constituyen la firma de la función.

  • Parameter List- Un parámetro es como un marcador de posición. Cuando se invoca una función, se pasa un valor como parámetro. Este valor se denomina parámetro o argumento real. La lista de parámetros se refiere al tipo, orden y número de parámetros de una función. Los parámetros son opcionales; es decir, una función puede no contener parámetros.

  • Function Body - El cuerpo de la función contiene una colección de declaraciones que define lo que hace la función.

Llamar a una función

Al crear una función C, da una definición de lo que tiene que hacer la función. Para usar una función, tendrá que llamar a esa función para realizar una tarea definida.

Ahora, escribamos el ejemplo anterior con la ayuda de una función:

#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 );
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

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

Funciones en Java

Si tiene claras las funciones en la programación C, entonces también es fácil entenderlas en Java. La programación Java los nombra comomethods, pero el resto de conceptos siguen siendo más o menos iguales.

A continuación se muestra el programa equivalente escrito en Java. Puede intentar ejecutarlo para ver el resultado:

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;
   }
}

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

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

Funciones en Python

Una vez más, si conoce el concepto de funciones en la programación en C y Java, Python no es muy diferente. A continuación se muestra la sintaxis básica para definir una función en Python:

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

Usando esta sintaxis de función en Python, el ejemplo anterior se puede escribir de la siguiente manera:

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

Cuando se ejecuta el código anterior, produce el siguiente resultado:

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