1. Contenidos
1.1 ¿Qué son las variables?
Los programas trabajan continuamente con datos. Algunos datos llegan desde fuera del programa, como la edad de una persona, el precio de un producto o la nota de un examen. A estos datos los llamamos datos de entrada.
Otros datos son el resultado final que el programa debe mostrar o guardar, como el importe total de una factura, el sueldo final de un trabajador o un mensaje indicando si una persona es mayor de edad. A estos datos los llamamos datos de salida.
Además, durante la ejecución pueden aparecer datos intermedios, que no son la entrada ni la salida final, pero que ayudan a realizar los cálculos. Por ejemplo, antes de calcular el total de una factura podemos calcular primero el subtotal sin IVA.
Todos esos datos se guardan en la memoria del ordenador mediante variables. Podemos ver una variable como un espacio en memoria para guardar un dato.
Idea clave: una variable es como una caja con una etiqueta. La etiqueta es el nombre de la variable y dentro de la caja se guarda un valor.
Nombre, tipo y valor
Una variable tiene tres elementos fundamentales:
- Nombre: identifica la variable dentro del programa. Por ejemplo:
edad, precio o nombreCliente.
- Tipo: indica qué clase de dato puede guardar. Por ejemplo: número entero, número decimal, texto o valor lógico.
- Valor: es el dato concreto que contiene en un momento determinado. Por ejemplo:
18, 24.95, "Ana" o true.
Las variables pueden cambiar de valor durante la ejecución del programa. Cuando una variable recibe un nuevo valor, el valor anterior se pierde porque queda sustituido por el nuevo.
// En pseudocódigo
Algoritmo Variables_1
Definir edad Como Entero
edad <- 16
Escribir edad
edad <- 17
Escribir edad
FinAlgoritmo
// En Java
Integer edad = 16;
System.out.println("Edad inicial: " + edad);
edad = 17;
System.out.println("Edad actual: " + edad);
En este ejemplo, la variable edad empieza guardando el valor 16. Después se le asigna el valor 17. A partir de ese momento, el valor anterior ya no está guardado en esa variable.
1.2 Tipos de datos
El tipo de dato indica qué clase de información puede guardar una variable y qué operaciones podemos hacer con ella. No es lo mismo sumar dos números que unir dos textos o comprobar si una condición es verdadera o falsa.
| Tipo general |
Utilidad |
Ejemplos |
Tipo en PSeInt |
Tipo habitual en Java |
| Entero |
Guardar números sin decimales. |
0, 12, -5 |
Entero |
int |
| Real |
Guardar números con decimales. |
9.5, 19.99, -3.25 |
Real |
Double |
| Texto |
Guardar palabras, frases o cadenas de caracteres. |
"DAW", "Cliente", "Aprobado" |
Cadena o Caracter |
String |
| Lógico |
Guardar un valor verdadero o falso. |
Verdadero, Falso, true, false |
Logico |
Boolean |
Importante: en Java los números decimales se escriben con punto, no con coma. Por ejemplo, se escribe 12.50, no 12,50.
Ejemplos
// En pseudocódigo
Definir unidades Como Entero
unidades <- 5
Definir precio Como Real
precio <- 19.99
Definir producto Como Texto
producto <- "Teclado"
Definir hayStock Como Lógico
hayStock <- Verdadero
// En Java
Integer unidades = 5;
Double precio = 19.99;
String producto = "Teclado";
Boolean hayStock = true;
1.3 Declaración de variables
Declarar una variable consiste en decirle al programa que queremos reservar un espacio en memoria para guardar un dato. Al declararla, normalmente indicamos su tipo y su nombre.
Declaración de variables en PSeInt
En PSeInt se utiliza la palabra Definir, el nombre de la variable y el tipo de dato.
Algoritmo EjemploDeclaracion
Definir edad Como Entero
Definir precio Como Real
Definir nombre Como Cadena
Definir aprobado Como Logico
FinAlgoritmo
Declaración de variables en Java
En Java escribimos primero el tipo de dato y después el nombre de la variable. La instrucción termina con punto y coma.
public class EjemploDeclaracion {
public static void main(String[] args) {
Integer edad;
Double precio;
String nombre;
Boolean aprobado;
}
}
Consejo: usa nombres claros. Es mejor escribir precioProducto que p, porque el código se entiende mejor.
1.4 Asignación de valores
Asignar un valor consiste en guardar un dato dentro de una variable. La asignación puede hacerse al mismo tiempo que se declara la variable o más adelante.
Cuando se asigna un nuevo valor a una variable, el valor anterior se sustituye.
Asignación en PSeInt
En PSeInt se suele utilizar el operador <- para asignar valores.
Algoritmo EjemploAsignacion
Definir edad Como Entero
Definir precio Como Real
Definir nombre Como Cadena
Definir aprobado Como Logico
edad <- 18
precio <- 24.95
nombre <- "Laura"
aprobado <- Verdadero
edad <- 19
FinAlgoritmo
IMPORTANTE: En PSeInt se utiliza la "flecha hacia la izquierda" (<-) como operador de asignación para dejar claro que el valor a la derecha se asigna a la variable de la izquierda.
Asignación en Java
En Java se utiliza el operador = para asignar valores. Aunque se parece al símbolo matemático de igualdad, en programación significa: guarda el valor de la derecha dentro de la variable de la izquierda.
public class EjemploAsignacion {
public static void main(String[] args) {
Integer edad;
Double precio;
String nombre;
Boolean aprobado;
edad = 18;
precio = 24.95;
nombre = "Laura";
aprobado = true;
edad = 19;
}
}
Declarar y asignar en una sola línea
En Java también podemos declarar una variable y asignarle un valor inicial en la misma instrucción.
Integer edad = 18;
Double precio = 24.95;
String nombre = "Laura";
Boolean aprobado = true;
1.5 Constantes y literales
Una constante es un valor con nombre que no debe cambiar durante la ejecución del programa. Se utiliza para representar datos fijos, como el IVA, el número máximo de intentos o la mayoría de edad.
En Java se crean constantes usando la palabra final. Por convención, los nombres de las constantes se escriben en mayúsculas y, si tienen varias palabras, se separan con guiones bajos.
final Double IVA = 0.21;
final Integer MAYORIA_EDAD = 18;
final String NOMBRE_CENTRO = "IES Castelar";
Si intentamos cambiar el valor de una constante, Java mostrará un error de compilación.
final Integer MAYORIA_EDAD = 18;
// Error: una constante no puede cambiar de valor
MAYORIA_EDAD = 21;
Literales
Un literal es un valor escrito directamente en el código. No tiene nombre propio, simplemente aparece tal cual en una instrucción.
Integer edad = 20; // 20 es un literal entero
Double precio = 15.75; // 15.75 es un literal real
String nombre = "Carlos"; // "Carlos" es un literal de texto
Boolean activo = true; // true es un literal lógico
char inicial = 'C'; // 'C' es un literal de carácter
Diferencia: una constante tiene nombre y se puede reutilizar; un literal es el valor escrito directamente en el código.
1.6 Comentarios
Los comentarios son textos que escribimos dentro del código para explicar qué hace el programa. El ordenador los ignora al ejecutar el programa, pero ayudan a que una persona pueda entenderlo mejor.
Comentar el código es útil para explicar decisiones importantes, aclarar fórmulas, separar partes del programa o dejar anotaciones para futuras revisiones.
No abuses de los comentarios: un buen nombre de variable ya explica mucho. Es mejor escribir precioConIva que escribir x y añadir un comentario para explicar qué es.
Comentarios en PSeInt
En PSeInt se utiliza habitualmente // para escribir comentarios de una línea.
Algoritmo EjemploComentarios
// Declaramos las variables necesarias
Definir precio Como Real
Definir iva Como Real
Definir total Como Real
// Asignamos valores de ejemplo
precio <- 100
iva <- 0.21
// Calculamos el total con IVA
total <- precio + precio * iva
FinAlgoritmo
Comentarios en Java
En Java existen tres formas habituales de comentar el código:
// para comentarios de una sola línea.
/* ... */ para comentarios de varias líneas.
/** ... */ para comentarios de documentación.
public class EjemploComentarios {
public static void main(String[] args) {
// Comentario de una línea
Double precio = 100;
Double iva = 0.21;
/*
* Calculamos el total sumando al precio
* el importe correspondiente al IVA.
*/
Double total = precio + precio * iva;
System.out.println("Total: " + total);
}
}
1.7 Ámbito de las variables
Llamamos ámbito de una variable a la parte del programa en la que esa variable puede utilizarse. En Java, el ámbito de una variable es el bloque (y los sub-bloques contenidos en él) en el que la variable ha sido definida.
Si una variable se declara dentro de un bloque, solo puede utilizarse dentro de ese bloque y en los bloques que estén contenidos dentro de él.
public class EjemploAmbito {
public static void main(String[] args) {
Integer a = 1; // a está definida en el bloque principal
System.out.println("a = " + a);
{ // Sub-bloque
Integer b = 2;
System.out.println("b = " + b);
System.out.println("a = " + ++a); // a es accesible aquí
}
System.out.println("b = " + b); // ERROR: b no está definida en este bloque
}
}
Observa: la variable a está definida en el bloque principal, por eso puede usarse tanto dentro como fuera del sub-bloque. En cambio, la variable b está definida dentro del sub-bloque, por lo que solo puede usarse allí. Intentarla usar fuera produce un error de compilación.
1.8 Tipos primitivos
En Java existen dos formas de trabajar con tipos de datos numéricos y lógicos: los tipos primitivos y los wrappers (envoltorios).
Los tipos primitivos son los tipos básicos que vienen heredados de C. Los wrappers son clases que encapsulan esos valores primitivos, proporcionando métodos adicionales.
| Tipo primitivo |
Wrapper (clase) |
Ejemplo |
int |
Integer |
int edad = 25; |
float |
Float |
float precio = 19.99f; |
double |
Double |
double altura = 1.75; |
boolean |
Boolean |
boolean activo = true; |
char |
Character |
char inicial = 'A'; |
En este curso usaremos principalmente los wrappers (Integer, Double, etc.) porque ofrecen más funcionalidades y son más fáciles de usar. Sin embargo, es importante conocer los tipos primitivos porque aparecen frecuentemente en código de otros programadores.