• No se han encontrado resultados

Fundamentos de Programación. Elementos de un lenguaje. Datos. Valores Enteros. Valores Caracteres y Cadenas. Valores Reales

N/A
N/A
Protected

Academic year: 2022

Share "Fundamentos de Programación. Elementos de un lenguaje. Datos. Valores Enteros. Valores Caracteres y Cadenas. Valores Reales"

Copied!
7
0
0

Texto completo

(1)

oct-07 1

Fundamentos de Programación

Tema 3:

Tipos de Datos Primitivos

Dpto. de Ingeniería de Sistemas Telemáticos http://www.lab.dit.upm.es/~fprg/

oct-07 2

Elementos de un lenguaje

 Un sublenguaje para definir los datos (álgebra)

 representación de la información

 qué datos tenemos

 cómo los llamamos

 cómo son (estructura)

 qué se puede hacer con ellos

 Un sublenguaje para definir los algoritmos

 qué le hacemos a los datos

 en qué orden (cuándo se lo hacemos)

 cuántas veces

oct-07 3

Datos

 Tipos

 álgebra

 definen el rango (dominio) y las operaciones

 Valores

 Representación del rango

 Variables

 Continentes de valores

 de un cierto tipo

oct-07 4

Valores Enteros

 Números enteros

 decimales: 53, 2300, -7, 0

 hexadecimales: 0x35

 octales: 065

 no son enteros válidos:

 12,34

 45.67

 13E5

Valores Reales

 Números reales (punto flotante)

 notación decimal y científica

 5. -0.78 0.00000034 123.0

 -23.4E8 123.E-34

 no son válidos

 .58

 4,76

 56.3F14

Valores Caracteres y Cadenas

 Caracteres

 ´a´ ´Ñ´ ´?´

 Cadenas de caracteres (strings)

 ”Hola a todos” -> Hola a todos

 ”esto es una cadena” -> esto es una cadena

 ”dijo ´Adios´ y se fué” -> dijo ’Adios’ y se fué

 ”qué \”raro\” es esto” -> qué ”raro” es esto

(2)

oct-07 7

Valores Lógicos (booleanos)

 Sólo dos valores: {true, false}

 En minúsculas

 Se usan en operaciones de comparación y lógicas

oct-07 8

Enumerados

 Definición de conjuntos por extensión

 Nombre y Rango

 Calificación є { Suspenso , Aprobado , Bien , Notable , Sobresaliente }

 DiaSemana є { Lunes , Martes , Miércoles , Jueves , Viernes , Sábado , Domingo };

oct-07 9

Tipos Simples y Objetos

En Java se distingue entre:

 Tipos simples o primitivos: números, caracteres,

 predefinidos en el lenguaje: sintaxis especial

 Objetos

 definibles por el programador

 disponibles en la API de Java

 arrays (matrices, vectores, ¡arreglos!)

 manejo similar a los objetos

 pero con sintaxis especial

oct-07 10

Tipos enteros

 Formado por valores enteros

 Varios rangos (n bits [0..2

n

-1] ó [-2

n-1

.. 2

n-1

-1])

 En los programas, sus valores se escriben en decimal, hexadecimal u octal

 byte 8 bits [-128..127]

 short 16 bits [-32768..+32767]

 int 32 bits [-2147483658..+2147483647]

 long 64 bits [-9223372036854775808..

+9223372036854775807]

Operaciones sobre enteros

 Predefinidas en el lenguaje Java

 - menos unario

 * producto

 / división ¡enteros! 4/2 = 2 pero 4/3 = 1

 % módulo (resto para valores positivos)

 i % j = i - (i / j) * j

 signo(i % j) = signo (i)

 + suma

 - resta

Operaciones sobre enteros

 Disponibles en el API de Java (Math)

 Math.abs(x) valor absoluto

 Math.sqrt(x) raíz cuadrada

 Math.pow(x,y) x elevado a y

(3)

oct-07 13

Expresiones ariméticas

 1 - 2 * 3 + 4

 (1 - 2) * (3 + 4)

 10 / 3 / 2

 Se evalúan los paréntesis

 por orden de precedencia

 1º: - unario

 2º: * / %

 3º: + - binario

 de izquierda a derecha

oct-07 14

Tipos reales (¡flotantes!)

 Formado por valores reales

 rango: [menor .. mayor]

 mantisa y exponente

 precisión: número de cifras significativas

 float 32 bits -3.4029234E+38..+3.4029234E+38 6 cifras significativas

 double 64 bits -1.79769313486231570E+308 ..

+1.79769313486231570E+308 15 cifras significativas

oct-07 15

Operaciones sobre reales

 Predefinidas por el lenguaje JAVA

 - menos unario

 * producto

 / división

 + suma

 - resta

oct-07 16

Operaciones sobre reales

 Disponibles en el API de JAVA (Math)

 Math.abs(x) valor absoluto

 Math.ceil(x) redondeo entero superior

 Math.floor(x) redondeo entero inferior

 Math.cos(x) coseno

 Math.tan(x) tangente

 Math.sqrt(x) raiz cuadrada

 Math.exp(x) ex

 Math.pow(x, y) potenciación xy

 Math.log(x) logaritmo neperiano

 ...

Tipo booleano

 Se usan en operaciones de comparación y lógicas

 o representan condiciones

 [true,false]

Operaciones sobre booleanos

 Predefinidos por el lenguaje JAVA

 && AND con cortocircuito

 || OR con cortocircuito

 ^ XOR (OR exclusivo)

 ! NOT (negación)

 & AND lógico (sin cortocircuito)

 | OR lógico (sin cortocircuito)

(4)

oct-07 19

Operaciones sobre booleanos

 A && B : si A entonces B si no, false

 Si A es false, B no se evalúa

 A || B : si A entonces true si no, B

 Si A es true, B no se evalúa

oct-07 20

Operadores Relacionales

 Predefinidos por el lenguaje Java

 == igualdad

 != distinto

 < menor que

 <= menor o igual

 > mayor

 >= mayor o igual

 ATENCIÓN: prioridad operadores relacionales menor que ningún otro operador

bisiesto = (año % 4 == 0) & (año % 100 != 0)

| (año % 400 == 0);

oct-07 21

Tipo carácter

 Se llama char

 Ocupa 16 bits

 Estándar UNICODE 2.0, que incluye ASCII

 admite ISO-latin-1, cirílico, kanji, ...

 Valores de \u0000 .. \uFFFF

 Más cómodo: ´a´, ´J´, ´ñ´ , …

 Especiales: ´\n´ ´\t´ ´\r´ ´\\´ ´\´´

 ordenados ´A´ < ´B´ < ....;´a´ < ´b´ < ...;

´0´ < ´1´... < ´9´

oct-07 22

Operaciones sobre caracteres

 Predefinidos los relacionales (==, <, …)

 Resto, en el API de Java

 IsLowerCase(c) true si c es letra y minúscula, falso en caso contrario

 IsUpperCase(c) true si c es letra y mayúscula

 toLowerCase(c) Si c es letra mayúscula, devuelve la minúscula correspondiente, si no, devuelve c

 toUpperCase (c) Si c es letra minúscula, devuelve la mayúscula correspondiente, si no, devuelve c

Enumerados

 En java:

enum Calificacion {SUSPENSO, APROBADO, BIEN, NOTABLE, SOBRESALIENTE};

enum TurnoDeClase { MAÑANA, TARDE };

Enum DiaSemana {LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO};

Uso Enumerados

boolean NoHayClase=

dia == DiaSemana.SABADO

|| dia == DiaSemana.DOMINGO;

(5)

oct-07 25

Conversiones

 Las operaciones determinan el tipo a devolver a partir de los operandos

 4 / 3 -> 1 (int, int) -> int

 a veces, no es el resultado deseado

 Conversión de tipos:

 Implícita (definida en el lenguaje)

 Explícita (casting o promoción), forzada por el programador

oct-07 26

Promoción

 (nombre de tipo) expresión

 Convierten el valor de la expresión a un valor del tipo entre paréntesis

 (char)98 -> devuelve ´b´

 (int)10.0 -> devuelve el entero 10

 (double)10 -> devuelve el double 10.0

 Los valores se pueden ver alterados

oct-07 27

Conversiones implícitas

 5.0 / 4 -> 1.25

 El 4 se convierte “automáticamente” en 4.0 para poder dividir

 La promoción tiene mayor prioridad

 (float) 5 / 4 -> 1.25 (formato float)

 El 5 se convierte por la promoción forzada a 5.0, el 4 se convierte “automáticamente”

oct-07 28

Conversiones implícitas

 Sólo aplica a tipos primitivos

 De tipos “pequeños” a “grandes”:

 byte a short, int, long, float, o double

 short a int, long, float o double

 char a int, long, float, o double (¡OJO!)

 int a long, float o double

 long a float o double

 float a double

 ¡Se puede perder información!

 En el paso de long a float o double

 En el paso de int a float

Convertir cadenas en otros valores

 Típicamente, desde línea de comandos

double base= Double.valueOf(args[0]).doubleValue();

int x= Integer.valueOf(args[1]).IntValue();

 Otra forma:

int precio= Integer.parseInt(args[1]);

 Si no se puede convertir, se lanzará una excepción:

el programa termina abruptamente

Atributos

 Una variable almacena un valor

 se define (declaración)

 se crean

 se cargan con un valor inicial (datos de entrada)

 su valor se modifica (algoritmo)

 llegan a un valor final (resultado)

(6)

oct-07 31

Definición de atributos

 Se elige un nombre (identificador)

 Se antepone el tipo adecuado

 int n;

 char respuesta;

 double base, altura, superficie;

oct-07 32

Identificadores

 Identificador: nombre de un elemento del programa:

 variables, constantes, clases, métodos, etc.

 Reglas:

 secuencia de caracteres (letras, dígitos, ´$´ y ´_´)

 longitud ilimitada

 no pueden comenzar por número

 mayúsculas != minúsculas

 dos identificadores son iguales si coinciden todos sus caracteres

oct-07 33

Identificadores

 Válidos:

 x, base, hola, respuesta, díaDelMes, saldo_cliente, a1x, eje3, año, _preparado, $saldoCliente

 No válidos:

 1x, no#valido, día del mes

 No se pueden usar como identificadores las palabras reservadas del lenguaje:

 public, static, class, goto, for,...

oct-07 34

Identificadores

 Deben asegurar la legibilidad

 significativos

 x * y ; // multiplica dos números

 base * altura; // calcula superficie

• ¡pero es el mismo código!

 legibles, sin abreviaturas ni contracciones

 sinónimos cortos

 combinar mayúsculas y minúsculas

 añadir comentario al final de la línea para aclarar

 int base; // base del triángulo

Carga de atributos

 Se pone el nombre de la variable, el signo ´=´ y una expresión del mismo tipo

int x, y;

x = 2 * 8;

y = 7.5 / 3; // ERROR: tipos distintos!

y = (int)Math.sqrt(x); // correcto!

x = y * 3; // recarga la variable x, se olvida el viejo valor

Carga inicial

 En Java, al declarar una variable de un tipo primitivo, toma un valor inicial por defecto:

 números enteros: 0

 números reales: 0.0

 booleanos: false;

 caracteres: \u0000 // carácter nulo

 referencias: null

(7)

oct-07 37

Carga en la declaración

 Se puede asignar un valor inicial en la declaración de variables

 int m = 7;

 double x = 10.0, y = 3 * 5;

 float p = m / 10.0, q = 2 * p;

 La expresión ha de poderse resolver (todos los valores conocidos)

oct-07 38

Constantes

 Se pueden declarar atributos con un valor inmutable.

 final int maximo= 100;

 final float velocidadLuz= 300000.0;

 Error:

 final int numAlumnos; // ¡fija el valor a 0!

 numAlumnos= 540; // no se puede cambiar

 El valor de las constantes se proporciona en la declaración

oct-07 39

Criterios de declaración de constantes

 Declararla antes de usarla (obligatorio)

 Declarar una constante para valores significativos

 Elegir un nombre claro e inequívoco

 Declararla en un solo lugar

 para facilitar mantenimiento mediante cambio sistemático

 no redefinir la misma constante en varios puntos

oct-07 40

Envoltorios

 Clases especiales para “envolver” tipos simples

 Boolean, Character, Integer, Long, Double, Float

 No hay para Byte ni Short

 Usados para

 convertir a tipo String (imprimir)

 leer de una cadena

 utilleria

 MIN_VALUE, MAX_VALUE para números

Referencias

Documento similar

Interpretar y valorar la importancia de la dignidad de la persona, como el valor del que parte y en el que se fundamenta la DUDH, subrayando los atributos inherentes a la

Martes 9: Trabajo en clases: proyecto de investigación configuración territorial Chile siglo XIX. Miércoles 10: Trabajo en clases: proyecto de investigación configuración

educacional, laboral, económico, de accesibilidad universal y cultural, de modo tal que no se produzcan diferenciaciones arbitrarias en el ejercicio de sus derechos,

Los activos financieros son clasificados a la categoría de activos financieros a costo amortizado cuando se cumplan las siguientes dos condiciones: i) el modelo de

A mí me gusta patinar, montar en bicicleta y jugar videojuegos con mis amigos!. También me gusta escuchar música

RAPE CON SALSA AMERICANA CON

El cambio profundo producido en la sociedad postindustrial sociológicamente laica, incorporada a los avances tecnológicos de la información, ha llevado consigo el debilitamiento de

El Póster de los Valores FIRST LEGO League está diseñado para ayudar a los Jueces a aprender más sobre vuestro equipo y vuestra historia única.. Seguid estos puntos con vuestro