Iniciación a la programación: Entorno de desarrollo, Tipos y Variables (parte 3)

Estándar

En esta parte de nuestro curso de iniciación a la programación vamos a comenzar explicando los primeros conceptos a tener en cuenta cuando escribimos nuestro código. En primer lugar una pequeña introducción acerca de la configuración de nuestro entorno de desarrollo para poder escribir, compilar y ejecutar el código que escribamos. Con ello empezamos.

Entorno de desarrollo

Para comenzar a desarrollar necesitamos básicamente un editor de texto (si tiene autocompletado o resaltado de sintaxis mucho mejor), un compilador y un entorno de ejecución. Para programar en Java, como en casi cualquier lenguaje de programación, cualquier editor nos sirve ya sea un IDE avanzado (Netbeans, por ejemplo) o un bloc de notas.

Los ficheros que escribiremos, que tendrán la extensión .java, deben ser compilados para poder ser ejecutados por la máquina virtual de Java (o JVM). Dicho compilador lo obtendremos instalando el JDK (Java Development Kit) correspondiente al sistema operativo o distribución de linux que usemos.

Estos ficheros son compilados a un lenguaje máquina que entiendo la JVM y que es ejecutado usando un intérprete, JRE (Java Runtime Editor), que en nuestro caso no necesitaremos instalar ya que viene incluido en el JDK.

Tipos de datos

Una de las principales características de un lenguaje de programación son los datos que puede manejar o almacenar. Estos tipos dependen del paradigma en el que estemos programando además del lenguaje que usemos. En el paradigma que vamos a utilizar en el curso podemos dividir los tipos de datos en dos grupos principales:

Tipos básicos

Estos tipos son tipos los tipos comunes usados en todos los lenguajes de programación y también son llamados tipos primitivos y los diferenciamos de los demás porque no ocupan las mismas posiciones en la memoria de la máquina virtual, no se reserva espacio para ellos. Las palabras reservadas para definir estos tipos primitivos, en Java, se escriben en minúsculas, lo cual sería otra diferenciación a simple vista con respecto a los demás objetos. Los podemos clasificar en:

  • Números de punto fijo
    Son los números que no tienen decimales y en Java son byte, short, int y long, usan respectivamente 8, 16, 32 y 64 bits y el más usado es el int. Los demás son usados cuando los requisitos de memoria son más importantes o necesitamos una precisión mayor.
  • Números de punto flotante
    Estos tipos representan números con decimales y son float y double y ocupan 32 y 64 bits usando precisión IEEE 754. Como en el caso anterior, lo más usado es el float, pero puede ser necesario usar un mayor rango de valores.
  • Booleanos
    Estos tipos representan los valores de la lógica booleana y pueden tener dos únicos valores, verdadero o falso (true o false, en el lenguaje) y su palabra reservada para declararlos es boolean.
  • Caracteres
    Representación de tipo básico de un carácter Unicode de 16 bits. En general no solemos usar demasiado estos datos, pero si la conjunción de varios caracteres (o char) lo que nos forman las cadenas de caracteres, String, los cuales no son tipos básicos (como podemos ver por la mayúscula en su nombre), aunque a menudo son más usados incluso que éstos.

Objetos

Los objetos son un tipo de dato esencial en el paradigma y son las instanciaciones (reservas particulares en memoria) de una clase. Para definir un objeto de una clase determinada primero tenemos que tener definida dicha clase, con los atributos que la caractericen (que pueden ser de tipo primitivo u otros objetos) y sus métodos, de los cuales hablaremos en otro capítulo de nuestro curso.
Cuando definimos un objeto especificamos de qué clase es (clase que empieza por mayúsculas) y lo instanciamos, para definir su sitio correspondiente en memoria. Lo que ocupa dicho objeto en memoria depende básicamente de los datos que contenga internamente, por lo que puede variar entre objetos de distintas clases e incluso entre objetos de una misma clase.

Variables

Una vez vistos los principales tipos de datos que vamos a utilizar debemos saber como se declaran variables de estos tipos. Una variable no es más que un contenedor que usamos para asignarle valores para poder usarlos más tarde en el programa.
Java es un lenguaje fuertemente tipado, es decir, que sus variables deben tener un tipo cuando se definan y éste no puede cambiar; no podemos asignar un entero a una variable y pretender que tres líneas más abajo esa variable sea un carácter. Por esto, la declaración de una variable sigue el esquema de:

Tipo nombre;

Además de ser un lenguaje fuertemente tipado, todas sus sentencias terminan con un ;, excepto los bloques. A continuación podemos ver algún ejemplo de declaración de variables:

//Los comentarios en java son con doble barra
/* 
	Los multilínea con /**/
 */

//Esta variable es de tipo entero (tipo primitivo)
int entero;

//Esta otra es un objeto (aunque no está instanciado)
Clase objeto;

Cuando digo que el objeto no está instanciado quiero decir que todavía no está en memoria. Los tipos básicos no requieren su reserva en memoria por lo que una vez declarados ocupan su memoria correspondiente. En cambio en los objetos, los términos declarar e instanciar adquieren un significado igual de importante que de diferente.

En el ejemplo superior hemos declarado una variable de tipo Clase, pero todavía no podemos usarla (podemos, pero recibiremos un error poco amistoso). Las variables objeto son inicializadas, cuando se declaran, a null (valor nulo de Java) y por tanto no apuntan a ninguna zona en memoria. Para que esto no suceda deberemos instanciar la variable para que ocupe su posición en memoria.

Esto lo podemos hacer mediante la palabra reservada new, junto con el nombre de la clase de la variable. La variable objeto del ejemplo anterior la instanciaríamos de la siguiente manera:

//En líneas separadas
Clase objeto;
objeto = new Clase();

//En una misma línea
Clase objeto = new Clase();

Los paréntesis se usan para la llamada a una función, en este caso al constructor de la clase. En este caso el constructor no tiene ningún parámetro (no recibe ninguna variable entre los paréntesis) por lo que se le llama constructor por defecto (ya que no hace falta definir su contenido y se define automáticamente). Si deseamos un constructor que reciba algún parámetro, que pueden ser usado para dar valor a los atributos de la clase, deberemos definirlo en su clase correspondiente.

Un tipo de objeto que no necesita la palabra new para reservar memoria para él son las cadenas de caracteres, String, que sí son objetos pero que se inicializan como los datos primitivos y poniendo la cadena de caracteres entre comillas dobles, de la siguiente manera:

String cadena = "Hola mundo!"

Además existen otros objetos que se comportan de la misma manera que los Strings, no es nesario usar la palabra new con ellos. Estos son los llamados Wrappers que se usan para tratar a un tipo primitivo como un objeto, para poder otorgarle de las características básicas de la programación orientada a objetos, además de poder hacerlos null. Existe un Wrapper para cada tipo primitivo que hemos visto anteriormente, normalmente con su nombre en versión larga comenzando por mayúscula, como Integer o Character; aunque en otros el nombre es el mismo que el del tipo básico, solo que comenzando en mayúscula, como Short o Double.

Para darle valor a una variable de tipo primitivo usamos el operador de igualdad, como en el caso de los objetos, pero sustituyendo la palabra new por el valor que le queremos dar, como podemos ver en el siguiente ejemplo:

//Definimos un entero
int entero = 2342;

//En el caso de los caracteres usamos las comillas simples
char letra = 'h';

//En el caso de los decimales el punto
float punto = 3.4;

Las variables se pueden usar también para inicializar el valor de otras variables, siempre que sean del mismo tipo o el lenguaje permita la conversión automática. Normalmente en el caso de números la conversión automática se produce cuando la variable que recibe el valor tiene mayor precisión que la que usamos para dar el valor, ya que no se pierden datos al realizar la igualdad.

//Usamos esta variable para dar valor
int i = 3;

//Podemos usarla para variables enteras o para punto flotante
//Esta última se inicializará como 3.0 implícitamente
int j = i;
float f = j;

//Si tratamos de igualar una variable decimal a una entera
//el compilador nos avisará (posiblemente con un error)
int error = f;

Como podéis ver el uso de variables es bastante sencillo y se usan para todo en la programación. En próximas entregas veremos como el uso de variables es extensible a casi todos los ámbitos del programa y veremos otras partes importantes de los programas como son los condicionales y bucles. Además próximamente abriré un repositorio donde iré publicando los fuentes de los ejemplos que vaya escribiendo en el blog.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s