Tema 2: Estructuras básicas de datos 2.0. Introducción 2.2. Clasificación de datos

Anuncio
Tema 2: Estructuras básicas de datos
2.0. Introducción
2.1. Sistemas y código de numeración
2.2. Clasificación de datos
2.3. Datos básicos
2.4. Dato derivado o puntero
2.5. Datos estructurados
2.6. Constantes y variables
2.7. Operadores
2.8. Expresiones
2.0. Introducción
Un dato es toda aquella información característica de una entidad, que es susceptible de tratamiento en un
programa informático. Para todo ordenador, internamente toda la información es numérica (código binario).
Por ello, para su correcto tratamiento, todos los datos que forman dicha información deben estar clasificados
de tal forma que los programas sean capaces de realizar operaciones sobre ellos sin dar lugar a error o fallos
por parte del sistema.
La forma en la que se clasifican los datos establece la estructura y formato de los mismos, así como su
representación dentro de un lenguaje de programación.
2.1. Sistemas y códigos de numeración
Desde el punto de vista numérico, el hombre ese expresa con el sistema decimal, constituido por 10 símbolos
que son los símbolos del 0 al 9.
Desde el punto de vista alfabético mediante distintas combinaciones de los símbolos del alfabeto.
Por otra parte, un ordenador manipula cualquier tipo de dato en código binario, es decir, que toda la
información la traduce a combinaciones de ceros y unos. Para que pueda darse la necesaria comunicación
hombre−maquina es necesario traducir toda la información que se desea procesar a ceros y unos.
En definitiva, los circuitos de tipo electrónico que conforman un sistema informático viaja corriente eléctrica,
por ello, desde un punto de vista lógico la ausencia o presencia de tensión se representa:
• Mediante una lógica positiva
• la presencia de tensión representará un uno lógico.
• La ausencia de tensión representará el cero lógico.
• Mediante una lógica negativa
• la presencia de tensión representará un cero lógico.
1
• La ausencia de tensión representará el uno lógico.
2.1.1. Sistemas de numeración
Un sistema de numeración es un conjunto de símbolos y reglas que se utilizan para la representación de datos
numéricos.
Todo sistema de numeración se caracteriza por su base, que marca o indica el número de símbolos distintos
que utiliza para la representación de cantidades.
Siendo el coeficiente el que determina cual es el valor de cada símbolo dependiendo de la posición que ocupe
con respecto al punto decimal. Este tipo de sistemas de numeración reciben el nombre de sistemas
posiciónales o ponderados. Dicho de otra forma, un sistema posicional es aquel en el que el valor que
representa cada símbolo o cifra de una determinada cantidad depende de su valor absoluto y de la posición
relativa que ocupa dicha cifra con respecto con respecto a la coma o punto decimal.
Sistema decimal: Es un sistema posicional que consta de diez símbolos llamados dígitos para la
representación de cantidades.
Según el teorema fundamental de la numeración (TFN), cualquier número expresado en un sistema posicional
cualquiera puede expresarse mediante el siguiente polinomio equivalente.
Número(b = X1 · Bi + X1−1 · Bi−1 + ... − + X2 · B2 + X1 · B1 + X0 · B0 + X−1 · B−1 + X−2 · B−2 + X−n ·
B−n
126,84(0 = 1 · 102 + 2 · 101 + 6 · 100 + 8 · 10−1 + 4 · 10−2
B es la base.
Xi son los coeficientes.
i es el índice o la posición relativa con respecto al punto decimal.
Dada una cantidad expresada en un sistema de numeración cuya base es B, cada uno de los símbolos (dígitos)
utilizados queda representado por Xi donde el subíndice i marca la posición del dígito con respecto al punto
decimal. Posición que hacia la izquierda de la coma se numera de 0 en adelante con incremento de 1 en 1 y
hacia la derecha se numera desde −1 con incremento de −1. El número de símbolos que constituyen un
determinado sistema de numeración viene dado por la siguiente desigualdad.
0<= Xi < B
2.1.2. Sistema binario
Es también un sistema posicional o ponderado que consta de 2 únicos símbolos para la representación de
cantidades, esos dos símbolos son el 0 y el 1 y reciben el nombre de bit.
El número de combinaciones que podemos realizar en el sistema de numeración binario viene dado por la
expresión 2n siendo n el número de bits.
Para la medida de cantidades de información representada en binario se utiliza una serie de unidades múltiples
del bit que reciben nombre propio:
• Nibble o cuarteto: 4 bits
2
• Byte u octeto: 8 bits
• Kilobyte (KB): 1024 Bytes
• Megabyte (MB): 210 Kb = 10242 Bytes
• Gigabyte (GB): 210 MB = 10243 Bytes
• Terabyte (TB): 210 GB = 10244 Bytes
Paso de binario a decimal
El paso de binario a decimal se llevará a cabo aplicando el TFN al número en base 2, ejemplo pasar a decimal
el siguiente número binario.
11011101,11(2) B(10)
1 · 20 + 0 · 21 + 1 · 22 + 1 · 23 + 0 · 24 + 1 · 25 + 1 · 26 + 1 · 2−1 + 1 · 2−2 = 109,75(10)
Paso de decimal a binario
37,86(10) B(2)= 101001,1101
0,86 · 2 = 1,72
0,72 · 2 = 1,44
0,44 · 2 = 0,88
0,88 · 2 = 1,76
37
17
1
2
18
0
2
9
1
2
4
0
2
2
0
2
1
Suma de binario
0+0=1
0+1=1
1+0=1
1+1=0
+
1
1
1
1
1
0
0
0
1
0
1
1
1
1(2)
1(2)
0(2)
Resta de binario
3
0−0=0
0 − 1 = 1; AC = 1
1−0=1
1−1=0
• Sistema octal: Es un sistema posicional o ponderado que consta de 8 símbolos para la representación
de cantidades.
• Paso de B(10) B(8)
45(10) B(8) = 55 (8)
45
5
8
5
Sumas en octal
+
1
1
6
0
6
4
3
5
2
0
4
4
1
3(8)
6(8)
1(8)
Restas en octal
−
7
6
1
6
4
2
5
2
2
4
4
7
3(8)
6(8)
5(8)
2.2. Clasificación de datos
Como se vio en el tema anterior, los datos son aquellos elementos considerados como unidad de tratamiento
de dentro de un sistema de proceso de datos (SPD), y que al conjunto de esos datos se le denomina
información.
Para el diseño de un programa es importante establecer cuales son las estructuras de datos que se van a
utilizar, con el objeto de establecer las operaciones que sobre dichos datos se pueden realizar, para lo cual
debemos proporcionar información al sistema acerca de los mismos. Los datos manejados en un programa
deben llevar asociado por tanto un identificador, un tipo y un valor.
Identificador: Es el nombre utilizado en un programa haciendo referencia a un dato, existen algunas normas
generales para su empleo, entre los cuales destacan:
• Pueden estar constituidos por letras y dígitos, y en algunos casos por el signo del subrayado. Ej.: dato_1
• Deben comenzar por una letra.
• No deben contener espacios.
• El nº máximo de caracteres dependerá del compilador utilizado.
• El nombre asignado debe tener relación con la información que contiene.
4
Tipo: Establece el rango o intervalo de valores que puede tomar el dato. Además determina el espacio de
memoria que ocupa dicho rango.
Valor: Elemento que debe pertenecer al rango o intervalo de valores según el tipo definido.
Una clasificación de los posibles tipos de datos que suelen encontrarse en cualquier lenguaje de programación
es la siguiente:
−
Entero
−
−
Datos Numéricos
− No
numéricos
− Datos derivados
− Reales
−
Carácter
− Lógico
− Parámetros
− Estáticos
− Tablas
− Listas
enlazadas
− Pilas
− Colas
− Dinámicos − Lineal
− Datos
estructurados
− Internos
− No
Lineal
− Árboles
− Grafos
− Externos − Archivos
− Bases de
datos
− Compuestos − Registro
2.3. Datos básicos
Dato de tipo numérico: Se utilizan para obtener magnitudes y se clasifican en enteros y reales.
• Numérico entero: Se emplea para representar números enteros pudiendo llevar o no el signo
correspondiente. Se expresa mediante una serie de dígitos que pueden estar precedido por el signo + o −.
Ej.: (+1516,1516)(−1516). Existen varias formas de representación interna de los datos numéricos enteros.
• Para números enteros sin signo:
• Binario puro: El número entero completo se pasa a binario teniendo en cuenta la palabra del
ordenador.
Ej.: 45
0
0
1 Byte
1
0
1
1
0
1
5
• Decimal codificado en binario BCD: Cada dígito decimal se pasa a binario utilizando 4 bits para cada
dígito.
Ej.: 45
0
4
0
1
0
1
5
1
0
0
0
1
Ej.: 657
0
0
1 Byte
0
1
1
0
0
1
1 Byte
0
1
0
1
1
1
• Para números enteros con signo se utilizan 6 métodos para la representación interna de números
enteros positivos y negativos que son los siguientes:
• Binario o modulo y signo: Este método de representación asigna el bit situado más a la izquierda para la
representación del signo, utilizando el bit 0 para el signo positivo y el bit 1 para el signo negativo. El resto
de los bits contiene el modulo o valor del número representado en binario puro.
Ejemplo:
BS (Bit de signo)
0
1
0
1
1
1
0
1
N=3
Binario o módulo y signo. N bits.
111
−3
110
−2
101
−1
000
0
001
1
010
2
011
3
Rango de presentación:
−2n−1 + 1 <= X <= 2n−1 − 1
Se denomina rango de representación en un método determinado al conjunto de números representables en
dicho método. Este método de representación posee la ventaja frente a otros de tener un rango de
representación simétrico (igual cantidad de valores positivos que negativos). Su mayor inconveniente es el de
poseer dos representaciones posibles para el 0.
• Complemento a 1 (C. a 1)
En este método de representación también se reserva el bit situado más a la izquierda para representar el
signo. Los números positivos se representarán igual que en el método anterior y los números negativos se
obtienen calculando el complemento a 1 de los números positivos.
Ej.: 1011 (11)
0100
6
Resta sumando
−
1100 (12)
1000 (8)
0100 (4)
1100
0111
10011
1
0100 (4)
N=3
110
−1
000
0
001
1
010
2
011
3
Rango de representación
−2n+1+1<= X <= 2n−1−1
• Complemento a 2 (C. a 2)
También se utiliza el bit situado más a la izquierda para la representación del signo. Los números positivos se
representan en binario puro y los números negativos calculando el complemento a 2 de los positivos.
1101 (13)
0011 (−13)
10000
0010
+1
0011
En la operación de comprobación se desprecia si hay un ultimo acarreo.
N=3
110
−2
111
−1
000
0
001
1
010
2
011
3
Rango de representación
−2x−1 = X <= 2n−1−1
• Exceso a 2n−1
En este método no se empleo ningún bit para el signo y el valor se corresponde con el número más el exceso.
N=8
Exceso = 2n−1 = 28−1 = 128
Ej.: 27 + 128 = 155 10011011 (2)
− 27 + 128 = 101 01100101 (2)
El número a codificar es 27 en el ejemplo.
Rango de representación
−2n−1 <= X <= 2n−1−1
7
Este método de representación posee al igual que complemento a 2, un rango asimétrico al tiempo que posee
una única representación posible para el 0.
• Decimal desempaquetado
Cada digito ocupa un octeto (1 byte) teniendo un cuarteto de zona (el cuarteto a la izquierda que para todos los
dígitos menos para el último contiene 1111) y un cuarteto de contenido donde se haya el digito decimal
codificado en binario (el cuarteto de la derecha). El último digito del número contiene el signo del número en
el cuarteto de zona (1100 para el signo más y 1101 para el signo menos).
2015
1111
Zona
2
0010
Contenido
1111
Zona
0
0000
Contenido
1111
Zona
1
0001
Contenido
1100
Signo
5
0101
Contenido
• Decimal empaquetado
En este método de representación cada digito ocupa un cuarteto y al ultimo digito se le añade un cuarteto con
el signo.
2015
0000
Relleno
0010
2
0000
0
0001
1
1100
+
0101
5
• Número real Se emplea para representar los números con parte decimal o los números muy grandes o muy
pequeños que no pueden ser contenidos en un número entero. Se puede expresar de dos formas:
• Punto decimal: Emplea los dígitos del 0 al 9 con su signo correspondiente y un punto para separar la parte
entera de la decimal.
• Notación científica o exponencial: Utiliza el formato mantisa E característica.
Número = Mantisa * base de exponenciación exponente
−95'16 = 0.9516 * 102
Mantisa: Es un número real. Se suele representar en formato normalizado (0.(...)).
E: Representa a la base decimal.
Característica: Es el exponente correspondiente a un número entero con su signo.
La representación interna de los números reales según el estándar internacional es el siguiente. La base es
igual a 2. La característica 0, el exponente se representa normalmente en formato 2n−1 y finalmente la
mantisa se puede representar en binario puro, modulo signo, C. a 1, C. a 2.
Simple precisión: Es para maquinas de 32 bits, el 31 seria el bit de signo.
Para el exponente se van a utilizar 8 bits, de las posiciones 30 a la 23 y para la mantisa 23 bits, es decir, desde
la posición 22 a 0.
8
Descargar