Programación científica Variables y tipos de datos Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Variables y tipos de datos p. 1
Variable Una variable es efectivamente un espacio en la memoria de la computadora al cual se puede asignar un valor. La asignación puede tomar el valor de un constante o el valor de otra variable. Variables y tipos de datos p. 2
Asignación En pseudocódigo, típicamente se denota por :=. a := 0,34 Las asignaciones se realiza de la derecha hacia la izquierda y la asignación en sí se evalua al valor asignado. a := b := c Variables y tipos de datos p. 3
Tipos de datos Los contenidos posibles de una variable dependen de la cantidad de espacio que tiene reservado en la memoria. Este espacio típicamente se determina por definir el tipo de dato de la variable. Variables y tipos de datos p. 4
Enteros: short, int y long Depende de la máquina que rango tiene cada tipo. Por definir una variable unsigned, uno ahorra el bit de signo y aumenta el rango máximo al doble de lo que era. En ANSI-C, el archivo de las definiciones de los rangos de enteros es limits.h. Variables y tipos de datos p. 5
Rangos de enteros Tipo Por defecto En Yalma short [ 32,768, 32,767] lo mismo unsigned short : 65,535 lo mismo int [ 32,767, 32,767] [ 2,147,483,648,...] unsigned int 65,535 4294967295 long [ 2,147,483,647,...] lo mismo unsigned long 4,294,967,295 lo mismo Variables y tipos de datos p. 6
Punto flotante Para representar números reales por computadora, hay que definir hasta que exactitud se guarda los decimales del número, como el espacio para guardar un número entero está limitada a un tamaño constante que depende únicamente en el tipo de dato elegido. El método común de lograr tal representación es lo de punto flotante (también conocido como coma flotante) donde la representación se adapta al orden magnitud del valor x R. Variables y tipos de datos p. 7
Traslado de la coma La idea es trasladar la coma decimal hacia la posición de la primera cifra significativa de x mediante un exponente γ: x = m b γ, donde m se llama la mantisa y contiene los dígitos significativos de x. Es común normalizar la mantisa tal que su parte entera consta de solamente la primera cifra significativa de x. La mantisa típicamente tiene un tamaño máximo limitado a una cierta cantidad fija de bytes. Variables y tipos de datos p. 8
Exponente y base Lo que determina el rango de valores posibles que se puede representar en punto flotante es la cantidad de memoria reservada para el exponente γ Z. El parámetro b es la base del sistema de representación. Los números binarios tienen base b = 2 y comúnmente en cálculo utilizamos b = 10. También existen sistemas en base b = 8 (el sistema octal) y b = 16 (el sistema hexadecimal). Variables y tipos de datos p. 9
Punto fijo La otra opción sería simplemente reservar una cierta cantidad de bytespara la representación y fijar a posición en la cual se supone que esté la coma decimal. La representación de punto fijo es mucho más restrictiva con respeto al rango de valores posibles de guardar. En comparación, el método de punto flotante causa variaciones en la exactitud de la representación, mientras permite guardar valores de un rango mucho más amplio. En ANSI-C, el archivo con los datos que refinen los rangos están en el archivo float.h. Variables y tipos de datos p. 10
Tipos: float, double, long double Típicamente se usa la base 2. La mantisa tiene 24, 53 o 64 dígitos. Los rangos de representación en base 10 (por defecto [1E 37,1E + 37]) son [1,175494E 38,3,402823E + 38], [2,225074E 308, 1,797693E + 308], [2,225074E 308, 1,797693E + 308] Variables y tipos de datos p. 11
Aritmética (ANSI-C etc.) a = b a + b a - b a * b a / b a % b asignar sumar restar multiplicar dividir resto de la división Variables y tipos de datos p. 12
Paréntesis Se puede (y recomienda) utilizar las paréntesis para agrupar expresiones. Cada expresión debe terminar en un punto-coma. Ejemplo: a = (b - c) % ((d - 2) * 6); Variables y tipos de datos p. 13
Comparaciones == igual!= no igual < menor que > mayor que <= menor o igual que >= mayor o igual que Variables y tipos de datos p. 14
Variables binarias Algunos lenguajes traen su propio tipo de datos para variables binarias (o booleanas). Típicamente este tipo se llama boolean o bool. En ANSI-C, cada entero positivo se puede interpretar como verdad o falso : no cero = verdad cero = falso (true en Java) (false en Java) Estos dos valores de llaman valores de verdad. Variables y tipos de datos p. 15
Operaciones lógicas Uno puede combinar valores de verdad para evaluar expresiones lógicas: Notación Interpretación Símbolo && y (conjunción, los dos ambos) o (disyuncción, uno de los dos)! no (negación) También con estos es recomendable usar paréntesis para agrupar las expresiones bien. Ejemplo: a = (c && (d >= 4)) (e &&!(f!= h)); Variables y tipos de datos p. 16
Precedencia Para los que quieren arriesgarse y no usar paréntesis, el orden de precendencia de los operadores ya mencionados del más fuerte al más débil: () * / % + - «=»= ==!= = Variables y tipos de datos p. 17
Abreviaciones Notación a += b a -= b a *= b a /= b a %= b a++ a-- ++a --a Interpretación a = a + b a = a - b a = a * b a = a / b a = a % b a = a+1 (al final) a = a-1 (al final) a = a+1 (primero) a = a-1 (primero) Variables y tipos de datos p. 18
Letras (char ) Como todo contenido, las letras se guarda como números. El sistema de codificación básica se llama ASCII y tiene rango [0, 127] no contiene letras con acentos. (http://www.asciitable.com/) Tienen su propio tipo de dato char, que es casi un sinónimo de short. Muchos lenguajes de programación inclyuen soporte para otras codificaciones para poder manerar símbolos internacionales (como el Latin-1 o el UTF-8). Variables y tipos de datos p. 19
ctype.h : rutinas de detección int isalpha(int c) int isdigit(int c) int islower(int c) int ispunct(int c) int isspace(int c) int isupper(int c) int tolower(int c) int toupper(int c) si es una letra si es un dígito si es minúscula si es puntuación si es espacio blando si es mayúscula a minúscula a mayúscula Variables y tipos de datos p. 20