Lab 01 EDA 2020
Lab 01 EDA 2020
LABORATORIO 01:
ELEMENTOS DE PROGRAMACIÓN
OBJETIVOS
• Resolver los ejercicios propuestos, para obtener expertise en el uso de técnicas de diseño
de algoritmos.
• Repasar y aplicar las estructuras algoritmicas de programación en la solución de
problemas.
• Aplicar conceptos básicos de POO.
o Declarar e implementar clases y crear objetos.
o Tener objetos como datos miembro
o Aplicar el concepto de Encapsulamiento, Agregación/Composición
• Crear paquetes con el objeto de modularizar y reutilizar código.
II
TEMAS A TRATAR
III
MARCO TEÓRICO
1. Estructuras algorítmicas de programación
• Abstraer los principios fundamentales de los capitulos 1, 2 de la bibliografía, tales como
los siguientes, que le permitan resolver los ejercicios propuestos:
o Datos, tipos de datos
o Instrucciones elementales
o Instrucciones compuestas
§ Secuencias
§ Condicionales
§ Bucles
2. Fundamentos de la POO
o Métodos de instancia
Los métodos de instancia operan sobre las variables de instancia de los objetos pero
también tienen acceso a las variables de clase. La sintaxis de llamada a un método de
instancia es:
objeto.metodo(parametros);
Ejemplos de llamada:
Cuenta c1 = new Cuenta ();
System.out.println("Cuenta con: " + c1.saldo() + " soles");
o Métodos de clase
En principio, los métodos de clase no operan sobre las variables de instancia de los
objetos. Los métodos de clase pueden trabajar con las variables de clase pero no pueden
acceder a las variables de instancia declaradas dentro de la clase. Los métodos de clase
también pueden ser llamados precediendolos con la clase.
Clase.metodo(parametros);
Por ejemplo:
Cuenta.incCuentas();
3. Paquetes
Los paquetes son el mecanismo que usa Java para facilitar la modularidad del código. Un
paquete puede contener una o más definiciones de interfaces y clases, distribuyéndose
habitualmente como un archivo. Para utilizar los elementos de un paquete es necesario
importar este en el módulo de código en curso, usando para ello la sentencia import.
IV
ACTIVIDADES - EJERCICIOS
Indicaciones para la entrega de las actividades y ejercicios
• La entrega se hará en un archivo que incluya una carpeta de nombre EjercicioNo por cada
ejercicio. En esta carpeta debe incluir los archivos .java correspondientes.
Ejercicio 1:
Escriba una clase Grafico que tenga un método dibujar que reciba como parámetro un caracter con
el cual imprima un cuadro, un óvalo, una flecha y un diamante usando ese caracter tal como se
muestra en la figura:
Ejercicio 2
Escriba una clase Numero que tenga como variable de instancia un entero valor, y los siguientes
metodos:
• Constructor: que reciba parámetros necesarios para inicializar el objeto que se esta
creando.
• Getter y Setter
• separar: este método debe separar el valor en sus dígitos individuales y debe imprimirlos
separando cada dígito de los demás por tres espacios. Por ejemplo, si el usuario escribe el
número 42339, el método debe debe imprimir:
• reemplazar: este método debe reemplazar un determinado digito del valor del objeto
Numero. Se le envia al método la posicion del digito a reemplazar y el dígito por el que
reemplzará. Si el valor del objeto no tiene la posición indicada, se debe de emitir un
mensaje de error.
Ejercicio 3:
Una compañía que desea enviar datos por Internet le ha solicitado implementar un paquete que le
permita cifrar y descifrar cierta informacion de modo que pueda transmitirla de manera segura.
Para esto tenga en cuenta que toda la información se envía como una cadena de números de
longitud multiplo de 4.
El paquete debe contener una clase Encriptar que tenga los métodos de clase siguientes:
• cifrar : recibe la cadena de números a cifrar utilizando el siguiente procedimiento para cada
grupo de 4 dígitos: reemplace cada dígito con el resultado de sumarle 7 y obtenga el
residuo después de dividir el nuevo valor entre 10. Después intercambie el primer dígito
con el tercero, y el segundo dígito con el cuarto. Concatene con el resultado del cifrado del
siguiente agrupameinto, y así sucesivamente hasta terminar con todos los agrupamientos.
Este método devuelve la cadena cifrada.
• descrifrar: este método debe recibir una cadena de números cifrada, y realizando el
proceso contrario al utilizado en el metodo cifrar, debe obtener la cadena de números
oririginal y devolverla.
Ejercicio 4:
Mientras se ejercita, puede usar un monitor de frecuencia cardiaca para ver que su corazón
permanezca dentro de un rango seguro sugerido por sus entrenadores y doctores. De acuerdo con
la Asociación American del Corazón (AHA) (https://international.heart.org), la fórmula para calcular
su frecuencia cardiaca máxima en pulsos por minuto es de 220 menos su edad en años. Su
frecuencia cardiaca esperada es un rango que está entre el 50 y el 85% de su frecuencia cardiaca
máxima. [Nota: estas fórmulas son estimaciones proporcionadas por la AHA. Las frecuencias
cardiacas máxima y esperada pueden variar de acuerdo con la salud, condición física y sexo del
individuo. Siempre debe consultar un médico o a un profesional de la salud antes de empezar o
modificar un programa de ejercicios.]
Dado el contexto anterior, se le pide que cree una clase llamada FrecuenciaCardiaca. Los atributos
de la clase deben incluir el primer nombre de la persona, su apellido y fecha de nacimiento (la cual
debe hacer referencia a un objeto de una clase Fecha que incluya atributos separados para el mes,
día y año de nacimiento). La clase FrecuenciaCardiaca debe tener un constructor que reciba todos
los datos para inicializar sus atributos. Para cada atributo debe proveer métodos getter y setter. La
clase también debe incluir un método que calcule y devuelva la edad de la persona (en años), uno
que calcule y devuelva la frecuencia cardiaca máxima de esa persona, y otro que calcule y devuelva
la frecuencia cardiaca esperada de la persona.
Ejercicio 5:
En este contexto se le solicita que diseñe una clase inicial llamada PerfilMedico para una persona.
Los atributos de la clase deben llevar el primer nombre de la persona, su apellido, sexo, fecha de
nacimiento (representado por un objeto de una clase, como en el ejercicio anterior), altura (en
centímetros) y peso (en kilogramos). Su clase debe tener un constructor que reciba estos datos.
Para cada atributo, debe proveer los métodos setter y getter. La clase también debe tener métodos
que calculen y devuelvan la edad del usuario en años, la frecuencia cardiaca máxima y el rango de
frecuencia cardiaca esperada (vea el ejercicio anterior), además del índice de masa corporal (BMI
por sus siglas en ingles), cuyo calculo obedece a la formula siguiente:
𝑝𝑒𝑠𝑜𝐸𝑛𝐾𝑖𝑙𝑜𝑔𝑟𝑎𝑚𝑜𝑠
𝐵𝑀𝐼 =
𝑎𝑙𝑡𝑢𝑟𝑎𝐸𝑛𝑀𝑒𝑡𝑟𝑜𝑠 ∗ 𝑎𝑙𝑡𝑢𝑟𝑎𝐸𝑛𝑀𝑒𝑡𝑟𝑜𝑠
Escriba una clase Principal que a partir de su metodo main pida la información de la persona, cree
una instancia de un objeto de la clase PerfilMedico para esa persona e imprima la información de
ese objeto (debe contener el primer nombre de la persona, apellido, sexo, fecha de nacimiento,
altura y peso), y que después calcule e imprima la edad de esa persona en años, junto con el BMI,
la frecuencia cardiaca máxima y el rango de frecuencia cardiaca esperada. También debe mostrar
la tabla de valores del BMI siguiente: