Pildoritas de POO y Java: Conceptos básicos de programación. Datos

Antes de adentrarnos a la Programación Orientada a Objetos tenemos que ver algunos conceptos básicos indispensables para poder entender cualquier programa. Para ello explicaremos mejor qué es un algoritmo y veremos que elementos contiene. Cada una de sus partes se dividirá en una Pildorita.

Por primera vez habrán algunos ejemplos en Java, pero serán muy básicos y completamente alejados de la POO. La idea de estas tres pildoritas será aprender la sintáxisis de Java más básica antes de adentrarnos en POO.

 

¿Qué es un algoritmo?

Un algoritmo es un conjunto de instrucciones o reglas ordenadas con principio y final, que describen como realizar un problema o actividad hasta llegar a su solución.

Las instrucciones pueden servir para almacenar información, realizar operaciones, o dirigir el orden de la ejecución de las sentencias del algoritmo.

La programación no es más que describir algoritmos comprensibles para un ordenador, por lo que los conceptos de la algorítmica son en sí mismos los de la programación.

 

Elementos de un algoritmo

Datos

Es la información con la cual trabaja el programa para resolver el problema. Los datos son fundamentalmente numéricos y caracteres, aunque hay otros tipos como los booleanos, que indican Verdadero o Falso, pero que pueden resumirse en 1 ó 0. También existen tipos más complejos utilizados para organizar los tipos simples, como Arrays, Listas, tablas hash, etc.

Variables

Son contenedores de datos, por lo que también son del tipo de dato que contienen. Este contenedor puede almacenar cualquier valor y que varíe según el tiempo de ejecución en el que se encuentre el programa.

En algunos lenguajes el tipo de las variables se decide en tiempo de ejecución, dependiendo del dato que contengan en ese momento, lo que se conoce como lenguajes poco tipados. Por el contrario, otros lenguajes, en cambio, si que necesitan que se indique el tipo de la variable. Este es el caso de Java, que es fuertemente tipado.

Para definir una variable en Java, bastaría con la siguiente sentencia:

int total;

También se puede declarar una variable y al mismo tiempo asignarle un valor.

int total = 5;

Constantes

Las constantes contienen también datos, pero el valor de este dato jamás cambiará. Un ejemplo de constante en java sería:

static final int PI = 3,1416;

Realmente la palabra reservada static no es necesaria, pero con ella indicamos que esa variable pertenece a la clase y es compartida por todas las instancias de la misma (quizás ahora os suene a chino pero en unas pildoritas entenderéis por qué lo pongo así :P)

Tipos de datos

Los datos pueden ser numéricos (de carácter matemático) o alfanuméricos (para representar caracteres), pero los lenguajes definen una serie de tipos dentro de estos dos grandes grupos. Por otra parte, los tipos pueden ser primitivos, es decir, que estén incrustados dentro del lenguaje y complejos, que son formas más sofisticadas de almacenar los datos.

 

Tipos primitivos

Numéricos

Enteros
Tipo Longitud Rango
byte Tamaño 8-bits {-128, 127}
short Tamaño 16-bits {-32768, 32767}
int Tamaño 32-bits {-2147483648, 2147483647}
long Tamaño 64-bits {-9223372036854775808, 9223372036854775807}

 

Ejemplos en Java:

byte b = 10;
short  s = 5;
int i = 127;
long l  = -2839403;

 

Decimales
Tipo Longitud Rango
float Tamaño 32-bits.  
double Tamaño 64-bits  

 

Ejemplos en Java:

float f = -23412.234f; 
double d = 12349.29857;

Pese a que Java es fuertemente tipado, permite poder sumar números de diferentes tipos. El intérprete convertirá (casting) el dato con un tipo menos preciso en el que más. El resultado, eso sí, se deberá almacenar en una variable del tipo más preciso.

Veamos un ejemplo:

d = d + i; //d valdrá 12476.29857

* Con la doble barra indicamos comentarios en Java.

 

Si intentáramos hacer la operación i = i + d; tendríamos un error, a no ser que forzáramos a Java por medio de un Casteo.

i = (int) (i + d) //En i se almacenaría el número 12603

Lógicos

Lógicos
Tipo Descripción
boolean Puede contener los valores true o false.

 

Ejemplo en Java:

boolean si = true;

 

Alfanuméricos

Caracteres
Tipo Longitud Rango
char Tamaño 16-bits Unicode. Desde ‘u0000’ a ‘uffff’. {0, 65535}

 

Ejemplo en Java:

char letraA = 'A';
char letraM = \u004d; 
char letraZ = 90;

Tipos complejos

En Java los tipos complejos no son más que Clases. Aún no hemos ahondado en este concepto, pero basta decir que las clases son tipos que no van incrustados en el propio lenguaje. Hay multitud de estos tipos complejos, todos ellos encuadrados en la librería java.util. Ya veremos que son las librerías, pero por ahora basta decir que son definiciones de tipos almacenadas en ficheros externos.

String

Los String son conjuntos (arrays) de caracteres. Aunque los Arrays no se explican hasta el siguiente punto, tampoco se necesita saber por ahora que son, ya que para nosotros su funcionamiento es trasparente. Para crear un string sólo hay que entrecomillar varios caracteres.

String titulo = “Pildoritas de POO y Java”;

Array

Un array es un conjunto de datos del mismo tipo y ordenados. Para entender este concepto hay que pensar en “cajitas” consecutivas que contienen datos del tipo del array.

Lo mejor para entenderlo es verlo visualmente. Veamos un array de int:

0 1 2 3 4
1 3 -2 8 5

 

Para crear un array en Java lo haríamos de la siguiente forma:

int[] arrayEnteros = {5, 3, -2, 8, 5};

Los arrays en Java tienen una dimensión finita que se define a la hora de su creación. En nuestro ejemplo al inicializarlo con los valores anteriores, el intérprete ya sabe que el array es de longitud 5. No obstante, también pueden definirse sin dimensión:

int[5] arrayEnteros;

Además, el número de “cajita” de un array se enumera de 0 a N-1, siendo N el tamaño del array.

Para crear un “array” del cual desconocemos su número de elementos de antemano, utilizaremos la clase Vector, que además de añadir esta mejora, ofrece métodos de inserción o borrado entre dos elementos, etc.

Por ejemplo, si quisiéramos cambiar el valor del tercer elemento de -2 a 0, haríamos lo siguiente:

arrayEnteros[2] = 0;

Los arrays pueden ser de más de una dimensión, pero para eso es mejor usar otros tipos, como las matrices.

Matriz

La matriz no es más que un array de dos dimensiones. Es, en definitiva cuenta, una tabla. Veamos mejor con un ejemplo su estructura y funcionamiento en Java.

int [][] matriz = {{2,4,5,6},{8,10,12,14},{16,18,20, 22}};

Lista

Las Listas (ArrayList) son también arrays dinámicos, como en el caso de los vectores, pero hay una serie de diferencias que hacen que ambos tipos de colecciones convivan en armonía.

Los vectores tienen la característica thread-safety. No entraremos mucho en el tema, pero hay una disciplina de la programación, la programación concurrente, por la que varios procesos pueden ejecutar al mismo tiempo un mismo código. En ese caso se comparten variables, cuestión que crea muchos problemas de inconsistencia de datos, interbloqueos, etc. Los vectores controlan internamente que nunca dos procesos toquen al mismo tiempo un elemento de su colección de datos.

Esta característica tan deseable en concurrencia tiene una desventaja, y es que las variables de tipo vector son más pesadas y ocupan más memoria. Por tanto, si sabemos que el conjunto de elementos no se va a ver afectado por la concurrencia, la opción de la Lista es más deseable.
 
 
Y ya llegamos al final de esta primera Pildorita de conceptos básicos. En la próxima pildorita veremos los Operadores.

Índice de Pildoritas

Share