EIP Intro Lógica Programación (a) 2014-2015

23
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

description

matlab

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