You are on page 1of 23

Introduccin a la lgica de programacin y entorno Matlab (I)

Manuel Dez Minguito


Grupo de Dinmica de Flujos Ambientales
Universidad de Granada

Computadora u ordenador
Es una mquina capaz de aceptar unos datos de entrada, efectuar con ellos
operaciones aritmticas y lgicas y proporcionar la informacin resultante a
travs de un medio de salida; todo ello sin la intervencin de un operador humano
y bajo el control de un programa de instrucciones previamente almacenado en la
propia memoria.
Sistema decimal

10 smbolos
10 estados

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)*, rels (electromecnico)*, vlvulas de vaco (termoinico)*, transistores*,
materiales ferromagnticos (ferritas), fermiones (ocupacin niveles energa), tomos
(excitacin), materiales orgnicos (colores), sistemas pticos...

2 smbolos es suficiente para representar cualquier informacin


Pero hay que aprender a sumar y restar de nuevo ...

Codificacin de la informacin:
Binario

Representacin

Binario

Representacin

00001

01110

00010

01111

00011

10000

00100

10001

00101

10010

00110

10011

00111

10100

01000

10101

01001

10110

01010

10111

01011

11000

01100

11001

01101

11010

H
O
L
A

01000
01111
01100
00001

Lo mismo con el resto de


caracteres alfanumricos.
Estndar Cdigo ASCII

Podemos reducir la informacin a unos y ceros... pero de qu forma se


almacena la informacin en un computador?, cmo se calcula y cules son los
errores asociados al clculo y al modo de almacenamiento?

Asimismo, veremos cmo calcular o programar (Lgica de Programacin) y algo


de historia.

ndice
Sistemas numricos y errores

Sistema binario vs. Sistema decimal


Operaciones aritmtico lgicas

Introduccin a los binarios

Representacin de enteros en signo magnitud

Representacin de racionales en coma fija


Representacin de racionales en coma flotante
Errores en la representacin

Errores en las operaciones


Un poco de historia
Generaciones de computadores
Integracin y Ley de Moore
Bibliografa

Sistemas numricos en binario y errores


Objetivos:
Cmo se representa y almacena la informacin en el computador
Evaluacin de errores debidos a las limitaciones inherentes al computador
(slo 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 smbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

10

base

Ejemplo: representacin de nmeros naturales

,103,102,101,100

56810
7010

5 b2
0 b2

6 b1
7 b1

8 b0
0 b0

5, 6, 8
0, 7, 0

102,101,100
102,101,100

Cada posicin tiene un peso y un nombre especfico (unidades, decenas, etc.)

La mayora operan con representacin binaria (2 estados)


Tanto transistores como las antiguas vlvulas de vaco producen dos estados (salida transistor)
Estado A

Estado B

+5V

-5V

On

Off

Cifras binarias o bits

Nuevo sistema de clculo.


Con una adecuada codificacin es posible representar cualquier carcter y muchos nmeros.
Hay que aprender a sumar, restar, multiplicar, etc. de nuevo en base 2.

En binario representamos 0 y 1; pero y 2? y 3, 4...?


Incremento posicin ms signif.

En decimal
+1

00
01
02
03
04
05
06
07
08
09

+1
+1

+1

10
11
12
13
14
15
16
17
18
19

En binario
10

20
21
22
23
24
25
26
27
28
29

Un procedimiento sencillo de
construccin con las manos...

4 1 0

5 1 0

6 1 1

1 1

Representacin posicional
Importa el valor y la
posicin!

Procedimientos aritmticos de conversin de una base a otra. De hecho, el


computador trabaja en binario, pero nosotros en la actualidad pensamos y
trabajamos en decimal.
De binario a decimal (valor posicional)
De

1102

10

1 b2

1 b1

1 25

1010112

0 b0

0 24

10

1 23

1,1, 0

22,21,20

0 22

1 21

610

1 20

4310

... de nuevo cada posicin tiene un peso. Por ej. esto se usa en la conversin D/A

De decimal a binario (mdulo 2; idem con 4 u 8)


0 2

1 2

2 2

9 2

0 0

1 0

0 1

1 4 2

-sign.

0 2 2

+sign.

0 1

De b

26 2
0 13 2
1

10

Ejercicio: Construir de esta


forma los nmeros
del 0 al 16 en binario

6 2

10

0 3 2

0 0 0 0

1 1

1 0 0 1

2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1

010

002

110

012

210

102

910

10012

2610

110102

6 1 1 0
7 1 1 1

Operaciones aritmtico lgicas (booleanas)


Aritmticas
Suma aritm.

Resta aritm.

1 + 1

0 (acarreo 1)

1 + 0

0 + 1

0 + 0

0(1)

Producto aritm.
1

1 - 1

1 - 0

0 - 1

1 (debo 1)

0 - 0

1(1)

Divisin aritm.
0

1 : 1

1 : 0
0 : 1

0 : 0

Booleanas (consideradas como variables de conmutacin) Ojo, slo en binario (1 = S, 0 = No)


Producto lgico
1 AND 1

1 AND 0

0 AND 1

0 AND 0

Suma lgica
AND

1 OR 1

1 OR 0

0 OR 1

0 OR 0

Complementacin / NOT
OR

(til en representacin y en
sumas y restas)

1101010

Ejemplos
1110101

1101010

1110110

1010111

11101011

0010011

1110101
AND 1110110
1110100

11
1101010
1101010

1101

101

101

10

11

100111110

1110101
OR

1110110
1110111

NOT 1110110

1110110

0001001

(*) Las operaciones lgicas o booleanas se realizan bit a bit

(Calclese en decimal y comprubese que todo es correcto)

Cmo almacenar los nmero en la memoria de un computador?


Capacidad finita de dgitos
Nmeros enteros y racionales, y de ellos slo unos pocos.
Slo nmero reales de forma aproximada (racionales)
- En computacin, los nmeros se almacenan por palabras
- Un conjunto correlativo de bits.
- En memoria se almacenan de forma consecutiva
siendo la longitud de palabra el nmero 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)

16 bits
32 bits

64 bits

Los nmeros se almacenan por palabras, pero con qu estructura? ...

Enteros: representacin signo-magnitud


Ms significativo

Menos significativo

Signo

Longitud de palabra = N

Capaz de representar 2N enteros 2N

enteros entre 0 y 2N

(Con N bits, se tienen 2N combinaciones)


Ejemplo: (Pentium 32 bits)

27 ,27

16

215,215

32768, 32767

32

231,231

2.1 109,2.1 109

64

263,263

9 1018, 9 1018

128,127

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.

Coma fija
El problema viene a la hora de representar nmeros reales
Coma flotante

Racionales (Reales): representacin en coma fija (generalizacin de signo-magnitud)

Longitud palabra: N bits


Signo: 1bit
Parte entera: N-1-q bits
Parte decimal: q bits
( 1)signo

Cualquier nmero se representa como

001101.112

0 25

0 24

1 23

1 22

nN 1nN
0 21

nq

1 20

nq

1 2

n1

(2)

1 2

13.7510

Cul es el error (absoluto) que cometemos al representar un nmero real?


Est acotado superiormente por la ltima cifra significativa

ea

xA

q 1

x el que quiero representar

Rango de representacin:

2N

q 1

,2N

q 1

xA el que realmente se representa

1
Nmero ms pequeo

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
nmeros pequeos
Ej. 0.00000000016 0.0000000002
0.00000000016

er
25%.

xA
x

Racionales (Reales): representacin en coma flotante


Notacin cientfica: se desplaza la coma a conveniencia dando lugar a las potencia de 10
necesarias

0.000254810

Ej.

0.2548 10

3
10

xb

En general

0.1811973 10410

1811.97310

q bm

1/ b

1,

Se emplea la misma notacin cientfica para almacenar fsicamente nmeros reales en un


computador, pero en base 2:
m
m
x2
q 2
Ej. x 2
0.1101 2101
1/2

1,

Ntese que el primer bit decimal de q es siempre 1, luego no es necesario almacenarlo


Ej. 32 bits

Nmero ms pequeo representado


127

Precisin

127

22 ,22

Rango

23 1

10

2m

127

1038 ,1038
7

10

38

Ojo Precisin limitada!

er precisin de 7 dgitos
(precisin hardware vs. precisin software)

Errores en el almacenamiento

Precisin limitada:

Supongamos longitudes de palabra de 32 bits.

er

Errores relativos del orden de

123456789.0

0.00123456789

se representa como
se representa como

x '' / x

10

0.1234567 109

0.1234567 10

Ej. format long


en matlab

(*) redondear hacia abajo es truncar

x ''(2)

Truncar o redondear? Normalmente, se redondea hacia arriba


Importante: comparaciones entre nmero reales?

10

0.n1n2

n24

24

Errores en el clculo
Desbordamientos: overflow, underflow: infinitos +/-INF NaN (not a number).
Error tpico. Hay que tener presente el rango de representacin.
Tienen lugar cuando

27 , i.e. resultado de exponente mayor del mximo.

2m

Otros errores ms sutiles en las operaciones...


flop(x

y)

y (1

er ),

er

10

Operaciones en coma flotante


redondeos, truncamientos

1.
2.
3.
4.
5.

Se igualan los exponentes al mayor de x o y


Se ajustan las mantisas (ojo cifras signif.)
Se opera x con y
Se redondea el resultado
Se almacena en memoria
(*) Esto es para sumas/restas.
En prods. ms fcil se suman los exponentes

Ejemplos. Supongamos por sencillez mquina decimal con 4 bits para q, 1 bit para m
x
0.q 10m

Suma
x

0.3909 105

0.3932 105

0.3349 103

0.0033 49 105

erel

Ajuste de mantisas al exponente mayor

0.3965 105

10

Error por truncamiento

Si en vez de sumar nmeros muy parecidos sumamos nmeros muy dispares, nos encontramos
con otro problema muy frecuente en clculo numrico

0.5000 104

0.1000 10

x
y

0.5000 104
0.00001 10

0.5000 104

Ej. Ocurre al sumar series


- Consejo: sumar primero
los trminos pequeos

Se aaden un ceros que no son significativos

Resta

0.3747 103

0.4909 105

0.0561 10

0.4348 105

0.5610 104

0.3745 103
0.0002 103

Pasa de 4 a 3 cifras significativas

0.2000 100

Pasa de 4 a 1 cifra significativa

La prdida de cifras significativas en la resta de nmeros casi iguales es una fuente


frecuente de errores en computacin (Lo mismo ocurre en la igualacin de exponentes)
Otro ejemplo:

x
y

queremos restar

0.2237 102

0.2236 102

y
y

22.371186

y y

0.0001 102
0.1000 10

er

22.364837

0.01 0.006349
0.006349

57%

!!

Una programacin cuidadosa puede solucionarlo

x2
1

x2

Aqu ya no hay restas y el


cociente est bien definido

Otras situaciones comunes de prdida de dgitos significativos se dan al evaluar funciones


con argumentos muy grandes

cos 33278.21

5296 2

cos 2.46

Producto

Suma exps, multiplica mantisas

0.1111 108

0.1111 10

x y

0.0012 1016

Overflow, NaN

Errores acumulados
Los errores se van acumulando operacin tras operacin
Ej. de error relativo 2

24

2 2

24

23

en una suma, en una suma y un producto se tiene un orden de magnitud ms

Adems
A causa de los errores, los clculos pueden llegar a hacerse inestables: los errores se
magnifican durante el clculo degradando la solucin (tpico en iteraciones).
Productos: en una magnitud del orden (1) 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)
5 10 10 7

Sumas / Restas: formulas de recurrencia cuyas diferencias tienden a cero (ej.


proporciones ureas).

k(n

1)

k(n)

k(n

1)

er (n)

f (n)

(*) No es lo mismo que inestabilidad asociada a ecuaciones diferenciales.

Generaciones de Computadores

1 Generacin (1938-1953)
Primer ordenador analgico en 1938.
Primer computador digital electrnico (ABC, Dr. Atanasoff), 1939
En 1946 (ENIAC, Electronic Numerical Integrator and Computer).

Rels electromecnicos en los 40 como elementos de conmutacin.


Vlvulas de vaco en los 50.
Interconexin mediante cables aislados (no circuitos integrados).

Operacin 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).

2 Generacin (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 cientfico en
1960 (IBM 1620)
Ejecucin secuencial de programas

3 Generacin (1962-1975):
Uso de circuitos integrados (transistores) a pequea escala (SSI: Small scale

integration) y a mediana escala (MSI: Medium scale integration) como bloques


bsicos de construccin.
Incremento sustancial de la capacidad de clculo.

Sustitucin de memorias de ferritas por memorias basadas en semiconductores.


Desarrollo sustancial de lenguajes de alto nivel.
Ejecucin simultnea de muchos segmentos de programas (tiempo compartido).
Programacin en paralelo.
Intel 4004 (primer micro integrado en 1971), Cray, IBM: 1-10Mflops...

4 Generacin (1972 - actualidad):


Integracin 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 socializacin de los computadores (windows).


Desarrollo de sistemas operativos (UNIX)
Invencin y desarrollo del lenguaje C (Matlab trabaja en C). Otros: Pascal, Prolog...
Alto grado de segmentacin
Primeros computadores masivamente paralelos (Massively Parallel Processor):
16384 procesadores.

5 Generacin (actualidad):
Necesitamos perspectiva, aunque...

www.top500.org
http://www.top500.org/list/2008/06/100

Computacin en paralelo: Superclusters de miles de


Procesadores (64K). Inteligencia artificial?

Tecnologa high-k de 45nm (Intel) : Para fines de comparacin, cerca de 400 transistores de 45 nm
de Intel podran alojarse en la superficie de un glbulo rojo humano. Hace tan slo una dcada, la
tecnologa 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 tamao y 30 veces mayores que el rea
de la tecnologa que hoy anuncia Intel. (Ley de Moore) Chips con 1.000.000.000 de transistores

La Ley de Moore expresa que


aproximadamente cada dos aos se
duplica el nmero de transistores en
un circuito integrado

Bibliografa
Arquitectura de computadoras y procesamiento paralelo, Hwang, Briggs.
Metodologa de la programacin. Algoritmos y estructuras de datos en
Pascal, Cortijo, Cubero, Pons.
Introduccin a la informtica, Prieto, Lloris, Torres.
Programacin estructura en C, Antonakos, Mansfield.
Numerical analysis, Kincaid, Cheney.
Mquinas de cmputo, Investigacin y Ciencia.

You might also like