Ud4 Introduccion A Java
Ud4 Introduccion A Java
Ud4 Introduccion A Java
INTRODUCCIÓN A JAVA
Programación
CFGS DAW
2019/2020
Licencia
Nomenclatura
A lo largo de este tema se utilizarán distintos símbolos para distinguir elementos importantes
dentro del contenido. Estos símbolos son:
Importante
Atención
Interesante
ÍNDICE DE CONTENIDO
1. Introducción.................................................................................................... 4
2. Primer ejemplo.................................................................................................5
3. Elementos básicos............................................................................................7
3.1 Comentarios................................................................................................7
3.2 Identificadores.............................................................................................7
4. Tipos de datos.................................................................................................. 9
5. Declaración de variables................................................................................ 10
5.1 Ámbito de una variable...............................................................................12
5.2 Variables locales.........................................................................................12
5.3 Constantes (final).......................................................................................13
6. Operadores.................................................................................................... 14
6.1 Aritméticos................................................................................................14
6.2 Relacionales...............................................................................................15
6.3 Lógicos.....................................................................................................16
6.4 De asignación............................................................................................17
6.5 Expresiones...............................................................................................17
6.6 Precedencia de operadores.........................................................................18
6.7 La clase Math.............................................................................................19
7. Literales......................................................................................................... 20
7.1 Literales lógicos..........................................................................................20
7.2 Literales enteros.........................................................................................20
7.3 Literales reales...........................................................................................21
7.4 Literales carácter........................................................................................21
7.5 Literales cadenas........................................................................................22
8. Salida y entrada estándar...............................................................................24
8.1 Salida estándar..........................................................................................24
8.2 Entrada estándar........................................................................................25
9. Estructuras alternativas.................................................................................28
9.1 Estructura Alternativa Simple (if)..................................................................28
9.2 Estructura Alternativa Doble (if-else).............................................................29
9.3 Estructura Alternativa Múltiple (switch).........................................................31
10. ejemplos...................................................................................................... 33
10.1 Ejemplo 1................................................................................................33
10.2 Ejemplo 2................................................................................................35
11. Agradecimientos.......................................................................................... 36
PROGRAMACIÓN UD4. INTRODUCCIÓN A JAVA
1. INTRODUCCIÓN
2. PRIMER EJEMPLO
Hay que ver en detalle la aplicación anterior, línea a línea. Esas líneas de código contienen los
componentes mínimos para imprimir Hola Mundo! en la pantalla. Es un ejemplo muy simple, que
no instancia objetos de ninguna otra clase; sin embargo, accede a otra clase incluida en el JDK.
Esta línea declara la clase HolaMundo. El nombre de la clase especificado en el fichero fuente se
utiliza para crear un fichero nombredeclase.class en el directorio en el que se compila la aplicación.
En este caso, el compilador creará un fichero llamado HolaMundo.class.
Esta línea especifica un método que el intérprete Java busca para ejecutar en primer lugar. Igual
que en otros lenguajes, Java utiliza una palabra clave main para especificar la primera función a
ejecutar. En este ejemplo tan simple no se pasan argumentos.
• public significa que el método main() puede ser llamado por cualquiera, incluyendo el
intérprete Java.
• static es una palabra clave que le dice al compilador que main se refiere a la propia clase
HolaMundo y no a ninguna instancia de la clase. De esta forma, si alguien intenta hacer otra
instancia de la clase, el método main() no se instanciaría.
• void indica que main() no devuelve nada. Esto es importante ya que Java realiza una estricta
comprobación de tipos, incluyendo los tipos que se ha declarado que devuelven los
métodos.
• args[] es la declaración de un array de Strings. Estos son los argumentos escritos tras el
nombre de la clase en la línea de comandos: java HolaMundo arg1 arg2 …
3. ELEMENTOS BÁSICOS
3.1 Comentarios
En Java hay tres tipos de comentarios:
// comentarios para una sola línea
/*
comentarios de una o más líneas
*/
3.2 Identificadores
Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el
programador necesite identificar o usar.
4. TIPOS DE DATOS
Memoria
Tipo Descripción Rango de valores permitidos
ocupada
byte Número entero de 1 byte 1 byte -128 … 127
short Número entero corto 2 bytes -32768 … 32767
int Número entero 4 bytes -2147483648 … 2147483647
long Número entero largo 8 bytes -9223372036854775808 …
9223372036854775807
float Número real en coma flotante de 32 bits ±3,4*10-38 … ±3,4*1038
precisión simple
double Número real en coma flotante de 64 bits ±1,7*10-308 … ±1,7*10308
precisión doble
char Un solo carácter 2 bytes
boolean Valor lógico 1 bit true o false
Por ejemplo: si a una variable de tipo short con el valor 32.767 se le suma 1, sorprendentemente el
resultado será -32.768 (no produce un error de tipo desbordamiento como en otros lenguajes de
programación, sino que se comporta de forma cíclica).
Existe un tipo de dato compuesto llamado String que conviene conocer ya que permite
representar texto. Más adelante veremos cómo se utiliza.
5. DECLARACIÓN DE VARIABLES
Las variables pueden ser inicializadas en el momento de su declaración, es decir, se les puede dar
un valor inicial al crearlas. Por ejemplo, creamos una variable de tipo int llamada edad y le
asignamos 25 como valor inicial:
int edad = 25;
También es posible declarar varias variables en una sola línea. Por ejemplo, creamos tres variables
de tipo float llamadas precio1, precio2 y precio3:
float precio1, precio2, precio3;
Esto es equivalente a:
float precio1;
float precio2;
float precio3;
Esto es equivalente a:
float precio1 = 7.0;
float precio2 = 7.25;
float precio3 = 0.5;
Palabras clave
Las siguientes son palabras clave que no se pueden utilizar como identificadores ya que Java las
utiliza para otras cosas:
Palabras reservadas
Además, el lenguaje se reserva unas cuantas palabras más, pero que hasta ahora no tienen un
cometido específico. Son:
El ámbito de una variable depende del lugar del programa donde es declarada, pudiendo
pertenecer a cuatro categorías distintas.
1. Variable local.
2. Atributo.
3. Parámetro de un método.
4. Parámetro de un tratador de excepciones.
Por ahora utilizaremos solo variables locales, las demás categorías las veremos en posteriores
unidades.
Una variable local se declara dentro del cuerpo de un método de una clase y es
visible únicamente dentro de dicho método.
Se puede declarar en cualquier lugar del cuerpo, incluso después de instrucciones ejecutables,
aunque es una buena costumbre declararlas justo al principio.
También pueden declararse variables dentro de un bloque con llaves {...}. En ese caso, sólo serán
“visibles” dentro de dicho bloque.
En este ejemplo existe una variable local: int i; únicamente puede utilizarse dentro del bloque
main donde fué creada.
Por ejemplo, creamos variable constante tipo int llamada x con valor 18:
final int x = 18;
Por ejemplo, creamos variable constante tipo float llamada pi con valor 3.14:
final float pi = 3.14;
Si posteriormente intentamos modificar sus valores se producirá un error y Java nos avisará de que
no es posible.
x = 20; // no permitido, produce error
pi = 7; // no permitido, produce error
6. OPERADORES
Los operadores son una parte indispensable de la programación ya que nos permiten realizar
cálculos matemáticos y lógicos, entre otras cosas. Los operadores pueden ser:
• Aritméticos: sumas, restas, etc.
• Relacionales: menor, menor o igual, mayor, mayor o igual, etc.
• Lógicos: and, or, not, etc.
• Bits: prácticamente no los utilizaremos en este curso.
• Asignación: =
6.1 Aritméticos
Operador Formato Descripción
+ op1 + op2 Suma aritmética de dos operandos.
op1 - op2
- Resta aritmética de dos operandos. Cambio de signo.
-op1
* op1 * op2 Multiplicación de dos operandos
/ op1 / op2 División entera de dos operandos
% op1 % op2 Resto de la división entera ( o módulo)
++op1
++ Incremento unitario
op1++
--op1
-- Decremento unitario
op1--
El operador - puede utilizarse en su versión unaria ( - op1 ) y la operación que realiza es la de
invertir el signo del operando.
Los operadores ++ y -- realizan un incremento y un decremento unitario respectivamente. Es decir:
x++ equivale a x = x + 1
x-- equivale a x = x - 1
Los operadores incrementales suelen utilizarse a menudo en los bucles (estructuras repetitivas). Lo
veremos más adelante.
6.2 Relacionales
Operador Formato Descripción
> op1 > op2 Devuelve true (cierto) si op1 es mayor que op2
< op1 < op2 Devuelve true (cierto) si op1 es menor que op2
>= op1 >= op2 Devuelve true (cierto) si op1 es mayor o igual que op2
<= op1<= op2 Devuelve true (cierto) si op1 es menor o igual que op2
== op1 == op2 Devuelve true (cierto) si op1 es igual a op2
!= op1 != op2 Devuelve true (cierto) si op1 es distinto de op2
Los operadores relacionales actúan sobre valores enteros, reales y caracteres (char); y devuelven
un valor del tipo boolean (true o false).
Ejemplo:
Salida:
6.3 Lógicos
Operador Formato Descripción
&& op1 && op2 Y lógico. Devuelve true (cierto) si son ciertos op1 y op2
|| op1 || op2 O lógico. Devuelve true (cierto) si son ciertos op1 o op2
! ! op1 Negación lógica. Devuelve true (cierto) si es false op1.
Estos operadores actúan sobre operadores o expresiones lógicas, es decir, aquellos que se evalúan
a cierto o falso (true / false).
Ejemplo:
Salida:
6.4 De asignación
El operador de asignación es el símbolo igual: =
variable = expresión
Es posible combinar el operador de asignación con otros operadores para, de forma abreviada,
realizar un cálculo y asignarlo a una variable:
6.5 Expresiones
Una expresión es la combinación de varios operadores y operandos. Por ejemplo, tenemos las
siguientes expresiones:
7+5*4-2
10 + (1 % 5)
(7 * x) <= N
etc.
El lenguaje Java evalúa las expresiones aplicando los operadores uno a uno siguiendo un orden
específico. Este orden se detalla en el siguiente punto.
Por ejemplo:
double x = Math.pow(3,3); // Potencia 3 ^ 3
double y = Math.sqrt(9); // Raíz cuadrada de 9
7. LITERALES
A la hora de tratar con valores de los tipos de datos simples (y Strings) se utiliza lo que se
denomina “literales”. Los literales son elementos que sirven para representar un valor en el código
fuente del programa.
En Java, el compilador identifica un entero decimal (base 10) al encontrar un número cuyo primer
dígito es cualquier símbolo decimal excepto el cero (del 1 al 9). A continuación pueden aparecer
dígitos del 0 al 9.
La letra L al final de un literal de tipo entero puede aplicarse a cualquier sistema de numeración e
indica que el número decimal sea tratado como un entero largo (de 64 bits). Esta letra L puede ser
mayúscula o minúscula, aunque es aconsejable utilizar la mayúscula ya que de lo contrario puede
confundirse con el dígito uno (1) en los listados.
Ejemplo:
long max1 = 9223372036854775807L; //valor máximo para un entero largo
Existen dos formatos de representación: mediante su parte entera, el punto decimal ( . ) y la parte
fraccionaria; o mediante notación exponencial o científica:
Ejemplos equivalentes:
3.1415
0.31415e1
.31415e1
0.031415E+2
.031415e2
314.15e-2
31415E-4
Al igual que los literales que representan enteros, se puede poner una letra como sufijo. Esta letra
puede ser una F o una D (mayúscula o minúscula indistintamente).
F --> Trata el literal como de tipo float.
D --> Trata el literal como de tipo double.
Ejemplo:
3.1415F
.031415d
Por ejemplo:
Para imprimir una diagonal inversa se utiliza: \\
Para imprimir comillas dobles en un String se utiliza: \"
Entre las comillas dobles puede incluirse cualquier carácter del código Unicode (o su código
precedido del carácter \ ) además de las secuencias de escape vistas anteriormente en los literales
de tipo carácter.
Así, por ejemplo, para incluir un cambio de línea dentro de un literal de tipo string deberá hacerse
mediante la secuencia de escape \n :
Ejemplo:
System.out.println(”Primera línea\nSegunda línea del string\n”);
System.out.println(”Hola”);
La visualización del string anterior mediante println() produciría la siguiente salida por pantalla:
Primera línea
Segunda línea del string
Hola
La utilización de System.err sería totalmente análoga para enviar los mensajes producidos por
errores en la ejecución (es el canal que usa también el compilador para notificar los errores
encontrados).
Por ejemplo, para presentar el mensaje de saludo habitual por pantalla, y después un mensaje de
error, tendríamos la siguiente clase (aunque en realidad toda la información va a la consola de
comandos donde estamos ejecutando el programa):
También pueden imprimirse variables de cualquier tipo, así como combinaciones de texto y
variables concatenadas con el operador +
Siempre que queramos leer información del teclado primero tendremos que declarar un objeto
Scanner que lea de la entrada estandar System.in así:
NOTA: En este ejemplo hemos creado un objeto Scanner llamado reader pero
podríamos ponerle cualquier nombre.
Ahora podremos utilizar reader tantas veces como queramos para leer información del teclado.
Por ejemplo:
El método reader.nextLine() recogerá el texto que el usuario escriba por teclado (hasta presionar
la tecla Intro) y lo guardará en texto (de tipo String).
Existen mucho otros métodos según el tipo de dato que se quiera leer:
• nextByte(): obtiene un número entero tipo byte.
• nextShort(): obtiene un número entero tipo short.
• nextInt(): obtiene un número entero tipo int.
• nextLong(): obtiene un número entero tipo long.
• nextFloat(): obtiene un número real float.
• nextDouble(): obtiene un número real double.
• next(): obtiene el siguiente token (texto hasta un espacio).
IMPORTANTE: Para poder utilizar la clase Scanner es necesario importarla desde el paquete
java.util de Java. Es decir, arriba del todo (antes del public class… ) hay que escribir la siguiente
sentencia:
import java.util.Scanner;
Salida:
Ejemplo en el que leemos un valor tipo double. El programa pide al usuario que introduzca el radio
de un círculo, luego calcula su área y circunferencia, por último lo muestra por pantalla.
Salida:
9. ESTRUCTURAS ALTERNATIVAS
Como ya vimos, las estructuras alternativas son construcciones que permiten alterar el flujo
secuencial de un programa de forma que en función de una condición o el valor de una expresión,
el mismo pueda ser desviado en una u otra alternativa de código.
Código Ordinograma
if (condición)
{
// Acciones;
}
if (cont == 0)
{
System.out.println(“cont es 0”);
// más instrucciones...
}
if (cont == 0)
System.out.println(“cont es 0”);
Código Ordinograma
if (condición)
{
// AccionesSI;
}
else
{
// AccionesNO;
}
if (cont == 0)
{
System.out.println(“cont es 0”);
// más instrucciones...
}
else
{
System.out.println(“cont no es 0”);
// más instrucciones...
}
if (cont == 0)
System.out.println(“cont es 0”);
else
System.out.println(“cont no es 0”);
Siendo la salida:
Código Ordinograma
switch (expresión)
{
case valor1:
// Acciones1;
break;
case valor2:
// Acciones2;
break;
case valorN:
// AccionesN;
break;
default:
// Acciones por defecto;
}
Es muy importante entender que en el switch se evalúa una expresión (un valor concreto como 0,
5, 1…) no una condición (verdadera o falsa) como en el if y el ifelse.
El programa comprueba el valor de la expresión y saltará al ‘case’ que corresponda con dicho valor
(valor1 o valor2 o …) ejecutando el código de dicho ‘case’ (Acciones1 o Acciones2 o …). Si no
coincide ningún valor, saltará al ‘default’ y ejecutará las acciones por defecto.
Es importante añadir la sentencia break; al final de cada ‘case’, ya que de lo contrario el programa
seguirá ejecutando el código de las demás acciones y normalmente no querremos que haga eso
(aunque Java permite hacerlo, es confuso y por ello está desaconsejado).
Y la salida:
10. EJEMPLOS
10.1 Ejemplo 1
Programa que lea dos números, calcule y muestre el valor de sus suma, resta, producto y división.
Ordinograma:
Código:
Salida:
10.2 Ejemplo 2
Programa que lee un número y me dice si es positivo o negativo. Consideraremos el cero como
positivo.
11. AGRADECIMIENTOS