Documente Academic
Documente Profesional
Documente Cultură
Prof. Departamento de Computacin Escuela de Ingeniera de Sistemas Facultad de Ingeniera Universidad de Los Andes
Programacin Modular
Construir programas en forma modular (dividir un programa grande en un cierto nmero de componentes mas pequeos)
Programacin Modular
Diseo descendente (de arriba hacia abajo), metodologa del divide y vencers o programacin top-down:
En la solucin de problemas grandes, es conveniente dividirlo en problemas mas pequeos (sub-problemas), los cuales a su vez pueden dividirse en sub-problemas mas pequeos Este proceso de divisin contina hasta que los sub-problemas son tan sencillos que pueden ser resueltos mediante un programa simple llamado mdulo
Las soluciones (mdulos) de un diseo descendente pueden codificarse en lenguajes de programacin tales como C, C++, Pascal, Fortran o Java
Programacin Modular
Mdulos: Piezas pequeas diseadas para ejecutar una tarea especfica. Permiten desarrollar y mantener programas grandes. Pueden ser de dos tipos:
Funciones Procedimientos
Sistemas
Geologa
Elctrica
Mecnica
Qumica
Computacin
Sistemas de Control
Investigacin de operaciones
Programacin Modular
Programa principal
M1 M1.1
M2 M1.2
M3
M4 M4.1
M1.2.1
Prof. Flor Narciso Programacin 1 Semestre A-2010 6
Elegir opcin
Insertar nota
Modificar nota
Eliminar nota
Ver nota
Por nombre
Por nota
Sistema bibliotecario
Prstamo P_Libros
Adquisicin
Catalogacin
C_Libros
P_Revistas
A_Revistas
Sub-problemas: Entrada de datos de la altura y la base Leer datos Validar datos Calcular el rea Salida de los resultados
leerDatos validarDato
calcularArea
escribirArea
Diagrama modular
10
Facilita la escritura y depuracin de un programa ya que cada mdulo representa una parte bien definida del problema
Localizacin rpida de errores Modificacin de un mdulo sin afectar a los dems
Prof. Flor Narciso Programacin 1 Semestre A-2010 11
Reutilizacin de un mdulo
Los algoritmos de cada mdulo slo se escriben y codifican una sola vez, aunque se necesiten en distintas ocasiones a lo largo del sistema de software completo e incluso de otros sistemas de software (reutilizacin) evitando la duplicacin innecesaria de cdigo La reutilizacin de un mdulo por otros sistemas de software es un ahorro de tiempo, ya que no es necesario volver a resolver el problema, y si el mdulo ha sido previamente probado y verificado tambin reduce la posibilidad de errores Fcil comprensin del programa completo
13
Funcin
Matemticamente una funcin es una operacin que toma uno o mas valores llamados argumentos y produce un valor llamado resultado Ejemplos funcin de un slo argumento
f ( x) 4 x2 1
a2 b2 f ( a, b) (a 1) (b 1)
Funcin
real funcin f(entero x) 0. Inicio 1.resultado = 4/(x*x + 1) 2.devolver (resultado) 3.Fin
4 f ( x) 2 x 1
Funcin
En C los mdulos se llaman funciones (unidad bsica de los programas). Realizan determinadas tareas bien definidas Una funcin:
Tiene un nombre Toma cero o mas valores, denominados argumentos o parmetros de entrada (parmetros formales) Segn el valor de los parmetros, devuelve un resultado, el cual es obtenido durante su ejecucin
Una funcin se define una sola vez pero puede usarse (mediante llamadas) tantas veces como sea necesario
Prof. Flor Narciso Programacin 1 Semestre A-2010
16
Notacin utilizada para definir funciones que devuelven UN SOLO VALOR La lista de parmetros formales y la declaracin de variables locales son opcionales
17
B (definicin)
Llamada a B.1
B.1 (definicin)
..
Nota: Cada vez que una funcin es llamada, se ejecuta y retorna el control al lugar desde donde fue hecha la llamada
18
f (definicin)
..
y = f(-7) ..
f(x) = x + 4
19
A Y = f(4)
f f(x) = x + 4
20
A Y=8
f f(4) = 4 + 4 = 8
21
Tipos de funciones en C
Funciones de biblioteca (libreras) : El lenguaje C tiene sus propias funciones incorporadas que permiten realizar ciertas operaciones o clculos de uso comn
Funciones definidas por el programador para realizar determinadas tareas
22
Librera estndar de C
Contiene una amplia coleccin de funciones para llevar a cabo clculos matemticos comunes, manipulaciones con cadenas de caracteres, manipulaciones con caracteres, operaciones de entrada/salida y muchas otras operaciones tiles. Esta biblioteca de funciones comunes construida una vez, puede ser re-utilizada por diferentes programas
Prof. Flor Narciso Programacin 1 Semestre A-2010 23
Libreras ANSI C
Descripcin nicamente define la macro de depuracin assert Contiene los prototipos de las funciones y macros de clasificacin de caracteres Define constantes para los cdigos de error Contiene parmetros de entorno, informacin sobre limitaciones y rangos para tipos reales
24
errno float
Libreras ANSI C
Librera limits Directiva #include <limits.h> Descripcin Contiene parmetros de entorno, informacin sobre limitaciones y rangos para tipos enteros Contiene los prototipos de las funciones, macros, y tipos para manipular y controlar varias opciones pertenecientes a la localidad del sistema Contiene los prototipos de las funciones y otras definiciones para el uso y manipulacin de funciones matemticas
25
locale
#include <locale.h>
math
#include <math.h>
Libreras ANSI C
Librera setjmp
Descripcin Contiene los prototipos para las funciones y un tipo para crear y manipular el entorno al hacer llamadas: registros, pilas, etc.. Contiene las funciones, macros, y tipos para crear y manipular seales del sistema Contiene las macros y tipos para crear y manipular argumentos de variables
26
signal
#include <signal.h>
stdarg
#include <stdarg.h>
Libreras ANSI C
Directiva
Descripcin
#include < stddef.h> Contiene las macros, y tipos comunes #include <stdio.h> Contiene los prototipos de las funciones, macros, y tipos para manipular datos de entrada y salida Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso general
stdlib
27
Libreras ANSI C
Librera string
Descripcin Contiene los prototipos de las funciones y macros de clasificacin de caracteres Contiene los prototipos de las funciones, macros, y tipos para manipular la hora y la fecha del sistema
time
#include <time.h>
28
Funciones de librera en C
Tipo de la funcin Tipo y nombre del parmetro formal, parmetro de entrada o argumento
Parmetro actual
Tipos de Parmetros
Parmetros formales (parmetros de entrada o argumentos): Declaraciones de los parmetros en la definicin de la funcin
Parmetros actuales: Valores que toman los parmetros formales y que son proporcionados a la funcin que es llamada por la funcin que la llam
30
Parmetros formales
Los PARAMETROS FORMALES son VARIABLES LOCALES. La nica diferencia es el lugar donde son declarados, es decir, en la definicin de una funcin (lista_parmetros_formales). Cuando se pasa un valor desde una funcin llamadora o invocadora a una funcin llamada o invocada, se crea una variable temporal dentro de la funcin invocada. Una vez que termina la ejecucin de la funcin invocada y se retorna a la funcin invocadora, esta variable deja de existir.
Funciones de librera en C
Funcin: double acos(double x);
Propsito Calcula el valor principal del arco coseno de x. Puede producirse un error de dominio para los argumentos que no estn en el intervalo [-1, +1] Retorna el arco coseno en el intervalo [0, PI] radianes Ejemplo
32
Funciones de librera en C
Funcin: double pow(double x, double y);
Propsito Calcula x elevado a la potencia de y Puede producirse un error de dominio si x es negativo e y no es un valor entero Tambin se produce un error de dominio si el resultado no se puede representar cuando x es cero e y es menor o igual que cero Retorna el resultado de xy
Prof. Flor Narciso Programacin 1 Semestre A-2010 33
Ejemplo
#include <stdio.h> #include <math.h> int main() { double x = 6.54321, y = 0.56789; printf( "pow(%f, %f) = %f\n", x, y, pow(x,y)); return 0; }
Funciones de librera en C
Funcin: int abs(int num);
Propsito Calcula el valor absoluto de un entero num Si el resultado no puede ser representado, el comportamiento no est definido
#include <stdlib.h> #include <stdio.h> int main() { int num, y; puts( "Escriba un numero entero:" ); scanf( "%d", &num ); y = abs(num); printf( "abs( %d ) = %d\n", num, y); return 0; }
Prof. Flor Narciso Programacin 1 Semestre A-2010 34
Ejemplo
Funciones de librera en C
Ejemplos: #include <math.h> valor1 = sin(3.14159); valor2 = sin(x) - cos(y); valor3 = sin(theta)/(sin(delta) - sin(delta-theta)); theta = acos(1.0/sqrt(1 - x*x)); if (sin(x) > 0.7) { printf(Angulo mayor que 90 grados\n); printf(Valor = %f, exp(-a*t) * sin(a*t)); }
Prof. Flor Narciso Programacin 1 Semestre A-2010 35
36
39
40
41
42
Ejercicios
Un programa en C contiene las siguientes declaraciones y asignaciones iniciales:
43
Paso de parmetros
Paso de parmetros: Por valor Por referencia Por valor: Los parmetros formales correspondientes reciben una COPIA de los valores (constante, variable, resultado de la evaluacin de una expresin) de los parmetros actuales; por tanto, los cambios que se produzcan en ellos por efecto de la ejecucin de la funcin no podrn afectar el valor de los parmetros actuales.En C/C++ todas las llamadas, por defecto, son por valor.
44
45
46