Ejercicios con entradas y salidas

En esta ocasión, propongo algunos ejercicios muy sencillos para practicar lo explicado sobre las entradas y salidas estándar: teclado y pantalla.

Ejercicio 1: Aplicar descuento

Codifica un programa que calcule el descuento de una compra. El programa pedirá al usuario que indique el precio del producto, el número de unidades que compra y el descuento total que tiene. Con esos datos, el programa presenta por pantalla lo que ha pagado el cliente y lo que se ha ahorrado gracias al descuento.

Una posible solución es:

Ejercicio 2: Ecuación de segundo grado

Realiza un programa que devuelva los resultados de una ecuación de segundo grado. El usuario tiene que introducir por teclado los coeficientes de la ecuación de segundo grado. En el caso de no tener soluciones reales, hay que detectarlo e indicarlo con un mensaje por pantalla.

Recordatorio: para el polinomio:

las dos soluciones posibles vienen dadas por la ecuación:

Una posible solución sería:

NOTA: Este post es parte de la colección “Java”. Puedes ver el índice de esta colección aquí.

Ejercicios con listas en Java

Aquí tenéis una propuesta de ejercicios con listas en Java para practicar lo explicado en el post de listas. Hay varias soluciones posibles para resolver un mismo problema, unas más eficientes que otras. Aquí podéis ver una solución posible para cada ejercicio propuesto.

Ejercicio 1: ListaNumerosDivisiblesPorNum

Enunciado:

Crea una lista de todos los números del 1 a 100 que sean divisibles por un número que introduzca el usuario. Este número tiene que estar comprendido entre 2 y 7. Pinta la lista por pantalla.

Sigue leyendo Ejercicios con listas en Java

La colección Mapas en Java

Otro tipo de colección muy interesante son los Mapas. Los mapas son colecciones de parejas clave-valor. Podría decirse que son como los arrays pero en lugar de usar un índice consecutivo que marca la posición del elemento en el array, vamos a utilizar una clave asociada a cada elemento.

La clase HashMap

La clase HashMap tiene la siguiente sintaxis:

HashMap<tipo clave,tipo de elemento>nombreDelMap= new HashMap<>();

Para trabajar con mapas vamos a utilizar la clase HashMap. Practiquemos con ella en la siguiente actividad:

Sigue leyendo La colección Mapas en Java

Listas en Java: tipo Set

En el post de Colecciones, mencionaba dos tipos de listas con las que podemos trabajar en Java: List y Set. En un post anterior me centraba en las listas de tipo List y ahora lo haré en las tipo Set, que a diferencia de las anteriores, no admiten duplicados.

La clase HashSet

Las listas tipo Set, las manejaremos con la clase HashSet. Esta clase funciona de manera muy parecida a la clase ArrayList, tienen muchos métodos iguales. Por ello, en la actividad siguiente para practicar con esta clase, me centraré en las diferencias de la clase HashSet con la clase ArrayList, vista previamente.

Sigue leyendo Listas en Java: tipo Set

Listas en Java: tipo List

Cuando en el post de Colecciones, hablaba de las listas en Java, mencionaba dos tipos de listas: List y Set. Ahora vamos a centrarnos en las listas de tipo List que manejaremos con la clase ArrayList.

La clase ArrayList

La sintaxis de la declaración de una de estas lista con la clase ArrayList es la siguiente:

ArrayList<tipo de elemento> nombreDeLaLista = new ArrayList< > ;

Vamos a verlo con un ejemplo práctico.

Sigue leyendo Listas en Java: tipo List

Colecciones en Java

En un post anterior habíamos visto los Arrays que nos obligaban a manejar un número fijo de elementos. Se inicializan con una dimensión fija que luego no podemos modificar durante la ejecución del programa.

Java proporciona otro tipo de Clases más flexibles y con ventajas sobre los arrays que son las Colecciones. Con estas vamos a poder trabajar, abstrayéndonos del índice y manejando un número de elementos variable durante la ejecución del programa.

Hay varias clases interesantes para trabajar con colecciones y todas extienden de la clase padre Collection.

Sigue leyendo Colecciones en Java

Hadoop

Hadoop es un ecosistema, es decir, un conjunto de componentes que implementan las distintas funciones necesarias para trabajar en entornos Big Data. Esta pensado para trabajar con Clusters de ordenadores de bajo coste. Y es un proyecto de la fundación Apache, por lo que cuenta con una licencia de software libre, lo que significa que cualquiera puede usarlo sin tener que pagar por ello.

Hay dos componentes fundamentales en el ecosistema Hadoop:

  • El sistema de ficheros distribuidos HDFS (Hadoop Distributed File System): Basado en la Big Table de Google que fue el primer sistema de ficheros distribuidos para trabajar con Big Data. Es el sistema de ficheros para trabajar con los ordenadores del clusters, realizando todas las funciones clásicas de un sistema de ficheros: guardar datos, localizar y acceder a ellos.
  • El sistema de procesamiento MapReduce: Es el sistema para procesar los datos en el Cluster, que también está tomado de Google, quien lo desarrollo para procesar la información de las distintas páginas web que recogía para las búsquedas.

La clave del éxito de Hadoop es que divide el almacenamiento de los datos y el trabajo de procesamiento entre los distintos ordenadores del cluster, realizando varias operaciones en paralelo, pudiendo así manejar muchos datos en menor tiempo.

Sigue leyendo Hadoop

Arquitectura Big Data

En posts anteriores he hablado de la aparición del Big Data y de las famosas Vs. De repente, se hizo necesario ser capaz de manejar muchísimos más datos con una afluencia muchísimo mayor. Las arquitecturas tradicionales no podían lidiar con esta nueva situación, y se desarrollaron las arquitecturas Big Data. Estas últimas enfocadas a trabajar con los datos en las nuevas condiciones.

Antes de la aparición del Big Data, con un buen servidor y un RAID de discos era suficiente para procesar y almacenar todos los datos que manejábamos. Esta arquitectura era además escalable y las necesidades de ampliación eran asumibles. Sin embargo, con la llegada del Big Data, y la gran cantidad y variedad de datos que tenemos que manejar y almacenar, las arquitecturas tradicionales basadas en un servidor resultan insuficientes. Se hace inviable procesar toda esta información en un único ordenador, y se desarrollan arquitectura Big Data basadas en Clusters de ordeanadores (un conjunto de ordenadores trabajando de manera coordinada para resolver una misma tarea).

Sigue leyendo Arquitectura Big Data

Ejercicios con Clases en Java

Aquí te dejo varios ejercicios con Clases en Java, para que puedas practicar lo aprendido en post anteriores. No explico la solución, sencillamente muestro una posible solución, pero mi recomendación es que intentes hacer los ejercicios sin mirar mi solución, y que la consultes sólo si te atascas.

Ejercicio 1

Crea una clase llamada Pais.

La clase debe tener los siguientes parámetros (recuerda que los parámetros deben ser declarados como privados por cuestiones de seguridad):

Sigue leyendo Ejercicios con Clases en Java

El Polimorfismo

El polimorfismo hace referencia a la capacidad de que objetos de diferentes clases, respondan de manera diferente a un mismo método. En Java, esto se consigue mediante la herencia y las interfaces, posibilitando que distintas clases implementen un mismo método de formas distintas, ajustándolo a sus necesidades.

En el polimorfismo por herencia, las distintas subclases implementan un método de la superclase de distintas maneras, ajustándolo a las necesidades específicas de la subclase en cuestión.

Actividad: Practicando con el polimorfismo

  1. Abrimos un nuevo proyecto de Java en nuestro IDE de trabajo.
  2. Primero definimos la superclase: Animal
class Animal{
    public void comer() {
        System.out.println("El animal se alimenta");
    }
}
Sigue leyendo El Polimorfismo