Solucionario: Primer Bimestre
Solucionario: Primer Bimestre
Solucionario: Primer Bimestre
Solucionario
PRIMER BIMESTRE
Los ejercicios de autoevaluación que corresponden al libro son resueltos en el mismo libro y sus
respuestas están a continuación del planteamiento de los ejercicios.
Programación no estructurada
Datos globales
Un solo programa principal
Repetición de instrucciones
No se reutiliza código
Progamación estructurada
- procedimental
Estructuras de control
Dominio sobre el flujo de control
Procedimiento
Procedimiento - parámetros datos
locales
Programción modular
Procedimientos agrupados en módulos
separados pudiendo ser llamados por
diferentes programas
Módulos manejasn estado interno.
2. Defina en sus propios términos las siguientes características del lenguaje Java:
¸ Portable: Que un mismo programa puede ejecutarse en varios sistemas operativos sin
necesidad de cambios
¸ Robusto: Capacidad de tolerancia a fallos y errores si por algún motivo se presenta un error
la aplicación no se cierra.
El JDK es el entorno de desarrollo permite crear, depurar y ejecutar programas, mientras que el
JRE es un el intérprete de Java y solo tiene la capacidad de ejecutar programas.
a. Suponga que existe un programa que contiene una clase pública denominada Estudiante. ¿Cuál
debe ser el nombre y la extensión del archivo en donde se almacenará?
1. ( ) Estudiante.txt
2. ( ) Estudiante.class
3. ( x ) Estudiante.java
b. Señale los identificadores que son válidos en Java para clases y variables. En caso de no ser válidas
indique el porqué:
Clases:
* ( ) EstuDiante
* ( x ) GerenteGeneral
* ( ) $Persona
* ( ) Cuentas_Por_Cobrar
* ( ) public
Variables:
* ( ) B
* ( ) Area
* ( x ) montoTotal
* ( ) __
* ( ) class
c. Señale con una R para los operadores relacionales y de igualdad, con una A para los operadores
aritméticos que maneja Java y con una X si no aplica ninguno de los anteriores:
1. ( X ) x
2. ( A ) %
3. ( X ) =
4. ( X ) ¡=
5. ( R ) ==
6. ( X ) ≤
7. ( R ) >=
d. Suponga que tiene un programa escrito en Java que declara 2 variables de tipo entero a y b que
se les asigna los valores 10 y 3 respectivamente. Existe una tercera variable c que se le asigna el
siguiente valor: c = a / b; ¿Cuál es el valor de c?
1. ( ) 3.33
2. ( x ) 3
3. ( ) 0
e. Analice el siguiente programa y señale los números de líneas en donde existan errores.
Línea 8, falta el signo + para concatenar el texto “El módulo es: “ con la variable c
import javax.swing.JOptionPane;
public class Ejercicio1 {
public static void main(String args[]){
String numTxt; //Variable que almacena el número digitado por el usuario
int intNum; //Variable entera con el número ingresado por el usuario
int numMayor = 0; //Variable que contendrá el número mayor.
2. Construya un programa que le presente en pantalla las fórmulas para calcular el área y perímetro
de un triángulo, rectángulo, y círculo. El programa debe presentar un menú y debe permitir al
usuario ingresar un número que corresponda a la figura seleccionada.
import javax.swing.JOptionPane;
public class Ejercicio2 {
3. Elabore 3 programas distintos que permitan presentar en pantalla los primeros 25 números pares.
Cada programa debe ser desarrollado utilizando los ciclos for, while y do…while.
4. Diseñe un programa para convertir una longitud dada en metros a sus equivalentes en
centímetros, pies, pulgadas y yardas. Considere que: 1 metro = 100 centímetros, 1 pulgada =
2.54 centimetros, 1 pie = 12 pulgadas, 1 yarda = 3 pies.
5. Una institución benéfica europea ha recibido tres donaciones en soles, dolares y marcos. La
donación será repartida en tres rubros: 60% para la implementación de un centro de salud,
30% para un comedor de niños y el resto para gastos administrativos. Diseñe un algoritmo y un
programa que determine el monto en euros que le corresponde a cada rubro. Considere que: 1
dólar = 3.52 soles, 1 dólar = 2.08 marcos, 1 dólar = 1.07 euros.
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
JOptionPane.showMessageDialog(null,
“Centro salud: “ +
dosDigitos.format(totalDonaEuros * 0.6) + “\n” +
“Comedor infantil: “ +
dosDigitos.format(totalDonaEuros * 0.3) + “\n” +
“Sobrante: “ +
dosDigitos.format(totalDonaEuros - (totalDonaEuros * 0.9)) + “\n”,
“Donación”,
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
/**
*
* @author Jorge
*/
public class Ejercicio6 {
metros = Double.parseDouble(metrosTxt);
minutos = Double.parseDouble(minutosTxt);
segundos = Double.parseDouble(segundosTxt);
cseg = Double.parseDouble(csegTxt);
metros /= 1000;
velocidad = metros/(minutos+segundos+cseg);
JOptionPane.showMessageDialog(null,
«La velocidad fue de: «+ dosDigitos.format(velocidad) + « km/h»,
«Resultados», JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
import javax.swing.JOptionPane;
segundosTxt =
JOptionPane.showInputDialog(“Ingrese los segundos: “);
segundosIngresados = Integer.parseInt(segundosTxt);
//Obtiene las horas que existen en los segundos ingresados
horas = segundosIngresados/3600;
//La cantidad de segundos restantes sirven para calcular los min y seg
resto = segundosIngresados%3600;
minutos = resto/60;
//Los segundos son el residuo.
segundos = resto%60;
JOptionPane.showMessageDialog(null,
“Existen “ + horas + “ Horas, “ + minutos + “ Minutos, “ +
segundos + “ segundos”, “En “+ segundosTxt + “ seg”,
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
8. Construya un programa que permita ingresar un número y luego presente en pantalla si el número
es perfecto.
import javax.swing.JOptionPane;
/**
* Un número es perfecto cuando la suma de sus divisores positivos menores al
* número es igual al mismo número. Ejemplo el número 6
* @author Jorge
*/
public class Ejercicio8 {
public static void main(String args[]){
String nroTxt;
String resultado = null;
int intNro;
int sumaDivisores = 0;
JOptionPane.showMessageDialog(null,
intNro + resultado,
“Nro. Perfectos”,
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
9. Elabore un programa que genere los 12 primeros elementos de la serie de fibonacci. Para generar
los elementos de la serie de fibonacci considere lo siguiente:
b. Los primeros elementos no se generan según (a) sino que son valores iniciales.
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
10. Calcule el resultado de sumar los n primeros términos de las siguientes series:
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
String nroTerminosTxt;
int intNroTerminos;
double suma = 0;
DecimalFormat dosDigitos = new DecimalFormat(“0.00”);
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
/**
*
* @author Jorge
*/
public class Ejercicio10b {
public static void main(String args[]){
String nroTerminosTxt;
int nroTerminos;
int contadorTerminos = 0;
int generadorNumeros = 1;
boolean esPrimo = true;
double suma = 0;
DecimalFormat formatoNumerico = new DecimalFormat(“0.00”);
nroTerminosTxt =
JOptionPane.showInputDialog(“Ingrese el nro. de terminos”);
nroTerminos = Integer.parseInt(nroTerminosTxt);
while(contadorTerminos < nroTerminos){
esPrimo = true;
for(int i = 2; i < generadorNumeros; i++){
if(generadorNumeros%i == 0){
esPrimo = false;
break;
}
}
if(esPrimo){
suma += (double)generadorNumeros / ((contadorTerminos + 1) * 2);
contadorTerminos++;
}
generadorNumeros++;
}
JOptionPane.showMessageDialog(null,
“La suma es: “ + formatoNumerico.format(suma),
“Resultado”,
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
/**
*
* @author Jorge
*/
public class Ejercicio10c {
public static void main(String args[]){
String txtNroTerminos;
int intNroTerminos;
double suma = 0;
int factorial; //Almacena el factorial del numerador
int impares = 1;//Denominador de la serie
DecimalFormat formatoNumerico = new DecimalFormat(“0.00”);
Los programas, detallados con comentarios, que dan respuestas a estas preguntas se encuentran en el
CD bajo el directorio: GuiaCapitulos\Ejercicios\ActividadesCapIII
import javax.swing.JOptionPane;
JOptionPane.showMessageDialog(null,
“Raíz cuadrada de “ + intNumero + “ es “ + Math.sqrt(intNumero),
“Resultado”,
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
2. Elabore un programa que permita sumar los primeros n términos de la siguiente serie:
import javax.swing.JOptionPane;
/**
*
* @author Jorge
*/
public class Ejercicio2 {
public static void main(String args[]){
String txtNroTerminos;
int intNroTerminos;
double suma = 0;
int contadorTerminos = 0;
int generaTerminos = 0;
boolean esPrimo;
double numerador;
double denominador;
contadorTerminos ++;
}
}
JOptionPane.showMessageDialog(null,
“La suma es:” + suma,
“Resultado”,
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
3. Busque en la documentación del API de Java información sobre la clase NumberFormat, liste
sus atributos. También busque información sobre la clase Locale y mencione la información que
considere relevante sobre esta clase.
SEGUNDO BIMESTRE
Los ejercicios de autoevaluación que corresponden al libro son resueltos en el mismo libro y sus
respuestas están a continuación del planteamiento de los ejercicios.
Cree una clase abstracta que contenga métodos para: determinar si un número es primo, par, impar,
obtener un elemento de la serie de Fibonacci dada su posición y un método que ingresado un número
busque y presente el primer número primo superior a ese número.
1./**
2. *
3. * @author JorgAf
4. */
5.public class UtilSeries {
6.
7. public static boolean par(int n){
8. boolean valor= true;
9. if(n%2==0){
10. return valor;
11. }else{
12. valor =false;
13. return valor;
14. }
15. }
33. }
34. if(esprimo==true){
35. return esprimo;
36. }else{
Elabore un programa que mediante búsqueda binaria encuentre un elemento dentro de un arreglo.
import java.util.Scanner;
/**
*
* @author jorgaf
*/
public class BusquedaBinaria {
int medio;
int indiceElem = -1;
int inf = 0;
int sup = arreglo.length;
int aux;
//Ordenamos el arreglo
for (int i = 0; i < arreglo.length - 1; i++) {
for (int j = i + 1; j < arreglo.length; j++) {
if (arreglo[j] < arreglo[i]) {
aux = arreglo[i];
arreglo[i] = arreglo[j];
arreglo[j] = aux;
}
}
}
//Arreglo ordenado
for (int i = 0; i < arreglo.length; i++) {
System.out.println(arreglo[i]);
}
//Debemos leer el elemento a buscar
Scanner lector = new Scanner(System.in);
int elemBuscar;
} else {
if (elemBuscar > arreglo[medio]) {
inf = medio + 1;
} else {
sup = medio - 1;
}
}
}
if (indiceElem != -1) {
System.out.println(“El elemento se encuentra en la posición: “
+ indiceElem);
} else {
System.out.println(“No existe dicho elemento”);
}
}
}
import javax.swing.JOptionPane;
/**
*
* @author jorgaf
*/
public class Multiplicacion {
public static void main(String[] args) {
int[][] matA = {{2, 6}, {4, 3}, {7, 1}};
int[][] matB = {{-1, 6, 3, 7}, {7, 5, 1, 8}};
int[][] matC;
if (matA[0].length == matB.length) {
//Multiplicar
int producto = 1;
int suma = 0;
matC = new int[matA.length][matB[0].length];
for (int fila = 0; fila < matC.length; fila++) {
for (int col = 0; col < matC[fila].length; col++) {
suma = 0;
for (int j = 0; j < matA[0].length; j++) {
suma = suma + (matA[fila][j]*matB[j][col]);
}
matC[fila][col] = suma;
System.out.print(suma + “\t”);
}
System.out.println();
}
} else {
JOptionPane.showMessageDialog(null,
“El nro. de columnas de la primera matriz, “ +
“no es igual al nro. de filas de la segunda”,
“Multiplicación imposible”,
JOptionPane.ERROR_MESSAGE);
}
System.exit(0);
}
}
Persona Direccion
Attributes Attributes
private String cedula private int tipo
private String nombres private String valor
Operations [1..*] Operations
public Persona( ) public Direccion( )
public String getCedula( ) public int getTipo ( )
public void setCedula (String val) public void setTipo (int val)
public String getNombres( ) public String getValor ( )
public void setNombres(String val) public void setValor (String val)
import java.util.ArrayList;
public class Persona {
private ArrayList<Direccion> mDireccion;
private String cedula;
private String nombres;
public Persona () {
}