Lectura TipodeDatos2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

Tema 2: Tipos de Datos

1.- Introducción

Los algoritmos manipulan valores, estos valores no suelen ser valores sueltos, sino un conjunto de ellos
relacionados entre sí. Por ejemplo, normalmente no se utiliza un número solo sino muchos números,
con los que se puede realizar muchas operaciones. Por esta razón, los valores se agrupan en conjuntos
de valores llamados tipos de datos. En otras palabras, un tipo de datos es una estructura matemática que
agrupa un conjunto de elementos con características comunes, sobre los cuales se definen determinadas
operaciones.

En esencia un tipo de dato reúne las cualidades comunes a un grupo de elementos u objetos que los
distinguen en una clase o especie. Y consta de dos partes: el conjunto de valores y un conjunto de
operaciones sobre dichos valores.

El valor caracteriza el contenido del dato. Al conjunto de valores que incluye un tipo de dato se le
conoce como dominio. Ejemplo: 15, Pedro Pérez, V12345566, 04.

En general, los datos pueden venir expresados como constantes, variables, expresiones o funciones. Las
constantes y variables tienen un tipo y las expresiones se clasifican según el resultado que producen.

Generalidades
• Los tipos de datos determinan el conjunto de valores al cual pertenece una constante, puede ser
tomado por una variable o por una expresión.

• Un compilador puede emplear esta información referente a tipos de datos para verificar la legalidad
de diversas construcciones. Por ejemplo una asignación equivocada o una operación inválida.

• Muchos lenguajes de programación ofrecen un conjunto de tipos primitivos de datos integrados al


lenguaje. Existen los lenguajes tipificados donde las variables adoptan un tipo (ej. Pascal, Haskell),
otros lenguajes no tipificados no restringen el rango de valores que pueden adoptar las variables (ej.
Lisp, Prolog)

• Evitan o detectan errores de programación: Un tipo caracteriza el conjunto de valores que las
expresiones de ese tipo pueden tener.

• Ayudan a estructurar la información: Los tipos pueden verse como colecciones de valores que
comparten ciertas propiedades.

• Ayudan a manejar estructuras de datos: Los tipos indican cómo utilizar las estructuras de datos que
comparten el mismo tipo.

• Por un lado, los tipos de datos permiten detectar errores en las operaciones y por otro lado, determina
cómo se ejecutan estas operaciones.

1
• Por cada tipo de dato estándar los lenguajes de programación ofrecen cierto conjunto de operadores
primitivos estándar.

• Los distintos tipos de datos se representan en diferentes formas en la computadora. A nivel de


máquina, un dato es un conjunto o secuencia de bits (dígitos 0 o 1). Los lenguajes de alto nivel
permiten basarse en abstracciones e ignorar los detalles de representación interna.

2.- Clasificación de Tipos de Datos

La clasificación se hace de acuerdo a su comportamiento durante la ejecución de un programa y al


rango de valores que un objeto puede tomar que a su vez definen las operaciones que podrán ser
ejecutadas sobre ellos.

Los datos a procesar por una computadora pueden clasificarse en:


• Tipos Primitivos o predefinidos
• Tipos estructurados

En el siguiente gráfico se muestra la clasificación de los tipos de datos

Tipos de Datos

Estáticos Dinámicos

Primitivos Estructurados Primitivos Estructurados

Normalizados Definidos por Homogéne Heterogéneos


el usuario os
Listas
Apuntadores
Pilas

Colas
Real Enumerado Vectores Registros
s fijos Árboles
Booleano Intervalo Matrices Registros
variantes Grafos
Caracter Cadenas

Entero

3.- Tipos de Datos Estáticos

Que un tipo de datos sea estático quiere decir que el tamaño que ocupa en memoria no puede variar
durante la ejecución del programa. Es decir, una vez declarada una variable de un tipo determinado, a
ésta se le asigna un trozo de memoria fijo, y este trozo no se podrá aumentar ni disminuír.

En este tema sólo trataremos los tipos de datos primitivos estáticos.


2
4.- Tipos Primitivos:
También se les conoce como simples, elementales o nativos. Son tipos de datos que no están definidos
en términos de otros tipos de datos, no pueden dividirse en componentes. Su principal característica es
que ocupan solo una casilla de memoria, por lo que hace referencia a un solo valor a la vez.

4.1 Enteros: Es el tipo de dato primitivo más común está conformado por un subconjunto finito
de los números enteros. Los enteros son números completos no tienen componente fraccionaria
o decimal y pueden ser positivos o negativos. Ej. 876, -45.

Hoy en día muchos computadores varios tamaños de enteros y sus capacidades se ven reflejadas
en los lenguajes de programación. Ej. El lenguaje C soporta short integer, integer y long
integer.

Una variable entera (int) está formada por 4 bytes, es decir 32 bits. Estos 32 bits representan el
valor almacenado por esa variable en binario. Por ejemplo:

El valor representado por esta variable es:

1*20 + 0*21 + 1*22 = 5

En general, una variable entera x está formada por 32 bits que denotaremos x31, x30, ... , x2, x1
y x0.

El valor numérico representado por la variable x está dado por el siguiente cálculo:

• Si x31 es 0, el valor es positivo y se calcula como:


• x31*2^31 + x30*2^30 + ... + x2*2^2 +x1*2^1+ x0*2^0
• Si x31 es 1, el valor es negativo y se calcula construyendo una nueva palabra y, tal que:
• yi= 1 si xi=0
• 0 si xi=1
• valor(x) = - (valor(y) + 1)

Se dice que y es el complemento de x.

Ejemplos:

• valor(000...001001) = 1*2^3+1*2^0= 9
• valor(111...111010) = - (valor(000...000101)+1) = - (5+1) = -6

Una variable entera (int) siempre utiliza 32 bits, aún cuando el número sea pequeño. Por otra
parte, no es capaz de almacenar números demasiado grandes (en valor absoluto).

3
Valores máximos y mínimos
Máximo= valor(011...111111)= 231 -1
Mínimo= valor(100...000000)= -231
Por lo tanto, con un entero se pueden almacenar números de 9 dígitos aproximadamente.

Ejercicios:
• ¿Qué número representa el siguiente número en binario 000...00101011? resp 43
• ¿y el 111...101001?
• ¿Cómo se representa en el computador el número 23?
• ¿y el -35?

4.2 Reales: es un subconjunto de los números reales. Tienen parte decimal y pueden ser
positivos y negativos. Ej. 0.8, 678.55

Una variable real (double) está formada por 8 bytes, es decir el doble de un entero. En ella se
almacenan números reales en formato binario. Por ejemplo, el número:
1101.1010

Representa en decimal al número:

23 + 22 + 20 + 2-1 + 2-3 = 8+4+1+0.5+0.125 = 13,175

Los primeros computadores almacenaban los números reales en un formato llamado punto fijo,
en donde se destinaba una cantidad fija de bits para la parte entera (por ejemplo 32 bits) y el
resto a la parte fraccionaria. Por lo tanto, el número anterior sería representado en 64 bits como:

00000000 00000000 00000000 00001101 . 10100000 00000000 00000000 00000000

En esta representación, el punto que separa la parte entera de la parte fraccionaria, siempre se
ubica en una posición fija y de ahí el nombre de esta representación.

El problema de esta representación es que el rango de valores representables es el mismo de los


números enteros. Se necesitaba un mecanismo que aumentara el rango de números
representables. La forma de hacerlo fue destinar una parte de los bits a indicar la posición del
punto. Y este formato pasó a llamarse punto flotante.

Representación en punto flotante: En aplicaciones científicas se requiere una representación


especial para manejar datos muy grandes o muy pequeños. Una computadora sólo puede
almacenar un número finito de dígitos y es por ello que existen representaciones especiales
como la notación científica. Para expresar un número en notación científica multiplicamos o
dividimos por 10 tantas veces como sea necesario para que todos los dígitos aparezcan a la
derecha del punto decimal y de modo que el primer dígito después del punto no sea cero. Por
ejemplo: La representación en punto flotante es una generalización de la notación científica.

Las siguientes expresiones son equivalentes:


3.675201 x 1019 = .3675201 x 1020 = .03675201 x 1021

4
En estas expresiones se considera mantisa (parte decimal) al número real y el exponente (parte
potencial) el de la potencia de 10.

3.675201 mantisa 19 exponente

En general un número puede expresarse en punto flotante como:


n = m * be
La mantisa puede contener de 4 a 8 dígitos y el exponente 2 dígitos (positivos o negativos)
Rango: -1038 a 1038

Ejemplos:
Número Notación Científica Notación Punto Flotante
5966000000000000000000000 kg = 5,9660·1024 kg. (masa de la tierra)

Un número real se almacena en una variable especificando 3 componentes: el signo (+ o -), la


mantisa y el exponente. Por ejemplo, el número 11 se representa como:

• el signo: +
• mantisa: 10110000...
• exponente: 4

La mantisa es una secuencia de bits que siempre comienza en 1. El exponente indica en donde
colocar el punto que separa la parte entera de la fraccionaria. Un valor 0 indica que el punto se
coloca justo antes del primer bit. Un valor 4 indica que se coloca después del cuarto bit. Un
valor -3 indica que hay que imaginar que el número va precedido por 0.000 y luego viene la
mantisa.

¿Qué número es el siguiente?

• el signo: -
• mantisa: 110010000...
• exponente: 7

Solución: -1100100.00... , que es -(4+32+64)= -100

4.3 Caracter: Es un conjunto finito y ordenado de caracteres. Estos pueden ser:


• Caracteres alfabéticos: letras mayúsculas(A, B, C...Z), letras minúsculas, (a, b, c, ..., z),
letras acentuadas (é, ú, ...).
• Caracteres numéricos: números (0, 1, 2, 3, …).
• Caracteres especiales: símbolos o caracteres de control (+, -, *, ., >, <, ....), ‘\b’
Backspace, ‘\t’ Tabulación horizontal, ‘\n’ Nueva línea, ‘\”’ Comillas dobles. Los
caracteres se recogen en una tabla del SO llamada ASCII. Cuenta con 256 elementos y
ocupan un byte.
• Internamente en la memoria, cada carácter es representado por un código de la tabla
ASCII.
• Externamente, esto es, a la vista del usuario, los caracteres son presentados mediante la
representación gráfica usual.

5
4.4 Cadena de Caracteres: Es una sucesión de caracteres que se encuentran delimitados por
comillas, apóstrofes o doble comilla según el lenguaje. Ej. Nombres, direcciones y palabras en
general: ‘Universidad de Carabobo’

Operaciones: longitud (número de caracteres de la cadena), primer (primer elemento de la


cadena), etc.

4.5 Lógico: Es aquel dato que solo puede almacenar dos valores (representa los valores
lógicos): verdadero o falso. Se usa generalmente para representar alternativas (si/no) a
determinadas condiciones.

Operadores: and (y, ^), or (o,), not (negación, ~, ¬)

5. Operaciones

El conjunto de operaciones definido para un tipo de dato determina como se pueden manipular los
datos. Pueden ser primitivas, definidas por el lenguaje de programación o definidas por el
programador, es una función matemática, para un argumento (o argumentos) de entrada de dato, tiene
un resultado bien definido y determinado de manera exclusiva. Cada operación tiene un dominio
(conjunto de valores posibles de entrada con base a los cuales se define un intervalo), y el conjunto de
posibles resultados que puede producir. La acción define los resultados que se producen para un
conjunto dado de argumentos.

Según el número de argumentos una operación puede ser unaria o binaria.


• Operaciones unarias: o monádica, toma un argumento y da un resultado.
• Operaciones binarias: o diádica, toma dos argumentos y da un resultado.

En general el número de argumentos de una operación se llama aridad de la operación.

5.1 Operadores
Un operador maneja uno o varios datos (operandos) para realizar un determinado cálculo con
ellos. Dependiendo del tipo de los operandos se podrán aplicar unos tipos de operadores u
otros. Se conocen como los símbolos usados como función.

La función puede ser infija si tiene dos argumentos y prefija si tiene solo una. Existen 4 tipos
de operadores: • Aritméticos • Alfanuméricos • Relacionales • Lógicos

5.1.1 Operadores aritméticos


Realizan operaciones entre datos numéricos. Su resultado es un valor numérico.
Operador Significado
- Menos unario
* Multiplicación
/ División real
↑ Exponenciación
+ Adición (Suma)
- Resta
mod Modulo de la división entera
div División entera

6
Los operadores aritméticos son aplicables a los tipos de datos numéricos. La operación mod
sólo se aplica a datos enteros.
Nota: No todos los operadores aritméticos existen en todos los lenguajes de programación. Por
ejemplo en Fortran no existen ni el DIV ni el MOD.
El operador exponenciación es diferente según el lenguaje.

5.1.2 Operadores lógicos


Realizan operaciones entre datos lógicos o booleanos. El resultado es un valor lógico y son
aplicables a tipos de datos lógicos.
Están basados en el Álgebra de Boole, donde cada operador, pose una especificación llamada
tabla de verdad.

• Negación (¬): Operador unario. Devuelve el valor inverso.


• Conjunción (): Operador binario. Devuelve cierto si los dos operandos son ciertos y
falso en otro caso.
• Disyunción (): Operador binario. Devuelve falso si los dos operandos son falsos y
cierto en otro caso.
El orden de precedencia es ¬, , 

5.1.3 Operadores alfanuméricos


Operan con cadenas de texto. Para ello son necesarias las funciones (se verá en el tema
correspondiente).

5.1.4 Operadores relacionales


Realizan operaciones de comparación entre distintos tipos de datos. El resultado es un valor
lógico (verdadero o falso). Generalmente sirven para expresar condiciones en los algoritmos.

El formato general para las comparaciones es :


<Expresión1> operador de relación <Expresión2>
Las operaciones de relación se pueden aplicar a cualquiera de los 5 tipos de datos vistos:
(enteros, real, lógico, carácter y cadenas).

5.2 Comparaciones con tipo de dato caracter :


• Se requiere una secuencia de ordenamiento entre los caracteres (creciente o decreciente). Este
ordenamiento suele ser alfabético tanto mayúsculas como minúsculas y numéricas.
• Si se consideran caracteres mixtos se debe recurrir a un código normalizado, normalmente esto
es:
 Caracteres especiales #, %, $, (, ), +, -, /, ...... exigen la consulta del código de
ordenamiento.
 Los valores de los caracteres que representan a los dígitos están en su orden natural.
‘0’ < ‘1’, ....., ‘8’ < ‘9’.
 Las letras mayúsculas siguen el orden alfabético. ‘A’ < ‘C’, ...., ‘F’ < ‘N’.
 Las letras minúsculas siguen el orden alfabético. ‘a’ < ‘b’, ...., ‘e’ < ‘g’.
 En general los 4 grupos anteriores están situados en el código ASCII en orden
creciente.

7
5.3 Comparaciones con tipo de dato lógico:
Cuando se utilizan los operadores de relación con valores lógicos la constante falso es menor
que la constante verdadero falso < verdad; verdad > falso.

5.4 Precedencia de los operadores


Niveles de prioridad o precedencia para evaluar expresiones aritméticas o relaciónales.

Nivel Símbolo
1° ↑
2° *, /, MOD, DIV, - (unario)
3° +, -
4° <, >, <=, >=, =, <>
Operadores lógicos:

Nivel Símbolo
1° ¬
2° ^
3° 

En resumen:
Nivel Símbolo
1° ↑, ¬
2° *, /, MOD, DIV, - (unario), ^
3° +, -, 
4° <, >, <=, >=, =, <>

6.- Tipos de datos primitivos definidos por el usuario:

6.1 Tipo Intervalo: algunas veces una variable toma valores de un cierto tipo únicamente
dentro de un intervalo específico, por lo tanto este se puede definir como un tipo intervalo.
La sintaxis de un intervalo es la siguiente:

Tipo:

T = min ... max

Donde:
▪ T es el identificador del nuevo tipo.
▪ min y max especifican los límites inferior y superior del intervalo.
▪ El tipo de datos de min y max puede ser entero o carácter o un tipo Enumerado.
▪ Se puede verificar que la definición del intervalo es aceptable si y solo si se verifica
que min  max.

Las operaciones que se pueden realizar sobre una variable de tipo Intervalo son iguales que las
del tipo a partir del cual está definido.
Ejemplo :
8
Tipo

Nota = 0 ... 20

Sobre la variable nota se pueden aplicar operaciones definidas para los enteros
6.2 Tipo Enumerado: es una secuencia ordenada y finita de valores referenciados por
identificadores. La sintaxis de un enumerado es la siguiente:
Tipo

T = (ident1, ident2, ident3, ident4, ....., identn)

Donde :
▪ T es el identificador del nuevo tipo.
▪ Los identi (1  i  n) son los identificadores que forman el tipo.
▪ El orden de los identificadores en T está definido por la siguiente regla:

ij : (1  i, j  n) : [ (identi < identj)  (i < j)]


Características:

▪ Una variable x de tipo Enumerado T sólo puede tomar valores que se encuentren dentro
de la lista de identificadores que define a T.

▪ Es importante acotar que un identificador no puede pertenecer a más de un tipo


enumerado.

▪ Los únicos operadores asociados al tipo Enumerado son el operador de asignación y los
operadores de comparación.

Ejemplo :

Tipo

Meses = (‘enero’ , ‘febrero’, . . . , ‘diciembre’)

También podría gustarte