Ejercicios tema 3

Anuncio
Metodología y Tecnología de la Programación
ESI-UCLM
Tema 3. Estructuras de control y programación estructurada
1. ¿Cuál es el resultado de este programa?
class Ejemplo {
public static void main(String [] args) {
int i=3;
int j=4;
boolean etiqueta=false;
//Ejemplo de y lógico
if (i==3 && j==4) {
System.out.println ("La condicion se cumple");
}
else {
System.out.println ("La condicion no se cumple");
}
//Ejemplo de o lógico
if (i==1 || j==4) {
System.out.println ("La condicion se cumple");
}
else {
System.out.println ("La condicion no se cumple");
}
//Ejempo de no lógico
if (!etiqueta) {
System.out.println ("La condicion se cumple");
}
else {
System.out.println ("La condicion no se cumple");
}
}//fin main
}//fin clase Ejemplo
2. ¿Cuál es el error de este programa? ¿Cómo se podría subsanar?
class Ejemplo {
public static void main(String [] args) {
char c='c';
if (c=='c' || 'd') {
System.out.println ("Estoy en el if");
}
else {
System.out.println ("Estoy en el else ");
}
}//fin main
}//fin clase Ejemplo
3. Suponga que r1 y r2 son dos números reales. Escriba el código necesario para determinar si
son iguales suponiendo que la precisión de la representación numérica es p.
Ejercicios tema 3
Página: 1
Metodología y Tecnología de la Programación
ESI-UCLM
4. ¿Qué imprimiría el siguiente programa?
class Alcance{
public static void main(String [] args){
int numero=100;
if (numero<103){
int dentroAmbito=3;
System.out.println("*Dentro del bloque");
System.out.print("dentroambito= "+dentroAmbito+
" numero= "+numero);
} // Cierra el bloque del if
//System.out.println("Fuera del bloque "+dentroAmbito);
System.out.println("\n\n*Fuera del bloque\n"+
"Solo existe numero "+numero);
} // Cierra el bloque del main
} // Cierra la clase
5. Una línea de autobuses cobra un mínimo de 20 euros por persona y trayecto. Si el trayecto es
mayor de 200 km el billete tiene un recargo de 3 céntimos por km adicional. Sin embargo, para
trayectos de más de 400 km el billete tiene un descuento del 15 %. Por otro lado, para grupos de 3
o más personas el billete tiene un descuento del 10 %. Con las consideraciones anteriores, escriba
en Java un programa estructurado que lea por teclado la distancia del viaje a realizar, así como el
número de personas que viajan juntas. Con ello se debe calcular tanto el precio del billete
individual como el total a pagar si viaja más de una persona.
6. )Cuál es el resultado del siguiente programa?
class Ejercicio {
public static void main(String [] args) {
char a='g';
switch (a) {
case 'g':
a++;
default:
if (a<'g')
a--;
else
a='m';
}
System.out.println(a);
}//fin main
}//fin clase
7. Calcular el sumatorio
ji
N
i' 1
Siendo N un entero que se introduce por teclado. Implemente 3 programas usando cada uno de los
tipos de bucles que conoce.
8. Calcular el productorio
ki
N
i '1
Siendo N un número entero que se introduce por teclado. Implemente un programa usando un
blucle for.
Ejercicios tema 3
Página: 2
Metodología y Tecnología de la Programación
ESI-UCLM
9. El siguiente fragmento de programa pretende sumar los enteros de 1 a n (ambos inclusive)
almacenando el resultado en la variable sum. )Es correcto el programa? Si no lo es, indique por
qué y qué habría que hacer para solucionarlo.
i=0;
sum=0;
while (i<=n) {
i=i+1;
sum=sum+i;
}
10. ¿Qué hace este programa?
import java.util.Scanner;
class Ejemplo {
public static void main (String [ ] args) {
char caracter;
Scanner lectura=new Scanner(System.in);
System.out.print("Introduzca a o b\n");
caracter = (lectura.next()).charAt(0);
while (caracter!='a' || caracter!='b') {
System.out.print("Opcion erronea, pruebe de nuevo\n");
caracter=(lectura.next()).charAt(0);
}//del while
}//del main
}//fin clase
a) Entra en el while cuando lee una letra que no sea 'a' o 'b';
b) No entra en el while cuando lee la letra 'a' ;
c) Siempre entra en el bucle while;
d) No entra en el while cuando lee la letra ‘b’
11. ¿Cuál es el resultado de este programa? ¿Y si la variable a fuera par?
class Ejercicio{
public static void main (String [] args) {
int a=3;
int n=10;
int cont=0;
for (int var=0; var<n;var++) {
if ((a%2==0) || (var%2) ==0) {
cont++;
}
}
System.out.println(cont);
}
}
12. ¿Qué imprime el siguiente programa?
class Ejercicio{
public static void main (String [] args) {
int var=1;
int m=1;
boolean x=true;
do{
if (!x){
var=2;
}
do {
m++;
} while(m<3);
x=false;
}while(var!= 2 );
System.out.println(m);
}
}
Ejercicios tema 3
Página: 3
Metodología y Tecnología de la Programación
ESI-UCLM
13. Para una disolución de un ácido débil, HA, cuya constante de disociación sea Ka , el pH
viene dado por la expresión (aproximada):
pH • (1/2) ( pK a &log [ HA] )
donde pKa es el menos logaritmo decimal de Ka, log representa el logaritmo decimal y [HA] es
la concentración molar (moles/litro) del ácido.
Escriba un programa en Java que acepte la constante de acidez de un ácido débil y luego
pregunte por la concentración de la disolución, evaluando el pH. El programa debe solicitar un
valor de concentración tras cada cálculo hasta que el usuario indique que no desea calcular el pH
de ninguna nueva disolución.
14. Diseñe y codifique un programa estructurado en Java que calcule el factorial de un número
entero positivo cualquiera (incluido cero). El programa debe solicitar un entero para calcular el
factorial, identificar el caso de un entero negativo y, en ese caso, solicitar un nuevo valor hasta
que se introduzca un entero no negativo. Tras calcular el factorial el programa debe preguntar si
se desea introducir un nuevo entero. Si es así, el programa debe solicitar un valor entero en las
mismas condiciones que anteriormente. El proceso se repetirá hasta que el usuario indique que no
desea seguir calculando factoriales.
15. Usando bucles como únicas estructuras de control y una única sentencia de impresión para el
carácter o, escriba un programa en Java que imprima la siguiente salida:
ooooo
ooo
o
16. Reestructure el siguiente fragmento de código para evitar el uso de saltos incondicionales.
while (i < n) {
j=Integer.parseInt(leer.readLine());
if (j==-1) break;
i++;
}
17. Haga un programa que dados dos números introducidos por teclado indique si son amigos o
no. El programa debe ofrecer la posibilidad de continuar. Nota: Dos números amigos son dos
enteros positivos (n1, n2) tales que la suma de los divisores propios de uno de ellos es igual al
otro (la unidad se considera divisor propio, pero no lo es el mismo número).
Por ejemplo, 220 y 284 son amigos, ya que:
Suma de divisores de 284: 1 + 2 + 4 + 71 + 142 = 220
Suma de divisores de 220: 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284.
También son números amigos 17296 y 18416
18. Dado el siguiente programa:
class Ejercicio{
public static void main (String [] args) {
double x,y;
x=15.0;
y=10.0;
int var1 =(int) ((x/4)+1);
int var2 = (int) (y/4);
while (var1 > 0) {
var1 = var1-1;
var2 = var2 * var1;
System.out.print(var2 + " ");
}
} //fin main
}//fin clase Ejercicio
a) Indicar qué imprimiría; b) Escribir un bucle for que produzca el mismo resultado.
Ejercicios tema 3
Página: 4
Metodología y Tecnología de la Programación
ESI-UCLM
19. Complete el siguiente programa para que la salida sea suma=5
class Ejemplo {
public static void main (String[] args) {
int suma;
.....................
for (int j=1;j<=5;j=j+3) {
suma=suma+j;
}
System.out.print ("suma="+suma);
}
}
20. Dada la siguiente secuencia de sentencias if-else transfórmela en una secuencia
equivalente usando una única sentencia switch
if (opcion==’u’)
x=x+1;
else
if (opcion==’d’)
x=x+2;
else
if (opcion==’t’)
x=x+3;
else
x=x+4;
Ejercicios tema 3
Página: 5
Descargar