Modularidad Funciones de biblioteca, uso. Módulos. Concepto. Clasificación. Ámbito de identificadores. Transferencia de información a y desde procedimientos: los parámetros, tipos de parámetros. Conceptos de acoplamiento y cohesión.
Modularidad Principio «DIVIDIR PARA VENCER»
Modularidad P = p1 + p2 +... + pn Subproblema: Parte del problema que se puede resolver de manera independiente. Mas pequeños Mas fáciles de resolver Resolución independiente Solución (P) = Solución (p1) + Solución (p2) +... +Solución (pn)
Modularidad: Concepto Programa=Subprog1 + Subprog2 + + Subprogn Modulo Modulo= Sección de código independiente que realiza una tarea especifica dentro del programa. * Estar jerarquizados * Ser pequeños, sencillos y legibles * Ocultamiento de la información * Reusabilidad
Modularidad: Concepto PROGRAMA
Tipos de Módulos Tipos de módulos Funciones Procedimientos
Tipos de Módulos Funciones: Abstracción sobre un proceso de calculo. Ejemplo 1: Calcular el factorial de un numero n=3 n!=6 Devuelven un valor! Ejemplo 2: Determinar si dos letras son iguales A =? b Falso
Tipos de Módulos Procedimientos: Abstracción sobre una orden. Ejemplo 1: Leer los elementos de un vector Ejemplo 2: Mostrar los elementos de un vector Agrupación de sentencias que se ejecutan como una unidad. Realizan una tarea!!
Modularidad en C En C, TODOS los módulos se llaman funciones. FUNCION = conjunto de sentencias que se pueden llamar desde cualquier parte de un programa.
Función principal UNIDAD 3 Modularidad en C MAIN En C las funciones no se pueden anidar(no se puede declarar una función dentro de otra función)
Modularidad en C Función llamadora MAIN E S E S Función 1 Función 2 Función llamada
Estructura de un función en C Tipo de dato devuelto por la función Identificador Parámetros formales: variables de entrada necesarias para que opere la función Tipo_retorno nombrefuncion(listaparametros){ Cabecera de la función declaración de variables locales instrucciones <return expresion;> } Valor que devuelve la función llamadora
Declaración de un función en C Proporciona información al compilador para verificar que la función está siendo llamada correctamente, con respecto al número y tipo de los parámetros y el tipo devuelto por la función. Prototipo Contiene la cabecera de la función
Declaración de un función en C Formato de Prototipo Tipo_retorno nombrefuncion(listaparametros); Puede obviarse si la función devuelve un entero tipo1 par1,tipo2 par2,, tipon parn La declaración de una función, antecede al MAIN.
Declaración vs. Definición Declaración de una función Definición de una función Se proporciona un nombre. Reserva espacio en memoria. Se listan características. Se especifica antes o después del main.
Prototipo de un función en C Ejemplos de prototipos: int mayor(int a,int b); float promedio(int a, int b, int c); Prototipos char mayuscula(char car); esmayuscula(char n); ALUMNO buscar(alumno v[tam]);
Estructura de un función en C Prototipo Invocación a la función: vble= nombfc(parametros) En vble se almacena el resultado de la función. Se transfiere el control a la función llamada Se devuelve el control a la función llamadora Definición Valor de retorno
Estructura de un función en C Observación: Invocación Parámetros actuales may= mayor(n1,n2) Coinciden en cantidad y en tipo de dato Corespondencia 1 a 1 Cabecera de la función int mayor(int a, int b) Parámetros formales
Ejemplo UNIDAD 3 Estructura de un función en C
Ejemplo UNIDAD 3 Estructura de un función en C
Ejemplo UNIDAD 3 Estructura de un función en C
Ejemplo
Estructura de un «procedimiento»en C No devuelve nada Identificador CUIDADO!! void nombreprocedimiento (ListaParametros){ declaración de variables locales al procedimiento instrucciones Parámetros formales: variables de entrada necesarias para que opere el procedimiento }
Paso de Parámetros Formas mediante las cuales los parámetros actuales y formales son transmitidos o devueltos entre los módulos. Por Valor Paso de parámetros Por Referencia
Ejemplo Prototipo UNIDAD 3 Paso de Parámetros: Por valor Invocación al procedimiento: nombproced ( parámetros); Muestra los valores de la inicialización!! Se transfiere el control al modulo llamado Se devuelve el control al modulo llamador Definición
Paso de Parámetros: Por valor o Por copia Se transfiere el contenido de la variable en el modulo llamador ingreso(a, b) 4 90 void ingreso (int x, int y)
Paso de Parámetros: Por valor o Por copia Si se cambia el valor de un parámetro local a un modulo, el cambio no tiene efecto fuera de el. En la técnica de paso de parámetro por valor, la modificación del parámetro pasado en la función llamada no afecta al parámetro argumento en la función llamadora.
Paso de Parámetros: Por valor o Por copia RAM a 4 y 90 2000 x 4 1000 b 90
Paso de Parámetros: Por referencia o Por dirección Se usa este método cuando un modulo debe modificar el valor del parámetro pasado y devolver este valor modificado al modulo llamador. El compilador pasa la dirección de memoria del parámetro actual en la función llamadora.
Paso de Parámetros: Por referencia o Por dirección Si se modifica el valor del parámetro en el modulo llamado, este valor queda almacenado en la misma dirección de memoria. Al retornar al modulo llamador, el parámetro contendrá el valor modificado.
Paso de Parámetros: Por referencia o Por dirección Para pasar una variable por referencia, el símbolo & debe preceder al nombre de la variable (en el modulo llamador) y el parámetro correspondiente debe declararse como puntero * (en el modulo llamado). Invocación nombfc( & nombvble); Cabecera tipo_retorno nombrefuncion(tipo *vble)
Paso de Parámetros: Por referencia o Por dirección Se transfiere la dirección del parámetro actual ingreso(&a, &b) 1110 10 void ingreso (int *x, int *y)
Paso de Parámetros: Por referencia o Por dirección RAM n 2000 b =*y 1110 a =*x 10 4 1000 x 10 y m 1110 1000 90 2000
Ejemplo Procedimiento en C
Ejemplo Procedimiento en C
Ámbito de las variables VARIABLE Ámbito Porción de programa donde la variable «esta activa». Tipo de variable Global Local
Ámbito de las variables Variable Global: Es visible por todas los módulos definidos en el programa. Se define ANTES del MAIN. Ámbito de programa
Variable Global Reconocida por TODOS los módulos que están después de su declaración Declaración de variable global
Variable Local Variable Local: Es visible por el módulo en el que fue definida. Existen en memoria sólo cuando la función está activa Ámbito de modulo
Variable Local Reconocida por dentro del main Local al main Reconocida por dentro del modulo Local al modulo
Clases de Almacenamiento Los especificadores de clases de almacenamiento, permiten modificar el ámbito de una variable. Auto Tipos Extern Static
Clases de Almacenamiento: Variables automáticas Son aquellas a las que se les asigna automáticamente espacio en memoria a la entrada a la función y se les libera el espacio tan pronto se sale de la función. Declaración: auto tipo_dato nombvble; Opcional Nace en el momento de su declaración y vive mientras dura la función
Clases de Almacenamiento: Variables externas Son aquellas variables que han sido inicializadas en un archivo, y que deben ser utilizadas en otro. Requiere del enlace delos archivos, para que se combinen las declaraciones. Declaración: extern tipo_dato nomvble; Cuando una variable se declara como externa, se le indica al compilador que el espacio de la variable esta definido en otro lugar
Clases de Almacenamiento: Variables estáticas Son aquellas cuyo contenido no se pierde al finalizar la función en la cual están definidas, es decir, retiene sus valores entre llamadas a funciones. Se inicializan una sola vez Declaración: static tipo_dato nomvble; Su espacio de almacenamiento se define en tiempo de compilación, existe en tiempo de ejecución y se elimina cuando el programa desaparece de memoria