Lenguajes de Programaci´n o Gu´ docente ECTS ıa

Ingenier´ Naval y Oce´nica ıa a Escuela T´cnica Superior de Ingenieros Navales e Universidad Polit´cnica de Madrid e

A. Souto Iglesias, J.L. Bravo Trinidad L. Gonz´lez Guti´rrez, A. Cant´n Pire a e o 30 de septiembre de 2008

....para m´ una buena escuela ser´ una escuela distinta, ı ıa una escuela que tuviese un principio seg´n el cual todas sus u normas estuviesen enfocadas a mantener a tantos estudiantes como sea posible durante el mayor tiempo dentro del sistema. As´ todo tendr´ que estar dirigido a hacer que los estudiantes ı, ıa participasen, que se sintiesen identificados con la escuela, que tuviesen la sensaci´n de estar haciendo las cosas bien. Para o m´ una buena escuela es una escuela que mantiene a todos los ı alumnos trabajando, comprometidos y con la sensaci´n de que no o 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.

.

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

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

. . . . . . . . . . . Evaluaci´n tradicional . . . Control de tiempos y ficha D. . Evaluaci´n ECTS . . . 5 a . . . . Premio SENER Indice alfab´tico e P´g. . . . . . . . . . . . . . . . . . . . . . . Ejemplos de Ex´menes a B. General . . . . . . . . . . . . . . . o 6. . . . . . . . . . Gesti´n del CC o C. . . Evaluaci´n o 6. . . . .2. . . . . . . . .1. . 6. . . . . . . . o 6. . . . . . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . .5. . . . . . . . . . . . . . .4. . Evaluaci´n de los objetivos o . . 6. . El examen . . . . . . . .´ INDICE GENERAL 6. . . . 101 101 101 101 103 105 III Ap´ndices e 107 109 117 123 127 132 A. . . . . . . . .

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

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

.

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

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

MATLAB. es un buen ejemplo de este o a e tipo de libros 2 Borrell i Nogueras. el resto u o del curso ser´ para ´l una progresi´n sencilla. Creemos que en ese sentido el libro es una aportaci´n interesante o ya que no hay en la literatura cursos de introducci´n a la Programaci´n que se apoyen en o o MATLAB como lenguaje de referencia. Aqu´ est´n los ejemplos m´s interesantes del curso. En cuanto a o compendios de MATLAB. Disponible online en o http://forja. pues no se recurre todav´ a vectores o matrices. pues ya se tienen las herramientas para manejarlos. no hemos pretendido escribir un compendio exhaustivo a o ni de Programaci´n ni de MATLAB. Debido a ello la selecci´n de unidades did´cticas no es o o a inocente sino que subyace la idea de mostrar unicamente los aspectos considerados esenciales ´ para aprender a programar.. 2006. como el de comprobar si un ı a a n´mero natural es primo. recomendamos el sensacional trabajo de Guillem Borrell2 . Revert´. Como coment´bamos en el pr´logo.rediris. Gilat. 11 a .es/ 1 P´g. Introducci´n Informal a MATLAB y OCTAVE. Si no se siente c´modo todav´ tendr´ ocasi´n a e o o ıa. ıos En la unidad 3 se introducen los vectores.ardua. A. y lo m´s parecido corresponde a cursos de MATLAB a en los que en alg´n cap´ u ıtulo se tratan diferentes aspectos de la programaci´n1 . G.. a o de cubrir los vac´ en las unidades siguientes. Una introducci´n con ejemplos pr´cticos. donde los bucles surgen de modo ıa natural. Si el estudiante se siente c´modo al final de esta unidad.

Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g. 12 a .

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

14 a .Lenguajes de Programaci´n: Gu´ ECTS o ıa Figura 1: Espacio de trabajo de MATLAB P´g.

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

Por ejemplo.1 + log10 108.4 Realizar la siguiente operaci´n: 2.3 x = 44.80000318145901 Ejercicio 0.80000318145901 Como es muy f´cil recuperar ´rdenes previas podemos utilizar esta idea para simular los t´rmia o e nos de una sucesi´n recurrente. no tenemos m´s que escribirla en la l´ a a ınea de comandos y pulsar Enter. Si queremos saber cu´nto vale una variable.6 Repetir la operaci´n anterior hasta que se estabilice el cuarto decimal de x de o un paso al siguiente. xn+1 = cos(xn ) o >>x=0.98006657784124 >>x=cos(x) x = 0.2 x = 0.72. 16 a .7 Cambiar el formato para que otra vez se vean s´lo cuatro decimales.55696725280964 >>x=cos(x) x = 0.78947843776687 >>x=cos(x) x = 0.8 Empezando por x = 100 repetir la operaci´n o x2 − 81 2x hasta que se converja en el cuarto decimal.66083755111662 >>x=cos(x) x = 0. o Ejercicio 0.84886216565827 >>x=cos(x) x = 0.20000000000000 >>x=cos(x) x = 0.1 +log 10 108.5 Realizar la siguiente operaci´n: e2. ¿Qu´ relaci´n hay entre el ultimo x y 81? e o ´ x=x− P´g. >>y y = 3.2 y asignarla a la variable t.70132670851334 >>y=log(x) y = 3. o Ejercicio 0.Lenguajes de Programaci´n: Gu´ ECTS o ıa >>x=cos(5)*2ˆ7.70421571334199 Ejercicio 0.7 o 2. Ejercicio 0.2 y asignarla a la variable x.

¿Tiene sentido el resultado? 0. v2 = 2. Hay que tener cuidado al utilizarla. 17 a . ya que borra todas las variables que est´n en la memoria sin pedir confirmaci´n.10 Preguntar el valor de A igual que acabamos de preguntar x. TUTORIAL DE MATLAB Ejercicio 0. un incremento y el e ultimo elemento. Manejo de vectores Para crear y almacenar en memoria un vector v que tenga como componentes v1 = 0. ız u o P´g.9 Definir A como en vuestro documento de identidad o pasaporte. u A veces es bueno apagar y encender la calculadora para borrar todo y empezar de nuevo. Esto se hace con la orden clear. mente el vector v como una secuencia que empieza en 0. v3 = 4. e o >>clear >>x ??? Undefined function or variable ’x’. As´ podemos definir igual´ a ı. avanza de 2 en 2 y que termina en el 8: 4 Las calculadoras obtienen la ra´ cuadrada de un n´mero mediante esta sucesi´n. MATLAB rellenar´ paso a paso sus componentes.3. Ejercicio 0. ¿A qu´ ha convergido la sucesi´n? 4 e o Es interesante comentar de este ejercicio que MATLAB distingue entre letras may´sculas y u min´sculas en los nombres de las variables. Empezando por x = 100 repetir la operaci´n o x2 − A x=x− 2x hasta que se converja en el cuarto decimal.´ UNIDAD DIDACTICA 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´n definir este vector especificando su primer elemento.

Esto es a a muy util algunas veces: ´ >> v = [0:2:8]. cuando pulsemos la tecla Enter para ejecutarla. Para trasponer un vector o una matriz se usa el ap´strofo. 18 a . >> v v = -3 2 4 6 8 3 O hacer operaciones entre componentes. se ejecutar´ pero no mostrar´ el resultado en pantalla (se anula el eco en pantalla). a o >> v(1) ans = 0 O modificarla: >> v(1)=-3. al final de una l´ ınea de comandos.11 Calcular la suma de los elementos de v. v2 · v5 : >> v(2)*v(5)ˆ3 ans = 1024 Ejercicio 0. >> v v = 0 2 4 6 8 Es f´cil acceder al contenido de una posici´n del vector. o >> v’ ans = -3 2 4 6 8 P´g. por ejemplo la primera. elemento a elemento.Lenguajes de Programaci´n: Gu´ ECTS o ıa >> v = [0:2:8] v = 0 2 >> v v = 0 2 4 6 8 4 6 8 Si ponemos . que es el acento que est´ en la o a misma tecla que el signo de interrogaci´n “?”. >> 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].

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

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

3)=1 I = 1 0 0 1 0 0 0 0 1 Ejercicio 0. P´g. TUTORIAL DE MATLAB Podemos modificar sus elementos diagonales para tener la matriz identidad. >>I(3. o Ejercicio 0.4. 21 a . se puede suprimir.16 sacando factor com´n y utilizando la funci´n eye. 1. Ejercicio 0.18 Repetir el ejercicio 0.19 Definir una matriz D diagonal cuyos elementos sean −2.7. u Otra forma de definir la matriz identidad es a trav´s de la funci´n diag. >>I(2. Si v es o a >> 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. >>I(1. que recibe un vector e o que convierte en diagonal de una matriz cuyos otros elementos son nulos.´ UNIDAD DIDACTICA 0. u o 0. Esta orden ´ u es equivalente a la siguiente >> e=v(1:3) e = 0 2 4 ya que cuando el incremento es la unidad. 0. >>J=diag([1 1 1]) J = 1 0 0 0 1 0 0 0 1 Ejercicio 0.2)=1.2 y −0. Definici´n de submatrices o La definici´n de “subvectores” o submatrices es muy f´cil.1.21 Repetir el ejercicio 0.16 sacando factor com´n y utilizando la matriz identidad. y definir la matriz identidad de 10 × 10.20 Pedir ayuda de la funci´n eye. El segundo n´mero es u el incremento de ´ ındices dentro de v y el ultimo n´mero marca el elemento final.1)=1.

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

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

:)=BA(2.27 Encontrar la soluci´n del sistema lineal BB t x = v asignando esa soluci´n al o o vector x. as´ que hay que realizar una permutaci´n de ı o filas. o a Podemos crear una matriz aumentada a partir de B y del t´rmino independiente y reducirla e hasta convertir el sistema en uno equivalente triangular. >>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´n hacia atr´s: o a Ejercicio 0.:)-3*BA(1.30 Definir un vector h utilizando la ultima columna de BA.:)=BA(3.28 Comprobar la soluci´n obtenida realizando el c´lculo BB T x − v. Ejercicio 0. Ejercicio 0. ´ P´g. 24 a . 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.:)-2*BA(1.0 0 1. premultiplicando por la identidad permutada: >>IP=[1 0 0.:) BA = 1 2 3 1 0 0 -1 1 3 7 8 5 >>BA(3.Lenguajes de Programaci´n: Gu´ ECTS o ıa >> B*x ans = 1 3 5 Ejercicio 0. Ejercicio 0.26 Definir una matriz B2 = BB t .0 1 0].29 Definir una matriz H de 3 × 3 a partir de las tres primeras columnas de la matriz BA.:) BA = 1 2 3 1 0 0 -1 1 0 1 -1 2 La segunda fila tiene el elemento diagonal nulo.

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

De a este modo. En otras palabras. pero como esta o multiplicaci´n tiene otro sentido. De hecho.6931 1.35 Definir un vector w tal que sus componentes sean las de v al cubo. Ser´ estupendo poder usar directamente el ıa s´ ımbolo “∗” pues en realidad estamos haciendo una especie de multiplicaci´n. se pueden definir operaciones sencillas que se pueden realizar f´cil y r´pidamente.1411 >> log(v) ans = 0 0.5000 Ejercicio 0. >> v. supongamos que se quiere conocer v(1) ∗ b(1). cada elemento del vector v con su correspondiente elemento en el vector b. v(2) ∗ b(2). y v(3) ∗ b(3).5000 0. MATLAB nos devolver´ un o a a vector del mismo tama˜o en el que cada elemento se obtiene aplicando la funci´n al elemento n o correspondiente del vector original >> sin(v) ans = 0. 26 a .0986 Saber manejar h´bilmente estas funciones vectoriales es una de las ventajas de MATLAB.*b ans = 2 8 18 >> v.9093 0.8415 0. Los programadores que crearon o 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.Lenguajes de Programaci´n: Gu´ ECTS o ıa 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./b ans = 0. por ejemplo. necesitamos algo diferente. Supongamos que queremos multiplicar. se define un vector muy grande y lo manipulamos de este modo tan sencillo. P´g.5000 0. ¿por qu´ no ir hasta el final? e Si aplicamos una funci´n matem´tica predefinida a un vector. Una vez que hemos abierto la puerta a operaciones no lineales. a a En el siguiente ejemplo.

Para compararlos.1000 0..1:100] x = Columns 1 through 7 0 0. ıan 5 P´g.. Leibniz. dibujamos los valores exactos superpuestos con los aproximados marcados por puntos verdes ‘o’... desarroll´ un m´todo para encontrar soluciones a o o e singulares de ecuaciones diferenciales y sent´ las bases de la geometr´ descriptiva y proyectiva) su resultado o ıa m´s conocido es el Teorema de Taylor. Taylor para ticip´ activamente en las agrias disputas entre matem´ticos brit´nicos (“newtonianos”) y matem´ticos euo a a a ropeos (“leibnitzianos”) sobre la adjudicaci´n del descubrimiento del C´lculo Diferencial.3000 .. utilizaremos la funci´n seno y su desarrollo o en serie de Taylor5 en torno al cero con t´rminos c´bicos.. Columns 995 through 1001 99./(1+cos(x)). Ejercicio 0.. introdujo a el c´lculo en diferencias finitas. Estudi´ en o o Cambridge y cuando se gradu´ ya hab´ escrito su primer art´ o ıa ıculo matem´tico de relevancia. tenemos en los vectores yseno e ytaylor los valores reales y los valores aproximados obtenidos del desarrollo limitado..36 Definir un vector t cuya primera componente sea −4.. James Gregory.´ UNIDAD DIDACTICA 0. Para mostrar el uso del comando plot.5000 99. >>x=xmin:h:xmax. 27 a .7000 >> y = sin(x).5000 0.6000 99. Sin a o embargo. y de Moivre hab´ ya descubierto independientemente variantes del mismo. Admite una gran variedad de a argumentos.. que tenga un incremento entre componentes de 0. a Brook Taylor naci´ en 1685 en Inglaterra en el seno de una influyente y adinerada familia. Damos a una muestra de esto que luego completaremos.7.4000 0.. >>xmax=2. Aqu´ s´lo utilizaremos el rango y el formato.6000 99.2000 0.y) Ejercicio 0. e u a seleccionamos el paso del vector de muestreo x y sus valores primero y ultimo ´ >>h=0. Johann Bernoulli.8000 99.. >> plot(x. Tras esto. 0.*x. TUTORIAL DE MATLAB >> x = [0:0. >>ytaylor=x-x..4000 99..05 y termine en el punto 1.9000 100..1 >>xmin=-2. Newton. Para dibujar la gr´fica. y la posibilidad de representar dos ı o curvas en la misma gr´fica..ˆ3/6.0000 Usando este tratamiento vectorial..37 Definir un vector y a partir de cada componente del vector t reci´n definido e y = 5e−t + sin(10t) 2 0. >>yseno=sin(x). Creaci´n de gr´ficas o a En esta secci´n presentamos los comandos b´sicos para crear representaciones gr´ficas de o a a funciones. llegando a formar o a parte del Comit´ que la Real Sociedad form´ para dar fin a tal discusi´n.. se pueden generar gr´ficos de modo muy sencillo.. x − x3 /6. que permite el desarrollo de funciones en series polin´micas. la integraci´n por partes.. no fue Taylor el primero en obtenerlo.. El comando plot se utiliza para generar gr´ficas en MATLAB. e o o Aunque las aportaciones de Taylor a las matem´ticas son profundas y variadas (entre otras.

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

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

m con la secuencia de comandos siguiente: v = [1 3 5]’. >>tutorm Tenemos dos aproximaciones.:) IP=[1 0 0. a >>xp = x. Si se quieren guardar a estos vectores hay que especificarlo.43 Crear y ejecutar desde MATLAB un fichero que se llame BAIP. Ejercicio 0.:)=BA(3.42 Calcular la dimensi´n que tienen que tener los vectores x y xp y confirmar el o resultado utilizando la orden size.:)=BA(2.01. BA=IP*BA P´g. >>ytaylorp = ytaylor.:)-2*BA(1. >>ysenop = yseno.1 que se almacena en los vectores xp. almacen´ndolos en nuevas variables.:)-3*BA(1.:) BA(3. yseno e ytaylor. B = [ [1 2 3]’ [2 4 7]’ [3 5 8]’]. Ejercicio 0. El programa sobreescribir´ los vectores x. ysenop e ytaylorp y la segunda relativa a un paso de 0. yseno e yatylor.0 0 1.01 que guardamos en los vectores x.Lenguajes de Programaci´n: Gu´ ECTS o ıa Figura 2: Recuperar vista de la figura 1 cuidado.0 1 0]. BA=[B v] BA(2. >>h = 0. 30 a . Ahora podemos seleccionar un nuevo paso h y volver a ejecutar tutor. la primera con un paso h de 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.45 Crear y ejecutar desde MATLAB un fichero que se llame CURVATY.m.9. Podemos multiplicar dos n´meros complejos como: u >>(2+3*i)*(3-7*i) ans = 27.3966i P´g. a Ejercicio 0. 31 a . 3.05 y termine en el punto 1. Definir un vector t cuya primera componente sea −4. y) con cruces rojas y con una ret´ ıcula ( grid) incorporada. Borrar todas las variables activas de la memoria. Ejercicio 0.2586 + 0. TUTORIAL DE MATLAB Figura 3: Gr´fica correspondiente al ejemplo tutorm. Definir un vector y a partir de cada componente del vector t reci´n definido como: e y = 5e−t + sin(10t) 4. MATLAB y n´meros complejos u MATLAB entiende la aritm´tica compleja y es perfectamente posible trabajar con n´meros e u complejos. 2.0000i O dividirlos como: >>(2+3*i)*(3-7*i) ans = -0.5. 2 0.0000 . que tenga un incremento entre componentes de 0. Dibujar la curva (t.´ UNIDAD DIDACTICA 0.m con una secuencia de comandos que realicen las operaciones siguientes: 1.

xˆ2. 0] Y podemos calcular su determinante de modo simb´lico: o >> det(A) ans = -2*y*x+2*yˆ2+xˆ4-xˆ3*y Ejercicio 0. 32 a . ´stas dejan de ser s´ e ımbolos.41 x = 2. o Podemos evaluar este determinante para valores reales de x e y asignando valores a esas variables y utilizando despu´s la orden eval: e >> x=2.4301 En el momento en que hemos asignado valores a las variables.46 Calcular de modo simb´lico la inversa de la matriz A. Aqu´ podemos usar esta caja de herramientas para resolver a o ı integrales y calcular determinantes de modo simb´lico entre otras cosas.2000 >> eval(det(A)) ans = 114. x-y] [ 2.4100 >> y=-3. Matem´ticas simb´licas con MATLAB a o MATLAB dispone de herramientas para c´lculo simb´lico. y] [ -x. Lo primero que o tenemos que hacer es definir una variable como susceptible de ser utilizada en c´lculo simb´lico: a o >>syms x Ahora podemos definir una funci´n que dependa de x y cuya integral queramos calcular: o >>f=cos(x)ˆ2. que es una especie de versi´n reducida de Maple.2 y = -3. Si queremos que vuelvan a serlo tenemos que hacerlo de modo expl´ ıcito P´g. -y.Lenguajes de Programaci´n: Gu´ ECTS o ıa 0.10. y. >>int(f) ans= 1/2*cos(x)*sin(x)+1/2*x Podemos tambi´n definir una matriz que dependa de x y de una nueva variable y: e >>syms y >> A=[x y x-y 2 xˆ2 y -x -y 0] A = [ x. un programa de o c´lculo simb´lico muy conocido. Para ello es necesario instalar el a o Symbolic Math Toolbox.

48 Pedir ayuda de la funci´n diff y calcular la derivada de f . TUTORIAL DE MATLAB >>syms x Ejercicio 0.´ UNIDAD DIDACTICA 0. Ejercicio 0.47 Definir una funci´n f como e−x . Evaluar esta derivada o para x = −3. o Ejercicio 0.327.49 Pedir ayuda de la funci´n limit y calcular el l´ o ımite de f cuando x → ∞. 33 a . 2 P´g.

34 a .Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g.

variables. Tiene un o a argumento de entrada.Unidad Did´ctica 1 a Funciones y Condicionales 1. el programa “Hola mundo”. la unidad 1. pero al fin y al cabo una calculadora. la o divisi´n de tareas y su codificaci´n en funciones... Funciones y variables La organizaci´n habitual de un curso de Programaci´n supone que se comience por los t´ o o ıpicos programas de entrada y salida. o y la unidad 2. visto ya como cajas negras que realizan determinadas o tareas. dedicada al concepto de funci´n y la estructura de control condicional. y que servir´ de base para construir nuevas funciones. crucial cuando se abordan problemas grandes o o y se trabaja en equipo. etc. En ese sentido. argumentos de las funciones. El entender las cosas desde la perspectiva funcional proporciona la posibilidad de asimilar desde el principio conceptos claves en Programaci´n. Esto es e a o posible porque MATLAB proporciona una interfaz est´ndar para las funciones y desde la l´ a ınea de comandos es posible ejecutarlas directamente. General Una vez que en el tutorial de la unidad 0 hemos usado MATLAB como una calculadora potente. son las m´s importantes.1. Tambi´n se o e realiza primeramente una contextualizaci´n del curso desde la perspectiva de la historia de la o Programaci´n y sus fundamentos. ha llegado el momento de aprender a programar. o a % ud1_f1. La ventaja de este enfoque es que los alumnos comienzan por los conceptos fundamentales: funciones.m P´g. en este curso que ahora comienza nos hemos decidido por una estructura similar a la programaci´n funcional. o 1. Sin embargo. estructuras de control y vectores. o comenzando por el concepto de funci´n y estudiando la entrada y salida ya con el curso o muy avanzado. 35 a . conseguiremos que al final los n alumnos est´n m´s familiarizados con las estructuras esenciales de la Programaci´n. Como el aprendizaje es continuo. a La que ahora presentamos es la funci´n m´s sencilla que veremos durante el curso.2. Tambi´n se trabajan ideas esenciales relativas a el dise˜o de funciones e n y a la reusabilidad de c´digo ya escrito. a˜adiendo sucesivamente nuevos conceptos y estructuras. dedicada al estudio de los bucles. En la unidad 1 se tratan principalmente las ideas de funciones. Constituyen la base a sobre la que se cimenta el resto del curso. asignaci´n y la primera estructura de control del curso: el condicional. como el de encapsulamiento de tareas. Lo unico que se hace es calcular una ´ expresi´n matem´tica sencilla y asignar ese valor a y. x y un argumento de salida y.

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

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

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

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

Lenguajes de Programaci´n: Gu´ ECTS o ıa
Sin ejecutar la funci´n, ¿qu´ valor devolver´ si invocamos desde MATLAB ud1 f prueba(1, 2, 3)? o e a Raz´nalo primero y compru´balo despu´s editando la funci´n y ejecutando esa orden. Es la primera o e e o funci´n que tiene m´s de dos argumentos. ¿Conmutan entre s´ los argumentos de entrada? o a ı

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

Ejercicio 1.10
Crea una funci´n an´loga para la otra ra´ o a ız, −b − √ b2 − 4ac . 2a

Ejercicio 1.11
Crea una funci´n que reciba dos alturas, h1 y h2 y una masa y devuelva la energ´ potencial perdio ıa da/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´s de la otra. a No disponemos todav´ de herramientas que permitan controlar de alg´n modo la ejecuci´n ıa u o o realizar operaciones m´s complejas con la informaci´n de entrada a la funci´n. La primera a o o de esas herramientas y una de las m´s importantes es el condicional y nos pone en la parrilla a de salida del desarrollo de estrategias y algoritmos para resolver los problemas de los que un ordenador es capaz. Adem´s, y no menos importante, se convierte en el primer mecanismo de a provocaci´n de vuestra capacidad de pensar y de articular un discurso complejo a partir de o elementos m´ ınimos, o sea, PROGRAMAR. La estructura condicional aparece en los lenguajes de programaci´n normalmente mediante la o 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´g. 40 a

´ UNIDAD DIDACTICA 1. FUNCIONES Y CONDICIONALES

Por cond nos referimos a una condici´n l´gica o combinaci´n de ellas. As´ cond puede ser o o o ı, que una variable sea mayor que un determinado valor, igual, mayor o igual (>=) etc. En caso de que eso sea as´ se ejecutar´n las sentencias que est´n entre la sentencia del if y la primera ı, a a sentencia end que se encuentre. Es importante para que los c´digos sean legibles tabular o indentar las instrucciones correso pondientes a una estructura de control 3 o 4 espacios (ser´n 4 en nuestros ejemplos), como a hemos hecho con el puntead en el bloque if anterior. Uno de los ejemplos m´s sencillos que se pueden poner de esta estructura es el de una funci´n a o que devuelva el mayor de dos n´meros a, b supuestos distintos entre s´ Se puede abordar este u ı. 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´meros a,b u % a,b se supondr´n diferentes a 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´meros a,b u % a,b se supondr´n diferentes a 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´ndole primero el valor a. Despu´s a e se compara b con esa variable, y si en la comparaci´n gana b, se actualiza el valor de mayor. o
% ud1_fmayorab0 % Devuelve el mayor de dos n´meros a,b u % a,b se supondr´n diferentes a function mayor=ud1_fmayorab1(a,b) mayor=a; if b>mayor mayor=b; end

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

Lenguajes de Programaci´n: Gu´ ECTS o ıa Ejercicio 1.12
Abre la ventana principal de MATLAB, copia manualmente las funciones ud1_fmayorab, ud1_fmayorab0 y ud1_fmayorab1, gu´rdalas en tu carpeta de trabajo y pru´balas . a e

Ejercicio 1.13
Crea una funci´n que reciba un n´mero r y devuelva el ´rea del c´ o u a ırculo de radio r si r ≥ 0 y −1 en caso contrario.

Ejercicio 1.14
Crea una funci´n que reciba un valor x y devuelva el valor y de la funci´n definida a trozos: o o y= x + 1 x < −1 1 − x2 x ≥ −1

Ejercicio 1.15
(Para valientes) Crea una funci´n que reciba tres n´meros a, b, c, que se supondr´n diferentes entre o u a 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´ el primer a 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´n que calcula el mayor o de dos n´meros supuestos distintos. Se comprueba si el primero es mayor que el segundo y si u 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´meros a,b u % a,b se supondr´n diferentes a function mayor=ud1_felseab(a,b) if a>b mayor=a; else mayor=b; end

P´g. 42 a

o Vista de ese modo.´ UNIDAD DIDACTICA 1. 43 a . gu´rdala en tu o a carpeta de trabajo y pru´bala. esa funci´n es muy c´modo verla como una caja negra que recibe unos o o argumentos de entrada y devuelve unos argumentos de salida (de momento uno s´lo de salida). La sintaxis de ello no ofrece ning´n problema invoc´ndose de modo an´logo a u a a como se invoca desde la l´ ınea de comandos. Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. Haremos uso abundante de esta t´cnica durante el curso y si el e estudiante es h´bil conseguir´ simplificar la resoluci´n de muchos ejercicios si hace buen uso a a o de funciones ejemplo estudiadas en clase y de funciones codificadas al resolver otros ejercicios. o o % ud1_ftrozos2 % primera funcion q llama a otra funcion % ud1_ftrozos2(x). end El concepto de llamar a una funci´n desde otra es muy poderoso y es la base para tanto o resolver grandes problemas como ser capaz de repartir la escritura de grandes c´digos entre o un equipo de programadores.4. utilizando la estructura if-else. else y=ud1_f1(x).18 Crea una funci´n que reciba un valor x y devuelva.17 Crea una funci´n que reciba un n´mero r y devuelva el ´rea del c´ o u a ırculo de radio r si r ≥ 0 y −1 en caso contrario. En el siguiente ejemplo codificamos una funci´n o definida a trozos. en la que el valor de uno de los trozos de la funci´n se obtiene llamando a una funci´n creada previamente. modificando alguna de las anteriores.16 Edita manualmente la funci´n ud1_felseab. gu´rdala en tu carpeta de trabajo y pru´bala. es natural que sea llamada por otra funci´n que la necesita como parte o de la misma. similar a la del ejemplo 1. el valor y de la o funci´n definida a trozos: o x + 1 x < −1 y= 1 − x2 x ≥ −1 1. Devuelve el valor de la funci´n: o % 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. Adivina cu´l ser´ el resultado si pasas como argumentos dos n´meros e a a u iguales. la ud1_f1. utilizando la estructura if-else. Ejercicio 1. o a e P´g.19 Edita manualmente la funci´n ud1_ftrozos2. Ejercicio 1. Funci´n que llama a otra funci´n o o Una vez que con una funci´n hemos resuelto un determinado problema y/o hemos agrupado o una serie de tareas. FUNCIONES Y CONDICIONALES Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1.6.m.

Las estructuras de control pueden contener dentro de sus bloques de instrucciones internos otras estructuras de control.10... 44 a .. si n es 0.. Para mostrar el funcionamiento. crea una funci´n que reciba los tres coeficientes de o un polinomio de segundo grado de ra´ ıces reales y devuelva el producto de las mismas (se elegir´n a los coeficientes para que as´ sean).3) ud1_ftrozos2(1. ıces 1. y si n es estrictamente positiva. .1) ud1_ftrozos2(0) ud1_ftrozos2(0. Ejercicio 1. a a Ejercicio 1.... e P´g.) . Es habitual que dentro de un bucle hay condicionales. function y=nombrefuncion(arg1. llame a la funci´n del apartado anterior para calcular el producto de sus ra´ y que cuando las o ıces ra´ sean n´meros complejos o cuando sea una ra´ doble.9) ¿Son correctos los resultados? ¿Qu´ errores o problemas da? e Ejercicio 1... crea una funci´n que reciba los dos o a a o lados de la base y la altura de una pir´mide de base rectangular y devuelva su volumen (el volumen a de la pir´mide es 1/3 del ´rea de la base por la altura). el signo ser´ 1.20 Utilizando la funci´n del ´rea del rect´ngulo (ud1_farea). Si n es estrictamente negativa el signo se toma como -1. if cond bloque10 if cond1 bloque11 end bloque12 else bloque2 end ..9 y 1...22 (Para los valientes). el signo ser´ 0. lo que abordaremos primero eliminando una de ellas frente a las otras dos y despu´s las otras dos entre si.21 Usando las funciones de los ejercicios 1.arg2. b2 − 4ac. puedes ver el signo del discriminante. devuelva 0 en lugar del producto de las ıces u ız ra´ ıces. Para ver si las ra´ con complejas o reales. planteamos un ejemplo muy interesante.7.Lenguajes de Programaci´n: Gu´ ECTS o ıa >> >> >> >> ud1_ftrozos2(2. Crea una funci´n que que reciba los tres coeficientes de un polinomio de grado o 2.. Esto lo reflejamos en el siguiente esquema. o que dentro del bloque de un condicional haya un bucle y tambi´n es habitual que dentro del bloque e de un condicional haya otro condicional.. Por tanto. hay que gestionar a a tres posibilidades excluyentes.. devolver el signo de una variable entera n. . Prueba con varios polinomios (el producto de las dos ra´ ı ıces ha de ser c/a).. Condicionales anidados.

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

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

Operadores l´gicos o Si queremos construir condiciones algo m´s interesantes. las horas por encima de esas 40 se pagan un 50 % m´s caras (horas extras). Si se trabajan a m´s de 40 horas. de modo similar a como e e o sucede con las operaciones aritm´ticas. estudiados a menudo durante la etapa o de la educaci´n secundario. gu´rdala en tu carpeta de trabajo y pru´bala. En la definici´n de ud1 f1 hay un logaritmo del argumento x implicado. ese logaritmo no podr´ ser evaluado y tomaremos a como m´ximo la unica funci´n que est´ definida. a Ejercicio 1. 47 a . 1. necesitaremos combinar condiciones a elementales mediante los operadores l´gicos habituales. P´g. En el siguiente ejemplo vemos como se utiliza este operador para construir una funci´n que devuelva el mayor de tres n´meros supuestos o u distintos.´ UNIDAD DIDACTICA 1. de las horas que ha o o trabajado y de un fijo de productividad que se cobra si se trabajan m´s de 30 horas.32 Codifica la funci´n o f (x) = m´x{ud1 f 1(x). Necesitaremos saber escribir al menos los operadores Y l´gico y el o o ´ l´gico.9. FUNCIONES Y CONDICIONALES else clave=3. 2 si es notable (calificaci´n mayor o igual que 7 y menor que 9). end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. ¿Que ocurre si el valor del argumento no est´ entre 0 y 10? a Ejercicio 1. e Para el Y l´gico se usa el s´ o ımbolo reservado &.30 Crea una funci´n que reciba un valor x y devuelva el o   sin(x) x y=  2 x + log(x) valor y de la funci´n definida a trozos: o x<0 0≤x<1 x≥1 Se utilizar´ la variante elseif del condicional para realizar este ejercicio. desde o a e la ventana de comandos de MATLAB. Se a a utilizar´ la variante elseif del condicional para realizar este ejercicio.31 Funci´n q devuelva el salario semanal de un trabajador en funci´n del coste hora.28 Edita manualmente la funci´n ud1_fnotas. a a o Por tanto. Si se pretende construir una condici´n que mezcle varias condiciones se pueden usar O o o par´ntesis para establecer qu´ operaciones l´gicas se hacen primero. Se utilizar´ la variante elseif del condicional a ´ o a a para realizar este ejercicio. cuando x sea menor o igual que cero. a donde m´x significa m´ximo. 1 si es aprobado (calificaci´n mayor o igual que 5 o o y menor que 7). a Ejercicio 1. o a Se utilizar´ la variante elseif del condicional para realizar este ejercicio. 7 cos(6x)}. Si uno de los n´meros es mayor lo ser´ porque es al mismo tiempo mayor que uno u a y mayor que otro.29 Se trata de construir una funci´n que reciba una calificaci´n (entre 0 y 10) y devuelva 0 si es o o suspenso (calificaci´n estrictamente menor que 5). a Ejercicio 1. 3 si es sobresaliente o (calificaci´n mayor o igual que 9 y menor o igual que 10) y -1 si el argumento no est´ entre 0 y 10.

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

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

45 Construye una funci´n que reciba tres n´meros enteros a. % ud1_figuales % operador de comparacion para numeros enteros function chivato=ud1_figuales(m. b y c y devuelva 2 si los tres son iguales o u entre si. 1. est´ la dificultad conceptual relativa a la idea de igualdad entre n´meros reales. colocando el s´ ımbolo = de modo duplicado. else chivato=0.46 Construye una funci´n que reciba tres n´meros enteros a.Lenguajes de Programaci´n: Gu´ ECTS o ıa 1. ni elseif.11. Ejercicio 1. Ejercicio 1.44 Construye una funci´n que reciba tres n´meros enteros a. Ejercicio 1. gu´rdala en tu carpeta de trabajo y pru´bala. 2 si a = b y o u b = c y 3 si los tres valores son iguales. desde o a e la ventana de comandos de MATLAB. a u P´g. el operador para comprobar si dos valores son distintos ser´ ∼=. ==. dado que la memoria RAM es finita. En el siguiente ejemplo se muestra su uso para construir una funci´n que indica si o dos valores son iguales o no.n) if m==n chivato=1. esta operaci´n es m´s delicada y hablaremos de ella m´s u o a a adelante. Sin embargo. Igualdad entre n´meros reales: precisi´n y valor abu o soluto Entender c´mo el ordenador almacena y trabaja con n´meros con cifras decimales escapa o u al contenido de este libro.47 Repetir el ejercicio 1. end La negaci´n l´gica se escribe en MATLAB anteponiendo al operador correspondiente el s´ o o ımbolo ∼. b y c y devuelva 1 si a = b. o Ejercicio 1.10. 1 si dos de ellos son iguales entre si pero el tercero es diferente. En los siguientes ejercicios veremos alg´n ejemplo de a u utilizaci´n de este operador. Ejercicio 1. Operadores de comparaci´n: ¿son iguales? o La operaci´n de comparar si dos valores enteros son iguales tiene una sintaxis espec´ o ıfica en MATLAB. 50 a . Cuando se trate de valores correspondientes a n´meros reales.46 sin utilizar ni else. en n´meros u racionales peri´dicos o en n´meros irracionales. es f´cil entender que ser´ imposible almacenar o u a a las infinitas cifras que hay a la derecha del punto decimal. Adem´s de estas dificultades de ala macenamiento. y 0 si los tres son distintos. b y c y devuelva 1 si son iguales entre si. Por tanto. o u y 0 en caso contrario.43 Edita manualmente la funci´n ud1_figuales. el cual se obtiene pulsando las teclas AltGr y 4.

a o a a 2 si es is´sceles y 1 si es escaleno. As´ dos sillas del mismo modelo son objetivamente distintas ı. b y c. correspondientes a los lados o u consecutivos de un trapezoide. etc.50 Modifica el ejemplo ud1_ftriangulos para que reciba tres valores y devuelva 0 si no pueden ser los lados de un tri´ngulo (usa la funci´n creada en el apartado 1. FUNCIONES Y CONDICIONALES La mejor respuesta es pensar que dos n´meros reales (y en general dos objetos cualesquiera en u la vida profesional) son iguales cuando las diferencias entre ellos sean tan peque˜as como lo n requiera una determinada tarea. pero si no tienen ning´n defecto. elseif abs(a-b)<prec | abs(a-c)<prec | abs(b-c)<prec tipo=2. si las vemos con mucho cuidado. es decir. 51 a .49. c. if abs(a-b)<prec & abs(b-c)<prec tipo=3. para % comprobarlo hay q definir una precis´n-umbral. o Ejercicio 1.. ser´n a todos los efectos u a iguales.49). 3 si es un tri´ngulo equil´tero. 2 si es un rect´ngulo. Todo n´mero menor que o u % esa cantidad ser´ cero para nosotros a prec=(a+b+c)*1e-5.51 Codifica el ud1_ftriangulos en una sola l´ ınea usando la funci´n ud1 ftriangulos y el ejercicio o 1. los lados de un tri´ngulo a % devuelve 3 si son los lados de un tri´ngulo equil´tero a a % devuelve 2 si son de un tri´ngulo is´sceles a o % devuelve 1 si son los lados de un tri´ngulo escaleno a % idea: cuando dos numeros reales son iguales. y como se comprueba la igualdad de los lados recurriendo a la a o funci´n valor absoluto. a + b > c. a. b y c y devuelva 1 si pueden ser los lados de un tri´ngulo o a (la suma de dos lados cualesquiera ha de ser mayor que el otro. a Asignaturas\LP \Ejemplos.´ UNIDAD DIDACTICA 1. o function tipo=ud1_ftriangulos(a. o % ud1_ftriangulos % recibe a. d. Copia de ah´ todos los ejemplos correspondientes ı a la unidad 1. o Ejercicio 1. 3 si es un trapecio y 4 si no es ninguna de estas posibilidades.49 Crea una funci´n que reciba tres valores. Diremos que dos n´meros reales son iguales u u cuando el valor absoluto de su diferencia sea menor que un umbral de precisi´n determinado o que depender´ del significado y utilidad de dichas cantidades.b.48 Entra en al carpeta utilizando el enlace directo que tienes en el escritorio. Prueba la funci´n ud1 ftriangulos. Ejercicio 1. a En el siguiente ejemplo observamos c´mo se define ese umbral para comprobar si un tri´ngulo o a es equil´tero. a + c > b y b + c > a) y 0 en caso contrario. P´g. else tipo=1. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. Lo mismo sucede con los n´meros reales. Ejercicio 1.c) % Precisi´n con la que trabajamos. as´ como la longitud de una las diagonales d1 y devuelva 1 si la figura ı es un cuadrado. b. abs en MATLAB.52 (Para valientes) Construye una funci´n que reciba 4 n´meros a. aquellos ficheros cuyo nombre empieza por ud1 a tu propia carpeta ud1. is´sceles.

% ud1_fareafig(tipo.54 Modifica la funci´n ud1_fareafig para que tambi´n calcule el ´rea del rombo. o a % ud1_fareafig % primera funci´n que combina variables esencialmente diferentes. 52 a . o e a Ejercicio 1. que tiene como ra´ si tu c´digo es correcto. Ejercicio 1.9 y 1. c´ a ırculo.. Devolver´ la ra´ con el ’+’ en la f´rmula si raiz es 1 y la ra´ con el ’-’ si raiz es a ız o ız = 1. Para comprobar a o 2 − 7x + 12.. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. La funci´n recibe los valores o correspondientes a las dimensiones principales de una determinada figura elemental (rect´ngulo.57 Codifica una funci´n que reciba los coeficientes de un polinomio de grado 2 y devuelva la suma de o sus ra´ ıces. etc. o % una como tipo que funciona como un indicador de especie (n´mero u % entero) y otras (a.a. En el siguiente ejemplo conviven ambos tipos como argumentos. devuelve el ´rea del cuadrado de lado a a % Si tipo=5. Ejercicio 1. elseif tipo==3 area=a*b/2. usa los coeficientes del polinomio x o ıces 3 y 4. devuelve el ´rea del c´rculo de radio a a ı % Si tipo=3.Lenguajes de Programaci´n: Gu´ ECTS o ıa 1. devuelve el ´rea del rect´ngulo de lados a y b a a % Si tipo=2. a tri´ngulo.55 Codifica ud1_fareafig sin la orden else ni la elseif. Para comprobar si tu c´digo o 2 − 7x + 12. devuelve el ´rea del tri´ngulo equil´tero de lado a a a a % Si no es ninguno de los tipos anteriores. devuelve el ´rea del tri´ngulo de base a y altura b a a % Si tipo=4. Para calcular estas ra´ ıces llamaremos a las funciones 1.b) devuelve el ´rea de distintas figuras a % Si tipo=1.56 Construye una funci´n que reciba un par´metro. u % ademas b a veces es inutil. raiz. else area=-1.a.56.b) if tipo==1 area=a*b. La funci´n devuelve el ´rea de dicha figura. Variables enteras y reales como argumentos Hasta ahora hab´ ıamos utilizado variables que eran esencialmente o n´meros enteros o n´meros u u reales. Ejercicio 1.10. que tiene como ra´ es correcto.58 P´g.12. bien edit´ndola manualmente o tray´ndola de una carpeta o a e determinada. Ejercicio 1. y los coeficientes a. devuelve -1 function area=ud1_fareafig(tipo. b y c de un polinomio de o a segundo grado. elseif tipo==2 area=pi*aˆ2. para lo cual usar´ del modo que corresponda la funci´n del ejercicio 1.b) q funcionan como n´meros reales.53 Prueba la funci´n ud1_fareafig.) y recibe tambi´n un entero indicando el tipo de figura concreta a la que nos e referimos de entre esa lista. elseif tipo==5 area=a*a*sqrt(3)/4. usa los coeficientes del polinomio x ıces 3 y 4. elseif tipo==4 area=a*a.

si los n´meros son. o e o El funcionamiento de la operaci´n es que primero se eval´a la expresi´n a la derecha y el valor o u o obtenido es asignado a la variable que est´ a la izquierda. a ı o como decir que i = i + 1.54 cm. c. 1. 12. Lo que esto significa es que se eval´a la expresi´n i + 1 y se asigna su valor u o a i. if a>0 suma=suma+a. a Esto abre la puerta para operaciones que no tienen sentido matem´tico pero s´ en Programaci´n. y e y cuente cu´ntos son estrictamente o u a positivos.13. z. Su significado es de asignaci´n. c. 2 u a e a u o = 1. -7. b. end if b>0 suma=suma+b. u %% ud1_fsumapos %% primera variable sumadora (x=x+algo) %% suma de los positivos entre 4 n´meros. -3. un n´mero que indicar´ en o u a qu´ sistema de medida est´ (0 para el sistema internacional (SI) y = 0 para el sistema ingl´s) y otro e a e n´mero que indicar´ en qu´ unidades est´ (1.59 Prueba la funci´n ud1_fsumapos o Ejercicio 1.c.62 Construye una funci´n que reciba 5 n´meros a. que un pie son 12 pulgadas.61 Construye una funci´n que reciba 5 n´meros x. 53 a . 2 seg´n sea mm. Por ejemplo. t.´ UNIDAD DIDACTICA 1. con lo cual esta variable habr´ incrementado su valor original en una unidad. La funci´n devolver´ la magnitud u e o a convertida a metros si se ha recibido en el sistema ingl´s y convertida a pies si se ha recibido en el e SI.2 o = 1. 2 seg´n sea pulgadas. A la izquierda tendremos siempre una variable y a la o derecha un expresi´n que puede combinar llamadas a funciones con operadores aritm´ticos y l´gicos. d.d) suma = 0. end if c>0 suma=suma+c. u Ejercicio 1. pies o yardas en el sistema ingl´s). u ıa P´g. cm o metros en SI y 1. la suma ser´ -7-5-=-13. u function suma=ud1_fsumapos(a. y.60 Construye una funci´n que reciba 5 n´meros a. Variables contador y sumador Ya vimos que el operador = en MATLAB no tiene mucho que ver con lo que ese operador significa en Algebra. 4.b. d. y e y un n´mero adicional positivo ref y o u u devuelva la suma de aquellos valores que sean negativos pero que su valor absoluto sea mayor que ref . En el siguiente a ejemplo aplicamos esta idea para encontrar la suma de los positivos entre cuatro n´meros. y que una yarda son 3 pies se pide construir una funci´n que reciba una cantidad. Ejercicio 1. end if d>0 suma=suma+d.7. b. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. FUNCIONES Y CONDICIONALES (Para valientes) Sabiendo que una pulgada son 2. y s y dos n´meros a y b y devuelva la suma o u u de aquellos n´meros de entre esos 5 que son mayores e iguales que a y menores o iguales que b. -6 y ref vale 3.

65 Construye una funci´n que reciba un n´mero natural n y devuelva 0 si n es par y 1 si n es impar.64 Construye una funci´n que reciba 4 n´meros a.Lenguajes de Programaci´n: Gu´ ECTS o ıa 1. d y devuelva la suma de los que entre ellos son o u enteros. b. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 1. %% ud1_fesentero %% comprueba si un numero x es entero %% funcion parte entera function chivato=ud1_fesentero(x) parte_entera=floor(x). Es la funci´n o o o que extrae la parte entera. 54 a . En el siguiente ejemplo se usa este operador.45 es 3. floor. o u Ejercicio 1. redondeando hacia −∞. o Ejercicio 1.32 es -5. Funci´n parte entera o Hay una funci´n propia de MATLAB que se usa en muchos c´digos y que conviene citar. de un n´mero. c. u ı. d y un n´mero entero n y o u u devuelva la suma de los que entre ellos son enteros y adem´s m´ltiplos de n. a u P´g. else chivato=0. b. y la de -4. As´ la parte entera de 3.66 (Para valientes) Construye una funci´n que reciba 4 n´meros a.14. para comprobar si un n´mero u es o no entero. c. if x==parte_entera chivato=1. Ejercicio 1.63 Prueba la funci´n ud1_fesentero.

Con este tipo de bucles. Durante este curso un bucle lo relacionaremos con el uso del comando WHILE. La gran ventaja de los bucles escritos mediante el uso de la sintaxis WHILE frente a otras formas de escribir un bucle radica en que el ´ ındice del bucle es una variable m´s del programa y su valor es a controlado en todo momento por el programador. Bucles En muchos problemas de matem´ticas se requiere repetir o iterar un mismo procedimiento. P´g.1. la que permite realizar repeticiones: a los bucles. El conjunto de elementos que se quieren sumar en este caso son los naturales de 1 a n. lo que ahorra tiempo. a u %ud2_fsuma % Suma de todos los naturales entre 1 y n % primer bucle function suma=ud2_fsuma(n) suma=0. 55 a . en cualquier otro caso i se ir´ incrementando en una unidad y la variable suma a se ver´ incrementada en el valor del propio ´ a ındice i. La o condici´n de corte del proceso iterativo que requiere la estructura WHILE se ejecutar´ cuando el ´ o a ındice i sea mayor que n. el fin de la iteratividad viene determinado por una condici´n sobre una variable del programa que aparece a continuaci´n o o del comando WHILE. Un bucle en o programaci´n es una sentencia que se realiza repetidas veces. De esta forma cuando el bucle se interrumpa la variable suma contendr´ el valor resultante de la suma de los n primeros n´meros naturales. ıa La unidad se centra en la estructura de control m´s importante. esta segunda unidad contiene junto con la primera la o mayor´ de las herramientas que un alumno va a tener que utilizar a lo largo del curso. El primer ejemplo ilustra uno de los usos m´s t´ a ıpicos de los bucles que sin lugar a dudas es la suma de un conjunto de elementos. El ´ ındice i se inicializa por tanto a 1 y n es un argumento de la funci´n. El bucle junto con los condicionales representan la base de la programaci´n estructurada. i=1. o 2. Es por a ello que todos los lenguajes de programaci´n contienen la posibilidad de crear bucles.Unidad Did´ctica 2 a Bucles 2. o La variable entera que cuenta el n´mero de veces que regula la evoluci´n del bucle se conoce como u o ´ ındice del bucle.2. Un bucle se utiliza para hacer un acci´n o o repetida sin tener que repetir varias veces el mismo c´digo. deja el c´digo m´s o o a claro y facilita su modificaci´n en el futuro. General Como ya se indic´ al comienzo de la unidad 1.

7 (Para valientes) Construye una funci´n que reciba dos n´meros. 56 a .5 Construye una funci´n que reciba un n´mero natural. un n´mero o u u natural n. end Mediante los siguientes ejercicios se podr´ afianzar el concepto de bucle. con xi = a + i ∗ h. calcule h = (b − a)/n y devuelva sin(a) + sin(a + h) + sin(a + 2h) + . un n´mero o u u natural n. el valor medio aproximado del seno entre a y b. n+1 es decir. con a < b.8 (Para valientes) Construye una funci´n que reciba dos n´meros. b. reales a. b. considerada o como una poligonal que se apoya en n + 1 puntos de esa curva cuyas abscisas est´n equiespaciadas a entre a y b. Ejercicio 2. i=i+1.6 (Para valientes) Construye una funci´n que reciba dos n´meros. y calcule la posici´n vertical del centro de gravedad de la curva y = sin(x). con a < b. un n´mero o u u natural n. . Ejercicio 2. reales a. . + sin(a + (n − 1)h) + sin(b) .Lenguajes de Programaci´n: Gu´ ECTS o ıa while i<=n suma=suma+i.4 Idem sin usar bucles y llamando a la funci´n ud2 fsuma.2 Prueba la funci´n ud2 fsuma o Ejercicio 2.1 Crea una carpeta llamada ud2 en Z : Copia en ella todos los ejemplos cuyo nombre empiece por ud2 . reales a. n Ejercicio 2. con m < n.3 Construye una funci´n que reciba dos n´meros naturales. a Ejercicio 2. b. . con a < b. m y n. los cuales encontrar´s en la carpeta: a Asignaturas\LP \Ejemplos A˜ade la carpeta Z :\ud2 al path o Current Directory de MATLAB. n y devuelva o u sin(1) + sin(2) + . P´g. . Tambi´n se puede ver como la posici´n vertical del centro de gravedad de la curva y = sin(x) entre e o a y b si la consideramos representada por esos n + 1 puntos. Ejercicio 2. y devuelva la suma de o u los naturales entre m y n. o Ejercicio 2. + sin(n − 1) + sin(n) n+1 Ejercicio 2. y calcule el centro de gravedad del superficie definida por los rect´ngulos que tiene como a base h = (b − a)/n y como altura sin(xi ). 0 ≤ i < n. tomando n + 1 puntos para aproximarlo.

3.n) pot=1. Bucles con otras operaciones Como podemos ver en el siguiente ejemplo. y devuelva la suma de los impares entre 1 o u y n. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2. estaremos hallando la potencia en´sima de dicho n´mero.11 Construye una funci´n que reciba un n´mero natural.12 (Para valientes) Construye una funci´n que reciba un n´mero natural n y devuelva 0 si n es par y 1 o u si n es impar. Bucles con incremento variable El segundo ejemplo es una variante del caso anterior donde se desea que tan s´lo se sumen los o n´meros pares. while i<=n suma=suma+i. BUCLES 2. a 2.10 Construye una funci´n que reciba un n´mero natural. y devuelva la suma de los m´ltiplos de 3 o u u entre 1 y n. Ejercicio 2. i=2. function pot=ud2_fpotencia(x. i=1. La primera diferencia estriba en que el primer valor que debe tomar el ´ u ındice i debe ser 2 y la segunda es que el incremento del ´ ındice sea de dos unidades en vez de una.4. 57 a . el uso de un bucle se puede extender al producto igual que a la suma. end Los ejercicios correspondientes a este ejemplo son los siguientes: P´g. No se podr´ usar la orden f loor. Ejercicio 2.´ UNIDAD DIDACTICA 2. n.9 Prueba la funci´n ud2 fsumapares o Ejercicio 2. while i<=n pot=x*pot. % ud2_fsumapares % Suma todos los numeros pares entre 1 y n function suma=ud2_fsumapares(n) suma=0. repitiendo el producto. De esta forma si hacemos productos de n´meros que son siempre el mismo en este u caso x. i=i+2. i=i+1. n. e u % ud2_fpotencia % Calcula xˆn.

n. trata de calcular qu´ devolver´ ud2 f prueba(2. construye una o o funci´n que reciba un n´mero x y un entero a y devuelva xa . 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).13 Prueba la funci´n ud2 fpotencia o Ejercicio 2. a 2. while i<=n y=y*i i=i+k. Bucles y relaciones de recurrencia Otra aplicaci´n interesante de los bucles viene a partir del uso de las f´rmulas de recurrencia. n. muy o o usadas en m´todos num´ricos y c´lculo infinitesimal. .n.14 Construye una funci´n que reciba un n´mero natural.n) P´g. function x=ud2_fnewton(a. El ´ ındice del bucle ser´ capaz de ir avanzando con en n´mero a u de pasos y de este modo ir actualizando el valor de x en cada uno de los mismos. y devuelva x−n sin usar ∧ o u u ni llamar a ud2 fpotencia. siendo % a el primer termino. (n − 1)n Ejercicio 2.18 Construye una funci´n que reciba x y n. 58 a . e ıa e Ejercicio 2. x_1=a % Relacion entre sucesiones y bucles.16 Construye una funci´n que reciba un n´mero x y un n´mero natural. i=m. Compru´balo con MATLAB.5.15 ¿Qu´ devuelve la siguiente funci´n? e o function y=ud2_fprueba(m. o u Ejercicio 2. y devuelva o u n! = 1 2 . end Sin ejecutarla.16. El valor de una variable en un paso n depende e e a de su valor en el paso anterior n − 1. calculando: o xi i para lo cual llamar´ a ud2 f potencia.17 Llamando a la funci´n ud2 f potencia y la funci´n que has creado en el ejercicio 2.k) y=1. . 3).Lenguajes de Programaci´n: Gu´ ECTS o ıa Ejercicio 2. Ejercicio 2. 15.

20 Construye una funci´n que reciba un n´mero natural n y devuelva el t´rmino n-´simo de la sucesi´n o u e e o √ xi+1 = 2xi .22 Construye una funci´n que reciba un n´mero natural n y devuelva xn − xn−1 . n y k que verifican m2 + n2 = k 2 . siendo xn y xn−1 o u los t´rminos n y n − 1 de la sucesi´n del ejercicio 2.23 para que reciba un n´mero natural n y dos n´meros x1 y x2 y devuelva el u u t´rmino n-´simo de la sucesi´n de Fibonacci. e e o Leonardo Pisano naci´ en 1170 probablemente en Pisa. En los numerosos viajes en los que acompa˜´ a su padre. Su padre fue representante de los mercaderes ´ de la Rep´blica de Pisa en el norte de Africa. o Ejercicio 2..20. x2 = 2. i=i+1.24 Modifica el ejemplo 2. la mayor aportaci´n matem´tica de Fibonacci se encuentra en el ´rea de la Teor´ de los o a a ıa N´meros. 3. 1.23 Construye una funci´n que reciba un n´mero natural n y devuelva el n-´simo t´rmino de la sucesi´n o u e e o 1. Ejercicio 2.21 Construye una funci´n que reciba un n´mero natural n y devuelva xn − xn−1 . entre otros resultados destaca el estudio de m´todos matem´ticos para encontrar triples u e a Pitag´ricos. o u 1 P´g. 8. Ejercicio 2.20. while i<=n-1 x=x-(xˆ2-81)/(2*x). en la que.´ UNIDAD DIDACTICA 2. 1. o ¿Cu´ntos pares de conejos hay al cabo de un a˜o si se supone que cada par de conejos engendra un nuevo a n par que a partir del segundo mes se hace f´rtil? e Sin embargo. 59 a . (en la que cada t´rmino es suma o e de los dos anteriores) como soluci´n al siguiente problema: Un hombre aisla un par de conejos en un corral. i ∈ N. en lo que es hoy el noroeste de Argelia.. All´ creci´ y se u ı o educ´ Fibonacci. ¿A qu´ valor converge la sucesi´n cuando n → ∞? e o Ejercicio 2. 5. En el mismo libro o a o aparece la conocida sucesi´n de Fibonacci. 34. en uno de sus libros introdujo el sistema decimal indo-ar´bigo. siendo xn y xn−1 o u los t´rminos n y n − 1 de la sucesi´n del ejercicio 2. x1 = 3. Hacia 1200 regres´ a Pisa y recopil´ en diversos libros a o o lo aprendido en sus viajes a˜adiendo adem´s notables contribuciones propias. Se llamar´ a la funci´n creada en dicho e o a o ejercicio.19 Prueba la funci´n ud2 fnewton con algunos valores y comprueba que los resultados son correctos. Fibonacci aprendi´ las ventajas de o no o los sistemas matem´ticos utilizados en otras culturas. en el seno de la familia Bonacci. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2. n a Por ejemplo. i=1. 2. es decir. No se podr´ llamar a la funci´n creada en e o a o dicho ejercicio y solo se podr´ usar un bucle. 13. de Fibonacci xn+2 = xn + xn+1 . 21.. x1 = 1. tres n´meros naturales. BUCLES x=a. de ah´ su o ı sobrenombre Fibonacci. m. sistema de numeraci´n posicional a o que usamos actualmente y extendi´ por Europa el uso del sistema ´rabe de numeraci´n. a Ejercicio 2. por el que es generalmente conocido.57.

60 a . q y r y devuelva 1 si o u r pertenece a la sucesi´n de Fibonacci iniciada por p y q y 0 en caso contrario (supondremos la o sucesi´n mon´tona). o 2. Bucles y condicionales A continuaci´n se nos plantea la necesidad de contar los divisores de un n´mero natural n. . q y r n´meros reales (supondremos la sucesi´n mon´tona). a Ejercicio 2.28 Copia el ejemplo ud2 fcuentadiv a tu directorio. o o Ejercicio 2. 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. while i<=n if mod(n.). En caso de que verifiquen la condici´n la variable de conteo de divisores se incrementa en una unidad y o en el caso opuesto no se altera.25 (Para valientes) Construye una funci´n que reciba tres n´meros enteros p.30 Construye una funci´n que reciba un n´mero n.6. Para o u ello hay que combinar un bucle con un condicional. . end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2. . % ud2_fcuentadiv % ud2_fcuentadiv(n) cuenta los divisores de n % primer uso de mod function num=ud2_fcuentadiv(n) num=0. cuente los n´meros que son pares y no son m´ltiplos o u u u de 3 entre 1 y n y devuelva ese valor.27 (Para valientes) El n´mero π. Se o u usar´ la orden mod. end i=i+1. + (−1)i 1 + . . P´g. u o o Ejercicio 2.i)==0 num=num+1. Ejercicio 2. i=1. Pru´balo con algunos valores y comprueba que los e resultados son correctos.29 Construye una funci´n que reciba un n´mero natural n y devuelva 0 si n es par y 1 si n es impar.Lenguajes de Programaci´n: Gu´ ECTS o ıa Ejercicio 2. se puede obtener mediante la f´rmula u o π = 4 ∗ (1 − 1/3 + 1/5 − 1/7 + .26 (Para valientes) Idem siendo p. 2∗i+1 Construye una funci´n que reciba un n´mero n y devuelva la aproximaci´n de π mediante los n o u o primeros sumandos de la expresi´n anterior (no hace falta utilizar ∧).

35 Construye una funci´n que reciba dos n´meros naturales m y n. n. sin(n). Ejercicio 2. y devuelva su o u m´ ınimo com´n m´ltiplo. p. sin(2). sin(3). en 304 hay un cero.31 Construye una funci´n que reciba un n´mero n. p y f lag = 3 si es n.32 Construye una funci´n que reciba un n´mero n. end Ejercicio 2. Si por ejemplo m = 20.34 La siguiente funci´n que recibe un n´mero n y deber´ devolver el n´mero de valores entre 1 y n o u ıa u para los que sin es mayor que 1/2 menos para los que es menor que −1/2. sin(n). . y devuelva la cantidad de divisores o u comunes. en 30 hay un cero y en 115 no hay ning´n cero). . No se podr´ llamar a 2. recorra los valores o u sin(1). function c=ud2_fprueba2(n) i=1. u Ejercicio 2. Corrige los errores que tiene. Ejercicio 2.38 (Para valientes) Construye una funci´n que reciba 3 naturales m. f lag valdr´ 2. while i<=n if sin(i)>1/2 c=c+1. BUCLES Ejercicio 2. . p = 15. .33 Construye una funci´n que reciba un a˜o y devuelva su siglo. o n Ejercicio 2. y devuelva su o u m´ximo com´n divisor. recorra los valores o u sin(1). . sin(2). . sin(3).´ UNIDAD DIDACTICA 2. n = 30.36. else c=c-1. e ı. p y devuelva una variable f lag tal o que f lag = 1 si el m´ ınimo de los m´ximos comunes divisores entre dos de estos n´meros corresponde a u a la pareja m. y devuelva el producto de los que son positivos. .36 (Para valientes) Construye una funci´n que reciba dos n´meros naturales m y n. 61 a .37 (Para valientes) Construye una funci´n que reciba dos n´meros naturales m y n. a u Ejercicio 2. pod´is usar log10. end i=1+1. f lag = 2 si es m. a u e P´g. ıa a Ejercicio 2. n. . u Para contar cu´ntas cifras tiene el n´mero. y devuelva el n´mero de ellos que son positivos. u u Ejercicio 2.39 (Para valientes) Construir una funci´n que reciba un n´mero natural y devuelva el n´mero de ceros o u u que hay en ´l (as´ por ejemplo.

while i<=sqrt(numero) if mod(numero. Se supondr´ que existe soluci´n.i)==0 primo=0. P´g. o Ejercicio 2. si n = 29 el a a o resultado ha de ser 25. si a a o m = 16 y n = 27 el resultado debe ser 19. y podamos asegurar que el n´mero no es primo u devolviendo por tanto un cero. Ejercicio 2. ı Ejercicio 2.7. function primo=ud2_fesprimo(numero) primo=1. Se supondr´ que existe soluci´n. Uso de bucles para verificar una condici´n sobre un o conjunto. Por ejemplo. (se usar´ break). Por ejemplo. a n Ejercicio 2. i=2. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2. m. Al igual que en el caso anterior el bucle nos vale para recorrer todos los posibles candidatos que pueden cumplir una condici´n.Lenguajes de Programaci´n: Gu´ ECTS o ıa 2. % ud2_fesprimo % ud2_fesprimo(numero) devuelve 1 si numero es primo % y 0 si no lo es % orden break.42 Idem m´s peque˜o y distinto de 1.40 Prueba la funci´n ud2 fesprimo.45 Construye una funci´n que reciba un natural n y devuelva el mayor n´mero entero positivo m < n o u tal que sin(m) < 0. n. en este caso ser o divisor del argumento numero. break.41 Construye una funci´n que reciba un n´mero natural n y devuelva su divisor m´s grande distinto de o u a s´ mismo. El ejemplo que se ilustra a continuaci´n tan s´lo devuelve un valor 1 o 0 en el caso de que el n´mero o o u que introducimos como argumento sea o no primo. end i=i+1. con m < n y devuelva el menor n´mero entero o u r entre m y n tal que sin(r) > 0 (se usar´ break).43 Construye una funci´n que reciba dos enteros. Ejercicio 2. A diferencia del caso anterior basta con que la condici´n se cumpla o una vez para que no haga falta continuar el bucle.44 Idem sin break. 62 a .

u esto lo llevaremos a cabo mediante el ´ ındice i. esto mismo ocurre con los bucles. Para ello planteamos un primer bucle donde i vaya desde 2 hasta n. 63 a . como mucho tendr´ o a ıamos que hacer n iteraciones. construye una funci´n que haga lo mismo que ud2 f esprimo.51 (Para valientes) Crea una funci´n que reciba un n´mero num y devuelva 1 si descompone en producto o u de dos primos y 0 si no es as´ Por ejemplo.8. devolver´ xn . itere la sucesi´n o u o √ xi+1 = 2xi . primo=1.m % ud2_fnprimos(n) devuelve el n´mero de primos u % menores o iguales que n.48 Construir una funci´n que reciba un n´mero natural n y un valor prec. ız % ud2_fnprimos. 32. a num = 12 devolver´ 0. % primer doble bucle (bucles anidados) function p=ud2_fnprimos(n) i=2. Se deja al estudiante entender el porqu´ se limita el e crecimiento del ´ ındice j hasta que sea menor o igual que la ra´ cuadrada de i. x1 = 8. y devuelva el primer o u elemento xi de la sucesi´n de Fibonacci x1 = 1. En el ejemplo presentado a continuaci´n vamos a contar la cantidad o de n´meros primos que hay menores o iguales que el argumento de entrada n sin contar con el 1. Bucles anidados.49 Modificar la funci´n creada en el ejercicio 2.47 o Utilizando la funci´n ud2 f cuentadiv. o Ejercicio 2. x2 = 2. BUCLES Ejercicio 2. while i<=n j=2. Usa la funci´n ud2 f esprimo para determinar si un n´mero es primo o no. Ejercicio 2.50 Crea una funci´n que reciba un n´mero num. i ∈ N y si para alg´n 1 < i ≤ n. Ejercicio 2. calcule los t´rminos de la sucesi´n de Fibonacci x1 = 1.23 para que reciba un n´mero num. p=0.´ UNIDAD DIDACTICA 2. Al igual que hemos visto que se pueden encontrar unos condicionales anidados dentro de otros. xi = xi−1 + xi−2 menores que num y devuelva el n´mero de ellos que son primos. No contamos el 1 como primo. a o u 2. while j<=sqrt(i) P´g. y en cada uno de los casos realizamos un bucle interno sobre los posibles divisores de i que vienen representados por el ´ ındice j. u a Ejercicio 2. devuelva xi . xi = xi−1 + xi−2 tal que xi sea mayor que o num. Si no. u Ejercicio 2. para num = 6 = 3 · 2 devolver´ 1 y para num = 7 o ı. Nota: Como en cada iteraci´n sumamos m´s de 1. |xi − xi−1 | < prec. o u e o x2 = 2.46 Idem sin break.

con m < n y devuelva el o mayor n´mero primo entre m y n.57 Construye una funci´n que reciba 3 naturales. m y n. (Para valientes) Hacerlo sin usar break. con m < n y devuelva el mayor n´mero o u primo entre m y n. con m < n y devuelva el menor n´mero o u primo entre m y n. p.59 Construye una funci´n que reciba dos naturales.Lenguajes de Programaci´n: Gu´ ECTS o ıa if mod(i. m y n. end j=j+1. end i=i+1.54 Construye una funci´n que reciba dos naturales. %i no es primo break.55 Construye una funci´n que calcule la suma de de los primos menores o iguales que un n´mero n sin o u llamar a ud2 fesprimo. u Ejercicio 2.53 Construye una funci´n que calcule el n´mero de primos menores o iguales que un n´mero n sin o u u utilizar un doble bucle y llamando a ud2 fesprimo. m y n. Ejercicio 2.52 Prueba la funci´n ud2 fnprimos o Ejercicio 2. 64 a . con m < n y devuelva la suma de los o n´meros primos entre m y n. end if primo==1 p=p+1.60 (Para valientes) Construye una funci´n que reciba dos naturales.58 Construye una funci´n que reciba dos naturales. m. u Ejercicio 2. Ejercicio 2. con m < n y devuelva el producto de los o n´meros primos entre m y n (sin llamar a ud2 fesprimo). (Para valientes) Hacerlo sin usar break. end Los ejercicios correspondientes a este ejemplo son los siguientes: Ejercicio 2. n.56 Construye una funci´n que reciba dos naturales. m y n. u a P´g. Ejercicio 2. No se podr´ usar ud2 fesprimo. m y n. con m < n y calcule: o m + m2 + · · · + mp + (m + 1) + (m + 1)2 + · · · + (m + 1)p + · · · + n + n2 + · · · + np Ejercicio 2. Ejercicio 2.j)==0 primo=0.

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

end var=suma2/(n-1).. ¿Coincidir´ el resultado con la media al cuadrado? a Ejercicio 3. o 3. o Ejercicio 3.a . como vimos en el tutorial. a Ejercicio 3. ud3 fmedia. la que acabamos de estudiar.. 66 a . . La sintaxis no ofrece ninguna dificultad.3 Crea una funci´n que reciba un vector y devuelva la media de los cuadrados de los elementos del o vector. los cuales encontrar´s en la carpeta: a Asignaturas\LP \Ejemplos A˜ade la carpeta Z :\ud3 al path o Current Directory de MATLAB. while i<=n suma2=suma2+(v(i)-m)ˆ2. La media geom´trica de {a1 .2 Prueba la funci´n ud3 fmedia. . o Es una medida de como de semejantes son los elementos de un vector.5 Crea una funci´n que reciba dos vectores y devuelva el producto escalar de los mismos. .6 Prueba la funci´n ud3 fvarianza. Tendremos ocasi´n de o hacer abundantes ejemplos m´s adelante. Esta funci´n o o tambi´n se puede hacer sin utilizar bucles.6 estudiamos una funci´n que llamaba a otra funci´n. n=length(v).4 Crea una funci´n que reciba un vector y devuelva la media geom´trica de los elementos del vector.Lenguajes de Programaci´n: Gu´ ECTS o ıa Crea una carpeta llamada ud3 en Z : Copia en ella todos los ejemplos cuyo nombre empiece por ud3 .3. o e √ n a a .m para diferentes vectores. o o en este ejemplo vemos una funci´n que recibe un vector y llama a otra funci´n que recibe un o o vector. Se supondr´ que los dos vectores e a tienen la misma dimensi´n. De esta funci´n no haremos ning´n ejercicio espec´ o u ıfico. simplemente probar la funci´n para o 1 diferentes vectores. la varianza es peque˜a y si son muy diferentes. i=i+1.m para diferentes vectores. m=ud3_fmedia(v). n Ejercicio 3. n a 1 P´g. i=1. an } es e 1 2 n Ejercicio 3. comprobando el significado del concepto varianza . Funciones que llaman a funciones con argumentos vectores Del mismo modo que en el ejemplo 1. Si son similares.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´n que recibe un vector (ud3_fmedia) o function var=ud3_fvarianza(v) suma2=0. la varianza ser´ grande. % ud3_fvarianza. .

o Ejercicio 3.7 Prueba la funci´n ud3 fmaximo. asignamos a maxi ese valor. Para ello. % ud3_fmaximo. calcule el o m´ximo del nuevo vector y lo devuelva cambiado de signo. ¿Qu´ valor has obtenido? a e Ejercicio 3. Los ejercicios correspondientes a este ejemplo son especialmente interesantes reflejando la importancia del algoritmo explicado. VECTORES 3. se supone que el a m´ximo es el primero inicializando con ese valor una variable maxi que ser´ la que almacene a a el m´ximo al final. 67 a .12 Crea una funci´n que reciba un vector de n´meros naturales y utilizando la funci´n ud2 f esprimo.8 Crea una funci´n que reciba un vector y devuelva el m´ o ınimo de los elementos del vector. Ejercicio 3. MATLAB dispone de una funci´n que realiza esta misma tarea. o u o devuelva el n´mero de elementos del vector que son primos.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. A continuaci´n se van barriendo los dem´s elementos y en el momento en a o a que encontramos un valor mayor que el que tenemos como referencia. u Ejercicio 3. Ejercicio 3. maxi. maxi=v(1). pero ello no es obice para estudiar el algorito ´ mo.m para diferentes vectores. end i=i+1.11 Crea una funci´n que reciba un vector y calcule la media de los elementos positivos del vector.10 Crea una funci´n que reciba un vector v. muy importante.´ UNIDAD DIDACTICA 3.4. u P´g. i=2. En o lugar de sumar todos los elementos. entender todos los detalles de este ejemplo. cambie de signo todos los elementos del vector. C´lculo de extremos a Los algoritmos de b´squeda de extremos son fundamentales en este curso y el m´s b´sico de u a a todos ellos es el de encontrar el m´ximo de una serie o vector. Ejercicio 3. while i<=n if v(i)>maxi maxi=v(i). end Es importante. el cual es fundamental.9 Crea una funci´n que reciba un vector de n´meros naturales y devuelva el n´mero de elementos del o u u vector que sean m´ltiplos de tres. function maxi=ud3_fmaximo(v) n=length(v). max. tendr´s que comprobar si un elemento es positivo o no antes de a sumarlo.

25=-2. 68 a . o Ejercicio 3. 7. Por ejemplo. Caso de que no haya ninguno.25 y el elemento m´s proximo a la media es el a 1. Por ejemplo. El ´ ındice del elemento cuyo valor es 1 es 3.17 Crea una funci´n que reciba un vector v y devuelva el m´ o ınimo de las diferencias en valor absoluto entre un elemento de v y la media de v. la media vale 3.13 Idem sin if.25 y la diferencia m´ ınima es 1-3. la media vale 3.25 y la diferencia m´ ınima es 3 − 3.18 Crea una funci´n que reciba un vector v y devuelva el valor del elemento de v que est´ m´s cerca o e a de la media.14 Crea una funci´n que reciba un vector y que devuelva 1 si todos los elementos del vector son positivos o y 0 en caso contrario. Por ejemplo. Por ejemplo.25 = 0. si v = [3 2 1 7]. si v = (9.15 Crea una funci´n que reciba un vector de n´meros naturales y utilizando la funci´n ud2 f esprimo o u o y sin utilizar if devuelva 1 si todos los elementos del vector son primos y 0 en caso contrario. Ejercicio 3.Lenguajes de Programaci´n: Gu´ ECTS o ıa Ejercicio 3. si v = [3 2 1 7]. 11.25=-2.25 y el elemento m´s proximo a la media a es 3. si v = [3 2 1 7]. Por ejemplo. o a Ejercicio 3.25 y la diferencia m´ ınima es 1-3. devolver´ 0. la media vale 3. a la funci´n devolver´ 11.16 Codifica una funci´n que reciba un vector de naturales v y devuelva el primer n´mero primo que o u aparezca en el vector. si v = [3 2 1 7]. Ejercicio 3. Ejercicio 3.25. pues ocupa la tercera posici´n en el vector.25.19 Crea una funci´n que reciba un vector v y devuelva el ´ o ındice del elemento de v que est´ m´s cerca de e a la media. 12). 14. si v = [3 2 1 7]. la media vale 3. Ejercicio 3.25. Cambiad de orden los elementos en este ejemplo para probar el c´digo y comprobar que funciona o en todas las circunstancias.22 ¿Qu´ valor devuelve la siguiente funci´n (v es un vector de n´meros naturales)? e o u P´g. Por ejemplo.21 Crea una funci´n que reciba un vector v y devuelva el ´ o ındice del elemento en el que se d´ el m´ e ınimo de las diferencias entre un elemento de v y la media de v.20 Crea una funci´n que reciba un vector v y devuelva el m´ o ınimo de las diferencias entre un elemento de v y la media de v. Ejercicio 3. Ejercicio 3. Ejercicio 3. la media vale 3.

o Ejercicio 3. e Ejercicio 3. end % Al final imax contiene la posici´n de la mayor de las componentes o Los ejercicios correspondientes a este ejemplo son tambi´n bastante interesantes. devolver´ 0.m para diferentes vectores. imax=1.23 (Para valientes) Crea una funci´n que reciba un vector de naturales y devuelva 1 si todos los elementos o son primos y 0 en caso contrario. 69 a . while i<=n if ud2_fesprimo(i)==1 & v(i)>y y=v(i).´ UNIDAD DIDACTICA 3. 3. devolver´ 0.26 Crea una funci´n que reciba un vector de naturales y devuelva el ´ o ındice del mayor primo que aparezca en el vector. % Tomamos como maximo el primer elemento i=2.5. a Ejercicio 3. de tal modo que se guarda posici´n cuando se supera la posici´n de o o referencia inicial (la primera). En esta funci´n a o o se juega con esa idea. sin usar if. end i=i+1. i=1. while i<=n if v(imax)<v(i) % Si encontramos un elemento mayor imax=i. a Ejercicio 3. C´lculo de posici´n de extremos a o A veces no interesa tanto el valor del m´ximo como su posici´n en el vector. ıcil % ud3_fimax. En caso de que no haya ninguno.27 P´g. En caso de que no haya ninguno. Es un algoritmo muy interesante y esencialmente m´s complicado a y dif´ de entender que el anterior. % actualizamos el valor de la posicion end i=i+1.25 Crea una funci´n que reciba un vector de naturales y devuelva el ´ o ındice del primer n´mero primo que u aparezca en el vector.24 Prueba la funci´n ud3 fimax. VECTORES function y=ud3_fprueba(v) n=length(v).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). y=v(1). end Ejercicio 3.

5. 1). y=0. i=2. ıa a = (a0 . i=i+1. no podemos trasladar esto directamente a MATLAB pues la indexaci´n de los o vectores siempre empieza por la componente 1. 4) y (4. 0. a2 . Encuentra los errores. an−1 . 1). grado 3 pero dimensi´n 4. Ello invita a repensar polinomio y vector del siguiente modo: a1 + a2 x + a3 x2 + · · · + an xn−1 + an+1 xn Por tanto.6. while i<=n if abs(v(i)-v(i-1))>y y=v(i)-(v(i)-1). el polinomio 2.5). end en la cual simplemente vamos incrementando la variable y en el sumando ai xi−1 .Lenguajes de Programaci´n: Gu´ ECTS o ıa La siguiente funci´n recibe un vector y deber´ devolver la mayor diferencia entre dos t´rminos o ıa e consecutivos (la diferencia de un elemento menos el anterior).5x3 se corresponder´ con el vector a = (2. −3.7. 1. while i<=n+1 y=y+a(i)*xˆ(i-1). Para invocar esta funci´n desde la l´ o ınea de comandos. ıa Como se puede observar. 0. 2. La forma m´s directa de construir una o a funci´n que evaluase este polinomio a en un punto x ser´ o ıa function y=ud3_fevalua0(a. o habitual que de ´l se hace ser´ e ıa: a0 + a1 x + a2 x2 + · · · + an−1 xn−1 + an xn De este modo.5−3. 1. an+1 ) . 70 a a = (a1 . e ıa 3. an .7x2 +0. 2 y -1. (1. dimensi´n n + 1. El primero es el de la identificaci´n de un polinomio de grado n con un vector de n + 1 componentes y o por tanto. · · · . hasta que i sea n + 1. (1. function y=ud3_fprueba3(v) n=length(v).x) n=length(a)-1. Tiene detalles interesantes que pasamos a comentar. Evaluaci´n de un polinomio o El ejemplo correspondiente a esta secci´n ejemplifica el caso de una funci´n que recibe escalares o o y vectores como argumentos de entrada. devolviendo el valor obtenido. a1 . 2. 1) (deber´ devolver 0. y=a(1). · · · . evaluando el ejemplo anterior en x = 2 tendremos: P´g. este polinomio se identificar´ de modo inmediato con el vector a. end end Pru´bala con los vectores (1. As´ si tenemos el siguiente polinomio de grado n la representaci´n o ı. Se trata de evaluar un polinomio en un punto.0. 2. an ) Sin embargo.

Se llama algoritmo de Horner2 En el algoritmo de Horner.. % % % % % % ud3_fevalua. VECTORES >> ud3_fevalua0([2. 1837). William George Horner (Bristol. escribiendolo como x(. matem´tico ingl´s conocido por haber desarrollado a e m´todos para resolver ecuaciones polin´micas y sobre todo por ser el inventor del zoetropo(fig.1: Zoetropo de Horner siguiente modo: Es como si el polinomio 2.m ud3_fevalua(a. en este ejemplo aprendemos a recorrer el vector utilizando e un orden distinto al habitual y aprendemos tambi´n a desconectar la variable n de la dimensi´n e o del vector.x).2) ans = -8.. o o o o 2 P´g. artilugio e o que creaba la ilusi´n ´ptica de movimiento. 71 a . recibe un vector a de dimensi´n n+1 y un escalar x y o devuelve el polinomio a(n+1)xˆn+.0*2-3.7+x0.. e Ello conduce a un algoritmo diferente en el que se empieza por el t´rmino de grado m´s alto y e a se va hacia abajo despu´s.x) n=length(a)-1. algo que en general os cuesta mucho.(x(x a(n+1)+ a(n))+a(n-1)).0 -3.3000 Existe un algoritmo que evita el tener que calcular todas esas potencias ahorrando cierto tiempo. haremos las siguientes operaciones: >> 2.5 0.5−3.7 0. el polinomio escribe del Figura 3. 1786.5+0. 3.1).5*2ˆ3 ans = -8..5]. y a partir del cual se evolucion´ hasta la invenci´n del cine. Con ello.7*2ˆ2+0.´ UNIDAD DIDACTICA 3.5)). Bath.7x2 +0.+a(2))+a(1) En este ejemplo.5x3 lo escribi´semos como 2.0+x(−3.+a(2)x+a(1) evaluado en x. 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.5+x(0.3000 Para comprobar...

i=1. (x − tn ).28 Prueba la funci´n ud3 fevalua. Utiliza ud3 f evalua. Ejercicio 3. i=n.33 P´g. ıa Ejercicio 3. ¿Es correcta? ¿Podr´ hacerla m´s eficiente? e ıas a function dif=ud3_fdiferencia(v. end Los ejercicios correspondientes a este ejemplo son bastante interesantes. end i=i+1. Para obtener un valor aproximado del seno de un ´ngulo α evaluamos el o a polinomio de Taylor: α3 α5 α7 α− + − 3! 5! 7! Usando la funci´n ud3 f evalua. 72 a .pos) n=length(v). while i>=1 y=x*y+a(i). .m. Es decir. i=i-1. donde n es la dimensi´n del vector t.31 Crea una funci´n que reciba dos vectores. o Ejercicio 3. . ıces Ejercicio 3. eval´a en x el vector de coeficiente principal 1 cuyas o u ra´ son los elementos de t. end Pista: No se deber´ usar un bucle ni un condicional. u ız Ejercicio 3. crea una funci´n que reciba un valor de α y devuelva el valor del o o seno de α.Lenguajes de Programaci´n: Gu´ ECTS o ıa y=a(n+1). while i<=n if i==pos dif=v(1)-v(i).32 Crea una funci´n que reciba un vector t y un n´mero x y evalu´ en x el polinomio o u e (x − t1 )(x − t2 ) .m para comprobar si un n´mero es ra´ del polinomio o no.29 Aproximaci´n del seno. calculado a partir de la f´rmula anterior. o Ejercicio 3.m. el primero de los cuales ser´n los coeficientes de un o a polinomio p(x).30 La siguiente funci´n recibe un vector v y una posici´n i y devuelve la diferencia entre el primer y el o o elemento i-´simo. La funci´n devolver´ 1 si en el segundo vector aparece una ra´ de p(x) y 0 en caso o a ız contrario.

En este ejemplo.23.37 Prueba la funci´n ud3 fibo.38 Construye una funci´n que reciba un n´mero natural n y devuelva un vector v tal que sus componentes o u sean 1 i vi = 1 + . % ud3_fibo % ud3_fibo(x1. 73 a . Por ejemplo.x2. u Ejercicio 3. o Ejercicio 3. construir una funci´n que reciba un o o vector y devuelva el elemento que se repite m´s veces. a 3. adem´s ese vector se construye a partir de varios escalares. function v=ud3_fibo(x1. Ejercicio 3. i=3.7. o e Ejercicio 3. Funci´n que devuelve un vector o A menudo.36 (Para valientes) Crea una funci´n que reciba α y un n´mero n y devuelva el valor del seno en α o u aproxim´ndolo por el polinomio de Taylor en 0 de grado n. v(2)=x2. la salida de nuestras funciones pueden ser tambi´n vectores. x_2=x2.x2.´ UNIDAD DIDACTICA 3.35 (Para valientes) Usando la funci´n creada en el apartado 3. i=i+1.39 P´g.m. end Los ejercicios correspondientes a este ejemplo son: Ejercicio 3.n) devuelve los n primeros % terminos de la sucesion de Fibonacci % x_1=x1. pues de lo que se trata es de a construir un vector con los t´rminos de la sucesi´n de Fibonacci. x_n=x_(n-1)+x_(n-2) % Por primera vez definimos una funcion que % devuelve un vector. la e sintaxis no cambia con respecto a la de una variable escalar convencional. VECTORES Crea una funci´n que reciba un vector de naturales v y un natural d y devuelva 1 si todos los o elementos de v son divisibles por d y 0 en caso contrario. while i<=n v(i)=v(i-1)+v(i-2).n) v(1)=x1.34. la cual ya estudiamos en el e o ejercicio 2.34 Crea una funci´n que reciba un n´mero y un vector y devuelva el n´mero de veces que aparece ese o u u n´mero en el vector. en [0 1 2 1] devolver´ 1. 1≤i≤n i Llama desde MATLAB a la funci´n. ¿A qu´ tienden las componentes del vector resultado?. a ıa Ejercicio 3. En MATLAB. y lo construimos con % argumentos de entrada escalares.

. elimina los m´ltiplos de los n´meros primos entre 2 y n en lugar de eliminar u u √ o u los m´ltiplos de todos los n´meros entre 2 y n. ı. 2.. y el n´mero de tramos n. n y devolver´ un vector x de n+1 componentes que contenga los puntos entre xmin y xmax separados a cada dos una distancia h. 74 a ..42 (Para los m´s valientes) Criba de Erat´stenes. usaremos un vector v de dimensi´n 100 o u o que tenga en la posici´n i el n´mero i y para marcar el n´mero como eliminado. as´ que podemos utilizar la informaci´n guardada o u ı o en el vector para este caso. x2 = xmin + h. N´tese que seg´n vamos aplicando la criba de u u Erat´stenes vamos obteniendo los n´meros primos. xmin. devolver´ [1 4 2 3]. 5.. La manera m´s r´pida de obtener todos los n´meros a o a a u primos menores que un n´mero dado n es mediante la Criba de Erat´stenes. while i<=n if v(i)>y y=i. Ejercicio 3. As´ si introducimos 1423. pondremos un 0 en o u u dicha posici´n. Ejercicio 3. El procedimiento es el u o siguiente: se toman todos los n´meros menores que n y se van eliminando de la lista los m´ltiplos u u de dos. Ejercicio 3. a Ejercicio 3.Lenguajes de Programaci´n: Gu´ ECTS o ıa Construye una funci´n que reciba un n´mero natural n y devuelva un vector formado por los n o u primeros t´rminos de la sucesi´n e o √ x1 = 2. xi+1 = 2xi .41 (Para valientes) Construye una funci´n que reciba un n´mero natural y devuelva el vector formado o u por sus cifras.44 Determina qu´ valor devolver´ la siguiente funci´n si v = (1.43 Crea una funci´n que reciba un n´mero n y devuelva todos los n´meros primos menores que n o u u mediante la Criba de Erat´stenes. xn+1 = xmin + nh = xmax. Como lista de n´meros. 456. i=1. i ∈ N Comprobar que converge a 2. xmax.40 Crea una funci´n que reciba dos valores. end i=i+1. end P´g. e a o function y=ud3_fprueba2(v) n=length(v). o √ Para mejorarlo. ı x1 = xmin. y=1. Ejercicio 3. La funci´n calcuo u o lar´ el valor a xmax − xmin h= . As´ pues. los m´ltiplos de tres y as´ sucesivamente hasta llegar a los m´ltiplos de la ra´ cuadrada de u ı u ız n. 4). 3.

i=1. end P´g. Presentamos este ejemplo en el que se trata simplemente de codificar una funci´n que reciba un vector x y un escalar a. la ordenada correspondiente yi sea el m´ximo de las funciones seno y coseno a evaluadas en xi . end i=i+1. pero o u conceptualmente hay que saber moverse a trav´s del vector de partida y generar otro. else y(i)=cos(x(i)). while i<=n if x(i)<a y(i)=0. end Para probar esta funci´n podemos ejecutar los siguientes comandos desde la ventana de coo mandos de MATLAB.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. >>plot(x.y). i=1. end i=i+1. La funci´n o o devolver´ un vector y.8. % 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´n que recibe un vector y devuelve otro vector o % function y=ud3_fmaxsincos(x) n=length(x). La sintaxis no ofrece ning´n problema. % ud3_fmayormenor % ud3_fmayormenor(x. Funciones que reciben y devuelven vectores Cuando queramos por ejemplo una funci´n que nos devuelva una curva evaluada en una serie o de valores estructurados a su vez como un vector. deberemos tener la posibilidad de recibir un vector en la funci´n y devolver otro vector. while i<=n if sin(x(i))>cos(x(i)) y(i)=sin(x(i)). 75 a . >>x=0:0. >>y=ud3_fmaxsincos(x).a) n=length(x).´ UNIDAD DIDACTICA 3. tal que la componente yi de ese vector ser´ 0 si la correspondiente xi a a es menor que a y 1 en caso contrario. VECTORES 3. Otra posibilidad sencilla pero tambi´n interesante es el de tener una funci´n que reciba un e o vector y uno o varios escalares y devuelva otro vector. else y(i)=1. Vamos e a plantear primero un ejemplo sencillo en el que se trata simplemente de codificar una funci´n o que reciba un vector de abscisas x y devuelva un vector de ordenadas y tal que para cada abscisa xi .01:8*pi.

. Dibuja la curva resultado de modo an´logo a como se dibuj´ la de dicha a o funci´n.50 P´g. Dibuja con MATLAB el seno y su a o aproximaci´n por la funci´n anterior en [−π/2. Los ejercicios o a correspondientes a este ejemplo son: Ejercicio 3. con al menos 1000 puntos. . mn ) y devuelva el vector o de los factoriales. (m1 . π/2]. ıa Ejercicio 3. Representa en una gr´fica la funci´n factorial entre 1 y 10 a o y la funci´n exponencial entre 1 y 10. o o Ejercicio 3. 3! 5! 7! Se llamar´ a la funci´n del ejercicio 3. es decir. . 76 a . . Se trata de codificar una funci´n o que reciba un vector de naturales u y devolver un vector vprimos tal que cada componente de vprimos vale uno o cero en funci´n de que la correspondiente componente de u sea o no o prima.47 a o Crea una funci´n similar a la funci´n ud3 fmaxsincos.29 del modo que convenga. aplicamos el logaritmo a cada una de las funciones.49 Construye una funci´n que reciba un vector de naturales. m2 !. vectorizando las operaciones). . pero en general eso no ser´ posible.48 Crea una funci´n que reciba un vector x y devuelva un vector y tal que para cada ´ o ındice i. mn !). .46 Crea una funci´n que reciba un vector x y devuelva un vector y tal que yi = x2 − log(x2 + 1) (se o i i podr´ hacer sin while. o Para mejorar la gr´fica. end En algunos casos. se puede utilizar la vectorizaci´n de operaciones explicada en el tutorial o para evitar uno de los bucles en la funci´n. i=i+1. (m1 !.Lenguajes de Programaci´n: Gu´ ECTS o ıa Presentamos un ejemplo m´s que tiene el inter´s de que llamamos a una funci´n para ir a e o calculando el valor de cada componente del vector resultado.m y ud3 fvprimos.m que calcule el m´ximo entre la funci´n del o o ejercicio 3. ud3 fmenormayor. i=1.45 Prueba las funciones ud3 fmaxsincos. Ejercicio 3. o Ejercicio 3. function vprimos=ud3_fvprimos(u) n=length(u). m2 .m. .m. ¿Cu´l de las dos funciones crece m´s r´pido? a a a Ejercicio 3. yi sea la aproximaci´n de sin(xi ) dada por: o yi = xi − x3 x5 x7 i + i − i.46 y el seno. . while i<=n vprimos(i)=ud2_fesprimo(u(i)). % % % % % 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. cambiamos la escala a logar´ a ıtmica.

vp(ip)=v(i). con a < b. necesitamos un nuevo contador s´lo de componentes positivas. Es la primera funcion que recibe un % vector y va construyendo otro de dimensi´n distinta o % que el original function vp=ud3_fpositivas(v) n=length(v). Ejercicio 3. La gesti´n n o o de la memoria RAM en estos casos requerir´ un cierto cuidado en muchos lenguajes de ıa programaci´n pero MATLAB lo maneja con mucha simplicidad.9. a e Para ir construyendo este segundo vector. Adem´s. Ejercicio 3. ese vector crece en tama˜o y la memoria RAM que n se necesita para ´l es gestionada de modo autom´tico por MATLAB. colocadas en el mismo orden en el ´ que est´n en ´ste. As´ a medida que vamos o ı. 77 a . a menudo no sabemos el tama˜o o dimensi´n del vector resultante. VECTORES Crea una funci´n que reciba un vector v y devuelva un vector con los elementos del vector v pero o en orden inverso al original.53 (Para valientes) Modifica la funci´n anterior para que reciba un vector y dos valores a y b y devuelva o el vector escalado entre a y b. Calculamos el m´ximo del nuevo vector y dividimos cada elemento del vector por dicho a m´ximo. 3. Se trata de una funci´n que recibe un vector y devuelve otro vector que contiene o unicamente las componentes positivas del vector original. definiendo nuevas posiciones del vector.52 Crea una funci´n que reciba un vector y devuelva los datos escalados entre cero y uno. vamos colocando en cada posici´n el elemento correspondiente. Construcci´n de vectores o A menudo surgen problemas en los que a partir de un vector es necesario construir un nuevo vector que no tiene la misma dimensi´n que el original. al construir este nuevo vector a partir o a del original. e a Para ilustrar esta idea planteamos un ejemplo muy sencillo pero tambi´n muy bonito.8. o El c´digo completo de este ejemplo es el siguiente: o % ud3_fpositivas % Recibe un vector v y devuelve otro vp con las componentes % positivas de v. los cuales aparecer´n a lo largo del a a resto del curso. Para ello o determinaremos el valor m´ ınimo del vector. y que e adem´s sugiere infinidad de ejercicios muy interesantes. Ejercicio 3. while i<=n if v(i)>=0 ip=ip+1. y devuelva un vector y que o es el original truncado entre a y b. end P´g. ip=0. de tal modo que cada componente vaya en la posici´n o correcta. A medida que ese o contador se va incrementando.51 Crea una funci´n que reciba un vector x y dos valores a y b. i=1. Al final tenemos que obtener un vector de n´meros entre cero y uno.´ UNIDAD DIDACTICA 3. Restamos ese valor al vector para que los datos comiencen en cero. situaci´n esencialmente m´s sencilla o o a que ya hemos contemplado en la secci´n 3. de modo que el menor a u sea cero y el mayor uno y las diferencias entre dos elementos del vector original y los correspondientes escalado sean proporcionales. end i=i+1.

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

9463. a o el vector devuelto ser´ la el resultado de evaluar el polinomio a x3 x5 x7 + − . 5] devolver´ 0.5885. para calcular el factorial. devuelva el n´mero de elementos del vector que son primos. el 2.67 (Para valientes) Construye una funci´n que reciba un vector v de naturales y devuelva el mayor de o los repetidos. para v = [2. un entero n y devuelva un vector y tal o que para cada ´ ındice i.9. o sea devolver´ el vector y = (0.65 (Para valientes) Crea una funci´n que reciba un vector de n´meros enteros y devuelva 1 si la suma o u de dos cualesquiera de sus elementos es igual a un tercero y cero en caso contrario. o a vi !. devuelva el primer elemento de del vector que sea primo. o Ejercicio 3. ıa ıa Ejercicio 3.61 Construye una funci´n que reciba un vector v de naturales y devuelva o ninguna funci´n y por tanto habr´ que usar bucles anidados.71 (Para valientes) Idem sin llamar a ninguna funci´n. Ejercicio 3. o Ejercicio 3.36.68 (Para valientes) Construye una funci´n que reciba un vector v de naturales y devuelva el mayor de o los repetidos.8) y n = 7. 3! 5! 7! en los puntos (1. Recuerda que en la unidad 2 hay un ejercicio.62 (Para valientes) Crea una funci´n que reciba un vector de n´meros naturales y sin utilizar la funci´n o u o u ud2 fesprimo.8).14. Ejercicio 3.5. Por ejemplo. 2. 7. x− Ejercicio 3. si introducimos el vector x = (1.63 (Para valientes) Crea una funci´n que reciba un vector de n´meros naturales y sin utilizar la funci´n o u o ud2 fesprimo. sin llamar a ninguna funci´n. o Ejercicio 3. El seno toma a en esas mismas abscisa los valores (0. No se podr´ llamar a a Ejercicio 3. 0. o P´g. 2.60 Construye una funci´n que reciba un vector v de naturales y devuelva 1 si tiene dos elementos iguales o y 0 en caso contrario. yi sea la aproximaci´n de sin(xi ) dada por un polinomio de Taylor en el 0 de o grado n.9.´ UNIDAD DIDACTICA 3. Ejercicio 3.66 (Para valientes) Construye una funci´n que reciba un vector v de naturales y devuelva el n´mero de o u veces que se repita el que m´s veces se repita.69 (Para valientes) Crea una funci´n que reciba un vector x. calcule y devuelva la media de los elementos primos para lo cual llamar´ a su vez a la funci´n ud3 fmedia. 0. Por ejemplo. 5] devolver´ 1 y para [−1. 2. 0. VECTORES Ejercicio 3. 2. 0.9454.3078).64 (Para valientes) Crea una funci´n que reciba un vector de n´meros naturales y sin utilizar la funci´n o u o a ud2 fesprimo.5985.Se usar´ la funci´n 3.70 (Para valientes) Idem pero la evaluaci´n del polinomio en cada valor del vector x se realizar´ llamando o a a la funci´n ud3 fevalua. 79 a . a Ejercicio 3.3350). 2.5. llamando a ud3 fmaximo Ejercicio 3.

El ejemplo m´s a elemental que se nos ha ocurrido es el de resolver una ecuaci´n de segundo grado. la cual o siempre tendr´ 2 soluciones. Para invocar esta funci´n desde la l´ o ınea de comandos.72 Copia ud3 f e2grado. e Ejercicio 3. a ıces Ejercicio 3.73 Crea una funci´n que reciba los coeficientes de una ecuaci´n de segundo grado y devuelva la suma o o y el producto de las soluciones.b. 80 a . En a m´ltiples ocasiones es necesario obtener varios resultados en una misma funci´n.m.2) r = 1 s = 2 Con lo que se asignan a las variables r y s las dos ra´ 1 y 2 de la ecuaci´n x2 − 3x + 2 = 0.-3.m a tu directorio y pru´bala. por ejemplo: >> [r. Es un tema o a que no plantea dificultad a los estudiantes y que permite hacer funciones m´s interesantes. simplemente se agrupan todos los argumentos entre corchetes y separados por comas. complejas o una ra´ doble. que resuelva utilizando o o √ y = x2 llamando para ello a ud3 f e2grado. propondremos ejemplos de ecuaciones que tengan ra´ reales.Lenguajes de Programaci´n: Gu´ ECTS o ıa 3. Si no son n´meros u imaginarios devolver´ las dos ra´ en r1 y r2 y error = 0. sean reales. x2=(-b+sqrt(b*b-4*a*c))/(2*a). r2 = 0 y otra variable error = 1. lo haremos del siguiente modo.75 Modifica la funci´n ud3 f e2grado. MATLAB es capaz de a ız trabajar directamente con complejos pero es un tema al que apenas hemos prestado atenci´n o y que escapa a los contenidos del curso.m % devuelve las dos soluciones de axˆ2+bx+c=0 function [x1. ıces o Ejercicio 3. que deshaga el cambio de variable mediante x = ± y y que devuelva las cuatro soluciones de la ecuaci´n original.74 Crea una funci´n que reciba los coeficientes de la ecuaci´n ax4 + bx2 + c = 0.11.m para que si las ra´ son n´meros imaginarios (el discriminante o ıces u b2 − 4ac es negativo) devuelva r1 = 0. o Ejercicio 3.c) x1=(-b-sqrt(b*b-4*a*c))/(2*a). Funciones con salidas m´ltiples u En esta secci´n se presentan funciones que tienen m´s de un argumento de salida. para lo cual es u o necesario pasarlos todos como argumentos de salida. La sintaxis es muy sencilla. Ejercicio 3.x2]=ud4_fe2grado(a.76 P´g. ıces % ud3_fe2grado.s]=ud3_fe2grado(1. Por tanto.

77 Crea una funci´n que reciba un vector y devuelva la posici´n del m´ximo y del m´ o o a ınimo de sus elementos.´ UNIDAD DIDACTICA 3. 2. a P´g. 2 si es a o rect´ngulo y 1 si es agudo.78 Crea una funci´n que reciba un vector y devuelva el m´ximo. 1 si o a es equil´tero. Ejercicio 3. Ejercicio 3. devolver´ w = v y error = 1. el m´ o a ınimo y sus posiciones.79 Crea una funci´n que reciba un vector u y devuelva dos vectores up y un con las componentes o positivas y negativas del vector u respectivamente. VECTORES Crea una funci´n que reciba un vector y devuelva el m´ximo y el m´ o a ınimo de sus elementos. 3 si es obtuso.83 Crea una funci´n que reciba los tres lados de un tri´ngulo y devuelva en una variable lado. Si alg´n elemento es menor o igual que cero. Ejercicio 3. Ejercicio 3. devolver´ w(i) = Ln(v(i)). sin usar las funciones min y max. Ejercicio 3. 2 si es is´sceles y 3 si es escaleno y en una variable angulo. u a Ejercicio 3. (Para valientes) La funci´n devolver´ 0 en las dos variables si los valores a o a introducidos no forman un tri´ngulo. Ejercicio 3. 1 ≤ i ≤ n a y error = 0. colocadas en el mismo orden.81 Crea una funci´n que reciba un n´mero n y devuelva un vector con los n´meros primos que sean o u u divisores de n.80 Crea una funci´n que reciba un vector u de n´meros naturales y devuelva un vector con los n´meros o u u primos que contiene y otro con los no primos.82 Crea una funci´n que reciba un vector v y devuelva un vector w y un n´mero error de modo que: o u 1. Si todos los elementos de v son estrictamente positivos. 81 a .

82 a .Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g.

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

.

se establecen unicamente ´ en funci´n del n´mero de sesiones presenciales. e para finalmente reflexionar sobre el tipo de evaluaci´n que creemos adecuado para un curso o de este tipo. En esta parte del libro detallamos los objetivos y los relacionamos con las actividades realizadas a lo largo del mismo. proponi´ndole mecanismos de enganche a e la asignatura de modo continuo. Ahora es el momento de que los estudiantes comprueben si ha sido as´ y de que sugieran las mejoras que consideren convenientes. los que se asocian a cada asignatura al hacer la matr´ e ıcula. Este esfuerzo significa no solo asistir a las clases sino tambi´n un trabajo bien individual bien con los compa˜eros realizado fuera de las horas de clase. aprovechando esta oportunidad para e transformar el modo en el que ense˜amos Programaci´n.Cap´ ıtulo 1 Introducci´n o Uno de los objetivos de este libro es ser un soporte de la introducci´n de la metodolog´ o ıa basada en los cr´ditos europeos ECTS1 en la asignatura. un cr´dito. tratando. comprometidos y con la sensaci´n de o que no van a fracasar. indicando en qu´ medida creemos que dichas actividades contribuyen e a la consecuci´n de los objetivos. En esta parte a del libro se pretende documentar con todo detalle esta metodolog´ de evaluaci´n. y razonando sobre el esfuerzo que es necesario para realizarla. 85 a . Con estos cambios pretendemos mantener al estudiante activo a lo largo de todo el curso. e n 1 P´g. Esperamos que esta gu´ resulte util y que cumpla los objetivos que antes citamos y que nos ıa ´ han llevado a escribirla. Tambi´n destacamos los recursos que creemos son necesarios para realizar dichas actividades. ı Los cr´ditos LRU. discutiendo sus ventajas e inconvenientes. de mantener a todos los alumnos trabajando. e indicando tambi´n el tiempo que estimamos es necesario o e para realizar dichas actividades. para que ıa o el estudiante la conozca y se ubique en la misma. incorporada a los mismos y mucho m´s rica. como dice Stephen Ball en la cita que nos ha inspirado. As´ se pasa de un paradigma con una n o ı. por cada 10 horas de clase. a una evaluaci´n basada o o ´ o completamente en los procesos. Los cr´ditos ECTS o u e e contabilizan no s´lo las horas de clase sino que intentan definir el peso de la asignatura teniendo en cuenta o el esfuerzo en tiempo que le cuesta aprobarla a un alumno medio. evaluaci´n que obtiene informaci´n unicamente de un examen final.

86 a .Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g.

5 te´ricos y 3. leo.0 pr´cticos o a 2. Profesores Antonio Souto Iglesias.Cap´ ıtulo 2 Datos generales 2.canton@upm.5 siendo 1.es o P´g.es a e Alicia Cant´n Pire. alicia. Primero Temporalidad y car´cter a Ciclo 2. antonio. Cr´ditos LRU e 4.4.es Leo Gonz´lez Guti´rrez.2. Primero Curso 2.2. Departamento Departamento de Ense˜anzas B´sicas de la Ingenier´ Naval n a ıa 2.1.1.1.3. 2.4.1. 87 a .souto@upm. Car´cter a Obligatoria 2.1. Primero Cuatrimestre 2.1.3.gonzalez@upm.

5. Cr´ditos ECTS e Horas presenciales Teor´ ıa Pr´cticas a Horas no presenciales Pr´cticas a Examen Total Horas/semana Total horas 1 15 2 30 Total 45 Total horas 41 – 4 Total 45 90 P´g.Lenguajes de Programaci´n: Gu´ ECTS o ıa 2. 88 a .

Objetivos generales: descripci´n o Como hemos comentado.. no se presta una atenci´n particular en o ese libro a la Inform´tica. agrupamos los objetivos generales en 3 categor´ ıas: 1. Conocimientos: 1 http://www. 3. en el cual se especifican los perfiles profesionales a los que se orienta la titulaci´n. a trav´s de una categoı e rizaci´n de los mismos en conocimientos.Cap´ ıtulo 3 Objetivos 3. De hecho en el plan de estudios gen´rico que se elabora en ese libro e blanco. Capacidades. Conocimientos. Actitudes. junto con los idiomas modernos. cuestiones pr´cticas. General Para contextualizar la definici´n de objetivos.es/activin/docs/libroblanco naval def. que cubrir´n unos objetivos espec´ a a ıficos. Referidos a aplicaciones.. se da una importancia equivalente a la formaci´n obligatoria en Inform´tica a la que o a corresponde a este curso de Lenguajes de Programaci´n. capacidades y actitudes. A partir de estos objetivos o generales dise˜aremos una serie de actividades las cuales agruparemos en una secuencia de n unidades did´cticas. y precisar´n de unos determinados a recursos. ´sta es. En el caso de la titulaci´n INO esto no ha sido as´ hasta bien entrado 2005.1. a o o 2. Se refieren a determinados valores o motivaciones que se trate de generar o potenciar en el estudiante.aneca. Cubren los aspectos m´s te´ricos de la formaci´n. para lo cual se recurri´ a un significativo n´mero de encuestas entre a a o u profesionales en activo. o o ı momento en que apareci´n un libro blanco orientado a las nuevas titulaciones post-Bolonia1 .2. habilidades. 89 a . se˜alada como la materia a e n b´sica m´s importante. muy en l´ a ınea con el concepto de competencias. o Hablaremos as´ primero de unos objetivos generales de la asignatura. o Aunque en el estudio de las competencias transversales.. algunas de las titulaciones disponen de su libro o blanco correspondiente. 3.pdf P´g.

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

Sin embargo. 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. vectores y matrices. Adem´s o o a a a se puede suponer que est´n cursando simult´neamente las asignaturas de C´lculo y Algebra I. Prerrequisitos LP es una asignatura del primer cuatrimestre del primer a˜o. Por tanto.3. y por tanto los prerrequisitos n se refieren unicamente a que el estudiante debe haber cursado y aprobado los estudios de ´ educaci´n secundaria.4. que pueden incluir trabajos para los o ´ que se necesite MATLAB y algunos elementos de Programaci´n. dado que no es posible matricularse de ninguna asignatura de cuarto a˜o si no se han aprobado todas las del primer a˜o n n 3 2 P´g. 91 a .CAP´ ITULO 3. o Plan 2002 de Ingeniero Naval y Oce´nico de la Universidad Polit´cnica de Madrid a e En realidad esto esta impl´ ıcito en la estructura del plan de estudios vigente. OBJETIVOS 3. Adem´s. es conveniente haber cursado y superado LP antes de matricularse de la asignatura M´todos Num´ricos3 . a a a y por tanto manejan con cierta soltura sucesiones. se le supone una formaci´n b´sica en Matem´ticas. 3. y de las asignaturas optativas o de libre configuraci´n e e o “Leguajes de Programaci´n II” y “Complementos de Inform´tica”. los lenguajes de o a a programaci´n son utiles para muchas otras asignaturas.

Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g. 92 a .

Agruparemos estas actividades en una serie de unidades did´cticas a para facilitar su descripci´n.1. 93 a . Durante la parte de a a exposici´n de teor´ se introducir´ cada uno de los temas ayud´ndose de ejemplos (ver parte o ıa a a I). de acuerdo con la distribuci´n de cr´ditos. 4. al final del proceso de aprendizaje planteado en LP. Al terminar cada ejern cicio se intercambian los papeles. tratando de evitar repetirlos a cada uno por separado. organizaci´n y temporalizaci´n. Se potenciar´ el que los alumnos defiendan sus propios c´digos proyectando los mismos en a o 1 DHOf por dentro del horario oficial P´g. Asimismo. El objetivo de las clase te´ricas es exponer los conceptos b´sicos y errores frecuentes a todos o a los alumnos a la vez. al principio de cada sesi´n habr´ un recordatorio de las sesiones previas o a utilizando el archivo que para cada grupo se guarda en el tablet PC. dependiendo del n´mero de alumnos y de la disponibilidad de o u docentes. o a a se comentar´n los problemas observados durante la parte m´s pr´ctica de la clase y c´mo a a a o evitarlos. mientras trata de encontrar los fallos que pueda tener el dise˜o. lo que es muy conveniente durante e el examen individual y en general.2. cubrir´ dos terceras a o e a partes de la asignatura. 4. utilizando la pizarra electr´nica que proporciona la interfaz tablet del port´til. M´todos docentes e Parte te´rica de las sesiones DHOf o Todas las sesiones DHOf1 se impartir´n en el Centro de C´lculo (CC).2. Los alumnos se organizar´n en parejas para que empleen la t´cnica de “pair programming” de a e la metodolog´ “extreme programming”.1.1. o o o 4. Esta parte pr´ctica. El objetivo del “pair programming” es que el conocimiento est´ igualmente repartido entre los miembros de la pareja. con la supera a o visi´n de uno o varios profesores. Parte pr´ctica de las sesiones DHOf a La parte pr´ctica consistir´ en la realizaci´n de ejercicios en el CC (ver parte I).1.Cap´ ıtulo 4 Programa y Metodolog´ ıa En esta secci´n describiremos todas las actividades que creemos necesarias para conseguir los o objetivos descritos en 3. uno de ıa ellos dise˜a el programa y el otro lo codifica (escribe el c´digo) siguiendo las instrucciones del n o anterior. En cada pareja de programadores/alumnos. Adem´s.

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

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

Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g. 96 a .

P´gina web . El curso 2007e e 2008 fue la primera edici´n de esta plataforma.3. 97 a . leo.). Algunas de estas tutor´ podr´ ser en algunos casos en el CC. lo cual se anunciar´ a lo largo ıas ıan a del curso en clase.2. Tutor´ ıas http://www.es/titulaciones/oficiales/course/view.etsin.canton@upm.souto@upm.es.. adem´s de definir el a ıa a contexto del curso de modo preciso se muestran los ejemplos y ejercicios correspondientes al mismo en la parte I. 5.es.gonzalez@upm. y dado que los tres profesores tienen dedicaci´n completa. la cual sustituye y supera a la p´gina web de la o a P´g.es.es/ Para los horarios y ubicaci´n de las tutor´ pod´is consultar la p´gina web de la escuela: o ıas e a Independientemente de esas horas.. En ella.php?id=629 aunque se puede entrar a trav´s de Polit´cnica Virtual en la web de la UPM. o no tendr´n inconveniente en resolver dudas a cualquier hora.Plataforma de B-learning a La asignatura tiene vida paralela en la plataforma de B-learning del Gabinete de tele-educaci´n o de la UPM (GATE).upm. en la p´gina web de la asignatura (5. Tutor´ virtuales ıas Con la ficha que han rellenado los estudiantes al principio de curso se formar´ una lista de correo a para informarles de asuntos relativos a la asignatura (publicaci´n de notas.upm. alicia.1.Cap´ ıtulo 5 Recursos 5. El enlace web para la misma es: http://moodle. sesiones especiales o de pr´cticas. Tambi´n se disponen de ex´menes propuestos en otras convocatorias. Gu´ ıa El m´s importante de todos los recursos es esta Gu´ Docente. Los estudiantes pueden consultar sus dudas mand´ndolas a las direcciones de a a correo de los profesores.4. salvo que tuviesen alguna urgencia a puntual o no estuviesen en sus despachos. el e a tutorial de MATLAB y diversa documentaci´n importante para el alumno.4) o v´ e-mail. antonio. . o 5. a ıa 5.

Alfonso Braz´lez a Editorial: Escuela Superior de Ingenieros Industriales A˜o: 2001 n Gu´ para aprender MATLAB paso a paso. 5. de los cuales damos un peque˜o comentario. a e 5. Se puede comprar en reprograf´ de la ETSII o descargar de ıa P´g. documentaci´n. o es interesante tenerla para utilizarla como ayuda cuando utilicemos el MATLAB para otras asignaturas. Creemos o que es el que mejor trata la parte de Programaci´n. 98 a . la participaci´n a o a o en el cual forma parte del item Participaci´n de la evaluaci´n de la asignatura. organizaremos sesiones de tutor´ all´ (sobre todo e ıas ı hacia el final del curso). a o ıa 5. Para poder usar el CC hay que estar dado de alta como usuario (hablar con el personal del CC para este tr´mite y ver las normas en el ap´ndice B). Jos´ Ignacio Rodr´ ıa o e ıguez. o 2. as´ como califia o ı caciones(la publicaci´n de las mismas ser´ anunciada por correo electr´nico). para que el estudiante pregunte dudas mientras estudia. Centro de C´lculo a Los estudiantes pueden y deben usar el CC para estudiar LP. o a o o ejercicios y se utilizar´ como tabl´n de anuncios.Lenguajes de Programaci´n: Gu´ ECTS o ıa asignatura. No obstante hay que tener en cuenta que en el libro se tratan comandos de MATLAB que no permitimos en clase. Est´ pensada para estudiantes de primero y ıa a se puede seguir con facilidad.3 como si estuviera en primero. Se dispone adem´s de un foro. por ser muy espec´ ıficos y no estar disponibles en general en los lenguajes de programaci´n. Bibliograf´ ıa Los siguientes libros. De vez en cuando. aunque han de respetar las normas(ver ap´ndice B).7. Copias En copias estar´ disponible una versi´n completa encuadernada de esta gu´ docente. o a Autores: Amos Gilat Editorial: Revert´ e A˜o: 2006 n Excelente texto introductorio a MATLAB y a la Programaci´n con MATLAB. T´ ıtulo: Aprenda MATLAB 5.6. Una introducci´n con ejemplos pr´cticos.5. los pod´is encontrar en la n e biblioteca de la ETSIN: 1. En ella se ir´ colgando toda la informaci´n relativa a la asignatura. Aunque la parte de Programaci´n es demasiado escueta. Autores: Javier Garc´ de Jal´n. la cual o o os es facilitada al matricularos. aunque el orden de los temas no o es el mismo que el que seguimos en el curso. Para acceder a o o esta plataforma necesitais disponer de una direcci´n de correo electr´nico de la UPM. T´ ıtulo: MATLAB.

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

Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g. 100 a .

Cap´ ıtulo 6 Evaluaci´n o
6.1. General

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

6.2.

Evaluaci´n tradicional o

Consistir´ en un examen final en el que se tratar´ de evaluar en qu´ grado se han alcanzado a a e los objetivos descritos en 3.2. Los objetivos y estructura del examen est´n descritos en 6.4. a Dado el car´cter eminentemente pr´ctico de la asignatura (3 de los 4.5 cr´ditos de LP son a a e pr´cticos) y el cambio importante que para un estudiante de primer a˜o supone su entrada a n en la universidad, creemos que es necesario que sigan el curso de modo regular. En la planificaci´n que se ha hecho del curso no se ha considerado adecuado establecer sesiones te´ricas y o o pr´cticas espec´ a ıficas, conviviendo ambos aspectos en casi todas ellas. Debido a ello, el criterio de superaci´n de las pr´cticas ser´ simplemente asistir a dos tercios (3/4.5) de las clases, para o a a lo cual llevaremos un registro de asistencia. En las convocatorias extraordinarias de Junio y Septiembre solo se podr´ optar a la evaluaci´n a o tradicional.

6.3.

Evaluaci´n ECTS o

La calificaci´n ECTS est´ desglosada a partir de la evaluaci´n de las siguientes actividades: o a o P´g. 101 a

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

´ CAP´ ITULO 6. EVALUACION

Estas dos notas se conservar´n para las convocatorias de junio y septiembre a los que a hayan suspendido. Se valorar´ de este modo tambi´n la la actitud positiva ante los a e 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´todos e de evaluaci´n (tradicional y ECTS), su nota final ser´ la mayor de las dos calificaciones. o a

6.4.
6.4.1.

El examen
Tipo de examen

El examen consistir´ en la codificaci´n en el Centro de C´lculo de una serie de ejercicios a o a similares a los propuestos de modo continuo durante el curso y similares tambi´n a los que e forman los ex´menes por grupos. Se facilitan ejemplos de enunciados en el ap´ndice A. Estos a e ex´menes se realizar´n en clase en la ultima parte del curso. a a ´ El c´digo a entregar no debe tener errores y debe realizar las tareas correspondientes al correso pondiente ejercicio. Se nombrar´n los c´digos correspondientes a cada ejercicio como f1.m, a o f2.m etc.... Las normas para escribir los c´digos son las habituales con la que se trabaja en el o curso y est´n explicadas en la secci´n 6.4.3. a o

6.4.2.

Criterios de evaluaci´n o

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

6.4.3.

Normas del examen

Normas para la realizaci´n de los ejercicios en los ex´menes. o a
1. Las funciones se ubicar´n en ficheros independientes, cuyo nombre coincidir´ con el de a a la funci´n a falta por supuesto de la extensi´n .m. o o 2. La funci´n del ejercicio 1 se llamar´ f 1, la del ejercicio 2 se llamar´ f 2, y as´ sucesivao a a ı mente. ESTO ES IMPORTANTE!. No se llamar´n ni examen1, ni examen f 1, etc... a Los nombres han de ser f 1, f 2, etc... 3. El unico material permitido es un bol´ ´ ıgrafo. No se permite el uso de ning´n dispositivo u de almacenamiento, incluidas memorias USB. P´g. 103 a

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

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

106 a .Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g.

107 a .Parte III Ap´ndices e P´g.

.

109 a .Ap´ndice A e Ejemplos de Ex´menes a P´g.

Los nombres han de ser f 1. a 10. En las funciones s´lo se utilizar´n aquellos argumentos de entrada y salida que se o a especifiquen en el enunciado. 5. Si a crees que necesitas modificarla para poderla utilizar es que lo est´s haciendo mal. 3. todas las operaciones hay que realizarlas siempre componente a componente cuando se trate con vectores.. la del ejercicio 2 se llamar´ f 2. a a ı 7. Cuando en el enunciado se exija la utilizaci´n de una rutina estudiada en o el curso o incluida en el enunciado. 4. los cuales puedes encontrar en la carpeta correspondiente.m.. Las funciones se ubicar´n en ficheros independientes. u a a 9. ESTO ES IMPORTANTE!. Deber´ estar escrito en MATLAB. Las funciones se ubicar´n en ficheros independientes. o Normas para la realizaci´n de los ejercicios en los ex´menes. Se podr´n usar todos los ejemplos (no ejercicios) que se han estudiado en el curso a hasta el d´ del examen. Deber´ e a a ser usada tal y como est´ escrita en los apuntes o en el enunciado. y as´ sucesivamente. ni examen f 1.. o o 2. La funci´n del ejercicio 1 se llamar´ f 1. No se llamar´n ni examen1. cuyo nombre coincidir´ con a a el de la funci´n a falta por supuesto de la extensi´n . y as´ sucesio a a ı vamente. La primera l´ ınea de cada programa o funci´n ser´ un comentario con vuestros o a apellidos. etc. a 6. El unico material permitido es un bol´ ´ ıgrafo. ´sta no podr´ ser modificada. o a 1. Todos los ficheros estar´n ubicados en la carpeta C : \examenes. La funci´n del ejercicio 1 o o o se llamar´ f 1. No se permitir´ a ıa a el uso de la vectorizaci´n de operaciones explicada en el tutorial. No se permitir´ usar funciones propias de MATa a LAB no estudiadas durante el curso. ni la multiplicaci´n o o directa de matrices. la del ejercicio 2 se llamar´ f 2.. a etc. f 2. 8. No se permite el uso de ning´n disu positivo de almacenamiento.Examen final de Lenguajes de Programaci´n. cuyo nombre coincidir´ con a a el de la funci´n a falta por supuesto de la extensi´n . Febrero 2008 o Escuela T´cnica Superior de Ingenieros Navales e Fecha aproximada de publicaci´n de las notas: 29/02/2008 o D´ y hora de la revisi´n: 03/03/2008. 12h30m ıa o Tiempo para esta parte : 85 minutos Puntuaci´n: 10 puntos. ıa . nombres y el n´mero de m´quina en la que est´is.m. ni conceptos o estructuras correspondientes a ejemplos y unidades did´cticas que todav´ no se hayan explicado. O sea. incluidas memorias USB.

Se podr´n crear funciones auxiliares (como una que calcule el factorial por ejemplo). se cerrar´ la sesi´n pero NO se apagar´ el ordea o a nador. . a si crees que te pueden simplificar el trabajo 12.11. Al terminar el examen.

No se podr´ usar a o la funci´n propia de MATLAB f actorial para hacer el c´lculo del factorial. que carecen de elementos comunes y de dimensiones m y n que son o en general distintas. por ejemplo el 6. 1. ıa u y el 6 y el 15 son m´ltiplos de 3 (2. el resultado tiene que ser el mismo (2. 9. 5. 10).6487. devolver´ tambi´n 0. 15. 3. Como comprobaci´n adicional.Ejercicios.6458. Por tanto. 5) y m = 2. 4. la funci´n devolver´ el vector ´ o a [1 6 28] (2.52 /2 + 0.5 es bastante similar a e = 1.5 + 0. 6. Crea una funci´n que reciba un n´mero natural n. 2. en este caso. Codifica una funci´n que reciba dos vectores u y v ordenados de modo creciente o por hip´tesis.5. o bien o cualquier otra idea que se os ocurra. . si a o intercambiamos u y v en la llamada. La o a alternativa es o bien escribir una funci´n aparte que calcule el factorial. que ıa 0. 6. porque el 6 y el 8 son m´ltiplos de 2. 6. cuyo unico divisor es el mismo. o el 1. 8. si n = 30.5 ıa e puntos). 1 y 6 = 3 + 2 + 1.0029 (2. si u = (2. Devolver´ u u a adem´s el n´mero de elementos de v que son m´ltiplos de m + 1.5 puntos).5 puntos). Por ejemplo. 5. un n´mero real x y devuelva el o u u polinomio de Mc-Laurin de de grado n de la funci´n ex . Por ejemplo. 4. Por ejemplo. La funci´n devolver´ otro vector w construido a partir de o a todas las componentes de u y v. No se e e podr´ llamar a ninguna funci´n. Se define un n´mero m´gico u a u a como aquel que es la suma de todos sus divisores salvo el mismo. devolver´ 1 + 0. a o el resultado ser´ w = (1.53 /6 = 1. 8). si a u u v = (7. evaluado en x. cuyos divisores son 3. o el 28 = 14 + 7 + 4 + 2 + 1. Construir una funci´n que reciba un n´mero n y devuelva un vector que contenga o u a todos los n´meros m´gicos menores o iguales que n. tales que el vector w tambi´n est´ ordenado. 3. 9. u 2. devolver´ 2 y 2. 3. Crea una funci´n que reciba un vector v de n´meros naturales y un natural m o u y nos devuelva el n´mero de elementos de v que son m´ltiplos de m. 8. o ex ∼ 1 + x + xn x2 x3 + + ··· + 2! 3! n! Para evaluar el polinomio de Mc-Laurin. si n = 3 y x = 0. 10) y v = (1. La funci´n devolver´ tambi´n la diferencia en valor absoluto entre ex y el polinomio o a e citado evaluado en x. 4. 2. se construir´ ´ste componente a compoae a nente y se utilizar´ del modo adecuado la funci´n ud3 f evalua.5 puntos). Por ejemplo.

. i > 2 Por ejemplo. 7. 14.0000 7. si el vector o a es v = (3. 3. La sucesi´n de Fibonacci se a o construye de tal modo que. Se recomienda probar la funci´n o a o cambiando de orden los elementos del primer ejemplo (2. . 13) el resultado ha de ser ue = (3. Si p = 4 y q = 5.7200 2. me = 3 y mr = 12. Examen final de Lenguajes de Programaci´n. xi = xi−1 + xi−2 . q y devuelva el menor o u primo mayor que p y q que pertenezca a la sucesi´n de Fibonacci iniciada por p o y q (2. 15. 5.5 puntos). As´ si p = [1 − 1 2] y ı.7. 12. 7. pues 10 − 7 = 3. 14. 13). la funci´n devolver´ un 1.7]. . Por ejemplo. 9.5 puntos). Construye una funci´n que reciba dos n´meros naturales p. Por ejemplo.. x2 = q. 23. y el primer primo ser´ el 7. siendo 2. Crea una funci´n que reciba un vector v de naturales y te devuelva 1 si la resta o de dos cualesquiera de los n´meros es igual a un tercero. Se podr´ a suponer que en el vector u siempre va a haber enteros y no enteros (2.1 3. un = (20. 6) la funci´n devolver´ 0. y el primer primo ser´ el 23(2. x1 = p.3. 5.5 puntos). 3. ıa . o ıa 7.7).3. el resultado de evaluar el polinomio p en todos los puntos de x es un vector y = [2. la sucesi´n de Fibonacci estar´ formada por 1. 12.5 puntos). 2. si u = (3. as´ como sus u ı respectivos m´ ınimos me.3200 22. 10. a 4. Junio 2008 o Escuela T´cnica Superior de Ingenieros Navales e Fecha aproximada de publicaci´n de las notas: 30/06/2008 o D´ y hora de la revisi´n: 03/07/2008.7..1 el punto que m´s cerca tiene su valor de la media (2. 19h30m ıa o Tiempo para esta parte : 85 minutos Puntuaci´n: 10 puntos. x = [1. o 1. 7. mr. si v = u (3.6800. Crea una funci´n que reciba un vector p cuyas componentes asimilamos a los coo eficientes de un polinomio del modo como se ha hecho en el curso.5 2. tendr´ ıa ıamos 4. 11. La funci´n o ha de recibir tambi´n un vector x de n n´meros reales y devolver´ el elemento e u a del vector x que se encuentra m´s cerca de la media que resulta de que se eval´e a u el polinomio p en todos los elementos del vector x.. 7. 6).Ejercicios.5 puntos). 5. No se tendr´n en cuenta ni p ni q. 20. 4. Sin embargo. si p = 1 y q = 3..1 − 0.6800] cuya media vale 8. Crea una funci´n que reciba un vector u de n´meros positivos y devuelva un vector o u ue con los n´meros enteros que contiene y otro ur con los no enteros.

Examen final de Lenguajes de Programaci´n. la funci´n devolver´ un los vectores vp = (3. 76. Si p = 2. 47. xi = xi−1 + xi−2 . Crea una funci´n que reciba un vector u de n´meros naturales y otro vector v de o u n´meros racionales positivos. o Nombre: N´mero de PC: u Firma: 1. si p = 3. el resultado de evaluar el polinomio p en todos los puntos de x es un vector y = [2.5 puntos).1 − 0. x = [1. 6). q = 4 y r = 2. No se tendr´n en cuenta los valores p y q. q = 1 y r = 3.1 3. 11.. x1 = p.. ´ o 3.0000 7.. la funci´n a o devolver´ en este caso 76. siendo 2. La funci´n ir´ o u o a calculando t´rminos de la sucesi´n de Fibonacci iniciada por p y q e ir´ comproe o a bando si son m´ltiplos de p. 29. As´ si p = [1 − 1 2] y u ı. 10.1 el punto que m´s cerca tiene su valor de la media. pues los tres primeros m´ltiplos de 2 ser´ 4. 18 y 76.7200 2. Por ejemplo. si v = (3. 4.3200 22. 7) y vnp = (10. ıa u ıan 4.. Crea una funci´n que reciba un vector v de naturales y te devuelva un vector vp o formado por aquellas componentes de v que sean primas y otro vnp formado por aquellas componentes que no sean primas. que ha de ser el unico valor que finalmente devuelva la funci´n (2.7]. 7. 7. Crea una funci´n que reciba un vector p cuyas componentes asimilamos a los coo eficientes de un polinomio del modo como se ha hecho en el curso. que sea . La funci´n o ha de recibir tambi´n un vector x de n n´meros reales y devolver´ el ´ e u a ındice del elemento del vector x que se encuentra m´s cerca de la media que resulta de que a se eval´e el polinomio p en todos los elementos del vector x. devolviendo el t´rmino en que estemos de la sucesi´n de o a e o Fibonacci (2. 18. 123. i > 2 Por ejemplo.5 2.5 puntos). La sucesi´n de a o Fibonacci se construye de tal modo que.6800] cuya media vale 8. Construye una funci´n que reciba tres n´meros naturales p.5 puntos). el valor a devolver ser´ 123 (2. q y r.Ejercicios. En el momento en que hayamos encontrado r m´ltiplos u u de p la funci´n terminar´. 14. 6) (2. x2 = q.5 puntos). la sucesi´n de Fibonacci estar´ formada por o ıa 3.6800. 14. cuyo ´ a ındice es 3. Como 18 y 123 son los dos primeros m´ltiplos u de 3. La funci´n devolver´ 1 si existe alguna combinaci´n u o a o de fracciones formadas por elementos del vector u tomados de dos en dos. 19h30m ıa o Tiempo : 90 minutos Puntuaci´n: 10 puntos. Sept 2008 o Escuela T´cnica Superior de Ingenieros Navales e Fecha aproximada de publicaci´n de las notas: 22/09/2008 o D´ y hora de la revisi´n: 24/09/2008. o a 2.

5 puntos). 5.8571) el resultado ha de ser 1 pues prec = 0. si u = (3. Por ejemplo.2571) la respuesta ha de ser 0 (2.98. 20. y |13/7 − 1. 1.98. Si ponemos como ejemplo el mismo u pero ahora v = (2.06.00004 < prec. Se definir´ en la funci´n u a o una variable prec igual a la mil´sima parte de la suma de los elementos de u. 12.8571| = 0. 7. 13) y v = (2. Se e considerar´ que dos n´meros son iguales si su diferencia en valor absoluto es menor a u que prec.igual a alg´n elemento del vector v y 0 en caso contrario. 1. .

Lenguajes de Programaci´n: Gu´ ECTS o ıa P´g. 116 a .

Ap´ndice B e Gesti´n del CC o P´g. 117 a .

S.T. 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. A la derecha aparecerán 3 accesos directos a 3 carpetas. CENTRO DE CÁLCULO USUARIO DEL DOMINIO CCALCULO ACCESO A LOS ORDENADORES DEL CENTRO DE CÁLCULO E.ETSI NAVALES. A continuación explicamos en que consiste cada carpeta: .I NAVALES Cuando enciendas el ordenador aparecerá una máscara donde introducirás el usuario y la contraseña que se te ha facilitado.

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

Además en la sala de Informática se permite la Navegación de las páginas: ETSI Navales. Centro de Cálculo.ETSI NAVALES. 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. Correo Alumnos. 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 . Aulaweb. UPM.

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

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´ndice C e Control de tiempos y ficha

P´g. 123 a

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:

llevando también el acumulado.5 Fecha: fecha en la que se ha rellenado la fila correspondiente. procediendo al redondeo cuando no sean valores exactos. DHOf: por horas dentro del horario oficial como clases y exámenes. Así. 50min se consignará como 1. y 1h17m se consignará como 1. La unidad mínima serán 0.5 horas. 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 .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´n: Gu´ ECTS o ıa P´g. 126 a .

127 a .Ap´ndice D e Premio SENER P´g.

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

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.55. La puntuación máxima será de 10 puntos.4 y 6. Así. 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.bachillerato 1 . el cual contendrá un suplemento al mismo consistente en un histograma de las notas con la puntuación de los diferentes grupos. 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. ETSIN emitirá un diploma acreditativo. que previamente habrán firmado su autorización para que se facilite dicho dato de su expediente. La evaluación ECTS contempla diferentes ítems a lo largo del curso (ver Guía Docente de la asignatura). (0-10)+(0-10)=-20.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. y la mínima de –20 puntos. 5. Dotación: La dotación será de 1200€ a repartir a partes iguales entre los 2 componentes del grupo.4)+(9. Esta dotación se incrementará cada año aplicando el IPC correspondiente.2)=4. si los estudiantes de un grupo obtuviesen un 7. (105)+(10-5)=10.5 y un 9. en la que se consigue la parte más importante de la nota.2 respectivamente. Ello les permitirá conocer su posición e implicarse más en la parte final del curso. Entrega de premios: La entrega de premios se realizará durante la ceremonia de entrega de diplomas a los nuevos egresados. 4. La información para dicho histograma será facilitada por el profesor responsable de la asignatura. 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. 1 2/4 . 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. El grupo ganador será aquel que mayor puntuación tenga siguiendo este baremo.0-6. 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. se considerará que su nota es la media de entre todos los estudiantes para las que sí lo sea. 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.9 puntos. su puntuación para el premio será de (7.

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 . estarán invitados a esta ceremonia. así como 4 compañeros a elegir por cada uno de ellos y el delegado de su clase durante el curso correspondiente.

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 . . 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.

36 if. 1 contadores. 47 o Y. 54 function. 13 operadores l´gicos. 29 ventana de comandos. 38 sumadores. 132 a . 50. 51 ASCII. 28 Ball.. 53 Taylor.´ Indice alfab´tico e abs. 47 negaci´n. 32 a o carpeta activa. S. 27 Wittgenstein. 40 if-else. 53 else. L. 46 if-end. 28 floor. 42 if-elseif. 41 ficheros ASCII. 47 pi. 42 elseif.. 40 MATLAB c´lculo simb´lico. Brook. 46 end. 1 P´g. 47 o ´ O.

Sign up to vote on this title
UsefulNot useful