Guia08 - Funciones

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

Lenguaje de programación I

Guía : Descomposición Funcional

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:

Tiempo de desarrollo de la Práctica: 1 Sesión presencial.


Fecha de realización de la Práctica: Semana del 09 agosto 2022.

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.

En el Lenguaje de Programación C la solución de un problema se expresa por medio de un


programa; la solución de un subproblema, por medio de una función. Una función es un
fragmento de código que realiza una tarea bien definida.

Un programa en C está constituido por un programa principal y un conjunto de funciones. El


programa principal consta generalmente de pocas líneas, las cuales pueden ser llamadas a
funciones. La llamada a una función indica al procesador que debe continuar con el procesamiento
de la función. Una vez que ésta concluye, el control regresa al punto de partida en el programa
principal. Por otra parte, la función se escribe de forma similar al programa principal, pero con
diferencias principalmente en el encabezado de la misma. Una función resuelve un
subproblema de forma independiente y se ejecuta sólo cuando recibe una llamada desde el
programa principal o desde otras funciones. El lenguaje de Programación C permite que una
función pueda incorporar llamadas a otras funciones.

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.

En C la declaración de una función tiene la siguiente estructura:

tipo_devuelto nombre_funcion (argumentos);

2
Y su definición:

tipo_de_resultado Nombre_de_funcion(Parámetros)
{
Instrucciones; /* cuerpo de la función */
}

Llamando a una 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:

Paso de parámetros a una función por valor o por referencia


Los parámetros por valor permiten pasar datos entre el programa principal y las funciones, e
incluso entre las mismas funciones. En el parámetro se escribe una copia de la variable original.
Si el parámetro sufre una alteración en la función que lo recibe, la variable original no se ve
afectada.

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:

2)Observemos a continuación el siguiente programa, el cual utiliza parámetros por referencia:

/* fnReferencia.cpp */
#include <stdio.h>
/* Prueba de parametros por referencia */

int f1(int *);


/*Prototipo de funcion. El parámetro es de tipo entero y por referencia. Observa
el uso del operador de indireccion. */

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;
}

int f1(int *R)


/* La funcion f1 recibe un parametro por referencia. Cada vez que el
parametro se utiliza en la funcion debe ir precedido por el operador
de indireccion */
{
*R = *R + *R;
return(*R);
}

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 >

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy