Semana 5 - Ejercicios Prácticos Solucionados
Ejercicio 1: Calculadora de Promedio
Descripción
Crear un programa que calcule el promedio de tres notas y determine si el estudiante aprobó o no. Un estudiante aprueba si su promedio es mayor o igual a 3.0.
Solución
public class CalculadoraPromedio {
public static void main(String[] args) {
// Declaración de variables
double nota1 = 3.5;
double nota2 = 2.8;
double nota3 = 4.0;
// Cálculo del promedio
double promedio = (nota1 + nota2 + nota3) / 3;
// Mostrar el promedio con dos decimales
System.out.printf("El promedio es: %.2f%n", promedio);
// Determinar si aprobó
if (promedio >= 3.0) {
System.out.println("¡Felicitaciones! Has aprobado.");
} else {
System.out.println("Lo siento, no has aprobado.");
}
}
}
Explicación
- Utilizamos variables de tipo
doublepara almacenar las notas y el promedio. - Aplicamos operadores aritméticos para calcular el promedio: suma (+) y división (/).
- Usamos una estructura condicional (if-else) para determinar si el estudiante aprobó.
- El método
printfse usa para formatear el promedio a dos decimales.
Ejercicio 2: Conversor de Temperatura
Descripción
Crear un programa que convierta una temperatura de Celsius a Fahrenheit y viceversa, utilizando la conversión de tipos y operadores aritméticos.
Solución
public class ConversorTemperatura {
public static void main(String[] args) {
// Convertir de Celsius a Fahrenheit
String celsiusStr = "25";
double celsius = Double.parseDouble(celsiusStr);
double fahrenheit = (celsius * 9/5) + 32;
System.out.println(celsius + "°C equivale a " + fahrenheit + "°F");
// Convertir de Fahrenheit a Celsius
double tempF = 98.6;
double tempC = (tempF - 32) * 5/9;
int tempCInt = (int) tempC; // Conversión explícita a entero
System.out.println(tempF + "°F equivale a " + tempC + "°C");
System.out.println("Temperatura en Celsius (redondeada): " + tempCInt + "°C");
}
}
Explicación
- Utilizamos
Double.parseDouble()para convertir un String a double. - Aplicamos fórmulas de conversión usando operadores aritméticos.
- Realizamos una conversión explícita (casting) de double a int.
- Demostramos el uso de diferentes tipos de datos y sus conversiones.
Ejercicio 3: Calculadora de Descuento
Descripción
Crear un programa que calcule el precio final de un producto después de aplicar un descuento, utilizando operadores aritméticos y de asignación.
Solución
public class CalculadoraDescuento {
public static void main(String[] args) {
// Precio original y porcentaje de descuento
double precioOriginal = 100000;
int porcentajeDescuento = 15;
// Cálculo del descuento
double descuento = precioOriginal * (porcentajeDescuento / 100.0);
double precioFinal = precioOriginal - descuento;
// Mostrar resultados
System.out.println("Precio original: $" + precioOriginal);
System.out.println("Descuento " + porcentajeDescuento + "%: $" + descuento);
System.out.println("Precio final: $" + precioFinal);
// Ejemplo con operador de asignación compuesto
double precio = precioFinal;
precio *= 1.19; // Agregar IVA del 19%
System.out.println("Precio final con IVA: $" + precio);
}
}
Explicación
- Utilizamos variables de tipo
doublepara manejar decimales en los precios. - Aplicamos operadores aritméticos para calcular el descuento y el precio final.
- Demostramos el uso del operador de asignación compuesto (*=).
- Calculamos porcentajes y realizamos operaciones con decimales.
Ejercicio 4: Calculadora Básica
Descripción
Crear una calculadora que realice las cuatro operaciones básicas (suma, resta, multiplicación y división) con dos números.
Solución
public class CalculadoraBasica {
public static void main(String[] args) {
// Declaración de variables
double num1 = 15.5;
double num2 = 5.0;
// Realizar operaciones
double suma = num1 + num2;
double resta = num1 - num2;
double multiplicacion = num1 * num2;
double division = num1 / num2;
// Mostrar resultados
System.out.printf("Suma: %.2f%n", suma);
System.out.printf("Resta: %.2f%n", resta);
System.out.printf("Multiplicación: %.2f%n", multiplicacion);
// Verificar división por cero
if (num2 != 0) {
System.out.printf("División: %.2f%n", division);
} else {
System.out.println("No se puede dividir por cero");
}
}
}
Explicación
- Implementamos las cuatro operaciones aritméticas básicas.
- Utilizamos el operador de división (/) con verificación de división por cero.
- Aplicamos formato de salida con printf para mostrar dos decimales.
Ejercicio 5: Calculadora de IMC
Descripción
Crear un programa que calcule el Índice de Masa Corporal (IMC) y clasifique el estado de salud según el resultado.
Solución
public class CalculadoraIMC {
public static void main(String[] args) {
// Datos de entrada
double peso = 70.5; // en kilogramos
double altura = 1.75; // en metros
// Cálculo del IMC
double imc = peso / (altura * altura);
// Mostrar IMC
System.out.printf("Su IMC es: %.1f%n", imc);
// Clasificar estado de salud
if (imc < 18.5) {
System.out.println("Bajo peso");
} else if (imc < 25) {
System.out.println("Peso normal");
} else if (imc < 30) {
System.out.println("Sobrepeso");
} else {
System.out.println("Obesidad");
}
}
}
Explicación
- Calculamos el IMC usando la fórmula peso/(altura²).
- Utilizamos estructura if-else if para clasificar el estado de salud.
- Aplicamos formato de salida para mostrar un decimal.
Ejercicio 6: Conversor de Moneda
Descripción
Crear un programa que convierta entre diferentes monedas (USD, EUR, COP) utilizando tasas de cambio fijas.
Solución
public class ConversorMoneda {
public static void main(String[] args) {
// Tasas de cambio fijas
double usdToEur = 0.85;
double usdToCop = 4000.0;
// Cantidad a convertir
double cantidadUsd = 100.0;
// Realizar conversiones
double cantidadEur = cantidadUsd * usdToEur;
double cantidadCop = cantidadUsd * usdToCop;
// Mostrar resultados
System.out.printf("%.2f USD equivale a:%n", cantidadUsd);
System.out.printf("EUR: %.2f%n", cantidadEur);
System.out.printf("COP: %.0f%n", cantidadCop);
}
}
Explicación
- Definimos tasas de cambio como constantes.
- Realizamos conversiones usando operadores de multiplicación.
- Utilizamos diferentes formatos de salida según la moneda.
Ejercicio 7: Calculadora de Interés Simple
Descripción
Crear un programa que calcule el interés simple de un préstamo basado en el capital, la tasa de interés y el tiempo.
Solución
public class CalculadoraInteres {
public static void main(String[] args) {
// Datos del préstamo
double capital = 1000000; // Capital inicial
double tasaAnual = 0.12; // 12% anual
int tiempo = 2; // años
// Cálculo del interés simple
double interes = capital * tasaAnual * tiempo;
double montoTotal = capital + interes;
// Mostrar resultados
System.out.printf("Capital inicial: $%.2f%n", capital);
System.out.printf("Interés generado: $%.2f%n", interes);
System.out.printf("Monto total: $%.2f%n", montoTotal);
}
}
Explicación
- Aplicamos la fórmula de interés simple: I = C * r * t
- Utilizamos variables de tipo double para manejar decimales.
- Mostramos los resultados con formato monetario.
Ejercicio 8: Conversor de Tiempo
Descripción
Crear un programa que convierta una cantidad de segundos a horas, minutos y segundos.
Solución
public class ConversorTiempo {
public static void main(String[] args) {
// Cantidad de segundos a convertir
int segundosTotales = 3665;
// Cálculo de conversión
int horas = segundosTotales / 3600;
int minutos = (segundosTotales % 3600) / 60;
int segundos = segundosTotales % 60;
// Mostrar resultado
System.out.printf("%d segundos equivalen a:%n", segundosTotales);
System.out.printf("%d horas, %d minutos y %d segundos%n",
horas, minutos, segundos);
}
}
Explicación
- Utilizamos el operador de división (/) para obtener las horas y minutos.
- Aplicamos el operador módulo (%) para obtener los restos.
- Usamos variables de tipo int ya que trabajamos con números enteros.
Ejercicio 9: Calculadora de Impuestos
Descripción
Crear un programa que calcule el impuesto a pagar según el monto de la compra, con diferentes tasas según el valor.
Solución
public class CalculadoraImpuestos {
public static void main(String[] args) {
// Monto de la compra
double montoCompra = 250000;
double tasaImpuesto;
// Determinar tasa de impuesto
if (montoCompra <= 100000) {
tasaImpuesto = 0.10; // 10%
} else if (montoCompra <= 500000) {
tasaImpuesto = 0.15; // 15%
} else {
tasaImpuesto = 0.19; // 19%
}
// Calcular impuesto y total
double impuesto = montoCompra * tasaImpuesto;
double total = montoCompra + impuesto;
// Mostrar resultados
System.out.printf("Monto de compra: $%.2f%n", montoCompra);
System.out.printf("Tasa de impuesto: %.1f%%%n", tasaImpuesto * 100);
System.out.printf("Impuesto: $%.2f%n", impuesto);
System.out.printf("Total a pagar: $%.2f%n", total);
}
}
Explicación
- Implementamos diferentes tasas de impuesto según el monto.
- Utilizamos estructura if-else if para determinar la tasa aplicable.
- Calculamos el impuesto y el total a pagar.
Ejercicio 10: Sistema de Calificación Ponderada
Descripción
Crear un programa que calcule la nota final de un estudiante basado en diferentes evaluaciones con distintos pesos.
Solución
public class CalificacionPonderada {
public static void main(String[] args) {
// Notas y pesos
double examen1 = 4.2; // 30%
double examen2 = 3.8; // 30%
double proyecto = 4.5; // 25%
double tareas = 3.9; // 15%
// Cálculo de nota final
double notaFinal = (examen1 * 0.30) +
(examen2 * 0.30) +
(proyecto * 0.25) +
(tareas * 0.15);
// Mostrar resultados
System.out.printf("Nota Final: %.2f%n", notaFinal);
// Determinar estado
if (notaFinal >= 4.5) {
System.out.println("Excelente");
} else if (notaFinal >= 4.0) {
System.out.println("Muy Bueno");
} else if (notaFinal >= 3.0) {
System.out.println("Aprobado");
} else {
System.out.println("Reprobado");
}
}
}
Explicación
- Aplicamos pesos diferentes a cada evaluación.
- Calculamos la nota final usando operadores aritméticos.
- Implementamos una clasificación del rendimiento.
Ejercicio 11: Validador de Contraseña Simple
Descripción
Crear un programa que valide si una contraseña cumple con un criterio específico sin usar bucles.
Código
public class ValidadorContrasena {
public static void main(String[] args) {
// Contraseña a validar
String password = "Abc12345";
// Validar criterios usando métodos de String
boolean tieneMinuscula = !password.equals(password.toUpperCase());
boolean tieneMayuscula = !password.equals(password.toLowerCase());
boolean tieneNumero = password.matches(".*\\d.*");
// Validar todos los criterios
boolean esValida = password.length() >= 8 &&
tieneMinuscula &&
tieneMayuscula &&
tieneNumero;
System.out.println("La contraseña es válida: " + esValida);
}
}
Ejercicio 12: Calculadora de Descuentos por Membresía
Descripción
Crear un programa que calcule descuentos en una tienda basados en el nivel de membresía del cliente y el monto de la compra.
Código
public class CalculadoraDescuentosMembresía {
public static void main(String[] args) {
// Datos de entrada
String nivelMembresia = "GOLD"; // BASIC, SILVER, GOLD, PLATINUM
double montoCompra = 250.0;
boolean esFestivo = true;
// Calcular descuento base por membresía
double descuentoBase;
switch (nivelMembresia) {
case "PLATINUM": descuentoBase = 0.20; break;
case "GOLD": descuentoBase = 0.15; break;
case "SILVER": descuentoBase = 0.10; break;
default: descuentoBase = 0.05;
}
// Ajustar descuento por monto de compra
double descuentoAdicional = 0.0;
if (montoCompra >= 500.0) {
descuentoAdicional = 0.05;
} else if (montoCompra >= 200.0) {
descuentoAdicional = 0.02;
}
// Descuento especial en festivos
double descuentoFestivo = esFestivo ? 0.05 : 0.0;
// Calcular descuento total y precio final
double descuentoTotal = descuentoBase + descuentoAdicional + descuentoFestivo;
double montoDescuento = montoCompra * descuentoTotal;
double precioFinal = montoCompra - montoDescuento;
// Mostrar resultados
System.out.printf("Nivel de Membresía: %s%n", nivelMembresia);
System.out.printf("Monto de Compra: $%.2f%n", montoCompra);
System.out.printf("Descuento Total: %.1f%%%n", descuentoTotal * 100);
System.out.printf("Monto Descuento: $%.2f%n", montoDescuento);
System.out.printf("Precio Final: $%.2f%n", precioFinal);
}
}
Explicación
- Implementamos un sistema de descuentos multinivel usando switch y condicionales.
- Calculamos descuentos basados en membresía, monto de compra y días festivos.
- Utilizamos el operador ternario para el descuento en festivos.
- Aplicamos formato de salida para mostrar valores monetarios y porcentajes.
Ejercicio 13: Analizador de Texto Simple
Descripción
Crear un programa que analice características básicas de un texto sin usar bucles.
Código
public class AnalizadorTextoSimple {
public static void main(String[] args) {
String texto = "Hola Mundo";
// Análisis simple usando métodos de String
int longitud = texto.length();
int espacios = texto.length() - texto.replace(" ", "").length();
int vocales = texto.toLowerCase().replaceAll("[^aeiou]", "").length();
int consonantes = texto.toLowerCase().replaceAll("[^a-z]", "").length() - vocales;
System.out.println("Análisis de texto: '" + texto + "'");
System.out.println("Longitud: " + longitud);
System.out.println("Espacios: " + espacios);
System.out.println("Vocales: " + vocales);
System.out.println("Consonantes: " + consonantes);
}
}
Explicación
- Procesamos texto carácter por carácter.
- Utilizamos métodos de Character para clasificación.
- Mantenemos contadores para diferentes tipos de caracteres.
Ejercicio 14: Calculadora de Propinas
Descripción
Crear un programa que calcule propinas basadas en el monto de la cuenta y el nivel de satisfacción.
Solución
public class CalculadoraPropinas {
public static void main(String[] args) {
double montoCuenta = 84.50;
int nivelSatisfaccion = 4; // 1-5
// Determinar porcentaje de propina
double porcentajePropina;
switch (nivelSatisfaccion) {
case 5: porcentajePropina = 0.20; break;
case 4: porcentajePropina = 0.15; break;
case 3: porcentajePropina = 0.10; break;
default: porcentajePropina = 0.05;
}
// Calcular propina y total
double propina = montoCuenta * porcentajePropina;
double total = montoCuenta + propina;
System.out.printf("Cuenta: $%.2f%n", montoCuenta);
System.out.printf("Nivel de satisfacción: %d/5%n",
nivelSatisfaccion);
System.out.printf("Propina (%.0f%%): $%.2f%n",
porcentajePropina * 100, propina);
System.out.printf("Total: $%.2f%n", total);
}
}
Explicación
- Utilizamos switch para diferentes niveles de satisfacción.
- Calculamos porcentajes y valores monetarios.
- Aplicamos formato de salida para mejor presentación.
Ejercicio 15: Calculadora de Calificaciones
Descripción
Crear un programa que calcule la calificación final de un estudiante basado en diferentes evaluaciones con pesos distintos y convierta la nota numérica a letra según una escala predefinida.
Código
public class CalculadoraCalificaciones {
public static void main(String[] args) {
// Notas y pesos de las evaluaciones
double examenParcial = 3.8; // 30%
double proyectoFinal = 4.2; // 40%
double participacion = 4.5; // 15%
double tareas = 3.9; // 15%
// Calcular nota final ponderada
double notaFinal = (examenParcial * 0.30) +
(proyectoFinal * 0.40) +
(participacion * 0.15) +
(tareas * 0.15);
// Determinar letra según la escala
String letraCalificacion;
if (notaFinal >= 4.5) {
letraCalificacion = "A+";
} else if (notaFinal >= 4.0) {
letraCalificacion = "A";
} else if (notaFinal >= 3.5) {
letraCalificacion = "B";
} else if (notaFinal >= 3.0) {
letraCalificacion = "C";
} else if (notaFinal >= 2.0) {
letraCalificacion = "D";
} else {
letraCalificacion = "F";
}
// Determinar estado (Aprobado/Reprobado)
String estado = notaFinal >= 3.0 ? "Aprobado" : "Reprobado";
// Mostrar resultados
System.out.println("=== Reporte de Calificaciones ===");
System.out.printf("Examen Parcial (30%%): %.1f%n", examenParcial);
System.out.printf("Proyecto Final (40%%): %.1f%n", proyectoFinal);
System.out.printf("Participación (15%%): %.1f%n", participacion);
System.out.printf("Tareas (15%%): %.1f%n", tareas);
System.out.printf("Nota Final: %.2f%n", notaFinal);
System.out.println("Calificación en Letra: " + letraCalificacion);
System.out.println("Estado: " + estado);
}
}
Explicación
- Calculamos una nota final ponderada usando diferentes pesos para cada evaluación.
- Implementamos una escala de calificación por letras usando condicionales.
- Utilizamos el operador ternario para determinar el estado de aprobación.
- Aplicamos formato de salida para mostrar las notas con decimales apropiados.
Estos ejercicios integran los conceptos de: - Tipos de datos y variables - Operadores aritméticos y de asignación - Conversión de tipos (parsing y casting) - Estructuras de control condicional - Formato de salida - Manipulación de cadenas - Operadores lógicos - Bucles y control de flujo - Patrones y algoritmos simples
Actividad de Aprendizaje en Parejas
Descripción
Para reforzar la comprensión de los conceptos aprendidos, realizaremos una actividad de aprendizaje colaborativo en parejas.
Instrucciones
- El docente asignará un ejercicio específico a cada pareja de estudiantes.
- Cada pareja deberá:
- Analizar detalladamente el código del ejercicio asignado
- Identificar los conceptos clave utilizados
- Preparar una explicación clara del funcionamiento del código
- Estar listos para responder preguntas de sus compañeros
- Durante la presentación, la pareja deberá:
- Explicar el propósito del ejercicio
- Detallar la lógica del código paso a paso
- Destacar los conceptos de programación aplicados
- Demostrar la ejecución del programa
Objetivos
- Fortalecer la comprensión de los conceptos de programación
- Desarrollar habilidades de comunicación técnica
- Fomentar el aprendizaje colaborativo
- Practicar la explicación de código a otros programadores