3.5 Elementos Del Lenguaje

21
Fundamentos de Programación Unidad III TIPOS DE DATOS Todos los lenguajes de programación soportan algún conjunto de diferentes tipos de datos. Un tipo de dato es un conjunto de valores y un conjunto de operaciones definidas para esos valores. Un tipo de dato describe un conjunto de objetos con la misma representación. Existe un número de operaciones asociadas con cada tipo, por ejemplo: es posible realizar aritmética sobre tipos de datos enteros y reales, concatenar con los datos de tipo cadena o recuperar o modificar el valor de un elemento de un arreglo. Un tipo de dato proporciona una descripción de sus instancias que indican al compilador cosas como cuanta memoria se debe asignar para una instancia, cómo representar los datos en memoria y qué operaciones son permisibles sobre esos datos. Por ejemplo, cuando se escribe la siguiente declaración: float z Se está declarando una instancia denominada z del tipo de dato float. El tipo de dato float, indica al compilador que reserve para él una localidad de 32 bits de memoria y que operaciones tales como sumar, restar, multiplicar le estarán permitidas. Sin embargo no necesitamos escribir la definición del tipo float, el autor del compilador lo hizo por nosotros y se construyen en el compilador. Los tipos de datos que se construyen en el compilador, se conocen como tipos de datos fundamentales o predefinidos. Cada lenguaje de programación incorpora una colección de tipos de datos fundamentales, que incluyen normalmente enteros, reales, carácter, etc. Los lenguajes soportan también un número de constructores de tipos de datos estructurados o compuestos , que son tipos más complejos, por ejemplo: los registros y los arreglos.

Transcript of 3.5 Elementos Del Lenguaje

Page 1: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

TIPOS DE DATOS

Todos los lenguajes de programación soportan algún conjunto de diferentes tipos de datos. Un tipo de dato es un conjunto de valores y un conjunto de operaciones definidas para esos valores.

Un tipo de dato describe un conjunto de objetos con la misma representación. Existe un número de operaciones asociadas con cada tipo, por ejemplo: es posible realizar aritmética sobre tipos de datos enteros y reales, concatenar con los datos de tipo cadena o recuperar o modificar el valor de un elemento de un arreglo. Un tipo de dato proporciona una descripción de sus instancias que indican al compilador cosas como cuanta memoria se debe asignar para una instancia, cómo representar los datos en memoria y qué operaciones son permisibles sobre esos datos.

Por ejemplo, cuando se escribe la siguiente declaración:float z

Se está declarando una instancia denominada z del tipo de dato float. El tipo de dato float, indica al compilador que reserve para él una localidad de 32 bits de memoria y que operaciones tales como sumar, restar, multiplicar le estarán permitidas. Sin embargo no necesitamos escribir la definición del tipo float, el autor del compilador lo hizo por nosotros y se construyen en el compilador.

Los tipos de datos que se construyen en el compilador, se conocen como tipos de datos fundamentales o predefinidos. Cada lenguaje de programación incorpora una colección de tipos de datos fundamentales, que incluyen normalmente enteros, reales, carácter, etc. Los lenguajes soportan también un número de constructores de tipos de datos estructurados o compuestos, que son tipos más complejos, por ejemplo: los registros y los arreglos.

SIMPLES O PRIMITIVOS (Básicos, Fundamentales o predefinidos): Son aquellos que reconoce directamente el lenguaje, sirven de base para otros tipos de datos (complejos), ocupan solo una localidad de memoria, para el almacenamiento de un valor simple, no de objetos complejos. Por lo tanto la variable que lo identifica hace referencia a un valor único a la vez., este tipo de datos se clasifican de la siguiente manera:

Numéricos: Son aquellos que solamente aceptan caracteres numéricos y el caracter punto en el caso de aquellos valores fraccionarios.

Enteros: Son aquellos que consideran solamente valores enteros (sin fracciones decimales) pudiendo ser precedidos por el caracter (-), para asignarle el signo a los valores negativos. A este grupo pertenecen los siguientes tipos.

Page 2: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

Tipo Tamaño RangoLong 64 bits -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807Int 32 “ -2,147,483,648 a 2,147,483,647Short 16 “ -32,768 a 32,767Byte 8 “ -128 a 127

Nota: Se emplearon comas en la tabla con el único objetivo de clarificar el rango, pero es conveniente aclarar que el tipo de dato entero solo acepta caracteres numéricos y el signo menos para los valores negativos.

Coma Flotante o Reales: También pueden estar precedidos por el signo (-), pero a diferencia de los enteros, pueden contener fracciones decimales, por ello incluyen el carácter punto como separador de la parte entera y la fraccionaria.

Tipo Tamaño RangoDouble 64 bits 1.7e-308 a 1.7e+308Float 32 “ 3.4e-038 a 3.4e+038

Caracter o char: Ocupan 16 bits, con un rango de 0 a 65,536. Este rango tan amplio, le permite al lenguaje representar cualquier carácter alfabético, numérico (sin signo) o especial de cualquier lenguaje o idioma de cualquier parte del mundo, garantizando con esto la portabilidad. El carácter debe estar delimitado por comillas simples (apostrofes).

Ejemplos:‘A’‘7’

Es posible también, en lugar del caracter, incluir el número de código en ASCII que le corresponde a un determinado caracter.

Ejemplo:b = 64;

Nota: En este caso b tomaría el carácter @ como su valor asignado.

Lógicos o Booleanos: Java los define como Boolean y son aquellos que solamente pueden tomar uno de dos posibles valores:

1. Falso (False) 2. Verdadero (True)

Page 3: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

NO PRIMITIVOS (Estructurados o compuestos): Son aquellos que no están considerados por el lenguaje y tendrán que ser definidos por el programador, empleando para ello los tipos de datos simples o básicos, a ellos pertenecen los siguientes:

Cadena de caracteres o String: Las cadenas en Java no son un tipo de dato simple, ni tampoco un arreglo de caracteres como lo manejan otros lenguajes, sin embargo si se manejan en Java pero como objetos con propiedades y atributos especiales que facilitan mucho la manipulación de hileras. Por ahora veremos las cadenas en su forma más simple compuestas por un conjunto de caracteres delimitados por comillas dobles.

Ejemplos:String cadena;cadena = “Cd. Victoria”;cadena = “Juan Martínez”;

Matrices: (En otros lenguajes se les conoce también como arreglos o formaciones) Permiten almacenar un conjunto finito de datos homogéneos (de un mismo tipo) y pueden ser unidimensionales o multidimensionales. Una matriz entonces puede definirse como un conjunto de localidades de memoria que comparten un mismo nombre. Las matrices pueden ser lineales (unidimensionales) y no lineales (matrices multidimensionales).

Ejemplos:int matrizLineal;matrizLineal = {5,8,10,0,7,1};

Referencias: Cualquier variable cuyo tipo de dato es de una clase definida en las librerías de JAVA o de una clase escrita por el programador.

Ejemplos:Date fecha; fecha=new Date();

Page 4: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

EJERCICIOS TIPOS DE DATOS

De acuerdo al documento leído y considerando además los rangos de valores para los tipos de datos numéricos analice la siguiente lista de valores e identifique y señale a qué tipo de dato pertenecen (byte, short, int, long, double, float, boolean, char, String):

No. Valor Tipo de Dato1 212 False3 ’s’4 327685 3.4 e+0386 4231587 -327698 “)¡!)(¡!¿¿?”9 True10 42.6111 3276712 “18 Anaya # 201”13 ’6’14 “$1,426.00”15 016 1.7e-308

IDENTIFICADORES, VARIABLES Y CONSTANTES

Algunos de los principales componentes de un programa en Java son los identificadores, las variables y las constantes.

Identificadores: Se emplean para asignarle un nombre a una clase, objeto, atributo, etc. Y se puede emplear en el, cualquier secuencia de caracteres alfabéticos en mayúsculas o minúsculas, numéricos, los caracteres de subrayado (guión bajo), el de dólar ($) y no se permiten los espacios en blanco como separadores de palabras.

Ejemplos válidos Ejemplos NO válidosCuenta Cuenta de chequesCal_1 *calificaciónpromedioGeneral /contadorsalarioMinimo

Page 5: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

Existe un conjunto de consideraciones o reglas que deben cuidarse al elegir un identificador, como son las siguientes:

Los identificadores pueden tener cualquier longitud, aunque se recomienda que sean cortos y den una idea de para que son.

No se pueden emplear palabras clave o reservadas como identificadoresEjemplo: else sería un identificador no válido

Java es sensible a las mayúsculas por lo tanto distingue a unas de otrasEjemplo: Num es diferente de num

Los nombres de variables se escriben con minúsculas o se combinan con mayúsculas como separadores, cuando se componen de varias palabras

Ejemplos: cveFact contador

Los nombres de constantes se escriben con mayúsculasEjemplo: IMPUESTO

Los nombres de los métodos combinan minúsculas y mayúsculas ya que generalmente emplean palabras compuestas donde la primer palabra indica la acción y la segunda que inicia con mayúscula indica sobre quien recae la acción

Ejemplos: imprimeFactura() calculaPrecioVenta()

Los nombres de las clases incluyen en el primer carácter una mayúsculaEjemplos: Factura

Circulo Los nombres de los objetos incluyen solo minúsculas

Ejemplo: obreroVariables: Se considera la unidad básica de almacenamiento de Java, su valor puede cambiar durante la ejecución del programa y se define mediante la declaración del tipo de dato a almacenar en ella, seguido del identificador de la variable y un valor inicial opcional compatible con el tipo que se le haya asignado a la variable, si se requiere declarar a un conjunto de variables del mismo tipo, estas se deben separar utilizando el carácter coma ( , ).

En otros lenguajes, las declaraciones se sitúan siempre al inicio del programa, mientras que en Java, las declaraciones se pueden mezclar con sentencias ejecutables y su ámbito es el bloque en el que están declaradas es decir:

Puede declararse en una clase como miembro de la misma. Puede declararse al inicio de un método como variable local para ese

método. Puede declararse en algún punto específico del programa con una

sentencia ejecutable, como en una estructura for.

Formato de declaración:tipo identificador;

Page 6: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

o también:

tipo identificador = valor ;

NOTA : Recuerde que el valor puede ser opcional, si este no se requiere, simplemente se declara sin inicializarlo.

Ejemplos:int a, b, c;int d = 5, e, f = 8 ;byte edad = 27 ;double precio = 286.65;char x = ‘5’;

Constantes: Son valores que permanecen fijos durante la ejecución del programa, estos pueden o no contener identificador, cuando no lo tienen se les conoce como literales y cuando lo tienen se deben declarar de modo muy similar a como se hace con una variable pero con las siguientes diferencias:

1. El identificador solo puede contener mayúsculas y caracteres de subrayado (guión bajo).

2. Necesariamente se debe inicializar con un valor (literal);3. Se debe anteponer al tipo de dato la palabra reservada final.

Ejemplos:final double VALOR_DE_ PI = 3.1416;final double A = 22570;final double CM_POR_PULGADA = 2.54;final int MESES_DEL_AÑO = 12;

Cuando se emplean literales numéricas en una expresión, si no contiene punto decimal son del tipo int por defecto y si cuenta con el será double por defecto. Si se desea modificar el tipo de la literal, se debe añadir en seguida del valor, la inicial del tipo por el que se desea cambiar.

Ejemplo:float valor_1;byte valor_2;final byte V_CONSTANTE = 2b;valor_1 = 275.67f ;valor_2 = 4b * V_CONSTANTE;

Page 7: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

EJERCICIOS DE IDENTIFICADORES, VARIABLES Y CONSTANTES

De la siguiente lista de identificadores señale con una X los identificadores validos en Java para nombres de clases:

AlumnosCuenta de chequesBoletaDeCalificacionesbtrabajos_finales

De la siguiente lista de identificadores señale con una X los identificadores validos en Java para nombres de objetos:

Calificaciones1er.calificaciónempleado6circulo

De la siguiente lista de identificadores señale con una X los identificadores validos en Java para nombres de métodos:

Mover()calculaPrecio()precio de lista()lecturaDeValores()Calcula impuesto()

De la siguiente lista de identificadores señale con una X los identificadores validos en Java para nombres de variables:

resultado*nombreprecioVenta_contador8

De la siguiente lista de identificadores señale con una X los identificadores validos en Java para nombres de constantes:

COLORESColorescolores567MAXIMO

Page 8: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

OPERADORES

Se les llama al conjunto de símbolos que permiten realizar con ellos operaciones de asignación, aritméticas, relacionales y lógicas.

Operador de Asignación : Sirve para asignarle un valor a una variable o igualar una constante con una literal, el signo esta dado por el carácter igual (=). La variable o constante que recibirá el valor se coloca a la izquierda del signo y el valor que habrá de tomar se colocará a la derecha del mismo.

Ejemplos: final int A = 7;byte b = 3;a = b*3/2;

Operandos: Son los valores involucrados en una operación aritmética, pudiendo estar representados por variables y/o constantes.

Expresiones: Es la combinación de constantes, variables, operadores aritméticos, operandos y el operador de asignación que sirven para expresar o representar una operación aritmética.

Ejemplo:a = b*3/2;

Operadores aritméticos : Son empleados por las expresiones para llevar a cabo operaciones matemáticas, siendo estos las siguientes:

Operadores básicos:

+ Suma- Resta* Multiplicación/ División % Módulo

Estos operadores tienen un orden de ejecución (jerarquía de operaciones) que ayuda a determinar en qué orden habrán de ejecutarse las operaciones.

Jerarquía de Operaciones

1º. * , / , %2º. + , -

Page 9: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

NOTAS: Las operaciones se ejecutan siempre de izquierda a derecha respetando la

jerarquía de los operadores. La jerarquía puede ser alterada mediante el uso de paréntesis. En caso de

usarse estos, primero se ejecutaran las operaciones que se encuentren dentro de ellos y si hubiera anidamiento de paréntesis primero se ejecutarán los mas internos.

Las operaciones aritméticas son expresadas en una sola línea.

Java proporciona otro conjunto de operadores especiales que permiten combinar una operación aritmética con una asignación, cuando se emplea la misma variable en ambos lados del operador de asignación, estos operadores son los siguientes:

++ Incremento-- Decremento+= Suma y asignación-= Resta y asignación*= Multiplicación y asignación/= División y asignación%= Módulo y asignación

Ejemplos:a = a + 1; se puede escribir como a ++; b = b + 5; se puede escribir como b += 5;c = c * 2; se puede escribir como c *= 2;

Este tipo de operadores ayudan a abreviar las expresiones y el intérprete de Java implementa de una manera más eficiente este tipo de operaciones.

Operadores relacionales:

Los operadores relacionales son símbolos que se usan para comparar o relacionar dos valores. Si el resultado de la comparación es correcto la expresión considerada es verdadera, en caso contrario es falsa. Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera y se representa por el valor true del tipo básico boolean, en cambio, 8<4 (ocho menor que cuatro) es falsa, por lo que se representa como false. En la primera columna de la tabla están los símbolos de los operadores relacionales, la segunda contiene el nombre de dichos operadores, y a continuación su significado mediante un ejemplo.

Operador Nombre Ejemplo Significado

< menor que a<b a es menor que b

Page 10: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

> mayor que a>b a es mayor que b

== igual a a==b a es igual a b

!= no igual a a!=b a no es igual a b

<= menor que o igual a a<=5 a es menor que o igual a b

>= mayor que o igual a a>=b a es menor que o igual a b

Se debe tener especial cuidado en no confundir el operador asignación con el operador relacional igual a. Las asignaciones se realizan empleando una vez el símbolo igual (=), mientras que en las relaciones de igualdad se emplea el mismo signo pero 2 veces (==).

Ejemplo: Si consideramos que a tiene un valor de 10 y b tiene un valor de 8 los resultados para las siguientes expresiones serian:

(a > b) verdadero

(b ! = 8) falso

Operadores lógicos :

Los operadores lógicos más comunes empleados en las operaciones booleanas son las siguientes:

&& AND (el resultado es verdadero si ambas expresiones son verdaderas) || OR (el resultado es verdadero si alguna expresión es verdadera) ! NOT (el resultado invierte la condición de la expresión)

AND y OR evalúan dos condiciones simples y retornan un valor lógico basadas en las denominadas tablas de verdad. El operador NOT actúa sobre un operando. Estas tablas de verdad son conocidas y usadas en el contexto de la vida diaria, por ejemplo: "si hace sol Y tengo tiempo, iré a la playa", "si NO hace sol, me quedaré en casa", "si llueve O hace viento, iré al cine". Las tablas de verdad de los operadores AND, OR y NOT se muestran en las tablas siguientes

Al emplear

el operador lógico

AND

X Y Resultado

True True True

True False

False

Page 11: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

False

True False

False

False

False

Al emplear

el operador lógico

OR

X Y Resultado

True True True

True False

True

False

True True

False

False

False

Al emplear el operador lógico NOT

Al emplear

el operador

lógico NOT

X Resultado

True False

False True

Los operadores AND y OR combinan expresiones relacionales cuyo resultado viene dado por la última columna de sus tablas de verdad. Por ejemplo:

(a<b) && (b<c)

es verdadero (true), si ambas son verdaderas. Si alguna o ambas son falsas el resultado es falso (false). En cambio, la expresión

(a<b) ||(b<c)

es verdadera si una de las dos comparaciones lo es. Si ambas, son falsas, el resultado es falso.

Page 12: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

La expresión " NO a es menor que b"

!(a<b)

es falsa si (a<b) es verdadero, y es verdadera si la comparación es falsa. Por tanto, el operador NOT actuando sobre (a<b) es equivalente a

(a>=b)

La expresión "NO a es igual a b"

!(a==b)

es verdadera si a es distinto de b, y es falsa si a es igual a b. Esta expresión es equivalente a

(a!=b)

FUNCIONES ARITMÉTICAS

Existen funciones o métodos que el sistema pone a disposición del usuario llamadas funciones internas, definidas o de biblioteca (Para este caso los métodos de la biblioteca estándar de clases de Java) y se podrá hacer uso de ellas haciendo referencia a su nombre y entre paréntesis los parámetros que requiera para su ejecución.

La clase Math en Java: Con frecuencia es necesario utilizar otro tipo de operadores además de los aritméticos en las operaciones matemáticas, ya que muchos cálculos requieren el uso de funciones matemáticas como raíz cuadrada, seno, coseno, etc.

La clase Math en el paquete java.lang contiene los métodos de clase frecuentemente usados en las funciones matemáticas. La siguiente tabla contiene un listado parcial de los métodos de clases disponibles en la clase Math:

Métodos de la clase y

su(s) parámetro(s)

Tipo de

parámetro

Tipo de

resultadoDescripción

abs ( a )Int Int Devuelve el valor absoluto entero

de along Long Devuelve el valor absoluto long de afloat Float Devuelve el valor absoluto float de

a

Page 13: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

acos ( a ) double Double Devuelve el arco coseno de aasin ( a ) double double Devuelve el arco seno de aatan ( a ) double double Devuelve el arco tangente de aceil ( a ) double double Devuelve el número mas bajo cuyo

valor sea > = que acos ( a ) double double Devuelve el coseno trigonométrico

de aexp ( a ) double double Devuelve el valor natural del

número e(2.718…) elevado a la potencia de a

floor (a ) double double Devuelve el número mas grande cuyo valor es < = que a

log ( a ) double double Devuelve el logaritmo natural (base e) de a

max ( a,b ) Int Int Devuelve el valor más grande entre a y b

long Long Devuelve el valor más grande entre a y b

float float Devuelve el valor más grande entre a y b

min ( a,b ) Int Int Devuelve el valor más pequeño entre a y b

long Long Devuelve el valor más pequeño entre a y b

float float Devuelve el valor más pequeño entre a y b

pow ( a,b) double double Devuelve el número a elevado a la potencia de b

random ( ) ninguno double Genera un número aleatorio más grande o igual a 0.0 y menor que 1.0

round ( a ) float Int Devuelve el valor entero de a redondeado al número más cercano

double Long Devuelve el valor flotante de a redondeado al número entero más cercano

sin ( a ) double double Devuelve el seno trigonométrico de a

sqrt ( a ) double double Devuelve la raíz cuadrada de atan ( a ) double double Devuelve la tangente

trigonométrica de a

Page 14: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

NOTA: La clase Math tiene también dos constantes: PI y E, para el número 3.14159 y el número natural e, respectivamente.

Recuerde que la sintaxis para hacer referencia a los métodos de una clase es la siguiente:

<nombre de clase>. <nombre de método> (<argumentos>)

Específicamente para los métodos y constantes de la clase Math es como sigue:

Math. <nombre de método> (<argumento(s)>)

o

Math. <constante de clase>

Ejemplo:

p = (1.0 / 2.0) * Math.sin ( x - Math.PI / Math.sqrt (y) )

Ejercicios de Operadores Aritméticos

Considerando la jerarquía de operaciones, encontrar el valor que se obtendría de las siguientes expresiones:

a = 3 * 5 + 6 + 1 ;

El valor que tomaría a sería de:

b = 3 * ( 5 + 6 ) + 1 ;

El valor que tomaría b sería de:

c = 3 * ( ( 5 + 6 ) * 2 ) + 1 ;

El valor que tomaría c sería de:

d = 3.0 * 6 ;

Page 15: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

El valor que tomaría d sería de:

x = 2;y = 3;z =x * y – x ;

El valor que tomaría z sería de: x = Math.round ( ( 6 * 3 + 5 ) / 5 ) ;

El valor que tomaría x sería de:

Ejercicios: Escribir las siguientes operaciones matemáticas, en expresiones computacionales:

a + 1 è b

a+b è c+d

a b è c

(a+b) c è a

sen(a)+cos(b) è tan(c)

Ejercicios de Operadores Lógicos y Relacionales

Encontrar el valor que se obtendría (false o true) al evaluar las siguientes expresiones. Suponga que las variables a y b que aparecen son del tipo int y tienen el valor de 5 y 3 respectivamente.

Page 16: 3.5 Elementos Del Lenguaje

Fundamentos de Programación Unidad III

(a > b)

( a * b + 2 == 17 )

(a > b && 2 * a <= b)

b++ > 3 || a+b <= 8 && (a>b)

(a++ /2 < b && !(a++/2 > b) )

(a<=2*b && a>b || (a*3 <= b) )