3. Curso C++: Funciones I - Declaración y Definición

3. Curso C++: Funciones I - Declaración y Definición

Las funciones en C++ son un conjunto de instrucciones que realizan una tarea específica. En general, toman ciertos valores de entrada, llamados parámetros, y proporcionan un valor de salida o valor de retorno. En C++, tanto los parámetros como el valor de retorno son opcionales, pero comprender el concepto de las funciones es esencial para escribir código modular y reutilizable.

Las funciones son fundamentales en C++, ya que todos los programas contienen al menos una función: la función main(). Comprender cómo funcionan las funciones es crucial para escribir código eficiente. Vamos a explorar cómo se declaran y se definen las funciones en un programa C++.

1. Prototipos de Funciones en C++ 📋

En C++, es obligatorio usar prototipos. Un prototipo es una declaración previa de una función que indica al compilador qué esperar. Básicamente, es la estructura de la función sin el cuerpo y termina con un punto y coma (;). Los prototipos permiten que el compilador valide llamadas a funciones antes de que estas se definan.

Estructura de un Prototipo de Función:

[tipo de almacenamiento] <tipo_valor_retorno> <nombre_función>(<lista_parámetros>);
  • Tipo de almacenamiento: Puede ser extern o static. Si no se especifica, será extern por defecto. Por el momento, solo usaremos funciones extern.

  • Tipo de valor de retorno: Define qué tipo de dato devolverá la función. Si no devuelve nada, usamos void.

  • Nombre de la función: Debe ser descriptivo. Es buena práctica usar nombres claros como BuscaTelefono o calculaPromedio, lo que facilita la lectura del código.

  • Lista de parámetros: Son los valores de entrada. Pueden ser variables de cualquier tipo y se separan con comas. Si no hay parámetros, se usan paréntesis vacíos: func().

Ejemplo de Prototipo de Función:

int Mayor(int a, int b);

Este prototipo indica que la función Mayor aceptará dos enteros como parámetros y devolverá un entero.

Nota: Los nombres de los parámetros son opcionales en el prototipo, pero agregarlos mejora la comprensión del código.

2. Definición de Funciones en C++ ✍️

Después de declarar una función, debemos definirla, es decir, proporcionar el cuerpo de la función con las instrucciones que se ejecutarán cuando la función sea llamada.

Sintaxis de una Definición de Función en C++:

[tipo de almacenamiento] <tipo_valor_retorno> <nombre_función>(<lista_parámetros>) {
  // Cuerpo de la función
  [sentencias]
}
  • Tipo de almacenamiento: Igual que en el prototipo (extern o static).

  • Cuerpo de la función: Las instrucciones que ejecutará la función.

Ejemplo de Definición de Función:

int Mayor(int a, int b) {
  if (a > b) {
    return a;
  } else {
    return b;
  }
}

En este ejemplo, la función Mayor toma dos enteros y devuelve el mayor de ambos.

3. La Función main() en C++ 🏁

La función main() es especial porque es el punto de entrada de cualquier programa en C++. Su definición siempre debe existir para que el programa pueda ejecutarse correctamente.

Ejemplo de Función main() en C++:

int main() {
  // Código principal
  return 0; // Indica que el programa terminó correctamente
}

El valor 0 indica que el programa finalizó sin errores. Otros valores se usan para indicar errores específicos.

4. Prototipos vs. Definiciones en C++ ⚖️

  • Prototipos: Son útiles para indicar al compilador la existencia de una función antes de su uso. Permiten definir el flujo del programa sin importar el orden de las funciones en el código.

  • Definiciones: Son la implementación real de la función. Deben proporcionar el cuerpo con el código que realiza la tarea.

En C++, los prototipos de funciones suelen ubicarse al principio del archivo o en ficheros de cabecera (.h), que luego se incluyen con #include.

5. Ejemplo Completo de un Programa en C++ 🖥️

#include <iostream>

// Prototipo de función
int Mayor(int a, int b);

int main() {
  int x = 5;
  int y = 10;
  int resultado = Mayor(x, y);
  std::cout << "El mayor es: " << resultado << std::endl;
  return 0;
}

// Definición de la función
int Mayor(int a, int b) {
  return (a > b) ? a : b;
}

En este programa, el prototipo de la función Mayor se declara antes de main(), y luego se define al final. Esto asegura que el compilador conozca la función cuando se usa en main().

6. Resumen Rápido sobre Funciones en C++ 📜

  • Prototipo: Declara la función e indica al compilador qué esperar.

  • Definición: Implementa la función y contiene el código ejecutable.

  • main(): Punto de entrada de cualquier programa en C++.

7. Desafío Práctico sobre Funciones en C++ 🚀

Escribe una función llamada Menor que tome dos números enteros y devuelva el menor de los dos. Declara el prototipo al principio del archivo y luego define la función después de main(). ¿Podés hacerlo? 😊