190 likes | 498 Views
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. Tema 6. Descomposición modular: funciones Conceptos:
E N D
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
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
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
Módulo Principal Módulo 1 Módulo 2 Módulo 3 Módulo 1.2 Módulo 2.1 Módulo 2.2 Módulo 3.1 Módulo 1.1 Módulo 2.2.1 Módulo 2.2.2 Módulo 3.1.1 Definición y concepto de función Nivel 0 de descomposición Datos Nivel 1 de descomposición Nivel 2 Nivel 3 de descomposición Descomposición Modular. Funciones
Definición y concepto de función II • Dos partes: Cabecera Cuerpo Descomposición Modular. Funciones
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
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
Transferencia de información • Ejemplo: Función que suma dos números enteros: int sumar (int a, int b) { int suma; suma=a+b; return suma; } Parámetros formales Tipo de dato que puede o no devolver la función Dato que se devuelve Descomposición Modular. Funciones
Transferencia de información • Otra forma de implementarla: void sumar (int a, int b) { int suma; suma=a+b; printf(“El valor de la suma es %d”, suma); } Parámetros formales Tipo de dato void Es necesario mostrar el resultado por pantalla Descomposición Modular. Funciones
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
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
main main llama a suma con los valores 2 y 3 2,3 5 suma le devuelve un 5 suma 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 Función invocadora Función invocada Descomposición Modular. Funciones
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
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
Paso de argumentos por valor • int sumar (int a,int b) • { int rdo; • rdo=a+b; • return rdo; • } • .... • printf (“el rdo es: %d“,sumar(2,3)); Memoria rdo a 2 5 b 3 Descomposición Modular. Funciones
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
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
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
Ejercicios • Calcular: 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