Evaluar Funciones Definidas a Trozos en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a evaluar funciones definidas a trozos en programación C. El laboratorio cubre los pasos para leer un valor de entrada, utilizar sentencias if/else para determinar qué fórmula aplicar y mostrar el resultado evaluado. Comenzarás solicitando al usuario que ingrese un valor para la variable x, luego implementarás una función definida a trozos con diferentes fórmulas basadas en el valor de entrada. Este laboratorio te ayudará a desarrollar tus habilidades en el trabajo con expresiones algebraicas y lógica condicional en C.

Leer el valor de entrada x

En este paso, aprenderás a leer un valor de entrada para una función definida a trozos en programación C. Crearemos un programa simple que permita a los usuarios introducir un valor numérico para su uso en la evaluación de la función.

Primero, creemos un nuevo archivo C en el directorio del proyecto:

cd ~/project
nano piecewise_function.c

Ahora, agrega el siguiente código al archivo:

#include <stdio.h>

int main() {
    double x;

    // Solicita al usuario que ingrese un valor para x
    printf("Ingrese un valor para x: ");

    // Lee el valor de entrada
    scanf("%lf", &x);

    // Imprime el valor de entrada para confirmar
    printf("Usted ingresó x = %.2f\n", x);

    return 0;
}

Compila el programa:

gcc piecewise_function.c -o piecewise_function

Ejecuta el programa:

./piecewise_function

Ejemplo de salida:

Ingrese un valor para x: 5.5
Usted ingresó x = 5.50

Desglose del código:

  • #include <stdio.h> incluye la biblioteca de entrada/salida estándar
  • double x; declara una variable para almacenar el valor de entrada
  • printf() muestra un mensaje al usuario
  • scanf() lee el valor de entrada como un número de punto flotante de doble precisión
  • %.2f formatea la salida para mostrar dos decimales

Usar if/else para determinar qué fórmula aplicar

En este paso, modificarás el programa anterior para implementar una función definida a trozos utilizando sentencias if/else. Crearemos una función con diferentes fórmulas basadas en el valor de entrada x.

Actualiza el archivo piecewise_function.c:

cd ~/project
nano piecewise_function.c

Reemplaza el contenido anterior con el siguiente código:

#include <stdio.h>

// Define una función definida a trozos
double piecewise_function(double x) {
    // Condición 1: Si x es menor que 0
    if (x < 0) {
        return x * x;  // f(x) = x^2 para x < 0
    }
    // Condición 2: Si x está entre 0 y 5
    else if (x >= 0 && x < 5) {
        return 2 * x + 3;  // f(x) = 2x + 3 para 0 ≤ x < 5
    }
    // Condición 3: Si x es mayor o igual a 5
    else {
        return x - 2;  // f(x) = x - 2 para x ≥ 5
    }
}

int main() {
    double x;

    // Solicita al usuario que ingrese un valor para x
    printf("Ingrese un valor para x: ");

    // Lee el valor de entrada
    scanf("%lf", &x);

    // Calcula e imprime el resultado de la función definida a trozos
    double result = piecewise_function(x);
    printf("f(%.2f) = %.2f\n", x, result);

    return 0;
}

Compila el programa:

gcc piecewise_function.c -o piecewise_function

Ejecuta el programa con diferentes valores de entrada:

./piecewise_function

Ejemplo de salida 1:

Ingrese un valor para x: -2
f(-2.00) = 4.00

Ejemplo de salida 2:

Ingrese un valor para x: 3
f(3.00) = 9.00

Ejemplo de salida 3:

Ingrese un valor para x: 6
f(6.00) = 4.00

Desglose del código:

  • piecewise_function() implementa tres fórmulas diferentes basadas en el valor de x
  • Las sentencias if/else verifican las condiciones y aplican la fórmula apropiada
  • La función devuelve el valor calculado basado en la entrada x

Imprimir el resultado evaluado

En este paso final, mejorarás el programa de la función definida a trozos para proporcionar una salida más detallada y demostrar el comportamiento de la función en diferentes rangos de entrada.

Modifiquemos el archivo piecewise_function.c para agregar una impresión de resultados más completa:

cd ~/project
nano piecewise_function.c

Actualiza el código con la siguiente implementación:

#include <stdio.h>

// Define una función definida a trozos
double piecewise_function(double x) {
    // Condición 1: Si x es menor que 0
    if (x < 0) {
        return x * x;  // f(x) = x^2 para x < 0
    }
    // Condición 2: Si x está entre 0 y 5
    else if (x >= 0 && x < 5) {
        return 2 * x + 3;  // f(x) = 2x + 3 para 0 ≤ x < 5
    }
    // Condición 3: Si x es mayor o igual a 5
    else {
        return x - 2;  // f(x) = x - 2 para x ≥ 5
    }
}

int main() {
    double x;

    // Solicita al usuario que ingrese un valor para x
    printf("Evaluador de funciones definidas a trozos\n");
    printf("Reglas de la función:\n");
    printf("  f(x) = x^2      para x < 0\n");
    printf("  f(x) = 2x + 3   para 0 ≤ x < 5\n");
    printf("  f(x) = x - 2    para x ≥ 5\n\n");

    printf("Ingrese un valor para x: ");

    // Lee el valor de entrada
    scanf("%lf", &x);

    // Calcula el resultado de la función definida a trozos
    double result = piecewise_function(x);

    // Proporciona una salida detallada
    printf("\nAnálisis de entrada:\n");
    printf("  Valor de entrada x: %.2f\n", x);

    // Determina e imprime la fórmula aplicada
    if (x < 0) {
        printf("  Fórmula aplicada: f(x) = x^2\n");
    }
    else if (x >= 0 && x < 5) {
        printf("  Fórmula aplicada: f(x) = 2x + 3\n");
    }
    else {
        printf("  Fórmula aplicada: f(x) = x - 2\n");
    }

    // Imprime el resultado final
    printf("  Resultado f(x): %.2f\n", result);

    return 0;
}

Compila el programa:

gcc piecewise_function.c -o piecewise_function

Ejecuta el programa con diferentes valores de entrada:

./piecewise_function

Ejemplo de salida 1 (x < 0):

Evaluador de funciones definidas a trozos
Reglas de la función:
  f(x) = x^2      para x < 0
  f(x) = 2x + 3   para 0 ≤ x < 5
  f(x) = x - 2    para x ≥ 5

Ingrese un valor para x: -3

Análisis de entrada:
  Valor de entrada x: -3.00
  Fórmula aplicada: f(x) = x^2
  Resultado f(x): 9.00

(Ejemplos de salida 2 y 3 omitidos para mayor brevedad)

Mejoras clave en este paso:

  • Se agregó una explicación detallada de las reglas de la función.
  • Se proporcionó un análisis de entrada con la fórmula aplicada.
  • Se mejoró la legibilidad de la salida.
  • Se demostró el comportamiento de la función definida a trozos en diferentes rangos de entrada.

Resumen

En este laboratorio, aprendiste a leer un valor de entrada para una función definida a trozos en programación C y cómo usar sentencias if/else para determinar qué fórmula aplicar en función del valor de entrada. Creaste un programa simple que permite a los usuarios introducir un valor numérico y luego evaluó la función definida a trozos utilizando diferentes fórmulas según el valor de x. Los puntos clave del aprendizaje son la lectura de la entrada del usuario, la implementación de la lógica condicional con sentencias if/else y la aplicación de diferentes fórmulas matemáticas dentro de una función definida a trozos.