Fundamentos de Programación
Bloque I: Conceptos básicos
Tema I.2: Variables. Tipos básicos
Fundamentos de Programación Dpto. Informática. UVA 1
I-2:Variables. Tipos básicos
Índice
[Link] léxicos
[Link] y expresiones
[Link] de datos primitivos
Fundamentos de Programación Dpto. Informática. UVA 2
I-2:Variables. Tipos básicos
Un programa Java (simple)
public class HolaMundo{/* Imprime en pantalla un mensaje
*/public static void main (String args[]){[Link]
("Hola, mundo 2020");}}
public class HolaMundo {
/* Imprime en pantalla un mensaje */
public static void main (String args [ ]) {
[Link] ("Hola, mundo 2020");
}
}
public class HolaMundo {
/* Imprime en pantalla un mensaje */
public static void main(String[] args) {
[Link] ("Hola, mundo 2020");
}
}
Fundamentos de Programación Dpto. Informática. UVA 3
I-2:Variables. Tipos básicos
Alfabeto
• Conjunto de caracteres Unicode
(identificadores, comentarios, literales)
([Link]
• Código ASCII
– Letras (minúsculas, mayúsculas)
– Dígitos, caracteres de puntuación
– Espacio en blanco
– Tabulador, avance de línea
Fundamentos de Programación Dpto. Informática. UVA 4
I-2:Variables. Tipos básicos
Backus-Naur (BNF)
• Estándar de descripción
<dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<letra mayúscula> ::=
A|B|C|D|E|F|G|H|I|J|K|L|M|N|Ñ|O|P|Q|R|S|T|U|V|W|X|Y|Z
<letra minúscula> ::=
a|b|c|d|e|f|g|h|i|j|k|l|m|n|ñ|o|p|q|r|s|t|u|v|w|x|y|z
<letra> ::= <letra mayúscula> | <letra minúscula>
<dígitos> ::= <dígito> | < dígitos > < dígito>
<signo> ::= + | -
<número entero> ::= <signo> <dígitos> | <dígitos>
<signo_optativo> ::= <signo> |
<número entero> ::= <signo_optativo> <dígitos>
<número entero> ::= <signo>opt <dígitos>
Fundamentos de Programación Dpto. Informática. UVA 5
I-2:Variables. Tipos básicos
Léxico
• Palabras reservadas (clave) (class, if …)
• Identificadores (MiPrograma, Velocidad , n1… )
• Identificadores predefinidos (true, main …)
• Literales
– Números (-1, 3.141592 …)
– Caracteres ('A', '7' …)
– Cadenas ("Hola, mundo.", "A", "" …)
• Separadores (espacio, tabulador …)
• Operadores (+, == …)
• (Comentarios) (/* Sólo para los humanos */ )
Fundamentos de Programación Dpto. Informática. UVA 6
I-2:Variables. Tipos básicos
Palabras reservadas Java
abstract continue for new switch
assert default if package synchronized
boolean do goto private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
true false null
[Link]
Learning Java Language → Language Basics → Variables → Naming
Fundamentos de Programación Dpto. Informática. UVA 7
I-2:Variables. Tipos básicos
Identificadores
<identificador> ::= <idSimple> | <idCompuesto>
<idSimple> ::= <Jletra> <rid>
<Jletra> ::= <letra> | _ | $
<rid> ::= <rid> <Jletra> | <rid> <dígito> |
que no sea reservado
X x x1 numeroDeAlumnos borrar_pantalla PI
Compuestos (“qualified”) : [Link]
Convención:
•Comenzar con letra. No usar $. Nombres significativos.
•Nombres de clases: comienzan con mayúscula
•Variables y métodos: comienzan con minúscula
•Constantes en mayúsculas
Estilo con _ ó “camel case”
Fundamentos de Programación Dpto. Informática. UVA 8
I-2:Variables. Tipos básicos
Literales (constantes)
• Valores concretos de un tipo primitivo, String o nulo
<literal> ::= <lit entero>
| <lit punto flotante>
|<lit lógico>
| <lit carácter>
| <lit String>
|<lit nulo>
3 -123 3.141592 1.5e-28 true
'a' '3' "Hola, mundo" "3" null
Fundamentos de Programación Dpto. Informática. UVA 9
I-2:Variables. Tipos básicos
Otros elementos léxicos
• Blancos: espacio, tabulador, avance de línea …
• Separadores ( ) { } [ ] ; , .
• Operadores
= > < ! ~ ? :
== >= <= != && || ++ --
+ - * / & | ^ % << >> >>>
+= -= *= /= &= |= ^= %= <<= >>= >>>=
• Comentarios
/* lo que sea, incluso en varias líneas */
// lo que sea hasta el final de la línea
/* este * /comentario /* // /** termina aquí: */
Fundamentos de Programación Dpto. Informática. UVA 10
I-2:Variables. Tipos básicos
Sintaxis de un programa Java (simple)
public class HolaMundo {
// Imprime en pantalla un mensaje
public static void main (String args [ ]) {
[Link] ("Hola, mundo");
}
}
<programa> ::= public class <identificador de programa> {
<declaración optativa de variables y subrutinas>
public static void main (String args [ ]) {
<sentencias>
}
<declaración optativa de variables y subrutinas>
}
Fundamentos de Programación Dpto. Informática. UVA 11
I-2:Variables. Tipos básicos
Variables
• Zona de memoria para un dato que se
interpreta según su tipo
– Nombre (identificador)
– Tipo (“forma” = valores posibles, operaciones)
– Valor
• Su nombre se refiere al contenedor o al
contenido, según contexto
• El valor puede cambiar (variar) a lo largo de la
ejecución
Fundamentos de Programación Dpto. Informática. UVA 12
I-2:Variables. Tipos básicos
Definición y uso
• Definición
– Declaración
• nombre
• tipo
– Asignación de valor
• Uso
Fundamentos de Programación Dpto. Informática. UVA 13
I-2:Variables. Tipos básicos
Variables Java
• Definición:
– En dos fases
• Declaración <tipo> <lista de identificadores> ;
• Asignación de valor <id var> = <expresión> ;
– Definición “compacta” <tipo> <id> = <expresión> …
• Uso: en expresiones; significa su valor
int i, j, k; double x; String miNombre; // declaraciones
String saludo="Buenos días"; // definición
i = 7; miNombre = "Juan";// asignaciones
x = 2.5 / 2;
j = i + 5;
k = i ;
i = i + 1;
Fundamentos de Programación Dpto. Informática. UVA 14
I-2:Variables. Tipos básicos
Expresiones Java
• Definición:
– Declaración:
• No tienen nombre
• El tipo se deduce de los operandos y operadores
– Asignación de valor:
• El valor se calcula
• Uso: significa su valor
<expresión> ::= <literal> | <id var> | <invocación a método> | (<expresión>)
| <op unario o prefijo> <expresión> | <expresión> <op postfijo>
| <expresión> <op binario> <expresión>
3 3+2*4 ″hola″
i i+1 2.5 / 2;
Fundamentos de Programación Dpto. Informática. UVA 15
I-2:Variables. Tipos básicos
Programa ejemplo
public class Calculando {
// Ejemplo de cálculos
public static void main (String args [ ]) {
int num = 3;
double pi = 3.141592, dosPi ;
dosPi = 2*pi;
[Link] ("3 radianes son ");
[Link]( 360*3/dosPi );
[Link] (" grados");
[Link] (num + " radianes son " );
[Link] (360*j/dosPi +" grados" );
}
}
Fundamentos de Programación Dpto. Informática. UVA 16
I-2:Variables. Tipos básicos
Sentencias de salida
[Link] ( expresión de tipo String );
[Link] ( expresión de tipo String );
[Link] ("3 radianes son ");
[Link]( 360*3/dosPi );
[Link] (num + " radianes son " );
[Link] (360*j/dosPi +" grados" );
Fundamentos de Programación Dpto. Informática. UVA 17
I-2:Variables. Tipos básicos
Tipo de datos
• Conjunto de valores posibles
• Conjunto de operaciones realizables sobre ellos
• Simples • Compuestos
– Numéricos – Conjuntos (unión,
• Enteros (Z,{+, -, *, div …}) intersección …)
• Reales (R, {+, -, *, /, …})
– Cadenas de caracteres
• …
(concatenar…)
– Caracteres
– Multidimensionales
– Lógicos
– Registros o agregados
({true, false},{not, and, or …})
–… –…
Fundamentos de Programación Dpto. Informática. UVA 18
I-2:Variables. Tipos básicos
Tipos de datos primitivos Java
• Enteros
– byte 8 bits, [-128, 127]
– short 16 bits, [-32768, 32767]
– int 32 bits, [-2127483648, 2127483647]
– long 64 bits ≈ [263 , 263 -1]≈ 9 x 1018
• Punto flotante
– float IEEE 754, 32 bits (4 bytes)
– double IEEE 754, 64 bits (8 bytes)
• Lógicos
– boolean false, true
• Caracteres
– char 16 bits (2 bytes), unicode
Fundamentos de Programación Dpto. Informática. UVA 19
I-2:Variables. Tipos básicos
Tipos enteros
byte short int long
• Literales:
– Signo optativo
– Decimales 0 | <dig. no nulo><dígitos> opt
– Octales 0<dígitos octales>
– Hexadecimales 0x<dígitos hexadec.> | 0X<dígitos hexadec.>
• Sufijo l ó L : long
0 -2 0372 (=250) 0xFA (=250) 0xDadaCafe
0L -2L -0777l 0x7FFFFFL 0xC0B0L
• Operadores básicos:
cambio de signo - (unario) + (unario)
suma + diferencia -
producto * cociente / resto %
Fundamentos de Programación Dpto. Informática. UVA 20
I-2:Variables. Tipos básicos
Tipos punto flotante
float double
• 4 bytes • 8 bytes
• Máximo ≈ 10 38 • Máximo ≈ 10308
• ≈ 7 dígitos significativos • ≈ 15 dígitos significativos
• Literales
• Signo optativo
• Decimales <parteEntera> . <parteFrac><parteExp><sufijoTipo>
• Todo optativo; obligado: un dígito y (punto, parteExp o sufijo)
• <parteExp> ::= e <entero> | E <entero>
• <sufijoTipo> ::= f | F | d | D |
• Hexadecimales : obligada <parteExp > ::= p <entero> | P <entero>
Fundamentos de Programación Dpto. Informática. UVA 21
I-2:Variables. Tipos básicos
Tipos punto flotante (2)
float: double:
123.45f 123.45F 123.45d 123.45D 123.45
0.f .12F 12E-2F 0.012e1f 0. .12 12E-2 0.012e1
3.4028235e38f 1.4e-45f 1.797e308 4.9e-324
0XA.Bp0F 0xffp0f 0xA.Bp0D 0Xf.Fp1
• Operadores básicos:
cambio de signo - (unario) + (unario)
suma + diferencia -
producto * cociente / resto %
Fundamentos de Programación Dpto. Informática. UVA 22
I-2:Variables. Tipos básicos
Tipo lógico
boolean
• Literales: false true
• Operadores básicos
== != igualdad, desigualdad
! not
& ^ | and xor or, completos
&& || and or, perezosos
Fundamentos de Programación Dpto. Informática. UVA 23
I-2:Variables. Tipos básicos
Tipo carácter
char
• Literales
Letras 'a'..'z' 'A'..'Z' dígitos '0'..'9'
Imprimibles '%' '.' ',' '=' ' ' etc
'\b' '\t' '\n' '\f' '\r'
'\”' '\'' '\\'
Desde '\u0000' hasta '\uffff' (hex.)
Desde '\0' hasta '\377' (octal)
Fundamentos de Programación Dpto. Informática. UVA 24
I-2:Variables. Tipos básicos
Otros operadores
• Relacionales (numéricos, boolean y char)
> >= < <=
== !=
• Incremento y decremento (numéricos)
++ --
• Asignación
= += -= *= /= %=
Fundamentos de Programación Dpto. Informática. UVA 25
I-2:Variables. Tipos básicos
Conversiones de tipo
• En asignación, expresiones, …
• Conversiones implícitas (promociones)
– Operandos de un operador aritmético:
byte short int long float double
– En asignaciones
• Conversiones explícitas ("casting")
(<nombre_de_tipo>) <expresión> (long)5 (float)150
• Conversión a String : cualquier tipo + tipo String
[Link] ("resultado="+5);
Fundamentos de Programación Dpto. Informática. UVA 26
I-2:Variables. Tipos básicos
Tabla de precedencias
Unarios (dcha) ++ -- ! - + "cast"
Multiplicativos * / %
Aditivos + -
Relacionales de orden < <= > >=
Relacionales igualdad == !=
Y & &&
O | ||
Asignación (dcha) = += -= *= /= %=
Fundamentos de Programación Dpto. Informática. UVA 27