Está en la página 1de 4

Examen de Fundamentos de Programación Ingeniero de Telecomunicación

EXAMEN DE FUNDAMENTOS DE PROGRAMACIÓN (1ª PARTE)


INGENIERO DE TELECOMUNICACIÓN
(14 de diciembre de 2002)

SOLUCIÓN

PREGUNTAS DE TEORIA

PREGUNTA 1. Explique en qué consiste la búsqueda binaria en arrays, cuándo es adecuada


y qué beneficio en coste computacional reporta (0.5 puntos).

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 elemento 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)

PREGUNTA 2. Comente cómo se puede distinguir una variable local que se llama igual que
una de instancia. Ponga un ejemplo (0.5 puntos).

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

PREGUNTA 3. ¿Qué es un método de clase estático? Ponga un ejemplo (0.5 puntos).


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.

PREGUNTA 4. Defina y ponga un ejemplo de sobrecarga de métodos (0.5 puntos).

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; }
}
Examen de Fundamentos de Programación Ingeniero de Telecomunicación

EJERCICIO 1. 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 (1 punto).

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

}
}
EJERCICIO 2. Escriba un método que dado una array bidimensional devuelva si es matriz
(1 punto).
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;
}

EJERCICIO 3. Escriba un método que dado un número entero devuelva si es primo


(1 punto).
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;
}
}
EXAMEN
Examen DEdeFUNDAMENTOS
de Fundamentos Programación DE PROGRAMACIÓN (2ª PARTE)
Ingeniero de Telecomunicación

INGENIERO DE TELECOMUNICACIÓN.

(14 de diciembre de 2002)

SOLUCIÓN

PROBLEMA (5 puntos)

1. 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 (1 punto).
2. 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 (1 punto).
3. Implemente en Java un método que a partir de un array de triángulos devuelva el de
mayor superficie (1.5 puntos)
4. Implemente en Java un método que a partir de un array de círculos devuelva el de
mayor diámetro. (1.5 puntos)

1. 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;
}
}

2. public class Círculo {


private float radio;

public Circulo (float r){


radio=r;
}

public float get_radio () { return radio; }


Examen de Fundamentos de Programación Ingeniero de Telecomunicación

public float perimetro () {


return 2.0*Math.PI*radio;
}

public float area () {


return Math.PI*radio*radio;
}
}

3. 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;
}

4. 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;
}

También podría gustarte