1
|
|
2
|
- Los tipos de datos son categorías de características asociadas a un
grupo de valores en particular.
- Por ejemplo: los números enteros, los números reales, los caracteres,
las hileras de texto tienen un tipo de dato asociado.
- De esta forma la información puede ser clasificada de acuerdo al uso que
se le da a la misma.
|
3
|
- En un lenguaje de programación cada tipo determina aspectos asociados a
la información y a su representación, incluyendo:
- El conjunto de valores que se le asocia (si son valores numéricos,
caracteres o lógicos).
- El rango de valores válidos para el tipo.
- El tamaño necesario para representar cada valor en la memoria de la
computadora (medido en bytes).
|
4
|
|
5
|
- Los tipos primitivos son los más simples y elementales.
- Toda la información que maneja un lenguaje puede representarse
directamente o mediante combinaciones de estos.
- Note que una hilera de texto se compone de “caracteres” o letras
individuales por lo que la “hilera” no es un tipo primitivo.
|
6
|
- En un lenguaje orientado a objetos normalmente existen tipos de dato
para representar valores:
- lógicos o “booleanos”.
- numéricos enteros.
- numéricos de punto flotante.
- caracteres.
- Los valores específicos de cada tipo se representan mediante “literales”
específicos.
|
7
|
- Es una representación explícita de algún valor dentro del código de un
programa.
- Ejemplo:
- Un 1 es un literal de un número de tipo entero.
- Una ‘a’ es un literal de caracter.
- Un 3.14 es un literal de un número de tipo real o de punto flotante.
|
8
|
- Se utilizan para representar condiciones lógicas que toman uno de dos
posibles valores:
- falso ó verdadero.
- La palabra “Booleano” proviene del nombre del matemático George Boole (Boole,
1848) quien formalizó el álgebra sobre dos valores lógicos.
|
9
|
- El verdadero se representa con el literal true.
- El falso se representa con el literal false.
|
10
|
|
11
|
|
12
|
- * Note que al long y al float se les coloca una letra al final del
literal (“l” o “f” respectivamente).
|
13
|
- Son aquellos que se utilizan para representar: letras, dígitos, símbolos
especiales y caracteres de escape.
|
14
|
- Los caracteres se representan con una notación especial para no
confundirlos con otros elementos del lenguaje.
- En Java, un caracter se representa mediante un símbolo encerrado entre
comillas simples.
- Ejemplos: ‘a’, ‘A’, ‘9’.
- También existen caracteres especiales conocidos como secuencias de
escape.
|
15
|
- Algunos caracteres especiales (el cambio de línea, por ejemplo)
requieren de una representación distinta.
- Esta representación es llamada secuencia de escape.
- En Java, los caracteres de escape van precedidos por un “backslash” \.
|
16
|
|
17
|
- UNICODE es un conjunto de caracteres estándares creados para asociar
cada caracter a un valor específico.
- En UNICODE un caracter ocupa 16 bits de memoria (2 bytes).
- Su rango va desde el hexadecimal 0000 hasta el hexadecimal FFFF.
|
18
|
- Caracteres de la forma ‘\uXXXX’, donde XXXX es un valor UNICODE, sirven
para representar símbolos especiales y caracteres en otros idiomas,
tales como: Árabe, Chino, Japonés.
- Ejemplos en Java:
- ‘\u0040’ equivale al valor decimal 64 que es ‘@’.
- ‘\u00D1’ y ‘\u00F1’ equivalen a Ñ y ñ, cuyos valores decimales son 209
y 241.
- Otros lenguajes utilizan representaciones de caracteres con códigos ASCII.
|
19
|
- ASCII (“American Standard Code
for Information Interchange”) es un código de 7 bits (128 valores)
creado por el ANSI o “American National Standard Institute”.
- UNICODE es el conjunto de caracteres de la ISO “International Standards
Organization” que es una red de 148 institutos nacionales dedicados al
establecimiento de estándares.
- El conjunto UNICODE incluye a los 128 caracteres ASCII.
|
20
|
- ¡Sí, … pero hay que tener cuidado!
- Aunque UNICODE incluye el ASCII, algunos confunden el ASCII con el
Extended ASCII que es otro conjunto de caracteres.
- Extended ASCII es un código de 8 bits que incluye al ASCII.
- Pero UNICODE y Extended ASCII son diferentes para valores entre 128 y
255.
- Por ejemplo la Ñ en Extended ASCII es el 165 pero en UNICODE es el 209.
|
21
|
- Todos los lenguajes orientados a objetos poseen una representación de
las hileras de caracteres.
- Debido a que una hilera está “compuesta” de varios caracteres,
normalmente no son consideradas como tipos primitivos.
- Sin embargo se busca que su manejo sea tan simple como el manejo de
tipos primitivos.
- Además, se pueden representar en forma de literales dentro de algunos
lenguajes.
|
22
|
- En Java las hileras de caracteres se conocen como “String”.
- Los literales se representan con caracteres encerrados por comillas
dobles. Ej: “¡Hola Mundo!”.
- String no es un tipo primitivo, sino que se rige por las reglas
asociadas a los objetos.
- El String también soporta secuencias de escape en su contenido.
|
23
|
|
24
|
|
25
|
|
26
|
|
27
|
- Las variables son espacios en memoria asignados para almacenar valores.
- A cada variable se le asocia:
- Nombre de la variable.
- Tipo de dato.
- Valor.
- Tamaño o espacio que requiere en memoria.
- Dirección de su ubicación en la memoria.
|
28
|
|
29
|
- La creación de una variable requiere dos pasos: declarar la variable e
inicializar la variable.
- La declaración es la definición del tipo y del nombre de la variable.
- La inicialización es la asignación del valor inicial.
|
30
|
- Se debe escribir el tipo seguido del nombre que se le quiere dar. Por ejemplo:
- Se pueden declarar varias variables a la vez separadas por comas. Por
ejemplo:
- char primeraLetra, segundaLetra;
|
31
|
- Para la inicialización, se debe escribir el nombre de la variable,
seguido del operador de asignación “=“, seguido del valor a asignar. Por
ejemplo:
- variableEntera = 234;
- primeraLetra = ‘a’;
- En algunos casos, se puede mezclar la declaración y la inicialización.
Por ejemplo:
- int variableEntera = 234;
|
32
|
- Al crear la variable:
- double peso = 240.6;
- Se crea en memoria una variable cuyo valor es la representación
correspondiente a un 240.6.
|
33
|
- Las variables pueden ser de tipo primitivo o pueden ser “referencias” a
instancias.
- La inicialización de las segundas se realiza por medio del comando new
con el que se solicita la construcción de una instancia de la
clase. Por ejemplo:
- Carro miCarro = new Carro();
|
34
|
- Las variables que se utilizan para “referirse” a objetos se conocen como
“referencias”.
- La referencia a un objeto es una variable que almacena “la dirección”
donde se encuentra un objeto en memoria.
- A diferencia de las variables de tipos primitivos, que almacenan el
valor directamente dentro de ellos, las referencias lo que guardan es la
dirección del lugar de memoria donde se encuentra la instancia.
|
35
|
- Cuando se declara algo como lo siguiente:
- Carro miCarro;
- se crea en memoria una referencia cuyo valor es nulo o “null”, o sea
que se puede visualizar tal como lo muestra el siguiente diagrama.
|
36
|
- Cuando se solicita crear un nuevo objeto con la instrucción new, se crea
en memoria una instancia de la clase especificada.
- Por lo tanto con la asignación mediante el igual ( = ), se asigna su
dirección dentro de la referencia.
- Por ejemplo:
- Carro miCarro; // Declaración de la referencia
- miCarro = new Carro(); // Inicialización
- Lo anterior se puede visualizar en memoria de la siguiente forma…
|
37
|
- El carro recién creado es accedido a través de la referencia llamada
“miCarro”.
- Carro miCarro = new Carro();
|
38
|
- A partir de ese momento se puede utilizar la referencia miCarro para
acceder a la instancia recién creada.
- Esto se lleva a cabo de formas diferentes según el lenguaje de
programación que se utilice.
- Tratar de acceder a una referencia que no ha sido inicializada es como
ir a buscar a alguien a una dirección que no existe, ya que su valor es
nulo.
|
39
|
- Para los nombres de variables se puede usar los siguientes caracteres:
‘a’, ‘b’, ..., ‘z’, ‘A’, ‘B’, ..., ‘Z’, ‘0’, ‘1’, ..., ‘9’, ‘#’, ‘_’.
- Para la primera letra del nombre de una variable no se puede utilizar un
dígito.
- Ejemplos:
- int variableEntera1, variableEntera2;
- double aproximacionDelValorPi;
- char letra2;
|
40
|
- Inicie siempre los nombres de variable con una letra minúscula.
- Utilice palabras significativas.
- Ponga con mayúscula la primera letra de cada palabra significativa
dentro del nombre, excepto la primera.
|
41
|
- Note que los siguientes nombres dan una idea del uso que se pretende dar
a cada una de las variables:
- double productoInternoBruto;
- float saldoMensual;
- int cantidadesEstudiantes;
- char digitoInicialPlaca;
|
42
|
- Las constantes son variables cuyo valor es asignado una única vez, y no
puede ser cambiado posteriormente.
- Su inicialización se debe llevar a cabo junto con su declaración.
|
43
|
- Las constantes en Java se declaran con los calificativos static final. Ejemplo:
- static final double PI = 3.1415926536;
- Se recomienda nombrar las constantes utilizando solamente letras
mayúsculas.
|
44
|
- Se puede convertir un valor de un tipo de dato a otro mediante un
mecanismo llamado “casting”.
- Para convertir de un tipo a otro, se antepone, entre paréntesis, el
nombre del tipo al que se desea convertir el valor.
- Ejemplos:
- (int) 32.24 produce el entero 32.
- (double) 3 produce el double 3.0.
- (byte) 120 produce el byte 120.
|
45
|
|
46
|
- Variables como atributos de una clase
|
47
|
- Las variables pueden ser utilizadas tanto para declarar los atributos de
un objeto como para crear variables “locales” dentro de los métodos.
- Los atributos pueden ser “accesados” por todos los métodos de la
instancia a la que pertenecen.
- Si un método es declarado como estático, solamente puede utilizar
atributos estáticos.
|
48
|
- Las variables de instancia o atributos existen desde el momento que se
crea la instancia con new hasta que se destruye la instancia.
- Mientras que el objeto exista, el mismo puede guardar su “estado” dentro
de sus variables de instancia. En
otras palabras, los atributos conservan el valor mientras el objeto
exista.
|
49
|
- Las variables locales a un método existen solamente mientras el método
es ejecutado. Estas desaparecen
en el momento en que el método finaliza su ejecución.
- El main o método principal se comporta como un método más.
|
50
|
- class nombreClase {
- private tipo variableDeInstancia;
- ...
- public método1() {
- tipo variableLocal;
- ...
- }
- public static void main (String [] s) {
- tipo variableLocal;
- ...
- }
- }
|
51
|
- En P.O.O. público y privado se refiere al nivel de acceso a los miembros
(métodos y atributos) de una clase.
- En la mayoría de los lenguajes de P.O.O, los miembros de una clase
pueden ser (entre otros):
- private: accesibles solo por medio de métodos dentro de la clase.
- public: accesibles directamente desde fuera de la clase.
|
52
|
- Normalmente se recomienda lo siguiente:
- Los atributos de una clase deben ser privados.
- La interfaz debe ser pública para que otros puedan utilizar la clase.
- Seguir estas recomendaciones tiene una serie de ventajas…
|
53
|
- Si se tiene un equipo de enfriamiento, la manera apropiada de cambiar y
de ver la temperatura es a través de sus controles.
- El usuario no manipula directamente los mecanismos internos que regulan
la temperatura.
- Si al equipo se le cambia su mecanismo interno, el usuario no tiene que
aprender nuevamente cómo cambiar la temperatura.
|
54
|
- Se recomienda que los atributos de una clase sean accedidos por medio de
métodos utilizados para guardar su valor dentro de la instancia o
recuperarlo.
- A estos métodos se les asigna normalmente un nombre utilizando los
términos en inglés (“set” y “get”) por la comodidad que da el hecho de
ser palabras de solo tres letras con un significado directo (“asignar” y
“recuperar”).
|
55
|
- Asignar o “set” se usa para tomar un valor desde fuera del objeto y
guardarlo dentro de él.
- Recuperar o “get” se usa para tomar el valor que tiene un atributo
dentro del objeto y devolverlo a quien lo solicitó.
|
56
|
- Si una clase tiene un atributo llamado edad. Entonces:
- void setEdad(double edadAAsignar) se puede crear para asignar un valor
que viene desde fuera del objeto en el parámetro edadAAsignar para
guardarlo dentro del atributo llamado edad.
- double getEdad() se puede crear para pedirle al objeto que proporcione
una copia del valor del atributo edad.
|
57
|
- Permiten la validación de los valores que se le están asignando a los
atributos del objeto.
- Por ejemplo: en una clase llamada Mes, el método setDia(int dia) puede
validar que el día no tenga un valor mayor a 30 o 31 dependiendo el mes
en cuestión.
- Permiten que la estructura interna de una clase se modifique manteniendo
la misma interfaz.
- Por ejemplo: un conductor de un vehículo puede ver la velocidad del auto
aunque haya cambiado el sistema del velocímetro.
|
58
|
- El uso de set y get genera independencia entre la interfaz y la
implementación, lo cual es recomendable.
- A pesar de que el programador puede ponerle otro nombre a métodos para
guardar y recuperar, lo más utilizado es “set” y “get”.
|
59
|
|
60
|
- Los miembros estáticos son aquellos que pertenecen a una clase pero no
pertenecen a ninguna instancia específica.
- Si un atributo es declarado como estático, todas las demás instancias de
la misma clase pueden leer y escribir directamente en él.
- Si un método es declarado como estático, éste se puede invocar sin
necesidad de crear una instancia.
- En Java se declaran con el calificativo static.
|
61
|
|
62
|
|
63
|
|
64
|
- Los programas frecuentemente requieren
datos de entrada para realizar sus funciones.
- También requieren mostrar los resultados de su ejecución.
- La entrada / salida de los programas puede darse por muchos medios
distintos: en consola, con ventanas, páginas web, la impresora o el
sistema de archivos.
|
65
|
- Existen mecanismos de entrada/salida tanto para tiras de caracteres (String) como para
flujos de bytes.
- Dado que en una hilera se puede representar un literal de cualquier tipo
primitivo, una opción utilizada en Java es leer cualquier valor como
String y posteriormente convertirlo al tipo específico de la variable
que lo va a almacenar.
|
66
|
- En Java existe un objeto del sistema llamado System.out que representa el punto de salida de
información hacia el usuario.
- Los métodos print y println de System.out se utilizan para la impresión
de tiras de caracteres hacia la pantalla de consola.
- También existe System.err que es utilizado para salida de mensajes de
error.
|
67
|
- println imprime el String y cambia de línea. Ejemplo:
- System.out.println(“Hola mundo!”);
- print imprime el String sin cambiar a la siguiente línea. Ejemplo:
- System.out.print(“Hola mundo!”);
|
68
|
- System.in sirve para leer cadenas de bytes, sin embargo es común
utilizar componentes de más alto nivel para la lectura de caracteres
digitados por el usuario.
- Por ejemplo se pueden utilizar las ventanas de interacción que existen
en una clase llamada JOptionPane.
|
69
|
- JOptionPane es una clase de Java que tiene varios tipos de pantalla de
diálogo y que sirve tanto para leer como para desplegar datos:
- El InputDialog lee datos digitados por el usuario.
- El MessageDialog despliega mensajes en ventanas independientes.
|
70
|
- La entrada de datos se puede llevar a cabo con el método showInputDialog
que presenta una pantalla para entrada de datos.
|
71
|
- String nombre = JOptionPane.showInputDialog(" Digite su
nombre");
|
72
|
|
73
|
- La entrada de datos se puede llevar a cabo con el método
showMessageDialog que presenta una pantalla para despliegue de datos.
|
74
|
- JOptionPane.showMessageDialog(null, “salida”, “titulo”,
JOptionPane.tipoDeMensaje);
- null en el primer parámetro indica que no se relacionará esta ventana
con ninguna otra.
- “salida” es el String que va a presentarse con la salida deseada.
- “titulo” es el título que aparece en el borde de la ventana.
- tipoDeMensaje determina las opciones o botones, y el icono o dibujo,
que tendrá la ventana.
|
75
|
- JOptionPane.showMessageDialog(null,"¿ Desea continuar?",
"PREGUNTA", JOptionPane.QUESTION_MESSAGE);
|
76
|
|
77
|
|
78
|
- Los tipos numéricos primitivos permiten realizar las operaciones
aritméticas básicas sobre ellos.
- Estas son: suma, resta, producto, división y módulo (o residuo).
|
79
|
|
80
|
|
81
|
- En la mayoría de los lenguajes toda expresión se evalúa hasta obtener un
valor único.
- Las expresiones siempre producen un valor de un tipo primitivo o son
reducidas a una referencia hacia un objeto.
- En una expresión, el nombre de una variable siempre será sustituido por
el valor actual en memoria que tiene la variable.
|
82
|
- El orden de prioridad de los operadores aritméticos es el siguiente:
- Paréntesis: ( )
- Multiplicativos: *, /, %
- Aditivos: +, -
- Si existen varios operadores del mismo tipo al mismo nivel, estos se
evalúan de izquierda a derecha.
|
83
|
- y = ( (2 + 4 * 2) - 5 * (3 - 5))
/ 3
- Secuencia de evaluación:
- y = ( (2 + 8) - 5 * (3 - 5) ) / 3
- y = ( (10) - 5 * (3 - 5) ) / 3
- y = ( 10 - 5 * (3 - 5) ) / 3
- y = ( 10 - 5 * (-2) ) / 3
- y = ( 10 - 5 * -2 ) / 3
- y = ( 10 - -10 ) / 3
- y = (20) / 3
- y = 20 / 3
- y = 6
- y
- 6
|
84
|
|
85
|
- ¡Sí!
- Existen operadores conocidos como operadores unarios ya que involucran
un único operando por operador.
- Además existen operadores de asignación que sirven para modificar
directamente una variable.
|
86
|
|
87
|
- Suponga que c tiene un valor de 2.
|
88
|
- ¡Sí! Existen operadores de asignación directa.
- Estos operadores toman el valor de una variable como primer operando, le
aplican una operación utilizando un valor dado como segundo operando, y
finalmente dejan el resultado en la misma variable de donde se tomó el
primer operando.
|
89
|
|
90
|
|
91
|
|