You are on page 1of 7

Programacin, Curso 2015-2016

Problema 5: Practicar recorridos y bsquedas en arrays y ArrayList


Datos personales
Apellidos: Morago Lpez-Vzquez
Nombre:
.1

Pedro

Convertir pseudocdigo a cdigo

Objetivos:
Practicar el paso de pseudocdigo a cdigo para calcular una regresin logartmica a partir de dos
arrays de datos reales.
Descripcin:
Escribir en Java el siguiente algoritmo descrito en pseudocdigo, que calcula los datos de una
regresin logartmica a partir de dos arrays de puntos, x[] e y[], del mismo tamao. El mtodo
calcula los coeficientes a y b de la siguiente curva con la que se intenta ajustar el conjunto de
puntos x-y:
= ln() +
Donde ln(x) es el logaritmo neperiano de x. Los datos calculados se almacenarn en los atributos
reales a y b, pertenecientes a la misma clase que el mtodo. Si x e y tienen distinto tamao se
indicar el error poniendo a y b a valor NaN (Not a Number).
mtodo regresionLogaritmica (array de reales x, array de reales y)
si x e y tienen distinto tamao entonces
a=NaN
b=NaN
si no
real sumX=0, sumY=0, sumLnX=0, sumLn2X=0, sumLnXY=0, sumY2=0
entero n= longitud de x
para i desde 0 hasta n -1
sumX= sumX+x[i]
sumY= sumY+y[i]
sumLnX= sumLnX+ln(x[i])
sumLn2X= sumLn2X+ln2(x[i])
sumLnXY= sumLnXY+ln(x[i])*y[i]
sumY2= sumY2+(y[i])2
fin para
a=(sumLnXY sumY*sumLnX/n)/(sumLn2X sumLnX*sumLnX/n)
b=sumY/n a*sumLnX/n
fin si
fin mtodo

La regresin logartmica es una tcnica que permite obtener los coeficientes de la curva logartmica
= ln() + que ms se aproximan a la funcin y=f(x), definindose esta funcin como un
conjunto de parejas (x,y). Fuente: https://es.wikipedia.org/wiki/Regresi%C3%B3n_no_lineal
Respuesta que se pide
26/04/16

Programacin, Curso 2015-2016


/**
* Ejercicio 1 del problema 5
* @author (Pedro Morago Lpez-Vzquez)
* @version (1.0)
*/
public class RegresionLogaritmica
{
private double a;
private double b;
/**
* Mtodo que calcula los coecifientes de una regresin logartima
* @param x,array de puntos
* @param y,,array de puntos
*/
public RegresionLogaritmica(double[] x,double[] y){
if(x.length>y.length || x.length<y.length){
a=Double.NaN;
b=Double.NaN;
}else{
double sumX=0;
double sumY=0;
double sumLnX=0;
double sumLn2X=0;
double sumLnXY=0;
double sumY2=0;
int n=x.length;
for(int i=0;i<=x.length-1;i++){
sumX=sumX+x[i];
sumY=sumY+y[i];
sumLnX=sumLnX+Math.log(x[i]);
sumLn2X=sumLn2X+(Math.log(x[i])*Math.log(x[i]));
sumLnXY=sumLnXY+Math.log(x[i])*y[i];
sumY2=sumY2+(y[i]*y[i]);

26/04/16

Programacin, Curso 2015-2016


}
a=(sumLnXY-sumY*sumLnX/n)/(sumLn2X-sumLnX*sumLnX/n);
b=sumY/n-a*sumLnX/n;
}
}
}

.2

Bsqueda en un array

Objetivos
Practicar la bsqueda en un array y describirla mediante pseudocdigo y cdigo.
Descripcin
Se dispone de una clase llamada Asignatura y que implementa el siguiente diagrama de clases
Asignatura
-String nombre
-String codigo
-int numAlumnos
+Asignatura (String nombre, String codigo,
int numAlumnos)
+String getNombre()
+String getCodigo()
+int getNumAlumnos()

Como se puede ver es una clase trivial, con un constructor al que se le pasan los valores iniciales de
los atributos, y tres mtodos observadores, uno por cada atributo.
Se desea escribir un mtodo esttico al que se le pasan como parmetros un array de objetos de la
clase Asignatura y un codigo. El mtodo debe retornar el nombre de la asignatura del array cuyo
codigo coincida con el indicado en el parmetro, o null si no se encuentra.
Respuesta que se pide
a) El pseudocdigo del mtodo
metodo buscaAsignaturaPorCodigo(Array x de Asignatur,String codigo) retorna String
para i desde 0 hasta ltimo ndice de x
si codigo es igual a un codigo de x
retorna nombre adjunto a dicho codigo
fin si
fin para
retorna null
fin del mtodo
26/04/16

Programacin, Curso 2015-2016


b)Cdigo del mtodo
/**
* Ejercicio 2 del problema 5
*
* @author (Pedro Morago Lpez-Vzquez)
* @version (1.0)
*/
public class Ejercicio2
{
/**
* Mtodo que devuelve el nombre de la asignatura del array cuyo codigo
* coincida con el indicado en el parmetro
* @param x contiene el nombre,codigo y numero de alumnos de las asignaturas
* @param codigo es el codigo de una asignatura
* @return nombre de la asignatura que tiene el codigo del parmetro
*/
public static String buscaAsignaturaPorCodigo(Asignatura x[],String codigo){
for(int i=0;i<x.length;i++){
if(x[i].getCodigo().equals(codigo)){
return x[i].getNombre();//retorna el nombre de la primera asignatura que cumpla la
condicin
}
}
return null;//retorna null si ninguna asignatura lleva dicho codigo
}
}

.3

Bsqueda en un ArrayList

Objetivos
Hacer la misma bsqueda anterior en un ArrayList.
Descripcin
Se desea escribir un mtodo esttico al que se le pasan como parmetros un ArrayList de objetos de
la clase Asignatura de la cuestin anterior y un codigo. El mtodo debe retornar el nombre de la
asignatura de la lista cuyo codigo coincida con el indicado en el parmetro, o null si no se
encuentra.

26/04/16

Programacin, Curso 2015-2016


Respuesta que se pide
import java.util.ArrayList;
/**
* Ejercicio 3 del problema 5
* @author (Pedro Morago Lpez-Vzquez)
* @version (1.0)
*/
public class Ejercicio3
{
/**
* Mtodo que devuelve el nombre de la asignatura del elemento del ArrayList cuyo codigo
* coincida con el indicado en el parmetro
* @param x contiene el nombre,codigo y numero de alumnos ,de las diferentes asignaturas
* @param codigo es el codigo de una asignatura
* @return nombre de la asignatura que coincide su codigo con el codigo del parmetro
*/
public static String buscaAsignaturaPorCodigo( ArrayList<Asignatura> x,String codigo){
for(int i=0;i<x.size();i++){
if(x.get(i).getCodigo().equals(codigo)){
return x.get(i).getNombre();//retorna el nombre de la primera asignatura que cumpla la
condicin
}
}
return null;//retorna null si ninguna asignatura lleva dicho codigo
}
}

.4

Desviacin estndar

Objetivos
Calcular la desviacin estndar de una serie de medidas
Descripcin
Se desea escribir un mtodo esttico al que se le pasa como parmetro un array de n nmeros reales
y que calcula y retorna la desviacin estndar obtenida con la expresin:
=1

( )2
1

donde:
26/04/16

Programacin, Curso 2015-2016


=1

Nota: Observar que en las frmulas los valores se numeran de 1 a n, mientras que en el array van de
0 a n-1
=

Respuesta que se pide


El cdigo Java del mtodo
/**
* Ejercicio 4 del problema 5
*
* @author (Pedro Morago Lpez-Vzquez)
* @version (1.0)
*/
public class Ejercicio4
{
/**
* Mtodo que calcula la desvacin estandar de una serie de medidas
* @param medida

medidas

* @return desviacionestandar

La desviacion estandar de las medidas

*/
public static double desviacionEstandar(double[] medida){
double sumatorioxi=0.0;
double sumatoriocuadrado=0.0;
double media;
double desviacionestandar;
for(int i=0;i<=medida.length-1;i++){
sumatorioxi=sumatorioxi+medida[i];
}
media=(sumatorioxi/(medida.length));//Calcula la media de las medidas
for(int i=0;i<=medida.length-1;i++){
sumatoriocuadrado=sumatoriocuadrado+((medida[i]-media)*(medida[i]-media));//Calcula el
numerador de la formula de la desviacion estandar
}
desviacionestandar=sumatoriocuadrado/(medida.length-1);//Calcula la desviacin estandar

26/04/16

Programacin, Curso 2015-2016


return desviacionestandar;
}
}

26/04/16

You might also like