TEMA 8: FUNCIONES 1.- CONCEPTOS Funciones Permiten desarrollar algoritmos y códigos modulares, mejorando la legibilidad. Son reutilizables por lo que pueden incorporarse a diagramas distintos, descargando de trabajo al programador que puede echar mano de funciones ya hechas y probadas. Concepto conjunto de órdenes que lleva a cabo una tarea precisa. Se utiliza dentro de un programa como si se tratara de una orden. Calcula resultados a partir de los datos que se le suministran explícitamente. Ejemplo: función sin() de MATLAB. o Cumple los tres elementos anteriores 1.- CONCEPTOS Datos y Resultado En matemáticas una función f: Calcula un valor (variable dependiente y) a partir de otro dado (variable independiente x). x e y pueden ser escalares, vectores o matrices. Las funciones en el ámbito informático: Se le suministran unos datos: argumentos. Concepto Devuelven un resultado. Ejemplo: la ejecución de y = sin(x) en MATLAB provoca: El cálculo mediante la función sin del seno del dato, que es el valor de x en ese momento. Asignación a la variable y del valor calculado por la función sin, que será el seno del dato x
2.- VARIABLES Clasificación Globales Locales Persistentes (las globales son así) Efímeras (con persistent las variables locales se transforman en persistentes) Variables locales Variables que existen sólo dentro de una función. Son efímeras: Son creadas al llamar a la función y desaparecen al terminar la ejecución de la función. No conservan su valor de una llamada a la siguiente. Pueden hacerse persistentes pero no lo haremos Fuera de la función esas variables no tienen existencia. Por ello puede haber otras variables con el mismo nombre. 3.- DIAGRAMA DE FLUJO Y FUNCIONES Se indica el uso de funciones mediante el bloque subprograma. Dentro del mismo: Se usará notación matemática para indicar el envío de argumentos. Se utilizará una asignación para indicar la recogida de los valores de las variables resultado. Operan con valores formales o ficticios: los argumentos. 4.- FUNCIÓN/MÓDULO Las funciones tienen una tabla de objetos propia. Los módulos no. El diagrama de flujo de una función lleva asociado su propia tabla con: Variables y constantes propias de la función. Argumentos y resultados. Las funciones se pueden utilizar en cualquier algoritmo, mientras que los módulos van asociados a un algoritmo concreto.
5.- FUNCIONES EN MATLAB Función que calcule la multiplicación de dos números. y = a * b function [prod] = producto (a, b) prod = a*b; Ejemplo 1 Calcule la media de los valores absolutos de a y b. Para ello cree la función Vabs(). Ejemplo 2 Se desea calcular r = P(z) para un número real z leído 3 6 9 desde el teclado, siendo P( x) = 1 x + 4x + x x Ejemplo 3 Se desea calcular r = Q(z) para un número real z y un número natural leído desde el teclado, siendo 2 3 n x x x Q( x) = x + + +... + 2 3 n Ejemplo 1
Ejemplo 1 Ejemplo 2 Ejemplo 2
Ejemplo 3 Ejemplo 3 Ejercicio 1 Realice el diagrama de flujo de una función que calcule el valor x y siendo x un número real y siendo y un número entero que puede ser positivo, negativo o cero. Ejercicio 2 Realice el diagrama de flujo de una función que evalúe el polinomio genérico de grado n dado por P(x) = a 1 x n +a 2 x n-1 + + a n x 1 + a n+1 x 0 siendo n un entero (n>0) y siendo los coeficientes del polinomio los elementos de un vector a = (a 1, a 2,, a n, a n+1 ) Los argumentos de la función serán el grado n, el vector de coeficientes vc y el punto x.
Ejercicio 1 Objeto Nombre Valor Tipo Argumento x variable real Argumento y variable entera Resultado r variable real Variable Auxiliar base variable real Variable Auxiliar exp variable entera Contador k variable entera 1 constante entera 0 constante entera Ejercicio 2 Inicio del cálculo de r como P( a, x, n) suma 0 k 1 k n+1? no sí exp n-k+1 suma suma + a k Pot(x, exp) k k+1 r suma Fin del cálculo de r como P( a, x, n) Ejercicio 2 Objeto Nombre Valor Tipo Argumento. Punto x variable real Argumento. Vector de coeficientes a variable vector de reales Argumento. Grado del polinomio n variable entera Resultado r variable real Variable auxiliar exp variable entera Índice k variable entera 1 constante entera 0 constante entera Función para calcular x^y Pot(x,y) devuelve un valor real
Ejercicio 2 Ejercicio 3 Se ha de realizar un programa que lea dos vectores de R 3 y calcule y escriba el coseno del ángulo que forman. Ejercicio 3 (Producto escalar: ) Inicio Leer A Leer B a Mod(A,3) b Mod(B,3) c ProdEsc(A,B,3) Cos c/(a*b) Inicio calculo de r como ProdEsc (A,B,n) suma 0 k 1 k n? SI suma suma + (A(k)*B(k)) k k+1 r suma NO Fin Fin calculo de r como Mod (A,B,n)
Ejercicio 3 (teorema del Coseno) Inicio Leer A Leer B Inicio calculo de r como Mod (A,n) suma 0 k 1 a Mod(A,3) b Mod(B,3) c Mod(B-A,3) Cos (a^2+b^2-c^2)/(2*a*b) k n? SI suma suma + Pot(A(k),2) k k+1 r sqrt(suma) NO Fin Fin calculo de r como Mod (A,n)