Вы находитесь на странице: 1из 19

Tema 6

Descomposición modular: funciones

 Objetivos:
 Descomponer los problemas complejos en
problemas más sencillos,
 Reutilizar el código,
 Facilitar la lectura de los programas

Descomposición Modular. Funciones 1


Tema 6
Descomposición modular: funciones

 Conceptos:
 Definición, concepto de función y división de un
programa en funciones.
 Transferencia de información entre funciones.
 La función main
 Paso de argumentos a funciones.
 Declaración por adelantado de funciones.
 Variables Locales y Globales. Trazas.
Descomposición Modular. Funciones 2
Bibliografía
 “Diseño e Implementación de Programas en
Lenguaje C”. P.Alonso, F.García, E.Onaindia.
SPUPV-98.367.
 “Programación Estructurada en C”. J.L.Antonakos
K.C. Mansfield. Prentice-hall, 1997
 “Metodología y Tecnología de la Programación”.
A. Molina, P. Letelier, P. Sánchez, J. Sánchez
SPUPV.97.498.

Descomposición Modular. Funciones 3


Definición y concepto de función

Nivel 0 de Módulo
Principal Datos
descomposición

Nivel 1 de
descomposición Módulo 1 Módulo 2 Módulo 3

Nivel 2 Módulo 1.1 Módulo 1.2 Módulo 2.1 Módulo 2.2 Módulo 3.1

Nivel 3 de
descomposición Módulo 2.2.1 Módulo 2.2.2 Módulo 3.1.1

Descomposición Modular. Funciones 4


Definición y concepto de función II

Dos partes:
Cabecera
Cuerpo

Descomposición Modular. Funciones 5


Cabecera de una función
 Cabecera, se define el nombre de la función y el modo en
que se va a realizar la transferencia de datos de esa
función.
 tipo_dato nombre_funcion (lista_argumentos)
tipo_dato: tipo de datos que devuelve la función.
nombre_funcion: nombre que identifica a la funcion.
lista_argumentos: Conjunto de tuplas (tipo_dato
variable) separadas por comas a las que se denomina
“argumentos formales” y será donde se almacenen los
datos transferidos a la función en su llamada.

Descomposición Modular. Funciones 6


Cuerpo de una función

Cuerpo:
Se encuentra encerrado entre llaves y contiene la
declaración de las variables que se van a emplear en
la función y a continuación un conjunto de
instrucciones que realizan la tarea para la cual se
diseñó la función.

Descomposición Modular. Funciones 7


Transferencia de información
 Ejemplo: Función que suma dos números enteros:
int sumar (int a, int b)
{
Parámetros formales
int suma;
suma=a+b; Tipo de dato que puede
return suma; o no devolver la función
}
Dato que se devuelve

Descomposición Modular. Funciones 8


Transferencia de información

 Otra forma de implementarla:


void sumar (int a, int b)
{ Parámetros formales
int suma;
Tipo de dato void
suma=a+b;
printf(“El valor de la suma es %d”, suma);
}

Es necesario mostrar el resultado por pantalla


Descomposición Modular. Funciones 9
Llamada a una función
 Llamada a una función: Para llamar a ejecutar a las
instrucciones que contiene una función, debemos de
nombrarla y usualmente pasarle unos valores que coinciden
en número y tipo de dato con los parámetros formales de la
cabecera de la función.
 A estos valores se les denomina parámetros actuales.
 El código de la función “invocada” empezará a ejecutarse
con los valores pasados en cada una de las posiciones de
memoria que apuntan los nombres de variable de los
parámetros formales respectivamente.

sumar (2,3) int sumar (int a, int b)


{ ...
Descomposición Modular. Funciones 10
Ejemplo
 Completo:
int suma (int a, int b)
{
int suma;
suma=a+b;
return suma;
}
void main () {
int sum;
sum=suma(2,3);
printf(“El valor de sumar %d y %d es %d”,a,b,sum);
ó printf(“El valor de sumar %d y %d es %d”,a,b,suma(2,3));
} Descomposición Modular. Funciones 11
La función main

 Main: main es la función principal de un programa en C y


será la encargada de llamar a ejecutarse a las demás
funciones del programa.
 Todo programa en C debe tener una función main.
 Las instrucciones de un programa en C que comienzan a
ejecutarse las primeras son las de la función principal
main Función invocadora

main llama a suma 2,3 5 suma le devuelve un 5


con los valores 2 y 3
suma Función invocada
Descomposición Modular. Funciones 12
Paso de argumentos a funciones

 A las funciones se les puede pasar


constantes, variables simples y compuestas
y resultados de expresiones:
suma(2,3); /* constantes*/
suma(a,b+c/2) /* variables y expresiones*/

Descomposición Modular. Funciones 13


Paso de parámetros (argumentos)
 Dos son las formas en que se pasa
información a las funciones. Por valor y por
referencia.
 Paso de argumentos por valor: Se produce una
copia del valor con el que se llama a la función
en la variable definida en la cabecera de la
función. Las variables int, char, float, struct,
etc..., constantes y el resultado de cualquier
expresión se pasan de este modo. Es necesario
devolver el resultado o mostrarlo por pantalla.

Descomposición Modular. Funciones 14


Paso de argumentos por valor

int sumar (int a,int b)


Memoria
rdo { int rdo;
a rdo=a+b;
2 5
return rdo;
b 3 }
....
printf (“el rdo es: %d“,sumar(2,3));

Descomposición Modular. Funciones 15


Variables locales y globales
 Ámbito de una variable: es aquella porción del
programa en la que se puede acceder a una
variable, para leer su valor o escribirlo.
 Variable local: su ámbito se restringe a la función
que la ha declarado, una vez se ejecuta esta
función la variable desaparece.
 Variable global: se define fuera del cuerpo de
cualquier función (normalmente al principio del
programa) y su ámbito es todo el programa.
Descomposición Modular. Funciones 18
Variables locales y globales con el
mismo nombre
 Existen casos en los cuales los nombres de una
variable global y una local pueden coincidir en un
trozo de programa, en este caso son las variables
locales a las que se hace referencia.
 Existen también casos en que coincide el nombre
de un argumento formal y una variable global,
siendo el argumento formal al que se hace
referencia en vez de a la variable global.

Descomposición Modular. Funciones 19


Las trazas
 Toda esta duplicidad de nombres puede
inducir a errores pues se piensa que se
está utilizando la variable global y es la
local o arg. formal el que se está
referenciando, para seguir estos programas
se emplean las trazas.
 Una traza es el seguimiento de una variable
a lo largo de la ejecución del programa.
Descomposición Modular. Funciones 20
Ejercicios
 Calcular:
m m!
  
 n  (m  n)!
Para ello crear una función que calcule el
factorial de un número y llamarla con los
valores m y (m-n).

Descomposición Modular. Funciones 21

Вам также может понравиться