jueves, 22 de octubre de 2015

Estructura de control while y do…while en Java


Estructura de control while y do…while en Java

La estructura de control while permite ejecutar un bloque de instrucciones mientras se cumpla una condición que se evalúa a un booleano true o false. Como en el caso de la estructura de control if, las llaves solo son obligatorias si el bloque de instrucciones está formado por más de una instrucción.

La sintaxis básica de la estructura de control while es la siguiente:

while(condicion)
{
    //instrucciones
}

Existe también una versión diferente, la estructura de control do…while. La diferencia está en que en la estructura while primero comprueba la condición y si se cumple ejecuta el bloque de instrucciones, en cambio en la estructura de control do…while primero se ejecutan las instrucciones y después se comprueba la condición. De esta forma se garantiza que el bloque de instrucciones se ejecute al menos una vez.

La sintaxis básica de la estructura de control do…while es la siguiente:

do
{
   //instrucciones   
 
} while(condicion);
 
Les mostrare un ejercicio bien sencillos  donde les mostrare la impresión de los números del 1 al 100 con las estructuras de control while y do…while en pseudocódigo, Java y Scratch.

Pseudocódigo:


 
Java While:

Java Do While:



Si la condición no deja de cumplirse se producirá un bucle infinito y eso es un problema grave que tendremos que evitar a toda costa, a no ser que la lógica del programa lo necesite. Por eso en el bloque de instrucciones tiene que haber un punto de inflexión donde cambie el valor de la condición. En nuestro caso aumentamos y disminuimos la variable numero sabiendo que en algún momento dejará de cumplirse las condiciones.

 

En Scratch:

 
Les dejo el proyecto en Scratch para que lo puedan ver
 

Si deseas ver el enlace, pincha aquí

miércoles, 21 de octubre de 2015

Clase scanner en Java



Java tiene un método llamado System.in, la cual obtiene la información de usuario. Sin embargo, Sytem.in no es tan simple como System.out. La razón porque no es tan fácil es porque System.in solo lee la información en bytes. Bytes no nos sirve de mucho ya que los programas usualmente trabajan con valores de otro tipo (integrales, Strings, bool, etc). Para solucionar este problema usamos la clase Scanner. La clase Scanner está diseñado para leer los bytes y convertirlo en valores primitivos (int, double, bool, etc) o en valores String.

A continuación se detalla el funcionamiento de esta clase: 

Primero tiene que crear un objeto Scanner y conectarlo con System.in
Scanner teclado = new Scanner(System.in);
Veamos este código por partes. La primera parte:
Scanner teclado

Este código declara una variable llamado teclado. El tipo de data de esta variable es Scanner. Ya que Scanner es una clase, la variable teclado es un objeto de la clase Scanner.
La segunda parte:
= new Scanner(System.in);
Lo primero que vemos es el símbolo =, lo cual esta asignando un valor a la variable teclado. El valor es Scanner(System.in) que en palabras comunes está diciendo que el valor de teclado es lo que System.in tenga. Osea, cuando un usuario presiona una tecla, la computadora convierte esta información en bytes. Estos bytes son guardados en el objeto System.in, y por ultimo son asignados a la variable teclado. Después del símbolo = vemos la palabra clave new lo cual crea un nuevo objeto en la memoria, el tipo de objeto que creara es Scanner(System.in), básicamente esta reservando memoria en la computadora para que se pueda guardar la información de System.in.

A continuación  el siguiente ejemplo para dar más claridad:
int edad;
Scanner teclado = new Scanner(System.in);
System.out.println(“Que edad tienes”);
edad = teclado.nextInt();
Veamos paso a paso que es lo que significa cada línea:
int edad :
Estamos declarando una variable int llamada edad la cual va a almacenar un número.
Scanner teclado = new Scanner(System.in); :
Estamos declarando una variable Scanner, la cual va almacenar la información que el usuario introduce.
System.out.println(“Cual es tu edad”); :
Estamos usando el método println para preguntar al usuario por su edad.
edad = teclado.nextInt(); :
Estamos usando la variable teclado para obtener la información del usuario, luego convertimos los bytes en int con el método nextInt, y por ultimo estamos pasando el valor int a la variable edad
Existen varios métodos de la clase Scanner para convertir bytes en valores que sean más útiles. Siguiente voy a mostrar una lista de los métodos más comunes de la clase Scanner para convertir bytes en otros valores.
Metodos:
nextByte
nextDouble
nextFloat
nextInt
nextLine
nextLong

Ahora les mostrare el mismo ejercicio ingresando el dato de la edad por teclado en Pseudocódigo:
 
 



 
Ahora el mismo ejercicio en Java:



Para terminal les dejo el mismo programa realizado en scratch:



Para ver el código del proyecto, pincha aquí:

Espero que este material les sea de gran ayuda, será hasta una próxima.

domingo, 18 de octubre de 2015

POO, Métodos en Java.

Los métodos definen el comportamiento de una clase (lo que podemos hacer con los objetos de esa clase).

Un método define la secuencia de sentencias que se ejecuta para llevar a cabo una operación.

Permiten cambiar la implementación de una clase sin tener que modificar su interfaz (es decir, sin tener que modificar el código que utiliza objetos de la clase cuya implementación se cambiara).

 La estructura de un método se divide en:
  • cabecera : modificadores tipo nombre (parámetros), determinan su interfaz.
  • cuerpo    : aquí se implementa el algoritmo necesario para realizar la operación de la que el método es responsable.
su sintaxis en java sería:

             modificadores tipo nombre (parámetros)
            {
                cuerpo
            }

El punto inicial de una aplicación escrita en java sería:

             public static void main (string[] args)
              {
                //cuerpo
              }

Como todo en java, debe estar definido al interior de una clase.
El modificador de acceso "public" indica que se puede acceder a el desde fuera de la clase.
"static" es el método mas común para todos los objetos de la clase.
Y la palabra reservada "void" indica que en este caso el método main no devuelve ningún valor. 
Los paréntesis nos indican que se trata de un método; Aquí van los parámetros del método (en este caso de tipo String, cadena de caracteres).
Y por último las llaves {} delimitan el cuerpo.

ejemplos:

clase principal
clase ejercicio. Método con parámetros

Sobrecarga

Java permite que existan distintos métodos con el mismo nombre siempre y cuando el tipo de su parámetro no sean iguales, a esto se le conoce como Sobrecarga.

Ejemplo:


Herencia

La herencia en java representa lo que conocemos de herencia en el mundo real, básicamente mediante esta obtenemos las características o rasgos comunes de nuestros padres o abuelos, en java es el mismo enfoque permitiendo la creación de nuevas clases basadas en clases ya existentes, con las cuales podemos obtener las características de las clases padres, heredando campos, atributos, métodos o funcionalidades.


 En Java solo se puede heredar de una sola clase padre y se representa mediante la palabra extends. 


Encapsulamiento


la encapsulación es la forma de proteger nuestros datos dentro del sistema, estableciendo básicamente los permisos o niveles de visibilidad o acceso de nuestros datos.

Tiene 3 niveles:
Público: Se puede acceder a todos los atributos o métodos de la clase. 
Protegido: Se puede acceder a los atributos o métodos solo en la misma jerarquía de herencia. 
Privado: Solo se puede acceder a los atributos o métodos de la clase en la que se encuentran.

con la Encapsulación mantenemos nuestros datos seguros, ya que podemos evitar que por ejemplo se hagan modificaciones al estado o comportamiento de un objeto desde una clase externa, una buena practica es trabajar con métodos setter y getter que permiten manipular nuestros datos de forma segura.

ejemplo: 

 Bueno hasta ahora ya hemos hablado de métodos, clases, herencia, sobrecarga y encapsulamiento, aún nos queda más por repasar, pero ya lo veremos más adelante. 

Espero les sirva la información aquí expuesta y nos estaremos leyendo. Éxito!!!

OBJETOS Y CLASES

¿Que son los objetos y las clases?

Un objeto es una instancia de una clase



Una clase describe un grupo de objetos que comparten propiedades y métodos comunes, es una plantilla que define qué forma tienen los objetos de la clase

La definición de una clase especifica cómo serán los objetos de dicha clase, esto es, de que variables y de que métodos constarán. 

Una clase se compone de:

Información: campos (atributos, propiedades)
Comportamiento: métodos (operaciones, funciones)


La siguiente es la definición más simple de una clase: 

   class nombreClase     /* Declaración de la clase */
   {
   
      /* Aquí va la definición de variables y métodos */
 
   }
Como se puede observar, la definición de una clase consta de dos partes fundamentales: 

La declaración de la clase 

Indica el nombre de la clase precedido por la palabra clave class. 

El cuerpo de la clase 

El cuerpo de la clase sigue a la declaración de la clase y está contenido entre la pareja de llaves ({ y }). El cuerpo de la clase contiene las declaraciones de las variables de la clase, y también la declaración y la implementación de los métodos que operan sobre dichas variables.

Declaración de variables de instancia 

El estado de un objeto está representado por sus variables (variables de instancia). Las variables de instancia se declaran dentro del cuerpo de la clase. Típicamente, las variables de instancia se declaran antes de la declaración de los métodos, pero esto no es necesariamente requerido. 


Implementación de métodos 

Los métodos de una clase determinan los mensajes que un objeto puede recibir. 

Las partes fundamentales de un método son el valor de retorno, el nombre, los argumentos (opcionales) y su cuerpo. Además, un método puede llevar otros modificadores opcionales que van al inicio de la declaración del método y que se analizarán más adelante. La sintaxis de un método es la siguiente: 

   <otrosModificadores>  valorRetorno  nombreMetodo( <lista de argumentos> )
   {
      /* Cuerpo del método */
      sentencias;
   }

   Los signos <> indican que no son obligatorios.
Los métodos en Java pueden ser creados únicamente como parte de una clase. Cuando se llama a un método de un objeto se dice comúnmente que se envia un mensaje al objeto.

Ejemplo

/* Usuario.java */

class Usuario
{
     String nombre;
     int edad;
     String direccion;                     

     void setNombre(String n)
     {
        nombre = n;
     }
     
     String getNombre()
     {
        return nombre;
     }
     
     void setEdad(int e)
     {
        edad = e;
     }

     int getEdad()
     {
        return edad;
     }
     
     void setDireccion(String d)
     {
        direccion = d;
     }

     String getDireccion()
     {
        return direccion;
     }
}

Y como es de costumbre un Scratch esta ves de un directorio telefónico:



Aqui puedes ves el codigo de este Scratch Ver codigo

La clase Scanner en Java

La clase estándar Scanner 

La clase Scanner de Java provee métodos para leer valores de entrada de varios tipos y está localizada en el paquete java.util. Los valores de entrada pueden venir de varias fuentes, incluyendo valores que se entren por el teclado o datos almacenados en un archivo. 

Para utilizar esa clase tenemos que crear primero un objeto de ella para poder invocar sus métodos. La siguiente declaración crea un objeto de la clase Scanner que lee valores de entrada del teclado.

Scanner teclado = new Scanner(System.in); 

El propósito de pasar a System.in como argumento es conectar o establecer una relación entre el objeto tipo Scanner, con nombre teclado en la declaración anterior, y el objeto System.in, que representa el sistema estándar de entrada de información en Java. Si no se indica lo contrario, el teclado es, por omisión, el sistema estándar de entrada de información en Java. 

Luego que se tenga un objeto de la clase Scanner asociado al sistema estándar de entrada System.in, llamamos, por ejemplo, su método nextInt para entrar un valor del tipo int. Para entrar otros valores de otros tipos de datos primitivos, se usan los métodos correspondientes como nextByte o nextDouble.

Veamos un ejemplo:

import java.util.Scanner; //también se puede escribir import java.util.*; 

    class RectanguloPA { 

       public static void main (String[] args) {// comienza método main 
           Scanner teclado = new Scanner (System.in); 
           System.out.println("Esta aplicacion solicita la longitud y anchura de 
                                       un rectangulo."); 
           System.out.println("Luego, calcula y muestra su perimetro y area."); 
           System.out.println(); 
           System.out.print("Entre la longitud del rectangulo: "); 
           double longitud = teclado.nextDouble(); 
           System.out.print("Entre la anchura del rectangulo: "); 
           double anchura = teclado.nextDouble(); 
           double perimetro = 2*longitud + 2*anchura; 
           double area = longitud * anchura; 
           System.out.println(); 
           System.out.println("El perimetro del rectangulo es: " + perimetro + "
           unidades."); 
           System.out.println("El area del rectangulo es: " + area + " unidades              cuadradas."); 
    }

Veamos otro ejemplo:




.
Ahora veamos el siguiente vídeo:
https://www.youtube.com/watch?v=AaPmH79K3IU

Espero les haya gustado, nos vemos hasta la próxima. 
Saludos,
Erik.