EIP Intro Lógica Programación (a) 2014-2015
-
Upload
maria-marrero -
Category
Documents
-
view
231 -
download
2
description
Transcript of EIP Intro Lógica Programación (a) 2014-2015
Introducción a la lógica de programación y entorno Matlab (I) Manuel Díez Minguito
Grupo de Dinámica de Flujos Ambientales
Universidad de Granada
Computadora u ordenador
Es una máquina capaz de aceptar unos datos de entrada, efectuar con ellos
operaciones aritméticas y lógicas y proporcionar la información resultante a
través de un medio de salida; todo ello sin la intervención de un operador humano
y bajo el control de un programa de instrucciones previamente almacenado en la
propia memoria.
Sistema decimal
10 estados
10 símbolos
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
ó
A, B, C, D, E, F, G, H, I, J
• ¿Sistemas con 10 estados?
• Sistemas con 2 estados (0, 1): bombillas, interruptores*, condensadores (carga /
descarga)*, relés (electromecánico)*, válvulas de vacío (termoiónico)*, transistores*,
materiales ferromagnéticos (ferritas), fermiones (ocupación niveles energía), átomos
(excitación), materiales orgánicos (colores), sistemas ópticos...
Pero hay que aprender a sumar y restar de nuevo ...
2 símbolos es suficiente para representar cualquier información
Binario Representación Binario Representación
00001 A 01110 N
00010 B 01111 O
00011 C 10000 P
00100 D 10001 Q
00101 E 10010 R
00110 F 10011 S
00111 G 10100 T
01000 H 10101 U
01001 I 10110 V
01010 J 10111 W
01011 K 11000 X
01100 L 11001 Y
01101 M 11010 Z
Codificación de la información:
Estándar Código ASCII
H
O
L
A
01000
01111
01100
00001
Podemos reducir la información a unos y ceros... pero ¿de qué forma se
almacena la información en un computador?, ¿cómo se calcula y cuáles son los
errores asociados al cálculo y al modo de almacenamiento?
Asimismo, veremos cómo calcular o programar (“Lógica de Programación”) y algo
de historia.
Lo mismo con el resto de
caracteres alfanuméricos.
Índice
Sistemas numéricos y errores
Sistema binario vs. Sistema decimal
Operaciones aritmético – lógicas
Representación de enteros en signo – magnitud
Representación de racionales en coma fija
Representación de racionales en coma flotante
Errores en la representación
Errores en las operaciones
Un poco de historia
Generaciones de computadores
Integración y Ley de Moore
Bibliografía
Introducción a los binarios
Sistemas numéricos en binario y errores
Objetivos:
Cómo se representa y almacena la información en el computador
Evaluación de errores debidos a las limitaciones inherentes al computador
(sólo racionales)
3. 1415926535 8979323846 2643383279 5028841971 6939937510...
5820974944 5923078164 0628620899 8628034825 3421170679...
8214808651 3282306647 0938446095 5058223172 5359408128...
4811174502 8410270193 8521105559 6446229489 5493038196...
Sistema decimal: Emplea un conjunto de 10 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
2 1 0 2 1 010
2 1 0 2 1 010
568 5 6 8 5,6,8 10 ,10 ,10
70 0 7 0 0,7,0 10 ,10 ,10
b b b
b b b
3 2 1 0,10 ,10 ,10 ,10base
Ejemplo: representación de números naturales
Cada posición tiene un peso y un nombre específico (unidades, decenas, etc.)
10b
La mayoría operan con representación binaria (2 estados)
Tanto transistores como las antiguas válvulas de vacío producen dos estados (salida transistor)
Estado A Estado B
+5V -5V
On Off
1 0
Nuevo sistema de cálculo.
Con una adecuada codificación es posible representar cualquier carácter y muchos números.
Hay que aprender a sumar, restar, multiplicar, etc. de nuevo en base 2.
Cifras binarias o bits
En binario representamos 0 y 1; pero ¿y 2? ¿y 3, 4...?
En decimal
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
+1
+1
+1 +1 En binario
10 2
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
Un procedimiento sencillo de
construcción “con las manos”...
Representación posicional
¡Importa el valor y la
posición!
Incremento posición más signif.
2 1 0 2 1 02 1010
5 4 3 2 1 02 10
110 1 1 0 1,1,0 2 ,2 ,2 6
101011 1 2 0 2 1 2 0 2 1 2 1 2 43
b b b
Procedimientos aritméticos de conversión de una base a otra. De hecho, el
computador trabaja en binario, pero nosotros en la actualidad pensamos y
trabajamos en decimal.
... de nuevo cada posición tiene un peso. Por ej. esto se usa en la conversión D/A
2bDe
10 226 11010
1
0
29
4 2
2 2
0 1
Ejercicio: Construir de esta
forma los números
del 0 al 16 en binario
10 2
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
De binario a decimal (valor posicional)
a 10b
De decimal a binario (módulo 2; idem con 4 u 8) 10bDe a 2b
0
0
2
0
1
1
2
0
2
0
2
1
10 20 00 10 21 01 10 22 10
0
1
226
13 2
6 2
0 3 2
1 1
10 29 1001
+sign. -sign.
Operaciones aritmético – lógicas (booleanas)
1 1 1
1 0 0
0 1 0
0 0 0
AND
AND
AND
AND
1 1 1
1 0 1
0 1 1
0 0 0
OR
OR
OR
OR
OR 0 1
0 0 1
1 1 1
AND 0 1
0 0 0
1 0 1
Booleanas (consideradas como variables de conmutación) Ojo, sólo en binario (1 = Sí, 0 = No)
Producto lógico Suma lógica Complementación / NOT
1 0
0 1
(útil en representación y en
sumas y restas)
Aritméticas
+ 0 1
0 0 1
1 1 0(1)
- 0 1
0 0 1
1 1(1) 0
1 1 0 (acarreo 1)
1 0 1
0 1 1
0 0 0
+
+
+
+
1 1 0
1 0 1
0 1 1 (debo 1)
0 0 0
-
-
-
-
Suma aritm. Resta aritm.
Producto aritm.
1 1 1
1 0 0
0 1 0
0 0 0
0 1
0 0 0
1 0 1
División aritm.
1 : 1 1
1 : 0
0 : 1 0
0 : 0
: 0 1
0 -
1 0 1
1110101
1110110
11101011
Ejemplos
1101010
1010111
0010011
1101010
11
1101010
1101010
100111110
1101 101
101 10
11
1110101
AND 1110110
1110100
(*) Las operaciones lógicas o booleanas se realizan bit a bit
1110101
OR 1110110
1110111 NOT 1110110 1110110 0001001
(Calcúlese en decimal y compruébese que todo es correcto)
¿Cómo almacenar los número en la memoria de un computador?
Capacidad finita de dígitos
Números enteros y racionales, y de ellos sólo unos pocos.
Sólo número reales de forma aproximada (racionales)
- En computación, los números se almacenan por palabras
- Un conjunto correlativo de bits.
- En memoria se almacenan de forma consecutiva
siendo la longitud de palabra el número de bits que se emplean para representarlo.
- Así se tienen longitudes de palabra de 16, 32, 64 bits, ...
(registros en ALU, direcciones de memoria, buses)
Los números se almacenan por palabras, pero ¿con qué estructura? ...
16 bits
32 bits
64 bits
Enteros: representación signo-magnitud
Longitud de palabra = N
2N
Menos significativo Más significativo
Signo
Capaz de representar enteros ó 12N enteros entre y 12N
Ejemplo: (Pentium 32 bits)
Problema de redundancia. Por ejemplo, para N=3, 1002 y 0002, representan ambos el 010.
Otras representaciones en complemento a la base menos 1 ó complemento a la base (2),
evitan el problema.
(Con bits, se tienen combinaciones) 2NN
7 72 ,2 1 128,127
15 152 ,2 1 32768,3276731 31 9 92 ,2 1 2.1 10 ,2.1 1063 63 18 182 ,2 1 9 10 ,9 10
8N
16N
32N
64N
0
El problema viene a la hora de representar números “reales”
Coma fija
Coma flotante
Racionales (Reales): representación en coma fija (generalización de signo-magnitud)
Longitud palabra: N bits
Signo: 1bit
Parte entera: N-1-q bits
Parte decimal: q bits
1 2 1 1 (2)( 1) signo
N N q qn n n n nCualquier número se representa como
0 5 4 3 2 1 0 1 22 10. 1 2 2 2 21 2 2 2 2 13.71 1 1001101 0 0 1 51 0 1
Problemas por rigidez de la estructura:
Desbordamientos: Overflow o underflow (N y q fijos)
Errores relativos, que son los que interesan en ciencia, grandes en
números pequeños
¿Cuál es el error (absoluto) que cometemos al representar un número real?
12 qa Ae x x
x el que quiero representar
xA el que realmente se representa
Ar
x xe
x
Ej. 0.00000000016 0.000000000225%.
0.00000000016
1 12 ,2 1N q N q
Está acotado superiormente por la última cifra significativa
Rango de representación:
Número más pequeño 2 q
Número más pequeño representado
Rango
Precisión
Racionales (Reales): representación en coma flotante
Notación científica: se desplaza la coma a conveniencia dando lugar a las potencia de 10
necesarias
310 10
410 10
0.0002548 0.2548 10
1811.973 0.1811973 10
Se emplea la misma notación científica para almacenar físicamente números reales en un
computador, pero en base 2:
2 2mx q
En general
1/ 1,
mbx q b
m
b q q
1/2 1,
m
q qEj. 101
2 0.1101 2x
Nótese que el primer bit decimal de q es siempre 1, luego no es necesario almacenarlo
Ej. 32 bits
12 127 382 2 10m
127 1272 2 38 382 ,2 10 ,10
23 1 72 10 re precisión de 7 dígitos
Ojo ¡Precisión limitada!
Ej.
(precisión hardware vs. precisión software)
Precisión limitada:
123456789.0 90.1234567 10se representa como
0.00123456789 20.1234567 10se representa como
Errores relativos del orden de 7'' / 10
re x x x
¿Truncar o redondear? Normalmente, se redondea hacia arriba 24
(2) 1 2 24'' 0. 2 2mx n n n
Errores en el almacenamiento Supongamos longitudes de palabra de 32 bits.
(*) redondear hacia abajo es truncar
Desbordamientos: overflow, underflow: infinitos +/-INF NaN (not a number).
Errores en el cálculo
72mTienen lugar cuando , i.e. resultado de exponente mayor del máximo.
Error típico. Hay que tener presente el rango de representación.
Importante: ¿comparaciones entre número reales? 610x y x y
Ej. format long
en matlab
7( ) (1 ), 10r rflop x y x y e e 1. Se igualan los exponentes al mayor de x o y
2. Se ajustan las mantisas (ojo cifras signif.)
3. Se opera x con y
4. Se redondea el resultado
5. Se almacena en memoria
Ejemplos. Supongamos por sencillez máquina decimal con 4 “bits” para q, 1 “bit” para m
5
3
0.3909 10
0.3349 10
x
y
50.3932 10
0.0033 49
x
y 510
Suma
50.3965 10x y
410rele
Error por truncamiento
(*) Esto es para sumas/restas.
En prods. más fácil se suman los exponentes
Otros errores más sutiles en las operaciones...
0. 10mx q
Operaciones en coma flotante
redondeos, truncamientos
Ajuste de mantisas al exponente mayor
Si en vez de sumar números muy parecidos sumamos números muy dispares, nos encontramos
con otro problema muy frecuente en cálculo numérico
4
0
0.5000 10
0.1000 10
x
y
40.5000 10
0.00001
x
y 410
40.5000 10x y Ej. Ocurre al sumar series
- Consejo: sumar primero
los términos pequeños
Resta
5
5
0.4909 10
0.4348 10
x
y
50.0561 10x y
40.56 01 10x y
Se añaden un ceros que no son significativos
3
3
03
0.3747 10
0.3745 10
0.2 100.0 00002 010
La pérdida de cifras significativas en la resta de números casi iguales es una fuente
frecuente de errores en computación (Lo mismo ocurre en la igualación de exponentes)
2 1 1y x
Una programación cuidadosa puede solucionarlo
2
21 1
xy
x
Aquí ya no hay restas y el
cociente está bien definido
Otras situaciones comunes de pérdida de dígitos significativos se dan al evaluar funciones
con argumentos muy grandes
2
2
0.2237 1
0.2236 10
0
y
x
Otro ejemplo: queremos restar 22.371186x 22.364837yy
2
1
0.0001 10
0.1000 10
x
x
y
y
0.01 0.00634957%
0.006349re !!
cos 33278.21 5296 2 cos 2.46
Pasa de 4 a 3 cifras significativas Pasa de 4 a 1 cifra significativa
Los errores se van acumulando operación tras operación
Producto
8
7
0.1111 10
0.1111 10
x
y
160.0012 10x y Overflow, NaN
Ej. de error relativo 242 en una suma, en una suma y un producto se tiene un orden de magnitud más
24 232 2 2
Suma exps, multiplica mantisas
A causa de los errores, los cálculos pueden llegar a hacerse inestables: los errores se
magnifican durante el cálculo degradando la solución (típico en iteraciones).
Productos: en una magnitud del orden la cual es dividida en 10 iteraciones por
5, el error relativo se amplifica hasta un 100%, esto es, la magnitud se hace del orden
del error relativo (32 bits)
Sumas / Restas: formulas de recurrencia cuyas diferencias tienden a cero (ej.
proporciones áureas).
10 75 10
(*) No es lo mismo que inestabilidad asociada a ecuaciones diferenciales.
Errores acumulados
Además
(1)
( 1) ( ) ( 1)k n k n k n ( ) ( )re n f n
1ª Generación (1938-1953)
Primer ordenador analógico en 1938.
Primer computador digital electrónico (ABC, Dr. Atanasoff), 1939
En 1946 (ENIAC, Electronic Numerical Integrator and Computer).
Relés electromecánicos en los 40 como elementos de conmutación.
Válvulas de vacío en los 50.
Interconexión mediante cables aislados (no circuitos integrados).
Operación en coma fija, bit a bit.
Sumador completo e indicador de bit de acarreo.
Lenguaje codificado directamente en binario en los 30 y 40.
En 1950 primer ordenador con programa almacenado (comienzo del software).
Generaciones de Computadores
2ª Generación (1952-1963):
En 1948 se inventa el transistor.
La primera computadora transistorizada es el TRADIC (Transistorized Digital
Computer), en laboratorios Bell. Usa 800 transistores.
Aparecen los circuitos impresos.
Memorias de ferrita.
Se desarrollan lenguajes de alto nivel (Fortran, Cobol y Algol) en 1956, 1959 y
1960, respectivamente.
Mejoras sustanciales en la arquitectura (IBM): primer ordenador de uso científico en
1960 (IBM 1620)
Ejecución secuencial de programas
3ª Generación (1962-1975):
Uso de circuitos integrados (transistores) a pequeña escala (SSI: Small scale
integration) y a mediana escala (MSI: Medium scale integration) como bloques
básicos de construcción.
Incremento sustancial de la capacidad de cálculo.
Sustitución de memorias de ferritas por memorias basadas en semiconductores.
Desarrollo sustancial de lenguajes de alto nivel.
Ejecución simultánea de muchos segmentos de programas (tiempo compartido).
Programación en paralelo.
Intel 4004 (primer micro integrado en 1971), Cray, IBM: 1-10Mflops...
4ª Generación (1972 - actualidad):
Integración a gran escala: hasta 1984 LSI (Large scale integration), actualidad VLSI.
Los procesadores caben completamente en un chip (y ya otros componentes).
Abaratamiento de costes y socialización de los computadores (windows).
Desarrollo de sistemas operativos (UNIX)
Invención y desarrollo del lenguaje C (Matlab trabaja en C). Otros: Pascal, Prolog...
Alto grado de segmentación
Primeros computadores masivamente paralelos (Massively Parallel Processor):
16384 procesadores.
Tecnología high-k de 45nm (Intel) ©: Para fines de comparación, cerca de 400 transistores de 45 nm
de Intel podrían alojarse en la superficie de un glóbulo rojo humano. Hace tan sólo una década, la
tecnología de proceso de vanguardia era de 250 nm, lo que significa que las dimensiones de los
transistores eran aproximadamente 5.5 veces mayores que el tamaño y 30 veces mayores que el área
de la tecnología que hoy anuncia Intel. (Ley de Moore) Chips con 1.000.000.000 de transistores
www.top500.org
5ª Generación (actualidad):
Necesitamos perspectiva, aunque...
Computación en paralelo: Superclusters de miles de
Procesadores (64K). ¿Inteligencia artificial? http://www.top500.org/list/2008/06/100
La Ley de Moore expresa que
aproximadamente cada dos años se
duplica el número de transistores en
un circuito integrado
?
• Arquitectura de computadoras y procesamiento paralelo, Hwang, Briggs.
• Metodología de la programación. Algoritmos y estructuras de datos en
Pascal, Cortijo, Cubero, Pons.
• Introducción a la informática, Prieto, Lloris, Torres.
• Programación estructura en C, Antonakos, Mansfield.
• Numerical analysis, Kincaid, Cheney.
• Máquinas de cómputo, Investigación y Ciencia.
Bibliografía