miércoles, 19 de noviembre de 2014

TEMA #4: ESTRUCTURAS DE CONTROL Y ESTRUCTURAS DE DATOS

ESTRUCTURAS DE CONTROL
Este término suena un poco extraño, ¿cierto? Pues, lo voy a explicar de este modo: las estructuras de control son una serie de líneas que nos permiten comprobar que se está cumpliendo una condición y también nos permiten realizar acciones repetitivas.

Por ejemplo, si tenemos un juego que pida tu nombre y si eres hombre o mujer, y quieres que dependiendo de eso muestre un personaje masculino o femenino, esto lo podemos hacer con las estructuras de control.

Descarga la aplicación de ejemplo (la aplicación se adapta a 2 idiomas, inglés y español, dependiendo de tu celular). Descargar App   

Otro ejemplo: si tenemos una aplicación que quieres que obtenga 10 números aleatorios entre 0 y 100, y quieres que los muestre en la pantalla, necesitarás conocer las estructuras de control para hacerlo.

Descarga la aplicación de ejemplo (la aplicación se adapta a 2 idiomas, inglés y español, dependiendo de tu celular). Descargar App   

En estos dos ejemplos que hemos mencionado se hace uso de las estructuras de control, sin embargo, se usan estructuras de control diferentes. Hay dos grupos de estructuras de control:
  • Estructuras de control condicionales.
  • Estructuras de control repetitivas (también llamados bucles).


Estructuras de Control Condicionales
Este grupo de estructuras nos van a permitir realizar una acción u otra siempre y cuando se cumpla con una condición. En nuestro primer ejemplo, al principio de este tema, al mostrar una u otra imagen dependiendo de si eliges hombre o mujer, ilustra el uso de las estructuras de control condicionales. En este grupo tenemos dos estructuras de control: if/else y switch. Las veremos a continuación.
  • if/else: veamos cómo se construye y un ejemplo.
Estructura
Notas
if (condición){
      acción a realizar;
} else {
      acción a realizar;
}
Para construir esta estructura de control debemos hacerlo tal cual como se muestra. Las palabras que están en cursiva las decidimos nosotros, dependiendo de lo que queramos en nuestra aplicación/juego.

Ejemplo
Notas
if (monedas == 0){
     terminarJuego = true;
} else {
     monedas -= 1;
}
Aquí tenemos una variable de tipo numérico: “monedas”; y otra variable de tipo boolean: “terminarJuego”. Lo que hace esta estructura de control es: si (if) monedas es igual a cero, el juego termina, de otra forma (else), se le resta 1 a monedas. Nota la utilización de los operadores relacionales para colocar la condición.

Descarga un ejemplo de código en el que se utiliza esta estructura de control (Idioma Español). Descargar Código   

Descarga la aplicación de ejemplo “if_else” (la aplicación se adapta a 2 idiomas, inglés y español, dependiendo de tu celular). Descargar App  

  • switch: permite un control condicional múltiple. Veamos cómo se construye y un ejemplo.
Estructura
Notas
switch (variable){
     case valor1:
          acción a realizar;
          break;
     case valor2:
          acción a realizar;
          break;
     case valorX:
          acción a realizar;
          break;
     default:
          acción a realizar;
          break;
}
Para construir esta estructura de control debemos hacerlo tal cual como se muestra. Las palabras que están en cursiva las decidimos nosotros, dependiendo de lo que queramos en nuestra aplicación/juego. La variable puede ser numérica o de otro tipo. valor1, valor2 y valorX son los distintos valores que puede tomar la variable. Siempre es necesario colocar “break;” porque si no ocurrirá un error. En el caso de que no se cumpla con alguna de las condiciones colocadas (case), ocurre la acción colocada en default. Podemos colocar cuantos “case” queramos.

Ejemplo
Notas
switch (lugar){
     case 1:
          premio = 100;
          break;
     case 2:
          premio = 50;
          break;
     case 3:
          premio = 20;
          break;
     default:
          premio = 0;
          break;
}
Imaginemos un juego de carrera de motos donde debemos competir con otros y ganar dinero para comprar piezas para la moto. Aquí tenemos dos variables de tipo numérico: “lugar” y “premio”. Lo que hace esta estructura de control es: si el jugador llegó de 1er lugar el premio es 100$, si llegó de 2do lugar el premio es 50$, si llegó de 3er lugar el premio es 20$; si no llegó de 1ro, 2do o 3ro, se cumple la acción colocada en default (el premio es 0$).

Descarga un ejemplo de código en el que se utiliza esta estructura de control (Idioma Español). Descargar Código   
Descarga la aplicación de ejemplo “switch” (la aplicación se adapta a 2 idiomas, inglés y español, dependiendo de tu celular). Descargar App   

Estructuras de Control Repetitivas (Bucles)
Este grupo de estructuras nos van a permitir realizar una acción una y otra vez. Algo interesante es que las estructuras de control repetitivas también dependen de una condición; es decir, la acción se repetirá una y otra vez siempre y cuando se siga cumpliendo la condición impuesta. En nuestro segundo ejemplo, al principio de este tema, al obtener una y otra vez un número aleatorio estamos haciendo uso de las estructuras de control repetitivas, y la condición sería que se obtendrán números aleatorios hasta que ya se tengan 10 números. En este grupo tenemos tres estructuras de control: for, while y do/while. Las veremos a continuación.

  • for: es el más simple. Veremos cómo se construye y un ejemplo.
Estructura
Notas
for (contador ; condición ; incremento){
     acción a realizar;
}
Lo que hace es repetir la acción mientras se cumpla la condición. El contador es el que lleva la cuenta. La condición se coloca igual que se hizo en if (con operadores relacionales). El incremento es cuánto se le va a sumar al contador cada vez que se cumpla la acción a realizar.

Ejemplo
Notas
for (int cuenta = 1; cuenta <= 10; cuenta++){
     numero += cuenta;
}
Aquí tenemos una variable numérica de tipo int (el tipo int es el más comúnmente usado): “valor”. Lo que hace esta estructura de control es: le suma el valor de “cuenta” a “numero” con cada vuelta; esto se hará mientras se cumpla la condición. Con cada vuelta se incrementa el valor de cuenta en una unidad (cuenta++). Cuando cuenta sea igual a 10 se detendrá el bucle.

Descarga un ejemplo de código en el que se utiliza esta estructura de control (Idioma Español). Descargar Código   
Descarga la aplicación de ejemplo “for” (la aplicación se adapta a 2 idiomas, inglés y español, dependiendo de tu celular). Descargar App   

  • while:
Estructura
Notas
while (condición){
     acción a realizar;
}
Repite una acción mientras se cumpla la condición.

Estructura
Notas
while (cuenta < 100){
     cuenta++;
}
Tenemos una variable de tipo numérico: “cuenta”. Lo que hace este bucle es: aumenta el valor de cuenta en una unidad con cada vuelta (acción), mientras cuenta sea menor a 100 (condición).

Descarga un ejemplo de código en el que se utiliza esta estructura de control (Idioma Español). Descargar Código   
Descarga la aplicación de ejemplo “while” (la aplicación se adapta a 2 idiomas, inglés y español, dependiendo de tu celular). Descargar App   

  • do/while:
Estructura
Notas
do {
     acción a realizar;
} while (condición);
Es similar a while con la diferencia de que la acción siempre se ejecutará al menos una vez, y esto es debido a que primero realiza la acción y después comprueba si se cumple la condición.

Estructura
Notas
do {
     cuenta++;
} while (cuenta < 100);
Tomando la variable “cuenta” del ejemplo anterior, lo que hace este bucle es: aumenta el valor de la variable en una unidad y después comprueba si cuenta es menor a 100. Si por ejemplo, el valor inicial de cuenta es 200, el bucle le sumará una unidad a cuenta antes de darse cuenta de que la condición  no se cumple.

Descarga un ejemplo de código en el que se utiliza esta estructura de control (Idioma Español). Descargar Código
Descarga la aplicación de ejemplo “do_while” (la aplicación se adapta a 2 idiomas, inglés y español, dependiendo de tu celular). Descargar App  



ESTRUCTURAS DE DATOS
Aquí en estructura de datos lo que vamos a ver son dos elementos: El String y los arrays.

String
Un String es un elemento de Java que nos permite almacenar una cadena de caracteres (secuencia de letras), por ejemplo, “Hola, me llamo Arán”. Algo que siempre debemos tener en cuenta es que las cadenas de caracteres van encerradas entre comillas (“”).
Para crear una variable de tipo String se hace como vimos en el capítulo de variables:
  • Primero se coloca el tipo de variable, en este caso será String.
  •  Luego se coloca el nombre de la variable, en este caso la llamaremos texto.

Tenemos entonces nuestra variable: String texto, y podemos asignarle un valor a través del operador “=”: String texto = “Hola, me llamo Arán”;. También podemos asignarle el valor de una variable de tipo String a otra del mismo tipo: String cadena = texto;, en este ejemplo, el valor de la variable “cadena” será “Hola, me llamo Arán”. También es posible usar el operador “+” para hacer una cadena de caracteres a partir del valor de diversas variables de tipo String, o variables String y numéricas; veamos cómo:

Variables
Ejemplo
Significado
String texto1 = “Hola,”;
String cadena = texto1 + texto2 + texto3 + texto4;
cadena = “Hola, me llamo Arán”;
String texto2 = “ me”;
String texto3 = “ llamo”;
String cadena = texto4 + texto2 + texto6 + texto3;
cadena = “ Arán me años llamo”;
String texto4 = “ Arán”;
String texto5 = “ y tengo ”;
String cadena = texto1 + texto2 + texto3 + texto4 + texto5 + edad + texto6;
cadena = “Hola, me llamo Arán y tengo 20 años”;
int edad = 20;
String texto6 = “ años.”;

Nota: Algo importante que debes notar es que al principio de las cadenas hay un espacio en blanco (un espacio), esto es para que cuando se peguen las cadenas las palabras queden separadas. Si no hubiera puesto los espacios en  blanco el resultado de cadena en el primer ejemplo sería “Hola,mellamoArán”. Debes notar también que al final de texto6 hay un espacio en blanco, el cual es para que la edad quede separada y no pegada. Si no hubiera puesto ese espacio en blanco al final del texto6 el resultado de cadena en el tercer ejemplo sería cadena = “Hola, me llamo Arán y tengo20 años”.


Arrays

Un array es como una caja que contiene elementos de un mismo tipo y que tienen un mismo nombre. Pero, te preguntarás ¿cómo es esto?, porque en el capítulo de variables vimos que no pueden haber dos o más variables con el mismo nombre, pues es sencillo, y lo explicaremos con un ejemplo gráfico.


En este ejemplo vemos que dentro de la caja hay varios elementos, los cuales son variables. Estas variables tienen el mismo nombre que la caja pero se enumeran usando corchetes ([]). Veamos el siguiente ejemplo.


En este ejemplo tenemos un array de tipo numérico. ¿Cómo sabemos que es un array?, pues los arrays se definen igual que una variable normal (tipo y nombre), pero con la diferencia de que inmediatamente después del tipo se colocan unos corchetes ([]). Pero, ¿para qué son estos corchetes?, bueno, los corchetes nos van a permitir determinar cuántos elementos tendrá la caja dentro y nos va a permitir hacer referencia a cada uno de esos elementos, como vemos en el ejemplo (aNum[0], aNum[1],...).

Veamos un ejemplo real en programación:

Ejemplo
Notas
int[] datos;
En la primera línea vemos cómo se define un array, en este caso de tipo numérico. Vemos el tipo: int; y el nombre: datos.
En la segunda línea vemos el array y cómo se determina cuántos elementos contendrá, en este caso, 10.
Podemos definir el array y de una vez determinar cuántos elementos contendrá, como se muestra en la tercera línea.
int[] datos = new int[10];
int[] datos;
datos = new int[10];

Para hacer referencia a un elemento específico dentro del array lo especificamos con un número dentro de corchetes; por ejemplo, si tenemos un array de 2 elementos y queremos colocar que el valor del primer elemento sea 1000, lo hacemos así:
Ejemplo
Notas
int[] puntos = new int[2];
puntos[0] = 1000;
Vemos en la segunda línea que para acceder a una variable específica usamos los corchetes. También es importante destacar que si tenemos un array de 2 elementos, los elementos serán [0] y [1]; si tenemos un array de 1000 elementos, los elementos serán [0],..., [999]. Siempre se comienza con el cero.

Haz clic aquí para descargar un ejemplo de código en el que se utilizan los arrays (Idioma Español). Descargar Código   
Descarga la aplicación de ejemplo “arrays” (la aplicación se adapta a 2 idiomas, inglés y español, dependiendo de tu celular). Descargar App   

Nota: al crear un array, éste puede ser de cualquier tipo. En este caso vimos un ejemplo con arrays numéricos, sin embargo, los arrays pueden ser de tipo String (String[]), boolean (boolean[]), de tipo InputStream (InputStream[]), de otro tipo numérico (short[], long[], float[], double[]); siempre que se le coloquen los corchetes ([]), luego del tipo de variable, será un array.

domingo, 16 de noviembre de 2014

TEMA #3: VARIABLES Y OPERADORES


VARIABLES
Cuando creamos una aplicación/juego, existen palabras que debemos usar para designar cada característica del mismo. Imaginemos una selva donde hay animales de diversos tipos, cada uno de ellos tiene un nombre y hay unos que son herbívoros, otros carnívoros; para entender el concepto de variable tengamos este ejemplo a mano.
Una variable es una palabra que permite almacenar un valor, pudiendo ser este valor de diversos tipos. Se define a partir de:
  1. Un nombre.
  2. Un tipo.

Ejemplo: String hola;
Donde String es el tipo de variable y hola es el nombre de la variable. Primero se coloca el tipo y luego el nombre.

Nombre de la Variable:
Al crear una variable debemos asignarle un nombre, que puede ser cualquiera que le quieras colocar. En ocasiones es útil asignar nombres similares a distintas variables que son del mismo tipo, pero colocándole números al final para diferenciarlas, por ejemplo, String hola1, String hola2, String hola3,...
Al colocarle nombre a una variable debemos tener en cuenta ciertas reglas:
  1. No pueden contener espacios en blanco. Si una variable está compuesta de dos palabras y se quiere separar se puede utilizar “_” en lugar de un espacio en blanco.
  2. Dos variables no pueden tener el mismo nombre.
  3. No podemos utilizar palabras reservadas de Java, por ejemplo: void, class, private, Form, Display, entre otras.

Nota: siempre debemos tener en cuenta que en programación Java se hace distinción entre letras mayúsculas y minúsculas, así que, al nombrar una variable se debe tomar muy en cuenta esto, porque no es igual una variable llamada “hola” que una llamada “Hola”, ni una llamada “Carro” que otra llamada “CaRRo”.

Es recomendado nombrar las variables de modo que cumplan con estas dos condiciones:
  1.  Que las variables comiencen con una letra minúscula.
  2. Si la variable está compuesta por dos o más palabras, la segunda (y las siguientes también) comiencen por letra mayúscula. Por ejemplo: carroRojo, casaBlanca, pelotaAmarilla,... También podemos utilizar “_” para separar las palabras: carro_rojo, casa_blanca, pelota_amarilla,...


Tipo de la Variable:
Al igual que el nombre, siempre que creemos una variable debemos definir su tipo. El tipo define qué dato es capaz de almacenar una variable. Los tipos de datos que debemos conocer son los siguientes:
  • String = Cadena de caracteres (cadena de letras). El tipo String en Java nos permite crear objetos que contienen texto (palabras, frases, etc.). El texto debe ir siempre entre comillas.
  •  char = carácter ASCII (Carácter simple).
  • byte = número entero de 8 bits. Almacena números desde el -128 hasta el 127; si le asignas un valor menor a -128 o mayor a 127 a una variable de tipo byte ocurrirá un error.
  • short = número entero de 16 bits.
  • int = número entero de 32 bits.
  • long = número entero de 64 bits.
  • float = número en punto flotante de 32 bits. Punto flotante quiere decir que pueden almacenar tanto números enteros como decimales.
  • double = número en punto flotante de 64 bits.
  • boolean = valor verdadero o falso. Este tipo de variable sólo puede tener dos valores, “true” (verdadero) o “false” (falso).


Entonces, una variable se define a partir de un nombre y un tipo; así, una variable definida como String hola es una variable de tipo “String” llamada “hola”. Si tenemos una variable definida como int numero será una variable de tipo “int” llamada “numero”. Citando el ejemplo del principio, imaginemos que la selva es nuestra aplicación/juego, y los animales son las variables; los animales tienen nombres diferentes, al igual que las variables, y son de tipos diferentes (herbívoros o carnívoros), al igual que las variables pueden ser de tipos diferentes.




OPERADORES
Podemos asignar un valor a una variable a través de “=”; ejemplo: String hola = “Hola”; int numero = 20;. Además de “=” hay otros operadores que nos permiten relacionar la variable con distintos valores. Los veremos a continuación.
Nota: si vemos en el párrafo anterior, luego de definir la variable y asignarle un valor encontramos un punto y coma (;), esto es porque cada instrucción en Java termina en punto y coma.

Hay 5 tipos de operadores:
  • Operadores de Asignación.
  • Operadores Aritméticos.
  • Operadores Relacionales.
  • Operadores Lógicos.
  • Operadores a Nivel de Bit.


Operadores de Asignación
Se usan para definir el valor de la variable. Puede ser un valor de tipo “String” o de tipo numérico (int, long,...).
Operador
Significado
a = b
a = b
a += b
a = a + b
a -= b
a = a – b
a *= b
a = a * b
a /= b
a = a / b
a %= b
a = a % b
a & b
a = a & b
a |= b
a = a | b

Operadores Aritméticos
Hay dos tipos: los unarios y los binarios.
Los operadores aritméticos unarios son: ++ (doble más) y -- (doble menos), y se usan para aumentar o disminuir en una unidad el valor numérico de una variable. Si se sitúa después de la variable hablamos de postincremento (o postdecremento), es decir, la variable es incrementada (o decrementada) después de haberse hecho uso de ella. Si se sitúa antes de la variable hablamos de preincremento (o predecremento), es decir, primero se modifica su valor y después se hace uso de la variable.

Los operadores unarios situados después de la variable pueden expresarse como si fueran operadores relacionales, sin alterar su función:
Operador Unario

Operador Relacional
a++
Es igual a
a += 1;
a--
a -= 1;

Los operadores binarios son:
Operador
Significado
a + b
Suma de a y b.
a - b
Resta de a y b.
a * b
Multiplicación de a por b.
a / b
División entre a y b.
a % b
Resto de la división entre a y b.

Operadores Relacionales
Nos permiten comparar dos variables o valores, y devuelve un valor de tipo boolean (true o false).
Operador
Significado
a > b
Devuelve true si a es mayor que b, de otra forma devolverá false.
a < b
Devuelve true si a es menor que b, de otra forma devolverá false.
a >= b
Devuelve true si a es mayor o igual que b, de otra forma devolverá false.
a <= b
Devuelve true si a es menor o igual que b, de otra forma devolverá false.
a == b
Devuelve true si a es igual que b, de otra forma devolverá false.
a != b
Devuelve true si a es distinto de b, de otra forma devolverá false.

Operadores Lógicos
Nos permiten realizar comprobaciones lógicas del tipo Y, O y NO, y al igual que los operadores relaciones, devuelven un valor boolean (true o false).
Operador
Significado
a && b
Devuelve true si a y b son verdaderos.
a || b
Devuelve true si a ó b son verdaderos.
!a
Devuelve true si a es false, y false si a es true.
Este tipo de operadores se usan conjuntamente con los relacionales o el de asignación “=”. Ejemplo: ((b=c)&&(d=e)). En esta expresión vemos el operador lógico “&&” y significa que si b es igual a c y d es igual a e, devolverá true. Ambas condiciones a los lados de “&&” deben cumplirse para que devuelva el valor true, si una no se cumple, devolverá el valor false.

Operadores de Bits
Permiten manipular los bits. Nunca los he usado y no sé cómo, pero igual acá están.
Operador
Significado
a >> b
Desplaza los bits de a hacia la derecha b veces.
a << b
Desplaza los bits de a hacia la izquierda b veces.
a <<< b
Igual que el anterior pero sin signo.
a & b
Suma lógica entre a y b.
a | b
O lógico entre a y b.
a ^ b
O exclusivo entre a y b.
~a
Negación lógica de a.

Nota: si tienes dudas con respecto a cómo colocar símbolos como “|”, “^”, “~” u otros, haz clic aquí

DESCARGAR EN PDF