8. Presentaci´n
o
Hay muchos y excelentes libros sobre inform´tica en un nivel intro-
a
ductorio, con diversos enfoques y escritos en nuestra lengua. Muchos de
ellos est´n dirigidos a futuros inform´ticos, por lo que resultan, quiz´,
a a a
demasiado profundos para quienes s´lo persiguen aplicar la inform´tica
o a
en su trabajo; muchos otros, en cambio, se dirigen a no profesionales,
por lo que ofrecen una visi´n panor´mica demasiado general de diver-
o a
sos aspectos de la inform´tica, sin detenerse a analizar las implicaciones
a
pr´cticas de esos aspectos.
a
Este libro se sit´a entre ambos extremos, ofreciendo un medio para
u
introducir en la inform´tica a profesionales de otros campos que, sin em-
a
bargo, necesiten aplicar adecuadamente los computadores en su trabajo,
poniendo en marcha programas de aplicaci´n o manejando bancos de
o
datos e incluso, muchas veces, resolviendo por s´ mismos problemas no
ı
contemplados en los programas comercializados.
As´ pues, el contenido del texto incluye los temas que consideramos
ı
b´sicos para una introducci´n pr´ctica a la inform´tica. Quiz´ sea este
a o a a a
enfoque pr´ctico lo que mejor distinga a este texto de otros de intro-
a
ducci´n a la inform´tica, que adolecen muchas veces de contenidos muy
o a
extensos y te´ricos, casi enciclop´dicos, en los que es dif´ diferenciar
o e ıcil
los conocimientos utiles en general de aqu´llos que s´lo encontrar´n de
´ e o a
utilidad inform´ticos profesionales.
a
Por lo tanto, este libro se dirige a quienes necesiten una formaci´no
introductoria en inform´tica, con un enfoque b´sico y pr´ctico, pero rigu-
a a a
roso. Entre ellos se encuentran, en primer lugar, todos aquellos alumnos
9. 12 ´
Presentacion
de los primeros cursos universitarios que cuenten con asignaturas sobre
inform´tica, tanto si se utiliza como herramienta aplicada a la resoluci´n
a o
de problemas como si es el propio objeto de estudio.
Este libro se dirige asimismo a aquellas personas que, de una u otra
forma, est´n relacionadas con el mundo de la inform´tica (operadores,
a a
comerciales, empresarios, etc.) y, sin embargo, ignoran lo que se esconde
tras la fachada de un computador (c´mo se almacena la informaci´n,
o o
cu´les son los procesos que se est´n ejecutando en su interior, etc.) y
a a
que utilizan una jerga t´cnica sin entender bien de qu´ hablan.
e e
Por ultimo, este libro se dirige tambi´n a todos los usuarios de com-
´ e
putadores que est´n interesados en conocer mejor su herramienta de
e
trabajo, en saber qu´ estan haciendo y por qu´ lo hacen. El desarrollo
e e
y abaratamiento de los sistemas inform´ticos hace que computadores
a
de gran potencia que antes s´lo se encontraban en grandes centros de
o
c´lculo, atendidos por administradores de sistemas cualificados y dedi-
a
cados por completo a dicha tarea, est´n hoy sobre nuestra mesa, y que el
e
usuario se tenga que encargar de administrar los recursos de su computa-
dor, por ejemplo, gestionando la memoria, haciendo copias de seguridad,
eliminando virus, etc. Por todo ello, cualquier usuario deber´ dedicar
ıa
siquiera una peque˜a parte de su tiempo a conocer los principios b´sicos
n a
de funcionamiento y gesti´n de su computador.
o
A todos ellos, este texto les ofrece la posibilidad de adquirir esos
conocimientos, partiendo de cero, o de actualizarlos.
Se ha seleccionado el contenido partiendo de las directrices se˜aladas
n
en [DCG*89] y [ACM91] aunque, en un nivel introductorio, no sea po-
sible ni deseable abarcar todos los temas que s´lo interesan al futuro
o
profesional de la inform´tica. As´ por ejemplo, quedan completamente
a ı
fuera del alcance de nuestro texto las areas de inteligencia artificial y
´
rob´tica (AI) o la comunicaci´n hombre-m´quina (HU ).
o o a
Es frecuente, en cambio, que los destinatarios mencionados necesi-
ten una parte de conocimientos generales sobre inform´tica y otra sobre
a
desarrollo de algoritmos en un lenguaje de alto nivel: ambas partes se in-
cluyen en los programas de asignaturas de introducci´n a la inform´tica
o a
10. ´
Presentacion 13
de los primeros cursos universitarios, y tambi´n interesan esas dos par-
e
tes a los profesionales que usen la inform´tica como una herramienta y
a
deseen sacar partido de ella.
El presente texto comprende dos vol´menes, complementarios, dedi-
u
cados respectivamente a esas dos partes, separando as´ la presentaci´n
ı o
de los conceptos generales y el desarrollo y organizaci´n de algoritmos
o
y estructuras de datos. En la primera parte, el enfoque pr´ctico nos
a
ha llevado a relacionar los contenidos estudiados con sus repercusiones
pr´cticas o su utilizaci´n. En la segunda, se ha unificado el estudio de
a o
los algoritmos con su desarrollo, haciendo uso de un lenguaje de progra-
maci´n concreto.
o
Este primer volumen se ha dividido en siete cap´ ıtulos, de los cua-
les el primero ofrece una visi´n panor´mica de la inform´tica, de los
o a a
computadores y de su uso en la actualidad: bien poniendo en marcha
aplicaciones ya desarrolladas y adapt´ndolas a nuestras necesidades, o
a
preparando soluciones para problemas nuevos. Se presentan asimismo
las primeras aproximaciones a los conceptos de algoritmo, programaci´n o
y lenguajes de programaci´n.
o
En el cap´
ıtulo 2 se aborda la representaci´n digital de la informaci´n.
o o
Conociendo las distintas formas de representaci´n, el programador podr´
o a
elegir las m´s apropiadas a las caracter´
a ısticas y naturaleza de su pro-
blema y prever sus limitaciones. Por otra parte, el usuario de aplicacio-
nes tendr´ una idea aproximada de c´mo se almacena su informaci´n, el
a o o
espacio que ocupa y las circunstancias en que los resultados podr´ noıan
ser del todo fiables.
El cap´ıtulo 3 est´ dedicado al aspecto f´
a ısico de los computadores y
sus perif´ricos. Se explica su funcionamiento introduciendo los lenguajes
e
de bajo nivel, y se comentan brevemente las arquitecturas orientadas al
procesamiento en paralelo.
En el cap´
ıtulo 4 se estudian los conceptos b´sicos para entender lo
a
que son los sistemas operativos, cu´les son sus funciones y c´mo las
a o
llevan a cabo.
El cap´
ıtulo 5 se dedica a los lenguajes de programaci´n, en espe-
o
11. 14 ´
Presentacion
cial los lenguajes evolucionados. Se tratan distintos modelos de progra-
maci´n, adem´s del imperativo, de amplia difusi´n en estos a˜os. Se
o a o n
introducen los metalenguajes para describir su sintaxis por su utilidad,
tanto a programadores como a simples usuarios de sistemas operativos,
incluso en el nivel de los comandos. Finalmente, se estudian los distintos
tipos de traductores y los entornos de programaci´n.
o
El cap´
ıtulo 6 trata sobre las bases de datos, una de las aplicaciones
de mayor aplicaci´n en el mundo empresarial. Entre los modelos des-
o
arrollados, destacamos el relacional y, entre los lenguajes de consulta, el
SQL, debido a la extensa difusi´n de ambos en la actualidad.
o
Hemos dedicado el cap´ ıtulo 7 a los or´
ıgenes, estado actual y pers-
pectivas de futuro de la inform´tica. Aunque muchos textos sit´an este
a u
tema al principio, hemos preferido estudiarlo una vez que se conocen
los conceptos y la terminolog´ b´sicos. De esta forma mejora la com-
ıa a
prensi´n del cap´
o ıtulo y puede valorarse en su justa medida cada uno de
los logros hist´ricos que en ´l se recogen.
o e
Debido al enfoque pr´ctico que perseguimos con este libro, se inclu-
a
yen dos ap´ndices dedicados a introducir en el manejo de dos sistemas
e
operativos concretos de gran difusi´n en la actualidad: el DOS y el
o
UNIX. El hecho de traer aqu´ estos anexos responde a dos razones: por
ı
un lado, conocer las caracter´
ısticas de cada sistema interesa al estudiante
como un ejemplo particular del cap´ ıtulo 4, permitiendo ver c´mo se lleva
o
a la pr´ctica lo estudiado en la teor´ por otro, siempre resulta de uti-
a ıa;
lidad al principiante disponer de un peque˜o prontuario de las ´rdenes
n o
o mecanismos m´s inmediatos que necesitar´ sin duda para empezar a
a a
desenvolverse en el entorno de esos sistemas operativos.
En la mayor´ de los cap´
ıa ıtulos, se ha incluido una peque˜a colecci´n
n o
de cuestiones y sencillos ejercicios de aplicaci´n, utiles para afianzar los
o ´
conceptos introducidos.
Adem´s, en cada cap´
a ıtulo se han seleccionado unas pocas referencias,
para completar los contenidos presentados con otros enfoques, o bien
para profundizar en el tema.
12. ´
Presentacion 15
Agradecimientos
En primer lugar, es inexcusable agradecer a la Editorial la confianza
que ha puesto en nosotros al aceptar una publicaci´n sobre un tema en
o
el que, ya lo hemos dicho, existen abundantes textos en nuestra lengua,
as´ como su paciencia en la recepci´n de los originales.
ı o
Tambi´n debemos dejar constancia de nuestra gratitud hacia los
e
compa˜eros que nos han alentado, desde el principio, a redactar este
n
ın a a ıa ´
trabajo. En especial, a Benjam´ Hern´ndez Bl´zquez, Mar´ Angeles
Medina S´nchez, Salvador Paz Mart´
a ınez, Inma P´rez de Guzm´n Mo-
e a
lina y Marisol Timoneda Salinas, y tambi´n a todos aquellos alumnos
e
que, repetidamente, nos han sugerido la compilaci´n de unos apuntes de
o
clase.
Durante la redacci´n de este trabajo, se han recogido numerosas opi-
o
niones y sugerencias. En particular, debemos agraceder las minuciosas
revisiones y comentarios hechos por Manuel Enciso Garc´ ıa-Oliveros, Car-
los Rossi Jim´nez, Jos´ Luis Gal´n Garc´ Jaime Fern´ndez Mart´
e e a ıa, a ınez,
Ma Angeles Cano Colorado, Oscar Mart´ S´nchez y Cristina Rodr´
´ ´ ın a ıguez
Iglesias.
Finalmente, quisi´ramos pedir la colaboraci´n de los lectores para
e o
subsanar las posibles deficiencias que encuentren.
13. Cap´
ıtulo 1
Conceptos B´sicos
a
1.1 Inform´tica . . . . . . . .
a . . . . . . . . . . . . . . . . . . . . . 17
1.2 Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5 Algoritmos y programas . . . . . . . . . . . . . . . . . . . . . . 21
1.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.7 Comentarios bibliogr´ficos
a . . . . . . . . . . . . . . . . . . . . . 28
El objetivo principal de este cap´
ıtulo consiste en ofrecer una visi´n
o
general del contenido del libro, presentando los conceptos generales y
los t´rminos m´s usados en inform´tica. Esta primera aproximaci´n
e a a o
nos permite situar cada uno de los temas siguientes en relaci´n con los
o
dem´s, y dentro del contexto de la inform´tica.
a a
1.1 Inform´tica
a
La inform´tica es la ciencia que estudia el procesamiento autom´tico
a a
de la informaci´n. Aunque la necesidad de razonar sobre este tipo de
o
procesos existe desde tiempo atr´s, la consolidaci´n de la inform´tica
a o a
como ciencia s´lo se produce con el desarrollo de los computadores, a
o
partir de los a˜os cuarenta. Se trata, por lo tanto, de una ciencia muy
n
joven, pero que ha evolucionado a gran velocidad.
14. 18 Cap´ ´
ıtulo 1. Conceptos Basicos
La piedra maestra sobre la cual se ha podido desarrollar la infor-
m´tica la representa el computador, que es una herramienta de gran
a
eficacia en muy diversos trabajos, y en particular en aqu´llos que ma-
e
nejan un gran volumen de datos o de operaciones. Esta versatilidad
tiene dos aspectos: por un lado, es posible usarlo como herramienta
para aplicaciones concretas ya desarrolladas (1.4), y por otro se pue-
den dise˜ar soluciones a la medida de problemas nuevos, mediante la
n
programaci´n (1.5).
o
El desarrollo de un programa nuevo para resolver un determinado
problema requiere, por una parte, conocer alg´n procedimiento siste-
u
m´tico (algoritmo) que lleve a su soluci´n, y por otra, la necesidad de
a o
expresarlo en un lenguaje de programaci´n que el computador pueda
o
comprender y ejecutar.
1.2 Computador
Un computador es una m´quina electr´nica que procesa informaci´n
a o o
siguiendo las instrucciones de un programa registrado.
Para comunicarse con el exterior dispone de unos medios de entrada,
a trav´s de los que recibe la informaci´n, y unos medios de salida, por
e o
donde la env´ Tiene dispositivos que le permiten almacenar la infor-
ıa.
maci´n (los datos, los resultados y el propio programa) y procesarla
o
siguiendo las instrucciones del programa.
La informaci´n que se procesa en el computador (programas, da-
o
tos y resultados) est´ expresada en forma digital binaria, combinando
a
ceros y unos. En consecuencia, tanto los programas como los datos y
resultados deben codificarse en este formato para poder ser procesados.
Una vez obtenidos los resultados, ´stos tienen que ser decodificados para
e
mostrarlos al usuario.
Como hemos visto, un computador se compone de dos partes cla-
ramente diferenciadas: una f´ ısica, que podemos tocar, constituida por
circuitos electr´nicos, teclado, pantalla, unidades de disco, etc., llamado
o
hardware, o en castellano soporte f´ ısico, y otra parte inmaterial, que no
15. 1.3. Sistema operativo 19
usuario
software de aplicaciones y del sistema
sistema operativo
hardware
Tabla 1.1. Estructura de niveles en un computador.
podemos tocar, constituida por los programas y datos, llamada software
en ingl´s y soporte l´gico en castellano. Ambas partes est´n ´
e o a ıntimamente
relacionadas de forma que una no puede operar sin la otra y viceversa.
1.3 Sistema operativo
Cuando se pone en marcha el computador, el primer programa que
entra en funcionamiento es el sistema operativo, que gestiona y coordina
los dos aspectos, f´
ısico y l´gico, del computador. Se trata de un conjunto
o
de programas que se interrelacionan estrechamente con el hardware, ges-
tionando los procesos en ejecuci´n, las operaciones de entrada y salida y
o
la memoria. Por ello, resulta imprescindible para el funcionamiento del
computador.
Los dem´s programas funcionan sobre el sistema operativo, y son
a
gestionados por ´l. Entre ellos, se encuentran las herramientas para
e
el desarrollo de programas (tales como los editores y traductores de
lenguajes), y tambi´n los programas de aplicaciones.
e
Por lo tanto, podemos decir que dentro del computador existe cierta
organizaci´n por niveles (v´ase la tabla 1.1): en el nivel m´s bajo se
o e a
encuentra el hardware, que por s´ mismo no puede realizar ninguna tarea;
ı
a continuaci´n se encuentra el sistema operativo, y desde ´l se arrancan
o e
los otros programas, que a su vez se relacionan directamente con el
usuario.
En resumen, el hardware no puede funcionar por s´ mismo: nece-
ı
sita la ayuda del software. La uni´n de ambos constituye una m´quina
o a
virtual, tremendamente vers´til.
a
16. 20 Cap´ ´
ıtulo 1. Conceptos Basicos
1.4 Aplicaciones
El software de aplicaciones est´ formado por aquellos programas que
a
han sido desarrollados para realizar tareas concretas. Se llama as´ por-
ı
que el computador “se aplica” a un trabajo determinado, facilitando su
ejecuci´n y resoluci´n. Por ejemplo, un procesador de textos, una hoja
o o
de c´lculo, un gestor de bases de datos, un generador de gr´ficos, un
a a
programa de contabilidad, juegos, etc.
Entre las aplicaciones m´s utilizadas se encuentran las siguientes:
a
• Los procesadores de textos son programas que facilitan la elabo-
raci´n de textos en el computador, desde una carta hasta un li-
o
bro. Permiten operar con m´rgenes, tabuladores, justificaci´n,
a o
sangrado, tipos de letra, b´squeda y sustituci´n de palabras, pa-
u o
ginaci´n, separaci´n de s´
o o ılabas, sin´nimos, ortograf´ etc. Son
o ıa,
probablemente los programas m´s usados.
a
• Las hojas de c´lculo son programas utilizados en la creaci´n de
a o
tablas, con datos relacionados entre s´ inicialmente ideados para
ı,
el an´lisis financiero. Tienen un formato matricial, en el que se
a
pueden definir operaciones y funciones sobre las distintas compo-
nentes de la matriz. Al modificar alg´n dato, todas las operaciones
u
que lo utilizan son actualizadas de forma autom´tica.
a
• Los gestores de bases de datos permiten gestionar la informaci´n o
referida a personas o art´
ıculos, realizando operaciones de edici´n,
o
ordenaci´n, b´squeda, etc.
o u
• Los generadores de gr´ficos facilitan la creaci´n de distintos tipos
a o
de gr´ficos, a partir de datos de hojas de c´lculo o bases de datos,
a a
o directamente introducidos por el usuario.
Existen muchas otras aplicaciones, de uso menos general, como son
los programas matem´ticos, estad´
a ısticos, de CAD (Dise˜o Asistido por
n
Computador), aplicaciones contables y de gesti´n de empresas, comuni-
o
caciones, juegos, etc.
17. 1.5. Algoritmos y programas 21
El desarrollo del software de aplicaciones ha sido muy grande (se cal-
cula que para los computadores compatibles con IBM hay m´s de cien
a
mil aplicaciones diferentes). A su vez, los distintos programas van evo-
lucionando, y aparecen nuevas versiones con m´s posibilidades y mayor
a
velocidad de ejecuci´n, aunque tambi´n con mayor demanda de potencia
o e
y memoria.
En algunos casos, varios de estos programas se unen en uno solo,
compartiendo datos e instrucciones, y constituyen un paquete integrado.
En general suele integrarse una hoja de c´lculo con un generador de
a
gr´ficos y, a veces, con una base de datos y un procesador de textos.
a
Gran parte de los programas de aplicaci´n pueden configurarse, en
o
mayor o menor medida, de acuerdo con los gustos y necesidades del
usuario; sin embargo, es posible que un programa concreto no pueda
atender esas necesidades. En este caso, resulta muy dif´ por no decir
ıcil,
imposible (e ilegal en muchos casos), modificar el programa para incluir
una nueva tarea. Conscientes de esta falta de flexibilidad del software,
muchos fabricantes est´n presentando programas de aplicaci´n que a
a o
su vez pueden ser programados, mediante lenguajes de programaci´n o
propios o est´ndares.
a
As´ pues, aunque la mayor´ de las personas que utilizan los compu-
ı ıa
tadores trabajan con programas de aplicaci´n y no necesitan recurrir a
o
la programaci´n, tambi´n hay un buen n´mero de usuarios que, sin ser
o e u
inform´ticos profesionales, pueden obtener un mayor rendimiento de es-
a
tos programas a trav´s de la programaci´n. Por ejemplo, muchas hojas
e o
de c´lculo, gestores de bases de datos y paquetes matem´ticos, hoy en
a a
d´ son programables.
ıa,
1.5 Algoritmos y programas
El desarrollo de programas es otro de los aspectos fundamentales
de la utilizaci´n de los computadores porque continuamente aparecen
o
nuevos problemas o tareas susceptibles de ser procesados de forma au-
tom´tica. Al mismo tiempo se van detectando las lagunas o deficiencias
a
en las aplicaciones existentes, lo que impulsa a su renovaci´n con la
o
18. 22 Cap´ ´
ıtulo 1. Conceptos Basicos
creaci´n de nuevas versiones de los programas existentes. El desarrollo
o
del hardware posibilita tambi´n la aparici´n de nuevas aplicaciones m´s
e o a
potentes y con mayores demandas de recursos.
Desde el planteamiento de un problema hasta la obtenci´n de su
o
soluci´n en el computador hay que recorrer una serie de etapas:
o
1. En primer lugar, antes de resolver un problema en el computador
hay que conocer los pasos y operaciones que hay que realizar para
obtener la soluci´n del problema, es decir, su algoritmo, porque
o
el computador solamente es capaz de seguir aquellas instrucciones
que nosotros le indiquemos. Si no conocemos el proceso que nos
conduce a la soluci´n del problema, el computador no nos la va a
o
dar. Esta secuencia de pasos y operaciones constituye una soluci´n
o
general al problema planteado de forma que, siguiendo el proceso,
se llega a la soluci´n del problema sean cuales fueran los datos
o
proporcionados.
2. Una vez conocida esta soluci´n general del problema, hay que ex-
o
presarla en un lenguaje especial, que pueda ser comprendido y
ejecutado por el computador, es decir, en un lenguaje de progra-
maci´n, creando un programa.
o
3. Posteriormente, hay que comprobar que el programa produce las
soluciones esperadas (ya sea utilizando datos de prueba o mediante
m´todos formales) y subsanar los errores detectados.
e
4. Por ultimo, es importante documentar el programa de forma que
´
si cambiaran algunas de las circunstancias iniciales, sea posible
modificar y adaptar convenientemente, facilitando las labores de
mantenimiento.
1.5.1 Algoritmos
Una de las caracter´ısticas de los seres humanos es su capacidad para
´
plantearse y resolver problemas. Estos pueden ser de naturaleza muy
19. 1.5. Algoritmos y programas 23
diversa, desde los problemas m´s inmediatos relacionados con la pro-
a
pia subsistencia, hasta los problemas m´s abstractos de naturaleza ma-
a
tem´tica o filos´fica.
a o
Un algoritmo es la descripci´n precisa de los pasos que nos permiten
o
obtener la soluci´n de un problema determinado. En general, los pa-
o
sos son acciones u operaciones que se efect´ an sobre ciertos objetos. Al
u
comienzo del algoritmo, los objetos tienen unos valores iniciales (los da-
tos) que var´ como consecuencia del proceso descrito por el algoritmo,
ıan
obteni´ndose los valores de salida o resultados.
e
La inform´tica estudia el procesamiento de la informaci´n mediante
a o
algoritmos, aunque el concepto de algoritmo, que proviene de las ma-
tem´ticas, es muy anterior e independiente de la existencia de la in-
a
form´tica y los computadores. 1
a
El concepto de algoritmo tiene una importancia fundamental den-
tro de la inform´tica, por ser previo a la resoluci´n del problema en el
a o
computador; si no se conoce el algoritmo para resolver un problema, no
puede plantearse su resoluci´n en el computador.
o
Aunque existen algoritmos registrados para la realizaci´n de tareas
o
muy variadas, en general los algoritmos desarrollados resuelven s´lo de-
o
terminadas partes de un problema como, por ejemplo, la ordenaci´n de
o
una lista de valores, pero no un problema real completo. En consecuen-
cia, habr´ que dise˜ar un algoritmo para su resoluci´n.
a n o
El dise˜o de algoritmos implica un an´lisis profundo del problema,
n a
de sus datos iniciales, del proceso que se les aplica y de los resultados
esperados. A partir de este an´lisis debe establecerse cu´l es la mejor
a a
estructura de datos para resolver el problema. De hecho, Niklaus Wirth,
uno de los padres de la programaci´n estructurada, titula una de sus
o
obras fundamentales Algoritmos + Estructuras de Datos = Programas,
mostrando la importancia que concede a dichas estructuras [Wir86b].
1
Se conoce un algoritmo para el c´lculo del m´ximo com´n divisor de dos n´meros
a a u u
naturales, debido a Euclides, que data del siglo IV a.C., al que se conoce como el
“abuelo” de todos los algoritmos.
20. 24 Cap´ ´
ıtulo 1. Conceptos Basicos
Existen t´cnicas que facilitan el dise˜o de algoritmos, tales como la
e n
programaci´n estructurada, la programaci´n modular, el refinamiento
o o
por pasos, el dise˜o descendente y la estructuraci´n y abstracci´n de los
n o o
datos.
Para poder expresar algoritmos se utilizan lenguajes con la necesaria
precisi´n, llamados lenguajes algor´
o ıtmicos, que son independientes de los
lenguajes de programaci´n. Los m´s utilizados son el seudoc´digo y los
o a o
diagramas de flujo.
Dado un problema concreto y conocido el algoritmo que lo resuelve,
para obtener la soluci´n del problema tenemos que partir de los datos
o
de entrada, y ejecutar las acciones descritas en el algoritmo. Al proceso
de ejecutar un algoritmo concreto para unos datos determinados se le
llama c´mputo, de donde procede el t´rmino computador. El procesador
o e
es quien ejecuta materialmente el c´mputo.
o
1.5.2 Programaci´n
o
Como dec´ ıamos al principio, consideramos al computador como una
herramienta que nos ayuda en la resoluci´n de problemas; para ello es
o
preciso conocer previamente un algoritmo que lleve a su soluci´n. A
o
continuaci´n hay que expresar el algoritmo en un lenguaje de progra-
o
maci´n, que pueda ser comprendido y ejecutado por el computador,
o
desarroll´ndose un programa. A este proceso se le llama programaci´n.
a o
Una aportaci´n sustancial para realizar este paso tan delicado con la
o
correcci´n necesaria la constituyen:
o
1. El refinamiento por pasos, que permite aumentar el grado de de-
talle en la expresi´n del algoritmo seg´n convenga, para adaptarlo
o u
a las necesidades del lenguaje.
2. La programaci´n estructurada, que utiliza las estructuras de pro-
o
gramaci´n propias de los lenguajes evolucionados.
o
3. La programaci´n modular que, al permitir el uso de m´dulos o
o o
subprogramas, facilita el empleo de otras t´cnicas de dise˜o de
e n
algoritmos y la depuraci´n de los programas .
o
21. 1.5. Algoritmos y programas 25
4. No debe olvidarse la importancia de la estructuraci´n y abstracci´n
o o
de datos, presente tambi´n en los lenguajes evolucionados, que
e
debe emplearse con todo su potencial en el dise˜o de algoritmos y,
n
posteriormente, en los programas.
El desarrollo de aplicaciones cada vez m´s complejas y el crecimiento
a
del sector de producci´n de software, ha hecho que se apliquen a la pro-
o
gramaci´n t´cnicas de ingenier´ que garanticen la viabilidad y calidad
o e ıa
de los grandes proyectos de aplicaciones, lo que se conoce como inge-
nier´ del software.
ıa
1.5.3 Lenguajes de Programaci´n
o
El computador dispone de un conjunto de instrucciones que son reco-
nocidas y ejecutadas por el procesador. Estas instrucciones se expresan,
al igual que los datos, en forma digital binaria, si bien para reconocerlas
mejor y evitar errores se les asignan unos nombres mnemot´cnicos que
e
permiten recordar sus funciones. Estas instrucciones constituyen el len-
guaje de m´quina del computador, y suelen ser diferentes en funci´n del
a o
fabricante del procesador.
El lenguaje de m´quina es ejecutado a gran velocidad por el procesa-
a
dor, en los computadores actuales esta velocidad se mide en millones de
operaciones por segundo; por otra parte, el lenguaje de m´quina permite
a
el acceso directo a todos los ´rganos del computador. Por estos motivos
o
el lenguaje m´quina es insustituible en aquellas aplicaciones donde sea
a
necesaria una gran rapidez de ejecuci´n, o el acceso directo a ciertos
o
o
´rganos del computador.
Las instrucciones del lenguaje de m´quina son en general muy poco
a
potentes, operan sobre datos de peque˜o tama˜o, y en muchos casos no
n n
incluyen ni multiplicaciones ni divisiones. Para poder operar sobre da-
tos mayores o realizar operaciones m´s complejas, tales como potencias
a
o logaritmos, hay que fraccionar los datos y aplicar sucesivamente las
operaciones simples, siguiendo algoritmos espec´ ıficos. Por este motivo,
y por su estrecha relaci´n con el hardware, a los lenguajes de m´quina se
o a
les llama lenguajes de bajo nivel . En consecuencia, la tarea de escribir
22. 26 Cap´ ´
ıtulo 1. Conceptos Basicos
problema
t
t dise˜o de algoritmos
n
”
t
algoritmo
t
t programaci´n
o
”
t
programa fuente
t
t traductor
”
t
programa objeto
t
t procesador
”
t
programa en ejecuci´n
o
Figura 1.1. Resoluci´n de un problema mediante la programaci´n.
o o
programas en lenguaje de m´quina es tediosa y est´ sujeta a muchos
a a
errores.
Ante la necesidad de escribir programas cada vez m´s complejos y
a
fiables, los inform´ticos desarrollaron lenguajes con niveles m´s elevados
a a
de abstracci´n, que inclu´ operaciones y datos m´s complejos a los
o ıan a
que llamaron lenguajes de alto nivel. De esta forma se acorta el camino
entre el algoritmo y su expresi´n en forma de programa, porque los
o
lenguajes de alto nivel pueden expresar mejor las acciones y objetos que
intervienen en los algoritmos.
Una de las grandes ventajas de estos lenguajes radica en que la tra-
ducci´n del programa escrito en lenguaje de alto nivel (programa fuente)
o
al lenguaje de m´quina (programa objeto) que, como recordamos, es el
a
unico que puede ser ejecutado por el computador, es autom´tica y se
´ a
realiza por un programa traductor.
Para ello, junto con las especificaciones del lenguaje, reglas de sinta-
xis y sem´ntica, se desarrollan los necesarios programas de traducci´n.
a o
Durante el proceso de traducci´n se suelen detectar errores, debidos al
o
23. 1.6. Ejercicios 27
incumplimiento de las reglas sint´cticas del lenguaje o a causas m´s suti-
a a
les, que deben corregirse antes de poder ejecutar el programa. Si durante
la ejecuci´n de un programa se realizan operaciones no permitidas (tales
o
como divisiones por cero, accesos fuera de l´ ımites, . . . ) se producen los
llamados errores de ejecuci´n.
o
Aunque un programa se haya traducido eliminando todos los errores
sint´cticos y de ejecuci´n, a´n puede no realizar correctamente la tarea
a o u
para la que fue creado, por contener errores l´gicos. Por lo tanto es
o
necesario comprobar el funcionamiento del programa utilizando datos
de prueba que permitan realizar los c´lculos a mano y comprobar as´
a ı
las partes m´s conflictivas del programa. Este proceso se conoce como
a
depuraci´n de los programas.
o
En la actualidad la mayor´ de los programas se escriben en lengua-
ıa
jes de alto nivel, reserv´ndose los lenguajes de bajo nivel para aquellas
a
aplicaciones donde se necesite una elevada velocidad o un acceso directo
a los ´rganos del computador; por ejemplo, en los programas traductores
o
o en programas de gesti´n del computador.
o
1.6 Ejercicios
1. Trate de describir con precisi´n mediante frases sencillas algunas tareas
o
cotidianas, como leer un libro o realizar un trayecto en autob´s.
u
2. Dado el algoritmo de Euclides que se menciona en el apartado 1.5.1,
Sean A, B, R ∈ IN.
Mientras B = 0, hacer:
R ← A modulo B
A←B
B←R
Escribir A
trate de seguirlo, utilizando l´piz y papel (por ejemplo, para A = 12 y
a
B = 8). Est´ formulado desde el punto de vista del procesador: cuando se
a
dice “leer A, B”, el procesador debe pedir dos valores para las variables
A y B al usuario; la instrucci´n “mientras b = 0 hacer ...” significa
o
que mientras la condici´n sea cierta hay que realizar las operaciones
o
24. 28 Cap´ ´
ıtulo 1. Conceptos Basicos
comprendidas entre dicha instrucci´n (...) que, en nuestro caso, es una
o
secuencia de tres. La operaci´n “m´dulo” expresa el resto de la divisi´n
o o o
entera, y el s´
ımbolo “←” indica que, tras calcular el resultado de la
expresi´n a su derecha, se retendr´ como el valor de la variable a su
o a
izquierda.
3. Clasifique los siguientes elementos del computador como pertenecientes al
hardware, al software del sistema o al de aplicaciones: pantalla, teclado,
unidad de entrada y salida, programa del sistema operativo, compilador,
procesador de textos, etc.
1.7 Comentarios bibliogr´ficos
a
Existe una gran cantidad de textos de introducci´n a la inform´tica que
o a
se pueden recomendar con car´cter general. Aun ci˜´ndonos a los escritos en
a ne
castellano o traducidos, existen bastantes textos excelentes sobre el tema, con
diversos enfoques.
En [GL86] encontramos un panorama general sobre inform´tica en el que se
a
utiliza como tema unificador el concepto de algoritmo, que sus autores juzgan
como el concepto central de la computaci´n. Se trata de un texto apropiado
o
para el principiante y de lectura amena. El libro de Bishop ([Bis91]) es tambi´n
e
un libro muy asequible de introducci´n en inform´tica.
o a
[PLT89] trata con gran detalle la estructura f´
ısica de los computadores, por
lo que interesar´ a quienes deseen detenerse en este aspecto de la inform´tica.
a a
Recomendamos [FSV87] a quien desee dirigirse hacia los fundamentos te´ri-o
cos de la inform´tica (la teor´ de algoritmos, la l´gica y la teor´ de aut´matas
a ıa o ıa o
y lenguajes formales).
Por ultimo, puesto que la inform´tica es una ciencia reciente, cuenta con
´ a
muchos vocablos nuevos, en su mayor´ anglicismos, que muchas veces se em-
ıa
plean de forma ileg´
ıtima, o que se aplican con un sentido equivocado. En [VJ85]
y [MA85] puede consultarse el significado de esos t´rminos.
e
25. Cap´
ıtulo 2
Representaci´n digital de
o
la informaci´n
o
2.1 Conceptos previos . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2 Representaci´n digital de los datos
o . . . . . . . . . . . . . . . . 35
2.3 C´digos redundantes . . . . . . . .
o . . . . . . . . . . . . . . . . 49
2.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.5 Comentarios bibliogr´ficos . . . . .
a . . . . . . . . . . . . . . . . 57
La representaci´n de la informaci´n en los computadores digitales
o o
persigue dos objetivos: en primer lugar, procesarla, permitiendo su ma-
nipulaci´n eficiente, para lo cual se han ideado diferentes convenios, de
o
los que veremos los m´s importantes; y en segundo, asegurarla contra
a
errores durante su almacenamiento o durante las transmisiones, lo que
se consigue incorporando en la codificaci´n el empleo de la redundancia
o
para detectar y corregir dichos errores.
2.1 Conceptos previos
2.1.1 Informaci´n anal´gica y digital
o o
Las magnitudes continuas son las que pueden adoptar los infinitos
valores de un intervalo de n´meros reales, tales como la longitud de un
u
segmento, velocidad, temperatura, intensidad de un sonido, etc.
26. 30 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
Las magnitudes discretas tienen naturaleza discontinua, tales como
la longitud (n´mero de s´
u ılabas) de una palabra, capacidad (n´mero de
u
pasajeros) de un veh´
ıculo, etc.
En la pr´ctica, es frecuente que las magnitudes continuas sean trata-
a
das como discretas: el peso de una persona (que se redondea en kilos); la
temperatura (en grados y d´cimas de grado); la longitud de un segmento,
e
medida con un dispositivo de precisi´n hasta los mil´
o ımetros.
En relaci´n con ambos tipos de magnitud se considera la informaci´n
o o
anal´gica, que es de naturaleza continua, pudiendo tomar infinitos valo-
o
res; y la informaci´n digital, que es de naturaleza discreta. Aunque esta
o
ultima puede tomar infinitos valores ( IN), en un computador digital la
´
informaci´n es discreta y, adem´s, finita.
o a
En las calculadoras, la digitalizaci´n de variables anal´gicas produce
o o
un efecto de redondeo, que debe ser tenido en cuenta y tratado con-
venientemente para evitar errores de c´lculo (v´ase la secci´n 2.3); en
a e o
el monitor de un ordenador, supone el ajuste de la imagen proyectada
sobre una matriz de puntos.
2.1.2 Unidades de informaci´n en los sistemas digitales
o
La raz´n de ser de un computador es el procesamiento de infor-
o
maci´n. Para poder hablar con propiedad de este procesamiento, debe-
o
mos definir unidades de medida que nos permitan cuantificar de alg´n u
modo la acci´n del computador sobre la informaci´n suministrada. Con-
o o
sideramos las siguientes:
• Bit (BInary digiT ) es la cantidad de informaci´n que puede alma-
o
cenarse en una variable binaria. No hay que confundir el bit con
la variable ni con su valor: una variable binaria es la que puede
tomar dos valores estables: 0 ´ 1, blanco o negro, s´ o no, etc.
o ı
La necesidad de codificar informaciones m´s complejas ha llevado
a
a agrupar varios bits, apareciendo as´ las siguientes unidades:
ı
• El byte u octeto es la cantidad de informaci´n que puede codificarse
o
en 8 bits; representa por tanto 2 8 = 256 valores.
27. 2.1. Conceptos previos 31
• La palabra se define en relaci´n con la m´quina considerada, como
o a
la cantidad de informaci´n que la m´quina puede manejar de una
o a
sola vez. Para evitar equ´ıvocos, se habla de palabras de 8 bits, 16
bits, 32 bits, etc.
• 1 Kbyte = 210 bytes = 1.024 bytes. Se suele llamar kilobyte, aun-
que esto puede resultar equ´
ıvoco, ya que el prefijo “kilo” significa
1.000 (y no 1.024).
• 1 Mbyte = 1.048.576 bytes (220 = 1.0242 ). An´logamente, debe
a
advertirse que “mega” no significa un mill´n en este contexto.
o
2.1.3 Sistemas de numeraci´n posicionales
o
Aunque se conocen sistemas no posicionales, tales como el de nume-
raci´n romana o el sexagesimal, que usamos para medir el tiempo y los
o
a
´ngulos, el sistema de numeraci´n m´s difundido en la actualidad es sin
o a
duda el sistema decimal posicional, o sistema ar´bigo-hind´, inventado
a u
hacia el siglo VIII.
Por otra parte, en el contexto de la inform´tica se usan frecuente-
a
mente sistemas de numeraci´n posicional en bases tales como 2 (ya que
o
el bit tiene dos posiciones), 16 (como compactaci´n de palabras de 4
o
bits), etc.
Para aprender a manejarlos, se recurre frecuentemente a la analog´ ıa
con el sistema de numeraci´n m´s conocido: el de base 10. Se llama
o a
decimal porque cada cifra o d´
ıgito puede tomar diez posibles valores: del
0 al 9; se llama posicional porque el valor real de cada d´
ıgito depende
de su posici´n.
o
10475 = 1 ∗ 104 + 0 ∗ 103 + 4 ∗ 102 + 7 ∗ 101 + 5 ∗ 100
A la cantidad 10 se le llama base; las potencias de 10 son los pesos
asociados a cada posici´n, y los factores o coeficientes de cada peso son
o
las cifras de la representaci´n. Tambi´n se podr´ haber representado
o e ıa
en forma polin´mica del siguiente modo:
o
10475 = 1 ∗ 104 + 0 ∗ 103 + 47 ∗ 101 + 5 ∗ 100
28. 32 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
pero la primera forma es la unica donde las cifras son todas menores
´
que la base. En general, esta afirmaci´n adopta la siguiente forma, cuya
o
demostraci´n se incluye al final de este cap´
o ıtulo.
Teorema 2.1 En un sistema de numeraci´n en base b > 1, todo entero
o
N positivo tiene una unica representaci´n de la forma
´ o
N = cp bp + cp−1 bp−1 + . . . + c1 b1 + c0 b0
donde 0 ≤ ci < b para todo i = 0, 1, . . . , p
Conversi´n entre sistemas
o
En primer lugar, la expresi´n decimal de un n´mero de cifras cp . . . c0
o u
en base b se obtiene sencillamente sumando los valores reales correspon-
dientes a los diferentes d´
ıgitos:
[cp . . . c0 ](b = cp ∗ bp + . . . + c0 ∗ b0
Por ejemplo, 275(8 = 2 ∗ 82 + 7 ∗ 81 + 5 ∗ 80 = 189(10
En segundo lugar, representar el n´mero 241(10 en el sistema de base
u
5, equivale a expresarlo en forma polin´mica con las sucesivas potencias
o
de esa base, siguiendo la idea de la demostraci´n del teorema:
o
241 5 ⇒ 241 = 48 * 5 + 1
1 48 5 ⇒ 48 = 9*5+3
3 9 5 ⇒ 9 = 1*5+4
4 1 ⇒ 1 = 0*5+1
Por lo tanto,
241 = 48 ∗5+1
= (9 ∗ 5 + 3) ∗5+1
= ((1 ∗ 5 + 4) ∗ 5 + 3) ∗5+1
= 1 ∗ 53 + 4 ∗ 52 + 3 ∗ 51 + 1 ∗ 50 = 1431(5
29. 2.1. Conceptos previos 33
Sistemas de numeraci´n m´s usuales
o a
El sistema m´s empleado en electr´nica digital es el de base 2, lla-
a o
mado binario (natural). En inform´tica tienen inter´s los sistemas cuya
a e
base es una potencia de dos: 2, 4, 8, 16. La siguiente tabla recoge los
primeros n´meros naturales, expresados en algunos de esos sistemas y
u
en el decimal:
dec. binario octal hexad. dec. binario octal hexad.
0 0 0 0 9 1001 11 9
1 1 1 1 10 1010 12 A
2 10 2 2 11 1011 13 B
3 11 3 3 12 1100 14 C
4 100 4 4 13 1101 15 D
5 101 5 5 14 1110 16 E
6 110 6 6 15 1111 17 F
7 111 7 7 16 10000 20 10
8 1000 10 8 17 10001 21 11
En el sistema hexadecimal se usan los d´ ıgitos 0, . . . , 9, A, . . . F para las
cantidades cero, . . . , nueve, diez, . . . , quince respectivamente. As´ por ı
ejemplo, C7A(16 = 12 ∗ 162 + 7 ∗ 161 + 10 ∗ 160 = 3194(10 , ya que los
valores de A y C en el sistema de base 16 son 10 y 12, respectivamente.
Se observa que, en una base cualquiera b, con N cifras (o menos)
es posible expresar bN cantidades distintas; inversamente, para poder
componer C combinaciones distintas se necesita disponer de un n´mero
u
de cifras igual a logb C, redondeado por exceso.
Como consecuencia de lo anterior, cuanto mayor sea la base adoptada
se pueden expresar m´s cantidades (combinaciones) para un n´mero fijo
a u
de cifras; inversamente, cuanto mayor sea la base, es posible usar menos
cifras para expresar una misma cantidad.
30. 34 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
Observaci´n
o
La conversi´n de binario en octal o en hexadecimal se puede abreviar
o
del siguiente modo:
11 001 111 010 101 100(2
= 11 001 111 010 101 100
= 3 1 7 2 5 4 = 317254(8
= 1 1001 1110 1010 1100
= 1 9 14 10 12 = 19EAC(16
¿A qu´ se debe el funcionamiento de este mecanismo?
e
Operaciones aritm´ticas en base dos
e
Para las operaciones elementales se usan las tablas correspondientes
a la base de que se trate. Por ejemplo, para el caso binario la tabla de
sumar es la siguiente:
+ 0 1
0 0 1
1 1 10
Y entonces, son v´lidas las reglas conocidas para las operaciones en base
a
diez. Por ejemplo, en el sistema binario natural, tenemos:
1001 100101
+ 1011 − 11011
10100 01010
Para la resta se usa frecuentemente el m´todo del complemento: en
e
lugar de la resta propuesta, se halla la suma correspondiente comple-
mentando el sustraendo (min − sus → min + comp(sus), siendo el com-
plemento (comp) el n´mero resultante de cambiar cada cero por un uno
u
y viceversa), suprimiendo la cifra excedente, posiblemente aparecida por
el arrastre, y sumando una unidad al resultado obtenido:
100101 100101
− 11011 → + 100100
1001001 → 001010
31. ´
2.2. Representacion digital de los datos 35
2.2 Representaci´n digital de los datos
o
En los sistemas digitales, no resulta viable dar una representaci´n
o
v´lida para codificar todos los n´meros; por otra parte, los diversos
a u
sistemas empleados dan diferentes tratamientos a n´meros tan usuales
u
como el uno (seg´n se considere como real o como entero). Estudiaremos
u
diversos convenios para diferentes conjuntos de n´meros, as´ como sus
u ı
limitaciones.
En este apartado, supondremos que disponemos de un espacio de N
bits, con lo que es posible representar 2N enteros distintos.
2.2.1 Representaci´n de los n´ meros enteros
o u
N´ meros enteros positivos
u
Si se considera unicamente n´meros enteros positivos, con N bits de
´ u
espacio ser´ posible representar los n´meros de 0 a 2N −1. La forma m´s
ıa u a
natural de lograrlo consiste en interpretar cada combinaci´n mediante
o
la cantidad que representa en binario. Por ejemplo, con 1 byte (es decir,
N = 8) se representar´ los n´meros 0, . . . , 255 en este sistema.
ıan u
N´ meros enteros con signo. Convenio del signo-magnitud
u
Para representar los n´meros enteros (con signo), el sistema m´s
u a
simple es el convenio de signo-magnitud, consistente en reservar el pri-
mer d´ ıgito binario para codificar el signo (suele representarse el signo
+ con un cero y el − con un uno) y los siguientes N − 1 para el va-
lor absoluto. As´ en este sistema tienen representaci´n las cantidades
ı, o
±0, . . . , ±(2N − 1). En el caso particular de 1 byte, esas cantidades son
−127, . . . , −0, +0, . . . , +127.
En este sistema, la aritm´tica es bastante simple: la suma de canti-
e
dades del mismo signo y la resta de cantidades de distinto signo siguen
la regla b´sica en binario. Para sumar cantidades de distinto signo, o
a
restar cantidades del mismo signo, resulta m´s pr´ctico el m´todo del
a a e
complemento.
32. 36 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
Se observa el inconveniente de que el cero tiene una doble represen-
taci´n, por lo que el test de la comparaci´n para la igualdad en este
o o
sistema debe tenerlo en cuenta. Por otra parte, la suma/resta de signos
y valores absolutos necesita dos algoritmos distintos, que no resultan
muy eficientes. Los siguientes sistemas surgen precisamente para tratar
de paliar estas deficiencias.
N´ meros enteros con signo. Complemento restringido
u
Para comprender mejor el funcionamiento de este convenio en bina-
rio, conviene introducirlo primero en base diez. Si consideramos palabras
de N = 2 d´ ıgitos (decimales), es posible representar 102 = 100 canti-
dades distintas. En este convenio se opta por considerar los n´meros u
negativos de {−49, . . . , −0}, y los positivos de {0, . . . , 49}, del siguiente
modo: los n´meros positivos se representan en decimal natural, mientras
u
que para cada negativo −z se toma la cantidad 99 − z (complemento de
z respecto de 102 − 1, que es la N=2 potencia de la base menos uno).
As´ por ejemplo, tenemos:
ı
repr(29) = 2 9
repr(−29) = 99 − 29 = 7 0
Con este convenio, las cantidades
−49, −48, . . . , −0, 0, 1, . . . , 48, 49
se representan respectivamente mediante
5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9
Aunque se observa el inconveniente de que el cero tiene dos repre-
sentaciones, la ventaja de este convenio consiste en que la suma de dos
n´meros, sea cual fuere su signo, se lleva a cabo con un mismo algoritmo,
u
que s´lo se diferencia de la suma de enteros en que el posible arrastre se
o
agrega al resultado final:
+ 23 → 2 3
+ − 15 → + 8 4
+1
1 0 7 → 0 8
33. ´
2.2. Representacion digital de los datos 37
Consideremos ahora esta representaci´n con palabras de N = 4 d´
o ıgitos
binarios: las cantidades representables son
−7, −6, . . . , −0, +0, . . . , +6, +7
→ −111(2 , −110(2 , . . . , −0(2 , +0(2 , . . . , +110(2 , +111(2
que, al complementar las negativas respecto de 1111, resulta:
→ 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111
N´ meros enteros con signo. Complemento aut´ntico
u e
Empezamos nuevamente con la base decimal como punto de partida,
y consideremos tambi´n palabras de longitud N = 2. Ahora se opta por
e
considerar los n´meros negativos de {−50, . . . , −1}, y los positivos de
u
{0, . . . , 49}, del siguiente modo: los n´meros positivos se representan en
u
binario natural, mientras que para cada negativo −z se toma la cantidad
100 − z (complemento de z respecto de 10, que es la base para N = 2).
repr(29) = 2 9
repr(−29) = 100 − 29 = 7 1
Con frecuencia se emplea otra regla equivalente para complementar
los n´meros negativos, consistente en a˜adir una unidad al correspon-
u n
diente complemento restringido.
Con este convenio, las cantidades
−50, −49, . . . , −1, 0, 1, . . . , 48, 49
se representan respectivamente mediante
5 0 , 5 1 , ... , 9 9 , 0 0 , 0 1 , ... , 4 8 , 4 9
Este sistema tiene las mismas ventajas que el anterior, y adem´s el
a
cero se representa de un unico modo.
´
34. 38 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
Como en el caso anterior, consideremos ahora la base dos, con pala-
bras de N = 4 d´
ıgitos, donde tienen cabida las cantidades
−8, −7, . . . , −1, +0, . . . , +7
→ −1000(2 , −111(2 , . . . , −1(2 , +0(2 , . . . , +110(2 , +111(2
que, al complementar las negativas respecto de 10000, resulta:
→ 1000, 1001, . . . , 1111, 0000, . . . , 0110, 0111.
En este sistema, la suma tambi´n se lleva a cabo con un mismo algo-
e
ritmo, igual al usado para el complemento restringido, pero ignorando
la posible cifra de arrastre:
+ 23 → 2 3
+ − 15 → + 8 5
1 0 8 → 0 8
Funcionamiento de las operaciones aritm´ticas
e
Debe subrayarse que las operaciones anteriores no coinciden con las
aritm´ticas, debido a la posibilidad de que se produzca un desborda-
e
miento; los diferentes sistemas responden ante esta circunstancia de di-
ferentes modos: por ejemplo, ignorando la ultima cifra de arrastre, o
´
interrumpiendo su trabajo para delatar una condici´n de error. Por lo
o
tanto, es necesario prever esta posibilidad y conocer de qu´ modo re-
e
acciona nuestro sistema. Sobre este asunto volveremos m´s adelante,
a
dentro de este mismo cap´ ıtulo.
Formatos de los n´ meros enteros en las computadoras
u
Entre los convenios presentados, el m´s frecuente es el del comple-
a
mento aut´ntico en base dos, llamado simplemente complemento a dos.
e
Ahora bien, depender´ de la longitud de palabra la cantidad de com-
a
binaciones posibles y, por tanto, el rango de enteros considerado. Por
otra parte, aunque ciertos sistemas trabajan con palabras de longitud
variable, lo corriente es optar por uno o varios formatos con tama˜o fijo:
n
simple (1 byte), doble (2 bytes), cu´druple (4 bytes) u octuple (8 bytes).
a ´
35. ´
2.2. Representacion digital de los datos 39
2.2.2 Representaci´n de los n´ meros reales
o u
Debe resaltarse que, en general, s´lo resulta posible representar apro-
o
ximaciones de los n´meros reales mediante n´meros decimales, con s´lo
u u o
unas pocas cifras significativas. En el siguiente apartado estudiaremos
los efectos de este redondeo.
En este apartado, supondremos que disponemos de un espacio de N
bits, con lo que es posible representar 2N enteros distintos.
Convenio con coma fija
Si disponemos de un espacio de N bits para representar un n´mero
u
real, la caracter´
ıstica principal de este convenio es la reserva impl´
ıcita
de algunos bits fijos para la parte decimal, asumi´ndose la coma en una
e
posici´n fija. A su vez, existen los siguientes modos de representaci´n
o o
en coma fija:
• Sistema signo y valor absoluto
En este convenio se reserva un bit para codificar el signo, y del resto
se destina una cantidad fija para representar el valor absoluto de
la parte entera, y los dem´s para la decimal:
a
1 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1
.
± p. entera dec.
Si consideramos por ejemplo N = 16, siendo el primer bit el que
codifica el signo, los siguientes 12 los de la parte entera, y los
3 restantes los de la parte decimal, resulta que la representaci´n
o
anterior significar´
ıa
−010010010111.101
= −(210 + 27 + 24 + 22 + 21 + 20 + 2−1 + 2−3 )
= −1175 625.
36. 40 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
• Complemento restringido y complemento aut´ntico
e
Sea D = 3 el n´mero (fijo) de decimales asumidos. La represen-
u
taci´n de un n´mero x, en cualquiera de estos convenios, consiste
o u
en codificar en su lugar la parte entera de x ∗ 23 en el convenio
elegido. La cantidad despreciada al truncar los decimales de x ∗ 23
es menor que 0 125(10 (= 2−3 ).
Por ejemplo, para representar −2 8 en palabras de N = 8 y D = 3,
debemos conformarnos con una aproximaci´n: al ser D = 3, s´lo po-
o o
demos representar cantidades decimales m´ ltiplos enteros de 0 001(2 =
u
2−3 = 0 125(10 . Como trunc(−2 8 ∗ 8) = trunc(−22 4) = −22, repre-
(10
sentamos −22/8 = −2 75. Comprobamos que esta cantidad es efectiva-
mente m´ltiplo de 0 125, y que el siguiente m´ltiplo (−2 875) excede la
u u
cantidad inicial (−2 8).
• Signo y valor absoluto:
1 1 1 0 0 1 0 1 1 0
2.75 = 2 + + =
2 4 .
± p. entera dec.
• Complemento restringido (8 d´
ıgitos):
11111111
−22 = − → 11101001 = 1 1 1 0 1 0 0 1
10110(2
• Complemento aut´ntico (8 d´
e ıgitos):
100000000
−22 = − → 11101010 = 1 1 1 0 1 0 1 0
10110(2
Convenios con coma flotante
El principal inconveniente de la coma fija consiste en condicionar
el orden de magnitud de las cantidades codificadas. Un sistema m´s a
general deber´ adaptarse a ordenes tan distantes como los de la masa de
a ´
37. ´
2.2. Representacion digital de los datos 41
la tierra y la del atomo. El sistema m´s conocido con esta caracter´
´ a ıstica
es la llamada notaci´n exponencial (o cient´
o ıfica):
140 = +0.14 ∗ 103 = +0.14E3
6.02215 ∗ 1023 = +0.602215E24
0.00000015 = +0.15E − 6
Los convenios con coma flotante funcionan del mismo modo, divi-
diendo la informaci´n sobre una cantidad en tres partes: su signo, su
o
mantisa (es decir, las cifras significativas de mayor orden), y el exponente
(que expresa el orden de magnitud). As´ por ejemplo, consideremos la
ı
siguiente representaci´n en palabras de N bits:
o
• El signo, adscrito al primer bit, donde el uno representa al signo
menos.
• El exponente (z), situado en los siguientes e bits, puede tomar los
valores de {−2e−1 , . . . , 2e−1 − 1}. Frecuentemente se representa
desplazado en +2e−1 unidades:
z ∈ {−2e−1 , . . . , 2e−1 − 1} ⇒ repr(z) ∈ {0, . . . , 2e − 1}
• Para la mantisa quedan M = N − e − 1 bits con lo que, para su
representaci´n, se toman los primeros M d´
o ıgitos de su escritura en
binario natural.
Como ejemplo concreto, consideremos el convenio est´ndar IEEE 754
a
(real con precisi´n simple, o real corto), que es una de las codificaciones
o
de reales m´s utilizadas. Su representaci´n requiere un total de 32 bits,
a o
de los cuales un bit se utiliza para el signo, 8 bits para el exponente
y 23 bits para la mantisa. Este convenio en concreto, utiliza un truco
llamado bit oculto: como el bit m´s significativo de la mantisa es un 1,
a
ahorramos un bit simplemente asumi´ndolo. Se logra as´ espacio para
e ı
una mantisa de 24 d´ ıgitos significativos. El inconveniente de emplear un
bit oculto consiste en que se requiere una representaci´n especial para
o
el cero.
38. 42 Cap´ ´ ´
ıtulo 2. Representacion de la informacion
2.2.3 Limitaciones de los sistemas de representaci´n
o
digital de los n´ meros
u
Debido a que los sistemas de codificaci´n considerados est´n inmer-
o a
sos en sistemas finitos, s´lo pueden representar una cantidad finita de
o
elementos distintos. Esta limitaci´n resulta cr´
o ıtica a la hora de repre-
sentar elementos pertenecientes a conjuntos infinitos, como son los de
los n´meros enteros o reales. Como consecuencia, pueden producirse
u
situaciones de error no deseables, por lo cual se hace necesario estudiar
el alcance de esas limitaciones, as´ como la manera de afrontarlas.
ı
Limitaciones en los enteros
En los enteros, las representaciones se limitan a un intervalo reducido
[m´ m´x ], de cardinal no superior a 2n , siendo n el tama˜o (en bits)
ın, a n
de la representaci´n. As´ cuando surge la codificaci´n de n´meros fuera
o ı, o u
del rango considerado, se produce el llamado desbordamiento (overflow
en ingl´s).
e
Por ejemplo, en una representaci´n con 4 bits ser´n posibles 16 con-
o a
figuraciones. Si optamos por el convenio de complementaci´n aut´ntica,
o e
el intervalo considerado ser´ [−8, 7]. Veamos qu´ ocurre al sumar 5 y 6.
a e
5 → 0101
+ 6 → + 0110
1011 → −5
El comportamiento de las operaciones de suma y resta en el sistema
de complementaci´n aut´ntica para una representaci´n de n bits se puede
o e o
describir as´ llamemos x e y a la representaci´n de x e y, y + y − a las
ı: o
operaciones de suma y resta en este sistema, ∀x, y ∈ [−2n−1 , 2n−1 − 1],
tenemos:
(x ± y + 2n ) ,
si x ± y < −2n−1
x ± y = (x ± y) , si x ± y ∈ [−2n−1 , 2n−1 − 1]
(x ± y − 2n ) , si x ± y > 2n−1 − 1
Para paliar en cierta medida esta limitaci´n, es frecuente incorpo-
o
rar tipos de datos correspondientes a rangos de enteros m´s amplios
a