Práctica 1 Sentencias de control del programa 1.1 Introducción Los cálculos necesarios para obtener un determinado resultado a menudo requieren tomas de decisión e iteraciones. Por este motivo los lenguajes de programación incluyen sentencias que permiten realizar bifurcaciones y bucles. En esta práctica se van a realizar pruebas con las sentencias if-else y while. 1.1.1 Objetivos Se pretende que el alumno: • Aprenda a realizar programas en MATLAB y guardarlos en archivos M. • Experimente con programas sencillos que contienen secuencias de operaciones. • Experimente con programas sencillos que contienen bifurcaciones. • Experimente con programas sencillos que contienen ciclos repetitivos. Este enunciado contiene ejercicios suficientes para que se pueda aprovechar todo el tiempo asignado a la sesión. Es decir, hay ejercicios de sobra. Tenga pues en cuenta que el objetivo no es llegar al último ejercicio lo antes posible y marcharse. El objetivo es usar todo el tiempo disponible para experimentar. Si se llega o no se llega a completar el último ejercicio es algo que carece de importancia. 1.1.2 Requisitos Se requiere que el alumno acuda a la sesión práctica con una copia de estas notas y con algún documento identificación: DNI, permiso de conducción, tarjeta de la universidad, pasaporte, etc. Se requiere tener asimilados los conceptos de los diagramas de flujo con bifurcaciones y con iteraciones o bucles correspondientes a las clases de teorı́a y problemas. 1.1.3 Desarrollo de la práctica El alumno deberá realizar todos los puntos que se indican a continuación en el orden en que aparecen. 1. Leer estas notas antes de la sesión práctica, despejando cualquier duda mediante consulta a sus apuntes de clase. 1 2 PRÁCTICA 1. SENTENCIAS DE CONTROL DEL PROGRAMA 2. Escribir en el entorno MATLAB todos los ejemplos que aparecen en estas notas, contemplando luego los resultados. Este proceso ha de realizarse de forma crı́tica, es decir, el alumno ha de dedicar cierto tiempo a pensar por qué se obtienen esos resultados y no otros. Es imprescindible que el alumno descubra por sı́ mismo sus errores y aprenda a corregirlos. No sirve de nada preguntar al profesor o al compañero en cuanto surge la menor duda o dificultad. 3. Explorar ejemplos similares a los propuestos, cambiando alguna que otra cosa. En esas pruebas debe ser capaz de predecir el resultado de los cambios introducidos. De este modo aprenderá el uso de la herramienta MATLAB. 4. Resolver los ejercicios de auto-evaluación, comprobando la solución mediante pruebas en el entorno de MATLAB. 1.2 Archivos M Una de las caracterı́sticas del entorno MATLAB es que permite que las órdenes puedan ser tomadas de un archivo en lugar de ser introducidas por el teclado. La idea es simple: si el usuario va a repetir a menudo un conjunto de órdenes puede escribirlas en un archivo de texto; posteriormente le indica a MATLAB que lea dicho archivo, ejecutando las órdenes una por una. El efecto es el mismo que si el usuario hubiese escrito las órdenes en el entorno de MATLAB. Ahora bien, puesto que el archivo de texto se puede guardar en disco no es preciso volver a escribir las órdenes nunca más. Cada vez que el usuario desee ejecutar de nuevo el conjunto de órdenes podrá indicar nuevamente a MATLAB que lea el archivo. Esto supone un gran ahorro de tiempo en muchos casos. Es costumbre dar a los archivos que contienen órdenes de MATLAB una extensión predeterminada que los diferencia de otros archivos de texto. Esta extensión es .m. Por ejemplo si un archivo contiene las órdenes para dibujar un vector se le puede llamar dibuvector.m. Los archivos que contienen órdenes de MATLAB serán llamados desde ahora archivos M. Para escribir el archivo de texto se puede usar cualquier programa como la libreta de notas. MATLAB incorpora su propio programa para redacción llamado M file Editor, o sea redactor de archivos M. 1.2.1 Ejemplo 1 A modo de ejemplo considere las siguientes órdenes de MATLAB que convierten un ángulo de grados a radianes. anggrados=input(’Escriba el ángulo en grados : ’); angradianes = anggrados/180*3.1415; disp(’El valor en radianes es : ’); disp(angradianes); Aparecen dos funciones nuevas input y disp. La primera de ellas, input sirve para leer un dato del teclado y asignarlo a una variable. La segunda sirve para escribir en la pantalla un mensaje o el valor de una variable. Para comprobar el funcionamiento copie el texto dentro de un archivo al cual se le da el nombre de conversor.m. Para ello puede usar la libreta de notas o el redactor de MATLAB. Una vez que lo haya creado debe grabarlo (opción Guardar o Save) en la carpeta ’Mis Documentos’. Para que MATLAB pueda ejecutar las órdenes contenidas en el archivo es preciso cambiar la carpeta de trabajo de MATLAB. Esta carpeta se indica en un menú que aparece en la ventana de órdenes, arriba a la derecha. Pulse en el menú y seleccione la carpeta ’Mis Documentos’. Informática, 1o Ing. Aeroespacial Dpto. Ingenierı́a de Sistemas y Automática. E.T.S. Ingenieros. US. 3 Si todo esto se ha realizado correctamente ahora solamente tiene que escribir en la ventana de órdenes el nombre del archivo que contiene las órdenes, en este caso es conversor. Ası́ aparecerá en la pantalla: >> conversor Escriba el ángulo en grados : En caso de que se haya equivocado de carpeta al grabar el archivo o al elegir la carpeta de trabajo no será posible ejecutar las órdenes y aparecerá un mensaje como >> conversor ??? Undefined function or variable ’conversor’. En caso de que se haya equivocado al escribir las órdenes aparecerá un mensaje de error. Por ejemplo, si escribe inpot en lugar de input se obtiene lo siguiente >> conversor ??? Undefined command/function ’inpot’. Error in ==> conversor at 1 Cada vez que se escribe conversor en la ventana de órdenes de MATLAB se ejecutan las órdenes que el archivo conversor.m contiene. Se dice entonces que se está ejecutando el programa conversor. Use el programa varias veces hasta comprobar el buen funcionamiento e intente añadir o cambiar alguna cosa en el programa. Se recomienda que haga nada más que un cambio cada vez y que ejecute el programa a continuación para ver el efecto. Observe que las órdenes que terminan en punto y coma se realizan “silenciosamente”, es decir, sin que aparezca nada en la pantalla. De este modo se consigue que sólo se escriban los mensajes necesarios y el resultado final. Pruebe a ejecutar el programa eliminando previamente algunos signos punto y coma y observe los resultados. Explore esta idea hasta asimilarla completamente. Lo normal es que los programas y funciones no escriban los cálculos intermedios en la pantalla. Esto es ası́ para evitar que la pantalla se llene de información no deseada. Por tanto hay que acostumbrarse desde este momento a usar el signo de punto y coma al final de las expresiones. Este ejemplo pone de manifiesto que los programas en MATLAB no son sino listas de órdenes que MATLAB interpreta tomándolas una a una de un archivo de texto. Recuerde siempre que el archivo de texto ha de estar en la misma carpeta que MATLAB esté utilizando como carpeta de trabajo. Recuerde también que el archivo ha de tener una extensión .m, o sea que después del nombre se coloca un punto, una m y nada más. 1.2.2 Órdenes útiles para carpetas Como ya se ha dicho, si el archivo de texto no se graba en la carpeta de trabajo de MATLAB no podrá ser ejecutado. Conviene tener ciertas herramientas que ayuden a comprobar esta situación. • Para comprobar los archivos .m que tiene en la carpeta de trabajo de MATLAB pruebe la orden what. • Para saber la carpeta de trabajo que MATLAB está usando existe la orden pwd. • Para saber la lista de todos los archivos en la carpeta de trabajo de MATLAB pruebe la orden dir. Aparecerán los archivos de tipo .m y también los de otros tipos. 4 PRÁCTICA 1. SENTENCIAS DE CONTROL DEL PROGRAMA 1.2.3 Ejemplo 2 Use las ideas del ejemplo anterior para crear un programa que sirva para calcular y escribir y, que se obtiene mediante y = P (x) = x3 − 2x2 − 5 siendo x una variable real. Escriba las órdenes necesarias en un archivo de nombre polinomio.m. Compruebe que el resultado es correcto. Por ejemplo, al ejecutar el programa con x = 3 el resultado que se obtiene ha de ser el siguiente: >> polinomio Escriba el valor de x : 3 El valor de y es : 4 1.3 La bifurcación Ya se ha visto en los diagramas de flujo realizados en las clases teóricas que las bifurcaciones son imprescindibles para llevar a cabo ciertas tareas. En MATLAB es posible realizar la bifurcación básica mediante la sentencia if-else. La forma de uso se muestra en el código que aparece a continuación. if condición ... sentencias bloque S; ... else ... sentencias bloque N; ... end En esta construcción, la condición es una operación que da como resultado un valor lógico que puede ser verdadero o falso. Como recordará las operaciones del tipo x>2 producen un valor de este tipo. En caso de que la evaluación de la condición arroje un resultado verdadero MATLAB ejecuta las sentencias del bloque S (bloque sı́). En caso contrario se ejecutan las sentencias del bloque N (bloque no). Al terminar uno u otro bloque se pasa a las sentencias posteriores a end. Las palabras if, else y end forman parte del vocabulario de MATLAB. Son palabras reservadas y por tanto no pueden usarse como identificadores de variables o de archivos. De la explicación anterior debe resultar evidente que al usar la bifurcación se ejecutan las sentencias S o las N pero no ambas. Para que quede más claro considere el diagrama de flujo de la figura 1.1 a) que corresponde a una bifurcación genérica. Dentro de los bloques S y N se puede colocar cualquier conjunto de sentencias, incluyendo nuevas bifurcaciones como se verá más adelante. A fin de aclarar todo esto considere un ejemplo sencillo como el siguiente trozo de código correspondiente al diagrama de la figura 1.1 b). x=input(’Introduzca el valor de x ’); if x < 0, va = -x; else va=x; Informática, 1o Ing. Aeroespacial Dpto. Ingenierı́a de Sistemas y Automática. E.T.S. Ingenieros. US. 5 inicio Leer x no sí no sí ¿ x < 0 ? condición va Bloque N x va -x Bloque S Escribir va fin Dato Resultado. Valor absoluto de x Valor para comparación a) x Variable real va Variable real 0 Constante entera b) Figura 1.1: a) Diagrama de flujo correspondiente a una bifurcación genérica. b) Diagrama de flujo correspondiente al ejemplo de bifurcación. end disp(’El valor absoluto es: ’); disp(va); Como puede ver en el bloque S se realiza la operación va ← −x mientras que el bloque N contiene la operación va ← x. Se consigue de este modo que va sea el valor absoluto del valor que se ha leı́do x. Escriba el texto dentro de un archivo de nombre valorabs.m dentro de la carpeta de trabajo. Ejecute luego el programa y compruebe su funcionamiento. No pase al siguiente ejercicio sin antes estar totalmente seguro del buen funcionamiento del programa. El siguiente ejemplo de bifurcación también es muy simple y sirve para calcular cómo serán las raı́ces de una ecuación de segundo grado. a=input(’?Coeficiente a?’); b=input(’?Coeficiente b?’); c=input(’?Coeficiente c?’); if b*b-4*a*c < 0, disp(’Las raı́ces son complejas’); else disp(’Las raı́ces son reales’); end Es fácil ver que este programa toma como datos los coeficientes a, b y c de una ecuación de segundo grado ax2 + bx + c = 0, suponiendo que a 6= 0. El programa escribe en la pantalla si las raı́ces (soluciones de la ecuación) serán reales o complejas (con parte imaginaria). Antes de avanzar escriba estas sentencias en un archivo de nombre raices2g.m, ejecute el programa y compruebe su funcionamiento. 6 PRÁCTICA 1. SENTENCIAS DE CONTROL DEL PROGRAMA 1.3.1 Problema ejemplo con bifurcaciones Se desea leer por teclado dos valores x e y que representan las coordenadas de un punto en el plano P=(x, y). Se quiere que el programa calcule y escriba el número del cuadrante al que P pertenece. Se supone que ni x ni y valen cero. Recuerde que el primer cuadrante se caracteriza porque ambas coordenadas son positivas, el segundo cuadrante está a la izquierda del primero y se caracteriza por tener abscisas negativas y ordenadas positivas. El tercer cuadrante tiene ambas coordenadas negativas y el cuarto corresponde a abscisas positivas y ordenadas negativas. El diagrama de flujo para este ejercicio lo puede consultar en sus apuntes. Intente codificar dicho diagrama grabándolo en un archivo de texto de nombre micuadrante.m. Compruebe que el resultado que el programa proporciona es adecuado para distintas combinaciones de x e y. Recuerde que se ha supuesto que ni x ni y valen cero. En particular, después de la ejecución compruebe lo siguiente: • ¿qué variables se han creado? (use who) • ¿tienen las variables el valor correcto? En caso de que no se le ocurra cómo codificar el diagrama aquı́ se proporciona una solución. Para evitar confusiones grabe estas órdenes en un archivo de nombre cuadrante.m. Compruebe que el resultado que el programa proporciona es adecuado. x=input(’Introduzca la coordenada x: ’); y=input(’Introduzca la coordenada y: ’); if x>0, if y>0, resultado=1; else resultado=4; end else if y>0, resultado=2; else resultado=3; end end disp(’El cuadrante es : ’); disp(resultado); 1.4 La esctructura “hacer mientras” La esctructura “hacer mientras que la condición sea cierta” es una construcción cı́clica con salida en cabeza. Para codificar esta estructura en MATLAB hacen falta un conjunto de lı́neas de código que tienen la forma siguiente: while condición sentencias del cuerpo del bucle end Informática, 1o Ing. Aeroespacial Dpto. Ingenierı́a de Sistemas y Automática. E.T.S. Ingenieros. US. 7 inicio Iniciar x a 0 y suma a 0 no no ¿ x < 10 ? ¿ condición ? sí sí suma suma + x cuerpo x x + 2 Escribir suma fin a) Contador de 0 a 10 Suma de los valores de x Valor inicial para x y suma Valor final para x Incrementos de x x Variable entera suma Variable entera 0 Constante entera 10 Constante entera 2 Constante entera b) Figura 1.2: a) Diagrama de flujo correspondiente a un bucle genérico del tipo “repetir mientras la condición sea cierta”. b) Diagrama de flujo correspondiente al ejemplo de uso del bucle “mientras” Las palabras while y end forman parte del vocabulario de MATLAB. Son palabras reservadas y por tanto no pueden usarse como identificadores de variables o de archivos. En la figura 1.2 a) se muestra el diagrama de flujo correspondiente al bucle. La condición es una expresión que da como resultado un valor lógico, por ejemplo x > 2. El cuerpo del bucle son sentencias cualesquiera. Examinando el diagrama de flujo de la figura 1.2 a) es fácil deducir que mientras la condición se cumpla se repetirá el bucle una y otra vez. Es decir, si al evaluar la expresión lógica de la condición se obtiene un resultado verdadero se pasa a ejecutar el cuerpo del bucle, en caso contrario se termina el bucle. Como ejemplo sencillo considere el siguiente trozo de código: x=0; suma=0; while x<10, suma = suma + x; x = x+2; end disp(suma); Es fácil adivinar qué ocurre al ejecutar este programa, sobre todo si se dibuja el diagrama de flujo equivalente (véase figura 1.2 b). Para mejorar la legibilidad de los programas es muy aconsejable incluir comentarios y ordenar la apariencia en la pantalla de las sentencias. De este modo el ejemplo en cuestión resulta más fácil de interpretar. x=0; suma=0; % variable contador para el bucle % variable suma parcial while x<10, suma = suma + x; x = x+2; end % condición de salida % suma parcial % actualización 8 PRÁCTICA 1. SENTENCIAS DE CONTROL DEL PROGRAMA disp(suma); % escritura del resultado Escriba el texto anterior en un archivo de nombre sumapares.m y compruebe su funcionamiento. 1.4.1 Iteraciones sin final Se puede dar el caso de que por error la condición de salida del bucle nunca se cumpla lo que dará lugar a que el programa ejecute un número de iteraciones ilimitado. A este tipo de errores se les denomina bucles infinitos. Si se le da el caso puede interrumpir la ejecución del programa pulsando la combinación de teclas Ctrl + C. 1.4.2 Dibujo de la gráfica del seno Otro ejemplo de aplicación del bucle “mientras” es la construcción de vectores apropiados para realizar la representación gráfica de una función. En aras de la sencillez se va a concretar con un ejemplo: dibujar la curva y = sen(x) con x ∈ [−4, 4] radianes. Para poder realizar la gráfica pedida es preciso generar dos vectores que contengan los valores de las abscisas (eje x) y de las ordenadas (eje y). Sean estos dos vectores vx y vy. Una vez generados bastará con escribir la orden de MATLAB plot(vx, vy) y aparecerá la gráfica. Por tanto el problema se reduce al de calcular los vectores. Puesto que x ∈ [−4, 4] puede ser una buena idea tomar valores equiespaciados en ese intervalo, por ejemplo cada 0.1 radianes. De esta forma se tendrá que: vx = ( − 4, − 3.9, − 3.8, − 3.7, · · · , 3.8, 4). Por otro lado los valores de vy deben corresponderse con el seno de los valores de vx, por lo que: vy = (sen(−4), sen(−3.9), · · · , sen(4)) El diagrama de la figura 1.3 muestra un algoritmo que produce los vectores vx y vy en la forma indicada. Obsérvese que se hace uso de una función sin que no se ha especificado por simplicidad. Recuerde que en los diagramas de flujo solamente se han de usar operaciones permitidas excepto excepciones expresas. Ésta es una de esas excepciones. Ahora solamente falta codificar el diagrama anterior y añadirle la orden de dibujo. Intente realizarlo por sı́ mismo. Guarde las órdenes necesarias en un archivo de nombre migrafseno.m en la carpeta. Ejecute el programa escribiendo migrafseno en la ventana de órdenes de MATLAB. Después de la ejecución compruebe lo siguiente: • ¿qué variables se han creado? (use who) • ¿tienen las variables el valor correcto? • ¿ha aparecido el dibujo en su ventana? En caso de que su solución no funcione correctamente se recomienda que dedique un cierto tiempo a buscar los errores. Si después de eso no consigue eliminar los errores lo más probable es que deba volver a leer el contenido de esta práctica o de la práctica 1 porque casi seguro que se le ha pasado algo por alto. Si a pesar de eso no encuentra el fallo use la solución que se muestra a continuación. x=-4; k=1; % abscisa inicial en radianes % ı́ndice inicial Informática, 1o Ing. Aeroespacial Dpto. Ingenierı́a de Sistemas y Automática. E.T.S. Ingenieros. US. 9 inicio x -4 k 1 no ¿ x <= 4 ? sí vx k vy k k x sin(x) k+1 Valores eje x (rad) x Vector de abscisas vx Vector de ordenadas vy Índice para vectores Valor inicial e incrementos del índice Vector de variables reales Vector de variables reales k Variable entera 1 Constante entera Abscisa inicial (rad) -4 Constante entera Incrementos de x (rad) 0.1 Constante real Abscisa final (rad) x Variable real 4 Constante entera x+0.1 Función para calcular el seno sin Devuelve un valor real fin Figura 1.3: Diagrama de flujo para el cálculo de vectores para la gráfica del seno. while x<=4, vx(k) = x; vy(k) = sin(x); x = x + 0.1; k = k + 1; end plot(vx, vy); % % % % % condición de salida vector de abscisas vector de ordenadas incremento de la abscisa incremento del ı́ndice % gráfica Para evitar confusiones guarde este programa en un archivo de nombre grafseno.m y pruébelo varias veces para comprobar su buen funcionamiento. 1.4.3 Opciones de dibujo El ejemplo anterior permite diversas modificaciones que ilustran la forma de trabajar de plot y que son de gran utilidad. Ejecute el programa de la gráfica del seno (el suyo o el que se proporciona). Ahora escriba plot(vx, vy, ’r’) observará que la curva sale de otro color. Pruebe las siguientes combinaciones una a una: • plot(vx, vy, ’g’). Cambio de color. • plot(vx, vy, ’b’). Cambio de color. • plot(vx, vy, ’rx’). Esta opción es interesante. Los puntos del plano (vxk , vyk ) aparecen marcados con cruces. Cada cruz representa pues una pareja abscisa-ordenada. • plot(vx, vy, ’ro’). Otro tipo de marca. • plot(vx, vy, ’r.’). Otro tipo de marca. • plot(vx, vy, ’rx-’). Con esta opción aparecen los puntos marcados y además unidos por segmentos de lı́nea. Es interesante darse cuenta de que cualquier dibujo de MATLAB 10 PRÁCTICA 1. SENTENCIAS DE CONTROL DEL PROGRAMA es en realidad una colección de segmentos rectos. Si no lo ve claro pruebe a ampliar zonas del dibujo usando la lupa que aparece en la ventana de dibujo. Si quiere probar más opciones escriba help plot y aparecerá una lista de opciones para la función plot. 1.4.4 Continuando con el ejemplo Para que quede claro que una gráfica no es más que una serie de tramos rectos consecutivos se propone ahora modificar el programa anterior. En lugar de utilizar un incremento de 0.1 ponga un incremento de 0.8 y observe el resultado. Para apreciar bien el resultado utilice la versión de la función plot que coloca marcas y lı́neas: plot(vx, vy, ’rx-’). Haga posteriormente la prueba con un incremento de 0.01 y vea los cambios que ello conlleva. Con estos ejemplos debe quedar claro que para que la gráfica se muestre correctamente ha de contener un número suficiente de puntos. Por otra parte no se pueden usar millones de puntos pues se excederı́a la memoria del ordenador. Este hecho afecta a todos los programas de ordenador y no solamente a MATLAB. Los simuladores, los programas de dibujo, etc. también se ven afectados por esta circunstancia. Por este motivo conviene estar prevenidos acerca de lo que el ordenador da como resultado, pues no es necesariamente lo que el usuario necesita. 1.5 Auto-evaluación 1.5.1 Ejercicio 1 Enunciado: Se le proporciona una variable x. Debe calcular otra variable p que valga 1 si x ∈ (5, 7) y cero en cualquier otro caso. Introduzca el trozo de código que resuelve el problema. Discusión: No se pide que se lea ninguna variable ni que se escriba ninguna variable. Solamente se pide que se calcule p en función de x siguiendo una regla dada. Solución: El problema se resuelve con un algoritmo como el que se muestra en la figura 1.4. La codificación del algoritmo en MATLAB es: if x>5 & x<7, p=1; else p=0; end Comprobación: Para comprobar que la codificación es correcta puede usar el entorno de MATLAB. Para ello puede proceder del siguiente modo: proporcione a x un valor factible y luego ejecute el código de la solución, escriba luego el valor de p y compruebe si el resultado es correcto. Repita la comprobación para otros valores de x hasta que quede convencido del buen funcionamiento. 1.5.2 Ejercicio 2 Enunciado: Se le proporciona un valor n entero y mayor que cero. Se le pide que construya un vector v tal que v ∈ IR1×n y siendo sus componentes los primeros múltiplos del número 3 comenzando por el propio 3. Introduzca el trozo de código que resuelve el problema. Informática, 1o Ing. Aeroespacial Dpto. Ingenierı́a de Sistemas y Automática. E.T.S. Ingenieros. US. 11 inicio ¿ x>5 Y x<7 ? sí p Resultado p Variable real Valor proporcionado x Variable entera Valor para comparación 5 Constante entera Valor para comparación 7 Constante entera 1 Constante entera 0 Constante entera no 1 p 0 Valor del resultado en caso de pertenencia Valor del resultado en caso de no pertenencia fin Figura 1.4: Diagrama de flujo correspondiente al ejercicio 1 de autoevaluación. inicio k 1 no ¿ k <= n ? Vector resultado v Vector de variables enteras Índice para el vector v k Variable entera Valor inicial e incrementos del índice k 1 Constante entera Multiplicador 3 Constante entera sí vk 3·k k k+1 fin Figura 1.5: Diagrama de flujo correspondiente al ejercicio 2 de autoevaluación. Discusión: No se pide que se lea ninguna variable ni que se escriba ninguna variable. Solamente se pide que se calcule v siguiendo una regla dada. Del propio enunciado debe quedar claro que si n fuese 1 entonces v = (3), si n fuese 2 entonces v = (3, 6), si n fuese 3 entonces v = (3, 6, 9), etc. Solución: El problema se resuelve con un algoritmo como el que se muestra en la figura 1.5. La codificación del algoritmo en MATLAB es: k=1; while k<=n, v(k) = 3*k; k = k + 1; end Comprobación: Para comprobar que la codificación es correcta puede usar el entorno de MATLAB. Para ello puede proceder del siguiente modo: proporcione a n un valor factible determinado (entero y mayor que cero). Luego ejecute el código de la solución, escriba luego el valor de v y compruebe si el resultado es correcto. Repita la comprobación para otros valores de x hasta que quede convencido del buen funcionamiento. 12 PRÁCTICA 1. SENTENCIAS DE CONTROL DEL PROGRAMA 1.6 1.6.1 Ejercicios propuestos Ejercicio propuesto 1. Se le proporciona un valor x. Se desea calcular y como y = f(x) siendo f una función definida a trozos del modo siguiente: • Si x < −10, f(x) = −x2 • Si −10 ≤ x < 2, f(x) = x3 • En el resto de casos f(x) = 0 Introduzca el trozo de código que resuelve el problema. 1.6.2 Ejercicio propuesto 2 Como paso previo para dibujar la gráfica de y =cos(x3 /20) se desean calcular dos vectores vx y vy con las caracterı́sticas siguientes: • Han de tener 101 componentes • Las componentes de vx estarán equiespaciadas, comenzando en v1 = −6 y terminando en v101 = 6 • Las componentes de vy serán vyk =cos(x3 /20) para k = 1, 2, · · · , 101. Lógicamente, para este ejercicio se permite el uso de la función cos. Introduzca el trozo de código que resuelve el problema. 1.6.3 Ejercicio propuesto 3 Se le proporciona un valor n que es un número entero y no negativo. Se desea calcular y de tal manera que y = n!. La variable n es un valor que deberá leer por teclado. El código ha de resolver el problema mediante un bucle con while, de esa forma necesariamente y no de otra. Introduzca el trozo de código que resuelve el problema. 1.6.4 Ejercicio propuesto 4 Se han dispuesto un conjunto de medidas de temperatura en un vector fila v de dimensión n > 2. Se le proporciona dicho vector y también el número n. Se quiere calcular la media m de las temperaturas en el vector. Se supone que v y n son valores dados, por lo que no hay que leer nada. El código ha de resolver el problema mediante un bucle con while, de esa forma necesariamente y no de otra. Introduzca el trozo de código que resuelve el problema.