10 - Funciones
Objetivos
Modularizar programas en C usando funciones con una responsabilidad clara.
- Comprender qué problema resuelven las funciones
- Definir y llamar funciones correctamente
- Distinguir parámetros, argumentos y valor de retorno
- Entender el paso por valor y el alcance de las variables
- Usar prototipos para organizar programas más claros
Contenidos
Qué es una función
- Definición: bloque de código con una tarea específica
- Ventaja principal: evitar repeticiones y organizar mejor programas más largos
- Criterio: una función debería concentrarse en una sola responsabilidad
Definición y llamada
- Forma general: tipo de retorno, nombre, parámetros y cuerpo
- Llamar una función: ejecutar esa definición con valores concretos
- Flujo de ejecución: el programa pasa de
main()a la función y luego regresa
Parámetros y retorno
- Parámetros formales: nombres que aparecen en la definición
- Argumentos: valores concretos usados en la llamada
- Retorno: resultado que la función entrega al programa que la invocó
- Funciones
void: útiles cuando la función realiza una acción y no devuelve un valor asignable
Paso por valor
- Regla del curso: en C los argumentos se pasan por valor
- Consecuencia: la función trabaja con copias de los datos recibidos
- Importancia: entender por qué modificar un parámetro no cambia automáticamente la variable original
Alcance de variables
- Locales: existen solo dentro de la función donde fueron declaradas
- Globales: quedan visibles desde varias funciones, pero requieren cautela
- Objetivo: distinguir con claridad qué información entra por parámetros y qué queda interna a la función
Prototipos y organización
- Necesidad: declarar cómo se usa una función antes de llamarla
- Prototipo: informa nombre, tipo de retorno y parámetros
- Buena práctica: organizar el programa para que su lectura sea clara
Material de Clase
Presentaciones
Práctico
Ver ejercicios
Ejercicio 1: Celsius a Fahrenheit
Enunciado: Escribir una función celsius_a_fahrenheit que reciba una temperatura en grados Celsius como float y retorne su equivalente en Fahrenheit. En main, leer una temperatura, llamar a la función e imprimir el resultado.
Ejercicio 2: Es divisible
Enunciado: Escribir una función es_divisible que reciba dos enteros a y b y retorne 1 si a es divisible por b, o 0 en caso contrario. En main, leer dos números, llamar a la función e imprimir el resultado.
Ejercicio 3: Suma de arreglo
Enunciado: Escribir una función suma_arreglo que reciba un arreglo de enteros y su tamaño, y retorne la suma de todos sus elementos. En main, llenar un arreglo de 6 enteros, llamar a la función e imprimir la suma.
Ejercicio 4: Máximo de arreglo
Enunciado: Escribir una función maximo_arreglo que reciba un arreglo de enteros y su tamaño, y retorne el mayor elemento. En main, llenar un arreglo de 8 enteros, llamar a la función e imprimir el resultado.
Ejercicio 5: Contar negativos
Enunciado: Escribir una función contar_negativos que reciba un arreglo de enteros y su tamaño, y retorne cuántos elementos son negativos. En main, llenar un arreglo de 7 enteros, llamar a la función e imprimir el conteo.
Ejercicio 6: Es primo
Enunciado: Escribir una función es_primo que reciba un entero positivo y retorne 1 si es primo o 0 si no lo es. En main, leer un número, llamar a la función e imprimir “Es primo” o “No es primo”.
Ejercicio 7: Imprimir arreglo
Enunciado: Escribir una función void llamada imprimir_arreglo que reciba un arreglo de enteros y su tamaño, e imprima los elementos entre corchetes separados por comas (por ejemplo: [3, 7, 1, 5]). En main, llenar un arreglo de 5 enteros y llamar a la función.
Ejercicio 8: Factorial
Enunciado: Escribir una función factorial que reciba un entero no negativo y retorne su factorial usando un bucle iterativo. En main, leer un número, llamar a la función e imprimir el resultado.
Ejercicio 9: Refactorizar programa
Enunciado: El siguiente main realiza tres tareas en secuencia: pide 5 notas al usuario, calcula el promedio y cuenta cuántas notas son aprobatorias (mayores o iguales a 60). Reescribir el programa usando tres funciones separadas: leer_notas, calcular_promedio y contar_aprobados, de modo que main solo llame a esas funciones e imprima los resultados.
Ejercicio 10: Invertir dígitos
Enunciado: Escribir una función invertir_digitos que reciba un entero positivo y retorne el número formado por sus dígitos en orden inverso. Por ejemplo, si recibe 1234 debe retornar 4321. En main, leer un número, llamar a la función e imprimir el resultado.
Laboratorio
Recursos
Para Practicar
Bibliografía
- “El lenguaje de programación C” - Kernighan & Ritchie (Capítulo 4)
- “Cómo programar en C/C++” - Deitel & Deitel