Introducción
En este laboratorio, aprenderás cómo crear y utilizar funciones en la programación en C. El laboratorio cubre los conceptos fundamentales de declaración y definición de funciones, comprensión de los argumentos de las funciones, devolución de valores desde las funciones, manejo de funciones void y práctica en el uso de funciones. Explorarás estos temas a través de ejemplos prácticos y ejercicios, adquiriendo las habilidades necesarias para escribir código en C modular y reutilizable.
El laboratorio comienza presentando los conceptos básicos de declaración y definición de funciones, demostrando cómo crear y llamar a funciones simples. Luego, profundiza en la comprensión de los argumentos de las funciones, mostrando cómo pasar diferentes tipos de datos como entrada a las funciones. El laboratorio también aborda el concepto de valores de retorno, guiándote en cómo devolver datos desde las funciones. Además, el laboratorio explora el uso de funciones void, que no devuelven ningún valor. Finalmente, tendrás la oportunidad de practicar y aplicar los conceptos aprendidos a través de varios ejercicios.
Declarar y Definir Funciones
En este paso, aprenderás cómo declarar y definir funciones en la programación en C. Las funciones son bloques de construcción fundamentales que ayudan a organizar y modularizar tu código.
Comencemos creando un nuevo archivo llamado functions_demo.c en el directorio ~/project:
cd ~/project
touch functions_demo.c
Ahora, escribamos una declaración y definición de función sencilla:
#include <stdio.h>
// Declaración de función (prototipo)
void greet(char* name);
// Función principal
int main() {
// Llamando a la función
greet("LabEx User");
return 0;
}
// Definición de función
void greet(char* name) {
printf("Hello, %s! Welcome to C programming.\n", name);
}
Desglosemos los componentes clave:
void greet(char* name)es la declaración de función (prototipo)- La función toma un puntero a carácter (cadena) como argumento
voidindica que la función no devuelve un valor- Dentro de
main(), llamamos a la función con un argumento - La definición de la función sigue a la función principal, implementando la lógica real
Compila y ejecuta el programa:
gcc functions_demo.c -o functions_demo
./functions_demo
Ejemplo de salida:
Hello, LabEx User! Welcome to C programming.
Las funciones te ayudan a:
- Organizar el código en bloques reutilizables
- Mejorar la legibilidad del código
- Reducir la repetición
- Modularizar tu programa
Comprender los Argumentos de las Funciones
En este paso, aprenderás cómo trabajar con los argumentos de las funciones en la programación en C. Los argumentos de las funciones te permiten pasar datos a las funciones, lo que las hace más flexibles y reutilizables.
Creemos un nuevo archivo llamado function_arguments.c en el directorio ~/project:
cd ~/project
touch function_arguments.c
Ahora, escribamos un programa que demuestre diferentes tipos de argumentos de funciones:
#include <stdio.h>
// Función con múltiples argumentos
int calculate_rectangle_area(int length, int width) {
return length * width;
}
// Función con un argumento de punto flotante
float convert_celsius_to_fahrenheit(float celsius) {
return (celsius * 9/5) + 32;
}
int main() {
// Usando argumentos enteros
int length = 5;
int width = 3;
int area = calculate_rectangle_area(length, width);
printf("Rectangle Area: %d square units\n", area);
// Usando argumento de punto flotante
float celsius = 25.0;
float fahrenheit = convert_celsius_to_fahrenheit(celsius);
printf("%.1f°C is %.1f°F\n", celsius, fahrenheit);
return 0;
}
Desglosemos los conceptos clave:
- Las funciones pueden tomar múltiples argumentos de diferentes tipos
calculate_rectangle_area()toma dos argumentos enterosconvert_celsius_to_fahrenheit()toma un argumento de tipofloat- Los argumentos se pasan por valor en C (se crea una copia)
- La función puede utilizar estos argumentos en sus cálculos
Compila y ejecuta el programa:
gcc function_arguments.c -o function_arguments
./function_arguments
Ejemplo de salida:
Rectangle Area: 15 square units
25.0°C is 77.0°F
Puntos clave sobre los argumentos de las funciones:
- Los argumentos proporcionan entrada a las funciones
- Puedes pasar variables o valores directos
- El número y el tipo de argumentos deben coincidir con la declaración de la función
- Los argumentos ayudan a hacer que las funciones sean más versátiles y reutilizables
Devolver Valores desde Funciones
En este paso, aprenderás cómo devolver valores desde funciones en la programación en C. Los valores de retorno permiten que las funciones realicen cálculos y envíen los resultados de vuelta al código que las llama.
Creemos un nuevo archivo llamado function_returns.c en el directorio ~/project:
cd ~/project
touch function_returns.c
Ahora, escribamos un programa que demuestre diferentes tipos de valores de retorno:
#include <stdio.h>
// Función que devuelve un entero
int square(int number) {
return number * number;
}
// Función que devuelve un float
float calculate_average(int a, int b, int c) {
return (float)(a + b + c) / 3;
}
// Función que devuelve un carácter
char get_grade(int score) {
if (score >= 90) return 'A';
else if (score >= 80) return 'B';
else if (score >= 70) return 'C';
else if (score >= 60) return 'D';
else return 'F';
}
int main() {
// Usando el valor de retorno entero
int num = 7;
int squared = square(num);
printf("Square of %d is %d\n", num, squared);
// Usando el valor de retorno float
int math = 85, science = 92, english = 78;
float average = calculate_average(math, science, english);
printf("Average score: %.2f\n", average);
// Usando el valor de retorno carácter
int student_score = 85;
char grade = get_grade(student_score);
printf("Student score %d gets grade %c\n", student_score, grade);
return 0;
}
Desglosemos los conceptos clave:
- Las funciones pueden devolver diferentes tipos de datos
square()devuelve un resultado enterocalculate_average()devuelve unfloatget_grade()devuelve un carácter- La palabra clave
returnenvía un valor de vuelta a la función que la llama - Los tipos de retorno deben coincidir con la declaración de la función
Compila y ejecuta el programa:
gcc function_returns.c -o function_returns
./function_returns
Ejemplo de salida:
Square of 7 is 49
Average score: 85.00
Student score 85 gets grade B
Puntos clave sobre los valores de retorno:
- Los valores de retorno permiten que las funciones realicen cálculos y envíen los resultados de vuelta
- Utiliza tipos de retorno adecuados según el propósito de la función
- Puedes usar los valores de retorno directamente o almacenarlos en variables
- Los valores de retorno hacen que las funciones sean más poderosas y flexibles
Manejar Funciones Void
En este paso, aprenderás sobre las funciones void en la programación en C. Las funciones void realizan acciones sin devolver un valor, lo cual es útil para tareas que no necesitan enviar un resultado de vuelta.
Creemos un nuevo archivo llamado void_functions.c en el directorio ~/project:
cd ~/project
touch void_functions.c
Ahora, escribamos un programa que demuestre funciones void:
#include <stdio.h>
// Función void para imprimir un mensaje de bienvenida
void print_welcome() {
printf("Welcome to the C Programming Lab!\n");
}
// Función void con parámetros para mostrar información del estudiante
void display_student_info(char* name, int age) {
printf("Student Name: %s\n", name);
printf("Student Age: %d\n", age);
}
// Función void para dibujar un patrón simple
void draw_pattern(int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
printf("* ");
}
printf("\n");
}
}
int main() {
// Llamando a funciones void
print_welcome();
// Función void con parámetros
char* student_name = "LabEx User";
int student_age = 25;
display_student_info(student_name, student_age);
// Función void con un patrón
int pattern_size = 3;
printf("\nDrawing a %dx%d pattern:\n", pattern_size, pattern_size);
draw_pattern(pattern_size);
return 0;
}
Desglosemos los conceptos clave:
- Las funciones
voidtienenvoidcomo su tipo de retorno - Realizan acciones sin devolver un valor
print_welcome()simplemente imprime un mensajedisplay_student_info()toma parámetros e imprime informacióndraw_pattern()crea un patrón visual utilizando bucles anidados- Las funciones
voidse llaman como funciones normales - No se puede usar
returncon un valor en funcionesvoid
Compila y ejecuta el programa:
gcc void_functions.c -o void_functions
./void_functions
Ejemplo de salida:
Welcome to the C Programming Lab!
Student Name: LabEx User
Student Age: 25
Drawing a 3x3 pattern:
* * *
* * *
* * *
Puntos clave sobre las funciones void:
- Se utilizan para acciones que no necesitan devolver un valor
- Pueden tomar parámetros
- Son útiles para imprimir, registrar o realizar tareas específicas
- Ayudan a organizar y modularizar el código
- No pueden devolver un valor utilizando
return
Practicar el Uso de Funciones
En este último paso, aplicarás todo lo que has aprendido sobre funciones en C creando un programa completo que demuestre múltiples tipos de funciones y su uso.
Creemos un archivo llamado calculator.c en el directorio ~/project:
cd ~/project
touch calculator.c
Ahora, escribamos un programa que implemente una calculadora simple con diversas funciones:
#include <stdio.h>
// Función para sumar dos números
int add(int a, int b) {
return a + b;
}
// Función para restar dos números
int subtract(int a, int b) {
return a - b;
}
// Función para multiplicar dos números
int multiply(int a, int b) {
return a * b;
}
// Función para dividir dos números con manejo de errores
float divide(int a, int b) {
if (b == 0) {
printf("Error: Division by zero!\n");
return 0;
}
return (float)a / b;
}
// Función void para mostrar el menú de la calculadora
void display_menu() {
printf("\n--- Simple Calculator ---\n");
printf("1. Addition\n");
printf("2. Subtraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("5. Exit\n");
printf("Enter your choice: ");
}
int main() {
int choice, num1, num2;
float result;
while (1) {
display_menu();
scanf("%d", &choice);
// Condición de salida
if (choice == 5) {
printf("Goodbye!\n");
break;
}
// Validar la elección
if (choice < 1 || choice > 4) {
printf("Invalid choice. Try again.\n");
continue;
}
// Obtener la entrada del usuario
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
// Realizar el cálculo según la elección del usuario
switch (choice) {
case 1:
result = add(num1, num2);
printf("Result: %d + %d = %d\n", num1, num2, (int)result);
break;
case 2:
result = subtract(num1, num2);
printf("Result: %d - %d = %d\n", num1, num2, (int)result);
break;
case 3:
result = multiply(num1, num2);
printf("Result: %d * %d = %d\n", num1, num2, (int)result);
break;
case 4:
result = divide(num1, num2);
printf("Result: %d / %d = %.2f\n", num1, num2, result);
break;
}
}
return 0;
}
Desglosemos los conceptos clave:
- Se utilizan múltiples tipos de funciones (valores de retorno, funciones
void) - Las funciones realizan operaciones matemáticas específicas
display_menu()es una funciónvoidque muestra el menú- Las funciones aritméticas devuelven los resultados calculados
- La función
main()implementa una calculadora controlada por menú - Se incluye manejo de errores para la división por cero
- Se utiliza la declaración
switchpara seleccionar la operación
Compila y ejecuta el programa:
gcc calculator.c -o calculator
./calculator
Ejemplo de interacción:
--- Simple Calculator ---
1. Addition
2. Subtraction
3. Multiplication
4. Division
5. Exit
Enter your choice: 1
Enter two numbers: 10 5
Result: 10 + 5 = 15
--- Simple Calculator ---
...
Enter your choice: 5
Goodbye!
Puntos clave sobre el uso de funciones:
- Combina diferentes tipos de funciones
- Utiliza funciones para descomponer problemas complejos
- Implementa manejo de errores
- Crea código modular y reutilizable
Resumen
En este laboratorio, aprendiste cómo declarar y definir funciones en la programación en C, comprender los argumentos de las funciones, devolver valores desde las funciones, manejar funciones void y practicar el uso de funciones. Comenzaste creando una función simple para saludar a un usuario y luego exploraste funciones más complejas con múltiples argumentos y valores de retorno. También aprendiste cómo usar funciones void y practicar el uso de funciones en tus programas. Estos conceptos fundamentales son esenciales para construir código modular y reutilizable en C.



