Você está na página 1de 134

Lenguajes de Programaci on Gu a docente ECTS

Ingenier a Naval y Oce anica Escuela T ecnica Superior de Ingenieros Navales Universidad Polit ecnica de Madrid

A. Souto Iglesias, J.L. Bravo Trinidad L. Gonz alez Guti errez, A. Cant on Pire 30 de septiembre de 2008

....para m una buena escuela ser a una escuela distinta, una escuela que tuviese un principio seg un el cual todas sus normas estuviesen enfocadas a mantener a tantos estudiantes como sea posible durante el mayor tiempo dentro del sistema. As , todo tendr a que estar dirigido a hacer que los estudiantes participasen, que se sintiesen identicados con la escuela, que tuviesen la sensaci on de estar haciendo las cosas bien. Para m una buena escuela es una escuela que mantiene a todos los alumnos trabajando, comprometidos y con la sensaci on de que no van a fracasar. Stephen Ball.

In teaching you philosophy Im like a guide showing you how to nd your way round London. I have to take you through the city from north to south, from east to west, from Euston to the embankment and from Piccadilly to the Marble Arch. After I have taken you many journeys through the city, in all sorts of directions, we shall have passed through any given street a number of times - each time traversing the street as part of a dierent journey. At the end of this you will know London; you will be able to nd your way about like a Londoner. Of course, a good guide will take you through the more important streets more often than he takes you down side streets; a bad guide will do the opposite. In philosophy Im a rather bad guide. L. Wittgenstein.

Indice general
Notaci on y abreviaturas 6

Aprender a programar, con MATLAB

7
9 13 13 13 17 19 23 25 27 28 31 32 35 35 35 38 40 42 43 44 46 47 50 50 52 53 54

Introducci on 0. Tutorial de MATLAB 0.1. Introducci on . . . . . . . . . . . . . . 0.2. Conceptos b asicos . . . . . . . . . . . 0.3. Manejo de vectores . . . . . . . . . . 0.4. Introducci on al tratamiento de matrices 0.5. Resoluci on de sistemas lineales . . . . 0.6. Vectorizaci on de operaciones . . . . . 0.7. Creaci on de gr acas . . . . . . . . . . 0.8. Conjuntos de o rdenes . . . . . . . . . 0.9. MATLAB y n umeros complejos . . . . 0.10. Matem aticas simb olicas con MATLAB

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

1. Funciones y Condicionales 1.1. General . . . . . . . . . . . . . . . . . . . . . 1.2. Funciones y variables . . . . . . . . . . . . . . 1.3. Funciones con varios argumentos de entrada . 1.4. Estructura de control condicional if . . . . . . 1.5. Estructura de control condicional if-else . . . . 1.6. Funci on que llama a otra funci on . . . . . . . 1.7. Condicionales anidados. . . . . . . . . . . . . 1.8. Variante elseif en el condicional . . . . . . . . 1.9. Operadores l ogicos . . . . . . . . . . . . . . . 1.10. Operadores de comparaci on: son iguales? . . 1.11. Igualdad entre n umeros reales: precisi on y valor 1.12. Variables enteras y reales como argumentos . . 1.13. Variables contador y sumador . . . . . . . . . 1.14. Funci on parte entera . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . absoluto . . . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

. . . . . . . . . . . . . .

2. Bucles 55 2.1. General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.2. Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.3. Bucles con incremento variable . . . . . . . . . . . . . . . . . . . . . . . . . 57 P ag. 3

Lenguajes de Programaci on: Gu a ECTS 2.4. 2.5. 2.6. 2.7. 2.8. Bucles con otras operaciones . . . . . . . . . . . Bucles y relaciones de recurrencia . . . . . . . . . Bucles y condicionales . . . . . . . . . . . . . . . Uso de bucles para vericar una condici on sobre un Bucles anidados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . conjunto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 60 62 63 65 65 65 66 67 69 70 73 75 77 78 80

3. Vectores 3.1. General . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Vectores como argumentos de funciones . . . . . . . . . . . 3.3. Funciones que llaman a funciones con argumentos vectores . 3.4. C alculo de extremos . . . . . . . . . . . . . . . . . . . . . 3.5. C alculo de posici on de extremos . . . . . . . . . . . . . . . 3.6. Evaluaci on de un polinomio . . . . . . . . . . . . . . . . . 3.7. Funci on que devuelve un vector . . . . . . . . . . . . . . . 3.8. Funciones que reciben y devuelven vectores . . . . . . . . . 3.9. Construcci on de vectores . . . . . . . . . . . . . . . . . . . 3.10. Vectores y bucles anidados . . . . . . . . . . . . . . . . . . 3.11. Funciones con salidas m ultiples . . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

II

Gu a ECTS para estudiantes

83
85 87 87 87 87 87 88 89 89 89 91 91

1. Introducci on 2. Datos generales 2.1. Temporalidad y car acter 2.2. Cr editos LRU . . . . . . 2.3. Departamento . . . . . 2.4. Profesores . . . . . . . 2.5. Cr editos ECTS . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

3. Objetivos 3.1. General . . . . . . . . . . . . . 3.2. Objetivos generales: descripci on 3.3. Prerrequisitos . . . . . . . . . 3.4. Otras asignaturas de las que LP

. . . . . . . . . . . . . . . . . . . . . . . . . . . es prerrequisito

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

4. Programa y Metodolog a 93 4.1. M etodos docentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.2. Temario y estimaci on del tiempo de estudio . . . . . . . . . . . . . . . . . . . 94 5. Recursos 5.1. Gu a . . . . . . . . . . . . . . . . . . 5.2. Tutor as . . . . . . . . . . . . . . . . 5.3. Tutor as virtuales . . . . . . . . . . . . 5.4. P agina web - Plataforma de B-learning 5.5. Copias . . . . . . . . . . . . . . . . . 5.6. Centro de C alculo . . . . . . . . . . . 5.7. Bibliograf a . . . . . . . . . . . . . . . 97 97 97 97 97 98 98 98

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

P ag. 4

INDICE GENERAL

6. Evaluaci on 6.1. General . . . . . . . . . . . 6.2. Evaluaci on tradicional . . . 6.3. Evaluaci on ECTS . . . . . 6.4. El examen . . . . . . . . . 6.5. Evaluaci on de los objetivos

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

101 101 101 101 103 105

III

Ap endices

107
109 117 123 127 132

A. Ejemplos de Ex amenes B. Gesti on del CC C. Control de tiempos y cha D. Premio SENER Indice alfab etico

P ag. 5

Lenguajes de Programaci on: Gu a ECTS

y abreviaturas Notacion
AO aptdo. cap. DHOf DNI ECTS FHOf g. G GATE I JEE LOU LP LRU MEC p ag. PAS PF ref. TIC Aula de Ordenadores apartado cap tulo para referirse a actividades a realizar dentro del horario ocial. para referirse al n umero del Documento Nacional de Identidad. sistema de cr editos europeos. para referirse a actividades a realizar fuera del horario ocial. gura para referirse a actividades a realizar en grupo. Gabinete de Teleeducaci on. para referirse a actividades a realizar de modo individual. Jefatura de Estudios. Ley Org anica d 6/2001 de Universidades. Lenguajes de Programaci on. Ley Org anica 11/1983 de Reforma Universitaria. Ministerio de Educaci on y Ciencia. p agina. Personal de Administraci on y Servicios. Portafolio. referencia bibliogr aca. Tecnolog as de la informaci on y la comunicaci on.

P ag. 6

Parte I Aprender a programar, con MATLAB

P ag. 7

Introducci on
De modo resumido, podemos decir que programar es ense narle a un ordenador c omo se resuelve un determinado problema. Para poder ense nar a alguien, es necesario dos cosas: tener un lenguaje en com un y conocer bien lo que se quiere ense nar. En esta primera parte nos ocupamos del primer problema (que es el m as sencillo y el que responde a la denici on de programar). El lenguaje que hablan los ordenadores es muy simple, por lo que el proceso de aprenderlo ser a r apido. El principal problema es descomponer ideas complejas en otras m as simples para que podamos programarlas. Siguiendo el esquema anterior, hemos organizado cada unidad did actica en un esquema conceptoejemplo-ejercicios/problemas. Normalmente se trabajan uno o dos conceptos de Programaci on en cada unidad did actica (contadores y bucles while, por ejemplo), los cuales se introducen primero formalmente y despu es mediante un ejemplo, sobre el que se proponen una serie de ejercicios que nos permitan asimilar y madurar las ideas explicadas. Por cada concepto introducido se trabajan cuatro o cinco ejemplos. Se pretende que en cada uno de estos ejemplos aparezca un uso habitual del concepto introducido. Se trata de asimilar bloques con un sentido concreto, construidos con los elementos b asicos de Programaci on. A menudo, en los cursos de Programaci on, se introducen s olo los elementos de Programaci on y se supone que el alumno aprender a a integrarlos por s mismo. Sin embargo, muchas aplicaciones de esos elementos son est andares en la programaci on (por ejemplo, el uso de contadores, un bucle while y un condicional para seleccionar determinados elementos de un vector, crear un vector mediante un contador, etc.) y una vez nos hemos familiarizado con ese uso conseguimos una mayor agilidad a la hora de programar. Las unidades did acticas que constituyen el curso son las siguientes: 0. Tutorial de MATLAB. 1. Funciones y Condicionales. 2. Bucles. 3. Vectores. El curso comienza con un tutorial en el que se usa MATLAB como una potente calculadora al principio para terminar dibujando curvas, y agrupando instrucciones en cheros script, lo que permite introducir ideas importantes para m as adelante crear funciones. Adem as, se aprovecha esta unidad 0 para insistir en conceptos b asicos de manejo de las herramientas del sistema operativo, sobre todo la creaci on y gesti on de carpetas, y la ubicaci on precisa de las mismas en el sistema de archivos del usuario, bien en un disco local o en la unidad de red del aula de ordenadores donde se trabaja. P ag. 9

Lenguajes de Programaci on: Gu a ECTS El lenguaje elegido para la implementaci on de ejemplos y ejercicios es el lenguaje de comandos o scriptde MATLAB (o su versi on libre Octave). Esta elecci on se debi o a varios motivos: 1. MATLAB es un entorno de c alculo que los estudiantes usar an a lo largo de la carrera y probablemente despu es en su vida profesional ya que dispone de herramientas espec cas (toolboxes) para muchos ambitos. Aunque las competencias de manejo asociadas a esas herramientas espec cas no se trabajan en este curso, el que el estudiante se sienta al nal c omodo con el entorno MATLAB le permitir a si es necesario asimilar su funcionamiento con mucha mayor facilidad que si empezase de cero con el programa. 2. MATLAB es un lenguaje completo; tiene todos los elementos de un lenguaje de programaci on, con una sintaxis similar al C pero con la simplicidad del BASIC. Comprobamos en cursos anteriores que al utilizar un lenguaje como C, los alumnos dedicaban la mayor parte del tiempo a la correcci on de errores de sintaxis y a la declaraci on de variables, reserva de memoria, etc., teniendo poco tiempo para comprender el funcionamiento de las estructuras de datos o de control del ujo del programa. En este sentido, el lenguaje MATLAB se acerca al pseudoc odigo usado en algunos cursos de Programaci on, pero con la ventaja de poder realmente ejecutar los c odigos creados. La simplicidad de MATLAB a estos efectos es a veces causa de falta de rigor en la forma de abordar la Programaci on. As el hecho de que no haya tipado expl cito de variables pudiendo la misma variable ser una matriz en una l nea del c odigo y un escalar un poco m as abajo, o de MATLAB se ocupe del la reserva din amica de memoria de modo autom atico, nos alejan de un lenguaje m as potente como C. Sin embargo y como coment abamos m as arriba, eso permite centrarse en el manejo de estructuras de control para resolver problemas y desarrollar estrategias, creemos que esencial al principio. 3. MATLAB es un lenguaje interpretable: MATLAB traduce durante la ejecuci on las diferentes sentencias al lenguaje primario y b asico de la m aquina. Se paga el precio de necesitar MATLAB para ejecutar nuestros c odigos pero se recibe la recompensa de no tener que compilar y enlazar nuestros c odigos para despu es ejecutarlos. 4. MATLAB proporciona una interfaz que permite probar las funciones directamente sin necesidad de llamarlas desde un programa principal. Esto permite comprobar su funcionamiento de un modo sencillo e inmediato, y como comentamos m as abajo, ha permitido una estructura del curso creemos que muy interesante para un curso de introducci on a la Programaci on para no Inform aticos. 5. Todo ello hace que sea muy sencillo empezar a generar c odigos interesantes en MATLAB, algo a lo que se llega con mucho m as esfuerzo en un lenguaje de Programaci on m as riguroso como C. Una vez realizado este tutorial, hasta hace unos a nos emple abamos la organizaci on curricular usual en un curso de Programaci on (comenzando por la entrada y salida y el programa Hola mundo). Sin embargo, ahora usamos una estructura similar a la programaci on funcional, comenzando por el concepto de funci on y estudiando la entrada y salida casi al nal. De este modo, en la unidad 1 se trabaja al principio sobre el concepto de funci on, introduciendo inmediatamente la estructura de control condicional, la cual permite construir funciones m as complejas e interesantes. En la unidad 2 se trabaja con bucles, posibilitando la repetici on de operaciones. Es una unidad P ag. 10

ardua, pues no se recurre todav a a vectores o matrices, donde los bucles surgen de modo natural. Aqu est an los ejemplos m as interesantes del curso, como el de comprobar si un n umero natural es primo. Si el estudiante se siente c omodo al nal de esta unidad, el resto del curso ser a para el una progresi on sencilla. Si no se siente c omodo todav a, tendr a ocasi on de cubrir los vac os en las unidades siguientes. En la unidad 3 se introducen los vectores, pues ya se tienen las herramientas para manejarlos. Como coment abamos en el pr ologo, no hemos pretendido escribir un compendio exhaustivo ni de Programaci on ni de MATLAB. Debido a ello la selecci on de unidades did acticas no es inocente sino que subyace la idea de mostrar u nicamente los aspectos considerados esenciales para aprender a programar. Creemos que en ese sentido el libro es una aportaci on interesante ya que no hay en la literatura cursos de introducci on a la Programaci on que se apoyen en MATLAB como lenguaje de referencia, y lo m as parecido corresponde a cursos de MATLAB en los que en alg un cap tulo se tratan diferentes aspectos de la programaci on1 . En cuanto a compendios de MATLAB, recomendamos el sensacional trabajo de Guillem Borrell2 .

Gilat, A., MATLAB. Una introducci on con ejemplos pr acticos, Revert e, 2006, es un buen ejemplo de este tipo de libros 2 Borrell i Nogueras, G., Introducci on Informal a MATLAB y OCTAVE. Disponible online en http://forja.rediris.es/

P ag. 11

Lenguajes de Programaci on: Gu a ECTS

P ag. 12

Unidad Did actica 0 Tutorial de MATLAB


0.1. Introducci on

Presentamos un tutorial de MATLAB, una herramienta potent sima, casi est andar para c alculos en muchas ramas de la Ingenier a, y de uso razonablemente simple. En la asignatura de LP, utilizaremos el int erprete de comandos de MATLAB para que el estudiante se introduzca en el apasionante mundo de la programaci on de ordenadores. Este tutorial, en el que haremos una descripci on de los elementos b asicos de MATLAB, y que se realizar a durante las primeras sesiones del curso de LP, tiene como objetivo que el estudiante se sienta c omodo con el programa y con el sistema de usuarios, carpetas y archivos del CC. As , al nal del tutorial ser a capaz de utilizar MATLAB como si fuese una calculadora potent sima, manejando sus elementos de c alculo en l nea de comandos, sin entrar en la programaci on de aplicaciones, a lo cual nos dedicaremos el resto del curso.

0.2.

Conceptos b asicos

Para arrancar MATLAB, se procede como con cualquier programa Windows, o sea, Inicio, Programas, MATLAB, R2006a, MATLAB R2006a 1 , o con el correspondiente icono en el escritorio, que tiene como etiqueta MATLAB R2006a. Una vez arrancado, nos encontramos con algo similar a lo que se observa en la gura 1. En el espacio que denotamos como ventana de comandos en dicha gura aparece el cursor con el s mbolo (>>) o (EDU >>), indicando que se pueden introducir ordenes. De hecho, en este tutorial, cuando aparezca este s mbolo, se tiene que introducir por teclado la orden que aparece escrita a la derecha del mismo. Podeis, de momento, cerrar las otras ventanas que aparecen en la pantalla, para quedaros simplemente con la ventana de comandos. La utilizaci on m as b asica de MATLAB es como calculadora 2 . As , por ejemplo, para calcular 7.3 3 cos(5) 2 , se debe introducir : >>cos(5)*27.3 ans = 44.7013
A veces, durante el curso hay algunos problemas con las licencias y se usa la versi on educacional, a la cual se accede con Inicio, Programas, Student MATLAB, o a trav es del icono q est a en el escritorio 2 Funcionando de este modo, es similar a una calculadora programable, aunque bastante m as vers atil. 3 Los argumentos de las funciones trigonom etricas siempre est an en radianes.
1

P ag. 13

Lenguajes de Programaci on: Gu a ECTS

Figura 1: Espacio de trabajo de MATLAB

P ag. 14

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

MATLAB mantiene en memoria el u ltimo resultado. Caso de que ese c alculo no se asigne a ninguna variable, lo hace a una variable por defecto de nombre ans. Si queremos referirnos a ese resultado, lo haremos a trav es de la variable ans, y si no se asigna ese nuevo c alculo a ninguna variable, volver a a ser asignado a ans. >>log(ans) ans = 3.8000 En este momento cabr a preguntarnos si tratamos con un logaritmo decimal o con uno neperiano (natural). Para saberlo, pedimos ayuda acerca del comando log utilizando: >>help log LOG Natural logarithm. LOG(X) is the natural logarithm of the elements of X. Complex results are produced if X is not positive. See also LOG2, LOG10, EXP, LOGM. Aunque en la explicaci on que se obtiene al pedir helpde las ordenes los comandos aparecen en may usculas, se deben usar en min usculas. Por defecto, los resultados aparecen con 4 cifras decimales. Si se necesitara m as precisi on en los resultados, se puede utilizar la orden format long repitiendo los c alculos: >>format long Para recuperar una orden y ejecutarla otra vez o modicarla se usan la echas arriba y abajo del cursor , . Presionemos hasta recuperar la orden: >>cos(5)*27.3 ans = 44.70132670851334 Ejercicio 0.1 Realizar la siguiente operaci on: 2.72.1 + log10 108.2. Ejercicio 0.2 Pedir ayuda de la orden exp. Ejercicio 0.3 Realizar la siguiente operaci on e2.7
2.1 +log 10

108.2

El resultado del ejercicio anterior aparecer a como 2.3992e+004. La notaci on 2.3992+004, 4 signica 2.3992 10 o lo que es lo mismo 23992. Si necesitamos referirnos a determinados c alculos, se asignan a variables y as se pueden recuperar despu es. El concepto de variable es crucial cuando se programa, como veremos durante todo el curso. Por ejemplo, podemos recuperar con la orden cos(5) 27.3 y asignar su valor a la variable x editando dicha orden. Luego podremos utilizarla para otros c alculos. Los nombres de las variables en MATLAB han de comenzar por una letra; adem as, no contendr an s mbolos que nos sean letras, n umeros o el gui on bajo (que est a en la misma tecla que el signo menos). P ag. 15

Lenguajes de Programaci on: Gu a ECTS >>x=cos(5)*27.3 x = 44.70132670851334 >>y=log(x) y = 3.80000318145901 Ejercicio 0.4 Realizar la siguiente operaci on: 2.72.1 + log10 108.2 y asignarla a la variable x. Ejercicio 0.5 Realizar la siguiente operaci on: e2.7
2.1 +log 10

108.2

y asignarla a la variable t.

Si queremos saber cu anto vale una variable, no tenemos m as que escribirla en la l nea de comandos y pulsar Enter. >>y y = 3.80000318145901 Como es muy f acil recuperar ordenes previas podemos utilizar esta idea para simular los t erminos de una sucesi on recurrente. Por ejemplo, xn+1 = cos(xn ) >>x=0.2 x = 0.20000000000000 >>x=cos(x) x = 0.98006657784124 >>x=cos(x) x = 0.55696725280964 >>x=cos(x) x = 0.84886216565827 >>x=cos(x) x = 0.66083755111662 >>x=cos(x) x = 0.78947843776687 >>x=cos(x) x = 0.70421571334199 Ejercicio 0.6 Repetir la operaci on anterior hasta que se estabilice el cuarto decimal de x de un paso al siguiente. Ejercicio 0.7 Cambiar el formato para que otra vez se vean s olo cuatro decimales. Ejercicio 0.8 Empezando por x = 100 repetir la operaci on x2 81 2x hasta que se converja en el cuarto decimal. Qu e relaci on hay entre el u ltimo x y 81? x=x P ag. 16

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

Ejercicio 0.9 Denir A como en vuestro documento de identidad o pasaporte. Empezando por x = 100 repetir la operaci on x2 A x=x 2x hasta que se converja en el cuarto decimal. A qu e ha convergido la sucesi on? 4 Es interesante comentar de este ejercicio que MATLAB distingue entre letras may usculas y min usculas en los nombres de las variables. A veces es bueno apagar y encender la calculadora para borrar todo y empezar de nuevo. Esto se hace con la orden clear. Hay que tener cuidado al utilizarla, ya que borra todas las variables que est en en la memoria sin pedir conrmaci on. >>clear >>x ??? Undefined function or variable x. Ejercicio 0.10 Preguntar el valor de A igual que acabamos de preguntar x. Tiene sentido el resultado?

0.3.

Manejo de vectores

Para crear y almacenar en memoria un vector v que tenga como componentes v1 = 0, v2 = 2, v3 = 4, v4 = 6 y v5 = 8 podemos hacerlo componente a componente: >>v(1)=0 v = 0 >>v(2)=2 v = 0 >>v(3)=4 v = 0 >>v(4)=6 v = 0 >>v(5)=8 v = 0

Se puede tambi en denir este vector especicando su primer elemento, un incremento y el u ltimo elemento. MATLAB rellenar a paso a paso sus componentes. As , podemos denir igualmente el vector v como una secuencia que empieza en 0, avanza de 2 en 2 y que termina en el 8:
4

Las calculadoras obtienen la ra z cuadrada de un n umero mediante esta sucesi on.

P ag. 17

Lenguajes de Programaci on: Gu a ECTS >> v = [0:2:8] v = 0 2 >> v v = 0 2

Si ponemos ; al nal de una l nea de comandos, cuando pulsemos la tecla Enter para ejecutarla, se ejecutar a pero no mostrar a el resultado en pantalla (se anula el eco en pantalla). Esto es muy u til algunas veces: >> v = [0:2:8]; >> v v = 0 2

Podemos construir el vector v editando directamente entre los corchetes las componentes del vector v : >>v = [0 2 4 6 8]; >> v v = 0 2 4

Es f acil acceder al contenido de una posici on del vector, por ejemplo la primera. >> v(1) ans = 0 O modicarla: >> v(1)=-3; >> v v = -3 2

3 O hacer operaciones entre componentes, v2 v5 :

>> v(2)*v(5)3 ans = 1024 Ejercicio 0.11 Calcular la suma de los elementos de v , elemento a elemento. Para trasponer un vector o una matriz se usa el ap ostrofo, que es el acento que est a en la misma tecla que el signo de interrogaci on ?. >> v ans = -3 2 4 6 8 P ag. 18

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

Como hemos comentado, para recuperar una orden y ejecutarla otra vez o modicarla se usan la echas arriba y abajo del cursor , . Presionemos hasta recuperar la orden: >> v(1)=-3; Modiqu emosla para dejar el valor original >> v(1)=0; Al denir ese vector v de 5 componentes, en realidad lo que denimos es una matriz la de cinco columnas, o sea, un matriz de 1 5. Esto se comprueba preguntando el tama no de v con la sentencia size: >>size(v) ans = 1

que nos indica que v tiene una la y 5 columnas. Ejercicio 0.12 Denir un nuevo vector que sea el traspuesto de v y aplicar a ese vector el comando size. Es coherente el resultado? Ejercicio 0.13 Pedir ayuda sobre la funci on norm y aplicarla al vector v .

0.4.

Introducci on al tratamiento de matrices

Haremos una introducci on a la denici on y manipulaci on de matrices. Se supone que se ha seguido la secci on anterior y que se dispone de los conocimientos b asicos sobre la denici on y manipulaci on de vectores usando MATLAB. La denici on de una matriz es muy similar a la de un vector. Para denir una matriz, se puede hacer dando sus las separadas por un punto y coma (no olvidarse poner los espacios en blanco!): >> A = [ 1 2 3; 3 4 5; 6 7 8] A = 1 2 3 3 4 5 6 7 8 o denirla directamente la a la, que es m as intuitivo: >> A = [ 1 3 6 A = 1 3 6 2 3 4 5 7 8] 2 4 7 3 5 8

Se puede modicar alguno de los elementos de la matriz A, accediendo a cualquiera de sus posiciones, por ejemplo: P ag. 19

Lenguajes de Programaci on: Gu a ECTS >> A(2,2)=-9 A = 1 2 3 -9 6 7

3 5 8

Dejemos su valor original: >> A(2,2)=4; De igual modo, se la puede considerar como una la de vectores columna: >> B = [ [1 2 3] [2 4 7] [3 5 8]] B = 1 2 3 2 4 5 3 7 8 (Otra vez, es importante colocar los espacios en blanco.) Ejercicio 0.14 Sumar los elementos diagonales de la matriz A, reri endonos a ellos, elemento a elemento. Podemos sumar o restar matrices para tener otras matrices. >>C=A+B C = 2 5 9

4 8 14

6 10 16

Ejercicio 0.15 Denir la matriz D = 2B A. Tambi en podemos multiplicarlas. >>C=A*B C = 14 26 44

31 57 96

37 69 117

Ejercicio 0.16 Denir la matriz D = B A B . Ejercicio 0.17 Denir la matriz C = AAt . Podemos denir algunos tipos especiales de matrices, como por ejemplo una matriz de 3 3 que tenga todos sus elementos nulos. >>I=zeros(3) I = 0 0 0 0 0 0

0 0 0 P ag. 20

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

Podemos modicar sus elementos diagonales para tener la matriz identidad. >>I(1,1)=1; >>I(2,2)=1; >>I(3,3)=1 I = 1 0 0 1 0 0

0 0 1

Ejercicio 0.18 Repetir el ejercicio 0.16 sacando factor com un y utilizando la matriz identidad. Otra forma de denir la matriz identidad es a trav es de la funci on diag, que recibe un vector que convierte en diagonal de una matriz cuyos otros elementos son nulos. >>J=diag([1 1 1]) J = 1 0 0 0 1 0 0 0 1 Ejercicio 0.19 Denir una matriz D diagonal cuyos elementos sean 2, 1, 0.2 y 0.7. Ejercicio 0.20 Pedir ayuda de la funci on eye, y denir la matriz identidad de 10 10. Ejercicio 0.21 Repetir el ejercicio 0.16 sacando factor com un y utilizando la funci on eye.

0.4.1.

Denici on de submatrices

La denici on de subvectores o submatrices es muy f acil. Si v es >> v = [0:2:8] v = 0 2

Podemos denir un vector e cuyas componentes sean las tres primeras componentes del vector v poniendo >> e=v(1:1:3) e = 0 2

donde el primer uno indica que vamos a tomar el primer elemento de v . El segundo n umero es el incremento de ndices dentro de v y el u ltimo n umero marca el elemento nal. Esta orden es equivalente a la siguiente >> e=v(1:3) e = 0 2

ya que cuando el incremento es la unidad, se puede suprimir. P ag. 21

Lenguajes de Programaci on: Gu a ECTS Ejercicio 0.22 Adivinar cu al va a ser el resultado de las dos ordenes siguientes >> e=v(2:2:5) >> e=v(1:3:5) Como comentamos al principio, la notaci on usada por MATLAB sigue en lo posible la notaci on est andar de Algebra Lineal que se asume conocida. Es muy sencillo multiplicar matrices y vectores, teniendo cuidado de que las dimensiones sean las adecuadas. >> A*v(1:3) ??? Error using == * Inner matrix dimensions must agree. >> A*v(1:3) ans = 16 28 46 Es importante acostumbrase a ver ese mensaje de error. Una vez que se empieza a trabajar con vectores y matrices, es sencillo olvidar los tama nos de los objetos que se han ido creando. Ejercicio 0.23 Utilizando el comando size, razona sobre los problemas en lo que se reere a dimensiones en la multiplicaci on anterior. Se pueden extraer columnas o las de una matriz. Si queremos, por ejemplo, que C sea la tercera la de la matriz A: >> C=A(3,:) C = 6 7

O que C sea la segunda columna de la matriz B >>C=B(:,2) C = 2 4 7 O bien que D sea la submatriz cuadrada de orden dos inferior derecha de la matriz A. >> D=A(2:3,2:3) D = 4 5 7 8 Ejercicio 0.24 Denir una matriz de nombre D1 formada por la primera y tercera columnas de la matriz A. Una vez que se es capaz de crear y manipular una matriz, se pueden realizar muchas operaciones est andar. Por ejemplo, calcular su inversa. Hay que tener cuidado y no olvidar que las operaciones son c alculos num ericos realizados por ordenador. En el ejemplo, A no es una matriz regular, y sin embargo MATLAB devolver a su inversa, pues los errores de redondeo durante su c alculo convierten en invertible a dicha matriz. P ag. 22

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

>> inv(A) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 4.565062e-18 ans = 1.0e+15 * -2.7022 4.5036 -1.8014 5.4043 -9.0072 3.6029 -2.7022 4.5036 -1.8014

Con la matriz B s que es posible calcular su inversa: >>inv(B) ans = -3.0000 -1.0000 2.0000

5.0000 -1.0000 -1.0000

-2.0000 1.0000 0

Ejercicio 0.25 Denir una matriz de nombre B 1 como la inversa de B. Multiplicar B por B 1 y razonar la coherencia del resultado. Hay que comentar que MATLAB distingue entre may usculas y min usculas. Este puede ser el origen de algunas confusiones si se manejan algoritmos complejos. >> inv(a) ??? Undefined function or variable a.

0.5.

Resoluci on de sistemas lineales

Tambi en hay funciones para resolver sistemas lineales. Si Ax = b y queremos encontrar x, el modo m as directo es simplemente invertir A, y luego premultiplicar por la inversa ambos lados. Sin embargo, hay medios mucho m as ecientes y estables para resolver sistemas lineales pero nosotros de momento nos quedaremos con este. Por ejemplo, el sistema lineal Bx = v con: >>v = [1 3 5] v = 1 3 5 >>B = [ [1 2 3] [2 4 7] [3 5 8]]; se resuelve con: >> x = inv(B)*v x = 2 1 -1 Para comprobar: P ag. 23

Lenguajes de Programaci on: Gu a ECTS >> B*x ans = 1 3 5 Ejercicio 0.26 Denir una matriz B 2 = BB t . Ejercicio 0.27 Encontrar la soluci on del sistema lineal BB t x = v asignando esa soluci on al vector x. Ejercicio 0.28 Comprobar la soluci on obtenida realizando el c alculo BB T x v . Podemos crear una matriz aumentada a partir de B y del t ermino independiente y reducirla hasta convertir el sistema en uno equivalente triangular, efectuando las necesarias transformaciones elementales de la >>BA=[B v] BA = 1 2 3 1 2 4 5 3 3 7 8 5 >>BA(2,:)=BA(2,:)-2*BA(1,:) BA = 1 2 3 1 0 0 -1 1 3 7 8 5 >>BA(3,:)=BA(3,:)-3*BA(1,:) BA = 1 2 3 1 0 0 -1 1 0 1 -1 2 La segunda la tiene el elemento diagonal nulo, as que hay que realizar una permutaci on de las, premultiplicando por la identidad permutada: >>IP=[1 0 0;0 0 1;0 1 0]; >>BA=IP*BA BA = 1 0 0 2 1 0 3 -1 -1 1 2 1

Ahora ya es inmediato resolver este sistema por sustituci on hacia atr as: Ejercicio 0.29 Denir una matriz H de 3 3 a partir de las tres primeras columnas de la matriz BA. Ejercicio 0.30 Denir un vector h utilizando la u ltima columna de BA. P ag. 24

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

Ejercicio 0.31 Denir el vector z tal que Hz = h. Es coherente el resultado? Ejercicio 0.32 Pedir ayuda de la funci on det utiliz andola con la matriz B y de la funci on rank utiliz andola con la matriz BA. Ejercicio 0.33 Calcular el determinante de la matriz H .

0.6.

Vectorizaci on de operaciones

Ejercicio 0.34 Borrar la memoria porque vamos a empezar operaciones nuevas reutilizando nombres de variables ya usadas. Con MATLAB es sencillo crear vectores y matrices. La potencia de MATLAB nace de la facilidad con la que se pueden manipular estos vectores y matrices. Primero mostraremos c omo realizar operaciones sencillas, sumar, restar y multiplicar. Luego las combinaremos para mostrar que se pueden realizar operaciones complejar a partir de estas operaciones simples sin mucho esfuerzo. Primero deniremos dos vectores, los cuales sumaremos y restaremos: >> v = [1 2 3] v = 1 2 3 >> b = [2 4 6] b = 2 4 6 >> v+b ans = 3 6 9 >> v-b ans = -1 -2 -3 La multiplicaci on de vectores y matrices, igual que su suma, sigue las reglas estrictas del Algebra Lineal. En el ejemplo anterior, los vectores son ambos vectores columna con tres elementos. No se puede sumar un vector la con un vector columna. Se debe recordar que el n umero de columnas del primer operando debe ser igual al n umero de las del segundo. >> v*b Error using == * Inner matrix dimensions must agree. >> v*b ans = P ag. 25

Lenguajes de Programaci on: Gu a ECTS 2 4 6 >> v*b ans = 28 4 8 12 6 12 18

MATLAB permite realizar las operaciones entre elementos de un vector o matriz de modo muy sencillo. Supongamos que queremos multiplicar, por ejemplo, cada elemento del vector v con su correspondiente elemento en el vector b. En otras palabras, supongamos que se quiere conocer v (1) b(1), v (2) b(2), y v (3) b(3). Ser a estupendo poder usar directamente el s mbolo pues en realidad estamos haciendo una especie de multiplicaci on, pero como esta multiplicaci on tiene otro sentido, necesitamos algo diferente. Los programadores que crearon MATLAB decidieron usar el s mbolo para realizar estas operaciones. De hecho, un punto delante de cualquier s mbolo signica que las operaciones se realizan elemento a elemento. >> v.*b ans = 2 8 18 >> v./b ans = 0.5000 0.5000 0.5000 Ejercicio 0.35 Denir un vector w tal que sus componentes sean las de v al cubo. Una vez que hemos abierto la puerta a operaciones no lineales, por qu e no ir hasta el nal? Si aplicamos una funci on matem atica predenida a un vector, MATLAB nos devolver a un vector del mismo tama no en el que cada elemento se obtiene aplicando la funci on al elemento correspondiente del vector original >> sin(v) ans = 0.8415 0.9093 0.1411 >> log(v) ans = 0 0.6931 1.0986 Saber manejar h abilmente estas funciones vectoriales es una de las ventajas de MATLAB. De este modo, se pueden denir operaciones sencillas que se pueden realizar f acil y r apidamente. En el siguiente ejemplo, se dene un vector muy grande y lo manipulamos de este modo tan sencillo. P ag. 26

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

>> x = [0:0.1:100] x = Columns 1 through 7 0 0.1000 0.2000 0.3000 ...................... Columns 995 through 1001 99.4000 99.5000 99.6000 99.7000 >> y = sin(x).*x./(1+cos(x));

0.4000

0.5000

0.6000

99.8000

99.9000 100.0000

Usando este tratamiento vectorial, se pueden generar gr acos de modo muy sencillo. Damos una muestra de esto que luego completaremos. >> plot(x,y) Ejercicio 0.36 Denir un vector t cuya primera componente sea 4, que tenga un incremento entre componentes de 0.05 y termine en el punto 1. Ejercicio 0.37 Denir un vector y a partir de cada componente del vector t reci en denido y = 5et + sin(10t)
2

0.7.

Creaci on de gr acas

En esta secci on presentamos los comandos b asicos para crear representaciones gr acas de funciones. Para mostrar el uso del comando plot, utilizaremos la funci on seno y su desarrollo en serie de Taylor5 en torno al cero con t erminos c ubicos, x x3 /6. Para dibujar la gr aca, seleccionamos el paso del vector de muestreo x y sus valores primero y u ltimo >>h=0.1 >>xmin=-2; >>xmax=2; >>x=xmin:h:xmax; >>yseno=sin(x); >>ytaylor=x-x.3/6; Tras esto, tenemos en los vectores yseno e ytaylor los valores reales y los valores aproximados obtenidos del desarrollo limitado. Para compararlos, dibujamos los valores exactos superpuestos con los aproximados marcados por puntos verdes o. El comando plot se utiliza para generar gr acas en MATLAB. Admite una gran variedad de argumentos. Aqu s olo utilizaremos el rango y el formato, y la posibilidad de representar dos curvas en la misma gr aca.
Brook Taylor naci o en 1685 en Inglaterra en el seno de una inuyente y adinerada familia. Estudi o en Cambridge y cuando se gradu o ya hab a escrito su primer art culo matem atico de relevancia. Taylor particip o activamente en las agrias disputas entre matem aticos brit anicos (newtonianos) y matem aticos europeos (leibnitzianos) sobre la adjudicaci on del descubrimiento del C alculo Diferencial, llegando a formar parte del Comit e que la Real Sociedad form o para dar n a tal discusi on. Aunque las aportaciones de Taylor a las matem aticas son profundas y variadas (entre otras, introdujo el c alculo en diferencias nitas, la integraci on por partes, desarroll o un m etodo para encontrar soluciones singulares de ecuaciones diferenciales y sent o las bases de la geometr a descriptiva y proyectiva) su resultado m as conocido es el Teorema de Taylor, que permite el desarrollo de funciones en series polin omicas. Sin embargo, no fue Taylor el primero en obtenerlo, James Gregory, Newton, Leibniz, Johann Bernoulli, y de Moivre hab an ya descubierto independientemente variantes del mismo.
5

P ag. 27

Lenguajes de Programaci on: Gu a ECTS >>plot(x,yseno,go,x,ytaylor); La g se reere al color verde (green), y la o signica que los puntos se van a marcar con un circulito. La tilde antes y despu es de go en el comando anterior es la que est a en la tecla de la interrogaci on de cierre. Ejercicio 0.38 En la ventana en la que aparece la gura, seleccionar Edit, Copy Figure. Abrir un nuevo documento de Word y pegar la gura en ese documento. Tambi en es buena idea representar la funci on error: >>plot(x,abs(yseno-ytaylor),mx); Para que al nal del chero con todas las ordenes aparezca en pantalla el gr aco, una vez que este ya ha sido ejecutado alguna vez, se utiliza la orden shg , que hace que la ventana del gr aco se convierta en la activa. Usemos este comando para utilizar el comando de petici on de ayuda help que es muy u til tambi en por sus referencias cruzadas a otros comandos. >> help shg SHG Show graph window. SHG brings the current figure window forward. Ejercicio 0.39 Pedir ayuda de los comandos grid y plot. Ejercicio 0.40 Dibujar la curva t, y del ejercicio 0.37. Ejercicio 0.41 Dibujar la curva t, y del ejercicio 0.37 con cruces rojas y con una ret cula incorporada (grid). Tambi en se puede copiar este gr aco al portapapeles desde la ventana del gr aco, para despu es pegarlo en un documento Word por ejemplo, como ya vimos en el ejercicio 0.38.

0.8.

Conjuntos de ordenes

En esta secci on explicaremos c omo reunir ordenes en cheros ejecutables desde la l nea de comandos de MATLAB. A estos cheros se les suele llamar scripts. Ello permite realizar operaciones m as complejas, y facilita sus repeticiones. Para empezar a trabajar sobre esta parte del tutorial, lo primero que haremos es ejecutar clear para borrar las variables activas. Como ejemplo, consideramos el chero correspondiente al dibujo de las gr acas de la secci on 0.7. Para ejecutar los comandos del chero se debe especicar el intervalo entre los valores de las abscisas en el muestreo. De este modo, se pueden construir innidad de aproximaciones variando este par ametro. Primero hay que crear el chero. El editor m as conveniente es el que trae incorporado el propio MATLAB, aunque cualquier editor de texto es v alido dado que la codicaci on de los archivos de comandos de MATLAB es el est andar ASCII como sucede habitualmente en los lenguajes de programaci on. El editor de MATLAB es muy simple y suciente para este tipo de aplicaciones. A partir de la versi on 5, viene incorporado al propio MATLAB y mejora de versi on en versi on. Los cheros ejecutables de MATLAB, los M-les, deben tener la extensi on .m. En este ejemplo crearemos un chero de nombre tutorm.m. Para abrir el editor pinchamos en (File, New, M-le) y debemos ir escribiendo y/o copiando-pegando los comandos necesarios. Se debe tener en cuenta que cuando una sentencia comienza por %, es un comentario, y no se va a ejecutar. Por tanto, en este ejemplo, no es necesario reproducir esas l neas. P ag. 28

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

% file: tutorm.m % Seno y desarrollo del seno. % % Para ejecutarlo tienes que fijar el paso % h : intervalo entre las x % % El programa genera tres vectores, % x con las abscisas, yseno con % el seno evaluado en esas abscisas, % e ytaylor con el desarrollo % hasta el termino cubico del seno en torno al cero. % xmin=-2; xmax=2; x=xmin:h:xmax; yseno=sin(x); ytaylor=x-x.3/6;

Una vez que se hayan introducido las sentencias, se guarda el chero en la carpeta que creamos conveniente, aunque hay que comunicar a MATLAB la ruta en la que se encuentra para que MATLAB lo encuentre. Esto se puede hacer de varias maneras, dependiendo de la versi on de MATLAB que estemos usando. En las versiones 6.5 y superiores se puede hacer modicando la carpeta-directorio activo en la caja correspondiente (ver gura 1); para volver a activar la vista inicial de MATLAB se procede como se indica en la gura 2. En versiones previas, se puede indicar la ruta del archivo en el path browser con el icono correspondiente, o desde el men u File con la opci on Set Path. Por defecto, si se guarda en el directorio ..\matlab\bin, MATLAB lo encontrar a 6. Ahora se ha de volver a la ventana con la l nea de comando y se teclea en esta l nea el nombre del chero quitando .m. En este caso tutorm. >>tutorm ??? Undefined function or variable h. Error in ==> C:\MATLAB\bin\tut.m On line 13 ==> x=xmin:h:xmax; Si se se invoca el chero sin haber denido primero la variable h, aparecer a un mensaje de error. Se deben denir todas las variables que no se denen en el propio script y que este utiliza. >>h = 0.1; >>tutorm >>plot(x,yseno,rx,x,ytaylor) Una vez ejecutada esta instrucci on deber a aparecer una ventana con una gr aca como la de la Figura 3. Cuando tecleamos tutorm en la l nea de comandos, MATLAB buscar a en los directorios indicados en el path un chero llamado tutorm.m. Una vez que lo encuentre lo leer a y ejecutar a los comandos como si se hubiesen tecleado uno detr as de otro en la l nea de comandos. Si se desea ejecutar el programa otra vez pero con un paso diferente, hay que tener
Si se utiliza MATLAB en el centro de c alculo o laboratorio de una facultad o escuela, probablemente el usuario no tenga permiso de escritura en ese directorio y no pueda guardar ah sus cheros. En este caso, se pueden guardar en la carpeta que se desee que despu es se incorpora a la ruta de b usqueda (path), bien con el comando path o con el icono correspondiente.
6

P ag. 29

Lenguajes de Programaci on: Gu a ECTS

Figura 2: Recuperar vista de la gura 1 cuidado. El programa sobreescribir a los vectores x, yseno e yatylor. Si se quieren guardar estos vectores hay que especicarlo, almacen andolos en nuevas variables. >>xp = x; >>ysenop = yseno; >>ytaylorp = ytaylor; Ahora podemos seleccionar un nuevo paso h y volver a ejecutar tutor. >>h = 0.01; >>tutorm Tenemos dos aproximaciones; la primera con un paso h de 0.1 que se almacena en los vectores xp, ysenop e ytaylorp y la segunda relativa a un paso de 0.01 que guardamos en los vectores x, yseno e ytaylor. Ejercicio 0.42 Calcular la dimensi on que tienen que tener los vectores x y xp y conrmar el resultado utilizando la orden size. Ejercicio 0.43 Crear y ejecutar desde MATLAB un chero que se llame BAIP.m con la secuencia de comandos siguiente: v = [1 3 5]; B = [ [1 2 3] [2 4 7] [3 5 8]]; BA=[B v] BA(2,:)=BA(2,:)-2*BA(1,:) BA(3,:)=BA(3,:)-3*BA(1,:) IP=[1 0 0;0 0 1;0 1 0]; BA=IP*BA P ag. 30

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

Figura 3: Gr aca correspondiente al ejemplo tutorm.m.

Ejercicio 0.44 Pedir ayuda del comando pause e incorporarlo entre algunas l neas del ejercicio anterior para ver todos los pasos de la secuencia de comandos. Ejercicio 0.45 Crear y ejecutar desde MATLAB un chero que se llame CURVATY.m con una secuencia de comandos que realicen las operaciones siguientes: 1. Borrar todas las variables activas de la memoria. 2. Denir un vector t cuya primera componente sea 4, que tenga un incremento entre componentes de 0.05 y termine en el punto 1. 3. Denir un vector y a partir de cada componente del vector t reci en denido como: y = 5et + sin(10t) 4. Dibujar la curva (t, y ) con cruces rojas y con una ret cula ( grid) incorporada.
2

0.9.

MATLAB y n umeros complejos

MATLAB entiende la aritm etica compleja y es perfectamente posible trabajar con n umeros complejos. Podemos multiplicar dos n umeros complejos como: >>(2+3*i)*(3-7*i) ans = 27.0000 - 5.0000i O dividirlos como: >>(2+3*i)*(3-7*i) ans = -0.2586 + 0.3966i P ag. 31

Lenguajes de Programaci on: Gu a ECTS

0.10.

Matem aticas simb olicas con MATLAB

MATLAB dispone de herramientas para c alculo simb olico. Para ello es necesario instalar el Symbolic Math Toolbox, que es una especie de versi on reducida de Maple, un programa de c alculo simb olico muy conocido. Aqu podemos usar esta caja de herramientas para resolver integrales y calcular determinantes de modo simb olico entre otras cosas. Lo primero que tenemos que hacer es denir una variable como susceptible de ser utilizada en c alculo simb olico: >>syms x Ahora podemos denir una funci on que dependa de x y cuya integral queramos calcular: >>f=cos(x)2; >>int(f) ans= 1/2*cos(x)*sin(x)+1/2*x Podemos tambi en denir una matriz que dependa de x y de una nueva variable y : >>syms y >> A=[x y x-y 2 x2 y -x -y 0] A = [ x, y, x-y] [ 2, x2, y] [ -x, -y, 0] Y podemos calcular su determinante de modo simb olico: >> det(A) ans = -2*y*x+2*y2+x4-x3*y Ejercicio 0.46 Calcular de modo simb olico la inversa de la matriz A. Podemos evaluar este determinante para valores reales de x e y asignando valores a esas variables y utilizando despu es la orden eval : >> x=2.41 x = 2.4100 >> y=-3.2 y = -3.2000 >> eval(det(A)) ans = 114.4301 En el momento en que hemos asignado valores a las variables, estas dejan de ser s mbolos. Si queremos que vuelvan a serlo tenemos que hacerlo de modo expl cito P ag. 32

UNIDAD DIDACTICA 0. TUTORIAL DE MATLAB

>>syms x Ejercicio 0.47 Denir una funci on f como ex . Ejercicio 0.48 Pedir ayuda de la funci on di y calcular la derivada de f . Evaluar esta derivada para x = 3.327. Ejercicio 0.49 Pedir ayuda de la funci on limit y calcular el l mite de f cuando x .
2

P ag. 33

Lenguajes de Programaci on: Gu a ECTS

P ag. 34

Unidad Did actica 1 Funciones y Condicionales


1.1. General

Una vez que en el tutorial de la unidad 0 hemos usado MATLAB como una calculadora potente, pero al n y al cabo una calculadora, ha llegado el momento de aprender a programar. En ese sentido, la unidad 1, dedicada al concepto de funci on y la estructura de control condicional, y la unidad 2, dedicada al estudio de los bucles, son las m as importantes. Constituyen la base sobre la que se cimenta el resto del curso. En la unidad 1 se tratan principalmente las ideas de funciones, variables, argumentos de las funciones, asignaci on y la primera estructura de control del curso: el condicional. Tambi en se realiza primeramente una contextualizaci on del curso desde la perspectiva de la historia de la Programaci on y sus fundamentos.

1.2.

Funciones y variables

La organizaci on habitual de un curso de Programaci on supone que se comience por los t picos programas de entrada y salida, el programa Hola mundo. Sin embargo, en este curso que ahora comienza nos hemos decidido por una estructura similar a la programaci on funcional, comenzando por el concepto de funci on y estudiando la entrada y salida ya con el curso muy avanzado. La ventaja de este enfoque es que los alumnos comienzan por los conceptos fundamentales: funciones, estructuras de control y vectores. Como el aprendizaje es continuo, a nadiendo sucesivamente nuevos conceptos y estructuras, conseguiremos que al nal los alumnos est en m as familiarizados con las estructuras esenciales de la Programaci on. Esto es posible porque MATLAB proporciona una interfaz est andar para las funciones y desde la l nea de comandos es posible ejecutarlas directamente. El entender las cosas desde la perspectiva funcional proporciona la posibilidad de asimilar desde el principio conceptos claves en Programaci on, como el de encapsulamiento de tareas, la divisi on de tareas y su codicaci on en funciones, crucial cuando se abordan problemas grandes y se trabaja en equipo. Tambi en se trabajan ideas esenciales relativas a el dise no de funciones y a la reusabilidad de c odigo ya escrito, visto ya como cajas negras que realizan determinadas tareas, y que servir a de base para construir nuevas funciones, etc... La que ahora presentamos es la funci on m as sencilla que veremos durante el curso. Tiene un argumento de entrada, x y un argumento de salida y . Lo u nico que se hace es calcular una expresi on matem atica sencilla y asignar ese valor a y .
% ud1_f1.m

P ag. 35

Lenguajes de Programaci on: Gu a ECTS


% Una funci on sencilla % un argumento function y=ud1_f1(x) y=x2-log(x);

El s mbolo = en Programaci on es una asignaci on, no siendo por tanto sim etrico; se asigna a lo que est a a la izquierda del s mbolo igual lo que haya a la derecha del mismo, una vez realizadas las operaciones que est en especicadas en esa parte derecha. El nombre de la funci on, para evitar confusiones, debe coincidir con el nombre del archivo .m donde esta funci on se encuentra. Por tanto, como este primer ejemplo es la funci on ud1_f1, debemos guardarla en el archivo ud1_f1.m. La primera l nea comienza con la palabra reservada function lo cual es com un a todas las funciones que veremos en el curso. Lo m as interesante es entender a partir de este ejemplo c omo se pasan los argumentos desde la l nea de comandos hasta las funciones. Cuando invocamos esta funci on desde la l nea de comandos podr amos hacerlo del siguiente modo, obteniendo la siguiente respuesta:
>> ud1_f1(5) ans = 23.3906

Cuando se pulsa Enter, tecla de retorno de carro, se carga en memoria RAM la funci on ud1_f1.m, y se crea espacio en memoria para la variable x. En ese espacio se coloca el valor 5. Se crea espacio tambi en para y . Las variables x e y se llaman variables locales de la funci on; el adjetivo locales procede de que viven en el espacio de memoria de la funci on. Una vez hecho esto, el ordenador ejecuta las sentencias de la funci on (en este caso una sola) de arriba abajo. Durante esta ejecuci on se dene la variable de salida y , en la cual al nal de la misma est a el resultado, 23.3906. Una vez terminada la ejecuci on se devuelve el control a la l nea de comandos, se asigna en este caso el resultado a la variable por defecto ans y se borra de la memoria RAM la funci on ud1 f11 . Podemos invocar a la funci on ud1_f1.m ahora del siguiente modo:
>> t=5; >> z=ud1_f1(t) z = 23.3906

En ese caso, tendremos 4 variables x, y , z y t. Las variables x e y son locales de la funci on y las variables z y t viven en el espacio de memoria asignado a la ventana de comandos. Cuando se llama a la funci on, x copia el valor de t y cuando se termina la ejecuci on de la funci on es z la que copia el valor de la calculada y antes de que esta desaparezca (ver gura 1.1). La situaci on no cambia sustancialmente si invocamos a la funci on del siguiente modo:
>> x=5; >> y=ud1_f1(x) y = 23.3906

Volvemos a tener 4 variables en memoria, x e y en el espacio de memoria de la ventana de comandos y x e y en el espacio de memoria de la funci on ud1_f1.m mientras esta se ejecuta.
1

Esto no es exactamente as , pero esta es la imagen m as adecuada para un principiante en Programaci on.

P ag. 36

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

Figura 1.1: Ejemplo ud1 f1.m. Uso de la memoria RAM

De hecho, si cambiamos el valor de la x en el c odigo de la funci on, la variable t del p arrafo anterior y la variable x del espacio de memoria de la ventana de comandos no se ven afectadas. O sea que si cambiamos la funci on ud1_f1.m y la grabamos ahora como:
function y=ud1_f1(x) x=2; y=x2-log(x);

Si la invocamos desde la l nea de comandos del siguiente modo,


>> x=5; >> y=ud1_f1(x) y = 3.3069 >> x x = 5

el resultado no ser a correcto, pero x tampoco habr a cambiado su valor. Ello es as porque la variable local x vive en la funci on. Al principio de la misma, copia el valor de la variable x del espacio de comandos, y aunque cambiemos la variable local en la funci on, la variable en el espacio de comandos no se ve afectada; est an en mundos diferentes que s olo se comunican a trav es de la l nea de argumentos. Hagamos ahora algunos ejercicios para consolidar estas ideas: Ejercicio 1.1
Vamos a preparar el espacio donde vas a trabajar, dentro de la unidad de red Z. Si no lo has hecho ya, crea una carpeta que se llame CXXY Y donde XX son las dos u ltimas cifras del a no en que empieza el curso y Y Y las dos u ltimas cifras del a no en que termina. En el curso 2008-2009, la carpeta se llamar a C 0809. Dentro de esa carpeta crea otra que se llame LP . Dentro de esta,crea una carpeta llamada ud1. Esta ser a tu carpeta de trabajo para todo slos ejemplos y ejercicios de la unidad 1.

P ag. 37

Lenguajes de Programaci on: Gu a ECTS Ejercicio 1.2


Edita manualmente la funci on ud1 f1 creando un archivo nuevo con el editor on desde la ventana de comandos (con File, New ), gu ardala en tu carpeta de trabajo y ejecuta: >> >> >> >> ud1_f1(2.3) ud1_f1(0.1) ud1_f1(0) ud1_f1(-2.2)

Son correctos los resultados? Qu e errores o problemas da?

Ejercicio 1.3
Crea una funci on que reciba el radio de un c rculo y devuelva su area. MATLAB conoce el valor de , pide ayuda sobre pi para usarlo.

Ejercicio 1.4
Prueba la funci on que has creado con un c rculo de radio la unidad. Deber a devolver . Pru ebala con 2; deber a devolver 4 (puedes calcular ese valor con MATLAB).

1.3.

Funciones con varios argumentos de entrada

El siguiente paso es construir funciones en las que haya m as de un argumento de entrada. Tenemos as la siguiente, la cual calcula el area de un rect angulo. Si necesitamos m as argumentos de entrada, simplemente los colocamos uno tras otro separados por comas dentro de los par entesis a la derecha del nombre de la funci on.
% ud1_farea % primera funci on con m as de un argumento. % area del rect angulo de lados a y b function area=ud1_farea(a,b) area=a*b;

Para invocarla, se nos ocurren estas tres posibilidades, aprovechando lo explicado en la secci on 1.2:
>> ud1_farea(2,3) ans = 6 >> x=3; >> y=5; >> ud1_farea(x,y) ans = 15 >> ud1_farea(x,4) ans = 12

En la primera, pasamos directamente dos n umeros, los cuales son copiados por las variables locales a y b. En la segunda posibilidad pasamos dos variables correspondientes al espacio de memoria de la ventana de comandos, x e y , las cuales son copiadas igualmente por las variables locales de la rutina, a y b, a trav es de la lista de argumentos. Finalmente en la tercera, P ag. 38

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

tenemos una combinaci on de las dos posibilidades anteriores. En el siguiente ejemplo los argumentos no conmutan entre s . Se trata de calcular el area de un pol gono regular sabiendo el n umero de lados y el lado. En el c alculo de la apotema los dos argumentos no conmutan entre s .
% ud1_fareapol.m % area de un pol gono regular de n lados % primeras variables propias de la rutina, P,a, % las variables no conmutan pues juegan distinto papel function area=ud1_fareapol(l,n) P=n*l; % per metro a=l/(2*tan(pi/n)); area=P*a/2;

Es la primera funci on en la que usamos variables locales a la funci on. Si invocamos esta funci on desde la ventana de comandos, y preguntamos despu es lo que valen esas variables locales, las cuales no pertenecen al espacio de memoria de la ventana de comandos tendremos el siguiente resultado:
>> ud1_fareapol(3,4) ans = 9.0000 >> ud1_fareapol(4,3) ans = 6.9282 >> P ??? Undefined function or variable P. >> a ??? Undefined function or variable a. >>

Los ejercicios correspondientes a estos ejemplos son los siguientes: Ejercicio 1.5
Edita manualmente las funciones ud1_farea y ud1_fareapol, gu ardalas en tu carpeta de trabajo y pru ebalas desde la ventana de comandos de MATLAB.

Ejercicio 1.6
Crea una funci on que reciba la base y la altura de un tri angulo y devuelva el area.

Ejercicio 1.7
Crea una funci on que reciba la masa y la velocidad de un m ovil y devuelva la energ a cin etica.

Ejercicio 1.8
Consideramos la funci on function d=ud1_fprueba(a,b,c) b=c; a=b; d=a+b+c;

P ag. 39

Lenguajes de Programaci on: Gu a ECTS


Sin ejecutar la funci on, qu e valor devolver a si invocamos desde MATLAB ud1 f prueba(1, 2, 3)? Raz onalo primero y compru ebalo despu es editando la funci on y ejecutando esa orden. Es la primera funci on que tiene m as de dos argumentos. Conmutan entre s los argumentos de entrada?

Ejercicio 1.9
Crea una funci on que reciba los tres coecientes a, b, c, de un polinomio de segundo grado y devuelva la ra z b + b2 4ac . 2a Cuando se invoque la funci on, se elegir an los coecientes para que la ecuaci on tenga ra ces reales. Se recomienda usar una variable auxiliar D para denir el discriminante b2 4ac. Conmutan entre s los argumentos de entrada?. Para comprobar si tu c odigo es correcto, usa los coecientes del polinomio x2 7x + 12, que tiene como ra ces 3 y 4.

Ejercicio 1.10
Crea una funci on an aloga para la otra ra z, b b2 4ac . 2a

Ejercicio 1.11
Crea una funci on que reciba dos alturas, h1 y h2 y una masa y devuelva la energ a potencial perdida/ganada por el cuerpo al caer/subir de h1 a h2 .

1.4.

Estructura de control condicional if

Hasta ahora, todas las sentencias se han ejecutado de modo consecutivo, una detr as de la otra. No disponemos todav a de herramientas que permitan controlar de alg un modo la ejecuci on o realizar operaciones m as complejas con la informaci on de entrada a la funci on. La primera de esas herramientas y una de las m as importantes es el condicional y nos pone en la parrilla de salida del desarrollo de estrategias y algoritmos para resolver los problemas de los que un ordenador es capaz. Adem as, y no menos importante, se convierte en el primer mecanismo de provocaci on de vuestra capacidad de pensar y de articular un discurso complejo a partir de elementos m nimos, o sea, PROGRAMAR. La estructura condicional aparece en los lenguajes de programaci on normalmente mediante la palabra reservada if. En MATLAB lo hace de ese modo, tal como se indica en las siguientes l neas. function y=nombrefuncion(arg1,arg2,....) .... .... if cond .... .... end .... .... P ag. 40

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

Por cond nos referimos a una condici on l ogica o combinaci on de ellas. As , cond puede ser que una variable sea mayor que un determinado valor, igual, mayor o igual (>=) etc. En caso de que eso sea as , se ejecutar an las sentencias que est an entre la sentencia del if y la primera sentencia end que se encuentre. Es importante para que los c odigos sean legibles tabular o indentar las instrucciones correspondientes a una estructura de control 3 o 4 espacios (ser an 4 en nuestros ejemplos), como hemos hecho con el puntead en el bloque if anterior. Uno de los ejemplos m as sencillos que se pueden poner de esta estructura es el de una funci on que devuelva el mayor de dos n umeros a, b supuestos distintos entre s . Se puede abordar este problema de varias maneras. La primera es mediante dos estructuras if, la primera controlando el caso de que a sea el mayor de los valores y la segunda controlando el caso de que el mayor sea b.
% ud1_fmayorab % primer uso del condicional if % Devuelve el mayor de dos n umeros a,b % a,b se supondr an diferentes function mayor=ud1_fmayorab(a,b) if a>b mayor=a; end % if b>a mayor=b; end

En la segunda posibilidad se dene la variable mayor por defecto como a. Ahora se comprueba si b es mayor que a, y si eso es cierto se dene la variable mayor como b.
% ud1_fmayorab0 % Devuelve el mayor de dos n umeros a,b % a,b se supondr an diferentes function mayor=ud1_fmayorab0(a,b) mayor=a; if b>a mayor=b; end

En la tercera variante se juega con la variable a calcular, d andole primero el valor a. Despu es se compara b con esa variable, y si en la comparaci on gana b, se actualiza el valor de mayor.
% ud1_fmayorab0 % Devuelve el mayor de dos n umeros a,b % a,b se supondr an diferentes function mayor=ud1_fmayorab1(a,b) mayor=a; if b>mayor mayor=b; end

Los ejercicios correspondientes a este ejemplo son los siguientes: P ag. 41

Lenguajes de Programaci on: Gu a ECTS Ejercicio 1.12


Abre la ventana principal de MATLAB, copia manualmente las funciones ud1_fmayorab, ud1_fmayorab0 y ud1_fmayorab1, gu ardalas en tu carpeta de trabajo y pru ebalas .

Ejercicio 1.13
Crea una funci on que reciba un n umero r y devuelva el area del c rculo de radio r si r 0 y 1 en caso contrario.

Ejercicio 1.14
Crea una funci on que reciba un valor x y devuelva el valor y de la funci on denida a trozos: y= x + 1 x < 1 1 x2 x 1

Ejercicio 1.15
(Para valientes) Crea una funci on que reciba tres n umeros a, b, c, que se supondr an diferentes entre si, y devuelva el mayor de los tres.

1.5.

Estructura de control condicional if-else

En el caso de que queramos que se ejecuten determinadas sentencias cuando cond sea falsa, deberemos complementar if con else. De este modo, si cond es cierta se ejecutar a el primer bloque y si es falsa el segundo, como se muestra en el siguiente esquema: function y=nombrefuncion(arg1,arg2,....) .... .... if cond bloque1 else bloque2 end .... .... El ejemplo para ilustrar esta estructura es el correspondiente a la funci on que calcula el mayor de dos n umeros supuestos distintos. Se comprueba si el primero es mayor que el segundo y si no es as , se toma el mayor como el segundo.
% ud1_felseab % primer uso de la estructura if-else % Devuelve el mayor de dos n umeros a,b % a,b se supondr an diferentes function mayor=ud1_felseab(a,b) if a>b mayor=a; else mayor=b; end

P ag. 42

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.16
Edita manualmente la funci on ud1_felseab, modicando alguna de las anteriores, gu ardala en tu carpeta de trabajo y pru ebala. Adivina cu al ser a el resultado si pasas como argumentos dos n umeros iguales.

Ejercicio 1.17
Crea una funci on que reciba un n umero r y devuelva el area del c rculo de radio r si r 0 y 1 en caso contrario, utilizando la estructura if-else.

Ejercicio 1.18
Crea una funci on que reciba un valor x y devuelva, utilizando la estructura if-else, el valor y de la funci on denida a trozos: x + 1 x < 1 y= 1 x2 x 1

1.6.

Funci on que llama a otra funci on

Una vez que con una funci on hemos resuelto un determinado problema y/o hemos agrupado una serie de tareas, esa funci on es muy c omodo verla como una caja negra que recibe unos argumentos de entrada y devuelve unos argumentos de salida (de momento uno s olo de salida). Vista de ese modo, es natural que sea llamada por otra funci on que la necesita como parte de la misma. La sintaxis de ello no ofrece ning un problema invoc andose de modo an alogo a como se invoca desde la l nea de comandos. En el siguiente ejemplo codicamos una funci on denida a trozos, similar a la del ejemplo 1.4, en la que el valor de uno de los trozos de la funci on se obtiene llamando a una funci on creada previamente, la ud1_f1.m.
% ud1_ftrozos2 % primera funcion q llama a otra funcion % ud1_ftrozos2(x). Devuelve el valor de la funci on: % f(x)=x si x<1 % f(x)=x2-ln(x) si x>=1 function y=ud1_ftrozos2(x) if x<1 y=x+1; else y=ud1_f1(x); end

El concepto de llamar a una funci on desde otra es muy poderoso y es la base para tanto resolver grandes problemas como ser capaz de repartir la escritura de grandes c odigos entre un equipo de programadores. Haremos uso abundante de esta t ecnica durante el curso y si el estudiante es h abil conseguir a simplicar la resoluci on de muchos ejercicios si hace buen uso de funciones ejemplo estudiadas en clase y de funciones codicadas al resolver otros ejercicios. Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.19
Edita manualmente la funci on ud1_ftrozos2, gu ardala en tu carpeta de trabajo y pru ebala.

P ag. 43

Lenguajes de Programaci on: Gu a ECTS


>> >> >> >> ud1_ftrozos2(2.3) ud1_ftrozos2(1.1) ud1_ftrozos2(0) ud1_ftrozos2(0.9)

Son correctos los resultados? Qu e errores o problemas da?

Ejercicio 1.20
Utilizando la funci on del area del rect angulo (ud1_farea), crea una funci on que reciba los dos lados de la base y la altura de una pir amide de base rectangular y devuelva su volumen (el volumen de la pir amide es 1/3 del area de la base por la altura).

Ejercicio 1.21
Usando las funciones de los ejercicios 1.9 y 1.10, crea una funci on que reciba los tres coecientes de un polinomio de segundo grado de ra ces reales y devuelva el producto de las mismas (se elegir an los coecientes para que as sean). Prueba con varios polinomios (el producto de las dos ra ces ha de ser c/a).

Ejercicio 1.22
(Para los valientes). Crea una funci on que que reciba los tres coecientes de un polinomio de grado 2, llame a la funci on del apartado anterior para calcular el producto de sus ra ces y que cuando las ra ces sean n umeros complejos o cuando sea una ra z doble, devuelva 0 en lugar del producto de las ra ces. Para ver si las ra ces con complejas o reales, puedes ver el signo del discriminante, b2 4ac.

1.7.

Condicionales anidados.

Las estructuras de control pueden contener dentro de sus bloques de instrucciones internos otras estructuras de control. Es habitual que dentro de un bucle hay condicionales, o que dentro del bloque de un condicional haya un bucle y tambi en es habitual que dentro del bloque de un condicional haya otro condicional. Esto lo reejamos en el siguiente esquema. function y=nombrefuncion(arg1,arg2,....) .... .... if cond bloque10 if cond1 bloque11 end bloque12 else bloque2 end .... .... Para mostrar el funcionamiento, planteamos un ejemplo muy interesante, devolver el signo de una variable entera n. Si n es estrictamente negativa el signo se toma como -1, si n es 0, el signo ser a 0, y si n es estrictamente positiva, el signo ser a 1. Por tanto, hay que gestionar tres posibilidades excluyentes, lo que abordaremos primero eliminando una de ellas frente a las otras dos y despu es las otras dos entre si. P ag. 44

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

% ud1_fsigno % funci on que devuelve el signo de un n umero entero n % -1 si es negativo, 0 si es 0, 1 si es positivo. % primeros condicionales anidados. function signo=ud1_fsigno(n) if n<0 signo=-1; else if n==0 signo=0; else signo=1; end end

Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.23
Edita manualmente la funci on ud1_fsigno, gu ardala en tu carpeta de trabajo y pru ebala, desde la ventana de comandos de MATLAB.

Ejercicio 1.24
Se trata de construir una funci on que reciba una calicaci on (entre 0 y 10) y devuelva 0 si es suspenso (calicaci on estrictamente menor que 5), 1 si es aprobado (calicaci on mayor o igual que 5 y menor que 7), 2 si es notable (calicaci on mayor o igual que 7 y menor que 9), 3 si es sobresaliente (calicaci on mayor o igual que 9 y menor o igual que 10) y -1 si el argumento no est a entre 0 y 10. No se podr an utilizar operadores l ogicos.

Ejercicio 1.25
Crea una funci on que reciba un valor x y devuelva el sin(x) x y= 2 x + log(x) No se podr an utilizar operadores l ogicos. valor y de la funci on denida a trozos: x<0 0x<1 x1

Ejercicio 1.26
Funci on q devuelva el salario semanal de un trabajador en funci on del coste hora, de las horas que ha trabajado y de un jo de productividad que se cobra si se trabajan m as de 30 horas. Si se trabajan m as de 40 horas, las horas por encima de esas 40 se pagan un 50 % m as caras (horas extras). No se podr an utilizar operadores l ogicos.

Ejercicio 1.27
Codica la funci on f (x) = m ax{ud1 f 1(x), 7 cos(6x)}. donde m ax signica m aximo. En la denici on de ud1 f1 hay un logaritmo del argumento x implicado. Por tanto, cuando x sea menor o igual que cero, ese logaritmo no podr a ser evaluado y tomaremos como m aximo la u nica funci on que est a denida. No se podr an utilizar operadores l ogicos.

P ag. 45

Lenguajes de Programaci on: Gu a ECTS

1.8.

Variante elseif en el condicional

Una variante bastante u til del condicional es la que permite abrir el abanico de posibilidades de ejecuci on a no s olo el verdadero o falso referido a una determinada condici on. La idea es que si una condici on es cierta se ejecuten unas sentencias, pero si esta es falsa, se compruebe una segunda condici on y si esta es cierta, se ejecuten el correspondiente segundo grupo de sentencias, pero si la segunda condici on es falsa, se pase a una tercera y as sucesivamente. Finalmente, la orden terminar a con una sentencia else cuyo bloque de instrucciones posterior se ejecutar a si ninguna de las condiciones ha resultado cierta. Pretendemos reejar esto con el siguiente esquema: function y=nombrefuncion(arg1,arg2,....) .... .... if cond1 bloque 1 elseif cond2 bloque 2 elseif cond3 bloque 3 elseif...... ..... else bloque n end .... .... Si la condici on 1, cond1, es cierta, se ejecutar a el bloque 1 de sentencias, y a posteriori se pasar a directamente a las sentencias posteriores a la sentencia end. Si la condici on 1 fuese falsa, se evaluar a la condici on 2 y si est a fuese cierta, se ejecutar a el bloque 2, pasando directamente a las sentencias posteriores a la sentencia end. Si ninguna de las condiciones fuese cierta, se pasar a directamente a la ejecuci on del bloque n. Vemos esta estructura con el siguiente ejemplo. Se trata de construir una funci on que reciba una calicaci on (entre 0 y 10) y devuelva 0 si es suspenso (calicaci on estrictamente menor que 5), 1 si es aprobado (calicaci on mayor o igual que 5 y menor que 7), 2 si es notable (calicaci on mayor o igual que 7 y menor que 9) y 3 si es sobresaliente (calicaci on mayor o igual que 9). Para codicar este ejemplo, lo primero que comprobamos es si la nota es menor que 5. Si no lo es, s olo comprobamos si es menor que 7, por que ya sabemos que va a ser mayor o igual que 5. Los dem as casos son an alogos.
% ud1_fnotas % primera vez q usamos el elseif function clave=ud1_fnotas(nota) if nota<5 clave=0; elseif nota<7 clave=1; elseif nota<9 clave=2;

P ag. 46

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

else clave=3; end

Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.28
Edita manualmente la funci on ud1_fnotas, gu ardala en tu carpeta de trabajo y pru ebala, desde la ventana de comandos de MATLAB. Que ocurre si el valor del argumento no est a entre 0 y 10?

Ejercicio 1.29
Se trata de construir una funci on que reciba una calicaci on (entre 0 y 10) y devuelva 0 si es suspenso (calicaci on estrictamente menor que 5), 1 si es aprobado (calicaci on mayor o igual que 5 y menor que 7), 2 si es notable (calicaci on mayor o igual que 7 y menor que 9), 3 si es sobresaliente (calicaci on mayor o igual que 9 y menor o igual que 10) y -1 si el argumento no est a entre 0 y 10. Se utilizar a la variante elseif del condicional para realizar este ejercicio.

Ejercicio 1.30
Crea una funci on que reciba un valor x y devuelva el sin(x) x y= 2 x + log(x) valor y de la funci on denida a trozos: x<0 0x<1 x1

Se utilizar a la variante elseif del condicional para realizar este ejercicio.

Ejercicio 1.31
Funci on q devuelva el salario semanal de un trabajador en funci on del coste hora, de las horas que ha trabajado y de un jo de productividad que se cobra si se trabajan m as de 30 horas. Si se trabajan m as de 40 horas, las horas por encima de esas 40 se pagan un 50 % m as caras (horas extras). Se utilizar a la variante elseif del condicional para realizar este ejercicio.

Ejercicio 1.32
Codica la funci on f (x) = m ax{ud1 f 1(x), 7 cos(6x)}. donde m ax signica m aximo. En la denici on de ud1 f1 hay un logaritmo del argumento x implicado. Por tanto, cuando x sea menor o igual que cero, ese logaritmo no podr a ser evaluado y tomaremos como m aximo la u nica funci on que est a denida. Se utilizar a la variante elseif del condicional para realizar este ejercicio.

1.9.

Operadores l ogicos

Si queremos construir condiciones algo m as interesantes, necesitaremos combinar condiciones elementales mediante los operadores l ogicos habituales, estudiados a menudo durante la etapa de la educaci on secundario. Necesitaremos saber escribir al menos los operadores Y l ogico y el O l ogico. Si se pretende construir una condici on que mezcle varias condiciones se pueden usar par entesis para establecer qu e operaciones l ogicas se hacen primero, de modo similar a como sucede con las operaciones aritm eticas. Para el Y l ogico se usa el s mbolo reservado &. En el siguiente ejemplo vemos como se utiliza este operador para construir una funci on que devuelva el mayor de tres n umeros supuestos distintos. Si uno de los n umeros es mayor lo ser a porque es al mismo tiempo mayor que uno y mayor que otro. P ag. 47

Lenguajes de Programaci on: Gu a ECTS


%% operadores logicos. function mayor=ud1_fmayor(a,b,c) if a>b & a>c mayor=a; end if b>a & b>c mayor=b; end if c>a & c>b mayor=c; end

l Otro operador interesante es el O ogico (inclusivo). Para este se usa el s mbolo |, que se obtiene pulsando la tecla Alt Gr y la del 1. En los siguientes ejercicios veremos alg un ejemplo de utilizaci on de este operador. Ejercicio 1.33
Edita manualmente la funci on ud1_fmayor, gu ardala en tu carpeta de trabajo y pru ebala, desde la ventana de comandos de MATLAB.

Ejercicio 1.34
Construye una funci on que reciba tres valores a, b y c (que se supondr an diferentes) y devuelva 1 si a es el mayor, 2 si b es el mayor, y 3 si lo es c.

Ejercicio 1.35
Construye una funci on que reciba tres valores a, b y c devuelva el mayor si alguno de ellos es positivo y el menor en caso contrario.

Ejercicio 1.36
Construye una funci on que reciba tres valores a, b y c (que se supondr an diferentes) y devuelva el mayor de ellos. No se podr an utilizar operadores l ogicos, solo un bloque if-else y una llamada a la funci on ud1 fmayorab

Ejercicio 1.37
Cu al es el signicado del argumento de salida de la siguiente funci on? function mayor=ud1_fmayortres(a,b,c) mayor=a; if b>mayor mayor=b; if c>mayor mayor=c; end end

Ejercicio 1.38
Qu e devuelve la siguiente funci on?

P ag. 48

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

function y=ud1_prueba2(a,b,c) y=a+b+c; if a>b | c>b y=y-b; if a>c y=y-c; else y=y-a; end else y=b; end Trata de obtenerlo sin usar el ordenador y despu es compru ebalo con algunos ejemplos.

Ejercicio 1.39
Usando la funci on ud1 fmayor, construye una funci on que devuelva el m aximo de cuatro valores.

Ejercicio 1.40
(Para valientes) Idem con seis valores. Trata de hacerlo con un u nico if else y utilizando dos veces la funci on del apartado 1.36.

Ejercicio 1.41
(Para valientes) Idem con siete valores. Trata de hacerlo con el menor n umero posible de if else (ninguno).

Ejercicio 1.42
(Para valientes) Qu e errores hay en el siguiente programa? Se supone que la funci on deber a devolver la potencia del segmento denido por tres abscisas a, b, c, es decir, el producto de las longitudes de los dos segmentos que determinan. No se sabe cu al es la relaci on de orden entre los valores pero si fuesen crecientes, la potencia ser a (b a) (c b).
function pot=ud1_fpotencia(a,b,c) if a>b & a>c if b>c pot=(a-b)*(b-c) else pot=(a-c)*(c-b) end end if b>a & b>c if a>c pot=(b-a)*(a-c) else pot=(b-c)*(c-a) end else if a>b pot=(c-a)*(a-b) else pot=(c-b)*(b-a) end end

Trata de hacerlo primero en papel para encontrar algunos errores y luego prueba con el ordenador. Prueba con (1, 2, 3), (3, 2, 1), (2, 1, 3), etc y con (1, 1, 2), (1, 2, 1), (2, 1, 1) y (1, 1, 1) (en estos cuatro u ltimos casos deber a dar 0).

P ag. 49

Lenguajes de Programaci on: Gu a ECTS

1.10.

Operadores de comparaci on: son iguales?

La operaci on de comparar si dos valores enteros son iguales tiene una sintaxis espec ca en MATLAB, colocando el s mbolo = de modo duplicado, ==. Cuando se trate de valores correspondientes a n umeros reales, esta operaci on es m as delicada y hablaremos de ella m as adelante. En el siguiente ejemplo se muestra su uso para construir una funci on que indica si dos valores son iguales o no.
% ud1_figuales % operador de comparacion para numeros enteros function chivato=ud1_figuales(m,n) if m==n chivato=1; else chivato=0; end

La negaci on l ogica se escribe en MATLAB anteponiendo al operador correspondiente el s mbolo , el cual se obtiene pulsando las teclas AltGr y 4. Por tanto, el operador para comprobar si dos valores son distintos ser a =. En los siguientes ejercicios veremos alg un ejemplo de utilizaci on de este operador. Ejercicio 1.43
Edita manualmente la funci on ud1_figuales, gu ardala en tu carpeta de trabajo y pru ebala, desde la ventana de comandos de MATLAB.

Ejercicio 1.44
Construye una funci on que reciba tres n umeros enteros a, b y c y devuelva 1 si son iguales entre si, y 0 en caso contrario.

Ejercicio 1.45
Construye una funci on que reciba tres n umeros enteros a, b y c y devuelva 1 si a = b, 2 si a = b y b = c y 3 si los tres valores son iguales.

Ejercicio 1.46
Construye una funci on que reciba tres n umeros enteros a, b y c y devuelva 2 si los tres son iguales entre si, 1 si dos de ellos son iguales entre si pero el tercero es diferente, y 0 si los tres son distintos.

Ejercicio 1.47
Repetir el ejercicio 1.46 sin utilizar ni else, ni elseif.

1.11.

Igualdad entre n umeros reales: precisi on y valor absoluto

Entender c omo el ordenador almacena y trabaja con n umeros con cifras decimales escapa al contenido de este libro. Sin embargo, dado que la memoria RAM es nita, en n umeros racionales peri odicos o en n umeros irracionales, es f acil entender que ser a imposible almacenar las innitas cifras que hay a la derecha del punto decimal. Adem as de estas dicultades de almacenamiento, est a la dicultad conceptual relativa a la idea de igualdad entre n umeros reales. P ag. 50

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

La mejor respuesta es pensar que dos n umeros reales (y en general dos objetos cualesquiera en la vida profesional) son iguales cuando las diferencias entre ellos sean tan peque nas como lo requiera una determinada tarea. As , dos sillas del mismo modelo son objetivamente distintas si las vemos con mucho cuidado, pero si no tienen ning un defecto, ser an a todos los efectos iguales. Lo mismo sucede con los n umeros reales. Diremos que dos n umeros reales son iguales cuando el valor absoluto de su diferencia sea menor que un umbral de precisi on determinado que depender a del signicado y utilidad de dichas cantidades. En el siguiente ejemplo observamos c omo se dene ese umbral para comprobar si un tri angulo es equil atero, is osceles, etc., y como se comprueba la igualdad de los lados recurriendo a la funci on valor absoluto, abs en MATLAB.
% ud1_ftriangulos % recibe a, b y c, los lados de un tri angulo % devuelve 3 si son los lados de un tri angulo equil atero % devuelve 2 si son de un tri angulo is osceles % devuelve 1 si son los lados de un tri angulo escaleno % idea: cuando dos numeros reales son iguales, para % comprobarlo hay q definir una precis on-umbral. function tipo=ud1_ftriangulos(a,b,c) % Precisi on con la que trabajamos. Todo n umero menor que % esa cantidad ser a cero para nosotros prec=(a+b+c)*1e-5; if abs(a-b)<prec & abs(b-c)<prec tipo=3; elseif abs(a-b)<prec | abs(a-c)<prec | abs(b-c)<prec tipo=2; else tipo=1; end

Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.48
Entra en al carpeta utilizando el enlace directo que tienes en el escritorio. Copia de ah todos los ejemplos correspondientes a la unidad 1, aquellos cheros cuyo nombre empieza por ud1 a tu propia carpeta ud1. Prueba la funci on ud1 ftriangulos. Ejercicio 1.49 Crea una funci on que reciba tres valores, a, b y c y devuelva 1 si pueden ser los lados de un tri angulo (la suma de dos lados cualesquiera ha de ser mayor que el otro, es decir, a + b > c, a + c > b y b + c > a) y 0 en caso contrario. Ejercicio 1.50 Modica el ejemplo ud1_ftriangulos para que reciba tres valores y devuelva 0 si no pueden ser los lados de un tri angulo (usa la funci on creada en el apartado 1.49), 3 si es un tri angulo equil atero, 2 si es is osceles y 1 si es escaleno. Ejercicio 1.51 Codica el ud1_ftriangulos en una sola l nea usando la funci on ud1 ftriangulos y el ejercicio 1.49. Ejercicio 1.52 (Para valientes) Construye una funci on que reciba 4 n umeros a, b, c, d, correspondientes a los lados consecutivos de un trapezoide, as como la longitud de una las diagonales d1 y devuelva 1 si la gura es un cuadrado, 2 si es un rect angulo, 3 si es un trapecio y 4 si no es ninguna de estas posibilidades. Asignaturas\LP \Ejemplos.

P ag. 51

Lenguajes de Programaci on: Gu a ECTS

1.12.

Variables enteras y reales como argumentos

Hasta ahora hab amos utilizado variables que eran esencialmente o n umeros enteros o n umeros reales. En el siguiente ejemplo conviven ambos tipos como argumentos. La funci on recibe los valores correspondientes a las dimensiones principales de una determinada gura elemental (rect angulo, tri angulo, c rculo, etc...) y recibe tambi en un entero indicando el tipo de gura concreta a la que nos referimos de entre esa lista. La funci on devuelve el area de dicha gura.
% ud1_fareafig % primera funci on que combina variables esencialmente diferentes, % una como tipo que funciona como un indicador de especie (n umero % entero) y otras (a,b) q funcionan como n umeros reales. % ademas b a veces es inutil. % ud1_fareafig(tipo,a,b) devuelve el area de distintas figuras % Si tipo=1, devuelve el area del rect angulo de lados a y b % Si tipo=2, devuelve el area del c rculo de radio a % Si tipo=3, devuelve el area del tri angulo de base a y altura b % Si tipo=4, devuelve el area del cuadrado de lado a % Si tipo=5, devuelve el area del tri angulo equil atero de lado a % Si no es ninguno de los tipos anteriores, devuelve -1 function area=ud1_fareafig(tipo,a,b) if tipo==1 area=a*b; elseif tipo==2 area=pi*a2; elseif tipo==3 area=a*b/2; elseif tipo==4 area=a*a; elseif tipo==5 area=a*a*sqrt(3)/4; else area=-1; end

Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.53 Prueba la funci on ud1_fareafig, bien edit andola manualmente o tray endola de una carpeta determinada. Ejercicio 1.54 Modica la funci on ud1_fareafig para que tambi en calcule el area del rombo. Ejercicio 1.55 Codica ud1_fareafig sin la orden else ni la elseif. Ejercicio 1.56 Construye una funci on que reciba un par ametro, raiz , y los coecientes a, b y c de un polinomio de segundo grado. Devolver a la ra z con el + en la f ormula si raiz es 1 y la ra z con el - si raiz es = 1. Para calcular estas ra ces llamaremos a las funciones 1.9 y 1.10. Para comprobar si tu c odigo 2 es correcto, usa los coecientes del polinomio x 7x + 12, que tiene como ra ces 3 y 4. Ejercicio 1.57 Codica una funci on que reciba los coecientes de un polinomio de grado 2 y devuelva la suma de sus ra ces, para lo cual usar a del modo que corresponda la funci on del ejercicio 1.56. Para comprobar 2 si tu c odigo es correcto, usa los coecientes del polinomio x 7x + 12, que tiene como ra ces 3 y 4. Ejercicio 1.58

P ag. 52

UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

(Para valientes) Sabiendo que una pulgada son 2.54 cm, que un pie son 12 pulgadas, y que una yarda son 3 pies se pide construir una funci on que reciba una cantidad, un n umero que indicar a en qu e sistema de medida est a (0 para el sistema internacional (SI) y = 0 para el sistema ingl es) y otro n umero que indicar a en qu e unidades est a (1,2 o = 1, 2 seg un sea mm, cm o metros en SI y 1, 2 o = 1, 2 seg un sea pulgadas, pies o yardas en el sistema ingl es). La funci on devolver a la magnitud convertida a metros si se ha recibido en el sistema ingl es y convertida a pies si se ha recibido en el SI.

1.13.

Variables contador y sumador

Ya vimos que el operador = en MATLAB no tiene mucho que ver con lo que ese operador signica en Algebra. Su signicado es de asignaci on. A la izquierda tendremos siempre una variable y a la derecha un expresi on que puede combinar llamadas a funciones con operadores aritm eticos y l ogicos. El funcionamiento de la operaci on es que primero se eval ua la expresi on a la derecha y el valor obtenido es asignado a la variable que est a a la izquierda. Esto abre la puerta para operaciones que no tienen sentido matem atico pero s en Programaci on, como decir que i = i + 1. Lo que esto signica es que se eval ua la expresi on i + 1 y se asigna su valor a i, con lo cual esta variable habr a incrementado su valor original en una unidad. En el siguiente ejemplo aplicamos esta idea para encontrar la suma de los positivos entre cuatro n umeros. %% ud1_fsumapos %% primera variable sumadora (x=x+algo) %% suma de los positivos entre 4 n umeros. function suma=ud1_fsumapos(a,b,c,d) suma = 0; if a>0 suma=suma+a; end if b>0 suma=suma+b; end if c>0 suma=suma+c; end if d>0 suma=suma+d; end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.59 Prueba la funci on ud1_fsumapos Ejercicio 1.60 Construye una funci on que reciba 5 n umeros a, b, c, d, y e y cuente cu antos son estrictamente positivos. Ejercicio 1.61 Construye una funci on que reciba 5 n umeros x, y , z , t, y s y dos n umeros a y b y devuelva la suma de aquellos n umeros de entre esos 5 que son mayores e iguales que a y menores o iguales que b. Ejercicio 1.62 Construye una funci on que reciba 5 n umeros a, b, c, d, y e y un n umero adicional positivo ref y devuelva la suma de aquellos valores que sean negativos pero que su valor absoluto sea mayor que ref . Por ejemplo, si los n umeros son, -7, 12, 4, -3, -6 y ref vale 3.7, la suma ser a -7-5-=-13.

P ag. 53

Lenguajes de Programaci on: Gu a ECTS

1.14.

Funci on parte entera

Hay una funci on propia de MATLAB que se usa en muchos c odigos y que conviene citar. Es la funci on que extrae la parte entera, redondeando hacia , de un n umero. As , la parte entera de 3.45 es 3, y la de -4.32 es -5. En el siguiente ejemplo se usa este operador, oor, para comprobar si un n umero es o no entero. %% ud1_fesentero %% comprueba si un numero x es entero %% funcion parte entera function chivato=ud1_fesentero(x) parte_entera=floor(x); if x==parte_entera chivato=1; else chivato=0; end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.63 Prueba la funci on ud1_fesentero. Ejercicio 1.64 Construye una funci on que reciba 4 n umeros a, b, c, d y devuelva la suma de los que entre ellos son enteros. Ejercicio 1.65 Construye una funci on que reciba un n umero natural n y devuelva 0 si n es par y 1 si n es impar. Ejercicio 1.66 (Para valientes) Construye una funci on que reciba 4 n umeros a, b, c, d y un n umero entero n y devuelva la suma de los que entre ellos son enteros y adem as m ultiplos de n.

P ag. 54

Unidad Did actica 2 Bucles


2.1. General

Como ya se indic o al comienzo de la unidad 1, esta segunda unidad contiene junto con la primera la mayor a de las herramientas que un alumno va a tener que utilizar a lo largo del curso. La unidad se centra en la estructura de control m as importante, la que permite realizar repeticiones: los bucles. El bucle junto con los condicionales representan la base de la programaci on estructurada.

2.2.

Bucles

En muchos problemas de matem aticas se requiere repetir o iterar un mismo procedimiento. Es por ello que todos los lenguajes de programaci on contienen la posibilidad de crear bucles. Un bucle en programaci on es una sentencia que se realiza repetidas veces. Un bucle se utiliza para hacer un acci on repetida sin tener que repetir varias veces el mismo c odigo, lo que ahorra tiempo, deja el c odigo m as claro y facilita su modicaci on en el futuro. La variable entera que cuenta el n umero de veces que regula la evoluci on del bucle se conoce como ndice del bucle. Durante este curso un bucle lo relacionaremos con el uso del comando WHILE. La gran ventaja de los bucles escritos mediante el uso de la sintaxis WHILE frente a otras formas de escribir un bucle radica en que el ndice del bucle es una variable m as del programa y su valor es controlado en todo momento por el programador. Con este tipo de bucles, el n de la iteratividad viene determinado por una condici on sobre una variable del programa que aparece a continuaci on del comando WHILE. El primer ejemplo ilustra uno de los usos m as t picos de los bucles que sin lugar a dudas es la suma de un conjunto de elementos. El conjunto de elementos que se quieren sumar en este caso son los naturales de 1 a n. El ndice i se inicializa por tanto a 1 y n es un argumento de la funci on. La condici on de corte del proceso iterativo que requiere la estructura WHILE se ejecutar a cuando el ndice i sea mayor que n, en cualquier otro caso i se ir a incrementando en una unidad y la variable suma se ver a incrementada en el valor del propio ndice i. De esta forma cuando el bucle se interrumpa la variable suma contendr a el valor resultante de la suma de los n primeros n umeros naturales. %ud2_fsuma % Suma de todos los naturales entre 1 y n % primer bucle function suma=ud2_fsuma(n) suma=0; i=1;

P ag. 55

Lenguajes de Programaci on: Gu a ECTS


while i<=n suma=suma+i; i=i+1; end Mediante los siguientes ejercicios se podr a aanzar el concepto de bucle. Ejercicio 2.1 Crea una carpeta llamada ud2 en Z : Copia en ella todos los ejemplos cuyo nombre empiece por ud2 , los cuales encontrar as en la carpeta: Asignaturas\LP \Ejemplos A nade la carpeta Z :\ud2 al path o Current Directory de MATLAB. Ejercicio 2.2 Prueba la funci on ud2 fsuma Ejercicio 2.3 Construye una funci on que reciba dos n umeros naturales, m y n, con m < n, y devuelva la suma de los naturales entre m y n. Ejercicio 2.4 Idem sin usar bucles y llamando a la funci on ud2 fsuma. Ejercicio 2.5 Construye una funci on que reciba un n umero natural, n y devuelva sin(1) + sin(2) + . . . + sin(n 1) + sin(n) n+1

Ejercicio 2.6 (Para valientes) Construye una funci on que reciba dos n umeros, reales a, b, con a < b, un n umero natural n, calcule h = (b a)/n y devuelva sin(a) + sin(a + h) + sin(a + 2h) + . . . + sin(a + (n 1)h) + sin(b) , n+1 es decir, el valor medio aproximado del seno entre a y b, tomando n + 1 puntos para aproximarlo. Tambi en se puede ver como la posici on vertical del centro de gravedad de la curva y = sin(x) entre a y b si la consideramos representada por esos n + 1 puntos. Ejercicio 2.7 (Para valientes) Construye una funci on que reciba dos n umeros, reales a, b, con a < b, un n umero natural n, y calcule la posici on vertical del centro de gravedad de la curva y = sin(x), considerada como una poligonal que se apoya en n + 1 puntos de esa curva cuyas abscisas est an equiespaciadas entre a y b. Ejercicio 2.8 (Para valientes) Construye una funci on que reciba dos n umeros, reales a, b, con a < b, un n umero natural n, y calcule el centro de gravedad del supercie denida por los rect angulos que tiene como base h = (b a)/n y como altura sin(xi ), con xi = a + i h, 0 i < n.

P ag. 56

UNIDAD DIDACTICA 2. BUCLES

2.3.

Bucles con incremento variable

El segundo ejemplo es una variante del caso anterior donde se desea que tan s olo se sumen los n umeros pares. La primera diferencia estriba en que el primer valor que debe tomar el ndice i debe ser 2 y la segunda es que el incremento del ndice sea de dos unidades en vez de una. % ud2_fsumapares % Suma todos los numeros pares entre 1 y n function suma=ud2_fsumapares(n) suma=0; i=2; while i<=n suma=suma+i; i=i+2; end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2.9 Prueba la funci on ud2 fsumapares Ejercicio 2.10 Construye una funci on que reciba un n umero natural, n, y devuelva la suma de los impares entre 1 y n. Ejercicio 2.11 Construye una funci on que reciba un n umero natural, n, y devuelva la suma de los m ultiplos de 3 entre 1 y n. Ejercicio 2.12 (Para valientes) Construye una funci on que reciba un n umero natural n y devuelva 0 si n es par y 1 si n es impar. No se podr a usar la orden f loor.

2.4.

Bucles con otras operaciones

Como podemos ver en el siguiente ejemplo, el uso de un bucle se puede extender al producto igual que a la suma. De esta forma si hacemos productos de n umeros que son siempre el mismo en este caso x, estaremos hallando la potencia en esima de dicho n umero. % ud2_fpotencia % Calcula xn, repitiendo el producto. function pot=ud2_fpotencia(x,n) pot=1; i=1; while i<=n pot=x*pot; i=i+1; end Los ejercicios correspondientes a este ejemplo son los siguientes:

P ag. 57

Lenguajes de Programaci on: Gu a ECTS


Ejercicio 2.13 Prueba la funci on ud2 fpotencia Ejercicio 2.14 Construye una funci on que reciba un n umero natural, n, y devuelva n! = 1 2 . . . (n 1)n Ejercicio 2.15 Qu e devuelve la siguiente funci on? function y=ud2_fprueba(m,n,k) y=1; i=m; while i<=n y=y*i i=i+k; end Sin ejecutarla, trata de calcular qu e devolver a ud2 f prueba(2, 15, 3). Compru ebalo con MATLAB. Ejercicio 2.16 Construye una funci on que reciba un n umero x y un n umero natural, n, y devuelva xn sin usar ni llamar a ud2 fpotencia. Ejercicio 2.17 Llamando a la funci on ud2 f potencia y la funci on que has creado en el ejercicio 2.16, construye una funci on que reciba un n umero x y un entero a y devuelva xa . Ejercicio 2.18 Construye una funci on que reciba x y n, calculando: xi
i

para lo cual llamar a a ud2 f potencia.

2.5.

Bucles y relaciones de recurrencia

Otra aplicaci on interesante de los bucles viene a partir del uso de las f ormulas de recurrencia, muy usadas en m etodos num ericos y c alculo innitesimal. El valor de una variable en un paso n depende de su valor en el paso anterior n 1. El ndice del bucle ser a capaz de ir avanzando con en n umero de pasos y de este modo ir actualizando el valor de x en cada uno de los mismos. Ver el siguiente ejemplo: % ud2_fnewton % Recibe a y n y devuelve el termino n-esimo % de la sucesion x_(i+1)=x_i-((x_i)2-81)/(2*x_i), siendo % a el primer termino, x_1=a % Relacion entre sucesiones y bucles. function x=ud2_fnewton(a,n)

P ag. 58

UNIDAD DIDACTICA 2. BUCLES x=a; i=1; while i<=n-1 x=x-(x2-81)/(2*x); i=i+1; end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2.19 Prueba la funci on ud2 fnewton con algunos valores y comprueba que los resultados son correctos. Ejercicio 2.20 Construye una funci on que reciba un n umero natural n y devuelva el t ermino n- esimo de la sucesi on xi+1 = 2xi , x1 = 3.57, i N. A qu e valor converge la sucesi on cuando n ? Ejercicio 2.21 Construye una funci on que reciba un n umero natural n y devuelva xn xn1 , siendo xn y xn1 los t erminos n y n 1 de la sucesi on del ejercicio 2.20. Se llamar a a la funci on creada en dicho ejercicio. Ejercicio 2.22 Construye una funci on que reciba un n umero natural n y devuelva xn xn1 , siendo xn y xn1 los t erminos n y n 1 de la sucesi on del ejercicio 2.20. No se podr a llamar a la funci on creada en dicho ejercicio y solo se podr a usar un bucle. Ejercicio 2.23 Construye una funci on que reciba un n umero natural n y devuelva el n- esimo t ermino de la sucesi on 1 de Fibonacci . xn+2 = xn + xn+1 , x1 = 1, x2 = 2.

Ejercicio 2.24 Modica el ejemplo 2.23 para que reciba un n umero natural n y dos n umeros x1 y x2 y devuelva el t ermino n- esimo de la sucesi on de Fibonacci.
Leonardo Pisano naci o en 1170 probablemente en Pisa, en el seno de la familia Bonacci, de ah su sobrenombre Fibonacci, por el que es generalmente conocido. Su padre fue representante de los mercaderes de la Rep ublica de Pisa en el norte de Africa, en lo que es hoy el noroeste de Argelia. All creci o y se educ o Fibonacci. En los numerosos viajes en los que acompa n o a su padre, Fibonacci aprendi o las ventajas de los sistemas matem aticos utilizados en otras culturas. Hacia 1200 regres o a Pisa y recopil o en diversos libros lo aprendido en sus viajes a nadiendo adem as notables contribuciones propias. Por ejemplo, en uno de sus libros introdujo el sistema decimal indo-ar abigo, sistema de numeraci on posicional que usamos actualmente y extendi o por Europa el uso del sistema arabe de numeraci on. En el mismo libro aparece la conocida sucesi on de Fibonacci, 1, 1, 2, 3, 5, 8, 13, 21, 34,... (en la que cada t ermino es suma de los dos anteriores) como soluci on al siguiente problema: Un hombre aisla un par de conejos en un corral. Cu antos pares de conejos hay al cabo de un a no si se supone que cada par de conejos engendra un nuevo par que a partir del segundo mes se hace f ertil? Sin embargo, la mayor aportaci on matem atica de Fibonacci se encuentra en el area de la Teor a de los N umeros, en la que, entre otros resultados destaca el estudio de m etodos matem aticos para encontrar triples Pitag oricos, es decir, tres n umeros naturales, m, n y k que verican m2 + n2 = k 2 .
1

P ag. 59

Lenguajes de Programaci on: Gu a ECTS


Ejercicio 2.25 (Para valientes) Construye una funci on que reciba tres n umeros enteros p, q y r y devuelva 1 si r pertenece a la sucesi on de Fibonacci iniciada por p y q y 0 en caso contrario (supondremos la sucesi on mon otona). Ejercicio 2.26 (Para valientes) Idem siendo p, q y r n umeros reales (supondremos la sucesi on mon otona). Ejercicio 2.27 (Para valientes) El n umero , se puede obtener mediante la f ormula = 4 (1 1/3 + 1/5 1/7 + . . . + (1)i 1 + . . .). 2i+1

Construye una funci on que reciba un n umero n y devuelva la aproximaci on de mediante los n primeros sumandos de la expresi on anterior (no hace falta utilizar ).

2.6.

Bucles y condicionales

A continuaci on se nos plantea la necesidad de contar los divisores de un n umero natural n. Para ello hay que combinar un bucle con un condicional, es decir hay que recorrer todos los potenciales candidatos a divisor que van desde 1 a n y entre ellos ver los que realmente son divisores de n. En caso de que veriquen la condici on la variable de conteo de divisores se incrementa en una unidad y en el caso opuesto no se altera. % ud2_fcuentadiv % ud2_fcuentadiv(n) cuenta los divisores de n % primer uso de mod function num=ud2_fcuentadiv(n) num=0; i=1; while i<=n if mod(n,i)==0 num=num+1; end i=i+1; end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2.28 Copia el ejemplo ud2 fcuentadiv a tu directorio. Pru ebalo con algunos valores y comprueba que los resultados son correctos. Ejercicio 2.29 Construye una funci on que reciba un n umero natural n y devuelva 0 si n es par y 1 si n es impar. Se usar a la orden mod. Ejercicio 2.30 Construye una funci on que reciba un n umero n, cuente los n umeros que son pares y no son m ultiplos de 3 entre 1 y n y devuelva ese valor.

P ag. 60

UNIDAD DIDACTICA 2. BUCLES

Ejercicio 2.31 Construye una funci on que reciba un n umero n, recorra los valores sin(1), sin(2), sin(3), . . . , sin(n), y devuelva el n umero de ellos que son positivos. Ejercicio 2.32 Construye una funci on que reciba un n umero n, recorra los valores sin(1), sin(2), sin(3), . . . , sin(n), y devuelva el producto de los que son positivos. Ejercicio 2.33 Construye una funci on que reciba un a no y devuelva su siglo. Ejercicio 2.34 La siguiente funci on que recibe un n umero n y deber a devolver el n umero de valores entre 1 y n para los que sin es mayor que 1/2 menos para los que es menor que 1/2. Corrige los errores que tiene. function c=ud2_fprueba2(n) i=1; while i<=n if sin(i)>1/2 c=c+1; else c=c-1; end i=1+1; end Ejercicio 2.35 Construye una funci on que reciba dos n umeros naturales m y n, y devuelva la cantidad de divisores comunes. Ejercicio 2.36 (Para valientes) Construye una funci on que reciba dos n umeros naturales m y n, y devuelva su m aximo com un divisor. Ejercicio 2.37 (Para valientes) Construye una funci on que reciba dos n umeros naturales m y n, y devuelva su m nimo com un m ultiplo. Ejercicio 2.38 (Para valientes) Construye una funci on que reciba 3 naturales m, n, p y devuelva una variable f lag tal que f lag = 1 si el m nimo de los m aximos comunes divisores entre dos de estos n umeros corresponde a la pareja m, n. f lag = 2 si es m, p y f lag = 3 si es n, p. Si por ejemplo m = 20, n = 30, p = 15, f lag valdr a 2. No se podr a llamar a 2.36. Ejercicio 2.39 (Para valientes) Construir una funci on que reciba un n umero natural y devuelva el n umero de ceros que hay en el (as , por ejemplo, en 304 hay un cero, en 30 hay un cero y en 115 no hay ning un cero). Para contar cu antas cifras tiene el n umero, pod eis usar log 10.

P ag. 61

Lenguajes de Programaci on: Gu a ECTS

2.7.

Uso de bucles para vericar una condici on sobre un conjunto.

El ejemplo que se ilustra a continuaci on tan s olo devuelve un valor 1 o 0 en el caso de que el n umero que introducimos como argumento sea o no primo. Al igual que en el caso anterior el bucle nos vale para recorrer todos los posibles candidatos que pueden cumplir una condici on, en este caso ser divisor del argumento numero. A diferencia del caso anterior basta con que la condici on se cumpla una vez para que no haga falta continuar el bucle, y podamos asegurar que el n umero no es primo devolviendo por tanto un cero. % ud2_fesprimo % ud2_fesprimo(numero) devuelve 1 si numero es primo % y 0 si no lo es % orden break. function primo=ud2_fesprimo(numero) primo=1; i=2; while i<=sqrt(numero) if mod(numero,i)==0 primo=0; break; end i=i+1; end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2.40 Prueba la funci on ud2 fesprimo. Ejercicio 2.41 Construye una funci on que reciba un n umero natural n y devuelva su divisor m as grande distinto de s mismo. Ejercicio 2.42 Idem m as peque no y distinto de 1. Ejercicio 2.43 Construye una funci on que reciba dos enteros, m, n, con m < n y devuelva el menor n umero entero r entre m y n tal que sin(r) > 0 (se usar a break ). Se supondr a que existe soluci on. Por ejemplo, si m = 16 y n = 27 el resultado debe ser 19. Ejercicio 2.44 Idem sin break . Ejercicio 2.45 Construye una funci on que reciba un natural n y devuelva el mayor n umero entero positivo m < n tal que sin(m) < 0. (se usar a break ). Se supondr a que existe soluci on. Por ejemplo, si n = 29 el resultado ha de ser 25.

P ag. 62

UNIDAD DIDACTICA 2. BUCLES

Ejercicio 2.46 Idem sin break . Ejercicio 2.47 on que haga lo mismo que ud2 f esprimo. Utilizando la funci on ud2 f cuentadiv , construye una funci Ejercicio 2.48 Construir una funci on que reciba un n umero natural n y un valor prec, itere la sucesi on xi+1 = 2xi , x1 = 8, 32, i N y si para alg un 1 < i n, |xi xi1 | < prec, devuelva xi . Si no, devolver a xn . Ejercicio 2.49 Modicar la funci on creada en el ejercicio 2.23 para que reciba un n umero num, y devuelva el primer elemento xi de la sucesi on de Fibonacci x1 = 1, x2 = 2, xi = xi1 + xi2 tal que xi sea mayor que num. Nota: Como en cada iteraci on sumamos m as de 1, como mucho tendr amos que hacer n iteraciones. Ejercicio 2.50 Crea una funci on que reciba un n umero num, calcule los t erminos de la sucesi on de Fibonacci x1 = 1, x2 = 2, xi = xi1 + xi2 menores que num y devuelva el n umero de ellos que son primos. Ejercicio 2.51 (Para valientes) Crea una funci on que reciba un n umero num y devuelva 1 si descompone en producto de dos primos y 0 si no es as . Por ejemplo, para num = 6 = 3 2 devolver a 1 y para num = 7 o num = 12 devolver a 0. Usa la funci on ud2 f esprimo para determinar si un n umero es primo o no.

2.8.

Bucles anidados.

Al igual que hemos visto que se pueden encontrar unos condicionales anidados dentro de otros, esto mismo ocurre con los bucles. En el ejemplo presentado a continuaci on vamos a contar la cantidad de n umeros primos que hay menores o iguales que el argumento de entrada n sin contar con el 1, esto lo llevaremos a cabo mediante el ndice i. Para ello planteamos un primer bucle donde i vaya desde 2 hasta n, y en cada uno de los casos realizamos un bucle interno sobre los posibles divisores de i que vienen representados por el ndice j . Se deja al estudiante entender el porqu e se limita el crecimiento del ndice j hasta que sea menor o igual que la ra z cuadrada de i. % ud2_fnprimos.m % ud2_fnprimos(n) devuelve el n umero de primos % menores o iguales que n. No contamos el 1 como primo. % primer doble bucle (bucles anidados) function p=ud2_fnprimos(n) i=2; p=0; while i<=n j=2; primo=1; while j<=sqrt(i)

P ag. 63

Lenguajes de Programaci on: Gu a ECTS


if mod(i,j)==0 primo=0; %i no es primo break; end j=j+1; end if primo==1 p=p+1; end i=i+1; end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2.52 Prueba la funci on ud2 fnprimos Ejercicio 2.53 Construye una funci on que calcule el n umero de primos menores o iguales que un n umero n sin utilizar un doble bucle y llamando a ud2 fesprimo. Ejercicio 2.54 Construye una funci on que reciba dos naturales, m y n, con m < n y devuelva la suma de los n umeros primos entre m y n. Ejercicio 2.55 Construye una funci on que calcule la suma de de los primos menores o iguales que un n umero n sin llamar a ud2 fesprimo. Ejercicio 2.56 Construye una funci on que reciba dos naturales, m y n, con m < n y devuelva el producto de los n umeros primos entre m y n (sin llamar a ud2 fesprimo). Ejercicio 2.57 Construye una funci on que reciba 3 naturales, m, n, p, con m < n y calcule: m + m2 + + mp + (m + 1) + (m + 1)2 + + (m + 1)p + + n + n2 + + np

Ejercicio 2.58 Construye una funci on que reciba dos naturales, m y n, con m < n y devuelva el mayor n umero primo entre m y n. (Para valientes) Hacerlo sin usar break. Ejercicio 2.59 Construye una funci on que reciba dos naturales, m y n, con m < n y devuelva el menor n umero primo entre m y n. (Para valientes) Hacerlo sin usar break. Ejercicio 2.60 (Para valientes) Construye una funci on que reciba dos naturales, m y n, con m < n y devuelva el mayor n umero primo entre m y n. No se podr a usar ud2 fesprimo.

P ag. 64

Unidad Did actica 3 Vectores


3.1. General

La unidad 3 introduce un elemento fundamental en Programaci on: los vectores o arraysde datos. No hay apenas ordenes nuevas en esta unidad y nos concentramos en desarrollar algoritmos m as interesantes, los cuales permiten resolver problemas m as complejos y similares a los reales. Los vectores est an muy relacionados con los bucles que hemos estudiado en la unidad 2 pues son los bucles los que nos permiten movernos con generalidad por los vectores.

3.2.

Vectores como argumentos de funciones

Este ejemplo es la primera funci on en la que se usa un vector. Adem as, ese vector es en si mismo el argumento de entrada de la funci on, lo cual no requiere ninguna sintaxis espec ca. Como sabemos, desde que hicimos el tutorial (ap endice 0), podemos preguntar a un vector o a una matriz su tama no. Para ello disponemos de la orden length. Esto no es en general as si usamos otro lenguaje de programaci on, ya que en principio, adem as del vector, habr a que pasar como argumento un n umero natural correspondiente a su dimensi on. En MATLAB no es necesario pero la primera l nea de la funci on es una asignaci on de ese valor a una nueva variable n que nos va a permitir montar el bucle para movernos por el vector. Para obtener la media tenemos que sumar todos los elementos del vector. Para ello, inicializamos a 0 la variable suma y mediante un bucle la vamos incrementando con los elementos del vector. Finalmente dividimos por su dimensi on para tener la media.
% ud3_fmedia.m % ud3_fmedia(v) recibe un vector v y % devuelve el valor medio de los elementos de v % Con esta funcion se introduce el uso de vectores function m=ud3_fmedia(v) n=length(v);% n es la dimensi on o n umero de % elementos del vector suma=0; % Inicializamos la suma a 0 i=1; while i<=n suma=suma+v(i); % Sumamos el elemento i-esimo de v i=i+1; end m=suma/n; % Una vez sumados, hallamos la media

Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 3.1 P ag. 65

Lenguajes de Programaci on: Gu a ECTS


Crea una carpeta llamada ud3 en Z : Copia en ella todos los ejemplos cuyo nombre empiece por ud3 , los cuales encontrar as en la carpeta: Asignaturas\LP \Ejemplos A nade la carpeta Z :\ud3 al path o Current Directory de MATLAB.

Ejercicio 3.2
Prueba la funci on ud3 fmedia.m para diferentes vectores.

Ejercicio 3.3
Crea una funci on que reciba un vector y devuelva la media de los cuadrados de los elementos del vector. Coincidir a el resultado con la media al cuadrado?

Ejercicio 3.4
Crea una funci on que reciba un vector y devuelva la media geom etrica de los elementos del vector. n La media geom etrica de {a1 , . . . , an } es a1 a2 . . . an .

Ejercicio 3.5
Crea una funci on que reciba dos vectores y devuelva el producto escalar de los mismos. Esta funci on tambi en se puede hacer sin utilizar bucles, como vimos en el tutorial. Se supondr a que los dos vectores tienen la misma dimensi on.

3.3.

Funciones que llaman a funciones con argumentos vectores

Del mismo modo que en el ejemplo 1.6 estudiamos una funci on que llamaba a otra funci on, en este ejemplo vemos una funci on que recibe un vector y llama a otra funci on que recibe un vector, la que acabamos de estudiar, ud3 fmedia. La sintaxis no ofrece ninguna dicultad.
% ud3_fvarianza.m % ud3_fvarianza(v) recibe un vector v y % devuelve la varianza de los valores contenidos en el vector v % Se llama a una funci on que recibe un vector (ud3_fmedia) function var=ud3_fvarianza(v) suma2=0; m=ud3_fmedia(v); n=length(v); i=1; while i<=n suma2=suma2+(v(i)-m)2; i=i+1; end var=suma2/(n-1);

De esta funci on no haremos ning un ejercicio espec co, simplemente probar la funci on para 1 diferentes vectores, comprobando el signicado del concepto varianza . Tendremos ocasi on de hacer abundantes ejemplos m as adelante. Ejercicio 3.6
Prueba la funci on ud3 fvarianza.m para diferentes vectores.
Es una medida de como de semejantes son los elementos de un vector. Si son similares, la varianza es peque na y si son muy diferentes, la varianza ser a grande.
1

P ag. 66

UNIDAD DIDACTICA 3. VECTORES

3.4.

C alculo de extremos

Los algoritmos de b usqueda de extremos son fundamentales en este curso y el m as b asico de todos ellos es el de encontrar el m aximo de una serie o vector. Para ello, se supone que el m aximo es el primero inicializando con ese valor una variable maxi que ser a la que almacene el m aximo al nal. A continuaci on se van barriendo los dem as elementos y en el momento en que encontramos un valor mayor que el que tenemos como referencia, maxi, asignamos a maxi ese valor.
% ud3_fmaximo.m % ud3_fmaximo(v) recibe un vector v y devuelve % la mayor de sus componentes % El algoritmo de busqueda de maximo es fundamental en el curso. function maxi=ud3_fmaximo(v) n=length(v); maxi=v(1); i=2; while i<=n if v(i)>maxi maxi=v(i); end i=i+1; end

Es importante, muy importante, entender todos los detalles de este ejemplo. MATLAB dispone de una funci on que realiza esta misma tarea, max, pero ello no es o bice para estudiar el algoritmo, el cual es fundamental. Los ejercicios correspondientes a este ejemplo son especialmente interesantes reejando la importancia del algoritmo explicado. Ejercicio 3.7
Prueba la funci on ud3 fmaximo.m para diferentes vectores.

Ejercicio 3.8
Crea una funci on que reciba un vector y devuelva el m nimo de los elementos del vector.

Ejercicio 3.9
Crea una funci on que reciba un vector de n umeros naturales y devuelva el n umero de elementos del vector que sean m ultiplos de tres.

Ejercicio 3.10
Crea una funci on que reciba un vector v , cambie de signo todos los elementos del vector, calcule el m aximo del nuevo vector y lo devuelva cambiado de signo. Qu e valor has obtenido?

Ejercicio 3.11
Crea una funci on que reciba un vector y calcule la media de los elementos positivos del vector. En lugar de sumar todos los elementos, tendr as que comprobar si un elemento es positivo o no antes de sumarlo.

Ejercicio 3.12
Crea una funci on que reciba un vector de n umeros naturales y utilizando la funci on ud2 f esprimo, devuelva el n umero de elementos del vector que son primos.

P ag. 67

Lenguajes de Programaci on: Gu a ECTS Ejercicio 3.13


Idem sin if.

Ejercicio 3.14
Crea una funci on que reciba un vector y que devuelva 1 si todos los elementos del vector son positivos y 0 en caso contrario.

Ejercicio 3.15
Crea una funci on que reciba un vector de n umeros naturales y utilizando la funci on ud2 f esprimo y sin utilizar if devuelva 1 si todos los elementos del vector son primos y 0 en caso contrario.

Ejercicio 3.16
Codica una funci on que reciba un vector de naturales v y devuelva el primer n umero primo que aparezca en el vector. Caso de que no haya ninguno, devolver a 0. Por ejemplo, si v = (9, 14, 11, 7, 12), la funci on devolver a 11.

Ejercicio 3.17
Crea una funci on que reciba un vector v y devuelva el m nimo de las diferencias en valor absoluto entre un elemento de v y la media de v . Por ejemplo, si v = [3 2 1 7], la media vale 3.25 y la diferencia m nima es 3 3.25 = 0.25.

Ejercicio 3.18
Crea una funci on que reciba un vector v y devuelva el valor del elemento de v que est e m as cerca de la media. Por ejemplo, si v = [3 2 1 7], la media vale 3.25 y el elemento m as proximo a la media es 3.

Ejercicio 3.19
Crea una funci on que reciba un vector v y devuelva el ndice del elemento de v que est e m as cerca de la media. Por ejemplo, si v = [3 2 1 7], la media vale 3.25 y el elemento m as proximo a la media es el 1. Cambiad de orden los elementos en este ejemplo para probar el c odigo y comprobar que funciona en todas las circunstancias.

Ejercicio 3.20
Crea una funci on que reciba un vector v y devuelva el m nimo de las diferencias entre un elemento de v y la media de v . Por ejemplo, si v = [3 2 1 7], la media vale 3.25 y la diferencia m nima es 1-3.25=-2.25.

Ejercicio 3.21
Crea una funci on que reciba un vector v y devuelva el ndice del elemento en el que se d e el m nimo de las diferencias entre un elemento de v y la media de v . Por ejemplo, si v = [3 2 1 7], la media vale 3.25 y la diferencia m nima es 1-3.25=-2.25. El ndice del elemento cuyo valor es 1 es 3, pues ocupa la tercera posici on en el vector.

Ejercicio 3.22
Qu e valor devuelve la siguiente funci on (v es un vector de n umeros naturales)?

P ag. 68

UNIDAD DIDACTICA 3. VECTORES

function y=ud3_fprueba(v) n=length(v); i=1; y=v(1); while i<=n if ud2_fesprimo(i)==1 & v(i)>y y=v(i); end i=i+1; end

Ejercicio 3.23
(Para valientes) Crea una funci on que reciba un vector de naturales y devuelva 1 si todos los elementos son primos y 0 en caso contrario, sin usar if.

3.5.

C alculo de posici on de extremos

A veces no interesa tanto el valor del m aximo como su posici on en el vector. En esta funci on se juega con esa idea, de tal modo que se guarda posici on cuando se supera la posici on de referencia inicial (la primera). Es un algoritmo muy interesante y esencialmente m as complicado y dif cil de entender que el anterior.
% ud3_fimax.m % ud3_fimax(v) recibe un vector v y devuelve % la posicion de la mayor de sus componentes function imax=ud3_fimax(v) n=length(v); imax=1; % Tomamos como maximo el primer elemento i=2; while i<=n if v(imax)<v(i) % Si encontramos un elemento mayor imax=i; % actualizamos el valor de la posicion end i=i+1; end % Al final imax contiene la posici on de la mayor de las componentes

Los ejercicios correspondientes a este ejemplo son tambi en bastante interesantes. Ejercicio 3.24
Prueba la funci on ud3 max.m para diferentes vectores.

Ejercicio 3.25
Crea una funci on que reciba un vector de naturales y devuelva el ndice del primer n umero primo que aparezca en el vector. En caso de que no haya ninguno, devolver a 0.

Ejercicio 3.26
Crea una funci on que reciba un vector de naturales y devuelva el ndice del mayor primo que aparezca en el vector. En caso de que no haya ninguno, devolver a 0.

Ejercicio 3.27 P ag. 69

Lenguajes de Programaci on: Gu a ECTS


La siguiente funci on recibe un vector y deber a devolver la mayor diferencia entre dos t erminos consecutivos (la diferencia de un elemento menos el anterior). Encuentra los errores. function y=ud3_fprueba3(v) n=length(v); y=0; while i<=n if abs(v(i)-v(i-1))>y y=v(i)-(v(i)-1); end end Pru ebala con los vectores (1, 1, 1), (1, 2, 1), (1, 2, 4) y (4, 2, 1) (deber a devolver 0, 1, 2 y -1.

3.6.

Evaluaci on de un polinomio

El ejemplo correspondiente a esta secci on ejemplica el caso de una funci on que recibe escalares y vectores como argumentos de entrada. Se trata de evaluar un polinomio en un punto, devolviendo el valor obtenido. Tiene detalles interesantes que pasamos a comentar. El primero es el de la identicaci on de un polinomio de grado n con un vector de n + 1 componentes y por tanto, dimensi on n + 1. As , si tenemos el siguiente polinomio de grado n la representaci on habitual que de el se hace ser a: a0 + a1 x + a2 x2 + + an1 xn1 + an xn De este modo, este polinomio se identicar a de modo inmediato con el vector a. a = (a0 , a1 , , an1 , an ) Sin embargo, no podemos trasladar esto directamente a MATLAB pues la indexaci on de los vectores siempre empieza por la componente 1. Ello invita a repensar polinomio y vector del siguiente modo: a1 + a2 x + a3 x2 + + an xn1 + an+1 xn Por tanto, el polinomio 2.53.7x2 +0.5x3 se corresponder a con el vector a = (2.5, 0.0, 3.7, 0.5). Como se puede observar, grado 3 pero dimensi on 4. La forma m as directa de construir una funci on que evaluase este polinomio a en un punto x ser a function y=ud3_fevalua0(a,x) n=length(a)-1; y=a(1); i=2; while i<=n+1 y=y+a(i)*x(i-1); i=i+1; end en la cual simplemente vamos incrementando la variable y en el sumando ai xi1 , hasta que i sea n + 1. Para invocar esta funci on desde la l nea de comandos, evaluando el ejemplo anterior en x = 2 tendremos: P ag. 70 a = (a1 , a2 , , an , an+1 )

UNIDAD DIDACTICA 3. VECTORES

>> ud3_fevalua0([2.5 0.0 -3.7 0.5],2) ans = -8.3000 Para comprobar, haremos las siguientes operaciones: >> 2.5+0.0*2-3.7*22+0.5*23 ans = -8.3000 Existe un algoritmo que evita el tener que calcular todas esas potencias ahorrando cierto tiempo. Se llama algoritmo de Horner2 En el algoritmo de Horner, el polinomio escribe del

Figura 3.1: Zoetropo de Horner

siguiente modo: Es como si el polinomio 2.5 3.7x2 +0.5x3 lo escribi esemos como 2.5+ x(0.0+ x(3.7+ x0.5)). Ello conduce a un algoritmo diferente en el que se empieza por el t ermino de grado m as alto y se va hacia abajo despu es. Con ello, en este ejemplo aprendemos a recorrer el vector utilizando un orden distinto al habitual y aprendemos tambi en a desconectar la variable n de la dimensi on del vector, algo que en general os cuesta mucho.
% % % % % % ud3_fevalua.m ud3_fevalua(a,x), recibe un vector a de dimensi on n+1 y un escalar x y devuelve el polinomio a(n+1)xn+...+a(2)x+a(1) evaluado en x, escribiendolo como x(...(x(x a(n+1)+ a(n))+a(n-1))...+a(2))+a(1) En este ejemplo, mostramos como recorrer los elementos de un vector en otro orden y trabajamos con n distinto de la dimension del vector

a1 + x(a2 + x(a3 + x(a4 + + x(an + xan+1 ))))

function y=ud3_fevalua(a,x) n=length(a)-1;


William George Horner (Bristol, 1786, Bath, 1837), matem atico ingl es conocido por haber desarrollado m etodos para resolver ecuaciones polin omicas y sobre todo por ser el inventor del zoetropo(g. 3.1), artilugio que creaba la ilusi on optica de movimiento, y a partir del cual se evolucion o hasta la invenci on del cine.
2

P ag. 71

Lenguajes de Programaci on: Gu a ECTS


y=a(n+1); i=n; while i>=1 y=x*y+a(i); i=i-1; end

Los ejercicios correspondientes a este ejemplo son bastante interesantes. Ejercicio 3.28
Prueba la funci on ud3 fevalua.m.

Ejercicio 3.29
Aproximaci on del seno. Para obtener un valor aproximado del seno de un angulo evaluamos el polinomio de Taylor: 3 5 7 + 3! 5! 7! Usando la funci on ud3 f evalua.m, crea una funci on que reciba un valor de y devuelva el valor del seno de , calculado a partir de la f ormula anterior.

Ejercicio 3.30
La siguiente funci on recibe un vector v y una posici on i y devuelve la diferencia entre el primer y el elemento i- esimo. Es correcta? Podr as hacerla m as eciente? function dif=ud3_fdiferencia(v,pos) n=length(v); i=1; while i<=n if i==pos dif=v(1)-v(i); end i=i+1; end

Pista: No se deber a usar un bucle ni un condicional.

Ejercicio 3.31
Crea una funci on que reciba dos vectores, el primero de los cuales ser an los coecientes de un polinomio p(x). La funci on devolver a 1 si en el segundo vector aparece una ra z de p(x) y 0 en caso contrario. Utiliza ud3 f evalua.m para comprobar si un n umero es ra z del polinomio o no.

Ejercicio 3.32
Crea una funci on que reciba un vector t y un n umero x y evalu e en x el polinomio (x t1 )(x t2 ) . . . (x tn ), donde n es la dimensi on del vector t. Es decir, eval ua en x el vector de coeciente principal 1 cuyas ra ces son los elementos de t.

Ejercicio 3.33 P ag. 72

UNIDAD DIDACTICA 3. VECTORES

Crea una funci on que reciba un vector de naturales v y un natural d y devuelva 1 si todos los elementos de v son divisibles por d y 0 en caso contrario.

Ejercicio 3.34
Crea una funci on que reciba un n umero y un vector y devuelva el n umero de veces que aparece ese n umero en el vector.

Ejercicio 3.35
(Para valientes) Usando la funci on creada en el apartado 3.34, construir una funci on que reciba un vector y devuelva el elemento que se repite m as veces. Por ejemplo, en [0 1 2 1] devolver a 1.

Ejercicio 3.36
(Para valientes) Crea una funci on que reciba y un n umero n y devuelva el valor del seno en aproxim andolo por el polinomio de Taylor en 0 de grado n.

3.7.

Funci on que devuelve un vector

A menudo, la salida de nuestras funciones pueden ser tambi en vectores. En MATLAB, la sintaxis no cambia con respecto a la de una variable escalar convencional. En este ejemplo, adem as ese vector se construye a partir de varios escalares, pues de lo que se trata es de construir un vector con los t erminos de la sucesi on de Fibonacci, la cual ya estudiamos en el ejercicio 2.23.
% ud3_fibo % ud3_fibo(x1,x2,n) devuelve los n primeros % terminos de la sucesion de Fibonacci % x_1=x1, x_2=x2, x_n=x_(n-1)+x_(n-2) % Por primera vez definimos una funcion que % devuelve un vector, y lo construimos con % argumentos de entrada escalares. function v=ud3_fibo(x1,x2,n) v(1)=x1; v(2)=x2; i=3; while i<=n v(i)=v(i-1)+v(i-2); i=i+1; end

Los ejercicios correspondientes a este ejemplo son: Ejercicio 3.37


Prueba la funci on ud3 bo.m.

Ejercicio 3.38
Construye una funci on que reciba un n umero natural n y devuelva un vector v tal que sus componentes sean 1 i vi = 1 + , 1in i Llama desde MATLAB a la funci on. A qu e tienden las componentes del vector resultado?.

Ejercicio 3.39 P ag. 73

Lenguajes de Programaci on: Gu a ECTS


Construye una funci on que reciba un n umero natural n y devuelva un vector formado por los n primeros t erminos de la sucesi on x1 = 2, 456, xi+1 = 2xi , i N Comprobar que converge a 2.

Ejercicio 3.40
Crea una funci on que reciba dos valores, xmin, xmax, y el n umero de tramos n. La funci on calcular a el valor xmax xmin h= , n y devolver a un vector x de n +1 componentes que contenga los puntos entre xmin y xmax separados cada dos una distancia h. As pues, x1 = xmin, x2 = xmin + h, ..., xn+1 = xmin + nh = xmax.

Ejercicio 3.41
(Para valientes) Construye una funci on que reciba un n umero natural y devuelva el vector formado por sus cifras. As , si introducimos 1423, devolver a [1 4 2 3].

Ejercicio 3.42
(Para los m as valientes) Criba de Erat ostenes. La manera m as r apida de obtener todos los n umeros primos menores que un n umero dado n es mediante la Criba de Erat ostenes. El procedimiento es el siguiente: se toman todos los n umeros menores que n y se van eliminando de la lista los m ultiplos de dos, los m ultiplos de tres y as sucesivamente hasta llegar a los m ultiplos de la ra z cuadrada de n.

Ejercicio 3.43
Crea una funci on que reciba un n umero n y devuelva todos los n umeros primos menores que n mediante la Criba de Erat ostenes. Como lista de n umeros, usaremos un vector v de dimensi on 100 que tenga en la posici on i el n umero i y para marcar el n umero como eliminado, pondremos un 0 en dicha posici on. Para mejorarlo, elimina los m ultiplos de los n umeros primos entre 2 y n en lugar de eliminar otese que seg un vamos aplicando la criba de los m ultiplos de todos los n umeros entre 2 y n. N Erat ostenes vamos obteniendo los n umeros primos, as que podemos utilizar la informaci on guardada en el vector para este caso.

Ejercicio 3.44
Determina qu e valor devolver a la siguiente funci on si v = (1, 3, 2, 5, 4). function y=ud3_fprueba2(v) n=length(v); i=1; y=1; while i<=n if v(i)>y y=i; end i=i+1; end

P ag. 74

UNIDAD DIDACTICA 3. VECTORES

3.8.

Funciones que reciben y devuelven vectores

Cuando queramos por ejemplo una funci on que nos devuelva una curva evaluada en una serie de valores estructurados a su vez como un vector, deberemos tener la posibilidad de recibir un vector en la funci on y devolver otro vector. La sintaxis no ofrece ning un problema, pero conceptualmente hay que saber moverse a trav es del vector de partida y generar otro. Vamos a plantear primero un ejemplo sencillo en el que se trata simplemente de codicar una funci on que reciba un vector de abscisas x y devuelva un vector de ordenadas y tal que para cada abscisa xi , la ordenada correspondiente yi sea el m aximo de las funciones seno y coseno evaluadas en xi .
% ud3_fmaxsincos % ud3_fmax_vect(x) recibe un vector x y devuelve el vector % y tal que cada componente de y es el maximo de las % funciones seno y coseno evaluadas en cada componente de x % Primera funci on que recibe un vector y devuelve otro vector % function y=ud3_fmaxsincos(x) n=length(x); i=1; while i<=n if sin(x(i))>cos(x(i)) y(i)=sin(x(i)); else y(i)=cos(x(i)); end i=i+1; end

Para probar esta funci on podemos ejecutar los siguientes comandos desde la ventana de comandos de MATLAB.
>>x=0:0.01:8*pi; >>y=ud3_fmaxsincos(x); >>plot(x,y);

Otra posibilidad sencilla pero tambi en interesante es el de tener una funci on que reciba un vector y uno o varios escalares y devuelva otro vector. Presentamos este ejemplo en el que se trata simplemente de codicar una funci on que reciba un vector x y un escalar a. La funci on devolver a un vector y , tal que la componente yi de ese vector ser a 0 si la correspondiente xi es menor que a y 1 en caso contrario.
% ud3_fmayormenor % ud3_fmayormenor(x,a) recibe un vector x y devuelve el % vector y tal que cada componente de y vale 0 o 1 % dependiendo de que la correspondiente de x sea menor % o mayor o igual que a % function y=ud3_fmenormayor(x,a) n=length(x); i=1; while i<=n if x(i)<a y(i)=0; else y(i)=1; end i=i+1; end

P ag. 75

Lenguajes de Programaci on: Gu a ECTS Presentamos un ejemplo m as que tiene el inter es de que llamamos a una funci on para ir calculando el valor de cada componente del vector resultado. Se trata de codicar una funci on que reciba un vector de naturales u y devolver un vector vprimos tal que cada componente de vprimos vale uno o cero en funci on de que la correspondiente componente de u sea o no prima.
% % % % % ud3_fvprimos ud3_fvprimos(u) recibe un vector de naturales u y devuelve un vector vprimos tal que cada componente de vprimos vale uno o cero dependiendo de que la componente correspodiente de u sea o no prima.

function vprimos=ud3_fvprimos(u) n=length(u); i=1; while i<=n vprimos(i)=ud2_fesprimo(u(i)); i=i+1; end

En algunos casos, se puede utilizar la vectorizaci on de operaciones explicada en el tutorial para evitar uno de los bucles en la funci on, pero en general eso no ser a posible. Los ejercicios correspondientes a este ejemplo son: Ejercicio 3.45
Prueba las funciones ud3 fmaxsincos.m, ud3 fmenormayor.m y ud3 fvprimos.m.

Ejercicio 3.46
2 Crea una funci on que reciba un vector x y devuelva un vector y tal que yi = x2 i log (xi + 1) (se podr a hacer sin while, vectorizando las operaciones).

Ejercicio 3.47
aximo entre la funci on del Crea una funci on similar a la funci on ud3 fmaxsincos.m que calcule el m ejercicio 3.46 y el seno. Dibuja la curva resultado de modo an alogo a como se dibuj o la de dicha funci on.

Ejercicio 3.48
Crea una funci on que reciba un vector x y devuelva un vector y tal que para cada ndice i, yi sea la aproximaci on de sin(xi ) dada por: yi = xi x3 x5 x7 i + i i. 3! 5! 7!

Se llamar a a la funci on del ejercicio 3.29 del modo que convenga. Dibuja con MATLAB el seno y su aproximaci on por la funci on anterior en [/2, /2], con al menos 1000 puntos.

Ejercicio 3.49
Construye una funci on que reciba un vector de naturales, (m1 , m2 , . . . , mn ) y devuelva el vector de los factoriales, (m1 !, m2 !, . . . , mn !). Representa en una gr aca la funci on factorial entre 1 y 10 y la funci on exponencial entre 1 y 10. Para mejorar la gr aca, cambiamos la escala a logar tmica, es decir, aplicamos el logaritmo a cada una de las funciones. Cu al de las dos funciones crece m as r apido?

Ejercicio 3.50 P ag. 76

UNIDAD DIDACTICA 3. VECTORES

Crea una funci on que reciba un vector v y devuelva un vector con los elementos del vector v pero en orden inverso al original.

Ejercicio 3.51
Crea una funci on que reciba un vector x y dos valores a y b, con a < b, y devuelva un vector y que es el original truncado entre a y b.

Ejercicio 3.52
Crea una funci on que reciba un vector y devuelva los datos escalados entre cero y uno. Para ello determinaremos el valor m nimo del vector. Restamos ese valor al vector para que los datos comiencen en cero. Calculamos el m aximo del nuevo vector y dividimos cada elemento del vector por dicho m aximo. Al nal tenemos que obtener un vector de n umeros entre cero y uno, de modo que el menor sea cero y el mayor uno y las diferencias entre dos elementos del vector original y los correspondientes escalado sean proporcionales.

Ejercicio 3.53
(Para valientes) Modica la funci on anterior para que reciba un vector y dos valores a y b y devuelva el vector escalado entre a y b.

3.9.

Construcci on de vectores

A menudo surgen problemas en los que a partir de un vector es necesario construir un nuevo vector que no tiene la misma dimensi on que el original, situaci on esencialmente m as sencilla que ya hemos contemplado en la secci on 3.8. Adem as, al construir este nuevo vector a partir del original, a menudo no sabemos el tama no o dimensi on del vector resultante. La gesti on de la memoria RAM en estos casos requerir a un cierto cuidado en muchos lenguajes de programaci on pero MATLAB lo maneja con mucha simplicidad. As , a medida que vamos deniendo nuevas posiciones del vector, ese vector crece en tama no y la memoria RAM que se necesita para el es gestionada de modo autom atico por MATLAB. Para ilustrar esta idea planteamos un ejemplo muy sencillo pero tambi en muy bonito, y que adem as sugiere innidad de ejercicios muy interesantes, los cuales aparecer an a lo largo del resto del curso. Se trata de una funci on que recibe un vector y devuelve otro vector que contiene u nicamente las componentes positivas del vector original, colocadas en el mismo orden en el que est an en este. Para ir construyendo este segundo vector, de tal modo que cada componente vaya en la posici on correcta, necesitamos un nuevo contador s olo de componentes positivas. A medida que ese contador se va incrementando, vamos colocando en cada posici on el elemento correspondiente. El c odigo completo de este ejemplo es el siguiente:
% ud3_fpositivas % Recibe un vector v y devuelve otro vp con las componentes % positivas de v. Es la primera funcion que recibe un % vector y va construyendo otro de dimensi on distinta % que el original function vp=ud3_fpositivas(v) n=length(v); ip=0; i=1; while i<=n if v(i)>=0 ip=ip+1; vp(ip)=v(i); end i=i+1; end

P ag. 77

Lenguajes de Programaci on: Gu a ECTS Los ejercicios correspondientes a este ejemplo espec camente son los siguientes: Ejercicio 3.54
Prueba ud3 f positivas.m.

Ejercicio 3.55
Crea una funci on que reciba un vector u de n umeros naturales, un natural m y devuelva un vector v que contenga aquellos elementos de u que sean divisores de m. Por ejemplo, si u = (10, 7, 4, 5, 3) y m = 40, el resultado ser a v = (10, 4, 5)

Ejercicio 3.56
Crea una funci on que reciba un vector y devuelva un vector con los n umeros primos que contiene.

Ejercicio 3.57
Crea una funci on que reciba un n umero n y devuelva un vector con los n umeros primos que sean divisores de n.

3.10.

Vectores y bucles anidados

A menudo, es necesario anidar bucles para resolver determinados problemas con vectores. Por ejemplo si tenemos dos vectores de n umeros enteros y queremos saber cuantos elementos comunes tienen (supuestos todos distintos en cada uno de los vectores), tendremos que jar un elemento del primer vector y barrer todos los del segundo mediante un bucle y as sucesivamente con el segundo, tercero, etc., lo que requiere otro bucle exterior a ese.
% ud3_figuales % numero de elementos iguales entre dos vectores. Se % supone que todos los elementos en cada vector son distintos. % primeros bucles anidados con vectores. % function iguales=ud3_figuales(u,v) i=1; iguales=0; m=length(u); n=length(v); while i<=m j=1; while j<=n if u(i)==v(j) iguales=iguales+1; end j=j+1; end i=i+1; end

Los ejercicios correspondientes a este ejemplo, muy interesantes, son: Ejercicio 3.58
Prueba la funci on ud3 guales.

Ejercicio 3.59
Modica la funci on ud3 guales para que funcione con vectores de n umeros reales.

P ag. 78

UNIDAD DIDACTICA 3. VECTORES

Ejercicio 3.60
Construye una funci on que reciba un vector v de naturales y devuelva 1 si tiene dos elementos iguales y 0 en caso contrario.

Ejercicio 3.61
Construye una funci on que reciba un vector v de naturales y devuelva ninguna funci on y por tanto habr a que usar bucles anidados. vi !. No se podr a llamar a

Ejercicio 3.62
(Para valientes) Crea una funci on que reciba un vector de n umeros naturales y sin utilizar la funci on umero de elementos del vector que son primos. ud2 fesprimo, devuelva el n

Ejercicio 3.63
(Para valientes) Crea una funci on que reciba un vector de n umeros naturales y sin utilizar la funci on ud2 fesprimo, devuelva el primer elemento de del vector que sea primo.

Ejercicio 3.64
(Para valientes) Crea una funci on que reciba un vector de n umeros naturales y sin utilizar la funci on a a su vez a la ud2 fesprimo, calcule y devuelva la media de los elementos primos para lo cual llamar funci on ud3 fmedia.

Ejercicio 3.65
(Para valientes) Crea una funci on que reciba un vector de n umeros enteros y devuelva 1 si la suma de dos cualesquiera de sus elementos es igual a un tercero y cero en caso contrario. Por ejemplo, para v = [2, 7, 5] devolver a 1 y para [1, 2, 5] devolver a 0.

Ejercicio 3.66
(Para valientes) Construye una funci on que reciba un vector v de naturales y devuelva el n umero de veces que se repita el que m as veces se repita.

Ejercicio 3.67
(Para valientes) Construye una funci on que reciba un vector v de naturales y devuelva el mayor de los repetidos, sin llamar a ninguna funci on.

Ejercicio 3.68
(Para valientes) Construye una funci on que reciba un vector v de naturales y devuelva el mayor de los repetidos, llamando a ud3 fmaximo

Ejercicio 3.69
(Para valientes) Crea una funci on que reciba un vector x, un entero n y devuelva un vector y tal que para cada ndice i, yi sea la aproximaci on de sin(xi ) dada por un polinomio de Taylor en el 0 de grado n.Se usar a la funci on 3.36. Por ejemplo, si introducimos el vector x = (1.9, 2.5, 2.8) y n = 7, el vector devuelto ser a la el resultado de evaluar el polinomio x3 x5 x7 + . 3! 5! 7! en los puntos (1.9, 2.5, 2.8), o sea devolver a el vector y = (0.9454, 0.5885, 0.3078). El seno toma en esas mismas abscisa los valores (0.9463, 0.5985, 0.3350). Recuerda que en la unidad 2 hay un ejercicio, el 2.14, para calcular el factorial. x

Ejercicio 3.70
(Para valientes) Idem pero la evaluaci on del polinomio en cada valor del vector x se realizar a llamando a la funci on ud3 fevalua.

Ejercicio 3.71
(Para valientes) Idem sin llamar a ninguna funci on.

P ag. 79

Lenguajes de Programaci on: Gu a ECTS

3.11.

Funciones con salidas m ultiples

En esta secci on se presentan funciones que tienen m as de un argumento de salida. Es un tema que no plantea dicultad a los estudiantes y que permite hacer funciones m as interesantes. En m ultiples ocasiones es necesario obtener varios resultados en una misma funci on, para lo cual es necesario pasarlos todos como argumentos de salida. La sintaxis es muy sencilla, simplemente se agrupan todos los argumentos entre corchetes y separados por comas. El ejemplo m as elemental que se nos ha ocurrido es el de resolver una ecuaci on de segundo grado, la cual siempre tendr a 2 soluciones, sean reales, complejas o una ra z doble. MATLAB es capaz de trabajar directamente con complejos pero es un tema al que apenas hemos prestado atenci on y que escapa a los contenidos del curso. Por tanto, propondremos ejemplos de ecuaciones que tengan ra ces reales.
% ud3_fe2grado.m % devuelve las dos soluciones de ax2+bx+c=0 function [x1,x2]=ud4_fe2grado(a,b,c) x1=(-b-sqrt(b*b-4*a*c))/(2*a); x2=(-b+sqrt(b*b-4*a*c))/(2*a);

Para invocar esta funci on desde la l nea de comandos, lo haremos del siguiente modo, por ejemplo: >> [r,s]=ud3_fe2grado(1,-3,2) r = 1 s = 2 Con lo que se asignan a las variables r y s las dos ra ces 1 y 2 de la ecuaci on x2 3x + 2 = 0. Ejercicio 3.72
Copia ud3 f e2grado.m a tu directorio y pru ebala.

Ejercicio 3.73
Crea una funci on que reciba los coecientes de una ecuaci on de segundo grado y devuelva la suma y el producto de las soluciones.

Ejercicio 3.74
Crea una funci on que reciba los coecientes de la ecuaci on ax4 + bx2 + c = 0, que resuelva utilizando 2 y = x llamando para ello a ud3 f e2grado.m, que deshaga el cambio de variable mediante x = y y que devuelva las cuatro soluciones de la ecuaci on original.

Ejercicio 3.75
Modica la funci on ud3 f e2grado.m para que si las ra ces son n umeros imaginarios (el discriminante b2 4ac es negativo) devuelva r1 = 0, r2 = 0 y otra variable error = 1. Si no son n umeros imaginarios devolver a las dos ra ces en r1 y r2 y error = 0.

Ejercicio 3.76 P ag. 80

UNIDAD DIDACTICA 3. VECTORES

Crea una funci on que reciba un vector y devuelva el m aximo y el m nimo de sus elementos, sin usar las funciones min y max.

Ejercicio 3.77
Crea una funci on que reciba un vector y devuelva la posici on del m aximo y del m nimo de sus elementos.

Ejercicio 3.78
Crea una funci on que reciba un vector y devuelva el m aximo, el m nimo y sus posiciones.

Ejercicio 3.79
Crea una funci on que reciba un vector u y devuelva dos vectores up y un con las componentes positivas y negativas del vector u respectivamente, colocadas en el mismo orden.

Ejercicio 3.80
Crea una funci on que reciba un vector u de n umeros naturales y devuelva un vector con los n umeros primos que contiene y otro con los no primos.

Ejercicio 3.81
Crea una funci on que reciba un n umero n y devuelva un vector con los n umeros primos que sean divisores de n.

Ejercicio 3.82
Crea una funci on que reciba un vector v y devuelva un vector w y un n umero error de modo que: 1. Si todos los elementos de v son estrictamente positivos, devolver a w(i) = Ln(v (i)), 1 i n y error = 0. 2. Si alg un elemento es menor o igual que cero, devolver a w = v y error = 1.

Ejercicio 3.83
Crea una funci on que reciba los tres lados de un tri angulo y devuelva en una variable lado, 1 si es equil atero, 2 si es is osceles y 3 si es escaleno y en una variable angulo, 3 si es obtuso, 2 si es rect angulo y 1 si es agudo. (Para valientes) La funci on devolver a 0 en las dos variables si los valores introducidos no forman un tri angulo.

P ag. 81

Lenguajes de Programaci on: Gu a ECTS

P ag. 82

Parte II Gu a ECTS para estudiantes

P ag. 83

Cap tulo 1 Introducci on


Uno de los objetivos de este libro es ser un soporte de la introducci on de la metodolog a basada en los cr editos europeos ECTS1 en la asignatura, aprovechando esta oportunidad para transformar el modo en el que ense namos Programaci on. As , se pasa de un paradigma con una evaluaci on que obtiene informaci on u nicamente de un examen nal, a una evaluaci on basada completamente en los procesos, incorporada a los mismos y mucho m as rica. En esta parte del libro se pretende documentar con todo detalle esta metodolog a de evaluaci on, para que el estudiante la conozca y se ubique en la misma. Con estos cambios pretendemos mantener al estudiante activo a lo largo de todo el curso, proponi endole mecanismos de enganche a la asignatura de modo continuo, tratando, como dice Stephen Ball en la cita que nos ha inspirado, de mantener a todos los alumnos trabajando, comprometidos y con la sensaci on de que no van a fracasar. En esta parte del libro detallamos los objetivos y los relacionamos con las actividades realizadas a lo largo del mismo, indicando en qu e medida creemos que dichas actividades contribuyen a la consecuci on de los objetivos, e indicando tambi en el tiempo que estimamos es necesario para realizar dichas actividades. Tambi en destacamos los recursos que creemos son necesarios para realizar dichas actividades, para nalmente reexionar sobre el tipo de evaluaci on que creemos adecuado para un curso de este tipo, discutiendo sus ventajas e inconvenientes, y razonando sobre el esfuerzo que es necesario para realizarla. Esperamos que esta gu a resulte u til y que cumpla los objetivos que antes citamos y que nos han llevado a escribirla. Ahora es el momento de que los estudiantes comprueben si ha sido as y de que sugieran las mejoras que consideren convenientes.

Los cr editos LRU, los que se asocian a cada asignatura al hacer la matr cula, se establecen u nicamente en funci on del n umero de sesiones presenciales; por cada 10 horas de clase, un cr edito. Los cr editos ECTS contabilizan no s olo las horas de clase sino que intentan denir el peso de la asignatura teniendo en cuenta el esfuerzo en tiempo que le cuesta aprobarla a un alumno medio. Este esfuerzo signica no solo asistir a las clases sino tambi en un trabajo bien individual bien con los compa neros realizado fuera de las horas de clase.

P ag. 85

Lenguajes de Programaci on: Gu a ECTS

P ag. 86

Cap tulo 2 Datos generales


2.1.
2.1.1.
Primero

Temporalidad y car acter


Ciclo

2.1.2.
Primero

Curso

2.1.3.
Primero

Cuatrimestre

2.1.4.

Car acter

Obligatoria

2.2.

Cr editos LRU

4.5 siendo 1.5 te oricos y 3.0 pr acticos

2.3.

Departamento

Departamento de Ense nanzas B asicas de la Ingenier a Naval

2.4.

Profesores

Antonio Souto Iglesias, antonio.souto@upm.es Leo Gonz alez Guti errez, leo.gonzalez@upm.es Alicia Cant on Pire, alicia.canton@upm.es P ag. 87

Lenguajes de Programaci on: Gu a ECTS

2.5.

Cr editos ECTS
Horas presenciales Teor a Pr acticas Horas no presenciales Pr acticas Examen Total Horas/semana Total horas 1 15 2 30 Total 45 Total horas 41 4 Total 45 90

P ag. 88

Cap tulo 3 Objetivos


3.1. General

Para contextualizar la denici on de objetivos, algunas de las titulaciones disponen de su libro blanco correspondiente, en el cual se especican los perles profesionales a los que se orienta la titulaci on. En el caso de la titulaci on INO esto no ha sido as hasta bien entrado 2005, momento en que apareci on un libro blanco orientado a las nuevas titulaciones post-Bolonia1 . Aunque en el estudio de las competencias transversales, no se presta una atenci on particular en ese libro a la Inform atica, esta es, junto con los idiomas modernos, se nalada como la materia b asica m as importante, para lo cual se recurri o a un signicativo n umero de encuestas entre profesionales en activo. De hecho en el plan de estudios gen erico que se elabora en ese libro blanco, se da una importancia equivalente a la formaci on obligatoria en Inform atica a la que corresponde a este curso de Lenguajes de Programaci on. Hablaremos as primero de unos objetivos generales de la asignatura, a trav es de una categorizaci on de los mismos en conocimientos, capacidades y actitudes. A partir de estos objetivos generales dise naremos una serie de actividades las cuales agruparemos en una secuencia de unidades did acticas, que cubrir an unos objetivos espec cos, y precisar an de unos determinados recursos.

3.2.

Objetivos generales: descripci on

Como hemos comentado, agrupamos los objetivos generales en 3 categor as: 1. Conocimientos. Cubren los aspectos m as te oricos de la formaci on. 2. Capacidades. Referidos a aplicaciones, cuestiones pr acticas, habilidades.... muy en l nea con el concepto de competencias. 3. Actitudes. Se reeren a determinados valores o motivaciones que se trate de generar o potenciar en el estudiante. Conocimientos:
1

http://www.aneca.es/activin/docs/libroblanco naval def.pdf

P ag. 89

Lenguajes de Programaci on: Gu a ECTS CoA. Adquirir una formaci on elemental en Inform atica conociendo el ordenador como una herramienta de trabajo y conocer de modo b asico su estructura y funcionamiento. CoB. Conocer los principales tipos de datos y estructuras de control de la programaci on declarativa y aprender su sintaxis en un lenguaje de programaci on concreto. Hemos elegido el lenguaje script de MATLAB porque es una herramienta est andar en Ingenier a y porque, al tener una sintaxis sencilla, permite profundizar en los elementos de programaci on. Capacidades: Realizar un programa de ordenador es un proceso que consta de 4 fases: especicaci on, dise no, codicaci on, validaci on/vericaci on. La primera, la especicaci on, consiste en denir las caracter sticas del sofware que se va a programar. Aunque es una etapa importante queda fuera del contenido de esta asignatura, al ser muy dependiente del tipo de problemas industriales o de gesti on a resolver, y no proceder su estudio en un curso de introducci on a la Prgramaci on. Las capacidades que queremos desarrollar son las necesarias para las otras tres etapas: CpA. Codicaci on. El alumno debe ser capaz de traducir algoritmos sencillos a c odigo MATLAB. Este es un requisito normal en el sentido de que es un objetivo que necesariamente deber a alcanzarse para superar la asignatura. Ser an en general c odigos no muy complejos, de una, dos o tres acciones a lo sumo. CpB. Dise no. El alumno debe ser capaz de analizar un problema sencillo y elaborar un algoritmo que lo resuelva. Este es un requisito innovador en el sentido de que lo consideramos importante, pero no esencial para superar la asignatura. CpC. Validaci on. El alumno debe ser capaz de encontrar sus errores, entenderlos y corregirlos. Este es un requisito esperado: no se eval ua directamente, pero est a impl cito en la evaluaci on de los objetivos CpA y CpB. Actitudes: AcA. Conseguir una motivaci on en el alumno que le impulse a profundizar en la Inform atica como herramienta necesaria para su futuro acad emico y profesional. AcB. Trabajo en equipo. Hoy en d a casi ning un proyecto involucra a un u nico ingeniero. Por tanto, consideramos que saber trabajar en equipo es imprescindible y que se deben ir formando las actitudes necesarias a lo largo de todos los estudios. AcC. Actitud positiva ante los problemas. El afan de superaci on y la perseverancia son actitudes necesarias para un buen ingeniero. AcD. Mejora continua. El aprendizaje, sobre todo el que perdura, no es labor de un d a ni de una semana, sino que requiere constancia y esfuerzo. AcE. Autocr tica. El alumno debe ser capaz de reexionar sobre sus capacidades, esfuerzo y proceso de aprendizaje para determinar en qu e punto est a y qu e acciones debe tomar en el futuro. P ag. 90

CAP ITULO 3. OBJETIVOS

3.3.

Prerrequisitos

LP es una asignatura del primer cuatrimestre del primer a no, y por tanto los prerrequisitos se reeren u nicamente a que el estudiante debe haber cursado y aprobado los estudios de educaci on secundaria. Por tanto, se le supone una formaci on b asica en Matem aticas. Adem as se puede suponer que est an cursando simult aneamente las asignaturas de C alculo y Algebra I, y por tanto manejan con cierta soltura sucesiones, vectores y matrices.

3.4.

Otras asignaturas de las que LP es prerrequisito

En el plan de estudios vigente2 no se contempla la existencia de prerrequisitos en el sentido estricto. Sin embargo, es conveniente haber cursado y superado LP antes de matricularse de la asignatura M etodos Num ericos3 , y de las asignaturas optativas o de libre conguraci on Leguajes de Programaci on II y Complementos de Inform atica. Adem as, los lenguajes de programaci on son u tiles para muchas otras asignaturas, que pueden incluir trabajos para los que se necesite MATLAB y algunos elementos de Programaci on.

Plan 2002 de Ingeniero Naval y Oce anico de la Universidad Polit ecnica de Madrid En realidad esto esta impl cito en la estructura del plan de estudios vigente, dado que no es posible matricularse de ninguna asignatura de cuarto a no si no se han aprobado todas las del primer a no
3

P ag. 91

Lenguajes de Programaci on: Gu a ECTS

P ag. 92

Cap tulo 4 Programa y Metodolog a


En esta secci on describiremos todas las actividades que creemos necesarias para conseguir los objetivos descritos en 3.2. Agruparemos estas actividades en una serie de unidades did acticas para facilitar su descripci on, organizaci on y temporalizaci on.

4.1.
4.1.1.

M etodos docentes
Parte te orica de las sesiones DHOf

Todas las sesiones DHOf1 se impartir an en el Centro de C alculo (CC). Durante la parte de exposici on de teor a se introducir a cada uno de los temas ayud andose de ejemplos (ver parte I), utilizando la pizarra electr onica que proporciona la interfaz tablet del port atil. Adem as, se comentar an los problemas observados durante la parte m as pr actica de la clase y c omo evitarlos. Asimismo, al principio de cada sesi on habr a un recordatorio de las sesiones previas utilizando el archivo que para cada grupo se guarda en el tablet PC. El objetivo de las clase te oricas es exponer los conceptos b asicos y errores frecuentes a todos los alumnos a la vez, tratando de evitar repetirlos a cada uno por separado.

4.1.2.

Parte pr actica de las sesiones DHOf

La parte pr actica consistir a en la realizaci on de ejercicios en el CC (ver parte I), con la supervisi on de uno o varios profesores, dependiendo del n umero de alumnos y de la disponibilidad de docentes. Esta parte pr actica, de acuerdo con la distribuci on de cr editos, cubrir a dos terceras partes de la asignatura. Los alumnos se organizar an en parejas para que empleen la t ecnica de pair programming de la metodolog a extreme programming. En cada pareja de programadores/alumnos, uno de ellos dise na el programa y el otro lo codica (escribe el c odigo) siguiendo las instrucciones del anterior, mientras trata de encontrar los fallos que pueda tener el dise no. Al terminar cada ejercicio se intercambian los papeles. El objetivo del pair programming es que el conocimiento est e igualmente repartido entre los miembros de la pareja, lo que es muy conveniente durante el examen individual y en general, al nal del proceso de aprendizaje planteado en LP. Se potenciar a el que los alumnos deendan sus propios c odigos proyectando los mismos en
1

DHOf por dentro del horario ocial

P ag. 93

Lenguajes de Programaci on: Gu a ECTS la pizarra electr onica. Ello es posible porque la carpeta Mis Documentos de cada m aquina est a compartida, y puede ser accedida desde el PC del profesor, proyectando desde este, el ejercicio correspondiente.

4.2.
4.2.1.

Temario y estimaci on del tiempo de estudio


Temario

Unidad 0. Introducci on a MATLAB. Introducci on al curso. Conceptos b asicos del entorno MATLAB. Operaciones elementales. Variables. Actividades: Sesiones en el CC (4h). Repaso y estudio I2 FHOf3 (2h). Unidad 1. Funciones. Denici on y uso de las funciones. Variables de entrada y salida. Condicionales. Funciones que llaman a otras funciones. Actividades: Sesiones en el CC (8h). Repaso y estudio I (0.5h). Completar los ejercicios que no ha dado tiempo en clase (I o G4 ) (2h aprox.). Unidad 2. Estructuras de Control. Bucles. Contadores. Bucles anidados. Actividades: Sesiones en el CC (11h). Repaso y estudio I (0.5h). Completar los ejercicios que no ha dado tiempo en clase (I o G) (3h aprox.). Unidad 3. Vectores. Denici on de vector. Recorrido de un vector. Selecci on de ndices. Funciones con vectores. Actividades: Sesiones en el CC (9h). Repaso y estudio I (0.5h). Completar los ejercicios que no ha dado tiempo en clase (I o G) (4h aprox.).
2 3

I por individual FHOf por fuera del horario ocial 4 G por en grupo

P ag. 94

CAP ITULO 4. PROGRAMA Y METODOLOG IA

Actividades: Sesiones en el CC (7h). Repaso y estudio I (0.5h). Completar los ejercicios que no ha dado tiempo en clase (I o G) (5h aprox.).

4.2.2.

Otras actividades

Presentaci on del curso. (1h) Prueba de control por parejas. (2 o 3 horas) Repaso en la u ltima semana. (3h en el CC + 2h (I o G) para completar ejercicios) Examen nal. (2h de examen + 10h de repaso)

P ag. 95

Lenguajes de Programaci on: Gu a ECTS

P ag. 96

Cap tulo 5 Recursos


5.1. Gu a

El m as importante de todos los recursos es esta Gu a Docente. En ella, adem as de denir el contexto del curso de modo preciso se muestran los ejemplos y ejercicios correspondientes al mismo en la parte I. Tambi en se disponen de ex amenes propuestos en otras convocatorias, el tutorial de MATLAB y diversa documentaci on importante para el alumno.

5.2.

Tutor as
http://www.etsin.upm.es/

Para los horarios y ubicaci on de las tutor as pod eis consultar la p agina web de la escuela:

Independientemente de esas horas, y dado que los tres profesores tienen dedicaci on completa, no tendr an inconveniente en resolver dudas a cualquier hora, salvo que tuviesen alguna urgencia puntual o no estuviesen en sus despachos. Algunas de estas tutor as podr an ser en algunos casos en el CC, lo cual se anunciar a a lo largo del curso en clase, en la p agina web de la asignatura (5.4) o v a e-mail.

5.3.

Tutor as virtuales

Con la cha que han rellenado los estudiantes al principio de curso se formar a una lista de correo para informarles de asuntos relativos a la asignatura (publicaci on de notas, sesiones especiales de pr acticas, ...). Los estudiantes pueden consultar sus dudas mand andolas a las direcciones de correo de los profesores, antonio.souto@upm.es, alicia.canton@upm.es, leo.gonzalez@upm.es.

5.4.

P agina web - Plataforma de B-learning

La asignatura tiene vida paralela en la plataforma de B-learning del Gabinete de tele-educaci on de la UPM (GATE). El enlace web para la misma es:
http://moodle.upm.es/titulaciones/ociales/course/view.php?id=629

aunque se puede entrar a trav es de Polit ecnica Virtual en la web de la UPM. El curso 20072008 fue la primera edici on de esta plataforma, la cual sustituye y supera a la p agina web de la P ag. 97

Lenguajes de Programaci on: Gu a ECTS asignatura. En ella se ir a colgando toda la informaci on relativa a la asignatura, as como calicaciones(la publicaci on de las mismas ser a anunciada por correo electr onico), documentaci on, ejercicios y se utilizar a como tabl on de anuncios. Se dispone adem as de un foro, la participaci on en el cual forma parte del item Participaci on de la evaluaci on de la asignatura. Para acceder a esta plataforma necesitais disponer de una direcci on de correo electr onico de la UPM, la cual os es facilitada al matricularos.

5.5.

Copias

En copias estar a disponible una versi on completa encuadernada de esta gu a docente.

5.6.

Centro de C alculo

Los estudiantes pueden y deben usar el CC para estudiar LP, aunque han de respetar las normas(ver ap endice B). De vez en cuando, organizaremos sesiones de tutor as all (sobre todo hacia el nal del curso), para que el estudiante pregunte dudas mientras estudia. Para poder usar el CC hay que estar dado de alta como usuario (hablar con el personal del CC para este tr amite y ver las normas en el ap endice B).

5.7.

Bibliograf a

Los siguientes libros, de los cuales damos un peque no comentario, los pod eis encontrar en la biblioteca de la ETSIN: 1. T tulo: MATLAB. Una introducci on con ejemplos pr acticos. Autores: Amos Gilat Editorial: Revert e A no: 2006 Excelente texto introductorio a MATLAB y a la Programaci on con MATLAB. Creemos que es el que mejor trata la parte de Programaci on, aunque el orden de los temas no es el mismo que el que seguimos en el curso. No obstante hay que tener en cuenta que en el libro se tratan comandos de MATLAB que no permitimos en clase, por ser muy espec cos y no estar disponibles en general en los lenguajes de programaci on. 2. T tulo: Aprenda MATLAB 5.3 como si estuviera en primero. Autores: Javier Garc a de Jal on, Jos e Ignacio Rodr guez, Alfonso Braz alez Editorial: Escuela Superior de Ingenieros Industriales A no: 2001 Gu a para aprender MATLAB paso a paso. Est a pensada para estudiantes de primero y se puede seguir con facilidad. Aunque la parte de Programaci on es demasiado escueta, es interesante tenerla para utilizarla como ayuda cuando utilicemos el MATLAB para otras asignaturas. Se puede comprar en reprograf a de la ETSII o descargar de P ag. 98

CAP ITULO 5. RECURSOS

http://mat21.etsii.upm.es/ayudainf/aprendainf/MATLAB53/matlab53.pdf

3. T tulo: MATLAB, edici on de estudiante. Versi on 4 gu a de usuario. Autores: The Math Works inc. Editorial: Prentice Hall A no: 1998 Manual de referencia para la versi on de estudiante. Recoge todos los aspectos del programa e incluye ejemplos para cada uno. Es muy escueta en la parte de Programaci on. 4. T tulo: MATLAB guide Autores: Desmond J. Higham, Nicolas J. Higham Editorial: Siam A no: 2000 Otra gu a de referencia de MATLAB. M as t ecnica que las anteriores y un poco m as extensa en el apartado de Programaci on. 5. T tulo: Programing in MATLAB Autor: Marc E. Herniter Editorial: Thomson learning A no: 2001 Gu a de programaci on con MATLAB. Contiene numerosos ejemplos y ejercicios. Es muy t ecnica, por lo que es m as recomendable para profundizar en lo aprendido que como libro de texto. 6. T tulo: Getting Started with MATLAB Autor: Rudra Pratap Editorial: Oxford University Press A no: 2002 Comentario: Otra gu a de MATLAB. La parte de Programaci on est a m as detallada que en algunas de las otras gu as y contiene algunos ejercicios. 7. T tulo: Algoritmos en C++ Autor: Robert Sedgewick Editorial: Addison-Wesley Iberoamericana A no: 1995 Comentario: Otra gu a de MATLAB. La parte de Programaci on est a m as detallada que en algunas de las otras gu as y contiene algunos ejercicios.

P ag. 99

Lenguajes de Programaci on: Gu a ECTS

P ag. 100

Cap tulo 6 Evaluaci on


6.1. General

La parte de evaluaci on del curso tiene como objetivo detectar si el estudiante ha conseguido los objetivos que se persiguen con la asignatura, los cuales hemos enumerado en el cap tulo 3 de esta gu a. En LP tratamos tambi en que las propias actividades de evaluaci on contribuyan en s mismas al proceso formativo. Para ello, el alumno podr a elegir entre dos modelos de evaluaci on, el tradicional, que se ha venido utilizando hasta ahora, y el modelo ECTS, que se deber a implantar en Europa en cumplimiento de la declaraci on de Bolonia y de lo que esta ha implicado en la conguraci on del Espacio Europeo de la Educaci on Superior. Por otro lado, se ha establecido el Premio SENER a la mejor progresi on durante el desarrollo de la asignatura LP con el objeto de motivar a los estudiantes que llegan a la titulaci on con unas notas medias de la educaci on secundaria bajas, ofreci endoles la oportunidad de que una buena progresi on respecto a la posici on de partida suponga una recompensa econ omica, con repercusi on p ublica y curricular. Las bases de este premio est an descritas en el ap endice D.

6.2.

Evaluaci on tradicional

Consistir a en un examen nal en el que se tratar a de evaluar en qu e grado se han alcanzado los objetivos descritos en 3.2. Los objetivos y estructura del examen est an descritos en 6.4. Dado el car acter eminentemente pr actico de la asignatura (3 de los 4.5 cr editos de LP son pr acticos) y el cambio importante que para un estudiante de primer a no supone su entrada en la universidad, creemos que es necesario que sigan el curso de modo regular. En la planicaci on que se ha hecho del curso no se ha considerado adecuado establecer sesiones te oricas y pr acticas espec cas, conviviendo ambos aspectos en casi todas ellas. Debido a ello, el criterio de superaci on de las pr acticas ser a simplemente asistir a dos tercios (3/4.5) de las clases, para lo cual llevaremos un registro de asistencia. En las convocatorias extraordinarias de Junio y Septiembre solo se podr a optar a la evaluaci on tradicional.

6.3.

Evaluaci on ECTS

La calicaci on ECTS est a desglosada a partir de la evaluaci on de las siguientes actividades: P ag. 101

Lenguajes de Programaci on: Gu a ECTS 1. Trabajo en equipo: 35 %. En algunas de las sesiones se propondr a una prueba-control a realizar en pareja. Estos controles pretenden evaluar la din amica del grupo (AcB) y que el alumno compruebe la evoluci on de los conocimientos (AcD). Los controles consistir an en la realizaci on de unos ejercicios similares a los de las hojas del tema en curso (CoA, CoB, CpA y CpC). Los controles se deber an hacer en pareja, no pudiendo hacerlo en caso de que falte uno de sus integrantes. Estos ex amenes no ser an anunciados. Adem as, no se permitir a el acceso al aula a los estudiantes que lleguen m as de 5 minutos tarde. 2. Examen nal consistente en la resoluci on de una serie de problemas pr acticos: 35 %. Los objetivos y estructura del examen est an descritos en 6.4. 3. Participaci on activa en las clases: 15 %. El profesor valorar a la participaci on (AcA) y la actitud positiva ante los problemas (AcC) a partir de la participaci on de los alumnos en clase: preguntas, salir a la pizarra, comentarios, etc. Se valorar a que el alumno sea activo con hasta cinco puntos, es decir, que salga a explicar sus programas, comente los de los dem as, pregunte lo que no quede claro, etc, y con otros cinco puntos la calidad de esa participaci on, es decir, que los programas sean interesantes y las explicaciones claras, que las preguntas sean interesantes y demuestren saber de lo que se est a hablando, etc. Para que a los profesores les sea m as f acil la evaluaci on de la participaci on, los alumnos deber a entregar una fotograf a con su nombre y DNI en el reverso al comenzar el curso, junto con la cha con el resto de sus datos personales y decisi on de optar al premio SENER. Se realizar an y publicar an dos calicaciones, una cuando haya transcurrido la mitad del curso con efectos informativos, y la otra cuando haya transcurrido el curso completo. La nota ser a la correspondiente a la valoraci on nal. 4. Otras actividades: 10 %. Las actividades que forman parte de este apartado corresponden a la valoraci on de las intervenciones en el foro de la plataforma de B-learning (ver secc. 5.4), las cuales permitir an valor objetivos relativos a conocimientos (CoB) y los objetivos actitudinales de actitud positiva y de mejora continua (AcC, AcD). Los comentarios y sugerencias sobre esta propia Gu a as como la correcci on de erratas de la misma se considera parte de este item de evaluaci on. Adem as, y m as importante, se propondr an actividades para realizar fuera de clase durante el curso, como por ejemplo que el estudiante proponga ejercicios similares a los del curso, los cuales ser an resueltos o al menos intentados por parte del compa nero de grupo. Con ello se pretenden evaluar los objetivos de capacidades relativos a dise no(CpB), codicaci on(CpA) y validaci on(CpC). Finalmente, dentro de este item se considerar a tambi en el llevar al d a la hoja de control y contabilizaci on de tiempo y esfuerzo (objetivo AcD), la cual adem as ayuda al alumno a establecer si est a realizando el esfuerzo recomendado por los profesores para seguir el curso (objetivo AcE). 5. Realizaci on de la encuesta sobre la asignatura (3 %) y participaci on en el debate posterior (2 %). Esta encuesta ser a realizada una vez publicadas las notas de la asignatura. En el debate se mostrar an los resultados de la encuesta y se pedir a la opini on de los alumnos. P ag. 102

CAP ITULO 6. EVALUACION

Estas dos notas se conservar an para las convocatorias de junio y septiembre a los que hayan suspendido. Se valorar a de este modo tambi en la la actitud positiva ante los problemas (AcC), la capacidad de autocr tica (AcE), as como la de mejora continua (AcD). En caso de que un alumno complete los requisitos que le habilitan para seguir los dos m etodos de evaluaci on (tradicional y ECTS), su nota nal ser a la mayor de las dos calicaciones.

6.4.
6.4.1.

El examen
Tipo de examen

El examen consistir a en la codicaci on en el Centro de C alculo de una serie de ejercicios similares a los propuestos de modo continuo durante el curso y similares tambi en a los que forman los ex amenes por grupos. Se facilitan ejemplos de enunciados en el ap endice A. Estos ex amenes se realizar an en clase en la u ltima parte del curso. El c odigo a entregar no debe tener errores y debe realizar las tareas correspondientes al correspondiente ejercicio. Se nombrar an los c odigos correspondientes a cada ejercicio como f1.m, f2.m etc.... Las normas para escribir los c odigos son las habituales con la que se trabaja en el curso y est an explicadas en la secci on 6.4.3.

6.4.2.

Criterios de evaluaci on

El examen individual tendr a ejercicios diversos, con los cuales evaluar la consecuci on de los tipos de objetivos CpA y CpB. As , habr a ejercicios en los cuales se detallar a un algoritmo que el alumno tendr a que codicar en MATLAB. En estos ejercicios no se esperan capacidades innovadoras y su puntuaci on acumulada ser a suciente para aprobar el examen. Algunos de estos algoritmos tendr an cierta complejidad. Tambi en habr a ejercicios un poco m as abiertos en los que el propio estudiante tenga que pensar y dise nar los algoritmos. Finalmente, reconocemos que de manera impl cita estamos valorando CpC. Por ello, cuando proceda, proporcionaremos al alumno una serie de ejemplos que funcionar an como bater a de pruebas del c odigo.

6.4.3.

Normas del examen

Normas para la realizaci on de los ejercicios en los ex amenes.


1. Las funciones se ubicar an en cheros independientes, cuyo nombre coincidir a con el de la funci on a falta por supuesto de la extensi on .m. 2. La funci on del ejercicio 1 se llamar a f 1, la del ejercicio 2 se llamar a f 2, y as sucesivamente. ESTO ES IMPORTANTE!. No se llamar an ni examen1, ni examen f 1, etc... Los nombres han de ser f 1, f 2, etc... 3. El u nico material permitido es un bol grafo. No se permite el uso de ning un dispositivo de almacenamiento, incluidas memorias USB. P ag. 103

Lenguajes de Programaci on: Gu a ECTS 4. Deber a estar escrito en MATLAB. No se permitir a usar funciones propias de MATLAB no estudiadas durante el curso, ni conceptos o estructuras correspondientes a ejemplos y unidades did acticas que todav a no se hayan explicado. No se permitir a el uso de la vectorizaci on de operaciones explicada en el tutorial, ni la multiplicaci on directa de matrices. O sea, todas las operaciones hay que realizarlas siempre componente a componente cuando se trate con vectores. 5. Cuando en el enunciado se exija la utilizaci on de una rutina estudiada en el curso o incluida en el enunciado, esta no podr a ser modicada. Deber a ser usada tal y como est a escrita en los apuntes o en el enunciado. Si crees que necesitas modicarla para poderla utilizar es que lo est as haciendo mal. 6. Las funciones se ubicar an en cheros independientes, cuyo nombre coincidir a con el de la funci on a falta por supuesto de la extensi on .m. La funci on del ejercicio 1 se llamar a f 1, la del ejercicio 2 se llamar a f 2, y as sucesivamente. 7. En las funciones s olo se utilizar an aquellos argumentos de entrada y salida que se especiquen en el enunciado. 8. La primera l nea de cada programa o funci on ser a un comentario con vuestros apellidos, nombres y el n umero de m aquina en la que est ais. 9. Todos los cheros estar an ubicados en la carpeta C : \examenes. 10. Se podr an usar todos los ejemplos (no ejercicios) que se han estudiado en el curso hasta el d a del examen, los cuales puedes encontrar en la carpeta correspondiente. 11. Se podr an crear funciones auxiliares (como una que calcule el factorial por ejemplo), si crees que te pueden simplicar el trabajo 12. Al terminar el examen, se cerrar a la sesi on pero NO se apagar a el ordenador.

6.4.4.

Publicaci on de calicaciones

La publicaci on de calicaciones ser au nicamente online mientras estas calicaciones sean provisionales. Una vez denitivas, se redactar a el acta correspondiente para pasarla a los servicios de Secretar a de la ETSIN. Se dispone en la web de la asignatura (ver 5.4) de una utilidad en la que introduciendo el DNI se puede ver la nota de la u ltima convocatoria. Con ello conseguimos una privacidad relativa pero creemos que suciente.

6.4.5.

Revisi on del examen

En el enunciado de cada examen se anunciar a una fecha aproximada de publicaci on de las notas y un d a y hora para la revisi on de examen. Los estudiantes que deseen revisar su examen deber an comunicarlo, por email o por cualquier otro medio a los profesores. En la revisi on se facilitar a a cada estudiante su examen as como una copia de las soluciones. Durante 60 tendr a a los profesores de LP a su disposici on para responder todas las dudas que considere pertinentes. P ag. 104

CAP ITULO 6. EVALUACION

6.5.

Evaluaci on de los objetivos

La siguiente tabla relaciona los objetivos generales de la asignatura, descritos en la secci on 3.2, con los diferentes apartados de la evaluaci on ECTS descritos en 6.3. Es decir, resume qu e se calica en cada tem de la evaluaci on. Participaci on CoA CoB CpA CpB CpC AcA AcB AcC AcD AcE Examen x x x x x Otras act. x x x x x Grupos x x x x x x x x x x x x x x Encuesta/debate

x x x x

P ag. 105

Lenguajes de Programaci on: Gu a ECTS

P ag. 106

Parte III Ap endices

P ag. 107

Ap endice A Ejemplos de Ex amenes

P ag. 109

Examen nal de Lenguajes de Programaci on. Febrero 2008


Escuela T ecnica Superior de Ingenieros Navales Fecha aproximada de publicaci on de las notas: 29/02/2008 D a y hora de la revisi on: 03/03/2008, 12h30m Tiempo para esta parte : 85 minutos Puntuaci on: 10 puntos.

Normas para la realizaci on de los ejercicios en los ex amenes.


1. Las funciones se ubicar an en cheros independientes, cuyo nombre coincidir a con el de la funci on a falta por supuesto de la extensi on .m. 2. La funci on del ejercicio 1 se llamar a f 1, la del ejercicio 2 se llamar a f 2, y as sucesivamente. ESTO ES IMPORTANTE!. No se llamar an ni examen1, ni examen f 1, etc... Los nombres han de ser f 1, f 2, etc... 3. El u nico material permitido es un bol grafo. No se permite el uso de ning un dispositivo de almacenamiento, incluidas memorias USB. 4. Deber a estar escrito en MATLAB. No se permitir a usar funciones propias de MATLAB no estudiadas durante el curso, ni conceptos o estructuras correspondientes a ejemplos y unidades did acticas que todav a no se hayan explicado. No se permitir a el uso de la vectorizaci on de operaciones explicada en el tutorial, ni la multiplicaci on directa de matrices. O sea, todas las operaciones hay que realizarlas siempre componente a componente cuando se trate con vectores. 5. Cuando en el enunciado se exija la utilizaci on de una rutina estudiada en el curso o incluida en el enunciado, esta no podr a ser modicada. Deber a ser usada tal y como est a escrita en los apuntes o en el enunciado. Si crees que necesitas modicarla para poderla utilizar es que lo est as haciendo mal. 6. Las funciones se ubicar an en cheros independientes, cuyo nombre coincidir a con el de la funci on a falta por supuesto de la extensi on .m. La funci on del ejercicio 1 se llamar a f 1, la del ejercicio 2 se llamar a f 2, y as sucesivamente. 7. En las funciones s olo se utilizar an aquellos argumentos de entrada y salida que se especiquen en el enunciado. 8. La primera l nea de cada programa o funci on ser a un comentario con vuestros apellidos, nombres y el n umero de m aquina en la que est ais. 9. Todos los cheros estar an ubicados en la carpeta C : \examenes. 10. Se podr an usar todos los ejemplos (no ejercicios) que se han estudiado en el curso hasta el d a del examen, los cuales puedes encontrar en la carpeta correspondiente.

11. Se podr an crear funciones auxiliares (como una que calcule el factorial por ejemplo), si crees que te pueden simplicar el trabajo 12. Al terminar el examen, se cerrar a la sesi on pero NO se apagar a el ordenador.

Ejercicios.
1. Crea una funci on que reciba un vector v de n umeros naturales y un natural m y nos devuelva el n umero de elementos de v que son m ultiplos de m. Devolver a adem as el n umero de elementos de v que son m ultiplos de m + 1. Por ejemplo, si v = (7, 6, 15, 8, 5) y m = 2, devolver a 2 y 2, porque el 6 y el 8 son m ultiplos de 2, y el 6 y el 15 son m ultiplos de 3 (2.5 puntos). 2. Construir una funci on que reciba un n umero n y devuelva un vector que contenga a todos los n umeros m agicos menores o iguales que n. Se dene un n umero m agico como aquel que es la suma de todos sus divisores salvo el mismo, por ejemplo el 6, cuyos divisores son 3, 2, 1 y 6 = 3 + 2 + 1, o el 28 = 14 + 7 + 4 + 2 + 1, o el 1, cuyo u nico divisor es el mismo. Por ejemplo, si n = 30, la funci on devolver a el vector [1 6 28] (2.5 puntos). 3. Crea una funci on que reciba un n umero natural n, un n umero real x y devuelva el polinomio de Mc-Laurin de de grado n de la funci on ex , evaluado en x. ex 1 + x + xn x2 x3 + + + 2! 3! n!

Para evaluar el polinomio de Mc-Laurin, se construir a este componente a compoa usar nente y se utilizar a del modo adecuado la funci on ud3 f evalua. No se podr la funci on propia de MATLAB f actorial para hacer el c alculo del factorial. La alternativa es o bien escribir una funci on aparte que calcule el factorial, o bien cualquier otra idea que se os ocurra. Por ejemplo, si n = 3 y x = 0.5, devolver a 1 + 0.5 + 0.52 /2 + 0.53 /6 = 1.6458, que es bastante similar a e0.5 = 1.6487. La funci on devolver a tambi en la diferencia en valor absoluto entre ex y el polinomio citado evaluado en x. Por tanto, en este caso, devolver a tambi en 0.0029 (2.5 puntos). 4. Codica una funci on que reciba dos vectores u y v ordenados de modo creciente por hip otesis, que carecen de elementos comunes y de dimensiones m y n que son en general distintas. La funci on devolver a otro vector w construido a partir de todas las componentes de u y v , tales que el vector w tambi en est e ordenado. No se podr a llamar a ninguna funci on. Por ejemplo, si u = (2, 4, 5, 9, 10) y v = (1, 3, 6, 8), el resultado ser a w = (1, 2, 3, 4, 5, 6, 8, 9, 10). Como comprobaci on adicional, si intercambiamos u y v en la llamada, el resultado tiene que ser el mismo (2.5 puntos).

Ejercicios. Examen nal de Lenguajes de Programaci on. Junio 2008


Escuela T ecnica Superior de Ingenieros Navales Fecha aproximada de publicaci on de las notas: 30/06/2008 D a y hora de la revisi on: 03/07/2008, 19h30m Tiempo para esta parte : 85 minutos Puntuaci on: 10 puntos.

1. Crea una funci on que reciba un vector u de n umeros positivos y devuelva un vector ue con los n umeros enteros que contiene y otro ur con los no enteros, as como sus respectivos m nimos me, mr. Por ejemplo, si u = (3, 20.3, 7, 5, 12.7, 13) el resultado ha de ser ue = (3, 7, 5, 13), un = (20.3, 12.7), me = 3 y mr = 12.7. Se podr a suponer que en el vector u siempre va a haber enteros y no enteros (2.5 puntos). 2. Crea una funci on que reciba un vector v de naturales y te devuelva 1 si la resta de dos cualesquiera de los n umeros es igual a un tercero. Por ejemplo, si v = (3, 10, 7, 14, 6), la funci on devolver a un 1, pues 10 7 = 3. Sin embargo, si el vector es v = (3, 11, 7, 15, 6) la funci on devolver a 0. Se recomienda probar la funci on cambiando de orden los elementos del primer ejemplo (2.5 puntos). 3. Crea una funci on que reciba un vector p cuyas componentes asimilamos a los coecientes de un polinomio del modo como se ha hecho en el curso. La funci on ha de recibir tambi en un vector x de n n umeros reales y devolver a el elemento del vector x que se encuentra m as cerca de la media que resulta de que se eval ue el polinomio p en todos los elementos del vector x. As , si p = [1 1 2] y x = [1.1 3.5 2.1 0.7], el resultado de evaluar el polinomio p en todos los puntos de x es un vector y = [2.3200 22.0000 7.7200 2.6800] cuya media vale 8.6800, siendo 2.1 el punto que m as cerca tiene su valor de la media (2.5 puntos). 4. Construye una funci on que reciba dos n umeros naturales p, q y devuelva el menor primo mayor que p y q que pertenezca a la sucesi on de Fibonacci iniciada por p y q (2.5 puntos). No se tendr an en cuenta ni p ni q . La sucesi on de Fibonacci se construye de tal modo que. xi = xi 1 + xi 2 , x1 = p, x2 = q, i > 2

Por ejemplo, si p = 1 y q = 3, la sucesi on de Fibonacci estar a formada por 1, 3, 4, 7, ..., y el primer primo ser a el 7. Si p = 4 y q = 5, tendr amos 4, 5, 9, 14, 23, ... y el primer primo ser a el 23(2.5 puntos).

Ejercicios. Examen nal de Lenguajes de Programaci on. Sept 2008


Escuela T ecnica Superior de Ingenieros Navales Fecha aproximada de publicaci on de las notas: 22/09/2008 D a y hora de la revisi on: 24/09/2008, 19h30m Tiempo : 90 minutos Puntuaci on: 10 puntos. Nombre: N umero de PC: Firma:

1. Crea una funci on que reciba un vector v de naturales y te devuelva un vector vp formado por aquellas componentes de v que sean primas y otro vnp formado por aquellas componentes que no sean primas. Por ejemplo, si v = (3, 10, 7, 14, 6), la funci on devolver a un los vectores vp = (3, 7) y vnp = (10, 14, 6) (2.5 puntos). 2. Crea una funci on que reciba un vector p cuyas componentes asimilamos a los coecientes de un polinomio del modo como se ha hecho en el curso. La funci on ha de recibir tambi en un vector x de n n umeros reales y devolver a el ndice del elemento del vector x que se encuentra m as cerca de la media que resulta de que se eval ue el polinomio p en todos los elementos del vector x. As , si p = [1 1 2] y x = [1.1 3.5 2.1 0.7], el resultado de evaluar el polinomio p en todos los puntos de x es un vector y = [2.3200 22.0000 7.7200 2.6800] cuya media vale 8.6800, siendo 2.1 el punto que m as cerca tiene su valor de la media, cuyo ndice es 3, que ha de ser el u nico valor que nalmente devuelva la funci on (2.5 puntos). 3. Construye una funci on que reciba tres n umeros naturales p, q y r. La funci on ir a calculando t erminos de la sucesi on de Fibonacci iniciada por p y q e ir a comprobando si son m ultiplos de p. En el momento en que hayamos encontrado r m ultiplos de p la funci on terminar a, devolviendo el t ermino en que estemos de la sucesi on de Fibonacci (2.5 puntos). No se tendr an en cuenta los valores p y q . La sucesi on de Fibonacci se construye de tal modo que. xi = xi 1 + xi 2 , x1 = p, x2 = q, i > 2

Por ejemplo, si p = 3, q = 4 y r = 2, la sucesi on de Fibonacci estar a formada por 3, 4, 7, 11, 18, 29, 47, 76, 123..... Como 18 y 123 son los dos primeros m ultiplos de 3, el valor a devolver ser a 123 (2.5 puntos). Si p = 2, q = 1 y r = 3, la funci on devolver a en este caso 76, pues los tres primeros m ultiplos de 2 ser an 4, 18 y 76. 4. Crea una funci on que reciba un vector u de n umeros naturales y otro vector v de n umeros racionales positivos. La funci on devolver a 1 si existe alguna combinaci on de fracciones formadas por elementos del vector u tomados de dos en dos, que sea

igual a alg un elemento del vector v y 0 en caso contrario. Se denir a en la funci on una variable prec igual a la mil esima parte de la suma de los elementos de u. Se considerar a que dos n umeros son iguales si su diferencia en valor absoluto es menor que prec. Por ejemplo, si u = (3, 20, 7, 5, 12, 13) y v = (2.98, 1.8571) el resultado ha de ser 1 pues prec = 0.06, y |13/7 1.8571| = 0.00004 < prec. Si ponemos como ejemplo el mismo u pero ahora v = (2.98, 1.2571) la respuesta ha de ser 0 (2.5 puntos).

Lenguajes de Programaci on: Gu a ECTS

P ag. 116

Ap endice B Gesti on del CC

P ag. 117

ETSI NAVALES. CENTRO DE CLCULO USUARIO DEL DOMINIO CCALCULO


ACCESO A LOS ORDENADORES DEL CENTRO DE CLCULO E.T.S.I NAVALES Cuando enciendas el ordenador aparecer una mscara donde introducirs el usuario y la contrasea que se te ha facilitado, comprobando que la sesin se conecte a CCALCULO:

Iniciaras una sesin con este aspecto:

A tu izquierda encontrars todos los accesos directos a los programas que estn instalados. A la derecha aparecern 3 accesos directos a 3 carpetas. A continuacin explicamos en que consiste cada carpeta:

ETSI NAVALES. CENTRO DE CLCULO USUARIO DEL DOMINIO CCALCULO

CARPETA PERSONAL Esta carpeta es individual para cada usuario. Fsicamente se encuentra en un servidor de la ETSI Navales. Esta carpeta tiene capacidad hasta 128MB.Siempre que te conectes a tu usuario aparecern tus ficheros y los tendrs disponibles desde cualquier ordenador de la sala. Estos ficheros no los pueden ver los dems usuarios. Solo t podrs acceder a esta carpeta. ASIGNATURAS Esta carpeta esta disponible para todos los usuarios. Aqu pondrn los profesores los trabajos y documentos que quieran compartir con vosotros. MIS DOCUMENTOS Esta carpeta fsicamente se encuentra en el disco duro del ordenador en el que inicias sesin. Esta compartida para todos los ordenadores de la sala. Estos datos se pueden perder en cualquier momento, bien por ser borrados por otro usuario o por el personal de CdC en sus tareas de mantenimiento. Se recomienda que cada usuario borre sus ficheros de zonas compartidas (como los discos duros de los PCs) una vez finalizada su sesion de trabajo. El CdC no se responsabiliza de mantener datos en zonas compartidas ni temporales y recomienda que cada usuario haga copia de seguridad de dichos datos, bien en su carpeta personal o en algn medio extrable (memoria USB, disquette). Para una mayor seguridad, el usuario deber cerrar la sesin una vez que termine de usar el ordenador (Men de Inicio- Cerrar sesin). SOFTWARE DISPONIBLE EN CADA ORDENADOR S.O: Windows XP Profesional SP2. Microsoft OFFICE 2003 Adobe Reader 7.0 Winrar 3.11 Internet Explorer 6. SP1. Firefox. Winamp 5.1: Lector de MP3 MathType 5.2 Microsoft Visio 2003 Microsoft Project 2003 Autocad 2005 Rhinoceros 3.0 Matlab 5.0 Matlab 2006 Visual C++ 6.0 Visual J ++ 6.0 Visual MSDN 6.0 Electronics Workbench PCTRAN-U2LP Ansys ED 5.5 MD_Solids 1.7 Maple 9 Chechenic Femap v8.3 DNV Nauticus

ETSI NAVALES. CENTRO DE CLCULO USUARIO DEL DOMINIO CCALCULO

En los ordenadores con conexin a Internet solo estn instalados los 10 primeros programas de la lista. Adems en la sala de Informtica se permite la Navegacin de las pginas: ETSI Navales, UPM; Aulaweb, Correo Alumnos, Centro de Clculo. ACTUALIZACIONES DE SOFTWARE Se prevee al comienzo del curso 2007-08 actualizar a las siguientes versiones de software: Microsoft OFFICE 2007 Professional Plus Microsoft Visio 2007 Microsoft Project 2007 Internet Explorer 7. Statgraphics Centurion XV

ETSI NAVALES. CENTRO DE CLCULO USUARIO DEL DOMINIO CCALCULO

DESCRIPCIN DEL CENTRO DE CLCULO

www.centrocalculo.etsin.upm.es
La funcin del Centro de Clculo (CdC) es dar soporte a los alumnos y al personal de la ETSIN para la realizacin de trabajos orientados a fines docentes, formativos y de investigacin propios de la Universidad. En l se imparten clases y se realizan exmenes. Se compone de 3 despachos para el personal informtico y de 2 salas de Informtica con equipos. Las salas son: Sala de Navegacin por Internet. (consta de 10 puestos con capacidad para 20 alumnos) Sala de Informtica. (consta de 50 puestos con capacidad para 100 alumnos)

Los alumnos podrn utilizar estas dos salas, salvo cuando estn reservadas. Normalmente para dar clase, se reserva la mitad de la sala de Informtica delimitndose por una mampara. Si el nmero de alumnos es grande, se reservar toda la sala de Informtica. En pocas de exmenes, el CdC se reserva el derecho de cerrar el CdC el da anterior al exmen, para la reinstalacin de los equipos. Existe en la entrada un tabln donde se expondrn las reservas para la docencia, exmenes, actividades programadas y las comunicaciones a los usuarios.Tambin puedes encontrar esta informacin en la web www.centrocalculo.etsin.upm.es. Para dirigirse al personal responsable, se puede enviar un e-mail a centrodecalculo.navales@upm.es o utilizar el buzn de sugerencias (tambin est a la entrada del CdC) HORARIO El horario de las salas ser de 8:30h a 21:30 horas de Lunes a Viernes los das lectivos.

SERVICIO DE IMPRESIN La sala dispone de 1 Impresora Modelo OCE Varioprint 2040 que funciona con una tarjeta prepago que se puede adquirir en Gestin econmica. No es Fotocopiadora. Se recomienda que una vez impresos los trabajos, se borren de la memoria de la impresora, ya que pueden ser impresos por otro usuario. NORMAS DE FUNCIONAMIENTO DE LAS AULAS DE INFORMTICA Para utilizar las instalaciones del CdC el alumno tendr que estar matriculado en la ETSI Navales o tener autorizacin expresa por parte del Centro. Todo usuario est obligado a identificarse ante el personal de CdC cuando ste lo solicite. El alumno solicitar a travs de un cuestionario el usuario/contrasea con el que acceder a los ordenadores de las aulas. El usuario velar en la medida de lo posible por la seguridad de su cuenta. El CdC no se hace responsable de los perjuicios ocasionados al usuario por la accin de terceros. Queda extrictamente prohibida la utilizacin autorizada o no de una cuenta de usuario distinta a la propia.

ETSI NAVALES. CENTRO DE CLCULO USUARIO DEL DOMINIO CCALCULO


La utilizacin de los equipos informticos se reservar exclusivamente para el soporte de las prcticas de asignaturas, navegacin por Internet y el correspondiente aprendizaje de los distintos programas propios de la carrera. Deber informarse al personal de Informtica de cualquier deficiencia o funcionamiento anmalo que se observe. Se ruega por y para el beneficio de todos, que tanto los equipos y mobiliario, se manipulen y usen de forma correcta. NO SE PERMITE: Fumar, introducir y consumir bebida o comida, Utilizar los equipos como videojuegos para cualquier fin ldico. Utilizar el CdC como lugar de tertulia o de juego. Sentarse en las mesas. Ocupar los puestos con prendas de abrigo o mochilas. Reservar los ordenadores. Cambiar la configuracin de software y hardware sin previa autorizacin del responsable de aula. Modificar la situacin de cualquiera de los equipos o recursos del Aula sin previa autorizacin. Interferir en el trabajo de los dems usuarios. El acceso a los despachos del Centro a personal no asignado o no autorizado. Imprimir trabajos no relacionados con los fines docentes y formativos propios de la ETSI Navales/UPM.

NORMAS DE NAVEGACIN POR INTERNET El uso del Servicio de Internet se realizar dentro de los fines docentes, formativos y de Investigacin de la UPM. Se prohibe expresamente el uso de Internet para recibir o enviar material que resulte ofensivo, obsceno, difamatorio o susceptible de constituir delito. Por tanto, se prohibe visitar pginas web con contenidos pornogrficos, pginas de contenido hacker en cualquiera de sus variantes, intercambio de material protegido con derechos de autor, etc.. Tambin se prohibe su uso para cualquier fin ldico o lucrativo por ejemplo paginas de juegos online, chatear, etc..

El personal del CdC ante cualquier incumplimiento de las Normas anteriormente expuestas se reserva el derecho de poder tomar la medidas oportunas como llamar al orden, cerrar sesin de usuario, deshabilitar cuenta o mandar desalojar el CdC. El personal se encuentra a vuestra disposicin para cualquier aclaracin o duda.

Ap endice C Control de tiempos y cha

P ag. 123

ETSI NAVALES - UPM LENGUAJES DE PROGRAMACIN (LP) CURSO 2008-2009. FICHA PERSONAL - URGENTE!!!!!!!!!!!!! FOTO (pegadla por donde querais, en zonas blancas de esta ficha)

APELLIDOS: NOMBRE: DNI O PASAPORTE: EMAIL (escrbelo con claridad!!!! y si ests matriculado, activa tu cuenta de correo UPM): GRUPO (A,B,C): ES TU PRIMER AO EN LA ETSI NAVALES? TFO MOVIL: TFO FIJO: TE GUSTARA OPTAR AL PREMIO SENER DE LP?:
CASO DE QUE S,CUL HA SIDO TU CALIFICACIN DE ACCESO A LA UNIVERSIDAD?:

Y ADEMS FIRMA Y FECHA:

---------------------------------------------------Para efectos estadsticos, te importara decirme los siguientes datos? 1 Eleccin de primera opcin: 2 Eleccin de segunda opcin: 3 Eleccin de tercera opcin:

FICHA DE CONTROL DE TIEMPOS APELLIDOS: NOMBRE: Semana Fecha DHOf Acum InFHOf Acum 29/09/2008 0 0 06/10/2008 0 0 13/10/2008 0 0 20/10/2008 0 0 27/10/2008 0 0 03/11/2008 0 0 10/11/2008 0 0 17/11/2008 0 0 24/11/2008 0 0 01/12/2008 0 0 08/12/2008 0 0 15/12/2008 0 0 22/12/2008 0 0 29/12/2008 0 0 05/01/2009 0 0 12/01/2009 0 0 19/01/2009 0 0 26/01/2009 0 0 02/02/2009 0 0 09/02/2009 0 0 EqFHOf Acum 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Total 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Acum 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 16 17 16

La idea es que pongais las horas correspondientes a los tres bloques, llevando tambin el acumulado. La unidad mnima sern 0.5 horas, procediendo al redondeo cuando no sean valores exactos. As, 50min se consignar como 1, y 1h17m se consignar como 1.5 Fecha: fecha en la que se ha rellenado la fila correspondiente. DHOf: por horas dentro del horario oficial como clases y exmenes. Acum: por horas acumuladas de cada categora InFHOf: por horas de trabajo individual fuera del horario oficial EqFHOf: por horas de trabajo en equipo fuera del horario oficial

Lenguajes de Programaci on: Gu a ECTS

P ag. 126

Ap endice D Premio SENER

P ag. 127

PREMIO SENER A LA MEJOR PROGRESIN EN LA ASIGNATURA LENGUAJES DE PROGRAMACIN - Bases del premio 1. Objeto del premio: El objeto de este premio es recompensar la mejor progresin durante el desarrollo de la asignatura de Lenguajes de Programacin de Primer Curso de la titulacin de Ingenieros Navales y Ocenicos, Plan 2002, de la Universidad Politcnica de Madrid. De este modo se pretende motivar a los estudiantes que llegan a la titulacin con unas notas medias de Bachillerato bajas, ofrecindoles la oportunidad de que una buena progresin respecto a la posicin de partida suponga una recompensa econmica, con repercusin pblica y curricular. Lo habitual es que estos premios que pretenden servir para motivar, no motiven a los que ms lo necesitan, y terminen simplemente por confirmar la buena preparacin y actitud de ciertos estudiantes. En este sentido, este premio tiene ms matices, pues son precisamente los "peores" estudiantes, los que parten de una posicin ms baja, los que ms pueden progresar, y los que por tanto se convierten en mejores candidatos para obtenerlo. SENER es la empresa lder en el sector de las aplicaciones informticas para el mundo naval, y su fundacin, la Fundacin SENER, a partes iguales con el Departamento Naval de SENER se han ofrecido a dotar y dar nombre a este premio. ETSIN cree que el premio, dada su naturaleza, lleva el mejor nombre posible, y es de agradecer la implicacin de SENER en el mismo. 2. Requisitos de los solicitantes: Alumnos matriculados en la asignatura de Lenguajes de Programacin de Primer Curso de la titulacin de Ingenieros Navales y Ocenicos, Plan 2002, de la Universidad Politcnica de Madrid, que deseen optar al Premio. 3. Procedimiento de valoracin: Los alumnos estn organizados por grupos de 2 componentes durante el desarrollo del curso, tratando de que los estudiantes adquieran hbitos de trabajo en equipo y se familiaricen con los problemas y ventajas de esta forma de trabajo. De hecho, el modus operandi de cada equipo tiene su repercusin en la evaluacin ECTS que se viene desarrollando desde el curso 2005-2006. Al final de esta evaluacin, los componentes del grupo habrn obtenido una nota final. El baremo para fijar la puntuacin para el premio pasa por restar, de cada una de las notas de cada uno de los 2 componentes, la nota media del

1/4

bachillerato 1 . As, si los estudiantes de un grupo obtuviesen un 7.5 y un 9.0 en la evaluacin ECTS de Lenguajes de Programacin y sus notas del bachillerato fuesen 5.4 y 6.2 respectivamente, su puntuacin para el premio ser de (7.55.4)+(9.0-6.2)=4.9 puntos. La puntuacin mxima ser de 10 puntos, (105)+(10-5)=10, y la mnima de 20 puntos, (0-10)+(0-10)=-20. El grupo ganador ser aquel que mayor puntuacin tenga siguiendo este baremo. Para el premio se tendr en cuenta nicamente la nota correspondiente a la evaluacin ECTS y no la correspondiente a la evaluacin convencional. La evaluacin ECTS contempla diferentes tems a lo largo del curso (ver Gua Docente de la asignatura). Teniendo esto en cuenta se arbitrar una forma de seguimiento consistente en la publicacin de las notas de los diferentes grupos en 2 instantes del curso, identificando a los alumnos a travs de su DNI. Ello les permitir conocer su posicin e implicarse ms en la parte final del curso, en la que se consigue la parte ms importante de la nota. Para ello, la Secretara de la ETSIN facilitar a los profesores una lista de alumnos matriculados con una columna correspondiente a las notas de acceso a la universidad de aquellos alumnos que deseen optar al Premio, que previamente habrn firmado su autorizacin para que se facilite dicho dato de su expediente. 4. Dotacin: La dotacin ser de 1200 a repartir a partes iguales entre los 2 componentes del grupo. Esta dotacin se incrementar cada ao aplicando el IPC correspondiente. ETSIN emitir un diploma acreditativo, el cual contendr un suplemento al mismo consistente en un histograma de las notas con la puntuacin de los diferentes grupos, para que quede constancia de modo cuantitativo del progreso del grupo ganador en trminos absolutos y relativos al resto de grupos de ese ao acadmico. La informacin para dicho histograma ser facilitada por el profesor responsable de la asignatura. 5. Entrega de premios: La entrega de premios se realizar durante la ceremonia de entrega de diplomas a los nuevos egresados, y el abono de los premios se efectuar mediante cheque nominativo de 600 emitido por la Fundacin SENER para uno de los
Con nota media del Bachillerato nos referimos a la Calificacin definitiva de las Pruebas de Aptitud de Acceso a la Universidad, la cual es a su vez la media de la nota media del Expediente del alumno correspondiente al Bachillerato propiamente dicho y la nota de la Selectividad. En aquellos casos en que este valor no est correctamente definido por haber ingresado el estudiante con bachillerato extranjero o por pruebas en las que ese parmetro no sea relevante, se considerar que su nota es la media de entre todos los estudiantes para las que s lo sea.
1

2/4

componentes del grupo ganador y otro de la misma cantidad emitido por el Departamento Naval de SENER Ingeniera y Sistemas para el otro componente del grupo ganador. Los familiares de primer grado de los estudiantes premiados, as como 4 compaeros a elegir por cada uno de ellos y el delegado de su clase durante el curso correspondiente, estarn invitados a esta ceremonia. Se invitar a SENER y a Fundacin SENER a que asistan y entreguen directamente el premio a travs de alguna o algunas personas indicadas por ellos mismos.

3/4

PREMIO SENER A LA MEJOR PROGRESIN EN LA ASIGNATURA LENGUAJES DE PROGRAMACIN - Curso 2007-2008-

Ganadores: LUIS ARJONILLA GARCIA SERGIO IGLESIAS CHAPERO Histograma de puntuaciones de todos los grupos 1.
14 12 10 8 6 4 2 0 -8 -6 -4 -2 0 2 4 6
Puntuacin <= Nmero de grupos

La puntuacin corresponde a la diferencia (suma de ambos componentes) entre la nota ECTS de la asignatura y la nota media del bachillerato.

Indice alfab etico


abs, 50, 51 ASCII, 28 Ball, S., 1 contadores, 53 else, 42 elseif, 46 end, 41 cheros ASCII, 28 oor, 54 function, 36 if, 40 if-else, 42 if-elseif, 46 if-end, 40 MATLAB c alculo simb olico, 32 carpeta activa, 29 ventana de comandos, 13 operadores l ogicos, 47 47 O, negaci on, 47 Y, 47 pi, 38 sumadores, 53 Taylor, Brook, 27 Wittgenstein, L., 1

P ag. 132

Você também pode gostar