Taller de Programación Orientada a Objetos
Estructuras de Control
Guía de Ejercicios v9.6
1. La ejecución del siguiente programa, donde a y b son variables
enteras:
public class Ejercicio {
public static void main(String[] args) {
int a = 3, b = 6;
if (!(b % 2==0) || (a<5) && (b+7<=8))
System.out.println("A");
else
System.out.println("A");
}
}
a) Escribe A. b) Escribe B. c) No escribe nada. d) Origina un error durante
ejecución.
la
2. La ejecución del siguiente programa, donde n es una variable entera:
import javax.swing.JOptionPane;
public class Ejercicio {
public static void main(String[] args) {
int n;
String entradaString;
do
{
entradaString=JOptionPane.showInputDialog("Ingrese N");
n=Integer.parseInt(entradaString);
}while (n < 1 || n > 10);
if (n < 3 && n > 8)
JOptionPane.showMessageDialog(null, "1");
else
JOptionPane.showMessageDialog(null, "0");
}
a)
b)
c)
d)
}
Escribe
Escribe
Escribe
Nada de
“1” para valores de n en el subrango 3..8.
“0” únicamente para los siguientes valores de n: 1, 2, 9, 10.
“0” para cualquier valor de n comprendido en el subrango 1..10.
lo anterior es cierto.
Estructuras de Control
Página 1
3,
El siguiente programa emplea las variables enteras acum y cont:
public class Ejercicio {
}
public static void main(String[] args) {
int acum = 0;
for(int cont = 1; cont <= 10; cont++)
if (cont >= 5)
if (acum - cont < 0)
acum = acum + cont / 2;
else
acum = acum - cont / 3;
System.out.print(acum);
}
Indica el valor de la variable acum tras la ejecución del mismo:
a)
0
b)
10
c) 7
d) -3
4. Dadas las siguientes sentencias de repetición y donde s, i y n son variables
de tipo entero, señalar aquellas sentencias cuyo resultado sea la suma de los
números pares comprendidos entre 1 y n:
s = 0;
for(i = 1; i <= n / 2; i++)
s = s + i * 2;
s = 0; i = 1;
do
{
if (i % 2 == 0)
s = s + i;
i = i + 1;
} while(i != n);
s = 0;
i = 2;
while (i <= n)
{
s = s + i;
i = i + 2;
}
5. Dado el siguiente fragmento de programa, donde n, i, j son variables de tipo
int:
int j = 0, i = 5;
while (i >= 0)
{
i = i-1;
n = j / i;
System.out.println(n);
}
¿Qué sucede al ejecutar este código?
6, Si las variables reales m y n contienen los datos 11 y 5 respectivamente, las
sentencias:
float m=11F,n=5F;
switch (m / n)
Estructuras de Control
Página 2
{
case 1:
System.out.println("Uno");
break;
case 2:
System.out.println("Dos");
break;
default:
System.out.println("Ni uno ni dos");
}
a) Dan un error de ejecución.
c) Se Visualiza la cadena “Dos”.
b) Dan un error de compilación.
d) Nada de lo anterior es correcto.
7. Dado el siguiente bloque de código, reescribelo primero utilizando el bucle
do...while y después utilizando el bucle while, de manera que ambos funcionen
exactamente igual que el original para cualquier caso.
entradaString=JOptionPane.showInputDialog("Ingrese N");
n=Integer.parseInt(entradaString);
for(i = 1; i < n; i++)
System.out.println(i);
8. Dado el siguiente bloque de código, reescribelo primero utilizando el bucle
while y después utilizando el bucle for, de manera que ambos funcionen exactamente
igual que el original para cualquier caso.
int i = 0;
entradaString=JOptionPane.showInputDialog("Ingrese N");
n=Integer.parseInt(entradaString);
do
{
i = i + 1;
System.out.println(i);
} while (i <= n);
9, ¿Cuál es el resultado de este programa?
//import javax.swing.JOptionPane;
class Ejercicio {
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
}
else {
System.out.println ("La condicion
}
//Ejemplo de o lógico
if (i==1 || j==4) {
System.out.println ("La condicion
}
else {
System.out.println ("La condicion
Estructuras de Control
se cumple");
no se cumple");
se cumple");
no se cumple");
Página 3
}
}
//Ejempo de no lógico
if (!etiqueta) {
System.out.println ("La condicion se cumple");
}
else {
System.out.println ("La condicion no se cumple");
}
}
10, ¿Cuál es el error de este programa? ¿Cómo se podría subsanar?
class Ejercicio {
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 ");
}
}
}
11, ¿Qué imprimiría el siguiente programa?
class Ejercicio{
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
12, Una línea de autobuses cobra un mínimo de 1,6 Bs 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.
Estructuras de Control
Página 4
13, 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
14, Calcular la sumatoria
n
1
∑  2∗x+1

x= 1
Siendo N un entero que se introduce por teclado. Implemente 3 programas usando
cada uno de los tipos de bucles que conoce.
15, 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;
}
16, ¿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);
}
}
Estructuras de Control
Página 5
17. ¿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);
}
}
18, 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.
19, 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
20, 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 de main
}//fin de clase Ejercicio
Estructuras de Control
Página 6
a) Indicar
resultado.
qué
imprimiría;
b)
Escribir
un
bucle
for
que
21, Dada la siguiente secuencia de sentencias if-else
secuencia equivalente usando una única sentencia switch
produzca
transfórmela
el
mismo
en
una
if (opcion==’u’)
x=x+1;
else
if (opcion==’d’)
x=x+2;
else
if (opcion==’t’)
x=x+3;
else
x=x+4;
22, En una tienda donde PP acostumbra ir a comprar se realizan descuentos a los
clientes dependiendo del monto de la compra. El descuento se efectúa con base en
el siguiente criterio:
•
•
•
•
•
Si
Si
Si
Si
Si
el
el
el
el
el
monto
monto
monto
monto
monto
es menor que $5000, no
está comprendido entre
está comprendido entre
está comprendido entre
es mayor a $15000, 25%
hay descuento.
$500 y $1000 inclusive, 5% de descuento.
$1000 y $7000 inclusive, 11% de descuento.
$7000 y $15000 inclusive, 18% de descuento.
de descuento.
Considere validar los valores ingresados
23, Desde hace mucho tiempo se ha tratado de caracterizar y encontrar propiedades
especiales a los números. Tanto es así que se ha bautizado con nombres especiales
a familias de números que cumplen ciertas características. Con el advenimiento de
los computadores se ha facilitado el determinar qué números integran estas
familias, cosa que se hacía tiempo atrás, pero con un esfuerzo importante. En esta
guía se plantean varios problemas que tienen que ver con esto y se espera que Ud.
pueda hacer programas que faciliten encontrar algunas familias de números.
a. Se dice que un número es perfecto si la suma de los divisores del número es
igual al número.Escriba un programa que determine si un número ingresado como
entrada a un programa es perfecto o no. Por ejemplo: 6 y 28 son números perfectos.
b. Escriba otro programa que despliegue los números perfectos que existen en un
rango de 1 a n, donde n es una entrada del programa.
c. Se dice que un número es deficiente si no alcanza a ser perfecto. En este caso,
si la suma de los divisores del número es menor que el número. En el sentido
contrario, se dice que un número es abundante si la suma de sus divisores lo
sobrepasa. Construya un programa que para un rango de 1 a n, siendo n una entrada
del programa, determine si el número es deficiente, perfecto o abundante. Indique
además el total de cada uno de ellos en ese rango.
24, Se dice que todos los números que se pueden generar a partir de la fórmula
4 ∗ n + 3 son primos. Construya un programa que genere los 100 primeros números de
la serie dada por la fórmula anterior y en cada caso indique si el número es primo
o no.
Estructuras de Control
Página 7
25, En matemáticas, Una serie alternada es una serie donde los términos alternan
el signo. Construya un programa que genere los n primeros términos de una serie
alternada.
26, Implementar un programa en Java que genere al azar una secuencia de letras
minúsculas, desplegándolas en pantalla. El programa debe contar la cantidad total
de letras vocales generadas. El procesamiento debe finalizar cuando se genere la
letra z o cuando se hayan generado 10 letras, lo que ocurra primero. Al final, se
debe desplegar la cantidad total de letras vocales generadas. Para generar una
letra minúscula al azar, hacer:
letra = (char) ((Math.random() * 26) + 'a');
27, Implementar un programa en Java que genere al azar dos enteros m (entre 1 y
10) y n (entre 1 y 30). El programa debe desplegar en pantalla los valores
generados y posteriormente debe dibujar un rectángulo de m filas por n columnas
formado por asteriscos.
Ejemplo:
Para m = 4 y n = 15, el programa debe dibujar el siguiente rectángulo:
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
UDO Monagas, Semestre I-2009
Prof. Fabricio Bravo Guevara
Estructuras de Control
Página 8