Examen de Programación (13294) Convocatoria de Junio 2007

Anuncio
Examen de Programación (13294)
Convocatoria de Junio 2007
Licenciatura de Lingüística y Nuevas Tecnologías
Pregunta 1
Nuestro objetivo es tener un programa que escriba a la pantalla:
Caracter
Caracter
Caracter
Caracter
numero
numero
numero
numero
4:
3:
2:
1:
a
l
o
h
Se utilizan los métodos de instancia length y charAt de la clase String:
● int length(): devuelve el tamaño del objeto de tipo String.
● char charAt(int index): coge como argumento de entrada un índice y devuelve el
carácter que encuentra en esta posición dentro del objeto de tipo String.
a) Tenemos tres versiones P1a, P1b y P1c de este programa, ninguna de ella correcta.
Para cada una de estas tres situaciones, decir a qué programa corresponde:
Ejecución
i) A la compilación, se imprime el siguiente error (donde X es la
letra del programa que corresponde):
P1X.java [15:1] cannot resolve symbol
symbol : method charAt (int)
location: class P1X
char c = charAt(i);
^
1 error
Errors compiling P1X.
ii) A la ejecución, el programa falla después de imprimir algun
resultado a la pantalla:
Caracter numero 4: a
Caracter numero 3: l
Caracter numero 2: o
Caracter numero 1: h
java.lang.StringIndexOutOfBoundsException: String index
out of range: -1
at java.lang.String.charAt(String.java:444)
at P1a.main(P1a.java:15)
Exception in thread "main"
iii) A la ejecución el programa imprime el siguiente resultado a la
pantalla:
Caracter
Caracter
Caracter
Caracter
numero
numero
numero
numero
3:
2:
1:
0:
a
l
o
h
Nombre del programa
b) Explicar (con algun(os) ejemplo(s)) el significado de cada uno de estos tres tipos de
errores:
Error
sintáctico
Error de
ejecución
Error
semántico
Pregunta 2
¿Qué imprime el programa P2?
Pregunta 3
a) Relaciona con flechas los conceptos e ejemplos:
Variable de objeto
Variable de tipo básico
Método de instancia
Método de clase
Constructor
TextIO.getln();
Alumno alumno;
alumno = new alumno();
int index;
alumno.imprimir();
b) Explicar la diferencia entre una variable de objeto e una variable de tipo básico:
c) ¿Qué significa si declaramos un método como private?
Pregunta 4
El programa P4 utiliza el método de instancia matches de String:
(boolean matches(String regex) devuelve true si el objeto de tipo String concuerda
completamente con la expresión regular regex dada en entrada.)
a) ¿Qué imprime P4 al entrar los siguientes valores?
h
ah
aah
ahh
b) Modificar P4 para recoger el valor como argumento de la línea de comandos en vez de
pedirlo al usuario. Si el usuario no entra ningun argumento a la ejecución entonces el
programa debe imprimir un mensaje de error.
public class P4 {
public static void main(String[] args) {
}
}
Pregunta 5
Tenemos el programa P5 y el fichero C:/fichero.txt que contiene una serie de palabras
(cada una en una línea).
a) Decir qué puede pasar al ejecutar el programa.
b) El programa P5 utiliza cinco flujos de entrada. Decir cuales son y para qué se usa cada
uno.
Pregunta 6
Tenemos el programa P6 cuyo proposito es imprimir las palabras que contiene el array.
a) ¿Qué imprime el programa a la ejecución?
b) Hay otra forma de declarar e inicializar un array. Declarar e inicializar el array cadenas
de esta forma (con los mismos valores del programa P6). ¿Qué pasaría al ejecutar P6 así
modificado y por qué?
Pregunta 7
a) Reescribir el programa anterior (P6b) con otro equivalente utilizando un ArrayList.
Proporcionamos los siguientes métodos/constructor:
ArrayList()
add(Object obj)
int size( )
Object get(int index)
Constructor de arrayList
Método de ArrayList. Añade un objeto al final del arrayList.
Método de ArrayList. Devuelve el tamaño actual del ArrayList
Método de ArrayList. Devuelve el objeto dentro del ArrayList a la posición index.
import java.util.*;
public class P7 {
public static void main(String[] args) {
}
}
b) ¿Cual es la diferencia principal entre un array estático e un array dinámico (ArrayList)?
c) Un HashMap es un array asociativo. Explicar cual es su propiedad principal y dar un
ejemplo del tipo de información que se podría almacenar en un HashMap:
Pregunta 8
Decir si es verdad (V) o falso (F):
Un objeto hereda de la clase al que pertenece.
Dentro de una clase, no puede haber definido dos métodos con el mismo nombre.
La API de Java permite a cualquiera acceder a la especificación de los paquetes
(package), clases, métodos, etc, disponibles, pero sin acceder al código en sí.
No se puede heredar de una clase abstracta.
P1:
public class P1a {
public static void main(String[] args) {
String cadena = "hola";
for (int i=cadena.length()-1;i>=0;i--) {
char c = charAt(i);
System.out.println("Caracter numero " + i + ": " + c);
}
}
}
public class P1b {
public static void main(String[] args) {
String cadena = "hola";
for (int i=cadena.length()-1;i>=0;i--) {
char c = cadena.charAt(i);
System.out.println("Caracter numero " + i + ": " + c);
}
}
}
public class P1c {
public static void main(String[] args) {
String cadena = "hola";
for (int i=cadena.length();i>0;i--) {
char c = cadena.charAt(i);
System.out.println("Caracter numero " + i + ": " + c);
}
}
}
P2:
import java.util.*;
public class P2 {
public static void main(String args[]) {
StringTokenizer st = new StringTokenizer("Hello, how are you?"," ");
while (st.hasMoreTokens()) {
String cadena = st.nextToken();
System.out.println(cadena);
}
}
}
P4:
public class P4 {
public static void main(String[] args) {
TextIO.putln("Entra cadena: ");
String cadena = TextIO.getln();
if (cadena.matches(".h"))
TextIO.putln("Uno");
else if (cadena.matches(".h*"))
TextIO.putln("Dos");
else if (cadena.matches(".+h"))
TextIO.putln("Tres");
}
}
P5:
import java.io.*;
public class P5 {
public static void main(String[] args) throws IOException {
System.out.print("Entra cadena: ");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br1 = new BufferedReader(isr);
String cadena = br1.readLine();
br1.close();
FileReader f = new FileReader("C:/fichero.txt");
BufferedReader br2 = new BufferedReader(f);
String line = br2.readLine();
while ((line != null) && (line.equals(cadena) == false)) {
line = br2.readLine();
}
br2.close();
f.close();
}
if (line == null)
System.out.println("NO!");
else
System.out.println("YES!");
}
P6:
public class P6 {
public static void main(String[] args) {
String[] cadenas = new String[4];
cadenas[0] = "aaa";
cadenas[1] = "bbb";
cadenas[2] = "ccc";
for (int i=0;i<cadenas.length;i++) {
System.out.println(cadenas[i]);
}
}
}
Descargar