martes, 9 de junio de 2015

Exámenes fundamentos de programación

1.- ¿Explique en qué consiste la búsqueda binaria en arrays, cuándo es adecuada y qué beneficio en coste computacional reporta?: consiste en comparar la clave con el elemento situado en la mitad del array (elemento medio). Si es igual la búsqueda ha terminado. Si la clave es menor que el elemento medio, se busca en la primera mitad del array, si no en la segunda mitad, repitiendo sucesivamente el mismo procedimiento. La búsqueda continua hasta que la clave sea igual al emento medio del subarray que queda o hasta que el subarray que queda conste de un solo elemento distinto de la clave de búsqueda. Sirve para buscar una clave en arrays ordenados. El algoritmo de búsqueda binaria elimina de la búsqueda la mitad de los elementos que quedan en el array después de cada comparación. Es un algoritmo muy eficiente. El número máximo de comparaciones es el exponente de la primera potencia de 2 mayor que el número de elementos del arreglo. Orden de complejidad: O(log2 n)

2.- ¿Comente cómo se puede distinguir una variable local que se llama igual que
una de instancia?. Ponga un ejemplo: la palabra reservada this permite a un objeto disponer de una referencia a sí mismo. Esto es útil para poder distinguir variables de instancia que tienen el mismo identificador que las variables locales a un método (aunque siempre podrá evitarse).
public class prueba{
private String s;
public void m1(){
String s; // se llama igual a la variable de instancia.
System.out.println(s); // esta es la local.
System.out.println(this.s); // esta es la de instancia.
} }

3.- ¿Qué es un método de clase estático? Ponga un ejemplo.
Necesarios cuando se quiere usar un método sin necesidad de crear un objeto. En Java es posible que sea la clase la que sirva un método. Estos métodos se declaran usando el modificador static. Un método estático sólo puede acceder a
propiedades estáticas del objeto. Por ejemplo todos los métodos de la clase Math.

4.- ¿Defina y ponga un ejemplo de sobrecarga de métodos?: java permite definir métodos (sobrecargados) con el mismo nombre siempre que difieran en los argumentos de entrada. Un método sobrecargado se distingue del resto por la firma del método: nombre + argumentos de entrada.
public class utilidadesMatematicas
{ // declaraciones y parte del cuerpo del método.
int square(int x)
{ return x*x; }
double square(double x)
{ return x*x; }
}

5.- Implemente una clase que declare e inicialice un array e implemente un método que realice una búsqueda binaria de una clave en dicho array:
Class Búsqueda_Binaria {
int a[ ] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22}
public int binaria ( int clave) {
int bajo = 0;
int alto = a.length –1;
int medio;
while ( bajo < = alto ) {
medio = (bajo + alto) / 2;
if ( clave == a[ medio ] ) then // se encontró
return medio;
else if (clave < a[ medio ] )
alto = medio –1;
else
bajo = medio + 1;
}
return –1; // no se encontró la clave
}
}

6.- Escriba un método que dado una array bidimensional devuelva si es matriz.
public boolean es_matriz(int [ ][ ] m ) {
int lonFila = m[0].lenght;
for ( int i = 1; i < m.length; i++)
if (m[i].length != lonFila) return false;
return true;
}

7.- Escriba un método que dado un número entero devuelva si es primo.
public boolean primo(int n) {
int d;
if (n == 1) return true;
else {
d=2;
while (n%d != 0 )d=d+1;
if (d==n) return true;
else return false;
}
}

8.- Implemente en Java una clase para trabajar con triángulos isósceles. Para ello, defina las variables de estado mínimas que requiera, proporcione métodos de consulta, un método constructor e implemente otros métodos para calcular el perímetro y el área de un triángulo:
public class Triangulo {
private float base, altura;
public Triangulo (float b; float a){
base=b;
altura=a;
}
public float get_base () { return base; }
public float get_altura () { return altura;}
public float perimetro () {
return base+2.0*math.sqrt(altura*altura+(base*base/4.0);
}
public float area () {
return base*altura/2.0;
}
}

9.- Implemente en Java una clase para trabajar con círculos. Para ello, defina las
variables de estado mínimas que requiera, proporcione métodos de consulta, un
método constructor e implemente otros métodos para calcular el perímetro y el área de un círculo:
public class Círculo {
private float radio;
public Circulo (float r){
radio=r;
}
public float get_radio () { return radio; }
public float perimetro () {
return 2.0*Math.PI*radio;
}
public float area () {
return Math.PI*radio*radio;
}
}

10.- Implemente en Java un método que a partir de un array de triángulos devuelva el de mayor superficie:
public Triangulo mayorSuperficie (Triangulo [ ] t) {
Triangulo mayor=t[0];
for (int i=1; i < t.length; i++)
if (t[i].area() > mayor.area())
mayor=t[i];
return mayor;
}

11.- Implemente en Java un método que a partir de un array de círculos devuelva el de mayor diámetro:
public Circulo mayorDiametro (Circulo [ ] t) {
Circulo mayor=t[0];
for (int i=1; i < t.length; i++)
if (t[i].get_radio() > mayor.getRadio())
mayor=t[i];
return mayor;
}

No hay comentarios.:

Publicar un comentario