En este tema, aprenderemos sobre los parámetros de función y los tipos de retorno en C++. Las funciones son bloques de código reutilizables que realizan una tarea específica. Para que una función sea flexible y útil, a menudo necesitamos pasarle datos (parámetros) y recibir un resultado (tipo de retorno).

  1. Parámetros de Función

1.1. Definición de Parámetros

Los parámetros son variables que se pasan a una función para que esta pueda utilizarlas en su ejecución. Los parámetros se definen en la declaración de la función y se pasan cuando la función es llamada.

Ejemplo:

#include <iostream>
using namespace std;

// Declaración de la función con parámetros
void imprimirSuma(int a, int b) {
    int suma = a + b;
    cout << "La suma es: " << suma << endl;
}

int main() {
    // Llamada a la función con argumentos
    imprimirSuma(5, 3);
    return 0;
}

1.2. Tipos de Parámetros

  • Parámetros por valor: Se pasa una copia del valor a la función. Los cambios dentro de la función no afectan al valor original.
  • Parámetros por referencia: Se pasa una referencia al valor original. Los cambios dentro de la función afectan al valor original.
  • Parámetros por puntero: Se pasa la dirección de memoria del valor. Similar a la referencia, pero se usa la sintaxis de punteros.

Ejemplo de Parámetros por Valor:

void incrementarPorValor(int x) {
    x = x + 1;
}

int main() {
    int num = 5;
    incrementarPorValor(num);
    cout << "Valor después de incrementarPorValor: " << num << endl; // num sigue siendo 5
    return 0;
}

Ejemplo de Parámetros por Referencia:

void incrementarPorReferencia(int &x) {
    x = x + 1;
}

int main() {
    int num = 5;
    incrementarPorReferencia(num);
    cout << "Valor después de incrementarPorReferencia: " << num << endl; // num es 6
    return 0;
}

Ejemplo de Parámetros por Puntero:

void incrementarPorPuntero(int *x) {
    *x = *x + 1;
}

int main() {
    int num = 5;
    incrementarPorPuntero(&num);
    cout << "Valor después de incrementarPorPuntero: " << num << endl; // num es 6
    return 0;
}

  1. Tipos de Retorno

2.1. Definición de Tipos de Retorno

El tipo de retorno de una función es el tipo de dato que la función devuelve al finalizar su ejecución. Si una función no devuelve ningún valor, su tipo de retorno es void.

Ejemplo de Función con Retorno:

int sumar(int a, int b) {
    return a + b;
}

int main() {
    int resultado = sumar(5, 3);
    cout << "El resultado de la suma es: " << resultado << endl;
    return 0;
}

2.2. Tipos de Retorno Comunes

  • void: La función no devuelve ningún valor.
  • int, float, double, char, etc.: La función devuelve un valor de tipo primitivo.
  • Referencias y Punteros: La función devuelve una referencia o un puntero a un valor.

Ejemplo de Función con Retorno void:

void saludar() {
    cout << "Hola, Mundo!" << endl;
}

int main() {
    saludar();
    return 0;
}

Ejemplo de Función que Devuelve una Referencia:

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

int main() {
    int x = 10, y = 20;
    int &mayor = obtenerMayor(x, y);
    cout << "El mayor es: " << mayor << endl;
    return 0;
}

  1. Ejercicios Prácticos

Ejercicio 1: Función con Parámetros por Valor

Escribe una función que reciba dos números enteros y devuelva su producto.

Solución:

int multiplicar(int a, int b) {
    return a * b;
}

int main() {
    int resultado = multiplicar(4, 5);
    cout << "El producto es: " << resultado << endl;
    return 0;
}

Ejercicio 2: Función con Parámetros por Referencia

Escribe una función que reciba dos números enteros por referencia e intercambie sus valores.

Solución:

void intercambiar(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}

int main() {
    int x = 10, y = 20;
    intercambiar(x, y);
    cout << "Después de intercambiar: x = " << x << ", y = " << y << endl;
    return 0;
}

Ejercicio 3: Función con Retorno de Puntero

Escribe una función que reciba un arreglo de enteros y su tamaño, y devuelva un puntero al mayor elemento del arreglo.

Solución:

int* encontrarMayor(int arr[], int tam) {
    int *mayor = &arr[0];
    for (int i = 1; i < tam; i++) {
        if (arr[i] > *mayor) {
            mayor = &arr[i];
        }
    }
    return mayor;
}

int main() {
    int arr[] = {1, 5, 3, 9, 2};
    int *mayor = encontrarMayor(arr, 5);
    cout << "El mayor elemento es: " << *mayor << endl;
    return 0;
}

Conclusión

En esta sección, hemos aprendido sobre los parámetros de función y los tipos de retorno en C++. Hemos visto cómo pasar parámetros por valor, referencia y puntero, y cómo definir funciones que devuelven diferentes tipos de datos. Estos conceptos son fundamentales para escribir funciones flexibles y reutilizables en C++. En el próximo tema, exploraremos la sobrecarga de funciones, que nos permitirá definir múltiples funciones con el mismo nombre pero diferentes parámetros.

© Copyright 2024. Todos los derechos reservados