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 identificados 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 I’m like a guide showing you how to find 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 different journey. At the end of this you will know London; you will be able to find 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 I’m a rather bad guide. L. Wittgenstein.

.

. . . . . . MATLAB y n´ umeros complejos . . . . . . . . . . . . . . . . . . . . . . . 1. . . Conjuntos de o ´rdenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variables enteras y reales como argumentos .5. . . . . . . 1. . . . . . Bucles 55 2. . . . .9. General . . . . . . . . General . . . . . . . . . . . Tutorial de MATLAB 0. . 1. . . . . . . . 1. . . . . . . . . . . . . . . .3. . . . . . . . .10. . . .10. . . . . . .1. . . . . . . Variables contador y sumador . Introducci´ on al tratamiento de matrices 0. . . . 0. . . . . . . . . . . . 1. . . . . . . . . 1. . . . . . . . . . . . . . . . . . . . . . .6. . . . . 0. . . . . . . . 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. . . . . . . . . . . . . . Igualdad entre n´ umeros reales: precisi´ on y valor 1.11. 0. . . . . . . . . . . Estructura de control condicional if . . . Bucles . . . . . . . . . . . . . . . . . . .3. . . 55 2. . . Operadores l´ ogicos . . . . . . . . . . . . . . . .13. . . . . . . . .1. . . . . . . . . . . Funciones y variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . 1. . 1. . Funci´ on que llama a otra funci´ on . . . . . . . . . . . . . . . . Variante elseif en el condicional . . . 0. . . . . . . . . .7. . . . . . . . 0. . . . Operadores de comparaci´ on: ¿son iguales? .6. . . . . . . . . . . . . . Funciones y Condicionales 1. . . 1. . . . . . . . Condicionales anidados. . . . . . Conceptos b´ asicos . . . . . . . . . . . . . . . .5. . . . . . . . . . . . . . . . . . . . . . . Vectorizaci´ on de operaciones . . . . . . . Funciones con varios argumentos de entrada . . . . . . . . . . . .3. . . . .1. . . . . . . . . . . . . . Manejo de vectores . . . . . . . . . . . . . 2. . . . . . 57 P´ ag. . . . . . . . . . . . 1. . . . . . . .9. . . . . . . . . . 0. . . . . . . . . .8. . . . . . . . Creaci´ on de gr´ aficas . .2. . . . . . . . . . . . . . . . 0. Resoluci´ on de sistemas lineales . . . Introducci´ on . . . . . . . Funci´ on parte entera . . . . . . . . . . . . . 55 2. . . . . . . 3 . . . . . . . . . . . Estructura de control condicional if-else . . . . . . . 1. . . . . . . . . . . . . . . . . . . . . . .14. . . . . . .´ Indice general Notaci´ on y abreviaturas 6 I Aprender a programar. . . . . . . . .4. . . . . 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . 1. . . . Bucles con incremento variable . . . . . .2. . 1. . . . . . . . Matem´ aticas simb´ olicas con MATLAB . . . . . . . .12. . . . . . . . . . . . . . . . . . . . . . . .7. absoluto . . . . . . . .8. . . . . . . .

. . . M´ etodos docentes . . . . . . . . . . Vectores 3.7. . . . . . . . . Funciones que llaman a funciones con argumentos vectores . . . . . . .5. . . Objetivos 3. .Lenguajes de Programaci´ on: Gu´ ıa ECTS 2. . .4. . . . . . . . Datos generales 2. 2. . . . . . . .1. . II Gu´ ıa ECTS para estudiantes 83 85 87 87 87 87 87 88 89 89 89 91 91 1. . . . . . . 2. . . . . . . . . . . . . . . . . 5. . 3. General . . . . .1. . . . . Uso de bucles para verificar una condici´ on sobre un Bucles anidados. . . . . . . .6. . . . 3. . . . . . . Tutor´ ıas virtuales . . . . . . . Programa y Metodolog´ ıa 93 4. . . . . . . . . . . . .8. . . 3. . . . Recursos 5. . . . . . . . Bucles con otras operaciones . . . . . . . . . . . . . . . . . Introducci´ on 2. . . . . . 3. . . . . . . . . . . . . . Funci´ on que devuelve un vector . . . . . . . . . . . . . . . . . . 2. . . . P´ ag. . . . . . . . . . . . . . Otras asignaturas de las que LP . . . . . . . . . . . . . . . . . . .7. . . . . . . . . . . . . . . 2. . . . . . . . . . . . . . . Vectores como argumentos de funciones . . . . . . . . . . 3. . . . . . . Temporalidad y car´ acter 2. . . .3. . . . . . . .3.3. 2. . . . .2. . . . . C´ alculo de posici´ on de extremos . . . . . . . . . . . . . . . . . . . . . . 3. General . . . . . .6. . . . . . . . . . 3. . . . . Prerrequisitos . . . .4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. . . . . . . . . . . . .4. . . . C´ alculo de extremos . . . . . . . . . . . . . . . . . . . . . . 94 5. . . . . . . . . . . . . . . . . . Objetivos generales: descripci´ on 3. . . . 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 60 62 63 65 65 65 66 67 69 70 73 75 77 78 80 3. . . . . . Vectores y bucles anidados . . . . . . . . . . . . . 5. . . . . . . . . . . . 3. . . . 5. Tutor´ ıas . . . . . . . . . . . . .1. . . . . Construcci´ on de vectores . . . . 5. . . . . P´ agina web . . . . . . . . . . es prerrequisito . . . . . 93 4. .5. . . . . . . . . . . . . . . Funciones que reciben y devuelven vectores . . . . . . . . . . . . . . . . . . . . . . . . . 2. . . . . . .5. . . . . . . . . . . . .6. . . . .2. . . . . . . . .2. . . . . . . . . . . . . . . . . . . . Funciones con salidas m´ ultiples . . . . . . . . . . .7. Temario y estimaci´ on del tiempo de estudio . . . . . .2. . . . . . . . . . . . . . . . . . 3. . . . . . . . Cr´ editos LRU . . . . . . . . . . . . . 97 97 97 97 97 98 98 98 . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cr´ editos ECTS . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. . . Copias . . Bucles y condicionales . . . . . . . . 3. . .9. . . . . . .8. . . . . . . . . . . . . Gu´ ıa . . . 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . .10. . . . . . .5. 3. . . . . . . .2. . Profesores . . . . . . . . . . . . . . . . . . . . . conjunto. . .Plataforma de B-learning 5. . . . . . . . . . . . . . . . . . . . . . . Departamento . . . . . . . Bucles y relaciones de recurrencia . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . Evaluaci´ on de un polinomio . . . .4. . . 3. Bibliograf´ ıa . . . . . . .11. . . . . . . . . . . . .3. . . . . .4. . . . . . . . . . Centro de C´ alculo . .

. . . . . .3. . . . . . . . . . . . . . . . . . 5 . . . . . . . . . . 6. . . . . . . . . . . . . . . Premio SENER Indice alfab´ etico P´ ag. . . . . . . 6. . . . . . . . . . Evaluaci´ on tradicional . Gesti´ on del CC C. . . Control de tiempos y ficha D. Evaluaci´ on 6. . . . . . . . . . Ejemplos de Ex´ amenes B. .1. . . General . . . . . . . . . . . . 6. . . . . .4. . . Evaluaci´ on de los objetivos . . . . . . . . . . . . . . . . . . . . . . . .´ INDICE GENERAL 6. Evaluaci´ on ECTS . . . . . . . . El examen . . . . . . . . . . . . . .5. . . . . . . . . . 101 101 101 101 103 105 III Ap´ endices 107 109 117 123 127 132 A. . . . . . . 6. . .2. . . . . .

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

con MATLAB P´ ag. 7 .Parte I Aprender a programar.

.

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

tiene todos los elementos de un lenguaje de programaci´ on. 3. 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. nos alejan de un lenguaje m´ as potente como C. teniendo poco tiempo para comprender el funcionamiento de las estructuras de datos o de control del flujo del programa. De este modo. MATLAB proporciona una interfaz que permite probar las funciones directamente sin necesidad de llamarlas desde un programa principal. posibilitando la repetici´ on de operaciones. el que el estudiante se sienta al final 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. comenzando por el concepto de funci´ on y estudiando la entrada y salida casi al final. En la unidad 2 se trabaja con bucles. y como comentamos m´ as abajo. eso permite centrarse en el manejo de estructuras de control para resolver problemas y desarrollar estrategias. Comprobamos en cursos anteriores que al utilizar un lenguaje como C. Es una unidad P´ ag. 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´ ıficas (“toolboxes”) para muchos ´ ambitos. ha permitido una estructura del curso creemos que muy interesante para un curso de introducci´ on a la Programaci´ on para no Inform´ aticos. algo a lo que se llega con mucho m´ as esfuerzo en un lenguaje de Programaci´ on m´ as riguroso como C. reserva de memoria. ahora usamos una estructura similar a la programaci´ on funcional.. Sin embargo. MATLAB es un lenguaje completo. Aunque las competencias de manejo asociadas a esas herramientas espec´ ıficas no se trabajan en este curso. Una vez realizado este tutorial. introduciendo inmediatamente la estructura de control condicional.Lenguajes de Programaci´ on: Gu´ ıa ECTS El lenguaje elegido para la implementaci´ on de ejemplos y ejercicios es el lenguaje de comandos o ”script”de MATLAB (o su versi´ on libre Octave). creemos que esencial al principio. 10 . 5. con una sintaxis similar al C pero con la simplicidad del BASIC. o de MATLAB se ocupe del la reserva din´ amica de memoria de modo autom´ atico. pero con la ventaja de poder realmente ejecutar los c´ odigos creados. Esto permite comprobar su funcionamiento de un modo sencillo e inmediato. Todo ello hace que sea muy sencillo empezar a generar c´ odigos interesantes en MATLAB. 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. Esta elecci´ on se debi´ o a varios motivos: 1. la cual permite construir funciones m´ as complejas e interesantes. los alumnos dedicaban la mayor parte del tiempo a la correcci´ on de errores de sintaxis y a la declaraci´ on de variables. 2. En este sentido. en la unidad 1 se trabaja al principio sobre el concepto de funci´ on. etc. el lenguaje MATLAB se acerca al pseudoc´ odigo usado en algunos cursos de Programaci´ on. 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”). 4. La simplicidad de MATLAB a estos efectos es a veces causa de falta de rigor en la forma de abordar la Programaci´ on. MATLAB es un lenguaje interpretable: MATLAB traduce durante la ejecuci´ on las diferentes sentencias al lenguaje primario y b´ asico de la m´ aquina. Sin embargo y como coment´ abamos m´ as arriba.

. MATLAB. Como coment´ abamos en el pr´ ologo. 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 . G. donde los bucles surgen de modo natural. el resto del curso ser´ a para ´ el una progresi´ on sencilla. Una introducci´ on con ejemplos pr´ acticos. Si no se siente c´ omodo todav´ ıa. 11 . Gilat. Si el estudiante se siente c´ omodo al final de esta unidad.es/ 1 P´ ag. Revert´ e. 2006. como el de comprobar si un n´ umero natural es primo. pues no se recurre todav´ ıa a vectores o matrices. En cuanto a compendios de MATLAB. tendr´ a ocasi´ on de cubrir los vac´ ıos en las unidades siguientes. no hemos pretendido escribir un compendio exhaustivo ni de Programaci´ on ni de MATLAB. Disponible online en http://forja. Introducci´ on Informal a MATLAB y OCTAVE. es un buen ejemplo de este tipo de libros 2 Borrell i Nogueras.ardua. pues ya se tienen las herramientas para manejarlos.rediris. 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. Aqu´ ı est´ an los ejemplos m´ as interesantes del curso. 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. En la unidad 3 se introducen los vectores. A.. recomendamos el sensacional trabajo de Guillem Borrell2 .

Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag. 12 .

7013 A veces. 1 P´ ag. es similar a una calculadora programable. cuando aparezca este s´ ımbolo. al final del tutorial ser´ a capaz de utilizar MATLAB como si fuese una calculadora potent´ ısima.Unidad Did´ actica 0 Tutorial de MATLAB 0. casi est´ andar para c´ alculos en muchas ramas de la Ingenier´ ıa. por ejemplo. o sea. As´ ı. Introducci´ on Presentamos un tutorial de MATLAB. se tiene que introducir por teclado la orden que aparece escrita a la derecha del mismo. utilizaremos el int´ erprete de comandos de MATLAB para que el estudiante se introduzca en el apasionante mundo de la programaci´ on de ordenadores. La utilizaci´ on m´ as b´ asica de MATLAB es como calculadora 2 . As´ ı. manejando sus elementos de c´ alculo en l´ ınea de comandos. cerrar las otras ventanas que aparecen en la pantalla. De hecho. Podeis. MATLAB R2006a 1 . para quedaros simplemente con la ventana de comandos. Student MATLAB. 3 Los argumentos de las funciones trigonom´ etricas siempre est´ an en radianes. Programas. se procede como con cualquier programa Windows. Una vez arrancado. tiene como objetivo que el estudiante se sienta c´ omodo con el programa y con el sistema de usuarios. que tiene como etiqueta MATLAB R2006a. una herramienta potent´ ısima.3 3 cos(5) · 2 . y de uso razonablemente simple. MATLAB. En el espacio que denotamos como ventana de comandos en dicha figura aparece el cursor con el s´ ımbolo (>>) o (EDU >>). para calcular 7. sin entrar en la programaci´ on de aplicaciones. de momento. durante el curso hay algunos problemas con las licencias y se usa la versi´ on educacional. y que se realizar´ a durante las primeras sesiones del curso de LP. 0. a la cual se accede con Inicio. en este tutorial. Conceptos b´ asicos Para arrancar MATLAB. nos encontramos con algo similar a lo que se observa en la figura 1. en el que haremos una descripci´ on de los elementos b´ asicos de MATLAB. 13 . carpetas y archivos del CC.2. R2006a.1. En la asignatura de LP. o a trav´ es del icono q est´ a en el escritorio 2 Funcionando de este modo. indicando que se pueden introducir ´ ordenes. Programas. Este tutorial. aunque bastante m´ as vers´ atil. o con el correspondiente icono en el escritorio. se debe introducir : >>cos(5)*2ˆ7. a lo cual nos dedicaremos el resto del curso.3 ans = 44. Inicio.

Lenguajes de Programaci´ on: Gu´ ıa ECTS Figura 1: Espacio de trabajo de MATLAB P´ ag. 14 .

3 Realizar la siguiente operaci´ on e2. volver´ a a ser asignado a ans. Si se necesitara m´ as precisi´ on en los resultados. Complex results are produced if X is not positive.3992+004. TUTORIAL DE MATLAB MATLAB mantiene en memoria el u ´ltimo resultado.3 ans = 44. LOGM. Ejercicio 0. como veremos durante todo el curso. Caso de que ese c´ alculo no se asigne a ninguna variable. Para saberlo. n´ umeros o el gui´ on bajo (que est´ a en la misma tecla que el signo menos). See also LOG2.1 Realizar la siguiente operaci´ on: 2.1 + log10 108. LOG(X) is the natural logarithm of the elements of X.7 2. pedimos ayuda acerca del comando log utilizando: >>help log LOG Natural logarithm.70132670851334 Ejercicio 0. adem´ as. ⇓. Aunque en la explicaci´ on que se obtiene al pedir “help”de las ´ ordenes los comandos aparecen en may´ usculas.3 y asignar su valor a la variable x editando dicha orden. Luego podremos utilizarla para otros c´ alculos. Si necesitamos referirnos a determinados c´ alculos. Por ejemplo. Presionemos ⇑ hasta recuperar la orden: >>cos(5)*2ˆ7. El resultado del ejercicio anterior aparecer´ a como 2. Por defecto. y si no se asigna ese nuevo c´ alculo a ninguna variable. se deben usar en min´ usculas.8000 En este momento cabr´ ıa preguntarnos si tratamos con un logaritmo decimal o con uno neperiano (natural).2 . lo hace a una variable por defecto de nombre ans.72. lo haremos a trav´ es de la variable ans. 4 significa 2. no contendr´ an s´ ımbolos que nos sean letras. se puede utilizar la orden format long repitiendo los c´ alculos: >>format long Para recuperar una orden y ejecutarla otra vez o modificarla se usan la flechas arriba y abajo del cursor ⇑. 15 . Ejercicio 0. EXP.3992 ∗ 10 o lo que es lo mismo 23992.3992e+004. podemos recuperar con ⇑ la orden cos(5) · 27. LOG10. los resultados aparecen con 4 cifras decimales.1 +log 10 108.´ UNIDAD DIDACTICA 0.2.2 Pedir ayuda de la orden exp. El concepto de variable es crucial cuando se programa. se asignan a variables y as´ ı se pueden recuperar despu´ es. Si queremos referirnos a ese resultado. La notaci´ on 2. Los nombres de las variables en MATLAB han de comenzar por una letra. P´ ag. >>log(ans) ans = 3.

¿Qu´ e relaci´ on hay entre el u ´ltimo x y 81? x=x− P´ ag.1 + log10 108.1 +log 10 108. Ejercicio 0.84886216565827 >>x=cos(x) x = 0.5 Realizar la siguiente operaci´ on: e2. Si queremos saber cu´ anto vale una variable.80000318145901 Ejercicio 0.7 2.4 Realizar la siguiente operaci´ on: 2.98006657784124 >>x=cos(x) x = 0.2 x = 0. >>y y = 3.20000000000000 >>x=cos(x) x = 0.2 y asignarla a la variable t.70421571334199 Ejercicio 0. xn+1 = cos(xn ) >>x=0.80000318145901 Como es muy f´ acil recuperar ´ ordenes previas podemos utilizar esta idea para simular los t´ erminos de una sucesi´ on recurrente.66083755111662 >>x=cos(x) x = 0. Ejercicio 0.6 Repetir la operaci´ on anterior hasta que se estabilice el cuarto decimal de x de un paso al siguiente.Lenguajes de Programaci´ on: Gu´ ıa ECTS >>x=cos(5)*2ˆ7.7 Cambiar el formato para que otra vez se vean s´ olo cuatro decimales. 16 .55696725280964 >>x=cos(x) x = 0.8 Empezando por x = 100 repetir la operaci´ on x2 − 81 2x hasta que se converja en el cuarto decimal.78947843776687 >>x=cos(x) x = 0.70132670851334 >>y=log(x) y = 3. Por ejemplo. no tenemos m´ as que escribirla en la l´ ınea de comandos y pulsar Enter.2 y asignarla a la variable x. Ejercicio 0.3 x = 44.72.

>>clear >>x ??? Undefined function or variable ’x’. ¿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. 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. A veces es bueno apagar y encender la calculadora para borrar todo y empezar de nuevo. Manejo de vectores Para crear y almacenar en memoria un vector v que tenga como componentes v1 = 0. 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 2 2 4 2 4 6 2 4 6 8 Se puede tambi´ en definir este vector especificando su primer elemento. v3 = 4. MATLAB rellenar´ a paso a paso sus componentes. Hay que tener cuidado al utilizarla. podemos definir igualmente el vector v como una secuencia que empieza en 0. As´ ı.3.10 Preguntar el valor de A igual que acabamos de preguntar x. 17 . Ejercicio 0. Esto se hace con la orden clear. v2 = 2. TUTORIAL DE MATLAB Ejercicio 0. ¿Tiene sentido el resultado? 0. ya que borra todas las variables que est´ en en la memoria sin pedir confirmaci´ on. un incremento y el u ´ltimo elemento.9 Definir 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.´ UNIDAD DIDACTICA 0.

cuando pulsemos la tecla Enter para ejecutarla. >> v(1) ans = 0 O modificarla: >> v(1)=-3.11 Calcular la suma de los elementos de v . al final de una l´ ınea de comandos. 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 “?”.Lenguajes de Programaci´ on: Gu´ ıa ECTS >> v = [0:2:8] v = 0 2 >> v v = 0 2 4 6 8 4 6 8 Si ponemos . por ejemplo la primera. 18 . Esto es muy u ´til algunas veces: >> v = [0:2:8]. >> v v = 0 2 4 6 8 Podemos construir el vector v editando directamente entre los corchetes las componentes del vector v : >>v = [0 2 4 6 8]. >> v v = -3 2 4 6 8 3 O hacer operaciones entre componentes. >> v v = 0 2 4 6 8 Es f´ acil acceder al contenido de una posici´ on del vector. >> v’ ans = -3 2 4 6 8 P´ ag. se ejecutar´ a pero no mostrar´ a el resultado en pantalla (se anula el eco en pantalla). v2 · v5 : >> v(2)*v(5)ˆ3 ans = 1024 Ejercicio 0.

´ UNIDAD DIDACTICA 0. 19 . Ejercicio 0. accediendo a cualquiera de sus posiciones. TUTORIAL DE MATLAB Como hemos comentado. La definici´ on de una matriz es muy similar a la de un vector. ⇓. 0. 3 4 5. Se supone que se ha seguido la secci´ on anterior y que se dispone de los conocimientos b´ asicos sobre la definici´ on y manipulaci´ on de vectores usando MATLAB. Modifiqu´ emosla para dejar el valor original >> v(1)=0. un matriz de 1 × 5. Presionemos ⇑ hasta recuperar la orden: >> v(1)=-3.12 Definir un nuevo vector que sea el traspuesto de v y aplicar a ese vector el comando size. o sea. por ejemplo: P´ ag. para recuperar una orden y ejecutarla otra vez o modificarla se usan la flechas arriba y abajo del cursor ⇑. Al definir ese vector v de 5 componentes. se puede hacer dando sus filas separadas por un punto y coma (¡no olvidarse poner los espacios en blanco!): >> A = [ 1 2 3.13 Pedir ayuda sobre la funci´ on norm y aplicarla al vector v . 6 7 8] A = 1 2 3 3 4 5 6 7 8 o definirla directamente fila a fila. ¿Es coherente el resultado? Ejercicio 0. 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 modificar alguno de los elementos de la matriz A. Esto se comprueba preguntando el tama˜ no de v con la sentencia size: >>size(v) ans = 1 5 que nos indica que v tiene una fila y 5 columnas. Introducci´ on al tratamiento de matrices Haremos una introducci´ on a la definici´ on y manipulaci´ on de matrices. Para definir una matriz.4. en realidad lo que definimos es una matriz fila de cinco columnas.

2)=4.) Ejercicio 0. Tambi´ en podemos multiplicarlas. 20 .14 Sumar los elementos diagonales de la matriz A. se la puede considerar como una fila 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. como por ejemplo una matriz de 3 × 3 que tenga todos sus elementos nulos. De igual modo.15 Definir la matriz D = 2B − A. es importante colocar los espacios en blanco. refiri´ endonos a ellos.17 Definir la matriz C = AAt . >>C=A*B C = 14 26 44 31 57 96 37 69 117 Ejercicio 0.16 Definir la matriz D = B − A · B . Ejercicio 0.Lenguajes de Programaci´ on: Gu´ ıa ECTS >> A(2. elemento a elemento. >>I=zeros(3) I = 0 0 0 0 0 0 0 0 0 P´ ag. >>C=A+B C = 2 5 9 4 8 14 6 10 16 Ejercicio 0.2)=-9 A = 1 2 3 -9 6 7 3 5 8 Dejemos su valor original: >> A(2. Podemos sumar o restar matrices para tener otras matrices. Podemos definir algunos tipos especiales de matrices.

3)=1 I = 1 0 0 1 0 0 0 0 1 Ejercicio 0.16 sacando factor com´ un y utilizando la funci´ on eye. que recibe un vector que convierte en diagonal de una matriz cuyos otros elementos son nulos. y definir la matriz identidad de 10 × 10. 21 .20 Pedir ayuda de la funci´ on eye. Ejercicio 0. P´ ag. Otra forma de definir la matriz identidad es a trav´ es de la funci´ on diag. 0. 0. Ejercicio 0.7. >>J=diag([1 1 1]) J = 1 0 0 0 1 0 0 0 1 Ejercicio 0.18 Repetir el ejercicio 0.2)=1. se puede suprimir. 1.´ UNIDAD DIDACTICA 0.2 y −0.4. TUTORIAL DE MATLAB Podemos modificar sus elementos diagonales para tener la matriz identidad.19 Definir una matriz D diagonal cuyos elementos sean −2. Definici´ on de submatrices La definici´ on de “subvectores” o submatrices es muy f´ acil. Esta orden es equivalente a la siguiente >> e=v(1:3) e = 0 2 4 ya que cuando el incremento es la unidad. >>I(2. El segundo n´ umero es el incremento de ´ ındices dentro de v y el u ´ltimo n´ umero marca el elemento final.21 Repetir el ejercicio 0.1.16 sacando factor com´ un y utilizando la matriz identidad. Si v es >> v = [0:2:8] v = 0 2 4 6 8 Podemos definir un vector e cuyas componentes sean las tres primeras componentes del vector v poniendo >> e=v(1:1:3) e = 0 2 4 donde el primer uno indica que vamos a tomar el primer elemento de v .1)=1. >>I(3. >>I(1.

teniendo cuidado de que las dimensiones sean las adecuadas. >> A*v(1:3)’ ans = 16 28 46 Es importante acostumbrase a ver ese mensaje de error. >> D=A(2:3.Lenguajes de Programaci´ on: Gu´ ıa ECTS Ejercicio 0. P´ ag. Una vez que se empieza a trabajar con vectores y matrices. A no es una matriz regular. es sencillo olvidar los tama˜ nos de los objetos que se han ido creando.23 Utilizando el comando size. Hay que tener cuidado y no olvidar que las operaciones son c´ alculos num´ ericos realizados por ordenador. Por ejemplo. Se pueden extraer columnas o filas de una matriz. Una vez que se es capaz de crear y manipular una matriz. 22 .2:3) D = 4 5 7 8 Ejercicio 0. por ejemplo. Es muy sencillo multiplicar matrices y vectores.24 Definir una matriz de nombre D1 formada por la primera y tercera columnas de la matriz A.2) C = 2 4 7 O bien que D sea la submatriz cuadrada de orden dos inferior derecha de la matriz A.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. calcular su inversa. que C sea la tercera fila de la matriz A: >> C=A(3. razona sobre los problemas en lo que se refiere a dimensiones en la multiplicaci´ on anterior.:) C = 6 7 8 O que C sea la segunda columna de la matriz B >>C=B(:. se pueden realizar muchas operaciones est´ andar. Ejercicio 0. >> A*v(1:3) ??? Error using == * Inner matrix dimensions must agree. y sin embargo MATLAB devolver´ a su inversa. pues los errores de redondeo durante su c´ alculo convierten en invertible a dicha matriz. Si queremos. la notaci´ on usada por MATLAB sigue en lo posible la notaci´ on ´ est´ andar de Algebra Lineal que se asume conocida. En el ejemplo.

0000 -1.5.0000 1.565062e-18 ans = 1.7022 4.0000 0 Ejercicio 0. Por ejemplo. Si Ax = b y queremos encontrar x. Multiplicar B por B 1 y razonar la coherencia del resultado. 23 .25 Definir una matriz de nombre B 1 como la inversa de B. RCOND = 4. hay medios mucho m´ as eficientes y estables para resolver sistemas lineales pero nosotros de momento nos quedaremos con ´ este. 0.0072 3.8014 5. TUTORIAL DE MATLAB >> inv(A) Warning: Matrix is close to singular or badly scaled.0000 -1.7022 4. y luego premultiplicar por la inversa ambos lados.´ UNIDAD DIDACTICA 0. Results may be inaccurate.8014 Con la matriz B s´ ı que es posible calcular su inversa: >>inv(B) ans = -3.5036 -1.0000 -1.0000 5. >> inv(a) ??? Undefined function or variable a. el sistema lineal Bx = v con: >>v = [1 3 5]’ v = 1 3 5 >>B = [ [1 2 3]’ [2 4 7]’ [3 5 8]’]. Este puede ser el origen de algunas confusiones si se manejan algoritmos complejos.0000 -2. se resuelve con: >> x = inv(B)*v x = 2 1 -1 Para comprobar: P´ ag.4043 -9. Resoluci´ on de sistemas lineales Tambi´ en hay funciones para resolver sistemas lineales. Hay que comentar que MATLAB distingue entre may´ usculas y min´ usculas. Sin embargo.6029 -2.0e+15 * -2. el modo m´ as directo es simplemente invertir A.5036 -1.0000 2.

Ejercicio 0.29 Definir una matriz H de 3 × 3 a partir de las tres primeras columnas de la matriz BA.26 Definir una matriz B 2 = BB t . >>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. as´ ı que hay que realizar una permutaci´ on de filas.0 1 0].:) BA = 1 2 3 1 0 0 -1 1 3 7 8 5 >>BA(3. 24 . Ejercicio 0.:) BA = 1 2 3 1 0 0 -1 1 0 1 -1 2 La segunda fila tiene el elemento diagonal nulo. premultiplicando por la identidad permutada: >>IP=[1 0 0.28 Comprobar la soluci´ on obtenida realizando el c´ alculo BB T x − v .0 0 1.:)-3*BA(1.27 Encontrar la soluci´ on del sistema lineal BB t x = v asignando esa soluci´ on al vector x.:)-2*BA(1. Ejercicio 0.Lenguajes de Programaci´ on: Gu´ ıa ECTS >> B*x ans = 1 3 5 Ejercicio 0. efectuando las necesarias transformaciones elementales de fila >>BA=[B v] BA = 1 2 3 1 2 4 5 3 3 7 8 5 >>BA(2.:)=BA(3.:)=BA(2.30 Definir un vector h utilizando la u ´ltima columna de BA. P´ ag. Podemos crear una matriz aumentada a partir de B y del t´ ermino independiente y reducirla hasta convertir el sistema en uno equivalente triangular.

Ejercicio 0.31 Definir el vector z tal que Hz = h. No se puede sumar un vector fila con un vector columna. En el ejemplo anterior. sumar. TUTORIAL DE MATLAB Ejercicio 0. Primero definiremos dos vectores. Se debe recordar que el n´ umero de columnas del primer operando debe ser igual al n´ umero de filas del segundo. Con MATLAB es sencillo crear vectores y matrices. Primero mostraremos c´ omo realizar operaciones sencillas. sigue las reglas estrictas del ´ Algebra Lineal.33 Calcular el determinante de la matriz H . >> v*b Error using == * Inner matrix dimensions must agree.´ UNIDAD DIDACTICA 0. igual que su suma.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. Vectorizaci´ on de operaciones Ejercicio 0.34 Borrar la memoria porque vamos a empezar operaciones nuevas reutilizando nombres de variables ya usadas. 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. 25 . >> v*b’ ans = P´ ag. Luego las combinaremos para mostrar que se pueden realizar operaciones complejar a partir de estas operaciones simples sin mucho esfuerzo. La potencia de MATLAB nace de la facilidad con la que se pueden manipular estos vectores y matrices. 0. restar y multiplicar. los vectores son ambos vectores columna con tres elementos. ¿Es coherente el resultado? Ejercicio 0.6.

necesitamos algo diferente. En otras palabras.6931 1./b ans = 0. se pueden definir operaciones sencillas que se pueden realizar f´ acil y r´ apidamente. por ejemplo. >> v. pero como esta multiplicaci´ on tiene otro sentido. ¿por qu´ e no ir hasta el final? Si aplicamos una funci´ on matem´ atica predefinida a un vector. se define un vector muy grande y lo manipulamos de este modo tan sencillo. De hecho. cada elemento del vector v con su correspondiente elemento en el vector b. Una vez que hemos abierto la puerta a operaciones no lineales.*b ans = 2 8 18 >> v.0986 Saber manejar h´ abilmente estas funciones vectoriales es una de las ventajas de MATLAB. Supongamos que queremos multiplicar.5000 0.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.9093 0. De este modo.5000 0.5000 Ejercicio 0. 26 . supongamos que se quiere conocer v (1) ∗ b(1). P´ ag. En el siguiente ejemplo. v (2) ∗ b(2). Los programadores que crearon MATLAB decidieron usar el s´ ımbolo “·∗” para realizar estas operaciones. un punto delante de cualquier s´ ımbolo significa que las operaciones se realizan elemento a elemento.35 Definir un vector w tal que sus componentes sean las de v al cubo. y v (3) ∗ b(3).1411 >> log(v) ans = 0 0. 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. Ser´ ıa estupendo poder usar directamente el s´ ımbolo “∗” pues en realidad estamos haciendo una especie de multiplicaci´ on.8415 0.

6000 99. Damos una muestra de esto que luego completaremos. utilizaremos la funci´ on seno y su desarrollo en serie de Taylor5 en torno al cero con t´ erminos c´ ubicos. introdujo el c´ alculo en diferencias finitas.4000 99.36 Definir un vector t cuya primera componente sea −4.5000 0.37 Definir un vector y a partir de cada componente del vector t reci´ en definido y = 5e−t + sin(10t) 2 0. Johann Bernoulli.. >> plot(x. no fue Taylor el primero en obtenerlo.4000 0.. Newton. que tenga un incremento entre componentes de 0. Para dibujar la gr´ afica.1 >>xmin=-2. El comando plot se utiliza para generar gr´ aficas en MATLAB.9000 100.... tenemos en los vectores yseno e ytaylor los valores reales y los valores aproximados obtenidos del desarrollo limitado. que permite el desarrollo de funciones en series polin´ omicas..7. 5 P´ ag.´ UNIDAD DIDACTICA 0.. Columns 995 through 1001 99. Aqu´ ı s´ olo utilizaremos el rango y el formato.2000 0. Ejercicio 0. >>xmax=2. y la posibilidad de representar dos curvas en la misma gr´ afica. Estudi´ o en Cambridge y cuando se gradu´ o ya hab´ ıa escrito su primer art´ ıculo matem´ atico de relevancia. llegando a formar parte del Comit´ e que la Real Sociedad form´ o para dar fin a tal discusi´ on. Para compararlos. y de Moivre hab´ ıan ya descubierto independientemente variantes del mismo.05 y termine en el punto 1.8000 99.ˆ3/6. dibujamos los valores exactos superpuestos con los aproximados marcados por puntos verdes ‘o’.. Aunque las aportaciones de Taylor a las matem´ aticas son profundas y variadas (entre otras. Tras esto.0000 Usando este tratamiento vectorial.6000 99.. >>yseno=sin(x). TUTORIAL DE MATLAB >> x = [0:0.1000 0. Leibniz...y) Ejercicio 0..5000 99. la integraci´ on por partes.. Brook Taylor naci´ o en 1685 en Inglaterra en el seno de una influyente y adinerada familia.. >>x=xmin:h:xmax.7000 >> y = sin(x).. 27 . 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...1:100] x = Columns 1 through 7 0 0.*x. >>ytaylor=x-x. Para mostrar el uso del comando plot. Creaci´ on de gr´ aficas En esta secci´ on presentamos los comandos b´ asicos para crear representaciones gr´ aficas de funciones./(1+cos(x)).3000 . se pueden generar gr´ aficos de modo muy sencillo. Admite una gran variedad de argumentos. x − x3 /6.. 0... Sin embargo. seleccionamos el paso del vector de muestreo x y sus valores primero y u ´ltimo >>h=0. 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.. James Gregory.

En este ejemplo crearemos un fichero de nombre tutorm. viene incorporado al propio MATLAB y mejora de versi´ on en versi´ on.abs(yseno-ytaylor). en este ejemplo. se pueden construir infinidad de aproximaciones variando este par´ ametro. Se debe tener en cuenta que cuando una sentencia comienza por %.m”.yseno. Tambi´ en es buena idea representar la funci´ on error: >>plot(x. Como ejemplo. Abrir un nuevo documento de Word y pegar la figura en ese documento. SHG brings the current figure window forward. deben tener la extensi´ on “. De este modo. Para que al final del fichero con todas las ´ ordenes aparezca en pantalla el gr´ afico.ytaylor). y no se va a ejecutar. y del ejercicio 0. Ejercicio 0. lo primero que haremos es ejecutar clear para borrar las variables activas.39 Pedir ayuda de los comandos grid y plot. una vez que ´ este ya ha sido ejecutado alguna vez. Tambi´ en se puede copiar este gr´ afico al portapapeles desde la ventana del gr´ afico.38.37. consideramos el fichero correspondiente al dibujo de las gr´ aficas de la secci´ on 0. seleccionar Edit. Ejercicio 0. >> help shg SHG Show graph window. Por tanto. Copy Figure. y la o significa que los puntos se van a marcar con un circulito. Para empezar a trabajar sobre esta parte del tutorial. La g se refiere al color verde (green).8.m. como ya vimos en el ejercicio 0. se utiliza la orden shg .7. no es necesario reproducir esas l´ ıneas.41 Dibujar la curva t. M-file) y debemos ir escribiendo y/o copiando-pegando los comandos necesarios. para despu´ es pegarlo en un documento Word por ejemplo. aunque cualquier editor de texto es v´ alido dado que la codificaci´ on de los archivos de comandos de MATLAB es el est´ andar ASCII como sucede habitualmente en los lenguajes de programaci´ on. es un comentario. Para ejecutar los comandos del fichero se debe especificar el intervalo entre los valores de las abscisas en el muestreo.38 En la ventana en la que aparece la figura. Ejercicio 0. 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.40 Dibujar la curva t. El editor m´ as conveniente es el que trae incorporado el propio MATLAB. 28 . A partir de la versi´ on 5. 0. Ejercicio 0. New. 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.’mx’). y facilita sus repeticiones.x. Los ficheros ejecutables de MATLAB. Para abrir el editor pinchamos en (File. que hace que la ventana del gr´ afico se convierta en la activa. y del ejercicio 0. Ello permite realizar operaciones m´ as complejas.Lenguajes de Programaci´ on: Gu´ ıa ECTS >>plot(x. El editor de MATLAB es muy simple y suficiente para este tipo de aplicaciones. P´ ag. Primero hay que crear el fichero. los M-files.37 con cruces rojas y con una ret´ ıcula incorporada (grid).’go’. A estos ficheros se les suele llamar scripts. Conjuntos de ´ ordenes En esta secci´ on explicaremos c´ omo reunir ´ ordenes en ficheros ejecutables desde la l´ ınea de comandos de MATLAB.

m.´ UNIDAD DIDACTICA 0. >>tutorm >>plot(x.ytaylor) Una vez ejecutada esta instrucci´ on deber´ a aparecer una ventana con una gr´ afica como la de la Figura 3. % % Para ejecutarlo tienes que fijar el paso % h : intervalo entre las x % % El programa genera tres vectores. Por defecto. Error in ==> C:\MATLAB\bin\tut. % x con las abscisas. En este caso. En versiones previas. ytaylor=x-x. bien con el comando path o con el icono correspondiente. para volver a activar la vista inicial de MATLAB se procede como se indica en la figura 2.m. Ahora se ha de volver a la ventana con la l´ ınea de comando y se teclea en esta l´ ınea el nombre del fichero quitando . xmax=2. se puede indicar la ruta del archivo en el path browser con el icono correspondiente. Si se desea ejecutar el programa otra vez pero con un paso diferente. si se guarda en el directorio . >>tutorm ??? Undefined function or variable ’h’. MATLAB buscar´ a en los directorios indicados en el path un fichero llamado tutorm. Una vez que se hayan introducido las sentencias. yseno=sin(x).ˆ3/6. x=xmin:h:xmax.m % Seno y desarrollo del seno. MATLAB lo encontrar´ a 6.1.\matlab\bin. aparecer´ a un mensaje de error.m On line 13 ==> x=xmin:h:xmax. 6 P´ ag. Cuando tecleamos tutorm en la l´ ınea de comandos. dependiendo de la versi´ on de MATLAB que estemos usando. % e ytaylor con el desarrollo % hasta el termino cubico del seno en torno al cero.yseno. 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. se pueden guardar en la carpeta que se desee que despu´ es se incorpora a la ruta de b´ usqueda (path). Esto se puede hacer de varias maneras. >>h = 0. TUTORIAL DE MATLAB % file: tutorm. % xmin=-2. hay que tener Si se utiliza MATLAB en el centro de c´ alculo o laboratorio de una facultad o escuela. aunque hay que comunicar a MATLAB la ruta en la que se encuentra para que MATLAB lo encuentre. En este caso tutorm.’rx’. Si se se invoca el fichero sin haber definido primero la variable h.. o desde el men´ u File con la opci´ on Set Path. yseno con % el seno evaluado en esas abscisas. En las versiones 6. se guarda el fichero en la carpeta que creamos conveniente. Se deben definir todas las variables que no se definen en el propio script y que ´ este utiliza. probablemente el usuario no tenga permiso de escritura en ese directorio y no pueda guardar ah´ ı sus ficheros. 29 .x.5 y superiores se puede hacer modificando la carpeta-directorio activo en la caja correspondiente (ver figura 1).

01.1 que se almacena en los vectores xp.:) BA(3.:)-2*BA(1.:) IP=[1 0 0. El programa sobreescribir´ a los vectores x. B = [ [1 2 3]’ [2 4 7]’ [3 5 8]’].Lenguajes de Programaci´ on: Gu´ ıa ECTS Figura 2: Recuperar vista de la figura 1 cuidado. >>xp = x. 30 .0 0 1.:)-3*BA(1. yseno e ytaylor. >>ytaylorp = ytaylor.0 1 0]. la primera con un paso h de 0. >>tutorm Tenemos dos aproximaciones. almacen´ andolos en nuevas variables. Si se quieren guardar estos vectores hay que especificarlo.42 Calcular la dimensi´ on que tienen que tener los vectores x y xp y confirmar el resultado utilizando la orden size. yseno e yatylor. BA=IP*BA P´ ag.43 Crear y ejecutar desde MATLAB un fichero que se llame BAIP. >>h = 0.:)=BA(3. ysenop e ytaylorp y la segunda relativa a un paso de 0. >>ysenop = yseno. Ahora podemos seleccionar un nuevo paso h y volver a ejecutar tutor.01 que guardamos en los vectores x. BA=[B v] BA(2. Ejercicio 0.m con la secuencia de comandos siguiente: v = [1 3 5]’.:)=BA(2. Ejercicio 0.

TUTORIAL DE MATLAB Figura 3: Gr´ afica correspondiente al ejemplo tutorm. Borrar todas las variables activas de la memoria.2586 + 0. 2.05 y termine en el punto 1. Ejercicio 0. y ) con cruces rojas y con una ret´ ıcula ( grid) incorporada.m.9.5. que tenga un incremento entre componentes de 0.3966i P´ ag. Dibujar la curva (t.0000i O dividirlos como: >>(2+3*i)*(3-7*i) ans = -0. 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. Podemos multiplicar dos n´ umeros complejos como: >>(2+3*i)*(3-7*i) ans = 27. 2 0. Definir un vector t cuya primera componente sea −4. Definir un vector y a partir de cada componente del vector t reci´ en definido como: y = 5e−t + sin(10t) 4.m con una secuencia de comandos que realicen las operaciones siguientes: 1.45 Crear y ejecutar desde MATLAB un fichero que se llame CURVATY. 31 . MATLAB y n´ umeros complejos MATLAB entiende la aritm´ etica compleja y es perfectamente posible trabajar con n´ umeros complejos. 3.0000 .´ UNIDAD DIDACTICA 0.

Matem´ aticas simb´ olicas con MATLAB MATLAB dispone de herramientas para c´ alculo simb´ olico. >>int(f) ans= 1/2*cos(x)*sin(x)+1/2*x Podemos tambi´ en definir una matriz que dependa de x y de una nueva variable y : >>syms y >> A=[x y x-y 2 xˆ2 y -x -y 0] A = [ x.2000 >> eval(det(A)) ans = 114. que es una especie de versi´ on reducida de Maple. x-y] [ 2. Lo primero que tenemos que hacer es definir una variable como susceptible de ser utilizada en c´ alculo simb´ olico: >>syms x Ahora podemos definir una funci´ on que dependa de x y cuya integral queramos calcular: >>f=cos(x)ˆ2. ´ estas dejan de ser s´ ımbolos. -y.2 y = -3. 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. un programa de c´ alculo simb´ olico muy conocido. Para ello es necesario instalar el Symbolic Math Toolbox.4301 En el momento en que hemos asignado valores a las variables. 0] Y podemos calcular su determinante de modo simb´ olico: >> det(A) ans = -2*y*x+2*yˆ2+xˆ4-xˆ3*y Ejercicio 0.Lenguajes de Programaci´ on: Gu´ ıa ECTS 0. y] [ -x. Si queremos que vuelvan a serlo tenemos que hacerlo de modo expl´ ıcito P´ ag.4100 >> y=-3. Aqu´ ı podemos usar esta caja de herramientas para resolver integrales y calcular determinantes de modo simb´ olico entre otras cosas.46 Calcular de modo simb´ olico la inversa de la matriz A. 32 . y.10. xˆ2.41 x = 2.

33 .47 Definir una funci´ on f como e−x . Ejercicio 0.48 Pedir ayuda de la funci´ on diff y calcular la derivada de f .´ UNIDAD DIDACTICA 0. Ejercicio 0.327. Evaluar esta derivada para x = −3.49 Pedir ayuda de la funci´ on limit y calcular el l´ ımite de f cuando x → ∞. 2 P´ ag. TUTORIAL DE MATLAB >>syms x Ejercicio 0.

Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag. 34 .

comenzando por el concepto de funci´ on y estudiando la entrada y salida ya con el curso muy avanzado. Tambi´ en se realiza primeramente una contextualizaci´ on del curso desde la perspectiva de la historia de la Programaci´ on y sus fundamentos.2. 35 . En la unidad 1 se tratan principalmente las ideas de funciones. General Una vez que en el tutorial de la unidad 0 hemos usado MATLAB como una calculadora potente. El entender las cosas desde la perspectiva funcional proporciona la posibilidad de asimilar desde el principio conceptos claves en Programaci´ on. La que ahora presentamos es la funci´ on m´ as sencilla que veremos durante el curso.. la divisi´ on de tareas y su codificaci´ on en funciones.. Sin embargo. y la unidad 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. conseguiremos que al final los alumnos est´ en m´ as familiarizados con las estructuras esenciales de la Programaci´ on. Lo u ´nico que se hace es calcular una expresi´ on matem´ atica sencilla y asignar ese valor a y . crucial cuando se abordan problemas grandes y se trabaja en equipo. asignaci´ on y la primera estructura de control del curso: el condicional. Tambi´ en se trabajan ideas esenciales relativas a el dise˜ no de funciones y a la reusabilidad de c´ odigo ya escrito. dedicada al estudio de los bucles. dedicada al concepto de funci´ on y la estructura de control condicional.m P´ ag. 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 programa “Hola mundo”. visto ya como cajas negras que realizan determinadas tareas. La ventaja de este enfoque es que los alumnos comienzan por los conceptos fundamentales: funciones. etc. x y un argumento de salida y . y que servir´ a de base para construir nuevas funciones. Constituyen la base sobre la que se cimenta el resto del curso.1. variables. En ese sentido. % ud1_f1. Tiene un argumento de entrada. ha llegado el momento de aprender a programar. a˜ nadiendo sucesivamente nuevos conceptos y estructuras. en este curso que ahora comienza nos hemos decidido por una estructura similar a la programaci´ on funcional. Como el aprendizaje es continuo. son las m´ as importantes. argumentos de las funciones. como el de encapsulamiento de tareas. 1. la unidad 1.Unidad Did´ actica 1 Funciones y Condicionales 1. pero al fin y al cabo una calculadora. estructuras de control y vectores.

el adjetivo locales procede de que viven en el espacio de memoria de la funci´ on. La primera l´ ınea comienza con la palabra reservada function lo cual es com´ un a todas las funciones que veremos en el curso. tendremos 4 variables x. una vez realizadas las operaciones que est´ en especificadas en esa parte derecha. y se crea espacio en memoria para la variable x.3906 En ese caso. Las variables x e y se llaman variables locales de 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 figura 1. La situaci´ on no cambia sustancialmente si invocamos a la funci´ on del siguiente modo: >> x=5. El nombre de la funci´ on.m mientras ´ esta se ejecuta. para evitar confusiones. z y t.m donde esta funci´ on se encuentra. 1 Esto no es exactamente as´ ı.3906 Volvemos a tener 4 variables en memoria. 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. y . >> y=ud1_f1(x) y = 23. Cuando invocamos esta funci´ on desde la l´ ınea de comandos podr´ ıamos hacerlo del siguiente modo. 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 .1). Durante esta ejecuci´ on se define la variable de salida y . obteniendo la siguiente respuesta: >> ud1_f1(5) ans = 23. 23. como este primer ejemplo es la funci´ on ud1_f1. Cuando se llama a la funci´ on. P´ ag. se carga en memoria RAM la funci´ on ud1_f1. tecla de retorno de carro. Se crea espacio tambi´ en para y . debe coincidir con el nombre del archivo .3906. El s´ ımbolo = en Programaci´ on es una asignaci´ on. Por tanto.Lenguajes de Programaci´ on: Gu´ ıa ECTS % Una funci´ on sencilla % un argumento function y=ud1_f1(x) y=xˆ2-log(x). 36 .m. En ese espacio se coloca el valor 5. no siendo por tanto sim´ etrico. debemos guardarla en el archivo ud1_f1. en la cual al final de la misma est´ a el resultado. Una vez terminada la ejecuci´ on se devuelve el control a la l´ ınea de comandos.3906 Cuando se pulsa Enter. el ordenador ejecuta las sentencias de la funci´ on (en este caso una sola) de arriba abajo. 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. Una vez hecho esto. pero esta es la imagen m´ as adecuada para un principiante en Programaci´ on. se asigna a lo que est´ a a la izquierda del s´ ımbolo igual lo que haya a la derecha del mismo. Podemos invocar a la funci´ on ud1_f1. >> z=ud1_f1(t) z = 23. 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.m.m ahora del siguiente modo: >> t=5.

dentro de la unidad de red Z. P´ ag. >> x=5. Si la invocamos desde la l´ ınea de comandos del siguiente modo. En el curso 2008-2009.1: Ejemplo ud1 f1.m y la grabamos ahora como: function y=ud1_f1(x) x=2. Ello es as´ ı porque la variable local x vive en la funci´ on.3069 >> x x = 5 el resultado no ser´ a correcto. y aunque cambiemos la variable local en la funci´ on. Dentro de esta. si cambiamos el valor de la x en el c´ odigo de la funci´ on. Dentro de esa carpeta crea otra que se llame LP . pero x tampoco habr´ a cambiado su valor. la carpeta se llamar´ ıa C 0809.´ UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES Figura 1. Esta ser´ a tu carpeta de trabajo para todo slos ejemplos y ejercicios de la unidad 1. la variable en el espacio de comandos no se ve afectada. 37 . copia el valor de la variable x del espacio de comandos. Si no lo has hecho ya. est´ an en mundos diferentes que s´ olo se comunican a trav´ es de la l´ ınea de argumentos. Uso de la memoria RAM De hecho.m. Hagamos ahora algunos ejercicios para consolidar estas ideas: Ejercicio 1. la variable t del p´ arrafo anterior y la variable x del espacio de memoria de la ventana de comandos no se ven afectadas.1 Vamos a preparar el espacio donde vas a trabajar. >> y=ud1_f1(x) y = 3.crea una carpeta llamada ud1. O sea que si cambiamos la funci´ on ud1_f1. Al principio de la misma. 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. y=xˆ2-log(x).

3 Crea una funci´ on que reciba el radio de un c´ ırculo y devuelva su ´ area. Para invocarla. pide ayuda sobre pi para usarlo. Funciones con varios argumentos de entrada El siguiente paso es construir funciones en las que haya m´ as de un argumento de entrada. se nos ocurren estas tres posibilidades.2: >> ud1_farea(2. Deber´ ıa devolver π .Lenguajes de Programaci´ on: Gu´ ıa ECTS Ejercicio 1. Ejercicio 1. la cual calcula el ´ area de un rect´ angulo. En la segunda posibilidad pasamos dos variables correspondientes al espacio de memoria de la ventana de comandos. x e y . los cuales son copiados por las variables locales a y b.2) ¿Son correctos los resultados? ¿Qu´ e errores o problemas da? Ejercicio 1.3. New ). >> y=5.4) ans = 12 En la primera.2 Edita manualmente la funci´ on ud1 f1 creando un archivo nuevo con el editor on desde la ventana de comandos (con File. a y b. a trav´ es de la lista de argumentos. 38 . deber´ ıa devolver 4 ∗ π (puedes calcular ese valor con MATLAB). las cuales son copiadas igualmente por las variables locales de la rutina. simplemente los colocamos uno tras otro separados por comas dentro de los par´ entesis a la derecha del nombre de la funci´ on.3) ans = 6 >> x=3. aprovechando lo explicado en la secci´ on 1.4 Prueba la funci´ on que has creado con un c´ ırculo de radio la unidad.1) ud1_f1(0) ud1_f1(-2.y) ans = 15 >> ud1_farea(x. % ´ area del rect´ angulo de lados a y b function area=ud1_farea(a. >> ud1_farea(x.b) area=a*b. Si necesitamos m´ as argumentos de entrada. pasamos directamente dos n´ umeros. 1. gu´ ardala en tu carpeta de trabajo y ejecuta: >> >> >> >> ud1_f1(2. Tenemos as´ ı la siguiente. Finalmente en la tercera. Pru´ ebala con 2. % ud1_farea % primera funci´ on con m´ as de un argumento.3) ud1_f1(0. MATLAB conoce el valor de π . P´ ag.

Si invocamos esta funci´ on desde la ventana de comandos.´ UNIDAD DIDACTICA 1. y preguntamos despu´ es lo que valen esas variables locales. Ejercicio 1. d=a+b+c. P´ ag.m % area de un pol´ ıgono regular de n lados % primeras variables propias de la rutina. >> Los ejercicios correspondientes a estos ejemplos son los siguientes: Ejercicio 1. gu´ ardalas en tu carpeta de trabajo y pru´ ebalas desde la ventana de comandos de MATLAB.7 Crea una funci´ on que reciba la masa y la velocidad de un m´ ovil y devuelva la energ´ ıa cin´ etica.c) b=c. FUNCIONES Y CONDICIONALES tenemos una combinaci´ on de las dos posibilidades anteriores. En el c´ alculo de la apotema los dos argumentos no conmutan entre s´ ı. las cuales no pertenecen al espacio de memoria de la ventana de comandos tendremos el siguiente resultado: >> ud1_fareapol(3.b. % ud1_fareapol. % las variables no conmutan pues juegan distinto papel function area=ud1_fareapol(l. Ejercicio 1.0000 >> ud1_fareapol(4.4) ans = 9.5 Edita manualmente las funciones ud1_farea y ud1_fareapol. En el siguiente ejemplo los argumentos no conmutan entre s´ ı. % per´ ımetro a=l/(2*tan(pi/n)). a=b.3) ans = 6.8 Consideramos la funci´ on function d=ud1_fprueba(a. >> a ??? Undefined function or variable ’a’. P. Se trata de calcular el ´ area de un pol´ ıgono regular sabiendo el n´ umero de lados y el lado.a.6 Crea una funci´ on que reciba la base y la altura de un tri´ angulo y devuelva el ´ area. area=P*a/2. Ejercicio 1.9282 >> P ??? Undefined function or variable ’P’.n) P=n*l. 39 . Es la primera funci´ on en la que usamos variables locales a la funci´ on.

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 coeficientes 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 coeficientes para que la ecuaci´ on tenga ra´ ıces reales. Se recomienda usar una variable auxiliar D para definir el discriminante b2 − 4ac. ¿Conmutan entre s´ ı los argumentos de entrada?. Para comprobar si tu c´ odigo es correcto, usa los coeficientes 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 define la variable mayor por defecto como a. Ahora se comprueba si b es mayor que a, y si eso es cierto se define 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 definida 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

Ejercicio 1. 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.19 Edita manualmente la funci´ on ud1_ftrozos2. else y=ud1_f1(x). 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). En el siguiente ejemplo codificamos una funci´ on definida a trozos. 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. 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. en la que el valor de uno de los trozos de la funci´ on se obtiene llamando a una funci´ on creada previamente. Vista de ese modo.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. FUNCIONES Y CONDICIONALES Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.4.18 Crea una funci´ on que reciba un valor x y devuelva. 43 . utilizando la estructura if-else.´ UNIDAD DIDACTICA 1. Ejercicio 1. el valor y de la funci´ on definida a trozos: x + 1 x < −1 y= 1 − x2 x ≥ −1 1. Haremos uso abundante de esta t´ ecnica durante el curso y si el estudiante es h´ abil conseguir´ a simplificar la resoluci´ on de muchos ejercicios si hace buen uso de funciones ejemplo estudiadas en clase y de funciones codificadas al resolver otros ejercicios. 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.m.6. gu´ ardala en tu carpeta de trabajo y pru´ ebala. es natural que sea llamada por otra funci´ on que la necesita como parte de la misma. Devuelve el valor de la funci´ on: % f(x)=x si x<1 % f(x)=xˆ2-ln(x) si x>=1 function y=ud1_ftrozos2(x) if x<1 y=x+1. % ud1_ftrozos2 % primera funcion q llama a otra funcion % ud1_ftrozos2(x). utilizando la estructura if-else. Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. modificando alguna de las anteriores. P´ ag. similar a la del ejemplo 1.16 Edita manualmente la funci´ on ud1_felseab. la ud1_f1.

Lenguajes de Programaci´ on: Gu´ ıa ECTS >> >> >> >> ud1_ftrozos2(2... Condicionales anidados. Para mostrar el funcionamiento. 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..arg2. Es habitual que dentro de un bucle hay condicionales. 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)... 1. Ejercicio 1. 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..21 Usando las funciones de los ejercicios 1. el signo ser´ a 1. Por tanto. si n es 0.9) ¿Son correctos los resultados? ¿Qu´ e errores o problemas da? Ejercicio 1.3) ud1_ftrozos2(1. el signo ser´ a 0. devuelva 0 en lugar del producto de las ra´ ıces.1) ud1_ftrozos2(0) ud1_ftrozos2(0. Crea una funci´ on que que reciba los tres coeficientes de un polinomio de grado 2.22 (Para los valientes). if cond bloque10 if cond1 bloque11 end bloque12 else bloque2 end .. planteamos un ejemplo muy interesante.) . hay que gestionar tres posibilidades excluyentes.. . crea una funci´ on que reciba los tres coeficientes de un polinomio de segundo grado de ra´ ıces reales y devuelva el producto de las mismas (se elegir´ an los coeficientes para que as´ ı sean). b2 − 4ac. 44 . lo que abordaremos primero eliminando una de ellas frente a las otras dos y despu´ es las otras dos entre si. Ejercicio 1. y si n es estrictamente positiva... P´ ag. puedes ver el signo del discriminante.20 Utilizando la funci´ on del ´ area del rect´ angulo (ud1_farea). function y=nombrefuncion(arg1. Las estructuras de control pueden contener dentro de sus bloques de instrucciones internos otras estructuras de control. devolver el signo de una variable entera n...7. Si n es estrictamente negativa el signo se toma como -1.. Para ver si las ra´ ıces con complejas o reales.10.9 y 1... Prueba con varios polinomios (el producto de las dos ra´ ıces ha de ser c/a). Esto lo reflejamos en el siguiente esquema.. .

3 si es sobresaliente (calificaci´ on mayor o igual que 9 y menor o igual que 10) y -1 si el argumento no est´ a entre 0 y 10. Ejercicio 1. Ejercicio 1. else if n==0 signo=0. gu´ ardala en tu carpeta de trabajo y pru´ ebala. Ejercicio 1. En la definici´ on de ud1 f1 hay un logaritmo del argumento x implicado. FUNCIONES Y CONDICIONALES % ud1_fsigno % funci´ on que devuelve el signo de un n´ umero entero n % -1 si es negativo. else signo=1. desde la ventana de comandos de MATLAB. Si se trabajan m´ as de 40 horas. donde m´ ax significa m´ aximo. 7 cos(6x)}.24 Se trata de construir una funci´ on que reciba una calificaci´ on (entre 0 y 10) y devuelva 0 si es suspenso (calificaci´ on estrictamente menor que 5). end end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.27 Codifica la funci´ on f (x) = m´ ax{ud1 f 1(x). P´ ag. 0 si es 0. No se podr´ an utilizar operadores l´ ogicos. 1 si es positivo. de las horas que ha trabajado y de un fijo de productividad que se cobra si se trabajan m´ as de 30 horas. function signo=ud1_fsigno(n) if n<0 signo=-1. 45 . ese logaritmo no podr´ a ser evaluado y tomaremos como m´ aximo la u ´nica funci´ on que est´ a definida.26 Funci´ on q devuelva el salario semanal de un trabajador en funci´ on del coste hora.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. 1 si es aprobado (calificaci´ on mayor o igual que 5 y menor que 7). las horas por encima de esas 40 se pagan un 50 % m´ as caras (horas extras).23 Edita manualmente la funci´ on ud1_fsigno. No se podr´ an utilizar operadores l´ ogicos. 2 si es notable (calificaci´ on mayor o igual que 7 y menor que 9).´ UNIDAD DIDACTICA 1. % primeros condicionales anidados. No se podr´ an utilizar operadores l´ ogicos. cuando x sea menor o igual que cero. Por tanto. valor y de la funci´ on definida a trozos: x<0 0≤x<1 x≥1 Ejercicio 1.

. cond1.. Pretendemos reflejar esto con el siguiente esquema: function y=nombrefuncion(arg1.. es cierta. se pase a una tercera y as´ ı sucesivamente. se ejecuten el correspondiente segundo grupo de sentencias. Los dem´ as casos son an´ alogos. se evaluar´ ıa la condici´ on 2 y si est´ a fuese cierta.Lenguajes de Programaci´ on: Gu´ ıa ECTS 1.) . Si ninguna de las condiciones fuese cierta. se pasar´ ıa directamente a la ejecuci´ on del bloque n.. la orden terminar´ a con una sentencia else cuyo bloque de instrucciones posterior se ejecutar´ a si ninguna de las condiciones ha resultado cierta. 1 si es aprobado (calificaci´ on mayor o igual que 5 y menor que 7).. elseif nota<7 clave=1.arg2. s´ olo comprobamos si es menor que 7. . Se trata de construir una funci´ on que reciba una calificaci´ on (entre 0 y 10) y devuelva 0 si es suspenso (calificaci´ on estrictamente menor que 5). y a posteriori se pasar´ a directamente a las sentencias posteriores a la sentencia end.. 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. 46 .. Finalmente.. P´ ag. Si no lo es. ... Vemos esta estructura con el siguiente ejemplo. Si la condici´ on 1 fuese falsa. elseif nota<9 clave=2.. ... Para codificar este ejemplo. 2 si es notable (calificaci´ on mayor o igual que 7 y menor que 9) y 3 si es sobresaliente (calificaci´ on mayor o igual que 9).. else bloque n end .... pero si la segunda condici´ on es falsa. se ejecutar´ a el bloque 1 de sentencias. lo primero que comprobamos es si la nota es menor que 5.. Si la condici´ on 1. se compruebe una segunda condici´ on y si esta es cierta... pero si esta es falsa. La idea es que si una condici´ on es cierta se ejecuten unas sentencias.... pasando directamente a las sentencias posteriores a la sentencia end. if cond1 bloque 1 elseif cond2 bloque 2 elseif cond3 bloque 3 elseif..8.. % ud1_fnotas % primera vez q usamos el elseif function clave=ud1_fnotas(nota) if nota<5 clave=0. por que ya sabemos que va a ser mayor o igual que 5. se ejecutar´ ıa el bloque 2.

necesitaremos combinar condiciones elementales mediante los operadores l´ ogicos habituales. 1 si es aprobado (calificaci´ on mayor o igual que 5 y menor que 7).31 Funci´ on q devuelva el salario semanal de un trabajador en funci´ on del coste hora. Ejercicio 1. Se utilizar´ a la variante elseif del condicional para realizar este ejercicio. estudiados a menudo durante la etapa de la educaci´ on secundario. ese logaritmo no podr´ a ser evaluado y tomaremos como m´ aximo la u ´nica funci´ on que est´ a definida. de las horas que ha trabajado y de un fijo de productividad que se cobra si se trabajan m´ as de 30 horas. FUNCIONES Y CONDICIONALES else clave=3. 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. de modo similar a como sucede con las operaciones aritm´ eticas. Se utilizar´ a la variante elseif del condicional para realizar este ejercicio. Ejercicio 1. cuando x sea menor o igual que cero.´ UNIDAD DIDACTICA 1. 3 si es sobresaliente (calificaci´ on mayor o igual que 9 y menor o igual que 10) y -1 si el argumento no est´ a entre 0 y 10. 1. Si se trabajan m´ as de 40 horas. las horas por encima de esas 40 se pagan un 50 % m´ as caras (horas extras). desde la ventana de comandos de MATLAB. Operadores l´ ogicos Si queremos construir condiciones algo m´ as interesantes.32 Codifica la funci´ on f (x) = m´ ax{ud1 f 1(x). end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.28 Edita manualmente la funci´ on ud1_fnotas. Para el Y l´ ogico se usa el s´ ımbolo reservado &. Si uno de los n´ umeros es mayor lo ser´ a porque es al mismo tiempo mayor que uno y mayor que otro. 47 . donde m´ ax significa m´ aximo. Por tanto.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 definida a trozos: x<0 0≤x<1 x≥1 Se utilizar´ a la variante elseif del condicional para realizar este ejercicio. En la definici´ on de ud1 f1 hay un logaritmo del argumento x implicado. 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. ¿Que ocurre si el valor del argumento no est´ a entre 0 y 10? Ejercicio 1. P´ ag.29 Se trata de construir una funci´ on que reciba una calificaci´ on (entre 0 y 10) y devuelva 0 si es suspenso (calificaci´ on estrictamente menor que 5). gu´ ardala en tu carpeta de trabajo y pru´ ebala. Necesitaremos saber escribir al menos los operadores Y l´ ogico y el ´ O l´ ogico. Ejercicio 1. 7 cos(6x)}.9. Se utilizar´ a la variante elseif del condicional para realizar este ejercicio. 2 si es notable (calificaci´ on mayor o igual que 7 y menor que 9).

En los siguientes ejercicios veremos alg´ un ejemplo de utilizaci´ on de este operador. desde la ventana de comandos de MATLAB. function mayor=ud1_fmayor(a. end if b>a & b>c mayor=b. que se obtiene pulsando la tecla Alt Gr y la del 1.33 Edita manualmente la funci´ on ud1_fmayor.35 Construye una funci´ on que reciba tres valores a.Lenguajes de Programaci´ on: Gu´ ıa ECTS %% operadores logicos.38 ¿Qu´ e devuelve la siguiente funci´ on? P´ ag. Para ´ este se usa el s´ ımbolo |. end ´ l´ Otro operador interesante es el O ogico (inclusivo). b y c (que se supondr´ an diferentes) y devuelva 1 si a es el mayor. end if c>a & c>b mayor=c. Ejercicio 1. No se podr´ an utilizar operadores l´ ogicos. gu´ ardala en tu carpeta de trabajo y pru´ ebala. 2 si b es el mayor. if b>mayor mayor=b.b. b y c devuelva el mayor si alguno de ellos es positivo y el menor en caso contrario. Ejercicio 1.b. Ejercicio 1. if c>mayor mayor=c.34 Construye una funci´ on que reciba tres valores a. 48 . b y c (que se supondr´ an diferentes) y devuelva el mayor de ellos. end end Ejercicio 1.c) if a>b & a>c mayor=a. solo un bloque if-else y una llamada a la funci´ on ud1 fmayorab Ejercicio 1.37 ¿Cu´ al es el significado del argumento de salida de la siguiente funci´ on? function mayor=ud1_fmayortres(a.36 Construye una funci´ on que reciba tres valores a. Ejercicio 1. y 3 si lo es c.c) mayor=a.

41 (Para valientes) Idem con siete valores. (1. 2. Prueba con (1.36. (2. Ejercicio 1. 2. else y=y-a. la potencia ser´ ıa (b − a) ∗ (c − b). Ejercicio 1. Ejercicio 1. 1). etc y con (1. 1. 1. Trata de hacerlo con un u ´nico if − else y utilizando dos veces la funci´ on del apartado 1.c) y=a+b+c. es decir. c.40 (Para valientes) Idem con seis valores.b. 1) y (1. 49 . 1) (en estos cuatro u ´ltimos casos deber´ ıa dar 0). 2).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. 1. end else y=b. 1. P´ ag. (2. if a>c y=y-c. (3.´ UNIDAD DIDACTICA 1. if a>b | c>b y=y-b. Trata de hacerlo con el menor n´ umero posible de if − else (ninguno).b. 1). FUNCIONES Y CONDICIONALES function y=ud1_prueba2(a.42 (Para valientes) ¿Qu´ e errores hay en el siguiente programa? Se supone que la funci´ on deber´ ıa devolver la potencia del segmento definido por tres abscisas a. function pot=ud1_fpotencia(a. 3). Ejercicio 1. construye una funci´ on que devuelva el m´ aximo de cuatro valores. end Trata de obtenerlo sin usar el ordenador y despu´ es compru´ ebalo con algunos ejemplos. b. No se sabe cu´ al es la relaci´ on de orden entre los valores pero si fuesen crecientes.39 Usando la funci´ on ud1 fmayor. 3). el producto de las longitudes de los dos segmentos que determinan. 2.

desde la ventana de comandos de MATLAB. Ejercicio 1. Sin embargo. Cuando se trate de valores correspondientes a n´ umeros reales. P´ ag. el cual se obtiene pulsando las teclas AltGr y 4. es f´ acil entender que ser´ a imposible almacenar las infinitas cifras que hay a la derecha del punto decimal. 50 . 1 si dos de ellos son iguales entre si pero el tercero es diferente. Ejercicio 1. En los siguientes ejercicios veremos alg´ un ejemplo de utilizaci´ on de este operador. esta operaci´ on es m´ as delicada y hablaremos de ella m´ as adelante. est´ a la dificultad conceptual relativa a la idea de igualdad entre n´ umeros reales. Ejercicio 1.10. colocando el s´ ımbolo = de modo duplicado. Ejercicio 1. b y c y devuelva 1 si a = b.44 Construye una funci´ on que reciba tres n´ umeros enteros a. Adem´ as de estas dificultades de almacenamiento.46 sin utilizar ni else. gu´ ardala en tu carpeta de trabajo y pru´ ebala. end La negaci´ on l´ ogica se escribe en MATLAB anteponiendo al operador correspondiente el s´ ımbolo ∼. el operador para comprobar si dos valores son distintos ser´ a ∼=. b y c y devuelva 1 si son iguales entre si. b y c y devuelva 2 si los tres son iguales entre si.45 Construye una funci´ on que reciba tres n´ umeros enteros a. % ud1_figuales % operador de comparacion para numeros enteros function chivato=ud1_figuales(m.46 Construye una funci´ on que reciba tres n´ umeros enteros a. Operadores de comparaci´ on: ¿son iguales? La operaci´ on de comparar si dos valores enteros son iguales tiene una sintaxis espec´ ıfica en MATLAB. ni elseif.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. dado que la memoria RAM es finita. En el siguiente ejemplo se muestra su uso para construir una funci´ on que indica si dos valores son iguales o no. ==. 1.n) if m==n chivato=1. Por tanto. y 0 si los tres son distintos. 2 si a = b y b = c y 3 si los tres valores son iguales.Lenguajes de Programaci´ on: Gu´ ıa ECTS 1.43 Edita manualmente la funci´ on ud1_figuales. y 0 en caso contrario. en n´ umeros racionales peri´ odicos o en n´ umeros irracionales. else chivato=0.47 Repetir el ejercicio 1. Ejercicio 1.

2 si es is´ osceles y 1 si es escaleno. as´ ı como la longitud de una las diagonales d1 y devuelva 1 si la figura es un cuadrado. c. Ejercicio 1. pero si no tienen ning´ un defecto. etc.50 Modifica 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.c) % Precisi´ on con la que trabajamos.´ UNIDAD DIDACTICA 1. if abs(a-b)<prec & abs(b-c)<prec tipo=3. Todo n´ umero menor que % esa cantidad ser´ a cero para nosotros prec=(a+b+c)*1e-5. Ejercicio 1. y como se comprueba la igualdad de los lados recurriendo a la funci´ on valor absoluto. Ejercicio 1.49). 3 si es un tri´ angulo equil´ atero.49 Crea una funci´ on que reciba tres valores. d. 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. En el siguiente ejemplo observamos c´ omo se define ese umbral para comprobar si un tri´ angulo es equil´ atero. P´ ag. b. function tipo=ud1_ftriangulos(a. 3 si es un trapecio y 4 si no es ninguna de estas posibilidades. else tipo=1. a + b > c.48 Entra en al carpeta utilizando el enlace directo que tienes en el escritorio. abs en MATLAB.51 Codifica el ud1_ftriangulos en una sola l´ ınea usando la funci´ on ud1 ftriangulos y el ejercicio 1. Lo mismo sucede con los n´ umeros reales. Asignaturas\LP \Ejemplos. 2 si es un rect´ angulo. As´ ı.49. 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. b y c. Prueba la funci´ on ud1 ftriangulos. correspondientes a los lados consecutivos de un trapezoide. 51 .52 (Para valientes) Construye una funci´ on que reciba 4 n´ umeros a.. is´ osceles. a. % ud1_ftriangulos % recibe a. 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. Ejercicio 1. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. aquellos ficheros cuyo nombre empieza por ud1 a tu propia carpeta ud1. dos sillas del mismo modelo son objetivamente distintas si las vemos con mucho cuidado. ser´ an a todos los efectos iguales. para % comprobarlo hay q definir una precis´ on-umbral.b. Copia de ah´ ı todos los ejemplos correspondientes a la unidad 1. 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 significado y utilidad de dichas cantidades. es decir. elseif abs(a-b)<prec | abs(a-c)<prec | abs(b-c)<prec tipo=2. a + c > b y b + c > a) y 0 en caso contrario.

devuelve el ´ area del cuadrado de lado a % Si tipo=5. % ud1_fareafig % primera funci´ on que combina variables esencialmente diferentes. Ejercicio 1. elseif tipo==4 area=a*a. Para calcular estas ra´ ıces llamaremos a las funciones 1.) y recibe tambi´ en un entero indicando el tipo de figura concreta a la que nos referimos de entre esa lista. Ejercicio 1. La funci´ on recibe los valores correspondientes a las dimensiones principales de una determinada figura elemental (rect´ angulo. c´ ırculo.. devuelve el ´ area del c´ ırculo de radio a % Si tipo=3. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. 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. 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. y los coeficientes a.54 Modifica la funci´ on ud1_fareafig para que tambi´ en calcule el ´ area del rombo. etc. raiz . b y c de un polinomio de segundo grado.58 P´ ag. 52 . para lo cual usar´ a del modo que corresponda la funci´ on del ejercicio 1. Ejercicio 1.56 Construye una funci´ on que reciba un par´ ametro.a.. que tiene como ra´ ıces 3 y 4.b) if tipo==1 area=a*b. elseif tipo==2 area=pi*aˆ2. Ejercicio 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.55 Codifica ud1_fareafig sin la orden else ni la elseif.9 y 1.57 Codifica una funci´ on que reciba los coeficientes de un polinomio de grado 2 y devuelva la suma de sus ra´ ıces.56.a. % una como tipo que funciona como un indicador de especie (n´ umero % entero) y otras (a. bien edit´ andola manualmente o tray´ endola de una carpeta determinada. que tiene como ra´ ıces 3 y 4. devuelve el ´ area del tri´ angulo de base a y altura b % Si tipo=4. En el siguiente ejemplo conviven ambos tipos como argumentos.Lenguajes de Programaci´ on: Gu´ ıa ECTS 1. % ademas b a veces es inutil. elseif tipo==5 area=a*a*sqrt(3)/4.53 Prueba la funci´ on ud1_fareafig. Para comprobar 2 si tu c´ odigo es correcto. elseif tipo==3 area=a*b/2. % ud1_fareafig(tipo. Ejercicio 1. else area=-1.b) q funcionan como n´ umeros reales. tri´ angulo. devuelve el ´ area del rect´ angulo de lados a y b % Si tipo=2. usa los coeficientes del polinomio x − 7x + 12. Para comprobar si tu c´ odigo 2 es correcto.10. usa los coeficientes del polinomio x − 7x + 12. La funci´ on devuelve el ´ area de dicha figura.b) devuelve el ´ area de distintas figuras % Si tipo=1.

-3. 53 . t. y . Ejercicio 1. y que una yarda son 3 pies se pide construir una funci´ on que reciba una cantidad. cm o metros en SI y 1. 2 seg´ un sea pulgadas. Lo que esto significa es que se eval´ ua la expresi´ on i + 1 y se asigna su valor a i. -7. 2 seg´ un sea mm.b. Por ejemplo. pies o yardas en el sistema ingl´ es). FUNCIONES Y CONDICIONALES (Para valientes) Sabiendo que una pulgada son 2. function suma=ud1_fsumapos(a. 12. Ejercicio 1. c. y e y cuente cu´ antos son estrictamente positivos.2 o = 1.54 cm. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. si los n´ umeros son. -6 y ref vale 3.d) suma = 0.´ UNIDAD DIDACTICA 1. d. 2 o = 1.13. 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.62 Construye una funci´ on que reciba 5 n´ umeros a. Su significado es de asignaci´ on. %% ud1_fsumapos %% primera variable sumadora (x=x+algo) %% suma de los positivos entre 4 n´ umeros. end if b>0 suma=suma+b. 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. end if d>0 suma=suma+d. z . Esto abre la puerta para operaciones que no tienen sentido matem´ atico pero s´ ı en Programaci´ on. 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. b.60 Construye una funci´ on que reciba 5 n´ umeros a. 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. la suma ser´ ıa -7-5-=-13.61 Construye una funci´ on que reciba 5 n´ umeros x. 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 . Variables contador y sumador Ya vimos que el operador = en MATLAB no tiene mucho que ver con lo que ese operador significa en Algebra.7. 4. En el siguiente ejemplo aplicamos esta idea para encontrar la suma de los positivos entre cuatro n´ umeros.c. con lo cual esta variable habr´ a incrementado su valor original en una unidad.59 Prueba la funci´ on ud1_fsumapos Ejercicio 1. b. como decir que i = i + 1. que un pie son 12 pulgadas. 1. end if c>0 suma=suma+c. d. if a>0 suma=suma+a. c. 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. P´ ag.

end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. d y devuelva la suma de los que entre ellos son enteros. Ejercicio 1.14. y la de -4. para comprobar si un n´ umero es o no entero. Ejercicio 1. En el siguiente ejemplo se usa este operador. b. redondeando hacia −∞. %% 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. la parte entera de 3. 54 . floor. de un n´ umero.63 Prueba la funci´ on ud1_fesentero. Funci´ on parte entera Hay una funci´ on propia de MATLAB que se usa en muchos c´ odigos y que conviene citar.32 es -5. As´ ı.45 es 3.66 (Para valientes) Construye una funci´ on que reciba 4 n´ umeros a. c. c.64 Construye una funci´ on que reciba 4 n´ umeros a. 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. Ejercicio 1. Es la funci´ on que extrae la parte entera. P´ ag.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.Lenguajes de Programaci´ on: Gu´ ıa ECTS 1. b.

La unidad se centra en la estructura de control m´ as importante. Un bucle en programaci´ on es una sentencia que se realiza repetidas veces. Durante este curso un bucle lo relacionaremos con el uso del comando WHILE. %ud2_fsuma % Suma de todos los naturales entre 1 y n % primer bucle function suma=ud2_fsuma(n) suma=0. El conjunto de elementos que se quieren sumar en este caso son los naturales de 1 a n. i=1. 55 . 2. la que permite realizar repeticiones: los bucles. Bucles En muchos problemas de matem´ aticas se requiere repetir o iterar un mismo procedimiento. 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. General Como ya se indic´ o al comienzo de la unidad 1. lo que ahorra tiempo. Con este tipo de bucles. El bucle junto con los condicionales representan la base de la programaci´ on estructurada. Es por ello que todos los lenguajes de programaci´ on contienen la posibilidad de crear bucles.2. el fin de la iteratividad viene determinado por una condici´ on sobre una variable del programa que aparece a continuaci´ on del comando WHILE.1. 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.Unidad Did´ actica 2 Bucles 2. El ´ ındice i se inicializa por tanto a 1 y n es un argumento de la funci´ on. Un bucle se utiliza para hacer un acci´ on repetida sin tener que repetir varias veces el mismo c´ odigo. 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. La condici´ on de corte del proceso iterativo que requiere la estructura WHILE se ejecutar´ a cuando el ´ ındice i sea mayor que n. 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. P´ ag. deja el c´ odigo m´ as claro y facilita su modificaci´ on en el futuro. 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. La variable entera que cuenta el n´ umero de veces que regula la evoluci´ on del bucle se conoce como ´ ındice del bucle.

6 (Para valientes) Construye una funci´ on que reciba dos n´ umeros. Ejercicio 2.2 Prueba la funci´ on ud2 fsuma Ejercicio 2. . P´ ag. 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.1 Crea una carpeta llamada ud2 en Z : Copia en ella todos los ejemplos cuyo nombre empiece por ud2 . considerada como una poligonal que se apoya en n + 1 puntos de esa curva cuyas abscisas est´ an equiespaciadas entre a y b. tomando n + 1 puntos para aproximarlo. reales a. con m < n. n+1 es decir. b. Ejercicio 2. Ejercicio 2. + sin(a + (n − 1)h) + sin(b) . con a < b. end Mediante los siguientes ejercicios se podr´ a afianzar el concepto de bucle. b. . i=i+1.5 Construye una funci´ on que reciba un n´ umero natural. con a < b. m y n.8 (Para valientes) Construye una funci´ on que reciba dos n´ umeros. con xi = a + i ∗ h. . reales a. el valor medio aproximado del seno entre a y b. un n´ umero natural n. los cuales encontrar´ as en la carpeta: Asignaturas\LP \Ejemplos A˜ nade la carpeta Z :\ud2 al path o Current Directory de MATLAB.Lenguajes de Programaci´ on: Gu´ ıa ECTS while i<=n suma=suma+i. un n´ umero natural n. Ejercicio 2. n y devuelva sin(1) + sin(2) + . + sin(n − 1) + sin(n) n+1 Ejercicio 2. y devuelva la suma de los naturales entre m y n. con a < b.4 Idem sin usar bucles y llamando a la funci´ on ud2 fsuma. b. y calcule el centro de gravedad del superficie definida por los rect´ angulos que tiene como base h = (b − a)/n y como altura sin(xi ). Ejercicio 2. Ejercicio 2. un n´ umero natural n.7 (Para valientes) Construye una funci´ on que reciba dos n´ umeros. calcule h = (b − a)/n y devuelva sin(a) + sin(a + h) + sin(a + 2h) + . y calcule la posici´ on vertical del centro de gravedad de la curva y = sin(x). 0 ≤ i < n. 56 . . reales a.3 Construye una funci´ on que reciba dos n´ umeros naturales.

i=i+2. % ud2_fpotencia % Calcula xˆn. BUCLES 2.10 Construye una funci´ on que reciba un n´ umero natural.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.n) pot=1. while i<=n pot=x*pot.11 Construye una funci´ on que reciba un n´ umero natural. y devuelva la suma de los impares entre 1 y n. repitiendo el producto. Ejercicio 2. 57 .9 Prueba la funci´ on ud2 fsumapares Ejercicio 2. y devuelva la suma de los m´ ultiplos de 3 entre 1 y n. while i<=n suma=suma+i. n. 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. i=2.4.3. function pot=ud2_fpotencia(x. i=1. Bucles con otras operaciones Como podemos ver en el siguiente ejemplo. De esta forma si hacemos productos de n´ umeros que son siempre el mismo en este caso x. n. 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. Ejercicio 2. % ud2_fsumapares % Suma todos los numeros pares entre 1 y n function suma=ud2_fsumapares(n) suma=0. end Los ejercicios correspondientes a este ejemplo son los siguientes: P´ ag. i=i+1.´ UNIDAD DIDACTICA 2. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2. el uso de un bucle se puede extender al producto igual que a la suma. No se podr´ a usar la orden f loor. estaremos hallando la potencia en´ esima de dicho n´ umero. 2.

15. 2. n.5. construye una funci´ on que reciba un n´ umero x y un entero a y devuelva xa . x_1=a % Relacion entre sucesiones y bucles. calculando: xi i para lo cual llamar´ a a ud2 f potencia. i=m. Ejercicio 2. trata de calcular qu´ e devolver´ ıa ud2 f prueba(2. 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.n) P´ ag. Bucles y relaciones de recurrencia Otra aplicaci´ on interesante de los bucles viene a partir del uso de las f´ ormulas de recurrencia. El valor de una variable en un paso n depende de su valor en el paso anterior n − 1. Ejercicio 2. . . 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). n. while i<=n y=y*i i=i+k. end Sin ejecutarla. 58 .k) y=1.15 ¿Qu´ e devuelve la siguiente funci´ on? function y=ud2_fprueba(m.16 Construye una funci´ on que reciba un n´ umero x y un n´ umero natural.Lenguajes de Programaci´ on: Gu´ ıa ECTS Ejercicio 2. 3).n.13 Prueba la funci´ on ud2 fpotencia Ejercicio 2. (n − 1)n Ejercicio 2. Compru´ ebalo con MATLAB. siendo % a el primer termino. y devuelva x−n sin usar ∧ ni llamar a ud2 fpotencia.17 Llamando a la funci´ on ud2 f potencia y la funci´ on que has creado en el ejercicio 2.18 Construye una funci´ on que reciba x y n. function x=ud2_fnewton(a. Ejercicio 2.14 Construye una funci´ on que reciba un n´ umero natural.16. y devuelva n! = 1 2 . muy usadas en m´ etodos num´ ericos y c´ alculo infinitesimal.

(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. while i<=n-1 x=x-(xˆ2-81)/(2*x). 34. es decir. All´ ı creci´ o y se educ´ o Fibonacci.. 5. 13. Por ejemplo. sistema de numeraci´ on posicional que usamos actualmente y extendi´ o por Europa el uso del sistema ´ arabe de numeraci´ on. 3. Se llamar´ a a la funci´ on creada en dicho ejercicio. de ah´ ı su sobrenombre Fibonacci. la mayor aportaci´ on matem´ atica de Fibonacci se encuentra en el ´ area de la Teor´ ıa de los N´ umeros.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. No se podr´ a llamar a la funci´ on creada en dicho ejercicio y solo se podr´ a usar un bucle.24 Modifica el ejemplo 2. i ∈ N.. en uno de sus libros introdujo el sistema decimal indo-ar´ abigo. 21. x1 = 3. 8.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 .57..20. m. Leonardo Pisano naci´ o en 1170 probablemente en Pisa. en lo que es hoy el noroeste de Argelia. x2 = 2. Hacia 1200 regres´ o a Pisa y recopil´ o en diversos libros lo aprendido en sus viajes a˜ nadiendo adem´ as notables contribuciones propias. 59 . end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2.20. en el seno de la familia Bonacci. en la que. ¿A qu´ e valor converge la sucesi´ on cuando n → ∞? Ejercicio 2. Ejercicio 2. xn+2 = xn + xn+1 . siendo xn y xn−1 los t´ erminos n y n − 1 de la sucesi´ on del ejercicio 2. ¿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. En los numerosos viajes en los que acompa˜ n´ o a su padre. i=1.19 Prueba la funci´ on ud2 fnewton con algunos valores y comprueba que los resultados son correctos. por el que es generalmente conocido. Ejercicio 2. En el mismo libro aparece la conocida sucesi´ on de Fibonacci. i=i+1. Ejercicio 2. Ejercicio 2. BUCLES x=a.22 Construye una funci´ on que reciba un n´ umero natural n y devuelva xn − xn−1 . siendo xn y xn−1 los t´ erminos n y n − 1 de la sucesi´ on del ejercicio 2. n y k que verifican m2 + n2 = k 2 . 1. 1 P´ ag. entre otros resultados destaca el estudio de m´ etodos matem´ aticos para encontrar triples Pitag´ oricos. x1 = 1.21 Construye una funci´ on que reciba un n´ umero natural n y devuelva xn − xn−1 . tres n´ umeros naturales. 2. 1. Fibonacci aprendi´ o las ventajas de los sistemas matem´ aticos utilizados en otras culturas.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 . Su padre fue representante de los mercaderes ´ de la Rep´ ublica de Pisa en el norte de Africa.´ UNIDAD DIDACTICA 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. . Para ello hay que combinar un bucle con un condicional. end i=i+1.). i=1. 60 . 2.6. while i<=n if mod(n. P´ ag. En caso de que verifiquen la condici´ on la variable de conteo de divisores se incrementa en una unidad y en el caso opuesto no se altera. se puede obtener mediante la f´ ormula π = 4 ∗ (1 − 1/3 + 1/5 − 1/7 + .i)==0 num=num+1. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2. Ejercicio 2. Ejercicio 2. Ejercicio 2. Pru´ ebalo con algunos valores y comprueba que los resultados son correctos. .26 (Para valientes) Idem siendo p.30 Construye una funci´ on que reciba un n´ umero n. 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). + (−1)i 1 + . Ejercicio 2. Bucles y condicionales A continuaci´ on se nos plantea la necesidad de contar los divisores de un n´ umero natural n.27 (Para valientes) El n´ umero π . % ud2_fcuentadiv % ud2_fcuentadiv(n) cuenta los divisores de n % primer uso de mod function num=ud2_fcuentadiv(n) num=0.28 Copia el ejemplo ud2 fcuentadiv a tu directorio. 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.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 n´ umeros reales (supondremos la sucesi´ on mon´ otona). cuente los n´ umeros que son pares y no son m´ ultiplos de 3 entre 1 y n y devuelva ese valor. 2∗i+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 ∧).

31 Construye una funci´ on que reciba un n´ umero n. Ejercicio 2. Si por ejemplo m = 20. . por ejemplo. Ejercicio 2. function c=ud2_fprueba2(n) i=1. sin(3). end i=1+1. P´ ag. sin(n). y devuelva el n´ umero de ellos que son positivos. end Ejercicio 2. f lag valdr´ ıa 2. Ejercicio 2. n = 30. y devuelva su m´ aximo com´ un divisor. else c=c-1. n. p = 15.33 Construye una funci´ on que reciba un a˜ no y devuelva su siglo. y devuelva su m´ ınimo com´ un m´ ultiplo.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´ ı. . . en 30 hay un cero y en 115 no hay ning´ un cero). sin(2). sin(3).37 (Para valientes) Construye una funci´ on que reciba dos n´ umeros naturales m y n. . No se podr´ a llamar a 2. p.32 Construye una funci´ on que reciba un n´ umero n. p y f lag = 3 si es n. 61 .´ UNIDAD DIDACTICA 2. Corrige los errores que tiene.38 (Para valientes) Construye una funci´ on que reciba 3 naturales m. y devuelva el producto de los que son positivos. . .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. while i<=n if sin(i)>1/2 c=c+1. 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. en 304 hay un cero. f lag = 2 si es m. Ejercicio 2. . Ejercicio 2. y devuelva la cantidad de divisores comunes. . Para contar cu´ antas cifras tiene el n´ umero. Ejercicio 2. BUCLES Ejercicio 2. sin(2). recorra los valores sin(1).35 Construye una funci´ on que reciba dos n´ umeros naturales m y n. Ejercicio 2.36. pod´ eis usar log 10.36 (Para valientes) Construye una funci´ on que reciba dos n´ umeros naturales m y n. recorra los valores sin(1). sin(n). n.

42 Idem m´ as peque˜ no y distinto de 1. si n = 29 el resultado ha de ser 25.i)==0 primo=0. n. si m = 16 y n = 27 el resultado debe ser 19.Lenguajes de Programaci´ on: Gu´ ıa ECTS 2. en este caso ser divisor del argumento numero. Por ejemplo. Ejercicio 2. % ud2_fesprimo % ud2_fesprimo(numero) devuelve 1 si numero es primo % y 0 si no lo es % orden break.44 Idem sin break . Por ejemplo. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2. Ejercicio 2. m. function primo=ud2_fesprimo(numero) primo=1. P´ ag.40 Prueba la funci´ on ud2 fesprimo. end i=i+1.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 supondr´ a que existe soluci´ on. Se supondr´ a que existe soluci´ on. while i<=sqrt(numero) if mod(numero. y podamos asegurar que el n´ umero no es primo devolviendo por tanto un cero.43 Construye una funci´ on que reciba dos enteros. i=2. con m < n y devuelva el menor n´ umero entero r entre m y n tal que sin(r) > 0 (se usar´ a break ). 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. A diferencia del caso anterior basta con que la condici´ on se cumpla una vez para que no haga falta continuar el bucle. 62 . 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.7. Al igual que en el caso anterior el bucle nos vale para recorrer todos los posibles candidatos que pueden cumplir una condici´ on. (se usar´ a break ). Ejercicio 2. Uso de bucles para verificar una condici´ on sobre un conjunto. break. Ejercicio 2.

while j<=sqrt(i) P´ ag. BUCLES Ejercicio 2. % ud2_fnprimos. while i<=n j=2. i ∈ N y si para alg´ un 1 < i ≤ n.m % ud2_fnprimos(n) devuelve el n´ umero de primos % menores o iguales que n.23 para que reciba un n´ umero num. Si no.47 on que haga lo mismo que ud2 f esprimo. x2 = 2. devolver´ a xn . esto lo llevaremos a cabo mediante el ´ ındice i.50 Crea una funci´ on que reciba un n´ umero num. p=0. |xi − xi−1 | < prec.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´ ı. devuelva xi . primo=1. Al igual que hemos visto que se pueden encontrar unos condicionales anidados dentro de otros. y en cada uno de los casos realizamos un bucle interno sobre los posibles divisores de i que vienen representados por el ´ ındice j .49 Modificar la funci´ on creada en el ejercicio 2. 32. Ejercicio 2. % primer doble bucle (bucles anidados) function p=ud2_fnprimos(n) i=2. 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. Ejercicio 2. para num = 6 = 3 · 2 devolver´ a 1 y para num = 7 o num = 12 devolver´ a 0. No contamos el 1 como primo. Por ejemplo. Ejercicio 2. Utilizando la funci´ on ud2 f cuentadiv . xi = xi−1 + xi−2 menores que num y devuelva el n´ umero de ellos que son primos. x1 = 8. 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. xi = xi−1 + xi−2 tal que xi sea mayor que num. construye una funci´ Ejercicio 2. Usa la funci´ on ud2 f esprimo para determinar si un n´ umero es primo o no. 2. 63 . calcule los t´ erminos de la sucesi´ on de Fibonacci x1 = 1. Nota: Como en cada iteraci´ on sumamos m´ as de 1.48 Construir una funci´ on que reciba un n´ umero natural n y un valor prec. y devuelva el primer elemento xi de la sucesi´ on de Fibonacci x1 = 1. como mucho tendr´ ıamos que hacer n iteraciones. Bucles anidados. x2 = 2. esto mismo ocurre con los bucles. Para ello planteamos un primer bucle donde i vaya desde 2 hasta n.46 Idem sin break . Ejercicio 2. itere la sucesi´ on √ xi+1 = 2xi .8.´ UNIDAD DIDACTICA 2.

Ejercicio 2.57 Construye una funci´ on que reciba 3 naturales. con m < n y devuelva la suma de los n´ umeros primos entre m y n. P´ ag. 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.54 Construye una funci´ on que reciba dos naturales. No se podr´ a usar ud2 fesprimo. m y n. con m < n y calcule: m + m2 + · · · + mp + (m + 1) + (m + 1)2 + · · · + (m + 1)p + · · · + n + n2 + · · · + np Ejercicio 2. (Para valientes) Hacerlo sin usar break. 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. con m < n y devuelva el producto de los n´ umeros primos entre m y n (sin llamar a ud2 fesprimo).Lenguajes de Programaci´ on: Gu´ ıa ECTS if mod(i.j)==0 primo=0. n. Ejercicio 2. %i no es primo break. (Para valientes) Hacerlo sin usar break. 64 . end j=j+1. end i=i+1. m y n. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2.52 Prueba la funci´ on ud2 fnprimos Ejercicio 2. m y n.56 Construye una funci´ on que reciba dos naturales.60 (Para valientes) Construye una funci´ on que reciba dos naturales. Ejercicio 2.59 Construye una funci´ on que reciba dos naturales. m. m y n. p. end if primo==1 p=p+1. con m < n y devuelva el menor n´ umero primo entre m y n. con m < n y devuelva el mayor n´ umero primo entre m y n.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.

1. 65 . Esto no es en general as´ ı si usamos otro lenguaje de programaci´ on.2. Para ello disponemos de la orden length. while i<=n suma=suma+v(i). habr´ ıa que pasar como argumento un n´ umero natural correspondiente a su dimensi´ on. No hay apenas ´ ordenes nuevas en esta unidad y nos concentramos en desarrollar algoritmos m´ as interesantes. end m=suma/n. Finalmente dividimos por su dimensi´ on para tener la media. ese vector es en si mismo el argumento de entrada de la funci´ on. General La unidad 3 introduce un elemento fundamental en Programaci´ on: los vectores o “arrays”de datos. Vectores como argumentos de funciones Este ejemplo es la primera funci´ on en la que se usa un vector.Unidad Did´ actica 3 Vectores 3. 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. podemos preguntar a un vector o a una matriz su tama˜ no.% n es la dimensi´ on o n´ umero de % elementos del vector suma=0. Para obtener la media tenemos que sumar todos los elementos del vector. Para ello. los cuales permiten resolver problemas m´ as complejos y similares a los reales. desde que hicimos el tutorial (ap´ endice 0). % Una vez sumados.1 P´ ag. Como sabemos. % Sumamos el elemento i-esimo de v i=i+1. 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. ya que en principio.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). adem´ as del vector. lo cual no requiere ninguna sintaxis espec´ ıfica. inicializamos a 0 la variable suma y mediante un bucle la vamos incrementando con los elementos del vector. % ud3_fmedia. Adem´ as. hallamos la media Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 3. 3. % Inicializamos la suma a 0 i=1.

La sintaxis no ofrece ninguna dificultad. la que acabamos de estudiar. en este ejemplo vemos una funci´ on que recibe un vector y llama a otra funci´ on que recibe un vector. la varianza ser´ a grande. 1 P´ ag. Tendremos ocasi´ on de hacer abundantes ejemplos m´ as adelante. la varianza es peque˜ na y si son muy diferentes. . √ n La media geom´ etrica de {a1 . % ud3_fvarianza.m para diferentes vectores. i=1. an . . Es una medida de como de semejantes son los elementos de un vector. De esta funci´ on no haremos ning´ un ejercicio espec´ ıfico. . simplemente probar la funci´ on para 1 diferentes vectores. Ejercicio 3.4 Crea una funci´ on que reciba un vector y devuelva la media geom´ etrica de los elementos del vector. Ejercicio 3.2 Prueba la funci´ on ud3 fmedia. Ejercicio 3. n=length(v).6 Prueba la funci´ on ud3 fvarianza. . comprobando el significado del concepto varianza .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 .3 Crea una funci´ on que reciba un vector y devuelva la media de los cuadrados de los elementos del vector. an } es a1 a2 .3. Se supondr´ a que los dos vectores tienen la misma dimensi´ on.5 Crea una funci´ on que reciba dos vectores y devuelva el producto escalar de los mismos.m para diferentes vectores. while i<=n suma2=suma2+(v(i)-m)ˆ2. i=i+1.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).6 estudiamos una funci´ on que llamaba a otra funci´ on. end var=suma2/(n-1). 66 . 3. . ¿Coincidir´ a el resultado con la media al cuadrado? Ejercicio 3. ud3 fmedia. Si son similares. Funciones que llaman a funciones con argumentos vectores Del mismo modo que en el ejemplo 1. 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. como vimos en el tutorial. Esta funci´ on tambi´ en se puede hacer sin utilizar bucles.

asignamos a maxi ese valor. MATLAB dispone de una funci´ on que realiza esta misma tarea. while i<=n if v(i)>maxi maxi=v(i). Ejercicio 3. maxi. i=2. cambie de signo todos los elementos del vector. En lugar de sumar todos los elementos. Los ejercicios correspondientes a este ejemplo son especialmente interesantes reflejando la importancia del algoritmo explicado. end Es importante. 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. Ejercicio 3. Ejercicio 3.4. Ejercicio 3.8 Crea una funci´ on que reciba un vector y devuelva el m´ ınimo de los elementos del vector.12 Crea una funci´ on que reciba un vector de n´ umeros naturales y utilizando la funci´ on ud2 f esprimo. 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 final.m para diferentes vectores. max. end i=i+1. tendr´ as que comprobar si un elemento es positivo o no antes de sumarlo.7 Prueba la funci´ on ud3 fmaximo. 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. calcule el m´ aximo del nuevo vector y lo devuelva cambiado de signo. P´ ag. el cual es fundamental. VECTORES 3. muy importante. 67 . maxi=v(1).10 Crea una funci´ on que reciba un vector v . % ud3_fmaximo. entender todos los detalles de este ejemplo. devuelva el n´ umero de elementos del vector que son primos. pero ello no es o ´bice para estudiar el algoritmo.´ UNIDAD DIDACTICA 3. ¿Qu´ e valor has obtenido? Ejercicio 3. 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.11 Crea una funci´ on que reciba un vector y calcule la media de los elementos positivos del vector.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. Para ello. function maxi=ud3_fmaximo(v) n=length(v).

pues ocupa la tercera posici´ on en el vector.16 Codifica una funci´ on que reciba un vector de naturales v y devuelva el primer n´ umero primo que aparezca en el vector. la media vale 3. Ejercicio 3. si v = [3 2 1 7].13 Idem sin if. Por ejemplo.25 y la diferencia m´ ınima es 3 − 3.25 y la diferencia m´ ınima es 1-3. Ejercicio 3. si v = [3 2 1 7]. la funci´ on devolver´ a 11. Ejercicio 3.22 ¿Qu´ e valor devuelve la siguiente funci´ on (v es un vector de n´ umeros naturales)? P´ ag.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. 7. si v = [3 2 1 7].25 y la diferencia m´ ınima es 1-3. Ejercicio 3. si v = [3 2 1 7]. Por ejemplo. la media vale 3. la media vale 3. Por ejemplo. Ejercicio 3.25 y el elemento m´ as proximo a la media es el 1. la media vale 3. El ´ ındice del elemento cuyo valor es 1 es 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.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 .25=-2. Por ejemplo. devolver´ a 0. Cambiad de orden los elementos en este ejemplo para probar el c´ odigo y comprobar que funciona en todas las circunstancias. la media vale 3. Por ejemplo.25. si v = [3 2 1 7]. 11. Caso de que no haya ninguno.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 .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. 14.25 y el elemento m´ as proximo a la media es 3.25=-2.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. Ejercicio 3. si v = (9.Lenguajes de Programaci´ on: Gu´ ıa ECTS Ejercicio 3. Ejercicio 3. 12).25.25. Ejercicio 3. Por ejemplo.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 . 68 . Ejercicio 3.25 = 0.

end i=i+1. end 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. while i<=n if v(imax)<v(i) % Si encontramos un elemento mayor imax=i. devolver´ a 0.27 P´ ag.m para diferentes vectores. % ud3_fimax. y=v(1). 3. imax=1.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. C´ alculo de posici´ on de extremos A veces no interesa tanto el valor del m´ aximo como su posici´ on en el vector. Es un algoritmo muy interesante y esencialmente m´ as complicado y dif´ ıcil de entender que el anterior. En caso de que no haya ninguno.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. Ejercicio 3. % actualizamos el valor de la posicion end i=i+1. i=1.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). 69 . Ejercicio 3. de tal modo que se guarda posici´ on cuando se supera la posici´ on de referencia inicial (la primera). En esta funci´ on se juega con esa idea.5. while i<=n if ud2_fesprimo(i)==1 & v(i)>y y=v(i).24 Prueba la funci´ on ud3 fimax. VECTORES function y=ud3_fprueba(v) n=length(v). Ejercicio 3.´ UNIDAD DIDACTICA 3. sin usar if. devolver´ a 0. 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. En caso de que no haya ninguno. % Tomamos como maximo el primer elemento i=2.

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.5. 1). 1. end end Pru´ ebala con los vectores (1. 3.5x3 se corresponder´ ıa con el vector a = (2.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). · · · .5−3. Encuentra los errores. a2 . −3. 1. an+1 ) . hasta que i sea n + 1. Evaluaci´ on de un polinomio El ejemplo correspondiente a esta secci´ on ejemplifica el caso de una funci´ on que recibe escalares y vectores como argumentos de entrada. 2. devolviendo el valor obtenido. i=i+1. 2 y -1. evaluando el ejemplo anterior en x = 2 tendremos: P´ ag. 1) (deber´ ıa devolver 0. si tenemos el siguiente polinomio de grado n la representaci´ on habitual que de ´ el se hace ser´ ıa: a0 + a1 x + a2 x2 + · · · + an−1 xn−1 + an xn De este modo.7x2 +0. Como se puede observar. Tiene detalles interesantes que pasamos a comentar. function y=ud3_fprueba3(v) n=length(v). dimensi´ on n + 1. a1 . Para invocar esta funci´ on desde la l´ ınea de comandos. an . an−1 . y=a(1). 70 a = (a1 . y=0. 2. i=2.0.x) n=length(a)-1. a = (a0 . no podemos trasladar esto directamente a MATLAB pues la indexaci´ on de los vectores siempre empieza por la componente 1.5). (1.6. 4) y (4. an ) Sin embargo. · · · .7. este polinomio se identificar´ ıa de modo inmediato con el vector a. grado 3 pero dimensi´ on 4. (1. while i<=n+1 y=y+a(i)*xˆ(i-1). Se trata de evaluar un polinomio en un punto. while i<=n if abs(v(i)-v(i-1))>y y=v(i)-(v(i)-1). 0. As´ ı. end en la cual simplemente vamos incrementando la variable y en el sumando ai xi−1 . El primero es el de la identificaci´ on de un polinomio de grado n con un vector de n + 1 componentes y por tanto. Ello invita a repensar polinomio y vector del siguiente modo: a1 + a2 x + a3 x2 + · · · + an xn−1 + an+1 xn Por tanto. 2. 0. el polinomio 2. 1).

2) ans = -8.5 0.5+0. Bath.5x3 lo escribi´ esemos como 2. % % % % % % ud3_fevalua. 71 . matem´ atico ingl´ es conocido por haber desarrollado m´ etodos para resolver ecuaciones polin´ omicas y sobre todo por ser el inventor del zoetropo(fig..x)...x) n=length(a)-1.5 − 3.1: Zoetropo de Horner siguiente modo: Es como si el polinomio 2.7*2ˆ2+0. 3. 2 P´ ag.7 0.0+ x(−3. 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.+a(2))+a(1) En este ejemplo. artilugio que creaba la ilusi´ on ´ optica de movimiento. VECTORES >> ud3_fevalua0([2.5)). algo que en general os cuesta mucho.. 1786..m ud3_fevalua(a.1). 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(x a(n+1)+ a(n))+a(n-1)). Con ello..0 -3.5*2ˆ3 ans = -8.´ UNIDAD DIDACTICA 3. el polinomio escribe del Figura 3. William George Horner (Bristol. 1837). y a partir del cual se evolucion´ o hasta la invenci´ on del cine.5+ x(0. Se llama algoritmo de Horner2 En el algoritmo de Horner.7x2 +0. haremos las siguientes operaciones: >> 2.5]. escribiendolo como x(.7+ x0.+a(2)x+a(1) evaluado en x. 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.3000 Existe un algoritmo que evita el tener que calcular todas esas potencias ahorrando cierto tiempo. recibe un vector a de dimensi´ on n+1 y un escalar x y devuelve el polinomio a(n+1)xˆn+.3000 Para comprobar.0*2-3.

m. end i=i+1. i=n. i=1. calculado a partir de la f´ ormula anterior.m para comprobar si un n´ umero es ra´ ız del polinomio o no. Utiliza ud3 f evalua. eval´ ua en x el vector de coeficiente principal 1 cuyas ra´ ıces son los elementos de t. Es decir. Ejercicio 3. crea una funci´ on que reciba un valor de α y devuelva el valor del seno de α. end Pista: No se deber´ ıa usar un bucle ni un condicional. .m. Ejercicio 3. 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.pos) n=length(v). . donde n es la dimensi´ on del vector t. while i<=n if i==pos dif=v(1)-v(i).28 Prueba la funci´ on ud3 fevalua.31 Crea una funci´ on que reciba dos vectores. el primero de los cuales ser´ an los coeficientes de un polinomio p(x). while i>=1 y=x*y+a(i). 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. Ejercicio 3. (x − tn ). ¿Es correcta? ¿Podr´ ıas hacerla m´ as eficiente? function dif=ud3_fdiferencia(v.33 P´ ag. La funci´ on devolver´ a 1 si en el segundo vector aparece una ra´ ız de p(x) y 0 en caso contrario. 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 ) . Ejercicio 3. end Los ejercicios correspondientes a este ejemplo son bastante interesantes.Lenguajes de Programaci´ on: Gu´ ıa ECTS y=a(n+1).29 Aproximaci´ on del seno. i=i-1. 72 .

Ejercicio 3. 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 + . pues de lo que se trata es de construir un vector con los t´ erminos de la sucesi´ on de Fibonacci.m. 1≤i≤n i Llama desde MATLAB a la funci´ on. % ud3_fibo % ud3_fibo(x1.n) devuelve los n primeros % terminos de la sucesion de Fibonacci % x_1=x1.x2.39 P´ ag.23. while i<=n v(i)=v(i-1)+v(i-2). 3. en [0 1 2 1] devolver´ ıa 1. v(2)=x2.x2. En MATLAB.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. Ejercicio 3. adem´ as ese vector se construye a partir de varios escalares. x_2=x2. la cual ya estudiamos en el ejercicio 2. function v=ud3_fibo(x1. Ejercicio 3. end Los ejercicios correspondientes a este ejemplo son: Ejercicio 3. la salida de nuestras funciones pueden ser tambi´ en vectores. la sintaxis no cambia con respecto a la de una variable escalar convencional.35 (Para valientes) Usando la funci´ on creada en el apartado 3. Por ejemplo. y lo construimos con % argumentos de entrada escalares.7. En este ejemplo.´ UNIDAD DIDACTICA 3.37 Prueba la funci´ on ud3 fibo.n) v(1)=x1. construir una funci´ on que reciba un vector y devuelva el elemento que se repite m´ as veces. 73 . i=i+1. Ejercicio 3.34. Funci´ on que devuelve un vector A menudo.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. i=3. x_n=x_(n-1)+x_(n-2) % Por primera vez definimos una funcion que % devuelve un vector. 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. ¿A qu´ e tienden las componentes del vector resultado?.

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. 2.. while i<=n if v(i)>y y=i. xi+1 = 2xi . Como lista de n´ umeros. 3. As´ ı pues. Ejercicio 3. end i=i+1.. 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.41 (Para valientes) Construye una funci´ on que reciba un n´ umero natural y devuelva el vector formado por sus cifras. 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. devolver´ a [1 4 2 3]. xn+1 = xmin + nh = xmax. y=1.42 (Para los m´ as valientes) Criba de Erat´ ostenes. 5. N´ Erat´ ostenes vamos obteniendo los n´ umeros primos. y el n´ umero de tramos n.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. xmax. x1 = xmin.44 Determina qu´ e valor devolver´ a la siguiente funci´ on si v = (1. √ Para mejorarlo. function y=ud3_fprueba2(v) n=length(v). Ejercicio 3. end P´ ag. 4). Ejercicio 3. 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. Ejercicio 3. si introducimos 1423. xmin. La funci´ on calcular´ a el valor xmax − xmin h= .. 456. los m´ ultiplos de tres y as´ ı sucesivamente hasta llegar a los m´ ultiplos de la ra´ ız cuadrada de n. 74 . Ejercicio 3. As´ ı. as´ ı que podemos utilizar la informaci´ on guardada en el vector para este caso. pondremos un 0 en dicha posici´ on. i=1. i ∈ N Comprobar que converge a 2. x2 = xmin + h.40 Crea una funci´ on que reciba dos valores. .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. 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.

a) n=length(x). end P´ ag. >>x=0:0. la ordenada correspondiente yi sea el m´ aximo de las funciones seno y coseno evaluadas en xi . La sintaxis no ofrece ning´ un problema. % ud3_fmayormenor % ud3_fmayormenor(x. deberemos tener la posibilidad de recibir un vector en la funci´ on y devolver otro vector. >>y=ud3_fmaxsincos(x). while i<=n if sin(x(i))>cos(x(i)) y(i)=sin(x(i)). >>plot(x. La funci´ on devolver´ a un vector y .´ UNIDAD DIDACTICA 3. while i<=n if x(i)<a y(i)=0.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. i=1. i=1. 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. end Para probar esta funci´ on podemos ejecutar los siguientes comandos desde la ventana de comandos de MATLAB.01:8*pi. % 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). else y(i)=1. Vamos a plantear primero un ejemplo sencillo en el que se trata simplemente de codificar una funci´ on que reciba un vector de abscisas x y devuelva un vector de ordenadas y tal que para cada abscisa xi . pero conceptualmente hay que saber moverse a trav´ es del vector de partida y generar otro. Presentamos este ejemplo en el que se trata simplemente de codificar una funci´ on que reciba un vector x y un escalar a. VECTORES 3. 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. else y(i)=cos(x(i)). tal que la componente yi de ese vector ser´ a 0 si la correspondiente xi es menor que a y 1 en caso contrario. end i=i+1. end i=i+1. 75 .y).8.

while i<=n vprimos(i)=ud2_fesprimo(u(i)). . cambiamos la escala a logar´ ıtmica. Se trata de codificar 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.m y ud3 fvprimos. Ejercicio 3. Dibuja la curva resultado de modo an´ alogo a como se dibuj´ o la de dicha funci´ on. yi sea la aproximaci´ on de sin(xi ) dada por: yi = xi − x3 x5 x7 i + i − i.m.45 Prueba las funciones ud3 fmaxsincos. . con al menos 1000 puntos. π/2]. Ejercicio 3. Ejercicio 3. . . (m1 !.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. end En algunos casos. vectorizando las operaciones). i=i+1. . se puede utilizar la vectorizaci´ on de operaciones explicada en el tutorial para evitar uno de los bucles en la funci´ on. Los ejercicios correspondientes a este ejemplo son: Ejercicio 3. ¿Cu´ al de las dos funciones crece m´ as r´ apido? Ejercicio 3. Para mejorar la gr´ afica.47 aximo entre la funci´ on del Crea una funci´ on similar a la funci´ on ud3 fmaxsincos. aplicamos el logaritmo a cada una de las funciones.29 del modo que convenga.49 Construye una funci´ on que reciba un vector de naturales.46 y el seno. . es decir. i=1. 76 . 3! 5! 7! Se llamar´ a a la funci´ on del ejercicio 3. m2 !.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. Representa en una gr´ afica la funci´ on factorial entre 1 y 10 y la funci´ on exponencial entre 1 y 10. Dibuja con MATLAB el seno y su aproximaci´ on por la funci´ on anterior en [−π/2. % % % % % 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). (m1 .48 Crea una funci´ on que reciba un vector x y devuelva un vector y tal que para cada ´ ındice i. . mn ) y devuelva el vector de los factoriales. ud3 fmenormayor. Ejercicio 3. m2 .m. .50 P´ ag. pero en general eso no ser´ a posible. mn !).m que calcule el m´ ejercicio 3.

77 . a medida que vamos definiendo nuevas posiciones del vector. ip=0.52 Crea una funci´ on que reciba un vector y devuelva los datos escalados entre cero y uno. colocadas en el mismo orden en el que est´ an en ´ este. Ejercicio 3. Para ello determinaremos el valor m´ ınimo del vector. Para ir construyendo este segundo vector. Ejercicio 3. As´ ı. Adem´ as. i=1.51 Crea una funci´ on que reciba un vector x y dos valores a y b. con a < b. Al final tenemos que obtener un vector de n´ umeros entre cero y uno. Restamos ese valor al vector para que los datos comiencen en cero. a menudo no sabemos el tama˜ no o dimensi´ on del vector resultante. los cuales aparecer´ an a lo largo del resto del curso.´ UNIDAD DIDACTICA 3. 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. necesitamos un nuevo contador s´ olo de componentes positivas. 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. 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. y que adem´ as sugiere infinidad de ejercicios muy interesantes. Calculamos el m´ aximo del nuevo vector y dividimos cada elemento del vector por dicho m´ aximo.53 (Para valientes) Modifica la funci´ on anterior para que reciba un vector y dos valores a y b y devuelva el vector escalado entre a y b. end P´ ag. Para ilustrar esta idea planteamos un ejemplo muy sencillo pero tambi´ en muy bonito. 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. ese vector crece en tama˜ no y la memoria RAM que se necesita para ´ el es gestionada de modo autom´ atico por MATLAB. vamos colocando en cada posici´ on el elemento correspondiente. vp(ip)=v(i). 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). A medida que ese contador se va incrementando. while i<=n if v(i)>=0 ip=ip+1. 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. Se trata de una funci´ on que recibe un vector y devuelve otro vector que contiene u ´nicamente las componentes positivas del vector original. end i=i+1.8. Ejercicio 3. al construir este nuevo vector a partir del original. 3. de tal modo que cada componente vaya en la posici´ on correcta.9. situaci´ on esencialmente m´ as sencilla que ya hemos contemplado en la secci´ on 3. y devuelva un vector y que es el original truncado entre a y b.

P´ ag. Ejercicio 3. Ejercicio 3.55 Crea una funci´ on que reciba un vector u de n´ umeros naturales. while j<=n if u(i)==v(j) iguales=iguales+1.10. el resultado ser´ ıa v = (10. Vectores y bucles anidados A menudo. son: Ejercicio 3. 78 . es necesario anidar bucles para resolver determinados problemas con vectores. tendremos que fijar un elemento del primer vector y barrer todos los del segundo mediante un bucle y as´ ı sucesivamente con el segundo. % function iguales=ud3_figuales(u.v) i=1. etc.. Se % supone que todos los elementos en cada vector son distintos. n=length(v).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. Ejercicio 3. while i<=m j=1. % ud3_figuales % numero de elementos iguales entre dos vectores. 5) Ejercicio 3. % primeros bucles anidados con vectores. iguales=0.m.59 Modifica la funci´ on ud3 figuales para que funcione con vectores de n´ umeros reales. end i=i+1. un natural m y devuelva un vector v que contenga aquellos elementos de u que sean divisores de m. end Los ejercicios correspondientes a este ejemplo. 5. 3. 7. 4. m=length(u).58 Prueba la funci´ on ud3 figuales. tercero.54 Prueba ud3 f positivas. 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). muy interesantes. lo que requiere otro bucle exterior a ese. 4.56 Crea una funci´ on que reciba un vector y devuelva un vector con los n´ umeros primos que contiene. end j=j+1.Lenguajes de Programaci´ on: Gu´ ıa ECTS Los ejercicios correspondientes a este ejemplo espec´ ıficamente son los siguientes: Ejercicio 3. si u = (10. 3) y m = 40. Por ejemplo.

3! 5! 7! en los puntos (1. x− Ejercicio 3.´ UNIDAD DIDACTICA 3.8). 5] devolver´ ıa 1 y para [−1. o sea devolver´ a el vector y = (0.69 (Para valientes) Crea una funci´ on que reciba un vector x. el 2. 2.5985. 0. 2.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.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. 0.5885. sin llamar a ninguna funci´ on.3350). 79 .5. 2. devuelva el n´ 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. Por ejemplo. Ejercicio 3. 7.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.8) y n = 7. 2. un entero n y devuelva un vector y tal que para cada ´ ındice i.63 (Para valientes) Crea una funci´ on que reciba un vector de n´ umeros naturales y sin utilizar la funci´ on ud2 fesprimo.5. No se podr´ a llamar a Ejercicio 3.71 (Para valientes) Idem sin llamar a ninguna funci´ on. para v = [2.Se usar´ a la funci´ on 3. VECTORES Ejercicio 3.9.67 (Para valientes) Construye una funci´ on que reciba un vector v de naturales y devuelva el mayor de los repetidos. Ejercicio 3. Ejercicio 3. para calcular el factorial. calcule y devuelva la media de los elementos primos para lo cual llamar´ funci´ on ud3 fmedia.14. 5] devolver´ ıa 0.9. yi sea la aproximaci´ on de sin(xi ) dada por un polinomio de Taylor en el 0 de grado n. Ejercicio 3. 0.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. El seno toma en esas mismas abscisa los valores (0. 2. llamando a ud3 fmaximo Ejercicio 3.36.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.9463. Ejercicio 3.9454. el vector devuelto ser´ a la el resultado de evaluar el polinomio x3 x5 x7 + − . Ejercicio 3. 0. devuelva el primer elemento de del vector que sea primo.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. Por ejemplo.68 (Para valientes) Construye una funci´ on que reciba un vector v de naturales y devuelva el mayor de los repetidos.3078). vi !. Recuerda que en la unidad 2 hay un ejercicio. si introducimos el vector x = (1. P´ ag.

x2=(-b+sqrt(b*b-4*a*c))/(2*a).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.72 Copia ud3 f e2grado. La sintaxis es muy sencilla.-3. para lo cual es necesario pasarlos todos como argumentos de salida.c) x1=(-b-sqrt(b*b-4*a*c))/(2*a). Ejercicio 3. % ud3_fe2grado.s]=ud3_fe2grado(1. Para invocar esta funci´ on desde la l´ ınea de comandos.11. que deshaga el cambio de variable mediante x = ± y y que devuelva las cuatro soluciones de la ecuaci´ on original. complejas o una ra´ ız doble. Es un tema que no plantea dificultad a los estudiantes y que permite hacer funciones m´ as interesantes. Ejercicio 3. por ejemplo: >> [r.75 Modifica la funci´ on ud3 f e2grado. 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.m a tu directorio y pru´ ebala. Ejercicio 3. simplemente se agrupan todos los argumentos entre corchetes y separados por comas.73 Crea una funci´ on que reciba los coeficientes de una ecuaci´ on de segundo grado y devuelva la suma y el producto de las soluciones. El ejemplo m´ as elemental que se nos ha ocurrido es el de resolver una ecuaci´ on de segundo grado.x2]=ud4_fe2grado(a. Por tanto.Lenguajes de Programaci´ on: Gu´ ıa ECTS 3.74 Crea una funci´ on que reciba los coeficientes de la ecuaci´ on ax4 + bx2 + c = 0.b. lo haremos del siguiente modo.76 P´ ag. sean reales. Ejercicio 3.m % devuelve las dos soluciones de axˆ2+bx+c=0 function [x1. Funciones con salidas m´ ultiples En esta secci´ on se presentan funciones que tienen m´ as de un argumento de salida. Ejercicio 3.m para que si las ra´ ıces son n´ umeros imaginarios (el discriminante b2 − 4ac es negativo) devuelva r1 = 0. 80 .m. que resuelva utilizando √ 2 y = x llamando para ello a ud3 f e2grado. propondremos ejemplos de ecuaciones que tengan ra´ ıces reales. la cual siempre tendr´ a 2 soluciones. 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. En m´ ultiples ocasiones es necesario obtener varios resultados en una misma funci´ on.

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.82 Crea una funci´ on que reciba un vector v y devuelva un vector w y un n´ umero error de modo que: 1. (Para valientes) La funci´ on devolver´ a 0 en las dos variables si los valores introducidos no forman un tri´ angulo. Ejercicio 3. Ejercicio 3.78 Crea una funci´ on que reciba un vector y devuelva el m´ aximo.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. 1 ≤ i ≤ n y error = 0. devolver´ a w = v y error = 1. Ejercicio 3. VECTORES Crea una funci´ on que reciba un vector y devuelva el m´ aximo y el m´ ınimo de sus elementos. Si todos los elementos de v son estrictamente positivos. P´ ag. Ejercicio 3. 81 .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. sin usar las funciones min y max. devolver´ a w(i) = Ln(v (i)). 2 si es rect´ angulo y 1 si es agudo.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. el m´ ınimo y sus posiciones. 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. Si alg´ un elemento es menor o igual que cero. 3 si es obtuso. 2. Ejercicio 3. 2 si es is´ osceles y 3 si es escaleno y en una variable angulo.´ UNIDAD DIDACTICA 3.

Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag. 82 .

83 .Parte II Gu´ ıa ECTS para estudiantes P´ ag.

.

un cr´ edito. En esta parte del libro detallamos los objetivos y los relacionamos con las actividades realizadas a lo largo del mismo. 1 P´ ag. se pasa de un paradigma con una evaluaci´ on que obtiene informaci´ on u ´nicamente de un examen final. Ahora es el momento de que los estudiantes comprueben si ha sido as´ ı y de que sugieran las mejoras que consideren convenientes. aprovechando esta oportunidad para transformar el modo en el que ense˜ namos Programaci´ on. As´ ı. Con estos cambios pretendemos mantener al estudiante activo a lo largo de todo el curso. Este esfuerzo significa 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. Los cr´ editos ECTS contabilizan no s´ olo las horas de clase sino que intentan definir el peso de la asignatura teniendo en cuenta el esfuerzo en tiempo que le cuesta aprobarla a un alumno medio. los que se asocian a cada asignatura al hacer la matr´ ıcula. Tambi´ en destacamos los recursos que creemos son necesarios para realizar dichas actividades. Esperamos que esta gu´ ıa resulte u ´til y que cumpla los objetivos que antes citamos y que nos han llevado a escribirla. incorporada a los mismos y mucho m´ as rica. tratando. y razonando sobre el esfuerzo que es necesario para realizarla. proponi´ endole mecanismos de enganche a la asignatura de modo continuo. como dice Stephen Ball en la cita que nos ha inspirado. se establecen u ´nicamente en funci´ on del n´ umero de sesiones presenciales. comprometidos y con la sensaci´ on de que no van a fracasar. Los cr´ editos LRU. discutiendo sus ventajas e inconvenientes. para finalmente reflexionar sobre el tipo de evaluaci´ on que creemos adecuado para un curso de este tipo.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. En esta parte del libro se pretende documentar con todo detalle esta metodolog´ ıa de evaluaci´ on. de mantener a todos los alumnos trabajando. indicando en qu´ e medida creemos que dichas actividades contribuyen a la consecuci´ on de los objetivos. para que el estudiante la conozca y se ubique en la misma. 85 . a una evaluaci´ on basada completamente en los procesos. e indicando tambi´ en el tiempo que estimamos es necesario para realizar dichas actividades. por cada 10 horas de clase.

86 .Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag.

canton@upm.1.1.2. leo.5 siendo 1. alicia.Cap´ ıtulo 2 Datos generales 2.2.1.4.gonzalez@upm. Profesores Antonio Souto Iglesias. 87 .3. 2.4. Primero Cuatrimestre 2.1. Primero Temporalidad y car´ acter Ciclo 2.0 pr´ acticos 2.3.1. Cr´ editos LRU 4.es Leo Gonz´ alez Guti´ errez. Car´ acter Obligatoria 2.souto@upm. Primero Curso 2. antonio.5 te´ oricos y 3. Departamento Departamento de Ense˜ nanzas B´ asicas de la Ingenier´ ıa Naval 2.1.es Alicia Cant´ on Pire.es P´ ag.

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 .Lenguajes de Programaci´ on: Gu´ ıa ECTS 2.

Conocimientos: 1 http://www. General Para contextualizar la definici´ on de objetivos. junto con los idiomas modernos. no se presta una atenci´ on particular en ese libro a la Inform´ atica. Cubren los aspectos m´ as te´ oricos de la formaci´ on. que cubrir´ an unos objetivos espec´ ıficos. 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. Se refieren a determinados valores o motivaciones que se trate de generar o potenciar en el estudiante.aneca.es/activin/docs/libroblanco naval def. 3. en el cual se especifican los perfiles profesionales a los que se orienta la titulaci´ on.1. muy en l´ ınea con el concepto de competencias.2... De hecho en el plan de estudios gen´ erico que se elabora en ese libro blanco.pdf P´ ag..Cap´ ıtulo 3 Objetivos 3. Hablaremos as´ ı primero de unos objetivos generales de la asignatura. A partir de estos objetivos generales dise˜ naremos una serie de actividades las cuales agruparemos en una secuencia de unidades did´ acticas. habilidades. 2. agrupamos los objetivos generales en 3 categor´ ıas: 1. ´ esta es. 3. Objetivos generales: descripci´ on Como hemos comentado. Referidos a aplicaciones. y precisar´ an de unos determinados recursos. 89 . cuestiones pr´ acticas. se˜ nalada como la materia b´ asica m´ as importante. capacidades y actitudes. Actitudes. Conocimientos. Aunque en el estudio de las competencias transversales. momento en que apareci´ on un libro blanco orientado a las nuevas titulaciones post-Bolonia1 . para lo cual se recurri´ o a un significativo n´ umero de encuestas entre profesionales en activo. En el caso de la titulaci´ on INO esto no ha sido as´ ı hasta bien entrado 2005. Capacidades. a trav´ es de una categorizaci´ on de los mismos en conocimientos. algunas de las titulaciones disponen de su libro blanco correspondiente.

AcD. AcC. al tener una sintaxis sencilla. Hemos elegido el lenguaje script de MATLAB porque es una herramienta est´ andar en Ingenier´ ıa y porque. Este es un “requisito normal” en el sentido de que es un objetivo que necesariamente deber´ a alcanzarse para superar la asignatura. 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. consiste en definir las caracter´ ısticas del sofware que se va a programar. Trabajo en equipo. al ser muy dependiente del tipo de problemas industriales o de gesti´ on a resolver. Mejora continua. Por tanto. de una. Actitud positiva ante los problemas. CpC. codificaci´ on. Autocr´ ıtica. Actitudes: AcA. CoB. Hoy en d´ ıa casi ning´ un proyecto involucra a un u ´nico ingeniero. AcE. Este es un “requisito innovador” en el sentido de que lo consideramos importante. CpB. Capacidades: Realizar un programa de ordenador es un proceso que consta de 4 fases: especificaci´ on. Codificaci´ on. El aprendizaje. Aunque es una etapa importante queda fuera del contenido de esta asignatura. sobre todo el que perdura. la especificaci´ on. no es labor de un d´ ıa ni de una semana. Ser´ an en general c´ odigos no muy complejos. entenderlos y corregirlos. Este es un “requisito esperado”: no se eval´ ua directamente. El alumno debe ser capaz de encontrar sus errores. El alumno debe ser capaz de analizar un problema sencillo y elaborar un algoritmo que lo resuelva. El alumno debe ser capaz de reflexionar sobre sus capacidades. P´ ag. pero no esencial para superar la asignatura. consideramos que saber trabajar en equipo es imprescindible y que se deben ir formando las actitudes necesarias a lo largo de todos los estudios.Lenguajes de Programaci´ on: Gu´ ıa ECTS CoA. La primera. permite profundizar en los elementos de programaci´ on. validaci´ on/verificaci´ on. El alumno debe ser capaz de “traducir” algoritmos sencillos a c´ odigo MATLAB. AcB. El afan de superaci´ on y la perseverancia son actitudes necesarias para un buen ingeniero. Dise˜ no. dise˜ no. 90 . esfuerzo y proceso de aprendizaje para determinar en qu´ e punto est´ a y qu´ e acciones debe tomar en el futuro. Validaci´ on. y no proceder su estudio en un curso de introducci´ on a la Prgramaci´ on. 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. dos o tres acciones a lo sumo. 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. sino que requiere constancia y esfuerzo. Las capacidades que queremos desarrollar son las necesarias para las otras tres etapas: CpA. pero est´ a impl´ ıcito en la evaluaci´ on de los objetivos CpA y CpB.

Adem´ as. y de las asignaturas optativas o de libre configuraci´ on “Leguajes de Programaci´ on II” y “Complementos de Inform´ atica”. que pueden incluir trabajos para los que se necesite MATLAB y algunos elementos de Programaci´ on. es conveniente haber cursado y superado LP antes de matricularse de la asignatura M´ etodos Num´ ericos3 . 3. y por tanto manejan con cierta soltura sucesiones. Por tanto.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. 91 . se le supone una formaci´ on b´ asica en Matem´ aticas.CAP´ ITULO 3. vectores y matrices. Adem´ as se puede suponer que est´ an cursando simult´ aneamente las asignaturas de C´ alculo y Algebra I.3. 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. los lenguajes de programaci´ on son u ´tiles para muchas otras asignaturas. Prerrequisitos LP es una asignatura del primer cuatrimestre del primer a˜ no. 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 2 P´ ag. OBJETIVOS 3. y por tanto los prerrequisitos se refieren u ´nicamente a que el estudiante debe haber cursado y aprobado los estudios de educaci´ on secundaria.

92 .Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag.

Adem´ as. 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). cubrir´ a dos terceras partes de la asignatura. de acuerdo con la distribuci´ on de cr´ editos. Los alumnos se organizar´ an en parejas para que empleen la t´ ecnica de “pair programming” de la metodolog´ ıa “extreme programming”. M´ etodos docentes Parte te´ orica de las sesiones DHOf Todas las sesiones DHOf1 se impartir´ an en el Centro de C´ alculo (CC). 4. lo que es muy conveniente durante el examen individual y en general.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.1. 93 .1. Se potenciar´ a el que los alumnos defiendan sus propios c´ odigos proyectando los mismos en 1 DHOf por dentro del horario oficial P´ ag. Esta parte pr´ actica.1. 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. mientras trata de encontrar los fallos que pueda tener el dise˜ no. En cada pareja de programadores/alumnos. El objetivo del “pair programming” es que el conocimiento est´ e igualmente repartido entre los miembros de la pareja. con la supervisi´ on de uno o varios profesores. al final del proceso de aprendizaje planteado en LP. El objetivo de las clase te´ oricas es exponer los conceptos b´ asicos y errores frecuentes a todos los alumnos a la vez.2. Agruparemos estas actividades en una serie de unidades did´ acticas para facilitar su descripci´ on.2. Al terminar cada ejercicio se intercambian los papeles. utilizando la pizarra electr´ onica que proporciona la interfaz tablet del port´ atil. Asimismo. dependiendo del n´ umero de alumnos y de la disponibilidad de docentes. Durante la parte de exposici´ on de teor´ ıa se introducir´ a cada uno de los temas ayud´ andose de ejemplos (ver parte I). 4. tratando de evitar repetirlos a cada uno por separado. uno de ellos dise˜ na el programa y el otro lo codifica (escribe el c´ odigo) siguiendo las instrucciones del anterior. 4. se comentar´ an los problemas observados durante la parte m´ as pr´ actica de la clase y c´ omo evitarlos. organizaci´ on y temporalizaci´ on.1.

Completar los ejercicios que no ha dado tiempo en clase (I o G) (4h aprox. Actividades: Sesiones en el CC (11h).5h).2. Temario y estimaci´ on del tiempo de estudio Temario Unidad 0. Bucles. Recorrido de un vector.5h). Conceptos b´ asicos del entorno MATLAB. Funciones que llaman a otras funciones. 2 3 I por individual FHOf por fuera del horario oficial 4 G por en grupo P´ ag. Definici´ on y uso de las funciones. Unidad 3. Actividades: Sesiones en el CC (4h). Actividades: Sesiones en el CC (8h). Contadores.). Introducci´ on al curso. Variables. 94 . Funciones. Funciones con vectores. Unidad 1. Variables de entrada y salida.1. Unidad 2.Lenguajes de Programaci´ on: Gu´ ıa ECTS la pizarra electr´ onica. Introducci´ on a MATLAB. Operaciones elementales. Definici´ on de vector. Repaso y estudio I (0.2. Ello es posible porque la carpeta Mis Documentos de cada m´ aquina est´ a compartida.5h).). Vectores. Estructuras de Control. Completar los ejercicios que no ha dado tiempo en clase (I o G4 ) (2h aprox. Completar los ejercicios que no ha dado tiempo en clase (I o G) (3h aprox. 4.). 4. y puede ser accedida desde el PC del profesor. proyectando desde ´ este. Repaso y estudio I (0. el ejercicio correspondiente. Repaso y estudio I2 FHOf3 (2h). Selecci´ on de ´ ındices. Actividades: Sesiones en el CC (9h). Repaso y estudio I (0. Condicionales. Bucles anidados.

5h). PROGRAMA Y METODOLOG´ IA Actividades: Sesiones en el CC (7h). Otras actividades Presentaci´ on del curso. Repaso y estudio I (0. Completar los ejercicios que no ha dado tiempo en clase (I o G) (5h aprox.2. (1h) Prueba de control por parejas. (2h de examen + 10h de repaso) P´ ag.CAP´ ITULO 4.2. (2 o 3 horas) Repaso en la u ´ltima semana. (3h en el CC + 2h (I o G) para completar ejercicios) Examen final.). 4. 95 .

96 .Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag.

lo cual se anunciar´ a a lo largo del curso en clase.es.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.php?id=629 aunque se puede entrar a trav´ es de Polit´ ecnica Virtual en la web de la UPM.canton@upm. antonio. Tutor´ ıas http://www. Tambi´ en se disponen de ex´ amenes propuestos en otras convocatorias.2. . leo. no tendr´ an inconveniente en resolver dudas a cualquier hora. Gu´ ıa El m´ as importante de todos los recursos es esta Gu´ ıa Docente. El enlace web para la misma es: http://moodle. 5. sesiones especiales de pr´ acticas. la cual sustituye y supera a la p´ agina web de la P´ ag..es.1.upm. El curso 20072008 fue la primera edici´ on de esta plataforma.. en la p´ agina web de la asignatura (5. Los estudiantes pueden consultar sus dudas mand´ andolas a las direcciones de correo de los profesores.3.).upm. y dado que los tres profesores tienen dedicaci´ on completa. P´ agina web .4.etsin.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).Cap´ ıtulo 5 Recursos 5. adem´ as de definir el contexto del curso de modo preciso se muestran los ejemplos y ejercicios correspondientes al mismo en la parte I. 5. salvo que tuviesen alguna urgencia puntual o no estuviesen en sus despachos.es. Tutor´ ıas virtuales Con la ficha 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.souto@upm. alicia. 5. Algunas de estas tutor´ ıas podr´ ıan ser en algunos casos en el CC.gonzalez@upm. 97 .es/titulaciones/oficiales/course/view.4) o v´ ıa e-mail. En ella. el tutorial de MATLAB y diversa documentaci´ on importante para el alumno.

de los cuales damos un peque˜ no comentario. T´ ıtulo: Aprenda MATLAB 5. Se dispone adem´ as de un foro. Aunque la parte de Programaci´ on es demasiado escueta. En ella se ir´ a colgando toda la informaci´ on relativa a la asignatura. para que el estudiante pregunte dudas mientras estudia. 5. aunque han de respetar las normas(ver ap´ endice B). Jos´ e Ignacio Rodr´ ıguez. los pod´ eis encontrar en la biblioteca de la ETSIN: 1. Una introducci´ on con ejemplos pr´ acticos. ejercicios y se utilizar´ a como tabl´ on de anuncios. De vez en cuando. la cual os es facilitada al matricularos. Centro de C´ alculo Los estudiantes pueden y deben usar el CC para estudiar LP. Creemos que es el que mejor trata la parte de Programaci´ on. organizaremos sesiones de tutor´ ıas all´ ı (sobre todo hacia el final del curso).7. 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). No obstante hay que tener en cuenta que en el libro se tratan comandos de MATLAB que no permitimos en clase. Bibliograf´ ıa Los siguientes libros. T´ ıtulo: MATLAB. Autores: Javier Garc´ ıa de Jal´ on. documentaci´ on. 5.Lenguajes de Programaci´ on: Gu´ ıa ECTS asignatura. as´ ı como calificaciones(la publicaci´ on de las mismas ser´ a anunciada por correo electr´ onico). Para acceder a esta plataforma necesitais disponer de una direcci´ on de correo electr´ onico de la UPM. Est´ a pensada para estudiantes de primero y se puede seguir con facilidad. Copias En copias estar´ a disponible una versi´ on completa encuadernada de esta gu´ ıa docente. la participaci´ on en el cual forma parte del item Participaci´ on de la evaluaci´ on de la asignatura. Autores: Amos Gilat Editorial: Revert´ e A˜ no: 2006 Excelente texto introductorio a MATLAB y a la Programaci´ on con MATLAB. 98 . aunque el orden de los temas no es el mismo que el que seguimos en el curso. Alfonso Braz´ alez Editorial: Escuela Superior de Ingenieros Industriales A˜ no: 2001 Gu´ ıa para aprender MATLAB paso a paso. 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. 2.6.3 como si estuviera en primero.5. por ser muy espec´ ıficos y no estar disponibles en general en los lenguajes de programaci´ on. 5.

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

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 configuraci´ 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 final 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 planificaci´ on que se ha hecho del curso no se ha considerado adecuado establecer sesiones te´ oricas y pr´ acticas espec´ ıficas, 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 calificaci´ 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 final 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 ficha con el resto de sus datos personales y decisi´ on de optar al premio SENER. Se realizar´ an y publicar´ an dos calificaciones, 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 final. 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), codificaci´ 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 final ser´ a la mayor de las dos calificaciones.

6.4.
6.4.1.

El examen
Tipo de examen

El examen consistir´ a en la codificaci´ 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 codificar en MATLAB. En estos ejercicios no se esperan capacidades innovadoras y su puntuaci´ on acumulada ser´ a suficiente 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 ficheros 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

4.4. cuyo nombre coincidir´ a con el de la funci´ on a falta por supuesto de la extensi´ on . 6.4) de una utilidad en la que introduciendo el DNI se puede ver la nota de la u ´ltima convocatoria.4. 8. 6. 9. 11. si crees que te pueden simplificar el trabajo 12. En la revisi´ on se facilitar´ a a cada estudiante su examen as´ ı como una copia de las soluciones. Las funciones se ubicar´ an en ficheros independientes. se cerrar´ a la sesi´ on pero NO se apagar´ a el ordenador. 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. Se dispone en la web de la asignatura (ver 5. 10. En las funciones s´ olo se utilizar´ an aquellos argumentos de entrada y salida que se especifiquen en el enunciado. todas las operaciones hay que realizarlas siempre componente a componente cuando se trate con vectores. P´ ag. Todos los ficheros estar´ an ubicados en la carpeta C : \examenes. Deber´ a ser usada tal y como est´ a escrita en los apuntes o en el enunciado. Durante 60’ tendr´ a a los profesores de LP a su disposici´ on para responder todas las dudas que considere pertinentes. No se permitir´ a el uso de la vectorizaci´ on de operaciones explicada en el tutorial. La primera l´ ınea de cada programa o funci´ on ser´ a un comentario con vuestros apellidos. Los estudiantes que deseen revisar su examen deber´ an comunicarlo. Con ello conseguimos una privacidad relativa pero creemos que suficiente. la del ejercicio 2 se llamar´ a f 2. y as´ ı sucesivamente. ni la multiplicaci´ on directa de matrices. No se permitir´ a usar funciones propias de MATLAB no estudiadas durante el curso. Se podr´ an usar todos los ejemplos (no ejercicios) que se han estudiado en el curso hasta el d´ ıa del examen. nombres y el n´ umero de m´ aquina en la que est´ ais.Lenguajes de Programaci´ on: Gu´ ıa ECTS 4. 6. ´ esta no podr´ a ser modificada. Una vez definitivas. los cuales puedes encontrar en la carpeta correspondiente. 104 .5.m. 7. Publicaci´ on de calificaciones La publicaci´ on de calificaciones ser´ au ´nicamente online mientras estas calificaciones sean provisionales. por email o por cualquier otro medio a los profesores. O sea. Deber´ a estar escrito en MATLAB. 5. ni conceptos o estructuras correspondientes a ejemplos y unidades did´ acticas que todav´ ıa no se hayan explicado. Si crees que necesitas modificarla para poderla utilizar es que lo est´ as haciendo mal. La funci´ on del ejercicio 1 se llamar´ a f 1. Al terminar el examen. Cuando en el enunciado se exija la utilizaci´ on de una rutina estudiada en el curso o incluida en el enunciado. Se podr´ an crear funciones auxiliares (como una que calcule el factorial por ejemplo). se redactar´ a el acta correspondiente para pasarla a los servicios de Secretar´ ıa de la ETSIN.

EVALUACION 6. Evaluaci´ on de los objetivos La siguiente tabla relaciona los objetivos generales de la asignatura. Es decir.´ CAP´ ITULO 6. Participaci´ on CoA CoB CpA CpB CpC AcA AcB AcC AcD AcE Examen x x x x x Otras act.5. descritos en la secci´ on 3. con los diferentes apartados de la evaluaci´ on ECTS descritos en 6.2. resume qu´ e se califica en cada ´ ıtem de la evaluaci´ on. 105 .3. 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 x P´ ag.

106 .Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag.

107 .Parte III Ap´ endices P´ ag.

.

109 .Ap´ endice A Ejemplos de Ex´ amenes P´ ag.

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

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

1 y 6 = 3 + 2 + 1. No se podr´ a llamar a ninguna funci´ on. 6. 15. 2. y el 6 y el 15 son m´ ultiplos de 3 (2. la funci´ on devolver´ a el vector [1 6 28] (2. 10). si intercambiamos u y v en la llamada. 9. si n = 3 y x = 0.6458. La funci´ on devolver´ a tambi´ en la diferencia en valor absoluto entre ex y el polinomio citado evaluado en x. Por ejemplo.52 /2 + 0. 6. Por ejemplo. No se podr´ la funci´ on propia de MATLAB f actorial para hacer el c´ alculo del factorial.5 puntos). . o el 1.5 puntos).0029 (2. 3. 9. Por ejemplo. un n´ umero real x y devuelva el polinomio de Mc-Laurin de de grado n de la funci´ on ex . 4. 1. cuyos divisores son 3.53 /6 = 1. 8. 5. 5. si v = (7. cuyo u ´nico divisor es el mismo. 4. 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.5 + 0. devolver´ ıa 1 + 0. 8). La alternativa es o bien escribir una funci´ on aparte que calcule el factorial. devolver´ ıa tambi´ en 0. ex ∼ 1 + x + xn x2 x3 + + ··· + 2! 3! n! Para evaluar el polinomio de Mc-Laurin. que es bastante similar a e0. Se define un n´ umero m´ agico como aquel que es la suma de todos sus divisores salvo el mismo. evaluado en x.5 puntos). o el 28 = 14 + 7 + 4 + 2 + 1. si u = (2. 8.5 = 1. si n = 30. por ejemplo el 6. en este caso. 4. La funci´ on devolver´ a otro vector w construido a partir de todas las componentes de u y v . porque el 6 y el 8 son m´ ultiplos de 2. Por tanto.6487. el resultado ser´ a w = (1. 6. 3. 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 2 y 2. se construir´ a´ este componente a compoa usar nente y se utilizar´ a del modo adecuado la funci´ on ud3 f evalua. 2.5 puntos).Ejercicios. tales que el vector w tambi´ en est´ e ordenado. el resultado tiene que ser el mismo (2. 3. Codifica una funci´ on que reciba dos vectores u y v ordenados de modo creciente por hip´ otesis. Devolver´ a adem´ as el n´ umero de elementos de v que son m´ ultiplos de m + 1. Como comprobaci´ on adicional. 10) y v = (1. 2.5. que carecen de elementos comunes y de dimensiones m y n que son en general distintas. o bien cualquier otra idea que se os ocurra. 5) y m = 2. Por ejemplo. Crea una funci´ on que reciba un n´ umero natural n.

14. . 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. xi = xi − 1 + xi − 2 .1 3. 7. Se podr´ a suponer que en el vector u siempre va a haber enteros y no enteros (2.Ejercicios. 1. y el primer primo ser´ ıa el 7. 4. 20. 23.6800] cuya media vale 8. 15. Construye una funci´ on que reciba dos n´ umeros naturales p..7200 2. 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. 6).. pues 10 − 7 = 3. Por ejemplo..7].7). mr. un = (20. 3. i > 2 Por ejemplo. 11. la funci´ on devolver´ a un 1. y el primer primo ser´ ıa el 23(2. la sucesi´ on de Fibonacci estar´ ıa formada por 1. tendr´ ıamos 4.3200 22. me = 3 y mr = 12. 9. 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. 13) el resultado ha de ser ue = (3.5 puntos). 3.7. 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.1 el punto que m´ as cerca tiene su valor de la media (2. 13).5 2.5 puntos). 5. 10. 2. el resultado de evaluar el polinomio p en todos los puntos de x es un vector y = [2. si u = (3. 14. 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.7. si v = (3. 6) la funci´ on devolver´ a 0. Por ejemplo. as´ ı como sus respectivos m´ ınimos me.3. Crea una funci´ on que reciba un vector p cuyas componentes asimilamos a los coeficientes de un polinomio del modo como se ha hecho en el curso. As´ ı. 7.5 puntos). 12. si el vector es v = (3. 4. x2 = q.5 puntos). La sucesi´ on de Fibonacci se construye de tal modo que. No se tendr´ an en cuenta ni p ni q .. 7. si p = [1 − 1 2] y x = [1. x1 = p. Si p = 4 y q = 5.5 puntos). 12. . 5.3. 19h30m Tiempo para esta parte : 85 minutos Puntuaci´ on: 10 puntos. 7. Se recomienda probar la funci´ on cambiando de orden los elementos del primer ejemplo (2.. si p = 1 y q = 3.6800.0000 7. 7. Examen final de Lenguajes de Programaci´ on. 5. siendo 2. . Sin embargo.1 − 0.

3. 11.1 3.0000 7. la sucesi´ on de Fibonacci estar´ ıa formada por 3. Si p = 2. q = 1 y r = 3.Ejercicios. 2. 4. el resultado de evaluar el polinomio p en todos los puntos de x es un vector y = [2. si v = (3. pues los tres primeros m´ ultiplos de 2 ser´ ıan 4. la funci´ on devolver´ a un los vectores vp = (3. 14. 14. x2 = q.7200 2. q = 4 y r = 2. siendo 2.1 − 0. Como 18 y 123 son los dos primeros m´ ultiplos de 3. si p = [1 − 1 2] y x = [1..5 2. Crea una funci´ on que reciba un vector p cuyas componentes asimilamos a los coeficientes de un polinomio del modo como se ha hecho en el curso. 10. En el momento en que hayamos encontrado r m´ ultiplos de p la funci´ on terminar´ a. Construye una funci´ on que reciba tres n´ umeros naturales p. 4. La funci´ on devolver´ a 1 si existe alguna combinaci´ on de fracciones formadas por elementos del vector u tomados de dos en dos. 47.3200 22.1 el punto que m´ as cerca tiene su valor de la media.. 18 y 76. devolviendo el t´ ermino en que estemos de la sucesi´ on de Fibonacci (2. 6). si p = 3.6800.5 puntos). 7.. Nombre: N´ umero de PC: Firma: 1. 29. Por ejemplo. As´ ı. 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. 7.6800] cuya media vale 8. q y r. cuyo ´ ındice es 3. 18. la funci´ on devolver´ ıa en este caso 76. 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. 123. 7) y vnp = (10. Crea una funci´ on que reciba un vector u de n´ umeros naturales y otro vector v de n´ umeros racionales positivos.. 76. 6) (2. 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. que sea . No se tendr´ an en cuenta los valores p y q . 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.5 puntos). Examen final de Lenguajes de Programaci´ on. 19h30m Tiempo : 90 minutos Puntuaci´ on: 10 puntos. el valor a devolver ser´ a 123 (2. i > 2 Por ejemplo.7]. xi = xi − 1 + xi − 2 . que ha de ser el u ´nico valor que finalmente devuelva la funci´ on (2.5 puntos).5 puntos). x1 = p. La sucesi´ on de Fibonacci se construye de tal modo que.

1. 5. Se considerar´ a que dos n´ umeros son iguales si su diferencia en valor absoluto es menor que prec.igual a alg´ un elemento del vector v y 0 en caso contrario.2571) la respuesta ha de ser 0 (2.8571) el resultado ha de ser 1 pues prec = 0. 20.98. Por ejemplo.06. Si ponemos como ejemplo el mismo u pero ahora v = (2.8571| = 0. Se definir´ a en la funci´ on una variable prec igual a la mil´ esima parte de la suma de los elementos de u. . 7. si u = (3. y |13/7 − 1. 13) y v = (2. 1. 12.98.5 puntos).00004 < prec.

Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag. 116 .

117 .Ap´ endice B Gesti´ on del CC P´ ag.

T.S.ETSI NAVALES. A continuación explicamos en que consiste cada carpeta: . CENTRO DE CÁLCULO USUARIO DEL DOMINIO CCALCULO ACCESO A LOS ORDENADORES DEL CENTRO DE CÁLCULO E. A la derecha aparecerán 3 accesos directos a 3 carpetas.I NAVALES Cuando enciendas el ordenador aparecerá una máscara donde introducirás el usuario y la contraseña que se te ha facilitado. comprobando que la sesión se conecte a CCALCULO: Iniciaras una sesión con este aspecto: A tu izquierda encontrarás todos los accesos directos a los programas que están instalados.

ASIGNATURAS Esta carpeta esta disponible para todos los usuarios.0 Visual MSDN 6. Winamp 5.O: Windows XP Profesional SP2. Físicamente se encuentra en un servidor de la ETSI Navales. Esta compartida para todos los ordenadores de la sala.0 Visual J ++ 6.0 Winrar 3. Solo tú podrás acceder a esta carpeta. Se recomienda que cada usuario borre sus ficheros de zonas compartidas (como los discos duros de los PC´s) una vez finalizada su sesion de trabajo. Estos ficheros no los pueden ver los demás usuarios.5 MD_Solids 1.0 Matlab 5.2 Microsoft Visio 2003 Microsoft Project 2003 Autocad 2005 Rhinoceros 3.7 Maple 9 Chechenic Femap v8. Microsoft OFFICE 2003 Adobe Reader 7.Siempre que te conectes a tu usuario aparecerán tus ficheros y los tendrás disponibles desde cualquier ordenador de la sala. el usuario deberá cerrar la sesión una vez que termine de usar el ordenador (Menú de Inicio. SP1.1: Lector de MP3 MathType 5.0 Matlab 2006 Visual C++ 6. CENTRO DE CÁLCULO USUARIO DEL DOMINIO CCALCULO CARPETA PERSONAL Esta carpeta es individual para cada usuario.ETSI NAVALES. Aquí pondrán los profesores los trabajos y documentos que quieran compartir con vosotros. Estos datos se pueden perder en cualquier momento. Para una mayor seguridad. disquette). bien por ser borrados por otro usuario o por el personal de CdC en sus tareas de mantenimiento.3 DNV Nauticus . bien en su carpeta personal o en algún medio extraíble (memoria USB. Esta carpeta tiene capacidad hasta 128MB.11 Internet Explorer 6.0 Electronics Workbench PCTRAN-U2LP Ansys ED 5. Firefox.Cerrar sesión). SOFTWARE DISPONIBLE EN CADA ORDENADOR • • • • • • • • • • • • • • • • • • • • • • • • • S. 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. MIS DOCUMENTOS Esta carpeta físicamente se encuentra en el disco duro del ordenador en el que inicias sesión.

Además en la sala de Informática se permite la Navegación de las páginas: ETSI Navales. UPM. CENTRO DE CÁLCULO USUARIO DEL DOMINIO CCALCULO En los ordenadores con conexión a Internet solo están instalados los 10 primeros programas de la lista. Aulaweb. 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 . Correo Alumnos.ETSI NAVALES. Centro de Cálculo.

El usuario velará en la medida de lo posible por la seguridad de su cuenta. NORMAS DE FUNCIONAMIENTO DE LAS AULAS DE INFORMÁTICA • Para utilizar las instalaciones del CdC el alumno tendrá que estar matriculado en la ETSI Navales o tener autorización expresa por parte del Centro. Normalmente para dar clase.centrocalculo.upm.También puedes encontrar esta información en la web www. formativos y de investigación propios de la Universidad.ETSI NAVALES. para la reinstalación de los equipos. (consta de 10 puestos con capacidad para 20 alumnos) Sala de Informática. se reservará toda la sala de Informática. Se recomienda que una vez impresos los trabajos.es La función del Centro de Cálculo (CdC) es dar soporte a los alumnos y al personal de la ETSIN para la realización de trabajos orientados a fines docentes. (consta de 50 puestos con capacidad para 100 alumnos) Los alumnos podrán utilizar estas dos salas. El alumno solicitará a través de un cuestionario el usuario/contraseña con el que accederá a los ordenadores de las aulas. Se compone de 3 despachos para el personal informático y de 2 salas de Informática con equipos. Queda extrictamente prohibida la utilización autorizada o no de una cuenta de usuario distinta a la propia.etsin. ya que pueden ser impresos por otro usuario. SERVICIO DE IMPRESIÓN La sala dispone de 1 Impresora Modelo OCE Varioprint 2040 que funciona con una tarjeta prepago que se puede adquirir en Gestión económica. CENTRO DE CÁLCULO USUARIO DEL DOMINIO CCALCULO DESCRIPCIÓN DEL CENTRO DE CÁLCULO www. Las salas son: • • Sala de Navegación por Internet. actividades programadas y las comunicaciones a los usuarios.centrocalculo. el CdC se reserva el derecho de cerrar el CdC el día anterior al exámen.upm.navales@upm.etsin.es. se borren de la memoria de la impresora. exámenes. se reserva la mitad de la sala de Informática delimitándose por una mampara. El CdC no se hace responsable de los perjuicios ocasionados al usuario por la acción de terceros. se puede enviar un e-mail a centrodecalculo. Todo usuario está obligado a identificarse ante el personal de CdC cuando éste lo solicite. En él se imparten clases y se realizan exámenes. salvo cuando estén reservadas. Para dirigirse al personal responsable.es o utilizar el buzón de sugerencias (también 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 días lectivos. No es Fotocopiadora. • • . En épocas de exámenes. Existe en la entrada un tablón donde se expondrán las reservas para la docencia. Si el número de alumnos es grande.

ETSI NAVALES. CENTRO DE CÁLCULO USUARIO DEL DOMINIO CCALCULO
• La utilización de los equipos informáticos se reservará exclusivamente para el soporte de las prácticas de asignaturas, navegación por Internet y el correspondiente aprendizaje de los distintos programas propios de la carrera. Deberá informarse al personal de Informática de cualquier deficiencia o funcionamiento anómalo 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 lúdico. 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 configuración de software y hardware sin previa autorización del responsable de aula. Modificar la situación de cualquiera de los equipos o recursos del Aula sin previa autorización. Interferir en el trabajo de los demás 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 NAVEGACIÓN POR INTERNET El uso del Servicio de Internet se realizará dentro de los fines docentes, formativos y de Investigación 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 páginas web con contenidos pornográficos, páginas de contenido hacker en cualquiera de sus variantes, intercambio de material protegido con derechos de autor, etc.. También se prohibe su uso para cualquier fin lúdico 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 sesión de usuario, deshabilitar cuenta o mandar desalojar el CdC. El personal se encuentra a vuestra disposición para cualquier aclaración o duda.

Ap´ endice C Control de tiempos y ficha

P´ ag. 123

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

APELLIDOS: NOMBRE: DNI O PASAPORTE: EMAIL (escríbelo con claridad!!!! y si estás matriculado, activa tu cuenta de correo UPM): GRUPO (A,B,C): ¿ES TU PRIMER AÑO EN LA ETSI NAVALES? TFO MOVIL: TFO FIJO: ¿TE GUSTARÍA OPTAR AL PREMIO SENER DE LP?:
CASO DE QUE SÍ,¿CUÁL HA SIDO TU CALIFICACIÓN DE ACCESO A LA UNIVERSIDAD?:

Y ADEMÁS FIRMA Y FECHA:

---------------------------------------------------Para efectos estadísticos, ¿te importaría decirme los siguientes datos? 1 Elección de primera opción: 2 Elección de segunda opción: 3 Elección de tercera opción:

procediendo al redondeo cuando no sean valores exactos. Acum: por horas acumuladas de cada categoría InFHOf: por horas de trabajo individual fuera del horario oficial EqFHOf: por horas de trabajo en equipo fuera del horario oficial .5 horas. y 1h17m se consignará como 1. llevando también el acumulado. 50min se consignará como 1. DHOf: por horas dentro del horario oficial como clases y exámenes. Así.5 Fecha: fecha en la que se ha rellenado la fila correspondiente. La unidad mínima serán 0.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.

Lenguajes de Programaci´ on: Gu´ ıa ECTS P´ ag. 126 .

Ap´ endice D Premio SENER P´ ag. 127 .

Bases del premio 1. Plan 2002. que deseen optar al Premio. Procedimiento de valoración: Los alumnos están organizados por grupos de 2 componentes durante el desarrollo del curso. ETSIN cree que el premio. y su fundación. no motiven a los que más lo necesitan. y los que por tanto se convierten en mejores candidatos para obtenerlo. 2. dada su naturaleza.PREMIO SENER A LA MEJOR PROGRESIÓN EN LA ASIGNATURA LENGUAJES DE PROGRAMACIÓN . y es de agradecer la implicación de SENER en el mismo. 3. De hecho. los componentes del grupo habrán obtenido una nota final. En este sentido. De este modo se pretende motivar a los estudiantes que llegan a la titulación con unas notas medias de Bachillerato bajas. Plan 2002. de la Universidad Politécnica de Madrid. y terminen simplemente por confirmar la buena preparación y actitud de ciertos estudiantes. pues son precisamente los "peores" estudiantes. SENER es la empresa líder en el sector de las aplicaciones informáticas para el mundo naval. Al final de esta evaluación. los que parten de una posición más baja. Objeto del premio: El objeto de este premio es recompensar la mejor progresión durante el desarrollo de la asignatura de Lenguajes de Programación de Primer Curso de la titulación de Ingenieros Navales y Oceánicos. tratando de que los estudiantes adquieran hábitos de trabajo en equipo y se familiaricen con los problemas y ventajas de esta forma de trabajo. de la Universidad Politécnica de Madrid. la Fundación SENER. este premio tiene más matices. lleva el mejor nombre posible. Lo habitual es que estos premios que pretenden servir para motivar. El baremo para fijar la puntuación para el premio pasa por restar. la nota media del 1/4 . de cada una de las notas de cada uno de los 2 componentes. el modus operandi de cada equipo tiene su repercusión en la evaluación ECTS que se viene desarrollando desde el curso 2005-2006. a partes iguales con el Departamento Naval de SENER se han ofrecido a dotar y dar nombre a este premio. Requisitos de los solicitantes: Alumnos matriculados en la asignatura de Lenguajes de Programación de Primer Curso de la titulación de Ingenieros Navales y Oceánicos. ofreciéndoles la oportunidad de que una buena progresión respecto a la posición de partida suponga una recompensa económica. con repercusión pública y curricular. los que más pueden progresar.

4)+(9. El grupo ganador será aquel que mayor puntuación tenga siguiendo este baremo. Dotación: La dotación será de 1200€ a repartir a partes iguales entre los 2 componentes del grupo. La puntuación máxima será de 10 puntos. que previamente habrán firmado su autorización para que se facilite dicho dato de su expediente. y el abono de los premios se efectuará mediante cheque nominativo de 600€ emitido por la Fundación SENER para uno de los Con nota media del Bachillerato nos referimos a la Calificación 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. Así.2 respectivamente.55. Para ello. para que quede constancia de modo cuantitativo del progreso del grupo ganador en términos absolutos y relativos al resto de grupos de ese año académico. Entrega de premios: La entrega de premios se realizará durante la ceremonia de entrega de diplomas a los nuevos egresados.2)=4. 5.5 y un 9. se considerará que su nota es la media de entre todos los estudiantes para las que sí lo sea. la Secretaría 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. (105)+(10-5)=10. ETSIN emitirá un diploma acreditativo.0-6. 4. Ello les permitirá conocer su posición e implicarse más en la parte final del curso. Teniendo esto en cuenta se arbitrará una forma de seguimiento consistente en la publicación de las notas de los diferentes grupos en 2 instantes del curso.bachillerato 1 . su puntuación para el premio será de (7. Para el premio se tendrá en cuenta únicamente la nota correspondiente a la evaluación ECTS y no la correspondiente a la evaluación convencional. 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 parámetro no sea relevante. el cual contendrá un suplemento al mismo consistente en un histograma de las notas con la puntuación de los diferentes grupos. La evaluación ECTS contempla diferentes ítems a lo largo del curso (ver Guía Docente de la asignatura). 1 2/4 . y la mínima de –20 puntos.9 puntos. Esta dotación se incrementará cada año aplicando el IPC correspondiente.0 en la evaluación ECTS de Lenguajes de Programación y sus notas del bachillerato fuesen 5. identificando a los alumnos a través de su DNI. en la que se consigue la parte más importante de la nota. (0-10)+(0-10)=-20.4 y 6. si los estudiantes de un grupo obtuviesen un 7. La información para dicho histograma será facilitada por el profesor responsable de la asignatura.

así como 4 compañeros a elegir por cada uno de ellos y el delegado de su clase durante el curso correspondiente. estarán invitados a esta ceremonia.componentes del grupo ganador y otro de la misma cantidad emitido por el Departamento Naval de SENER Ingeniería y Sistemas para el otro componente del grupo ganador. Se invitará a SENER y a Fundación SENER a que asistan y entreguen directamente el premio a través de alguna o algunas personas indicadas por ellos mismos. Los familiares de primer grado de los estudiantes premiados. 3/4 .

14 12 10 8 6 4 2 0 -8 -6 -4 -2 0 2 4 6 Puntuación <= Número de grupos 1 La puntuación corresponde a la diferencia (suma de ambos componentes) entre la nota ECTS de la asignatura y la nota media del bachillerato.Curso 2007-2008- Ganadores: LUIS ARJONILLA GARCIA SERGIO IGLESIAS CHAPERO Histograma de puntuaciones de todos los grupos 1.PREMIO SENER A LA MEJOR PROGRESIÓN EN LA ASIGNATURA LENGUAJES DE PROGRAMACIÓN . .

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

Sign up to vote on this title
UsefulNot useful