Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción A La Ciencia de La Computación - Behrouz A. Forouzan (FreeLibros)
Introducción A La Ciencia de La Computación - Behrouz A. Forouzan (FreeLibros)
a la C ¡ 6 FI C ¡ O d e la
Introducción
computación ala C ¡ © PI C ¡ Q déla
de
a
La M a N i p u L q c i ó N
La t e o r í a de
de dato/
La c o M p u t q c í ó N
D iseñado p ara el curso introductorio a la cien cia de la com putación, este libro tiene como objetivo
computación
cubrir lo que todo estudiante de ingeniería e inform ática necesita sab er antes de p asar a cursos
más e sp e cia liza d o s. El autor d esarro lla el texto en cinco partes: C om p utado ras y datos, d e La M d N i p u L a c i ó N de d a t o /
H a rd w are, Softw are, O rg a n iz a ció n d e datos y Tem as a v a n za d o s (com presión de datos, a La t e o r í a d e La c o M p u t a c i ó N
seguridad y teoría de la com putación), a fin de a b o rd a r, uno a uno, los p rincipales tem as básicos.
Behrouz A. Forouzan
De Anza College
con colaboración de
Sophia Chung Fegan
TH O M SO N
--------
División Iberoamericana
El Caribe: España:
Thomson Learning Thomson Learning
598 Aldebarán Calle Magallanes núm. 25
Altamira Sa n Juan, 28015 Madrid, España
Puerto Rico Tel 34 (0)91 446 33 50
Te! (787) 641 11 12 Fax 34 (0)91 445 621 8
Fax (787) 641 11 19 clientes@paraninfo.es
thomson@coqui.net
Corto Sur:
Tel/Fax (54114) 582 26 84 _ , . * • ' . » • • • i onrva
Buenos Aires, Argentina Esta obra se termino de impnmir en el 2003
sdeiuque@thomsoniearning.com.ar en los talleres de Grupo G E O Impresores S.A. de C.V.
Contenido
C a p ítu lo 6 Redes de com p u tad o ras 99 7.4 Sistemas operativos m ás comunes 136
A p é n d ice G A cró n im o s
Glosario
360
361
Prefacio
ín dice 377
Las ciencias de la computación son una disciplina joven que está evolucionando y pro
gresando. Las redes de computadoras han conectado a personas desde lugares remotos
del mundo. La realidad virtual está creando imágenes tridimensionales que sorprenden
a la vista. La exploración espacial debe parte de su éxito a las computadoras. Los efectos
especiales creados por computadora han cambiado la industria del cine. Y las computa
doras han jugado papeles importantes en la genética.
w P re fa c io P re fa c io \\i
Capítulo 6: Redes de com putadoras En este capítulo comentamos cómo se conectan las
O R G A N IZA C IÓ N DEL LIBRO computadoras para-crear redes e interredes.
Este libro está diseñado para un curso CSO (primer curso de ciencias de la computación). En la parte III, estudiamos varios aspectos del software de computadora.
Parte III: Softw are
Cubre todas las áreas de la computación. Dividimos el texto en cinco partes: Computadoras
de co m p u ta d o ra
y datos, Hardware de computadoras, Software de computadoras, Organización de los datos y
Temas avanzados (figura P.l). Capítulo 7: Sistemas operativos Este capítulo estudia al sistema operativo como la par
te más importante del software del sistema. Presentamos las tareas de un sistema operativo y
cómo evolucionan. También analizamos las partes de un sistema operativo moderno.
C apítulo 1: Introducción
C apítulo 2: R epresentación de datos Capítulo 8: A lg oritm os En este capítulo, estudiamos los algoritmos, los cuales juegan un
C apítulo 3: R epresentación de núm eros papel tan importante en las ciencias de la computación que algunas personas creen que cien
C apítulo 4: O peraciones de bits cias de la computación significa el estudio de los algoritmos. Definimos el concepto de algo
ritmos y usamos algunas herramientas para representar algoritmos. Una discusión completa
C apítulo 5: O rganización de la com putadora
de estas herramientas se presenta en los apéndices C, D y E.
C apítulo 6: Redes d e com putadoras
C apítulo 9: Lenguajes de program ación Este capítulo presenta primero los lenguajes en
C apítulo 7: Sistem as operativos
general y luego analiza los elementos de C, un lenguaje generalizado.
C apítulo 8: A lgoritmos
F ig u r a F.1 Esquem a de! lib ro C apítulo 12: Tipos de datos abstractos En este capítulo analizamos los tipos de datos
abstractos (ADT). En el procesamiento de datos, se necesita definir a los datos como un pa
Parte I: En la parte 1 estudiamos una computadora y los datos que ésta procesa. Esta parte contiene quete incluyendo las operaciones definidas para el paquete. Se describen listas, pilas, colas,
C om pu tadoras cuatro capítulos. árboles y gráficas de tal manera que los estudiantes piensen en los datos en abstracto.
y datos
C apítulo 1: introducción En este capítulo se considera a la computadora como una enti C apítulo 13: Estructuras de archivos En este capítulo analizamos las estructuras de ar
dad procesadora de datos. Presentamos el concepto de von Neumann y analizamos los com chivos. Mostramos cómo los archivos se organizan lógicamente y analizamos los archivos de
ponentes generales de una computadora. Posponemos el análisis detallado de los acceso secuencial y de acceso aleatorio. Un estudiante necesita conocer estos conceptos an
componentes de computadoras hasta el capítulo 5. tes de tomar un primer curso en programación.
C apítulo 2: Representación de datos En este capítulo, estudiamos la representación de Capítulo 14: Bases de datos Este capítulo analiza las bases de datos. Los archivos en una
texto, imágenes, audio y video como patrones de bits. La representación de números se pos organización rara vez se almacenan por separado y de manera aislada. Con frecuencia, éstos
pone hasta el capítulo 3. se organizan en una entidad llamada base de datos. Presentamos la base de datos relacional
y mencionamos un lenguaje (SQL) que puede recuperar información de este tipo de base de
C apítulo 3: Representación de números En este capítulo presentamos la representación
datos.
de números. Mostramos cómo los enteros y los números de punto flotante se almacenan en
una computadora.
Parte V: Temas En esta parte analizamos tres temas avanzados que están ganando importancia en las ciencias
Capítulo 4: Operaciones de bits En este capítulo, estudiamos la manipulación de patro avanzados de la computación, compresión de datos, seguridad y la teoría de la computación. Estos te
nes de bits, tanto aritméticos como lógicos. mas pueden omitirse si el tiempo es un factor importante o si los estudiantes no tienen una
formación previa.
P a rte || j H a rd w a re En la parte ü , estudiamos el hardware de computadora. Esta parte se divide en dos capítulos.
d e com p u ta d o ra C apítulo 15: Com presión de datos En este capítulo presentamos dos categorías de com
Capítulo 5: Organización de la com putadora En este capítulo, consideramos a la compu presión de datos: sin pérdida y con pérdida. Analizamos la codificación de longitud de ejecu
tadora como una máquina independiente. Describimos las partes del hardware de computa ción, la codificación Huffman y el algoritmo de Lempel Ziv como ejemplos de compresión
dora y cómo funcionan. sin pérdida. Analizamos JPEG y MPEG como ejemplos de compresión con pérdida.
x x ii P re fa c io P re fa c io w iii
Capítu lo 16: Seguridad Este capítulo estudia cuatro aspectos de la seguridad: privacidad, 9 Tabla ASCn
autenticación, integridad y no rechazo. Mostramos cómo utilizar el cifrado/descifrado y la fir 9 Unicode
ma digital para crear un sistema seguro. 9 Diagramas de flujo
9 Pseudocódigo
Capítu lo 17: Teoría de la com putación En este capítulo exploramos brevemente la teo 9 Diagramas de estructura
ría de la computación. Mostramos cómo ningún lenguaje es superior a otro en la solución de 9 Transformación de coseno discreto
un problema. Explicamos que hay algunos problemas que no pueden resolverse por ningún 9 Acrónimos
programa de computadora escrito en cualquier lenguaje.
C lo sa rio Al final del libro se incluye un glosario con todos los términos clave.
M IR ADA A VUELO El lector debe tener en mente que este libro no estudia ningún tema sobre las ciencias de la
Soluciones La solución de todas las preguntas de repaso, preguntas de opción múltiples y ejercicios con
DE PÁJARO computación a profundidad; para hacerlo se requerirían múltiples volúmenes. El libro inten
un número non están disponibles en línea en www.brookscole.com/compsci.
ta cubrir temas relacionados con las ciencias de la computación. Nuestra experiencia mues d e las prácticas
tra que conocer la representación y la manipulación de datos, por ejemplo, ayuda a los
M A T E R IA L E S La presentación de PowerPoint de todas las figuras y puntos resaltados, además de la solu
estudiantes a comprender mejor la programación en lenguajes de bajo y alto nivel. Conocer
D E IN S T R U C C IÓ N ción a todas las preguntas de repaso, preguntas de opción múltiple y ejercicios está disponi
información general sobre las ciencias de la computación ayudará a los estudiantes a tener
ble en línea en www.brookscole.com/compsci.
más éxito cuando tomen cursos de conectividad en red e interredes. El libro es una mirada a
vuelo de pájaro de las ciencias de la computación.
R E C O N O C IM IE N T O S Ningún libro de este campo puede desarrollarse sin el apoyo de muchas personas. Esto es es
pecialmente cierto para este texto.
CARACTERÍSTICAS Hay varias características de este libro que no sólo lo hacen único, sino más comprensible pa Nos gustaría agradecer el apoyo del equipo de De Anza por su continuo ánimo y sus co
ra los estudiantes primerizos. mentarios. En particular agradecemos la contribución de Scout DeMouthe por leer el manus
D EL LIBRO
crito y resolver los problemas.
A través del libro, hemos intentado enfatizar más en el concepto que en el modelo matemá Para cualquiera que no ha pasado por este proceso, el valor de las revisiones de los com
C o n cepto s pañeros y compañeras no puede apreciarse lo suficiente. Escribir un texto rápidamente se
tico. Creemos que una comprensión del concepto conduce a una comprensión del modelo.
vuelve un proceso miope. La orientación importante de los revisores que pueden guardar dis
tancia para revisar el texto como un todo no puede medirse. Para parafrasear un viejo cliché,
M é to d o visual Una breve revisión del libro mostrará que nuestro método es muy visual. Hay casi 300 figu “No son valiosos, son invaíuables”. Nos gustaría agradecer especialmente las contribuciones
ras. Aun cuando esto tiende a aumentar el tamaño del libro, las figuras ayudan a la compren de los siguientes revisores: Essam El-Kwae, Universidad de Carolina del Norte en Charlotte;
sión del texto. Norman J. Landis, Universidad Fairleigh Dickinson; John A. Rohr, Universidad de Califor
nia en Los Ángeles Robert Signoriie, Boston Collage, y Robert Statica del Instituto de Tec
Ejem plos Siempre que se considera apropiado, se usan ejemplos para demostrar el concepto y el mo nología de New Jersey.
delo matemático. Damos las gracias también a nuestro editor, Hill Stenquist; a la editora de adquisiciones,
Kallie Swanson; a la asistente editorial, Carla Vera, y al editor de producción, Kesley McGee.
También deseamos agradecer a Merrill Peterson de Matriz Productions, al corrector Frank
M a te ria l de fin El material al final de cada capítulo contiene tres partes: términos clave, resumen y práctica.
Hubert y a la lectora de pruebas Amy Dorr.
d e ca p ítu lo Por último, y obviamente no lo menos importante, está el agradecimiento al apoyo reci
Térm inos clave Los términos clave proporcionan una lista de los términos importantes bido por parte de nuestras familias y amigos. Hace muchos años un autor definió el proceso
presentados en el capítulo. Cada término clave se define en el glosario. de escribir un texto como “encerrarse en un cuarto”. Mientras los autores sufren a través del
proceso de escritura, sus familias y amigos sufren a través de su ausencia. Sólo podemos es
Resumen Los resúmenes contienen una descripción general concisa de todos los puntos perar que en cuanto vean el producto final, sientan que su sacrificio valió la pena.
clave del capítulo. Se listaron con viñetas para que sean más fáciles de leer.
Práctica Cada práctica se compone de tres partes: preguntas de repaso, preguntas de op
ción múltiple y ejercicios.
9 Las preguntas de repaso evalúan los puntos clave y conceptos generales del capítulo.
9 Las preguntas de opción múltiple están diseñadas para probar la comprensión de los
materiales.
9 Los ejercicios están diseñados para ver si los estudiantes pueden aplicar los conceptos y
las fórmulas.
A p é n d ice s Se incluyen siete apéndices para una referencia rápida a las tablas o materiales que se estu
dian en varios capítulos. Los apéndices son:
Datos y
computado as
iS j ^ • .CAPÍTULO 1: Introducción., ..
Introducción PROCESADOR
DE DATOS
modelos comunes de computadoras.
Puede pensar en una computadora como un procesador de datos. Usando esta definición,
una computadora actúa como una caja negra que acepta datos de entrada, procesa los datos
y crea datos de salida (figura 1.1). Aunque este modelo puede definir la funcionalidad de una
computadora hoy día, es demasiado general. Bajo este modelo, una calculadora de bolsillo
también es una computadora (lo cual es cierto, literalmente).
Datos ^ , I w Datos
Computadora I---------- ► ,
de entrada r 1 de salida
L a frase ciencia de la computación tiene un significado muy amplio en la actualidad. Sin Otro problema con este modelo es que no especifica el tipo de procesamiento o si es po
embargo, en este libro la definimos como “temas relacionados con la computación”. Este ca sible más de un tipo de procesamiento. En otras palabras, no queda claro cuántos tipos de
pítulo introductorio primero trata de averiguar qué es la computadora y luego descubre otros conjuntos de operaciones puede realizar una máquina basada en este modelo. ¿Se trata de
aspectos relacionados con las computadoras. Consideramos a la computadora como una ca una máquina para propósito específico o una máquina para propósito general?
ja negra y tratamos de adivinar su comportamiento. Luego tratamos de penetrar en esta caja Este modelo podría representar una computadora para propósito específico (o procesa
para dejar al descubierto lo que es común a todas las computadoras. Esto nos lleva al mode dor) que está diseñada para realizar alguna tarea en especial como controlar la temperatura
lo de von Neumann, el cual es universalmente aceptado como la base de la computadora. En de un edificio o controlar el uso de combustible en un automóvil. Sin embargo, las compu
seguida analizamos brevemente las repercusiones y los inconvenientes de aceptar el modelo tadoras, según se usa el término en la actualidad, son máquinas de propósito general. Pue
de Von Neumann. En este punto, nos referimos al capítulo o los capítulos del texto relaciona den realizar muchos tipos distintos de tareas. Esto implica que necesitamos cambiar nuestro
dos con estos problemas. El capítulo termina con una breve historia de este recurso cambian modelo para reflejar las computadoras reales de hoy.
te de la cultura: la computadora.
PROCESADOR Un mejor modelo para una computadora de propósito general se muestra en la figura 1.2. Es-
DE DATOS ta figura añade un elemento extra a la computadora: el programa. Un programa es un con-
PRO G RAM ABLE junto de instrucciones que indican a la computadora qué hacer con los datos. En los
primeros días de las computadoras, las instrucciones se ejecutaban al cambiar el cableado o
apagar y encender una serie de interruptores. Actualmente, un programa es una serie de ins
trucciones escritas en un lenguaje de computadora.
Programa
Datos Datos
i Computadora
de entrada 811 de salida
En el nuevo modelo, los datos de salida dependen de la combinación de dos factores: los M ism os datos Desde luego, usted espera el mismo resultado cada vez que tanto los datos de entrada como
datos de entrad a y el programa. Con los mismos datos de entrada, usted puede generar dis de entrada, programa son los mismos. En otras palabras, cuando el mismo programa se ejecuta con
tintas salidas si cambia el programa. De manera similar, con el mismo programa, puede ge m ism o p ro g ra m a la misma entrada, usted espera la misma salida.
nerar diferentes salidas si cambia la entrada. Finalmente, si los datos de entrada y el programa
permanecen igual, la salida deberá ser la misma. Veamos tres casos.
M ism o program a, La figura 1.3 muestra el mismo programa de ordenamiento con datos distintos. Aunque el 1.2 EL MODELO DE VON NEUMANN
d iferen tes datos programa es el mismo, la salida es diferente porque se procesan distintos datos de entrada.
En la actualidad cada computadora se basa en el modelo de Von Neumann (que lleva el nom
d e entrada
bre de John von Neumann). El modelo examina el interior de la computadora (la caja negra)
y define cómo se realiza el procesamiento. Se basa en tres ideas.
Programa ! ^
iGroen
CUATÜ0
SUBSISTEMAS E l modelo define una computadora como cuatro subsistemas: memoria, unidad lógica arit
I mética, unidad de control y entrada/salida (figura 1.5).
i Computadora
M em o ria La m em oria es el área de almacenamiento, donde los programas y los datos se almacenan
durante el procesamiento. Más adelante en este capítulo se analiza la razón de ser del alma
3, 12, 8, 22 3 ,8 , 12,22 cenamiento de programas y datos.
U nidad lógica La unidad lógica aritm ética (ALU: arithm etic logic unit ) es donde el cálculo aritmético y
aritm ética las operaciones lógicas toman lugar. Si una computadora es un procesador de datos, usted
debería poder realizar operaciones aritméticas con los datos (por ejemplo, sumar una lista de
números). También debería poder realizar operaciones lógicas con ellos (por ejemplo, en
3, 12, 8, 22 45 contrar el menor de dos elementos de datos, como en el ejemplo de clasificación previo).
Unidad de co n tro l La unidad de control determina las operaciones de la memoria, de la ALU y del subsiste
ma de entrada/salida.
Entrada/Salida El subsistema de entrada acepta datos de entrada y el programa desde el exterior de la com
3, 12, 8, 22 putadora; el subsistema de salida envía el resultado del procesamiento al exterior. La defini
ción del subsistema de entrada/salida es muy amplia; también incluye los dispositivos de
almacenamiento secundarios como un disco o cinta que almacena datos y programas para
Figura 1.4 M ism o s d atos, d ife re n te s p ro gram as
In tro d u c c ió n 1.5 S o ftw a re d e c o m p u ta d o ra
procesamiento. Un disco se considera un dispositivo de salida cuando almacena los datos ORGANIZACIÓN Aun cuando los datos deben almacenarse sólo en una forma (un patrón binario) dentro de
que se obtienen como resultado del procesamiento y se considera un dispositivo de entrada DE DATOS una computadora, los datos fuera de una computadora pueden tomar muchas formas. Ade
cuando usted lee datos del disco. más, las computadoras (y la noción del procesamiento de datos) han creado un nuevo cam
po de estudio conocido como organización de datos. ¿Puede usted organizar sus datos en
CON CEPTO El modelo de von Neumann establece que el programa debe almacenarse en la memoria. Es diferentes entidades y formatos antes de almacenarlos dentro de una computadora? Hoy día,
DE PRO GRAM A to es totalmente diferente de la arquitectura de las primeras computadoras en las cuales sólo los datos no se tratan como una secuencia de información, sino que se organizan en unida
A LM A C E N A D O se almacenaban los datos en la memoria. El programa para una tarea se implementaba me des pequeñas, las cuales a su vez están organizadas en unidades más grandes, y así sucesi
diante la manipulación de una serie de interruptores o al cambiar el sistema de cableado. vamente. En los capítulos 2 a 4, estudiaremos los datos desde este punto de vista.
La memoria de las computadoras modernas aloja tanto un programa como sus datos co
rrespondientes. Esto implica que ambos, tanto los datos como el programa, deben tener el
mismo formato porque se almacenan en la memoria. De hecho, se guardan como patrones bi
narios (una secuencia de ceros y unos) en la memoria.
1.5 SOFTWARE DE LA COMPUTADORA
EJECUCIÓN Un programa en el modelo de von Neumann se conforma de un número finito de instruc
La característica principal del modelo de von Neumann es el concepto del programa almace
SEC U EN C IA L ciones. En este modelo, la unidad de control trae una instrucción de la memoria, la interpre
nado. Aunque las primeras computadoras no usaron este modelo, sí usaron el concepto de pro
DE INSTRUCCIONES ta y luego la ejecuta. En otras palabras, las instrucciones se ejecutan una. después de otra.
gramas. La programación de estas primeras computadoras implicaba cambiar los sistemas de
Desde luego, una instrucción puede requerir que la unidad de control salte a algunas instruc
cableado o encender y apagar una serie de interruptores. La programación era una tarea reali
ciones previas o posteriores, pero esto no significa que las instrucciones no se ejecutan de
zada por un operador o ingeniero antes de que comenzara el procesamiento de los datos.
manera secuencial.
El modelo de von Neumann cambió el significado del término “program ación” . En es
te modelo, hay dos aspectos de la programación que deben ser comprendidos.
LOS PRO G RAM AS En el modelo de von Neumann, los programas se almacenan en la memoria de la computa
1.3 HARDWARE DE LA COMPUTADORA DEBEN dora. No sólo se necesita memoria para mantener los datos, sino que además se requiere me
A LM ACEN ARSE moria para mantener el programa (figura 1.6).
Sin lugar a dudas, el modelo de von Neumann establece el estándar de los componentes
esenciales de una computadora. Una computadora física debe incluir los cuatro componen
tes, a los que se hace referencia como hardware de la computadora, definidos por von Neu
mann. Pero usted puede tener diferentes tipos de memoria, diferentes tipos de subsistemas
de entrada/salida, y así por el estilo. El hardware de la computadora se analiza con más de
talle en el capítulo 5.
Programa
1.4 DATOS
Datos
Este modelo define claramente a una computadora como una máquina de procesamiento de
datos que acepta datos de entrada, los procesa y produce el resultado.
M emoria
A LM A CEN A M IEN TO El modelo de von Neumann no define cómo deben almacenarse los datos en una computa-
DE DATOS dora. Si una computadora es un dispositivo electrónico, la mejor manera de almacenar los Figura 1 .6 P ro g ra m a y d a to s en m e m o ria
datos es en forma de señal eléctrica, específicamente su presencia o ausencia. Esto implica
que una computadora puede almacenar datos en uno de dos estados.
Evidentemente, los datos que usted usa en la vida diaria no están sólo en uno de dos es UN A SECUENCIA Otro requisito del modelo es que el programa debe ser una secuencia de instrucciones. Cada
tados. Por ejemplo, nuestro sistema de numeración emplea dígitos que pueden estar en uno DE INSTRUCCIONES instrucción opera en una o más piezas de datos. De esta manera cada instrucción puede cam
de diez estados (0 a 9). Este tipo de información no se puede (todavía) almacenar en una biar el efecto de una instrucción previa. Por ejemplo, la figura 1.7 muestra un programa que
computadora. Necesita ser cambiada a otro sistema que use sólo dos estados (0 y 1). introduce dos números, luego los suma e imprime el resultado. Este programa consiste de
Usted necesita además procesar otros tipos de datos (texto, imágenes, audio, video). Éstos cuatro instrucciones individuales.
tampoco pueden almacenarse en una computadora directamente, sino que deben cambiarse a Una persona podría preguntar por qué un programa debe estar hecho de instrucciones. La
la forma apropiada (ceros y unos). respuesta es por su capacidad para usarse de nuevo. Actualmente, las computadoras realizan
En los capítulos 2 y 3, aprenderá cómo almacenar distintos tipos de datos como un pa millones de tareas. Si el programa para cada tarea fuera una entidad independiente sin una
trón binario, una secuencia de ceros y unos. En el capítulo 4, mostraremos la manera en que sección común con otros programas, la programación sería difícil. El modelo de von Neu
se manipulan los datos como un patrón binario, dentro de una computadora. mann facilita la programación mediante una definición cuidadosa de diferentes instruccio-
In tro d u c c ió n 1.6 H is to ria |||¡ j |f |
13. E n el m odelo de von Neumann, el subsistema 21. __________ es una serie de instrucciones en un lengua 31. Un lenguaje de programación tiene diez instrucciones 36. Utiliza Internet o acude a la biblioteca para encontrar
_________ almacena datos y programas. je de computación que indica a la computadora qué ha diferentes. ¿Cuántos programas de cinco instrucciones más información sobre la Rueda de Leibnitz.
a. ALU cer con los datos. pueden escribirse con este lenguaje sin repetir ninguna 37. Utiliza Internet o acude a la biblioteca para encontrar
b. entrada/salida a. un sistema operativo hardware instmcción? ¿Cuántos programas de siete instrucciones? más información sobre el telar de Jacquard y su impac
c. memoria b. un algoritmo
32. ¿Actualmente qué es más costoso, el hardware o el soft to social.
d . unidad de control c. un procesador de datos
ware? 38. Utiliza Internet o acude a la biblioteca para encontrar
d. un programa
14. E n el modelo de von Neumann, el subsistema más información sobre la Máquina Analítica.
33. ¿Qué es más valioso para una organización hoy día, el
_________ realiza cálculos y operaciones lógicas. 22. es el diseño y la escritura de un programa de
hardware, el software o los datos? 39. Utiliza Internet o acude a la biblioteca para encontrar
a. ALU forma estructurada.
b. entrada/salida a. ingeniería de software 34. ¿Cómo impone la organización de los datos un progra más información sobre Hollerit y su tabuladora.
c. memoria b. ingeniería de hardware ma procesador de palabras?
d. unidad de control c. desarrollo de algoritmos
35. Utiliza Internet o acude a la biblioteca para encontrar
d. arquitectura de instrucciones
15. E n el modelo de von Neumann, el subsistema más información sobre la Pascalina.
__________acepta datos y programas y envía los resul 23. La primera computadora electrónica para un uso espe
tados del procesamiento a dispositivos de salida. cial se llam ó__________ .
a. ALU a. Pascal
b. entrada/salida b. Pascalina
c. memoria c. ABC
d. unidad de control d. EDVAC
16. En el modelo de von Neumann, el subsistema 24. Una de las primeras computadoras basadas en el mode
_________ sirve como un administrador de los otros lo de von Neumann se llam ó__________ .
subsistemas. a. Pascal
a. ALU b. Pascalina
b. entrada/salida c. ABC
c. memoria d. EDVAC
d. unidad de control
25. La primera máquina computadora en usar la idea de al
17. Según el modelo de von Neumann,_________se alma macenamiento y programación se llam ó __________ .
cenan en la memoria. a. la Madeline
a. sólo los datos b. EDVAC
b. sólo los programas c. la máquina de Babbage
c. los datos y los programas d. el telar de Jacquard
d. ninguno de los anteriores
26. L o s___________ separaron la tarea de la programación
18. Una solución paso a paso para un problema se llama de las tareas de operación de la computadora.
a. algoritmos
a. hardware b. procesadores de datos
b. un sistema operativo c. lenguajes de programación de alto nivel
c. un lenguaje de computadora d. sistemas operativos
d. un algoritmo
TIPOS DE DATOS
En la actualidad los datos se presentan de diferentes maneras, por ejemplo números, texto,
imágenes, audio y video (figura 2.1). La gente necesita procesar todos estos tipos de datos.
Representación
de datos
Datos
1 1 i 1
Texto Número Imagen Audio Video
La solución más eficaz es usar una representación uniforme de los datos. Todo tipo de da
tos que entran del exterior a una computadora se transforman en esta representación uniforme 2.3 REPRESENTACIÓN DE DATOS
cuando se almacenan en una computadora y se vuelven a transformar en su representación
original cuando saien de la computadora. Este formato universal se llama patrón de bits. Ahora podemos explicar cómo pueden representarse diferentes tipos de datos usando patro
nes de bits.
Antes de continuar con el análisis de los patrones de bits, se debe definir un bit. Un bit (bi
nary digit: dígito binario) es la unidad más pequeña de datos que puede almacenarse en una TEX TO Una pieza de texto en cualquier idioma es una secuencia de símbolos usados para represen
computadora; puede ser ya sea 0 o 1. Un bit representa el estado de un dispositivo que pue tar una idea en ese idioma. Por ejemplo, el idioma inglés utiliza 26 símbolos (A, B, C, . . . ,
de tomar uno de dos estados. Por ejemplo, un interruptor puede estar ya sea apagado o en Z) para representar las letras mayúsculas, 26 símbolos (a, b, c , . . . , z) para representar las le
cendido. La convención es representar el estado de encendido como 1 y el estado de apagado tras minúsculas, 9 símbolos (0,1, 2 , . . . , 9) para los caracteres numéricos (no números; la di
como 0. Un interruptor electrónico puede representar un bit. En otras palabras, un interruptor ferencia se verá más adelante) y símbolos !) para representar la puntuación. Otros
puede almacenar un bit de información. Actualmente las computadoras utilizan varios dispo símbolos como el espacio en blanco, la línea nueva y el tabulador se usan para alineación de
sitivos binarios de dos estados para almacenar datos. texto y legibilidad.
Usted puede representar cada símbolo con un patrón de bits. Dicho de otra forma, texto
PATRÓN DE BITS Un solo bit no puede resolver el problema de la representación de datos, si cada pieza de da
como la palabra “BYTE”, formada por cuatro símbolos, puede representarse como 4 patro
tos pudiera representarse por un 1 o un 0, entonces sólo se necesitaría un bit. Sin embargo,
nes de bits, en los que cada patrón define un solo símbolo (figura 2.4).
usted necesita almacenar números más grandes, necesita almacenar texto, gráficos y otros ti
pos de datos.
Para representar diferentes tipos de datos se utiliza un patrón de bits, una secuencia o, co
mo a veces se le llama, una cadena de bits. La figura 2.2 muestra un patrón de bits formado
por 16 bits, es una combinación de ceros (0) y unos (1). Esto significa que si usted quiere Y T \ ^
E
almacenar un patrón de bits formado por 16 bits, necesita 16 interruptores electrónicos. Si
quiere almacenar 1000 patrones de bits, cada uno de 16 bits, necesita 16 000 bits y así suce 1 0 1 ... 101 1 1 1 ... 100 110 ... 100 000 ... 101
sivamente.
F ig u r a 2 .4 R ep resen tació n d e sím b o lo s u san d o p a tro n e s d e bits
La pregunta es: ¿Cuántos bits se necesitan en un patrón de bits para representar un símbo
lo en un idioma? Depende de cuántos símbolos haya en la secuencia. Por ejemplo, si usted
F ig u r a 2 .2 P atrón d e bits
crea un idioma imaginario que utilice sólo las letras mayúsculas del idioma inglés, sólo ne
cesita 26 símbolos. Un patrón de bits en este idioma requiere representar al menos 26 símbo
Ahora la pregunta es: ¿Cómo sabe la memoria de la computadora qué tipo de datos repre los. Para otro idioma, como el chino, pueden necesitarse muchos símbolos más. La longitud
senta el patrón de bits? No lo sabe. La memoria de la computadora sólo almacena los datos del patrón de bits que representa un símbolo en un idioma depende del número de símbolos
como patrones de bits. Es responsabilidad de los dispositivos de entrada/salida o de los pro usados en ese idioma. Más símbolos significan un patrón de bits más grande.
gramas interpretar un patrón de bits como un número, texto o algún otro tipo de datos. En Aunque la longitud del patrón de bits depende del número de símbolos, la relación no es li
otras palabras, los datos se codifican cuando entran a la computadora y se decodifican cuan neal; es logarítmica. Si se requieren dos símbolos, la longitud es 1 bit (el log22 es 1). Si se ne
do se presentan al usuario (figura 2.3). cesitan cuatro símbolos, la longitud es 2 bits (log24 es 2). La tabla 2.1 muestra esta relación, la
cual es fácilmente perceptible. Un patrón de bits de 2 bits puede tomar cuatro formas diferen
tes: 00, 01, 10 y 11; cada una de las cuales representa un símbolo. Del mismo modo, un pa
trón de tres bits puede tomar ocho formas diferentes: 000, 001, 010, 011,100,101,110 y 111.
C ó d ig o s Se han diseñado diferentes secuencias de patrones de bits para representar símbolos de texto. Unicode Ninguno de los códigos anteriores representa símbolos que pertenecen a idiomas
A cada secuencia se le conoce como código y al proceso de representar los símbolos se le lla distintos al inglés. Por eso, se requiere un código con mucha más capacidad. Una coalición
ma codificación. En esta sección explicamos los códigos comunes. de fabricantes de hardware y software ha diseñado un código llamado Unicode que utiliza 16
bits y puede representar hasta 65 536 (2Í6) símbolos. Diferentes secciones del código se asig
ASCII El Instituto Nacional Norteamericano de Estándares (ANSI: American Nacional nan a los símbolos de distintos idiomas en el mundo. Algunas partes del código se usan para
Standards Institute) desarrolló un código llamado Código norteamericano de estándares símbolos gráficos y especiales. El lenguaje Java™ utiliza este código para representar carac
para intercambio de información (ASCII: American Standard Code fo r Information Inter teres. Microsoft Windows usa una variación de los primeros 256 caracteres. En el apéndice B
change). Este código utiliza siete bits para cada símbolo. Esto significa que 128 (27) símbo hay un pequeño conjunto de símbolos Unicode.
los distintos pueden definirse mediante este código. Los patrones de bits completos para el
código ASCII están en el apéndice A. La figura 2.5 muestra cómo se representa la palabra ISO La Organización Internacional para la Estandarización (Internacional Standard
“BYTE” en código ASCII. Organization), conocida como ISO, ha diseñado un código que utiliza patrones de 32 bits. Es
te código representa hasta 4 294 967 296 (232) símbolos, definitivamente lo suficiente para re
presentar cualquier símbolo en el mundo actual.
B Y T E NÚM EROS En una computadora, los números se representan usando el sistema binario. En este sistema,
un patrón de bits (una secuencia de ceros y unos) representa un número. Sin embargo, un có
digo como el ASCII no se usa para representar datos. La razón para ello y un análisis de la
representación de números se presentan en el capítulo 3.
1000010 1011001 1010100 1000101
IMÁGENES Hoy día las imágenes se representan en una computadora mediante uno de dos métodos: grá
Figura 2 .5 R ep re sen tació n d e la p alab ra "B Y T E" en c ó d ig o ASCII ficos de mapa de bits o gráficos de vectores (figura 2.6).
0 0 0 1 10 0 0
0 0 1 1 1 10 0
0 0 1 1 1 10 0
0 0 0 1 10 0 0
Representación
Imagen
de pixeles
F ig u r a 2 .9 R ep resen tació n d e au d io
F ig u ra 2 .7 M é to d o d e gráficos d e m apa d e bits d e una im ag en blanca y negra
G ráficos El problema con el método de los gráficos de mapa de bits es que los patrones de bits exac
d e vectores tos para representar una imagen particular deben guardarse en una computadora. Posterior 2.4 NOTACIÓN HEXADECIMAL
mente, si usted desea cambiar el tamaño de la imagen debe cambiar el tamaño de los pixeles,
lo cual crea una apariencia difusa y granulada. No obstante, el método de gráficos de vector El patrón de bits se diseñó para representar datos cuando éstos se almacenan dentro de una
no guarda los patrones de bits. Una imagen se descompone en una combinación de curvas y computadora. Sin embargo, para la gente es difícil manipular los patrones de bits. Escribir
líneas. Cada curva o línea se representa por medio de una fórmula matemática. Por ejemplo, una serie de números 0 y 1 es tedioso y propenso al error. La notación hexadecimal ayuda.
una línea puede describirse mediante las coordenadas de sus puntos extremos y un círculo La notación hexadecimal se basa en 16 (hexad.ec es la palabra griega para 16). Esto sig
puede describirse mediante las coordenadas de su centro y la longitud de su radio. La combi nifica que hay 16 símbolos (dígitos hexadecimales): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E
nación de estas fórmulas se almacena en una computadora. Cuando la imagen se va a desple y F. La importancia de la notación hexadecimal se hace evidente cuando se convierte un pa
gar o imprimir, el tamaño de la imagen se proporciona al sistema como una entrada. El trón de bits a notación hexadecimal.
sistema rediseña la imagen con el nuevo tamaño y usa la misma fórmula para dibujar la ima Cada dígito hexadecimal puede representar cuatro bits y cuatro bits pueden representarse
gen. En este caso, cada vez que una imagen se dibuja, la fórmula se vuelve a evaluar. mediante un dígito hexadecimal. La tabla 2.2 muestra la relación entre un patrón de bits y un
dígito hexadecimal.
AUDIO El audio es una representación de sonido o música. Aunque no hay un estándar para almace
nar el sonido o la música, la idea es convertir el audio a datos digitales y usar patrones de
bits. El audio por naturaleza es información análoga. Es continuo (análogo), no discreto (di Un patrón de 4 bits puede representarse mediante un dígito hexadecimal, y vice
gital). La figura 2.9 muestra los pasos a seguir para cambiar los datos de audio a patrones de versa.
bits. Estos pasos son los siguientes:
22 R e p re s e n ta c ió n de d a to s 2.5 N o ta c ió n o c ta l 23
Un patrón de tres bits puede representarse por medio de un dígito octal y viceversa.
CONVERSIÓN La conversión de un patrón de bits a notación hexadecimal se realiza por medio de la organi
zación del patrón en grupos de cuatro y luego hallar el valor hexadecimal para cada grupo de
cuatro bits. Para una conversión de hexadecimal a patrón de bits se convierte cada dígito he
xadecimal a su equivalente de cuatro bits (figura 2.10).
Patrón de bits Dígito octal Patrón de bits Dígito octal
000 0 100 4
| 1 1 1 001 1 101 5
010 2 110 6
| T~
011 3 111 7
F ig u r a 2 .1 0 T ra n sfo rm a ció n d e b in a rio a h e xa d ecim al y d e h e xa d e cim a l a T a b la 2 .3 D íg ito s octales
b in a rio
Observe que la notación hexadecimal se escribe en dos formatos. En el primer formato, CONVERSIÓN La conversión de un patrón de bits a notación octal se realiza mediante la organización del
usted añade una x minúscula (o mayúscula) antes de los dígitos para mostrar que la represen patrón en grupos de tres y la determinación del valor octal de cada grupo de tres bits. Para la
tación está en hexadecimal. Por ejemplo, xA34 representa un valor hexadecimal en esta con conversión de octal a patrón de bits, se convierte cada dígito octal a su equivalente de tres bits
vención. En otro formato, usted indica la base del número (16) como el subíndice después de (figura 2.11).
cada notación. Por ejemplo, A3416 muestra el mismo valor en la segunda convención. En es
te libro se usan ambas convenciones.
EJE M PL O 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 0 0
Determine el hexadecimal equivalente del patrón de bits 110011100010.
1 6 r 3 .
7 L -\; £■t VA
SOLUCIÓN
Cada grupo de cuatro bits se traduce a un dígito hexadecimal. El equivalente es xCE2. ■ F ig u r a 2.1 1 T ra n sfo rm a ció n d e b in a rio a o c ta l y d e o c ta l a b in a rio
E JE M PL O 2
Determine el hexadecimal equivalente del patrón de bits 0011100010. Observe que la notación octal también se escribe en dos formatos. En el primer formato,
usted añade 0 (cero) antes de los dígitos para mostrar que la representación está en notación
SOLUCIÓN octal (a veces se utiliza una o minúscula). Por ejemplo, 0634 representa un valor octal en esta
El patrón de bits se divide en grupos de cuatro bits (a partir de la derecha). En este caso, convención. En el otro formato, usted indica la base del número (8) como el subíndice des
se añaden dos 0 más a la izquierda para hacer el número total de bits divisible entre cua pués de la notación. Por ejemplo, 634g muestra el mismo valor en la segunda convención. En
tro. Así que usted tiene 000011100010, lo cual se traduce a x0E2. ■ este libro se usan ambas convenciones.
E JE M PL O 3 EJEM PLO 4
¿Cuál es el patrón de bits para x24C?
Muestre el equivalente octal del patrón de bits 101110010.
SOLUCIÓN
SOLUCIÓN
Cada dígito hexadecimal se escribe como su patrón de bits equivalente y se obtiene
001001001100. a Cada grupo de tres bits se traduce a un dígito octal. El equivalente es 0562, o562 o 5628. ■
R e p re s e n ta c ió n d e d a to s 2 .8 P rá c tic a 25
E JEM PLO 5
Muestre el equivalente octal del patrón de bits 1100010.
2.8 PRÁCTICA
SOLUCIÓN PREG U N TAS DE REPASO 15. ¿Cuántos símbolos pueden representarse mediante un
1. Nombre cinco tipos de datos que puede procesar una patrón de bits con 10 bits?
El patrón de bits se divide en grupos de tres bits (a partir de la derecha). En este caso, se
computadora. a. 128
añaden dos 0 más a la izquierda para hacer el número total de bits divisible entre 3. Así
b. 256
que usted tiene 001100010, lo cual se traduce a 0142, ol42 o 142g. ■ 2. ¿Cómo maneja una computadora todos los tipos de da
c. 512
tos que debe procesar?
d. 1024
E JEM PLO 6
3. ¿Qué es un patrón de bits? 16. En ASCE extendido cada símbolo e s __________bits.
¿Cuál es el patrón de bits para 248?
4. ¿Cuál es la diferencia entre ASCn y ASCE extendido? a. 7
SOLUCIÓN b. 8
5. ¿Qué es EBCDIC?
c. 9
Cada dígito octal se escribe como su patrón de bits equivalente para obtener 010100. ■ 6. ¿Cómo se relaciona la longitud de un patrón de bits con d. 10
el número de símbolos que puede representar?
17. Si el código ASCE para E es 1000101, entonces el códi
7. ¿Cómo representa el método de gráficos de mapa de bits go ASCE para e e s ___________ .
2.6 TÉRMINOS CLAVE una imagen como un patrón de bits? a. 1000110
b. 1000111
8. ¿Cuál es la ventaja del método de gráficos de vector so
cuantificación notación hexadecimal c. 0000110
análogo bre el método de gráficos de mapa de bits?
digital notación octal d. 1100101
ASCII extendido
9. ¿Qué pasos deben seguirse para convertir datos de audio
bit dígito binario Organización Internacional para la Es 18. En código ASCE extendido, u n _________ del patrón de
en patrones de bits?
byte elemento de imagen tandarización (ISO) bits para el código ASCE regular.
código gráfico de mapa de bits patrón de bits 10. ¿Cuál es la relación entre los datos de imagen y los da a. bit 0 se añade a la izquierda
Código extendido de intercambio gráfico de vectores pixel tos de video? b. bit 0 se añade a la derecha
decimal codificado en binario imagen sistema binario c. bit 1 se añade a la izquierda
(EBCDIC) Instituto Nacional Norteamericano de texto d. bit 1 se añade a la derecha
Código norteamericano de estándares Estándares (ANSI) Unicode PREGUNTAS DE OPCIÓN MÚLTIPLE 19. ___________ es un código usado en los mainframes de
para intercambio de información interruptor video 11. De lo siguiente, ¿qué puede clasificarse como datos? IBM.
(ASCE) muestreo a. números a. ASCE
b. video b. ASCE extendido
c. audio c. EBCDIC
d. todos los anteriores d. Unicode
2.7 RESUMEN 12. Para almacenar un byte, usted necesita__________inte- 20. __________es un código de 16 bits que puede represen
rruptores electrónicos. tar símbolos en idiomas distintos al inglés.
S Los números, el texto, las imágenes, el audio y el video, ■ ASCn es un código popular para los símbolos. a. ASCE
a. 1
todos son formas de datos. Las computadoras necesitan b. 2 b. ASCE extendido
■ EBCDIC es un código utilizado en los mainframes de
procesar todo tipo de datos. c. 4 c. EBCDIC
IBM.
■ Todos los tipos de datos se transforman en una represen d. 8 d. Unicode
■ Unicode es un código de 16 bits y la ISO ha desarrolla
tación uniforme llamada patrón de bits para su procesa __________es un código usado por el lenguaje Java pa
do un código de 32 bits. Ambos códigos permiten un 13. Un byte consiste d e _________bits.
miento por la computadora. ra representar caracteres.
mayor número de símbolos. a. 2
■ Un bit es la unidad más pequeña de datos que puede al a. ASCE
■ Las imágenes utilizan el método de gráficos de mapa de b. 4
macenarse en una computadora. b. ASCE extendido
bits o gráficos de vectores para representación de datos. c. 8
c. EBCDIC
■ Un interruptor, con sus dos estados de encendido y apa d. 16
La imagen se divide en pixeles a los que luego pueden d. Unicode
gado, puede representar un bit. asignarse patrones de bits.
14. En un conjunto de 64 símbolos, cada símbolo requiere 22. Un código de 32 bits se desarrolló por________ para re
■ Un patrón de bits es una secuencia de bits que pueden ■ Los datos de audio se transforman a patrones de bits a una longitud de patrón de bits d e _________bits. presentar símbolos en todos los idiomas.
representar un símbolo. través del muestreo, la cuantificación y la codificación. a. 4 a. ANSI
■ Un byte son ocho bits. b. 5 b. ISO
■ Los datos de video son una serie de imágenes en se
c. 6 c. EBCDIC
■ La codificación es el proceso de transformar datos en un cuencia.
d. 7 d. Hamming
patrón de bits.
26 R e p re s e n ta c ió n d e d a to s
23. Una imagen puede representarse en una computadora 31. Vuelva a hacer el ejercicio 30 para un placa que tiene
usando el método d e _________ . dos dígitos seguidos por tres letras mayúsculas (A a Z).
a. gráficos de mapa de bits 32. Una máquina tiene ocho ciclos diferentes. ¿Cuántos bits
b. gráficos de vectores se necesitan para representar cada ciclo?
c. gráficos de matrices 33. La calificación de un estudiante en un curso puede ser A,
Representación
d. a o b B, C, D, F, R (retirado) o I (incompleto). ¿Cuántos bits
24. El método de gráficos de mapa de bits y el método de se requieren para representar la calificación?
gráficos de vectores se usan para representar________ 34. Una compañía ha decidido asignar un patrón de bits úni
en una computadora. co a cada empleado. Si la compañía tiene 900 emplea
a. audio
Ib. video
c. imágenes
d. números
dos, ¿cuál es el número mínimo de bits necesarios para
crear este sistema de representación? ¿Cuántos patrones
no son asignados? Si la compañía contrata otros 300 em
pleados, ¿debe aumentar el número de bits? Explique su
de números
respuesta.
25. En el método de gráficos__________ para la representa
ción de una imagen en una computadora, a cada pixel se 35. Si utiliza un patrón de cuatro bits para representar los dí
asigna uno o más patrones de bits. gitos 0 a 9, ¿cuántos patrones de bits se usan?
a. de mapa de bits 36. Una imagen en escala de grises se digitaliza usando cua
b. de vectores tro niveles de gris distintos. Si la imagen se compone de
c. cuantificado 100 x 100 pixeles, ¿cuántos bits se necesitan para repre
d. binario sentar la imagen?
37. Una señal de audio se muestrea 8000 veces por segun
26. En el método de gráficos__________ para la representa
do. Cada muestra se representa mediante 256 niveles E n el capítulo 2 mostramos cómo el texto, el audio, las imágenes y el video pueden repre
ción de una imagen en una computadora, la imagen se
distintos. ¿Cuántos bits por segundo se necesitan para sentarse en una computadora mediante patrones de bits. Pospusimos el análisis de la represen
descompone en una combinación de curvas y líneas.
representar esta señal? tación de los números porque ésta es muy diferente de la representación de los datos no
a. de mapa de bits
38. Cambie los siguientes patrones de bits a notación hexa numéricos. Algunas de las razones de esta diferencia son las siguientes:
b. de vectores
c. cuantificado decimal: B Un código de caracteres como el ASCII no es eficiente para representar números. ASCII
d. binario
a. 100011110000 puede representar 128 símbolos, pero el sistema decimal necesita sólo 10. (Observe que
b. 1000001101 si se consideran otros símbolos como + , — y el punto decimal, se necesitan aún más
27. En el método de gráficos___________ para la represen c. 10001 símbolos, pero todavía menos que 128.) Por ejemplo, si usted quiere almacenar el núme
tación de una imagen en una computadora, al cambiar el d. 11111111 ro 65 535 usando ASCII, necesita cinco bytes (un byte para cada dígito). Pero si el nú
tamaño de la imagen se crea una imagen difusa y granu 39. Cambie los siguientes a patrones de bits: mero se representa como un entero sin signo (usted verá esta representación
lada. a. xl20 posteriormente en este capítulo), sólo necesita dos bytes.
a. de mapa de bits b. x2A34
b. de vectores B Las operaciones con los números (por ejemplo, la suma y la resta) son muy complicadas
c. xOO
c. cuantificado si los dígitos de un número se representan en un código de caracteres.
d. xFF
d. binario 40. Cambie los siguientes patrones de bits a notación octal: B La representación de la precisión de un número (por ejemplo, el número de lugares
después del punto decimal) requiere muchos bytes. Por ejemplo, para almacenar
28. Cuando usted quiere descargar música a una computa a. 100011110000
23454.00001 se requieren 11 bytes, pero si el mismo número se representa en un pun
dora, la señal de audio debe s e r_________ . b. 1000001101
to flotante (esta representación se verá más adelante en este capítulo), necesita sólo
a. muestreada c. 10001
d. 11111111 unos cuantos bytes.
b. cuantificada
c. codificada 41. Cambie los siguientes a patrones de bits:
d. todos los anteriores a. o l2
b. o27
c. o45
EjERCBCSOS d. o20
29. Dados cinco bits, ¿cuántos patrones de cinco bits distin 42. ¿Cuántos dígitos hexadecimales se necesitan para con
tos puede tener? vertir un patrón de 19 bits?
30. En cierto país las placas de la licencia vehicular tienen 43. ¿Cuántos dígitos octales se requieren para convertir un
dos dígitos decimales (0 a 9). ¿Cuántas placas distintas patrón de 19 bits?
puede tener? Si el dígito 0 no está permitido en las pla 44. ¿Cuántos dígitos hexadecimales se necesitan para con
cas, ¿cuántas placas distintas puede tener? vertir un patrón de 6 bytes?
28 R e p re s e n ta c ió n de n ú m e ro s 3 .2 C o n v e rs ió n | | | j| | | |
SISTEMA DECIM AL Hoy día, el mundo utiliza el sistema decimal para los números desarrollado por matemáticos CONVERSION Comenzaremos por convertir un número del sistema binario al sistema decimal. Tome el
árabes en el siglo v i i í . Los primeros en usar un sistema numérico decimal fueron los antiguos número binario y multiplique cada dígito binario por el valor de su posición. Como cada
D E B IN A R IO
egipcios. Los babilonios mejoraron el sistema egipcio al dar un significado a las posiciones bit binario puede ser sólo 0 o 1, el resultado será ya sea 0 o el valor posicional. Después
A DECIMAL
del sistema numérico. Todos comprendemos fácilmente el sistema numérico decimal. de multiplicar todos los dígitos sume los resultados. La conversión de binario a decimal
De hecho lo hemos usado tanto que es básicamente intuitivo. Pero, ¿realmente entende se muestra en la figura 3.3.
mos por qué la segunda posición en el sistema decimal representa las decenas y la tercera, las
centenas? La respuesta yace en las potencias de la base del sistema, que es 10 en el sistema
decimal. De esta manera la primera posición es 10 elevado a la potencia 0, la segunda posi
0 1 0 1 1 0 1 número binario
ción es 10 elevado a la potencia 1 y la tercera posición es 10 elevado a la potencia 2. La figu
ra 3.1 muestra la relación entre las potencias y el número 243. 64 32 16 8 4 2 1 valores posicionales
EJEMPLO 1
2 *100 + 4 *10 + 3*1
Convierta el número binario 10011 a decimal.
Decimal 19 H
27 26 25 24 23 22 2‘ 2°
128 64 32 16 8 4 2 1
CONVERSIÓN Para convertir del sistema decimal al binario utilice la división repetitiva. El número original,
11110011
DECIM AL 45 en el ejemplo, se divide por 2. El residuo (1) se vuelve el primer dígito binario y el segun-
A BINARIO do dígito se obtiene dividiendo el cociente (22) por 2 para determinar la siguiente posición.
1*128 + 1*64 + 1*32 + 1*16 + 0*8 + 0*4 + 1*2 + 1*1 Este proceso continúa hasta que el cociente es 0. La conversión de decimal a binario se
muestra en la figura 3.4.
EJEMPLO 2
Representación
de enteros
SOLUCION
En la actualidad la representación de uso más común es el complemento a dos. Sin em
Se escribe el número en la esquina derecha. Se divide el número repetidamente por 2 y bargo, primero estudiamos las otras representaciones debido a que son más simples y sirven
se anota el cociente y el residuo. Los cocientes se mueven a la izquierda y el residuo se como una buena base para el complemento a dos.
anota bajo cada operación. Este proceso se suspende cuando el cociente es 0.
FORM ATO Un entero sin signo es un entero que no tiene intervalo, su rango está entre 0 y el infinito
0 <— <r- <- 17 35 (Decimal) positivo. No obstante, como no hay manera de que una computadora represente a todos los
DE E N T E R O S
i i enteros en este intervalo, la mayoría de las computadoras define una constante llamada el
SIN SIG N O
entero máximo sin signo. Un entero sin signo varía entre 0 y esta constante. El entero máxi
Binario 1 1
mo sin signo depende del número de bits que la computadora asigna para almacenar un en
tero sin signo. A continuación se define el intervalo de los enteros sin signo en una
computadora, donde N es el número de bits asignado para representar un entero sin signo:
Ahora que sabe cómo convertir del sistema decimal al sistema binario, veamos cómo alma
cenar enteros dentro de una computadora. Los enteros son números íntegros (es decir, nú
meros sin una fracción). Por ejemplo, 134 es un entero, pero 134.23 no lo es. Como otro
La tabla 3.1 muestra dos intervalos comunes para las computadoras de hoy.
ejemplo, -1 3 4 es un entero, pero —134.567 no lo es.
Un entero puede ser positivo o negativo. Un entero negativo varía del infinito negativo
a 0; un entero positivo varía de 0 al infinito positivo (figura 3.5). Sin embargo, ninguna Número de bits Intervalo
computadora puede almacenar todos los enteros en este intervalo. Para hacerlo, requeriría un 8 0 . . . 255
número infinito de bits, lo cual significa una computadora con una capacidad de almacena
16 0 . . . 65535
miento infinita.
T a b la 3.1 In te rva lo d e en te ro s sin sig n o
Representación El almacenamiento de los enteros sin signo es un proceso sencillo según se esboza en los pa
sos siguientes:
SOLUCIÓN positivos que comienzan a partir de 0 (el primer byte de memoria) y continúan hasta un
Primero se cambia el número a binario: 111. Se añaden cinco 0 para hacer un total de N número que representa la capacidad de memoria total en bytes. De nuevo, usted no ne
(8) bits: 00000111. El número se almacena en la memoria. ■ cesita números negativos. Los enteros sin signo pueden hacer el trabajo fácilmente.
E JE M PL O 4 FORMATO El almacenamiento de un entero en el formato de signo y magnitud reqiúere 1 bit para repre
Almacene 258 en una localidad de la memoria de 16 bits. ■ DE SIGNO sentar el signo (0 para positivo, 1 para negativo). Esto significa que en una asignación de ocho
bits, usted sólo puede usar siete bits para representar el valor absoluto del número (número
Y M A G N IT U D
SOLUCIÓN sin el signo). Por consiguiente, el máximo valor positivo es la mitad del valor sin signo. Lo
Primero se cambia el número a binario: 100000010. Se añaden siete 0 para hacer un total siguiente define el intervalo de enteros de signo y magnitud en una computadora, donde N es
de N (16) bits: 0000000100000010. El número se almacena en la localidad de la memoria. el número de bits asignados para representar a un entero de signo y magnitud:
La tabla 3.2 muestra cómo se almacenan los enteros no asignados en dos computadoras
diferentes: una usa localidades de ocho bits y la otra usa localidades de 16 bits. Observe que Intervalo: - ( 2 íV_I - i ) . . . ) + (2V '' - i ) .
los números decimales 258 y 24760 no pueden almacenarse en una computadora que usa
localidades de ocho bits para un entero sin signo. El número decimal 1 245 678 no puede al
macenarse en ninguna de estas dos computadoras; a esta condición se le llama desbordamien La tabla 3.3 muestra los intervalos comunes para las computadoras actuales. Observe que
to (se estudia en el capítulo 4). en este sistema hay dos 0: + 0 y —0.
Decimal Localidad de 8 bits Localidad de 16 bits E n la representación de signo y m agnitud hay dos 0: positivo y negativo. E n una
7 00000111 0000000000000111 asignación de ocho bits:
234 11101010 0000000011101010
258 Desbordamiento 0000000100000010 +0 —> 00000000
24 760 Desbordamiento 0110000010111000 -0 —> 10000000
1 245 678 Desbordamiento Desbordamiento
T a b la 3 .2 A lm a c e n a m ie n to d e en te ro s sin sig n o en d os c o m p u ta d o ra s
d ife re n te s Numero debits Rango
8 -1 2 7 .. . -o +0 . 4-127
I n te rp re ta c ió n ¿Cómo se interpreta una representación binaria sin signo en decimal? El proceso es simple.
16 - 3 2 767 .. . -0 +0 . +32 767
Cambie los N bits del sistema binario al sistema decimal como se mostró al principio del ca
pítulo. 32 -2 1 4 7 483 647 . . -o +0 . +2147 483 647
Tabla 3 .3 In te rva lo d e en te ro s de sig n o y m a g n itu d
E JE M PL O 5
Interprete 00101011 en decimal si el número se almacenó como un entero sin signo.
Representación Almacenar enteros de signo y magnitud es un proceso sencillo:
SOLUCIÓN
1. El número se cambia a binario; el signo se ignora.
Usando el procedimiento mostrado en la figura 3.3, el número decimal es 43.
2. Si el número de bits es menor que N — 1, los 0 se añadena la izquierda del número de
manera que haya un total de N — 1 bits.
D e sb o rd a m ien to Si usted intenta almacenar un entero sin signo como 256 en una localidad de memoria de
ocho bits, obtiene una condición llamada desbordamiento (overflow). 3. Si el número es positivo, un 0 se añade a la izquierda (para volverlo de N bits). Si el
número es negativo, se añade un 1 a la izquierda (para hacerlo de N bits).
A p lica cio n e s La representación de enteros sin signo puede mejorar la eficiencia del almacenamiento debi
do a que usted no necesita almacenar el signo de un entero. Esto significa que la localidad de
bits del entero puede utilizarse para almacenar el número. La representación de enteros sin E n la representación de signo y magnitud, el bit en el extremo izquierdo define el
signo puede usarse siempre que no se necesiten los enteros negativos. En seguida se listan al signo del número. Si éste es 0, el número es positivo. Si es 1, el número es negativo.
gunos casos:
9 Conteo. Cuando se cuenta, no se necesitan los números negativos. Usted comienza con
tando a partir de 1 (a veces de 0) y continúa. EJEM PLO 6
I Direccionamiento. Algunos lenguajes de computación almacenan la dirección de una lo Almacene + 7 en una localidad de memoria de ocho bits usando una representación de sig
calidad de memoria dentro de otra localidad de memoria. Las direcciones son números no y magnitud.
R e p re s e n ta c ió n d e n ú m e ro s 3.3 R e p re s e n ta c ió n d e e n te ro s 35
SOLUCIÓN EL FORM ATO DE Tal vez haya notado que la representación de un número en el sistema binario es una cuestión
Primero se cambia el número a binario: 111. Se añaden cuatro 0 para hacer un total de CO M PLEM ENTO de convención. En la representación de signo y magnitud adoptamos la convención de que el
AT — 1 (7) bits: 0000111. Luego se añade un cero más, que aquí se muestra en negritas, ya DE UNO bit que está en el extremo izquierdo representa el signo; este bit no es parte del valor.
que el número es positivo. El resultado es 0000111. B Los diseñadores de la representación del complemento a uno adoptaron una convención
diferente: para representar un número positivo, usan la convención adoptada para un entero
sin signo. Y para representar un número negativo, complementan el número positivo. En otras
E JEM PLO 7
palabras, + 7 se representa justo como un número sin signo, mientras que —7 se representa
Almacene —258 en una localidad de memoria de 16 bits usando una representación de sig
como el complemento de +7. En el complemento a uno, el complemento de un número se
no y magnitud.
obtiene al cambiar todos los 0 a 1 y todos los 1 a 0.
SOLUCIÓN A continuación se define el intervalo de los enteros complemento a uno en una computa
dora, donde N es el número de bits asignados para representar un entero complemento a uno:
Primero se cambia el número a binario: 100000010. Se añaden seis 0 para hacer un total
de N — 1 (15) bits: 000000100000010. Se añade un 1 más, que aquí se muestra en negri
tas, puesto que el número es negativo. El resultado es 1000000100000010. B
intervalo: -(2 * -1 - 1 ) '.U;: ’ + (2 W“ 1 - 1 )
La tabla 3.4 muestra cómo se almacenan los números de signo y magnitud en dos compu
tadoras diferentes; una que usa localidad de ocho bits y una que usa localidad de 16 bits.
rotación ¿Cómo se interpreta una representación binaria de signo y magnitud en decimal? El proceso
es simple: Número de bits Intervalo
1. Ignore el primer bit (el que está en el extremo izquierdo). 8 -127 .. . -0 +0 . + 127
2. Cambie los IV — 1 bits de binario a decimal como se explicó ai principio del capítulo. 16 -32767 .. . -o +0 . +32 767
3. Agregue un signo + o — al número con base en el bit que está en el extremo izquierdo. 32 - 2 147 483 647 .. . -0 +0 +2147 483 647
Tabla 3 .5 R an go d e los e n te ro s c o m p le m e n to d e un o
EJEM PLO 8
Interprete 10111011 en decimal si el número se almacenó como un entero de signo y mag
Representación Para almacenar los enteros complemento de uno se siguen estos pasos:
nitud.
1. Cambie el número a binario; el signo es ignorado.
SOLUCIÓN
2. Añada uno o varios 0 a la izquierda del número para hacer un total de A bits.
Al ignorar el bit que está en el extremo izquierdo, los bits restantes son 0111011. Este nú
mero en decimal es 59. El bit en el extremo izquierdo es 1, así que el número es —59. B 3. Si el signo es positivo, no se necesita ninguna otra acción. Si el signo es negativo, com
plemente cada bit (cambie 0 por 1 y 1 por 0).
dones Actualmente, la representación de signo y magnitud no se usa para que las computadoras
actuales almacenen números con signo. Hay cuando menos dos razones para ello. Primero, las E n la representación del complemento de uno, el bit que está en el extremo izquier
operaciones como la suma y la resta no son sencillas para esta representación. Segundo, hay dos do define el signo del número. Si éste es 0, el núm ero es positivo. Si es 1, el núm e
0 en esta representación que vuelven las cosas difíciles para los programadores. Sin embargo, ro es negativo.
la representación de signo y magnitud tiene una ventaja: la transformación de decimal a bina
rio y viceversa es muy fácil. Esto hace que esta representación sea conveniente para aplicacio
nes que no necesitan operaciones con números. Un ejemplo es el cambio de señales analógicas EJEM PLO 9
a señales digitales. Usted muestrea la señal analógica, asigna un número positivo o negativo a Almacene + 7 en una localidad de memoria de ocho bits usando la representación de com
la muestra y lo cambia a binario para enviarlo por canales de comunicación de datos. plemento a uno.
R e p re s e n ta c ió n d e n ú m e ro s 3.3 R e p re s e n ta c ió n d e e n te ro s
S O L U C IÓ N Desbordam iento Si se intenta almacenar un entero complemento a uno como +256 en una localidad de memo
Primero se cambia el número a binario: 111. Se añaden cinco 0 de modo que haya un total ria de ocho bits, se obtiene una condición llamada desbordamiento.
de N ( 8) bits: 00000111. El signo es positivo así que no se requiere realizar otra acción. fl
Aplicaciones Actualmente la representación del complemento a uno no se usa para almacenar números en
E J E M P L O 10 computadoras. Hay al menos dos razones para ello. Primero, las operaciones como la suma y
la resta no son sencillas para esta representación. Segundo, hay dos 0 en esta representación,
Almacene —256 en una localidad de memoria de 16 bits usando la representación del
lo cual vuelve las cosas difíciles para los programadores. Sin embrago, esta representación
complemento de uno.
tiene cierta relevancia. Primero, es la base para la siguiente representación (el complemento
SOLUCIÓN a dos). Segundo, tiene propiedades que la vuelven interesante para aplicaciones de comuni
Primero se cambia el número a binario: 100000010. Se añaden siete 0 con el fin de que cación de datos tales como la detección y corrección de errores.
haya un total de N(16) bits: 0000000100000010. El signo es negativo, de manera que ca
Como se mencionó previamente, la representación del complemento a uno tiene dos 0 (+ 0 y
da bit complementa. El resultado es 1111111011111101. B FORfViAT© DEL
—0). Esto puede crear un poco de confusión en los cálculos. Además, en el siguiente capítu
C0¡VSPLE¡VIEN¥©
La tabla 3.6 muestra cómo se almacenan los números complemento a uno en dos computa lo se verá que si se suma un número y su complemento (+ 4 y —4) en esta representación, se
ADOS
doras distintas: una que usa localidades de ocho bits y otra que usa localidades de 16 bits. obtiene - 0 negativo en lugar de + 0 positivo. La representación del complemento a dos re
suelve todos estos problemas.
Decimal Localidades de 8 bits Localidades de 16 bits
+7 00000111 0000000000000111
El complemento a dos es la representación de enteros más común, más impor
-7 11111100 1111111111111000
tante y de más amplio uso en la actualidad.
+ 124 01111100 00000000011Í1100
-1 2 4 10000011 1111111110000011
+24 760 Desbordamiento 0110000010111000 A continuación se define el intervalo de los enteros complemento a dos en una computa
-2 4 760 Desbordamiento 1001111I0I00011I dora, donde N es un número de bits asignados a un entero complemento a dos:
T a b la 3 .6 A lm a c e n a m ie n to d e en te ro s co m p le m e n to a u n o en dos c o m p u
ta d o ra s d istin tas .. Intervalo: - ( 2 a" ’)' - - . \ +(2N^ - 1 )
Interpretación ¿Cómo se interpreta una representación binaria del complemento a uno en decimal? El pro
ceso implica estos pasos:
La tabla 3.7 muestra los intervalos comunes actuales para las computadoras. Observe que
1. Si el bit que está en el extremo izquierdo es 0 (número positivo), en este sistema hay sólo un 0 y que el principio del intervalo es 1 menos que aquel para el
a. se cambia el número entero de binario a decimal. complemento a uno.
b. se pone un signo más (+ ) enfrente del número.
2. Si el bit que está en el extremo izquierdo es 1 (bit negativo), Número de bits Intervalo
a. se complementa el número entero (cambiando todos los 0 a 1, y viceversa). -1 2 8 .. . -0 +0 .. + 127
8
b. se cambia el número entero de binario a decimal.
16 - 3 2 768 . . -0 +0 .. +32 767
c. se pone un signo negativo (—) enfrente del número.
32 -2 1 4 7 483 648 . . -0 +0 . +2147 483 647
EJEMPLO 11 Tabla 3 .7 In tervalo d e n ú m e ro s co m p le m e n to a d os
Interprete 11110110 en decimal si el número se almacenó como un entero complemento
a uno. Para almacenar el complemento a dos se deben seguir estos pasos:
Representación
SOLUCIÓN 1. El número se cambia a binario; el signo se ignora.
El bit en el extremo izquierdo es 1, de modo que el número es negativo. Primero se com 2. Si el número de bits es menor que N se añaden 0 a la izquierda del número de manera
plementa. El resultado es 00001001. El complemento en decimal es 9, de manera que el que haya un total de N bits.
número original era —9. Observe que el complemento de un complemento es el número
3. Si el signo es positivo, no se necesita una acción posterior. Si el signo es negativo, to
original. B
dos los 0 en el extremo derecho y el primer 1 permanecen sin cambios. El resto de los
bits se complementa.
La operación complemento a uno significa invertir todos los bits. Si se aplica la
operación complemento a uno a un número positivo, se obtiene el número negati
vo correspondiente. Si se aplica la operación complemento a uno a un número ne En la representación del complemento a dos, el bit en el extremo izquierdo define
gativo, se obtiene el número positivo correspondiente. Si un número se el signo del número. Si éste es 0, el número es positivo. Si es 1, el número es ne
complementa dos veces, se obtiene el número original. gativo.
38 R e p re s e n ta c ió n d e n ú m e ro s 3.3 R e p re s e n ta c ió n d e e n te ro s 39
EJEMPLO 12 EJEMPLO 14
Almacene + 7 en una localidad de memoria de ocho bits usando la representación del Interprete 11110110 en decimal si el número se almacenó como un entero complemento
complemento a dos. a dos.
SOLUCIÓN SOLUCIÓN
Primero se cambia el número a binario: 111. Se añaden cinco 0 con el fin de que haya un El bit en el extremo izquierdo es 1. El número es negativo. El 10 a la derecha se deja tal
total de N ( 8) bits: 00000111. El signo es positivo, así que no se requiere realizar ninguna como está y el resto se complementa. El resultado es 00001010. El número complemento
otra acción. I a dos es 10, así que el número original era —10.
EJEMPLO 13
Almacene —40 en una localidad de memoria de 16 bits usando la representación del com
plemento a dos. La operación complemento a dos puede lograrse al invertir todos los bits, excepto
los bits que están en el extremo derecho hasta el primer 1 (inclusive). Si se aplica la
SOLUCIÓN operación complemento a dos a un número positivo, se obtiene el número negativo
Primero se cambia el número a binario: 101000. Se añaden diez 0 de modo que haya un correspondiente. Si se aplica la operación complemento a dos a un número negati
total de N(16) bits: 0000000000101000. El signo es negativo, así que los 0 en el extremo vo, se obtiene el número positivo correspondiente. Si un número se complementa
derecho permanecen sin cambio hasta el primer 1 (inclusive) y el resto se complementa. dos veces, se obtiene el número original.
El resultado es 1111111111011000. El
La tabla 3.8 muestra cómo se almacenan los números complemento a dos en dos computado
A plicaciones La representación del complemento a dos es la representación estándar actual para almacenar
ras distintas, una que usa localidad de ocho bits y otra que usa localidad de 16 bits. enteros en las computadoras. En el capítulo siguiente, usted verá por qué ocurre esto cuando
se considera la simpücidad de las operaciones que usan el complemento a dos.
x! Decimal Localidad de 8 bits Localidad de 16 bits
+7 00000111 0000000000000111 RESUMEN DE LA Para darse una idea general de los métodos de representación de números, examine la tabla
3.9. En esta tabla, suponga que N es 4. La localidad de memoria puede almacenar sólo cua
-7 11111001 1111111111111001 REPRESENTACIÓN
tro bits. Si usted mira el contenido de la localidad de memoria, puede interpretar el número
+ 124 01111100 0000000001111100 DE ENTEROS
en una de las cuatro representaciones. Aim cuando la interpretación es la misma para los en
-1 2 4 10000100 1111111110000100 teros positivos, es diferente para los enteros negativos.
+24760 Desbordamiento 0110000010111000
-2 4 7 6 0 Desbordamiento 1001111101001000
Contenido Signo Complemento Complemento
Tabla 3 .8 E je m p lo d e re p re se n ta cio n e s d e c o m p le m e n to s a dos en dos
de la memoria Sin signo y magnitud a uno a dos
c o m p u ta d o ra s
0000 0 +0 +0 +0
0001 1 +1 +1 +1
Sólo hay un 0 en el complemento a dos: En una asignación de ocho bits: 0010 2 +2 +2 +2
0011 3 +3 +3 +3
0 —> 00000000 0100 4 +4 +4 +4
0101 5 +5 +5 +5
0110 6 +6 +6 +6
0111 7 +7 +7 +7
Interpretación ¿Cómo se interpreta una representación binaria del complemento a dos en decimal? El pro
1000 8 -0 -7 -8
ceso involucra los pasos siguientes:
1001 9 -1 -6 -7
1. Si el bit en el extremo izquierdo es 0 (número positivo), -5 -6
1010 10 -2
a. se cambia todo el número de binario a decimal. 1011 11 -3 -4 -5
b. se pone un signo más (+ ) enfrente del número. 1100 12 -4 -3 -4
2. Si el bit en el extremo izquierdo es 1 (número negativo), 1101 13 -5 -2 -3
a. se dejan los bits en el extremo derecho hasta el primer 1 (inclusive) como están. 1110 14 -6 -1 -2
b. se cambia todo el número de binario a decimal. 1111 15 -7 -o -1
c. se pone un signo negativo ( —) enfrente del número. Tabla 3.9 Resum en d e la re p re se n ta ció n d e en te ro s
40 R e p re s e n ta c ió n de n ú m e ro s 3.5 R e p re s e n ta c ió n d e p u n to flo ta n te 41
Otra representación que permite almacenar tanto números positivos como negativos en una Para convertir una fracción a binario, use la multiplicación repetitiva. Por ejemplo, para con
computadora es el sistema Excess. En este sistema, es fácil transformar un número de deci
Conversión de la
parte fra ccio n a ria vertir 0.125 a binario, multiplique la fracción por 2; el resultado es 0.250. La parte entera del
mal a binario, y viceversa. Sin embargo, las operaciones con los números son muy complica resultado (0) se extrae y se vuelve el dígito binario en el extremo izquierdo. Ahora multipli
das. Su única aplicación en uso actualmente es en el almacenamiento del valor exponencial que por 2 la parte fraccionaria (0.250) del resultado para obtener 0.50. De nuevo, se extrae la
de una fracción. Esto se estudia en la sección siguiente. parte entera del resultado y se vuelve el siguiente dígito binario. Este proceso continúa hasta
En una conversión Excess, un número positivo conocido como el número mágico se utili que la parte fraccionaria se vuelve 0 o cuando se llega al límite del número de bits que se pue
za en el proceso de conversión. El número mágico normalmente es (2'v_1) o (2'v_l —1) don
den usar (figura 3.7).
de N es la asignación de bits. Por ejemplo, si N es 8, el número mágico es ya sea 128 o 127.
En el primer caso, llamamos a la representación Excess_128 y en el segundo, Excess_127.
EJE M PL O 15
Represente —125 en Excess_127 usando localidades de ocho bits.
SOLUCIÓN
Primero se suma 127 a —25 y se obtiene 102. Este número en binario es 1100110. Añada Figura 3 .7 C a m b io d e fra ccio n e s a b in a rio
un bit para obtener una longitud de ocho bits. La representación es 01100110. ■
EJEM PLO 18
3.5 REPRESENTACIÓN DE PUNTO FLOTANTE Transforme la fracción 0.4 a un binario de 6 bits.
Para representar un núm ero de punto flotante (un número que contiene un entero y una SOLUCIÓN
fracción), el número se divide en dos partes: el entero y la fracción. Por ejemplo, el número La fracción se escribe en la esquina izquierda. El número se multiplica continuamente por
de punto flotante 14.234 tiene un entero de 14 y una fracción de 0.234. 2 y se extrae la parte entera como dígito binario. En este caso, usted no puede obtener la
representación binaria exacta debido a que reaparece la fracción original. Sin embargo,
CONVERSION Para convertir un número de punto flotante a binario, utilice el procedimiento siguiente: puede continuar con el proceso hasta obtener seis bits.
A BINARIO
1. Convierta la parte entera a binario. Fracción 0.4 —» 0.8 —» 1.6 —» 1.2 —> 0.4 -> 0.8 —» 1.6
2. Convierta la fracción a binario. \i. vj' 'i'
NORM ALIZACIÓN Para representar el número 71.3125 (+1000111.0101), en la memoria se almacena el signo,
todos los bits y la posición del punto decimal. Aunque esto es posible, dificulta las operacio
nes con números. Se necesita una representación estándar para números de punto flotante. La
solución es la normalización, es decir, el desplazamiento del punto decimal para que haya
sólo un 1 a la izquierda del punto decimal.
1 . XXXXXXXXXXYXXYXYXY
a. Precisión simple
Para indicar el valor original del número, éste se multiplica por 2e, donde e es el número de
bits en que se desplazó el punto decimal: positivo para el desplazamiento izquierdo y negati
vo para el desplazamiento derecho. Un signo positivo o negativo se añade luego dependien
do del signo del número original. La tabla 3.10 muestra ejemplos de la normalización.
SOLUCIÓN
Observe que el 1 a la izquierda del punto decimal no se almacena; esto es comprensible.
El signo es positivo y se representa como 0. El exponente es 6. En la representación Ex-
cess_127, se le suma 127 y se obtiene 133. En binario es 10000101. La mantisa es
Signo El signo de un número puede almacenarse usando 1 bit (0 o 1). 01000111001. Cuando se aumenta la longitud a 23, se obtiene 01000111001000000000000.
Advierta que no se puede ignorar el 0 a la izquierda porque es una fracción, sin considerar
que el 0 es lo mismo que multiplicar el número por 2. Observeque los 0 se añadieron a la
Exponente El exponente (potencia de 2) define el movimiento del punto decimal. Observe que la poten derecha (no a la izquierda) debido a que se trata de una fracción. La adición de 0 a la dere
cia puede ser negativa o positiva. El método que se utiliza para almacenar el exponente es la cha de una fracción no modifica a la fracción, pero añadir 0 a la izquierda significa dividir
representación de Excess. El número de bits asignado N define el intervalo de números que el número entre una potencia de 2. El número en la memoria es un número de 32 bits como
una computadora puede almacenar. se muestra en seguida:
Interprete el siguiente número de punto flotante de 32 bits: 9 Los números sin signo se usan comúnmente para conteo 9 Un número de punto flotante es un número entero y una
y direccionamiento. fracción. La conversión de la fracción a binario requiere
1 01111100 11001100000000000000000 que el denominador de la fracción se exprese como una
9 En el método de signo y magnitud de la representación
potencia de 2. El sistema Excess_X se utiliza para alma
de enteros, un bit representa el signo de número; los bits
SOLUCIÓN cenar esta potencia de 2.
restantes representan la magnitud.
El bit en el extremo izquierdo es el signo ( - ) . Los siguientes ocho bits son 01111100. És 9 En el método de representación de enteros del comple 91 Una fracción se normaliza con la finalidad de que las
te es 124 en decimal. Si se le resta 127, se obtiene el exponente - 3 . Los 23 bits siguien mento a uno, un número negativo se representa por me operaciones sean más simples.
tes son la mantisa. Si se ignoran los 0 adicionales, se obtiene 110011. Después de que se dio de la operación complemento del número positivo 9 Para almacenar una fracción en la memoria, se necesita
añade un 1 a la izquierda del punto decimal, el número normalizado en binario es: correspondiente. su signo, exponente y mantisa.
—2" x 1.110011
3.9 PR Á C T IC A
11. Compare y contraste la representación de los enteros po
3 .6 NO TACIÓ N H E X A D E C IM A L PREG U N TA S DE REPA SO
sitivos en los métodos de signo y magnitud, complemen
1. ¿Cómo se convierte un número decimal a binario?
to a uno y complemento a dos.
Como se estudió en el capítulo 2, los números pueden representarse en notación hexadecimal. 2. ¿Cómo se convierte un número binario a decimal?
12. Compare y contraste la representación de los enteros ne
Por ejemplo, el número 48 puede representarse en un formato sin signo de ocho bits como 3. En un sistema binario, ¿cada posición es una potencia de gativos en los métodos de signo y magnitud, comple
00110000 o como el hexadecimal x30. De manera similar, un número como 81.5625 puede qué número? mento a uno y complemento a dos.
representarse en el estándar IEEE como 01000010101000111001000000000000 o en nota
4. En un sistema decimal, ¿cada posición es una potencia 13. Compare y contraste la representación del 0 en los mé
ción hexadecimal como x42A39000.
de qué número? todos de signo y magnitud, complemento a uno y com
5. ¿Cuáles son los tres métodos para representar enteros plemento a dos.
con signo? 14. Compare y contraste el rango de números que pueden
6. ¿Cuál es el significado del término máximo entero sin representarse en los métodos de signo y magnitud, com
signo ? plemento a uno y complemento a dos.
3 .7 TÉRMINOS CLAVE 7. ¿Cuál es el significado del término asignación de bits! 15. Comente el papel que juega el bit en el extremo izquier
do en los métodos de signo y magnitud, complemento a
conversión de binario a decimal 8. ¿Por qué no se puede almacenar el número decimal 256
formato de precisión simple representación del complemento uno y complemento a dos.
conversión de decimal a binario en una localidad de memoria de ocho bits?
fracción a uno 16. ¿Cuál es el uso principal del sistema Excess_X?
entero mantisa representación del complemento 9. ¿Cuáles son los usos de los enteros sin signo? Mencione
entero negativo dos. 17. ¿Por qué es necesaria la normalización?
normalización a dos
entero positivo número de punto flotante sistema binario 10. ¿Qué sucede cuando se intenta almacenar el decimal 130 18. ¿Qué es la mantisa?
entero sin signo número entero sistema decimal utilizando la representación de signo y magnitud con 19. Después de que se normaliza un número, ¿qué tipo de
formato de precisión doble representación de signo y magnitud sistema Excess una asignación de ocho bits? información almacena una computadora en la memoria?
3 .9 P rá c tic a 47
46 Representación d e n ú m e ro s
36. En la representación de números Excess_X, ¿general 44. La precisión del número fraccionario almacenado en
PREGUNTAS DE OPCIÓN MÚLTIPLE 28. En la representación de números (d e )________ , hay
mente cuál es la relación entre X y Ai, la asignación de una computadora se define por el (la)________ .
20. Los únicos dígitos usados en el sistema numérico______ una representación para 0.
bits? a. signo
son 0 y 1. a. enteros sin signo
b. complemento a uno a. X = 2 n - 1 b. exponente
a. decimal c. mantisa
c. complemento a dos b. X = 2n + 1
b. octal d. ninguno de los anteriores
d. a y c c. X = 2n~! - 1
c. binario
d. a o c 45. ¿Cómo se almacena la mantisa en una computadora?
d. hexadecimal 29. Si el bit en el extremo izquierdo es 0 en la representa
ción de números d e ________ , entonces el número deci 37. Cuando una computadora almacena una fracción, el a. en el complemento a uno
21. Cuando se convierte un número decimal a binario, se di
mal es positivo. ________ por lo general se expresa como una potencia b. en el complemento a dos
vide repetidamente e n ________ .
a. signo y magnitud de 2. c. como un entero sin signo
a. 2
b. complemento a uno a. numerador d. en signo y magnitud
b. 8
c. complemento a dos b. denominador 46. Un dígito octal convertido a binario se compone por
c. 10
d. 16
d. todas las anteriores c. número entero
________ bits.
30. Si el bit en el extremo izquierdo es 1 en la representa d. a o b
a. 2
22. ¿Cuál de los siguientes métodos de representación de en ción de números d e ________ , entonces el número deci 38. Si el denominador de una fracción es 1024, entonces el b. 3
teros maneja tanto números positivos como negativos? mal es positivo. numerador tiene_________de longitud. c. 4
a. signo y magnitud a. signo y magnitud a. 2 d. 8
b. complemento a uno b. complemento a uno b. 8
c. complemento a dos c. complemento a dos c. 10
d. todos los anteriores d. ninguna de las anteriores d. 16 EJERCICIO S
23. En los enteros sin signo, una asignación de cuatro bits 31. ¿Cuál es el método de representación de números de uso 47. Cambie los siguientes números decimales a enteros de
39. Si el numerador de una fracción tiene tres bits de longi
perm ite_________números negativos. más difundido hoy día para almacenar números en una ocho bits sin signo si es posible.
tud, entonces el denominador e s ________ .
a. 7 computadora? a. 23
a. 2
b. 8 a. signo y magnitud b. 121
b. 8
c. 15 b. complemento a uno c. 34
c. 10
d. 16 c. complemento a dos d. 342
d. 16
24. En todas las representaciones de enteros sin signo, una d. enteros sin signo
40. ¿Cuál es la representación de 5 en Excess_128? 48. Cambie los siguientes números decimales a enteros sin
asignación de cuatro bits perm ite________ números no 32. ¿Cuál método de representación de números se usa con
a. 00000101 signo de 16 bits.
negativos. frecuencia para convertir señales analógicas en señales
b. 10000100 a. 41
a. 7 digitales?
c. 10000101 b. 411
b. 8 a. enteros sin signo
d. 10000001 c. 1234
c. 15 b. signo y magnitud
d. 342
d. 16 c. complemento a uno 41. Cuando una fracción se normaliza, hay u n _________a
d. b y c la izquierda del punto decimal. 49. Cambie los siguientes números decimales a enteros de
25. En la representación de números (d e )________ , 1111
33. Los enteros sin signo pueden utilizarse para _______. a. bit 0 signo y magnitud de ocho bits.
en la memoria representa —0.
a. conteo b. bit 1 a. 32
a. enteros sin signo
b. direccionamiento c. secuencia de bits aleatoria b. -101
b. signo y magnitud
c. procesamiento de señales d. a o b c. 56
c. complemento a uno
d. a y b d. 129
d. complemento a dos 42. Un número normalizado se multiplica por ________
34. ¿Cuál método de representación de números se usa con donde e es el número de bits que se desplazó el punto 50. Cambie los siguientes números decimales a enteros de
26. En la representación de números (d e )________ , 1111 frecuencia para almacenar el valor exponencial de una decimal. signo y magnitud de 16 bits.
en la memoria representa —1. fracción? a. 2e a. 142
a. enteros sin signo a. enteros sin signo b. e/2 b. -1 8 0
b. signo y magnitud b. complemento a uno c. e2 c. 560
c. complemento a uno c. complemento a dos d. 2e d. 2456
d. complemento a dos d. Excess_X
43. Cuando una fracción se normaliza, la computadora al 51. Cambie los siguientes números decimales a enteros
27. En la representación de números (de) , hay dos 35. En una conversión Excess_X, usted el núme
macena el (la)________ . complemento a uno de 16 bits.
representaciones para 0. ro mágico X al número que se va a convertir.
a. signo a. 162
a. signo y magnitud a. suma
b. exponente b. -1 1 0
b. complemento a uno b. resta
c. mantisa c. 2560
c. complemento a dos c. multiplica
d. todos ios anteriores d. 12 123
d. a y b d. divide
48 R e p re s e n ta c ió n de n ú m e ro s 3 .9 P rá c tic a 4‘>
52. Cambie los siguientes números decimales a enteros 60. Los números siguientes son números binarios comple 66. Normalice los siguientes números binarios de punto flo Original Nueva Original Nueva
complemento a dos de ocho bits. mento a dos. Muestre cómo cambiar el signo del número. tante. Muestre de manera explícita el valor del expone-
0.5 '/, 0.25 */*
a. -1 2 a. 01110111 nente después de la normalización.
b. 11111100 0.125 % 0.0625
b. -101 a. 1.10001
c. 01110111 0.03125 0.015625 i/'64
c. 56 b. 23 X 111.1111 í¡yi
d. 142 d. 11001110 c. 2“2 X 101.110011
T a b la 3 .1 2 E je rcid o 70
61. En este capítulo mostramos cómo aplicar la operación d. 2“5 X 101101.00000110011000
53. Cambie los siguientes números decimales a enteros com
plemento a dos de 16 bits. del complemento a dos de un número al saltar algunos 67. Muestre los siguientes números en formato IEEE de 32
a. 102 bits y complementar el resto (cambiar los 0 a 1 y los 1 a bits. a. 0.1875
0). Otro método es primero aplicar la operación comple a. - 2 o X 1.10001
b. -1 7 9 b. 0.640625
c. 534 mento a uno y luego sumar 1 al resultado. Pruebe ambos b. + 2 3 X 1.111111 c. 0.40625
métodos con los números siguientes. Compare y con c. + 2 “4 X 1.01110011
d. 62 056 d. 0.375
traste los resultados. d. —2~3 X 1.01101000
54. Cambie los siguientes números sin signo de ocho bits a a. 01110111 68. Muestre los siguientes números en formato IEEE de 64 71. Usando los resultados del problema previo, cambie los
decimal. b. 11111100
bits. siguientes números decimales a números binarios.
a. 01101011 c. 01110100
a. - 2 o X 1.10001 a. 7.1875
b. 10010100 d. 11001110
b. + ’23 X 1.111111 b. 12.640625
c. 00000110 62. Si usted aplica la operación complemento a uno a un nú c. +2~4 X 1.01110011 c. 11.40625
d. 01010000 mero dos veces, obtiene el número original. Aplique dos d. —25 X 1.01101000
d. 0.375
55. Cambie los siguientes números signo y magnitud de veces la operación complemento a uno a cada uno de los 69. Cambie las siguientes fracciones decimales a fracciones
ocho bits a decimal. números siguientes y vea si puede obtener el número 72. Usando el resultado del problema anterior, muestre ios
binarias.
original.
a. 01111011 a. 3 5/8 siguientes números en el formato IEEE de 32 bits.
b. 10110100 a. 01110111
b. 12 3/32 a. +7.1875
c. 01100011 b. 11111100
c. 4 13/64 b. +12.640625
d. 11010000 c. 01110100
d. 12 5/128 c. -11.40625
d. 11001110
70. La tabla 3.12 muestra otra forma de escribir una fracción
56. Cambie los siguientes números complemento a uno de d. -0.375
63. Si usted aplica la operación complemento a dos a un nú de manera que el denominador sea una potencia de 2 (1,
ocho bits a decimal.
mero dos veces, obtiene el número original. Aplique dos 4, 8,16, etc.). Sin embargo, a veces se necesita una com 73. Muestre el resultado de las operaciones siguientes usan
a. 01100011 veces la operación complemento a dos a cada uno de los binación de entradas para encontrar la fracción apropia do el formato IEEE.
b. 10000100 números siguientes y vea si puede obtener el número da. Por ejemplo, 0.635 no está en la tabla, pero usted
c. 01110011 original. a. X012A00 + xl2AAFF
sabe que 0.625 es 0.5 + 0.125. Esto significa que 0.625
d. 11000000 b. xOOOOOll + X820000
a. 01110111 puede escribirse como 1/2 + 1/8, o 5/8, lo cual es la for
57. Cambie los siguientes números complemento a dos de b. 11111100 ma adecuada. Cambie las fracciones decimales siguien c. x 9 l i l i l í + x211111
ocho bits a decimal. c. 01110100 tes a una fracción con una potencia de 2. d. xEl 11111 + x777777
a. 01110111 d. 11001110
b. 11111100 64. El equivalente de un número complemento a uno en de
c. 01110100 cimal se llama complemento de nueve (10 - 1 es 9). De
d. 11001110 esta manera, el complemento de nueve de un número se
obtiene al restar cada dígito de 9. Encuentre el comple
58. Los siguientes números son números binarios de signo y
mento a nueve para cada uno de los siguientes números
magnitud. Muestre cómo cambiar el signo del número.
decimales. Suponga que está utilizando sólo tres dígitos.
a. 01110111
a. +234 '
b. 11111100
b. +112
c. 01110111
c. -1 2 5
d. 11001110
d. -111
59. Los números siguientes son números binarios comple 65. Si usted usa tres dígitos, ¿cuál es el intervalo de núme
mento a uno. Muestre cómo cambiar el signo del número. ros que puede representar usando el complemento de
a. 01110111 nueve? En este sistema, ¿cómo puede determinar el sig
b. 11111100 no de un número? ¿Se tienen dos ceros en este sistema?
c. 01110111 ¿Cuál es la representación para +0? ¿Cuál es la repre
d. 11001110 sentación para —0?
4.1 O p e ra c io n e s a ritm é tic a s
OPERACIONES Todas las operaciones aritméticas como la suma, la resta, la multiplicación y la división pue
den aplicarse a los enteros. Sin embrago, sólo nos concentraremos en la suma y la resta. La
con bits
A R IT M É T IC A S
operación de multiplicación puede implementarse en software usando sumas sucesivas, o en
CON ENTEROS
hardware usando otras técnicas. La operación de división también puede implementarse en
software usando restas sucesivas o en hardware usando otras técnicas. No obstante, un análi
sis profundo de la multiplicación y la división está más allá del ámbito de este libro y lo de
jamos como un tema para los libros sobre arquitectura de computadoras.
Usted puede aplicar la suma y la resta a todas las representaciones de enteros. Sin embar
go, presentamos la representación del complemento a dos debido a que éste es el único mé
todo utilizado actualmente para almacenar enteros en las computadoras.
Suma en el La suma de números en el complemento a dos es como la suma de números en el sistema de
com plem ento cimal; usted suma columna por columna y si existe un acarreo, éste se suma a la siguiente
columna. Sin embargo, debe recordar que está tratando con dígitos binarios, no con dígitos
a dos
decimales. Cuando se suman dos bits el resultado es 0 o 1. Asimismo, se debe acarrear un
*os capítulos 2 y 3 mostramos la mane ra de almacenar diferentes tipos de datos en una
1 que se transmite a la siguiente columna. Por consiguiente, necesita ser cuidadoso al sumar
computadora. En este capítulo, mostramos cómo hacer operaciones con bits. Las operacio
dos o tres bits. La tabla 4.1 es una guía para sumar bits.
nes con bits pueden dividirse en dos amplias categorías: operaciones aritméticas y opera
ciones lógicas (figura 4.1).
Nui h ru de 1 Resultado Acarreo
Ninguno 0
Uno
Operaciones
Dos 2 1
con bits
Tres 3 1
T a b la 4 .1 Sum a co n bits
Aritméticas Lógicas
Ahora podemos definir la regla para sumar dos enteros en el complemento a dos:
F ig u r a 4 .1 O p e ra cio n e s co n bits
EJEMPLO 1
Sume dos números en la representación del complemento a dos:
SOLUCIÓN
Estos números en el complemento a dos se representan como 00010001 y 00010110 para una
localidad de memoria de ocho bits. El resultado es similar para cualquier tamaño de asig
nación.
O p e ra c io n e s co n b its 4.1 O p e ra c io n e s a ritm é tic a s
A carreo 1 Un error resalta de inmediato aquí. El bit en el extremo izquierdo del resultado es 1, lo
00010001 + cual significa que el número es negativo (esperamos un número positivo). ¿Cuál es este
número? El complemento a dos es 126. Esto significa que el número es -1 2 6 en lugar de
0 0 0 1 0 1 1 0
130. En la siguiente sección sobre desbordamiento tratamos este problema. ■
Resultado 0 0 1 0 0 1 1 1
El desbordam iento es un error que ocurre cuando usted intenta almacenar un número que no
El resultado es 39 en decimal. Desbordamiento
está dentro del intervalo definido por la asignación. Cuando sume números en el complemen
EJE M PL O 2 to a dos usando N bits, asegúrese de que cada número y el resultado estén en el intervalo de
Sume 24 y - 1 7 . Ambos números están en formato de complemento a dos. finido para ia representación del complemento a dos. En el capítulo 3, mencionamos que el
intervalo de números que pueden representarse en el complemento a dos está entre - 2 y
(+ 24) + (-1 7 ) —» (+7) 2n ~ ] - 1.
SOLUCIÓN
Los números en el complemento a dos pueden representarse como sigue: Intervalo de números en la representación del complemento a dos:
A carreo 11111 - ( 2 N_1) ------- o + (2íV_1 —1)
0 0 0 1 1 0 0 0 +
1 1 1 0 1111
Para el ejemplo 4, el intervalo es —28 1 a + 2 8 1 —1,1o cual es 128 a 127. El resultado
Resultado 0 0 0 0 0 1 1 1
de la suma (130) no está en el intervalo. Pero otra pregunta sigue sin respuesta: ¿Por qué la
respuesta es -1 2 6 ? La respuesta puede encontrarse si usted visualiza los números en el com
Observe que el resultado es + 7 y que el último acarreo (a partir de la columna en el ex
tremo izquierdo) se descarta. plemento a dos como puntos de un círculo (Fig. 4.2).
E JE M PL O 3
Sume - 3 5 y 20. Ambos números están en formato de complemento a dos.
-1 0
(-3 5 ) + (+ 20) —^ (- 1 5 )
SOLUCIÓN
Los números en el complemento a dos pueden representarse como sigue:
Acarreo 111
110 1 1 1 0 1 +
0 0 0 1 0 1 0 0
Resultado 1 1 1 1 0 0 0 1
Observe que el resultado es —15 (si se aplica la operación complemento a dos al resulta
do, se obtiene 15).
(+127) + (+ 3 ) — ( +130) Comience desde 0 y sume 1 sin interrupción hasta que obtenga 127. Si suma un 1 más no ob
tiene 128, sino -1 2 8 . Si suma otro 1, obtiene -1 2 7 . Sume un 1 más y obtendrá -1 2 6 . Esto
SOLUCIÓN fue lo que ocurrió en el ejemplo 4.
Los números en el complemento a dos pueden representarse com o sigue:
A carreo 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 + Cuando realice operaciones aritméticas con números en una com putadora, recuer
de que cada núm ero y el resultado deben estar en el intervalo definido por la asig
0 0 0 0 0 0 1 1
nación con bits.
Resultado 1 0 0 0 0 0 1 0
54 O p e ra c io n e s co n b its 4 .2 O p e ra c io n e s ló g ic a s 55
Resta e n el Una de las ventajas de la representación del complemento a dos es que no hay diferencia en S O L U C IÓ N
c o m p le m e n to tre la suma y la resta. Para restar, se invierte (complemento a dos) el segundo número y se su El exponente del primer número es 132—127, o 5. El exponente del segundo número es
a dos ma. En otras palabras, las dos expresiones siguientes son lo mismo: 130—127, o 3. Por consiguiente, los números son:
OPERACIONES Todas las operaciones aritméticas como la suma, la resta, la multiplicación y la división pue
A R IT M É T IC A S den aplicarse a los números de punto flotante (flotantes). Sin embargo, sólo nos concentra
mos en la suma y la resta porque la multiplicación es simplemente una suma sucesiva y la
EN N Ú M E R O S
división, una resta sucesiva.
DE P U N T O
La suma y la resta en los flotantes, cuando se almacenan en formato IEEE, son muy com
FLOTANTE
plicadas y detalladas. No podemos cubrir todos los detalles y casos especiales aquí, así que 4.2 OPERACIONES LÓGICAS
sólo damos el concepto general.
Un solo bit puede ser ya sea 0 o 1. Usted puede interpretar el 0 como el valor lógico fa lso y
el 1 como el valor lógico verdadero. De esta manera, un bit almacenado en la memoria de una
Suma y resta La suma y la resta para los números de punto flotante son un proceso. Los pasos son como computadora puede representar un valor lógico que es ya sea falso o verdadero.
sigue: Si un bit se interpreta como un valor lógico, entonces pueden aplicarse las operaciones ló
gicas a este bit. Una operación lógica acepta uno o dos bits para crear sólo un bit. Si la ope
■ Revise los signos. ración se apüca sólo a una entrada, es una operación uñaría. Si ésta se aplica a dos bits es
a. Si los signos son iguales, sume los números y asigne el signo al resultado. una operación binaria (figura 4.3).
b. Si los signos son diferentes, compare los valores absolutos, reste el menor del mayor
y asigne el signo del mayor al resultado.
■ Desplace los puntos decimales para igualar los exponentes. Esto significa que si los ex
ponentes no son iguales, el punto decimal del número con el exponente menor se mue
Entrada------- >
ve a la izquierda para igualar los exponentes.
Entrada------- > Uñaría ------- ^ Salida Binario Salida
■ Sume o reste las m antisas (incluyendo la parte entera y la parte fraccionaria). Entrada-------->
■ Normalice el resultado antes de almacenarlo en la memoria.
a. Operador unario b. Operador binario
■ Verifique si hay desbordamiento.
Figura 4 .3 O p e ra cio n e s uñarías y b in arías
E JE M PL O 6
Sume dos flotantes:
0 10000100 10110000000000000000000 En esta sección se analiza un operador unario y tres operadores binarios, los cuales se
0 10000010 01100000000000000000000 muestran en la figura 4.4.
O p e ra c io n e s co n b its 4 .2 O p e ra c io n e s ló g ica s
TABLAS DE VERD AD Una manera de mostrar el resultado de una operación lógica es con una tabla de verdad. Una Figura 4.6 O p e ra d o r N O T
tabla de verdad lista todas las combinaciones de entrada posibles con su salida correspon
diente. En el caso de un operador unario como NOT, hay dos posibilidades de salida. En el
caso de un operador binario hay cuatro posibilidades de salida. La figura 4.5 muestra las ta
blas de verdad para NOT, AND, OR y XOR. OPERADORES En esta sección se analizan los operadores binarios: AND, OR y XOR.
B IN A R IO S
AND El operador AND es un operador binario. Este operador toma dos entradas (dos patrones con
O perad or A N D
bits) y crea una salida (patrón con bits). AND aplica la tabla de verdad a un par con bits, uno
de cada entrada y crea la salida correspondiente (figura 4.7). Se utilizó el símbolo AND que
aplica disyunción a cada par con bits y un cuadro AND que es una operación que se aplica a
cada par de patrones. Para cada par con bits de entrada, el resultado es 1 si y sólo si ambos
bits son 1; de lo contrario, es 0.
OR XOR
o o 0 0 0 0
0 1 1 0 1 1
i 0 1 1 0 ".'1 Entrada
1 1 1 1 1 0
F ig u r a 4 .5 Tablas d e verd ad
EJEMPLO 7
Use el operador NOT en el patrón con bits 10011000.
Figura 4.7 O p e ra d o r A N D
SOLUCIÓN
La solución es:
La solución es: Utilice el operador OR en los patrones con bits 10011000 y 00110101.
F ig u r a 4 .1 0 Regia in h e re n te d e l o p e ra d o r O R
O p e ra d o r OR El operador O R es un operador binario. Este operador toma dos entradas (dos patrones con
O p e ra d o r X O R El operador XOR es un operador binario, que toma dos entradas (dos patrones con bits) y
bits) y crea una salida (patrón de bis). OR aplica la tabla de verdad a un par con bits, uno de
crea una salida (un patrón con bits). XOR aplica la tabla de verdad a un par con bits, uno de
cada entrada, y crea la salida correspondiente (figura 4.9). En la figura se utilizó el símbolo
cada entrada, y crea la salida correspondiente (figura 4.11). En la figura se utilizó el símbolo
OR convencional que incluye cada par con bits y un cuadro OR que es una operación aplica
XOR convencional que aplica exclusión a cada par con bits y un cuadro XOR que es una ope
da al par de patrones. Para cada par con bits de entrada, el resultado es 0 si y sólo si ambos
ración aplicada al par de patrones. Para cada par con bits de entrada el resultado es 0 si y só
bits son 0; de lo contrario, es 1.
lo si ambos bits son iguales; de lo contrario es 1.
Entrada Entrada
Salida
Entrada Entrada
F ig u r a 4 .9 O p e ra d o r O R F ig u r a 4 .1 1 O p e ra d o r X O R
(til O p e ra c io n e s co n b its 4 .2 O p e ra c io n e s ló g ica s
EJE M PL O 10
Objetivo
Use el operador XOR en los patrones con bits 10011000 y 00110101.
x x x x x x x x
SOLUCIÓN
La solución es la siguiente:
0 0 0 0 0 X X
Patrón 1 10011000 XOR Salida
Patrón 2 00110101
Regla inherente del operador XO R Un aspecto interesante sobre el operador XOR es Figura 4.14 Eje m plo d e a p a g a d o co n b its esp ecíficos
que si un bit en una entrada es 1, el resultado es el inverso del bit correspondiente en la otra
entrada. Definimos este hecho como la regla inherente del operador XOR (figura 4.12).
EJEM PLO 11
Use una máscara para apagar (borrar) los cinco bits en el extremo izquierdo de un patrón.
Pruebe la máscara con el patrón 10100110.
(1) XOR ( X ) ----- NOT ( X )
SOLUCIÓN
La máscara es 00000111. El resultado de aplicar la máscara es:
(X) XOR ( 1 ) — NOT ( X )
Objetivo 10100110 AND
Figura 4.12 Regia in h e re n te d e l o p e ra d o r X O R
M áscara 00000111
Resultado 00000110 ■
APLICACIONES Las tres operaciones binarias lógicas pueden utilizarse para modificar un patrón con bits. Pue
den hacer disyunción, conjunción o invertir bits específicos. El patrón con bits que se va a EJEM PLO 12
modificar se aplica disyunción (AND), conjunción (OR) o exclusión (XOR) con un segundo
Imagine una planta de energía que bombea agua a una ciudad usando ocho bombas. Los
patrón con bits, el cual se conoce como m áscara. La máscara se usa para modificar otro pa
estados de las bombas (encendido o apagado) pueden representarse mediante un patrón de
trón con bits (figura 4.18).
ocho bits. Por ejemplo, el patrón 11000111 muestra que las bombas 1 a 3 (a partir de la
derecha), 7 y 8 están encendidas, mientras que las bombas 4, 5 y 6 están apagadas. Ahora
suponga que la bomba 7 se apaga. ¿Cómo puede mostrar esta situación una máscara?
Objetivo------- >
Operador SOLUCIÓN
y Salida
binario Se utiliza la máscara 10111111 operada AND con el patrón objetivo. El único bit 0 (bit 7)
M áscara-------->
en la máscara apaga el séptimo bit en el objetivo.
Por ejemplo, suponga que quiere encender los cinco bits en el extremo izquierdo de un pa Para comprender por qué operan estas reglas, remítase a la regla inherente del operador XOR
trón de ocho bits. La máscara debe tener cinco 1 a la izquierda seguidos por tres 0 (figura 4.15). en la figura 4.12.
Por ejemplo, para complementar los cinco bits en el extremo izquierdo de un patrón de
ocho bits, haga una máscara que comience con cinco 1 a la izquierda seguidos por tres 0 (fi
gura 4.16).
Objetivo
X X X X X X X
Objetivo
X X X X X X X X
OR Nota: X es el complemento de X.
1 1 1 1 1 X X X 1 1 1 ! 1 1 1 1
Salida
XOR ------ ^ ~ X X X X X X X X
1 1 1 1 0 0 0 Salida
Máscara
1 1 1 1 1 0 0 0
Tomando el ejemplo de la planta de energía, ¿cómo se podría utilizar una máscara para
mostrar que la bomba 6 ahora está encendida?
E ntrada E ntrada
4.5 RESUMEN
a b c d e f g h a b c d e f g h
■ Usted puede realizar operaciones aritméticas o lógicas ■ El resultado de la operación binaria AND es verdadero
Desplazamiento \ \ \ \ \ \ \ ¡Desplazamiento a sobre bits.
/ / / / / / / sólo si ambas entradas son verdaderas.
a la izquierda ► y ► y v >. y '■» '■< '■* \ 1 la derecha
■ La mayoría de las computadoras utiliza el método de re ■ El resultado de la operación binaria OR es falso sólo si
II I I M II 1 1 1 II I I 1 ambas entradas son falsas.
b c d e f g h O
presentación de enteros del complemento a dos.
O a b c d e f g
Salida Salida ■ Si hay un acarreo después de la suma de los dígitos en el ■ El resultado de la operación binaria XOR es falso si am
extremo izquierdo, el acarreo se descarta. bas entradas son iguales.
F ig u r a 4 .1 7 O p e ra cio n e s d e d e s p la za m ie n to ■ Para restar en el complemento a dos sólo se complemen ■ Una máscara es un patrón con bits que se aplica a un pa
ta el número a ser restado y se suma. trón con bits objetivo para lograr un resultado específico.
■ Para apagar (borrar) un bit en un patrón con bits objeti
■ Los números a ser sumados deben estar dentro del inter
S O L U C IÓ N vo, se pone el bit de la máscara correspondiente en 0 y
valo definido por la asignación con bits.
Si un patrón con bits representa un número sin signo, una operación de desplazamiento a se utiliza el operador AND.
■ El término desbordamiento describe una condición en la
la derecha divide el número por 2 (división de enteros). El patrón 00111011 representa 59. ■ Para encender un bit en un patrón con bits objetivo, se
cual un número no está dentro del intervalo definido por
Cuando el número se desplaza a la derecha, se obtiene 00011101, el cual es 29. Si el nú pone el bit de la máscara correspondiente en 1 y se utili
la asignación con bits.
mero original (59) se desplaza a la izquierda, se obtiene 01110110, el cual es 118. ■ za el operador OR.
■ La operación lógica sobre bits puede ser unaria (una en ■ Para complementar un bit en un patrón con bits objetivo,
trada) o binaria (dos entradas). se pone el bit de la máscara correspondiente en 1 y se uti
EJE M PL O 17
■ El operador NOT unario invierte su entrada. liza el operador XOR.
Utilice una combinación de operaciones lógicas y de desplazamiento para encontrar el va
lor (0 o 1) del cuarto bit (a partir de la derecha) en un patrón.
S O L U C IÓ N
Se utiliza la máscara 00001000 operada AND con el objetivo para mantener el cuarto bit 4.6 PRÁCTICA
y borrar el resto de los bits.
1. ¿Cuál es la diferencia entre una operación aritmética y 15. ¿Cuál es la regla inherente del operador OR?
0 0 0 0 1 0 0 0
una operación lógica? 16. ¿Cuál es la regla inherente del operador XOR?
0 0 0 0 e 0 0 0
2. ¿Cómo se relaciona la multiplicación con la suma? Dé un
17. ¿Qué operación binaria puede usarse para encender bits?
ejemplo.
Para tener acceso al valor del cuarto bit (e), se desplaza el nuevo patrón tres posiciones a ¿Qué patrón con bits debe tener la máscara?
la derecha de modo que el bit específico se coloque en la posición del extremo derecho. 3. ¿Qué sucede con un acarreo de la columna en el extremo
18. ¿Qué operación binaria puede usarse para apagar bits?
izquierdo en la suma final?
OOOOeOOO —> OOOOOeOO —> OOOOOOeO —> 0000000e ¿Qué patrón con bits debe tener la máscara?
4. ¿Puede N , la asignación con bits, ser igual a l ? ¿Por qué
sí o por qué no? 19. ¿Qué operación binaria puede usarse para revertir bits?
Ahora es muy fácil probar el valor del nuevo patrón como un entero sin signo. Si el valor ¿Qué patrón con bits debe tener la máscara?
es 1, el bit original fue 1; si el valor es 0, el bit original fue 0. fl 5. ¿Cuál es la definición del término desbordamiento ?
6. En la suma de números de punto flotante, ¿cómo se ajusta
la representación de números con diferentes exponentes? PREGUNTAS DE OPCIÓN MÚLTIPLE
7. ¿Cuál es la diferencia entre una operación unaria y una 20 . _________es una operación aritmética con bits.
4.4 TÉRMINOS CLAVE operación binaria? a. El OR exclusivo
8. Menciona cuáles son las operaciones binarias lógicas. b. El NOT unario
acarreo forzar a 1 operación unaria 9. ¿Qué es una tabla de verdad? c. La resta
apagar mantisa operador binario 10. ¿Qué hace el operador NOT? d. Todos los anteriores
borrar máscara operador NOT
11. ¿Cuándo es verdadero el resultado de una operación 21 . _________es un operador lógico con bits.
complementar número de punto flotante operador OR
AND?
complemento a dos operador AND operador unario a. El OR exclusivo
desbordamiento operación aritmética operador XOR 12. ¿Cuándo es verdadero el resultado de una operación OR? b. El NOT unario
encender operación binaria tabla de verdad 13. ¿Cuándo es verdadero el resultado de una operación c. El AND binario
forzar a 0 operación lógica XOR? d. Todos los anteriores
O p e ra c io n e s co n b its 4 .6 P rá c tic a
22. El método de representación de enteros d e _________es 29. Si usted está sumando dos números, uno de los cuales tie 37. Para complementar todos los bits de un patrón con bits, 43. Sin hacer realmente el problema, ¿puede decir cuál de las
el método más común para almacenar enteros en la me ne un valor de exponente de 7 y el otro un valor exponen hace una máscara de todos los bits en 1 y luego________ siguientes opciones crea desbordamiento si los números y
moria de la computadora. te de 9, necesita desplazar el punto decimal del número el patrón con bits y la máscara. el resultado están en notación de complemento a dos de
a. signo y magnitud m enor________ . ocho bits?
a. opera AND
b. complemento a uno a. un lugar a la izquierda a. 32 + 105
b. opera OR
c. complemento a dos b. un lugar a la derecha b. 32 - 105
c. opera XOR
d. enteros no asignados c. dos lugares a la izquierda c. - 3 2 + 105
d. opera NOT
d. dos lugares a la derecha d. - 3 2 - 105
23. En la suma del complemento a dos, si hay un acarreo fi
30. El operador binario _________ toma dos entradas para 38. Para apagar (forzar a 0) todos los bits de un patrón con
nal después de la suma de la columna en el extremo iz 44. Muestre el resultado de las operaciones siguientes supo
producir una salida. bits, hace una máscara de todos los los bits en 0 y luego
quierdo, ________ . _________el patrón con bits y la máscara. niendo que los números se almacenan en la representa
a. éste se suma a la columna en el extremo derecho a. AND ción de complemento a dos en 16 bits. Muestre el resul
b. OR a. opera AND
b. éste se suma a la columna en el extremo izquierdo tado en notación hexadecimal.
c. XOR b. opera OR
c. éste se descarta a. x012A 4- xOE27
d. todos los anteriores c. opera XOR
d. aumenta la longitud con bits b. x712A + x9EOO
31. El operador unario________ invierte su única entrada. d. opera NOT c. x 8 0 ll + xOOOl
24. Para una asignación de ocho bits, el número decimal más
a. AND 39. Para encender (forzar a 1) todos los bits de un patrón d. xE12A + x9E27
pequeño que puede representarse en la forma de comple
b. OR con bits, hace una máscara de todos ios bits en 1 y luego
mento a dos e s ________ . 45. Muestre el resultado de las siguientes operaciones de
c. NOT ________ el patrón con bits y la máscara.
a. —8 punto flotante. Primero convierta cada número a notación
d. XOR a. opera AND binaria y realice la operación; luego convierta el resulta
b. —127
c. -1 2 8 32. Para el operador binario , si la entrada es dos 0 b. opera OR do de nuevo a notación decimal.
d. -2 5 6 la salida es un 0. c. opera XOR a. 34.075 + 23.12
a. AND d. opera NOT b. -12.00067 + 451.00
25. Para una asignación de ocho bits, el número decimal más
b. OR c. 33.677 - 0.00056
grande que puede representarse en la forma de comple
c. XOR d. -344.23 - 123.8902
mento a dos e s ________ . EJERCICIOS
d. todos los anteriores
a. 8 46. Muestre el resultado de las siguientes operaciones de
33. Para el operador binario , si la entrada es dos 1 40. Usando una asignación de ocho bits, primero convierta
b. 127 punto flotante. Primero convierta cada número a notación
la salida es 0. cada uno de los siguientes números a complemento a
c. 128 binaria y realice la operación; luego convierta el resulta
dos, realice la operación y luego convierta el resultado a
a. AND do de regreso a notación decimal.
d. 256 decimal.
b. OR a. 23.125 + 12.45
26. En la representación del complemento a dos con una c. XOR a. 19 + 23
b. 0.234 - 7.192
asignación de cuatro bits, usted obtiene_________cuan d. todos los anteriores b. 19 - 23
c. -0 .3 4 5 + 45.123
do le suma 1 a 7. c. -1 9 + 23
34. Para la operación binaria AND, sólo una entrada de d. -0 .2 3 4 + 5.345
a. 8 ________ da una salida de 1. d. -1 9 - 23
b. 1 47. ¿En cuál de las siguientes situaciones nunca ocurre un
a. dos 0 41. Usando una asignación de 16 bits, primero convierta ca desbordamiento? Justifique su respuesta.
c. -7
b. dos 1 da uno de los siguientes números a complemento a dos,
d. -8 a. la suma a dos enteros positivos
c. un 0 y un 1 realice la operación y luego convierta el resultado a deci b. la suma de un entero positivo y un entero negativo
27. En la representación del complemento a dos con una d. cualquiera de los anteriores mal.
c. la resta de un entero positivo y un entero negativo
asignación de cuatro bits, usted obtiene_________cuan 35. Para la operación binaria OR, sólo una entrada de a. 161 + 1023 d. la resta de dos enteros negativos
do le suma 5 a 5. _________da una salida de 0. b. 161 - 1023
a. -5 48. Muestre el resultado de las operaciones siguientes:
a. dos 0 c. -161 + 1023
b. -6 b. dos 1 a. NOT x99
d. -161 - 1023 b. NOTxFF
c. -7 c. un 0 y un 1
d. 10 d. cualquiera de los anteriores 42. ¿Cuál de las siguientes situaciones crea desbordamiento c. NOTxOO
si los números y el resultado se representan en la nota d. NOT xOl
28. Si el exponente enExcess_127 es el binario 10000101, el 36. Usted utiliza un patrón con bits llam ado_________para
ción de ocho bits usando complemento a dos? 49. Muestre el resultado de las operaciones siguientes:
exponente en decimal e s ________ . modificar otro patrón con bits.
a. máscara a. 11000010 + 00111111 a. x99 AND x99
a. 6
b. 7 b. acarreo b. 00000010 + 00111111 b. x99 AND xOO
c. 8 c. flotante c. 11000010 + 11111111 c. x99 AND xFF
d. 9 d. byte d. 00000010 + 11111111 d. xFFA N D xFF
O p e ra c io n e s co n b its
50. Muestre el resultado de las operaciones siguientes: 54. Necesita encender (forzar a 1) los cuatro bits en el extre
a. x99 OR x99 mo derecho de un patrón. Muestre la máscara y la opera
b. x99 O R xOO ción.
c. x99 OR xFF 55. Necesita complementar los tres bits en el extremo dere
Hardware
d. xFF O R xFF cho y los dos bits en el extremo izquierdo de un patrón.
51. Muestre el resultado de las operaciones siguientes: Muestre la máscara y la operación.
a. x99 X O R x99
56. Necesita apagar los tres bits en el extremo izquierdo y
b. x99 X O R xOO
encender los dos bits en el extremo derecho de un patrón.
de computadora
c. x99 XOR xFF Muestre las máscaras y las operaciones.
d. xFF XOR xFF
57. Use la operación de desplazamiento para dividir un nú
52. Muestre el resultado de las operaciones siguientes:
mero sin signo por 4.
a. NOT (x99 OR x99)
b. x99 O R (NOT xOO) 58. Use la operación de desplazamiento para multiplicar un
c. (x99 A N D x33) OR (xOO A ND xFF) número sin signo por 8.
d. (x99 O R x33) A N D (xOO OR xFF)
59. Utilice una combinación de operaciones lógicas y de des
53. Necesita apagar (forzar a 0) los cuatro bits en el extremo plazamiento para extraer el cuarto y el quinto bits de un
izquierdo de un patrón. Muestre la máscara y la opera número sin signo.
ción.
CAPÍTULO 5: O rganización de l a co m p u ta d o ra
Organización de
unidad de control y una serie de registros (figura 5.2).
la computadora C Z IZ ]R1
1> R2
- | R3
ALU r -----— I T
h
Unidad de control I
^ J Registros
O peración lógica La operación uñaría lógica más simple es la operación NOT. Las operaciones binarias lógi
cas más simples son AND, OR y XOR. Estudiamos estas operaciones en el capítulo 4. La uni
CPU Memoria dad de control es responsable de la selección de una de estas operaciones.
REGISTROS Los registros son localidades de almacenamiento independientes que alojan los datos tempo
ralmente. Se necesitan varios registros para facilitar la operación del CPU. Algunos de estos
registros están en la figura 5.2.
Registros de datos En el pasado, las computadoras sólo tenían un registro para alojar por tumos uno de los da
tos de entrada (el otro dato de entrada venía directamente de la memoria) o el resultado. Ac
tualmente las computadoras utilizan docenas de registros dentro del CPU para acelerar las
operaciones debido a que cada vez más las operaciones complejas se realizan usando hard
Entrada/salida ware (en vez de usar software) y se requieren varios registros para mantener los resultados in
termedios. Por simplicidad, sólo mostramos tres registros generales: dos para entrada de datos
Hardware de computadora y uno para salida de datos (registros R l, R2 y R3) en la figura 5.2.
F ig u r a 5.1 H a rd w a re d e co m p u ta d o ra
Registro Hoy día, las computadoras almacenan en la memoria no sólo datos sino también el programa
correspondiente. El CPU es responsable de buscar las instrucciones, una por una, desde la
de instrucción
memoria, almacenarlas en el registro de instrucciones (registro I en la figura 5.2), interpre
tarlas y ejecutarlas. Este tema se estudiará en una sección posterior.
O r g a n iz a c ió n d e ia c o m p u ta d o ra 5 .2 M e m o ria p rin c ip a l
La memoria principal es otro subsistema en una computadora (figura 5.3). Es una colección
de localidades de almacenamiento, cada una con un identificador único conocido como direc Direcciones com o Puesto que las computadoras operan mediante el almacenamiento de números como patrones
ción. Los datos se transfieren hacia y desde la memoria en grupos de bits llamados palabras. patrones de bits de bits, la dirección en sí misma también se representa como un patrón de bits. Así que si una
Una palabra puede ser un grupo de 8 bits, 16 bits, 32 bits o en ocasiones 64 bits. Si la pala computadora tiene 64 kilobytes (216) de memoria con un tamaño de palabra de 1 byte, enton
bra es de ocho bits, se hace referencia a ella como un byte. El término byte es tan común en ces para definir una dirección, se necesita un patrón de 16 bits. Recuerde del capítulo 3 que las
las ciencias de la computación, que a veces se hace referencia a una palabra de 16 bits como direcciones pueden representarse como enteros sin signo (usted no tiene direcciones negativas).
una palabra de 2 bytes, o a una palabra de 32 bits como una palabra de 4 bytes. En otras palabras, la primera localidad se refiere como una dirección 0000000000000000 (di
rección 0) y la última locación se refiere como una dirección 1111111111111111 (dirección
65535). En general, si una computadora tiene N palabras de memoria, se necesita un entero sin
Para tener acceso a una palabra en la memoria se requiere un identificador. Aunque los pro signo con un tamaño de log2 N bits para referirse a cada localidad de memoria.
ESPACIO DE
DIRECCIONAMIENTO gramadores utilizan un nombre para identificar una palabra (o una colección de palabras), en
el nivel del hardware cada palabra se identifica por una dirección. El número total de loca
lidades únicas identificables en la memoria se llama espacio de direccionamiento. Por ejem
Las direcciones de memoria se definen usando enteros binarios sin signo.
plo, una memoria con 64 kilobytes y un tamaño de palabra de un byte tienen un espacio de
direccionamiento que varía de 0 a 65535.
La tabla 5.1 muestra las unidades usadas para referirse a la memoria. Observe que la termi
nología es engañosa; aproxima el número de bytes en potencias de 10, pero el número de by EJEMPLO 1
tes real está en potencias de 2. Las unidades en potencias de 2 facilitan el direccionamiento.
Una computadora tiene 32 MB (megabytes) de memoria. ¿Cuántos bits se necesitan para
asignar una dirección a cualquier byte individual en la memoria?
Unidad Número exacto de bytes Aproximación
kilobyte 210 (1024) bytes 103 bytes SOLUCIÓN
megabyte 220 (1048576) bytes 106 bytes El espacio de direccionamiento de memoria es 32 MB o 22: (25 X 220). Esto significa que
se necesitan log2 223 o 25 bits para asignar una dirección a cada byte. ■
gigabyte 23(J (1073 741824) bytes 109 bytes
terabyte 240 (1024) bytes 1012 bytes EJEMPLO 2
petabyte 250 (1024) bytes 10!5 bytes Una computadora tiene 128 MB de memoria. Cada palabra en esta computadora tiene
exabyte 2m (1024) bytes 1018 bytes ocho bytes. ¿Cuántos bits se necesitan para asignar una dirección a cualquier palabra in
dividual en la memoria?
Tabla 5.1 U n id a d e s d e m em oria
O r g a n iz a c ió n d e la c o m p u ta d o ra 5 .2 M e m o ria p rin c ip a l :75
SOLUCIÓN Los usuarios necesitan computadoras con mucha memoria, especialmente con memoria que
JERARQUÍA
sea muy rápida y muy barata. No siempre es posible satisfacer esta demanda. La memoria
El espacio de direccionamiento de memoria es 128 MB, lo cual significa 227. Sin embargo, de l a m e m o r i a
cada palabra es de ocho (23) bytes, lo cual significa que usted tiene 224palabras. Esto sig muy rápida por lo general no es barata. Se requiere hacer un compromiso. La solución son
nifica que se necesitan log2 224, o 24 bits, para asignar una dirección a cada palabra. ■ niveles jerárquicos de memoria (figura 5.4). La jerarquía se basa en lo siguiente:
RAM La memoria de acceso aleatorio (RAM: random access m emory ) constituye la mayor par Velocidad más rápida (memoria caché)
te de la memoria principal en una computadora. El término es confuso debido a que también
se puede tener acceso a la ROM en forma aleatoria. Lo que distingue a la RAM de la ROM
Velocidad; rápida (memoria principal)
es que el usuario puede leer de y escribir en la RAM. El usuario puede escribir algo en la
RAM y posteriormente borrarlo simplemente al sobrescribirlo. Otra característica de la RAM
es que es volátil; la información (programa o datos) se borra si el sistema se apaga. En otras F ig u r a 5 .4 Jerarquía d e la m e m o ria
palabras, toda la información en la RAM se borra si usted apaga la computadora o si hay un
apagón. La tecnología de la RAM se divide en dos categorías generales: SRAM y DRAM.
■ Utilice una cantidad muy pequeña de memoria de alta velocidad cuando la velocidad sea
SRAM La tecnología de RAM estática (SRAM: static RAM) utiliza compuertas flip-flop crucial. Los registros dentro del CPU son de este tipo.
(compuertas con dos estados, 0 y 1) para almacenar datos. Las compuertas alojan su estado
■ Utilice una cantidad moderada de memoria de velocidad media para almacenar datos a
(0 o 1), lo cual significa que los datos se almacenan mientras haya suministro de corriente;
los cuales se accede con frecuencia. La memoria caché, que se analiza enseguida, es de
no hay necesidad de refrescar. .La SRAM es rápida pero costosa.
este tipo.
DRAM La tecnología de RAM dinámica (DRAM: dynamic RAM) utiliza capacitores. Si ■ Utilice una gran cantidad de memoria de baja velocidad para datos a los cuales no se ac
el capacitor está cargado, el estado es 1; si está descargado el estado es 0. Como un capaci cede con frecuencia. La memoria principal es de este tipo de memoria.
tor pierde un poco de su carga con el tiempo, las celdas de la memoria necesitan refrescarse
periódicamente. Las DRAM son lentas pero económicas.
La memoria caché es más rápida que la memoria principal pero más lenta que el CPU y los
M E M O R IA C A C H É
registros dentro del CPU. La memoria caché, la cual por lo general es pequeña en tamaño, se
ROM El contenido de la memoria de sólo lectura (ROM: read-only memory) es escrito por el fa
coloca entre el CPU y la memoria principal (figura 5.5).
bricante; el usuario puede leer la ROM pero no escribir en ella. Su ventaja es que no es volá
til; su contenido no se borra si usted apaga la computadora. Normalmente la utilizan
programas o datos que no deben ser borrados o cambiados aun cuando usted apague la com
putadora. Por ejemplo, algunas computadoras vienen con una ROM que aloja el programa de
arranque que se ejecuta cuando usted enciende la computadora.
EPROM Una variación de la PROM es la memoria de sólo lectura programable y borra- La memoria caché contiene en cualquier momento una copia de una porción de la memo
ble (EPROM: erasable programmable read-only memory). El usuario puede programar esta ria principal. Cuando el CPU necesita acceder a una palabra en la memoria principal, sigue
memoria, pero es posible borrarla con un dispositivo especial que utiliza luz ultravioleta. Pa
este procedimiento:
ra borrar la memoria EPROM se requiere quitarla físicamente y volver a instalarla.
1. El CPU revisa la caché.
EEPROM Una variación de la EPROM es la memoria de sólo lectura programable y bo- 2. Si la palabra está ahí, copia la palabra; si no, el CPU accede a la memoria principal y
rrable electrónicamente (EEPROM: electronically erasable programmable read-only m e copia un bloque de memoria comenzando con la palabra deseada. El bloque reempla
mory). Esta memoria puede programarse y borrarse usando impulsos electrónicos sin quitarla za el contenido previo de la memoria caché.
físicamente de la computadora.
O r g a n iz a c ió n d e ia c o m p u ta d o ra 5.3 E n tra d a /S a lid a
Este procedimiento puede acelerar las operaciones; si la palabra está en la caché, se tiene ac
ceso a ella de inmediato. Si la palabra no está en la caché, la palabra y un bloque entero se C abeza de
copian a la caché. Puesto que es muy probable que el CPU, en su ciclo siguiente, necesite ob lectura/escritura
tener acceso a las palabras que siguen a la primera palabra, la existencia de la caché acelera
O
el procesamiento. n
Tal vez el lector se pregunte por qué la memoria caché es tan eficiente a pesar de su tama
ño pequeño. La respuesta está en la regla 80-20. Se ha observado que la mayoría de las com
putadoras por lo general invierte el 80 por ciento del tiempo en obtener acceso sólo al 20 por
ciento de los datos. En otras palabras, se tiene acceso a los mismos datos una y otra vez. La
memoria caché, con su gran velocidad, puede alojar este 20 por ciento para hacer que el ac
ceso sea más rápido al menos el 80 por ciento del tiempo.
C abeza de
S3 ENTRADA/SALIDA lectura/escritura
El tercer subsistema en una computadora es la colección de dispositivos conocidos como el Figura 5.6 D istrib u ció n física d e un d isco m a g n é tico
subsistema de entrada/salida (E/S). Este subsistema permite a una computadora comuni
carse con el mundo exterior y almacenar programas y datos aun cuando no esté encendida.
Los dispositivos de entrada/salida pueden dividirse en dos categorías generales: dispositivos
de almacenamiento y dispositivos que no son de almacenamiento.
DISPOSITIVOS Los dispositivos que no son de almacenamiento permiten al CPU o a la memoria comuni
Q U E N O SO N D E carse con el mundo exterior, pero no pueden almacenar información.
A L M A C E N A M IE N T O
Teclado y m o n ito r El teclado y el monitor son dos de los dispositivos de entrada/salida que no son de almacena
miento. El teclado proporciona la entrada; el monitor despliega la salida y al mismo tiempo
repite la entrada que se introduce en el teclado. Los programas, comandos y datos son entra
da o salida que utiliza cadenas de caracteres. Los caracteres se codifican usando un código
como ASCE (véase el apéndice A).
Impresora Una impresora es un dispositivo de salida que crea un registro permanente; se trata de un dis
positivo que no es de almacenamiento porque el material impreso no puede introducirse otra Figura 5.7 O rg a n iz a c ió n d e la su p e rficie d e un disco
vez directamente en una computadora a menos que alguien lo teclee o lo digitalice en un es
cáner.
DISPOSITIVOS DE Los dispositivos de almacenamiento, aun cuando se clasifican como dispositivos de entra Organización de la superficie. Para organizar los datos almacenados en el disco, cada
ALM ACENAM IENTO da/salida, pueden almacenar grandes cantidades de información que se recuperará 1en un mo superficie se divide en pistas, las cuales a su vez se dividen en sectores (figura 5.7). Las
mento posterior. Son más económicos que la memoria principal y su contenido no es volátil pistas están separadas por un espacio entre pistas y los sectores están separados por un
(no se borra cuando se apaga la computadora). A veces se les llama dispositivos de almace espacio entre sectores.
namiento auxiliares. Los clasificamos como magnéticos u ópticos.
Acceso a datos. Un disco magnético se considera un dispositivo de acceso aleatorio. No
D ispositivos de Este tipo de dispositivos utiliza la magnetización para almacenar bits de datos. Si un punto se obstante, un sector es el área de almacenamiento más pequeña a la que puede tener ac
alm acenam iento magnetiza, representa un 1 ; si no se magnetiza, representa un 0 . ceso a la vez. Un bloque de datos puede almacenarse en uno o más sectores y recuperar
m agnéticos se sin necesidad de recuperar el resto de la información en el disco.
Disco m agnético Un disco magnético es uno o más discos apilados uno encima de otro.
Los discos se cubren con una película magnética delgada. La información se almacena y se
Rendimiento. El rendimiento de un disco depende de varios factores; los más importan
recupera de la superficie del disco usando una cabeza de lectura/escritura para cada super
tes son la velocidad de rotación, el tiempo de búsqueda y el tiempo de transferencia. La
ficie magnetizada del disco. La figura 5.6 muestra el diagrama de un disco magnético.
velocidad de rotación define qué tan rápido gira el disco. El tiempo de búsqueda de
fine el tiempo para mover la cabeza de lectura/escritura a la pista deseada donde se al
1N. del T. Bajo este contexto, recuperar significa tener acceso al dispositivo o a la localidad de alm ace macenan los datos. El tiempo de transferencia define el tiempo para mover los datos
nam iento para obtener la información. del disco al CPU o a la memoria.
78 O r g a n iz a c ió n d e la c o m p u ta d o ra 5.3 E n tra d a / S a lid a ^ Q ||
CD-ROM El disco compacto de memoria de sólo lectura (CD-ROM: compact disc read
only memory ) utiliza la misma tecnología que el CD (disco compacto), originalmente desa
rrollado por Phillips y Sony para grabar música. La única diferencia entre estas dos
tecnologías es la mejora; una unidad de CD-ROM es más robusta y busca errores. La figura
5.10 muestra los pasos en la creación y el uso de un CD-ROM.
a. Disco maestro
b. Molde
Bloque Bloque
i i---------------------- I E tiq u e ta
C a p a p r o te c to r a f e
C a p a reflecta n te
Pista 9 P o lic a rb o n a to
R esin a
i
Cinta magnética Una cinta magnética viene en varios tamaños. Un tipo común es una
D etector láser
cinta de plástico de media pulgada cubierta con una película magnética gruesa. La cinta se
O rigen del láser
monta en dos carretes y utiliza una cabeza de lectura escritura que lee o escribe la informa
ción cuando la cinta pasa por ella. La figura 5.8 muestra la configuración mecánica de una
cinta magnética. c. CD-ROM
§ Organización de la superficie. El ancho de la cinta se divide en nueve pistas. Cada F ig u r a 5 .1 0 C re a ció n y uso d e un C D -R O M
punto de una pista puede almacenar un bit de información. Nueve puntos verticales
pueden almacenar 8 bits de información referente a un byte, más un bit para detección
de error (figura 5.9). Creación. La tecnología de CD-ROM utiliza tres pasos para crear un gran número de
S Acceso a datos. Una cinta magnética se considera un dispositivo de acceso secuencial. discos:
Aunque la superficie puede dividirse en bloques, no hay un mecanismo de direcciona- a. Un disco maestro se crea usando un láser infrarrojo de alta potencia que hace patro
miento para acceder a cada bloque. Para recuperar un bloque específico en una cinta, se nes de bits en plástico cubierto. El láser traduce el patrón de bits en una secuencia de
necesita pasar por todos los bloques previos. agujeros (pits: hoyos) y superficies (lands: superficies sin hoyos). Los agujeros por
3 Rendimiento. Aunque una cinta magnética es más lenta que un disco magnético, es más lo general representan los 0 y las superficies, los 1. Sin embargo, ésta es sólo una con
económica. Actualmente, la gente usa cintas magnéticas para respaldar grandes cantida vención y puede ser revertida. Otros esquemas utilizan una transición (agujero a hoyo
des de información. u hoyo a agujero) para representar el l y la falta de transición para representar el 0 .
b. Desde el disco maestro se hace un molde. En el molde, los agujeros (hoyos) se rem
D is p o s it iv o s d e Los dispositivos de almacenamiento óptico son una nueva tecnología que utiliza luz (lá
plazan por protuberancias.
alm acen am iento ser) para almacenar y recuperar datos. El uso de la tecnología de almacenamiento óptico su
ó p tico cedió a la invención del CD (disco compacto), utilizado para almacenar información de c. Resina de policarbonato fundida se inyecta en el molde para producir los mismos
audio. Hoy día, la misma tecnología (ligeramente mejorada) se utiliza para almacenar infor agujeros que el disco maestro. Una capa muy delgada de aluminio (que sirve como una
mación en una computadora. Los dispositivos que usan esta tecnología incluyen CD-ROM, superficie reflectante) se añade al policarbonato. Encima de éste, se aplica una capa
CD-R, CD-RW y DVD. protectora de laca y se añade una etiqueta. Se repite sólo este paso para cada disco.
80 O r g a n iz a c ió n d e la c o m p u ta d o ra 5 .3 E n tra d a /S a lid a 81
9 Lectura. El CD-ROM se lee usando un rayo láser de baja potencia que proviene de la CD-R Como se mencionó, la tecnología de CD-ROM es justificable sólo si el fabricante pue
unidad de la computadora. El rayo láser se refleja en la superficie de aluminio cuando de crear una gran cantidad de discos. Por otra parte, el disco compacto grabable (CD-R: Com
pasa a través de una superficie. Se refleja dos veces cuando se encuentra un agujero, una pact disc recordable) permite a los usuarios crear uno o más discos sin incurrir en el gasto
vez por el borde del agujero y una vez por el borde del aluminio. Las dos reflexiones tie implicado en la creación de CD-ROM. Es particularmente útil para hacer respaldos. El usuario
nen un efecto destructivo debido a que la profundidad del agujero se elige para ser exac puede escribir sólo una vez en este disco, pero puede leerlo varias veces. Por esta razón, en oca
tamente un cuarto de la longitud de onda del rayo. En otras palabras, el sensor instalado siones se le llama WORM (write once, read many: escribir una vez, leer muchas).
en el dispositivo detecta más luz cuando el punto es una zona y menos luz cuando el pun
to es un agujero; puede leer lo que se registra en el disco maestro original. 9 Creación. La tecnología de CD-R utiliza los mismos principios que el CD-ROM para
crear un disco (figura 5.12). A continuación se listan las diferencias:
9 Formato. La tecnología de CD-ROM utiliza un formato distinto a un disco magnético
(figura 5.11). El formato de datos en un CD-ROM se basa en: a. No hay disco maestro o molde.
b. La capa reflectante está hecha de oro en lugar de aluminio.
a. Un bloque de datos de ocho bits se transforma en un símbolo de 14 bits que usa un
método de corrección de errores llamado código Hamming. c. No hay agujeros (hoyos) físicos en el policarbonato; los agujeros y las superficies só
lo se simulan. Para hacerlo, se añade una capa más de tinte, similar al material utili
b. Se forma un Frame de 42 símbolos (14 bits/símbolo).
zado en fotografía, entre la capa reflectante y el policarbonato.
c. Se forma un sector de 96 frames (2352 bytes).
d. Un rayo láser de alta potencia, creado por el quemador de CD de la unidad, forma un
9 Velocidad. Las unidades de CD-ROM vienen en diferentes velocidades. La velocidad punto negro en el tinte (cambiando la composición química) lo cual simula un aguje
simple se llama lx , la doble se llama 2x y así sucesivamente.Si la unidad es de veloci ro. Las áreas que no son golpeadas por el rayo son las superficies.
dad simple puede leer hasta 153 600 bytes por segundo. La tabla 5.2muestra las velo
cidades y la tasa de transferencia de datos correspondiente. 9 Lectura. Los CD-R pueden leerse mediante una unidad de CD-ROM o de CD-R. Esto
significa que cualquier diferencia debe ser transparente para la unidad. El mismo rayo
láser de baja potencia pasa enfrente de los agujeros simulados y las superficies. Para una
Velocidad lasa de transferencia Aproximación superficie, el rayo alcanza la capa reflectante y se refleja. Para un agujero simulado, el
lx 153 600 bytes por segundo 150 KB/s punto es opaco de modo que el rayo no puede reflejarse de regreso.
2x 307 200 bytes por segundo 300 KB/s
4x
9 Formato y velocidad. El formato, la capacidad y la velocidad de los CD-R son los mis
614 400 bytes por segundo 600 KB/s
mos que los del CD-ROM.
6x 921 600 bytes por segundo 900 KB/s
8x 1 228 800 bytes por segundo 1.2 MB/s 9 Aplicación. Esta tecnología es muy atractiva para la gente que desea crear y distribuir
12x 1 843 200 bytes por segundo 1.8 MB/s un pequeño número de discos; también es muy útil para hacer depósitos de archivos (ar
16x 2 457 600 bytes por segundo 2.4 MB/s chives ) y respaldos.
24x 3 688 400 bytes por segundo 3.6 MB/s
32x 4 915 200 bytes por segundo 4.8 MB/s
40x 6 144 000 bytes por segundo 6 MB/s
T a b la 5 .2 V e lo cid a d e s d e C D -R O M
Etiqueta
Aplicación. Los gastos involucrados en la creación de un disco maestro, el molde y el Capa protectora
disco real pueden justificarse si existe un gran número de clientes potenciales. Dicho de Capa reflectante
otra forma, esta tecnología es económica si los discos se producen masivamente. i l l T i ... 1 i i i i . Tinte
/ Agujero simulado
Resina
| | Byte (8 bits) de policarbonato
I
Origen del láser
CD-RW Aunque los CD-R se han vuelto muy populares, sólo se puede escribir en ellos una ■ Capacidad. Estas mejoras dan como resultado mayores capacidades (tabla 5.3).
vez. Para sobrescribir materiales previos, existe una nueva tecnología que crea un nuevo tipo
de disco llamado disco compacto de reescritura (CD-RW: com pact disc rewritable). A ve
ces se le llama disco óptico borrable. Característica Capacidad
Una cara, capa simple 4.7 GB
* Creación. La tecnología de CD-RW utiliza los mismos principios que el CD-ROM pa
Una cara, capa dual 8.5 GB
ra crear el disco (figura 5.13). Las diferencias se listan enseguida:
Doble cara, capa simple 9.4 GB
a. En lugar de tinte la tecnología utiliza una aleación de plata, indio, antimonio y telu
Doble cara, capa dual 17 GB
rio. Esta aleación tiene dos estados estables: cristalino (transparente) y amorfo (no
transparente). T a b la 5 .3 C ap a cid ad es d e D V D
b. La unidad usa láser de alta potencia para crear agujeros simulados en la aleación
(cambiándola de cristalina a amorfa).
■ Lectura. La unidad utiliza el mismo rayo láser de baja potencia que el CD-ROM y el Compresión. La tecnología de DVD utiliza el formato MPEG (véase el capítulo 15) pa
CD-R para detectar agujeros y zonas. ra compresión. Esto significa que un DVD de una sola cara y capa simple puede alojar
133 minutos (2 horas y 13 minutos) de video a una alta resolución. Esto también inclu
S Borrado. La unidad usa un rayo láser de potencia media para cambiar los agujeros a
ye tanto audio como subtítulos.
superficies. El rayo cambia un punto del estado amorfo al estado cristalino.
■ Formato y velocidad. El formato, la capacidad y la velocidad de los CD-RW son los Aplicación. Actualmente, la gran capacidad de los DVD atrae a muchas aplicaciones
mismos que los del CD-ROM. que necesitan almacenar un volumen grande de datos.
■ Aplicación. Esta tecnología es definitivamente más atractiva que la tecnología de CD-R.
Sin embargo, los CD-R son más populares por dos razones. Primero, los discos CD-R
vírgenes son menos costosos que los discos CD-RW vírgenes. Segundo, los discos CD-
R son preferibles en casos donde el disco creado no debe cambiar, ya sea de manera ac
5.4 INTERCONEXIÓN DE SUBSISTEMAS
cidental o intencional.
Las secciones previas explicaron resumidamente las características de los tres subsistemas
DVD La industria ha sentido la necesidad de medios de almacenamiento digital con una ca (CPU, memoria principal y E/S) en una computadora independiente. En esta sección, explo
pacidad aún mayor. La capacidad de un CD-ROM (650 MB) no es suficiente para almacenar ramos cómo se interconectan estos tres subsistemas. La interconexión representa un impor
información de video. El dispositivo de almacenamiento de memoria óptica más reciente en tante papel porque la información requiere ser intercambiada entre los tres subsistemas.
el mercado se llama disco versátil digital (DVD: digital versatile disc). Este disco utiliza una C O N E X IÓ N D E L C P U
tecnología similar al CD-ROM pero con las diferencias siguientes: El CPU y la memoria normalmente se conectan por medio de tres grupos de líneas, cada una
Y LA M EM ORIA
llamada bus: bus de datos, bus de direcciones y bus de control (figura 5.14).
1. Los agujeros son más pequeños: 0.4 mieras de diámetro en lugar de 0.8 mieras usados
en los CD.
2. Las pistas están más cercanas entre sí.
3. El rayo es un láser rojo en vez de un infrarrojo. CPU Memoria
4. El DVD usa una de dos capas de grabación y puede ser de una cara o de doble cara.
u □ Bus de datos
Sal □
□
Bus de direcciones
Etiqueta 1---- 1 i—n
1__ i 1=3
: Capaíprotectora
C apa reflectante Tinte
ffl&& iH a H jp "'v SSnlSBi SSSBBSSm F ig u r a 5 .1 4 C o n e x ió n d e l C P U y la m e m o ria u san do tre s buses
j Amorfo (agujero)
R e s in a
Cristalino (superficie)
d e p o lic a rb o n a to B lIS de d a tO S El bus de datos está formado por varias líneas de control, cada una de las cuales transporta
1 bit a la vez. El número de líneas depende del tamaño de la palabra. Si la palabra mide 32
bits (4 bytes) en una computadora, se necesita un bus de datos con 32 líneas de modo que to
Ü-
■ dos los 32 bits de una palabra puedan transmitirse al mismo tiempo.
F ig u r a 5 .1 3
Origen del láser
C re a c ió n d e un C D -R W
I BlIS de direcciones E1 bus de direcciones permite el acceso a una palabra en particular en la memoria. El núme
ro de líneas en el bus de dirección depende del espacio de direccionamiento de la memoria.
Si la memoria tiene 2" palabras, el bus de direcciones necesita transportar n bits a la vez. Por
consiguiente, debe tener n líneas.
5 .4 In te rc o n e x ió n d e su b siste m a s 85
84 O r g a n iz a c ió n d e ia c o m p u ta d o ra
hasta a 1.5 MB/s. Tiene un bus de cuatro líneas de control; dos de ellos llevan energía eléc
Bus de con tro l El bus de control lleva la comunicación entre el CPU y la memoria. Por ejemplo, debe ha
trica al dispositivo. La figura 5.18 muestra la conexión de un USB a los buses.
ber un código enviado desde el CPU a la memoria para especificar una operación de lectura
y escritura. El número de líneas utilizadas en el bus de control depende del número total de
comandos de control que necesita la computadora. Si una computadora tiene 2'" acciones de
control, necesita m líneas para el bus de control porque m bits pueden definir 2'" operaciones
diferentes.
C O N E X IÓ N D i Los dispositivos E/S no pueden conectarse directamente a los buses que conectan el CPU y
DISPOSITIVOS E/S la memoria, dado que la naturaleza de los dispositivos E/S es diferente de la naturaleza del
CPU y la memoria. Los dispositivos E/S son dispositivos electromecánicos, magnéticos u óp
ticos, mientras que el CPU y la memoria son dispositivos electrónicos. Los dispositivos E/S
operan a una velocidad mucho más lenta que el CPU/memoria. Existe la necesidad de que un
intermediario maneje esta diferencia. Los dispositivos de entrada/salida se conectan a los bu
ses a través de lo que se conoce como controlador de entrada/salida o interfaz. Existe un
controlador específico para cada dispositivo de entrada/salida (figura 5.15).
F ig u r a 5 .1 6 C o n tro la d o r SCSI
C o n trolado res Los controladores o interfaces quitan el obstáculo entre la naturaleza del dispositivo E/S y el
CPU/memoria. Un controlador puede ser un dispositivo serial o paralelo. Un controlador se
rial tiene sólo una línea de conexión al dispositivo. Un controlador paralelo tiene varias líneas
de conexiones al dispositivo de modo que varios bits pueden transferirse a la vez.
Diversos tipos de controladores están en uso. Los más comunes actualmente son SCSI, Fi
reWire y USB.
F ig u r a 5 .1 7 C o n tro la d o r FireW ire
SCSI La interfaz pequeña de sistemas de computadoras (SCSI: sm all computer system
interface ) fue desarrollada en un principio para las computadoras Macintosh en 1984. Hoy
día se utiliza en muchos sistemas. Tiene una interfaz paralela con 8 , 16 y 32 líneas. La inter
faz SCSI ofrece una conexión en cadena margarita como se muestra en la figura 5.16. Ambos CPU Memoria
Bus de datos
extremos de la cadena deben estar terminados y cada dispositivo debe tener una dirección úni
ca (ID objetivo). Bus de direcciones
□
FireWire El estándar IEEE 1394 define una interfaz serial comúnmente llamada FireWi
re, la cual es una interfaz serial de alta velocidad que transfiere datos en paquetes, logrando
□ Bus de control -----
una velocidad de tasa de hasta 50 MB/s. Puede utilizarse para conectar hasta 63 dispositivos C o n tro la d o r
en una cadena o una conexión de árbol (usando sólo una línea). La figura 5.17 muestra la co € ■ U SB
nexión del dispositivo de entrada/salida a un controlador FireWire. No hay necesidad de ter
minación como en el controlador SCSI.
R a tó n T eclado
DIRECCIONAMIENTO El CPU por lo general utiliza el mismo bus para leer la memoria principal y el dispositivo E/S
CPU Memoria
D E D ISPO S IT IV O S DE o escribir datos en ellos. La única diferencia es la instrucción. Si la instrucción se refiere a
una palabra en la memoria principal, la transferencia de datos se realiza entre la memoria o
ENTRADA/SALIDA
principal y el CPU. Si la instrucción identifica un dispositivo de entrada/salida, la transferen
cia de datos es entre el dispositivo de entrada/salida y el CPU. Existen dos métodos para ma
nejar el direccionamiento de dispositivos E/S: E/S aislado y E/S por mapas de memoria.
E/S aislado En el método E/S aislado, las instrucciones utilizadas para la memoria de lectura/escritura 64001 j_________ J |_________ j 64003
de la memoria son totalmente diferentes de las instrucciones de lectura/escritura usadas pa 64002 i I‘I i 64004
ra los dispositivos E/S. Hay instrucciones para probar, controlar, leer de y escribir en dispo
sitivos de entrada/salida. Cada dispositivo de entrada/salida tiene su propia dirección. Las
direcciones de entrada/salida pueden traslaparse con las direcciones de memoria sin ningu
C o n tro la d o r
na ambigüedad debido a que la instrucción en sí misma es diferente. Por ejemplo, el CPU
puede usar el comando Read 05 para leer de la memoria la palabra 05 y utilizar el comando
Input 05 para leer del dispositivo de entrada/salida 05. No hay confusión debido a que el co F ig u r a 5 .2 0 D ire cc io n a m ie n to d e E/S p o r m apas d e m e m o ria
mando Read es para leer de la memoria y el comando Input es para leer desde un dispositi
vo de entrada/salida (figura 5.19),
65535 CICLO DE M ÁQ U INA El CPU utiliza ciclos de máquina repetidos para ejecutar instrucciones en el programa, una
por una, de principio a fin. Un ciclo simplificado puede consistir en tres pasos: buscar y traer
101 103
(fetch), decodificar (decode) y ejecutar (execute) (figura 5.21).
102 103
( Inicio
C o n tro la d o r
E/S p o r mapas En el método E/S por mapas de memoria, el CPU trata a cada registro en el controlador de
de memoria entrada/salida como una palabra en la memoria. En otras palabras, el CPU no tiene instruc
ciones separadas para transferir datos desde la memoria o desde dispositivos de entrada/sali
da. Por ejemplo, sólo existe una instrucción Read. Si la dirección define una palabra desde la
memoria, los datos se leen desde esa palabra. Si la dirección define un registro de un disposi
tivo de entrada/salida, los datos se leen desde ese registro. La ventaja de la configuración por
mapas de memoria es un pequeño número de instrucciones; todas las instrucciones de la me
moria pueden ser utilizadas por los dispositivos de entrada/salida. La desventaja es que la par
te del espacio de direccionamiento usado para la memoria se asigna a los registros en los
controladores de entrada/salida. Por ejemplo, si usted tiene cinco controladores de entrada/sa
lida y cada uno tiene cuatro registros, se utilizan 20 direcciones para este propósito. El tama
( Alto. )
ño de la memoria se reduce en 20 palabras. La figura 5.20 muestra el concepto de E/S por
mapas de memoria. Figura 5.21 Pasos d e un ciclo
8$ O r g a n iz a c ió n d e la c o m p u ta d o ra 5 .5 E je cu ció n d e p ro g ra m a s 89
Buscar y traer En el paso buscar y traer, la unidad de control ordena al sistema copiar la siguiente instruc
ción en el registro de instrucción en el CPU. La dirección de la instrucción a ser copiada se
mantiene en el registro del contador del programa. Después de copiar, el contador del progra Rl 070 Rl 070
ma se incrementa para referirse a la siguiente instrucción en la memoria. 071 071
R2 072 "AddRl R2R3 R2 072 A dd R l R 2 R3
0 7 •< 073
R3 R3
resultado de este paso de decodificación es código binario para algunas operaciones que rea 201 -10 01
(decode) 202 202
lizará el sistema. PC 072 PC
07! 071
me el contenido de dos registros de entrada y coloque el resultado en un registro de salida. R2 R2 A ddR l R2R3
072 A ddR l R2R3 072
Éste es el paso ejecutar. 073 073 S tore 202 R3
R3 R3
A d d R l R 2 R3 1 200
1 200
201 201
U N IjESVIPLO D E Veamos una operación muy simple como la suma de dos enteros. Una computadora con una 202
073 PC ] PC 2(0
CICLO DE M ÁQUINA arquitectura simple necesita al menos cuatro instrucciones para este trabajo. Las cuatro ins
trucciones y los dos enteros de entrada residen en la memoria antes de la ejecución del pro
grama; el resultado estará en la memoria después de la ejecución del programa. c. Después de la tercera instrucción d. Después de la cuarta instrucción
Aunque todo se representa mediante patrones de bits, por simplicidad suponga que los nú
meros y las direcciones están en decimales. También suponga que las instrucciones están en
las localidades de memoria 70, 71, 72 y 73. Los datos de entrada se almacenan en las loca Figura 5.23 Contenido de la memoria y el registro después de cada ciclo
lidades 200 y 201. Los datos de salida se almacenarán en la localidad de memoria 202.
La figura 5.22 muestra la memoria y el CPU antes de la ejecución del programa. R l, R2
P r im e r a operación En la primera operación (Load 200 R l), la máquina pasa por los tres pasos de buscar y traer,
y R3 son registros generales. R l y R2 alojan la entrada de datos; R3 aloja la salida de datos.
decodificar y ejecutar para cargar el contenido de la localidad de memoria 200 en el registro
El registro I es el registro de instrucción y PC es el contador del programa. La figura 5.23
muestra los resultados de cuatro operaciones en la memoria y los registros. de datos R l.
Segunda operación En la segunda operación (Load 201 R2), la máquina pasa por los tres pasos de buscar y traer,
decodificar y ejecutar para cargar el contenido de la localidad de memoria 201 en el registro
de datos R2.
Bus de datos
Tercera operación En la tercera operación (Add R l R2 R3), la máquina pasa por los tres pasos de buscar y traer,
decodificar y ejecutar para sumar los datos en R l y R2, y almacenar el resultado en R3.
Cuarta operación En la cuarta operación (Store 202 R3), la máquina pasa por los tres pasos de buscar y traer, de-
codificar y ejecutar para almacenar el resultado de la operación en la localidad de memoria 202 .
O P E R A C IÓ N D E Existe la necesidad de comandos para transferir datos desde los dispositivos E/S al CPU y la
E N T R A D A /S A L ID A memoria. Debido a que los dispositivos de entrada/salida operan a velocidades mucho más
lentas que el CPU, la operación del CPU debe sincronizarse de alguna manera con el dispo
sitivo de entrada/salida. Se han ideado tres métodos para esta sincronización: E/S programa
da, E/S manejada por interrupciones y acceso directo a memoria (DMA: direct memory
access).
Bus de direcciones E/S programada En el método de E/S programada, la sincronización es muy primitiva; el CPU espera el dis
positivo E/S. La transferencia de datos entre el dispositivo E/S y el CPU se realiza mediante
F ig u r a 5 .2 2 C o n te n id o d e ia m e m o ria y el re g istro antes d e la ejecu ción una instrucción en el programa. Cuando el CPU encuentra una instrucción E/S, no hace na-
91) O r g a n iz a c ió n d e la c o m p u ta d o ra 5 .5 E je cu ció n d e p ro g ra m a s 91
da más hasta que la transferencia está completa. El CPU revisa constantemente el estado de
la unidad de E/S; si el dispositivo está listo para transferir, los datos se transfieren al CPU. Si Instrucción previa
el dispositivo no está listo, el CPU continúa revisando el estado hasta que el dispositivo E/S Instrucción de E/S
está listo (figura 5.24). El gran problema aquí es que el tiempo del CPU se gasta en la revi
sión del estado del dispositivo E/S para cada unidad de datos a ser transferida. Observe que
los datos se transfieren a la memoria después de la operación de entrada; los datos se trans
fieren desde la memoria antes de la operación de salida.
Instrucción previa
Interrupción
Transferir
u n a palabra
Siguiente instrucción
CPU Memoria
T ra n sfe re n c ia d el b lo q u e
F ig u r a 5 .2 4 E/S p ro g ra m a d a d e d a to s (5)
E/S m anejada En el método de E/S manejada por interrupciones, el CPU informa al dispositivo E/S que D irecció n
D ato s (3)
va a ocurrir una transferencia, pero no prueba el estado del dispositivo E/S de manera conti DMA
p o r in terrupcion es C o n tro la d o r
nua. El dispositivo E/S informa (interrumpe) al CPU cuando está listo. Durante este tiempo, C o n tro l
d el d isco
el CPU puede hacer otros trabajos como ejecutar otros programas o transferir datos desde o C onteo A C K (4)
; B u ffe r
hacia otros dispositivos E/S (figura 5.25).
En este método, el tiempo del CPU no se desperdicia. Mientras que el dispositivo E/S len
D isco
to está terminando una tarea, el CPU puede hacer algo más. Observe que, al igual que la E/S
programada, este método también transfiere datos entre el dispositivo y el CPU. Los datos se
transfieren a la memoria después de la operación de entrada; los datos se transfieren desde la F ig u r a 5 .2 6 C o n e x ió n D M A al bus g en e ral
memoria después de la operación de salida.
Acceso directo El tercer método de transferencia de datos es el acceso directo a memoria (DMA). Este mé lida), la dirección de inicio de la localidad de memoria y el número de bytes a ser transferi
a m em oria (D M A) todo transfiere un bloque grande de datos entre un dispositivo E/S de alta velocidad, por ejem dos. El CPU ahora está disponible para otros trabajos.
plo un disco, y la memoria directamente (sin pasar por el CPU). Esto requiere un controlador Cuando está listo para transferir datos, el controlador DMA informa al CPU que necesita
DMA que libera al CPU de algunas de sus funciones. El controlador DMA tiene registros pa tomar control de los buses. El CPU deja de usar los buses y permite que el controlador los
ra mantener un bloque de datos antes y después de la transferencia a la memoria. La figura use. Después de la transferencia de datos, directamente entre el DMA y la memoria, el CPU
5.26 muestra la conexión DMA para el bus general. En este método, para una operación E/S continúa su operación normal (figura 5.27). Observe que en este método el CPU queda inac
el CPU envía un mensaje al DMA. El mensaje contiene el tipo de transferencia (entrada o sa- tivo durante un breve lapso.
92 O r g a n iz a c ió n d e la c o m p u ta d o ra 5 .8 R esu m e n 93
RISC son las siglas en inglés de computadora con conjunto de instrucciones reducidas (re
Instrucción previa
duced instruction set computer). La estrategia en que se basa la arquitectura RISC es tener un
Instrucción de E/S
conjunto pequeño de instrucciones que realicen un número mínimo de operaciones simples.
Las instrucciones complejas se simulan usando un subconjunto de instrucciones simples. Es
to provoca que la programación en RISC sea más difícil y extensa que en el otro diseño, porque
la mayoría de las instrucciones complejas son simuladas usando instrucciones simples.
Un ejemplo de la arquitectura RISC es la serie de procesadores PowerPC utilizada en las
computadoras Apple.
3 El contenido de la ROM viene del fabricante; sólo se 3 Un CD-RW es un dispositivo de almacenamiento óptico 25. ¿Cuál es la ventaja del CD-RW sobre el CD-ROM y el 43. Una unidad de control con cinco líneas de control puede
permite a los usuarios leerla, pero no escribir en ella. en el cual el usuario quema los datos en el disco. Los da CD-R? definir h asta_________operaciones.
I Las computadoras necesitan una memoria de alta velo tos pueden borrarse y se puede volver a escribir en el 26. Compare y contraste los agujeros y las superficies en los a. 5
cidad para los registros, memoria de velocidad media disco varias veces. tres tipos de discos compactos. b. 10
para la memoria caché y memoria de baja velocidad pa c. 16
3 Un DVD es un dispositivo de almacenamiento óptico de 27. Compare y contraste la lectura de los datos en los tres ti
ra la memoria principal. d. 32
gran capacidad. pos de discos compactos.
3 El subsistema de entrada/salida es una colección de dis 44. Una palabra e s ________ bits.
28. ¿Cómo se borran los datos en un CD-RW?
positivos que permite a una computadora comunicarse 3 Un bus de datos, un bus de direcciones y un bus de con
a. 8
con el mundo exterior. trol conectan el CPU a la memoria. 29. ¿En qué difiere un DVD de un disco compacto?
b. 16
3 Estos dispositivos son ya sea dispositivos de almacena 3(1. ¿Cuáles son las funciones de los tres buses que conectan c. 32
3 Un controlador maneja las operaciones de E/S entre el
miento o dispositivos que no son de almacenamiento. el CPU con la memoria? d. cualquiera de los anteriores
CPU/memoria y los dispositivos E/S más lentos. SCSI,
3 El teclado, el monitor y la impresora son ejemplos de FireWire y USB son controladores comunes. 31. ¿Cuál es la función de los controladores de dispositivos
45. Si el espacio de direccionamiento de la memoria es 16
dispositivos que no son de almacenamiento. E/S? MB y el tamaño de palabra es ocho bits, entonces se re
3 Un disco magnético es un dispositivo de almacenamien 3 Existen dos métodos para manejar el direccionamiento
32. ¿Qué es un controlador SCSI? quieren _________bits para tener acceso a cada palabra.
to formado por discos apilados, con cada disco en la pi de dispositivos E/S: E/S aislado y E/S por mapas de me
moria. 33. ¿Qué es la interfaz FireWire? a. 8
la dividido en pistas y sectores.
34. ¿Qué es el controlador USB? b. 16
3 La cinta magnética es un dispositivo de almacenamien- ■ Para ejecutar una instrucción en un programa, el CPU c. 24
to en el cual la cinta se divide en pistas. El acceso a los primero busca y trae la instrucción, la decodifica y lue 35. Compare y contraste los dos métodos para manejar el di
d. 32
datos es secuencial. go la ejecuta. reccionamiento de dispositivos E/S.
46. Los datos e n ________ se borran si la computadora se
3 Un CD-ROM es un dispositivo de almacenamiento ópti 36. ¿Cuáles son los pasos en un ciclo de máquina?
co en el cual el fabricante quema los datos en el disco. ® Hay tres métodos para sincronizar el CPU con el dispo apaga.
37. Compare y contraste los tres métodos para manejar la
Los datos no pueden borrarse. sitivo E/S: E/S programada, E/S manejada por interrup a. RAM
ciones y DMA. sincronización del CPU con los dispositivos E/S.
3 Un CD-R es un dispositivo de almacenamiento óptico en b. ROM
38. Compare y contraste la arquitectura CISC con la arqui c. una unidad de cinta
el cual el usuario quema los datos en el disco. Los datos 3 Los dos diseños para la arquitectura de CPU son CISC tectura RISC. d. un CD-ROM
no pueden borrarse. y RISC.
47 . _________ es un tipo de memoria con capacitores que
PREGUNTAS DE OPCIÓN MÚLTIPLE necesitan refrescarse periódicamente.
39. E l es un subsistema de computadora que rea
a. SRAM
5 ,9 PR Á C T IC A liza operaciones con los datos. b. DRAM
a. CPU c. ROM
P R E G U N T A S D i REPASO 14. Comente los niveles de velocidad de la memoria y el ti b. memoria d. todas las anteriores
1. ¿Cuáles son los tres subsistemas que forman una compu po de memoria que usa cada uno. c. hardware de E/S
48. _________ es un tipo de memoria con puertas flip-flop
tadora? 15. Dé ejemplos de dispositivos E/S que no sean de almace d. ninguno de los anteriores
tradicionales para alojar datos.
2. ¿Cuáles son las partes de un CPU? namiento.
40. ________ es una localidad de almacenamiento indepen a. SRAM
3. ¿Cuál es la función del ALU? 16. ¿Cuáles son las dos clases principales de dispositivos de diente que aloja los datos temporalmente. b. DRAM
almacenamiento?
4. ¿Cuáles son los diferentes tipos de registros? Descríbalos. a. Un ALU c. ROM
17. Describa los componentes físicos de un disco magnético. b. Un registro d. todas las anteriores
5. ¿Cuál es la función de la unidad de control?
18. ¿Cómo está organizada la superficie de un disco mag c. Una unidad de control 49. H ay________ bytes en 16 terabytes.
6 . ¿Cuál es la diferencia entre una palabra y un byte? nético? d. Una unidad de cinta
7. ¿Cuál es la función de la memoria principal? a. 2 16
19. ¿Qué factores afectan el rendimiento de un disco mag 41. _________es una unidad que puede sumar dos entradas. b. 240
8 . ¿Cómo se relaciona la aproximación de un megabyte nético?
a. Un ALU c. 244
con el número real de bytes?
20. Describa los componentes físicos de una cinta magnética. b. Un registro d. 256
9. ¿Qué tipo de representación de números se utiliza para c. Una unidad de control
21. ¿Cómo está organizada la superficie de una cinta mag 50. L a ____________ puede programarse y borrarse usando
representar direcciones de memoria? d. Una unidad de cinta
nética? impulsos electrónicos, pero puede permanecer en una
10. ¿Cuál es la diferencia entre RAM y ROM?
22. ¿Cómo se accede a los datos en una cinta magnética? 42. Un registro en un CPU puede alojar________ . computadora durante el borrado.
11. ¿Cuál es la diferencia entre SRAM y DRAM?
23. Mencione cinco tipos de dispositivos de almacenamien a. datos a. ROM
12. Comente las diferencias entre PROM, EPROM y EE- to óptico. b. instrucciones b. PROM
PROM. c. EPROM
24. ¿Quién escribe los datos en un CD-ROM?, ¿en un c. valores del contador de programa
13. ¿Cuál es el propósito de la memoria caché? CD-R?, ¿en un CD-RW? d. todos los anteriores d. EEPROM
96 O r g a n iz a c ió n de ia c o m p u ta d o ra 5 .9 P rá ctica 97
51. L a es un tipo de memoria en la cual el usua 59. E l ________ es un dispositivo de almacenamiento que 67. Un bus d e _________conecta el CPU y la memoria. 75. En el m étodo_________ para sincronizar la operación
rio, no el fabricante, almacena programas que no pueden puede sufrir múltiples escrituras y borrados. del CPU con el dispositivo E/S, el dispositivo E/S infor
a. datos
sobrescribirse. a. CD-ROM ma al CPU cuando está listo para transferir datos.
b. direcciones
a. ROM b. CD-R c. control a. E/S programada
b. PROM c. CD-RW d. todos los anteriores b. E/S manejada por interrupciones
c. EPROM d. todos los anteriores
d. EEPROM
68. Si el tamaño de palabra es 2 bytes, se necesita un bus de c. DMA
60. El área de almacenamiento más pequeña en un disco datos co n _________líneas. d. E/S aislado
52. Los registros del CPU deben tener memoria d e _______ . magnético a la cual se puede tener acceso a la vez es 76. En el m étodo_________ para sincronizar la operación
a. 2
a. alta velocidad del CPU con el dispositivo E/S, el CPU está inactivo
b. 4
b. velocidad media a. pista hasta que se termina la operación de E/S.
c. 8
c. baja velocidad b. sector d. 16 a. E/S programada
d. cualquiera de las anteriores c. frame
69. Si la memoria tiene 232 palabras, el bus de direcciones b. E/S manejada por interrupciones
53. La memoria principal en una computadora por lo ge d. cabeza c. DMA
necesita tener_________líneas.
neral consiste de grandes cantidades de memoria de 61. Para un disco magnético, el tiempo d e _________es el d. E/S aislado
a. 8
tiempo que le toma a la cabeza de lectura/escritura mo b. 16 77. En el m étodo_________ para sincronizar la operación
a. alta velocidad verse a la pista deseada donde se almacenan los datos. c. 32 del CPU con el dispositivo E/S, un bloque de datos gran
b. velocidad media
a. rotación d. 64 de puede pasarse directamente de un dispositivo E/S a la
c . baja velocidad
b. búsqueda memoria.
d. cualquiera de las anteriores 70. Un bus de control con ocho líneas puede definir
c. transferencia a. E/S programada
________ operaciones.
54. La m em oria_________contiene una copia de una por d. localidad b. E/S manejada por interrupciones
ción de la memoria principal. a. 8
62. La resina de policarbonato se utiliza en lo s ________ . c. DMA
a. CPU b. 16
a. CD-ROM d. E/S aislado
b. caché c. 256
b. CD-R d. 512
c. principal
c. CD-RW
d. ROM 71. El controlador________ presenta una interfaz paralela y
d. todos los anteriores
55. _________es un dispositivo E/S que no es de almacena una conexión en cadena para dispositivos E/S. 78. Una computadora tiene 64 MB (megabytes) de memo
miento. 63. En u n , un rayo láser de alta potencia simula a. SCSI ria. Cada palabra mide 4 bytes. ¿Cuántos bits se necesi
agujeros en una aleación de plata, indio, antimonio y te b. FireWire tan para asignar una dirección a cada palabra individual
a. el teclado
lurio. c. USB en la memoria?
b. el monitor
c. la impresora a. CD-ROM d. IDE 79. ¿Cuántos bytes de memoria se necesitan para almacenar
d. todos los anteriores b. CD-R una pantalla de datos completa si la pantalla se forma de
72. El controlador________ es un dispositivo serial que co
c. CD-RW 24 líneas con 80 caracteres en cada línea? El sistema uti
56. U n _________es un dispositivo de almacenamiento óp necta dispositivos lentos como el teclado y el ratón a la
d. todos los anteriores liza código ASCII, cada carácter ASCII es almacenado
tico. computadora.
a. CD-ROM 64. En u n , un rayo láser de alta potencia simula como un byte.
a. SCSI
b. CD-R agujeros en la capa de tinte. b. FireWire 80. Una computadora imaginaria tiene cuatro registros de
c. CD-RW a. CD-ROM c. USB datos (RO a R l), 1024 palabras en la memoria y 16 ins
d. todos los anteriores b. CD-R d. IDE trucciones diferentes (sumar, restar, etc.). ¿Cuál es el
c. CD-RW tamaño mínimo de una instrucción en bits, si una ins
57. E l es un dispositivo de almacenamiento en el 73. El controlador_________ es una interfaz serial de alta
d. todos los anteriores trucción típica utiliza el formato add 565 R2?
cual el fabricante escribe información en el disco. velocidad que transfiere datos en paquetes.
a. CD-ROM 65. ¿Cuál dispositivo de almacenamiento óptico tiene la ma a. SCSI 81. Si la computadora del ejercicio 80 utiliza el mismo ta
b. CD-R yor capacidad? b. FireWire maño de palabra para los datos y las instrucciones, ¿cuál
c. CD-RW a. CD-ROM c. USB es el tamaño para cada registro de datos?
d. todos los anteriores b. CD-R d. IDE 82. ¿Cuál es el tamaño del registro de instrucciones de la
58. E l es un dispositivo de almacenamiento en el c. CD-RW
74. Los tres pasos en la ejecución de un programa en una computadora del ejercicio 80?
cual el usuario puede escribir información sólo una vez d. DVD
computadora se realizan en este orden específico:
en el disco. 83. ¿Cuál es el tamaño del contador de programa de la com
66 . En un DVD, un rayo_________lee el disco.
putadora del ejercicio 80?
a. CD-ROM a. láser de alta potencia a. buscar y traer, ejecutar y decodificar
b. CD-R b. infrarrojo b. decodificar, ejecutar y buscar y traer 84. ¿Cuál es el tamaño del bus de datos en el ejercicio 80?
c. CD-RW c. láser rojo c. buscar y traer, decodificar y ejecutar 85. ¿Cuál es el tamaño del bus de direcciones en el ejercicio
d. todos los anteriores d. láser azul d. decodificar, buscar y traer, y ejecutar 80?
98 O r g a n iz a c ió n de la c o m p u ta d o ra
86 . ¿Cuál es el tamaño mínimo del bus de control en el ejer 88 . Una computadora utiliza direccionamiento de E/S por
cicio 80? mapas de memoria. El bus de direcciones utiliza 10 lí
87. Una computadora utiliza direccionamiento de E/S aisla neas (10 bits). Si la memoria está formada por 1000 pa
do. La memoria tiene 1024 palabras. Si cada controla labras, ¿a cuántos controladores de cuatro registros se
dor tiene 16 registros, ¿a cuántos controladores se puede puede tener acceso mediante esta computadora?
tener acceso mediante esta computadora?
Redes de
computadoras
En este capítulo primero definimos una red de computadoras. Luego estudiamos el modelo
ÓSI que define teóricamente cómo deben interactuar entre sí los componentes de una red.
Enseguida analizamos las categorías de redes como LAN, MAN y WAN. Asimismo mostra
mos cómo conectar redes, mediante dispositivos de conexión, para formar un conjunto de
redes interconectadas o una interred. Después analizamos Internet y el conjunto de protoco
los TCP/IP que la controla, incluyendo algunas de las aplicaciones en Internet.
6 .2 M o d e lo OSI 101
100 R e d e s d e c o m p u ta d o ra s
Una red de computadoras es una combinación de sistemas (por ejemplo, una computadora) Presentación
conectados mediante un medio de transmisión (por ejemplo, un alambre, un línea de control
o el aire). Una red de computadoras puede abarcar un área geográfica pequeña, mediana o Sesión
grande. En el primer caso, la red es una red de área local (LAN: local area network). En el
segundo, la red es una red de área metropolitana (MAN: metropolitan area network), y en el Transporte
tercero se trata de una red de área amplia (WAN: wide area network). Discutiremos las redes
LAN, MAN y WAN más adelante en este capítulo. Estos tres tipos de redes también pueden
Red
conectarse por medio de dispositivos de conexión para formar un conjunto de redes interco-
nectadas (o interred).
Enlace de datos
M O D ELO En este capítulo, usamos con frecuencia dos términos: modelo y protocolo. Un modelo es la
Físico
Y PROTOCOLO especificación establecida por una organización de estándares como un estándar para el dise
ño de redes. Un protocolo, por otra parte, es un conjunto de reglas que controla la interacción
de diferentes dispositivos en una red o en un conjunto de redes interconectadas. La sección si F ig u r a 6 .1 El m o d e lo OSI
guiente presenta la recomendación OSI como un modelo. Posteriormente, se define TCP/IP
como el conjunto de protocolos oficial de Internet.
D is p o s itiv o D is p o s itiv o
6.2 MODELO OSI A
Para lograr que todos los componentes de una red o de un conjunto de redes interconectadas
se coordinen correctamente, se requiere un modelo que muestre la relación entre los compo
nentes y la función de cada componente. La Interconexión de sistemas abiertos (OSI: Open
Systems. Interconnection) es un modelo de éstos. El modelo OSI fue diseñado por la Organi
zación para la Estandarización Internacional (ISO: International Standard Organization). En
teoría, el modelo permite que dos sistemas distintos (por ejemplo, computadoras) se comuni
quen sin importar su arquitectura subyacente.
SIETE CAPAS El modelo OSI es un marco de referencia de siete capas que da a los diseñadores de redes una
idea de la funcionalidad de cada capa independiente pero relacionada. Cada capa tiene un
nombre: físico (capa 1), de enlace de datos (capa 2), de red (capa 3), de transporte (capa 4),
de sesión (capa 5), de presentación (capa 6) y de aplicación (capa 7) (figura 6.1). El modelo
OSI no establece que cada dispositivo involucrado en una red debe implementar las siete
capas. Un dispositivo puede necesitar sólo una capa, dos capas, tres capas o todas las capas. F ig u r a 6 .2 Flujo d e d a to s en el m o d e lo OSI
El número de capas depende de la funcionalidad del dispositivo y de su ubicación en la red.
La figura 6.2 representa la función de las capas cuando un mensaje se envía desde un dis
positivo A hasta un dispositivo B. Conforme el mensaje viaja de A a B, puede atravesar mu
chos nodos intermedios (no aparecen en la figura). Estos nodos intermedios por lo general
fu n c io n es Esta sección describe brevemente las funciones de cada capa en el modelo OSI.
involucran sólo las primeras tres capas del modelo OSI.
Como lo muestra la figura, antes de que los datos se envíen al medio de transmisión, és DE LAS CAPAS
tos se desplazan hacia abajo a través de las siete capas hasta que llegan a la capa física. En
cada capa se añade información de control a los datos en forma de encabezados (headers) o
caracteres de control (trailers). Los encabezados se añaden a los datos en las capas 7, 6 , 5, Capa física La capa física es responsable de la transmisión de un flujo de bits a través de un medio físi
4, 3 y 2. Los caracteres de control se añaden en la capa 2. En la máquina receptora, el enca co. Codifica y decodifica los bits en grupos de bits. Luego transforma un flujo de bits en una
bezado o los caracteres de control se dejan caer en cada capa a medida que se desplazan ha señal. Las especificaciones físicas y mecánicas de los dispositivos físicos se determinan me
cia la séptima capa. diante la capa física.
102 R ed es d e c o m p u ta d o ra s 6 .3 C a te g o ría s d e re d es 103
C apa de enlace La capa de enlace de datos organiza los bits en unidades lógicas llamadas bloques de da-: descomprime los datos para un mejor rendimiento. Cifra y descifra los datos por razones de
d e datos tos (frames) ‘. Un bloque de datos contiene información de la capa de red. La capa de enlace. seguridad (véase el capítulo 16). Al igual que ocurre con la capa de sesión, actualmente la ma
de datos añade un encabezado y caracteres de control para definir el bloque de datos para las - yoría de las implementaciones no utiliza una capa de presentación. Esto no significa que las
estaciones receptora o intermedia. En particular, a los datos se añade información de direc funciones definidas para la capa de presentación no sean necesarias, simplemente significa
cionamiento, por lo general en forma de dos direcciones. Esto define las direcciones de dos: que las redes actuales han asignado estas responsabilidades a otras capas. Por ejemplo, el ci
estaciones contiguas, una que envía y otra que recibe. Observe que la capa de enlace de da frado/descifrado se realiza tanto en la capa de red como en la capa de aplicación.
tos es responsable sólo de la entrega nodo a nodo del bloque de datos (de una estación a-
otra). Cuando una estación recibe un bloque de datos (no destinado para sí misma), cambia C apS d e a p lic a c ió n La capa de aplicación permite que el usuario, ya sea una persona o software, tenga acceso a
la dirección de origen a su propia dirección y la dirección de destino a la dirección de la es la red. Define aplicaciones comunes que pueden implementarse para simplificar el trabajo del
tación siguiente. La capa de enlace de datos a menudo es responsable del manejo de errores usuario. Analizaremos algunas de estas aplicaciones más adelante en este capítulo en la sec
entre dos estaciones contiguas. Los datos redundantes se añaden en los caracteres de control; ción sobre Internet.
ya sea para detectar errores o para corregirlos.
Capa de re d La capa de enlace de datos se encarga de la entrega nodo a nodo de un bloque de datos entre
dos estaciones contiguas; la capa de red es responsable de la entrega de un paquete (la unidad 63 CATEGORIAS DE REDES
de datos manejada por la capa de red se llama paquete ) entre el origen y el destino final. Para
realizar esta tarea, la capa de red añade un encabezado a la unidad de datos proveniente de la Ahora que se tiene un modelo para la comunicación, podemos dividir las redes en tres cate
capa superior que incluye, entre otras cosas, una dirección de origen y una dirección de desti-, gorías principales: redes de área local (LAN), redes de área metropolitana (MAN) y redes de
no. Estas direcciones comúnmente se llaman direcciones lógicas (o, como se verá posterior área amplia (WAN) (figura 6.3).
mente en este capítulo, direcciones IP) para distinguirlas de las direcciones físicas. Para la
comunicación global, una dirección lógica debe ser única. Note que cuando un paquete se tras
lada del origen a un destino, la dirección física (añadida a la capa de enlace de datos) cambia
de estación a estación, pero la dirección lógica permanece intacta del origen al destino.
R edes
Capa de tra n sp orte La capa de transporte es responsable de la entrega del origen al destino (punto a punto)
del mensaje completo. Observe la diferencia entre la responsabilidad de la capa de red y la
capa de transporte. La capa de red es responsable de la entrega punto a punto de paquetes in
dividuales. La capa de transporte, en cambio, es responsable de la entrega punto a punto de R ed d e á re a local R e d d e área i R ed de área
todo el mensaje. Un mensaje puede conformarse por uno o más paquetes. La capa de trans (L A N ) m etropolitana (M A N ) g (W AN)
porte es responsable de dividir el mensaje en varios paquetes y entregarlos a la capa de red,
la cual envía los paquetes al exterior uno a uno, independientes uno del otro. Algunos paque
F ig u r a 6 .3 C a te g o ría s d e redes
tes pueden llegar desordenados a su destino, mientras que otros pueden perderse en el cami
no. La capa de transporte es responsable de asegurar que se transmita el mensaje completo
desde el origen al destino. Si los paquetes se pierden, deben retransmitirse. Si los paquetes
llegan desordenados, deben reorganizarse. En resumen, la capa de transporte considera al RED DE Á R EA Una red de área local (LAN) está diseñada para permitir el uso compartido de recursos
mensaje como una entidad integral que debe entregarse a la capa de transporte en el destino. LOCAL (LAN) (hardware, software y datos) entre computadoras. Una LAN puede definirse simplemente co
mo una combinación de computadoras y dispositivos periféricos (por ejemplo, impresoras)
Capa de sesión La capa de sesión está diseñada para controlar el diálogo entre los usuarios. Establece, man conectados mediante un medio de transmisión (por ejemplo, línea de control). La figura 6.4
tiene y sincroniza el diálogo entre sistemas que se comunican. También añade lo que se llama muestra tres ejemplos de LAN.
puntos de sincronización para respaldar la entrega en caso de un fallo en el sistema o la red. La primera LAN en la figura utiliza una topología de bus en la cual las computadoras se
Los puntos de sincronización dividen un mensaje largo en mensajes más pequeños y se asegu conectan a través de un medio común llamado bus. En esta configuración, cuando una esta
ran de que el receptor reciba y reconozca cada sección. En este caso, si hay una falla en el sis ción envía un bloque de datos a otra computadora, todas las computadoras reciben el bloque
tema o la red, no es necesario que el emisor reenvíe el mensaje completo. El emisor puede de datos y revisan su dirección de destino. Si la dirección de destino en el encabezado del blo
desplazarse al último punto de sincronización y reenviar el mensaje desde ese punto. La ma que de datos coincide con la dirección física de la estación, el bloque de datos se acepta y los
yoría de las implementaciones de red actuales no utiliza una capa de sesión separada. Si se re datos contenidos en él se procesan; de lo contrario, el bloque de datos se desecha. Un proble
quieren los servicios de una capa de sesión, por lo general se incluyen en la capa de aplicación. ma importante en este tipo de topología es la eliminación del bloque de datos. Una topología
de bus utiliza terminadores de línea de control diseñados para dar fin electrónicamente a la
Capa de La capa de presentación se ocupa de la sintaxis (formato) y la semántica (significado) de la señal que reciben. Si los terminadores de línea de control no están funcionando, la señal re
presentación información intercambiada entre dos sistemas. Se enfrenta al hecho de que diferentes siste botará de ida y vuelta entre los dos puntos de manera que cada estación la recibirá una y otra
mas utilizan métodos de codificación distintos (por ejemplo, ASCII y Unicode). Comprime y vez, lo cual es una situación poco deseable.
La segunda LAN en la figura utiliza una topología de estrella en la cual las computado
s N. del traductor. E n la literatura de computación a los bloques de datos tam bién se les conoce como
ras se conectan a través de un concentrador (hub), un dispositivo que facilita la conexión, o
tramas. un conmutador (switch), un concentrador sofisticado que controla el envío del bloque de da-
104 R ed es de c o m p u ta d o ra s 6 .4 D is p o s itiv o s d e c o n e x ió n
Figura 6 .4 LAN
REDES DE ÁREA Una red de área metropolitana (MAN) utiliza servicios proporcionados por una empresa de
M ETROPOLITANA comunicaciones (proveedor de servicios de red) común, tal como la compañía telefónica.
(M AN) Abarca una ciudad o un pueblo y ofrece sus servicios a usuarios individuales u organizacio Figura 6 .6 WAN
nes. Los usuarios individuales pueden conectar sus computadoras a la red y las organizacio
nes pueden conectar sus LAN a la red (figura 6.5). Muchas compañías telefónicas proveen un
servicio de MAN generalizado llamado servicios de datos conmutados mutlimegabit (SMDS:
switched multimegabit data services).
6.4 DISPOSITIVOS DE CONEXIÓN
RED DE Á R EA Una red de área amplia (WAN) es la conexión de computadoras individuales o LAN distri
A M PLIA (W AN) buidas en una gran área (estado, país, el mundo). Las WAN, al igual que las MAN, están ins Los tres tipos de redes que acabamos de presentar pueden conectarse usando dispositivos de
taladas y administradas por empresas de comunicaciones comunes (figura 6 .6). Observe que conexión. La interconexión de redes hace posible la comunicación global desde un extremo
una persona que usa una línea telefónica para conectarse a un proveedor de servicios de In del mundo al otro. Los dispositivos de conexión pueden dividirse en cuatro tipos con base en
ternet (PSI) utiliza una WAN. El PSI negocia las cuotas de los servicios directamente con la su funcionalidad según su relación con las capas del modelo OSI: repetidores, puentes, enru-
compañía telefónica y recibe el pago de sus clientes (usuarios de Internet). tadores y gateways. Los repetidores y los puentes por lo general conectan dispositivos en una
R e d e s d e c o m p u ta d o ra s 6 .4 D is p o s itiv o s d e c o n e x ió n 107
red. Los enrutadores y las gateways habitualmente interconectan redes en un conjunto de re Cuando una red utiliza una topología de bus, todas las estaciones comparten el medio. En
des (interred) (figura 6.7). otras palabras, cuando una estación envía un bloque de datos, esta estación ocupa el bus co
mún y ninguna otra estación tiene permitido enviar un bloque de datos (si lo hace, los dos blo
ques colisionan). Esto implica una disminución en el rendimiento. Las estaciones necesitan
esperar a que se libere el bus. Esto es similar a un aeropuerto que sólo tiene una pista de ate
Dispositivos rrizaje; cuando un avión utiliza la pista, otro avión listo para despegar debe esperar.
de conexión Un puente es un controlador de tráfico. Puede dividir un bus grande en segmentos más pe
queños de manera que cada segmento sea independiente respecto al tráfico. Un puente insta
lado entre dos segmentos puede pasar o bloquear el paso de bloques de datos con base en la
dirección de destino que tengan los mismos. Si se origina un bloque de datos en un segmen
Dispositivos Dispositivos de redes!
de red interconectadas to y la dirección de destino está en el mismo segmento, no hay razón para que el bloque pa
se el puente y viaje por otros segmentos. El puente utiliza una tabla para decidir si el bloque
debe reenviarse a otro segmento. Con un puente, dos o más pares de estaciones pueden co
municarse al mismo tiempo (figura 6.9).
Repetidores Puentes Enrutadores Gateways
□
REPETIDORES Un repetidor es un dispositivo electrónico que regenera los datos. Extiende la longitud físi- ^
a. Sin puente
ca de una red. Conforme se transmite una señal, ésta puede perder fuerza y un receptor pue- w.
de interpretar una señal débil erróneamente. Un repetidor puede regenerar una señal y
enviarla al resto de la red. La figura 6.8 muestra una red con y sin repetidor.
Q
Puente
□ b. Con puente
a. Sin repetidor
F ig u r a 6 .9 P u en te
b. Con repetidor Además de sus deberes de control de tráfico, un puente también funciona como un repe
tidor al regenerar el bloque de datos. Como se vio anteriormente, esto significa que un puen
te opera en la capa física, pero debido a que necesita interpretar la dirección incrustada en el
F ig u r a 6 .8 R e p e tid o r
bloque de datos para tomar decisiones de filtrado, también opera en la capa de enlace de da
tos del modelo OSI.
Los repetidores operan sólo en la capa física del modelo OSI. No reconocen las direccio
nes físicas ni lógicas. Simplemente regeneran cada señal que reciben. Los repetidores, cuyo
Los puentes operan en las dos prim eras capas del modelo OSI.
uso se volvió generalizado cuando la topología de bus era la dominante, con frecuencia co
nectaban dos buses para ampliar la longitud de la red.
mentos (con una estación por segmento) usando un conmutador de 20 interfaces. En este ca
so, un conmutador aumenta el rendimiento; una estación que necesita enviar un bloque de da
tos los envía directamente al conmutador. Los medios no se comparten; cada estación se
conecta directamente al conmutador (figura 6 .10).
Conmutador
F ig u r a 6 .1 1 E n ru ta d o re s en una in te rre d
F ig u r a 6 .1 0 C o n m u ta d o r Aplicación Gateway
Presentación
Sesión
ENRUTADORES Los enrutadores son dispositivos que conectan redes LAN, MAN y WAN. Un enrutador ope
ra en la tercera capa del modelo OSI. Mientras que un puente filtra un bloque de datos con Transporte
base en la dirección física (capa de enlace de datos) del bloque, un enrutador elige la ruta que Red IIJyEnnitador
seguirá un paquete con base en la dirección lógica (capa de red) del paquete. Enlace de datos |É í Puente .
Físico Repetidor g*
Los enrutadores operan en las primeras tres capas del modelo OSI. F ig u r a 6 .1 2 D isp o sitivo s d e co n e x ió n y el m o d e lo OSI
^ — — n m m m nm m m m m m m m m nrrpnm m m m rt
En tanto que un puente puede conectar dos segmentos de un LAN o dos LAN pertenecien La figura 6.12 presenta la relación entre los dispositivos de conexión y el modelo OSI.
MODELO OSI
tes a la misma organización, un enrutador puede conectar dos redes independientes: una LAN Y D ISP O S IT IV O S
a una WAN, una LAN a una MAN, una WAN a otra WAN, y así sucesivamente. El resultado
DE CONEXIÓN
es un conjunto de redes interconectadas (o interred). Usted verá en breve que Internet (la úni
ca interred a escala mundial), la interred que conecta al mundo entero, es un ejemplo de un
conjunto de redes interconectadas donde muchas redes se conectan entre sí por medio de en-
rutadores. La figura 6.11 muestra un ejemplo de un conjunto de redes interconectadas.
Aplicación
129.10.7.30
Presentación FTP SM TP TELNET HTTP
Notación con punto decimal
S e sió n .
F ig u r a 6 .1 4 D ire ccio n es IP en n o ta c ió n con p u n to d ecim al
D ireccio n am ien to TCP/IP requiere que cada computadora conectada a Internet se identifique mediante una di
rección internacional única. Esta dirección a veces se conoce como dirección Internet o di
rección IP.
Cada dirección Internet consiste de 4 bytes (32 bits). Para abreviar la forma de 32 bits y
facilitar su lectura, las direcciones Internet por lo general se escriben en forma decimal con
puntos decimales que separan los bytes: notación con punto decimal. La figura 6.14 mues
tra el patrón de bits y el formato decimal de una posible dirección. Figura 6.15 M o d e lo d ie n te -s e rv id o r
R ed es d e c o m p u ta d o ra s 6 .5 In te rn e t y T C P /IP | Q
P ro to co lo de El protocolo estándar en Internet para transferir un archivo desde una máquina a otra es
protocolo de transferencia de archivos (FTP: file transfer protocol). FTP se diseñó pai Equipo
transferen cia de escritorio
d e archivos (FTP) responder a Los problemas tradicionales relativos a la transferencia de archivos. Uno de li
problemas son los diferentes sistemas de codificación en uso; una máquina puede utilizar A!
CII y la otra, Unicode. Otro problema son los distintos formatos de archivo en uso. FTP ¡
diseñó para resolver estos problemas.
FTP establece dos conexiones entre las computadoras que se comunican: uno para
transferencia de datos y el otro para información de control (comandos y respuestas). La c< Cliente
nexión de control está presente durante toda la sesión FTP; la conexión de datos está prese: SMTP
te sólo cuando hay datos a transferir (figura 6.16).
, V T ,
1-4 T 1-4
( Internet j¡¡
Datos
Figura 6 .1 8 D ire ccio n e s d e co rre o e le c tró n ic o
Figura 6.16 FTP
P ro to co lo sim ple Por mucho, la aplicación más popular en Internet de hoy es el correo electrónico (email) P
Pero no existe un programa cliente-servidor en Internet llamado “crear un programa”, “com
d e transferencia de protocolo que soporta el correo electrónico en Internet es el protocolo simple de transfe
pilar un programa” o “ejecutar un programa” . Actualmente hay muchas tareas diferentes que
co rre o (SMTP) rencia de correo (SMTP: simple m ail transfer protocol) (figura 6.17). El servicio de c<
un usuario necesita realizar en una computadora remota. No hay manera de tener un progra
electrónico por naturaleza es diferente de otras aplicaciones. Para enviar y recibir correo elec
ma cliente-servidor específico para cada tarea.
trónico, el usuario debe instalar software SMTP tanto cliente como servidor en su computa
La solución es un programa cliente-servidor de uso general que permita a un usuario eje
dora. Además, SMTP siempre debe ejecutarse para recibir correo electrónico. Una máquina
cutar un programa de aplicación en una computadora remota como si el usuario estuviera ac
apagada no recibirá correo electrónico. Para resolver este problema, SMTP siempre se utiliza
cediendo a esa computadora localmente. Cuando un usuario va a un laboratorio de
con otro protocolo tal como el protocolo de oficina postal (POP: p o st office protocol). El
computadoras y accede directamente a una computadora, se le llama inicio de sesión local.
usuario aún utiliza el cliente SMTP para enviar mensajes por correo electrónico. Sin embar
Por otro lado, cuando un usuario permanece en casa y accede a la misma computadora en for
go, los mensajes no se reciben directamente sino que en vez de ello se dirigen a otra compu
ma remota, se le llama inicio de sesión remoto.
tadora (la cual siempre está en ejecución). El servidor SMTP se ejecuta en esta computadora
TELNET ( TErminaL NETwork: red terminal) es un programa cliente-servidor general en
y recibe los mensajes y los almacena en el buzón de correo del usuario (un archivo especial).
Internet que permite el inicio de sesión remoto. TELNET permite el establecimiento de una
Cuando el usuario quiere recuperar el correo electrónico, utiliza el cliente POP para entrar en
conexión desde un sistema local a un sistema remoto de tal manera que la terminal local pa
contacto con el servidor POP (en la misma computadora que ejecuta el servidor SMTP) y
rece ser una terminal en el sistema remoto (figura 6.19).
transfiere el correo electrónico. Normalmente hay una interfaz de usuario llamada agente de
usuario (UA: user agent) que facilita estas transacciones.
Direcciones SMTP utiliza un sistema de direccionamiento único que consiste de dos par
tes: una parte local y un nombre de dominio separado por un signo @ (figura 6.18). La parte
local define el nombre de un archivo especial, llamado buzón de correo del usuario, donde to
do el correo recibido por un usuario se almacena para su recuperación posterior por el agen
te de usuario. El nombre de dominio define la computadora (a menudo de manera simbólica)
Cliente
TELNET
Servidor
TELNET
*
Programas de aplicación
Los comandos del cliente al servidor se incrustan en un mensaje tipo carta. El contenido del T “ T Al monitor
archivo solicitado u otra información se incrusta en un mensaje de respuesta tipo carta. 'S
' S'
Métodos (HTTP...)
Localizador uniform e de recursos (URL) HTTP utiliza un tipo especial de direcciona
miento llamado localizador uniforme de recursos (URL: uniform resource locator), el cual
es un estándar para especificar cualquier tipo de información en Internet. El URL define cua
tro cosas: método, computadora anfitrión, puerto y ruta (figura 6 .20 ). A Internet
F ig u r a 6 .2 1 E x p lo ra d o r
Documento Web
F ig u r a 6 .2 0 URL
i |
Estático Dinámico¡j Activo
El método es el programa cliente-servidor usado para transferir los documentos, HTTP en F ig u r a 6 .2 2 C a te g o ría s d e d o c u m e n to s W e b
este caso (el URL puede utilizarse por otros programas de aplicación). El anfitrión es la com
putadora donde se localiza la información, aunque el nombre de la computadora puede ser un
alias, que por lo general comienza con los caracteres “www” . Tipos de docum entos Generalmente hay tres tipos distintos de documentos en Internet:
El puerto, el cual define el número de puerto del servidor, es opcional. La ruta es el nom estático, dinámico y activo (figura 6 .22 ).
bre de ruta del archivo donde se localiza la información. Observe que la ruta puede contener
diagonales que, en el sistema operativo UNIX, separan los directorios de los subdirectories y ■ Los documentos estáticos tienen contenido fijo. Se crean en el lado del servidor y sólo
archivos. pueden copiarse. Un documento estático normalmente utiliza el lenguaje para marcado de
hipertexto (HTML: hypertext markup language) para el formato de pantalla y los víncu
los en el documento. En el capítulo 9 se estudia el HTML.
W o rld W id e W eb El World Wide Web (WWW), o Web, se basa en la idea de información distribuida. En lu
(W W W ) gar de mantener toda la información en un lugar, cada entidad (individuo u organización) que ■ Los documentos dinámicos son programas que residen en el lado del servidor. Cuando
tiene información para compartir almacena esa información en su propia computadora y per un explorador envía una solicitud el servidor ejecuta el programa y envía el resultado (no
mite el acceso a la misma a los usuarios de Internet. El WWW es una colección de documen el programa en sí) al explorador. Por ejemplo, el explorador puede solicitar al servidor
tos multimedia. que ejecute el programa de fecha y envíe el resultado del programa al cliente. Los docu
mentos dinámicos usan una tecnología llamada Interfaz de Compuerta Común (CGI:
Hipertexto El WWW utiliza el concepto de hipertexto, el cual es un documento que con common gateway interface) que incluye lenguajes de programación como Perl (véase el
tiene texto, palabras y frases especiales que pueden crear un vínculo a otros documentos que capítulo 9) y HTML para manejar la creación y la interpretación del documento.
contienen texto, imágenes, audio o video. Un documento de hipertexto disponible en el Web
S Los documentos activos también son programas, pero no es posible ejecutarlos en el
se llama página. La página central de una organización o individuo se conoce como página
servidor. En vez de ello, el explorador debe solicitar la transferencia del programa. Des
principal.
pués de la transferencia, el programa se ejecuta en el lado del explorador. La diferencia
entre un documento dinámico y un documento activo es que el primero se ejecuta en el
Explorador Para obtener acceso a una página en el WWW, se necesita un explorador que lado del servidor y su resultado se transfiere al explorador, y el último se transfiere al la
por lo general consiste de tres partes: un controlador, un método y un intérprete (figura 6 .21 )- do del explorador y luego se ejecuta. Un documento activo es necesario cuando el pro
E1 controlador es la parte medular del explorador; coordina todas las actividades. El método es grama no puede ejecutarse en el lado del servidor. Por ejemplo, cuando un programa
un programa de aplicación cliente que recupera el documento. Aunque puede ser cualquiera de involucra animación, debe ejecutarse en el lado del explorador. Un documento activo por
los programas de aplicación que hemos analizado, por lo general es HTTP. El intérprete des lo general se escribe en lenguaje Java (véase el capítulo 9). El explorador requiere un in
pliega el documento en la pantalla. térprete Java para interpretar (ejecutar) un documento activo.
R ed es d e c o m p u ta d o ra s 6 .8 P rá c tic a II
23. La cap a_________del modelo OSI cifra los datos. 30. Los Postres Divinos de Cindy es una panadería con cu j(a)________ es un dispositivo de conexión que actúa 45. _________ es un protocolo para transferencia de archi
a. física tro puntos de venta en San Francisco. Los puntos de ve mo un convertidor de protocolo. vos.
ta necesitan comunicarse unos con otros. Este tipo < a. FTP
b. de enlace de datos a. repetidor
red probablemente es u n a ________ .
b. puente b. SMTP
c. de sesión
a. LAN c. enrutador c. TELNET
d. de presentación b. MAN d. gateway d. HTTP
24. La capa del modelo OSI transmite un flujo de c. WAN
38, Un ________ es un dispositivo de conexión que seg 46. _________es un protocolo para servicio de correo elec
bits sobre un medio físico. d. ninguna de las anteriores
menta el tráfico. trónico (email)
a. física 31. La compañía Papas Irlandesas de Kate tiene su base < a. repetidor a. FTP
b. de enlace de datos Irlanda pero tiene sucursales en Boston y San Francisc b. puente b. SMTP
Las sucursales se comunican entre sí mediante u¡ c. enrutador c. TELNET
c. de red
d. gateway d. HTTP
d. de transporte
a. LAN
S - Un es un dispositivo que puede enrutar un pa- 47. es un protocolo para tener acceso y transferir
25. La ca p a ________ del modelo OSI es responsable de la b. MAN
quete con base en su dirección de capa de red. documentos en el WWW.
entrega nodo a nodo de un bloque de datos entre dos es c. WAN
taciones contiguas. d. ninguna de las anteriores a. puente a. FTP
b. enrutador b. SMTP
a. de transporte 32. Vecchiarelli Consultores ocupa dos áreas contiguas en c. repetidor c. TELNET
b. de red edificio Cofñand. La red, que consiste en cuatro estaci d. todos los anteriores d. HTTP
c. de enlace de datos nes de trabajo y una impresora, probablemente es uj
40. Un puente opera e n _________del modelo OSI. 48. Un documento_________tiene contenido fijo.
d. de sesión
a. la primera capa a. estático
a. LAN
26. La ca p a________ del modelo OSI es responsable de la b. las primeras dos capas b. dinámico
b. MAN
entrega de origen a destino del mensaje completo. c. las primeras tres capas c. activo
c. WAN
a. de transporte d. todas las capas d. todos los anteriores
d. ninguna de las anteriores
b. de red 41. Una gateway opera e n ________ del modelo OSI.
33. ¿Cuál es el nombre de dominio de la dirección de corn EJERCICIOS
c. de enlace de datos a. la primera capa
electrónico kayla@pit.arc.nasa.gov? 49. Cuál o cuáles de las capas OSI están involucradas en ca
d. de sesión b. las primeras dos capas
a. kayla da una de las actividades siguientes:
c. las primeras tres capas
27. La ca p a ________ del modelo OSI es responsable de la b. pit.arc.nasa.gov a. envío de un bloque de datos a la siguiente estación
d. todas las capas
entrega de origen a destino de un paquete individual. c. kayla@pit.arc.nasa.gov b. envío de un paquete desde el origen al destino
a. de transporte d. nasa.gov 42. La capa d e ________ de TCP/IP tiene funciones simila c. envío de un mensaje largo desde el origen al destino
res a aquellas de las capas de aplicación, presentación y d. inicio de una sesión en una computadora remota
b. de red 34. ¿Cuál topología utiliza un concentrador o un conm ; sesión del modelo OSI. e. cifrado y descifrado de datos
c. de enlace de datos tador?
a. transporte f. cambio de los datos de código de máquina a Unicode
d. de sesión a. bus b. red
b. anillo 50. Una pequeña parte de una LAN en bus con 200 estacio
28. La c a p a _________del modelo OSI controla el diálogo c. aplicación
nes está dañada. ¿A cuántas estaciones afecta este daño?
entre los usuarios. c. estrella d. sesión
d. todas las anteriores 51. Una pequeña parte de una LAN en estrella con 200 es
a. de transporte 43. La dirección IP actualmente m id e _________de longi taciones está dañada. ¿A cuántas estaciones afecta este
b. de sesión 35. ¿Cuál topología necesita terminadores de cable? tud. daño?
c. de presentación a. bus a. 4 52. Una pequeña parte de una LAN en anillo con 200 esta
b. anillo b. 8 ciones está dañada. ¿A cuántas estaciones afecta este
d. de aplicación
c. estrella c. 32 daño?
29. A través de la capa________ del modelo OSI los servi d. todas las anteriores d. ninguno de los anteriores
cios de correo y de directorio están disponibles para los 53. Si usted tiene una habitación cuadrada con una compu
36. U n(a)_________es un dispositivo de conexión que só 44. E[ protocolo de la capa de transporte de TCP/IP se llama tadora en cada esquina, ¿cuál topología necesita menos
usuarios de red.
regenera la señal. cableado? Justifique su respuesta.
a. de conexión de datos
a. repetidor a. TCP a. una LAN en bus
b. de sesión b. puente b. UDP b. una LAN en anillo
c. de transporte c. enrutador c. Ip c. una LAN en estrella con un concentrador en el cen
d. de aplicación d. gateway d. incisos a y b tro de la habitación
R ed es d e c o m p u ta d o ra s
54. Si usted tiene una habitación cuadrada con una compu 60. Cambie las siguientes direcciones IP de notación binaria
tadora en cada esquina, ¿cuál topología es más confia a notación de punto decimal:
ble? Justifique su respuesta. a. 01111110 11110001 01100111 01111111
a. una LAN en bus b. 10111111 11011100 11100000 00000101
Software
c. 000111111111000000111111 11011101
b. una LAN en anillo
c. una LAN en estrella con un concentrador en el cen d. 10001111 11110101 11000011 00011101
e. 11110111 10010011 11100111 01011101
tro de la habitación
61. Explique el modelo cliente-servidor en Internet. ¿En
55. Un ingeniero observa que los datos que reciben las com cuál capa del conjunto de protocolos TCP/IP está imple-
de computadora
putadoras en los dos extremos de una LAN en bus con mentado el modelo?
tienen muchos errores. ¿Cuál cree que sea el problema?
62. Separe la parte local y el nombre de dominio en las si
¿Qué se puede hacer para resolver el problema?
guientes direcciones de correo electrónico:
56. Un ingeniero nota una gran cantidad de tráfico en una a. madeieine@belle.gov
LAN en bus grande. ¿Qué puede hacer para mejorar la b. lindsey@jasmine.com
situación? c. wuteh@hunan.int
57. ¿Cuál es la ventaja de tener dos protocolos de transpor d. honoris@queen.org
te en TCP/IP? 63. Explique la diferencia entre una dirección de correo
58. ¿Cuáles son las ventajas y desventajas de tener una capa electrónico y una dirección IP. ¿Existe una relación uno
de aplicación en el conjunto de protocolos TCP/IP en a uno entre las dos direcciones?
vez de tres capas (sesión, presentación y aplicación) co 64. Explique la diferencia entre FTP y TELNET. ¿Cuándo
mo en el modelo OSI? se utiliza FTP y cuándo TELNET?
CAPÍTULO 7: Sistemas operativos
59. Cambie las siguientes direcciones IP de notación de 65. Un usuario utiliza un explorador para descargar un jue
punto decimal a notación binaria: go. ¿Qué tipo de documento descarga?
66. Un usuario utiliza un explorador para descargar un do
CAPÍTULO 8: A lg o ritm o s
a. 112.32.7.28
b. 129.4.6.8 cumento técnico. ¿Qué tipo de documento descarga?
c. 208.3.54.12 67. Escriba un URL que utilice HTTP, el cual tenga acceso CAPÍTULO 9: Lenguajes de pro g ra m a ción
d. 38.34.2.1 a un archivo con la ruta /user/general en una computa
e. 255.255.255.255 dora con el alias www.hadb. CAPÍTULO 10: Ingeniería de softw are
7.2 E v o lu c ió n
7.1 DEFINICIÓN
Un sistem a operativo es tan complejo que es difícil dar una simple definición universal. En
vez de ello, he aquí algunas definiciones comunes:
Sistemas ■
■
Un sistema operativo es una interfaz entre el hardware de una computadora y el usuario
(programas o personas).
Un sistema operativo es un program a (o una serie de programas) que facilita la ejecu
7.2 EVOLUCIÓN
Sistema de
computación Los sistemas operativos han pasado por una larga historia de evolución, la cual resumimos a
continuación.
Hardware Software SISTEMAS Los sistemas operativos por lotes se diseñaron en la década de 1950 para controlar a las
computadoras mainframe. En ese entonces, una computadora era una máquina grande que
POR LOTES
utilizaba tarjetas perforadas para entrada de datos, impresoras de línea para salida y unidades
de cinta para medios de almacenamiento secundarios.
Sistema Programas Cada programa a ejecutarse se llamaba tarea. Un programador que deseaba ejecutar una
operativo de aplicación
tarea enviaba una solicitud a la sala de operaciones junto con tarjetas perforadas para el pro
grama y los datos. El programador no tenía ningún control o interacción con el sistema. Un
F ig u r a 7.1 Sistem a d e co m p u ta c ió n operador procesaba las tarjetas perforadas. Si el programa era satisfactorio, el resultado se en
viaba al programador; de lo contrario, se enviaba un listado del error.
Los sistemas operativos de esta época eran muy simples; sólo se aseguraban de que todos
los recursos se transfirieran de una tarea a la siguiente.
SISTEMAS Para utilizar los recursos del sistema de computación eficientemente, se introdujo la multi-
de t ie m p o
programación. La idea es mantener varias tareas en memoria y sólo asignar un recurso a una
tarea que lo necesite con la condición de que el recurso esté disponible. Por ejemplo, cuando
COMPARTIDO
124 O r g a n iz a c ió n de la c o m p u ta d o ra 7.3 C o m p o n e n te s 125
un programa está usando un dispositivo de entrada/salida, el CPU está libre y puede ser uti
lizado por otro programa. La multiprogramación se estudia posteriormente en este capítulo Sistem a operativo I
La multiprogramación trajo la idea del tiempo compartido: los recursos pueden compar
tirse entre diferentes tareas. A cada tarea puede asignársele una parte del tiempo para usar el Interfaz
recurso. Como una computadora es mucho más rápida que una persona, el tiempo comparti de usuario
do es transparente para el usuario. Cada usuario tiene la impresión de que todo el sistema es
tá trabajando para él o para ella.
Administrador Administrador! Adm inistrador! Administrador!
La multiprogramación y finalmente el tiempo compartido mejoraron en gran medida la de dispositivos! de archivos [
de memoria de procesos |
eficiencia de un sistema de computación. No obstante, ésta requería un sistema operativo
más complejo. El sistema operativo ahora tenía que hacer una planificación: asignación de
los recursos a los distintos programas y decidir cuál programa debería utilizar cuál recurso F ig u r a 7 .2 C o m p o n e n te s d e un sistem a o p e ra tiv o
y cuándo.
Durante esta época, la relación entre una computadora y un usuario también cambió. El
usuario podía interactuar directamente con el sistema sin pasar por un operador. Un nuevo tér ADMINISTRADOR Una de las responsabilidades de un sistema de computación moderno es la administración de
mino también se acuñó: proceso. Una tarea es un programa a ejecutar; un proceso es un pro la memoria. Aun cuando en años recientes el tamaño de la memoria de las computadoras ha
DE MEMORIA
grama que está en la memoria en espera de recursos. aumentado enormemente, también lo ha hecho el tamaño de los programas y los datos a ser
procesados. La asignación de memoria debe ser administrada para evitar el síndrome de “que
SISTEMAS Cuando las computadoras personales se introdujeron, había una necesidad de un sistema ope darse sin memoria” . Los sistemas operativos pueden dividirse en dos amplias categorías de
PERSONALES rativo de este tipo de computadora. Durante esta época, se introdujeron los sistemas operati administración de memoria: la monoprogramación y la multiprogramación.
vos monousuario tales como DOS (disk operating system : sistema operativo de disco).
SISTEMAS La necesidad de una mayor velocidad y eficiencia condujo al diseño de los sistemas parale M onoprogram ación La monoprogramación pertenece al pasado, pero vale la pena mencionarla puesto que le
ayudará a comprender la multiprogramación. En la monoprogramación, la mayor parte de la
PARALELOS los: varios CPU en la misma máquina. Cada CPU podía utilizarse para servir a un programa
capacidad de la memoria se dedica a un solo programa; únicamente se necesita una pequeña
o a una parte de un programa, lo cual significa que muchas tareas pueden lograrse en parale
parte para alojar el sistema operativo. En esta configuración, todo el programa está en la me
lo en vez de en forma serial. El sistema operativo para estos sistemas es más complejo que
moria para su ejecución. Cuando el programa termina de ejecutarse, se reemplaza con otro
aquellos con un solo CPU.
programa (figura 7.3).
SISTEMAS La conectividad en red y la interconectividad en red, como se vio en el capítulo 6, han creado
DISTRIBUIDOS una nueva dimensión en sistemas operativos. Una tarea realizada previamente por completo
en una computadora ahora podía compartirse entre computadoras que podían estar a miles de
millas de distancia. Un programa puede ejecutarse parcialmente en una computadora y parcial
mente en otra si éstas están conectadas mediante un conjunto de redes interconectadas como Sistema
Internet. Además, los recursos pueden distribuirse. Un programa puede necesitar archivos lo opcratn )
calizados en distintas partes del mundo. Los sistemas distribuidos combinan características
de la generación anterior con nuevos servicios tales como el control de la seguridad.
Programa
•y
datos
7 .3 COMPONENTES
En la actualidad, los sistemas operativos son muy complejos. Un sistema operativo necesita
administrar diferentes recursos en un sistema de computadoras. Se parece a una organización Memoria
con varios gerentes de alto nivel. Cada gerente es responsable de administrar su departamen
to, pero también necesita cooperar con otros y coordinar las actividades. Un sistema operati F ig u r a 7 .3 M o n o p ro g ra m a c ió n
vo moderno tiene al menos cuatro funciones: administrador de memoria, administrador de
procesos, administrador de dispositivos y administrador de archivos. Al igual que muchas or
ganizaciones que tienen un departamento, el cual no necesariamente está bajo las órdenes de El administrador de memoria entra en acción justo aquí, ya que carga el programa en la me
algún administrador, un sistema operativo también tiene un componente semejante, el cual moria, lo ejecuta y lo remplaza con el programa siguiente. Sin embargo, hay varios proble
por lo general se conoce como interfaz de usuario o consola de comandos (shell). La interfaz mas con esta técnica:
de usuario es responsable de la comunicación del sistema operativo con el exterior (como un
departamento de relaciones públicas). La figura 7.2 muestra los componentes de un sistema 9 El programa debe caber en la memoria. Si el tamaño de la memoria es menor que el ta
operativo. maño del programa, éste no puede ejecutarse.
S iste m a s o p e ra tiv o s 7.3 C o m p o n e n te s J ¡¡M jf¡
Sistema
operativo
Programa 1
Programa 2
Programa 3
Programa 4
Memoria F ig u r a 7 .6 P a rticio n a m ie n to
F ig u r a 7 .4 M u ltip ro g ra m a c ió n
Con esta técnica, cada programa está completamente en la memoria y ocupa localidades
contiguas. El particionamiento mejora la eficiencia del CPU, pero aún hay otros problemas:
Desde la década de 1960, la multiprogramación ha sufrido varias mejoras que pueden ver
se en la taxonomía de la figura 7.5. En las secciones siguientes analizamos cada esquema de ■ El tamaño de las particiones debe ser determinado de antemano por el administrador de
una manera muy breve. Dos técnicas pertenecen a la categoría de no intercambio; esto signi memoria. Si los tamaños de partición son pequeños, algunos programas no pueden car
fica que el programa permanece en la memoria durante toda la ejecución. Las otras dos téc garse en la memoria. Si los tamaños de partición son grandes, podría haber algunos es
nicas pertenecen a la categoría de intercambio. Esto significa que, durante la ejecución, el pacios vacíos (localidades sin utilizar) en la memoria.
programa puede intercambiarse entre la memoria y el disco una o más veces.
9 Aun si el particionamiento es perfecto cuando la computadora se inicia, debe haber al
gunos espacios vacíos después de que ios programas se remplazan con otro nuevos.
S Cuando hay muchos espacios vacíos, el administrador de memoria puede compactar las
particiones para eliminar los espacios vacíos y crear particiones nuevas, pero esto crea
Multiprogramación
una sobrecarga adicional en el sistema.
F ig u r a 7 .7 P a g in a ció n
La ventaja de la paginación sobre el particionamiento es que dos programas, cada uno de los
cuales utiliza tres bloques no contiguos, pueden remplazarse por un programa que necesita
seis bloques. No hay necesidad de que un nuevo programa espere hasta que seis bloques con
tiguos estén libres antes de ser cargados en la memoria.
La paginación mejora la eficiencia en cierto grado, pero el programa completo aún nece
sita estar en la memoria antes de ser ejecutado. Esto significa que un programa que necesita Disco
seis bloques no puede cargarse en la memoria si sólo hay cuatro bloques desocupados.
F ig u r a 7 .8 M e m o ria v irtu a l
Paginación bajo dem anda La paginación no requiere que el programa esté en localida
des contiguas de la memoria, pero requiere que todo el programa esté en la memoria para su
ejecución. La paginación bajo demanda ha eliminado esta última restricción, ya que en este ADMINISTRADOR Una segunda función de un sistema operativo es el administrador de procesos, pero antes de
tipo de paginación el programa se divide en páginas, pero las páginas pueden cargarse en la DE PROCESOS analizar este concepto, se definen algunos términos.
memoria una a una, ejecutarse y remplazarse por otra página. En otras palabras, la memoria
puede alojar una página de varios programas al mismo tiempo. Además, no es necesario que Los sistemas operativos modernos utilizan tres términos que se refieren a una serie de instruc
Programa,
en el mismo bloque estén cargadas páginas consecutivas del mismo programa. Una página ciones: programa, tarea y proceso. Aunque la terminología es vaga y varía de un sistema ope
tarea y proceso
puede cargarse en cualquier bloque libre. rativo a otro, podemos definir estos términos de manera informal.
Segm entación bajo dem anda Una técnica similar a la paginación es la segmentación. Program a Un programa es una serie de instrucciones no activas escritas por un programa
En la paginación, un programa se divide en páginas de igual tamaño, lo cual no es la manera dor y almacenadas en disco (o cinta). Esto puede o no convertirse en una tarea.
como piensa un programador, ya que éste piensa en términos de módulos, no de páginas de
igual tamaño. Como verá en capítulos posteriores, un programa por lo general se compone Tarea Un programa se vuelve una tarea a partir del momento en que éste se selecciona pa
de un programa principal y de subprogramas. En la segmentación bajo demanda el progra ra su ejecución hasta que finaliza la misma y se convierte de nuevo en un programa. Duran
ma se divide en segmentos que coinciden con la idea del programador. Éstos se cargan en te este periodo, una tarea puede o no ejecutarse. Puede residir en el disco esperando a ser
la memoria, se ejecutan, se remplazan por otros módulos del mismo programa o de un pro cargada en la memoria o puede residir en la memoria esperando que el CPU la ejecute. Tam
grama distinto. bién puede residir en el disco o en la memoria en espera de un evento de entrada/salida o pue
de residir en la memoria cuando el CPU la esté ejecutando. El programa se comporta como
Paginación y segm entación bajo dem anda La paginación y segmentación bajo de una tarea en todas estas situaciones. Cuando un trabajo ha terminado de ejecutarse (ya sea
manda incluso pueden combinarse para mejorar aún más la eficiencia del sistema. Un seg normalmente o de manera anormal), se vuelve un programa y de nuevo reside en el disco. El
mento puede ser demasiado grande para caber en cualquier espacio libre disponible en la sistema operativo ya no gobierna el programa. Observe que cada tarea es un programa, pero
memoria. La memoria puede dividirse en bloques y un módulo puede dividirse en páginas. no todos los programas son tareas.
Las páginas de un módulo pueden cargarse después en la memoria y ejecutarse una a una.
P roceso Un proceso es un programa en ejecución. Es un programa que ha iniciado pero
no se ha terminado. En otras palabras, un proceso es una tarea que reside en la memoria. Se
M e m o ria virtu al La paginación bajo demanda y la segmentación bajo demanda implican que parte del progra ha seleccionado entre otras tareas en espera y se ha cargado en la memoria. Un proceso pue
ma esté en la memoria principal y parte en el disco mientras el programa está en ejecución. de ejecutarse en el momento o puede estar esperando tiempo del CPU. Mientras que la tarea
Esto significa que, por ejemplo, una memoria que mida 10 MB puede ejecutar 10 programas, esté en la memoria, es un proceso. Observe que cada proceso es una tarea, pero no todas las
cada uno de 3 MB, para un total de 30 MB. En cualquier momento, los 10 MB de los 10 pro tareas son procesos.
IM l S iste m a s o p e ra tiv o s 7.3 C o m p o n e n te s 131
D iagram a La relación entre un programa, una tarea y un proceso se esclarece si se considera cómo un planificadores Para cambiar una tarea o proceso de un estado a otro, el administrador de procesos utiliza
d e estado programa se vuelve una tarea y cómo una tarea se vuelve un proceso. Esto puede ilustrarse dos planificadores: el planificador de tareas y el planificador de procesos.
con un diagrama de estado que muestra los diferentes estados de cada una de estas entida
des. La figura 7.9 es un diagrama de estado que utiliza líneas divididas para los límites entre
Planificador de tareas El planificador de tareas cambia una tarea del estado de espera al
un programa, una tarea y un proceso.
estado de listo, o del estado de ejecución al estado de terminación. En otras palabras, un pla
nificador de tareas es responsable de crear un proceso a partir de una tarea y de terminar un
proceso. La figura 7.10 muestra el planificador de tareas con respecto al diagrama de estado.
Programa
F ig u r a 7 .1 0 P la n ific a d o r d e tareas
Un programa se vuelve una tarea cuando es seleccionado por el sistema operativo y lleva
do al estado de espera. Permanece en este estado hasta que puede cargarse en la memoria
Cuando hay espacio disponible en la memoria para cargar el programa total o parcialmente
la tarea cambia al estado de listo. Ahora se convierte en un proceso. Permanece en la memo
ria y en este estado hasta que el CPU puede ejecutarlo; cambia al estado de ejecución en es
te momento. Cuando está en el estado en ejecución, ocurre una de las tres cosas siguientes:
■ El proceso termina.
En el primer caso el proceso va al estado de espera y espera hasta que la E/S se haya com F ig u r a 7 .11 P la n ific a d o r d e procesos
pletado. En el segundo caso, va directamente al estado listo. En el tercer caso, va al estado
de terminación y ya no es más un proceso. Un proceso puede moverse entre los estados de
ejecución, espera y listo varias veces antes de que entre en el estado de terminación. Obser
ve que el diagrama puede ser mucho más complejo si el sistema utiliza memoria virtual y O tros planificadores Algunos sistemas operativos utilizan otros tipos de planificadores
tema los programas dentro y fuera de la memoria principal. para alternar entre procesos de una manera más eficiente.
132 S iste m a s o p e ra tiv o s 7.3 C o m p o n e n te s 133
Colas de espera Nuestro diagrama de estado muestra una tarea o proceso que cambia de un estado a otro. ]
realidad, hay muchas tareas y muchos procesos que compiten unos con otros por los recurs
de la computadora. Por ejemplo, cuando algunas tareas están en la memoria, otras deben t
perar hasta que haya espacio disponible. O cuando un proceso está en ejecución usando
CPU, otros deben esperar hasta que el CPU esté libre. Para manejar varios procesos y tare;
el administrador de procesos utiliza colas de espera (listas de espera). Asociada con cada
rea o proceso hay un bloque de control de tareas o bloque de control de procesos que gu¡
da información sobre esa tarea o proceso. El administrador de procesos almacena el bloq
de control de tareas o de procesos en las colas de espera, en vez de la tarea o el proceso m
mo. La tarea o el proceso permanece en la memoria o en el disco, es demasiado grande p¿
ser duplicado en una cola de espera. El bloque de control de tareas o el bloque de control
procesos es el representante de la tarea o el proceso en espera.
Un sistema operativo puede tener varias colas de espera. Por ejemplo, la figura 7.12 muf
tra la circulación de las tareas y los procesos a través de tres colas de espera: la cola de tare;
la cola de listo y la cola de E/S. La cola de tareas aloja las tareas que están esperando men
ria. La cola de listo aloja los procesos que están en la memoria, listos para su ejecución y t
perando al CPU. La cola de E/S aloja los procesos que están esperando un dispositivo
entrada/salida (puede haber varias colas de E/S, una para cada dispositivo de entrada/sali(
pero por razones de simplicidad sólo mostramos una).
F ig u r a 7 .1 4 P u n to m u e rto en un p u en te
Como analogía, la figura 7.14 muestra un punto muerto en un puente estrecho. La situa
ción es similar debido a que el recurso (parte del puente) está ocupado por un vehículo que
no lo libera hasta que llega a la otra parte del puente, la cual está ocupada por el otro vehícu
lo, y viceversa.
El punto muerto ocurre si el sistema operativo permite que empiece la ejecución de un pro
ceso sin revisar primero si los recursos requeridos están listos y permite al proceso ocupar ese
recurso todo el tiempo que lo desee. Debe haber alguna condición en el sistema para impedir
los puntos muertos. Una solución es no permitir que un proceso inicie su ejecución hasta
que los recursos se liberen, pero posteriormente verá que esta solución genera otro problema.
La segunda solución es limitar el tiempo que un proceso puede ocupar un recurso.
Proceso de La idea global que sustenta al administrador de procesos es sincronizar distintos procesos c
sin cron ización diferentes recursos. Los recursos pueden utilizarse en cualquier momento por cualquier usi
rio (procesos en este caso); se pueden presentar dos situaciones: punto muerto y privación, El punto muerto no siempre ocurre. Hay cuatro condiciones necesarias para un punto muer
to: exclusión m utua (sólo un proceso puede ocupar un recurso), ocupación de un recurso (un
continuación se presenta una breve explicación de ambas situaciones.
proceso ocupa un recurso aun cuando éste no pueda utilizarse hasta que otros recursos estén
Punto m uerto En lugar de una definición formal de punto m uerto, daremos un ejemp disponibles), sin derechos preferentes (el sistema operativo no puede reasignar un recurso
Suponga que hay dos procesos llamados A y B. El proceso A aguarda un archivo llamado I temporalmente) y espera circular (todos los procesos y recursos involucrados forman un ci
chivo 1 (el Archivo 1 se asignó a A) y no puede liberarse hasta que tenga otro archivo lian clo, como en la figura 7.13). Se requiere que ocurran las cuatro condiciones para que haya un
do Archivo 2 (A solicitó el Archivo 2). El proceso B aguarda al Archivo 2 (el Archivo 2 punto muerto. Sin embargo, estas condiciones sólo son condiciones necesarias (no suficien
asignó a B) y no puede liberarlo hasta que tenga el Archivo 1 (B ha solicitado el Archivo tes), lo cual significa que deben estar presentes para que ocurra un punto muerto, pero podría
Los archivos en la mayoría de los sistemas no son compartidos; cuando un proceso utiliza no ser suficiente. En otras palabras, si falta una de estas condiciones, el punto muerto nunca
archivo, este último no puede ser usado por otro proceso. Si no existe una condición en e ocurre. Esto le proporciona un método para impedir o evitar el punto muerto: No permita que
situación para forzar a un proceso a liberar un archivo, se crea un punto muerto (figura 7.1 alguna de estas condiciones ocurra.
S iste m a s o p e ra tiv o s 7.3 C o m p o n e n te s
Privación La privación es lo opuesto al punto muerto. Puede ocurrir cuando el sistema ope
rativo pone demasiadas restricciones a los recursos en un proceso. Por ejemplo, imagine un
sistema operativo que especifica la posesión de todos los recursos requeridos antes de que un
proceso pueda ejecutarse. En la figura 7.15 imagine que el proceso A necesita dos archivos,
el Archivo 1 y el Archivo 2. El Archivo 1 está en uso por el proceso B y el Archivo 2, por el
proceso E. El proceso B termina primero y libera al Archivo 1. El proceso A no puede iniciar
se porque el Archivo 2 aún no está disponible. En este momento se permite la ejecución del
proceso C, el cual necesita sólo al Archivo 1. Ahora el proceso E termina y libera al Archivo
2, pero el proceso A todavía no puede ejecutarse porque el Archivo 1 no está disponible.
F ig u r a 7 .1 6 C e n a d e filó so fo s
Un problema de privación clásico es aquel presentado por Dijkstra. Cinco filósofos están
sentados a una mesa redonda (figura 7.16). Cada filósofo necesita dos palillos para comer un
tazón de arroz. Sin embargo, uno o ambos palillos podrían ser usados por su vecino. Un filó
sofo podría “pasar hambre” si no tiene dos palillos disponibles al mismo tiempo.
A D M IN IS T R A D O R Hoy los sistemas operativos utilizan el administrador de archivos para controlar el acceso a
DE ARCHIVOS éstos. Un análisis detallado del administrador de archivos requiere un conocimiento profundo
de los principios de sistemas operativos, lo cual queda más allá de los propósitos de este libro.
c. El proceso A todavía necesita tanto al Archivo 1 como al Archivo 2 (privación).
En el capítulo 13 se estudian algunos problemas relacionados con el acceso a archivos, pero
esto no es adecuado para comprender la operación real de un administrador de archivos. A
F ig u r a 7 .1 5 P rivación continuación se listan las principales responsabilidades de un administrador de archivos:
S iste m a s o p e ra tiv o s 7.6 R esu m e n 137
9 El administrador de archivos controla el acceso a los archivos. El acceso está permitid Linux, desarrollado por T.inns Torvalds en Finlandia, está basado en UNIX. De hecho, es tan
sólo a aquellos que cuentan con permiso, y el tipo de acceso puede variar. Por ejemplc parecido a UNIX que algunas personas lo consideran un clon de UNIX. La idea era lograr
un proceso (o un usuario que llama a un proceso) puede tener permiso para leer un ai que UNIX fuera más eficiente cuando se ejecutara en un microprocesador Intel. Linux ahora
chivo pero no para escribir (hacer cambios) en él. A otro proceso se le puede permití está disponible para todas las plataformas y se está volviendo más y más popular entre los
ejecutar un archivo pero no se le permite ver el contenido. programadores y los usuarios comerciales.
W IN D O W S 2000 Windows 2000 (de Microsoft) es un buen ejemplo de un sistema operativo que ha avanzad<
7.6 RESUMEN
un gran tramo en su evolución. Comenzó como una interfaz para ejecutarla con el DOS (sis
tema operativo de disco). Ahora es una sistema operativo complejo manejado por menús qu<
■ Un sistema operativo facilita la ejecución de otro soft 9 En la paginación, la memoria se divide en secciones de
incluye una GUI robusta, la cual utiliza memoria virtual que permite la multiprogramación
ware, actúa como el administrador general de un sistema igual tamaño llamadas bloques y el programa se divide
Tiene una capacidad de conectividad en red integral que lo vuelve un sistema operativo pa
de computación y garantiza el uso eficiente de los recur en secciones de igual tamaño llamadas páginas. Las pá
ra redes. Windows 2000 también incluye una característica de seguridad que lo vuelven con ginas de un programa no necesitan ser contiguas, pero
sos de hardware y software.
veniente para situaciones donde la seguridad es un problema.
todas ellas deben estar presentes en la memoria para la
9 La evolución de los sistemas operativos ha incluido sis
ejecución del programa.
UNIX UNIX es un sistema operativo conocido entre los programadores de computadoras y cientí temas operativos por lotes, sistemas de tiempo compar
ficos de la computación. Es un sistema operativo muy poderoso con tres características so tido, sistemas monousuario y sistemas distribuidos. 9 La paginación bajo demanda es similar a la paginación
bresalientes. Primero, UNIX es un sistema operativo portátil que puede trasladarse de una con la excepción de que no es necesario que todas las
9 El sistema operativo supervisa al administrador de me
plataforma a otra sin muchos cambios. La razón es que está escrito en su mayoría en lengua páginas estén en la memoria.
moria, el administrador de procesos, el administrador de
je C (en lugar de un lenguaje de máquina para un sistema específico). Segundo, UNIX tiene dispositivos, el administrador de archivos y la interfaz de 9 La segmentación bajo demanda es similar a la pagina
una serie de utilerías (comandos) poderosas que pueden combinarse (en un archivo ejecuta
usuario. ción con la excepción de que en lugar de secciones de
ble llamado script) para resolver muchos de los problemas que en otros sistemas operativos
igual tamaño, el programa se divide para corresponder
requieren programación. Tercero, es independiente de los dispositivos debido a que incluye 9 En la monoprogramación, la mayor parte de la capaci
dad de la memoria está dedicada a un solo programa. con las divisiones del programa.
los controladores de los dispositivos en el sistema operativo mismo, lo cual significa que pue
de configurarse fácilmente para ejecutar cualquier dispositivo. En resumen, UNIX cuenta con 9 En la multiprogramación, hay más de un programa en 9 La paginación bajo demanda y la segmentación bajo de
todas las características que tiene un sistema operativo poderoso, incluyendo la multiprogra memoria al mismo tiempo. manda pueden combinarse para mejorar la eficiencia de
mación, la memoria virtual y sistemas de directorios y archivos muy bien diseñados. La úni un sistema de computación.
ca crítica que se hace a UNIX con frecuencia es que los comandos son cortos y complicados 9 En el particionamiento, la memoria se divide en seccio
para los usuarios normales; de hecho es muy conveniente para los programadores que nece nes de longitud variable, cada una de las cuales aloja un 9 La suma de los tamaños de todos los programas en la
sitan comandos cortos. programa. memoria es la memoria virtual.
7.7 P rá ctica s I.W
S iste m a s o p e ra tiv o s
■ Un programa es una serie de instrucciones no activas es B El punto muerto es una situación en la cual un proceso §4.? Un sistema operativo________ se necesita para tareas 33. En el (la)_________el programa puede dividirse en sec
critas por un programador y almacenadas en un disco o es incapaz de ejecutarse debido al uso irrestricto de re compartidas entre computadoras conectadas a distancia. ciones de diferente tamaño.
cinta. cursos por otros procesos. a. por lotes a. particionamiento
b. de tiempo compartido b. paginación
fl Una tarea es un programa seleccionado para su ejecución. fl La privación es una situación en la cual un proceso es in
c. paralelo c. paginación bajo demanda
fl Un proceso es una tarea que reside en la memoria. capaz de ejecutarse debido a que hay demasiadas restric d. segmentación bajo demanda
. d. distribuido
ciones en los recursos.
■ Un diagrama de estado muestra la relación entre un pro 25. La multiprogramación requiere un sistema operativo 34. En el (la)_________el programa puede dividirse en sec
grama, una tarea y un proceso. Una tarea puede estar en fl El administrador de dispositivos controla el acceso a los ciones de igual tamaño llamadas páginas, pero no es ne
los modos de espera, terminación, listo, ejecución o es dispositivos de E/S. ■ a. por lotes cesario que las páginas estén en la memoria al mismo
pera. Un proceso puede estar en uno de los tres últimos ■ El administrador de archivos controla el acceso a los ar . b. de tiempo compartido tiempo para la ejecución del programa.
estados. chivos. c. paralelo a. particionamiento
■ El planificador de tareas crea un proceso a partir de una d. distribuido b. paginación
■ La interfaz de usuario es software que acepta solicitudes
tarea y cambia un proceso de regreso a una tarea. 26. DOS se considera un sistema operativo________ . c. paginación bajo demanda
de los procesos y los interpreta para el resto del sistema
a. por lotes d. segmentación bajo demanda
fl El administrador de procesos cambia un proceso de un operativo.
b. de tiempo compartido
estado a otro. 35. Un proceso en el estado d e _________ puede entrar ya
■ Windows 2000, UNIX y Linux son tres sistemas opera c. paralelo
sea en el estado de listo, terminación o espera.
B Las tareas y los procesos esperan en colas de espera. tivos muy comunes. d. personal
a. espera
27. Un sistema con más de un CPU requiere un sistema ope
b. virtual
rativo ________ . c. ejecución
,: a. por lotes d. incisos a y c
7.7 PRÁCTICAS b. de tiempo compartido
c. paralelo 36. Un proceso en el estado de listo entra en el estado de eje
d. distribuido cución cuando________ .
P E G U N T A S DE ÜEPASO 17. ¿Por qué un sistema operativo necesita colas de espera?
28. ________ es multiprogramación con intercambio. a. entra a la memoria
1. ¿Cuál es la diferencia entre un programa de aplicación y 18. ¿Cuál es la diferencia entre un punto muerto y la priva
a. el particionamiento b. solicita E/S
un sistema operativo? ción?
b. lapaginación c. obtiene acceso al CPU
2. ¿Cómo ha cambiado la conectividad en red y la interco- 19. ¿Cuáles son las funciones de un administrador de dispo d. termina su ejecución
sitivos? c. la paginación bajo demanda
nectividad entre redes a los sistemas operativos?
d. la asignación a colas de espera 37. Un programa se convierte en un(a)_________cuando el
3. ¿Cuál es la diferencia entre monoprogramación y multi- 20. ¿Cuáles son las funciones de un administrador de archi
29. _______ es multiprogramación sin intercambio. sistema operativo lo selecciona y lo lleva al estado de es
programación? vos?
a. el particionamiento pera.
4. ¿Cuáles son los componentes de un sistema operativo? b. la memoria virtual a. tarea
PREGUNTAS DE OPCIÓN MÚLTIPLE c. la paginación bajo demanda b. proceso
5. ¿En qué difiere la paginación del particionamiento?
21. ________ es un programa que facilita la ejecución de d. la asignación a colas de espera c. punto muerto
6. ¿Cuál es la diferencia entre una página y un bloque?
otros programas. 30. En la (e l)_________sólo un programa puede residir en d. partición
7. ¿Por qué la paginación bajo demanda es más eficiente
a. un sistema operativo la memoria para su ejecución. 38. Todos los procesos so n ________ .
que la paginación normal?
b. el hardware a. monoprogramación a. tareas
8. ¿Qué es la segmentación bajo demanda?
c. una cola de espera b. multiprogramación b. programas
9. ¿Cómo se relaciona la memoria virtual con la memoria d. un programa de aplicación e. particionamiento c. particiones
física? d. paginación
22. ________ supervisa la actividad de cada componente en d. incisos a y b
10. ¿Cómo se relaciona un programa con una tarea? ¿Cómo 31. ______ esun métododemultiprogramación en el cual
un sistema de cómputo. 39. El planificador________ crea un proceso a partir de una
se relaciona una tarea con un proceso? ¿Cómo se rela varios programas están completamente en la memoria,
ciona un programa con un proceso? a. un sistema operativo tarea y cambia un proceso de regreso a tarea.
cada uno de los cuales ocupa un espacio contiguo.
b. el hardware a. de tareas
11. ¿Dónde reside un programa? ¿Dónde reside una tarea? a. el particionamiento
c. una cola de espera b. de procesos
¿Dónde reside un proceso? b. la paginación
d. un programa de aplicación c. virtual
12. ¿Cuál es el propósito de un diagrama de estado? : c. la paginación bajo demanda
d. de colas de espera
23. El primer sistema operativo, llamado sistema operativo d. la segmentación bajo demanda
13. ¿En qué tipos de estado se puede encontrar un proceso?
________ , sólo tenía que garantizar que los recursos se 32. En la paginación un programa se divide en secciones de 40. El planificador________ cambia un proceso de un esta
14. ¿En qué tipos de estado se puede encontrar una tarea?
transfirieran de una tarea a la siguiente. igual tamaño llam adas________ . do a otro.
15. Si un proceso está en el estado de ejecución, ¿a qué es a. páginas a. de tareas
a. por lotes
tados puede cambiar después? b. bloques b. de procesos
b. de tiempo compartido
16. ¿Cuál es la diferencia entre un planificador de tareas y c. personal c. segmentos c. virtual
un planificador de procesos? d. paralelo d. particiones d. de colas de espera
14(1 S iste m a s o p e ra tiv o s
41. Para evitar la (un)_________un sistema operativo puede tercero necesita 10.5 MB y ocupa la segunda partic
poner restricciones a los recursos en los procesos. Finalmente, el cuarto programa necesita 20 MB y ocum
a. privación la cuarta partición. ¿Cuál es el total de memoria útil
b. sincronización da? ¿Cuál es el total de memoria desperdiciada? ¿(
c. paginación porcentaje de memoria se desperdicia?
d. punto muerto
50. Repita el ejercicio 49 si todos los programas neces:
42. _________puede ocurrir si un proceso tiene demasiadas 10 MB de memoria.
restricciones en los recursos.
a. la privación 51. Un sistema operativo multiprogramación utiliza la p;
Algoritmos
b. la sincronización nación. La memoria disponible es 60 MB divididos
c. la paginación 15 páginas, cada una de 4 MB. El primer programa
d. un punto muerto cesita 13 MB. El segundo programa necesita 12 MB
tercer programa necesita 27 MB.
El administrador de es responsable del archi a. ¿Cuántas páginas utiliza el primer programa?
vo y el respaldo. b. ¿Cuántas páginas utiliza el segundo programa?
a. memoria c. ¿Cuántas páginas utiliza el tercer programa?
b. procesos d. ¿Cuántas páginas quedan sin utilizarse?
c. dispositivos e. ¿Qué cantidad total de memoria se desperdicia?
d. archivos f. ¿Qué porcentaje de memoria se desperdicia?
El administrador de es responsable del acce-
52. Un sistema operativo utiliza 0 memoria virtual pero r
so a los dispositivos de E/S.
quiere que todo el programa esté en la memoria físi
a. memoria
durante la ejecución (sin paginación o segmentación). ’
b. procesos E n este capítulo presentamos el concepto de algoritmos, los cuales son procedimientos paso
tamaño de la memoria física es 100 MB. El tamaño de
c. dispositivos Lpaso para resolver un problema. Después analizamos las herramientas utilizadas para de
memoria virtual es 1 GB. ¿Cuántos programas de 10 MB
d. archivos sarrollar algoritmos. Finalmente, damos algunos ejemplos comunes de algoritmos iterativos
puede ejecutar simultáneamente este sistema operativi
El planificador de tareas y el planificador de procesos ¿Cuántos de ellos pueden estar en memoria en cualqui y.recursivos.
están bajo el control del administrador de momento? ¿Cuántos de ellos deben estar en disco?
a. memoria
53. ¿Cuál es el estado de un proceso en cada una de las ;
b. procesos
guientes situaciones (según la figura 7.9)?
c. dispositivos
a. El proceso está utilizando al CPU.
d. archivos
b. El proceso ha terminado de imprimir y necesita
atención del CPU de nuevo.
EJERCICIO S c. El proceso se ha detenido porque su espacio de tier
46. Una computadora tiene un sistema operativo de mono- po ha terminado.
programación. Si el tamaño de la memoria es 64 MB y d. El proceso está leyendo los datos desde el teclado
el sistema operativo residente necesita 4 MB, ¿cuál es el e. El proceso está imprimiendo los datos.
tamaño máximo de un programa que puede ejecutar es
ta computadora? 54. Tres procesos (A, B y C) se están ejecutando simult
neamente. El proceso A tiene al Archivo 1, pero nece;
47. Repita el ejercicio 46 si el sistema operativo asigna au ta el Archivo 2. El proceso B tiene al Archivo 3, pew
tomáticamente 10 MB de memoria a los datos. necesita el Archivo 1. El proceso C tiene al Archivo 2,
48. Un sistema operativo de monoprogramación ejecuta pero necesita el Archivo 3. Dibuje un diagrama similar
programas que en promedio necesitan 10 microsegun- al de la figura 7.13 para estos procesos. ¿Es una situa
dos para tener acceso al CPU y 70 microsegundos para ción de punto muerto?
acceder a los dispositivos de E/S. ¿Qué porcentaje de
55. Tres procesos (A, B y C) se están ejecutando de manera
tiempo está inactivo el CPU?
simultánea. El proceso A tiene al Archivo 1. El proceso
49. Un sistema operativo multiprogramación utiliza un es B tiene al Archivo 2, pero necesita el Archivo 1. El pro
quema de repartición y divide los 60 MB de memoria ceso C tiene al Archivo 3, pero necesita el Archivo 2. Di
disponibles en cuatro particiones de 10 MB, 12 MB, 18 buje un diagrama similar al de la figura 7.13 para estos
MB y 20 MB. El primer programa a ser ejecutado nece procesos. ¿Se trata de una situación de punto muerto? Si
sita 17 MB y ocupa la tercera partición. El segundo pro su respuesta es “No”, muestre cómo los procesos termi
grama necesita 8 MB y ocupa la primera partición. El narían sus tareas finalmente.
A lg o r it m o s 8.1 C o n c e p to
E n c o n tra rM a y o r
En esta sección definimos de manera informal lo que es un algoritmo y elaboramos el con 4
.......
cepto utilizando un ejemplo.
¡Mavor 12 | 12 ttllií- i,.sta¡
Paso 1
DEFINICIÓN Una definición informal de un algoritmo es:
INFORMAL ¡Mayor 12 | 8 L isia1
Paso 2
Algoritmo: un método paso a paso para resolver un problema o realizar una tarea.
¡Mavor 13 | 13 L ista '
Paso 3
En esta definición un algoritmo es independiente del sistema de cómputo. Más específica
mente, también debemos notar que el algoritmo acepta una lista de datos de entrada y crea ¡Mayor 13 j 9 Lista!
una lista de datos de salida (figura 8.1).
Paso 4
¡Mayor! 13 | i 11 L ista!
t
Paso 5
Lista de entrada
Procesam iento El algoritmo utiliza los siguientes cinco pasos para encontrar el entero mayor.
Lista de salida
PASO 1 En este paso, el algoritmo examina el primer entero (12). Puesto que no ha mane
F ig u ra 8.1 D e fin ició n in form al d e un alg o ritm o u tiliza d o en una com putadora jado al resto de los enteros (observe que no revelamos ios enteros restantes debido a que el
algoritmo no los examina en este momento), decide que el entero mayor (hasta ahora), es
el primer entero. El algoritmo define un elemento de datos, llamado Mayor y establece el pri
EJEMPLO Elaboremos esta simple definición con un ejemplo. Queremos desarrollar un algoritmo para mer entero (12) como su valor.
encontrar el entero más grande entre una lista de enteros positivos. El algoritmo debe encon
trar el entero mayor entre una lista de enteros de cualquier valor (5,1000, 10 000, 1 000 000, PASO 2 El entero mayor hasta ahora es 12, pero el nuevo número puede cambiar la situa
etc.). El algoritmo debe ser general y no depender del número de enteros. ción. El algoritmo hace una comparación entre el valor del Mayor (12) y el valor del segun
Es obvio que encontrar el entero más grande entre muchos enteros (por ejemplo, 1 millón) do entero (8). Encuentra que el Mayor es más grande que el segundo entero, lo cual significa
es una tarea que no puede realizarse en un solo paso (por una persona o por una computado que el Mayor aún está manteniendo ai entero más grande. No hay necesidad de cambiar el
ra). El algoritmo necesita probar cada entero uno por uno. valor del Mayor.
Para resolver este problema usted necesita un método intuitivo. Primero utilice un núme
PASO 3 El entero mayor hasta ahora es 12, pero el nuevo número (13) es más grande que
ro pequeño de enteros (por ejemplo, cinco) y luego extienda la solución a cualquier número
el Mayor. Esto significa que el valor del Mayor ya no es válido. El valor del Mayor debe rem-
de enteros. Su solución de cinco enteros sigue los mismos principios y restricciones para 1000
plazarse con el tercer número (13). El algoritmo cambia el valor del mayor a 13 y se mueve
o 1 000 000 de enteros. Suponga, incluso para el caso de cinco enteros, que el algoritmo ma
al paso siguiente.
neja los enteros uno a uno. Observa el primer entero sin conocer los valores de los enteros
restantes. Después de observar el primero, calcula el segundo entero y así sucesivamente. La PASO 4 Nada se cambia en este paso debido a que el Mayor es más grande que el cuarto
figura 8.2 muestra una manera de resolver este problema. entero (9).
Llamamos al algoritmo EncontrarMayor. Cada algoritmo tiene un nombre que lo distin
gue de otros algoritmos. El algoritmo recibe una lista de cinco enteros (como entrada) y pro PASO 5 De nuevo nada se cambia debido a que el Mayor es más grande que el quinto en
porciona el mayor como salida. tero (11).
Como ya no hay más enteros a procesar, el algoritmo da el resultado del valor del Mayor, el
Salida
Entrada El algoritmo acepta la lista de cinco enteros como entrada. cual es 13.
8 .2 T res e s tru c tu ra s d e c o n tr o l 145
144 A lg o r it m o s
D E FIN IC IÓ N La figura 8.2 no muestra qué debe hacerse en cada paso. Usted puede modificar la figura p;
DE ACCIONES ra que muestre más detalles. En el paso 1, establezca el valor del primer entero como el M; 12 8 13 9 11 I Lista de entrada
yor. No obstante, en los pasos 2 a 5 se requieren acciones adicionales para comparar el valí
del Mayor con el entero que se esté procesando en ese momento. Si el entero actual es m¡ EncontrarMayor
grande que el Mayor, se establece el entero actual como el valor del Mayor (figura 8.3).
>Establezca el Mayor a 0. ¡
Paso "o"
S i el núm ero actual es m ás grande que el M ayor, establezca e l núm ero actu al com o el M ayor. *
j 12 8 13 9 11 I Lista de entrada
Paso 1
EncontrarMayor
Paso 2
13 I Resultado de salida
' Si e l tercer núm ero es m ás grande que el M ayor, establezca el tercer número com o el M ayor.
¡ Si el cuarto núm ero es m ás.grande que el M ayor, establezca el cuarto núm ero co m o el M ayor.
Paso 4
Si el quinto núm ero es m ás grande que el M ayor, establezca el quinto núm ero com o el M ayor.
Lista de entrada
Paso 5
EncontrarMayor
Resultado de salida ¡ Establezca el M ayor a 0. •
.................j
F ig u r a 8 .3 D e fin ic ió n d e accion e s en el a lg o ritm o E n c o n tra rM a y o r R e p ita el p aso sig u ien te N veces
! Si el núm ero actual es m ás grande que el M ayor, establezca el núm ero actual com o el M ayor. j
1................................................................................................................................. j
REFINAMIENTO Este algoritmo necesita refinarse para que sea aceptable para la comunidad de programación. ____________ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....j
Existen dos problemas. Primero, la acción para el primer paso es diferente de aquellas para
los otros pasos. Segundo, la formulación no es la misma en los pasos 2 a 5. Usted puede re-
definir fácilmente el algoritmo para eliminar estos dos inconvenientes. Cambie la formulación Mayor
en los pasos 2 a 5 a “Si el número actual es más grande que el Mayor, establezca el número
actual como el Mayor”. La razón de que el primer paso sea diferente de los otros pasos se de F ig u r a 8 .5 G e n e ra liz a c ió n d e E n c o n tra rM a y o r
be a que el Mayor no se ha inicializado. Si usted inicializa el Mayor en 0 (ningún entero po
sitivo puede ser menor que 0), entonces el primer paso puede ser igual que los otros pasos.
Añada un nuevo paso (llámelo paso 0 para mostrar que debe realizarse antes que el procesa
miento de cualquier número). La figura 8.4 muestra el resultado de este refinamiento. Obser
ve que no tiene que mostrar todos los pasos debido a que ahora son iguales.
TRES ESTRUCTURAS DE CONTROL
GENERALIZACIÓN ¿Es posible generalizar el algoritmo? Usted quiere encontrar el número mayor de N enteros
Los científicos de la computación han definido tres estructuras de control para un programa
positivos, donde N puede ser 1000, 1 000 000 o incluso más. Desde luego puede seguir los
o algoritmo estructurado. La idea es que un programa debe conformarse de una combinación
pasos de la figura 8.4 y repetir cada paso. Pero si usted cambia el algoritmo a un programa,
de sólo estas tres estructuras: secuencia, decisión (selección) y repetición (figura 8.6). Se ha
entonces ¡aunque parezca mentira necesita teclear las acciones para N pasos! Hay una mejor
probado que no h a y necesidad de ninguna otra estructura. El usar sólo estas estructuras hace
forma de hacer esto. Usted puede indicar a la computadora que repita los pasos N veces. Aho
ra incluimos esta característica en nuestro algoritmo pictórico (figura 8.5). que un programa o algoritmo sea fácil de entender, depurar o cambiar.
I4(i A lg o r it m o s 8 .3 R e p re s e n ta c ió n d e a lg o ritm o s 147
realiza la acción 1
realiza la acción 2
a. Secuencia
; realiza otra serie de acciones v ¡ ; realiza kacción «j F ig u r a 8 .7 D ia g ra m a d e flu jo p ara las tre s estru cturas d e c o n tro l
b. Decisión c. Repetición
acción n acción
DECISIÓN Algunos problemas no pueden resolverse sólo con una secuencia de instrucciones simples. En s; acción End w h ile
ocasiones usted necesita probar una condición. Si el resultado de la prueba es verdadero, us a. Secuencia
c. Repetición
ted sigue una secuencia de instrucciones; si es falso, usted sigue una secuencia de instruccio- p End i f
nes diferente. A esto se le llama estructura de decisión (selección). b. Decisión
REPETICIÓN En algunos problemas, debe repetirse la misma secuencia de instrucciones. Esto se maneja /jj F ig u r a 8 .8 P se u d o c ó d ig o para las tre s estru cturas d e c o n tro l
con la estructura de repetición. Encontrar el número mayor entre una serie de números (que .| |
se vio al principio del capítulo) es una estructura de este tipo.
EJE M PLO 1
Escriba un algoritmo en pseudocódigo que encuentre la estructura de dos números.
A lg o r it m o 8 .1 P ro m e d io d e dos
D IA G R A M A Un diagrama de flujo es tma representación pictórica de un algoritmo. Oculta todos los de
DE FLUJO talles de un algoritmo en un intento por dar la idea global; muestra cómo el algoritmo fluye
de principio a fin. Los diagramas de flujo se cubren con detalle en el Apéndice C. Aquí sólo PromedloDeDos
mostramos cómo se representan las tres estructuras en diagramas de flujo (figura 8.7). Entrada: D o s n ú m e ro s
1. S u m a io s d o s n ú m e ro s
PSEUDOCÓDIGO El pseudocódigo es una representación de un algoritmo parecida al inglés. No hay un están 2 . D iv id e el re s u lta d o e n tre 2
dar para pseudocódigo; algunas personas utilizan muchos detalles y otras usan menos. AlgU' 3. D e v u e lv e el re s u lta d o d e l p a s o 2
nos utilizan un tipo de código que se parece al inglés y otros utilizan una sintaxis como el End
lenguaje Pascal. El pseudocódigo se cubre con detalle en el Apéndice D. Aquí sólo mostra'
mos cómo pueden representarse las tres sentencias mediante pseudocódigo (figura 8.8).
8 .3 R e p re s e n ta c ió n d e a lg o r itm o s 149
Escriba un algoritmo para traducir una calificación numérica a una calificación aproba then
do/reprobado. 4.1 E sta b le c e la c a lific a c ió n a " D " .
End i f
SOLUCIÓN 5 . i f (el n ú m e r o es m e n o r q u e 6 0 , in c lu s iv e )
then
Este problema no puede resolverse sólo con la estructura de secuencia. También se nece
5.1 E sta b le c e la c a lific a c ió n a " F "
sita la estructura de decisión. Se da un número a la computadora entre 0 y 100. Devuelvt
End i f
“aprobado” si el número es mayor o igual que 70; devuelve “reprobado” si el número e:
6. D e v u e lv e la c a lific a c ió n
menor que 70. El algoritmo 8.2 muestra el pseudocódigo para este algoritmo. Observe 1¡
End
numeración. La instrucción de decisión tiene el número 1 y su subinstrucción tiene el nú
mero 1.1 (la primera subinstrucción dentro de la primera instrucción). ■
E n c o n tra rM a y o r
B
Entrada: U n a lista d e e n te ro s p o s itiv o s
EJE M PL O 3 1. E sta b le c e el M a y o r e n 0
2. w h ile (m á s e n te ro s)
Escriba un algoritmo para cambiar una calificación numérica a una calificación de letra.
2.1 if (el e n te ro es m á s g r a n d e q u e el M a y o r )
then
SOLUCIÓN
2.1 .1 E sta b le c e el v a lo r d e l e n te ro c o m o el M a y o r
Este problema necesita más de una decisión. El pseudocódigo en el algoritmo 8.3 mues End i f
tra una forma (no la mejor, sino una fácil de comprender) para resolver el problema. De End w h ile
nuevo, se da un número entre 0 y 10 0 y usted quiere cambiarlo a una calificación de letra 3. D e v u e lv e el M a y o r
(A, B ,C ,D o F). End
EJEM PLO 5
CalificaciónLetra
Entrada: U n n ú m e r o Escriba un algoritmo para encontrar el número mayor entre 1000 números.
1. if (el n ú m e r o e stá e n tre 9 0 y 1 0 0 , in c lu siv e )
then SOLUCIÓN
1.1 E sta b le c e la c a lific a c ió n a " A " En este caso se necesita un contador para contar el número de enteros. Inicialice el conta
End i f dor en 0 y auméntelo en cada repetición. Cuando el contador sea 1000, salga del ciclo
2. i f (el n ú m e r o está e n tre 8 0 y 8 9 , in c lu siv e ) (loop) (algoritmo 8.5).
then
A lg o r it m o 8 .5 E n co n tra r el n ú m e ro m a y o r e n tre 1000 n ú m e ros
2.1 E sta b le c e la c a lific a c ió n a " B "
End i f
3. if (el n ú m e r o está e n tre 7 0 y 79 , in c lu siv e )
then Entrada: 1 0 0 0 e n te ro s p o s itiv o s
1. E s ta b le c e el M a y o r e n 0
3.1 E sta b le c e la c a lific a c ió n a " C "
End i f 2. E sta b le c e el C o n t a d o r e n 0
150 A lg o r it m o s 8 .5 S u b a lg o ritm o s 151
3. w h ile (el C o n t a d o r es m e n o r q u e 1 0 0 0 )
3.1 i f (el e n te r o es m á s g r a n d e q u e el M a y o r )
EncontrarMayor
then E n c o n t r a r M á s G r a w le
Entrada: Una lista de enteros
3.1 .1 E sta b le c e el v a lo r d e l e n te ro c o m o el M a y o r 1. Establece el Mayor en 0 Entrada: El Mayor y el entero; ; i;!
End i f 2. w h ile (más enteros) 1. i f (el entero más grande que el Mayor)
3 .2 In c re m e n ta el c o n t a d o r / then
End w h ile 2.1 EncontrarMás
1.1 Establece el valor del entero como el
Grande
4 . D e v u e lv e el M a y o r Mayor . .j.v
End End w h ile ;E H d il# ;'-U 'U'iV: ;i
3. Devuelve el Mayor líiid
a End
PRODUCE Un algoritmo debe producir un resultado; de lo contrario es inútil. El resultado pueden ser da El algoritmo 8.6 muestra en pseudocódigo cómo utilizar un subalgoritmo dentro de un al
UN RESULTADO tos que se devuelven al algoritmo que hace la llamada o algún otro algoritmo (por ejemplo, goritmo.
imprimir).
A lg o ritm o 8.6 E n co n tra r el n ú m e ro m ay o r
TERM INAR EN UN Un algoritmo debe terminar (detenerse). Si no lo hace (por ejemplo que tenga un ciclo infi
TIEM PO FINITO nito), entonces no se ha creado un algoritmo. En el capítulo 17, estudiaremos problemas so EncontrarMayor
lubles e insolubles, y usted verá que un problema soluble tiene una solución en la forma de Entrada: U n a lista d e e n te ro s p o s itiv o s
un algoritmo que termina. 1. E sta b le c e e l M a y o r e n 0
2. w h ile (m á s e n te ro s)
2.1 E n c o n tr a r M a y o r
End w h ile
8.5 SUBALGORITMOS 3. D e v u e lv e e l M a y o r
End
Con las tres estructuras que se han escrito se puede crear un algoritmo para cualquier proble
ma soluble. No obstante, los principios de la programación estructurada requieren que ud
EncontrarMásGrande
algoritmo se divida en pequeñas unidades llamadas subalgoritmos (los términos subprogra-
Entrada: El n ú m e r o m a y o r y e l e n te r o a c tu a l
mas, subrutinas, procedimientos, funciones, métodos y módulos también se utilizan). Ca
1. i f (el e n te ro es m á s g r a n d e q u e e l M a y o r )
da subalgoritmo a su vez se divide en subalgoritmos más pequeños. El proceso continúa hasta
then
que los subalgoritmos se vuelven intrínsecos (comprensibles de inmediato).
1.1 E s ta b le c e el v a lo r d e l e n te r o c o m o e l M a y o r
Usted puede dividir el algoritmo 8.4 en un algoritmo principal y en un subalgoritmo. Es
End i f
te algoritmo es un buen candidato para este propósito debido a que repite una tarea muchas
End
veces. En cada iteración, el algoritmo encuentra el número mayor entre dos enteros. Usted
puede separar esta parte de la tarea y crear una pequeña subtarea fuera de ella (figura 8.9).
A lg o r it m o s 8 .6 A lg o r it m o s b á sico s
C A R TA Otra herramienta que los programadores utilizan es la carta estructurada, la cual es una he
rramienta de alto nivel que muestra la relación entre diferentes módulos en un algoritmo. Se i
ESTRUCTURADA Establece
utiliza principalmente en el nivel de diseño y no en el nivel de programación. En el apéndice
el producto en 1
E se estudia la carta estructurada.
/ M ás \ No
\ núm eros M
Sí
8.6 ALGORITMOS BÁSICOS M ultiplica
el núm ero actual
p o r el producto
Varios algoritmos se utilizan en la ciencia de la computación con tanta frecuencia que se les
considera básicos. En esta sección estudiamos los más comunes. El análisis es muy general,
ya que su implementación depende del lenguaje.
r ~
Devuelve
SUM ATORIA Uno de los algoritmos más comunes en las ciencias de la computación es la sumatoria. Us el producto
ted puede sumar dos o tres números muy fácilmente, pero ¿cómo puede sumar muchos nú
meros o una serie variable de números? La solución es simple: Utilice el operador de suma
en un ciclo (figura 8.10). Un algoritmo que suma tiene tres partes lógicas: F ig u r a 8 .1 1 M u itip lic a to ria
MENOR Y M AYO R Estudiamos el algoritmo para encontrar el número mayor entre una lista de números al prin
cipio del capítulo. La idea era escribir una estructura de decisión para encontrar el más gran
de de dos números. Si usted pone esta estructura en un ciclo, puede encontrar el número
mayor de una lista de números.
Determinar el número menor entre una lista de números es similar con dos diferencias me
nores. Primero, se utiliza una estructura de decisión para encontrar el menor de dos números.
Segundo, se inicializa con un número muy grande en lugar de uno muy pequeño.
ORDENACIÓN Una de las aplicaciones más comunes en las ciencias de la computación es la ordenación, la
cual es el proceso mediante el cual los datos se acomodan de acuerdo con sus valores. La gen
te está rodeada de datos. Si los datos no estuvieran ordenados, tomaría horas y horas encon
trar una sola pieza de información. Imagine la dificultad de encontrar el número telefónico de
alguien en un directorio telefónico que no estuviera ordenado.
En esta sección presentamos tres algoritmos de ordenación: ordenación de selección, orde
nación por burbuja y ordenación por inserción. Estos tres algoritmos de ordenación son la ba
se de los ordenamientos más rápidos utilizados actualmente en las ciencias de la
computación.
F ig u r a 8 .1 0 S u m a to ria
Ordenación En la ordenación por selección, la lista se separa en dos sublistas -ordenada y sin ordenar
MULTIPLICATORIA Otro algoritmo común es hallar el producto de una lista de números. La solución es simple: por selección las cuales se dividen por una pared imaginaria. Usted encuentra el elemento más pequeño de
Use el operador de multiplicación en un ciclo (figura 8.11). Un algoritmo de producto tiene la sublista sin ordenar y lo intercambia por el elemento al principio de los datos sin ordenar.
tres partes lógicas: Después de cada selección e intercambio, la pared imaginaria entre las dos sublistas mueve
un elemento hacia delante, aumentando el número de elementos ordenados y disminuyendo
1. Inicialización del producto al principio. el número de aquellos sin ordenar. Cada vez que usted mueve un elemento de la sublista sin
2. El ciclo, el cual multiplica en cada iteración un nuevo número por el producto. ordenar a la lista ordenada, usted ha completado un paso de ordenación. Una lista de n ele
mentos requiere n - 1 pasos para reacomodar los datos completamente. El orden de selección
3. Devuelve el resultado después de salir del ciclo. se presenta gráficamente en la figura 8.12.
A lg o ritm o s 8 .6 A lg o r it m o s b á sico s
Pared
■
Se coloca la pared al principio
, Intercambio (elemento menor por elemento k)
de la lista
E
Sin ordenar L a pared se m ueve un elemento
a la derecha
T i
8 23 45 78 32 56 Después del paso 2
: -3---------------- ►-
Sin ordenar
y y
8 # 32 78 45 56 Después del paso 3
-
Ordenados Sin ordenar F ig u r a 8 .1 4 A lg o ritm o d e o rd e n a ció n p o r selección
Y Y
2 § P ' : 45 78 56 Después del paso 4
En el método de ordenación p o r burbuja, la lista se divide en dos sublistas: ordenada y sin
Ordenación
Ordenados ordenar. El elemento más pequeño es una burbuja de la sublista sin ordenar y se mueve a la
por burbuja lista ordenada. Después de que el elemento menor se ha movido a la lista ordenada, la pared
se mueve un elemento hacia delante, aumentando el número de elementos ordenados y dis
• s f Í23 45 56 §78” Después del paso 5 minuyendo el número de aquellos sin ordenar. Cada vez que un elemento se mueve de la su
Ordenados blista sin ordenar a la sublista ordenada, un paso de ordenación se completa (figura 8.15).
Dada una lista de n elementos, la ordenación por burbuja requiere hasta n - 1 pasos para or
F ig u r a 8 .1 3 E je m p lo d e o rd e n a ció n p o r selección denar los datos.
La figura 8.13 ubica un conjunto de seis enteros y como son ordenados. Muestra cóm<
pared entre las sublistas ordenada y sin ordenar se mueve en cada paso. A medida que e;
Pared Burbujas que suben
die la figura se dará cuenta de que la lista está ordenada después de cinco pasos, lo cua
uno menos que el número de elementos en la lista. De esta manera, si usted utiliza un c;
para controlar el ordenamiento, el ciclo tendrá una iteración menos que el número de elem
tos en la lista.
A lg o ritm o El algoritmo utiliza dos ciclos, uno dentro del otro. El ciclo exterior se itera para cada pt
Ordenados Sin ordenar
de la ord e n a ción el ciclo interior encuentra el elemento más pequeño en la lista sin ordenar. La f i g u r a 8
p o r selección muestra el diagrama de flujo para el algoritmo de ordenación por selección. Dejamos el ps:
docódigo como un ejercicio. F ig u r a 8 .1 5 O rd e n a ció n p o r b u rb u ja
A lg o r it m o s 8 .6 A lg o r it m o s b á sico s 157
La figura 8.16 muestra cómo la pared se mueve un elemento en cada paso. Al observar el
primer paso, usted comienza con 56 y lo compara con 32. Puesto que 56 no es menor que 32,
éste no se mueve y usted se mueve un elemento hacia abajo. No ocurre ningún intercambio Pared
hasta que se compara 45 con 8. Puesto que 8 es menor que 45, se intercambian los dos ele
mentos y usted se mueve hacia abajo un elemento. Debido a que 8 se movió hacia abajo, aho
ra se compara con 78 y estos dos elementos se intercambian. Finalmente, el 8 se compara con
el 23 y se intercambian. Esta serie de intercambios coloca al 8 en la primera ubicación y la
pared se mueve una posición hacia arriba.
El orden de burbuja se escribió originalmente para “burbujear hacia abajo” el elemento en la Ordenados Sin ordenar
posición superior de la lista. Desde el punto de vista de la eficiencia, no hay diferencia entre que
sea el elemento en la posición superior el que burbujea hacia abajo o sea el elemento inferior. F ig u r a 8 .1 7 O rd e n a ció n p o r in serció n
Desde el punto de vista de la consistencia, sin embargo, hace que las comparaciones entre los
ordenamientos sean más fáciles si los tres trabajan del mismo modo. Por esa razón, hemos ele
gido burbujear el valor inferior en cada paso.
X ZII
:23 TZ 78 45 8 32 56 Lista original
3= zc ----------------------►-
sSin ordenar
'■ c
ir 23 78 45 8 32 56
— 23 78 i:: 45 8 32 56 Después del paso 1
Sin ordenar :
3= Sin ordenar
8 23 78 45 32 56 Después del paso 1 3=
78 : 8 32 56 Después del paso 2
í|3 45
Sin ordenar
=
r Ordenados.. , . Sin ordenar
E
E f =
P 2 | :ir. 32 78 45 56
= .: Después del paso 3
8 23 I 45 78 32 56
Sin ordenar
-X
'n .
Ordenados
r =
• t l í %3‘ 3§ 1 45 78 56 Después del paso 3
-»9— i. —►- 8 23 32 45 78 E 56 Después del paso 4
Ordenados Sin ordenar
JE Ordenados
8 23 32 45 1 56 78 Después del paso 4 Ordenado ÍZ
II Después del paso 5
E f t " .. 32 45 56 i f
Ordenados ;=
Ordenados
F ig u r a 8 .1 6 E je m p lo d e o rd e n a ció n p o r burbuja
F ig u r a 8 .1 8 E je m p lo d e o rd e n a ció n p o r in serción
A lg o ritm o de ordenación por burbuja La ordenación por burbuja también utiliza dos
ciclos, uno dentro del otro. El ciclo exterior se itera para cada paso; cada iteración del ciclo
interior trata de burbujear un elemento hacia la parte superior (izquierda). Dejamos el diagra En la ordenación por inserción, al igual que en los otros dos algoritmos de ordenación ana
ma de flujo y el pseudocódigo como ejercicios. lizados en este capítulo, la lista se divide en dos partes: ordenada y sin ordenar. En cada pa
so, se escoge el primer elemento de la sublista sin ordenar, se transfiere a la sublista ordenada
O rd en a ción El algoritmo de la ordenación por inserción es una de las técnicas de ordenamiento más co- y se inserta en el lugar apropiado (figura 8.17). Observe que una lista de n elementos tomará
p o r inserción muñes y a menudo la utilizan los jugadores de cartas. Cada carta que un jugador escoge se cuando más n - 1 pasos para ordenar los datos.
inserta en el lugar apropiado en su mano para mantener una secuencia particular. (El ordena La figura 8.18 sigue la ordenación por inserción a través de nuestra lista de seis números.
miento de las cartas es un ejemplo de ordenación que usa dos criterios para ordenar: seguir el La pared se mueve con cada paso conforme un elemento se quita de la sublista sin ordenar y
mismo palo y clasificar.) se inserta en la sublista ordenada.
8 .6 A lg o r it m o s b á sico s
15S A lg o r it m o s
O tr o s a lg o ritm os Existen otros algoritmos de ordenación: ordenación rápida, ordenación de pila, ordenación >!
d e ordenación Shell, ordenación por balde, ordenación por fusión, etc. La mayoría de estos algoritmos <¡
ordenación avanzados se analiza en libros sobre estructuras de datos.1
4 21 36 14 62 91 8 22 7 81 77 10
Tal vez se pregunte por qué hay tantos algoritmos de ordenación. La razón es el tipo d
datos que necesitan ser clasificados. Un algoritmo es más eficiente para una lista que se ci
( * 6 2 ! = 2 1J
dena más frecuentemente, mientras que otro algoritmo es más eficiente para una lista que e;
0 1 ^ 2 7 4 7 6 7 8 9 10 11
tá completamente desordenada. Para decidir cuál algoritmo es adecuado para una aplicado
4 21 ,3 6 14 62 91 8 22 7 81 77 10
en particular, se necesita una medición llamada complejidad de algoritmos. Este tema se es p o s ic ió n
tudia en el capitulo 17, pero una comprensión a fondo requiere tomar cursos adicionales e ----- ( f i 2 1 = 3 6 )
programación y estructuras de datos.
n 1 7 * “” 4. S 6 7 8 9 10 11
4 2! 36 14 62 91 8 22 7 81 77 10
BÚSQ U ED A Otro algoritmo común en las ciencias de la computación es la búsqueda, la cual es el proc;
so de encontrar la ubicación de un objetivo entre una lista de objetos. En el caso de una lisu
la búsqueda significa que dado un valor, usted desea encontrar la ubicación (índice) del prim; , 7 S 6 7 8 9 1(1 11
elemento en la lista que contiene ese valor. El concepto de búsqueda se ilustra en la figura 8.E 4 21 36 14 b?
91 8 22 7 81 77 10
El algoritmo de búsqueda secuencial es muy lento. Si usted tiene una lista de 1 millón de ele
Búsqueda b in a ria
mentos, debe hacer un millón de comparaciones en el peor de los casos. Sí la lista no está or
denada, ésta es la única solución. Sin embargo, si la lista está ordenada puede usar un
algoritmo más eficiente llamado búsqueda binaria. En términos generales, los programado-
res utilizan una búsqueda binaria cuando una lista es grande.
Una búsqueda binaria comienza al probar los datos en el elemento que está a mitad de la
lista. Esto determina si el objetivo está en la primera o la segunda mitad de la lista. Si está en
la primera mitad no hay necesidad de hacer una revisión posterior en la segunda mitad. Si es
F ig u r a 8 .1 9 C o n c e p to d e b ú sq u e d a
tá en la segunda mitad, no hay necesidad de revisar la primera. En otras palabras, usted des
carta el estudio de la mitad de la lista en cada paso. Repita este proceso hasta que se encuentre
el objetivo o compruebe que éste no está en la lista. La figura 8.21 muestra cómo encontrar el
Hay dos búsquedas básicas para listas: búsqueda secuencial y búsqueda binaria. La bús
objetivo, 22, en la lista usando tres referencias: prim ero , medio y último.
queda secuencial puede utilizarse para localizar un elemento en cualquier lista, mientras que
ia búsqueda binaria requiere que la lista se ordene.
1. Al principio, el primero muestra 0 y el último muestra 11. Sea el medio la posición de
Búsqueda La búsqueda secuencial se utiliza si la lista en la que se está realizando la búsqueda no está en medio, (0 + 11)/2, o 5. Ahora se compara el objetivo (22) con los datos en la posi
se c u e n c ia ! ordenada. Por lo general usted utiliza esta técnica sólo para listas pequeñas o listas que no se ción 5(21). El objetivo es mayor que este valor, así que se ignora la primera mitad.
consultan a menudo. En otro casos, es mejor primero ordenar la lista y luego realizar la bús
queda usando la búsqueda binaria que se estudia más adelante. 2. El prim ero se mueve después del medio a la posición 6. Sea el medio la parte media de
En una búsqueda secuencial usted comienza buscando el objetivo desde el principio de la la segunda mitad, ( 6 + 1 1)/2, u 8. Ahora se compara el objetivo (22) con los datos de la
lista y continúa basta que encuentre el objetivo o esté seguro de que éste no está en la lista posición 8 (62). El objetivo es menor que este valor, así que los números de este valor
(debido a que usted ha llegado al final de la lista). La figura 8.20 esboza los pasos para en (62) se ignoran hasta el final.
contrar el valor 62.
3. El último se mueve antes del medio a la posición 7. El medio se calcula de nuevo, (7 +
6)/2, o 6. El objetivo (22) se compara con el valor de esta posición (22). Usted ha en
1Véase Richard F. Gilberg y BehrouzA . Forouzan, D ata Structures: A Pseudocode Approach with C++-
(Pacfic Grove, California, Brooks/Cole, 2001), pp. 502-559. contrado el objetivo y puede salir.
A lg o r it m o s 8 .7 R e cu rsiv id a d
Factorial (n) =
n X Factorial (n — L) si n > 0
4 7 8 10 14 21 22 36 62 77 81 91
F ig u r a 8 .2 3 D e fin ic ió n recursiva d e fa c to ria l
22 > 2 1
0
■Jhi
1 2 3 4 5 6 7 8 9 10 11 \
7 : í() .. 21 22 36 62 77 81 91 Factorial (2) = 2 X Factorial (1)1 Factorial (2) - 2 X 1 = 2 |
Factorial (0) = 1
DEFINICIÓN Un algoritmo se define de manera recursiva siempre que el algoritmo aparece dentro de la de
RECURSIVA finición misma. Por ejemplo, la función factorial puede definirse de manera recursiva como
F ig u r a 8.2 1 E jem plo d e una b ú sq u e d a b in aría en la figura 8.23.
La descomposición de factorial (3), usando la recursividad, se muestra en la figura 8.24.
Si usted estudia la figura con cuidado, notará que la solución recursiva para un problema in
volucra un proceso de dos sentidos. Primero se descompone el problema de arriba abajo y
luego se resuelve de abajo para arriba.
8.7 RECURSIVIDAD A juzgar por este ejemplo, parece como si el cálculo recursivo es mucho más grande y más
difícil. Así que ¿por qué querría usar el método recursivo? Aunque el método recursivo pare
En general, hay dos métodos para escribir algoritmos que resuelvan un problema. Uno utili ce más difícil cuando se usa papel y pluma, a menudo es una solución mucho más fácil y más
za iteraciones y el otro usa la recursividad. La recursividad es un proceso mediante el cua elegante cuando se usan computadoras. Asimismo, ofrece una simplicidad conceptual para el
un algoritmo se llama a sí mismo. creador y el lector.
DEFINICIÓN Para estudiar un ejemplo simple, considere el cálculo de un factorial. El factorial de un nú Solución iterativa Escribamos un algoritmo para resolver el problema factorial de modo iterativo. Esta solución
por lo general implica un ciclo como el que aparece en el algoritmo 8.7.
ITERATIVA mero es el resultado de los valores absolutos desde 1 hasta el número. La definición es itera
tiva (figura 8.22). Un algoritmo es iterativo siempre que la definición no involucra ai
algoritmo mismo. A lg o r it m o 8 .7 F actorial ite ra tiv o
F a cto ria l
En trada: U n e n te ro p o s itiv o num
1. E sta b le c e F a c tN e n 1
si n = 0 2 . E s ta b le c e i e n 1
3. w h i l e (i m e n o r o ig u a l q u e n u m )
Factorial (n ) — 3.1 E sta b le c e F a c tN a F a c tN x í
3 .2 In c re m e n ta i
r c X ( n - l ) x ( t t - 2 ) X . . . X 3 X 2 x l si tí > 0
End w h ile
4 . D e v u e lv e F a c tN
End
F ig u r a 8 .2 2 D e fin ic ió n ite ra tiv a d e fa cto ria l
A lg o r it m o s 8 .1 0 P rá c tic a
Solución recursiva La solución recursiva para un factorial se ve en el algoritmo 8.8. No se necesita un ciclo; el .g La búsqueda secuencial se usa para listas sin ordenar, Un algoritmo iterativo implica sólo los parámetros y no
concepto por sí mismo implica repetición. En la versión recursiva, usted permite que el algo el algoritmo mismo.
ritmo factorial se llame a sí mismo. g La búsqueda binaria se usa para listas ordenadas.
Un algoritmo recursivo implica el algoritmo mismo.
A lg o r it m o 8 .8 F a c t o r ia l r e c u r s iv o
Factorial
E n t r a d a : U n e n te r o p o s itiv o n u m
1. if ( n u m es ig u a l a 0)
8.10 PRÁCTICA
th e n
PREGUNTAS D i REPASO En las ciencias de la computación hay . estruc-
1.1 d e v u e lv e 1
turas básicas.
e ls e 1. ¿Cuál es la definición formal de algoritmo?
1 .2 d e v u e lv e n u m x F a c to ria l (n u m - 1) a. una
2. Defina las tres estructuras utilizadas en la programación b. dos
End if estructurada. c . tres
E nd
3. ¿Cómo se relaciona un diagrama de flujo con un algo d. cuatro
ritmo?
19. La estructura__ . prueba una condición.
4. ¿Cómo se relaciona el pseudocódigo con un algoritmo? a. de secuencia
5. ¿Cuáles son los otros términos para las unidades que b. de decisión
8.8 TÉRMINOS CLAVE conforman un algoritmo? C. de repetición
d. lógica
algoritmo función procedimiento 6. ¿Cómo utilizan los programadores la carta estructurada?
búsqueda iteración pseudocódigo 7. ¿Cuál es el propósito del algoritmo de sumatoria? 20. La estructura__ es cualquier acción.
búsqueda binaria módulo recursividad a. de secuencia
8. ¿Cuál es el propósito del algoritmo de multiplicatoria?
búsqueda secuencial ordenación subalgoritmo b. de decisión
carta estructurada ordenación por burbuja subprograms 9. ¿Cuál es el propósito de un algoritmo de ordenación? c. de repetición
datos de entrada ordenación por inserción subrutina 10. ¿Cuáles son los tres tipos de algoritmos de ordenación? d. lógica
datos de salida ordenación por selección sumatoria
11. ¿En qué se parecen los tres algoritmos de ordenación? 21. La estructura__ maneja acciones repetitivas.
diagrama de flujo paso de ordenación
¿En qué difieren? a. de secuencia
12. ¿Cuál es el propósito de un algoritmo de búsqueda? b. de decisión
c. de repetición
13. ¿Cuáles son los dos tipos de búsqueda principales? d. lógica
8 .9 RESUM EN ¿Cuál es la diferencia entre ellos?
22. es una representación pictórica de un algorit-
14. Dé una definición y un ejemplo de un proceso iterativo.
■ De manera informal, un algoritmo es un método paso a Una carta estructurada es una herramienta de diseño de
15. Dé una definición y un ejemplo de un proceso recursivo. a. Un diagrama de flujo
paso para resolver un problema o realizar una tarea. alto nivel que muestra la relación entre diferentes módu
los de un programa. b. Una carta estructurada
B Un algoritmo acepta una lista de entrada de datos y crea
c. El pseudocódigo
una lista de salida de datos. La sumatoria es un algoritmo básico en el cual los nú PREGUNTAS DE O PC IÓ N M Ú LT IPLE
d. Un algoritmo
meros se suman. 16. es un método paso a paso para resolver un
§ Un programa es una combinación de estructuras de se
cuencia, estructuras de decisión y estructuras de repeti La multiplicación es un algoritmo básico en el cual los problema o realizar una tarea. 23. es una representación del código parecida al
ción. números se multiplican. a. Una estructura inglés.
b. Una recursividad a. Un diagrama de flujo
fl Un diagrama de flujo es una representación pictórica de Encontrar el mínimo o el máximo en una lista de núme
c. Una iteración b. Una carta estructurada
un algoritmo. ros es un algoritmo básico.
c. El pseudocódigo
■ El pseudocódigo es una representación de un algoritmo La ordenación, un proceso para acomodar los datos en ti. Un algoritmo
d. Un algoritmo
parecida al inglés. orden, es un algoritmo básico. 17. Para establecer el valor de una variable antes de que ocu
es una herramienta de alto nivel que muestra
B Formalmente, un algoritmo es una serie ordenada de pa La ordenación por selección, la ordenación por burbuja y rra cualquier procesamiento, usted________ la variable.
la relación entre diferentes módulos de un programa.
sos precisos que produce un resultado y termina en un la ordenación por inserción son algoritmos de ordenación a. estructura
de uso común. a. Un diagrama de flujo
tiempo finito. b. itera b. Una carta estructurada
B Un algoritmo puede dividirse en unidades más pequeñas La búsqueda, un proceso para localizar un objetivo en e. inicializa c. El pseudocódigo
llamadas subalgoritmos. una lista de datos, es un algoritmo básico. ti. incrementa d. Un algoritmo
Ü
A lg o r it m o s 8 .1 0 P rá c tic a
25. Un subalgoritrao también se conoce com o________ . 33. En la ordenación por. , el elemento que va a la 42. Haga un diagrama de flujo para un algoritmo que en 54. Una lista contiene los siguientes elementos. Los prime
a. función lista ordenada siempre es el primer elemento en la lista cuentre el número menor entre N números. ros dos elementos se han ordenado usando el algoritmo
b. subrutina sin ordenar. 43. Escriba un pseudocódigo para el algoritmo del número de ordenación por inserción. ¿Cuál es el valor de los ele
c. módulo a. selección menor del ejercicio 42. mentos en la lista después de tres pasos más de la or
d. todos los anteriores b. burbuja denación por inserción?
44. Haga un diagrama de flujo para un algoritmo que en
c. inserción 3 13 7 26 44 23 98 57
cuentre el número mayor entre N números.
26. ________ es un algoritmo básico que encuentra el pro- d. todos los anteriores
ducto de una lista de números. 45. Escriba un pseudocódigo para el algoritmo del número 55. Una lista contiene los siguientes elementos. Usando el
34. En la ordenación por. el elemento más peque mayor del ejercicio 44.
a. La sumatoria algoritmo de búsqueda binaria, detalle los pasos que se
ño de la lista sin ordenar se intercambia con el elemen
b. La multiplicatoria 46. Escriba un pseudocódigo para el algoritmo de ordenación siguieron para encontrar el número 88. En cada paso,
to al principio de la lista sin ordenar.
por selección. muestre los valores del primero, último y medio.
c. El Menor a. selección
d. El Mayor b. burbuja 47. Haga un diagrama de flujo y escriba un pseudocódigo 8 13 17 26 44 56 88 97
c. inserción para el algoritmo de ordenación por burbuja.
27. L a _________ es un algoritmo básico que acomoda los 56. Una lista contiene los siguientes elementos. Usando el
d. todos los anteriores 48. Dibuje un diagrama de flujo y escriba un pseudocódigo algoritmo de búsqueda binaria, detalle los pasos que se
datos de acuerdo con sus valores.
, el elemento más peque para el algoritmo de ordenación por inserción. siguieron para encontrar 20. En cada paso, muestre los
a. solicitud de información 35. En la ordenación por.
ño se mueve al principio de la lista sin ordenar. No hay 49. Usando el algoritmo de ordenación por selección, orde valores de primero, último y medio.
b. ordenación
intercambio uno a uno. ne la siguiente lista en forma manual y muestre su traba- 8 13 17 26 44 56 88 97
c. búsqueda
a. selección . jo en cada paso:
d. recursividad 57. Escriba un algoritmo recursivo para encontrar el máxi
b. burbuja 14 7 23 31 40 56 78 9 2
mo común divisor (mcd) de dos enteros utilizando la de
28. ________ es un algoritmo básico que suma una lista de c. inserción
.50. Usando el algoritmo de ordenación por burbuja, ordene finición de la figura 8.25.
números. d. todos los anteriores
la siguiente lista en forma manual y muestre su trabajo
a. La sumatoria 36. _________es un algoritmo básico en el cual usted quie en cada paso:
b. La multiplicatoria re encontrar la localidad de un objetivo en una lista de
14 7 23 31 40 56 78 9 2 m cd (y, x) six < y
c. El Menor elementos.
d. El Mayor a. La ordenación 51. Usando el algoritmo de ordenación por inserción, orde m cd (x, y) = X si y = 0
b. La búsqueda ne la siguiente lista en forma manual y muestre su traba
29. es un algoritmo básico que encuentra el nú m cd (y, x m od y) en caso contrario
c. La multiplicatoria jo en cada paso: — —1
mero menor de una lista de números.
d. La sumatoria 14 7 23 31 40 56 78 9 2
a. La sumatoria F ig u r a 8 .2 5 Ejercicio 57
37. Utilice una búsqueda___ . para una lista sin ordenar. 52. Una lista contiene los siguientes elementos. Los prime
b. La multiplicatoria
a. secuencial ros dos elementos se han ordenado usando el algoritmo
c. El Menor
b. binaria de ordenación por selección. ¿Cuál es el valor de los ele
d. El Mayor
c. por burbuja mentos en la lista después de tres pasos más de la or 58. Escriba un algoritmo recursivo para encontrar la combi
30. En la ordenación por los elementos se divi d. por inserción denación por selección? nación de n objetos tomando k a la vez utilizando la de
den en dos listas: ordenados y sin ordenar. 38. Utilice una búsqueda__ para una lista ordenada. finición de la figura 8.26.
7 8 26 44 13 23 98 57
a. selección a. secuencial
b. burbuja b. binaria •'3. Una lista contiene los siguientes elementos. Los primeros
c. inserción c. por burbuja dos elementos se han ordenado usando el algoritmo de
d. todos los anteriores d. por inserción ordenación por burbuja. ¿Cuál es el valor de los elemen
tos en la lista después de tres pasos más de la ordenación C (n — 1, k) + C (n —1, £ —1) si n > i: > 0
31. Para la ordenación p o r __ se necesitan n - 1 pa 39. L a _________es un proceso en el cual un algoritmo se por burbuja?
sos para ordenar los datos. llama a sí mismo.
7 8 26 44 13 23 57 98 F ig u r a 8 .2 6 Ejercicio 58
a. inserción
a. selección
b. búsqueda
b. burbuja
c. recursividad
c. inserción
d. iteración
d. todos los anteriores
9.1 EVOLUCIÓN
Para escribir un programa para computadora, usted debe utilizar un lenguaje de computado
ra. Un lenguaje de computadora es una serie de palabras predefinidas que se combinan en
Lenguajes de
un programa de acuerdo con reglas predefinidas (sintaxis).
Con los años, los lenguajes de computadora han evolucionado desde lenguaje de máqui
na a lenguajes naturales. Una línea de tiempo para lenguajes de computadora se presenta en
la figura 9.1.
programación
E n este capítulo damos una visión general de los lenguajes de programación para dar a 1
estudiantes una idea de los distintos lenguajes y cuándo se usan. Primero estudiamos LENGUAJES En los primeros días de las computadoras, los únicos lenguajes de programación disponibles
evolución de los lenguajes. Enseguida clasificamos los lenguajes de acuerdo con su méta DE M Á Q U I N A eran los lenguajes de máquina. Cada computadora tenía su propio lenguaje de máquina, el
para resolver problemas y los tipos de problemas que pueden resolver. Luego estudiamos cual está formado por cadenas de 0 y 1. El programa 9.1 muestra un ejemplo de un progra
lenguaje popular y analizamos sus elementos y capacidades. ma en lenguaje de máquina. Este programa multiplica dos números e imprime el resultado.
EJECUCIÓN DE PROGRAMAS
Una vez que su programa se ha ligado, está listo para su ejecución. Para ejecutar su progra
ma usted utiliza un comando del sistema operativo, como run, para cargar su programa en
la memoria principal y ejecutarlo. Meter el programa en la memoria es la función de un pro
grama de sistema operativo conocido como el cargador, el cual localiza el programa ejecu
table y lo lee en la memoria. Cuando todo está listo se da el control al programa y comienza
la ejecución.
En la ejecución de un programa típico, el programa lee datos para su procesamiento ya
sea desde el usuario o desde un archivo. Después de que el programa procesa los datos, pre
para la salida. La salida de los datos puede ser hacia el monitor del usuario o a un archivo.
Cuando el programa está terminado, se lo indica al sistema operativo, el cual elimina el pro
grama de la memoria. La ejecución de un programa en un entorno de computadora personal
aparece esquematizada en la figura 9.3.
F ig u r a 9 .2 C o n s tru cc ió n d e un p ro g ram a
los programas se orientan en tomo a líneas de código mientras que la mayor parte del procesa
miento de texto se orienta en tomo a caracteres y líneas. Después de completar un programa,
usted guarda su archivo en el disco. Este archivo se meterá al compilador; a este archivo se le
conoce como archivo fuente.
COMPILACIÓN La información en un archivo fuente almacenada en el disco debe traducirse a lenguaje de má
quina de modo que la computadora pueda comprenderlo. La mayoría de los lenguajes de alto
DE PR O G R A M A
nivel utiliza un compilador para hacerlo. El compilador en realidad son dos programas separa
F ig u r a 9 .3 Ejecución d e un p ro g ra m a
dos; el preprocesador y el traductor.
El preprocesador lee el código fuente y lo prepara para el traductor. Cuando prepara el
código, busca comandos especiales conocidos como directivas de preprocesador. Estas di
rectivas indican al preprocesador que busque bibliotecas de código especiales, haga sustitu CATEG O RÍAS DE LENGUAJES
ciones en el código y prepare de algunas otras maneras el código para su traducción a
lenguaje de máquina. El resultado del preprocesamiento se llama unidad de traducción. Actualmente, los lenguajes de computadora se clasifican de acuerdo con el método que utili
Después de que el preprocesador ha preparado el código para su compilación, el traduc zan para resolver un problema y la categoría de problemas que resuelven. Dividimos los
tor realiza el trabajo de convertir la unidad de traducción a lenguaje de máquina. El traductor lenguajes de computadora en cinco categorías: lenguajes procedurales (imperativos), lengua
lee la unidad de traducción y escribe el m ódulo de objeto resultante en un archivo que lue jes orientados a objetos, lenguajes funcionales, lenguajes declarativos y lenguajes especiales
go puede combinarse con otras unidades precompiladas para formar el programa final. Un (figura 9.4).
módulo de objeto es el código en lenguaje de máquina. Aun cuando la salida del compila'
dor está en lenguaje de máquina no está listo para ejecutarse; es decir, aún no es ejecutable
porque no tiene todas las partes requeridas.
LIGADOR Un lenguaje de alto nivel tiene muchos subprogram as, algunos de los cuales están escrito^
DE PRO G RAM AS por usted y son parte de su programa fuente. Sin embargo, existen otros subprogramas co
mo los procesos de entrada/salida y subrutinas de biblioteca matemáticas que existen en al
gunas otras partes y deben ser adjuntadas a su programa. El ligador ensambla todas esta5
funciones, las de usted y las del sistema, en su programa ejecutable final. F ig u r a 9 .4 C a te g o ría s d e lenguajes
L e n g u a je s d e p ro g ra m a c ió n
COBOL ( COmmon Business-O riented Language: Lenguaje común orientado a negocios) La programación orientada a objetos utiliza un método para la solución de problemas total
fue diseñado por un grupo de científicos de computación dirigido por Grace Hopper de la mente diferente de la programación de procedimientos. Usted puede pensar en un elemento
Armada de Estados Unidos. COBOL tiene una meta de diseño específica: servir como un de datos en ambos lenguajes como un objeto. Un programa puede imaginarse como una se
lenguaje de programación para negocios. Los problemas a resolver en el medio empresarial rie de operaciones que desea realizar en el objeto.
son completamente diferentes de aquellos en un entorno de ingeniería. Los programas para En la programación procedural, los objetos están completamente separados y son totalmen
negocios no necesitan los cálculos precisos que requieren los programas de ingeniería. Las te independientes de las operaciones. Los objetos pueden almacenarse en una computadora y
necesidades de programación del mundo de los negocios pueden resumirse como sigue: diferentes programas que utilizan aplicaciones distintas se aplican a ellos. En otras palabras,
en la programación procedural los objetos son pasivos. No tienen ninguna operación definida
■ Acceso rápido a archivos y bases de datos
para ellos. Los programadores definen las operaciones y las aplican a los objetos.
■ Actualización rápida de archivos y bases de datos En la programación orientada a objetos, los objetos y las operaciones que se van a aplicar
fl Generación de una gran cantidad de informes en ellos están ligados. El programador primero define un objeto y los tipos de operaciones
■ Salida con un formato comprensible para el usuario que pueden aplicarse a este objeto. El programador (u otro programador) puede entonces usar
COBOL se diseñó para satisfacer todas estas necesidades. esta combinación e invocar algunas o todas las operaciones definidas para resolver un proble
ma. En otras palabras, los objetos en la programación orientada a objetos están activos.
9 .4 C a te g o ría s d e le n g u a je s
174 L e n g u a je s d e p ro g ra m a c ió n
vidor y se ejecuta por un explorador. El explorador puede descargar el applet y ejecutarlo lo-
La idea es similar para los objetos en ía vida real. Existen objetos que son pasivos, com
una piedra. No hay operación incluida con la piedra. Si alguien quiere realizar una oper; calmente.
En Java, un programa de aplicación (o un applet) es una colección de clases e instancias de
ción en una piedra, él o ella define la operación y la realiza. Por otro lado, un automóvil c
esas clases. Una característica interesante de Java es ía biblioteca de clases, una colección
un objeto activo. Hay varias operaciones definidas para un automóvil. El conductor sólo n<
de clases. Aunque C++ también ofrece una biblioteca de clases, en Java el usuario puede
cesita invocar a una de estas operaciones.
construir nuevas clases con base en aquellas provistas por la biblioteca.
Varios lenguajes orientados a objetos se han desarrollado. Estudiamos brevemente 1:
La ejecución de un programa en Java también es única. Usted crea una clase y la pasa al
características de dos: C++ y Java.
intérprete que llama a los métodos de clase.
Otra característica interesante en Java es la ilación múltiple (multithreading ). Un hilo (th
El lenguaje C++ fue desarrollado por Bjame Strousírup en Bell Laboratories como un lej
read ) es una secuencia de acciones ejecutadas una después de otra. C++ sólo permite una
guaje C mejor. Utiliza clases para definir las características generales de objetos similares
ilación individual (todo el programa se ejecuta como un solo hilo), pero Java permite la ila
las operaciones que pueden aplicarse a ellos. Por ejemplo, un programador puede definir ur
ción múltiple (ejecución concurrente de varias líneas de código).
clase Formas_geométricas y todas las características comunes para dos formas geomi
tricas bidimensionales tales como el centro, el número de lados y así por el estilo. La cía;
también puede definir operaciones (funciones o métodos) que pueden aplicarse a una forn
geométrica tales como el cálculo y la impresión del área, el cálculo y la impresión del peí LENGUAJES En la programación funcional, un programa se considera una función matemática. En este
metro, la impresión de las coordenadas del punto central, etc. Por tanto, se puede escribir i FUNCIONAL! contexto, una función es una caja negra que correlaciona una lista de entradas con una lista
programa para crear diferentes objetos del tipo Formas_geométricas. Cada objeto pu de salidas (figura 9.5).
de tener un centro localizado en un punto distinto y un número diferente de lados. El pr< Por ejemplo, la sum a puede considerarse una función con n entradas y sólo una salida.
grama puede entonces calcular e imprimir el área, el perímetro y la ubicación del centro pa La función toma ias n entradas, las suma y crea el resultado de la suma. Un lenguaje fun
cada objeto. cional realiza lo siguiente:
En el diseño del lenguaje C++ se utilizaron tres principios: encapsulamiento, herencia
polimorfismo. 1. Predefine una serie de funciones primitivas (atómicas) que puede usar cualquier pro
gramador.
Encapsulam iento El encapsulam iento es la idea de ocultar los datos y algunas operad 2. Permite al programador combinar funciones primitivas para crear funciones nuevas.
nes que pueden realizarse en los datos dentro del objeto. El usuario de objetos normalme:
te no tiene acceso directo a los datos. En vez de ello, se accede a los datos a través de una Por ejemplo, usted puede definir una función primitiva llamada prim ero que extrae el primer
interfaz (una llamada a una serie particular de operaciones). En otras palabras, el usuario sa elemento de una lista. Puede tener también una función llamada resto que extraiga todos los ele
be qué se hace con los datos sin saber cómo se hace. mentos excepto el primero. Un programa puede definir una función que extrae el tercer elemen
to de una lista al combinar estas dos funciones como se muestra en la figura 9.6.
Herencia En C++, como en la naturaleza, un objeto puede heredar algo de otro objeto. A
este concepto se le conoce como herencia. Cuando se define una clase general, usted pue
de definir una clase más específica que hereda algunas de las características de la clase ge
neral, pero también tiene nuevas características. Por ejemplo, cuando un objeto de tipo
Formas_geométricas se define, usted puede definir una clase llamada Rectángulos.
Los rectángulos son formas geométricas con características adicionales. En C++ se permite
herencia múltiple. Una clase puede heredar algo de más de una clase. n entradas m salidas
Java se desarrolló en Sun Microsystems, Inc. Se basa en C y en C++, pero algunas caracte
rísticas de C++, como la herencia múltiple, se quitaron para hacer el lenguaje más robusto.
Además el lenguaje está totalmente orientado a clases. En C++ uno puede resolver un pro
blema incluso sin definir una clase. En Java, cada elemento de datos pertenece a una clase.
Un programa en Java puede ya sea ser una aplicación o un applet. Una aplicación es un pro
grama independiente completo que puede ejecutarse de manera independiente (como un
F ig u r a 9 .6 Extracción del te rce r e le m e n to d e una lista
programa C++). Un applet, por otro lado, se incrusta en lenguaje HTM, se almacena en un ser
I"<* L e n g u a je s d e p ro g ra m a c ió n 9 .4 C a te g o ría s d e le n g u a je s
Un lenguaje funcional tiene dos ventajas sobre un lenguaje de procedimiento: foment Un problema asociado con los lenguajes declarativos es que un programa es específico
programación modular y permite al programador hacer nuevas funciones además de las e: para un dominio particular porque la recopilación de todos los hechos en un programa hace
tentes. Estos dos factores ayudan a un programador a crear programas grandes y menos { que el programa se vuelva enorme. Ésta es la razón por la cual la programación declarativa
pensos a errores a partir de programas ya probados. está limitada hasta ahora sólo a campos específicos como la inteligencia artificial.
Estudiamos brevemente LISP y Scheme como ejemplos de lenguajes funcionales.
Prolog Uno de los lenguajes declarativos famosos es Prolog (PROgramming in LO G ic : programa
LISP LISP (LISt Programming ) fue diseñado por un equipo de investigadores del MIT a prii ción en lógica), desarrollado por A. Colmerauer en Francia en 1972. Un programa en Pro
pios de la década de 1960. Es un lenguaje de programación de procesamiento de listas e: log está formado por hechos y reglas. Por ejemplo, los hechos anteriores sobre los seres
cual todo se considera una lista. humanos pueden exponerse como sigue:
humano (John)
Schem e El lenguaje LISP sufrió de una carencia de estandarización. Después de un tiempo, había
ferentes versiones de LISP por todas partes; el estándar de facto es el desarrollado po: mortal (humano)
MIT a principios de la década de 1970, llamado Scheme.
El usuario puede entonces preguntar:
El lenguaje Scheme define un conjunto de funciones primitivas que resuelve problen
El nombre de la función y la lista de entradas a la función se colocan entre paréntesis. El ? - mortal (John)
sultado es una lista de salida que puede usarse como la lista de entrada a otra función. Por
ejemplo, existe una función, car, que extrae el primer elemento de una lista. Hay una f y el programa le responderá que sí.
ción, llamada cdr, que extrae el resto de los elementos de una lista excepto el primero,
otras palabras usted tiene: LENG UAJES Durante las últimas décadas, han aparecido algunos lenguajes nuevos que no pueden colo
ESPECIALES carse en las cuatro categorías que acabamos de analizar. Algunos son una combinación de
(car 2 3 7 8 11 17 20) ====> 2 dos o más modelos y otros pertenecen a una tarea específica. Los clasificamos bajo el rubro
(cdr 2 3 7 8 11 17 20) ====> 37 8 11 17 20 de lenguajes especiales.
Ahora puede combinar estas dos funciones para extraer el tercer elemento de cualquier li HTM L El H TM L (lenguaje para marcado de hipertexto) es un pseudolenguaje que incluye marcas
que sirven como sugerencias de formato y vínculos a otros archivos. Un archivo HTML es
(car (cdr (cdr list))) tá formado por texto y etiquetas. Una etiqueta aparece entre dos paréntesis angulares y por
lo general viene en pares. Un archivo HTML (página) se guarda en el servidor y puede des
Si usted aplica la función anterior a 2 3 7 8 11 17 2 0, ésta extrae el 7debido ai cargarse mediante un explorador. El explorador elimina las etiquetas y las interpreta como
el resultado del paréntesis más interior es 3 7 8 11 17 2 0. Esto se convierte en la sugerencias de formato o vínculos a otros archivos. Un lenguaje de marcado como el HTML
trada para el paréntesis medio con el resultado 7 8 11 17 2 0. Esta lista ahora se vi le permite incrustar instrucciones de formato en el archivo mismo. Las instrucciones se al
ve la entrada para la función car la cual extrae el primer elemento, 7. macenan con el texto. De esta manera, cualquier explorador puede leer las instrucciones y
dar formato al texto de acuerdo con la estación de trabajo que se está usando.
LENGUAJES Un lenguaje declarativo utiliza el principio del razonamiento lógico para responder a Uno podría preguntar: ¿Por qué no se usan las capacidades de formato de los procesado
D E C L A R A T IV O S consultas. Se basa en la lógica formal definida por los matemáticos griegos y desarroll; res de palabras para crear y guardar el texto con formato? La respuesta es que los distintos
(LÓGICOS) posteriormente en lo que se llama cálculo de predicados de p rim er orden. procesadores de palabras utilizan técnicas o procedimientos diferentes para dar formato al
El razonamiento lógico se basa en la deducción. Se dan algunas instrucciones (hech texto. El HTML le permite usar sólo caracteres ASCII tanto para el texto principal como pa
que se supone son verdaderas; la lógica utiliza reglas rigurosas de razonamiento lógico ra las instrucciones de formato. De esta manera, cada computadora puede recibir el docu
ra deducir nuevas instmcciones (hechos). mento entero como un documento ASCII. El texto principal son los datos y el explorador
puede usar las instrucciones .de formato para dar forma a los datos. Un programa HTML se
Por ejemplo, la famosa regla de deducción en lógica es:
compone de dos partes: el encabezado y el cuerpo.
Si (A es igual a B) y (B es igual a C) , entonces (A es
igual a C) Encabezado (Head) El encabezado es la primera parte que contiene el título de la pági
na y oíros parámetros que utilizará el explorador.
Usando esta regla y los dos hechos siguientes,
Hecho 1: Sócrates es un ser humano A es igual a B Cuerpo (Body) El contenido real de una página está en el cuerpo, el cual incluye el tex
Hecho 2: Un humano es mortal
to y las etiquetas. Mientras que el texto es la información real contenida en una página, las
B es igual a C
etiquetas definen la apariencia del documento. Cada etiqueta HTML es un nombre seguido
podemos deducir un nuevo hecho: por una lista opcional de atributos, encerrados entre paréntesis angulares (<and>).
Hecho 3: Sócrates es mortal — A es igual a C
Etiquetas (Tags) El explorador toma una decisión respecto a la estructura del texto basa
Los programadores deben estudiar el dominio de su tema (conocer todos los hechos en el do en las etiquetas, las cuales son marcas que se incrustan en el texto. Una etiqueta está en
dominio) u obtener los hechos de expertos en el campo. Además los programadores deben cerrada entre dos paréntesis angulares y usualmente viene por pares. Una etiqueta puede tener
ser expertos en lógica para definir cuidadosamente las reglas. Luego el programa puede de una lista de atributos, cada uno de los cuales puede estar seguido por un signo igual y un va
ducir y crear nuevos hechos. lor asociado con el atributo. La tabla 9.1 muestra algunas de las etiquetas más comunes.
rs L e n g u a je s d e p ro g ra m a c ió n 9 .5 U n le n g u a je p ro c e d u ra l: C
TIPOS DE DATOS Un tipo de dato define un conjunto de valores y una serie de operaciones que pueden apli
carse a aquellos valores. El conjunto de valores para cada tipo se conoce como el dominio
<HTML>
para el tipo. Por ejemplo, un interruptor de luz puede compararse con un tipo de computa
<HEAD>
dora. Tiene un conjunto de dos valores: encendido y apagado. Dado que el dominio de un
<TITLE> Documento de muestra </TITLE> interruptor de luz consiste en sólo estos dos valores, su tamaño es dos. Sólo hay dos opera
</HEAD> ciones que pueden aplicarse a un interruptor de luz: encender y apagar.
<BODY> C contiene tres tipos estándar: int (abreviatura para enteros), char (abreviatura para ca
Ésta es la imagen de un libro: racteres), float (abreviatura para punto flotante). Los tipos estándar son atómicos: no pueden
dividirse. También sirven como los bloques de construcción básicos para los tipos derivados.
<IMG SRC="Imágenes/librol.g i f " ALIGN=MIDDLE>
Los tipos derivados son estructuras complejas que se construyen usando los tipos estándar.
</BODY>
1 Los tipos derivados son: apuntador, tipo enumerado, unión, arreglo y estructura.
</HTML>
.
in te g e r Un tipo int (integer: entero) es un número sin una parte fraccionaria. También se conoce co
P rogram a 9 .4 P ro g ram a H T M L
mo un número integral. C soporta tres tamaños distintos del tipo de datos entero: short
int, int y long int. Un short int también puede referirse como short y a long int
también se le puede llamar long. Ya definimos un entero en el capítulo 3; las denominacio
nes short y long definen el número de bytes asignados para un entero por el compilador.
PERL El lenguaje práctico de extracción e informes (PERL: Practical Extraction and R eport Lai
guage ) es un lenguaje de alto nivel con una sintaxis similar al lenguaje C pero más eficiei C har El segundo tipo es char (character: carácter). Aunque pensamos en los caracteres como si
te. La fuerza de Perl radica en su uso bien diseñado de expresiones regulares que permití fueran letras del alfabeto, el lenguaje C tiene otra definición. Para C, un carácter es cualquier
al programador hacer un análisis sintáctico de una cadena de caracteres en sus component* valor que puede representarse en el alfabeto de la computadora. C utiliza el alfabeto del Có
y extraer la información requerida. digo norteamericano de estándares para intercambio de información (ASCII, que se pronun
cia as-qui). Los caracteres ASCII se presentan en forma de tabla en el apéndice A.
Después de esto, la computadora asigna algunas localidades de memoria (el número depen
float Un tipo float es un número con una parte fraccionaria, por ejemplo 43.32. Los tipos
de del sistema de cómputo) y las llama en forma colectiva precio. Observe que esta varia
tantes se definieron en el capítulo 3. El lenguaje C soporta tres tamaños diferentes de
ble está definida, pero no hay nada almacenado todavía en ella.
de datos de punto flotante: float, double y longdouble. Al igual que en el caso de
los tipos float se definen del menor al mayor.
Inicializadón C permite que una variable se inicialice al momento que se declara y define. El inicializa-
de variables dor establece el primer valor que la variable contendrá. Para inicializar una variable cuando
VARIABLES Las variables son nombres de localidades de memoria. Como se vio en el capítulo 5, ésta es definida el nombre es seguido por el operador de asignación (el signo igual) y luego
localidad de memoria (o palabra) en una computadora tiene una dirección. Aunque la < por el inicializador. El formato de inicialización simple es:
putadora utiliza las direcciones internamente es muy inconveniente para el programador i¡<
•t-- '' float p r e c i o = 23.45 ; .
direcciones debido a que el programador no sabe dónde se almacenan el programa y lo;
tos en la memoria. Los nombres como un sustituto de las direcciones, liberan al progri
dor de pensar en el nivel que se ejecuta el programa. Un programador puede usar CONSTANTES Las constantes son valores de datos que no pueden cambiarse durante la ejecución de un
variable, tal como puntaje para almacenar el valor entero de una calificación recibida programa. Por ejemplo, tal vez un programador necesite usar el valor de p i (3.14) varias ve
una prueba (97). La computadora puede usar la localidad de memoria 245,876 para alma ces. Es muy conveniente definir una constante al principio de un programa y usarla. En al
nar este valor. Cuando se hace una referencia a puntaje durante la ejecución del prog gunas ocasiones el valor puede cambiar, pero no cada vez que se ejecute el programa. Por
ma, la computadora sabe que esto significa la localidad 245,876. La figura 9.7 muestra ejemplo, el valor de gravamen puede cambiar cada año, pero se fija durante el año. Un pro
concepto de una variable. gramador puede definir una constante para el valor de gravamen y revisar cada año para ver
si éste ha cambiado.
Las constantes pueden aparecer en un programa en una de tres formas: constante literal,
constante nombrada o constante simbólica.
Constante literal Una constante literal es un valor sin nombrar que se usa en un programa tal cual es. Por
ejemplo, a continuación se muestra cómo se utiliza una constante literal en una instrucción
en C. El valor 2 es una constante literal. Las variables son longitud, ancho y circunferencia.
géfianx:cc('de.;;i|5';.'
íLhL'lfl! i . Íllfí' •:l~k •V‘” circunferencia = 2 longitud * ancho
\Lo u | 4, n a J í d n a l _ d e b i l í
Constante Una constante nombrada es un valor que se almacena en la memoria; usted no quiere que
; Í ^ :a tb#ayR:;5|^'T" i|¡í§;
nombrada el programa la cambie. Enseguida se muestra cómo el lenguaje C crea una constante nom
dóubl e pi í brada:
Programa Memoria const p i = 3.14 ;
Figura 9 . 7 V ariables
Constante Una constante simbólica es un valor que tiene sólo un nombre simbólico. El compilador
simbólica puede remplazar el nombre con el valor. En la mayoría de los lenguajes de programación, el
valor no se almacena en la memoria. La constante simbólica se define al principio del pro
C requiere que el programador defina un tipo para la variable. La razón es que el tipo grama para hacerla evidente. Se utiliza para una constante que cambia su valor de manera
define el rango de los datos que pueden almacenarse en la variable y define el número de ocasional. Lo siguiente demuestra cómo el lenguaje C define una constante simbólica:
bytes que pueden asignarse a esa variable.
#define ,V a l o r Gravamen 0 .0825 .-'u-"'
D eclaración C requiere que una variable se declare y defina antes de usarla. Una declaración se usa para Al igual que las variables, las constantes tienen un tipo. La mayoría de los lenguajes de pro
nombrar una variable. Las definiciones se utilizan para crear la variable y asignar una loca
Constantes
y definición gramación utilizan constantes enteras, constantes de punto flotante, constantes de carácter y
lidad de memoria a ella. y tipos
de variables constante de cadena. Por ejemplo, el código siguiente muestra diferentes constantes en el
Cuando usted crea una variable la declaración le da un nombre simbólico y la definición lenguaje C. Las literales de carácter se almacenan en comillas simples; las literales de cade
reserva memoria para ella. Una vez definidas, las variables se utilizan para alojar los datos na están entre comillas dobles. Observe que el texto encerrado entre /* y */ es un comenta
que requiere el programa para su operación.
rio que ignora el compilador.
El tipo de variable puede ser cualquiera de los tipos de datos, como char, int o float.
Para crear una variable se especifica el tipo y el nombre. Por ejemplo, lo siguiente puede 23 /* Literal: de entero */
usarse para declarar y definir una variable llamada precio en C. El nombre de la variable 23.12 /* •;Literal de punto flotante */
es precio y su tipo es float (número de punto flotante). 'A' ' '/*' Literal de carácter • */
"Hola" • /* Literal de cadena */
float p re c ia : ; - ' \
L e n g u a je s d e p ro g ra m a c ió n 9.5 U n le n g u a je p ro c e d u ra l: C
ENTRADA Casi todos los programas necesitan leer y/o escribir datos. Estas operaciones pueden ser bas Operador Definición Ejemplo
¥ S A L ID A tante complejas, en especial cuando se leen o escriben archivos grandes. La mayoría de los
< Menor que Numl < 5
lenguajes de programación utilizan una función predefinida para entrada y salida.
<= Menor o igual que Numl <= 5
> Mayor que Num2 > 3
Entrada La introducción de los datos se da ya sea por una instrucción o por una función predefinida. >= Mayor o igual que Num2 >= 3
El lenguaje C tiene varias funciones de entrada. Por ejemplo, la función scanf lee datos des == Igual que Numl == Num2
de el teclado y los almacena en una variable. Véase el siguiente ejemplo: i_ No igual que Numl != Nurn2
Cuando el programa encuentra esta instrucción, espera a que el usuario teclee un entero. Lue Operadores lógicos Los operadores lógicos combinan valores lógicos (verdadero o fal
go almacena el valor en la variable num. La % d indica al programa que espere un entero. so) para obtener un nuevo valor. El lenguaje C utiliza tres operadores lógicos como se mues
tra en la tabla 9.4.
S a lid a La salida de los datos se da ya sea por una instrucción o por una función predefinida. El len
guaje C tiene varias funciones de salida. Por ejemplo, la función printf despliega una cade Operador Definición Ejemplo
na en el monitor. El programador puede incluir el valor de una variable o variables como parte
i NO ! (Numl < Num2)
de una cadena. Enseguida aparece el valor de una variable al final de una cadena literal.
&& Y (Numl < 5) && (Num.2 > 10)
printf ("El valor del púiaero es: %d" , iuun i ; ./ )}
1i O (Numl < 5) II (Num2 > 10)
T a b la 9 .4 O p e ra d o re s lógicos
EXPRESIONES Una expresión es una secuencia de operandos y operadores que se reduce a un solo valor.
Por ejemplo, la siguiente expresión tiene un valor de 10.
Operadores de asignación Un operador de asignación almacena un valor en una va
riable. El lenguaje C define varios operadores de asignación, algunos de los cuales se mues
tran en la tabla 9.5.
O p e rad or Un operador es un elemento sintáctico de un lenguaje específico que requiere que se reali
ce una acción. Los operadores más conocidos se tomaron de las matemáticas. Por ejemplo,
Operador Ejemplo Significado
multiplicar (*) es un operador. Indica que dos números se van a multiplicar. Todos los len
guajes tienen operadores y su uso se especifica rigurosamente en la sintaxis, o reglas, del = num = 5 Almacena 5 en la variable num
lenguaje. += num += 5 Lo mismo que num = num + 5
-= num -= 5 Lo mismo que num num - 5
*_ num 9?_ 5 Lo mismo que num num * 5
Operadores aritméticos El lenguaje C define varios operadores aritméticos, algunos
de los cuales se muestran en la tabla 9.2. /= num /= 5 Lo mismo que num num / 5
%= num %= 5 Lo mismo que num = num % 5
T a b la 9 .5 O p e ra d o re s d e asig n ació n
Operador Definición Ejemplo
+ Suma 3 +
- Resta 2 - 4 Operando Un operando recibe la acción de un operador. Para cada operador dado puede haber uno,
dos o más operandos. En nuestro ejemplo aritmético, los operandos de multiplicar son el
* Multiplicación Num * 5
multiplicador y el multiplicando.
/ División (cociente) Sum/
% División (residuo) Count
INSTRUCCIONES Una instrucción provoca que el programa realice una acción. Ésta se traduce directamente
Count % 4
en una o más instrucciones de computadora ejecutables. Por ejemplo, el lenguaje C define
++ Incremento (suma 1 al valor de la variable) Count++ seis tipos de instrucciones: instrucción de expresión, instrucción compuesta, instrucción eti
— Decremento (resta 1 al valor de la variable) Count— quetada, instrucción de selección, instrucción iterativa e instrucción de salto (figura 9.8). En
T a b ia 9 .2 O p e ra d o re s aritm ético s esta sección se estudian algunas de ellas.
Instrucciones Una expresión se convierte en instrucción al colocar un punto y coma (;) después de ella.
Operadores relaciónales Los operadores relaciónales comparan los datos para ver si nfl Cuando C ve el punto y coma evalúa la expresión. Si hay una asignación involucrada (exis
valor es mayor que, menor que o igual que otro valor. El resultado de aplicar operadores re
de expresión
tencia de un operador de asignación, un ++ o — ), el valor se almacena en la variable. Si no
laciónales es los valores lógicos verdadero (true) o falso (false). El lenguaje C utiliza seis hay asignación el valor se descarta. A continuación se presentan algunos ejemplos de ins
operadores relaciónales (tabla 9.3). trucciones de expresión:
L e n g u a je s d e p ro g ra m a c ió n 9.5 U n le n g u a je p ro c e d u ra l: C
archivo, o el cambio del valor de una variable en la función que llama. El concepto de fun
-'a í + A . ' . - ción aparece en la figura 9.9.
íX-í: k . = :íél ' ' A -■ V
c = b + a * 4
Declaración Las funciones en C deben tanto declararse como definirse. La declaración de funciones se
de f u n c ió n realiza con una declaración prototipo. Usted utiliza la función al llamarla. La definición de
Una instrucción compuesta es una unidad de código que consiste en cero o más instruccio función contiene el código requerido para completar la tarea. La figura 9.10 muestra las in-
Instrucciones
nes. También se conoce como bloque. La instrucción compuesta permite a un grupo de ins terrelaciones entre estos componentes de función. Observe que el nombre de función se uti
com puestas
trucciones volverse una sola entidad.Una instrucción compuesta se compone de una llave liza tres veces: cuando se declara la función, cuando se llama y cuando se define.
de apertura y una sección de instrucciones opcional, seguidapor un corchetede cierre. En
seguida se muestra la composición de una instrucción compuesta.
Definición La definición de función contiene el código para una función. La definición se compone de
de f u n c ió n dos partes: el encabezado de función y el cuerpo de función, el cual es una instrucción com
{ puesta.
x = 1;
y = 20; Encabezado de función Un encabezado de función consiste en tres partes: el tipo de re
} greso, el nombre de función y la lista de parámetros formales.
EN C, una subrutina se conoce como función. Un programa en C está formado por una o Cuerpo de función El cuerpo de función contiene las declaraciones e instrucciones para
FUNCIONES
más funciones, una y sólo una de las cuales debe llamarse main (principal). La ejecución la función. El cuerpo inicia con definiciones locales que especifican las variables requeridas
del programa siempre inicia y termina con main, pero esta función puede llamar a otras fun por la función. Después de las declaraciones locales, se codifican las instrucciones de fun
ciones para que realicen tareas especiales. ción, terminando con una instrucción r e t u r n . Si un tipo de retomo de función es v o id
Una función en C (incluyendo a main) es un módulo independiente que se llama para que puede escribirse sin una instrucción r e t u r n .
realice una tarea específica. La función main es llamada por el sistema operativo; main a su
vez llama a otras funciones. Cuando main se ha completado el control regresa al sistema L la m a d a d e f u n c ió n Una llamada de función se utiliza para llamar a la función. La llamada contiene los pará
operativo. metros reales, los cuales identifican los valores que se van a enviar a la función llamada.
En general, el propósito de una función es recibir cero o más piezas de datos, realizar Estos corresponden a los parámetros formales de la función en tipo y orden en la lista de pa
operaciones en ellos y devolver a lo más una pieza de datos. Al mismo tiempo, una función rámetros. Si hay varios parámetros actuales, éstos se separan por comas.
puede tener un efecto secundario, el cual es una acción que resulta en un cambio de estado
del programa. Si hay un efecto secundario, éste ocurre cuando la función se está ejecutando
Pa$0 de parám etros En C, se puede pasar un parámetro a una función de dos maneras: paso por valor y paso por
y antes de que regrese la función. El efecto secundario puede implicar la aceptación de da
referencia.
tos desde fuera del programa, el envío de datos fuera del programa hacia el monitor o a un
L e n g u a je s d e p ro g ra m a c ió n 9 .5 U n le n g u a je p ro c e d u ra l: C is
;
(int nu
F ig u r a 9 .1 1 In stru cción i f - e l s e
Paso por valor Cuando sé pasa por valor se crea una copia de los datos y se coloca en
una variable local en la función llamada. Esta forma de pasar los datos asegura que a pesar
de cómo se manipulen los datos y cambien en la función llamada, los datos originales en la
función que llama están seguros y permanecen sin cambios. Debido a que el paso por valor
protege a los datos, es la técnica de paso preferida.
Paso por referencia Sin embargo, hay veces que es necesario pasar por referencia. El pa
so por referencia envía la dirección de una variable a la función llamada en lugar de enviar
su valor. Cuando usted quiere cambiar el contenido en una variable en la función que llama,
debe pasar por referencia. Figura 9 .1 2 In stru cción s w itc h .
Considere el caso en el cual necesita escribir una función que procese dos valores de da
tos y los devuelva a la función que llama; es decir, almacena sus valores en el programa que ambas instrucciones se ejecuten en la misma evaluación. Una instrucción i f - e l s e puede
llama. Dado que una función puede devolver sólo un valor, usted tiene un problema. La so anidarse (una dentro de la otra) para crear una selección de múltiples sentidos.
lución es el paso por referencia.
switch Aun cuando se puedan utilizar instrucciones i f - e l s e anidadas para la selección de múlti
ples sentidos, hay otra instrucción en C para este propósito: la instrucción switch (figura
SELECCIÓN Como se vio en el capítulo 8, para resolver un problema usando un algoritmo se necesitan
9.12). La condición de selección debe ser uno de los tipos integrales de C.
instrucciones de selección.
while ( expresión )
{ do
{
Acción
. Acción '
Acción i ¡
Acción
r: Acción •
Acción.
Acción
}
} while ( expresión
Salida
b. Lenguaje C
a. Diagrama de flujo b. Lenguaje C
F ig u ra 9 .1 5 C iclo d o - w h i le
F ig u r a 9 .1 3 C iclo w h i l e
Ciclo do-while El ciclo d o - w h ile es también un ciclo controlado por eventos; no obstante, a diferencia del
ciclo while es un ciclo post prueba (figura 9.15). El ciclo realiza una iteración y prueba
el valor de una expresión. Si es falso, termina. Si es verdadero, realiza una iteración más y
prueba de nuevo.
for ( exprl í
exprS í
expr3 ) TIPOS DE DATOS Además de los datos simples estudiados anteriormente, el lenguaje C también permite tipos
DERIVADOS de datos derivados: arreglos, apuntadores, uniones y estructuras. Estudiaremos algunos de
estos tipos de datos en el capítulo 11 sobre la estructura de datos.
RECURSION El lenguaje C soporta la recursividad (analizada en el capítulo 8). Una función en C puede
llamarse a sí misma.
37. El compilador consiste de u n ________ y u n _________. 46. , el primer lenguaje de alto nivel, aún es p 54. Un ejemplo de un lenguaje________ es Prolog. 62. Investigue y encuentre el formato de la instrucción com
a. preprocesador; cargador pular en las comunidades científicas y de ingeniería. a. procedural puesta en FORTRAN, COBOL y Pascal. Compárelo y
b. editor de texto; cargador a. FORTRAN b. funcional contrástelo con el formato definido para el lenguaje C en
c. preprocesador; traductor b. C++ c. declarativo este capítulo. Utilice una tabla para la comparación.
d. ligador; preprocesador c. C d. orientado a objetos
d. COBOL 63. Investigue y encuentre el formato de las instrucciones ite
38. es el código en lenguaje de máquina. rativas (ciclo f o r , ciclo w h ile , ciclo d o - w h ile , etc.)
s?, HTML, PERL y SQL caen dentro de la clasificación de
a. U na unidad de traducción 47. es un programa diseñado para enseñar pi en FORTRAN, COBOL y Pascal. Compárelo y contrás
lenguajes________ .
b. Un módulo objeto gramación a los novatos que enfatiza el método de pi telo con el formato definido para el lenguaje C en este ca
a. modernos
c. U n archivo fuente gramación estructurado. pítulo. Utilice una tabla para la comparación.
b. especiales
d. U n subprograma
a. C++ c. declarativos
39. Un programa de sistema operativo llam ado________ b. C d. orientados a objetos 64. Investigue y encuentre el formato de las instrucciones de
lleva el programa ligador en la memoria. c. Pascal decisión ( i f y s w itc h ) en FORTRAN, COBOL y Pas
a. cagardor d. Scheme 56. Un tipo de datos estándar en el lenguaje C _______ . cal. Compárelo y contrástelo con el formato definido pa
b. vinculador a. i n t ra el lenguaje C en este capítulo. Utilice una tabla para la
48. El sistema operativo UNIX está escrito en un lenguí b. c h a r comparación.
c. traductor
llam ado________ . c. f l o a t
d. procesador
a. C++ d. todos los anteriores 65. Investigue y encuentre la instrucción de salto (por ejem
40. Un lenguaje utiliza el método tradicional pa b. C plo, g o to y c o n tin u e ) en FORTRAN, COBOL y Pas
ra programación y también se conoce como lenguaje 5". El tipo de datos estándar describe un número cal. Compárela y contrástela con el formato definido para
c. Pascal
imperativo. con una parte fraccionaria. el lenguaje C en este capítulo. Utilice una tabla para la
d. LISP
a. procedural a. i n t comparación.
b. funcional 49. Un lenguaje procedural muy popular en el DoD b. c h a r
c. declarativo c. f l o a t 66. Investigue y encuentre cómo se manejan las funciones en
d. orientado a objetos a. Ada d. todos los anteriores FORTRAN, COBOL y Pascal. Compárelas y contráste
b. Java las con las funciones definidas para el lenguaje C en es
41. FORTRAN es un lenguaje________ . 58. El tipo de datos estándar describe un número
c. C++ te capítulo. Utilice una tabla para la comparación.
a. procedural sin una parte fraccionaria.
d. Scheme
b. funcional a. i n t 67. Investigue y encuentre si la recursividad está soportada
c. declarativo 50. Un lenguaje popular orientado a objetos e s ______ _ b. c h a r en FORTRAN, COBOL y Pascal.
d. orientado a objetos c. f l o a t
a. FORTRAN
d. todos los anteriores 68. Identifique cada uno de ios siguientes identificadores en
42. Pascal es un lenguaje________ . b. COBOL
c. C++ C como válidos o no válidos. Justifique su respuesta.
a. procedural •59. El tipo de datos estándar_________describe cualquier
b. funcional d. LISP a. 2AB
valor que pueda representarse en el alfabeto de la com
c. declarativo putadora.
51. En C++, la(el)________ es ocultar los datos y las ope- b. A2B
d. orientado a objetos
raciones al usuario. a. i n t c. AC
43. C++ es un lenguaje________ . a. encapsulamiento b. c h a r
d. 999
a. procedural b. herencia c. f l o a t
b. funcional c. polimorfismo d. todos los anteriores 69. Declare y defina las siguientes variables en el lenguaje C:
c. declarativo d. modularidad
d. orientado a objetos a. Una variable i n t llamada i.
52. Un program a________ puede ser una aplicación o e je r c ic io s b. Una variable f l o a t llamada f.
44. LISP es un lenguaje________ .
applet.
a. procedural Investigue y encuentre los operadores aritméticos en c. Una variable c h a r llamada c.
b. funcional a. FORTRAN FORTRAN, COBOL y Pascal. Compárelos y contrás
c. declarativo b. C++ telos con los operadores aritméticos definidos para el 70. Repita el ejercicio 69 pero inicialice cada variable con
d. orientado a objetos c. C lenguaje C en este capítulo. Utilice una tabla para la un valor apropiado.
d. Java comparación.
45. es un lenguaje común en el mundo de los ne 71. En el lenguaje C, muestre cómo leer dos enteros desde
gocios. 53. LISP y Scheme son lenguajes________ . Investigue y encuentre los operadores relaciónales en el teclado usando sólo una instrucción.
a. FORTRAN a. procedurales FORTRAN, COBOL y Pascal. Compárelos y contrás
b. C++ b. funcionales telos con los operadores aritméticos definidos para el 72. En el lenguaje C, muestre cómo imprimir el valor de
c. C c. declarativos lenguaje C en este capítulo. Utilice una tabla para la dos variables de números enteros usando sólo una ins
d. COBOL d. orientados a objetos comparación. trucción.
L e n g u a je s d e p ro g ra m a c ió n
73. Escriba las siguientes instrucciones en lenguaje C: 74. Escriba un ciclo f o r en C para imprimir el mensaje
a. Multiplique el valor de la variable x por el valor de “¡Hola mundo!” diez veces.
la variable y y almacene el resultado en la variable z. 75. Repita el ejercicio 74 utilizando un ciclo w h ile .
b. Aumente el valor de la variable x. 76. Repita el ejercicio 74 utilizando un ciclo d o -w h ile .
c. Disminuya el valor de la variable y.
Ingeniería
77. Escriba una instrucción en Scheme para hacer una nue
d. Compare el valor de las variables * y y para probar va lista aparte de la lista existente que contenga sólo el
una igualdad. tercer y el cuarto elementos.
de software
■V
FASE d e a n á l i s i s El proceso de desarrollo comienza con la fase de análisis, la cual muestra qué debe hacer el
10.1 CICLO DE VIDA DEL SOFTWARE paquete. En esta fase, el analista de sistemas define los requisitos que especifican lo que el
sistema propuesto va a lograr. Los requisitos por lo general se establecen en los términos que
el usuario comprende. Hay cuatro pasos en la fase de análisis: definición del usuario, defini
Un concepto fundamental en la ingeniería de software es el ciclo de vida del software
ción de las necesidades, definición de los requisitos y definición de los métodos.
El software, al igual que muchos otros productos pasa por un ciclo de fases repe
(figura 10.1).
Definición Un paquete de software puede diseñarse para un usuario genérico o para un usuario específi
El software primero se desarrolla por un grupo de desarrolladores/programadores. Pur lo
dei usuario co. Por ejemplo, un paquete de contabilidad puede crearse para que lo utilice cualquier em
general, está en uso durante algún tiempo antes de que se requiera hacerle modifica
Las modificaciones a menudo son necesarias debido a errores encontrados en el sofft presa. Por otra parte, un paquete bancario personalizado puede ser creado para un banco
cambios en las normas o leyes, o a cambios en la compañía misma. El software debe específico. El usuario del paquete debe definirse con claridad.
ficarse antes para su uso posterior. Estos dos pasos, usar y modificar, continúan hasta
Definición de Después de que se ha identificado al usuario, los analistas definen claramente las necesida
software se vuelve obsoleto. Por “obsoleto” queremos decir que el software pierde su '
des. En este paso, la mejor respuesta viene del usuario. El usuario, o el representante del mis
debido a su ineficiencia, la obsolescencia del lenguaje, cambios importantes en la coi las necesidades
u otros factores. Algunos ejemplos de desarrollos de software que normalmente pasan mo, define con claridad sus expectativas del paquete.
te ciclo son los sistemas de registro de estudiantes, los sistemas de facturación y los sister
de contabilidad. Definición de Con base en las necesidades del usuario, el analista puede definir con precisión los requisitos
El proceso de desarrollo en el ciclo de vida del software implica cuatro fases: análisis, ios requisitos para el sistema. Por ejemplo, si un paquete va a imprimir cheques al final del mes para cada
empleado, ¿qué nivel de seguridad y precisión debe emplearse?
seño, implementación y pruebas. La figura 10.2 muestra estas fases como parte del proc
de desarrollo.
Definición de Finalmente, después de que se definen los requisitos en términos claros, el analista puede ele
los métodos gir los métodos apropiados para cumplir estos requisitos.
FASE D i D IS E Ñ O La fase de diseño define cómo logrará el sistema lo que se definió en la fase de análisis. En
la fase de diseño, se determinan los sistemas y el diseño de archivos y/o bases de datos se
completa.
Medularidad Actualmente la fase de diseño utiliza un principio bien establecido llamado modularidad.
Todo el paquete se divide en pequeños módulos. Cada módulo se diseña, se prueba y se vin
cula a otros módulos a través de un programa principal. La modularidad se estudia posterior
mente en este capítulo.
H e rra m ie n ta s La fase de diseño utiliza varias herramientas, siendo la más común un diagrama de estructu
ra (analizada en el capítulo 8). Un diagrama de estructura muestra cómo dividir un paquete
en pasos lógicos; cada paso es un módulo independiente. El diagrama de estructura también
muestra la interacción entre todas las partes (módulos).
Herramientas Esta fase utiliza varias herramientas para mostrar el flujo lógico de los programas antes de la
escritura real del código. Una herramienta, aún generalizada, es el diagrama de flujo (anali
F ig u r a 1 0 .1 C lcío de vida de! sistem a
zado en el capítulo 8). Un diagrama de flujo utiliza símbolos gráficos estándar para repre
sentar el flujo lógico de datos a través de un módulo.
La segunda herramienta utilizada por los programadores es el pseudocódigo (también vis
Desarrollo to en el capítulo 8). El pseudocódigo es parte de idioma (español, inglés, etc.) y parte lógica
del sistema
de programa que describe, con detalles algorítmicos precisos, que indican qué hace el progra
ma. Esto requiere definir ios pasos con tanto detalle que la conversión a un programa de com
putadora pueda lograrse fácilmente.
Análisis Diseño Implementación Prueba
Codificación Después de la producción en un diagrama de flujo, pseudocódigo, o ambos, el programador
en realidad escribe el código en un lenguaje específico para el proyecto. La opción del len
F ig u r a 1 0 .2 Fases d e d e sa rro llo del sistem a guaje se basa en la eficiencia del lenguaje para esa aplicación en particular.
In g e n ie ría d e s o ftw a re 10.2 M o d e lo s d e l p ro c e s o d e d e s a rro llo
FASE DE PRUEBA Una vez que los programas se han escrito, deben probarse. La fase de prueba puede ser m
tediosa y consumir parte del tiempo del desarrollo del programa. Los programadores s
Análisis
completamente responsables de probar sus programas. En los proyectos de desarrollo gr¡
des, con frecuencia hay especialistas llamados ingenieros de pruebas quienes son respon; Diseno
bles de probar el sistema como un todo, es decir, de hacer pruebas para comprobar que toe
los programas trabajan en conjunto.
Hay dos tipos de pruebas: caja negra y caja blanca. La prueba de caja negra es realize Implementación
por el ingeniero de pruebas del sistema y por el usuario. Las pruebas de caja blanca sonr
ponsabilidad del programador.
Pruebas
Pruebas de Las pruebas de caja negra reciben su nombre del concepto de probar un programa sin
ber qué hay dentro y sin saber cómo funciona. En otras palabras, el programa es c '
c a j a negra
caja negra en la que usted no puede ver. Figura 10.3 M o d e lo de cascada
Dicho en forma simple, los planes de pruebas de caja negra se desarrollan con:
sólo los requisitos. Por esta razón es muy importante tener un buen conjunto de requisitos de
finidos. El ingeniero de pruebas utiliza estos requisitos, su conocimiento en el desarrolle
sistemas y el entorno de trabajo del usuario para crear un plan de pruebas. Este plan se u lisis de todo el proyecto debe, completarse antes de que su fase de diseño se inicie. La fase de
zará después cuando el sistema se pruebe como un todo. Usted debe pedir que le muesl diseño completa debe terminarse antes de que la fase de implementación pueda iniciarse.
estos planes de pruebas antes de escribir su programa. Hay ventajas y desventajas en el modelo de cascada. Una ventaja es que cada fase se com
pleta antes de que comience la siguiente. El grupo que trabaja en la fase de diseño, por ejem
Pruebas de Mientras que las pruebas de caja negra suponen que no se sabe nada acerca del programa, plo, sabe exactamente qué hacer debido a que se ha completado la fase de análisis. La fase de
pruebas de caja blanca asumen que usted sabe todo acerca del programa. En este case pruebas puede evaluar el paquete completo ya que todo el proyecto está listo.
c a l a blanca
programa es como una casa de vidrio en la cual todo es visible. Una desventaja del modelo de cascada es la dificultad para localizar un problema. Todo el
Las pruebas de caja blanca son responsabilidad del programador, quien sabe exactame proceso debe investigarse.
qué sucede dentro del programa. Usted debe asegurarse de que todas las instrucciones p
bles y todas las situaciones posibles se hayan probado. ¡Y ésta no es una tarea simple!
La experiencia ayudará al programador a diseñar un buen plan de pruebas, pero algo MODELO En el modelo incremental, el proceso se desarrolla en una serie de pasos. El grupo de soft
puede hacer desde el principio es adquirir el hábito de escribir planes de prueba. Comen: INCREMENTAL ware primero completa una versión simplificada de todo el paquete. La versión representa el
su plan de pruebas cuando esté en la etapa de diseño. A medida que construya su diagram; paquete completo pero no incluye los detalles.
estructura, se preguntará a sí mismo qué situaciones necesita probar, especialmente las inu: Esta primera versión por lo general consiste sólo en los módulos principales con llamadas
les, y las anotará de inmediato, pues puede suceder que no las recuerde una hora más tard a submódulos vacíos. Por ejemplo, si el paquete tiene diez submódulos, el módulo principal
Cuando el programador escribe sus diagramas de flujo o pseudocódigo, debe revisa llama a cada uno de ellos, con cada submódulo devolviendo sólo un mensaje indicando que
poniendo atención a casos de prueba y tomar nota de los casos que necesita. se le llamó.
Al llegar el momento de construir sus casos de prueba, debe revisar sus notas y organi En la segunda versión, se completan uno o más submódulos, mientras que el resto quedan
las en conjuntos lógicos. Excepto por programas tipo estudiante muy simples, un conjuntí sin terminar (sólo se comunican). El paquete se prueba de nuevo para demostrar que el mó
datos de prueba no validará completamente un programa. Para proyectos de desarrollo a ¡ dulo principal puede utilizar estos submódulos sin problemas. Si hay un problema aquí, el de-
escala, tal vez sea necesario ejecutar 20, 30 o más casos de prueba para validar un progra sarrollador sabe que el problema es con estos submódulos y no con el módulo principal. No
Finalmente, cuando realiza las pruebas, pensará en más casos de prueba. De nuevo, se añaden más submódulos hasta que el paquete trabaja en forma apropiada.
anotará e incorporará a su plan de pruebas. Después de que se ha terminado el progran Este proceso continúa hasta que todos los submódulos se añaden. La figura 10.4 muestra
éste está en producción, el programador necesitará nuevamente los planes de prueba cua el concepto del modelo incremental.
modifique el programa.
M O D ELO Un modelo muy conocido para el proceso de desarrollo es el modelo de cascada (figura Último incremento
DE C A S C A D A En este modelo, el proceso de desarrollo fluye en una sola dirección. Esto significa que un;
se no puede iniciarse hasta que se ha completado la fase anterior. Por ejemplo, la fase de ¡ Figura 10.4 M o d e lo in cre m e n ta l
in g e n ie ría d e s o ftw a re 10.3 M o d u la r id a d ¡ ¡ ¡ |||§ j
Acoplam iento El acoplamiento global utiliza variables globales para comunicarse entre dos o más funcio
10.3 MODULARIDAD global nes. Ésta no es una buena técnica de acoplamiento. De hecho, nunca debe utilizarse. Hay va
rias razones por las cuales usted nunca debe utilizar el acoplamiento global. Citaremos sólo
Modularidad significa la división de un proyecto grande en partes más pequeñas que pue las dos más importantes.
den entenderse y manejarse más fácilmente. En otras palabras, modularidad significa dividir
1. El acoplamiento global vuelve prácticamente imposible determinar cuáles módulos se
un problema grande en programas más pequeños que pueden comunicarse entre sí.
están comunicando entre sí. Por consiguiente, cuando se necesita hacer un cambio en
HERRAMIENTAS En la programación se pueden usar dos tipos de herramientas para lograr la modularidad: el un programa, no es posible aislar y evaluar el impacto del cambio. A menudo esto pro
diagrama de estructura o el diagrama de clase. Un diagrama de estructura se utiliza en la voca que las funciones que no se cambiaron fallen de repente.
programación procedural para mostrar la relación entre los procedimientos o funciones. Un 2. El acoplamiento global liga estrechamente una función al programa. Esto significa que
diagrama de clase se utiliza en la programación orientada a objetos para mostrar las relacio no puede transportarse fácilmente a otro programa.
nes entre las clases.
Se creó un nuevo estándar llamado Lenguaje de modelado unificado (UML: Unified El último tipo de acoplamiento, el acoplamiento de contenido, ocurre cuando una función ha
Acoplamiento
Modeling Language), el cual incluye herramientas y diagramas para ayudar en lo que a esto ce referencia directamente a los datos o instrucciones en otra función. Evidentemente, este
se refiere.
de contenido
concepto rompe todos los principios de la programación estructurada. Hacer referencia a los
datos en otra función requiere que los datos se hagan visibles externamente fuera de la función^
A CO PLAM IEN TO El acoplamiento es una medida de qué tan estrechamente se ligan dos módulos el uno con el
otro. Entre más estrechamente acoplados estén, menos independientes son. Como el objetivo
COHESIÓN Otro problema en la modularidad es la cohesión. La cohesión es una medida de qué tan es
es hacer a los módulos lo más independientes posible, usted quiere que éstos estén acoplados
trechamente se relacionan los procesos en un programa. Existen varios niveles de cohesión.
holgadamente. Hay varias razones para desear un acoplamiento holgado:
1. Es más probable que las funciones independientes, es decir con un acoplamiento hol
Cohesión Un módulo con cohesión funcional contiene sólo un proceso. Éste es el nivel de cohesión
gado, se vuelvan a utilizar.
más alto y el nivel que usted debe tratar de modelar. Por ejemplo, en la impresión de un in
2. Las funciones acopladas holgadamente tienen menos probabilidades de crear errores en funcional
forme, la función report debe llamar a tres funciones de un nivel inferior: una para obtener
funciones relacionadas; a la inversa, entre más estrecho sea el acoplamiento, mayor es la los datos, una para dar formato al título del informe e imprimirlo y otra para dar formato a los
probabilidad de que un error en una función genere un error en una función relacionada.
datos e imprimirlos.
3. Las modificaciones de mantenimiento, las cuales son modificaciones necesarias para
implementar nuevos requisitos del usuario, son más fáciles de hacer y menos propen Sólo una cosa Cada función debe realizar sólo una cosa. Además, todas las instrucciones
sas a crear errores con funciones acopladas holgadamente. en la función deben contribuir únicamente a eso. Por ejemplo, supongamos que usted está es
Estudiaremos unos cuantos tipos de acoplamiento. cribiendo un programa que requiere las medidas estadísticas del promedio y la desviación es
tándar. Las dos medidas estadísticas están claramente relacionadas por la sola razón de que
A co p la m ie n to El acoplamiento de datos pasa sólo los datos mínimos requeridos de la función que llama a
ambas son medidas de la misma serie de números. Pero usted no calcularía ambas medidas
de datos la función llamada. Todos los datos requeridos se pasan como parámetros y no se pasa nin en una sola función, ya que esto implicaría realizar dos cálculos y cada función debe hacer
gún dato adicional. Ésta es la mejor forma de acoplamiento y debe utilizarse siempre que sea
sólo una cosa.
posible.
A c o p la m ie n to Las funciones tienen un acoplamiento de sello si los parámetros son objetos compuestos co En un lugar El corolario es que una cosa que realiza una función debe realizarse en un so
mo arreglos o estructuras. El acoplamiento de sello no es malo y con frecuencia es necesario. lo lugar. Si el código para un proceso se esparce en varias partes distintas del programa y que
de sello
El peligro con el acoplamiento de sello es que a menudo es muy fácil enviar una estructura no guardan ninguna relación, es muy difícil hacer cambios. Por lo tanto, todo el procesamien
cuando no se requieren todos los datos de la estructura. Cuando se envían datos adicionales, to para una tarea debe colocarse en una función y, de ser necesario, en sus subfunciones.
usted comienza a abrirle la puerta a errores y efectos secundarios indeseables.
Cohesión Un módulo con cohesión secuencial contiene dos o más tareas relacionadas que se vinculan
A co p la m ie n to El acoplamiento de control es el paso de banderas que pueden utilizarse para dirigir el flujo estrechamente, por lo general con la salida de una que fluye como entrada para la otra. Un
de con tro l lógico de una función. Es muy parecido al acoplamiento de datos con la excepción de que en secuencial
ejemplo de cohesión secuencial son los cálculos para una venta. El diseño para esta función
vez de datos se pasa una bandera. Cuando se usa adecuadamente, el acoplamiento de control podría ser el siguiente:
es un método de comunicación entre dos funciones necesario y válido. No obstante, al igual
que el acoplamiento de sello, puede hacerse un uso incorrecto del mismo. Si se usa correcta 1. Determinar los precios de ios artículos
mente, comunica el estado: Se llegó al final del archivo. Se encontró el valor de búsqueda. 2. Sumar los artículos
Por lo general un uso pobre de las banderas es una indicación de un diseño pobre del pro 3. Calcular el impuesto sobre las ventas
grama, tal es el caso de un proceso que se divide entre dos o más funciones independientes. Las
4. Calcular el total
banderas utilizadas para la comunicación horizontal entre varias funciones en el diagrama de
estructura con frecuencia son una indicación de un diseño pobre. Las banderas de acción, con En este ejemplo, el primer proceso multiplica la cantidad adquirida por el precio. El proceso
trariamente a las banderas de estado, que requieren que la función receptora realice algún pro que calcula la suma de los artículos adquiridos utiliza los precios determinados. Esta suma
cesamiento especial también son sumamente sospechosas. Un ejemplo de bandera de acción es luego se usa para calcular el impuesto sobre las ventas, el cual finalmente se suma al resulta
aquel en que se rechaza la solicitud de compra de un cliente, en lugar de simplemente reportar do para obtener el total de la venta. En cada caso, la salida de un proceso se utilizó como la
que se ha excedido el límite de crédito o que no se recibió ningún pago en el último mes. entrada del siguiente proceso.
In g e n ie ría d e s o ftw a re ),4 C a lid a d
Aunque es bastante común encontrar- el código detallado para estos procesos combinad Cada uno de estos atributos de buen software recae de lleno en el diseñador y programador
en una sola función, esto vuelve a la función más compleja y menos reutilizable. La capac del sistema. Observe que colocamos en el programador la carga de satisfacer no sólo los re
dad de reutilización es un motivo de preocupación si ocurren los mismos cálculos o cálculi quisitos explícitos del usuario sino también sus necesidades implícitas. Con frecuencia los
similares en distintas partes de un programa. usuarios no saben completamente qué necesitan. Cuando esto ocurre, es tarea del programa
dor determinar sus requisitos implícitos, los cuales están ocultos en el fondo. Ésta es una ta
Cohesión La cohesión de comunicación combina procesos que trabajan en los mismos datos. Es nati rea verdaderamente formidable.
d e com unicación ral tener una cohesión de comunicación en los módulos superiores en un programa, pero a Pero el software de calidad no es sólo un concepto vago. Si quiere alcanzarlo, tendrá que
ted nunca debe encontrarla en el nivel primario. Por ejemplo, considere una función que li ser capaz de medirlo. Siempre que sea posible, estas mediciones pueden ser cuantitativas; es
un archivo de inventario, imprime el estado actual de las partes y luego lo revisa para ver decir, deben ser susceptibles de ser medidas numéricamente. Por ejemplo, si una organiza-
alguna parte necesita ordenarse. cióp es seria respecto a la calidad, debe ser capaz de indicarle el número de errores (bugs) por
Los primeros tres niveles de cohesión se consideran principios de programación bien e cada mil líneas de código y el tiempo promedio entre las fallas de cada sistema de software
tructurados. Sin embargo, más allá de este punto, la facilidad de comprensión e implement; que mantiene. Éstas son estadísticas de medición.
ción, la capacidad de mantenimiento y la precisión comienzan a caer rápidamente. L( Por otra parte, algunas de las mediciones pueden ser cualitativas, lo cual significa que no
siguientes niveles deben utilizarse sólo en los niveles más altos de un diagrama de estructu: pueden medirse numéricamente. La flexibilidad y la capacidad de pruebas son ejemplos de
y luego casi nunca. mediciones de software cualitativas. Esto no significa que no puedan medirse, sino más bien
que se basan en el juicio de una persona para evaluar la calidad de un sistema.
Cohesión El cuarto nivel, la cohesión de procedimiento, combina procesos no relacionados que estí
d e pro ced im ie n to vinculados mediante un flujo de control. (Esto difiere de la cohesión secuencia!, donde li
FACTORES La calidad del software puede dividirse en tres mediciones generales: operabilidad, capaci
datos fluyen de un proceso al siguiente.)
dad de mantenimiento y capacidad de transferencia. Cada una de estas mediciones se puede
DE CALIDAD
dividir posteriormente como se muestra en la figura 10.5.
Cohesión El quinto nivel, la cohesión tem poral, es aceptable sólo sobre una variedad limitada de pn
te m p o ra l cesos. Combina procesos no relacionados que siempre ocurren juntos. Dos funciones tempi
raímente cohesivas son la inicialización y la terminación de una tarea. Son aceptables debic
a que se utilizan sólo una vez en el programa y porque nunca son portables. Sin embargo, ai
mita que aún deben contener llamadas para las funciones primarias funcionalmente cohes
vas siempre que sea factible.
Cohesión lógica Los dos últimos niveles pocas veces se encuentran en los programas actuales. La cohesión
y cohesión casual lógica combina procesos que están relacionados sólo por la entidad que los controla. Una fui
ción que condicionalmente abrió diferentes series de archivos con base en una bandera qi
pasa como un parámetro sería lógicamente cohesiva. Finalmente, la cohesión casual comb Interoperabili dad
E ficiencia Capacidad
na procesos que no guardan ninguna relación entre sí. La cohesión casual existe sólo en te< Fiabilidad de corrección Portabilidad
ría. Nunca hemos visto un programa profesional que contenga cohesión casual. Facilidad de uso C apacidad Reutilización
Pertinencia de pruebas del código
Precisión Flexibilidad
Seguridad V ariabilidad
10.4 CALIDAD
F ig u r a 1 0 .5 Facto res de calidad
No encontrará a nadie que haya llegado a considerar siquiera reducir al mínimo la calidad d
software, al menos no lo ha hecho públicamente. Todos quieren el mejor software disponib
y al escuchar a los creadores de sistemas en el mercado, todos sus sistemas son perfectos. Ai Operabilidad La operabilidad se refiere a la operación básica de un sistema. Las primeras cosas que un
así, como usuarios de software, a menudo pensamos que el concepto de software de calidad usuario nota respecto a un sistema son su apariencia y sensación. Esto significa, en especial
es una contradicción. Todos tenemos nuestros productos de software favoritos, pero ningur para un sistema en línea interactivo, qué tan fácil e intuitivo es usarlo. ¿Se adapta al sistema
de ellos carece de una imperfección o dos. operativo bajo el cual se está ejecutando? Por ejemplo, si se está ejecutando en un ambiente
La gente que anda por el mundo queriendo ser uno de esos creadores de software neces Windows, sus menús desplegables y de aparición instantánea deben trabajar del mismo mo
ta estar consciente de los conceptos básicos de la calidad del software. En esta sección, esri do que los menús del sistema operativo. En pocas palabras, la operabilidad responde a la pre
diamos algunos de los atributos de un producto de calidad y cómo hacer para lograr gunta: “¿Cómo se maneja?”
calidad. Pero estos factores son subjetivos; no son mesurables. Así que he aquí los factores que
conforman la operabilidad; se listan en orden alfabético.
DEFINICION El software de calidad se define como sigue:
Eficiencia La eficiencia es, en general, un término subjetivo. En algunos casos el usuario
DE CALIDAD Software que satisface los requisitos explícitos e implícitos del usuario, está bien dod especificará una norma de rendimiento, tal como una respuesta en tiempo real que debe reci
mentado, cumple con las normas operativas de la organización y se ejecuta de manera tí
birse en un segundo el 95 por ciento de las veces. Esto es sin duda medible.
cíente en el hardware para el cual se desarrolló.
204 In g e n ie ría d e s o ftw a re 1 0 .4 C a lid a d 205
Fiabilidad La fiabilidad es en realidad la suma de los otros factores. Si los usuarios cuen zación de un cambio solicitado. Si se lleva mucho tiempo, tal vez se deba a que es difícil cam
tan con el sistema para lograr terminar su trabajo y tienen confianza en él, entonces lo más biar el sistema. Esto es especialmente cierto para los sistemas viejos.
probable es que sea confiable. Por otro lado, algunas medidas hablan directamente de la fia Hay herramientas de medición de software en el mercado actual que calculan la comple
bilidad de un sistema, en particular el tiempo promedio entre fallas. jidad y estructura de un programa. Deben utilizarse regularmente, y si la complejidad de un
programa es alta, debe considerarse volver a escribir el programa. Los programas que han
Facilidad de uso Ésta es otra área muy subjetiva. La mejor medición de la facilidad de cambiado muchas veces con los años, a menudo pierden sus centros estructurados y es difí
uso es observar a los usuarios y ver si están usando el sistema. Las entrevistas a los usuarios cil cambiarlos. También deben rescribirse.
a menudo revelan problemas con la facilidad de uso de un sistema.
Capacidad La capacidad de transferencia se refiere a la capacidad para mover datos y/o un sistema de una
Pertinencia La pertinencia en la ingeniería de software puede significar varias cosas dis plataforma a otra y para reutilizar el código. En muchas situaciones no es un factor importan
de transferencia
tintas. ¿El sistema proporciona su salida de manera oportuna? Para los sistemas en línea, ¿el te. Por otra parte, si usted está escribiendo software generalizado, ésta puede ser crítica.
tiempo de respuesta satisface los requisitos de los usuarios? Para los sistemas por lotes, ¿los
reportes se entregan oportunamente? También es posible, si el sistema tiene una buena ca Interoperabilidad La interoperabilidad es la capacidad de enviar datos a otros sistemas.
pacidad de inspección para determinar si los datos en el sistema son pertinentes u oportu En los sistemas sumamente integrados de hoy, éste es un atributo deseable. De hecho se ha
nos. Es decir, ¿los datos se registran dentro de un tiempo razonable después de que ocurre vuelto tan importante que los sistemas operativos ahora soportan la capacidad para mover da
la actividad que los crea? tos entre sistemas, tales como un procesador de palabras y una hoja de cálculo.
Documentación en En esta fase, la información recopilada debe documentarse con cuidado. Además, el analista
1
la fase de análisis debe definir la fuente de información. Los requisitos y métodos elegidos deben exponerse cla
ramente con las razones en las que se basan.
Documentación en En esta fase, las herramientas utilizadas en la copia final deben documentarse. Por ejemplo,
si un diagrama de estructura sufre varios cambios, la copia final debe documentarse con ex
la fase de diseño
plicaciones completas.
Documentación en En esta fase debe documentarse cada herramienta y cada programa. Además, el programa por
lo general debe autodocumentarse. Hay dos niveles de documentación de programas. El pri
la fase de
mero es la documentación general al principio del programa. El segundo nivel se encuentra
impiementación
dentro de cada bloque.
Documentación general Cada programa debe comenzar con una descripción general del
programa. Enseguida está el nombre del autor y la fecha en que se escribió el programa. A
F ig u r a 1 0 .6 C írcu lo d e la calid ad
continuación se incluye el historial de cambios del programa. Para un programa de produc
ción que abarca varios años, el historial de cambios puede ser bastante grande.
el programador ha completado las pruebas de unidad, el programa pasa a otro ingeniero
software para su integración y las pruebas del sistema. En un proyecto pequeño, es muy p Documentación de función Además, cuando sea necesario, debe incluirse un breve co
bable que el programa pase al analista de sistemas y/o al usuario. En un proyecto grande 1 mentario para bloques de código. Un bloque de código es muy parecido a un párrafo en un
un equipo de pruebas separado. informe. Contiene un pensamiento, es decir, una serie de instrucciones que realizan una tarea
El desarrollo de los sistemas grandes toma meses y en ocasiones años. Es muy natural c específica. Los bloques de código en su programa deben estar separados por líneas en blan
durante periodos largos, ocurran cambios en los requisitos y en el diseño. Para asegurar la ■ co, justo como las que inserta en sus reportes entre párrafos.
lidad, cada cambio debe revisarse y aprobarse por una junta de control de cambios. El imp:
to de un cambio solicitado en cada programa necesita evaluarse y planearse apropiadamer
Docum entación en Finalmente, los desarrolladores deben documentar cuidadosamente la fase de pruebas. Cada
Un cambio incontrolado provoca que el calendario se extienda y el presupuesto se rebase
tipo de prueba aplicada al producto final debe mencionarse junto con el resultado. Incluso los
que los productos sean de baja calidad. la fase de pruebas
resultados poco favorables y los datos que los produjeron deben documentarse.
Finalmente, un entorno de buena calidad mide todos los aspectos de la calidad y repo
los resultados con regularidad. Sin medición, usted no puede saber si la calidad es buen¡
mala, si mejora o empeora. Al mismo tiempo, las normas publicadas proveen el patrón p¡ DOCUMENTACIÓN Observe que la documentación es un proceso en curso. Si el paquete tiene problemas después
muchas mediciones de la calidad. COMO UN PROCESO de su lanzamiento al mercado, éstos deben documentarse. Si el paquete se modifica, todas las
EN CURSO modificaciones y sus relaciones con el paquete original también deben documentarse. La do
cumentación se detiene cuando el paquete se vuelve obsoleto.
10.5 D O CU M EN TACIO N
Para que un paquete de software se utilice en forma adecuada y se mantenga eficientemen
se necesita la documentación. Por lo general, dos conjuntos independientes de documen 10.6 TÉRMINOS CLAVE
ción se preparan para un paquete de software: la documentación del usuario y la documt
tación del sistema. acoplamiento cohesión casual fase de diseño
acoplamiento de contenido cohesión de comunicación fase de implementación
D O C U M E N T A C IÓ N Para ejecutar el paquete adecuadamente, el usuario necesita documentación, habitualmei acoplamiento de control cohesión de procedimientos fase de pruebas
llamada el manual, que muestra cómo utilizar el paquete paso a paso. Por lo general coní acoplamiento de datos cohesión funcional fiabilidad
D E L USUARIO
ne una sección de tutorial para guiar al usuario a través de cada característica del paquete. acoplamiento global cohesión lógica flexibilidad
Un buen manual del usuario puede ser una herramienta de marketing muy poderosa. De acoplamiento de sello cohesión secuencial ingeniería de software
escribirse tanto para el usuario novato como para el experto. La importancia de la documt acoplamiento holgado cohesión temporal interoperabilidad
tación del usuario en marketing no puede exagerarse. Un paquete de software con buena t bandera diagrama de clase modelo de cascada
cumentación del usuario definitivamente aumentará las ventas. capacidad de corrección diagrama de estructura modelo incremental
capacidad de pruebas diagrama de flujo modularidad
DOCUM ENTACIÓN La documentación del sistema define el paquete mismo. Debe redactarse de modo que ciclo de vida del software documentación del sistema módulos
D E L SIST EM A paquete pueda mantenerse y modificarse por personas distintas a los desarrolladores origú círculo de la calidad eficacia operabilidad
les. Debe haber documentación del sistema para las cuatro fases del desarrollo de sistema: cohesión fase de análisis pertinencia
in g e n ie ría d e s o ftw a re 1 0 .8 P rá c tic a j ||
portabilidad pruebas de caja negra segundad PREGUNTAS DE OPCIÓN MÚLTIPLE 17. Realizar pruebas a un paquete de software puede involu
precisión pseudocódigo software de calidad crar las pruebas d e ________ .
¡1/ Los principios de ingeniería de software se establecieron
pruebas de caja blanca reutilización variabilidad a. caja negra
¡H por primera vez hace________ años.
a. 10
b. caja blanca
b. 30 c. caja de pan
e. 100 d. a y b
10.7 RESUMEN ti. 1000 18. Las pruebas de caja negra se realizan por el_______ .
ífO. Un sistema de software se vuelve obsoleto cuan a. usuario
M La ingeniería de software es el establecimiento y uso de M El acoplamiento es una medida de qué tan estrechamt do.________. b. ingeniero de pruebas del sistema
métodos y principios de ingeniería sólidos para obtener te se ligan dos módulos el uno con el otro. Los tipos fe* a. se encuentra un error en el código c. programador
software confiable que trabaje en máquinas reales. acoplamiento incluyen de datos, de control, global y b. el lenguaje con el cual se escribe ya no se utiliza d. a y b
contenido. c. el programador principal abandona el proyecto
M El proceso de desarrollo para un paquete de software im 19. Las pruebas de caja blanca se realizan por el_______ .
plica cuatro fases: análisis, diseño, implementación y 9 La cohesión es una medida de qué tan estrechamente d. a y b
a. programador
pruebas. relacionan los procesos en un programa. Los tipos de < 11. Una fase en el desarrollo de sistemas e s _______ . b. usuario
hesión incluyen funcional, secuencial, de comunicad; |? a. análisis
■ La fase de análisis del proceso de desarrollo consiste en c. ingeniero de pruebas del sistema
de procedimiento, temporal, lógica y casual. b. pruebas
la definición de los usuarios, necesidades, requisitos y d. CTO
métodos. ■ La calidad del software puede dividirse en tres medie c. diseño
nes generales: operabilidad, capacidad de mantenimii (I. todas las anteriores 20. En la primera versión del m odelo________ , cada mó
■ La fase de diseño del proceso de desarrollo consiste en to y capacidad de transferencia. dulo llamado sólo devuelve un mensaje indicando que se
la determinación de los sistemas y el diseño de los archi U2. La definición de los usuarios, las necesidades, los requi-
le llamó.
vos y/o bases de datos. M Factores importantes para la operabilidad del softw; . § I- sitos y los métodos es parte de la fase d e ________ .
a. cascada
son la precisión, eficiencia, fiabilidad, seguridad, peí ffe.'a. análisis
§ En la fase de implementación del proceso de desarrollo b. incremental
nencia y facilidad de uso. b. diseño
se escribe el código real. e. implementación c. instrumental
9 Factores importantes para la capacidad de mantemmit d. de caja negra
9 Eti la fase de pruebas del proceso de desarrollo, deben to son la variabilidad, capacidad de corrección, flexib d. pruebas
realizarse las pruebas de caja negra y de caja blanca. dad y capacidad de pruebas. 13. En el proceso de desarrollo de sistemas, la escritura del 21. En el modelo d e ________ , una fase completa del pro
f código es parte de la fase d e ________ . yecto se termina antes de que comience la fase siguiente.
9 Existen dos modelos de desarrollo de software: el mode ■ Factores importantes para la capacidad de transieren
a. análisis a. cascada
lo de cascada y el modelo incremental. son la reutilizacíón del código, intetoperabilidad y p1
tabilidad. b. diseño b. incremental
H En el modelo de cascada cada módulo se termina com fe c. implementación c. instrumental
pletamente antes de que se inicie el siguiente módulo. M Hay seis pasos para el software de calidad: estándar
I d. pruebas d. de caja negra
medición y creación de informes, herramientas de c¿
M En el modelo incremental, todo el paquete se construye, dad, revisiones técnicas, evaluación formal y contro [14. En el proceso de desarrollo de sistemas, el diagrama de 22. E l(la) es la separación de un programa grande
con cada módulo compuesto por sólo un intérprete de de cambio. estructura es una herramienta utilizada en la fase de en partes pequeñas.
comandos; los módulos ganan complejidad con cada ite a. acoplamiento
ración del paquete. M La documentación del usuario y la documentación <
fe a. análisis b. aumento incremental
sistema son necesarias para que un paquete de softw;
9 La modularidad es la división de un programa grande en L b. diseño c. obsolescencia
se utilice de manera apropiada y se mantenga de mai
partes más pequeñas que pueden comunicarse entre sí. c. implementación
ra eficiente. d. modularidad
d. pruebas
23. La modularidad se vuelve más visible mediante herra
15. En el proceso de desarrollo de sistemas, el diagrama de
mientas com o_______ .
flujo es una herramienta usada en la fase d e ________ .
a. el diagrama de estructura
a. análisis
b. el diagrama de clase
b. diseño
10.8 PR Á C T IC A c. implementación c. la cascada incremental
d. pruebas d. a y b
PÜEOTNTAS 01 HEPASO 5. ¿Qué implica la fase de análisis del desarrollo de sis
24. El(la) es una medida de qué tan estrechamente
mas? 16. En el proceso de desarrollo de sistemas, el pseudocódi
1. Defina la ingeniería de software. se ligan dos módulos el uno con el otro.
go es una herramienta usada en la fase d e ________ .
2. ¿Qué se quiere decir con el ciclo de vida del software? 6. ¿Qué son las pruebas de caja negra? a. análisis a. modularidad
b. diseño b. acoplamiento
3. ¿Cuándo el software se vuelve obsoleto? 7. ¿Qué son las pruebes de caja blanca?
c. implementación c. interoperabilidad
4. ¿Cuáles son las cuatro fases en el desarrollo del software? 8. ¿Cuál es la diferencia entre cohesión y acoplamiento' d. pruebas d. cohesión
25. EI(la)_______ una medida de qué tan estrechamente se 33. La cohesión________combina procesos que sólo es'i 43. Una programadora escribe un programa que incluye una
EJERCICIOS
relacionan los procesos en un programa. relacionados por la entidad que los controla. función de suma. Posteriormente escribe otro programa
a. modularidad 40 Una función se escribe para encontrar el número más
a. lógica que también requiere una suma. Cuando trata de usar la
b. acoplamiento pequeño entre una lista de números. La lista se pasa a la
función anterior, se da cuenta que debe escribir una fun
b. de procedimiento únción como un arreglo. El número menor se devuelve
c. interoperabiüdad ción completamente nueva. ¿Qué principio de calidad se
d. cohesión c. temporal i la función que llama. ¿Qué tipo(s) de acoplamiento se
viola aquí?
d. funcional isó entre la función que llama y la función llamada?
26. El acoplamiento d e sólo pasa el mínimo de datos 41. Se escribe una función para ordenar una lista de núme- 44. Imagine que le asignan la tarea de reaüzar la documen
requerido de la función que llama a la función llamada. 34. La cohesión_______ combina dos o más tareas relac
os. La función utiliza la lista en la función que llama, tación del sistema en la fase de análisis para un gran pro
a. datos nadas que están estrechamente ligadas entre sí.
>ero devuelve una bandera para mostrar si se realizó el yecto. Idee la hoja de plantilla apropiada para utilizarla
b. sello a. funcional )rdenamiento satisfactoriamente o no. ¿Qué tipo(s) de en los cuatro pasos involucrados en esta fase.
c. control b. secuencial icoplamiento se utilizó entre la función que llama y la
d. global c. de comunicación únción llamada? 45. Repita el ejercicio 44 para la fase de diseño.
27. El acoplamiento d e ocurre cuando una función d. lógica Al. Se escribe una función para intercambiar datos entre dos 46. Repita el ejercicio 44 para la fase de implementación.
se refiere directamente a los datos o instrucciones en /ariables. La función utiliza directamente una variable
35. La cohesión combina procesos no relacionad
otra función. definida en la función que llama. ¿Qué tipo de acopla- 47. Repita el ejercicio 44 para la fase de pruebas.
que están ligados por un control de flujo.
a. datos niento se utilizó?
a. funcional
b. sello
c. contenido
b. secuencial
d. control c. de procedimiento
d. lógica
28. El acoplamiento d e ________utiliza variables globales
para comunicarse entre dos o más funciones. 36. La cohesión combina procesos que trabajan s
a. datos bre los mismos datos.
b. sello a. funcional
c. contenido b. secuencial
d. control c. de comunicación
29. El acoplamiento d e _______ pasa banderas que pueden d. lógica
dirigir el ñujo lógico de una función.
37. La precisión, eficiencia, fiabilidad, seguridad, pertine
a. datos
cia y facilidad de uso son factores importantes para
b. sello _______ del software.
c. control
a. operabilidad
d. global
b. capacidad de mantenimiento
30. El acoplamiento d e pasa parámetros que son c. capacidad de transferencia
objetos compuestos como arreglos o estructuras. d. longevidad
a. datos
b. sello 38. La variabilidad, capacidad de corrección, flexibilidad
c. control capacidad de pruebas son factores importantes para
d. global _______ del software.
a. operabilidad
31. La cohesión_______ es el nivel de cohesión más alto.
b. capacidad de mantenimiento
a. funcional
c. capacidad de transferencia
b. secuencial
c. de comunicación d. longevidad
d. lógica
39. La reutilización de código, la interoperabiüdad y la p°
32. La cohesión_______ combina procesos no relacionados tabiüdad son factores importantes para l a ________d
que siempre ocurren juntos. software.
a. lógica a. operabilidad
b. de procedimiento b. capacidad de mantenimiento
c. temporal c. capacidad de transferencia
d. funcional d. longevidad
11.1 A rre g lo s | jj| | | j|
.1 ARREG LO S
imagine que tiene un problema que requiere el procesamiento de veinte números. Usted nece
sita leerlos, procesarlos e imprimirlos. También debe mantener estos veinte números en la me
moria para la duración del programa. Puede definir veinte variables, cada una con un nombre
diferente, como se muestra en la figura 11.1.
Pero tener veinte nombres diferentes crea otro problema. ¿Cómo puede leer veinte núme
ros desde el teclado y almacenarlos? Para hacerlo, necesita veinte referencias, una para cada
variable. Además, una vez que éstas estén en la memoria, ¿cómo puede usted imprimirlas?
Para imprimirlas necesita otras veinte referencias. En otras palabras, necesita el diagrama de
flujo de la figura 11.2 para leer, procesar e imprimir estos veipte números.
nú m e r o 2
E n los capítulos anteriores utilizamos variables que almacenan una sola entidad. Aunque
variables individuales se utilizan ampliamente en los lenguajes de programación, no pue nú m e r o 18
usarse para resolver problemas complejos de una manera eficiente.
nú m e r o 19
En este capítulo presentamos la estructura de datos. Una estructura de datos utiliza una
Números
lección de variables relacionadas a las que se puede acceder de manera individual o come
todo. En otras palabras, una estructura de datos representa un conjunto de elementos de
Figura 11.1 V ein te v ariab les in dividu ales
tos con una relación específica entre ellos.
Analizamos tres estructuras de datos en este capítulo: arreglos, registros y listas ligadas,
mayoría de los lenguajes de programación tiene una implementación implícita de los pri
( INICIO )
ros dos. La tercera, sin embargo, se simula utilizando apuntadores y registros.
Procesa
20 números
/ Imprime
número 0
/ Imprime
número 19J
( FIN '
F ig u r a 1 1 .2 P ro ce sa m ie n to d e v ariab le s in d iv id u a le s
E s tru c tu ra s d e d a to s 11.1 A rre g lo s 217
Aunque esto puede ser aceptable para veinte números, definitivamente no es aceptable p;
200, 2 000 o 20 000 números. Para procesar grandes cantidades de datos se necesita una .
tructura de datos poderosa, tal como un arreglo. Un arreglo es una colección en secuenc
de tamaño fijo, de elementos del mismo tipo. Dado que un arreglo es una colección en .
cuencia, usted puede referirse a los demás elementos en el arreglo como el primer elemen
el segundo elemento y así sucesivamente hasta que llegue al último elemento. Si usted fui
a poner veinte números en un arreglo, podría designar el primer elemento como número 0 1
mo se muestra en la figura 11.1. De una manera similar, podría referirse al segundo númt
como número1y al tercero como número2.Al continuar la serie el último número sería n
mero19.El subíndice indica el número ordinal del elemento contado desde el principio i
arreglo.
Lo que usted ha visto es que los elementos del arreglo se direccionan a través de sus
subíndices (figura 11.3). El arreglo como un todo tiene un nombre, número, pero se puede
tener acceso a cada número en forma individual a través de su subíndice.
* En esta sección estudiamos una aplicación de los arreglos: el arreglo de frecuencia y su re
• APLICACIONES
DE LOS ARREGLOS presentación gráfica.
número 18 número [18]
Las ventajas del arreglo estarían limitadas si usted no tuviera además constructores de pro
gramación que le permitan procesar los datos de una manera más conveniente. Por fortuna,
hay un poderoso conjunto de constructores de programación, ciclos, que facilitan el procesa
miento de arreglos.
Usted puede utilizar ciclos para leer y escribir elementos en un arreglo. Los ciclos se pue
den usar para sumar, restar, multiplicar y dividir los elementos. Usted también puede usar ci
clos para un procesamiento más complejo tal como el cálculo de promedios. Ahora no
importa si hay 2, 20, 200, 2 000 o 20 000 elementos a ser procesados. Los ciclos facilitan el
manejo de todos ellos.
Pero una pregunta sigue sin respuesta: ¿Cómo puede escribir una instrucción de modo que
una vez se refiera al primer elemento de un arreglo y la siguiente vez se refiera a otro elemen
to? En realidad es muy simple: Tan sólo se pide prestado el concepto de subíndice que se ha
estado usando. No obstante, en lugar de usar subíndices, se coloca el valor del subíndice en
tre corchetes. Usando esta notación, usted hace referencia al n úmero0como número[0].
Siguiendo esta convención, el número-! se convierte en el número[l] y el número13 se
convierte en el número[19]. Esto se conoce como indexación. Usando una referencia típica,
usted ahora hace referencia a su arreglo utilizando la variable. El diagrama de flujo para pro
cesar sus veinte números utilizando un arreglo y los ciclos aparece en la figura 11.4. Figura 11.5 A rre g lo d e fre cu e n cia
m
E s tru c tu ra s d e d a to s 1 .2 R e g is tro s jjj| 19
H istogram as Un histograma es una representación pictórica de un arreglo de frecuencia. En lugar de ir
primir los valores de los elementos para mostrar la frecuencia de cada número, se imprime i 00 701 02 03 04
histograma en forma de gráfica de barras. Por ejemplo, la figura 11.6 es un histograma p 10 12 13 .14
ra una serie de números en el rango de 0 a 19. En este ejemplo, los asteriscos (*) se utilizs
m
para construir la barra. Cada asterisco representa una ocurrencia del valor de datos. V ista d el usu ario
Los arreglos analizados hasta ahora se conocen como arreglos unidimensionales debido a qi f i l aO fila 1
ARREGLOS
BIDIfVSENSSONALES los datos se organizan linealmente en una sola dirección. Muchas aplicaciones requieren que 1 ;c ¡¡i v oV j m i .'íd f ijíp t ; 12f J R t . 14
datos se almacenen en más de una dimensión. Un ejemplo común es una tabla, que es un arr LüJLOj |üJLU L0J12J ! 0 j|3 j [ÜJL4J LULOJ UJLlj L1JL2J U J[3j [1J14J
glo que consiste en filas y columnas. La figura 11.7 muestra una tabla, a la cual por lo genei
se le llama arreglo bidimensional. Observe que los arreglos pueden tener tres, cuatro o m V ista de la m e m o ria
dimensiones. Sin embargo, el análisis de los arreglos multidimensionales está más allá d
ámbito de este libro. F ig u r a 1 1 .8 D isp o sició n en la m em oria
D isposición Los índices en la definición de un arreglo bidimensional representan filas y columnas. Este fe
en §a m em oria mato relaciona la forma en que los datos se disponen en la memoria. Si usted fuera a cons
derar la memoria como una fila de bytes con las direcciones inferiores a la izquierda y 1
direcciones superiores a la derecha, entonces se podría colocar un arreglo en la memoria con 11.2 REGISTROS
el primer elemento a la izquierda y el último elemento a la derecha. De manera similar, si el
arreglo es bidimensional, entonces la primera dimensión es una fila de elementos que se alma Un registro es una colección de elementos relacionados, posiblemente de distintos tipos, que
cena a la izquierda. Esto se conoce como almacenamiento de “filas mayores” (figura 11.8). tienen un solo nombre. Cada elemento de un registro se llama campo. Un campo es el ele
mento más pequeño de datos con nombre que tiene un significado. Tiene un tipo y existe en
la memoria. Se le pueden asignar valores, a los que se tiene acceso por selección o manipu
lación. Un campo difiere de una variable principalmente en que éste es parte de un registro.
0 0 La diferencia entre un arreglo y un registro radica en que todos los elementos en un arre
1 4 * glo deben ser del mismo tipo, mientras que los elementos en un registro pueden ser del m is
2 7 * m o tipo o de uno diferente.
3 7 * La figura 11.9 contiene dos ejemplos de registros. El primer ejemplo, f r a c c i ó n , tiene
dos campos, ambos formados por enteros. El segundo ejemplo, e s t u d i a n t e , tiene tres cam
pos formados por dos tipos distintos.
18 2 *
19 0
F ig u r a 1 1 .6 H isto g ram a
0 1 2 3
Los elementos de u n registro pueden ser del mismo tipo o de tipos diferentes.
Pero todos deben estar relacionados.
Sin embargo, hay una advertencia de diseño. Los datos de un registro deben estar relacio
nados a un objeto. En la figura 11.9, los enteros de la fracción pertenecen a la misma frac
ción, y los datos en el segundo ejemplo están relacionados con un estudiante. No combine
datos que no están relacionados por conveniencia de programación.
ACCESO Primero se describirá cómo acceder a componentes individuales de un registro y después se F ig u r a 1 1 .1 0 L is t a s lig a d a s
A REGISTROS examinará la asignación de todos los registros.
Acceso a cam pos Se puede tener acceso y manipular cada campo de un registro al emplear expresiones y ope
Datos
individuales radores. Todo lo que se puede hacer con una variable individual se puede hacer también con
un campo del registro. El problema está en identificar los campos individuales en los que us
ted está interesado.
Dado que cada campo en un registro tiene un nombre, se puede usar simplemente el nom Figura 1 1 . 1 1 Nodo
bre. El problema con esta sencilla opción es que si usted quiere comparar el id de un estu
diante en un registro con el id de otro estudiante en otro registro, la instrucción podría ser
ambigua. Por lo tanto, necesita identificar de algún modo los registros que contienen identi- el final de la lista. Definimos como lista ligada vacía aquella que tiene un apuntador de enca
ficadores de campo, en este caso los id. Muchos lenguajes de programación utilizan un pun bezamiento nulo. La figura 11.10 también contiene un ejemplo de una lista ligada vacía.
to (.) para separar el nombre del registro del nombre del campo.
Por ejemplo, si tiene dos registros (Estudiantel y Estudiante2) del tipo estudiante,
puede referirse a los campos individuales de esos registros como sigue: NODOS Los elementos de una lista ligada tradicionalmente se llaman nodos. Un nodo de una lista
ligada es un registro que tiene al menos dos campos: uno contiene los datos y el otro la direc
• Estudiante! .id. Estudiante!-.nombre y Estudiantel.orado ■ ción del siguiente nodo en la secuencia (figura 11.11).
Estudiante2.id, Estudia ombre y Estudiante2 .grado .'-'"i Los nodos de una lista ligada se llaman registros autorreferenciales. En un registro au-
torreferencial, cada instancia del registro contiene un apuntador a otra instancia del mismo ti
También puede leer y escribir datos de los miembros de un registro del mismo modo que po estructural.
lo hace en las variables individuales.
apuntado res Una lista ligada siempre debe tener un apuntador de encabezamiento. Dependiendo de có
A LISTAS mo se empleará la lista, también es posible tener varios apuntadores. Por ejemplo, siva a
buscar en una lista ligada, sin duda debe tener un apuntador a la ubicación (pLoc) donde en
lig a d a s
contrará los datos que busca. En muchos registros, el programa es más eficiente si existen
113 LISTAS LIGADAS apuntadores al último nodo en la lista y a apuntadores de encabezamiento. Este último apun
tador por lo general se llama pLast (apuntador al último) o pRear (apuntador a la parte
Una lisia ligada es una colección ordenada de datos en la que cada elemento contiene la ubi posterior).
cación del siguiente elemento; es decir, cada elemento contiene dos partes: datos y liga- La
parte de los datos mantiene la información útil, los datos a procesarse. La liga se emplea pa
ra encadenar los datos. Contiene un apuntador (una dirección) que identifica el siguiente ele OPERACIONES Hay cinco operaciones básicas en una lista ligada, las cuales son suficientes para resolver
mento en la lista. Además, la variable apuntador identifica el primer elemento en la lista. El EN LISTAS cualquier problema en la secuencia de la üsta. Si una aplicación requiere operaciones adicio
nombre de la lista es el mismo nombre que el de esta variable apuntador. La sencilla lista liga‘ nales en la lista, éstas se pueden agregar fácilmente.
LIGADAS
da que se describe aquí se conoce comúnmente como lista simplemente ligada porque úni
camente contiene una liga a un solo sucesor. Una lista ligada es un ejemplo de una estructura
de datos derivada en la que la estructura no existe dentro del lenguaje pero está simulada p°r In s e rc ió n Para insertar un nodo en una lista ligada, siga estos tres pasos (figura 11.12):
otras estructuras disponibles. de un nodo 1. Asigne memoria para el nuevo nodo y escriba los datos.
La figura 11.10 muestra una lista ligada, pList -por apuntador {pointer) en el encabeza*
miento de la lista-, que contiene cuatro elementos. La liga en cada elemento, excepto el 2. Haga que el nuevo nodo apunte a su sucesor.
mo, apunta a su sucesor. La liga en el último elemento contiene un indicador nulo, que indica 3. Haga que el predecesor apunte al nuevo nodo.
E s tru c tu ra s d e d a to s 11 .4 T é rm in o s c la v e J ||||||
Dada una clave objetivo, la lista ordenada intenta localizar el nodo solicitado en la lista liga
132 -m ► 178 da. Si un nodo en la lista concuerda con su valor objetivo, entonces la búsqueda regresa un
valor de verdadero; si no hay coincidencias con las claves, devuelve el valor de falso.
Lista original
Recuperación Ahora que sabe cómo localizar un nodo en la lista, podemos describir la recuperación de un
nodo. Para recuperar un nodo, busque en la lista para localizar los datos. Si éstos se encuen
de un nodo
tran, se mueven al área de salida en el módulo que llama. Si éstos no se encuentran, no se re
cuperará nada.
Los algoritmos que cruzan una lista inician en el primer nodo y examinan cada nodo en su
Cruce de una l i s t a
cesión hasta que se ha procesado el último nodo. El cruce lógico se utiliza por varios tipos de
Después dei paso 2
algoritmos, tales como el cambio de un valor en cada nodo, la impresión de la üsta, la suma
de un campo en la lista o el cálculo del promedio de un campo. Cualquier aplicación que re
quiera que la lista entera se procese utiliza un cruce.
Para cruzar la lista, usted necesita un apuntador auxiliar, el cual es un apuntador que se
mueve de un nodo a otro conforme se procesa cada elemento. Comience por establecer el
Después del paso 3 apuntador auxiliar para el primer nodo en la lista. Luego, utilizando un ciclo, continúe hasta
que todos los datos se han procesado. Cada ciclo llama a un módulo de proceso y le pasa los
Figura 1 1 .1 2 In serció n d e un nodo datos, luego avanza el apuntador auxiliar al siguiente nodo. Cuando el último nodo se ha pro
cesado, el apuntador auxiliar se vuelve nulo y el ciclo termina (figura 11.14).
Después de eliminarlo
E lim inación Para eliminar un nodo primero debe ubicar el nodo mismo. Una vez que localice el nodo a ei.-
d e un n o d o minar, simplemente cambie el campo de la liga del predecesor para que apunte al sucesor del
nodo eliminado (figura 11.13). Sin embargo, debe tener cuidado al eliminar el único nodo de
una lista porque esto dará como resultado una lista vacía. Recuerde que la eliminación del pri-
mer nodo o del único nodo son casos especiales que necesitan un manejo especial.
11.4 TÉRMINOS CLAVE
Búsqueda La búsqueda en una lista se emplea por otras operaciones para localizar datos en una lista. Por
en una lista ejemplo, para insertar datos necesita conocer el predecesor lógico de los nuevos datos. Par3 . almacenamiento de filas mayores búsqueda en una lista lista ligada individualmente
eliminar datos, necesita encontrar el nodo a ser eliminado e identificar a su predecesor lógi apuntador campo memoria
co. Para recuperar datos de una lista, necesita buscar en la lista y encontrar los datos. Ade apuntador nulo ciclo nodo
más, muchas aplicaciones de usuarios requieren que se realicen búsquedas en las listas para arreglo estructura de datos registro
localizar datos. arreglo bidimensional gráfica de barras registro autorreferenciai
Para buscar una lista en una clave, necesita un campo de clave. Para las listas sencillas, arreglo de frecuencia histograma subíndice
la clave y los datos pueden estar en el mismo campo. Para registros más complejos se nece arreglo multidimensional liga variable
sita un campo de clave independiente. arreglo unidimensional lista ligada
224 E s tru c tu ra s d e d a to s 11 .6 G r u p o d e p rá c tica s
18. es un conjunto de tamaño fijo y secuenciado 25. Cada elemento de un registro se conoce como _
.5 RESUMEN de elementos del mismo tipo de datos. a. una variable
a. un arreglo • b. un índice
■ Arreglos, registros y listas ligadas son estructuras de da Cada elemento de un registro se llama campo. b. un registro c. un campo
tos que se estudian en este capítulo. c. una lista ligada
Una diferencia entre un arreglo y un registro es que to d. un nodo
■ Un arreglo unidimensional es una secuencia de tamaño dos los elementos dentro del arreglo deben ser del mis d. una variable
fijo de elementos del mismo tipo. mo tipo, mientras que los elementos del registro pueden 26. Todos los miembros de un arreglo deben ser d e .
19. Dado el arreglo llamado o b j eto con veinte elementos,
ser del mismo tipo o de uno diferente. a. el mismo tipo
■ Puede acceder a los elementos individuales de un arre si usted ve el término objetoiC1, sabrá que el arreglo
b. distintos tipos
glo utilizando el nombre del arreglo y el índice. Una lista ligada es un conjunto de datos ordenados en la tiene una forma d e _______ .
cual cada elemento contiene la ubicación (dirección) del c. tipo entero
a. variable
■ Puede procesar los valores de un arreglo usando un ciclo. siguiente elemento; es decir, cada elemento contiene dos d. tipo carácter
b. registro
■ Un arreglo de frecuencia es aquel cuyos elementos partes: datos y liga.
c. índice 27. Todos los miembros de un registro deben ser d e.
muestran el número de ocurrencias de valores de datos El nodo en una lista ligada individualmente contiene d. subíndice a. el mismo tipo
de otro arreglo. únicamente una liga a un solo sucesor, a menos que sea b. tipos relacionados
el último, en cuyo caso no está ligado con ningún otro 20. Dado el arreglo llamado objeto con veinte elementos,
■ Un histograma es una representación gráfica de un arre c. tipo entero
nodo. si usted ve el término objeto [10], sabrá que el arre
glo de frecuencia. d. tipo carácter
glo tiene una forma d e _______ .
■ Un arreglo bidimensional es una presentación en una ta Cuando se desea insertar un elemento en una lista liga
a. variable Un(a) es un conjunto ordenado de datos en el
bla con filas y columnas. da, deben considerarse cuatro casos: agregar a una lista
b. registro cual cada elemento contiene la ubicación del siguiente
vacía, agregar al inicio de la lista, agregar a la mitad y
■ Un arreglo multidimensional es una extensión de un c. índice elemento.
agregar al final.
arreglo bidimensional a uno de tres, cuatro o más dimen d. subíndice a. arreglo
Cruzar una lista ligada significa recorrer la lista, nodo
siones. b. registro
por nodo, y procesar cada nodo. Tres ejemplos de cruces 21. Un(a) es una representación gráfica de un
c. lista ligada
■ Un registro es un conjunto de elementos relacionados, de listas son el conteo de la cantidad de nodos, la impre arreglo de frecuencia.
posiblemente de diferentes tipos, que tienen un solo d. nodo
sión del contenido de los nodos y la suma de los valores a. lista ligada
nombre. de uno o más campos. b. histograma 29. En una lista ligada, cada elemento contiene
c. registro a. datos
d. nodo b. una liga
GRUPO DE PRACTICAS 22. Un arreglo que consiste simplemente en filas y colum
c. un registro
nas probablemente es un arreglo_______ . d. ayb
P R E G U N T A S DE R E P A S O 12. ¿Cuál es la función del apuntador en una lista ligada?
a. unidimensional 30. El(la). . es un apuntador que identifica el siguien
1. ¿Por qué existe la necesidad de las estructuras de datos? 13. ¿Cómo se puede apuntar hacia el primer nodo en una lis b. bidimensional te elemento dentro de la lista ligada.
ta ligada? c. tridimensional a. liga
2. Mencione tres tipos de estructuras de datos.
14. ¿A qué apunta el apuntador en el último nodo de una lis . d. multidimensional b. nodo
3. ¿Qué es un arreglo?
ta ligada? c. arreglo
4. ¿En qué difiere un elemento en un arreglo de un elemen 23. En un arreglo bidimensional con cuatro filas, la fila con
15. ¿Qué es una lista ligada individualmente? d. a o b
to en un registro? las direcciones superiores en la memoria es l a _______
16. Describa el predecesor del apuntador cuando se agrega fila. 31. Dada una lista ligada llamada n iñ o s , la variable del
5. ¿Cuál es la diferencia entre un elemento en un arreglo y
un elemento en una lista ligada? un nodo a: a. primera apuntador n iñ o s identifica a l _______ elemento de la
a. el inicio de una lista ligada b. segunda lista ligada.
6. ¿Por qué debe usar índices en lugar de subíndices para
b. el punto medio de la lista ligada c. tercera a. primer
identificar los elementos de un arreglo?
c. el final de una lista ligada, y d. cuarta b. segundo
7. ¿Qué es un arreglo de frecuencia? d. una lista vacía c. último
24- Un(a) es un conjunto de elementos relaciona
8. ¿Cómo se relaciona un histograma con un arreglo de fre d. cualquiera
P R EG U N T A S DE O PCIÓ N M Ú LT IP LE dos, posiblemente de distintos tipos, que tienen un solo
cuencia?
nombre. 32. Una lista ligada vacía consiste d e _______ .
9. ¿Cómo se almacenan los elementos de un arreglo en la 17. Una estructura de datos puede s e r .
a. un arreglo a. arreglo a. una variable
memoria?
b. un registro b. registro b. dos nodos
10. ¿Cuál es la definición de un campo en un registro? c. una lista ligada c. lista ligada c. datos y una liga
11. ¿Cuáles son los campos de un nodo en una lista ligada? d. todas las anteriores d. todas las anteriores d. un apuntador de encabezamiento nulo
33. En un registro autorreferencial, cada instancia del re 40. Utilizando la figura 11.9, ¿cuál es el resultado de las
gistro contiene un apuntador hacia otra instancia de guientes instrucciones, suponiendo que Frl es (
_______ tipo. fracción?
a. el mismo Frl.numerador = 7;
F r l .denominador = 8;
b. diferente
c. similar
d. a o b
±
T ip o s d e d a to s a b s tra c to s 1 2.2 Listas lin e a le s ^ ^ |J j|
Como ejemplo, considere a un analista de sistemas que debe simular la fila de espera de
un banco para determinar cuántos cajeros se necesitan para atender a los clientes de manera
eficiente. Este análisis requiere la simulación de una cola de espera. Sin embargo, las colas
de espera por lo general no están disponibles en los lenguajes de programación. Incluso si un
tipo de cola de espera está disponible, el analista aún necesitaría algunas operaciones básicas,
como la inserción (enqueuing) y la eliminación (dequeuing ) de un elemento, para la simula
ción de la cola de espera.
Hay dos soluciones posibles a este problema: (1) se puede escribir un programa que simu
le la cola de espera que el analista necesita (en este caso, la solución es buena sólo para una
aplicación próxima) o (2) se puede escribir un TDA de cola de espera que se utilice para re F ig u r a 1 2 .1 M o d elo para T D A
solver cualquier problema de cola de espera. Si se elige esta última opción, el analista toda
vía necesitará escribir un programa para simular la aplicación bancaria, pero hacerlo será OPERACIONES Los datos se introducen, se accede a ellos, se modifican y se eliminan mediante las interfaces
mucho más fácil y rápido debido a que él o ella podrán concentrarse en la aplicación en vez CO N T D A operativas dibujadas como rectángulos parcialmente dentro y parcialmente fuera de la estruc
de concentrarse en la cola de espera. tura. Para el encabezado (header ) de cada operación, hay un algoritmo que realiza una ope
ración específica. Sólo el nombre de la operación y sus parámetros están visibles para el
DEFINICIÓN Definamos formalmente un TDA. Un tipo de datos abstracto es una declaración de datos em usuario y proporcionan la única interfaz para el TDA. Operaciones adicionales pueden crear
pacados junto con las operaciones que tienen sentido para el tipo de datos. Después se encap- se para cumplir requisitos específicos.
sulan los datos y las operaciones que se aplican a los datos, y se ocultan al usuario.
lista
F ig u r a 1 2 .2 Lista lineal
Las listas lineales puec m dividirse en dos categorías: generales y restringidas. En una lis
ta general, los datos pueden insertarse y eliminarse en cualquier parte, y no hay restricciones
sobre las operaciones que pueden utilizarse para procesar la lista. Las estructuras generales
pueden describirse posteriormente mediante sus datos, ya sea como listas aleatorias u ordena
das. En una lista aleatoria no hay un orden en los datos. En una lista ordenada los datos se
acomodan según una clave. Una clave es uno o más campos dentro de una estructura que se
utilizan para identificar los datos o para controlar de algún otro modo su uso. En un arreglo
simple, los datos también son las claves.
En una lista restringida, los datos sólo pueden añadirse o eliminarse en los extremos de
la estructura, y el procesamiento está restringido a operaciones de los datos en los extremos F ig u r a 1 2 .4 in serció n en una lista lineal
de la lista. Describimos dos estructuras de lista restringida: la lista primero en entrar, pri
mero en salir (FIFO : fir s t in, fir st out ) y la lista último en entrar, primero en salir (LIFO: E lim in a c ió n La eliminación de un elemento de una lista general (figura 12.5) requiere que se realice una
last in, first out). La lista FIFO por lo general se llama cola de espera; la lista LEFO común búsqueda en la lista para localizar los datos que se van a eliminar. Cualquier algoritmo de bús
mente se llama pila. La figura 12.3 muestra los tipos de listas lineales. queda secuencial puede emplearse para localizar los datos. Una vez localizados, los datos se
eliminan de la lista. El único problema posible con esta simple operación es la lista vacía. Si
la lista está vacía, ésta se encuentra en un estado de sobre desbordamiento y la operación
fracasa.
Listas
lineales
General Restringida
Sin
ordenar
j| FIFO (cola
de espera)
LIFO
(pila)
Eliminación
datos
rojo
En esta sección nos concentramos en un tipo de lista lineal: la üsta lineal general con da
tos ordenados. Las listas lineales restringidas se analizarán posteriormente en el capítulo.
F ig u r a 1 2 .5 Elim in ació n de una lista lineal
OPERACIONES CON Aun cuando podemos definir muchas operaciones con una lista lineal general, sólo analiza
L IS T A S L IN E A L E S
remos cuatro operaciones de las más comunes: la inserción, la eliminación, la recuperación y Recuperación La recuperación de üsta requiere que los datos se localicen en una lista (figura 12.6). Una co
el recorrido. pia de los datos debe recuperarse sin cambiar el contenido de la lista. Al igual que sucede con
la inserción y la eliminación, cualquier algoritmo de búsqueda secuencial puede utilizarse pa
Los datos deben insertarse en listas ordenadas de modo que se mantenga el orden de la lista. ra localizar los datos a recuperar de una lista general. El único problema posible con esta sim
Inserción
Para mantener el orden se requiere insertar los datos al principio o al final de la lista, pero la ple operación es una lista vacía. No se puede recuperar un elemento de una lista lineal vacía.
mayor parte del tiempo los datos se insertan en algún lugar dentro de la lista. Para determi
nar dónde se van a colocar los datos, los científicos de la computación utilizan un algoritmo R e co rrid o El recorrido de una lista es una operación en la cual todos los elementos en la lista se proce
de búsqueda. El único problema posible con esta simple operación es que ya no haya espacio san en forma secuencial, uno a uno (figura 12.7). En esta figura, la variable llamada Walker
para el elemento nuevo. Si no hay espacio suficiente, la lista entra en un estado de desborda apunta al elemento que debe procesarse. El procesamiento aquí puede ser la recuperación, el
miento y el elemento no puede añadirse. La inserción se muestra gráficamente en la figura almacenamiento, etc. El recorrido de listas requiere un algoritmo iterativo en vez de una bús
12.4. Los datos insertados se identifican mediante el elemento sombreado, en este caso, el ter queda. Cada iteración de un ciclo procesa un elemento en la lista. El ciclo termina cuando to
cer elemento de la lista revisada. dos los elementos se han procesado.
T ip o s d e d a to s a b s tra c to s 12.3 P ila s
lista
gato ------ perro ----- pez de colores ----- cebra
Elemento recuperado
identificado ▼
por la búsqueda Recuperación
Y
Pila de monedas Pila de libros
lista
\ Figura 12.8 T res rep re se n tacio n es de u n a pila
gato ; p « pez de colores cebra
objeto diferente del que está en la cima, primero debe eliminar todos los objetos que están de
Figura 12.6 R e cu p eració n d e sd e una lista üneal
bajo de él. En la figura 12.8 se muestran tres representaciones de una pila.
Aunque podemos definir muchas operaciones para una pila, hay tres que son básicas: inser
OPERACIONES
lista tar, extraer y vaciar.
CON PILAS
— pez de colores cebra
_- > ----- Insertar Al insertar (push ) se añade un elemento en la parte superior de la pila (figura 12.9). Después
de insertar, el elemento se vuelve la cima. El único problema posible con esta operación sim
ple es quedarse sin espacio para el nuevo elemento. Si no hay espacio suficiente, la pila está
en un estado de desbordamiento y el elemento no puede añadirse.
IM PLE IV IE N T A tlÓ N Dos métodos comunes de implementación de una lista lineal general son un arreglo y una
D E U N A LISTA lista ligada.
LIN E A L GENERAL
APLICACIONES Las listas lineales se utilizan en situaciones donde se accede a los elementos en forma alea Figura 1 2 .9 O p eració n de in se rta r en u n a pila
DE LISTA LINEAL toria. Por ejemplo, en una universidad una lista lineal puede utilizarse para almacenar infor
mación sobre los estudiantes que están inscritos en cada semestre. La información puede Extraer Cuando usted extrae (pop) un elemento de una pila, elimina el elemento en la parte superior
accederse en forma aleatoria. de la pila y lo devuelve al usuario (figura 12.10). Cuando el último elemento en la pila se eli
mina, la pila debe establecerse a su estado vacío. Si se hace una llamada a la operación de ex
traer cuando la pila está vacía, ésta se encuentra en un estado de sobre desbordamiento.
23 PILAS
Una pila es una lista lineal restringida en la cual las adiciones y eliminaciones se realizan en
un extremo llamado cima. Si usted inserta una serie de datos en una pila y luego la elimina,
el orden de los datos se invertirá. La entrada de datos como 5, 10, 15,20 debe eliminarse co
mo 20, 15, 10 y 5. Este atributo de inversión es la razón por la cual las pilas se conocen co
mo una estructura de datos último en entrar, primero en salir (LÍFO).
Una persona utiliza en su vida diaria muchos tipos de pila distintos. A menudo hablamos
de una pila de monedas o de una pila de platos. Cualquier situación en la cual usted simple
mente pueda añadir o eliminar un objeto en la cima es una pila. Si desea eliminar cualquier Figura 12.10 O p e ra c ió n d e e x tra e r d e una p ila
T ip o s d e d a to s a b s tra c to s 1 2 .4 C o la s d e e s p e ra | | Q ^ j|
Esta operación (empty) hace una revisión para ver si una pila está vacía o no. La respuesta es R etrO C SSO El retroceso, dar marcha atrás a los datos previos, es un uso de pila que se encuentra en apli
V aciar
ya sea verdadera o falsa. caciones como los juegos de computadoras, el análisis de decisiones y los sistemas expertos.
EJEM P LO 1
F ig u r a 1 2 .1 1 Ejem p lo 1 I
Bancos
IM P LE M E N T A C IÓ N Aunque una pila puede implementarse ya sea como un arreglo o como una lista ligada, la for
D E U N A PILA ma más común es una lista ligada debido a que las operaciones de extracción e inserción pue
den implementarse mucho más fácilmente en una lista de este tipo.
Las aplicaciones de pila pueden clasificarse en cuatro amplias categorías: inversión de datos, E lim inar
áfirmu a. Una cola de espera (fila) de personas
Insertar
A P LIC A C IO N E S (dequeue) (enqueue)
D E PILA análisis sintáctico de datos, postergación del uso de los datos y retroceso sobre los pasos.
Inversión de datos La inversión de datos requiere que un conjunto dado de datos se reordene de modo que el pri
mer elemento y el último se intercambien, con todas las posiciones entre el primero y el últi
parte de enfrente parte trasera
mo también intercambiadas relativamente. Por ejemplo, 1 2 3 4 se convierte en 4 3 2 1.
b. Una cola de espera de computadora
A nálisis sintáctico Otra aplicación de pilas es el análisis sintáctico. Este tipo de análisis es cualquier lógica que
divide los datos en piezas independientes para su procesamiento posterior. Por ejemplo, para F ig u r a 1 2 .1 2 R ep resen ta cio n e s d e co las de e sp e ra
traducir un programa fuente a lenguaje de máquina, un compilador debe analizar el progra
ma en partes individuales como palabras clave, nombres y elementos sintácticos (tokens). OPERACIONES CON Aun cuando sea posible definir muchas operaciones para una cola de espera, tres son las bá-
Un problema de programación común son los paréntesis sin par en una expresión algebrai COLAS D E ESPERA sicas: eliminar, insertar y vaciar.
ca. Cuando ios paréntesis no tienen par pueden ocurrir dos tipos de errores: pueden faltar ya
sea el paréntesis de apertura o el paréntesis de cierre. Siempre que se encuentra un paréntesis Insertar La operación de insertar (enqueue) en una cola de espera aparece en la figura 12.13. Des
de apertura, éste se inserta en la pila. Cuando se encuentra un paréntesis de cierre, un parénte pués de que los datos se han insertado en la cola, el nuevo elemento se vuelve la parte trasera.
sis de apertura (de la cima de la pila) se extrae y se descarta. Si al final la pila no está vacía, Como se vio con las pilas, el único problema posible con la inserción es quedarse sin espa
significa que hay más paréntesis de apertura que de cierre. También ocurre un error cuando se cio para los datos. Si no hay suficiente espacio para otro elemento en la cola de espera, ésta
encuentra un paréntesis de cierre y no hay paréntesis de apertura en la cima de la fila. entra en un estado de desbordamiento.
Cuando se utiliza una pila para invertir una lista, toda la lista es leída antes de que los resul Elim inar La operación de eliminar (dequeue) un elemento de una cola de espera se muestra en la fi
Postergación
tados se comiencen a generar. Con frecuencia, la lógica de una aplicación requiere que el uso gura 12.14. Los datos en la parte de enfrente de la cola de espera se eliminan de la misma y
de los datos se postergue hasta un momento posterior. Una pila puede ser útil cuando la apli se devuelven al usuario. Si no hay datos en la cola de espera cuando se intenta una elimina
cación requiere la postergación del uso de los datos. ción, la cola está en un estado de sobre desbordamiento.
236 T ip o s d e d a to s a b s tra c to s 12.5 Á rb o le s 237
IM P L E M E N T A C IÓ N Una cola de espera puede implementarse ya sea como un arreglo o como una lista ligada.
Cola de espera
DE U N A C O L A D E
parte de enfrente lómela] | kiwi | espera
a p l ic a c io n e s Las colas de espera son una de las estructuras de procesamiento de datos más comunes. Se
Inserción DE L A C O L A D E encuentran en prácticamente todo sistema operativo y red en incontables áreas distintas. Por
Operación
{enqueue) ejemplo, las colas de espera se utilizan en aplicaciones de negocios en línea tales como el pro
datos ESPERA
cesamiento de solicitudes del cliente, tareas y pedidos. En un sistema de cómputo una cola de
espera es necesaria para procesar tareas y para servicios del sistema tales como los servicios
parte trasera lómela} j kiwi
de impresión.
Cola de espera Las colas de espera pueden volverse bastante complejas; damos una implementación sim
ple de cola de espera: una aplicación que es útil para clasificar datos. Una cola de espera pre
F ig u r a 1 2 .1 3 O p e ra ció n d e in serta r serva el orden de los datos. Por ejemplo, usted tiene una lista de números y necesita clasificarlos
en grupos (100 o menos, entre 100 y 201, etc.). Puede leer los datos y crear varias colas de es
pera. Un número se inserta en la cola de espera apropiada y puede recuperarse en el orden en
Cola de espera que se leyó pero en su propio grupo. Por ejemplo, todos los números en la categoría de 100 o
menos pueden imprimirse primero en el orden en que se leyeron. Después, todos los números
parte d e adelante kiwi | I uva 1
entre 100 y 201 pueden imprimirse en el orden en que se leyeron y así por el estilo.
Eliminación Operación
(déqueite)
12.5 ÁRBOLES
parte d e adelante Iwi 1 | uva | Los árboles se usan exhaustivamente en las ciencias de la computación como una estructura
eficiente para realizar búsquedas en listas dinámicas grandes y para aplicaciones diversas co
Cola de espera
mo los sistemas de inteligencia artificial y los algoritmos de codificación. En esta sección
Figura 12.14 O p e ra ció n d e e lim in ar analizamos el concepto básico de árbol. En la siguiente sección presentamos un tipo especial
de árbol, llamado árbol binario, el cual es una estructura común en las ciencias de la compu
Esta operación {empty) hace una revisión para ver si una cola de espera está vacía o no. El re tación.
Vaciar
sultado es verdadero o falso.
CONCEPTOS Un árbol consiste de un conjunto finito de elementos, llamados nodos, y un conjunto finito
E JE M PL O 2 BÁSICOS DE ÁRBO L de líneas dirigidas, llamadas ramas, que conectan los nodos. El número de ramas asociadas
Muestre el resultado de las siguientes operaciones en una cola de espera Q. con un nodo es el grado del nodo. Cuando la rama se dirige hacia el nodo, es una rama de
grado de entrada, cuando la rama se aleja del nodo, es una rama de grado de salida. La su
•. enqueue (Q, 23) _rvvíií>';V; .. Av-'-. '• -*¿feA A ^ ma de las ramas de grado de entrada y de grado de salida es el grado del nodo. En la figura
;AA:. if not empty (Q), dequeue (Q) fA - -A-^- "■/ 12.16 el grado del nodo B es 3.
enqueue (Q, 20) . y:;;. "AA;-.. \
Si el árbol no está vacío, el primer nodo se conoce como raíz. El grado de entrada de la raíz
enqueue (Q, 19) • : ; '-vA; . • es, por definición, cero. Con excepción de la raíz todos los nodos en un árbol deben tener un
if not empty (Q), dequeue (Q) - 'A%v; V 'A
grado de entrada de exactamente uno. Todos los nodos en el árbol pueden tener cero, una o
más ramas que salen de ellos, es decir, pueden tener un grado de salida de cero, uno o más.
SOLUCIÓN
La figura 12.15 muestra las operaciones y el resultado final.
Q Q Q
parte de parte de parte de
enfrente 20 enfrente 20 19 enfrente 19
Q Q Q
F ig u r a 12.15 E je m p lo 2 Figura 12.16 R ep re sen tació n d e un á rb o l
T ip o s d e d a to s a b s tra c to s 12.6 Á r b o le s b in a rio s
T e rm in o lo g ía Además de la raíz, muchos términos distintos se utilizan para describir los atributos de ut
bol. Una hoja es cualquier nodo con un grado de salida de cero. En la figura 12.16, el ncx
es una hoja. Un nodo que no es una raíz o una lioja se conoce como nodo interno debido a que
se encuentra en la parte media de un árbol. En la figura 12.16 el nodo B es un nodo interno.
Un nodo es un padre si tiene nodos sucesores -e s decir, si tiene un grado de salida may n
que cero. A la inversa, un nodo con un predecesor es un hijo. Un nodo hijo tiene un grado <
entrada de uno. Dos o más nodos con el mismo padre son hermanos. Por fortuna, usted i
tiene que preocuparse por las tías, los tíos, las sobrinas, los sobrinos y los primos. Aunque ¡
gunos libros utilizan el término abuelo, nosotros no lo hacemos; preferimos el término m.
general de ancestro. Un ancestro es cualquier nodo en el camino desde la raíz hasta el nod
U n descendiente es cualquier nodo en el camino debajo del nodo padre; es decir, todos 1(
nodos en los caminos de un nodo dado hacia una hoja son descendientes del nodo. La figu F ig u r a 12.18 S u b árb o les
12.17 muestra el uso de estos términos.
OPERACIONES Las operaciones con un árbol son complejas y su explicación está más allá del ámbito de es-
f ON Á R B O L E S te libro. Se analizan en un curso de estructura de datos.
£
OPERACIONES C O N Las tres operaciones más comunes definidas para un árbol binario son insertar, eliminar y re
a. b. c. d.
correr. Las operaciones de inserción y eliminación son complejas y su explicación está más
Ar b o l e s b i n a r io s
allá del ámbito de este libro. Analizamos el recorrido de árbol binario en esta sección.
< £ > Un recorrido de árbol binario requiere que cada nodo del árbol se procese una vez y sólo
Recorridos
una vez en una secuencia predeterminada. Los dos métodos generales para la secuencia de re
de árbol b inario
e- f. corrido son primero en profundidad y primero en anchura.
Recorrido prim ero en profundidad Dado que un árbol binario consiste en una raíz, un
subárbol izquierdo y un subárbol derecho, podemos definir seis secuencias diferentes de re
corrido primero en profundidad. Los científicos de la computación han asignado a tres de
J > estas secuencias nombres estándar en la literatura; los otros tres no tienen nombre pero se de
h.
rivan fácilmente. Los recorridos estándar se muestran en la figura 12.21.
Un árbol con una altura máxima es raro. Ocurre cuando todo el árbol se construye en ur
dirección, como se muestra en las figuras 12.20(g) y 12.20(h). La altura mínima del árbc
n, se determina mediante la fórmula siguiente:
M h
Á rbol Á rbol
tfmín = [log2AH + 1 izquierdo d e re c h o
Dada la altura de un árbol binario, i?, el número mínimo y el número máximo de nodos b. R ecorrido en orden c. R ecorrido en p ost orden
en el árbol se dan como:
F ig u r a 1 2 .2 1 R eco rrid o de p rim ero en p ro fu n d id ad de un árbol bin ario
hay). Finalmente procesa el nodo raíz. La figura 12.24 muestra otra forma de visualizar
el recorrido del árbol. Imagine que usted está caminando alrededor de un árbol, comen
zando por la izquierda de la raíz y manteniéndose tan cerca de los nodos como le es po
sible. En el recorrido en post orden, usted procesa el nodo cuando está a la derecha del
mismo. Esto aparece como una caja negra a la derecha del nodo. El camino se muestra
como una línea que sigue una trayectoria completamente alrededor del árbol y de regre
so a la raíz.
Recorridos p rim e ro En el recorrido primero en anchura de un árbol binario, usted procesa todos los hijos de un
en anchura nodo antes de continuar con el siguiente nivel. Dicho de otra forma, dada una raíz en el nivel
n, se procesan todos los nodos del nivel n antes de continuar con los nodos del nivel n +
1. Para recorrer un árbol en orden de primero en profundidad, se utiliza una pila. Por otro la
do, para recorrer un árbol primero en anchura, se utiliza una cola de espera.
Al igual que con los recorridos de primero en profundidad, se puede trazar el recorrido con
F ig u r a 1 2 .2 2 R eco rrid o en pre o rd en d e un árbol binario
un camino. Esta vez, no obstante, el camino continúa a modo de escalera, primero atraviesa
el nivel raíz, luego atraviesa el nivel 1, enseguida el nivel 2 y así sucesivamente hasta que to
do el árbol se recorre (figura 12.25).
APLICACIONES DEL Una interesante aplicación de árbol binario es el árbol de expresiones. Una expresión es una
ÁRBOL BINARIO secuencia sintáctica que siguen las reglas prescritas. Un elemento sintáctico (token) puede ser
ya sea un operando o un operador. En este análisis consideramos sólo ios operadores aritmé
ticos binarios en la forma de operando-operador-operando. Para simplificar el análisis, usa
mos únicamente cuatro operadores: suma, resta, multiplicación y división.
Un árbol de expresiones es un árbol binario con las propiedades siguientes:
Para un árbol de expresiones, los tres recorridos estándar representan tres formatos de expre
Recorrido en post orden (LRN). El último de los recorridos estándar es el recorrido sión diferentes: infijo, posfijo y prefijo. El recorrido en orden produce la expresión de infi
en post orden, el cual procesa el nodo raíz después (post) de que los subárboles izquier jo, el recorrido en post orden genera la expresión de posfijo y el recorrido en pre orden
do y derecho se han procesado. Comienza localizando la hoja en el extremo izquierdo produce la expresión de prefijo. La figura 12.26 muestra una expresión de infijo y su árbol de
y procesándola. Luego procesa el hermano derecho, incluyendo sus subárboles (si l°s expresiones.
244 T ip o s d e d a to s a b s tra c to s 12 .7 G ra fo s 245;
F ig u r a 1 2 .2 7 G ra fo s dirig id o s y no dirig id o s
F ig u r a 1 2 .2 6 Á rb o l d e e xp resio n es
El grado de un vértice es el número de líneas incidentes a él. El grado de salida de un vér
tice en un dígrafo es el número de arcos que salen del vértice; el grado de entrada es el nú
mero de arcos que entran al vértice.
12.7 GRAFOS
OPERACIONES En esta sección, definimos seis operaciones primitivas con grafos que proporcionan los mó
Un grafo también puede clasificarse como un tipo de datos abstracto. Los grafos se pueden CON G R A E O S dulos básicos necesarios para mantener un grafo: añadir un vértice, quitar un vértice, añadir
usar para resolver problemas de enrutamiento complejos, tales como el diseño y la elección una arista, quitar una arista, encontrar un vértice y recorrer un grafo. Como verá, hay dos mé
de rutas de las aerolíneas entre los aeropuertos en que operan. De manera similar, pueden uti todos para el recorrido de grafos.
lizarse para enrutar mensajes en una red de computadoras de un nodo a otro.
Añadir un vértice La adición de un vértice inserta un nuevo vértice en un grafo. Cuando un vértice se añade, es
T E R M IN O L O G ÍA Un grafo es una colección de nodos, llamados vértices (vertex), y una colección de segmen tá inconexo; es decir, no está conectado a ningún otro vértice en la lista. Obviamente la adi
tos de línea, llamados líneas, que conectan pares de vértices. Es decir, un grafo se compone ción de un vértice sólo es el primer paso en un proceso de inserción. Después de que se añade
de dos conjuntos: un conjunto de vértices y un conjunto de líneas. Los grafos pueden ser ya un vértice, éste debe conectarse. La figura 12.28 muestra un grafo antes y después de que se
sea dirigidos o no dirigidos. En un grafo dirigido, o dígrafo, para abreviar, cada línea tiene ha añadido un nuevo vértice.
una dirección (punta de flecha) a su sucesor. Las líneas en un grafo dirigido se conocen co
mo arcos. En este tipo de grafo el flujo a lo largo de los arcos entre dos vértices puede seguir
sólo la dirección indicada. En un grafo no dirigido ninguna de las líneas, las cuales se cono
cen como aristas, tiene dirección (punta de flecha). En un grafo no dirigido el flujo entre dos
vértices puede tomar cualquier dirección. La figura 12.27 contiene un ejemplo de ambos ti
pos, un grafo dirigido (a) y un grafo no dirigido (b).
Se dice que dos vértices en un grafo son vértices adyacentes (o vecinos) si una línea los
conecta directamente. En la figura 12.27, A y B son adyacentes mientras que D y F no lo son.
Un camino es una secuencia de vértices en la cual cada vértice es adyacente al siguiente.
En la figura 12.27, {A, B, C, E ) es un camino y (A, B, E, F} es otro. Observe que tanto los
F ig u r a 1 2 .2 8 A d ició n d e un vértice
grafos dirigidos como los no dirigidos tienen caminos. En un grafo no dirigido, usted podría
viajar en cualquier dirección. La eliminación de un vértice quita el vértice del grafo. Cuando se quita un vértice, todas las
Un ciclo es un camino que consiste en al menos tres vértices e inicia y termina con el mis Quitar un vértice
aristas que conecta también se eliminan. La figura 12.29 contiene un ejemplo de eliminación
mo vértice. En la figura 12.27(b), B, C, D, E, B es un ciclo. Sin embargo, advierta que los
de un vértice.
mismos vértices en la figura 12.27(a) no constituyen un ciclo porque en un dígrafo un cami
no sólo puede seguir la dirección del arco, mientras que en un grafo no dirigido un camino
puede moverse en cualquier dirección a lo largo de la arista. Un bucle es un caso especial de
ciclo en el cual un solo arco comienza y termina en el mismo vértice.
Se dice que dos vértices están conectados si hay un camino entre ellos. Se dice que un gtB-
fo está conectado si, al suprimir la dirección, hay un camino desde cualquier vértice a cual
quier otro vértice. Además, un grafo dirigido está fuertemente conectado si hay un camm°
desde cada vértice a cada uno de los otros vértices en el digrafo. Un grafo dirigido está dé
bilmente conectado si al menos dos vértices no están conectados. (Un grafo no dirigido co
nectado siempre está fuertemente conectado, así que el concepto normalmente no se usa con
los grafos no dirigidos.) Un grafo inconexo no está conectado. F ig u r a 1 2 .2 9 E lim in a ció n d e un v é rtic e
T ip o s d e d a to s a b s tra c to s 12 .7 G ra fo s ||||||
A ñ a d ir una arista La adición de una arista conecta un vértice con un vértice de destino. Si un vértice requie Recorrido primero en profundidad En el recorrido primero en profundidad, usted
múltiples aristas, entonces el módulo de añadir una arista debe llamarse una vez para cat procesa los descendientes de un vértice antes de pasar a un vértice adyacente. Este concepto
vértice adyacente. Para añadir una arista, deben especificarse dos vértices. Si el grafo es i se explica más fácilmente cuando el grafo es un árbol. En la figura 12.33 mostramos un re
dígrafo, uno de los vértices debe especificarse como la fuente y otro como el destino. La i corrido de pre orden, uno de los recorridos primero en profundidad estándar.
gura 12.30 contiene un ejemplo de adición de la arista {A, E} a un grafo. El recorrido primero en profundidad de un grafo comienza con el procesamiento del primer
vértice del grafo. Después de procesar el primer vértice, se selecciona un vértice adyacente a
éste y se procesa. Conforme se procesa cada vértice, se selecciona un vértice adyacente hasta
que se llega a un vértice sin entradas adyacentes. Esto es similar a llegar a una hoja de un ár
bol. Luego usted retrocede sobre sus pasos por la estructura, procesando los vértices adyacen
tes mientras avanza. Es evidente que esta lógica requiere una pila (o recursion) para completar
el recorrido.
Q u ita r u n a arista La eliminación de una arista quita la arista del grafo. La figura 12.31 contiene un ejemplo <
la eliminación de la arista {A, E} de un grafo.
R ecorrer un g ra fo Siempre hay cuando menos una aplicación que requiere que todos los vértices en un grafo El recorrido primero en anchura de un grafo sigue el mismo concepto. Comience seleccio
sean visitados; es decir, al menos una aplicación requiere que sea recorrido el grafo. Debido nando un vértice inicial; después procéselo y procese todos sus vértices adyacentes. Una vez
a que un vértice en un grafo puede tener múltiples padres, el recorrido de un grafo presenta que haya procesado todos los vértices adyacentes del primer vértice, seleccione el primer vér
algunos problemas que no se presentan en el recorrido de listas lineales y árboles. Específi tice adyacente y procese todos sus vértices; luego seleccione el segundo vértice adyacente y
camente, usted debe asegurarse de alguna manera de que procesa los datos en cada vértice só procese todos sus vértices, y así sucesivamente hasta que haya terminado con todos.
lo una vez. Sin embargo, debido a que hay varios caminos a un vértice, se puede llegar al
mismo desde más de una dirección a medida que se recorre el grafo. La solución tradicional Para representar un grafo, se necesitan dos conjuntos de datos. El primer conjunto represen
IMPLEMENTACIÓN
a este problema es incluir una bandera de visitado a cada vértice. Antes de hacer el recorrido, ta los vértices del grafo y el segundo, las aristas o arcos. Las dos estructuras más comunes uti
DE UN GRAFO
debe desactivarse la bandera de visitado en cada vértice. Luego, a medida que se recorre el lizadas para almacenar estos conjuntos son el arreglo (matriz de adyacencia) y la lista ligada
grafo, la bandera de visitado se activa para indicar que los datos se han procesado. (lista de adyacencia). La figura 12.35 muestra estas dos implementaciones para un grafo
Los dos recorridos de grafos estándar son primero en profundidad y primero en anchura' simple. Los números entre los vértices son pesos (por ejemplo, la distancias entre redes en
Ambos utilizan la bandera de visitado. una red interconectada).
248 T ip o s d e d a to s a b s tra c to s 12 .9 R e su m e n U Q ||
Redes Una red es un grafo con líneas pesadas. También se le conoce como grafo con peso. El sig
nificado de los pesos depende de la aplicación. Por ejemplo, una aerolínea podría utilizar un
grafo para representar las rutas entre las ciudades en las que da servicio. En este ejemplo los 12.9 RESUMEN
vértices representan las ciudades, y la arista es un camino entre dos ciudades. El peso de las
aristas podría representar las millas de vuelo entre las dos ciudades o el precio del vuelo. Una 8 En una lista lineal cada elemento tiene un sucesor único. ■ Una pila es una lista lineal en la cual las adiciones y eli
red para una aerolínea hipotética pequeña se exhibe en la figura 12.35. En este caso, los pe ¡8 Las listas lineales pueden dividirse en dos categorías: minaciones están restringidas a un extremo llamado ci
sos representan el millaje entre las ciudades. general y restringida. ma. Una pila también se conoce como lista LIFO.
Debido a que el peso es un atributo de una arista, se almacena en la estructura que contie ■ Definimos dos operaciones para una pila: insertar (push)
•8 En una lista general, los datos puede insertarse y elimi
ne la arista. En una matriz de adyacencia, el peso se almacenaría como el valor de intersec y extraer (pop).
narse en cualquier parte, y no hay restricciones a las
ción. En una lista de adyacencia, éste se almacenaría como el valor en la lista ligada de
operaciones que pueden usarse para procesar la lista. ■ La inserción añade un elemento a la parte superior de la
adyacencia.
8 En una lista restringida, los datos pueden añadirse o eli pila. Después de la inserción, el nuevo elemento se vuel
minarse en los extremos de la estructura, y el procesa ve la cima.
Á rb o l de e x p a n s ió n Podemos derivar uno o más árboles de expansión desde una red conectada. Un árbol de ex
miento está restringido a las operaciones aplicadas a los ■ La extracción elimina el elemento en la parte superior de
m ín im a pansión (spanning tree) es un árbol que contiene todos los vértices del grafo. Un árbol de
expansión mínima es un árbol de expansión tal que la suma de sus pesos es el mínimo. Hay :. datos en los extremos de la lista. la pila. Después de la extracción, el elemento que le si
muchas aplicaciones para los árboles de expansión minima, todas con los requisitos para mi 8 Dos estructuras de lista restringidas comunes son pilas gue, si hay alguno, se convierte en la cima.
nimizar algún aspecto del grafo, como la distancia entre todos los vértices del grafo. Por (listas último en entrar, primero en salir [FIFO]) y las ■ En este capítulo se analizaron cuatro aplicaciones de pi
ejemplo, dada una red de computadoras, usted podría crear un árbol que conecte todas las colas de espera (listas primero en entrar, primero en sa las: inversión de datos, análisis sintáctico de datos, pos
computadoras. El árbol de expansión mínima le da la menor longitud de cable que puede em lir [FIFO]). tergación del uso de los datos y retroceso sobre los pasos.
plearse para conectar todas las computadoras en tanto que asegura que haya un camino entre 8 Cuatro operaciones comunes están asociadas con listas li ■ Una cola de espera es una lista lineal en la cual los da
dos computadoras cualesquiera. neales: inserción, eliminación, recuperación y recorrido. tos sólo pueden insertarse en un extremo, llamado parte
511 T ip o s d e d a to s a b s tra c to s 1 2 .1 0 P rá c tic a
trasera, y eliminarse en el otro extremo, la parte frontal. a. En el recorrido en pre orden, primero se procesa I¡ jj¿: Para representar un grafo en una computadora, se nece- En el método de matriz de adyacencia, se usa un arreglo
Una cola de espera es una estructura primero en entrar, raíz, seguida por el subárbol izquierdo y luego el su. Ü¿;;.sita almacenar dos conjuntos de información: El primer para almacenar los vértices y una matriz para almacenar
primero en salir (FIFO). bárbol derecho. conjunto representa los vértices y el segundo representa las aristas.
En este capítulo analizamos dos operaciones de cola de b. En el recorrido en orden, primero se procesa el su 1 las aristas. En el método de lista de adyacencia, se utiliza una lista
espera: la inserción («enqueuing ) y la eliminación (de bárbol izquierdo, luego la raíz y por último el subár ligada para almacenar los vértices y una matriz para al
queuing) de un elemento. bol derecho. H Los métodos más comunes utilizados para almacenar un macenar las aristas.
c. En el recorrido en post orden, primero se procesa e1 1? grafo son el método de matriz de adyacencia y el méto- Definimos dos aplicaciones para un grafo en este capítu
Una cola de espera puede usarse para clasificar los datos.
subárbol izquierdo, luego el derecho y al último 1?' f. do de lista de adyacencia. lo: una red y un árbol de expansión mínima.
Un árbol consiste en un conjunto finito de elementos lla raíz.
mados nodos y un conjunto finito de líneas dirigidas lla
madas ramas que conectan los nodos. El número de ■ En el método primero en anchura, usted procesa todo:
los nodos en un nivel antes de continuar con el nivel si
ramas asociadas con un nodo es el grado del nodo. Cuan
guiente.
12.10 PRÁCTICA
do la rama se dirige hacia el nodo, es una rama de grado
de entrada; cuando se dirige hacia afuera del nodo, es una ■ Definimos una aplicación para un árbol binario en este
P R EG U N T A S DE REPASO 17. U n(a)________ podría ser un TDA.
rama de grado de salida. La suma de las ramas de grado capítulo: árbol de expresión. a. matriz
de entrada y de grado de salida es el grado del nodo. |1 . ¿Qué es un tipo de datos abstracto?
■ Un grafo es una colección de nodos llamados vértices, y b. lista ligada
Si el árbol no está vacío, el primer nodo se llama raíz, la una colección de segmentos de línea que conectan pare:, 2. En un TDA, ¿qué se conoce y qué está oculto? c. árbol
cual tiene un grado de entrada de cero. Todos los nodos de nodos llamados aristas o arcos. f3. ¿Qué es una lista lineal? d. todas las anteriores
en el árbol, excepto la raíz, deben tener un grado de en
■ Los grafos pueden ser dirigidos o no dirigidos. En ur | 4. ¿Cuál es la diferencia entre una lista general y una lista 18. En un TD A ,________ -
trada de uno.
grafo dirigido o dígrafo cada línea tiene una dirección |/ restringida? a. los datos se declaran
Una hoja es un nodo con un grado de salida de cero. En un grafo no dirigido no hay dirección en las líneas. b. las operaciones se declaran
¡5.: ¿Cuáles son dos implementaciones comunes de una lis-
Un nodo interno no es ni raíz ni hoja. Una línea en un grafo dirigido se llama arco. Una línea ta general? c. los datos y las operaciones están encapsulados
Un nodo puede ser padre, hijo o ambos. Dos o más no en un grafo no dirigido se llama arista. d. todas las anteriores
16. ¿Qué ventaja tiene la implementación de una lista liga-
dos con el mismo padre se llaman hermanos. ■ En un grafo se dice que dos vértices son adyacentes si da de una lista lineal general sobre la implementación 19. U n (a)________ es una lista en la cual cada elemento
Un camino es una secuencia de nodos en la cual cada una arista los conecta directamente. f con un arreglo de una lista lineal general? tiene un sucesor único.
nodo es adyacente al siguiente. a. matriz
I Un camino es una secuencia de vértices en la cual cada: |;7. ¿Cuál es la diferencia entre la operación de insertar y la
b. red
Un antecesor es cualquier nodo en el camino desde la vértice es adyacente al siguiente. § -: operación de extraer?
c. lista lineal
raíz hasta un nodo dado. Un descendiente es cualquier
§ Un ciclo es un camino de al menos tres vértices que ini 8. ¿Cuáles son tres operaciones de pila comunes? d. lista ligada
nodo en todos los caminos de un nodo dado a una hoja.
cia y termina con el mismo vértice. 9. Describa las operaciones de inserción (enqueuing ) y eli-
El nivel de un nodo es su distancia desde la raíz. 20. Una lista FIFO es una lista lineal________ .
■ Un bucle es un caso especial de ciclo en el cual un sole . minación (dequeuing). a. general
La altura de un árbol es el nivel de la hoja en el camino arco comienza y termina con el mismo nodo. fO. ¿Qué significa que un árbol binario esté equilibrado? b. restringida
más largo desde la raíz más 1; la altura de un árbol va
■ Se dice que un grafo está conectado si, para dos vértices c. sin ordenar
cío es —1. 11. ¿Cuál es la diferencia entre un recorrido primero en pro-
cualesquiera, hay un camino del uno al otro. Un grafo es d. a o b
Un subárbol es cualquier estructura conectada debajo de fundidad y un recorrido primero en anchura de un árbol
inconexo si no está conectado. í-; binario? 21. Una lista lineal_________puede ser ordenada o sin or
la raíz.
■ El grado de un vértice es el número de vértices adyacen denar.
Un árbol puede definirse de manera recursiva como un 12. ¿Cuál es la relación entre un camino y un ciclo?
tes al mismo. El grado de salida de un vértice es el nú a. general
conjunto de nodos que ya sea (1) está vacío o (2) tiene 13. ¿Cuál es la diferencia entre un recorrido primero en b. restringida
mero de arcos que salen del nodo, mientras que el grado
un nodo designado llamado raíz desde el cual descien profundidad y un recorrido primero en amplitud de un c. FIFO
de entrada es el número de arcos que entran al nodo. .
den jerárquicamente cero o más subárboles, los cuales grafo? d. LIFO
también son árboles. ■ Se definieron seis operaciones para un grafo: añadir un
,14. ¿Cuál es la principal limitación de usar un arreglo para 22. Una lista también se conoce como cola de es
En un árbol binario, ningún nodo puede tener más de vértice, quitar un vértice, añadir una arista, quitar una : implementar un grafo? ¿Por qué esto representa un pro
arista, encontrar un vértice y recorrer un grafo. pera.
dos hijos. blema? a. LIFO
Un recorrido de árbol binario visita cada nodo del árbol ■ Hay dos recorridos de grafos estándar: primero en pr°‘ 15. ¿Cuál es la diferencia entre un grafo y una red? b. FIFO
una y sólo una vez en una secuencia predeterminada. fundidad y primero en amplitud. c. sin ordenar
Los dos métodos del recorrido de árbol binario son pri ■ En el recorrido primero en profundidad, todos los des PREGUNTAS DE O PCIÓ N M Ú LTIPLE d. ordenada
mero en profundidad y primero en anchura. cendientes de un nodo se procesan antes de moverse a 23. Una lista ________ también se conoce como pila.
16. En un tipo de datos abstracto,_________.
Utilizando el método de primero en profundidad, usted un nodo adyacente. a. se conoce la implementación de TDA a. LIFO
recorre un árbol binario en seis secuencias diferentes; ■ En el recorrido primero en amplitud todos los vértices b. la implementación de TDA está oculta b. FIFO
sin embargo, sólo tres de estas secuencias reciben nom adyacentes se procesan antes de procesar a los descen c. las funciones de TDA están ocultas c. sin ordenar
bres estándar: pre orden, en orden y post orden. dientes de un vértice. d. ninguna de las anteriores d. ordenada
252 T ip o s d e d a to s a b s tra c to s 1 2.10 P rá c tic a
24. Cuando no hay suficiente espacio para inserción, una 32. Cuando los datos se dividen en piezas independientes 4U. Si hay 22 nodos a almacenar en un árbol binario, la al En un recorrido. el subárbol izquierdo se pro-
lista ordenada está en un estado________ . para su procesamiento posterior, a esto se le llama tura máxima del árbol e s ________ . cesa al final.
a. de desbordamiento a. mayor que 22 a. en pre orden
b. de sobre desbordamiento a. inversión de los datos b. menor que 22 b. en orden
c. lento b. postergación de los datos c. igual que 22 c. en post orden
d. restringido c. análisis sintáctico de los datos d. ninguna de las anteriores d. ninguno de los anteriores
d. retroceso de los datos En un recorrido en orden, la raíz se procesa.
25. Cuando una lista ordenada está en un estado________ , 41. Si hay 16 nodos a almacenar en un árbol binario, la al a. primero
la lista está vacía. 33. En una cola de espera, los datos se insertan sólo en tura mínima del árbol e s ________ . b. en segundo lugar
a. de desbordamiento _________y se eliminan sólo e n ________ . a. 16 c. al último
b. de sobre desbordamiento a. la parte trasera; la parte frontal o la parte trasera b. 5 d. a o b
c. lento b. la parte frontal; la parte trasera c. 4 50. En un recorrido primero en anchura de un árbol binario
d. restringido c. la parte trasera; la parte frontal d. 1 con tres niveles (0, 1 y 2), ¿cuál nivel se procesa al últi
d. la parte trasera o la parte frontal; la parte frontal mo?
26. En l a ________ de listas para una lista ordenada, los da 42. Un árbol binario tiene una altura de 5. ¿Cuál es el núme
tos en la lista y el número de elementos de la lista per 34. El grado de entrada d e de un árbol siempre es ro mínimo de nodos? a. 0
manecen sin cambio. cero. a. 31 b. 1
a. inserción a. cualquier nodo c. 2
b. 15
b. eliminación b. una rama d. ninguno de los anteriores
c. 5
c. recuperación c. la raíz 51. U n(a)________ es una línea entre dos vértices en un di-
d. 1
d. todos los anteriores d. una hoja grafo.
42. Un árbol binario tiene una altura de 5. ¿Cuál es el núme a. nodo
27. En la(el)________ de listas para una lista ordenada, ca 35. Si un nodo interno tiene cuatro ramas de grado de sali ro máximo de nodos? b. arco
da elemento de la lista se procesa en forma secuencial. da, su grado e s ________ . a. 31 c. arista
a. inserción a. 9 b. 15 d. camino
b. eli m in ació n b. 1 Una arista es _ . entre dos vértices en un grafo no
c. 5
c. recuperación c. 4 dirigido.
d. 1
d. recorrido d. 5 a. un nodo
44. En un recorrido en pre orden, se procesa pn- b. un arco
28. Si A es el primer elemento de datos que se introduce en 36. Un nodo de un árbol tiene un grado de 3. Esto significa
mero. c. una línea
una pila seguido por B, C y D , ________ es el primer que su grado de salida e s ________ .
a. el subárbol izquierdo d. un camino
elemento a ser eliminado. a. 0
b. el subárbol derecho 53. Si C y D son dos vértices adyacentes en un grafo no di
a. A b. 2
c. la raíz rigido, entonces________ .
b. B c. 4
d. a o b a. hay dos caminos
c. C d. ninguno de los anteriores
d. D 45. En un recorrido . _, el subárbol derecho se pro- b. sólo hay un camino {C, D}
37. U n (a)_________es una secuencia de nodos en la cual c. sólo hay un camino {D, C}
cesa al final.
29. Si A es el primer elemento de datos que se introduce en cada nodo es adyacente al siguiente. d. no hay caminos
a. en pre orden
una cola de espera seguido por B, C y D , es el a. hoja 54. Un vértice en un dígrafo tiene cuatro arcos que entran y
b. en orden
primer elemento a ser eliminado. b. raíz tres arcos que salen. El grado de salida del vértice es
C. en post orden
a. A c. descendente
d. a o b
b. B d. camino a. 4
c. C 16. En un recorrido en post orden, la raíz se procesa b. 3
38. Si la altura de un árbol es 10, el nivel más alto del árbol
d. D c. 2
e s ________ .
a. primero d. 1
30. La operación de extraer________ de la pila. a. 10
b. en segundo lugar
a. elimina un elemento de la parte superior b. 9
c. al final EJERCICIO S
b. elimina un elemento de la parte inferior c. 5
d. aob 55. Muestre el contenido de la pila si después de las opera
c. añade un elemento a la parte superior d. 1
ciones siguientes:
d. añade un elemento a la parte inferior 17. En un recorrido en post orden, el subárbol izquierdo se
39. En un árbol binario, cada nodo tie n e __________ dos push {si, 5)
31. La operación de insertar________de la pila. subárboles. procesa________ . -pusfr (si, 3)
a. elimina un elemento de la parte superior a. más de a. primero push (si, 2 )
b. elimina un elemento de la parte inferior b. menos de b. en segundo lugar pop (si).
c. al final pop {si)
push .(si/ 6 )
c. añade un elemento a la parte superior c. cuando mucho
d. añade un elemento a la parte inferior d. cuando menos d. a o b
i Í.I
12.10 P rá c tic a
T ip o s d e d a to s a b s tra c to s
56. Utilice un ciclo whi 1 e para vaciar el contenido de la pi 69. Un árbol binario tiene 10 nodos. El recorrido en orden Haga una representación de la lista de adyacencia del
la s2. pre orden del árbol se muestra enseguida. Dibuje el árt grafo de la figura 12.37.
57. Utilice un ciclo while para mover el contenido de la pi 77. Trace el grafo para la representación de la matriz de ad
En pre orden: JCBADEFIGH
la s i a s2. Después de la operación la pila s i debe estar yacencia de la figura 12.38.
vacía. En orden: ABCEDFJGIH
El código siguiente muestra cómo tener acceso a todos los registros en un archivo se proceso La figura 13.3 es una representación gráfica de la actualización de un archivo secuencial. En
cuencial. esta figura, aparecen los cuatro archivos que se han analizado. Aunque utilizamos el símbolo
de cinta para los archivos, podríamos haberlos representado con la misma facilidad median
te el símbolo de disco. Observe que después de que se completa el programa de actualización,
while Not EOF
el nuevo archivo maestro se envía a almacenamiento fuera de línea donde se guarda hasta que
{
se le necesita de nuevo. Cuando el archivo va a actualizarse, el archivo maestro se recupera
Lee el registro siguiente
del almacenamiento fuera de línea y se vuelve el archivo maestro viejo.
Procesa el registro
}
A C T U A L I Z A C IÓ N Los archivos secuenciales deben actualizarse en forma periódica para reflejar cambios en la Para hacer el proceso de actualización eficiente, todos los archivos se almacenan en la mis
DE A R C H IV O S información. El proceso de actualización es muy problemático debido a que todos los regis ma llave. El proceso de actualización requiere que usted compare las llaves de los archivos
tros necesitan revisarse y actualizarse (de ser necesario) en forma secuencial. maestro y de transacción y, suponiendo que no hay errores, realice una de las tres acciones si
S E C U E N C IA L E S
guientes:
A rchivos Hay cuatro archivos asociados con un programa de actualización: el archivo maestro nuevo, 1. Si la llave del archivo de transacción es menor que la llave del archivo maestro, añada
involucrados en el archivo maestro viejo, el archivo de transacción y el archivo de informe de errores. la transacción al archivo maestro nuevo.
la actualización ■ Archivo maestro nuevo. Primero está el nuevo archivo de datos permanente o, como 2. Si la llave del archivo de transacción es igual a la llave del archivo maestro, opte por
se le conoce comúnmente, el archivo maestro nuevo, el cual contiene los datos más una de estas dos opciones:
actuales. a. Cambie el contenido de los datos del archivo maestro si la transacción es una revi
§ Archivo maestro viejo. El archivo maestro viejo es el archivo permanente que debe ac sión (R).
tualizarse. Aun después de la actualización, el archivo maestro viejo debe mantenerse pa b. Borre los datos del archivo maestro si la transacción es una eliminación (D).
ra referencia. 3. Si la llave del archivo de transacción es mayor que la llave del archivo maestro, escri
ba el registro del archivo maestro viejo en el archivo maestro nuevo. En este caso, el
■ Archivo de transacción. El tercer archivo es el archivo de transacción, el cual contiene
código de transacción debe ser la adición (A) o hay un error.
los cambios a aplicar en el archivo maestro. Hay tres tipos básicos de cambios en todas las
actualizaciones de archivos. La adición de transacciones contiene los datos de un nuevo Este proceso de actualización se exhibe en la figura 13.4. En el archivo de transacción los
registro a añadir en el archivo maestro. La eliminación de transacciones identifica regis códigos de transacción son A para la adición, D para la eliminación y R para revisión. El pro
tros a eliminar del archivo. Y el cambio de transacciones contiene revisiones a registros ceso comienza con la comparación de las llaves para el primer registro de cada archivo.
específicos en el archivo. Para procesar cualquiera de estas transacciones, usted necesita
una llave. Una llave es uno o más campos que identifican de forma única los datos en el
archivo. Por ejemplo, en un archivo de estudiantes, la llave podría ser el ID (identificador)
de estudiante. En un archivo de empleados, la llave podría ser el número del seguro social.
133 ARCHIVOS INDEXADOS
■ Archivo de informe de errores. El cuarto archivo requerido en un programa de actua Para tener acceso aleatorio a un archivo en un registro, se necesita conocer la dirección del
lización es un archivo de informe de errores. Es muy raro que un proceso de actuali registro. Por ejemplo, suponga que una dienta quiere revisar su cuenta bancaria. Ni la dien
zación no produzca al menos un error. Cuando un error ocurre, se necesita informarlo al ta ni la cajera conocen la dirección del registro de la dienta. Esta sólo puede darle a la caje
usuario. El informe de error contiene un listado de todos los errores descubiertos duran ra su número de cuenta (llave). Aquí, un archivo indexado puede relacionar el número de
te el proceso de actualización y se presenta al usuario para que lo rectifique. cuenta (llave) con la dirección del registro (figura 13.5).
E stru ctu ra s d e a rc h iv o s 13 .4 A rc h iv o s H a sh e d
006 005
378845 007 006
379452 000 007 378845 John Carver
008
■ 0 'dj¡ ¡n |22 23 25 Mf 35
¡Él 305 160256 Tuang Ngo
306 045128 Shouli Feldman
Archivo maestro nuevo
¡
¿Ss'ik'v
ARCHIVOS HASHED
l.law Dirección
En un archivo indexado, el índice relaciona la llave con la dirección. Un archivo hashed uti
• .
liza una función para lograr esta relación. El usuario da la llave, la función relaciona la llave
• •
con la dirección y la pasa al sistema operativo y el registro se recupera (figura 13.7).
• •
1. Todo el archivo indexado se carga en la memoria principal (el archivo es pequeño y uti
liza poca memoria). El archivo hashed elimina la necesidad de un archivo (índice) extra. En un archivo inde
xado usted debe mantener este índice en el disco y cuando necesita procesar el archivo de da
2. Se buscan las entradas, utilizando un algoritmo de búsqueda eficiente tal como una bús
tos, primero debe cargar el índice en la memoria, buscarlo para encontrar la dirección del
queda binaria, para encontrar la llave deseada.
registro de datos y luego acceder al archivo de datos para tener acceso al registro. En un ar
3. La dirección del registro se recupera. chivo hashed la dirección se encuentra mediante el uso de una función. No hay necesidad de
4. Utilizando la dirección. El registro de datos se recupera y se pasa al usuario. un índice ni de toda la sobrecarga asociada con él. No obstante, verá que los archivos hashed
tienen sus propios problemas.
ARCHIVOS Una de las ventajas del archivo indexado es que usted puede tener más de un índice, cada uno
INVERTIDOS con una llave distinta. Por ejemplo, un archivo de empleados puede recuperarse con base ya
sea en el número del seguro social o en el apellido. Este tipo de archivo indexado por lo ge* m étodos Para la relación de llaves-direcciones, usted puede seleccionar uno de varios métodos de dis
neral se llama archivo invertido. persión, también llamado hashing. Analizaremos unos cuantos de ellos en esta sección.
de h a s h in g
262 E s tru c tu ra s d e a rc h iv o s 1 3 .4 A rc h iv o s H ased
M é to d o directo En el hashing directo, la llave es la dirección sin ninguna manipulación algorítmica. El ar
chivo debe, por tanto, contener un registro para cada llave posible. Aunque las situaciones pa n R e g is tr o
ra el hashing directo son limitadas, éste puede ser muy poderoso debido a que garantiza que
no haya sinónimos o colisiones (los sinónimos o colisiones se analizan posteriormente en es
.i. _
125870 H á r r y L ^ S f i
te capítulo) como sucede con otros métodos. 122801 S arah T tapp
Veamos un ejemplo trivial. Imagine que una organización tiene menos de 100 empleados. 121267 V a N g u y e n .
A cada empleado se asigna un número entre 1 y 100 (ID del empleado). En este caso, si us
ted crea un archivo de registros de 100 empleados, el número de empleado puede utilizarse
directamente como la dirección de un registro individual. Este concepto se muestra en la fi
gura 13.8. El registro con la llave 025 (Vu Nguyen...) se relacionó a la dirección (sector) 025.
123413 Jo h is M a r o s :
Observe que no todos los elementos en el archivo contienen un registro de empleado. Una
parte del espacio está desperdiciada.
F ig u r a 1 3 .9 M ó d u lo de división
125870 - 158
H ash
025- 0 2 5 . <)?5 VV. \;u iv eri 122801 -— > 128
SSSéédojiiK
121267 -— ^ 112
Figura 1 3 .8 H ashin g d irecto Otros m étodos Existen otros métodos populares, tales como el método de cuadrado medio, el método de do
blado, el método rotacional y el método pseudoaleatorio. Dejamos la exploración de los mis
Aun cuando éste es el método ideal, su aplicación está muy limitada. Por ejemplo, es muy mos como ejercicios.
ineficaz utilizar el número del seguro social como la llave porque éste tiene nueve dígitos. Así
que se necesitaría un archivo enorme con 999 999 999 registros, de los cuales se utilizarían COLISIÓN Generalmente, la población de Uaves para una lista hashed es mayor que el número de regis
menos de 100. Por lo tanto, volquemos nuestra atención en las técnicas de hashing que rela tros en el archivo de datos. Por ejemplo, si usted tiene un archivo de 50 estudiantes para una
cionan una población grande de llaves posibles con pequeños espacios de dirección. clase en la cual los estudiantes se identifican mediante los últimos cuatro dígitos de su núme
ro de seguridad social, entonces hay 200 llaves posibles para cada elemento en el archivo
(10 000 / 50). Debido a que hay muchas Haves para cada dirección en el archivo, existe la po
M é to d o d e m ó dulo También conocido como hashing de residuo de división, el método de módulo de división
sibilidad de que más de una Have se relacione a la misma dirección en el archivo. Llamamos
d e división divide la llave entre el tamaño de archivo y utiliza el residuo más 1 para la dirección. Esto da
al conjunto de llaves que se direccionan a la misma dirección en nuestra Hsta sinónimos. El
el simple algoritmo de dispersión siguiente, donde ta m a ñ o _ l i s t a es el número de elemen
concepto de cohsión se ejemplifica en la figura 13.10.
tos en el archivo.
En la figura, cuando usted calcula la dirección para dos registros diferentes, obtiene la mis
: - d i r e c c i ó n = l l a v e % ta r r ia ñ o _ lis ta + 1 ;. / " 7; ma dirección (4). Evidentemente, los dos registros no pueden almacenarse en la misma direc
ción. Usted necesita resolver la situación como se explica en la siguiente sección.
Aun cuando este algoritmo funciona con cualquier tamaño de lista, un número primo co
mo tamaño de üsta produce menos colisiones que otros tamaños en la lista. Por consiguien
te, siempre que es posible, trate de hacer que el tamaño de archivo sea un número primo. Registro Dirección
Conforme su pequeña compañía comience a crecer, se dará cuenta que pronto tendrá más
4 |
de 100 empleados. Al planear para el futuro usted crea un nuevo sistema de numeración de H ash I ’
122803 D u e L e e . . . i * 4 \
empleados que manejará un millón de empleados. También decide que quiere proporcionar
\ Coüsion
espacio de datos hasta para 300 empleados. El primer número primo mayor que 300 es 307. / (misma dirección)
Por lo tanto, usted elige 307 como su tamaño de lista (archivo). Su nueva lista de empleados HstaH . /
1 5 1 3 5 4 R ic h W h ite , . .
y algunas de sus direcciones relacionadas se muestran en la figura 13.9. En este caso, Vu Ngu
yen, con Have 121267, se relacionó a la dirección 003 porque 121267 % 307 = 2, y usted su
ma 1 al resultado para obtener la dirección (003). Figura 13.10 C o lisió n
E s tru c tu ra s d e a rc h iv o s 1 3.5 T e x to versus b in a rio
Si los datos reales que usted inserta en su lista contienen dos o más sinónimos, tendrá co
lisiones. Una colisión es el evento que ocurre cuando un algoritmo de hashing produce una
dirección para una llave de inserción y esa dirección ya está ocupada. La dirección produci
da por el algoritmo de hashing se conoce como dirección base. La parte del archivo que con
tiene todas las direcciones base se conoce como el área principal. Cuando dos llaves
colindan en una dirección base, usted debe resolver la colisión al colocar una de las llaves y
sus datos en otra localidad.
Resolución Con excepción del método directo, ninguno de los métodos que analizamos para hashing crea
de colisiones una relación uno a uno. Esto significa que cuando usted relaciona una llave nueva a una di
rección, puede crear una colisión. Existen varios métodos para manejar colisiones, cada uno
de ellos independiente del algoritmo de hashing. Es decir, cualquier método de hashing puede
utilizarse con cualquier método de resolución de colisiones. En esta sección analizamos al F ig u r a 1 3 ,1 3 R e s o lu c i ó n d e h a s h i n g d e c o n t e n e d o r
gunos de estos métodos.
Direccionamiento abierto El primer método de resolución de colisiones, la resolución de Hashing de contenedor Otro método para manejar el problema de la colisión es direc-
direccionamiento abierto, resuelve colisiones en el área principal. Cuando ocurre una coli cionar a contenedores (buckets). La figura 13.13 muestra cómo resolver la colisión en ia fi
sión, las direcciones del área principal se buscan para un registro abierto o desocupado donde gura 13.10 utilizando el hashing de contenedor. Un contenedor es un nodo que puede
pueden colocarse los nuevos datos. Una estrategia simple para los datos que no pueden alma acomodar más de un registro.
cenarse en la dirección base es almacenarlos en la siguiente dirección (dirección base + 1).
La figura 13.11 muestra cómo resolver la colisión de la figura 13.10 utilizando este método. Métodos de combinación Hay varios métodos para resolver colisiones. Como se vio con
El primer registro se almacena en la dirección 4 y el segundo se almacena en la dirección 5. los métodos de hashing, una implementación compleja a menudo utiliza múltiples métodos.
Dirección Registro
D irecciona i 4
122803 - iía s li F ig u r a 1 3 .1 4 I n t e r p r e t a c io n e s d e t e x t o y b i n a r i a d e u n a r c h i v o
|0fré^iórt=ít!láve3'feíÍi
151354 —
Un archivo de texto es un archivo de caracteres. No puede contener enteros, números de pun
a r c h iv o s
to flotante o cualesquier otras estructuras de datos en su formato de memoria interna. Para al
de te x to
macenar estos tipos de datos, deben convertirse a sus formatos equivalentes de caracteres.
Algunos archivos sólo pueden utilizar tipos de datos de caracteres. Los más notables son
cadenas de caracteres para teclados, monitores e impresoras. Ésta es la razón por la cual us
ted necesita funciones especiales para dar formato a los datos que entran a o salen de estos
F ig u r a 1 3 .1 2 R esolu ción d e listas lig ad as dispositivos.
E s tru c tu ra s d e a rc h iv o s 1 3 .8 P rá c tic a j| 2 | | j
Veamos un ejemplo. Cuando los datos (una cadena de caracteres) se envían a la impreso- fl En el hashing de extracción de dígitos, la dirección se ■ El método de resolución de lista ligada utiliza un área
ra, la impresora toma ocho bits, los interpreta como un byte y los decodifica en el sistema de compone de dígitos seleccionados desde la llave, separada para almacenar las colisiones y encadena a to
codificación de la impresora (ASCII o EBCDIC). Si el carácter pertenece a la categoría im fl Las llaves que se relacionan a la misma dirección se lla dos los sinónimos en una lista ligada.
primible, éste se imprimirá; de lo contrario, se realiza alguna otra actividad, por ejemplo la man sinónimos,
■ El hashing de contenedor es un método de resolución de
impresión de un espacio. La impresora toma los siguientes ocho bits y repite el proceso. Es g Una colisión es un evento que ocurre cuando un algorit colisiones que utiliza contenedores, nodos que acomo
to se realiza hasta que una cadena de caracteres se agota. mo de hashing produce una dirección para una inserción
dan múltiples ocurrencias de datos.
y esa dirección ya está ocupada.
A R C H IV O S Un archivo binario es una colección de datos almacenados en el formato interno de la com- B Los métodos de resolución de colisiones mueven los da 3 Un archivo de texto es un archivo de caracteres.
BINARIOS pilladora. En esta definición, los datos pueden ser un entero, un número de punto flotante, un tos direccionados que no pueden insertarse a una direc
carácter o cualquier otra información estructurada (excepto un archivo). B Un archivo binario son datos almacenados en el forma
ción nueva.
A diferencia de los archivos de texto, los archivos binarios contienen datos que son signi to interno de la computadora.
B El método de resolución de colisiones de direcciona
ficativos sólo si son interpretados adecuadamente por un programa. Si los datos son textua miento abierto busca en el área principal para una direc
les, 1 byte se utiliza para representar un carácter. Pero si los datos son numéricos, 2 o más ción abierta (libre) para que se inserten los datos.
bytes se consideran un elemento de datos. Por ejemplo, suponga que está utilizando una com
putadora personal que usa dos bytes para almacenar un entero. En este caso, cuando usted lee
o escribe un entero, dos bytes se interpretan como un entero.
13.8 PR Á C T IC A
PREGUNTAS DE REPASO PREGUNTAS DE OPCIÓN MÚLTIPLE
1 3 .6 TERM INO S LLAVE 18. Un archivo puede accederse en forma alea
1. ¿Qué es un archivo y cuál es su función?
2. ¿Cuáles son los dos tipos generales de métodos de acce toria.
acceso aleatorio archivo maestro viejo hashing de extracción de dígitos
so a archivos? a. secuencial
acceso secuencial archivo secuencial hashing de residuo (módulo)
3. ¿Por qué se necesita un marcador EOF cuando se proce b. indexado
área principal cinta de división
san los archivos secuencialmente? c. hashed
archivo colisión hashing directo
d. b y c
archivo binario contenedor índice 4. ¿Cuál es la relación entre el archivo maestro nuevo y el
archivo de datos disco llave archivo maestro viejo? 19. Un archivo__________ puede accederse en forma se
archivo de informe de errores dispositivo de almacenamiento lista ligada 5. ¿Cuál es el propósito del archivo de transición en la ac cuencial.
archivo de texto dispositivo de almacenamiento auxiliar método de acceso tualización de un archivo secuencial? a. secuencial
archivo de transacción dispositivo de almacenamiento resolución de colisiones 6. Dé un ejemplo propio de una situación en la cual un ar b. indexado
archivo hashed secundario resolución de lista ligada chivo debe accederse en forma aleatoria. c. hashed
archivo indexado dirección base resolución de direccionamiento abierto 7. Dé un ejemplo propio de una situación en la cual un ar d. b y c
archivo invertido división de módulo sinónimo chivo debe accederse en forma secuencial. 20. Cuando un archivo secuencia! se actualiza, el archivo
archivo maestro nuevo hashing de contenedor
;; 8. Describa la función de la dirección en un archivo al que _________ obtiene la actualización más reciente.
se accedió en forma aleatoria. a. maestro nuevo
9. ¿Cómo se relaciona el índice con el archivo de datos en b. maestro viejo
c. de transacción
1 3 .7 RESUMEN los archivos indexados?
d. de informe de errores
10. ¿Cuál es la relación entre la llave y la dirección en el
§ Un archivo es una colección de datos relacionados que hashing directo de un archivo? 21. Cuando un archivo secuencial se actualiza, el archivo
fl Para el acceso aleatorio de un registro, puede utilizarse
se tratan como una unidad. 11. ¿Cuál es la relación entre la llave y la dirección en el _________ contiene una lista de todos los errores que
un archivo indexado que consiste en un archivo de datos
y un índice. hashing de división de módulos de un archivo? ocurren durante el proceso de actualización.
■ Un registro en un archivo puede accederse en forma se
H En el acceso aleatorio a archivos, el índice relaciona una 12. ¿Cuál es la relación entre la llave y la dirección en el a. maestro nuevo
cuencial o aleatoria.
llave con una dirección, la cual se utiliza después para hashing de extracción de dígitos de un archivo? b. maestro viejo
M En el acceso secuencial, cada registro debe accederse en 13. ¿Qué es una colisión? c. de transacción
recuperar el registro del archivo de datos.
secuencia, uno después de otro, de principio a fin. d. de informe de errores
B Un archivo hashed es un archivo de acceso aleatorio en 14. Proporcione tres métodos de resolución de colisiones.
fl La actualización de un archivo secuencial requiere un el cual una función relaciona una llave con una dirección. 15. ¿Cómo funciona el método de resolución de colisiones 22. Cuando un archivo secuencial se actualiza, el archivo
archivo maestro nuevo, un archivo maestro viejo, un ar B En el hashing directo, la llave es la dirección y no se ne de direccionamiento abierto? _________ contiene los cambios a aplicar.
chivo de transacción y un archivo de informe de errores. 16. Comente las dos áreas de almacenamiento requeridas pa
cesita ninguna manipulación de algoritmos, a. maestro nuevo
B En el acceso aleatorio, un registro puede accederse sin fl En el hashing de módulo de división, la llave se divide ra el método de resolución de colisiones de lista ligada. b. maestro viejo
tener que recuperar ningún registro antes que él. La di entre el tamaño de archivo. La dirección es el residuo 17. ¿Cuál es la diferencia ante un archivo de texto y un archi c. de transacción
rección del registro debe conocerse. más 1. vo binario? d. de informe de errores
E stru c tu ra s d e a rch iv o s
Bases de datos nentes: hardware, software, datos, usuarios y procedimientos (figura 14.1).
F ig u r a 1 4 .1 C o m p o n e n te s D BM S
Hardware El hardware es el sistema de cómputo físico que permite acceso físico a los datos. Por ejem
plo, las terminales de usuario, el disco duro, la computadora principal y las estaciones de tra
bajo se consideran parte del hardware en un DBMS.
C om enzam os por definir un sistema de administración de bases de datos (DBSM) y anali
zar sus componentes. Luego presentamos los tres niveles de arquitectura para un DBMS. Nos El software es el programa que permite a los usuarios acceder, mantener y actualizar los da
concentramos en el modelo de bases de datos relaciónales con ejemplos de sus operaciones.
Software
tos físicos. Además, el software controla cuál usuario puede tener acceso a qué parte de los
Luego analizamos un lenguaje (el lenguaje de consultas estructurado o SQL) que opera en las datos en la base de datos.
bases de datos relaciónales. Finalmente, estudiamos brevemente otros modelos de bases de
datos.
Datos Los datos en una base de datos se almacenan físicamente en los dispositivos de almacena
Una base de datos es una colección de datos que de una manera lógica, pero no necesaria miento. En una base de datos los datos son una entidad separada del software que accede a
mente física, es coherente. Normalmente, debe haber algún significado inherente a los datos los mismos. Esta separación permite la organización para cambiar el software sin tener que
para justificar la creación de la base de datos. cambiar los datos físicos o la manera en que éstos se almacenan. Si una organización ha de
cidido utilizar un DBMS, entonces toda la información requerida por la organización debe
mantenerse bajo una entidad, para que sea accesible por el software en el DBMS.
Usuarios El término usuarios en un DBMS tiene un amplio significado. Podemos dividir a los usua
rios en dos categorías: usuarios finales y programas de aplicación.
Usuarios finales Los usuarios finales son aquellas personas que pueden acceder a la ba
se de datos directamente para obtener información. Hay dos tipos de usuarios finales: el ad
ministrador de bases de datos (DBA) y el usuario normal. El administrador de bases de datos
tiene el nivel máximo de privilegios. Puede controlar a ios otros usuarios y su acceso al
DBMS. Puede otorgar algunos de sus privilegios a alguien más pero conserva la capacidad
para revocarlas en cualquier momento. Un usuario normal, por otro lado, sólo puede utilizar
parte de la base de datos y tiene acceso limitado.
Programas de aplicación Los demás usuarios de los datos en una base de datos son los
programas de aplicación. Las aplicaciones necesitan tener acceso a los datos y procesarlos.
Por ejemplo, un programa de aplicación de nómina necesita tener acceso a parte de los datos
en una base de datos para crear cheques de pago a fin de mes.
Procedim ientos El último componente de un DBMS es una serie de procedimientos o reglas que deben defi
nirse claramente y que deben seguir los usuarios de la base de datos.
Bases d e d a to s 14.3 M o d e lo s d e bases d e d a to s
M O D ELO En un modelo jerárquico, los datos están organizados como un árbol invertido. Cada entidad
1ERÁROUICO tiene sólo un padre, pero puede tener varios hijos. En la parte superior de la jerarquía, el ár-
bol es una sola entidad, la cual se llama raíz. La figura 14.3 muestra una vista lógica del mo
delo jerárquico. Como el modelo jerárquico es obsoleto, no es necesario ningún análisis de
este modelo.
DEPARTAMENTO
F ig u r a 1 4 .3 M o d e lo je rárq u ico
F ig u r a 1 4 . 2 A r q u it e c t u r a d e b a s e s d e d a to s
M O D ELO DE RED En un modelo de red, las entidades se organizan en un grafo, donde se puede tener acceso a
algunas entidades a través de varios caminos (figura 14.4). No hay una jerarquía. Este mode
lo también es obsoleto y no necesita un análisis posterior.
N IV E L IN T E R N O El nivel interno determina dónde se almacenan realmente los datos en el dispositivo de al
macenamiento. Este nivel trata con métodos de acceso de bajo nivel y cómo se transfieren los
bytes hacia y desde el dispositivo de almacenamiento. En otras palabras, el nivel interno in-
teractúa directamente con el hardware.
N IV E L C O N C E P T U A L Eí nivel conceptual, o comunitario, define el punto de vista lógico de los datos. En este ni
vel se define el modelo de datos y ios diagramas de esquemas. Las funciones principales del
DBMS están en este nivel. El DBMS cambia la vista interna de los datos a la vista externa de
los mismos que el usuario necesita ver. El nivel conceptual es un intermediario y libera a los
usuarios del manejo del nivel interno.
N IV E L E X T E R N O E1 nivel externo interactúa directamente con el usuario (usuarios finales o programas de apli
cación). Cambia los datos que llegan del nivel conceptual a un formato y vista que son cono
cidos por el usuario. F ig u r a 1 4 .4 M o d e lo de red
Bases d e d a to s 14.5 O p e ra c io n e s c o n re la c io n e s
M O DELO En un modelo relacional, los datos se organizan en tablas bidimensionales llamadas relacio
R ELA CIO N A L nes. No hay una estructura jerárquica o de red impuesta en los datos. No obstante, las tablas Atributos
o relaciones están relacionadas entre sí, como se verá en breve (figura 14.5).
No."~ Nombre del curso Unidad
CIS 15Introducción a C 5
CIS 17Introducción a Java 5 Tupias
CIS 19UNIX 4
DEPARTAMENTO PROFESORES
CIS51 Conectividad en red 5
|N o ^ S f : V ip H ; NombRfS No.Dep. CURSOS
... f l ' •.;><!■' .' ágg?, rt)4y|
... i | : - :;|.f
::: ... • •< S'T F ig u r a 1 4 .6 Relación
■• • T¡§F*♦' * ** \T/; f;f
Cada columna en la tabla debe tener un nombre que sea único en el ámbito de la rela
CURSOS ción. El número total de atributos para una relación se conoce como el grado de la relación.
;■ NO. 'N(|;;^ p : ; Unidad ESTUDIANTES Por ejemplo, en la figura 14.6, la relación tiene un grado de 3. Observe que los nombres
ID de los atributos no se almacenan en la base de datos; el nivel conceptual utiliza los atri
4Nomfirt¡l 5: CurSÓS:
butos para dar significado a cada columna.
. . .
... ■ Tupias. Cada fila en una relación se conoce como tupia. Una tupia define una colección
de valores de atributos. El número total de filas en una relación se llama cardinalidad
.% ¡ lS : ::
de la relación. Observe que la cardinalidad de una relación cambia cuando se añaden o
eliminan tupias. Esto vuelve dinámica a la base de datos.
F ig u r a 1 4 .5 M o d elo relaciona!
INSERCIÓN La operación de inserción es una operación uñaría; se aplica a una sola relación. La opera
ción inserta una nueva tupia en la relación. La figura 14.7 muestra un ejemplo de la ope
1 4 .4 MODELO RELACIONAL ración de inserción. Un nuevo curso (CIS52) se ha insertado (agregado) a la relación.
Continuamos nuestro análisis de las bases de datos con el modelo más popular, el sistema de
bases de datos relaciónales (RDBMS: relational database management system). En este
modelo, los datos (universo del discurso) se representan mediante una serie de relaciones. CURSOS
No. N om bre del curso Unidad
No. Nom bre del curso Unidad
RELACIÓ N Una relación, en apariencia, es una tabla hidimensional. El RDBMS organiza los datos de ma CIS 15 Introducción a C 5
CIS 15 Introducción a C 5 Inserción Introducción a Java 5
nera que la vista externa sea una serie de relaciones o tablas. Esto no significa que los datos CIS 17
CIS 17 Introducción a Java 5 (Insert) UNIX 4
se almacenen como tablas; el almacenamiento físico de los datos es independiente de la for CIS 19
CIS 19 UNIX 4 Conectividad en red 5
ma en que éstos están lógicamente organizados. La figura 14.6 muestra un ejemplo de una re CIS51
CIS51 Conectividad en red 5 6
lación. CIS52 Protocolos TCP/IP
H Nombre. Cada relación en una base de datos relacional debe tener un nombre único en F ig u r a 1 4 .7 O p eració n d e Inserción
tre otras relaciones.
S Atributos. Cada columna en una relación se llama atributo. Los atributos son los enca ELIMINACIÓN La operación de eliminación también es una operación uñaría. La operación elimina una tu
bezados de las columnas en la tabla. Cada atributo da significado a los datos almacena pia definido por un criterio de la relación. La figura 14.8 muestra un ejemplo de la operación
dos bajo él. de eliminación. El curso C1S19 se eliminó.
Bases d e d a to s 14 .5 O p e ra c io n e s c o n re la cio n e s 277
PROYECCIÓN La operación de proyección también es una operación unaria; se aplica a una sola relación
CURSOS y crea otra relación. Los atributos (columnas) en la relación resultante son un subconjunto de
No. Nom bre del curso Unidad los atributos de la relación original. La operación de proyección crea una relación en la cual
No. Nom bre del curso Unidad cada tupia tiene menos atributos. El número de tupias (filas) en esta operación sigue siendo
CIS 15 Introducción a C 5
CIS 17 Introducción a Java 5 E lim in a d » CIS 15 Introducción a C 5 el mismo. La figura 14.11 muestra un ejemplo de la operación de proyección que crea una re
CIS 19 UNIX 4 (D elete) CIS 17 Introducción a Java 5 lación con sólo dos columnas.
CIS51 Conectividad en red 5 CIS51 Conectividad en red 5
CIS52 6 CIS52 Protocolos TCP/IP 6
Protocolos TCP/IP
CURSOS
Figura 14.8 O p era ció n de elim inación
No. Nom bre del curso Unidad No. Unidad
CIS15 Introducción a C 5 CIS 15 5
CIS 17 Introducción a Java 5 Proyección CIS 17 5
ACTUALIZACIÓN La operación de actualización también es una operación unaria; se aplica a una sola rela CIS 19 UNIX 4 (Project) CIS19 4
ción. La operación cambia el valor de algunos atributos de una tupia. La figura 14.9 muestra CIS51 Conectividad en red 5 CIS51 5
un ejemplo de la operación de actualización. El número de unidades para CIS51 se ba actua CIS52 Protocolos TCP/IP 6 CIS52 6
lizado (cambiado) de 5 a 6.
Figura 14.11 O p eració n de p ro yecció n
CURSOS JUNTURA La operación de ju n tu ra es una operación binaria; toma dos relaciones y las combina con
No. Nom bre del curso Unidad No. Nom bre del curso Unidad base en atributos comunes. Esta operación es muy compleja y tiene muchas variantes. En la
figura 14.12 aparece un ejemplo muy simple en el cual la relación de CURSOS se combina
CIS 15 Introducción a C 5 CIS 15 Introducción a C 5
A c tu a liz a c ió n | con la relación de IMPARTIDOS POR para crear una relación que muestra toda la informa
CIS17 Introducción a Java 5 CIS 17 Introducción a Java 5
UNIX 4 (U p d a te) UNIX 4
ción sobre los cursos, incluyendo los nombres de los profesores que los imparten. En este ca
CIS 19 CIS 19
CIS51 Conectividad en red 5 Conectividad en red ó
so, el atributo común es el número de curso (No.).
CIS51
CIS52 Protocolos TCP/IP 6 CIS52 Protocolos TCP/IP 6
CIS15 Introducción a C 5
SELECCIÓN La operación de selección es una operación unaria que se aplica a una sola relación y crea CIS 17 Introducción a Java 5
CIS 19 UNIX 4
otra relación. Las tupias (filas) de la relación resultante son un subconjunto de las tupias de
C1S51 Conectividad en red 5
la relación original. Esta operación utiliza algunos criterios para seleccionar algunas de las tu CIS52 Protocolos TC P/IP 6 No. N o m b re del cu rso Unidad P ro feso r
pias de la relación original. El número de atributos (columnas) en esta operación permanece Introducción a C
C IS 15 5 Lee
igual. La figura 14.10 muestra un ejemplo de la operación de selección. En esta figura, hay IMPARTIDO PO R Juntura Introducción a Java
C IS 17 5 Lu
(Join)
una relación que muestra los cursos ofrecidos por un pequeño departamento. La operación de No. Profesor C IS 19 UNIX 4 W alter
CIS51 Conectividad en red 5 Lu
selección permite al usuario seleccionar sólo los cursos de cinco unidades. CIS 15 Lee CIS52 Protocolos TCP/IP 6 Lee
CIS 17 Lu
CIS 19 Walter
CIS51 Lu
CIS52 Lee
CURSOS
No. Nom bre del curso Unidad Figura 14.12 O p eració n de ju n tu ra
CIS 15 Introducción a C 5 No. N om bre del curso Unidad
CIS 17 Introducción a Java 5 Selección CIS 15 Introducción a C 5
CIS19 UNIX 4 (Select) CIS 17 Introducción a Java 5
5
UNIÓN La operación de unión también es una operación binaria; toma dos relaciones y crea una
CIS51 Conectividad en red 5 CIS51 Conectividad en red
nueva relación. Sin embargo, hay una restricción en las dos relaciones; éstas deben tener los
CIS52 Protocolos TCP/IP 6
mismos atributos. La operación de unión, según se define en la teoría de conjuntos, crea una
nueva relación en la cual cada tupia está ya sea en la primera relación, en la segunda o en am
Figura 14.10 O p e ra c ió n d e selección bas. Por ejemplo, la figura 14.13 exhibe dos relaciones. En la esquina superior izquierda
O r g a n iz a c ió n d e d a to s 14.6 L e n g u a je d e c o n s u lta s e s tru c tu ra d o
está la lista de tumos para CIS15; en la esquina inferior izquierda está la lista para CIS52. El 14.6 LENGUAJE DE CONSULTAS ESTRUCTURADO
resultado es una relación con información sobre los estudiantes que toma ya sea CIS15,
CIS52 o ambos.
El lenguaje de consultas estructurado (SQL: structured query language ) es el lenguaje es
tandarizado por el Instituto Nacional Norteamericano de Estándares (ANSI) y la Organiza
ción Internacional para la Estandarización (ISO) para usar en las bases de datos relaciónales.
INTERSECCIÓN La operación de intersección también es una operación binaria; toma dos relaciones y crea Es un lenguaje declarativo (no de procedimientos), lo cual significa que los usuarios declaran
una nueva relación. Al igual que la operación de unión, las dos relaciones deben tener los mis lo que quieren sin tener que escribir un procedimiento paso a paso. El lenguaje SQL prime
mos atributos. La operación de intersección, como lo define la teoría de conjuntos, crea una ro se implemento por Oracle Corporation en 1979; desde entonces se han liberado nuevas ver
nueva relación en la cual cada tupia es un miembro de ambas relaciones. Por ejemplo, la fi siones de SQL.
gura 14.14 presenta dos relaciones de entrada. El resultado de la operación de intersección es En esta sección se definen algunas instrucciones comunes en el lenguaje SQL que se re
una relación con información sobre los estudiantes que toman tanto CIS 15 como CIS52. lacionan con las operaciones definidas en la sécción anterior. De ninguna manera es un tuto
rial para el lenguaje SQL. Para obtener más información, consulte libros sobre SQL.
INSTRUCCIONES Las instrucciones siguientes están relacionadas con las operaciones que definimos.
L ista de tum os de CIS15
Figura 14.14 O p era ció n d e in tersecció n Observe que los valores de cadena están entrecomillados; los valores numéricos no lo están.
La operación delete (e lim in ar) utiliza el siguiente formato. Los criterios para la eliminación
DIFERENCIA La operación de diferencia también es una operación binaria. Se aplica a dos relaciones con se definen en la cláusula where.
los mismos atributos. Las tupias en la relación resultante son aquellas que están en la prime
ra relación pero no en la segunda. Por ejemplo, la figura 14.15 muestra dos relaciones de en delete from NOMBRE-RELACION
trada. El resultado de la operación de diferencia es una relación con información sobre los where criterios
estudiantes que toman CIS15 pero no CIS52.
Bases d e d a to s 1 4 .6 L e n g u a je d e c o n s u lta s e s tru c tu ra d o 281
; Por ejemplo, la operación de eliminación en la figura 14.8 puede implementarse en SQL Por ejemplo, la operación de juntura en la figura 14.12 puede implementarse en SQL uti
i utilizando: lizando:
Select La operación select (seleccionar) utiliza el formato siguiente. El asterisco significa que todos
los atributos se eligen.
select *
from NOMBRE-RELACION
where criterios
Intersection La operación intersection (intersección) usa el formato siguiente. De nuevo, el asterisco sig
Por ejemplo, la operación de selección en la figura 14.10 puede implementarse en SQL nifica que se seleccionan todos los atributos.
usando:
Por ejemplo, la operación de diferencia de la figura 14.15 puede implementarse en SQL acceso a los mismos. El objeto departamento puede definir los atributos del departamento y
mediante: cómo puede accederse a ellos. Asimismo, la base de datos puede crear una relación entre un
objeto empleado y un objeto departamento (un empleado trabaja en un departamento).
'select' * ■.V;'v;- ’'lí
from Lis.ta-turnos-CISl5 "■ '; Ki
minus
s el e c t 1: .m ).,
from Lista-turnos-CIS52 ' vfj
14.8 TÉRMINOS CLAVE
C o m b in ació n El lenguaje SQL le permite combinar las instrucciones anteriores para extraer información
d e in s tru c c io n e s más compleja desde una base de datos. base de datos modelo de red operación update (actualizar)
base de datos distribuida duplicada modelo jerárquico procedimiento
base de datos distribuida fragmentada modelo relacional programa de aplicación
base de datos distribuida (replicada) nivel conceptual relación
14.7 OTROS M O D ELO S DE BASES DE DATOS base de datos orientada a objetos nivel extemo sistema de administración de bases
car(finalidad nivel interno de operación difference
La base de datos relacional es uno de los modelos más comunes de hoy en día. Los otros dos Comité de planeación y requisitos operación difference (diferencia) sistema de administración de bases
modelos comunes son las bases de datos distribuidas y las bases de datos orientadas a obje de estándares (SPARC) operación intersection (intersección) de datos relaciónales (RDBMS)
tos. Analizamos brevemente estos dos modelos en esta sección y dejamos una exploración datos (DBMS) operación join (juntura) software
más profunda para libros sobre bases de datos. hardware operación project (proyección) tupia
lenguaje de consultas estructurado operación select (seleccionar) usuario
BASES DE DATOS El modelo de bases de datos distribuidas en realidad no es un modelo nuevo. Está basado en (SQL) operación union (unión) usuario final
DISTRIBUIDAS el modelo relacional. Sin embargo, los datos se almacenan en varias computadoras que se co
munican a través de Internet (o alguna red privada de área amplia). Cada computadora (o si
tio, como se le llama) mantiene parte o toda la base de datos. En otras palabras, los datos están
ya sea fragmentados, con cada fragmento almacenado en un sitio, o duplicados en cada sitio.
En una base de datos distribuida fragmentada los datos se localizan. Los datos utilizados
14.9 RESUMEN
Bases d e datos
distribuidas localmente se almacenan en el sitio correspondiente. Sin embargo, esto no significa que un
■ Una base de datos es una colección de datos que de ma ■ El sistema de administración de .bases de datos relació
sitio no puede tener acceso a los datos almacenados en otro sitio. El acceso es principalmen
fra g m en ta d as nera lógica, pero no necesariamente física, es coherente. nales (RDBMS) es el único modelo de base de datos de
te local pero de vez en cuando es global. Aunque cada sitio tiene control completo sobre sus
amplio uso hoy en día. Los modelos jerárquico y de red
datos locales, hay un control global a través de Internet. Por ejemplo, una compañía farma B Un sistema de administración de bases de datos son obsoletos.
céutica puede tener múltiples sitios en muchos países. Cada sitio tiene una base de datos con (DBMS) define, crea y mantiene una base de datos y
información sobre sus propios empleados, pero un departamento central de personal tiene el permite el acceso controlado a los usuarios. B Una relación puede pensarse como una tabla bidimen-
control de todas las bases de datos. sional.
I Un DBMS se compone de hardware, software, datos,
usuarios y procedimientos. H Cada columna en una relación se llama atributo. El nú
Bases d e datos En una base de datos distribuida replicada, cada sitio mantiene una réplica exacta de otro mero de atributos en una relación es su grado.
sitio. Cualquier modificación en los datos almacenados en un sitio se replica exactamente en
distribuidas S Los usuarios de DBMS pueden ser personas o progra
cada sitio. La razón para tener una base de datos semejante es la seguridad. Si el sistema en ■ Cada fila en una relación se llama tupia. El número de
replicadas mas de aplicación.
filas en una relación es su cardinalidad.
un sitio falla, los usuarios en este sitio pueden tener acceso a los datos de otro sitio.
S Un DBMS tiene tres niveles: interno, conceptual y exter
■ Nueve operaciones pueden realizarse con las relaciones.
La base de datos relacional tiene una vista específica de datos que se basa en la naturaleza de no.
BASES D E D ATO S M Una operación que actúa sobre una relación es un ope
O R IEN TAD AS las bases de datos relaciónales (tupias y atributos). La unidad de datos más pequeña en una
H El nivel interno de un DBMS interactúa directamente rador unitario. Los operadores unitarios incluyen las
base de datos relacional es la intersección de una tupia y un atributo. Sin embrago, actualmen
A OBJETOS con el hardware y se ocupa de los métodos de acceso de operaciones de inserción, eliminación, actualización, se
te algunas .aplicaciones necesitan buscar datos en otra forma. A algunas aplicaciones les gus*
bajo nivel y la transferencia de bytes hacia y desde el lección y proyección.
ta ver los datos como una estructura (capítulo 11), por ejemplo un registro hecho de campoS'
dispositivo de almacenamiento.
Una base de datos orientada a objetos trata de mantener las ventajas del modelo relacio- ■ Una operación que actúa sobre dos relaciones es un ope
nal y al mismo tiempo permite que las aplicaciones accedan a los datos estructurados. En una ® El nivel conceptual de una DBMS define la vista lógica rador binario. Los operadores binarios incluyen las ope
base de datos orientada a objetos , se definen los objetos y sus relaciones. Además, cada ob de los datos así como el modelo de datos y los diagra raciones de juntura, unión, intersección y diferencia.
jeto puede tener atributos que pueden expresarse como campos. m as de esquema.
Por ejemplo, en una organización, uno puede definir tipos de objetos tales como emplea ■ El lenguaje de consultas estructurado (SQL) es el len
dos, departamentos y clientes. La clase empleados puede definir los atributos de un objeto 8 El nivel extemo de un DBMS interactúa directamente guaje estandarizado por el ANSI y la ISO para usarse en
empleado (nombre, apellido, número del seguro social, salario, etc.) y cómo se puede tenet con el usuario. las bases de datos relaciónales.
284 Bases d e d a to s 1 4 .1 0 P rá c tic a 285
27. En una arquitectura DBMS de tres niveles, el nivel 35. Si una relación tiene cinco filas, entonces s u ________
1 4.10 PR Á C T IC A ________ interactúa directamente con los usuarios. es cinco.
a. externo a. diferencia
PR EG U N T A S DE REPASO 20. Los componentes del DBMS tales como la computado b. conceptual b. cardinalidad
ra y los discos duros que permiten acceso físico a los da c. interno c . duplicidad
1. ¿Cuáles son los cinco componentes indispensables de un
tos se conocen com o________ . d. relatividad
DBMS? d. físico
a. hardware 36. Un operador unario se aplica a la(s) relación(es)______
2. Mencione los dos tipos de usuarios de un DBMS. b . software 28. De los diversos modelos de bases de datos, el modelo
y crea una salida d e _________relación(es).
3. ¿Cómo se relacionan los tres niveles de un DBMS en c. usuarios ________ es el que más prevalece hoy en día.
a. una; una
tre sí? d. programas de aplicación a. jerárquico b. una; dos
b. de red c . dos; una
4. ¿Cuáles son los tres modelos de bases de datos? ¿Cuáles 21. E l _________de un DBMS puede ser un administrador
c. relacional d. dos; dos
de ellos son populares en la actualidad? de bases de datos o una persona que necesita tener ac
ceso a la base de datos. d. de lista ligada 37. Un operador binario se aplica a la(s) relación(es)
5. ¿Qué es una relación en un RDBMS?
a. usuario final 29. El modelo de bases de d ato s__________ acomoda sus _________y crea una salida d e _________relación(es).
6. En una relación, ¿qué es un atributo? ¿Qué es una tupia? b . programa de aplicación datos en forma de un árbol invertido. a. una; una
7. ¿Cuál es la diferencia entre una operación unaria y una c. programador a. jerárquico b. una; dos
operación binaria? d. b y c b. de red c . dos; una
d. dos; dos
8. Mencione las operaciones unarias que se aplican a las 22. Tanto las personas com o________ pueden considerarse c. relacional
usuarios de una base de datos. d. de lista ligada 38. La operación unaria d e siempre da como re
relaciones en un RDBMS.
sultado una relación que tiene exactamente una fila más
9. Mencione las operaciones binarias que se aplican a las a. los datos 30. En el modelo de bases de datos________ , cada entidad que la relación original.
relaciones en un RDBMS. b. el software puede accederse a través de múltiples caminos. a. inserción
c. los programas de aplicación a. jerárquico
10. ¿Cuál es la diferencia entre las operaciones de inserción b. eliminación
d. el hardware
y eliminación? b. de red c. actualización
23. En una arquitectura DBMS de tres niveles, la capa que c. relacional d. selección
11. ¿Cuál es la diferencia entre las operaciones de actualiza interacíúa directamente con el hardware es el nivel d. de lista ligada 39. Sise quiere cambiar el valor de un atributo de una tupia,
ción y selección?
seutiliza la operación d e ________ .
31. La relación es un conjunto de datos organizado lógica
12. ¿Cuál es la función de la operación de proyección? a. externo a. proyección
mente como una tabla________ .
b . conceptual b. juntura
13. ¿Qué tiene en común la relación de salida de la opera a. unidimensional
ción de juntura con las relaciones de entrada? c. interno c. actualización
d. físico b. bidimensional d. selección
14. ¿Cuál es la diferencia entre la operación de unión y la c. tridimensional
operación de intersección? 24. En una arquitectura DBMS de tres niveles, el nivel 40. Si usted tiene tupias en una relación que contiene infor
d. de cualquier dimensión
_________ determina dónde se almacenan los datos en mación de los estudiantes y quiere sólo las tupias de las
15. ¿Cuál es la función de la operación de diferencia? realidad en el dispositivo de almacenamiento. 32. Cada columna en una relación se llam a________ . estudiantes mujeres, puede utilizar la operación de
16. ¿Qué es SQL? a. externo a. atributo
b . conceptual b. tupia a. proyección
17. En SQL, ¿cómo se sabe en cuáles relaciones están ac
c. interno b. juntura
tuando los operadores? c. unión
d. físico c . actualización
d. lista ligada d. selección
PREGUNTAS DE OPCIÓN MÚLTIPLE 25. El nivel________ de una arquitectura DBMS de tres ni
33. El grado de una relación es el número d e _________en 41. La operación que toma dos relaciones y las combina con
18. Un D B M S________ una base de datos. veles define la vista lógica de los datos.
la relación. base en atributos comunes es la operación d e ________ .
a. define a. externo a. atributos a. juntura
b. crea b . conceptual
b. tupias b. proyección
c. mantiene c. interno
c. uniones c . unión
d. todos los anteriores d. físico
d. posiciones d. intersección
19. El código DBMS que permite al usuario tener acceso, 26. El modelo de datos y el esquema de un DBMS a menu 42. Si se necesita eliminar un atributo en una relación, pue
mantener y actualizar e s ________ . do se definen en el nivel________ . 34. Cada fila en una relación se llam a________ .
de utilizarse la operación d e ________ .
a. el hardware a. externo a. atributo
a. juntura
b. los datos b . conceptual b. tupia b. proyección
c. el software c. interno c. unión c . unión
d. el usuario d. físico d. posición d. intersección
14.10 P rá c tic a
I J jllllljl Bases d e d a to s
43. Usted quiere crear una relación llamada Nueva que con 1,1. Las bases de datos relaciónales se basan entre entidades 64. Repita el ejercicio 62 para encontrar el tipo de relación
49. Usted tiene las relaciones A, B y C, como se exhibe en
tenga tupias pertenecientes tanto a la relación A como a en una organización. Encuentre las entidades en el dise (1:1, 1:M o M:N) entre departamento y profesor.
la figura 14.16. Muestre la relación resultante si se apli
la relación B. Para hacerlo, puede utilizar la operación can las siguientes instrucciones SQL. ño de la figura 14.5. Por ejemplo, el estudiante y el cur
65. Repita el ejercicio 62 para encontrar una relación uno a
d e ________ . so son dos de las entidades de este diseño.
select A3 uno entre dos entidades.
a. selección 62. Se dice que las relaciones entre entidades son 1:1 (uno a
from A 66. Diseñe una base de datos relacional para una biblioteca.
b. unión uno, 1:M (uno a muchos) y M:N (muchos a muchos).
c. proyección 50. Usted tiene las relaciones A, B y C, según aparece en la Utilizando el diseño de la figura 14.5, encuentre el tipo 67. Diseñe una base de datos relacional para una compañía
d. intersección figura 14.16. Muestre la relación resultante si se aplican de relación (1:1, 1:M o M:N) entre estudiante y curso.
de bienes raíces.
las siguientes instrucciones SQL. 63. Repita el ejercicio 62 para encontrar el tipo de relación
44. ¿Cuál de las siguientes opciones es un operador unario?
select B 1 (1:1, 1:M o M:N) entre estudiante y profesor.
a. intersección
b. unión from B
c. juntura where B2 = 216
d. proyección
51. Usted tiene las relaciones A, B y C, como se exhibe en
45. ¿Cuál de las siguientes opciones es un operador binario? la figura 14.16. Muestre la relación resultante si se apli
a. selección can las siguientes instrucciones SQL.
b. actualización update C
c. diferencia set C1 - 37
d. todas las anteriores
where C l = 3 1
46. es un lenguaje declarativo utilizado en las ba 52. Utilizando el diseño de la figura 14.5, muestre la instruc
ses de datos relaciónales.
ción SQL que crea una nueva relación que contiene só
a. PDQ
lo el número de curso y el número de unidades para cada
b. SQL
curso.
c. LES
d. PBJ 53. Utilizando el diseño de la figura 14.5, muestre la instruc
ción SQL que crea una nueva relación que contiene só
lo el ID de estudiante y el nombre de estudiante.
E JE R C IC IO S 54. Utilizando el diseño de la figura 14.5, muestre la instruc
47. Usted tiene las relaciones A, B y C, como se exhibe en ción SQL que crea una nueva relación que contiene só
la figura 14.16. Muestre la relación resultante si se apli lo el nombre de profesor.
can las siguientes instrucciones SQL. 55. Utilizando el diseño de la figura 14.5, muestre la instruc
select * ción SQL que crea una nueva relación que contiene só
from A lo el nombre de departamento.
Temas S '
avanzados
Compresión
debido a que, en estos métodos, los algoritmos de compresión y de descompresión son exac
tamente in/ersos uno de otro. Ninguna parte de los datos se pierde en el proceso. Los datos
redundantes se eliminan en la compresión y se añaden durante la descompresión.
Estos métodos por lo general se utilizan cuando uno no puede permitirse el lujo de per
de datos der un solo bit de datos. Por ejemplo, usted no quiere perder datos cuando comprime un ar
chivo de texto o un programa.
En esta sección estudiamos tres métodos de compresión sin pérdida: la codificación de
longitud de ejecución, la codificación de Huffman y el algoritmo de Lempel Ziv.
La compresión de datos puede reducir la cantidad de datos enviados o almacenados al elimi a. Datos originales
nar parcialmente la redundancia inherente. La redundancia se crea cuando producimos datos.
B09A16NO1MQ1
A través de la compresión de datos, hacemos la transmisión y el almacenaje más eficientes,
y al mismo tiempo conservamos la integridad de los datos (hasta cierto punto). b. Datos comprimidos
a. Datos originales
000000000000001000011000000000000
t ¿i. f
b. Datos comprimidos
F ig u r a 15.1 M é to d o s d e co m p re sió n d e datos
Figura 15.3 C o d ific a c ió n d e lo n g itu d d e eje cu ció n para dos sím b o lo s
C o m p re s ió n d e d a to s 15.1 C o m p re s ió n sin p é rd id a
Hemos representado los conteos como un número binario de cuatro bits (entero sin sig
no). En una situación real, usted encontraría un número óptimo de bits para evitar introdu
cir redundancia extra. En la figura 15.3 hay catorce 0 antes del primer 1. Estos catorce 0
están comprimidos en el patrón binario 1110 (14 en binario). El siguiente conjunto de ceros
está comprimido en 0100 debido a que hay cuatro 0. Enseguida usted tiene dos 1 en los da
tos originales, los cuales se representan mediante 0000 en los datos comprimidos. Finalmen
te, los últimos doce 0 en los datos están comprimidos en 1100.
Observe que, dada una compresión binaria de cuatro bits, si hay más de quince 0, éstos
se dividen en dos o más grupos. Por ejemplo, una secuencia de veinticinco 0 se cifra como
1111 1010. Ahora la pregunta es cómo sabe el receptor que éstos son veinticinco 0 y no
quince 0, luego un 1 y después diez 0. La respuesta es que si el primer conteo es 1111, el re
ceptor sabe que el siguiente patrón de cuatro bits es una continuación de ceros. Ahora surge
otra pregunta: ¿qué pasa si hay exactamente quince 0 entre dos 1? En este caso el patrón es
1111 seguido por 0000.
CODIFICACIÓN En la codificación de H uffm an, usted asigna códigos más cortos a símbolos que ocurren
con mayor frecuencia y códigos más largos a aquellos que ocurren con menor frecuencia. F ig u r a 1 5 .4 C o d ificació n de H uffm an
DE HUFFMAN
Por ejemplo, imagine que tiene un archivo de texto que utiliza sólo cinco caracteres (A, B,
C, D, E). Elegimos sólo cinco caracteres para hacer el análisis más simple, pero el procedi
miento es igualmente válido para un número de caracteres menor o mayor.
Antes de que pueda asignar patrones de bits a cada carácter, usted asigna a cada carácter
un peso basado en su frecuencia de uso. En este ejemplo suponga que la frecuencia de los
A: 00 D: 10 |
caracteres es la que se presenta en la tabla 15.1. El carácter A ocurre 17 por ciento délas ve
B: 0 1 0 E: 111
ces, el carácter B ocurre 12 por ciento de las veces y así por el estilo.
J z t y V C: 011 g
® @ (d ) ®
Código
Carácter A B C D E ® ©
Frecuencia 17 12 12 27 32
Una vez que se ha establecido el peso de cada carácter, se construye un árbol con base en
aquellos valores. El proceso de construcción de este árbol se muestra en la figura 15.4. Si Observe estos puntos sobre los códigos. Primero, los caracteres con las frecuencias más
gue tres pasos básicos: altas reciben un código más corto (A, D y E) que los caracteres con frecuencias más bajas
(B y C). Compare esto con un código que asigna a cada carácter longitudes de bits iguales.
1. Se pone todo el conjunto de caracteres en una fila. Cada carácter es ahora un nodo en Segundo, en este sistema de codificación, ningún código es un prefijo de otro código. Los
el nivel inferior de un árbol. códigos de dos bits, 00, 10 y 11 no son el prefijo de ninguno de los otros dos códigos (010)
2. Se encuentran los dos nodos dentro de los pesos más pequeños y se juntan para for y (011). En otras palabras, usted no tiene un código de tres bits que comience con 00, 10 u
mar un tercer nodo, el cual dé como resultado un árbol simple de dos niveles. El pe 11. Esta propiedad hace del código Huffman un código instantáneo. Explicaremos esta pro
so del nuevo nodo son los pesos combinados de los dos nodos originales. Este nodo, piedad cuando analicemos la codificación y la decodificación en la codificación de Huffman.
un nivel arriba de las hojas, es idóneo para combinarse con otros nodos. Recuerde, la
suma de los pesos de los dos nodos elegidos debe ser más pequeña que la combina
ción de cualesquier otras opciones posibles. Veamos cómo codificar el texto utilizando el código para nuestros cinco caracteres. La figu
3. Repita el paso 2 hasta que todos los nodos, de cada nivel, se combinen en un solo árbol. ra 15.6 muestra el texto original y el texto codificado. Vale la pena mencionar dos puntos so
bre esta figura. Primero, observe que hay un sentido de compresión incluso en este pequeño
Una vez que el árbol esté completo, utilícelo para asignar códigos a cada carácter. Prime código ficticio. Si usted quiere enviar el texto sin utilizar la codificación de Huffman, nece
ro asigne un valor de 1 bit a cada ram a. Comenzando desde la raíz (nodo superior), asigne sita asignar un código de tres bits a cada carácter. Enviaría 30 bits, mientras que con la co
un 0 a la rama izquierda y un 1 a la rama derecha, y repita este patrón en cada nodo. dificación de Huffman usted sólo enviaría 22 bits.
El código de un carácter se encuentra comenzando en la raíz y siguiendo las ramas que Segundo, observe que no hemos utilizado ningún delimitador entre los bits que codifican
conducen a ese carácter. El código mismo es el valor de bits en cada rama del camino toma cada carácter. Escribimos los códigos uno después de otro. La belleza de la codificación
do en secuencia. La figura 15.5 muestra el árbol final con bits añadidos a cada rama. Obser Huffman radica en que ningún código es el prefijo de otro código. No hay ambigüedad en
ve que movimos los nodos de la hoja para hacer que el árbol pareciera un árbol binario. la codificación; además, el receptor puede decodificar los datos recibidos sin ambigüedad.
C o m p re s ió n de d a to s 15.1 C o m p re s ió n sin p é rd id a
usted envía el diccionario está enviando información adicional, lo cual va en contra del pro
Codificador pósito general de la compresión)?
Un algoritmo práctico que utiliza la idea de la codificación adaptativa basada en diccio
nario es el algoritmo de Lempel Ziv (LZ). Este algoritmo ha pasado por varias versiones
(LZ77, LZ78, etc.). Presentamos la idea básica del algoritmo con un ejemplo pero no ahon
damos en los detalles de diferentes versiones e implementaciones. En nuestro ejemplo, su
ponemos que la cadena siguiente está por enviarse. Hemos elegido esta cadena específica
para simplificar el análisis.
BAABABBBAABBBBAA
Utilizando nuestra versión simple del algoritmo LZ, el proceso se divide en dos fases: la
compresión de la cadena y la descompresión de la cadena.
F ig u r a 1 5 .6 C o d ificació n d e H uffm an
En esta fase, hay dos eventos concurrentes: la construcción de un diccionario indexado y la
compresión de una cadena de símbolos. El algoritmo extrae la subcadena más pequeña que
no puede encontrarse en el diccionario desde la cadena sin comprimir la restante. Luego al
D ecodificación El receptor tiene una tarea muy fácil en la decodificación de los datos que recibe. La figura
15.7 muestra cómo ocurre la decodificación. Cuando el receptor recibe los primeros dos bits macena una copia de esta subcadena en el diccionario (como una nueva entrada) y asigna un
no tiene que esperar al siguiente bit para tomar la decisión. Sabe que estos dos se decodifi- valor de índice. La compresión ocurre cuando la subcadena, con excepción del último carác
can como E. La razón, como mencionamos antes, es que estos dos bits no son el prefijo de ter, se remplaza con el índice encontrado en el diccionario. El proceso luego inserta el índi
ningún código de tres bits (no hay código de tres bits que inicie con 11). Asimismo, cuando ce y el nuevo carácter de la subcadena en la cadena comprimida. Por ejemplo, si la
el receptor recibe los siguientes dos bits (00), también sabe que el carácter debe ser A. Los subcadena es ABBB, usted busca ABB en el diccionario y encuentra que el índice para ABB
siguientes dos bits se interpretan de la misma manera (11 debe ser E). Sin embargo, cuando es 4, por consiguiente la subcadena comprimida es 4B. La figura 15.8 muestra el proceso
recibe los bits 7 y 8, sabe que debe esperar el siguiente bit porque este código (01) no está para nuestra cadena de ejemplo.
en la lista de códigos. Después de recibir el siguiente bit (0) interpreta los siguientes tres bits Sigamos unos cuantos pasos en esta figura:
juntos (010) como B. Ésta es la razón por la cual el código de Huffman se llama código ins PASO 1 El proceso extrae la subcadena más pequeña de la cadena original que no está en
tantáneo; el decodificador puede decodificar inequívocamente los bits al instante (con el nú el diccionario. Debido a que el diccionario está vacío, el carácter más pequeño es un carác
mero mínimo de bits). ter (el primer carácter, B). El proceso almacena una copia de éste como la primera entrada
en el diccionario. Su índice es 1. Ninguna parte de esta subcadena puede ser remplazada con
un índice del diccionario original (es sólo un carácter). El proceso inserta B en la cadena
comprimida. Hasta ahora, la cadena comprimida tiene sólo un carácter: B. La cadena restan
te sin comprimir es la cadena original sin el primer carácter.
Decodificador
PASO 2 El proceso extrae de la cadena restante la siguiente subcadena más pequeña que
no está en el diccionario. Esta subcadena es ei carácter A, el cual no está en el diccionario.
Recibido
El proceso almacena una copia de ésta como la segunda entrada en el diccionario. Ninguna
parte de esta subcadena puede remplazarse con un índice desde el diccionario (sólo es un ca
rácter). El proceso inserta A en la cadena comprimida. Hasta ahora, la cadena comprimida
tiene dos caracteres: B y A (hemos colocado comas entre las subcadenas de la cadena com
primida para mostrar la separación).
EAEBAECDEA
PASO 3 El proceso extrae de la cadena restante la siguiente subcadena más pequeña que
no está en el diccionario. Esta situación difiere de los dos pasos previos. El siguiente carác
F ig u r a 1 5 .7 D eco d ificació n d e H uffm an
ter (A) está en el diccionario, así que el proceso extrae dos caracteres (AB), los cuales no es
tán en el diccionario. El proceso almacena una copia de AB como la tercera entrada en el
diccionario. El proceso ahora encuentra el índice de una entrada en el diccionario que es la
CODIFICACIÓN La codificación de Lem pel Ziv (LZ) es un ejemplo de una categoría de algoritmos llama
subcadena sin el último carácter (AB sin el último carácter es A). El índice para A es 2, así
DE LEMPEL ZIV da codificación b asada en diccionario. La idea es crear un diccionario (una tabla) de cade
que el proceso remplaza A con 2 e inserta 2B en la cadena comprimida.
nas utilizado durante la sesión de comunicación. Si tanto el emisor como el receptor tienen
una copia del diccionario, entonces las cadenas ya encontradas pueden sustituirse por su ín PASO 4 Enseguida el proceso extrae la subcadena ABB (debido a que A y AB ya están en
dice en el diccionario para reducir la cantidad de información transmitida. el diccionario). Una copia de ABB se almacena en el diccionario con un índice de 4. El pro
Aunque la idea parece simple, varias dificultades afloran en la implementación. Primero, ceso encuentra el índice de la subcadena sin el último carácter (AB), el cual es 3. La com
¿cómo puede crearse un diccionario para cada sesión (no puede ser universal debido a su binación 3B se inserta en la cadena comprimida. Tal vez haya notado que en los tres pasos
longitud)? Segundo, ¿cómo puede el receptor adquirir el diccionario hecho por el emisor (si anteriores, en realidad no logramos ninguna compresión debido a que hemos remplazado un
§ |g ¿x g |j C o m p re s ió n de d a to s 15.1 C o m p re s ió n sin p é rd id a 297
B, A, 2B;
BA BAABBBBAA — lili 3A í <— 4B>5A
ABBBi ABBBBAA
B .A . 2 B ,;3 B ,riA ,;4 M ¿ a i
F ig u r a 1 5 .8 E jem p lo d e d e co d ifica ció n Lem pel Ziv F ig u r a 1 5 .9 Ejem p lo de d e co d ificació n Lem p el Ziv
carácter por uno (A por A en el primer paso y B por B en el segundo paso) y dos caracteres Veamos unos cuantos pasos en la figura.
por dos (AB por 2B en el tercer paso). Pero en este paso en realidad hemos reducido el nú
mero de caracteres (ABB se convierte en 3B). Si la cadena original tiene muchas repeticio PASO 1 La primera subcadena de la cadena comprimida se examina. Es B sin un índice.
nes (lo cual es cierto en la mayoría de los casos), podemos reducir en gran medida el número Debido a que la subcadena no está en el diccionario, ésta se añade al diccionario. La subca
de caracteres. dena (B) se inserta en la cadena descomprimida.
Los pasos restantes son similares a uno de los cuatro pasos precedentes, así que dejamos PASO 2 La segunda subcadena (A) se examina; la situación es similar al paso 1. Ahora la
al lector seguir adelante. Observe que el diccionario sólo se utilizó por el emisor para encon cadena descomprimida tiene dos caracteres (BA) y el diccionario tiene dos entradas.
trar los índices. Este no se envía al receptor y el receptor debe crear el diccionario para sí
mismo como veremos en la siguiente sección. PA SO 3 La tercera subcadena (2B) se examina. El proceso realiza una búsqueda en el dic
cionario y remplaza el índice 2 con la subcadena A. La nueva subcadena (AB) se añade a la
D escom presión La descompresión es el proceso inverso de la compresión. Este proceso extrae las subcade- cadena descomprimida y AB se añade al diccionario.
ñas de la cadena comprimida y trata de remplazar los índices con la entrada correspondien
te en el diccionario, el cual está vacío al principio y se construye gradualmente. Toda la idea PASO 4 La cuarta subcadena (3B) se examina. El proceso busca en el diccionario y rem
es que cuando se recibe un índice, ya hay una entrada en el diccionario que corresponde a plaza el índice 3 con la subcadena AB. La subcadena ABB ahora se añade a la cadena des
ese índice. La figura 15.9 muestra el proceso de descompresión. comprimida y ABB se añade al diccionario.
C o m p re s ió n d e d a to s 1 5.2 M é to d o s d e c o m p r e s ió n co n p é rd id a
Dejamos la exploración de los últimos tres pasos como un ejercicio. Como habrá notado, cuadrado del número de unidades. Es decir, para toda la imagen, se necesitan 307 2002 ope
utilizamos un número como 1 o 2 para el índice. En realidad el índice es un patrón binario raciones (94 371 840 000 operaciones). Si se utiliza JPEG, se necesitan 642 operaciones pa
(posiblemente variable en longitud) para una mayor eficiencia. También advierta que la co ra cada bloque, lo cual da un total de 642 X 80 X 60 o 19 660 800 operaciones. Esto
dificación LZ deja el último carácter sin comprimir (lo cual significa menor eficiencia). Una disminuye 4 800 veces el número de operaciones.
versión de la codificación LZ, llamada codificación de Lempel Ziv Welch (LZW) comprime La idea de JPEG es cambiar la imagen en una serie de números lineales (vector) que re
incluso este solo carácter. No obstante, dejamos el análisis de este algoritmo a libros de tex vela las redundancias. Las redundancias (falta de cambios) pueden entonces eliminarse uti
to más especializados. lizando uno de los métodos de compresión sin pérdida que se estudiaron previamente. Una
versión simplificada del proceso aparece en la figura 15.11.
Transform ación En este paso, cada bloque de 64 pixeles atraviesa por una transformación llamada la trans-
COMPRESIÓN DE Como se vio en el capítulo 2, una imagen puede representarse mediante un arreglo bidimen- discrefa coseno form ación discreta coseno (DCT: discrete cosine transform). La transformación cambia
IMÁGENES' JPEG sional (tabla) de elementos de imagen (pixeles); por ejemplo, 640 X 480 = 307 200 pixe- (D C T ) los 64 valores de manera que se mantienen las relaciones relativas entre pixeles, pero las re
les. Si la imagen es de escala de grises, cada pixel puede representarse por un entero de ocho dundancias se revelan. La fórmula se da en el apéndice F. P (x, y) define un valor en el blo
bits (256 niveles). Si la imagen es a color, cada pixel puede representarse por 24 bits ( 3X8 que; T(x, y) define el valor en el bloque transformado. El apéndice F muestra la fórmula
bits), con cada ocho bits representando uno de los colores en el sistema de colores RBG (o matemática para una transformación.
YIQ). Para simplificar el análisis, nos concentramos en una imagen de escala de grises con Para comprender la naturaleza de esta transformación, permítanos mostrar el resultado de
640 X 480 pixeles. las transformaciones para tres casos.
Usted puede ver por qué necesita compresión. Una imagen de escala de grises de 307 200
pixeles se representa mediante 2 457 600 bits y una imagen a color se representa por medio Caso 1 En este caso, usted tiene un bloque de escala de grises uniforme y el valor de ca
de 7 372 800 bits. En JPEG, una imagen de escala de grises se divide en bloques de 8 X 8 da pixel es 20. Cuando se hacen las transformaciones se obtiene un valor diferente de cero
pixeles (figura 15.10). para el primer elemento (esquina superior izquierda). El resto de los pixeles tiene un valor
El propósito de dividir la imagen en bloques es disminuir el número de cálculos, debido de cero debido a que, de acuerdo con la fórmula, el valor de 7(0, 0) es el promedio de los
a que, como verá en breve, el número de operaciones matemáticas para cada imagen es el otros valores. Esto se conoce como el valor DC (tomado de las siglas en inglés de corriente
directa, de la ingeniería eléctrica). El resto de los valores, llamados valores AC, en T(x, y) re
presentan los cambios en los valores de pixel. Pero como éstos no tienen cambios, el resto
de los valores son ceros (figura 15.12).
20 20 20 20 20 20 20 20 160 0 0 0 0 0 0 0
20 20 20 20 20 20 20 20 0 0 0 0 0 0 0 0
20 20 20 20 20 20 20 20 0 0 0 0 0 0 0 0
20 20 20 20 20 20 20 20 0 0 0 0 0 0 0 0
20 20 20 20 20 20 20 20 0 0 0 0 0 0 0 0
20 20 20 20 20 20 20 20 0 0 0 0 0 0 0 0
20 20 20 20 20 20 20 20 0 0 0 0 0 0 0 0
Imagen 20 20 20 20 20 20 20 20 0 0 0 0 0 0 0 0
P (x. y) T {m. n)
Figura 15.10 E je m p lo de JPEG en escala d e grises, 6 4 0 x 4 8 0 pixeles Figura 15.12 Caso 1: escala d e g rises u n ifo rm e
300 C o m p re s ió n d e d a to s 15.2 M é to d o s d e c o m p re s ió n c o n p é rd id a 301
Caso 2 En el segundo caso, usted tiene un bloque con dos secciones diferentes de escal Observe que la única fase en el proceso que no es reversible es la fase de cuantización.
de grises uniforme. Hay un cambio brusco en los valores de los pixeles (de 20 a 50). Cuan* Usted pierde un poco de información aquí que no es recuperable. La verdad es que la única
do se hacen las transformaciones se obtiene un valor DC así como valores AC diferentes de razón por la cual JPEG se llama compresión con pérdida es por la fase de cuantización.
cero. No obstante, sólo hay unos cuantos valores diferentes de cero agrupados alrededor del
valor DC. La mayoría de los valores son cero (figura 15.13). Compresión Después de la cuantización, se leen los valores de la tabla y los ceros redundantes se elimi
nan. Sin embargo, para agrupar los ceros juntos, el proceso lee la tabla en forma diagonal a
manera de zigzag en vez de fila por fila o columna por columna. La razón es que si la ima
gen no tiene cambios finos, la esquina inferior derecha de la tabla T son todos ceros. La fi
20 20 20 20 50 50 50 50 280 - - 109 0 39 0 -2 5 0 2? gura 15.15 muestra el proceso. JPEG por lo general utiliza codificación de longitud de
20 20 20 20 50 50 50 50 0 0 0 0 0 0 0 0
20 20 20 20 50 50 50 50 0 0 0 0 0
ejecución en la fase de compresión para comprimir el patrón de bits que resulta de la linea-
0 0 0
20 20 20 20 50 50 50 50 0 0 0 0 0 0 0 0 lización de zigzag.
20 20 20 20 50 50 50 50 0 0 0 0 0 0 0 0
20 20 20 20 50 50 50 50 0 0 0 0 0 0 0 0
20 20 20 20 50 50 50 50 0 0 0 0 0 0 0 0 T (m, n)
Imagen 20 20 20 20 50 50 50 50 0 0 0 0 0 0 0 0
P (x, y) T(m, n)
F ig u r a 1 5 .1 3 C a so 2 : d o s seccio n es
Caso 3 En el tercer caso, se tiene un bloque que cambia gradualmente. Esto significa que
no hay un cambio brusco entre los valores de los pixeles vecinos. Cuando se hacen las trans
formaciones se obtiene un valor DC, también con muchos valores AC diferentes de cero (fi
gura 15.14).
20 30 40 50 60 70 80 90 400 -146 0 -3 1 - 1 3 -1 -8
20 30 40 50 60 70 80 90 0 0 0 0 0 0 0 0
20 30 40 50 60 70 80 90 0 0 0 0 0 0 0 0
20 30 40 50 60 70 80 90 0 0 0 0 0 0 0 0
20 30 40 50 60 70 80 90 0 0 0 0 0 0 0 0
20 30 40 50 60 70 80 90 0 0 0 0 0 0 0 0 Resultado
20 30 40 50 60 70 80 90 0 0 0 0 0 0 0 0
Imagen 20 30 40 50 60 70 80 90 0 0 0 0 0 0 0 0
F ig u r a 1 5 .1 5 Lectu ra de la tab la
P(x,y) T(m, n)
COMPRESIÓN El método del grupo de expertos de imágenes en movimiento (MPEG) se utiliza para com
F ig u r a 1 5 .1 4 C a so 3 : esca la de g rises g rad ie n te
DE VIDEO: MPEG primir video. En un principio, una imagen en movimiento es un flujo rápido de una serie de
cuadros (frames), donde cada cuadro es una imagen. En otras palabras, un cuadro es una
A partir de las figuras 15.12, 15.13 y 15.14, podemos establecer lo siguiente: combinación espacial de pixeles y un video es una combinación temporal de cuadros que se
■ La transformación crea la tabla T a partir de la tabla P. envían uno después de otro. La compresión de video, entonces, significa comprimir espa
cialmente cada cuadro y comprimir temporalmente una serie de cuadros.
H El valor DC da un valor promedio de los pixeles.
Com presión espacial La compresión espacial de cada cuadro se realiza con JPEG (o
H Los valores AC dan los cambios.
una modificación de éste). Cada cuadro es una imagen que puede comprimirse de manera
B La falta de cambios en los pixeles vecinos crea ceros.
independiente.
Antes de que cerremos el análisis de la DCT, observe que la transformación DCT es rever Com presión temporal En la compresión temporal, los cuadros redundantes se elimi
sible. El apéndice F también muestra la fórmula matemática para una transformación inversa. nan. Cuando vemos televisión, recibimos 30 cuadros por segundo. Sin embargo, la mayoría
de los cuadros consecutivos son casi iguales. Por ejemplo, cuando alguien está hablando, la
C u an tización Después de que se crea la tabla T, los valores se cuantizan para reducir el número de bits ne mayor parte del cuadro es la misma que la del cuadro anterior, con excepción del segmento
cesarios para la codificación. Anteriormente a la cuantización, dejábamos la fracción de ca del cuadro alrededor de los labios, el cual cambia de un cuadro a otro.
da valor y manteníamos la parte entera. En la actualidad dividimos el número entre una Un cálculo aproximado apunta a la necesidad de compresión temporal para video. Una
constante y luego dejamos la fracción. Esto reduce el número requerido de bits todavía más. compresión JPEG 20:1 de un cuadro envía 368 640 bits por cuadro; a 30 cuadros por segun
En la mayoría de las implementaciones, una tabla de cuantización (8 por 8) define cómo do, esto es 11 059 200 bits por segundo. Necesitamos reducir este número.
cuantizar cada valor. El divisor depende de la posición del valor en la tabla T. Esto se hace Para comprimir los datos temporalmente, el método MPEG primero divide los cuadros
para optimizar el número de bits y el número de ceros para cada aplicación en particular. en tres categorías: cuadros I, cuadros P y cuadros B.
C o m p re s ió n d e d a to s 15.5 P rá c tic a
15.5 PRÁCTICA
PR EG U N T A S D i REPASO 5. ¿Qué es la codificación de Huffman?
1. ¿Cuáles son las dos categorías de los métodos de com 6. ¿Cuál es el rol del diccionario en la codificación LZ?
presión de datos? 7. ¿Cuál es la ventaja de la codificación LZ sobre la codi
2. ¿Cuál es la diferencia entre la compresión sin pérdida y ficación de Huffman?
la compresión con pérdida? 8. ¿Cuáles son dos métodos de compresión con pérdida?
3. ¿Cuál es la codificación de longitud de ejecución? 9. ¿Cuándo utilizaría usted JPEG? ¿Cuándo utilizaría
4. ¿Cómo reduce la codificación de Lempel Ziv la canti MPEG?
F ig u r a 1 5 .1 7 C o n stru cc ió n de cu ad ro s M P E G dad de bits transmitidos? 10. ¿Cómo se relaciona MPEG con JPEG?
304 C o m p re s ió n de d a to s 15.5 P rá c tic a 305
11. En JPEG, ¿cuál es la función de dividir en bloques la 23. En la codificación d e , los caracteres que ocu EJERCICIOS 36 . ¿Puede ser el siguiente un código de Huffman? Explique.
imagen? rren con mayor frecuencia tienen códigos más cortos A :0 B: 1 C: 00 D: 01 E: 10 F: 11
3 '1. Codifique el siguiente patrón de bits utilizando la codi
12. ¿Por qué la DCT se necesita en JPEG? que los caracteres que ocurren con menos frecuencia. 37 . Codifique el mensaje BAABBBBAACAA utilizando el
ficación de longitud de ejecución con códigos de 5 bits:
a. Huffman código Huffman siguiente:
13. ¿Cómo contribuye la cuantización a la compresión? dieciocho ceros, 11, cincuenta y seis ceros, 1, quin
b . longitud de ejecución A: 0 B: 10 C: 11
ce ceros, 11
14. ¿Qué es un cuadro en la compresión MPEG? c. LZ
38 . Decodifique el mensaje 0101000011110 utilizando el
d. todos los anteriores 32. Codifique el siguiente patrón de bits utilizando codifi
15. ¿Qué es la compresión espacial comparada con la com código Huffman siguiente:
24. En la codificación d e _______ , PPPPPPPPPPPpppp cación de longitud de ejecución con códigos de 5 bits:
presión temporal? A: 0 B: 10 C :ll
puede remplazarse por P15. 1, ocho ceros, 1, cuarenta y cinco ceros, 11
16. Comente los tres tipos de cuadros utilizados en MPEG. 39 . Utilice una transformación para transformar una tabla
a. Huffman 33. Codifique los caracteres siguientes usando codificación de cuatro por cuatro. Las reglas son las siguientes:
b . longitud de ejecución de Huffman con las frecuencias dadas: T(0, 0) - (1/16) [ P(0, 0) + P(0, 1) +
PREGUNTAS DE OPCIÓN MÚLTIPLE c. LZ A(12), B(8), C(9), D(20), E(31), F(14), G(8) P(0, 2) + . . . ]
17. Los datos se comprimen utilizando un diccionario con d. todos los anteriores
34. Codifique los caracteres siguientes utilizando codifica T(0, 1) = (1/16) [ 0.95 P(0, 0) + 0.9 P(0, 1) +
índices a las cadenas. Éste es l a _______ . 25. En la codificación de . una cadena se remplaza ción de Huffman. Cada carácter tiene la misma frecuen 0.85 P(0, 2) + . . . ]
a. codificación diferencial por un apuntador a la cadena almacenada. cia (1): T(0, 2) - (1/16) [ 0.90 P(0, 0) + 0.85 P(0, 1) +
b. codificación de Lempel Ziv a. Huffman A, B, C, D, E, F, G, H, I, J 0.80 P(0, 2) + . . . ]
c. codificación Morse b . longitud de ejecución
c. LZ 35. ¿Puede ser la siguiente, codificación de Huffman? Ex Compare y contraste este método con la DCT. ¿La DCT
d. codificación con pérdida
d. todos los anteriores plique. en realidad es un cálculo promedio con peso como la
18. Una cadena de cien ceros se remplaza con dos marca A: 0 B: 10 C: 11 transformación precedente? De ser así, ¿cuál es el peso?
dores, un 0 y el número 100. Ésta es l a _______ . 26. La codificación LZ requiere_______ .
a. codificación de longitud de ejecución a. un diccionario
b . un buffer
b . codificación Morse
c. un algoritmo
c. codificación diferencial
d. todos los anteriores
d. codificación de Lempel Ziv
27. L a codificación JPEG involucra_______ , un proceso
19. Un ejemplo de la compresión con pérdida e s _______ .
que revela las redundancias en un bloque.
a. la codificación diferencial a. división en bloques
b . la codificación de Lempel Ziv b . la DCT
c. la codificación de longitud de ejecución c. cuantización
d. JPEG d. vectorización
20. En un método de compresión de datos_______ , los da 28. En la codificación JPEG el proceso d e ________divide
tos recibidos son mía copia exacta del mensaje original. la imagen original en bloques más pequeños y asigna
a. sin pérdida un valor a cada pixel en un bloque.
b . con pérdida a. división en bloques
c. de menor pérdida b . la DCT
d. brillantes c. cuantización
d. vectorización
21. En un método de compresión de datos_______ , los da
tos recibidos no necesitan ser una copia exacta del men 29. E l último paso en JPEG, l a _______ , elimina las redun
saje original. dancias.
a. sin pérdida a. división en bloques
b . cuantización
b . con pérdida
c. compresión
c. de menor pérdida
d. vectorización
d. brillantes
30. _______ es un método de compresión con pérdida para
22. La codificación d e ________es un método de compre
imágenes y gráficos; mientras que es un méto
sión de datos sin pérdida.
do de compresión con pérdida para video.
a. Huffman
a. DCT; MPEG
b . longitud de ejecución
b . MPEG; JPEG
c. LZ c. JPEG; MPEG
d. todos los anteriores d. JPEG; DCT
16.1 P riv a c id a d
Seguridad
Seguridad P R IV A C ID A D
F ig u r a 1 6 .1 A sp e cto s de la se g u rid ad
R|D AD La confidencialidad y la autenticación son sólo dos elementos de una comunicación segura.
La integridad del mensaje también necesita conservarse. Ni el emisor ni el receptor están fe
lices si el contenido del mensaje se modifica durante la transmisión. Por ejemplo, en una
H m la actualidad, la seguridad juega un papel muy importante en las ciencias de la compu
transacción bancaria, ni el cliente ni el banco están satisfechos si la transferencia de $1000
tación. Con el crecimiento de Internet, más y más datos se están intercambiando y esos da
del cliente cambia a $10 000 durante la transmisión. El cambio podría ocurrir ya sea de ma
tos necesitan asegurarse. Por ejemplo, cuando usted realiza una compra en Internet, espera
nera maliciosa, podría ser provocado por un intruso que se beneficia del cambio u ocurrir ac
que la información que envía al vendedor se mantenga en secreto y que sólo la utilice el ven
cidentalmente como resultado de un mal funcionamiento de hardware o software.
dedor. Además, cuando recibe un mensaje, en ocasiones necesita autenticar al emisor. En es
te capítulo tratamos el tema de la seguridad. El tema es tan vasto que libros enteros se han
dedicado a él. Los conceptos e ideas presentados aquí son motivadores para un estudio pos NO RECHAZO Aun cuando no es muy obvio, uno de los elementos de una comunicación segura es el no
terior. rechazo, es decir, la prevención del rechazo (negación) del emisor. En otras palabras, un sis
tema seguro necesita probar que el emisor en realidad envió el mensaje. Por ejemplo, cuan
Podemos decir que hay cuatro aspectos de la seguridad: privacidad (confidencialidad), au do un chente envía un mensaje para transferir dinero de una cuenta a otra, el banco debe
tenticación de mensajes, integridad de los mensajes y no rechazo (figura 16.1). haber probado que el cliente en realidad solicitó esta transacción.
16.1 PR IV A C ID A D
La privacidad requiere que el mensaje se cifre de alguna manera en el sitio del emisor y se
descifre en el sitio del receptor de modo que un intruso potencial (una persona que escuche
conversaciones ajenas) no pueda comprender su contenido.
Privacidad La manera más simple de cifrar los datos es utilizar una llave secreta. El emisor utiliza es
con cifra d o ta clave y un algoritmo de cifrado para cifrar los datos; el receptor utiliza la misma llave y
el algoritmo de descifrado correspondiente para descifrar los datos (figura 16.2).
de llave secreta
Los datos, cuando no se cifran, se llaman texto plano; una vez cifrados se llaman texto
cifrado. Observe que tanto el usuario A como el usuario B utilizan la llave secreta, la cual
es exactamente la misma. Sin embargo, los algoritmos de cifrado y descifrado son inversos
31)8 S e g u rid a d 16.1 P riv a c id a d 309
Estándar de cifrado de datos (D ES) El cifrado de llave secreta se ha utilizado por más
de dos milenios. Al principio, los algoritmos eran muy simples y las llaves eran muy fáciles de
adivinar. Hoy en día, usamos algoritmos muy sofisticados; el más común es el llamado es
tándar de cifrado de datos (DES: data encryption standard).
DES cifra y descifra en el nivel de bits. Los datos primero se transforman en una cadena
de bits. Se dividen en segmentos de 64 bits (ceros adicionales se añaden a la última sección
si ésta no es de 64 bits). Cada sección se cifra luego utilizando una llave de 56 bits (en rea
lidad, la llave mide 64 bits, pero 8 bits son para el control de errores). La figura 16.3 mues
tra la disposición general de este método.
La idea es revolver los datos y la llave de tal manera que cada bit de texto cifrado depen
da de cada bit de texto plano y de la llave. Esto vuelve muy difícil para un usuario adivinar
los bits de texto plano a partir de los bits de texto cifrado.
Llave de 56 bits La idea de este método es que los algoritmos de cifrado y descifrado no son inversos en
_____ tre sí. Aunque un intruso tenga la llave pública y los algoritmos de cifrado y descifrado, no
Generador de subllaves puede descifrar el mensaje sin la llave privada.
Llave de 48 bits
RSA El algoritmo de llave pública más común recibe su nombre en honor a sus inventores,
cifrado de Rivest-Shamir-Adleman (RSA). La llave privada es un par de números (N, d)\
Texto plano 17 18 19 Texto cifrado la llave pública es también un par de números (N, e). Observe que N es común a las llaves
(segmento de 64 bits) (segmento de 64 bits) pública y privada.
El emisor utiliza el siguiente algoritmo para cifrar el mensaje:
Algoritmo de cifrado
P R IV A C ID A D Usted puede combinar la ventaja del algoritmo de llave secreta (eficiencia) y la ventaja del
En este algoritmo, P es el texto plano, el cual se representa como un número. C es el núme algoritmo de llave pública (distribución fácil de las llaves). La llave pública se utiliza para
M ED IA N T E L A
ro que representa el texto cifrado. Los dos números e y N son componentes de la llave pú cifrar la llave secreta; la llave secreta se utiliza para cifrar el mensaje. El procedimiento es
blica. P se eleva a la potencia e y se divide entre N. El término mod indica que el residuo se
COMBINACIÓN
el siguiente:
envía como el texto cifrado.
1. El emisor elige una llave secreta. Esta llave secreta se llama llave de una sesión; sólo
El receptor utiliza el siguiente algoritmo para descifrar el mensaje:
se utiliza una vez.
2. El emisor utiliza la llave pública del receptor para cifrar la llave secreta (como texto)
y envía la llave secreta cifrada al receptor. Observe que dijimos que el método de lla
ve pública es bueno para un mensaje corto. Una llave secreta es un mensaje corto.
3. El receptor usa la llave privada para descifrar la llave secreta.
4. El emisor utiliza la llave secreta para cifrar el mensaje actual.
En este algoritmo, P y C son los mismos que antes. Los dos números d y N son componen
tes de la llave privada. La figura 16.6 muestra la idea de la combinación.
He aquí un ejemplo. Imagine que la llave privada es el par (119, 77) y la llave pública es
el par (119, 5). La emisora necesita enviar el carácter F. Este carácter puede representarse
como el número 6. (F es el sexto carácter en el alfabeto). El algoritmo de cifrado calcula Llave pública d e B
C — ó5 mod 119 — 41. Este número se envía al receptor como texto cifrado. El receptor uti
liza el algoritmo de descifrado para calcular P = 4177 mod 119 = 6 (el número original). El
Llave privada de B
número 6 luego se interpreta como F. La figura 16.5 muestra el proceso.
%
El lector puede poner en duda la efectividad de este algoritmo. Si un intruso conoce el al
goritmo de cifrado y N = 119, lo único que falta es d — 77. ¿Por qué no podría un intruso
utilizar la prueba y error para encontrar d i La respuesta es que en este ejemplo trivial, un in Llave secreta cifrada -rolo
Llave secreta *
truso fácilmente podría adivinar el valor de d. Pero un concepto importante del algoritmo
RSA es el uso de números muy grandes para d y e. En la práctica, los números son tan gran
des (en la escala de decenas de dígitos) que el método de ensayo y error para forzar el códi
G ifrad d; D escifrad o
go requiere mucho tiempo (meses, si no es que años) incluso con las computadoras más M ensaje M ensaje cifrado M ensaje
rápidas disponibles hoy en día.
Figura 16.6 C o m b in ació n
Elección de claves públicas y privadas Una pregunta que viene a la mente es cómo ele
gir los tres números N, d y e para que el cifrado y el descifrado funcionen. Los inventores
del algoritmo RSA probaron matemáticamente que utilizar el procedimiento siguiente ga
rantiza que los algoritmos funcionarán. Aun cuando la prueba esté más allá del ámbito de FIRMA DIGITAL
este libro, damos una idea general del procedimiento:
Sorprendentemente, los otros tres aspectos de la seguridad (integridad, autenticación y no re
■ Se eligen dos números primos grandes, p y q. chazo) pueden lograrse utilizando un solo concepto. El concepto viene de la firma (autenti
■ Se calcula N = p X q. cación) de un documento por su autor o creador. Cuando un autor firma un documento, éste
no puede cambiarse. Como una analogía, si usted tacha algo en un documento como un che
■ Se elige e (menor que N ) tal que e y (p - \){q - 1) sean relativamente primos (tenien
que, debe poner su firma o iniciales por el cambio que hizo. De esta manera, no puede ne
do como factor sólo el uno).
garlo posteriormente (no rechazo). Cuando usted envía un documento en forma electrónica,
■ Se elige d tal que (e X d) mod [(p - !)(# - 1)] sea igual a uno. puede además firmarlo. A esto se le llama firm a digital.
312 S e g u rid a d 16 .2 F irm a d ig ita l
Hay dos maneras de hacer una firma digital. Usted puede firmar todo el documento o
puede firmar un compendio del documento.
FIRMA DE TO D O El cifrado de llave pública puede utilizarse para firmar todo el documento. Sin embargo, el
EL DOCUM ENTO uso de la llave pública aquí es diferente de aquel para la llave privada. Aquí el emisor utili
za su llave pública o privada (no la llave privada del receptor) para cifrar el mensaje. El re
ceptor, por otra parte, utiliza la llave pública del emisor (no su llave privada) para descifrar
el mensaje. En otras palabras, la llave privada se utiliza para cifrado y la llave pública para
F ig u r a 1 6 .8 Firm a del co m p e n d io
descifrado. Esto es posible debido a que los algoritmos de cifrado y descifrado usados ac
tualmente, como RSA, son fórmulas matemáticas y sus estructuras son las mismas. La figu
ra 16.7 muestra cómo se hace esto.
Llave pública de A
f -------------------------------------
Llave privada de A
El método utiliza una técnica llamada función hash para crear un compendio del mensa
F ig u r a 1 6 .7 Firm a d e to d o ei d o cu m e n to je. No importa qué longitud tenga el mensaje, el compendio es de tamaño fijo (por lo gene
ral, 128 bits) como se aprecia en la figura 16.8.
Las dos funciones hash más comunes son Message Digest 5 (MD5) y Secure Hash Algo-
ritm 1 (SHA-1). El primero produce un compendio de 128 bits. El segundo produce un com
Veamos cómo este tipo de cifrado puede proporcionar integridad, autenticación y no re
pendio de 160 bits.
chazo. Dijimos que la integridad del mensaje se conserva debido a que, si un intruso inter
Observe que la función hash tiene dos propiedades para garantizar su éxito. Primero, el
cepta el mensaje y lo cambia total o parcialmente, el mensaje descifrado sería (con una alta
hashing debe ser en un sentido; el compendio sólo puede crearse a partir del mensaje, pero
probabilidad) ilegible e incluso no parecería un mensaje. El mensaje también puede auten
no viceversa. Segundo, el hashing debe ser uno a uno; debe ser muy difícil encontrar dos
ticarse debido a que si un intruso envía un mensaje (fingiendo que viene del verdadero au
mensajes que crean el mismo compendio. La razón de esta condición se verá en breve.
tor), utiliza su propia clave privada. El mensaje entonces no se descifra correctamente
Después de que se ha creado el compendio, éste se cifra (firma) usando la llave privada
mediante la llave pública del verdadero autor (es ilegible). El método también proporciona
del emisor. El compendio cifrado se adjunta al mensaje original y se envía al receptor. La fi
no rechazo. Aunque el emisor puede negar el envío del mensaje, debe revelar (en la corte)
gura 16.9 muestra el sitio del emisor.
su llave privada, la cual debe corresponder con la llave pública. Si usted cifra y descifra el
El receptor recibe el mensaje original y el compendio cifrado, y los separa. Aplica la mis
mensaje recibido, obtiene el mensaje enviado.
ma función hash al mensaje para crear un segundo compendio. También descifra el compen
Observe dos puntos importantes. Primero, no puede proporcionar estos aspectos de la se
dio recibido usando la llave pública del emisor. Si los dos compendios son iguales, es obvio
guridad usando la llave secreta (dejamos el razonamiento para un ejercicio). Segundo, el mé
que los tres aspectos de la seguridad se conserven. La figura 16.10 muestra el sitio del
todo no proporciona confidencialidad; cualquiera puede usar la llave pública del emisor para
receptor.
leer el mensaje. Para añadir confidencialidad a esta técnica, se necesita otro nivel de cifrado
Sabemos que estas tres propiedades se conservan para la copia del compendio recibido
(ya sea con el cifrado de llave secreta o de llave pública).
por el receptor. Ahora veamos por qué estas propiedades se conservan para el mensaje.
1. El compendio no ha cambiado y el mensaje crea una réplica del compendio. Así que
FIRMA DEL Mencionamos anteriormente que una de las desventajas del cifrado de llave pública es que el mensaje no ha cambiado (recuerde, dos mensajes no pueden crear el mismo com
COMPENDIO es muy ineficiente. Esto es verdad cuando se utiliza el cifrado de llave pública para firmar pendio).
todo el documento (todo el documento debe cifrarse y descifrarse). 2. El compendio viene del verdadero emisor, así que el mensaje también viene del ver
Para hacer el proceso más eficiente, usted puede dejar que el emisor firme un compendio dadero emisor. Si un intruso hubiera iniciado el mensaje, el mensaje no habría creado
del documento en lugar de todo el documento. En otras palabras, el emisor hace una minia el mismo compendio.
tura del documento y la firma (la cifra con su llave privada); el receptor luego revisa la fir 3. El emisor no puede negar el mensaje debido a que no puede negar el compendio; el
ma de la miniatura (la descifra con la llave pública del emisor). único mensaje que puede crear ese compendio es el mensaje recibido.
S e g u rid a d 16.5 P rá c tic a
Mensaje más
16.5 PR Á C T IC A
PREGUNTAS DE REPASO 18. Una de las ventajas del cifrado de llave pública es
|\ i ¿Cuáles son las cuatro condiciones necesarias para la
ír seguridad de los datos transmitidos? a. el poco tiempo requerido para el cifrado/descifrado
b. que se requiere un número pequeño de llaves
pfí 2. ¿Cómo se puede asegurar la privacidad de un mensaje?
c. que se conserva la integridad
| | 3. ¿Cómo se puede autenticar al emisor de un mensaje? d. que todos conocen todas las llaves
i r 4. ¿Cómo puede usted conservar la integridad de un men- 19. El algoritmo RSA es la base de un método de cifrado
► Compara <------ U !f(' saje?
EJERCICIOS
26. Uno de los primeros métodos de llave secreta se llamaba
sustitución monoalfabética (o la Cifra de César, atribuido
cifrado aquí? ¿Cuál es el algoritmo de descifrado? Con
sidere el hecho de que un algoritmo XOR es un algorit
mo reversible.
.Para responder estas preguntas, pasamos a una disciplina llamada teoría de la computación.
Primero, presentamos un lenguaje, llamado el Lenguaje simple, para mostrar que el número
mínimo de instrucciones requeridas para resolver cualquier problema que tiene solución me
diante una computadora es tres. En otras palabras, probamos que todos los lenguajes que tie
nen estas tres instrucciones básicas son iguales. Segundo, presentamos otra herramienta, un
modelo de computadora llamado la máquina de Turing. Mostramos que un problema que
:puede resolverse mediante nuestro Lenguaje simple, también puede resolverse por la máqui
n a de Turing. Tercero, probamos que ningún programa puede decir si otro programa se detie
ne o no. Esta prueba es en sí misma una indicación de que hay problemas que no pueden
resolverse mediante una computadora. Finalmente, comentamos brevemente la complejidad
de los algoritmos.
Segunda macro: X <--- n El código siguiente muestra cómo utilizar las instrucciones
en este lenguaje para asignar un entero positivo a la variable X. La notación de macros para
esto es X «--- n. Primero limpie la variable X; luego incremente la X n veces.
Podemos definir un lenguaje con sólo tres instrucciones: de incremento, de decremento y ¿
ciclo while (figura 17.1). En este lenguaje, usted utiliza sólo el tipo de datos de enteros. N, 0 ' : • h:Y ; Y3Y
hay necesidad de ningún otro tipo de datos porque usted puede simular otros tipos de dato
con el tipo entero. El lenguaje utiliza sólo unos cuantos símbolos como { y }.
INSTRUCCIÓ N La instrucción de increm ento añade un 1 a la variable (por ejemplo, X). El formato es:
DE INCREMENTO
‘l'dncr ' ;.7. ' -
X
EL PODER De manera inductiva, podemos probar que este lenguaje de programación simple con sólo YYEM P -y Y . -'Yy
DEL LEN G UAJE tres instrucciones es tan poderoso (aunque no necesariamente tan eficiente) como cualquier ^ While TEMP
SIMPLE lenguaje sofisticado en uso hoy en día, por ejemplo C. Para hacerlo, mostramos cómo pode Yv Yv; . . Y;
mos simular varias instrucciones encontradas en algunos lenguajes populares. :iner Z v -YYY '
:'
clocr TF.MP - ' y Y
Llamamos a cada simulación una m acro y la utilizamos en otras simulaciones sin la nece
sidad de repetir el código.
Quinta macro: z <---- X * Y Esta macro multiplica los valores de X y Y y almacena el
resultado en Z. La cuarta macro se utiliza porque la multiplicación es una suma repetida.
Primera m acro: X <----- o E l c ó d ig o sig u ie n te m u e s tra c ó m o u tiliz a r la s instrucciones
en este lenguaje para asignar 0 a la variable x. La notación de macros para esto es X <— - °-
A veces se le llama limpiar una variable.
w h i l e ...X
í
deer; X
> •Y
T e o ría d e ia c o m p u ta c ió n 1 7 .2 M á q u in a d e T u rin g
Sexta macro: z < X ** Y Esta macro eleva X a la potencia Y y almacena el resul tira d a y s a lid a Tal vez se haya planteado preguntas sobre las instrucciones de entrada/salida. Por ejemplo,
tado en z. Esto se hace utilizando la multiplicación porque la exponenciación es una multi ¿cómo puede leer datos en una variable y cómo puede imprimir el resultado de un progra
plicación repetida. ma? Para un lenguaje como éste, no hay necesidad de entrada o salida. Usted puede simular
la entrada, como r e a d X, mediante una instrucción de asignación (X <--- n).También
ftft 1 \ ;: ,;V jvY puede simular la salida al suponer que la última variable utilizada en un programa aloja lo
TEMP ftft- Y " - Y .Yft que debería imprimirse. Recuerde que éste no es un lenguaje práctico, está diseñado para
. while TEMP )- -
■ probar algunos teoremas en las ciencias de la computación.
W • ' if t '
i f t. / .ft .Y
;.ft Z-.frh Z * X ft/ y ft "'
'ft.;/ deqr TEMPI - ft ft-ft ....
CO NCLUSIÓ N El Lenguaje simple es tan poderoso como cualquier otro lenguaje analizado en el capítulo
.. f t > 'ftY - ft ft .ft ft: 9. Esto significa que si usted no puede resolver un problema en este lenguaje, no podrá re
> - =ft solverlo en ningún otro lenguaje. Posteriormente, mostramos que el problem a de paro (hal
ting ]) no tiene solución en ningún lenguaje porque no tiene solución en el Lenguaje simple.
Séptima macro: comp (x) Esta macro complementa el valor de x. Si el valor de x es 0
(falso), lo cambia a 1 (verdadero). Si no es 0 (verdadero), lo cambia a 0 (falso). El primer
ciclo cambia el valor de x a 0 si éste no es 0 (positivo). Si usted introduce este ciclo (x no
es 0), entonces el valor de TEMP se establece en 0, lo cual significa que usted nunca intro 17.2 MÁQUINA DE TURING
duce el segundo ciclo. Si usted nunca introduce el primer ciclo (X es 0), entonces definitiva
mente introduce el segundo ciclo y cambia el valor de x a 1 (el ciclo se itera sólo una vez La m áquina de Turing se introdujo en 1936 por Alan M. Turing para resolver problemas
porque el valor de TEMP es 1). computables. Es la base de las computadoras modernas. En esta sección, presentamos una
versión muy simplificada de esta máquina para mostrar cómo funciona. Luego mostramos
TEMP ~ 1 ‘ •. cómo implementa las instrucciones en el Lenguaje simple.
w h i l e X //Y i
Y# • ’ 5 COMPONENTES DE Una máquina Turing está formada por tres componentes: una cinta, un controlador y una ca-
y X i i; d
TEKP < y0 LA M ÁQ U INA beza de lectura/escritura (figura 17.2).
} k '' ; ; DE TU RIN G
w h ife TEMP v
Cinta Aun cuando las computadoras modernas utilizan un dispositivo de acceso aleatorio con capa
{f t ' Yy" :
i r . c r (X) y:c cidad finita, la memoria de la máquina de Turing es infinita. La cinta, en cualquier momen
Y# d e c r ft'EMPft''-' to mantiene una secuencia de caracteres del conjunto de caracteres aceptado por la máquina.
ft. " f t '' ft Para nuestro propósito, suponemos que la máquina puede aceptar sólo unos cuantos símbo
los: el signo de número (#), el ampersand (&), el dígito 1 y el espacio en blanco. La figura
Octava macro: if X then Al else A2 Esta macro simula la instrucción de toma 17.3 muestra un ejemplo de los datos en una cinta en esta máquina. El # define el principio
de decisiones (if-then-else) de los lenguajes modernos. Si el valor de x no es 0, A l (una ac del número, el número almacenado en la cinta se representa mediante 11111 y e l & define el
ción o una serie de acciones) se ejecuta en el primer ciclo. Sin embargo, el ciclo se ejecuta só final del número. El resto de la cinta contiene caracteres en blanco.
lo una vez porque, después de la primera iteración, el valor de TEMP se vuelve 0 y usted sale
del ciclo. Si el valor de X es 0, el primer ciclo se omite. El valor de TEMP, el cual es lo mismo
que el valor de X, se complementa (se vuelve no 0) y el segundo ciclo se ejecuta sólo una vez. Y
Otras macros Tal vez haya adivinado que necesita más macros para hacer el Lenguaje
simple compatible con los lenguajes contemporáneos. La creación de otras macros es posi
ble, aunque no trivial. Hemos dejado algunas macros desafiantes como ejercicios. Figura 1 7 .3 C in ta
T e o ría d e !a c o m p u ta c ió n 17 .2 M á q u in a d e T u rin g j ||j j j j
También suponemos que la cinta procesa sólo los datos enteros positivos representados Estado: actual, , Escribe Se mueve Estado nuevo
en la aritmética unaria. En esta aritmética, un entero positivo se forma sólo por unos. Por
A 1 o espacio
ejemplo, el entero 4 se representa como 1111 y el entero 7 se representa como 1111111. La
en blanco # ----- > B
ausencia de unos representa el 0.
A #0 & & <---- C
B 1 1 «----- C
Cabeza de La cabeza de lectura/escritura en cualquier momento señala a un símbolo en la cinta. Lla
B no 1 lo mismo que lee A
lectura/escritura mamos a este símbolo el símbolo actual. La cabeza de lectura/escritura lee y escribe un sím
C 1 espacio en blanco -----;► B
bolo a la vez desde la cinta. Después de leer y escribir se mueve a la izquierda, a la derecha
C no 1 1 -----> D
o permanece en su lugar. La lectura, la escritura y el desplazamiento, todos se realizan bajo
D no un espacio lo mismo
instrucciones del controlador.
en blanco que lee -----» B
D espacio en blanco 1 <----- D
El controlador es la contraparte teórica de la unidad central de procesamiento (CPU) en las
C o n tro la d o r
computadoras modernas. Es un autómata de estado finito, una máquina que tiene un núme Tabla 17.1 T ab la de tran sició n
ro finito predeterminado de estados y se mueve de un estado a otro con base en la entrada.
En cualquier momento puede estar en uno de estos estados. SIMULACIÓN DE Veamos si podemos escribir programas (crear tablas de transición) que implementen las ins-
La figura 17.A exhibe el diagrama de transición para un controlador que tiene un autó
LEN CU AJE SIMPLE tracciones del Lenguaje simple.
mata de estado finito. En esta figura el autómata tiene cuatro estados (A, B, C, D). El dia
grama muestra el cambio de estado como una función de la lectura de caracteres. Lo
siguiente describe la figura: Implementemos la instrucción ( i n c r X) utilizando la máquina de Turing. La figura 17.5
Instrucción
■ Si el controlador está en el estado A y lee 1 o un espacio en blanco, pasa al estado B. de in crem en to muestra el diagrama de transición para esta instrucción. Interpretamos la X como los datos
Si lee # o &, pasa al estado C. que ya están en la cinta delimitados por el signo # (al principio) y el signo & (al final). Por
razones de simplicidad, en la figura 17.5 hemos omitido algunos estados (por ejemplo, el es
■ Si el controlador está en el estado B y lee 1, pasa al estado C. Si lee cualquier otro ca
tado de error).
rácter pasa al estado A.
■ Si el controlador está en el estado C y lee 1, pasa al estado B. Si lee cualquier otro ca
rácter pasa al estado D.
■ Si el controlador está en el estado D y lee cualquier carácter excepto un espacio en blan
co, pasa al estado B. Pero si lee un espacio en blanco, permanece en el estado D.
# 1 1 &'■ 1 1 &
i
B ackw ard
# 1 1 < E m m # i 1 I 1 I 1 I ¿1
"
~# l 1 I 1 I 1 I & # 1 1 1 > 3 i i n i iT&T
Backward Startincr
# 1 1 1 & # 1 1 I 1 [&
S tartD ecr
F ig u r a 1 7 .8 D iag ram a de tran sició n p ara la in strucció n loop
m ' i i i U i i )•
Instrucción loop Para simular el ciclo, suponga que x se almacena después del símbolo #. La & marca el fi
nal de x y el principio de los datos que se procesan en el cuerpo del ciclo (éste puede ser
más que un solo elemento de datos). La figura 17.8 muestra el diagrama de transición.
La tabla 17.4 muestra la tabla de transición.
Estado actual Lee Escribe Se mueve Estado nuevo La máquina de Turing es tan poderosa como nuestro Lenguaje simple. Cualquier problema
—» CO N CLU SIÓ N
StartDecr # # Forward que puede resolverse mediante el Lenguaje simple también puede resolverse por medio de
Forward 1 —> Forward la máquina de Turing. Pero ¿qué hay del otro lado de la moneda? ¿Hay un problema que
Forward & bianco Delete pueda resolverse mediante la máquina de Turing que no se pueda resolver mediante el Len
Delete 1 & «— Backward guaje simple? Aunque no podemos probarlo, durante las décadas posteriores, los científicos
Backward no # lo mismo de la computación se convencieron de que esto no puede ocurrir. A esto se le conoce como
que lee <__ Backward la tesis de Church (en honor a Alonzo Church), la cual establece que los lenguajes simples
Backwar # # a ningún lugar StopDecr como el Lenguaje simple y la máquina de Turing son equivalentes. Todos los problemas que
pueden resolverse mediante el Lenguaje simple también pueden resolverse por medio de la
T a b la 17.3 Tabla d e tra n s ició n para la in stru cció n decr X
máquina de Turing y viceversa.
T e o ría d e la c o m p u ta c ió n 17 .4 P ro b le m a d e p a ro
INTERPRETACIÓN Para mostrar que el sistema de numeración es único, utilice los pasos siguientes para inter
173 NÚMEROS DE GÓDEL DE UN NÚMERO pretar un número de Godel:
f!" 7.:
Símbolo Código hexadecimal Símbolo Código hexadecimal m - . . . . ■ v
1 9 9 -A-'"- í-
2 2 incr A
Observe que en nuestro Lenguaje simple cada programa incluye entrada y salida. Esto
3 3 decr B
significa que la combinación de un programa y sus entradas define el número de Gódel.
4 4 while C
5 5 í D
6 6 E
7 7 X F
8 8 17.4 PROBLEMA DE PARO
T abla 1 7 .5 C ód igo para sím bolos utilizados en el Lenguaje sim ple
Casi todo programa escrito en un lenguaje de programación implica la repetición (ciclos o
funciones recursivas). Un constructor de repetición puede no terminar (pararse o detenerse);
es decir, un programa puede ejecutarse por siempre si éste tiene un ciclo infinito. Por ejem
REPR ESEN TACIÓ N Utilizando la tabla, usted puede representar cualquier programa escrito en nuestro Lengua plo, el programa siguiente en Lenguaje simple nunca termina.
DE UN PR O G R A M A je simple mediante un entero positivo único. Siga estos pasos:
•ic X ■" i - l i l i ' • W ; o
1. Remplace cada símbolo con el código hexadecimal que le corresponde en la tabla.
2. Interprete el número hexadecimal resultante como un entero sin asignar. { a . ! ? " ■ '•■ '"Sfeifei.. - ,0 •
‘ ■' 7 ' |S;L;
EJEMPLO 1
¿Cuál es el número de Gódel para el programa i n c r X? Una pregunta de programación clásica es:
SOLUCIÓN
¿Puede escribirse u n program a que evalúe si un program a, representado por su
Se remplaza cada símbolo mediante su código hexadecimal: núm ero de Gódel, term inará o no?
aaa'A ... -
m cr
' >A- La existencia de este programa ahorraría a los programadores mucho tiempo. La ejecución
V . : 175 d e c im a l) de un programa sin saber si éste se detiene o no, es una tarea tediosa. Lamentablemente, aho
ra se ha probado que este programa no puede existir (una gran decepción para los progra
De modo que este programa puede representarse mediante el número 175. ■ madores).
T e o ría d e la c o m p u ta c ió n 17.5 P ro b le m a s c o n s o lu c ió n y sin s o lu c ió n
EL PROBLEM A En vez de decir que el programa evaluador no existe y nunca podrá existir, el científico de
la computación dice: “El problema de paro no tiene solución”. Programa P
DE PARO H ü (número de Godel)
TIENE SOLUCIÓN
Prueba Demos una prueba informal sobre la inexistencia de este programa evaluador. Nuestro mé Extraño Si P termina, Extraño no termina.
todo a menudo se utiliza en las matemáticas: Suponga que éste existe y luego muestre que
Si P no termina, Extraño termina.
su existencia crea una contradicción. Por consiguiente, no puede existir. En este método usa
mos tres pasos para mostrar la prueba.
A (1 o 0)
PASO 1 En este paso, suponemos que existe un programa, llamado Evaluar. Éste puede
w h ile X
aceptar cualquier programa como P, representado por su número de Gódel, como entrada y
{
produce una salida ya sea de 1 o 0. Si P termina, la salida de Evaluar es 1; si P no termina,
}
la salida de Evaluar es 0 (figura 17.9).
Paso 2 en (a prueba
Programa P
(número de Godel)
Programa Extraño
E valuador i Si p termina, X es 1. (número de Godel)
Si P no termina, X es 0.
E xtraño
E v^uar -£f|¡¡¡ Si Extraño termina, Extraño no
F igura 1 7 .9 Paso 1 en prueba termina.
Contradicción ¿Ve alguna contradicción? Existe un número infinito de problemas que no pueden resolverse mediante una computado
PROBLEMAS
ra, uno de ellos es el problema de paro. Un método para probar que un problema no tiene
Si suponemos que Evaluar existe, tenemos las siguientes contradicciones: SIN SOLUCIÓN
solución es mostrar que si ese problema tiene solución, el problema de paro también tiene so
Extraño no termina si Extraño termina. lución. En otras palabras, probar que la capacidad de solución de un problema da como re
Extraño termina si Extraño no termina. sultado la capacidad de solución del problema de paro.
T e o ría d e la c o m p u ta c ió n 17.7 R esu m e n
PROBLEMAS Existen muchos problemas que pueden resolverse mediante una computadora. Con frecuen
CON SOLUCIÓN cia, queremos saber cuánto tiempo le toma a la computadora resolver ese problema. En otras
palabras, ¿qué tan complejo es el programa? 17.6 TERMINOS CLAVE
La complejidad del programa puede medirse de varias maneras distintas, tales como el
tiempo de ejecución, la memoria requerida y así por el estilo. Un método es el tiempo de eje cinta instrucción loop problema no polinomial
cución: ¿cuánto le toma al programa ejecutarse? controlador macro problema polinomial
dígito hexadecimal máquina de Turing problema sin solución
instrucción de decremento número de Godel
Una manera de medir la complejidad de un problema con solución es encontrar el número instrucción de incremento problema con solución
Com plejidad
de los problem as de operaciones realizadas por la computadora cuando ésta ejecuta el programa. De esta ma
nera, la complejidad es independiente de la velocidad de la computadora que ejecuta el pro
con solución
grama. Esta medida de la complejidad puede depender del número de entradas. Por ejemplo,
si un programa está procesando una lista (ordenando una lista), la complejidad depende del
número de elementos en la lista.
17.7 RESUMEN
Notación de orden O Con la velocidad de las computadoras actuales, no estamos tan
■ La teoría de la computación puede ayudar a los científi B El controlador en una máquina de Turing controla la ca
preocupados con los números exactos como con los órdenes de magnitud generales. Por
cos de la computación a responder preguntas intrínsecas. beza de lectura/escritura. Es la contraparte teórica del
ejemplo, si el análisis de dos programas muestra que uno ejecuta 15 operaciones (o una serie
CPU en las computadoras actuales.
de operaciones) mientras que el otro ejecuta 25, ambos son tan rápidos que usted no puede
fl Tres instrucciones (incremento, decremento y ciclo) son
ver la diferencia. Por otra parte, si los números son 15 contra 1 500, usted debe preocuparse. B Un diagrama de transición es una representación pictó
necesarias para simular todos los otros tipos de instruc
Esta simplificación de eficiencia se conoce como notación de orden O. Damos la idea de rica de los estados del controlador.
ciones en un lenguaje de computadora. Por ejemplo, us
esta notación sin ahondar en su definición y cálculo formales. En esta notación, el número de
ted puede lim p ia r una variable, asignar un valor a una B Una tabla de transición es una representación de una
operaciones (o una serie de operaciones relacionadas) se da como una función del número de
variable, copiar el valor de una variable a otra y sumar matriz de información respecto a los estados del con
entradas. La notación O (n) significa que un programa realiza n operaciones para n entradas;
los valores de dos variables usando las tres instrucciones trolador.
la notación O (n2) significa que un programa realiza n2 operaciones para n entradas.
básicas.
fl Usted puede asignar un número de Godel a cada progra
EJEM P LO 3 ma en un lenguaje de computadora específico.
fl La máquina de Turing puede implementar instrucciones
Imagine que ha escrito tres programas distintos para resolver el mismo problema. El pri en nuestro Lenguaje simple. B No hay un programa que pueda predecir si un programa
mero tiene una complejidad de O (log10 n), el segundo O (n) y el tercero O (n2). Supo terminará o no.
niendo una entrada de un millón, ¿cuánto tiempo se llevaría ejecutar cada uno de estos B Una máquina de Turing tiene una cinta, un controlador
programas en una computadora que realiza una instrucción en un milisegundo (un millón y una cabeza de lectura/escritura. fl La notación de orden O se utiliza para denotar la eficien
por segundo)? cia de un programa.
B La cinta en una máquina de Turing mantiene una secuen ■ Los problemas son ya sea con solución o sin solución.
S O L U C IÓ N cia de caracteres de un conjunto de caracteres aceptable. Los problemas con solución pueden clasificarse como
A continuación se muestra el análisis: polinomiales y no polinomiales.
B La cabeza de lectura/escritura en una máquina de Turing
Primer programa: n=l 000 000 O(log-.0 n ) 6 Tiempo - 4 6 ys en cualquier momento señala a un carácter. Después de fl Los problemas no polinomiales por lo general toman
Segundo programa: n=l 000 000 0{n) —4 1 000 000 Tiempo —> 1 see leer y escribir, la cabeza puede moverse a la izquierda, a más tiempo en resolverse que los problemas polinomia
Tercer programa: n = 1 000 000 0{n2) -a 10l2 Tiempo —4 277 hrs ® la derecha o permanecer inmóvil. les si el número de entradas es muy grande.
T e o ría d e la c o m p u ta c ió n 17.8 P rá c tic a | J | | | jj| j|
24. Después de leer un símbolo, la cabeza de lectura/escri 32. Usted utiliza_________para denotar la complejidad de
17.8 PRÁCTICA tura ________ . un programa.
a. se mueve a la izquierda a. el número de Turing
16. La instrucción d e _________repite una o más acciones se mueve a la derecha b. la notación de orden O
PREGUNTAS DE REPASO b.
a. incremento c. permanece en su sitio c. factoriales
1. ¿Por qué se necesita la teoría de la computación? d. el Lenguaje simple
b. decremento d. cualquiera de las opciones anteriores
2. Mencione y proporcione las funciones de las tres ins c. ciclo
33. Si la complejidad de O (n 3) es 8, entonces el número de
trucciones básicas que son la base de otras instruccio d. complemento 25. El (la )________ es la contraparte téorica del CPU.
entradas e s ________ .
nes en un lenguaje de computadora. a. disco
17. La instrucción d e resta un 1 de la variable. a. uno
a. incremento b. cinta
3. Muestre cómo la asignación del valor de una variable a b. dos
otra (con la variable original conservando su valor) uti b. decremento c. controlador c. tres
liza las tres instrucciones básicas. c. ciclo d. cabeza de lectura/escritura d. cuatro
d. complemento
4. ¿Cuál es la relación entre la máquina de Turing y nues 26. El controlador tiene_________estados. 34. Si la complejidad de O ( n ! ) es 24, entonces el número
tro Lenguaje simple? 18. Para limpiar una variable utilice las instrucciones de a. tres de entradas e s ________ .
b. cuatro a. uno
5. ¿Cuáles son los componentes de la máquina de Turing a. incremento c. un número finito de b. dos
y cuál es la función de cada componente? b. decremento
d. un número infinito de c. tres
6. ¿Cuál es una forma de delimitar los datos en una cinta c. ciclo d. cuatro
de máquina de Turing? d. byc 27. U n(a)________ es una representación gráfica de los es
tados y sus relaciones entre sí. 35. La complejidad de o {log*10 n ) y la computadora
7. Cuando una cabeza de lectura/escritura termina la lec 19. Para asignar un número a una variable, utilice las ins
a. diagrama de transición ejecuta un millón de instrucciones por segundo. ¿Cuán
tura y escritura de un símbolo, ¿cuáles son sus siguien trucciones d e ________ . to tiempo se toma la ejecución del programa si el núme
a. incremento b. diagrama de flujo
tes opciones? ro de entradas es 10 000?
b. decremento c. tabla de transición
8. ¿Cómo se relaciona un diagrama de transición con un a. un microsegundo
c. ciclo d. máquina de Turing
controlador de máquina de Turing? b. dos microsegundos
d. todas las anteriores
28. U n (a )________ muestra, entre otras cosas, el movi c. tres microsegundos
9. ¿Cómo se relaciona un diagrama de transición con una 20. Para copiar el valor de una variable a otra variable y que miento de la cabeza de lectura/escritura, el carácter leí d. cuatro microsegundos
tabla de transición? ¿Tienen la misma información? la primera variable mantenga su valor, utilice las ins do y el carácter escrito.
¿Cuál tiene más información? trucciones d e ________ . a. diagrama de transición EJERCICIOS
10. ¿Qué es un número de Godel? a. incremento b. diagrama de flujo 36. Simule la macro siguiente utilizando las instrucciones o
b. decremento macros previamente definidas en el Lenguaje Simple:
c. tabla de transición
11. ¿Cómo utilizaría un número de Godel para probar que c. ciclo
d. máquina de Turing Z <--- X - Y
el problema de paro no tiene solución? d. todas las anteriores
29. El número de Godel es un núm ero_________ asignado 37. Simule la macro siguiente utilizando las instrucciones o
12. ¿Cómo se puede indicar la eficiencia de un programa? 21. La macro que cambia los ceros en unos y un entero po
a un programa en un lenguaje específico. macros previamente definidas en el Lenguaje simple:
sitivo a 0 se llama m acro________ . if X < Y then Al else A2
13. Compare y contraste la complejidad de un problema a. binario
a. deer X
polinomial con solución y un problema no polinomial b. entero 38. Simule la macro siguiente utilizando las instrucciones o
b. Y X
con solución. macros previamente definidas en el Lenguaje simple:
c. comp (X) c. con signo
d. switch (X) d. sin signo if X > Y then Al else A2
PREGUNTAS DE OPCIÓN MÚLTIPLE 22. Una máquina de Turing tiene los siguientes componen 39. Simule la macro siguiente utilizando las instrucciones o
30. El número de Godel para d e e r X en decimal e s .
14. Un lenguaje de computadora simple puede diseñarse tes: ________ . macros previamente definidas en el Lenguaje simple:
a. 367
con s ó lo ________ instrucciones. a. cinta, memoria y cabeza de lectura/escritura while X > Y
b. 175
a. una b. disco, controlador y cabeza de lectura/escritura {
c. 174
b. dos c. cinta, controlador y cabeza de lectura/escritura acciones
d. 191
c. tres d. disco, memoria y controlador }
d. cuatro 31. El número de Godel para d e e r X en hexadecimal es 40. Simule la siguiente macro usando las instrucciones o
23. En una máquina de Turing, la (e l)_________mantiene
15. La instrucción d e _________suma un 1 a la variable. una secuencia de caracteres. macros previamente definidas en el Lenguaje simple:
a. BC while X < Y
a. incremento a. disco
b. decremento b. cinta b. CB {
c. ciclo c. controlador c. BF acciones
d. complemento d. cabeza de lectura/escritura d. AF }
T e o ría d e ia c o m p u ta c ió n
41. Simule la macro siguiente utilizando las instrucciones o 45. Muestre el diagrama de transición para la máquina de
macros previamente definidas en el Lenguaje simple: Turing que simula la macro Z <------ x + Y.
v/hile X == Y
46. Muestre el diagrama de transición para la máquina de
{ Turing que simula la macro z ^----- X * Y.
acciones
} 47. Muestre el diagrama de transición para la máquina de
Turing que simula la macro comp (X).
42. Muestre el diagrama de transición para la máquina de
48. Muestre el diagrama de transición para la máquina de
Turing que simula X---«---- 0.
Turing que simula la macro if x then Al else A2.
43. Muestre el diagrama de transición para la máquina de 49. ¿Cuáles el número de Gódel para la macro XI-<----- o?
Turing que simula X <---- n.
50. ¿Cuál es ei número de Gódel para la macro X2< n?
44. Muestre el diagrama de transición para la máquina de 51. ¿Cuál es el número de Godel para la macro
Turing que simula Y--<---- x. X3 <----- XI + X2?
Decimal H exadecimal Binario C arácter Descripción Decimal Hexadecimal B inario C arácter Descripción
0 00 0000000 NUL Nulo 48 30 0110000 0
1 01 0000001 SOH Inicio de encabezado 49 31 0110001 1
2 02 0000010 STX Inicio de texto 50 32 0110010 2
3 03 0000011 ETX Fin de texto 51 33 0110011 3
4 04 0000100 EOT Fin de transmisión 52 34 0110100 4
5 05 0000101 ENQ Indagación 53 35 0110101 5
6 06 0000110 ACK. Reconocimiento 54 36 0110110 6
7 07 0000111 BEL Campana 55 37 0110111 7
8 08 0001000 BS Retroceso 56 38 0111000 8
9 09 0001001 HT Tabulador horizontal 57 39 0111001 9
10 0A 0001010 LF Avance de línea 58 3A 0111010 Dos puntos
11 0B 0001011 VT Tabulador vertical 59 3B 0111011 ; Punto y coma
12 oc 0001100 FF Salto de página 60 3C 0111100 < Signo menor que
13 0D 0001101 CR Retomo de carro 61 3D 0111101 = Signo igual
14 0E 0001110 SO Desplazamiento hacia afuera 62 3E 0111110 > Signo mayor que
15 0F 0001111 SI Desplazamiento hacia dentro 63 3F 0111111 ? Signo de interrogación
16 10 0010000 DLE Escape de enlace de datos 64 40 1000000 @ Arroba
17 11 0010001 DCI Control de dispositivo 1 65 41 1000001 A
18 12 0010010 DC2 Control de dispositivo 2 66 42 1000010 B
19 13 0010011 DC3 Control de dispositivo 3 67 43 1000011 C
20 14 0010100 DC4 Control de dispositivo 4 68 44 1000100 D
21 15 0010101 NAK Reconocimiento negativo 69 45 1000101 E
22 16 0010110 SYN Inactividad síncrona 70 46 1000110 F
23 17 0010111 ETB Fin del bloque de transmisión 71 47 1000111 G
24 18 0011000 CAN Cancelar 72 48 1001000 H
25 19 0011001 EM Fin del medio 73 49 1001001 I
26 1A 0011010 SUB Sustituto 74 4A 1001010 J
27 IB 0011011 ESC Escape 75 4B 1001011 K
28 1C 0011100 FS Separador de archivos 76 4C 1001100 L
29 ID 0011101 GS Separador de grupos 77 4D 1001101 M
30 1E 0011110 RS Separador de registros 78 4E 1001110 N
31 1F 0011111 US Separador de unidades 79 4F 1001111 O
32 20 0100000 SP Espacio 80 50 1010000 P
33 21 0100001 ! Signo de exclamación 81 51 1010001 Q
34 22 0100010 ” Comillas dobles 82 52 1010010 R
35 23 0100011 # Signo de números 83 53 1010011 S
36 24 0100100 s Signo monetario 84 54 1010100 T
37 25 0100101 % Signo de porcentaje 85 55 1010101 U
38 26 0100110 & Ampersand 86 56 1010110 V
39 27 0100111 ’ Apostrofe 87 57 1010111 w
40 28 0101000 ( Paréntesis abierto 88 58 1011000 X
41 29 0101001 ) Paréntesis cerrado 89 59 1011001 Y
42 2A 0101010 * Asterisco 90 5A 1011010 z
43 2B 0101011 + Signo más 91 5B 1011011 Corchete de apertura
44 2C 0101100 Coma 92 5C 1011100 \ Diagonal invertida
45 2D 0101101 - Guión 93 5D 1011101 Corchete de cierre
46 2E 0101110 Punto 94 5E 1011110 Circunflejo
47 2F 0101111 / Diagonal 95 5F 1011111 _ Guión bajo
121 79 1001001 y
122 7A 1001010 z
123 7B 1001011 ( Llave de apertura
124 1C 1001100 Barra
125 ID 1001101 } Llave de cierre
126 7E 1001110 ~ Tilde
127 7F 1001111 DEL Eliminar
Tabla A.1 T abia A SC II (co n tin u ació n )
U n ic o d e U n ic o d e
ALFABETOS Los códigos de 0000 a 1FFF definen diferentes alfabetos. Algunos de ellos se muestran en SÍMBOLOS Los códigos 2000 a 2FFF definen los símbolos y las marcas de puntuación. Algunos de ellos
la tabla B .l. Observe lo siguiente respecto a esta tabla: se muestran en la tabla B.2.
Y MARCAS
1. Los códigos 0000 a 007F (Latín básico) son exactamente los mismos que se definie DE PUNTUACIÓN
ron para el código ASCII.
2. Los códigos 0080 a 00FF (complemento de Latín 1) son los mismos que los caracteres Intervalo Descripción
Latín 1 definidos por la ISO. El sistema operativo Windows utiliza la variación de estos 2000-2067 Puntuación general
símbolos. Los caracteres de Latín básico se complementan con caracteres de acento, 2070-209F Subíndices y superíndices
diéresis, el signo de interrogación de cierre y así por el estilo. 20A0-20CF Símbolos de moneda
20D0-20FF Combinación de marcas para símbolos
2100-214F Símbolos tipo carta
Intervalo Descripción
2150-218F Formatos de números
0000-007F Latín básico 2190-21FF Flechas
0080-00FF Complemento de Latín 1 Operadores matemáticos
2200-22FF
0100-017F Latín extendido A Miscelánea técnica
2300-23FF
Q180-024F Latín extendido B 2400-243F Imágenes de control
0250-02AF Extensión del alfabeto fonético internacional (IPA) Reconocimiento óptico de caracteres
2440-245F
02B0-02FF Espaciado de letras modificadoras Alfanumérico cerrado
2460-24FF
0300-036F Combinación de marcas diacríticas 2500-257F Bordes de cuadros
0370-03FF Griego Elementos de bloque
2580-259F
0400-04FF Cirílico 25A0-25FF Formas geométricas
Ü530-058F Armenio Símbolos misceláneos
2600-26FF
0590-05FF Hebreo Símbolos decorativos
2700-27BF
0600-06FF Árabe
2800-28FF Patrones Braile
0700-074F Sirio
2E80-2EFF Complemento radical CJK
0780-07BF Thaana
2F00-2FDF Kanji radical
0900-097F Deviagari Caracteres de descripción ideográfica
2FF0-2FFF
0980-09FF Bengali
OAOO-OA7F T a b ia 8 .2 Sím bolos y p u n tu ació n (2 0 0 0 a 2FFF)
Gumurkhi
0A80-0AFF Gujarati
0B00-0B7F Oriya
0B80-0BFF Tamul
A U X ILIA R E S CJIC Los códigos 3000 a 33FF definen los auxiliares chinos, japoneses y coreanos (CJK: Chíne
OCOO-OC7F Teluga
se, Japanese and Korean), algunos de los cuales se muestran en la tabla B.3.
0C8O-0CFF Kannada
ODOO-OD7F Malayalam
0D80-0DFF Cingalés
0E00-0E7F Tailandés Intervalo Descripción
0E80-0EFF Lao 3000-303F Símbolos y puntuación de CJK
0F00-0FFF Tibetano 3040-309F Hiragana
1000-109F Myanmar 30A0-30FF Katakana
10A0-10FF Georgiano 3100-312F Bopomofo
1100-11FF Hangul Jamo 3130-318F Jamo con compatibilidad Hangul
1200-137F Etíope 3190-319F Kanbun
13AO-13FF Cheroquí 31AO-31BF Bopomofo extendido
1400-167F Silábico unificado de los aborígenes canadienses 3200-32FF Letras y meses en CJK cerrados
1680-169F Ogham 3300-33FF Compatibilidad con CJK
16a0-16FF Rúnico
T a b la B 3 A uxiliares CJK (3 0 0 0 a 33FF)
1780-17FF Jemer
1800-18AF Mongol
1E00-1EFF Latín extendido adicional
1F00-1FFF Griego extendido
IDEOGRAMAS CJK Los códigos 4000 a 9FFF definen los ideogramas CJK unificados.
T a b ia B . l A lfab eto s (0 0 0 0 -1 FFF) UNIFICADOS
m Q H U n ic o d e
USO PRIVADO Los códigos E000 a F8FF son para uso privado.
l í n e a s d e fl u j o Las líneas de flujo se utilizan para mostrar el orden o la secuencia de las acciones en un pro
C .l SÍM BO LO S AU XILIARES grama. Estas líneas conectan los símbolos. Por lo general, un símbolo tiene algunas líneas de
entrada y algunas líneas de salida. El óvalo START tiene sólo una línea de salida. El óvalo de
Un diagrama de flujo es una combinación de símbolos. Algunos símbolos se usan para me STOP tiene sólo una línea de entrada. Acabamos de mostrar el uso de las líneas de flujo en
jorar la legibilidad o funcionalidad del diagrama de flujo. No se utilizan directamente para la figura C.2. Mostraremos otros flujos en los ejemplos que siguen.
mostrar instrucciones o comandos. Muestran los puntos de inicio y fin, el orden y la secuen
cia de acciones y cómo una parte de un diagrama de flujo se conecta con otra. Estos símbo CONECTORES Usted utiliza sólo un símbolo, un círculo con un número dentro de él, para mostrar la conec
los auxiliares se muestran en la figura C .l. tividad. Se utiliza cuando se llega al final de la página y el diagrama de flujo aún no termina.
En la parte inferior de la página utilice un conector para mostrar que el flujo lógico continúa
en la parte superior de la página siguiente. El número en el conector puede ser un número se
rial simple o puede ser una combinación de una página y un símbolo en la forma página.nú-
mero. La figura C.3 muestra un conector fuera de página.
SÍMBOLO NOMBRE APLICACIÓN
Muestra el principio o
( ) Terminal
fin de un algoritmo
i
Muestra el orden
Líneas de flujo de las acciones en un
algoritmo
*¡l
Muestra la continuidad
del algoritmo en
Conector la página siguiente
©
F ig u r a C . l S ím b o lo s au xiliares e n el d ia g ram a d e flujo
F ig u r a C .3 C o n e cto re s
INICIO Y FIN Un óvalo se utiliza para mostrar el inicio y fin de un algoritmo. Cuando lo utilice para mos
trar el principio de un algoritmo, escriba la palabra START (iniciar) en el óvalo; cuando lo
utilice para indicar el fin de un algoritmo, escriba la palabra STOP (detener) en el óvalo. C.2 SÍMBOLOS PRINCIPALES
Una de las primeras reglas de la programación estructurada es que cada algoritmo debe te
ner sólo un punto de entrada y uno de salida. Esto significa que un diagrama de flujo bien es Los símbolos principales se utilizan para mostrar las instrucciones o acciones necesarias pa
tructurado debe tener uno y sólo un inicio START, y uno y sólo un fin STOP. Los óvalos ra resolver el problema presentado en el algoritmo. Con estos símbolos, es posible represen
deben estar alineados para mostrar claramente el flujo de la acción en un algoritmo. Por ejem tar los cinco constructores de programación estructurada: secuencia, decisión, ciclo w h ile ,
plo, en la figura C.2 se muestra un diagrama de flujo para un programa que no hace nada. Es ciclo f o r y ciclo d o - w h ile .
te programa inicia y termina sin hacer nada.
Un óvalo también puede usarse para indicar el inicio y el fin de un módulo. Cuando lo uti Las instrucciones en secuencia simplemente representan una serie de acciones que deben con
INSTRUCCIONES
lice al principio escriba dentro de él el nombre del módulo (en lugar de la palabra START), tinuar en un orden lineal. Aun cuando las acciones representadas en el símbolo de secuencia
cuando al final escriba la palabra RETURN (regreso), en vez de STOP.
EN SECUENCIA
pueden ser muy complejas, por ejemplo una operación de entrada o una operación de salida,
el flujo lógico debe introducir el símbolo en la parte superior y fluir hacia fuera en la parte
inferior. Los flujos de secuencia no permiten que se tome ninguna decisión o haya cambios
de flujo dentro del símbolo.
C START ) Existen cinco símbolos de secuencia: instrucción nula, de asignación, de entrada/salida,
llamada de módulo e instrucción compuesta. Los últimos cuatro se muestran en la figura C.4.
'' Instrucción nula Vale la pena resaltar que do nothing (hacer nada) es una instrucción válida. Comúnmente se
le conoce como instrucción nula. La instrucción nula se considera una instrucción de secuen
( STOP )
cia debido a que no puede cambiar la dirección del flujo de un programa. No hay un símbo
lo para una instrucción nula. Es simplemente una línea de flujo. La figura C.2 es un ejemplo
Figura C.2 S ím b o lo s d e Inicio y fin
D ia g ra m a s d e flu jo C .2 S ím b o lo s p rin c ip a le s
Instrucción Aun cuando no hay un símbolo real que muestre una instrucción compuesta, encapsulamos
com puesta todas las instrucciones que hacen una instrucción compuesta en un rectángulo de línea dis
Instrucción de asignación
continua.
Instrucción de entrada/salida
INSTRUCCIONES A diferencia de la instrucción de secuencia, las instrucciones de selección pueden provocar
DE SELECCIÓN que el flujo del programa cambie. Permiten la ejecución de instrucciones seleccionadas y el
Llamada de módulo salto de otras instrucciones. En la programación estructurada hay dos instrucciones de selec
ción: bidireccional y multidireccional.
Instrucción compuesta
Selección
El símbolo bidireccional es el diamante. Cuando se utiliza para representar una instrucción
b idireccional
if-else, la lógica verdadera se muestra en la parte derecha del flujo lógico, y la condición
Figura C .4 S ím b o lo s de secu en cia
falsa, si la hay, se coloca en la parte izquierda del mismo. Con if-else, siempre debe ha
ber dos flujos lógicos, aunque a menudo uno de ellos es nulo. (Recuerde que la instrucción
nula se representa mediante una línea de flujo; no hay un símbolo para nulo.) Finalmente, la
instrucción termina con un conector donde los flujos verdadero y falso se unen. En este caso,
^ b l e ^ ^ J el conector no tiene nada dentro de él.
Aunque con frecuencia verá decisiones esbozadas con el inicio del flujo en la parte infe
rior del diamante, este estilo no es bueno. Aunque uno de los flujos sea nulo, éste debe fluir
de la izquierda o de la derecha del diamante de todos modos.
Figura C.5 in stru cció n de asig n ació n
La figura C.7 muestra el uso del símbolo de decisión en la instrucción if-else. Como
señalamos, siempre hay dos ramas. En una de ellas se permite tener una y sólo una instruc
ción. Desde luego, la instrucción en cada rama puede ser una instrucción nula o compuesta.
( START ( AVRG Pero sólo se permite una instrucción en cada rama; ni más, ni menos. También recuerde que
toda la figura es una sola instrucción, no dos o tres; es una sola instrucción if-else.
AVRG
( RETURN )
( STOP )
Instrucción de Un paralelogramo se utiliza para mostrar cualquier entrada o salida, por ejemplo, leer de un Selección La segunda aplicación del símbolo de selección utilizado en la programación estructurada es
entrada/salida teclado o escribir en la consola del sistema. la selección multibidireccional (figura C.8). Como puede ver, se pueden tener tantas ramas
m u ltidireccion al
como sea necesario. En cada rama, se permite tener una y sólo una instrucción. Desde luego,
Instrucción de El símbolo para llamar a un módulo es un rectángulo con dos barras verticales dentro. El dia la instrucción en cada rama puede ser una instrucción nula o compuesta. Pero recuerde que
llam ad a de m ó dulo grama de flujo para el módulo llamado debe estar en alguna otra parte. En otras palabras, sólo se permite una instrucción en cada rama; ni más ni menos. También recuerde que toda
cada vez que usted vea una instrucción de llamada de módulo, busque otro diagrama de flu la figura es una sola instrucción, no dos o tres.
jo con el nombre del módulo (figura C.6).
02 S ím b o lo s p rin c ip a le s
D ia g ra m a s d e flu jo
Figura C.8 Selección multidireccional Usted utiliza el mismo símbolo básico para el ciclo w h ile , pero debido a que sólo hay
una prueba de límite, las divisiones internas no son necesarias. La figura C. 10 muestra el for
mato básico de la instrucción w h ile .
INSTRUCCIONES
Hay tres instrucciones de ciclo: f o r , w h ile y d o -w h ile .
D E CICLO
Instrucción La tercera aplicación del símbolo de ciclo es la instrucción d o - w h ile (figura C.l 1). Debido
d o -w h ile a las diferencias inherentes entre los ciclos f o r y w h ile y el ciclo d o - w h ile , éste se pre
Instrucción f o r La instrucción f o r es un ciclo controlado por contador. En realidad es una instrucción com senta de manera diferente en un diagrama de flujo. Hay dos diferencias importantes entre
pleja que tiene tres partes, cualquiera de las cuales puede ser nula: (1) la inicialización del ci w h ile y d o -w h ile :
clo, la cual normalmente establece el contador del ciclo; (2) la prueba de límite y (3) las
instrucciones de acción de fin del ciclo, las cuales por lo general incrementan un contador. 1. Un ciclo w h ile es un ciclo de preprueba. El ciclo d o - w h ile es un ciclo de pos
prueba.
Dado que la instrucción f o r es un ciclo de preprueba, es posible que el ciclo no se ejecute.
Si la condición que termina es verdadera al inicio, el cuerpo de la instrucción f o r se salta. 2. El cuerpo de un ciclo w h ile puede no ejecutarse nunca. El cuerpo de un ciclo d o -
Como sucede en todos los constructores de programación estructurada, el cuerpo del ciclo w h ile se ejecuta al menos una vez.
puede contener una y sólo una instrucción. Como sucede con los otros constructores, esta ins
trucción puede ser nula o compuesta. La figura C.9 muestra el ciclo f o r .
Figura C .l 1 C iclo d o - w h i l
Instrucción w hile El segundo constructor de ciclo es la instrucción w h ile . La principal diferencia entre los ci
clos f o r y w h i l e es que el ciclo w h ile no es un ciclo de conteo. Ambos son ciclos de pre
prueba; esto significa que, como sucede con f o r , el cuerpo del ciclo w h ile puede no
ejecutarse nunca.
D .l C o m p o n e n te s
A lg o r it m o D .l
D .l COMPONENTES
U n a de las herramientas más comunes para definir algoritmos es el pséudocódigo. El pseu- Un algoritmo escrito en pséudocódigo puede decomponerse en varios elementos y cons
docódigo es una representación tipo idioma inglés del código requerido para un algoritmo. Es tructores.
parte inglés y parte código estructurado. La parte de inglés proporciona una sintaxis relajada
fácil de leer. La parte del código consiste de una versión ampliada de los constructores de al ENCABEZADO Cada algoritmo comienza con un encabezado que lo nombra. Por ejemplo, en el algoritmo
goritmos básicos: secuencia, selección e iteración. El algoritmo D .l muestra un ejemplo de DE ALGO RITM O D .l, el encabezado comienza con la palabra Algoritm o , la cual nombra al algoritmo como
pséudocódigo. “Encontrar Menor”.
PROPÓSITO, Después del encabezado, usted por lo general menciona el propósito y las pre y postcondicio
CONDICIONES nes, y devueltos por el algoritmo.
Y DEVOLUCIÓN
Propósito El propósito es una breve frase sobre lo que hace el algoritmo. Necesita describir sólo el pro
cesamiento del algoritmo general. No debe intentar describir todo el procesamiento. En el al
goritmo D .l, el propósito comienza con la palabra Propósito y continúa con el objetivo del
algoritmo.
Precondición La precondición lista cualquier requisito precursor. Por ejemplo, en el algoritmo D .l, se re
quiere que la hsta esté disponible para el algoritmo.
Postcondición La postcondición identifica cualquier efecto creado por el algoritmo. Por ejemplo, tal vez el
algoritmo especifica la impresión de los datos.
Devolución Creemos que todo algoritmo debe mostrar lo que devuelve el mismo. Si no hay nada que de
volver, aconsejamos que se especifique una devolución nula. En el algoritmo D .l, se devuel
ve el valor más pequeño encontrado.
NUMEROS DE Las instrucciones se numeran como se muestra en el algoritmo D .l (1, 2, 3 . ..). Las instruc
ciones dependientes se numeran de manera que muestren sus dependencias (1.1, 2.4 .. .).
INSTRUCCIÓN
CONSTRUCTORES Cuando Niklaus Wirth propuso por primera vez el modelo de programación estructurada, de
claró que cualquier algoritmo puede escribirse con sólo tres constructores de programación:
DE INSTRUCCIÓN
secuencia, selección y ciclo. Nuestro pséudocódigo contiene sólo estos tres constructores bá-
P s e u d o c ó d ig o
sicos. La implementación de estos tres constructores se basa en la riqueza del lenguaje de im
plementation. Por ejemplo, el ciclo puede implementarse como una instrucción whi le , do-
w h ile o f o r en el lenguaje C.
SECUENCIA Una secuencia es una serie de instrucciones que no alteran la ruta de ejecución dentro de un
algoritmo. Aunque es obvio que instrucciones como assign (asignar) y add (sumar) son ins
trucciones de secuencia, no es tan obvio que una llamada a otros algoritmos también se con
sidera una instrucción de secuencia. La razón radica en el concepto de programación
estructurada de que cada algoritmo tiene sólo una entrada y una salida. Además, cuando un
algoritmo se completa, regresa a la instrucción inmediatamente después de la llamada que lo
Diagramas
invocó. Por consiguiente, usted puede considerar de manera apropiada la llamada del algorit
mo como una instrucción de secuencia. El algoritmo D.2 muestra una secuencia.
A lg o ritm o D.2
de estructura ?. 1
i.-:- '.-AS
' >
7. estab lece x co m o el prim er n ú m ero
8 . estab lece y co m o el se g u n d o n ú m ero
9 . m ultiplica x por y y a lm acen a el resultad o en z
SELECCIÓN Las instrucciones de selección evalúan una o más alternativas. Si son verdaderas, se toma una
ruta. Si son falsas se toma una ruta distinta. La instrucción de selección típica es la selección E l diagrama de estructura es la principal herramienta de diseño para un programa. Como
bidirectional ( i f - e l s e ) . Aun cuando la mayor parte de los lenguajes proporciona seleccio herramienta de diseño, ésta se crea antes de comenzar a escribir un programa.
nes multidireccionales, no proporcionamos ninguna en el pseudocódigo. Las alternativas de la
selección se identifican mediante sangrías (sangrando), como se muestra en el algoritmo D.3.
A lg o ritm o D.3
5. if (x < y)
5.1 in crem en ta x
5 .2 im p rim e x
6. else
6.1 d ism in u ye y
6 .2 im p rim e y
7. end if
CICLO Un ciclo itera un bloque de código. El ciclo en nuestro pseudocódigo se parece más al ciclo
w h ile . Es un ciclo de preprueba; es decir, la condición se evalúa antes de ejecutar el cuerpo
del ciclo. Si la condición es verdadera, el cuerpo se ejecuta. Si la condición es falsa, el ciclo
termina. El algoritmo D.4 muestra un ejemplo de un ciclo.
A lg o ritm o D.4
SELECCIÓN La figura E.3 muestra dos símbolos para una función que es llamada por una instrucción de
E .l SIMBOLOS DEL DIAGRAMA DE ESTRUCTURA EN EL B I A C R A M A selección: la condición y el OR exclusivo.
DE ESTRUCTURA
La figura E.l muestra los diversos símbolos utilizados en un diagrama de estructura.
a. Función
En la figura E.3a, la función dolt contiene una llamada condicional a una subfunción,
fun. Si la condición es verdadera, se llama a fun. Si no es verdadera, se omite fun. Esta si
tuación se representa en un diagrama de estructura como un diamante en la línea vertical en
f. OR exclusivo
n
g. Flujo de datos
1 1
h. Bandera
tre los dos bloques de función.
La figura E.3b representa la selección entre dos funciones diferentes. En este ejemplo, la
función select elige entre doA y doB. Una y sólo una de ellas se llamará cada vez que se
ejecute la instrucción de selección. Esto se conoce como OR exclusivo; una de las dos alter
nativas se ejecuta excluyendo la otra. El OR exclusivo se representa mediante un signo más
Figura £.1 S ím b o lo s del d iag ra m a de estru ctu ra
entre los procesos.
Ahora considere el diseño encontrado para una serie de funciones que puede llamarse ex
clusivamente. Esto ocurre cuando una selección multidireccional contiene llamadas a varias
SÍMBOLO Cada rectángulo en un diagrama de estructura representa una función que usted escribe. El
funciones diferentes. La figura E.4 contiene un ejemplo de una instrucción de selección que
nombre en el rectángulo es el nombre que usted da a la función (figura E.2).
D E FUNCIÓN llama a diferentes funciones con base en el color.
Nombre de
selectCoIon
programa" ____________
-
(+) (+)
i
colorRedl ca-lorBluel ofcherColorj
initialize! process endOf Job
CICLOS EN Veamos cómo se representan los ciclos en un diagrama de estructura. Los símbolos son muy
EL DBACRAIVIA simples. Los ciclos pueden ir en círculos, así que el símbolo usado es un círculo. Los progra
madores usan dos símbolos de ciclo básicos. El primero es un ciclo simple, como se muestra
DE ESTRUCTURA
en la figura E.5a. El otro es el ciclo condicional, exhibido en la figura E.5b.
AS |
Cuando la función se llama de manera incondicional, como en un ciclo while, el círculo
41 fluye alrededor de la línea que está sobre la función llamada. Por otra parte, si la llamada es
condicional, como en una función llamada en una instrucción i f- e 1s e dentro de un ciclo,
F ig u r a £.2 E je m p lo d e un d ia g ra m a d e estru ctura entonces el círculo incluye un diamante de decisión en la línea.
D ia g ra m a s d e e s tru c tu ra
E.3 R e g la s d e lo s d ia g ra m a s d e e s tru c tu ra
A menudo, un programa contendrá varias llamadas a una función común. Estas llamadas
por lo general se esparcen en todo el programa. El diagrama de estructura mostrará la llama
da siempre que ésta ocurra lógicamente en el programa. Para identificar estructuras comunes,
la esquina inferior derecha del rectángulo estará sombreada. Si la función común es comple
ja y contiene subfunciones, estas subfunciones necesitan mostrarse sólo una vez. Debe mos
trarse una indicación de que las referencias incompletas contienen estructura adicional. Por
lo general esto se hace con una línea debajo de la función rectángulo y un símbolo de corte
(~). Este concepto se muestra en la figura E.7, la cual utiliza una función común, average,
en dos lugares diferentes del programa. No obstante, observe que nunca muestra gráficamen
te una función conectada a dos funciones que hacen una llamada.
F ig u r a E .5 C iclo s en un d ia g ra m a d e estru ctu ra
La figura E.6 muestra la estructura básica para una función llamada process. El círculo
está debajo de la función que controla el ciclo. En este ejemplo la instrucción de ciclo está ma i n
contenida en process y llama a tres funciones: A, B y c. La naturaleza exacta del ciclo no
puede determinarse a partir del diagrama de estructura. Puede ser cualquiera de los tres cons
tructores de ciclo básicos.
fu n average sun a v erage print
X
Process |
' I
G e t D a t a 1 Calculate!
<>
F ig u r a E .7 V arias llam ad as a la m ism a fu n ció n
A | B | C
F ig u ra E .6 Ejem p lo d e un ciclo
REGLAS DE LOS DIAGRAMAS DE ESTRUCTURA
FLUJO D E DATOS No es necesario mostrar los flujos de datos y las banderas, aunque puede ser útil en ciertas
A continuación resumimos las reglas analizadas en esta sección:
circunstancias. Si éstos se muestran, las entradas se colocan a la izquierda de la línea vertical
y las salidas, a la derecha. Cuando se incluyen, el nombre de los datos o la bandera también ■ Cada rectángulo en un diagrama de estructura representa una función escrita por el pro
deben indicarse. gramador.
■ El nombre en el rectángulo es el nombre que se usará en la codificación de la función.
■ El diagrama de estructura contiene sólo un flujo de función. No se indica ningún código.
E.2 LECTU R A DE D IA G R A M A S DE ESTRUCTURA ■ Las funciones comunes se indican mediante sombreado en la esquina inferior derecha
del rectángulo de la función.
Los diagramas de estructura se leen de arriba hacia abajo y de izquierda a derecha. Respec ■ Los flujos de datos y las banderas son opcionales. Cuando se utilizan, debe asignárseles
to a la figura E.2, esta regla dice que el Nombre de programa (main) consiste de tres subfun- un nombre.
ciones: initialize, process y endOfJob. De acuerdo con la regla de izquierda a ■ Los flujos de entrada y las banderas se muestran a la izquierda de la línea vertical; los
derecha, la primera llamada en el programa es initialize. Después de que se completa flujos de salida y las banderas se muestran a la derecha.
initialize, el programa llama a process. Cuando process está completo, el progra
ma llama a endOfJob. En otras palabras, las funciones en el mismo nivel denn diagrama de
estructura se llaman en orden de izquierda a derecha.
El concepto de arriba hacia abajo se demuestra mediante process. Cuando se llama a
process, ésta llama a su vez a A, B y C. Sin embargo, la función B no comienza su ejecu
ción hasta que A haya terminado. Mientras A está en ejecución, ésta llama a su vez a Al y A 2 .
En otras palabras, todas las funciones en una línea de proces s a A2 deben llamarse antes de
que la función B pueda comenzar.
F.1 T ra n s fo rm a d a c o se n o d isc re ta
El T R A N S F O R M A D A COSENO DISCRETA
En esta transformación, cada bloque de 64 pixeles pasa por una transformación llamada trans
formada coseno discreta (DCT: discrete cosine transform). La transformación cambia los 64
valores de modo que la relación relativa entre los pixeles se mantiene pero las redundancias
se revelan. La fórmula es la siguiente: P (x,y) define un valor particular en el bloque de ima
gen; T(m,n ) define un valor en el bloque transformado.
E n este apéndice, damos las bases matemáticas para las transformaciones de coseno discre
ta y de coseno discreta inversa.
donde'
. [ 1 de lo contrario
Acrónimos
archivo de reporte de errores: en un proceso de actualización base de datos relacional: un modelo de base de datos en el cual capa de transporte: la cuarta capa en el modelo OSI; respon en un solo chip.
de archivos, un informe de errores detectado durante la ac los datos se organizan en tablas relacionadas llamadas rela sable por la entrega extremo a extremo de todo el mensaje, círculo de calidad: un diagrama en forma circular de los pasos
tualización. ciones. capacidad de corrección: el factor de calidad que aborda la para la calidad del software,
archivo de texto: un archivo en el cual todos los datos se al bit: acrónimo de binary digit (dígito binario). En una compu facilidad con la cual pueden corregirse los errores en un mó dase: la combinación de datos y funciones unidos para formar
macenan como caracteres. Contrasta con archivo binario, tadora, la unidad de almacenamiento básico con un valor ya dulo. un tipo.
archivo de transacción: un archivo que contiene datos relati sea de 0 o 1. capacidad de pruebas: un atributo del software que mide la fa clear: en las máscaras, una técnica para hacer un bit 0; también
vamente transitorios que se utilizan para cambiar el conte bloque: un grupo de instrucciones tratadas como un todo, cilidad con la cual el software puede probarse como un siste conocida como forzar a 0.
nido de un archivo maestro, bus: el canal físico que enlaza los componentes de hardware en ma operacionai. cliente: en un programa cliente-servidor, la aplicación que soli
archivo ejecutable: un archivo que puede ejecutarse (correr); una computadora; el medio físico compartido utilizado en cargador: la función del sistema operativo que busca y trae un cita servicios de un servidor.
un programa. una red de topología de bus. programa ejecutable a la memoria para su ejecución, COBOL: un lenguaje de programación de negocios (COmmon
archivo fuente: el archivo que contiene instrucciones de pro bus de control: el bus que transporta información entre compo char: el tipo de dato en lenguaje C para carácter, Business-Oriented Languaje) desarrollado por Grace Hopper,
grama escritas por un programador antes de que se convier nentes de computadoras, ciclo controlado por contador: una técnica de ciclo en la cual codificación basada en diccionario: un método de compresión
tan en lenguaje de máquina; el archivo de entrada a un bus de datos: el bus dentro de una computadora utilizado para el número de iteraciones es controlado por un contador, en el cual un diccionario se crea durante la sesión,
ensamblador o compilador, transportar datos entre componentes, ciclo controlado por eventos: un ciclo cuya terminación se ba codificación de Huffman: un método de compresión estadísti
archivo hashed: un archivo en el cual se busca utilizando uno bus de dirección: la parte del bus del sistema utilizada para sa en la ocurrencia de un evento especificado. Contraste con co que utiliza código de longitud variable,
de los métodos de hashing, transferir direcciones, ciclo controlado por contador, codificación de Lempel Ziv (LZ): un algoritmo de compresión
archivo maestro: un archivo permanente que contiene los da bus serial universal (USB: universal serial bus): un controla ciclo de máquina: la secuencia repetitiva de eventos en la que utiliza un diccionario,
tos más actuales referentes a una aplicación, dor de dispositivos de E/S que conecta dispositivos más len ejecución de instrucciones de programa (fetch, decode y codificación de Lempel Ziv Welch (LZW): una versión mejo
archivo maestro nuevo: el archivo maestro que se crea desde tos, tales como el teclado y el ratón, a una computadora, execute). rada de la codificación LZ.
un archivo maestro viejo cuando se actualiza el archivo, búsqueda: el proceso que examina una lista para localizar uno ciclo de postprueba: un ciclo en el cual la condición de finali codificación de longitud de ejecución: un método de compre
archivo maestro viejo: el archivo maestro que se procesa jun o más elementos que contienen un valor designado conocido zación se prueba sólo después de la ejecución de las instruc sión sin pérdida en el cual una serie de símbolos se reempla
to con el archivo de transacción para crear el nuevo archivo como el argumento de búsqueda, ciones de ciclo. Contraste con ciclo de preprueba. za mediante el símbolo y el número de símbolos repetidos,
maestro. búsqueda binaria: un algoritmo de búsqueda en el cual el va ciclo de preprueba: un ciclo en el cual la condición de finali código: una serie de patrones de bits diseñados para representar
archivo secuencial: una estructura de archivos en la cual los lor de búsqueda se localiza al dividir repetidamente la lista a zación se prueba antes de la ejecución de las instrucciones de símbolos de texto,
datos deben procesarse en forma serial desde el primer ele la mitad. ciclo. Contraste con ciclo de postprueba, código de intercambio decimal codificado en binario extendi
mento en el archivo, búsqueda en una lista: Véase búsqueda, ciclo de vida del desarrollo del sistema: una secuencia de pa do (EBCDIC: Extended Binary Coded Decimal Interchan
área principal: en una lista hashed, la memoria que contiene búsqueda secuencial: una técnica de búsqueda utilizada con sos requeridos para desarrollar software; comienza con la ne ge Code): el conjunto de caracteres diseñado por IBM para
la dirección base, una lista lineal en la cual la búsqueda comienza con el primer cesidad de software y concluye con su implementación. sus sistemas de cómputo más grandes.
arista: una línea de grafo que no tiene dirección, elemento y continúa basta que el valor de un elemento igual ciclo de vida del software: la vida de un paquete de software, Código norteamericano de estándares para intercambio de
arreglo bidimensional: un arreglo con elementos que tiene al valor que se busca se localiza o hasta que el final de la lista ciclo do-while: en los lenguajes C y C++, un ciclo postprueba información (ASCII: American Standard Code for Infor
dos niveles de indexación. Véase también arreglo multidi se alcanza. controlado por eventos, mation Interchange): un esquema de codificación que define
mensional. byte: una unidad de almacenamiento, por lo general 8 bits, ciclo for: un ciclo controlado por contador en C y C++, los caracteres de control e imprimibles para 128 valores,
arreglo multidimensional: un arreglo con elementos que tie caja negra: un dispositivo con mecanismos internos desconoci ciclo while: un ciclo controlado por eventos en C y C++, cohesión: el atributo de un módulo que describe qué tan estre
nen más de un nivel de indexación. dos para el operador. ciclo: en un programa, un constructor de la programación estruc chamente se relacionan los procesos escritos en un módulo
ASCII: Véase Código norteamericano de estándares para in turado que provoca que una o más instrucciones se repitan; en entre sí.
tercambio de información. c un grafo es una línea que comienza y finaliza con el mismo cohesión casual: la combinación de procedimientos que no es
ASCH extendido: un conjunto de caracteres que amplía el calidad del software: software que satisface los requisitos ex vértice. tán relacionados,
ASCII básico. Los caracteres extras representan caracteres plícitos e implícitos del usuario, está bien documentado, ciencias de la computación: estudio de los temas relacionados cohesión de comunicación: un atributo de diseño en el cual los
para lenguajes extranjeros así como para otros símbolos. cumple con los estándares operativos de la organización y se con una computadora, procesos de módulo se relacionan debido a que comparten
ejecuta de manera eficiente en el cifrado: conversión de un mensaje a una forma ininteligible que los mismos datos,
B camino: una secuencia de nodos en los cuales cada vértice es es ilegible a menos que se descifre, cohesión de procedimiento: un atributo de diseño en el cual el
bandera: un indicador utilizado en un programa para designar adyacente al siguiente, cifrado a nivel de bits: un método de cifrado en el cual los da procesamiento dentro del módulo se relaciona con los flujos
la presencia o ausencia de una condición; switch, campo: la unidad nombrada de datos más pequeña que tiene tos primero se dividen en bloques de bits antes de cifrarse, de control. Se considera un modelo aceptable sólo en los ni
base de datos: una colección de información organizada, significado en la descripción de información. Un campo cifrado a nivel de carácter: un método de cifrado en el cual el veles más altos de un programa,
base de datos distribuida: una base de datos en la cual los da puede ser una variable o una constante, carácter es la unidad de cifrado, cohesión funcional: un atributo de diseño en el cual todo el
tos se almacenan en varias computadoras, capa física: la primera capa en el modelo OSI; responsable por cifrado de llave pública: un método de cifrado que utiliza dos procesamiento se relaciona con una sola tarea. El nivel más
base de datos distribuida fragmentada: una base de datos dis formar y transmitir bits a lo largo de la red. llaves; privada y pública. La llave privada se mantiene en se alto de cohesión,
tribuida en la cual se localizan los datos, capa de presentación: la sexta capa en el modelo OSI; respon creto; la llave pública se revela al público, cohesión lógica: un atributo de diseño que describe un módulo
base de datos distribuida replicada: una base de datos en la sable de dar formato a los datos, el cifrado/descifrado y la cifrado de Rivest-Shamir-Adleman (RSA): un método de ci en el cual el procesamiento dentro del módulo se relaciona
cual cada sitio aloja una réplica de otro sitio, compresión. frado de llave pública popular, sólo con el tipo general de procesamiento que se está reali
base de datos orientada a objetos: una base de datos en la cual capa de sesión: el quinto nivel en el modelo OSI; responsable cinta magnética: un medio de almacenamiento con capacidad zando. Se considera inaceptable en la programación estruc
los datos se tratan como estructuras (objetos). de establecer y terminar sesiones y controlar diálogos. secuencial. turada.
circuito integrado: transistores, cableado y otros componentes cohesión secuencial: un atributo de diseño en el cual el proce-
G lo s a rlo
samiento dentro del módulo es tal que los datos de un proce constante: un valor de datos que no puede cambiar durante la declaración de función: en C, una instrucción de prototipo que disco compacto grabable (CD-R): un disco compacto en el cual
so se utilizan en el siguiente proceso, ejecución del programa. Contraste con variable, describe el tipo de regreso de la función, el nombre y los pa el usuario sólo puede escribir una vez y leerlo muchas veces,
cohesión temporal: un diseño de módulo en el cual los proce constante literal: una constante sin nombrar codificada en una rámetros formales, disco maestro: el disco que aloja el archivo maestro en la actua
sos se combinan debido a que todos necesitan procesarse en expresión. decodificación: proceso de restaurar un mensaje codificado a lización de archivos,
la misma secuencia de tiempo, constante nombrada: una constante a la que el programador da su forma anterior a la codificación, disco magnético: un medio de almacenamiento con capacidad
cola de espera: una lista lineal en la cual los datos sólo pueden un nombre. definición de función: en C, la implementación de una decla de acceso aleatorio,
insertarse en un extremo, llamado la parte de atrás, y elimi constante simbólica: una constante que está representada por ración de función, disco versátil digital (DVD): un medio de almacenamiento óp
narse desde el otro extremo llamado la parte de adelante, un indentificador. definición: en C, el proceso que reserva memoria para un obje tico de acceso directo que puede almacenar hasta 17 gigaby
colisión: en hashing, un evento que ocurre cuando un algoritmo contador de programa: un registro en el CPU que mantiene to nombrado, tal como una variable o constante, tes (una película de 2 horas)
de hashing produce una dirección para una inserción y esa di la dirección de la siguiente instrucción a ejecutarse en la desbordamiento: la condición que resulta cuando no hay sufi diseño de arriba hacia abajo: un concepto de diseño de pro
rección ya está ocupada, memoria. cientes bits para representar un número en binario. Véase grama en el cual un diseño progresa a través de una descom
columna vertebral backbone: los medios y dispositivos que contenedor: un algoritmo de hashing, una localidad que puede también declaración, posición de las funciones, comenzando por la parte superior
crean conectividad para redes pequeñas, acomodar varias unidades de datos, descendiente: cualquier nodo en el camino desde el nodo actual del diagrama estructurado y trabajando hacia los módulos
comentario: en un programa C, una nota para el lector del pro controlador de entrada/salida (E/S): un dispositivo que con aúna hoja. interiores.
grama que es ignorada por el compilador, trola el acceso a los dispositivos de entrada/salida, descifrado: la recuperación del mensaje original desde los da dispositivo de almacenamiento auxiliar o secundario: cual
compilador: software del sistema que convierte un programa controlador: un componente de una máquina Turing que es tos cifrados. Véase cifrado, quier dispositivo de almacenamiento fuera de la memoria
fuente en código objeto ejecutable; tradicionalmente asociado equivalente al CPU de una computadora, descompresión: la acción realizada en los datos comprimidos principal; almacenamiento de datos permanente; almacena
con lenguajes de alto nivel. Véase también ensamblador, conversión binaria a decimal: el cambio de un número binario para obtener los datos originales, miento externo; almacenamiento secundario,
complemento a uno: la operación relacionada con bits que in a número decimal, diagrama de dase: un diagrama en la programación orientada dispositivo de almacenamiento óptico: un dispositivo de E/S
vierte el valor de los bits en una variable, conversión decimal a binaria: el cambio de un número deci a objetos que muestra la relación entre objetos, que utiliza luz (láser) para almacenar y recuperar datos,
complemento a dos: una representación de números binarios mal a número binario, diagrama de estado: un diagrama que muestra los diferentes dispositivo de almacenamiento secundario: Véase dispositivo
en la cual el complemento de un número se encuentra al com correo electrónico (e-mail): un método para enviar mensajes estados de un proceso, de almacenamiento auxiliar.
plementar todos los bits y sumar un 1 después de eso. • electrónicamente basados en la dirección del buzón de correo diagrama de flujo: una herramienta de diseño de programa en dispositivo de almacenamiento: un dispositivo E/S que puede
compresión: la reducción de un mensaje sin pérdida significa electrónico en vez del intercambio de anfitrión a anfitrión. la cual los símbolos gráficos estándar se utilizan para repre almacenar grandes cantidades de información para recuperar
tiva de información, CPU: Véase unidad central de procesamiento. sentar el flujo lógico de datos a través de una función, en un momento posterior,
compresión de datos con pérdida: compresión de datos en la cuadro bidirectional (cuadro B): en MPEG un cuadro que se diagrama estructurado: una herramienta de diseño y docu dispositivo de interconexión de redes: dispositivos como enruta-
cual se permite que algunos datos se pierdan; utilizada para relaciona tanto con los cuadros precedentes como con los mentación que representa un programa como un flujo jerár dores o gateways que conectan redes para formar una interred,
compresión de imagen, audio o video, posteriores. quico de funciones, dispositivo de no almacenamiento: un dispositivo E/S que
compresión de datos sin pérdida: compresión de datos en la cuadro intracodificado (cuadro I): en MPEG, un cuadro inde digital: una entidad discreta (no continua), puede comunicarse con la memoria del CPU, pero no puede
cual no se pierde ningún dato; utilizada para comprimir tex pendiente. dígito binario (bit): la unidad más pequeña de información almacenar información,
to o programas. cuadro pronosticado (cuadro P): en MPEG, un cuadro que se (0 o 1). dispositivo de salida: un dispositivo en el que puede escribirse
compresión de datos: la reducción de la cantidad de datos sin relaciona con el cuadro I o el cuadro B precedentes, dígito hexadecimal: un símbolo en el sistema hexadecimal, pero no leerse.
una pérdida significativa, cuantización: asignar un valor de una serie finita de valores, digrafo: un grado dirigido. dispositivos de conexión: dispositivos como enrutadores, puen
compresión espacial: compresión realizada por JPEG en un cuerpo: la parte de una función que contiene las definiciones e ins dirección base: en una lista hashed, la primera dirección produ tes y repetidores que conectan LAN o WAN.
cuadro. trucciones; el todo de una función con excepción de la declara cida por el algoritmo de hashing, documentación del sistema: un registro estructurado formal
compresión estadística: un método de compresión en el cual la ción del encabezado. Contraste con encabezado de función, dirección de puerto: la dirección utilizada en TCP y UDP para de un paquete de software,
codificación se basa en la frecuencia de los símbolos, cuerpo de la función: el código dentro de una función conteni distinguir un proceso de otro, documento activo: en el World Wide Web, un documento eje
compresión temporal: compresión realizada por MPEG en los do dentro de la definición de la función y las secciones de dirección física: la dirección de un dispositivo en el nivel de en cutado en el sitio local utilizando Java,
cuadros. instrucciones. lace de datos. documento dinámico: un documento web creado mediante la
computadora de conjunto de instrucciones complejas (CISC: dirección Internet: una dirección de 32 bits utilizada para defi ejecución de un programa en el sitio del servidor,
complex instruction set computer): una computadora que nir únicamente una computadora en Internet, documento estático: una página web que se crea en el sitio re
define un amplio conjunto de instrucciones, incluso aquellas datagrama: el paquete enviado mediante el protocolo IP. dirección IP: Véase dirección Internet, moto y es recuperada por el sitio local. Contraste con docu
que se utilizan con menor frecuencia, datagrama de usuario: el nombre de la unidad de datos utili dirección lógica: una dirección definida en el nivel de red. mento dinámico.
computadora de conjunto de instrucciones reducidas (RISC: zados por el protocolo VDP. directivas de preprocesador: comandos para el precompilador C.
reduced instruction set computer): una computadora que uti datagrama IP: la unidad de datos en el nivel de red. disco: un medio de almacenamiento directo auxiliar para datos
liza sólo las instrucciones utilizadas con frecuencia, datos de entrada: información del usuario que se presenta a de computadora y programas,
computadora personal (PC): una computadora diseñada para una computadora para ejecutar un programa, disco compacto: un medio de almacenamiento óptico de acce E/S aislada: un método de direccionamiento de un módulo E/S
uso individual. datos de salida: los resultados de ejecutar un programa de so directo con una capacidad de 650 megabytes, en el cual las instrucciones utilizadas para leer/escribir me
concentrador activo: un concentrador (hub) que regenera las computadora. disco compacto de memoria de sólo lectura (CD-ROM): un moria, difieren totalmente de las instrucciones utilizadas pa
señales recibidas (un repetidor), datos lógicos: datos con un valor ya sea de verdadero o falso, disco compacto en el cual el fabricante escribe los datos en ra leer/escribir en dispositivos de entrada/salida.
concentrador pasivo: un tipo de dispositivo de conexión que declaración: en C, la asociación de un nombre con un objeto, el disco y sólo pueden ser leídos por el usuario, E/S mapeada a memoria: un método de direccionamiento de
no regenera los datos, tal como un tipo, una variable, una estructura o una función. disco compacto escribible (CD-RW): un disco compacto en el un módulo E/S en un solo espacio de dirección; utilizada tan
conmutador: Véase bandera. Véase también definición. que puede escribirse muchas veces y leerse muchas veces. to para la memoria como para los dispositivos.
G lo s a rio G lo s a rio J | | !| ¡
E/S manejada por interrupciones: una forma de E/S en la cual espacio entre pistas: el vacío entre las pistas de un disco, fetch: la parte del ciclo de instrucciones en el cual la instrucción grafo dirigido: un grafo en el cual la dirección se indica en las
el CPU, después de emitir un comando de E/S, continúa sir espacio entre sectores: el vacío entre los sectores de un disco, a ser ejecutada se trae desde la memoria, líneas (arcos).
viendo otros procesos hasta que recibe una señal de interrup espacios en blanco: en C, el espacio, los tabuladores horizonta fiabilidad: el factor de calidad que trata la confianza en la ope grafo fuertemente conectado: un grafo en el cual hay un cami
ción de que la operación de E/S se ha completado. les y verticales, la línea nueva y los caracteres de cambio de ración total de un sistema. no desde cada nodo a cada otro nodo. Contraste con grafo dé
E/S programada: una forma de E/S programada en la cual el página. FIFO: Véase primero en entrar, primero en salir. bilmente conectado,
CPU debe esperar a que la operación de E/S se complete. esquema: el estándar de facto del lenguaje LISP, FireWire: un controlador de dispositivo de entrada/salida con grafo inconexo: un grafo que no está conectado,
EBCDIC: Véase Código extendido de intercambio decimal co estado de ejecución: en la administración de procesos, un esta una interfaz serial de alta velocidad que transfiere los datos grafo no dirigido: un grafo que consiste sólo de dos aristas; es
dificado en binario, do en el cual un proceso está utilizando el CPU. en paquetes. decir, un grafo en el cual no hay indicación de la dirección de
editor de texto: software que crea y mantiene archivos de texto estado de espera: el estado de una tarea que espera a ser carga firma digital: un método utilizado para autenticar ei emisor del las líneas.
tales como un procesador de palabras o un editor de progra da en la memoria, mensaje y preservar la integridad de los datos, grupo de expertos en imágenes en movimiento (MPEG: mo
ma fuente. estado de espera: un estado en el cual un proceso espera a re flexibilidad: el factor de calidad que trata la facilidad con la tion picture experts group): un método de compresión con
efecto secundario: un cambio en una variable que resulta de la cibir la atención del CPU. cual un programa puede cambiarse para cumplir con los re pérdida para comprimir video (y audio),
evaluación de una expresión; cualquier entrada/salida reali estado de listo: en la administración de procesos, el estado de quisitos de los usuarios, grupo unido de expertos en fotografía (JPEG: joint photograp
zada por una función llamada, procesamiento en el cual el proceso está esperando obtener flip: cambiar un bit de 0 a 1 o de 1 a 0. hic experts group): un estándar para comprimir imágenes.
atención del CPU. float: un tipo de punto flotante.
eficiencia: el factor de calidad que trata el uso óptimo del hardwa
re de computadora o la velocidad de respuesta para un usuario, estado de terminación: en la administración de procesos, un formato de doble precisión: un estándar para almacenar núme H
estado en el cual un proceso ha terminado de ejecutarse, ros de punto flotante en la memoria con mayor precisión que hardware: cualquiera de los componentes físicos de un sistema
ejecutar: poner en funcionamiento un programa,
estándar de cifrado de datos (DES): el método de cifrado del el formato de precisión simple. de cómputo, tales como un teclado o una impresora,
elemento de imagen (pixel): la unidad más pequeña de una
gobierno estadounidense para uso no militarizado y no clasi FORTRAN: un lenguaje de procedimiento de alto nivel utiliza hashing de contendor: un método de hashing que utiliza con
imagen.
ficado. do para aplicaciones científicas y de ingeniería, tenedores para reducir la colisión,
eliminación (dequeue): eliminación de un elemento de una cola,
estructura autorreferencial: una estructura que contiene un forzar a 0: el concepto de manipulación de bits utilizado para hashing de extracción de dígitos: un método de hashing que
encabezado: la información añadida al principio de un paquete
apuntador hacia sí misma, cambiar los bits seleccionados a 0. utiliza la extracción de dígitos,
para enrutamiento y otros propósitos,
estructura de datos: la representación sintáctica de ios datos forzar a 1: el concepto de manipulación de bits utilizado para hashing de residuo de división: un tipo de hashing en el cual la
encabezado de función: en una definición de función, la parte
organizados para mostrar la relación entre los elementos in cambiar los bits seleccionados de a 1. llave se divide por un número y el residuo se utiliza como
de la función que proporciona el tipo de regreso, el identifi-
dividuales. forzar al cambio: el concepto de manipulación de bits utiliza la dirección.
cador de función y los parámetros formales. Contraste con
explorador: un programa de aplicación que despliega un docu do para cambiar los bits seleccionados de 0 a 1 y de 1 a 0. hashing directo: un método de hashing en el cual la llave se ob
cuerpo.
mento del WWW. fracción: una parte de un número entero, tiene sin modificación algorítmica,
encapsulamiento: el concepto de diseño de ingeniería de soft
expresión: una secuencia de operadores y operandos que se re función: un bloque nombrado de código que realiza un proceso hashing doble: un método de resolución de colisiones de has
ware en el cual los datos y sus operaciones se incluyen jun
duce a un solo valor, dentro de un programa; una unidad ejecutable de código con hing en el cual la dirección de la colisión se produce para de
tos y se mantienen en forma separada de la aplicación que los
expresión primaria: una expresión que consiste de un solo sistente en un encabezado, el nombre de la función y un cuer terminar la siguiente dirección,
utiliza.
operador; la expresión de prioridad más alta, po, diseñada para realizar una tarea dentro del programa. herencia: capacidad para ampliar una clase para crear una cla
enrutador: un dispositivo que opera en tres primeras capas del
extracción de dígitos: selección de dígitos de una llave para se nueva mientras se mantienen los objetos de datos y los mé
modelo OSI que conecta redes independientes. Un enrutador
dirige un paquete con base en su dirección de destino,
usar como una dirección, G todos de la clase base y se añaden nuevos objetos de datos y
extraer (pop): la operación de eliminación en una pila. gateway: un dispositivo que conecta dos redes separadas que métodos.
enrutamiento: el proceso realizado por un enrutador.
utilizan diferentes protocolos de comunicación, hermanos: nodos en un árbol con el mismo padre,
ensamblador: software del sistema que convierte un programa
grado: el número de líneas incidentes a un nodo en un grafo. hipertexto: un documento con referencias a otros documentos,
fuente en código objeto ejecutable; asociado tradicionalmen F
grado de entrada: el número de líneas que entran a un nodo en histograma: una representación gráfica de una distribución de
te con un programa de lenguaje ensamblador. Véase también facilidad de cambio: el factor de calidad que aborda la facili
un árbol o grafo. frecuencia. Véase también arreglo de frecuencia,
compilador. dad con la cual los cambios pueden hacerse con precisión pa
grado de salida: el número de líneas que dejan un nodo en un hoja: un grafo o nodo de árbol con una grado de salida de 0.
entero: un número entero, un número sin una parte fraccionaria, ra un programa.
árbol o grafo. HTML: Véase lenguaje de marcación de hipertexto.
entero negativo: un entero que varía de infinito negativo a 0. factor de equilibrio: en un árbol, la diferencia entre la altura
gráfica de barras: una gráfica con valores representados me Hub: Un dispositivo que interconecta otros dispositivos en una
entero positivo: un entero que varía de 0 a infinito positivo, del subárbol derecho y el súbárbol izquierdo,
diante barras. red.
entero sin signo: un entero sin un signo; su valor varía entre 0 fase de análisis: una fase en el ciclo de vida del sistema de soft
gráfico de mapa de bits: una representación gráfica en la cual
y el infinito positivo, ware que define los requisitos que especifican lo que el siste
una combinación de pixeles define la imagen, I
entrega de nodo a nodo: la entrega de datos desde un nodo al ma propuesto va a lograr,
gráfico de vectores: el tipo de gráficos en el cual las líneas y las identificador: el nombre dado a un objeto en un lenguaje de
siguiente. fase de diseño: una fase en el ciclo de vida del sistema de soft
curvas se definen utilizando fórmulas matemáticas, programación,
entrega de origen a destino: la entrega de un paquete de datos ware que define cómo logrará el sistema lo que se definió en
grafo: una colección de nodos, llamados vértices, y segmentos de imagen: datos en la forma de gráficos o imágenes,
de la fuente al destino, la fase de análisis,
línea, llamados aristas o arcos, que conectan pares de nodos, inanición: un problema en la operación de un sistema operati
equilibrio: un atributo de nodo de árbol que representa la dife fase de implementación: una fase en el ciclo de vida del soft
grafo con peso: un grafo con líneas con peso. Cada línea tiene vo en el cual los procesos no pueden tener acceso a los recur
rencia en altura entre los subárboles del nodo, ware del sistema en la cual se crean los programas reales,
un entero que define el peso, sos que necesitan,
escribir una vez, leer muchas (WORM): otro nombre para un fase de pruebas: un fase en el ciclo de vida del software en la
grafo débilmente conectado: un grafo en el cual hay al menos incremento de prefijo: en C, el operador (por ejemplo, ++a)
CD-R. cual se realizan experimentos para probar que un paquete de
un nodo sin un camino para al menos uno de los otros nodos. que suma 1 a una variable antes de que su valor se utilice en
espacio de direcciones: un intervalo de direcciones. software funciona.
Contraste con grafo fuertemente conectado. una expresión. También conocido como incremento unario.
G lo s a rio G lo s a rio
índice: la dirección de un elemento en un arreglo, iteración: una sola ejecución de instrucciones en un ciclo. llave secreta: una llave que se comparte por dos participantes
lenguaje simbólico: un lenguaje de computadora, un nivel eli
infijo: una notación aritmética en la cual el operador se coloca minado del lenguaje de máquina, que tiene un identifícador en el cifrado de llave secreta.
entre dos operandos. nemónico para cada instrucción de máquina y tiene la capa
ingeniería de software: el diseño y la escritura de programas cidad de nombres de datos simbólicos. M
Java: un lenguaje de programación orientada a objetos para
estructurados. LIFO: Véase último en entrar, primero en salir, macro: un procedimiento diseñado personalmente que puede
crear programas independientes o documentos dinámicos en
inicializador; una instrucción que inicializa el valor de una va Internet. liga: en una estructura de lista, el campo que identifica el si utilizarse una y otra vez.
riable. guiente elemento en la lista, mantisa: la parte de un número de punto flotante que muestra
inicio de sesión local: un inicio de sesión en una computadora ligador: la función en el proceso de creación del programa en la precisión.
conectada directamente a la terminal, L la cual un módulo de objeto se une a funciones precompila- máquina analítica: la computadora inventada por Charles Bab
inicio de sesión remoto: inicio de sesión en una computadora lenguaje C++: un lenguaje orientado a objetos desarrollado por das para formar un programa ejecutable, bage.
conectada a la computadora local, Bjame Stroustrup. línea de tiempo: un atributo de softwarte que mide la rapidez de máquina de Turing: un modelo de computadora con tres com
lenguaje C: un lenguaje de procedimiento desarrollado por un sistema para los requisitos de tiempo de un usuario, ponentes (cinta, controlador y cabeza de lectura/escritura)
insertar (enqueue): insertar un elemento en una cola de espera,
Dermis Ritchie. línea: un elemento de grafo que conecta dos vértices en el gra que puede implementar instrucciones en un lenguaje de
insertar (push): la operación de inserción de pila.
lenguaje de alto nivel: un lenguaje de programación (portátil) fo. Véase también arco y arista. computadora.
Instituto Nacional Norteamericano de Estándares (ANSI:
diseñado para permitir al programador concentrarse en la Linux: un sistema operativo desarrollado por Linux Torvalds máscara: una variable o constante que contiene una configura
American National Standards Institute): una organización
aplicación y no en la estructura de una computadora o siste para volver a UNIX más eficiente cuando se ejecuta en un ción de bits utilizada para controlar el arreglo de bits en una
que crea estándares en los lenguajes de programación, espe
ma operativo en particular, microprocesador Intel. operación relativa a los bits,
cificaciones eléctricas, protocolos de comunicación y así por
lenguaje de computadora: cualquiera de los lenguajes sintác LISP: un lenguaje de programación de procesamiento de listas matriz de adyacencia: un método de representación de un gra
el estilo.
ticos utilizados para escribir programas para computadoras, en el cual todo se considera una lista, fo que utiliza un arreglo para los vértices y una matriz (arre
instrucción compuesta: en algunos lenguajes de programa tales como el lenguaje de máquina, el lenguaje ensamblador, lista: un conjunto ordenado de datos contenidos en la memoria glo bidimensional cuadrado) para almacenar las aristas,
ción, una colección de instrucciones tratadas como una sola C, COBOL y FORTRAN, principal. Contraste con archivo, memoria: la memoria principal de una computadora consistente
por el lenguaje. lenguaje de consultas estructurado (SQL: Structured Query lista aleatoria: una lista sin orden de los datos, en memoria de acceso aleatorio (RAM) y memoria de sólo lec
instrucción de ciclo: una instrucción que provoca que el pro Language): un lenguaje de base de datos que incluye instruc lista de adyacencia: un método de representación de un grafo tura (ROM); utilizada para almacenar datos e instrucciones de
grama itere una serie de distintas instrucciones, ciones para definición, manipulación y control de la base de que utiliza una lista ligada para almacenar los vértices y un programa.
instrucción de decremenío: la instrucción que resta 1 del valor datos. arreglo de lista ligada bidimensional para almacenar las aristas, memoria caché: una memoria pequeña y rápida utilizada para
de una variable. lenguaje de máquina: las instrucciones nativas para el procesa lista de parámetros: una lista de valores pasados a una función, almacenar elementos de datos que se están procesando,
instrucción de expresión: en C, una expresión terminada con dor central de una computadora que son ejecutables sin en lista doblemente ligada: una colección ordenada de datos en la memoria de acceso aleatorio (RAM: random access memory):
un signo de punto y coma, samblaje o compilación, cual cada elemento contiene dos apuntadores, uno que apun la memoria principal de la computadora que almacena datos
instrucción de incremento: en C o C++, la instrucción que su lenguaje de marcación de hipertexto (HTML: hypertext mar y programas.
ta hacia el elemento previo y uno que apunta hacia el elemen
ma un 1 a un valor entero, kup language): el lenguaje de computadora para especificar memoria de sólo lectura (ROM: read-only memory): memo
to siguiente.
instrucción de selección: una instrucción que elige entre dos o el contenido y formato de un documento web; permite que el ria permanente con contenido que no puede cambiarse,
lista general: una lista en la cual los datos pueden insertarse o
más alternativas. En C, las instrucciones if-else y switch, texto incluya fuentes, pantallas, gráficos incrustados y víncu memoria de sólo lectura programable (PROM): memoria con
eliminarse en cualquier parte de la lista,
instrucción if-else: un constructor que implementa una selec los a otros documentos, contenidos eléctricamente establecidos por el fabricante; el
lista ligada: una estructura de lista lineal en la cual el orden de
ción de dos sentidos, lenguaje de procedimiento (procedual): un lenguaje de com usuario puede restablecerla,
los elementos se determina mediante campos de liga,
instrucción switch: la implementación C de la selección de putadora en el cual una serie de instrucciones por lo general memoria de sólo lectura programable borrable electrónica
lista ligada individualmente: una colección ordenada de datos
múltiples rutas. se ejecuta una a una de principio a fin. mente (EPROM): memoria de sólo lectura programable
en la cual cada elemento contiene sólo la localización del si
instrucción: un comando que indica qué hacer a una compu lenguaje de programación: un lenguaje con palabras limitadas que puede programarse y borrarse usando impulsos electró
guiente elemento. Contraste con lista doblemente ligada,
tadora. Un constructor sintáctico en C que representa una y reglas limitadas diseñadas para resolver problemas en una nicos sin ser eliminados de la computadora,
lista lineal: una estructura de lista en la cual cada elemento, ex
operación en una función. computadora. memoria de sólo lectura programable y borrable electrónica
cepto el último, tiene un sucesor único,
Interconexión de sistemas abiertos (OSI: Open Systems Inter lenguaje declarativo: un lenguaje de computadora que utiliza mente (EEPROM: electronically erasable programmable
lista ordenada: una lista en la cual los elementos se acomodan
connection): un modelo de siete capas diseñado por la ISO el principio del razonamiento lógico para contestar consultas, read-only memory): memoria de sólo lectura programable
de manera que los valores clave se coloquen en secuencia as
como una guía para comunicación de datos, lenguaje ensamblador: un lenguaje de programación en el cual que puede programarse; el borrado de la EPROM requiere
cendente o descendente,
interfaz de usuario: un programa que acepta solicitudes de los liay una correspondencia uno a uno entre el lenguaje de má que ésta sea removida de la computadora,
lista restringida: una lista en la cual los datos sólo pueden aña
usuarios (procesos) y las interpreta para el resto del sistema quina de la computadora y el conjunto de instrucciones sim memoria primaria: la memoria de alta velocidad de una
dirse o eliminarse en los extremos de la lista y el procesa
operativo bólicas del lenguaje, computadora, donde los programas y los datos se almacenan
miento está restringido a operaciones en los datos de los
interfaz pequeña de sistemas de computadoras (SCSI: small lenguaje funcional: un lenguaje de programación en el cual un cuando el programa se está ejecutando. La memoria primaria
extremos.
computer system interface): un controlador de dispositivo de programa se considera una función matemática, es volátil, lo cual significa que el contenido se borra cuando
llamada de función: una instrucción que invoca a otra función,
E/S con una interfaz paralela. lenguaje imperativo: otro nombre para un lenguaje de procedi la computadora se apaga; memoria principal,
llave: uno o más campos utilizado para identificar un registro
Internet: la interred global que utiliza el conjunto de protoco miento. memoria principal: Véase memoria primaria.
(estructura).
los TCP/IP. lenguaje natural: cualquier lenguaje hablado, memoria virtual: la memoria que resulta de intercambiar pro
llave privada: una de las dos llaves utilizadas en el cifrado de
interoperabilidad: el factor de calidad que trata la capacidad lenguaje orientado a objetos: un lenguaje de programación en gramas hacia el interior y el exterior de la memoria durante
llave pública.
de un sistema para intercambiar datos con otro sistema, el cual los objetos y las operaciones a aplicar en ellos se in la ejecución para dar la impresión de un memoria principal
llave pública: una de las llaves en un cifrado de llave pública;
interred: abreviatura de interconexión de redes. cluyen juntas. más grande de la que realmente existe.
se revela al público.
H Q UH G lo s a rio G lo s a rio
método de acceso: una técnica para leer datos desde un dispo nivel interno: la parte de la base de datos que define dónde se operación OR: una operación binaria que da como resultado orden interno: un orden en el cual todos los datos se alojan en el
sitivo de almacenamiento secundario (auxiliar), almacenan en realidad los datos, una salida de 0 sólo si las dos entradas son 0; de lo contrario almacenamiento principal durante el proceso de ordenación,
microcompuíadora: una computadora lo suficientemente pe nodo: en una estructura de datos, un elemento que contiene tan es 1. ordenación: el proceso que ordena una lista o un archivo.
queña para que quepa en un escritorio, to datos como elementos estructurales utilizados para proce operación uñaría: una operación que necesita sólo un operan Organización para la Estandarización Internacional (ISO:
modelo: la especificación establecida por una organización de sar la estructura de datos, do de entrada. International Standard Organization): una organización
estándares como un lineamiento para diseñar redes, nodo interno: cualquier nodo de árbol excepto la raíz y las ho operador: la señal sintáctica que representa una acción sobre mundial que define y desarrolla estándares para una variedad
modelo cliente-servidor: el modelo de interacción entre dos jas; un nodo en medio de un árbol, los datos (el operando). Contraste con operando, de tópicos.
programas de aplicación en los cuales un programa en un ex normalización: en una base de datos relacional, el proceso de operador AND: el operador utilizado en la operación AND.
tremo (cliente) solicita un servicio de un programa en el otro eliminar redundancias, operador aritmético: el operador utilizado en una operación P
extremo (servidor), notación O: una medida de la eficiencia de un algoritmo con aritmética. padre: un árbol o nodo de grafo con un grado de salida mayor
modelo de cascada: un modelo de desarrollo de software en el sólo el factor dominante considerado, operador binario: un operador que se utiliza en una operación que 0; es decir, con sucesores,
cual cada módulo se termina completamente antes de que co notación hexadecimal: un sistema de numeración con base 16. binaria. página: una de una serie de secciones de igual tamaño de un
mience el siguiente módulo, Sus dígitos son 0,1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. operador de actualización: en una base de datos relacional, un programa.
modelo de red: un modelo de base de datos en el cual un regis notación octal: un sistema de numeración con una base de 8; operador que cambia algunos valores en una tupia, página web: una unidad de hipertexto o hipermedia disponible
tro puede tener más de un registro padre, los dígitos ocíales son de 0 a 7. operador de asignación: en C y C++, el operador que asigna en el Web.
modelo de von Neumann: un modelo de computadora (consis número de Godel: un número asignado a cada programa que un valor a una variable, página principal: la página principal de un documento de hi
tente en memoria, la unidad lógica aritmética, la unidad de puede escribirse en un lenguaje específico, operador de diferencia: un operador en una base de datos rela pertexto disponible en el Web.
control y los subsistemas de entrada/salida), sobre el cual la número de punto flotante: un número que contiene tanto un cional que se aplica a dos relaciones con los mismos atribu paginación: una técnica de multiprogramación en la cual la me
computadora moderna se fundamenta, entero como una fracción, tos. La tupias en la relación resultante son aquellas que están moria se divide en secciones de igual tamaño llamadas bloques,
modelo jerárquico: un modelo de base de datos que organiza número entero: Véase entero. en la primera relación pero no en la segunda, paginación bajo demanda y segmentación: un método de asig
datos en una estructura tipo árbol en el que se pueden reali operador de eliminación (delete): en una base de datos rela nación de memoria en el cual una página o un segmento de un
zar búsquedas desde la parte superior a la parte inferior 0 cional, el operador que elimina una tupia de la relación, programa se carga en la memoria sólo cuando se requiere,
modelo incremental: un modelo en ingeniería de software en el operabilidad: el factor de calidad que trata la facilidad con la operador de inserción: un operador en una base de datos rela paginación bajo demanda: un método de asignación de me
cual todo el paquete se construye con cada módulo confor cual puede utilizarse un sistema, cional que inserta una tupia en una relación, moria en el cual una página de un programa se carga en la
mado por sólo una consola de comandos; los módulos ganan operación AND: una de las operaciones a nivel de bits; el resul operador de intersección: un operador en el álgebra relacional memoria sólo cuando ésta se requiere,
complejidad con cada interación del paquete, tado de la operación es 1 sólo si ambos bits son 1; de lo con que encuentra tupias comunes entre dos relaciones, palabras clave: Véase palabras reservadas,
modelo relacional: Véase base de datos relacional. trario es 0. operador de juntura: un operador en una base de datos rela palabras reservadas: la serie de palabras en un lenguaje que
módulo: Véase subalgoritmo. operación aritmética: una operación que toma dos números y cional que toma dos relaciones y las combina con base en sus tiene una interpretación predeterminada y no puede estar de
módulo objeto: la salida de una compilación que consiste de crea otro número, atributos comunes, finida por el usuario,
instrucciones en lenguaje de máquina, operación binaria: una operación que necesita dos operandos operador de proyección: un operador de álgebra relacional (uti
parámetro: un valor pasado a una función,
módulo de la división: dividir dos números y mantener el residuo, de entrada. lizado en bases de datos relaciónales) en el cual una columna
parámetros formales: la declaración de parámetros en una fun
monitor: la unidad de despliegue visual de un sistema de cómpu operación de actualización: una operación en una base de datos o columnas de datos se extraen con base en un criterio dado,
ción para describir los tipos de datos que se pasarán a la función,
to; por lo general un dispositivo de despliegue de video, relacional en la cual se cambia la información sobre una tupia, operador de selección: un operador de álgebra relacional que
parámetros reales: los parámetros en la instrucción de llamada
monoprogramación: la técnica que permite que sólo un pro operación de diferencia: una operación en dos conjuntos. El extrae tupias con base en el criterio seleccionado,
de función que contienen los valores que se van a pasar a la
grama esté en la memoria a la vez. resultado es el primer conjunto menos los elementos comu operador de unión: en el álgebra relacional, un operador que
función. Contraste con parámetros formales,
muesíreo: tomar medidas a intervalos iguales, nes en las dos conjuntos, combina filas de dos relaciones,
operación de intersección: una operación en dos conjuntos en operador lógico: un operador que realiza una operación lógica, particionamiento: una técnica utilizada en la multiprograma
multiprogramación: una técnica que permite a más de un pro
operador NOT: el operador utilizado en una operación NOT. ción que divide la memoria en secciones de longitud variable.
grama residir en la memoria mientras se está procesando. la cual el resultado es un conjunto con los elementos comu
nes a los dos conjuntos, operador OR: el operador usado en una operación OR. Pascal: un lenguaje de programación diseñado con un objetivo
N operación de proyección: una operación en una base de datos operador relacional: un operador que compara dos valores, específico en mente: enseñar programación a los novatos al
nivel: un atributo de un nodo que indica su distancia desde la raíz, relacional en la cual se selecciona una serie de columnas con operador unario: un operador que realiza una operación uñaría, enfatizar el método de programación estructurada,
nivel conceptual: relativo a la estructura lógica de la base de base en un criterio, operador XOR: el operador utilizado en una operación XOR. paso de ordenación: un ciclo durante el cual todos los elemen
datos. Trata con el significado de la base de datos, no con su operación de selección: una operación en una base de datos re operando: un objeto en una instrucción en la cual se realiza una tos se prueban mediante un programa de ordenación,
implementación física, lacional que selecciona una serie de tupias, operación. Contraste con operación. paso por referencia: una técnica de paso de parámetros en la
nivel de aplicación: el séptimo nivel en el modelo OSI; propor operación de unión: una operación en dos conjuntos en la cual OR exclusivo (XOR): una operación lógica binaria en la cual el cual la función llamada se refiere a un parámetro pasado uti
ciona acceso a los servicios de red. el resultado contiene todos los elementos de ambos conjun resultado es verdadero sólo si uno de los operandos es verda lizando un alias,
nivel de enlace de datos: el segundo nivel en el modelo OSI; tos sin duplicados, dero y el otro falso, paso por valor: una técnica de paso de parámetros en la cual el
responsable de la entrega de datos nodo a nodo, operación de XOR: una operación relacionada con bits cuyo orden por burbuja: un algoritmo de ordenación en el cual ca valor de una variable se pasa a una función,
nivel de red: el tercer nivel del modelo OSI, responsable de la resultado es 1 sólo si uno de los operandos es 1. da paso a través de los datos mueve (burbujea) el elemento patrón de bits: una secuencia de bits (0 y 1).
entrega de paquetes desde el anfitrión original hasta el desti operación lógica: una operación en la cual el resultado es un inferior al principio de la porción sin ordenar de la üsta. PERL: un lenguaje de alto nivel (con una sintaxis similar a C)
no final. valor lógico (verdadero o falso), ordenamiento por inserción: un algoritmo de ordenación en el que utiliza expresiones regulares que permiten el análisis sin
nivel externo: la parte de la base de datos que interactúa con el operación NOT: la operación que cambia un bit 0 a 1 o un bit cual el primer elemento de la porción de la lista sin ordenar táctico de una cadena de caracteres en componentes,
láser. 1 aO. se inserta en su posición adecuada en la lista ordenada. permutación: revoltura.
G lo s a rio G lo s a rio
pila: una estructura de datos restringida en la cual los datos pue protocolo de control de transmisión/protocolo Internet (TC recorrido en past orden: un método de recorrido de árbol bi resolución de colisiones: un proceso algorítmico que determina
den insertarse y eliminarse sólo en un extremo, llamado cima, P/IP): el protocolo oficial de Internet, formado por cinco ni nario en el cual el subárbol izquierdo se procesa primero, lue una dirección opcional después de una colisión,
pista: parte de un disco, veles. go el subárbol derecho y después la raíz, resolución de direccionamiento abierto: un método de resolu
pixel: Véase elemento de imagen. protocolo de datagrama de usuario (UDP): uno de los proto recorrido en pre orden: un recorrido de árbol binario en el cual ción de colisiones en el cual la nueva dirección está en el área
planificación: asignar los recursos de un sistema operativo a di colos de capa de transporte en el conjunto de protocolos el subárbol izquierdo se recorre primero, la raíz se recorre en base.
ferentes programas, y decidir cuáles programas deben utili TCP/IP. seguida y el subárbol derecho se recorre al último, resolución de lista ligada: un método de resolución de colisio
zar cuáles recursos y cuándo, protocolo de transferencia de archivos (FTP: file transfer pro recorrido en orden: un método de recorrido de árbol binario en nes en hashing que utiliza un área separada para los sinóni
planificador de procesos: un mecanismo del sistema operativo tocol): un servicio del nivel de aplicación en TCP/IP para el cual la raíz se recorre después del subárbol izquierdo y an mos, los cuales se mantienen en una lista ligada,
que despacha los procesos que esperan obtener acceso al CPU. transferir archivos desde y hacia un sitio remoto, tes del subárbol derecho, retroceso: un proceso algorítmico, por lo general implementa-
planificador de tareas: un planificador que selecciona una ta protocolo de transferencia de hipertexto (HTTP: hypertext recorrido primero en amplitud: un método de recorrido gráfi do con una pila o a través de la recursion, que recuerda la ru
rea para su procesamiento de una cola de espera de tareas que transfer protocol): el protocolo que se utiliza para recuperar co en el cual los nodos adyacentes al nodo actual, se proce ta a través de una estructura de datos y puede regresar por la
aguardan a ser movidas a la memoria, páginas web en Internet, san antes que sus descendientes, ruta en orden inverso,
polimorfismo: en C++, d efin ir varias operaciones con el mismo recorrido primero en profundidad: un método de recorrido en reutilización: el factor de calidad que trata la facilidad con la
protocolo Internet (IP): el protocolo de nivel de red en el pro
nombre que pueden hacer diferentes cosas en las clases rela el cual todos los descendientes de los nodos se procesan an cual el software puede utilizarse en otros programas.
tocolo TCP/IP responsable de la transmisión de paquetes de
cionadas. tes de cualesquier nodos adyacentes (hermanos),
una computadora a otra a través de Internet,
portabilidad: el factor de calidad relacionado con la facilidad con
protocolo simple de transferencia de correo (SMTP): el pro
recorrido: un proceso algorítmico en el cual cada elemento en s
la cual un sistema puede moverse a otros entornos de hardware, una estructura se procesa una vez y sólo una vez. sector: una parte de una pista en un disco,
tocolo TCP/IP para servicio de correo electrónico,
postergación: cambiar el orden de acceso de los datos, recuperación: la localización y devolución de un elemento en segmentación bajo demanda: un método de asignación de me
pruebas de caja blanca: pruebas de programa en las cuales se
postfijo: una notación aritmética en la cual el operador se colo una lista. moria en el cual un segmento de un programa se carga en la
considera el diseño interno del programa; también se le co
ca después de sus operandos. recursividad: un diseño de función en el cual la función se lla memoria sólo cuando éste se necesita,
noce como pruebas de caja clara,
precisión: el factor de calidad que trata la repetibilidad de un ma a sí misma. seguridad: el factor de calidad que trata la facilidad o dificultad
pruebas de caja negra: pruebas basadas en los requisitos del
sistema. red: un sistema de nodos conectados que pueden compartir re con la cual un usuario no autorizado puede acceder a los datos,
sistema en lugar de un conocimiento del programa,
prefijo: una notación aritmética en la cual el operador se colo cursos. selección bidireccional: una instrucción de selección que es
pseudocódigo: instrucciones del tipo del idioma inglés que si
ca antes de los operandos. red de área amplia (WAN): una red que abarca una distancia capaz de evaluar sólo dos alternativas. En C, la instrucción
guen una sintaxis definida libremente y se utilizan para ex
preprocesador: la primera fase de una compilación C en la cual geográfica grande, if-else. Contraste con la selección de múltiples caminos,
presar el diseño de un algoritmo o función,
las instrucciones fuente se preparan para la compilación y se red de área local (LAN: local area network): una red que co selección raultidireccional: una instrucción de selección que es
puente: un dispositivo de conexión que opera en los primeros dos
cargan cualesquier bibliotecas necesarias, necta dispositivos dentro de un área limitada, capaz de evaluar más de dos alternativas. En C, la instrucción
niveles del modelo OSI con capacidades de filtrado y envío,
primero en entrar, primero en salir (FIFO: first en, first out): red de área metropolitana (WAN): una red que puede abarcar switch. Contraste con selección de dos caminos,
punto de sincronización: un punto introducido en los datos
un algoritmo en el cual el primer elemento de datos que se una ciudad o un pueblo, señal (elemento sintáctico): un constructo sintáctico que repre
por el nivel de sesión para propósito de control de flujo y de
añade a una lista es el primero que se elimina de la lista, red de computadoras: Véase red. senta una operación, una bandera o una pieza de datos,
errores.
problema sin solución: un problema que no puede resolverse redes interconectadas: una red de redes, servidor: en un sistema cliente-servidor, la computadora centrali
punto muerto: una situación en la cual los recursos requeridos
mediante una computadora, registro autorreferendal: un registro en el cual parte del regis zada que proporciona servicios auxiliares (programas servidor),
por una tarea para terminar su trabajo están alojados en otros
problema no polinomial: un problema que no puede resolver tro se utiliza para apuntar a otro registro del mismo tipo, set: en máscaras, una técnica para hacer un bit 1.
programas.
se con complejidad polinomial. registro de datos: un área que aloja los datos a ser procesados simulación de cola de espera: una actividad de modelado utili
problema polinomial: un problema que puede resolverse con dentro del CPU. zada para generar estadísticas sobre el rendimiento de una
la complejidad polinomial. registro de instrucción: un registro en el CPU que aloja la ins cola de espera.
notación de punto decimal: la notación ideada para facilitar la trucción antes de que sea interpretada por ia unidad de control, sin rechazo: una calidad de un mensaje recibido que no permi
problema con solución: un problema que puede resolverse me
lectura de las direcciones IP; cada byte se convierte a núme registro: la información relacionada con una entidad. Una lo te al emisor negar lo enviado,
diante una computadora,
ro decimal; los números están separados mediante un punto. calidad de almacenamiento rápido independiente que aloja sincronización de procesos: un mecanismo del sistema operati
procedimiento: otro término para un subalgoritmo.
los datos en forma temporal, vo que controla el acceso a un recurso por más de un proceso,
procesador de datos programable: una máquina que toma da
relación: una tabla en una base de datos relacional. sinónimo: una lista hashed, dos o más llaves que se dirigen a la
tos de entrada y un programa para producir datos de salida,
raíz: el primer nodo de un árbol. representación de signo y magnitud: un método de represen misma dirección base,
procesador de datos: una entidad que introduce datos, los pro
RAM dinámica (DRAM): RAM en la cual las celdas usan ca tación de enteros en el cual 1 bit representa el signo del nú sintaxis: las reglas “gramaticales” para un lenguaje. En C, el
cesa y genera el resultado,
pacitores. La DRAM debe refrescarse periódicamente para mero y los bits restantes representan la magnitud, conjunto de palabras clave y reglas de formato que deben se
proceso: un programa en ejecución, representación del complemento a dos: un método de repre guirse cuando se escribe un programa,
retener sus datos.
programa: una serie de instrucciones. RAM estática (SRAM): una tecnología que utiliza las com sentación de enteros en el cual un número negativo se repre sistema binario: un sistema de numeración que utiliza dos sím
Prolog: un lenguaje de programación de alto nivel basado en la puestas flip-flop tradicionales (una compuerta con dos esta senta al dejar todos los 0 en el extremo derecho y el primer 1 bolos (0 y 1).
lógica formal. dos: 0 y 1) para almacenar datos, sin cambios y complementar los bits resta sistema de administración de base de datos (DBMS: databa
protocolo: una serie de reglas para intercambio de datos entre rama: un línea en un árbol que conecta dos nodos adyacentes, representación en complemento a uno: un método de repre se management system): un programa o una serie de progra
computadoras. recorrido de árbol binario: el proceso de visitar cada nodo en sentación de enteros en el cual un número negativo se repre mas que manipula una base de datos,
protocolo de control de transmisión (TCP): uno de los proto un árbol binario, senta al complementar el número positivo, sistema de bases de datos relaciónales (RDBMS: relational da
colos del nivel de transporte en el conjunto de protocolos recorrido de lista ligada: un método de recorrido en el cual ca resina de policarbonato: en la producción de CD-ROM, un tabase management system): una serie de programas que ma
TCP/IP. da elemento de una lista ligada se procesa en orden. material inyectado en un molde. neja las relaciones en un modelo de bases de datos relacional.
||j ||||] G lo s a rio G lo s a rio
sistema decimal: un método de representación numérica que tiempo compartido: un concepto del sistema operativo en el terpretar instrucciones. En una computadora personal, un mi velocidad de transmisión: un número de bits enviado por se
utiliza 10 símbolos (de 0 a 9). cual más de un usuario tiene acceso a una computadora al crochip que contiene una unidad de control y unidad lógica gundo.
sistema distribuido: un sistema operativo que controla los re mismo tiempo. aritmética. velocidad rotacional: la velocidad de giro de un disco magné
cursos localizados en las computadoras en sitios diferentes, tiempo de búsqueda: en el acceso a disco, el tiempo requerido unidad de control: el componente de un CPU que interpreta las tico.
sistema Excess: un método de representación numérica utiliza para mover la cabeza de lectura/escritura sobre la pista don instrucciones y controla el flujo de datos, vértice: un nodo en un gráfico.
do para almacenar el valor exponencial de una fracción, de están los datos, unidad de traslación: en C, un archivo de compilación tempo vértices adyacentes: dos vértices en un grafo que están conec
sistema operativo monousuario: un sistema operativo en el tiempo de transferencia: el tiempo para mover datos desde el ral utilizado para almacenar el código fuente modificado, tados por una línea.
cual sólo un programa puede estar en la memoria a la vez. disco al CPU/memoria, unidad lógica aritmética (ALU; arithmetic logic unit): la par video: una representación de imágenes (llamadas cuadro) en el
sistema operativo por lotes: el sistema operativo utilizado en tipo: un conjunto de valores y una serie de operaciones que te de un sistema de computadora que realiza las operaciones tiempo.
las primeras computadoras, en el cual las tareas se agrupaban pueden aplicarse a esos valores, aritméticas y lógicas con los datos.
antes de atenderlas, tipo de datos abstracto (TDA): una declaración de datos empa UNIX: un popular sistema operativo entre los programadores w
sistema operativo: el software que controla el entorno de com cada junto con operaciones que se aplican a los tipos de datos, de computadoras y los científicos de la computación, WAN: Véase red de área amplia.
putación y proporciona una interfaz para el usuario, tipo de datos: un conjunto nombrado de valores y operaciones unset: Véase forzar a 0. Web: Véase World Wode Web.
sistema paralelo: un sistema operativo con varios CPU en la definidas para manipularlos, tales como carácter y entero, URL (localizador uniforme de recursos): una cadena de ca World Wide Web (WWW): un servicio Internet multimedia
misma máquina, tipo derivado: un tipo de datos compuesto construido a partir de racteres que define una página en Internet, que permite a los usuarios recorrer Internet al moverse de un
sobredesbordamiento: un evento que ocurre cuando se hace un otros tipos (arreglo, estructura, unión, apuntador y tipo enume usuario final: la entidad que utiliza el producto final. documento a otro por medio de vínculos.
intento para eliminar datos de una estructura de datos vacía, rado).
software: los programas de aplicación y del sistema necesarios topología: la estructura de una red, incluyendo el arreglo físico V z
para que el hardware de computadora logre realizar una tarea, de dispositivos. valor AC: el valor que cambia con el tiempo, zona: en un disco óptico, un área no tocado por el láser en la tra
sonda: en un algoritmo de hashing, el cálculo de una dirección topología de anillo: una topología en la cual los dispositivos se valor DC: el valor que no cambia con el tiempo, ducción de un patrón de bits; por lo general representa un bit.
y su prueba satisfactoria; en un algoritmo de búsqueda, una conectan en un anillo; cada dispositivo recibe una unidad de variable: un objeto de almacenamiento de memoria cuyo valor
iteración del ciclo que incluye la prueba para el argumento de datos de un vecino y la envía al otro vecino, puede cambiarse durante la ejecución de un programa. Con
búsqueda. topología de bus: una topología de red en la cual todas las com traste con constante.
SQL: Véase lenguaje de consultas estructurado, putadoras se conectan a un medio compartido,
subalgoritmo: una parte de un algortimo que está escrita indepen topología de estrella: una topología en la cual todas las compu
dientemente. Se ejecuta cuando se llama dentro del algortimo. tadoras se conectan a un concentrador común,
subárbol: cualquier estructura conectada debajo de la raíz de topología de malla: una topología en la cual cada dispositivo se
un árbol conecta a todos los otros dispositivos,
subcadena: una parte de una cadena, topología híbrida: una topología formada por más de una topo
subprograma: Véase subalgoritmo. logía básica.
subrutina: Véase subalgoritmo. traductor: un término genérico para cualquiera de los progra
subscript: un número ordinal que indica la posición de un ele mas de conversión de lenguajes. Vea también ensamblador y
mento dentro de un arreglo. Véase también índice. compilador.
subsistema de entrada/salida: la parte de la organización de la trailer: información de control agregada a una unidad de datos,
computadora que recibe datos desde el exterior y los envía al trama: una unidad de datos en el nivel de enlace de datos,
exterior. transferencia de datos: mover datos de una computadora a otra,
suma: suma de una serie de números. transformación discreta de coseno (DCT): una transforma
ción matemática utilizada en JPEG,
T tupia: en una base de datos relacional, un registro (línea) en una
tabla de enrutamiento: la tabla utilizada por un enrutador para relación.
enrutar un paquete,
tabla de verdad: una tabla que lista todas las combinaciones ló y
gicas posibles con la salida lógica correspondiente. último en entrar, primero en salir (LIFO: last in, first out):
TDA: Véase tipo de datos abstracto. un algoritmo en el cual el último elemento de dato que se
teclado: un dispositivo de entrada que consiste de teclas alfanu- añadió a una lista se elimina de la lista en primer lugar.
méricas y teclas de función utilizado para texto o datos de UML (lenguaje de modelado unificado): una herramienta utili
control. zada para diseñar en las ciencias de la computadión y los ne
TELNET (Terminal Network): un programa cliente-servidor gocios.
de propósito general que permite inicio de sesión remota, Unicode: un código de 65 536 caracteres que incluye los sím
texto: datos almacenados como caracteres, bolos de la mayoría de los idiomas del mundo,
texto cifrado: los datos cifrados, unidad central de procesamiento (CPU): la parte de una
texto simple (plano): el texto antes de ser cifrado. computadora que contiene los componentes de control para in-
ín d ic e 377
tipos, 15 instrucción compuesta, 347 eliminación, operador, 275 exclusivo, or, 355 GÓdel, número de, 326 decodificación, 294
datos, acoplamiento de, 200 instrucción de asignación, 346 eliminar cola de espera, 235 expansión, árbol de, 249 interpretar, 327 nodo, 292
datos, compresión de, 290 instrucción de entrada-salida, 346 eliminar (dequeue), 235 explorador, 175, 177 grado de entrada, 237, 245 pasos de codificación, 292
codificación de Huffman, 292 instrucción if .. .else, 347 eliminar arista, 246 arquitectura, 114 grado de salida, 237, 245 prefijo, 294
codificación de longitud de línea de flujo, 345 eliminar vértice, 245 componentes, 114 grado, 237, 245
ejecución, 291 para ciclo, 348 en orden, recorrido, 241 controlador, 114 grafo
con pérdida, 298 diamante, 347, 355 encabezado de algoritmo, 351 intérprete, 114 grafo dirigido. Véase digrafo I, cuadro, 302
sin pérdida, 291 diferencia, operador, 278 ciclo, 352 lenguaje de marcación, 177 gran O, notación, 330 identificador de campo, 220
datos, representación de digrafo, 244 instrucción de secuencia, 352 programa cliente, 114 grupo de expertos en fotografía identificados 179
texto, 17 dinámico, documento, 115 instrucción de selección, 352 expresión, 182 unidos. Véase JPEG if-else, instrucción, 186, 347,355
DBA, 271 dirección base, 264 número de instrucción, 351 instrucción, 183 Grupo de expertos en imágenes en imperativo, lenguaje, 171
débilmente conectado, 244 direccionamiento abierto, 264 postcondición, 351 extraer (pop), 233 movimiento. Véase MPEG implementación, 247
DBMS, 271 disco, 256 precondición, 351 extremo a extremo, entrega, 102 GUI, 136 implementación, fase, 197
DBMS, 271 diseño, 353 encabezado, 100, 351, 177 codificación, 197
componentes, 271 diseño, fase de encapsulamiento, 174 H herramientas, 197
nivel conceptual, 272 desarrollo, proceso, 198 encontrar vértice, 246 factorial, 160 hardware, 271 inanición, 134
nivel externo, 272 fase de diseño de ciclo de vida del enlace de datos, nivel de, 102 FF, 336 hash, búsqueda, 269 problema de Dijkstra, 135
nivel interno, 272 software, 197 función, 102 FIFO, 132, 230, 235 hash, función, 313 inconexo, 244
DC, valor, 299 herramientas, 197 enrutador, 108 cola de espera, 230 hashed, archivo, 261 incremento, instrucción, 318, 323
DCT, 299 modelo por incrementos, 199 enrutador, jerarquías de, 108 filas mayores, almacenamiento, 218 hashing, 261 incrementos, modelo por, 199
caso de cambio brusco, 300 modelo de cascada, 198 enrutamiento fin de archivo. Véase EOF área principal, 264 indexado, archivo, 260
caso de escala de grises uniforme, modularidad, 197 conceptos, 108 fin, símbolo, 344 colisión, 264 acceso a registro, 260
299 dispositivos, administrador de, 125, ensamblador, 168 física, dirección, 110 contenedor, 265 archivo invertido, 260
caso de gradiente, 300 135 ensamblador, lenguaje, 168 físico, nivel, 101 dirección base, 264 componentes, 260
inverso, 300 división de módulos, hashing de, 262 entrada, 182, 356 flotación, 179, 180 direccionamiento abierto, 264 índice, 260
fórmula, 299 DLE, 336 entrada, flujo de, 357 flujo de datos, 356 directo, 262 individualmente, lista ligada, 220
valor AC, 299 do-while, ciclo, 189, 339 entrada-salida, instrucción, 346 flujo, línea de, 345 división de módulo, 262 inequívocos, pasos, 150
valor DC, 299 documentación (continuación) entrega FORTRAN, 172 extracción de dígitos, 263 ingeniería de software asistida por
decimal, 28 manual del usuario, 206 origen a destino, 102 frecuencia, arreglo, 217 métodos, 261 computadora. Véase CASE
hexadecimal, 23 documentación, 206 punto a punto, 102 FTP, 112 residuo de división, 262 ingeniería de software, 195
decisión, constructo, 146 acoplamiento global, 201 EOF, 257 conexión de control, 112 resolución de colisión, 264 acoplamiento, 200
declaración, 180 acoplamiento de sello, 200 EOT, 336 conexión de datos, 112 head, función, 185 acoplamiento de contenido, 201
función, 185 calidad del software, 203 equilibrio, factor de, 240 conexiones, 112 herencia, 174 acoplamiento de control, 200
declarativo, lenguaje, 171, 176 círculo de calidad, 205 errores, archivo de reporte de, 258 fuertemente conectado, 244 hermanos, 238 acoplamiento de datos, 200
decremento, instrucción, 318, 324 fase de análisis, 207 ESC, 336 función, 184 hexadecimal, 23 diseño, 353
definición, 180, 244 fase de diseño, 207 escala de grises, 298 cuerpo, 185 hijo, 238 inicializador, 181
DEL, 338 fase de implementación, 207 espacial, compresión, 301 declaración, 185 hipertexto, 114 inicio, símbolo, 344
DES, 308 fase de prueba, 207 especial, lenguaje, 171, 177 definición, 185 histograma, 218 inserción, 230
desbordamiento, 230, 231, 233 función, 207 espera, estado de, 130 efecto secundario, 184 hoja, 238 inserción, operador, 275
pila, 230, 231,233 general, 207 estándar de cifrado de datos. Véase encabezado, 185 Hopper, Grace, 168 insertar lista ligada, 221
desbordamiento, 233 medición, 206 DES llamada, 185 HTML, 177 insertar (enqueue), 235
desbordamiento, área, 264 programa, 207 estándar, tipo, 179 parámetro real, 185 documentos ASCII, 177 insertar (push), 233
descendiente, 238 prueba formal, 205 estático, documento, 115 paso por referencia, 186 etiqueta, 177 instrucción, 146, 183
diagrama de estado, 130 sistema, 206 estructura tabla de, 353 paso por valor, 186 explorador, 177 expresión, 183
estado de aguardo, 130 dos sentidos, selección, 347 autorreferencial, 221 función, bloque, 355 lenguaje de marcación, 177 selección, 355
estado de ejecución, 130 DOS, 124 estructura de datos, 214 función común, 357 HTTP, 114 instrucción compuesta, 184, 347
estado de preparación, 130 double, 180 modelo de red, 273 función, cuerpo, 185 comandos incrustados, 114 instrucción, número de, 351
planificador de procesos, 131 modelo jerárquico, 273 función, encabezado, 185 tipos de mensajes, 114 int, 179
planificador de tareas, 131 E modelo relacional, 274 función principal, 184 URL, 114 integridad, 306, 307
diagrama de flujo, 146, 197, 343 EBCDIC, 266 ETB, 336 Huffman, codificación de, 292 Interconexión de sistemas abiertos,
ciclo, 348 editor de texto, 169 etiqueta, 177 árbol, 292 modelo, 100
G
ciclo do...while, 347 . ejecución, estado de, 130 atributos, 177 gateway, 108 asignación de código, 293 interno, nodo, 238
conector, 345 ejecutable, archivo, 169 común, 177 convertidor de protocolo, 108 asignación de peso, 292 Interred, protocolo. Véase IP
decisión, 347 eliminación, 231 ETX, 336 global, acoplamiento, 201 codificación, 294 Intersección, operador, 278
380 ín d ic e
ín d ic e 381
interruptor, 16 LISP, 176 lotes, sistema operativo por, 124 NUL, 336 página web polinomial, problema, 329, 331
bit, 16 lista general, 230 LZ, codificación, 295 nula, instrucción, 345 con peso arista, 249 postcondición, 351
estado de apagado, 16 lista ligada, 220 compresión, 295 nulo, árbol, 239 cuerpo, 177 postergación, 234
estado de encendido, 16 apuntador, 221 descompresión, 297 numeración, sistemas de encabezado, 177 precondición, 351
inversión de datos, 234 autorreferenciales, 221 diccionario, 295 binario, 28 estructura, 177 prefijo, 294
invertido, archivo, 260 búsqueda, 222 LZW, codificación, 298 etiqueta, 177 preparación, estado de, 130
IP, 110 datos, 220 O texto, 177 prepocesador, directiva, 170
características, 110 implementación de grafo, 247 M objetivo, 158 página, 114 preprocesador, 170
datagrama, 110 individualmente, 220 macro, 318 objeto, 173 paginación preprueba, ciclo de, 348
direccionamiento, 110 insertar nodo, 221 asignar, 318 objetos, módulo de, 170 bajo demanda, 128 presentación, nivel de, 102
entrega del mejor esfuerzo, 110 liga, 220 asignar enteros positivos, 319 operabilidad, 203 cuadro, 128 primero en amplitud, recorrido, 243
protocolo sin conexión, 110 nodo, 221 complemento, 320 operación, 179 multiprogramación, 128 privacidad, 306, 307
IP, dirección pila, 234 copiar una variable, 319 unitaria, 275 particionamiento, 128 privada, llave, 309
formato, 110 recorrido, 223 exponenciación, 320 operaciones, 245 segmentación, 128 problema soluble, 329
notación de punto decimal, 110 vacía, 221 if-then-else, ciclo, 320 operador, 182 paginación bajo demanda, 128 complejidad, 330
irresoluble, problema, 329 lista lineal, 229 multiplicación, 319 binario, 277 palabra clave, 179. Véase también procedimiento, cohesión de, 202
iterativa, definición, 160 cola de espera, 230 simulación, 318 multiplicación, 152 reservadas, palabras procedimiento, lenguaje de, 171, 172,
iterativo, 141 desbordamiento, 230 suma, 319 suma, 152 paralelo, sistema, 124 76
eliminación, 231 MAN, 104 operando, 183 parámetro real, 185 procedimientos, 271
I FIFO, 230 mantenimiento, capacidad de, 204 operativo, sistema, 122 parámetros, paso de, 185 proceso, 124, 129
Java, 174 implementación, 232 máquina, lenguaje de, 167 administrador de archivos, 125, paro, problema de, 321, 328 punto muerto, 132
JPEG, 298, 303 inserción, 230 marcación, lenguaje de, 177 135 prueba, 328 sincronización, 132
compresión, 301 LIFO, 230 más, signo, 355 administrador de dispositivos, 125 particionamiento, 126 tarea, 129
compresión espacial, 301 lista general, 230 MD5, 313 administrador de memoria, 125 paginación, 128 procesos, administrador de, 125
cuantización, 300 operaciones, 230 mejor esfuerzo, entrega, 110 como gerente general, 123 problemas, 127 procesos, planificador de, 131
DCT, 29,359 ordenada, 230 memoria virtual, 129 componentes, 124 Pascal, 173 producto, 152
escala de grises, 298 pila, 230 Memoria, administrador de, 125 distribuido, 124 pasivo, objeto, 173 profundidad, 238
redundancia, 299 recuperación, 231 modularidad, 200 DOS, 124 paso programa, 129, 322
juntura, operador, 277 restringida, 230 acoplamiento, 200 evolución, 124 por referencia, 186 documentación, 207
sucesor, 229 herramientas, 200 por lotes, 124 por valor, 186 programación, constructo, 345, 351
K lista lineal, 230 monoprogramación, 125 sistema paralelo, 124 patrón de bits, 16 símbolo, 17 Prolog, 177
Knuth, Donald E, 195 lista vinculada, algoritmos MPEG, 298, 301,303 orden de inserción, 156 pérdida, compresión con, 298 protocolo de transferencia de
insertar nodo, 221 compresión temporal, 301 orden posterior, recorrido, 242 pérdida, compresión sin, 291 hipertexto. Véase HTTP
L recorrer lista, 223 cuadro B, 302 orden previo, recorrido, 241 pérdida, método con, 290 protocolo de transferencia de finito,
LAN, 103 vinculador, 170 cuadro I, 302 ordenación, 153 pérdida, método sin, 290 primero en entrar, primero en
lectura/escritura, cabeza de, 322 lista, recorrido, 231 cuadro P, 302 burbuja, 155 PERL, 178 salir. Véase FIFO
Lempel Ziv, codificación. Véase LZ, lista, recuperación, 231 tipos de cuadros, 301 inserción, 156 personal, computadora, 124 protocolo simple de transferencia de
codificación literal, constante, 181 multidireccional, selección, 347, 355 paso, 153 pila, 230, 232 correo. Véase SMTP
Lempel-Ziv-Welch, codificación. llamada de modulo, instrucción, 346 multiprogramación, 124, 126 selección, 153 análisis sintáctico, 234 proyección, operador, 277
Véase LZW, codificación llave pública, cifrado de, 307 particionamiento, 126 ordenada, lista, 230 aplicaciones, 234 proyecto, 280
lenguaje llave secreta, cifrado, 307 ordenado, conjunto, 150 desbordamiento, 233 pruebas caja negra, 198
de alto nivel, 168 llave, 258 N orientado a objetos, lenguaje, 171,173 extraer (pop), 233 caja blanca, 198
de máquina, 167 llaves, 309 NAK, 336 origen a destino, entrega, 102 insertar (push), operación, 233 formal, 205
ensamblador, 168 algoritmo RSA, 309 natural, lenguaje, 167, 169 OSI, modelo, 110 LIFO, 232 pruebas, fase de, 198
natural, 169 usada con llave secreta, 311 nivel de red TCP/IP, 110 funciones de niveles, 101 lista ligada, 234 pseudocódigo, 146, 197
simbólico, 168 localizador uniforme de recursos. nivel de red, 102 TCP/IP, 110 nivel de enlace de datos, 102 operaciones, 233 pública, llave, 309
lenguaje de consulta estructurado. Véase URL nivel, 238 nivel de presentación, 102 postergación, 234 puente, 107
Véase SQL lógico, operador, 183 no dirigido, 244 nivel físico, 101 recorrido primero en profundidad, punto flotante, 180
lenguaje para marcación de long double, 180 no dirigido, grafo, 244 TCP/IP, 110 247 punto muerto, 132
hipertexto. Véase HTML long int, 179 no polinomial, problema, 329, 331 óvalo, 344 retroceso, 235
LF, 336 longitud de ejecución, codificación no rechazo, 306, 307, 311 pila, 233 R
LIFO, 230, 232 de, 291 nodo, 221, 237, 292 P contención, 233 raíz, 237
estructura de datos, 232 longitud de ejecución, compresión de, recuperación, 223 P, cuadro, 302 pixel, 298, 301 rama, 237
liga, 220 291 nombrada, constante, 181 padre, 238 planificación, 124 selección de dos caminos, 347
línea, 244 loop, instrucción, 325 nombre, 274 página principal, 114 polimorfismo, 174 selección de múltiples caminos, 347
382 ín d ic e
RDBMS, 274 revision técnica, 205 simple, lenguaje, 317 lectura, 356 short, 179 unitaria, operación, 275
relación, 274 revisión técnica, 205 entrada/salida, 321 reglas, 354 void, 179 URL, 114
real, parámetro, 185 herramientas, 205 numerar programas, 326 símbolo, 354 top-down concept, 356 alias, 114
recorrido primero en amplitud, 247 RSA problema de paro, 321 tabla de estructura, 353 topología, 99 anfitrión, 114
recorrido primero en profundidad, desventaja, 311 simulación, 318 tarea, 129 traducción de protocolo, 108 componentes, 114
247 ejemplo, 310 sin signo tareas, bloque de control de, 132 enrutador, 108 método, 114
recorrido, 231, 241 elegir las claves, 310 almacenamiento. 31, 33, 35, 37 tareas, planificador, 131 traductor, 170 número de puerto, 114
primero en amplitud, 247 ventaja, 311 sinónimo, 263 TCP, 111 trailer, 100 recuperación de documentos, 114
primero en profundidad, 247 RSA, cifrado, 309 sistema de administración de bases de protocolo de nivel de transporte, transaction file, 258 ruta, 114
recorrido, 246 datos relaciónales. Véase 111 transferencia, capacidad de, 205 usuario final, 271
rectángulo, 354, 357 S RDBMS protocolo puerto a puerto, 111 transformación discreta de coseno. usuario, 271
recuperación de un nodo, 223 salida, 182 sistema de administración de datos. TCP/IP, 110 Véase DCT interfaz de usuario, 125, 136
recuperación, 231 salida, flujo de, 357 Véase DBMS concepto de interred, 100 transición, diagrama, 322 final, 271
recursion, 160, 189 Scheme, lenguaje, 176 sistema operativo distribuido, 124 Internet, 110 transición, tabla, 322 normal, 271
factorial, 160 secreta, llave, 307 sistema operativo, 124 modelo OSI, 110 programa, 322 programa de aplicación, 271
recursiva, definición, 161 secuencia, 145 SMTP, 112 nivel de aplicación y modelo OSI, translación, unidad, 170
recursivo, 141 secuencia, constructo de, 146 buzón de correo del usuario, 112 111 transporte, 102 V
red secuencia, instrucción, 345, 352 direccionamiento, 112 nivel de red, 110 transporte, nivel de valor, 179
árbol de expansión, 249 secuencial, archivo, 257, 260, 258 nombre de dominio, 112 nivel físico, 110 control de errores, 102 variable, 180
definición, 248 actualizar, 258, 259 Sistema de direcciones, 112 nivel de enlace de datos, 110 responsibilidades, 102 ventajas, 309
grafo con peso, 248 llave, 258 sobredesbordamiento, 231 nivel de transporte, 111 TCP, 111 TCP/IP, 111 DES, 308
red, 248 usar, 258 cola, 235 TDA tupia, 275 desventajas, 309
redundancia, 290, 299 secuencial, cohesión, 201 pila, 233 definición, 228 Turing, máquina, 317 utilizado con llave pública, 311
registro, 219 segmentación, 128 software, 122, 271 encapsulamiento, 228 componentes, 321 vértice, 244
acceso, 220 demanda, 128 ciclo de vida, 196 modelo, 229 instrucción de decremento, 324 vértice, 244
accessing individual fields, 220 paginación, 128 obsoleto, 196 operación, 229 instrucción de incremento, 323 adyacente, 244
aplicación, 220 seguridad, 306 SOH, 336 TELNET, 112, 113 instrucción loop, 325 grado, 245
relación, 274 selección, 145 sombreado, 357 temporal, cohesión, 202 cabeza de lectura/escritura, 322 grado de entrada, 245
actualización, 276 en la tabla de estructura, 355 SP, 336 temporal, compresión, 301 lectura, 322 grado de salida, 245
atributo 274 selección, constructo de, 186 SQL, operaciones, 178, 279 teoría de la computación, 317 Lenguaje simple, 325 vértices adyacentes, 244
cardinalidad, 275 selección, instrucción, 347, 352, 355 actualización, 280 terminal, red. Véase TELNET cinta, 321 aplicaciones, 248
diferencia, 278 selección, operador, 276 combinadas, 282 texto cifrado, 307 escritura, 322 vinculador, 170
eliminación, 275 selección, orden de, 153 diferencia, 281 texto, 17 void, 179
inserción, 275 sello, acoplamiento de, 200 eliminación, 279 texto, archivo, 265 U VT, 336
intersección, 278 servicios de datos conmutados inserción, 279 time-sharing system, 124 UDP
juntura, 277 mutíimegabit (SMDS), 104 intersección, 281 tipo derivado, 179 protocolo de extremo a extremo, W
nombre, 274 SHA-1, 313 juntura, 280 tipo, 179 111 WAN, 104
operación, 275 short int, 179 proyecto, 280 char, 179 protocolo de nivel de transporte, tamaño, 104
proyección, 277 signo y magnitud, 33 selección, 280 datos atómicos, 179 111 while, ciclo, 187, 318, 348, 352, 355
selección, 276 simbólica, constante, 181 STX, 336 derivado, 179 último en entrar, primero en salir. Wirth, Niklaus, 351
tupia, 275 simbólico, lenguaje, 168 subalgoritmo, 150 double, 180 Véase LIFO World Wide Web. Véase WWW
unión, 277 símbolo, 17 subárbol, 238 estándar, 179 un lugar, 201 WWW
relacional, operador, 182 círculo, 355 subárbol derecho, 239 float, 179, 180 una cosa, 201 documento estático, 115
repetición, 145 corte, 357 subárbol izquierdo, 239 int, 179 unidad central de procesamiento. hipertexto e hipermedia, 114
repetición, constructo, 146, 187, 327 diagrama de flujo, 344, 345 subcadena, 295 long double, 180 Véase CPU página principal, 114
repetidor, 106 diamante, 347, 355 subscript, 216, 217 long int, 179 unión, operador, 277
representar un programa, 326 fin, 344 suma, 152
instrucciones, 317 inicio, 344 suma, operador, 152
máquina de Turing, 317, 325 óvalo, 344 switch, instrucción, 187
simulación, 323 patrón de bits, 17 SYN, 336
reservadas, palabras, 179 principal, 345
Véase también palabras clave rectángulo, 354 T
residuo de división, hashing de, 262 signo más, 355 tabla de estructura, 152, 354
restringida, 230 sombreado, 357 ciclo, 355
retroceso, 235 símbolo principal, 345 función común, 357