Ejercicios Prácticos - UPM
Transcript of Ejercicios Prácticos - UPM
Ejercicios Prácticos
Fundamentos de Programación 2008-2009 Grupo 15
Samuel Martín ([email protected] )
DIT-UPM
FPRG - Práctica 1 208/10/2009
Motivación� A programar se aprende mediante la experiencia.� La calificación corresponde en un 25% a la calificación
de clase.� Más info en
http://www.lab.dit.upm.es/~fprg/curso/evaluacion.htm
� Ejercicios en clase:� Ejercicios previos (NO se entregan) a los ejercicios entregables� Explicaciones de los ejercicios entregables� Resolución de otros ejercicios
� Ejercicios prácticos entregables (obligatorios).� Impartición de prácticas: Samuel Martín
� Dudas: consultar por e-mail ( [email protected] )
� El profesor del grupo 15 es José A. Mañas, quien tiene la última decisión sobre cualquier aspecto relacionado con la asignatura.
FPRG - Práctica 1 308/10/2009
Ejercicios Prácticos� En torno a 6 ejercicios prácticos que el alumno deberá
entregar resueltos.� Publicación en la página web de ejercicios:
www.dit.upm.es/~samuelm/docencia/fprg/
� Entrega por e-mail: [email protected]� Nota en función de:
� Documentación (máximo 50% de la nota)� Otros deben usar el programa y entender qué hace
� Otros deben mantener (adaptar) el programa y entender cómo funciona
� El profesor debe evaluarlo y entenderlo (como en un examen)
� Funcionalidad:� Que el programa haga lo que debe de hacer correctamente
� Fórmula exacta: nota = funcionalidad * (5 + documentación/2) / 10
� Fecha de entrega (varios plazos sucesivos)� Puntuación de cada apartado
FPRG - Práctica 1 408/10/2009
Entorno de desarrollo BlueJ
Ejercicio Práctico 1:
Ejemplos Previos
Fundamentos de Programación 2008-2009 Grupo 15
Samuel Martín ([email protected] )
DIT-UPM
FPRG - Práctica 1 608/10/2009
Ejemplo 1
� Cree una clase Punto que permita representan puntos en un plano, dados por sus coordenadas cartesianas. La clase deberá incluir:
� Sendos campos privados de tipo double para identificar la abscisa (x) y la ordenada (y) del punto.
� Métodos accesores (getters) para obtener el valor de la abscisa y la ordenada.
FPRG - Práctica 1 708/10/2009
Ejemplo 1
� Un método desplaza que recibe como parámetros el incremento de x y el incremento de y, modificando la posición el punto según el valor dado por los parámetros del método.
� Un método distanciaque recibe como parámetro otro punto y devuelve la distancia entre ambos, a partir de sus respectivas coordenadas.
FPRG - Práctica 1 808/10/2009
Ejemplo 2
� Un círculo es una de las posibles figuras que pueden existir en el plano.� Cree una clase Circulo que
permita representan círculos en un plano. Un círculo viene caracterizado por la posición de su centro (un Punto) y su radio (v. fig. 2a). Incluya los constructores necesarios y métodos accesores (getters) para obtener el centro y el valor del radio.
FPRG - Práctica 1 908/10/2009
Ejemplo 2
� Cree asimismo un método desplaza análogo al que creó para la clase Punto,
para desplazar un círculo en el plano según un vector dado. Tenga en cuenta que desplazar un círculo implica desplazar su centro y mantener su radio.
FPRG - Práctica 1 1008/10/2009
Ejemplo 2
� Cree un método escala que modifique el tamaño del círculo según un factor de escala k que se pasa como parámetro al método. Tenga en cuenta que al escalar un círculo, se modifica su radio pero se mantiene su centro.
FPRG - Práctica 1 1108/10/2009
Ejemplo 3
� Un triángulo es un polígono de tres lados, que queda determinado a partir de las posiciones de los tres puntos que constituyen sus vértices. Se pide crear una clase Triangulo para representar triángulos en el plano, reutilizando la clase Punto creada en el ejercicio anterior.
Para ello, se tendrá en cuenta que un triángulo se puede definir a partir de los tres puntos que determinan sus tres vértices (que llamaremos vA, vBy vC). La clase deberá contar con los constructores necesarios y con métodos accesores (getters) para obtener cada uno de los vértices.
FPRG - Práctica 1 1208/10/2009
Ejemplo 4
� Modifique la clase Triangulo realizada en el ejercicio anterior, e incluya:� métodos que permitan
conocer las longitudes de los lados de un triángulo (longitud_a, longitud_b, y longitud_c)
� un método que permita conocer el perímetro de un triángulo, reutilizando los métodos de las longitudes.
FPRG - Práctica 1 1308/10/2009
Ejemplo 4
� un método que permita conocer la superficie de un triángulo. Utilice para ello la Fórmula de Herón
(donde p representa el perímetro):
−⋅
−⋅
−⋅= cba l
pl
pl
ppS
2222
FPRG - Práctica 1 1408/10/2009
Ejemplo 5
� Se facilita para este ejercicio una clase SistemaCoordenado, que crea una ventana con unos ejes coordenados y permite dibujar distintos elementos gráficos en ella. � Añada a la clase Circulo un método public void pinta(SistemaCoordenado sc)
que pinte un círculo en un SistemaCoordenado dado.
� Haga lo mismo con la clase Triangulo.
� Haga lo mismo con la clase Punto. Para representar un punto, puede utilizar una cruz, formada por un pequeño segmento vertical y otro horizontal, o un aspa formada por dos segmentos diagonales.
FPRG - Práctica 1 1508/10/2009
Ejemplo 6
� Añada a la clase Triangulo los
siguientes métodos:
� un método que permita conocer el punto en el que se encuentra el baricentro del triángulo, cuyas coordenadas vienen dadas por la siguiente fórmula:
3
CBA VVVG
++=
FPRG - Práctica 1 1608/10/2009
Ejemplo 6
� un método que permita mover un
triángulo según un
vector de desplazamiento dado
(∆x, ∆y). Mover un triángulo implica
mover las posiciones de sus vértices.
FPRG - Práctica 1 1708/10/2009
Ejemplo 6
� un método que permita escalar un triángulo según un factor de escala k dado. Al escalar un triángulo, se crea un nuevo triángulo que mantiene el mismo baricentro que el triángulo original, pero con los vértices colocados de manera que la distancia al baricentro se multiplica por el factor de escala. El resultado es que las nuevas coordenadas de posición de cada vértice Vivienen dadas por
( ) GGVkV ii +−⋅=
FPRG - Práctica 1 1808/10/2009
Ejemplo 7
� Modifique la clase Triangulo e incluya un método que cree y devuelva el círculo inscrito a un triángulo. Para ello, puede utilizar las siguientes fórmulas para las coordenadas del incentro (I) y el radio del círculo inscrito (ri), donde la, lby lc representan las longitudes de los lados, p el perímetro y Sla superficie. Utilice los métodos creados en el apartado 4 cuando sea necesario.
S
lllrV
p
lV
p
lV
p
lI cba
ic
c
B
b
A
a
⋅
⋅⋅=⋅+⋅+⋅=
4;
FPRG - Práctica 1 1908/10/2009
Ejemplo 8
� Modifique la clase Triangulo e incluya un método que cree y devuelva el círculo circunscrito a un triángulo. Para ello, puede utilizar las siguientes fórmulas para las coordenadas del circuncentro (CC) y el radio del círculo circunscrito (rc), donde las coordenadas del vértice VA vienen representadas por (Ax, Ay), el perímetro por p y la superficie por S. Utilice los métodos creados en el apartado 4 cuando sea necesario.
FPRG - Práctica 1 2008/10/2009
Ejemplo 8
( )xyxyxyxyxyxy
yyyyyxyxyyyxyyyxyyyyxyxy
xBCACBACBABCA
CACBABBCBCACBACBACABACABCC
+−−−+⋅
−+−−−++++−−=
2
222222222222
( )xyxyxyxyxyxy
xyxyxxxxxyxxxyxyxxxxxyxx
yBCACBACBABCA
BCACBCACBABACBABCBABCACACC
+−−−+⋅
+−+−−−−+−++=
2
222222222222
p
Src
2=
FPRG - Práctica 1 2108/10/2009
Ejemplo 9
� Añada un método Java public void pintaTodo() a
la clase Triangulo, que
pinte el triángulo, sus vértices, su baricentro,
sus círculos inscrito y circunscrito en un
SistemaCoordenadodado.
FPRG - Práctica 1 2208/10/2009
Ejercicio práctico: enunciado
� Disponible en la web desde después de clase www.dit.upm.es/~samuelm/docencia/fprg/
� Realizar operaciones semejantes a los ejercicios previos, ahora con cuadriláteros:� Constructor, getters.� Lados, perímetro, área.� Pintar en sistema coordenado.� Círculo inscrito y circunscrito: si existen.� Clase PruebaCuadrilatero: probador que presenta un
cuadrilátero por consola y por ventana.
� Entrega: 19/10 sobre 10 puntos, 22/10 sobre 8 puntos y 25/10 sobre 5 puntos.