1 Funciones de Biblioteca Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes
2 Módulos Objetivos del estudio de módulos -Construir programas en forma modular (dividir un programa grande en un cierto número de componentes mas pequeños). -Re-utilizar los módulos. -Comprender los mecanismos utilizados para pasar información entre módulos.
3 Programación Modular Diseño descendente (de arriba hacia abajo): En la solución de problemas grandes, es conveniente dividirlo en problemas mas pequeños (sub-problemas), los cuales a su vez pueden dividirse en sub-problemas mas pequeños. Este proceso de división continúa hasta que los sub-problemas son tan sencillos que pueden ser resueltos mediante un programa simple llamado módulo. Las soluciones de un diseño descendente pueden codificarse en lenguajes de programación tales como C, C++, Pascal o Fortran.
4 Programación Modular Ingeniería SistemasGeología EléctricaMecánica Química ComputaciónControlInvestigación de operaciones
5 Programación Modular Módulos: Piezas pequeñas diseñadas para ejecutar una tarea específica. Permiten desarrollar y mantener programas grandes. Pueden ser de dos tipos: –Funciones –Procedimientos o subrutinas Programación Modular: Método de resolución de problemas que consiste en resolver de forma independiente los sub-problemas resultantes de una descomposición.
6 Programación Modular Programa principal M1M2M3M4 M1.1 M1.2M4.1 M1.2.1
7 Programación Modular: Ejemplo 1 Sistema bibliotecario Préstamo Adquisición Catalogación P_Libros P_Revistas A_Revistas A_Libros C_Libros
8 Programación Modular: Ejemplo 2 Calcular el área de un rectángulo. Sub-problemas: –Entrada de datos de la altura y la base. –Calcular la superficie. –Salida de los resultados. Módulos: –LeerDatos(altura, base) –CalcularArea(altura, base, area) –EscribirArea(area)
9 Programación Modular: Ejemplo 2 Programa Principal LeerDatos CalcularArea EscribirArea
10 Programación Modular: Ventajas Como los módulos son independientes, varios programadores pueden trabajar simultáneamente y de manera independiente en la resolución de un problema, repartiéndose las distintas partes del mismo. Permiten la localización rápida de errores. Se puede modificar un módulo sin afectar a los demás. Permiten la re-utilización de módulos, evitando la duplicación innecesaria de código. Permiten una fácil comprensión del programa completo.
11 Programación Modular: Ventajas Un grupo de instrucciones que se repite en distintas partes de un programa se pueden incluir dentro de una sola función, a la que se puede utilizar siempre que sea necesario con datos de entrada adecuados para su uso en un contexto particular y desde distintas partes del programa. Facilita la escritura y depuración de un programa ya que cada módulo representa una parte bien definida del problema. Favorece la portabilidad, ya que se pueden escribir programas sin prestar atención a las características de un sistema en particular.
12 Re-utilización de un módulo Los algoritmos de cada módulo sólo se escriben y codifican una sola vez, aunque se necesiten en distintas ocasiones a lo largo del programa completo e incluso de otros programas (re-utilización). La re-utilización de un módulo por otros programas es un ahorro de tiempo, ya que no es necesario volver a resolver el problema, y si el módulo ha sido previamente probado y verificado también reduce la posibilidad de errores.
13 Función Matemáticamente una función es una operación que toma uno o mas valores llamados argumentos y produce un valor llamado resultado. Ejemplos f(x) = función de un sólo argumento f(4) = 4/(16 + 1) = 4/17 = 0.235 f(a, b) = función de dos argumentos f(2, 3) = (4 + 9)/(1 - 4) = -13/3 = -4.33 4 x 2 + 1 a 2 + b 2 (a - 1) 2 - (b - 1) 2
14 Función En C y C++ los módulos se llaman funciones (unidad básica de los programas). Realizan determinadas tareas bien definidas. Una función tiene un nombre, toma uno o mas valores, denominados argumentos o parámetros de entrada y, según el valor de éstos, devuelve un resultado, en el nombre de la función, el cual es obtenido durante su ejecución. Una función se define una sola vez pero puede usarse (mediante llamadas) tantas veces como sea necesario.
15 Mecanismo de Llamadas entre Funciones ……….. Llamada a función B ……….. Llamada a función B ……….. A B Llamada 1 Retorno 1 Llamada 2 Retorno 2 Nota: Cada vez que una función es llamada, se ejecuta y retorna el control al lugar desde donde fue hecha la llamada.
16 Mecanismos Utilizados para pasar Información entre Funciones Parámetros: Proporcionan la forma de comunicar información entre funciones. Y = B(z)……. La función A llama (o invoca) a la función B con parámetro actual z AB La función B se ejecuta y devuelve el resultado a la función A, el cual es asignado a la variable Y
17 Tipos de Funciones en C++ Funciones de biblioteca : Los lenguajes C/C++ tienen sus propias funciones incorporadas que permiten realizar ciertas operaciones o cálculos de uso común. Funciones definidas (diseñadas y codificadas) por el programador para realizar determinadas tareas.
18 Biblioteca Estándar de C++ Contiene una amplia colección de funciones para llevar a cabo cálculos matemáticos 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.
19 Funciones de Biblioteca mas usadas en C++ FUNCIONTIPOPROPOSITO ARCHIVO include abs(i)intdevuelve el valor absoluto de istdlib.h fabs(d)doubledevuelve el valor absoluto de dstdlib.h cos(d) doubledevuelve el coseno de dmath.h cosh(d) doubledevuelve el coseno hiperbólico de dmath.h exp(d) doubledevuelve el valor e d math.h log(d) doubledevuelve el logaritmo natural de d math.h sqrt(d) doubledevuelve la raíz cuadrada de d math.h floor(d) doubledevuelve el entero mas grande nomath.h mayor que d ceil(d) doubledevuelve el entero mas pequeñomath.h mayor o igual a d pow (d1, d2) doubledevuelve d1 elevado a la potencia d2math.h fmod(d1, d2)doubledevuelve el resto de d1/d2 con elmath.h mismo signo de d1
20 Funciones de Biblioteca mas usadas en C++ FUNCIONTIPOPROPOSITO ARCHIVO include sin(d)doubledevuelve el seno de dmath.h acos(d)doubledevuelve el arco coseno de dmath.h asin(d)doubledevuelve el arco seno de dmath.h atan(d) doubledevuelve la arco tangente de dmath.h atan(d1, d2) doubledevuelve la arco tangente de d1/d2math.h atof(s) doubleconvierte la cadena s a una cantidadstdlib.h en doble precisión atoi(s) intconvierte la cadena s a un entero stdlib.h atol(s) longconvierte la cadena s a un entero stdlib.h largo getchar() intlee un carácter desde el dispositivostdio.h de entrada estándar putchar(c) intescribe un carácter en el dispositivostdio.h de salida estándar tolower(c)intconvierte una letra a minúsculactype.h toupper(c)intconvierte una letra a mayúsculactype.h
21 Funciones de Biblioteca mas usadas en C++ Ejemplos 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) cout
22 Funciones de Biblioteca mas usadas en C++ sin(x) Ejemplo: valor1 = sin(3.14159); Nombre Parámetro formal, parámetro de entrada o argumento Parámetro actual Llamada a la función sin
23 Tipos de Parámetros Parámetros formales (parámetros de entrada o argumentos): Declaraciones de los parámetros en la definición de la función. Parámetros actuales: Valores que toman los parámetros formales y que son proporcionados a la función que es llamada por la función que la llamó.
24 Funciones de Biblioteca: Ejemplo 1 Un polinomio de x, de segundo grado como máximo, se da por ax 2 + bx + c Su discriminante se define como b 2 – 4ac Se desea conocer la raíz cuadrada del discriminante; si el discriminante no es negativo, V b 2 – 4ac tiene la interpretación usual, pero si el discriminante es negativo, entonces V b 2 – 4acsignifica i V -( b 2 – 4ac) donde i es el número imaginario que satisface i 2 = -1 o en forma equivalente, i = V –1 Dado los valores de a, b y c, calcular el valor de la raíz cuadrada del discriminante.
25 Funciones de Biblioteca: Ejemplo 1 Análisis E-P-S Entradas: a, b, c R Proceso: - Calcular discriminante = b 2 – 4ac - Si discriminante > 0 RC = V b 2 – 4ac - Si discriminante < 0 RC = i V -( b 2 – 4ac) Salidas: Raíz cuadrada del discriminante RC R
26 Funciones de Biblioteca: Ejemplo 1 Algoritmo 0. Inicio 1. Escribir (“a = ?, b = ?, c = ?”) 2. Leer (a, b, c) 3. disc= pow (b, 2.0) + 4.0ac 4. Si (disc > 0) entonces RC = sqrt(disc) Escribir (“Raiz del discriminante = “, RC) sino RC = sqrt(-disc) Escribir (“Raiz del discriminante = i“, RC) fin-si 5. Fin
27 Funciones de Biblioteca: Ejemplo 1 Codificación #include void main () { float a, b, c, disc, RC; cout a >> b >> c; disc= pow (b, 2.0) + 4.0*a*c; if (disc > 0.0) { RC = sqrt(disc); cout
28 Funciones de Biblioteca: Ejemplo 2 Leer una letra minúscula y convertirla a mayúscula. Análisis E-P-S Entradas: Letra minúscula Proceso: - Convertir la letra minúscula en su correspondiente mayúscula Salidas: Letra mayúscula
29 Funciones de Biblioteca: Ejemplo 2 Algoritmo 0. Inicio 1. Escribir (“Introduzca una letra minúscula”) 2. Leer (minuscula) 3. mayuscula = convertirMayuscula(minuscula) 4. Escribir (mayuscula) 5. Fin
30 Funciones de Biblioteca: Ejemplo 2 Codificación #include void main() int minuscula, mayuscula; cout
31 Ejercicios Un programa en C++ contiene las siguientes declaraciones y asignaciones iniciales: int i = 8, j = 5; double x = 0.004, y = -0.01; char c = ‘c’, d = ‘d’; Determinar el valor de cada una de las siguientes expresiones, que hacen uso de funciones de biblioteca. a) abs(i - 2 * j) b) fabs(x + y) c) ceil (x) d) ceil (x + y)e) floor (x)f) floor(x + y) g) exp(x)h) log(x)i) log(exp(x)) j) sqrt(x*x + y*y)k) sqrt(sin(x) + cos(y))l) pow(x - y, 3.0)