Guia08 - Funciones
Guia08 - Funciones
Guia08 - Funciones
OBJETIVOS:
Comprender cómo construir programas de manera modular mediante pequeñas
piezas llamadas funciones.
Crear nuevas funciones.
Comprender el mecanismo utilizado para pasar información entre funciones.
TEMPORIZACIÓN:
1
Introducción
Para resolver problemas complejos y/o de gran tamaño es conveniente utilizar el concepto de
reducción de problemas. De esta forma, el problema se descompone en subproblemas, los cuales
a su vez pueden descomponerse en subproblemas, y así continuar hasta que el problema original
queda reducido a un conjunto de actividades básicas, que no se pueden volver a descomponer.
La solución de cada una de estas actividades básicas permite, luego, aplicando razonamiento hacia
atrás, la solución del problema final.
La comunicación entre las funciones y el programa principal, al igual que entre las mismas
funciones, se lleva a cabo por medio de parámetros por valor, parámetros por referencia y
variables globales.
Existen funciones ya definidas en el estándar ANSY C y que pueden ser utilizadas por el
programador. Este tipo de funciones predefinidas son denominadas funciones de biblioteca. Sin
embargo, cada programador define sus propias funciones de acuerdos a sus necesidades. Las
funciones que define el programador son conocidas como funciones de usuario.
2
Y su definición:
tipo_de_resultado Nombre_de_funcion(Parámetros)
{
Instrucciones; /* cuerpo de la función */
}
Para llamar a una función se escribe en sitio adecuado el nombre de la función seguido de
paréntesis abierto y cerrado. Si se pasan parámetros, estos deben colocarse dentro de los
paréntesis separados por coma.
Normalmente la llamada a una función se realizará desde la función principal main(), aunque
naturalmente también podrá ser desde otra función.
Ejemplo #1:
#include <stdio.h>
/*Definicion de la funcion promedio */
float promedio(int x, int y, int z)
{
float p;
p = (x + y + z)/3.0;
return p;
}
int main(void)
{
int a = 10, b = 25, c = 30;
float prom;
prom = promedio(a, b, c);//Llamada de la función
printf("\nEl promedio es igual a %.2f\n", prom);
return 0;
}
3
Salida en pantalla:
Los parámetros por referencia también permiten la comunicación entre el programa principal y
las funciones, o entre las mismas funciones. Sin embargo, en este caso, en lugar de escribir una
copia de la variable en el parámetro se escribe la dirección de la misma. Si el parámetro sufre una
alteración en la función que lo recibe, la variable original también se ve afectada. En C, las
llamadas por referencia se realizan mediante apuntadores. Un apuntador es una variable que
contiene la dirección de otra variable y se representa por medio de operadores de dirección(&) e
indirección(*).
4
Ejercicios resueltos
1) Realizar una función llamada esMultiplo, que toma un número entero como parámetro
y devuelve 1 si el número es múltiplo de 5 ó regresa 0 si no lo es.
#include <stdio.h>
/*Declaración de la función esMultiplo*/
int esMultiplo(int numero);
int main(void)
{
int n, result;
printf("Ingrese un numero entero: ");
scanf("%d",&n);
result = esMultiplo(n);
if(result == 1)
printf("%d es multiplo de 5\n",n);
else
printf("%d NO es multiplo de 5\n",n);
return 0;
}
/*
Definición de función esMultiplo, que toma un número entero como parámetro y devuelve 1
si el número es múltiplo de 5 ó regresa 0 si no lo es.
*/
int esMultiplo(int numero)
{
if(numero % 5 == 0)
return 1;
else
return 0;
}
5
Salida en pantalla:
/* fnReferencia.cpp */
#include <stdio.h>
/* Prueba de parametros por referencia */
int main(void)
{
int I, K = 4;
6
for(I = 1; I<=3; I++)
{
printf("\n\nValor de K antes de llamar a la funcion: %d", ++K);
printf("\nValor de K despues de llamar a la funcion: %d", f1(&K));
/* Llamada a la funcion f1. Se pasa la direccion de la variable K,
por medio del operador de direccion: & */
}
return 0;
}
Salida en pantalla:
7
Ejercicios propuestos
1) Elaborar un programa que permita leer 3 números de tipo entero; e imprima el menor;
utilizando tres funciones tanto para leer los números, para obtener y devolver el menor y
para imprimir el número menor.
void LeerNumeros (int *n1, int *n2, int *n3);
Esta función se encargará de ingresar los respectivos valores en sus variables las cuales serán
pasadas a ella por referencia.
int ObtenerMenor (int n1, int n2, int n3);
Esta función se encargará de devolver el número menor de tres números ingresados, estos serán
pasados por valor.
void ImprimirMenor (int menor);
Será el nombre de una función, la cual no tendrá variable de retorno, pero tendrá una variable
por valor. Este subproceso se encargará de escribir el número menor de tres números dados.
2. Elabore un algoritmo que ofrezca un menú de opciones, mediante el cual se pueda escoger
calcular el área de las figuras geométricas: triángulo, cuadrado, rectángulo, circulo. Una vez
seleccionada la opción, que llame a una función que pase como parámetro los datos necesarios
y realice el cálculo correspondiente. En cada caso, imprima el resultado.
8
Debe ofrecer el siguiente menú de opciones:
Calcular el área de las siguientes figuras geométricas:
1. Triangulo
2. Cuadrado
3. Rectángulo
4. Circulo
5. Fin
Opción >