Sunteți pe pagina 1din 204

.

,
r
e rodL!Jcci
a la el n e I a de la

a la el de la
,

d~ L<1 M<1NipuL<1ciN d~ d<1to!
<1 L<1 t~ori<1 d~ L<1 cOMput<1ciN

Diseado pora el curso introductorio a lo ciencia de la computacin, este libro tiene como objetivo
c \'-' (i] eI
cubrir lo que lodo estudiante de ingeniera e informtica necesito saber antes de pasor a cursos
ms especializados. El au lor desarrolla el texto e n cinco porles: Computadoras y da los, de LCl MClNit:>uLClciN de dCltoJ
Hardware, Software, Organizacin de dotos y Temas avanzados {compresin de dolos,
LCl teo~Cl de LCl COMt:>utClc i N
seguridad y teora de la computacin}, o fin de abordar, uno a uno, los principales lemas bsicos.
Adems de lo anterior, esta obro presento los siguientes caroctersticos:

Desde un principio estudio la representacin d e dotos, esto incluye


texto, imgenes, audio, video y nmeros.
Hace hin capi en los conceptos y no en
los modelos matemticos.
Las redes y los sistemas operativos se
tratan en captulos aporte paro
incluir las tendencias actuales.
Cuenta con ayudas visuales
en los lemas ms difciles.
,')J'{l::'

,~:1l-'@' ~,:;;~.
.
~'-~:;'t -, '"j,'i Sil :;': ':~,'S :~~tImI
h;;~2 e :,...m NetwoIb
Introduccin a la ciencia
de la computacin
De la manipulacin de datos a la teora
de la computacin
Introduccin a la ciencia
de la computacin
De la manipulacin de datos a la teora
de la computacin

Behrouz A. Forouzan
De Anza College

con colaboracin de
Sophia Chung Fegan

THOMSON
.-
Australia Brasil. Canad. Espaa. Estados Unidos. Mxico. Reino Unido. Singapur
THOIVISON
...
Introduccin a la ciencia de la computacin
De la manipulacin de datos a la teora de la computacin
Behorouz A. Forouzan

Vicepresidente Gerente de produccin: Revisin tcnica:


editorial y de produccin: Ren Garay Argueta Jorge Valeriana Assem
Miguel ngel Toledo Castellanos UNAM-Facultad de ingeniera

Editor de desarrollo: Editora de produccin:


Pedro de la Garza Rosales Alma Castrejn Alcacer

Traduccin: Supervisora de manufactura:


Lorena Peralta Claudia Caldern Valderrama
A mi esposa Faezeh
- Behrouz Forouzan
COPYRIGHT 2003 por DERECHOS RESERVADOS. Traducido del libro Foundatons 01
International Thomson Editores, Queda prohibida la reproduccin o Computer Scence, From Data
S. A. de C. V., una divisin transmisin total o parcial del texto Manipulaton to Theory al
de Thomson Learning, Inc. de la presente obra bajo cualesquiera Computation publicado en ingls por
Thomson Learning'" es una marca formas, electrnica o mecnica, Brooks Cale, 2003
registrada usada bajo permiso. incluyendo el fotocopiado, ISBN 0-534-37968-0
el almacenamiento en algn sistema Datos para catalogacin bibliogrfica:
Impreso en Mxico de recuperacin de informacin, Forouzan, Behrouz A. Introduccin a
Printed in Mexico o el grabado, sin el consentimiento la cencia de fa computacin.
1234050403 previo y por escrito del editor. ISBN 970-686-285-4
1. Introduccin a la ciencia de la
Para mayor informacin computacin. 2. De la manipulacin
contctenos en: Sneca 53 de datos a la teora de la
CoL Polanco computacin.
Mxico, D. F. 11560

Puede visitar nuestro sitio en


htlp:/Iwww.thomsonlearning.com.mx

Divisin Iberoamericana

Mxico y Amrica Central: Amrica del Sur:


Thomson Learning Thomson Learning
Sneca 53 Calle 39 No. 24-09
Col. Polanco La Soledad
Mxico, O.E 11560 Bogot, Colombia
Tel 52 (55) 52 81 2906 Tel (571) 340 9470
Fax 52 (55) 52 81 26 56 Fax (571) 340 94 75
editor@thomsonlearning.com.mx clithomson@andinet.com

El Caribe: Espaa:
Thomson Learning Thomson Learning
598 Aldebarn Calle Magallanes nm. 25
Altamira San Juan, 28015 Madrid, Espaa
Puerto Rico Tel34 (0)91 4463350
Tel (787) 641 1112 Fax 34 (0)914456218
Fax (787) 641 11 19 clientes@paraninfo.es
Ihomson@coqui.net

Cono Sur:
Tel/Fax (54114) 582 26 84
Buenos Aires, Argentina Esta obra se termin de imprimir en el 2003
sdeluque@thomsonlearning.com.ar en los talleres de Grupo GEO Impresores S.A. de C.v.
enido

PARTE I DATOS Y COMPUTADORAS 1


Captulo 1 Introduccin 2
1.1 La computadora como uua caja uegra 3
Procesador de datos 3
Procesador de datos programable 3
1.2 El modelo de vou Neumaun 5
Cuatro subsistemas 5
Concepto de programa almacenado 6
Ejecucin secuencial de instrucciones 6
1.3 Hardware de la compntadora 6
1.4 Datos 6
Almacenamiento de datos 6
Organizacin de datos 7
1.5 Software de la computadora 7
Los programas deben almacenarse 7
Una secuencia de instrucciones 7
Algoritmos 8
Lenguajes 8
Ingeniera de software 8
Sistemas operativos 8
1.6 Historia 9
Mquinas mecnicas (antes de 1930) 9
Nacimiento de las computadoras electrnicas (1930-1950) 9
1.7 Trm1nos clave 11
1.8 Resumen 11
1.9 Prctica 11

v
.. Contenido Contenido ..

Captulo 2 Representacin de datos 14 Captulo 4 Operaciones con bits 50


2.1 Tipos de datos 15 4.1 Operaciones aritmticas 51
2.2 Datos dentro de la compntadora 15 Operaciones aritmticas con enteros 51
Bit 16 Operaciones aritmticas en nmeros de punto flotante 54
Patrn de bits 16 4.2 Operaciones lgicas 55
Byte 16 Tablas de verdad 56
2.3 Representacin de datos 17 Operador unario 56
Texto 17 Operadores binarios 57
Nmeros 19 Aplicaciones 60
Imgenes 19 4.3 Operaciones de desplazamiento 63
Audio 20 4.4 Trminos clave 64
Video 21 4.5 Resmnen 65
2.4 Notacin hexadecimal 21 4.6 Prctica 65
Conversin 22
2.5 Notacin octal 23 PARTE 11 HARDWARE DE COMPUTADORA 69
Conversin 23
Captulo 5 Organizacin de la computadora 70
2.6 Trminos clave 24
5.1 Unidad central de procesamiento (CPU) 71
2.7 Resmnen 24
Unidad lgica aritmtica (ALU) 71
2.8 Prctica 25
Registros 71
Captulo 3 Representacin de nmeros 27 Urtidad de control 72
3.1 Decimal y binario 28 5.2 Memoria principal 72
Sistema decimal 28 Espacio de direccionamiento 72
Sistema binario 28 Tipos de memoria 74
3.2 Conversin 29 Jerarqua de la memoria 75
Conversin de binario a decimal 29 Memoria cach 75
Conversin de decimal a binario 29 5.3 Entrada/salida 76
3.3 Representacin de enteros 30 Dispositivos que no son de almacenamiento 76
Fonnato de enteros sin signo 31 Dispositivos de almacenamiento 76
Fonnato de signo y magnitud 33 5.4 Interconexin de subsistemas 83
El fonnato de complemento de uno 35 Conexin del cpu y la memoria 83
Fonnato del complemento a dos 37 Conexin de dispositivos E/S 84
Resumen de la representacin de enteros 39 Direccionarrtiento de dispositivos de entrada/salida 86
3.4 Sistema excess 40 5.5 Ejecucin de programas 87
3.5 Representacin de pnnto flotante 40 Ciclo de mqrtina 87
Conversin a binario 40 Un ejemplo de ciclo de mqrtina 88
Nonnalizacin 42 Operacin de entrada/salida 89
Signo, exponente y mantisa 42 5.6 Dos arqnitecturas diferentes 92
Estndares IEEE 42 CISC 92
3.6 Notacin hexadecimal 44 RISC 93
3.7 Trminos clave 44 5.7 Tnninos clave 93
3.8 Resumen 45 5.8 Resumen 93
3.9 Prctica 45 5.9 Prctica 94
.. Contenido Contenido ..

Captulo 6 Redes de computadoras 99 7.4 Sistemas operativos ms comunes 136


6.1 Redes, grandes y pequeas 100 Windows 2000 136
Modelo y protocolo 100 UNIX 136
6.2 Modelo OSI 100 Linux 136
Siete capas 100 7.5 Trminos clave 137
Funciones de las capas 101 7.6 Resumen 137
6.3 Categoras de redes 103 7.7 Prcticas 138
Red de rea local (LAN) 103
Redes de rea metropolitana (MAN) 104 Captulo 8 Algoritmos 141
Red de rea amplia (WAN) 104 8.1 Concepto 142
6.4 Dispositivos de conexin 105 Definicin informal 142
Repetidores 106 Ejemplo 142
Puentes 107 Definicin de acciones 144

Enrutadores 108 Refinamiento 144


Gateways 108 Generalizacin 144
6.5 Internet y TCP/IP 109 8.2 Tres estrncturas de control 145
Capa fsica y de enlace de datos 11 O Secuencia 146
Capa de red 110 Decisin 146
Capa de transporte 111 Repeticin 146
Capa de aplicacin 111 8.3 Representacin de algoritmos 146
6.6 Trminos clave 116 Diagrama de flujo 146
6.7 Resumen 116 Pseudocdigo 146
6.8 Prctica 117 8.4 Definicin ms formal 150
Serie ordenada 150
Pasos precisos 150
PARTE ni Software de computadora 121 Produce un resultado 150
Tenninar en un tiempo finito 150
Captulo 7 Sistemas operativos 122
8.5 Subalgoritmos 150
7.1 Definicin 123
Carta estructurada 152
7.2 Evolucin 123
8.6 Algoritmos bsicos 152
Sistemas por lotes 123
Sumatoria 152
Sistemas de tiempo compartido 123
Multiplicatoria 152
Sistemas personales 124
Menor y mayor 153
Sistemas paralelos 124
Ordenacin 153
Sistemas distribuidos 124
Bsqueda 158
7.3 Componentes 124
8.7 Recnrsividad 160
Administrador de memoria 125
Definicin iterativa 160
Administrador de procesos 129
Definicin recursiva 161
Administrador de dispositivos 135
8.8 Trminos clave 162
Administrador de archivos 135
8.9 Resumen 162
Interfaz de usuario 136
8.10 Prctica 163
Contenido ..
.. Contenido

10.3 Modularidad 200


Captulo 9 Lenguajes de programacin 166
Herramientas 200
9.1 Evolucin 167
Acoplamiento 200
Lenguajes de mquina 167
Cohesin 201
Lenguajes simblicos 168
10.4 Calidad 202
Lenguajes de alto nivel 168
Definicon de calidad 202
Lenguajes naturales 169
Factores de calidad 203
9.2 Escribir un programa 169
El crculo de la calidad 205
Escritura y edicin de programas 169
10.5 Documentacin 206
Compilacin de programas 170
Documentacin del usuario 206
Ligador de programas 170
Documentacin del sistema 206
9.3 Ejecncin de programas 171
Documentacin como un proceso en curso 207
9.4 Categoras de lenguajes 171
10.6 Tnninos clave 207
Lenguajes procedurales (imperativos) 172
10.7 Resnmen 208
Lenguajes orientados a objetos 173
10.8 Prctica 208
Lenguajes funcionales 175
Lenguajes especiales 177
9.5 Un lenguaje procednral: C 179 PARTE IV Organizacin de datos 213
Identificadores 179
Tipos de datos 179
Captulo 11 Estructuras de datos 214
Variables 180
11.1 Arreglos 215
Constantes 181 Aplicaciones de los arreglos 217

Entrada y salida 182 Arreglos bidimensionales 218

Expresiones 182 11.2 Registros 219


Acceso a registros 220
Instrucciones 183
Funciones 184 11.3 Listas ligadas 220
Nodos 221
Seleccin 186
Apuntadores a listas ligadas 221
Repeticin 187
Tipos de datos derivados 189 Operaciones en listas ligadas 221

Recursin 189 11.4 Trminos clave 223


Tnninos clave 189 11.5 Resnmen 224
9.6
9.7 Resumen 190 11.6 Prctica 224
9.8 Prctica 191
Captulo 12 Tipos de datos abstractos 227
Captulo 10 Ingeniera de software 195 12.1 Antecedentes 228
Ciclo de vida del software 196 Definicin 228
10.1
Fase de anlisis 197 Modelo para un tipo de datos abstracto 229

Fase de diseo 197 Operaciones con IDA 229

Fase de implementacin 197 12.2 Listas lineales 229


Fase de prueba 198 Operaciones con listas lineales 230
Modelos del proceso de desarrollo 198 Implementacin de una lista lineal general 232
10.2
Modelo de cascada 198 Aplicaciones de lista lineal 232

Modelo incremental 199


.. Contenido Contenido ..

12.3 Pilas 232 Captulo 14 Bases de datos 270


Operaciones con pilas 233 14.1 Sistema de administracin de bases de datos 271
Implementacin de una pila 234 14.2 Arquitectura 272
Aplicaciones de pila 234 Nivel interno 272
12.4 Colas de espera 235 Nivel conceptual 272
Operaciones con colas de espera 235 Nivel externo 272
Implementacin de una cola de espera 237 14.3 Modelos de bases de datos 273
Aplicaciones de la cola de espera 237 Modelo jerrquico 273
12.5 rboles 237 Modelo de red 273
Conceptos bsicos de rbol 237 Modelo relacional 274
Operaciones con rboles 239 14.4 Modelo relacional 274
12.6 rboles binarios 239 Relacin 274
Operaciones con rboles binarios 241 14.5 Operaciones con relaciones 275
Implementacin de un rbol binario 243 Insercin 275
Aplicaciones del rbol binario 243 Eliminacin 275
12.7 Grafos 244 Actualizacin 276
Terminologa 244 Seleccin 276
Operaciones con grafos 245 Proyeccin 277
Implementacin de un grafo 247 Juntura 277
Aplicaciones de grafos 248 Unin 277
12.8 Trminos clave 249 Interseccin 278
12.9 Resumen 249 Diferencia 278
12.10 Prctica 251 14.6 Lenguaje de consultas estructurado 279
Instrucciones 279
Captulo 13 Estructuras de archivos 256
14.7 Otros modelos de bases de datos 282
13.1 Mtodos de acceso 257
Bases de datos distribuidas 282
Acceso secuencial 257
Bases de datos orientadas a objetos 282
Acceso aleatorio 257
14.8 Trminos clave 283
13.2 Archivos secuenciales 257
14.9 Resumen 283
Actualizacin de archivos secuenciales 258
14.10 Prctica 284
13.3 Archivos indexados 259
Archivos invertidos 260
13.4 Archivos hashed 261 PARTE V Temas avanzados 289
Mtodos de hashing 261
Captulo 15 Compresin de datos 290
Colisin 263
15.1 Compresin sin prdida 291
13.5 Texto versus binario 265
Codificacin de longitud de ejecucin 291
Archivos de texto 265
Codificacin de Huffman 292
Archivos binarios 266
Codificacin de Lempel Ziv 294
13.6 Trminos clave 266
15.2 Mtodos de compresin con prdida 298
13.7 Resumen 266
Compresin de imgenes: JPEG 298
13.8 Prctica 267
Compresin de video: MPEG 301
Contenido ..
.. Contenido

15.3 Trminos clave 303 Apndice A Cdigo ASCII 335


15.4 Resumen 303
Prctica 303
Apndice B Unicode 339
15.5
Alfabetos 340
Captulo 16 Seguridad 306 Smbolos y marcas de puntuacin 341
Privacidad 307 Auxiliares CJK 341
Autenticacin 307 Ideogramas CJK unificados 341
Integridad 307 Sustitutos 342
No rechazo 307 Uso privado 342
16.1 Privacidad 307 Caracteres y smbolos miscelneos 342
Cifrado/descifrado 307
Privacidad mediante la combinacin 311 Apndice c Diagramas de flujo 343
C.l Smbolos auxiliares 344
16.2 Firma digital 311
Inicio y fin 344
Finna de todo el documento 312
Lneas de flujo 345
Finna del compendio 312
Conectores 345
16.3 Trminos clave 314
C.2 Smbolos principales 345
16.4 Resumen 314
Instrucciones en secuencia 345
16.5 Prctica 315
Instrucciones de seleccin 347
Captulo 17 Teora de la computacin 317 Instrucciones de ciclo 348
17.1 Lengnaje simple 318
Instruccin de incremento 318 Apndice D Pseudocdigo 350
D.1 Componentes 351
Instruccin de decremento 318
Encabezado de algoritmo 351
Instruccin de ciclo 318
Propsito. condiciones y devolucin 351
El poder del lenguaje simple 318
Nmeros de instruccin 351
Conclusin 321
Constructores de instruccin 351
17.2 Mqnlna de Turing 321
Componentes de la mquina de turing 321 Secuencia 352

Simula<;in de lenguaje simple 323 Seleccin 352


Ciclo 352
Conclusin 325
17.3 Nmeros de GOdel 326
Apndice E Tablas de estructura 353
Representacin de un programa 326
E.1 Smbolos del diagrama de estructura 354
Interpretacin de un nmero 327
Smbolo de funcin 354
17.4 Problema de paro 327
Seleccin en el diagrama de estructura 355
El problema de paro no tiene solucin 328
Ciclos en el diagrama de estructura 355
17.5 Problemas con solucin y sin solucin 329
Flujo de datos 356
Problemas sin solucin 329
E.2 Lectura diagramas de estructnra 356
Problemas con solucin 330
E.3 Reglas de los diagramas de estructura 357
17.6 Trminos clave 331
17.7 Resumen 331
17.8 Prctica 332

7
al Contenido

Apndice F Transformada coseno discreta 358


F.l Transformada coseno discreta 359


F.2 Transformacin inversa 359

Apndice G Acrnimos

Glosario 361
360
elo
ndice 377

Bienvenidos a las ciencias de la computacin! Estn a punto de iniciar la explora-


cin de un maravilloso y excitante mundo que ofrece muchas carreras desafiantes y
emocionantes. Las computadoras juegan un papel import~nte en nuestra vida diaria
y continuarn hacindolo en el futuro.

Las ciencias de la computacin son una disciplina joven que est evolucionando y pro-
gresando. Las redes de computadoras han conectado a personas desde lugares remotos
del mnndo. La realidad virtual est creando imgenes tridimensionales que sorprenden
a la vista. La exploracin 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 gentica.

xix
.. Prefacio Prefacio ..

Captulo 6: Redes de computadoras En este captulo comentamos cmo se conectan las


ORGANIZACIN DEL LIBRO computadoras para crear redes e interredes.

Este libro est diseado para un curso eso


(primer curso de ciencias de la computacin).
Parte 111: Software En la parte III, estudiamos varios aspectos del software de computadora.
Cubre todas las reas de la computacin. Dividimos el texto en cinco partes: Computadoras
y datos, Hardware de computadoras, Software de computadoras, Organizacin de los datos y
de computadora
Temas avanzados (figura P.I). Captulo 7: Sistemas operativos Este captulo estudia al sistema operativo como la par-
te ms importante del software del sistema. Presentamos las tareas de un sistema operativo y
cmo evolucionan. Tambin analizamos las partes de un sistema operativo moderno.
Captulo 1: Introduccin

Captulo 2: Representacin de datos Captulo 8: Algoritmos En este captulo, estudiamos los algoritmos, los cuales juegan un
Computadoras y datos
Captulo 3: Representacin de nmeros papel tan importante en las ciencias de la computacin que algunas personas creen que cien-
Captulo 4: Operaciones de bits cias de la computacin significa el estudio de los algoritmos. Definimos el concepto de algo-
ritmos y usamos algunas herramientas para representar algoritmos. Una discusin completa
Captulo 5: Organizacin de la computadora
Hardware de computadora de estas herramientas se presenta en los apndices e, D y E.
Captulo 6: Redes de computadoras

Captulo 7: Sistemas operativos


Captulo 9: Lenguajes de programacin Este captulo presenta primero los lenguajes en
general y luego analiza los elementos de e, un lenguaje generalizado.
Captulo 8: Algoritmos
Software de computadora
Captulo 9: Lenguajes de programacin
Captulo 10: Ingeniera de software En este captulo se estudia la ingeniera de softwa-
Captulo 10: Ingeniera de software re, una disciplina muy importante para el estudio de las computadoras.
Captulo 11: Estructuras de datos

Organizacin de datos Captulo 12: Tipos de datos abstractos Parte IV: En la parte IV, estudiamos nuevamente los datos, pero desde el punto de vista del usuario.

Captulo 13: Estructuras de archivos


Organizacin
Captulo 14: Bases de datos
de datos
Captulo 11: Estructuras de datos En este captulo comentamos las estructuras de datos.
Captulo 15: Compresin de datos
Los datos, en el nivel ms alto, estn organizados en estructuras. Presentamos estructuras de
Temas avanzados Captulo 16: Seguridad
Capmlo 17: Teora de la computacin
datos comunes en uso en la actualidad tales como arreglos, registros y listas ligadas.

Figura 1'.1 Esquema del libro Captulo 12: Tipos de datos abstractos En este captulo analizamos los tipos de datos
abstractos (ADT). En el procesamiento de datos, se necesita definir a los datos como un pa-
Parte 1: En la parte 1 estudiarnos una computadora y los datos que sta procesa. Esta parte contiene quete incluyendo las operaciones definidas para el paquete. Se describen listas, pilas, colas,
Computadoras cuatro captulos. rboles y grficas de tal manera que los estudiantes piensen en los datos en abstracto.
y datos Captulo 1: Introduccin En este captulo se considera a la computadora como una enti- Captulo 13: Estructuras de archivos En este captulo analizamos las estructuras de ar-
dad procesadora de datos. Presentamos el concepto de von Neumann y analizarnos los com- chivos. Mostramos cmo los archivos se organizan lgicamente y analizamos los archivos de
ponentes generales de una computadora. Posponemos el anlisis detallado de los acceso secuencial y de acceso aleatorio. Un estudiante necesita conocer estos conceptos an-
componentes de computadoras hasta el captulo 5. tes de tomar un primer curso en programacin.

Captulo 2: Representacin de datos En este captulo, estudiamos la representacin de Captulo 14: Bases de datos Este captulo analiza las bases de datos. Los archivos en una
texto, imgenes, audio y video como patrones de bits. La representacin de nmeros se pos- organizacin rara vez se almacenan por separado y de manera aislada. Con frecuencia, stos
pone hasta el captulo 3. se organizan en una entidad llamada base de datos. Presentamos la base de datos relacional
y mencionamos un lenguaje (SQL) que puede recuperar informacin de este tipo de base de
Captulo 3: Representacin de nmeros En este captulo presentamos la representacin
datos.
de nmeros. Mostramos cmo los enteros y los nmeros de punto flotante se almacenan en
una computadora.
Parte V: Temas En esta parte analizamos tres temas avanzados que estn ganando importancia en las ciencias
Captulo 4: Operaciones de bits En este captulo, estudiarnos la manipulacin de patro- avanzados de la computacin, compresin de datos, seguridad y la teora de la computacin. Estos te-
nes de bits, tanto aritmticos como lgicos. mas pueden omitirse si el tiempo es un factor importante o si los estudiantes no tienen una
formacin previa.
Parte 11: Hardware En la parte n, estudiarnos el hardware de computadora. Esta parte se divide en dos captulos.
de computadora Captulo 15: Compresin de datos En este captulo presentamos dos categoras de com-
Captulo 5: Organizacin de la computadora En este captulo, consideramos a la compu- presin de datos: sin prdida y con prdida. Analizamos la codificacin de longitud de ejecu-
tadora como una mquina independiente. Describimos las partes del hardware de computa- cin, la codificacin Huffman y el algoritmo de Lempel Ziv como ejemplos de compresin
dora y cmo funcionan. sin prdida. Analizamos JPEG y NIPEG corno ejemplos de compresin con prdida.
Prefacio ~
.. Prefacio

l1li Tabla ASCII


Captulo 16: Seguridad Este captulo estudia cuatro aspectos de la seguridad: privacidad,
111 Unicode
autenticacin, integridad y no rechazo. Mostramos cmo utilizar el cifrado/descifrado y la fir-
111 Diagramas de flujo
ma digital para crear un sistema seguro.
111 Pseudocdigo
11 Diagramas de estructura
Captulo 17: Teora de la computacin En este captulo exploramos brevemente la teo-
11 Transformacin de coseno discreto
ra de la computacin. Mostramos cmo ningn lenguaje es superior a otro en la solucin de
11 Acrnimos
un problema. Explicamos que hay algunos problemas que no pueden resolverse por ningn
programa de computadora escrito en cualquier lenguaje. Al final del libro se incluye un glosario con todos los trminos clave.
Glosario
El lector debe tener en mente que este libro no estudia ningn tema sobre las ciencias de la La solucin de todas las preguntas de repaso, preguntas de opcin mltiples y ejercicios con
MIRADA A VUELO Soluciones
computacin a profundidad; para hacerlo se requeriran mltiples volmenes. El libro inten- un nmero non estn disponibles en lnea en www.brookscole.comicompsci.
DE PJARO ta cubrir temas relacionados con las ciencias de la computacin. Nuestra experiencia mues- de las prcticas
tra que conocer la representacin y la manipulacin de datos, por ejemplo, ayuda a los La presentacin de PowerPoint de todas las figuras y puntos resaltados, adems de la solu-
estudiantes a comprender mejor la programacin en lenguajes de bajo y alto nivel. Conocer
MATERIALES
cin a todas las preguntas de repaso, preguntas de opcin mltiple y ejercicios est disponi-
informacin general sobre las ciencias de la computacin ayudar a los estudiantes a tener DE INSTRUCCiN
ble en lnea en www.brookscole.com/compsci.
ms xito cuando tomen cursos de conectividad en red e interredes. El libro es una mirada a
vuelo de pjaro de las ciencias de la computacin. Ningn libro de este campo puede desarrollarse sin el apoyo de muchas personas. Esto es es-
RECONOCIMIENTOS
pecialmente cierto para este texto.
Hay varias caractersticas de este libro que no slo lo hacen nico, sino ms comprensible pa- Nos gustara agradecer el apoyo del equipo de De Anza por su continuo nimo y sus co-
CARACTERSTICAS mentarios. En particular agradecemos la contribucin de Scout DeMouthe por leer el manus-
ra los estudiantes primerizos.
DEl LIBRO crito y resolver los problemas.
Para cualquiera que no ha pasado por este proceso, el valor de las revisiones de los com-
A travs del libro, hemos intentado enfatizar ms en el concepto que en el modelo matem- paeros y compaeras no puede apreciarse lo suficiente. Escribir un texto rpidamente se
Conceptos tico. Creernos que una comprensin del concepto conduce a una comprensin del modelo. vuelve un proceso miope. La orientacin importante de los revisores que pueden guardar dis-
tancia para revisar el texto como un todo no puede medirse. Para parafrasear un viejo clich,
Una breve revisin del libro mostrar que nuestro mtodo es muy visual. Hay casi 300 figu- "No son valiosos, son invaluables". Nos gustara agradecer especialmente las contribuciones
Mtodo visual ras. Aun cuando esto tiende a aumentar el tamao del libro, las figuras ayudan a la compren- de los siguientes revisores: Essam EI-Kwae, Universidad de Carolina del Norte en Charlotte;
sin del texto. Nonnan J. Landis, Universidad Fairleigh Dickinson; John A. Rom, Universidad de Califor-
nia en Los ngeles Robert Signorile, Boston Collage, y Robert Statica del Instituto de Tec-

Siempre que se considera apropiado, se usan ejemplos para demostrar el concepto y el mo- nologa de New Jersey.
Ejemplos Damos las gracias tambin a nuestro editor, Hill Stenquist; a la editora de adquisiciones,
delo matemtico. Kallie Swanson; a la asistente editorial, Carla Vera, y al editor de produccin, Kesley McGee.
Tambin deseamos agradecer a Merrill Peterson de Matriz Productions, al corrector Frank
El material al final de cada captulo contiene tres partes: trminos clave, resumen y prctica. Rubert y a la lectora de pruebas Amy Dorr.
Material de fin
Por ltimo, y obviamente no lo menos importante, est el agradecimiento al apoyo reci-
de captulo bido por parte de nuestras familias y amigos. Hace muchos aos un autor defini el proceso
Trminos clave Los trminos clave proporcionan una lista de los trminos importantes
de escribir un texto como "encerrarse en un cuarto". Mientras los autores sufren a travs del
presentados en el captulo. Cada trmino clave se define en el glosario.
proceso de escritura, sus familias y amigos sufren a travs de su ausencia. Slo podemos es-
Resumen Los resmenes contienen una descripcin general concisa de todos los puntos perar que en cuanto vean el producto final, sientan que su sacrificio vali la pena.
clave del captulo. Se listaron con vietas para que sean ms fciles de leer.

Prctica Cada prctica se compone de tres partes: preguntas de repaso, preguntas de op-
cin mltiple y ejercicios.

111 Las preguntas de repaso evalan los puntos clave y conceptos generales del captulo.
111 Las preguntas de opcin mltiple estn diseadas para probar la comprensin de los
materiales.
111 Los ejercicios estn diseados para ver si los estudiantes pueden aplicar los conceptos y
las frmulas.

Se incluyen siete apndices para una referencia rpida a las tablas o materiales que se estu-
Apndices
dian en varios captulos. Los apndices son:

7
J:____________________________________________ ~~ ________________________ ~
1.1 la computadora como una caja negra ..

1.1 LA COMPUTADORA COMO UNA CAJA NEGRA


Si usted no est interesado en los mecanismos internos de una computadora, simplemente
puede definirla como una caja negra. Sin embargo, aun as necesita definir el trabajo reali-
zado por una computadora para distinguirla de otros tipos de cajas negras. Explicaremos dos

Int duccin PROCESADOR


DE DATOS
modelos comunes de computadoras.

Puede pensar en una computadora como un procesador de datos. Usando esta definicin,
una computadora acta 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 da, es demasiado general. Bajo este modelo, una calculadora de bolsillo
tambin es una computadora (lo cual es cierto, literalmente).

Figura 1.1 Modelo de procesador de datos

La frase ciencia de la computacin 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 computacin". Este ca- sible ms de un tipo de procesamiento. En otras palabras, no queda claro cuntos tipos de
ptulo introductorio primero trata de averiguar qu es la computadora y luego descubre otros conjuntos de operaciones puede realizar una mquina basada en este modelo. Se trata de
aspectos relacionados con las computadoras. Consideramos a la computadora como una ca- una mquina para propsito especfico o una mquina para propsito general?
ja negra y tratamos de adivinar su comportamiento. Luego tratamos de penetrar en esta caja Este modelo podra representar una computadora para propsito especfico (o procesa-
para dejar al descubierto lo que es comn a todas las computadoras. Esto nos lleva al mode- dor) que est diseada 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 automvil. Sin embargo, las compu-
seguida analizamos brevemente las repercusiones y los inconvenientes de aceptar el modelo tadoras, segn se usa el trmino en la actualidad, son mquinas de propsito general. Pue-
de Van Neumann. En este punto, nos referimos al captulo o los captulos del texto relaciona- den realizar muchos tipos distintos de tareas. Esto implica que necesitamos cambiar nuestro
dos con estos problemas. El captulo 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 propsito general se muestra en la figura 1.2. Es-
DE DATOS ta figura aade un elemento extra a la computadora: el programa. Un programa es un con-
PROGRAMABLE junto de instrucciones que indican a la computadora qu hacer con los datos. En los
primeros das 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
de entrada de salida

Figura 1.2 Modelo de procesador de datos programable

-
.. Introduccin 1.2 El modelo de von Neumann ..

En el nuevo'modelo, los datos de salida dependen de la combinacin de dos factores: los Mismos datos Desde luego, usted espera el mismo resultado cada vez que tanto los datos de entrada como
datos de entrada y el programa. Con los mismos datos de entrada, usted puede generar dis- de entrada, el 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- mismo programa 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.

Mismo programa, La figura 1.3 muestra el mismo programa de ordenamiento con datos distintos. Aunque el 1.2 EL MODELO DE \ION NEUMANN
diferentes 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-
de entrada bre de John van Neumann). El modelo examina el interior de la computadora (la caja negra)
y define cmo se realiza el procesamiento. Se basa en tres ideas.
Programa CUATRO
SUBSISTEMAS El modelo define una computadora como cuatro subsistemas: memoria, unidad lgica arit-
mtica, unidad de control y entrada/salida (figura 1.5).

3,12,8,22 COlnpultad,ora.CI----1~ 3,8, 12,22

Programa

Computadora
'::,',r
14,6,8,12 ~fG()mputadOl'# .I----I~ 6, 8, 12, 14

Figura 1,3 Mismo programa, diferentes datos Datos Unidad lgica Datos
de aritmtica de
entrada salida
Mismos datos La figura 1.4 muestra los mismos datos de entrada con diferentes programas. Cada programa
de entrada,
diferentes
hace que la computadora realice distintas operaciones con los mismos datos de entrada. El
primer programa ordena los datos, el segundo suma los datos y el tercero encuentra el nme-
ro ms pequeo.
Unidad de contr6 I
programas
Figura 1,5 Modelo de von Neumann

Memoria La memoria es el rea de almacenamiento, donde los programas y los datos se almacenan
durante el procesamiento. Ms adelante en este captulo se analiza la razn de ser del alma-
3, 12, 8, 22 4----1~ 3,8,12,22 cenamiento de programas y datos.
'-----"

Programa Unidad lgica La unidad lgica aritmtica (ALU: arithmetic logic unit) es donde el clculo aritmtico y
aritmtica las operaciones lgicas toman lugar. Si una computadora es un procesador de datos, usted
debera poder realizar operaciones aritmticas con los datos (por ejemplo, sumar una lista de
nmeros). Tambin debera poder realizar operaciones lgicas con ellos (por ejemplo, en-
3, 12, 8, 22 - 1--- 45 contrar el menor de dos elementos de datos, como en el ejemplo de clasificacin previo).

Programa
Unidad de control 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 1--3 putadora; el subsistema de salida enva el resultado del procesamiento al exterior. La defini-
cin del subsistema de entrada/salida es muy amplia; tambin incluye los dispositivos de
almacenamiento secundarios como un disco o cinta que almacena datos y programas para
Figura 1.4 Mismos datos, diferentes programas
Introduccin 1.5 Software de computadora ..

procesamiento. Un disco se considera un dispositivo de salida cuando almacena los datos ORGANIZACiN Aun cuando los datos deben almacenarse slo en una fonna (un patrn 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 fonnas. Ade-
cuando usted lee datos del disco. ms, las computadoras (y la nocin del procesamiento de datos) han creado un nuevo cam-
po de estudio conocido como organizacin de datos. Puede usted organizar sus datos en
CONCEPTO El modelo de von Neumann establece que el programa debe almacenarse en la memoria. Es- diferentes entidades y formatos antes de ahnacenarlos dentro de una computadora? Hoy da,
DE PROGRAMA to es totalmente diferente de la arquitectura de las primeras computadoras en las cuales slo los datos no se tratan como una secuencia de informacin, sino que se organizan en unida-
ALMACENADO se almacenaban los datos en la memoria. El programa para una tarea se implementaba me- des pequeas, las cuales a su vez estn organizadas en unidades ms grandes, y as sucesi-
diante la manipulacin de una serie de interruptores o al cambiar el sistema de cableado. vamente. En los captulos 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 fonnato porque se ahnacenan 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
EJECUCiN Un programa en el modelo de van Neumann se conforma de un nmero fmito de instruc-
La caracterstica principal del modelo de van Neumann es el concepto del programa ahnace-
SECUENCiAL ciones. En este modelo, la unidad de control trae una instruccin 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. despus de otra.
gramas. La programacin de estas primeras computadoras implicaba cambiar los sistemas de
Desde luego, una instruccin puede requerir que la unidad de control salte a algunas instruc-
cableado o encender y apagar una serie de interruptores. La programacin 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 van Neumann cambi el significado del trrrrino "programacin". En es-
te modelo, hay dos aspectos de la programacin que deben ser comprendidos.

LOS PROGRAMAS 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 slo se necesita memoria para mantener los datos, sino que adems se requiere me-
ALMACENARSE moria para mantener el programa (figura 1.6).
Sin lugar a dudas, el modelo de van Neumann establece el estndar de los componentes
esenciales de una computadora. Una computadora fsica debe incluir los cuatro componen-
tes, a los que se hace referencia como hardware de la computadora, definidos por van 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 ms de-
talle en el captulo 5.

1.4 DATOS
Datos
Este modelo define claramente a una computadora como una mquina de procesamiento de
datos que acepta datos de entrada, los procesa y produce el resultado.
Memoria
ALMACENAMIENTO El modelo de van Neumann no define cmo deben ahnacenarse los datos en una computa-
DE DATOS dora. Si una computadora es un dispositivo electrnico, la mejor manera de almacenar los Figura 1.6 Programa y datos en memoria
datos es en fonna de seal elctrica, especficamente su presencia o ausencia. Esto implica
que una computadora puede ahnacenar datos en uno de dos estados.
Evidentemente, los datos que usted usa en la vida diaria no estn slo en uno de dos es- UNA SECUENCIA Otro requisito del modelo es que el programa debe ser una secuencia de instrucciones. Cada
tados. Por ejemplo, nuestro sistema de numeracin emplea dgitos que pueden estar en uno DE INSTRUCCIONES instruccin opera en una o ms piezas de datos. De esta manera cada instruccin puede cam-
de diez estados (O a 9). Este tipo de infonnacin no se puede (todava) almacenar en una biar el efecto de una instruccin previa. Por ejemplo, la figura 1.7 muestra un programa que
computadora. Necesita ser cambiada a otro sistema que use slo dos estados (O y 1). introduce dos nmeros, luego los suma e imprime el resultado. Este programa consiste de
Usted necesita adems procesar otros tipos de datos (texto, imgenes, audio, video). stos cuatro instrucciones individuales.
tampoco pueden almacenarse en una computadora directamente, sino que deben cambiarse a Una persona podra 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. Actuahnente, las computadoras realizan
En los captulos 2 y 3, aprender cmo almacenar distintos tipos de datos como un pa- millones de tareas. Si el programa para cada tarea fuera una entidad independiente sin una
trn binario, una secuencia de ceros y unos. En el captulo 4, mostraremos la manera en que seccin comn con otros programas, la programacin sera difcil. El modelo de van Neu-
se manipulan los datos como un patrn binario, dentro de una computadora. mann facilita la programacin mediante una definicin cuidadosa de diferentes instruccio-
Introduccin 1.6 Historia ..

~: ~:~~~~~: ;:~=:~~~i~i~~:~~i:~ ~: 11~~t::~~.< . . y>


3. S~e:,'1as',dOsA)i~4aS::Y}tlnlac:en,e eI-resultado en la memoria.
1.6 HISTORIA
Antes de cerrar este captulo, daremos un breve repaso a la historia de la computacin y las
4. Il1}prima* el~~~u11ado:.........
computadoras, para lo cual dividimos esta historia en tres periodos.
Programa
MQUINAS Durante este periodo, se inventaron varias mquinas computadoras que tienen cierto pareci-
Figura 1.7 Programa hecho de instrucciones do con el concepto moderno de computadora.
MECNICAS
(ANTES DE 1930) 11 En el siglo XVII, Blaise Pascal, un matemtico y filsofo francs, invent la Pascalina,
nes que las computadoras pueden usar. Un programador combina estas instrucciones para una calculadora mecnica para operaciones de suma y resta. En el siglo XX, cuando Ni-
hacer cualquier nmero de programas. Cada programa puede ser una combinacin diferen- klaus Wirth invent un lenguaje de programacin estructurado, lo llam Pascal en ho-
te de distintas instrucciones. nor al inventor de la primera calculadora mecnica.
11 A fmales del siglo XVII, el matemtico alemn Gottfried Leibnitz invent una calcula-
ALGORITMOS El requisito anterior hace posible la programacin, pero aporta otra dimensin al uso de la dora mecnica ms compleja que poda realizar operaciones de multiplicacin y divi-
computadora. Un programador no slo debe aprender la tarea que realiza cada instruccin, sin, as como de suma y resta. Se le llam la Rueda de Leibnitz.
sino que adems debe saber cmo combinar estas instrucciones para realizar una tarea en 11 La primera mquina que us la idea de almacenamiento y programacin fue el telar de
particular. Al considerar este problema desde un punto de vista diferente, un programador Jacquard, inventado por Joseph-Marie Jacquard a principios del siglo XIX. El telar usa-
primero debe resolver el problema paso a paso y luego tratar de encontrar la instruccin (o ba tarjetas perforadas (como un programa almacenado) para controlar el aumento de hi-
la serie de instrucciones) apropiada que resuelva el problema. La solucin paso a paso se co- los en la fabricacin de textiles.
noce como algoritmo. Los algoritmos juegan un papel muy importante en la ciencia de la
11 En 1823, Charles Babbage invent la Mquina Diferencial, la cual poda hacer ms que
computacin, y se estudian en el captulo 8.
operaciones aritmticas simples; tambin poda resolver ecuaciones polinomiales. Pos-
teriormente invent una mquina llamada Mquina Analtica que, en cierta medida, es
LENGUAJIES Al principio de la era de las computadoras, no haba un lenguaje de computadora. Los pro-
paralela a la idea de las computadoras modernas. Tena cuatro componentes: un moli-
gramadores escriban instrucciones (usando patrones binarios) para resolver un problema.
no (ALU moderno), un almacn (memoria), un operador (unidad de control) y una sa-
Sin embargo, a medida que los programas crecieron, escribir programas largos usando estos
lida (entrada/salida).
patrones se volvi tedioso. A los cientficos de la computacin se les ocurri la idea de usar
smbolos para representar patrones binarios, justo como la gente usa smbolos (palabras) pa- II!IIIII En 1890, Herman Hollerit, mientras trabajaba en la Oficina de Censos de Estados Uni-
ra dar rdenes en la vida diaria. Pero desde luego, los smbolos usados en la vida diaria di- dos, dise y construy una mquina programadora que poda leer, contar y ordenar au-
fieren de aquellos usados en las computadoras. De esta manera naci el concepto de los tomticamente los datos almacenados en las tarjetas perforadas.
lenguajes de computadora. Un idioma natural (por ejemplo el ingls) es un lenguaje rico y
tiene muchas reglas para combinar las palabras de una manera correcta; por otra parte, un NACIMIENTO Entre 1930 Y 1950, algunos cientticos, que podran considerarse los pioneros de la indus-
lenguaje de computacin tiene un nmero ms limitado de smbolos y tambin un nlmero DE LAS tria de la computacin electrnica, inventaron varias computadoras.
limitado de palabras. Los lenguajes de computadora se cubren en el captulo 9. COMPUTADORAS
ELECTRNICAS
INGENIERA Algo que no se defini en el modelo de von Neumann es la ingeniera de software, la cual
(1930-1950)
DIE SOFTWARE es el diseo y la escritura de programas estructurados. En la actualidad no es aceptable slo
escribir un programa que realiza una tarea; el programa debe seguir principios y reglas es-
Primeras Las primeras computadoras de este periodo no almacenaban el programa en memoria; todas
trictos. Estos principios, conocidos en conjunto como ingeniera de software, se estudiarn
computadoras se programaban externamente. Durante estos aos destacaron cinco computadoras:
en el captulo 10.
electrnicas 11 La primera computadora para propsito especial que codificaba informacin de mane-
SISTEMAS Durante la evolucin de las computadoras, los cientficos se dieron cuenta de que exista una ra elctrica fue inventada por John V. Atanasoff y su asistente Clifford Berry en 1939.
serie de instrucciones comunes a todos los programas. Por ejemplo, casi todos los progra- Se le llam ABC (Atanasoff Berry Computer) y se dise especficamente para resol-
OPERATIVOS
mas requieren instrucciones para indicar a una computadora a dnde enviar los datos y dn- ver un sistema de ecuaciones lineales.
de recibirlos. Es ms eficiente escribir estas instrucciones slo una vez de manera que las 11. Al mismo tiempo, el matemtico alemn Konrad Zuse dise una mquina de propsi-
usen todos los programas. As fue como surgi el concepto de sistema operativo. Original- to general llamada Z1.
mente un sistema operativo trabajaba como un administrador para facilitarle a un programa
11 En la dcada de 1930, el ejrcito estadounidense e IBM patrocinaron un proyecto en la
el acceso a los componentes de la computadora. Hoy da, los sistemas operativos hacen mu-
Universidad de Harvard bajo la direccin de Howard Airen para construir una compu-
cho ms. Aprender sobre enos en el captulo 7.
tadora enorme llamada Mark 1. Esta computadora usaba componentes elctricos y me-
cnicos.
*N. del T. Bajo este contexto, imprimir significa enviar el resultado del procesamiento de los datos a
una impresora, un archivo, la pantalla, un modern, un dispositivo de almacenamiento o cualquier otro
11 En Inglaterra, Alan Turing invent una computadora llamada Colossus diseada para
dispositivo de salida. descifrar el cdigo Enigma alemn.
.. Introduccin 1.9 Prctica ..

!II La primera computadora de propsito general totalmente electrnica fue fabricada por
John Mauchly y 1. Presper Eckert y recibi el nombre de ENIAC (Electronic Numeri- 1.1 TRMINOS CLAVE
cal Integrator and Calculator: Calculadora e integrador numrico electrnico). Se ter-
min en 1946. Utilizaba 18 000 tubos de vaco, meda 100 pies de largo por 10 pies de algoritmo instruccin programa
alto y pesaba 30 toneladas. caja negra lenguaje de computadora sistema operativo
ciencia de la comiJUtacin memoria software
Computadoras Las cinco computadoras precedentes utilizaron memoria slo para almacenar datos. Se pro- circuito integrado microcomputadora unidad de control
basadas gramaron externamente usando cables o interruptores. 10hn von Neumann propuso que el datos de entrada modelo de von Neumann unidad lgica aritmtica (ALU)
en el modelo programa y los datos deberan almacenarse en la memoria. De esa manera, cada vez que us- datos de salida procesador de datos
ted utilizara una computadora para realizar una tarea nueva, slo necesitara cambiar el pro- ingeniera de software procesador de datos programable
de von Neumann
grama en lugar de volver a conectar los cables de la mquina o encender y apagar cientos de
interruptores.
La primera computadora basada en la idea de von Neumann se construy en 1950 en la
Universidad de Pennsylvania y se llam EDVAC. Al mismo tiempo, Maurice Wilkes constru-
y una computadora similar llamada EDSAC en la Universidad de Cambridge en Inglaterra.

GENERACIONES DE Las computadoras construidas despus de 1950 siguieron, ms o menos, al modelo de von
1.8 RESUMEN
COMPUTADORAS Neumann. Las computadoras se han vuelto ms rpidas, ms pequeas y ms baratas, pero
el principio es casi el mismo. Los historiadores dividen este periodo en generaciones, con 111 Ciencia de la computacin, en este texto, se refiere a te- 111 El modelo de von Neumann especifica un subsistema
(1950-hoy da) mas relacionados con una computadora. de memoria, un subsistema de unidad lgica aritmtica,
cada generacin presenciando un cambio importante en el hardware o el software (pero no
en el modelo). un subsistema de unidad de control y un subsistema de
11 Una computadora es un procesador de datos programa-
entrada/salida.
ble que acepta datos de entrada y programas, y datos de
Primera La primera generacin (aproximadamente de 1950 a 1959) se caracteriza por la aparicin de
salida.
11 Los datos y los programas se almacenan en la memoria
generacin computadoras comerciales. Durante este periodo, las computadoras eran utilizadas slo por de la computadora.
profesionales. Estaban encerradas en habitaciones con acceso restringido nicamente al ope- 111 Un programa es una serie de instrucciones ejecutadas 11 Una solucin paso a paso para un problema se llama al-
rador o a especialistas en computacin. Las computadoras eran voluminosas y usaban tubos de manera secuencial que indican a la computadora qu goritmo.
de vaco como interruptores electrnicos. En esta poca las computadoras eran asequibles hacer con los datos.
l1li Un programa es escrito en un lenguaje de computadora.
slo para las grandes organizaciones.
l1li Actualmente todas las computadoras se basan en el mo- !II La ingeniera de software es el diseo y la escritura de
delo de von Neumann. programas de forma estructurada.
Segunda Las computadoras de la segunda generacin (aproximadamente de 1959 a 1965) utilizaban
generacin transistores en lugar de tubos de vaco. Esto redujo su tamao as como su costo y las puso al
alcance de las empresas medianas y pequeas. Dos lenguajes de programacin de alto nivel,
FOR1RAN y COBOL (vase el Cap. 9), se inventaron y facilitaron la programacin. Estos
dos lenguajes separaron la tarea de la programacin de la tarea de la operacin de la compu-
tadora. Un ingeniero civil poda escribir un programa en FORmAN para resolver un proble-
ma sin involucrarse en detalles electrnicos de la arquitectura de la computadora.
1.9 PRCTICA
Tercera La invencin del circuito integrado (transistores, cableado y otros componentes en un solo PREGUNTAS DE REPASO 9. Cul es la funcin del subsistema de entrada/salida en
1. Cmo se define a la ciencia de la computacin en este el modelo de von Neumann?
generacin chip) redujeron el costo y el tamao de las computadoras an ms. Las minicomputadoras apa-
recieron en el mercado. Los programas empaquetados, populannente conocidos como paque- libro? 10. Compare y contraste el contenido de la memoria de las
tes de software, se vol vieron disponibles. Una pequea empresa poda comprar un paquete que 2. Qu modelo es la base para las computadoras de hoy? primeras computadoras con el contenido de la memoria
necesitaba (por ejemplo, para contabilidad) en lugar de escribir su propio programa. Una nue- 3. Por qu no se debe llamar a una computadora un pro- de una computadora basada en el modelo de von Neu-
va industria naci, la industria del software. La generacin dur ms o menos de 1965 a 1975. cesador de datos? mann.
4. Qu requiere un procesador de datos programable pa- 11. De qu manera el modelo de von Neumann cambi el
Cuarta La cuarta generacin (aproximadamente de 1975 a 1985) vio nacer las microcomputado- ra producir datos de salida? concepto de la programacin?
generacin ras. Las primera calculadora de escritorio (Altair 8800) se volvi disponible en 1975. Los 5. Cules son los subsistemas del modelo de computado-
avances en la industria de la electrnica permitieron que subsistemas de computadoras com- ra von Neumann? PREGUNTAS DE OPCIN MLTIPLE
pletos cupieran en una sola tarjeta de circuito. Esta generacin tambin vio la aparicin de 6. Cul es la funcin del subsistema de memoria en el 12. El modelo _____ es la base para las computadoras
las redes de computadoras (Cap. 6). modelo de von Neumann? de hoy.
7. Cul es la funcin del subsistema ALU en el modelo a. Ron Neumann
Quinta Esta generacin de duracin indefinida comenz en 1985. Presenci la aparicin de las com- de von Neumann? b. von N eumann
generacin putadoras laptop y palmtop, mejoras en los medios de almacenamiento secundarios (CD- 8. Cul es la funcin del subsistema de unidad de control c. Pascal
ROM, DVD, etc.), el uso de la multimedia y el fenmeno de la realidad virtual. en el modelo de von Neumann? d. Charles Babbage
1.9 Prctica ..
.. Introduccin

31. Un lenguaje de programacin tiene diez instrucciones 36. Utiliza Internet o acude a la biblioteca para encontrar
13. En el modelo de von Neumann, el subsistema 21. es una serie de instrucciones en un lengua-
ms informacin sobre la Rueda de Leibnitz.
je de computacin que indica a la computadora qu ha- diferentes. Cuntos programas de cinco instrucciones
_ _ _ _ almacena datos y programas.
cer con los datos. pueden escribirse con este lenguaje sin repetir ninguna 37. Utiliza Internet o acude a la biblioteca para encontrar
a. ALU
a. un sistema operativo hardware instruccin? Cuntos programas de siete instrucciones? ms informacin sobre el telar de Jacquard y su impac-
b. entrada/salida
c. memoria b. un algoritmo 32. Actualmente qu es ms costoso, el hardware o el soft- to social.
d. unidad de control c. un procesador de datos 38. Utiliza Internet o acude a la biblioteca para encontrar
ware?
d. un programa ms informacin sobre la Mquina Analtica.
14. En el modelo de von Neumann, el subsistema 33. Qu es ms valioso para una organizacin hoy da, el
_ _ _ _ realiza clculos y operaciones lgicas. 22. es el diseo 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. ms informacin sobre Hollerit y su tabuladora.
a. ingeniera de software 34. Cmo impone la organizacin de los datos un progra-
b. entrada/salida
b. ingeniera de hardware ma procesador de palabras?
c. memoria
d. unidad de control c. desarrollo de algoritmos 35. Utiliza Internet o acude a la biblioteca para encontrar
d. arquitectura de instrucciones ms informacin sobre la Pascalina.
15. En el modelo de van Neumann, el subsistema
_ _ _ _ acepta datos y programas y enva los resul- 23. La primera computadora electrnica 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
do unidad de control d. EDVAC

16. En el modelo de van 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 mquina computadora en usar la idea de al-
17. Segn el modelo de van Neumann, ____ se alma- macenamiento y programacin se llam _ _ _ __
cenan en la memoria. a. la Madeline
a. slo los datos b. EDVAC
b. slo los programas c. la mquina de Babbage
c. los datos y los programas d. el telar de Jacquard
d. ninguno de los anteriores 26. Los separaron la tarea de la programacin
18. Una solucin paso a paso para un problema se llama de las tareas de operacin de la computadora.
a. algoritmos
a. hardware b. procesadores de datos
b. un sistema operativo c. lenguajes de programacin de alto nivel
c. un lenguaje de computadora d. sistemas operativos
d. un algoritmo
19. FORTRAN Y COBOL son ejemplos de _ _ _ _ ' EJERCICIOS
a. hardware 27. Utiliza Internet o acude a la biblioteca para averiguar
b. sistemas operativos cundo se inventaron los teclados.
c. lenguajes de computadora 28. Utiliza Internet o acude a la biblioteca para averiguar
d. algoritmos cundo se inventaron las impresoras.
20. Una mquina computadora del siglo XVII que poda rea- 29. Utiliza Internet o acude a la biblioteca para averiguar
lizar operaciones de suma y resta era la _ _ __ cundo se inventaron los discos magnticos.
a. Pascalina
b. telar de J acquard 30. Segn el modelo de von Neumann, los discos duros
c. mquina analtica actuales pueden utilizarse como entrada o como salida?
d. mquina de Babbage Explica,
2.1 Tipos de datos ..

2.1 TIPOS DE DATOS


En la actualidad los datos se presentan de diferentes maneras, por ejemplo nmeros, texto,
imgenes, audio y video (figura 2.1). La gente necesita procesar todos estos tipos de datos.

Representacin
de datos Datos

'--
Video I
Figura 2.1 Diferentes tipos de datos

I!I Un programa de ingeniera uti1iza una computadora principalmente para procesar nme-
ros: hacer aritmtica, resolver ecuaciones algebraicas o trigonomtricas, encontrar las
races de una ecuacin diferencial, y as por el estilo.
Como se estudi en el captulo 1, una computadora es una mquina que procesa datos. Pe- 11 Un programa de procesamiento de palabras, por otra parte, utiliza una computadora ms
ro antes de que podamos hablar sobre el procesamiento de datos, necesita comprender la na- que nada para procesar texto: justificarlo, moverlo, eliminarlo, etctera.
turaleza de los mismos. En este captulo y en el siguiente se analizan los diferentes tipos de
111 Un programa de procesamiento de imgenes usa una computadora para manipular im-
datos y cmo se representan dentro de una computadora. En el captulo 4 se muestra cmo
genes: crearlas, reducirlas, ampliarlas, rotadas, etctera.
se manipulan los datos en una computadora.
11 Una computadora tambin puede manejar datos de audio. Usted puede reproducir msi-
ca en una computadora e introducir su voz como datos.
liI Finalmente, una computadora puede usarse no slo para mostrar pelculas, sino tambin
para crear los efectos especiales que se ven en ellas.

La industria de la computacin usa el trmino multimedia para definir infonnacin


qu.e contiene nmeros, texto, imgenes, audio y video.

2.2 DATOS DENTRO DE LA COMPUTADORA


La pregunta es: Cmo se manejan todos estos tipos de datos? Se necesitan otras compu-
tadoras para procesar los distintos tipos de datos? Es decir, se tiene una categorade
computadoras que procesan slo nmeros? Hay una categora de computadoras que proce-
san slo texto?
Esta solucin de diferentes computado~as para procesar distintos tipos de datos no es eco-
nmica ni prctica porque los datos por lo general son una mezcla de tipos. Por ejemplo, aun-
que un banco procesa principalmente nmeros, tambin necesita almacenar, como texto, los
nombres .de sus clientes. Como otro ejemplo, una imagen con frecuencia es una mezcla de
grficos y texto.
.. Representacin de datos 2.3 Representacin de datos ..

La solucin ms eficaz es usar una representacin uniforme de los datos. Todo tipo de da- ,
tos que entran del exterior a una computadora se transforman en esta representacin unifonne 2.3 REPRESENTACION DE DATOS
cuando se almacenan en una computadora y se vuelven a transformar en su representacin
original cuando salen de la computadora. Este formato universal se llama patrn de bits. Ahora podemos explicar cmo pueden representarse diferentes tipos de datos usando patro-
nes de bits.
BIT Antes de continuar con el anlisis de los patrones de bits, se debe definir un bit. Un bit (bi-
nary digit: dgito binario) es la unidad ms pequea de datos que puede almacenarse en una TEXTO Una pieza de texto en cualquier idioma es una secuencia de smbolos usados para represen-
computadora; puede ser ya sea O o 1. Un bit representa el estado de un dispositivo que pue- tar una idea en ese idioma. Por ejemplo, el idioma ingls utiliza 26 smbolos (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 maysculas, 26 smbolos (a, b, c, ... , z) para representar las le-
cendido. La convencin es representar el estado de encendido como 1 y el estado de apagado tras minsculas, 9 smbolos (O, 1, 2, ... , 9) para los caracteres numricos (no nmeros; la di-
como O. Un interruptor electrnico puede representar un bit. En otras palabras, un interruptor ferencia se ver ms adelante) y smbolos (., ?, :, : ... , !) para representar la puntuacin. Otros
puede almacenar un bit de informacin. Actualmente las computadoras utilizan varios dispo- smbolos corno el espacio en blanco, la lnea nueva y el tabulador se usan para alineacin de
sitivos binarios de dos estados para almacenar datos. texto y legibilidad.
Usted puede representar cada smbolo con un patrn de bits. Dicho de otra forma, texto
PATRN DE BITS Un solo bit no puede resolver el problema de la representacin de datos, si cada pieza de da-
como la palabra "BYTE", formada por cuatro smbolos, puede representarse como 4 patro-
tos pudiera representarse por un 1 o un O, entonces slo se necesitara un bit. Sin embargo,
nes de bits, en los que cada patrn define un solo smbolo (figura 2.4).
usted necesita almacenar nmeros ms grandes, necesita almacenar texto, grficos y otros ti-
pos de datos.
Para representar diferentes tipos de datos se utiliza un patrn de bits, una secuencia o, co-
mo a veces se le llama, una cadena de bits. La figura 2.2 muestra un patrn de bits formado
por 16 bits, es una combinacin de ceros (O) y unos (1). Esto significa que si usted quiere
almacenar un patrn de bits formado por 16 bits, necesita 16 interruptores electrnicos. Si
quiere almacenar 1000 patrones de bits, cada uno de 16 bits, necesita 16000 bits y as suce-
sivamente.

Figura 2.4 Representacin de smbolos usando patrones de bits

1000101010111111 La pregunta es: Cuntos bits se necesitan en un patrn de bits para representar un smbo-
lo en un idioma? Depende de cuntos smbolos haya en la secuencia. Por ejemplo, si usted
Figura 2.2 Patrn de bits
crea un idioma imaginario que utilice slo las letras maysculas del idioma ingls, slo ne-
cesita 26 smbolos. Un patrn de bits en este idioma requiere representar al menos 26 smbo-
Ahora la pregunta es: Cmo sabe la memoria de la computadora qu tipo de datos repre- los, Para otro idioma, como el chino, pueden necesitarse muchos smbolos ms, La longitud
senta el patrn de bits? No lo sabe. La memoria de la computadora slo almacena los datos del patrn de bits que representa lill smbolo en un idioma depende del nmero de smbolos
como patrones de bits. Es responsabilidad de los dispositivos de entrada/salida o de los pro- usados en ese idioma. Ms smbolos significan un patrn de bits ms grande.
gramas interpretar un patrn de bits como un nmero, texto o algn otro tipo de datos. En Aunque la longitud del patrn de bits depende del nmero de smbolos, la relacin no es li-
otras palabras, los datos se codifican cuando entran a la computadora y se decodifican cuan- neal~ es logartmica. Si se requieren dos smbolos, la longitud es 1 bit (ellog22 es 1). Si se ne-
do se presentan al usuario (figura 2.3). cesitan cuatro smbolos, la longitud es 2 bits (10g24 es 2). La tabla 2.1 muestra esta relacin, la
cual es fcilmente perceptible. Un patrn de bits de 2 bits puede tomar cuatro formas diferen-
tes: 00,01, 10 Y 11; cada una de las cuales representa un smbolo. Del mismo modo, un pa-
Texto --1 Codilicacin I~ 1001.".,111--) r--+ 1111 , , ." 111 ------+1 Decodificacin 1--+ Texto trn de tres bits puede tomar ocho formas diferentes: 000, 001. 010, Oll. 100, 101. 110 y 111.
M
Nmero --1 Codilic"cin I~ 1111"",101--) e ~ 1101."" 101------+lnccodificucin r--+ N(mero
m Nmero de sinbolos Longitud del patrn de bits
Imagen ~-----+1111 .... ,111-----1 O ~ 1011 "'" OOO------+IDecOditicocin f---+ Imagen 2 1
Audio --1 Codificacin 1-----+ 1000 .. ,.,000----0 r
i ~0101.""OOI------+IDeCodjficacin ~ Audio 4 2
Video ---1 Codificaci" 1-----+ 1011 ." .. 00 1 -----: a
J-+ 1111 , , 111 ------+1 Decodificacin r--+ Video 8 3
16 4
.. . ...
Figura 2.3 Ejemplos de patrones de bits
128 7
256 8
BYTE Por tradicin, un patrn de bits con una longitud de 8 bits se llama byte, Este trmino tam-
bin se ha utilizado para medir el tamao de la memoria o de otros dispositivos de almacena- ... ...
miento. Por ejemplo, se dice que la memoria de una computadora que puede almacenar 8 65536 16
millones de bits de infonnacin es una memoria de 1 milln de bytes. Tabla 2.1 Nmero de smbolos y longitud de un patrn de bits
.. Representacin de datos 2.3 Representacin de datos ..

Cdigos Se han diseado diferentes secuencias de patrones de bits para representar smbolos de texto. Unicode Ninguno de los cdigos anteriores representa smbolos que pertenecen a idiomas
A cada secuencia se le conoce como cdigo y al proceso de representar los smbolos se le lla- distintos al ingls. Por eso, se requiere un cdigo con mucha ms capacidad. Una coalicin
ma codificacin. En esta seccin explicamos los cdigos comunes. de fabricantes de hardware y software ha diseado un cdigo llamado Unicode que utiliza 16 ~'
bits y puede representar hasta 65536 (2 16) smbolos. Diferentes secciones del cdigo se asig-
ASCII El Instituto Nacional Norteamericano de Estndares (ANSI: American Nacional nan a los smbolos de distintos idiomas en el mundo. Algunas partes del cdigo se usan para
Standards Institute) desarroll un cdigo llamado Cdigo norteamericano de estndares smbolos grficos y especiales. El lenguaje Java utiliza este cdigo para representar carac-
para intercambio de informacin (ASen: American Standard Cade far Infonnation Inter- teres. Microsoft Windows usa una variacin de los primeros 256 caracteres. En el apndice B
change). Este cdigo utiliza siete bits para cada smbolo. Esto significa que 128 (27) smbo- hay un pequeo conjunto de smbolos Unicode.
los distintos pueden definirse mediante este cdigo. Los patrones de bits completos para el
cdigo ASCII estn en el apndice A. La figura 2.5 muestra cmo se representa la palabra ISO La Organizacin Internacional para la Estandarizacin (Internacional Standard
"BYTE" en cdigo ASCII. Organization), conocida como ISO, ha diseado un cdigo que utiliza patrones de 32 bits. Es-
te cdigo representa hasta 4294967 296 (232) smbolos, definitivamente lo suficiente para re-
presentar cualquier smbolo en el mundo actual.

B Y T E NMEROS En una computadora, los nmeros se representan usando el sistema binario. En este sistema,
un patrn de bits (una secuencia de ceros y unos) representa un nmero. Sin embargo, un c-

I I I I digo como el ASCII no se usa para representar datos. La razn para ello y un anlisis de la
representacin de nmeros se presentan en el captulo 3.
1000010 1011001 1010100 1000101
IMGENES Hoy da las imgenes se representan en una computadora mediante uno de dos mtodos: gr R

Figura 2.5 Representacin de la palabra "BYTE" en cdigo ASCII ficos de mapa de bits o grficos de vectores (figura 2.6).

La lista siguiente destaca algunas de las caractersticas de este cdigo:

l1li ASCII utiliza un patrn de siete bits que vara de 0000000 a 1111111.
11 El primer patrn (0000000) representa el carcter nulo (la ausencia de carcter).
l1li El ltimo patrn (1111111) representa el carcter de eliminacin.
111 Hay 31 caracteres de control (no imprimibles).
11 Los caracteres numricos (O a 9) se codifican antes que las letras.
Bitmap I 1
,-1_\\_e_ct_or_..

JI Hay varios caracteres de impresin especiales.


Figura 2.6 Mtodos de representacin de imgenes
111 Las letras maysculas (A ... Z) estn antes que las letras minsculas (a ' .. z).
11 Los caracteres en maysculas y en minsculas se distinguen slo por un bit. Por ejem-
plo. el patrn para A es 1000001; el partn para a es 1100001. La nica diferencia es el Grficos de mapa En este mtodo, una imagen se divide en una matriz de pixeles (picture elements: elementos
de imagen), donde cada pixel es un pequeo punto. El tamao del pixel depende de lo que
sexto bit a partir de la derecha. de bits
se conoce como resolucin. Por ejemplo, una imagen puede dividirse en 1000 pixeles o
11 Hay seis caracteres especiales entre las letras maysculas y minsculas. 10000 pixeles. En el segundo caso, aunque hay una mejor representacin de la imagen (me-
jor resolucin), se necesita ms memoria para ahnacenarla.
ASCII extendido Para hacer que el tamao de cada patrn sea de 1 byte (8 bits), a los pa- Despus de dividir una imagen en pixeles, a cada pixel se asigna un patrn de bits. El ta-
trones de bits ASen se les aumenta un O ms a la izquierda. Ahora cada patrn puede caber mao y el valor del patrn dependen de la imagen. Para una imagen formada slo por puntos
fcilmente en un byte de memoria. En otras palabras, en ASCII extendido el primer patrn blancos y negros (por ejemplo, un tablero de ajedrez), un patrn de un bit es suficiente para
es 00000000 y el ltimo es 01111111. representar un pixel. Un patrn de O representa un pixel negro y uno de 1 representa un pixel
Algunos fabricantes han decidido usar el bit de ms para crear un sistema de 128 smbo- blanco. Luego los patrones se registran uno tras otro y se almacenan en la computadora. La
los adicional. Sin embargo, este intento no ha tenido xito debido a la secuencia no estndar figura 2.7 muestra una imagen de este tipo y su representacin.
creada por cada fabricante. Si una imagen no se forma de pixeles puramente blancos y pixeles puramente negros, us-
ted puede aumentar el tamao del patrn de bits para representar escalas de grises. Por ejem-
EBCDIC A principios de la era de las computadoras, IBM desarroll un cdigo-llamado plo, para mostrar cuatro niveles de la escala de grises, se puede usar un patrn de dos bits. Un
Cdigo extendido de intercambio decimal codificado en binario (EBCDIC: Extended Bi- pixel negro puede representarse por 00, un gris oscuro por 01, un pixel gris claro por 10 y
nary Coded Decimal Interchange Code). Este cdigo utiliza patrones de ocho bits, de mane- un pixel blanco por 11.
ra que puede representar hasta 256 smbolos. Sin embargo, este cdigo no se utiliza ms que Para representar imgenes a color, cada pixel coloreado se descompone en tres colores pri-
en computadoras mainframe de lBM. marios: rojo, verde y azul (RGB). Luego se mide la intensidad de cada color y se le asigna un
.. Representacin de datos 2.4 Notacin hexadecimal ..

000 000 00011000


00 00 00111100
00 00 00111100
OOO OOD 00011000
Representacin
Imagen
de pixeles 1
00011000 001111 00 00111100 00011000 00000100 ... 00001111 + - I _ _ _ ..J +-.J.l,1~1i,:-!- -l,\! l l Jl ,!\lI~
-- 4 6 4 25 15
Representacin llneal

Figura 2.7 Mtodo de grficos de mapa de bits de una imagen blanca y negra Figura 2.9 Representacin de audio

1. La seal anloga se muestrea. El muestreo significa medir el valor de la seal a interva-


patrn de bits (por lo general ocho bits). En otras palabras, cada pixel tiene tres patrones de los iguales.
bits: uno para representar la intensidad del color rojo, uno para la intensidad del color verde 2. Las muestras se cuantifican. La cuantificacin significa asignar un valor (de un conjun-
y uno para la intensidad del color azul. Por ejemplo, la figura 2.8 muestra cuatro patrones de to) a una muestra. Por ejemplo, si el valor de una muestra es 29.2 y el conjunto es el con-
bits para algunos pixeles en una imagen a color. junto de enteros entre O y 63, se asigna un valor de 29 a la muestra.
3. Los valores cuantificados se cambian a patrones binarios. Por ejemplo, el nmero 25 se
cambia al patrn binario 00011001 (consulte el captulo 3 para la transformacin de
nmeros en patrones).
R G B 4. Los patrones binarios se almacenan.

----+
~ ~ ~
Rojo (con intensidad de 100%) 11111111 00000000 00000000 VIDEO El video es una representacin de imgenes (llamadas cuadros o frames) en el tiempo. Una
Verde (con intensidad de 100%) ~ 00000000 11111111 00000000 pelcula es una serie de cuadros desplegados uno tras otro para crear la ilusin de movimien-
Azul (con intensidad de 100%) ~ 00000000 00000000 11111111 to. As que si usted sabe cmo almacenar una imagen dentro de una computadora, tambin
Blanco (con intensidad de 100%) ----+ 1I111111 11I11111 1Il11l11 sabe cmo almacenar un video; cada imagen o cuadro cambia a una serie de patrones de bits
y se almacena. La combinacin de las imgenes representa el video. Observe que el video ac-
tual se comprime normalmente. En el captulo 15 estudiaremos MPEG, una tcnica de com-
Figura 2.11 Representacin de pixeles de color
presin de video comn.

Grficos El problema con el mtodo de los grficos de mapa de bits es que los patrones de bits exac-
de vectores tos para representar una imagen particular deben guardarse en una computadora. Posterior- 2.4 NOTACIN HEXADECIMAL
mente, si usted desea cambiar el tamao de la imagen debe cambiar el tamao de los pixeles,
lo cual crea una apariencia difusa y granulada. No obstante, el mtodo de grficos de vector El patrn 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 combinacin de curvas y computadora. Sin embargo, para la gente es difcil manipular los patrones de bits. Escribir
lneas. Cada curva o lnea se representa por medio de una fnnula matemtica. Por ejemplo, una serie de nmeros O y 1 es tedioso y propenso al error. La notacin hexadecimal ayuda.
una lnea puede describirse mediante las coordenadas de sus puntos extremos y un crculo La notacin hexadecimal se basa en 16 (hexadec 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 smbolos (dgitos hexadecimales): O, 1,2,3,4,5,6,7,8,9. A, B. C. D. E
nacin de estas fnnulas se almacena en una computadora. Cuando la imagen se va a desple- Y F. La importancia de la notacin hexadecimal se hace evidente cuando se convierte un pa-
gar o imprimir, el tamao de la imagen se proporciona al sistema como una entrada. El trn de bits a notacin hexadecimal.
sistema redisea la imagen con el nuevo tamao y usa la misma frmula para dibujar la ima- Cada dgito hexadecimal puede representar cuatro bits y cuatro bits pueden representarse
gen. En este caso, cada vez que una imagen se dibuja, la frmula se vuelve a evaluar. mediante un dgito hexadecimal. La tabla 2.2 muestra la relacin entre un patrn de bits y un
dgito hexadecimal.
AUDIO El audio es una representacin de sonido o msica. Aunque no hay un estndar para almace-
nar el sonido o la msica, la idea es convertir el audio a datos digitales y usar patrones de
bits. El audio por naturaleza es informacin anloga. Es continuo (anlogo), no discreto (di- Un patrn de 4 bits puede representarse mediante un dgito 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:
.. Representacin de datos 2.5 Notacin octal ..

Patrn de bits ' Dgito hexadecimal Patrn de bits Dgit hexadecimal


0000 O 1000 8 2.5 NOTACiN OCTAL
0001 1 1001 9
0010 2 1010 A Otra notacin usada para agrupar patrones de bits es la notacin octal. La notacin octal se
0011 3 1011 B basa en 8 (oet es la palabra griega para ocho). Esto significa que existen ocho smbolos (d-
0100 4 1100 C gitos octales): 0,1,2,3,4,5,6,7. La importancia de la notacin octal se hace evidente a me-
1101 D dida que usted aprende a convertir un patrn de bits en notacin octal.
0101 5
Cada dgito octal representa tres bits y tres bits pueden representarse mediante un dgito
0110 6 1110 E
octal. La tabla 2.3 muestra la relacin entre un patrn de bits y un dgito octal.
0111 7 1111 F

Tabla 2.2 Dgitos hexadecimales

Un patrn de tres bits puede representarse por medio de un dgito octal y viceversa.
CONVERSiN La conversin de un patrn de bits a notacin hexadecimal se realiza por medio de la organi-
zacin del patrn en grupos de cuatro y luego hallar el valor hexadecimal para cada grupo de
cuatro bits. Para una conversin de hexadecimal a patrn de bits se convierte cada dgito he-
xadecimal a su equivalente de cuatro bits (figura 2.10).
Patrn de bits Dgito octal Patrn de bits Dgito octal
000 O 100 4

111111110011111011100 Hexadecimal 001 1 101 5


010 2 110 6
F C E 4
011 3 111 7
Figura 2.10 Transformacin de binario a hexadecimal y de hexadecimal a Tabla 2.3 Dgitos octales
binario

Observe que la notacin hexadecimal se escribe en dos formatos. En el primer formato, CONVERSIN La conversin de un patrn de bits a notacin octal se realiza mediante la organizacin del
usted aade una x minscula (o mayscula) antes de los dgitos para mostrar que la represen- patrn en grupos de tres y la determinacin del valor octal de cada grupo de tres bits. Para la
tacin est en hexadecimal. Por ejemplo, xA34 representa un valor hexadecimal en esta con- conversin de octal a patrn de bits, se convierte cada dgito octal a su equivalente de tres bits
vencin. En otro formato, usted indica la base del nmero (16) como el subndice despus de (figura 2.11).
cada notacin. Por ejemplo, A34 16 muestra el mismo valor en la segunda convencin. En es-
te libro se usan ambas convenciones.

EJEMPLO!
Determine el hexadecimal equivalente del patrn de bits 110011100010.

SOLUCIN
Cada grupo de cuatro bits se traduce a un dgito hexadecimal. El equivalente es xCE2. l1li Figura 2.11 Transformacin de binario a octal y de octal a binario

EJEMPLO 2
Determine el hexadecimal equivalente del patrn de bits 0011100010. Observe que la notacin octal tambin se escribe en dos formatos. En el primer fonnato,
usted aade O (cero) antes de los dgitos para mostrar que la representacin est en notacin
SOLUCIN octal (a veces se utiliza una o minscula). Por ejemplo, 0634 representa un valor octal en esta
El patrn de bits se divide en grupos de cuatro bits (a partir de la derecha). En este caso, convencin. En el otro formato, usted indica la base del nmero (8) como el subndice des-
se aaden dos O ms a la izquierda para hacer el nmero total de bits divisible entre cua- pus de la notacin. Por ejemplo, 634 8 muestra el mismo valor en la segunda convencin. En
tro. As que usted tiene 000011100010, 10 cual se traduce a xOE2. llII este libro se usan ambas convenciones.

EJEMPLO 3 EJEMPLO 4
Cul es el patrn de bits para x24C?
Muestre el equivalente octal del patrn de bits 101110010.
SOLUCIN
Cada dgito hexadecimal se escribe como su patrn de bits equivalente y se obtiene
SOLUCIN
001001001100. llII Cada grupo de tres bits se traduce a un dgito octal. El equivalente es 0562, 0562 o 5628 . lIlI
.. Representacin de datos 2.8 Prctica ..

EJEMPLOS
Muestre el equivalente octal del patrn de bits 1100010.
2.8 PRCTICA
SOLUCIN PREGUNTAS DE REPASO 15. Cuntos smbolos pueden representarse mediante un
1. Nombre cinco tipos de datos que puede procesar una patrn de bits con 10 bits?
El patrn de bits se divide en grupos de tres bits (a partir de la derecha). En este caso, se
computadora. a. 128
aaden dos O ms a la izquierda para hacer el nmero total de bits divisible entre 3. As b, 256
que usted tiene 001100010, lo cual se traduce a 0142, 0142 o 1428' l1li 2. Cmo maneja una computadora todos los tipos de da-
c. 512
tos que debe procesar?
d, 1024
EJEMPLO 6
3, Qu es un patrn de bits? 16. En ASCII extendido cada smbolo es _ _ _ _ bits.
Cul es el patrn de bits para 248?
4. Cul es la diferencia entre ASCII y ASCII extendido? a,7
SOLUCIN b.8
5. Qu es EBCDIC?
c, 9
Cada dgito octal se escribe como su patrn de bits equivalente para obtener 010100. 11 6. Cmo se relaciona la longitud de un patrn de bits con d. 10
el nmero de smbolos que puede representar?
17. Si el cdigo ASCII para E es 1000101, entonces el cdi-
, 7. Cmo representa el mtodo de grficos de mapa de bits go ASCII para e es _ _ _ __
2.6 TERMINOS CLAVE una imagen como un patrn de bits? a. 1000110
b, 1000111
8. Cul es la ventaja del mtodo de grficos de vector so-
cuantificacin notacin hexadecimal c. 0000110
anlogo bre el mtodo de grficos de mapa de bits?
notacin octal d, 1100101
ASCII extendido digital
9. Qu pasos deben seguirse para convertir datos de audio
bit dgito binario Organizacin Internacional para la Es- 18, En cdigo ASCII extendido, un ____ del patrn de
en patrones de bits?
byte elemento de imagen tandarizacin (ISO) bits para el cdigo ASCII regular.
cdigo grfico de mapa de bits patrn de bits 10. Cul es la relacin entre los datos de imagen y los da- a. bit O se aade a la izquierda
Cdigo extendido de intercambio grfico de vectores pixel tos de video? b. bit O se aade a la derecha
decimal codificado en binario imagen sistema binario c. bit 1 se aade a la izquierda
(EBCDIC) Instituto Nacional Norteamericano de texto d. bit 1 se aade a la derecha
Cdigo norteamericano de estndares Estndares (ANSI) Unicode PREGUNTAS DE OPCIN MLTIPLE 19, _ _ _ _ _ es un cdigo usado en los mainframes de
para intercambio de informacin interruptor video 11. De lo siguiente, qu puede clasificarse como datos? IBM.
(ASCII) muestreo a. nmeros a. ASCII
b, video b, ASCII extendido
c. audio c. EBCDIC
d. todos los anteriores d, Unieode
2.7 RESUMEN 12. Para ahnacenar un byte, usted necesita _ _ _ _ inte- 20. es un cdigo de 16 bits que puede represen-
rruptores electrnicos. tar smbolos en idiomas distintos al ingls.
11 Los nmeros, el texto, las imgenes, el audio y el video, 111 ASCII es un cdigo popular para los smbolos. a, I a, ASCII
todos son formas de datos. Las computadoras necesitan b,2 b. ASCII extendido
111 EBCDIC es un cdigo utilizado en los mainframes de
procesar todo tipo de datos. c.4 C, EBCDIC
IBM.
11 Todos los tipos de datos se transforman en una represen- d. 8 d. Unicode
111 Unicode es un cdigo de 16 bits y la ISO ha desarrolla-
tacin uniforme llamada patrn de bits para su procesa- 21. _ _ _ _ es un cdigo usado por el lenguaje Java pa-
do un cdigo de 32 bits. Ambos cdigos permiten un 13. Un byte consiste de _ _ _ _ bits.
miento por la computadora. ra representar caracteres.
mayor nmero de smbolos. a. 2
111 Un bit es la unidad ms pequea de datos que puede al- a. ASCII
11 Las imgenes utilizan el mtodo de grficos de mapa de b.4
macenarse en una computadora. b. ASCII extendido
bits o grficos de vectores para representacin de datos. c, 8
c. EBCDIC
11 Un interruptor, con sus dos estados de encendido y apa- La imagen se divide en pixeles a los que luego pueden
d, 16
d, Unicode
gado, puede representar un bit. asignarse patrones de bits.
14. En un conjunto de 64 smbolos, cada smbolo requiere 22. Un cdigo de 32 bits se desarroll por _ _ _ _ para re-
111 Un patrn de bits es una secuencia de bits que pueden I!I Los datos de audio se transforman a patrones de bits a una longitud de patrn de bits de bits. presentar smbolos en todos los idiomas.
representar un smbolo. travs del muestreo, la cuantificacin y la codificacin. a.4 a. ANSI
11 Un byte son ocho bits. b,5 b, ISO
111 Los datos de video son una serie de imgenes en se-
c. 6 c. EBCDIC
11 La codificacin es el proceso de transformar datos en un cuencia. d,7 d. Harnming
patrn de bits.
.. Representacin de datos

23. Una imagen puede representarse en una computadora 31. Vuelva a hacer el ejercicio 30 para un placa que tiene
usando el mtQdo de ~~~~ dos dgitos seguidos por tres letras maysculas (A a Z).
a. grficos de mapa de bits 32. Una mquina tiene ocho ciclos diferentes. Cuntos bits
b. grficos de vectores se necesitan para representar cada ciclo?
c. grficos de matrices 33. La calificacin de un estudiante en un curso puede ser A,

Representac.in
d. aob B. C, D, F, R (retirado) o 1 (incompleto). Cuntos bits
24. El mtodo de grficos de mapa de bits y el mtodo de se requieren para representar la calificacin?
grficos de vectores se usan para representar ~~~_ 34. Una compaa ha decidido asignar un patrn de bits ni-
en una computadora. co a cada empleado. Si la compaa tiene 900 emplea-
a.
iJ.
c.
d.
audio
video
imgenes
nmeros
dos, cul es el nmero mnimo de bits necesarios para
crear este sistema de represent?cin? Cuntos patrones
no son asignados? Si la compaa contrata otros 300 em-
pleados, debe aumentar el nmero de bits? Explique su
de nmeros
respuesta.
25. En el mtodo de grficos para la representa-
cin de una imagen en una computadora, a cada pixel se 35. Si utiliza un patrn de cuatro bits para representar los d-
asigna uno o ms patrones de bits. gitos O a 9, cuntos 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, cuntos bits se necesitan para repre-
d. binario sentar la imagen?
37. Una seal de audio se muestrea 8000 veces por segun-
26. En el mtodo de grficos ~~~~_para la representa-
do. Cada muestra se representa mediante 256 niveles En el captulo 2 mostramos cmo el texto, el audio, las imgenes y el video pueden repre-
cin de una imagen en una computadora, la imagen se
distintos. Cuntos bits por segundo se necesitan para sentarse en una computadora mediante patrones de bits. Pospusimos el anlisis de la represen-
descompone en una combinacin de curvas y lneas.
representar esta seal? tacin de los nmeros porque sta es muy diferente de la representacin de los datos no
a. de mapa de bits
38. Cambie los siguientes patrones de bits a notacin hexa- numricos. Algunas de las razones de esta diferencia son las siguientes:
b. de vectores
c. cuantificado decimal: 11 Un cdigo de caracteres como el ASCII no es eficiente para representar nmeros. ASCII
3. 100011110000
d. binario puede representar 128 smbolos, pero el sistema decimal necesita slo 10. (Observe que
b. 1000001101 si se consideran otros smbolos como +, - y el punto decimal, se necesitan an ms
27. En el mtodo de grficos _ _ _ _ _ para la represen- c. 10001 smbolos, pero todava menos que 128.) Por ejemplo, si usted quiere almacenar el nme-
tacin de una imagen en una computadora, al cambiar el d. 11111111 ro 65 535 usando ASCII, necesita cinco bytes (un byte para cada dgito). Pero si el n-
tamao 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 representacin
lada. a. x120 posteriormente en este captulo), slo necesita dos bytes.
a. de mapa de bits b. x2A34
b. de vectores 11 Las operaciones con los nmer-Os (por ejemplo, la suma y la resta) son muy complicadas
c. xOO
c. cuantificado si los dgitos de un nmero se representan en un cdigo de caracteres.
d. xFF
d. binario 40. Cambie los siguientes patrones de bits a notacin octal: 11 La representacin de la precisin de un nmero (por ejemplo, el nmero de lugares
despus del punto decimal) requiere muchos bytes. Por ejemplo, para almacenar
28. Cuando usted quiere descargar msica a una computa- 3. 10001111 0000
b. 1000001101 23454.00001 se requieren 11 bytes, pero si el mismo nmero se representa en un pun-
dora, la seal de audio debe ser _ _ _~
to flotante (esta representacin se ver ms adelante en este captulo), necesita slo
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. 012
b.027
c. 045
EJERCICIOS d.020
29. Dados cinco bits, cuntos patrones de cinco bits distin- 42. Cuntos dgitos hexadecimales se necesitan para con-
tos puede tener? vertir un patrn de 19 bits?
30. En cierto pas las placas de la licencia vehicular tienen 43. Cuntos dgitos octales se requieren para convertir un
dos dgitos decimales (O a 9). Cuntas placas distintas patrn de 19 bits?
puede tener? Si el dgito O no est pernritido en las pla- 44. Cuntos dgitos hexadecimales se necesitan para con-
cas, cuntas placas distintas puede tener? vertir un patrn de 6 bytes?
Ea Representacin de nmeros
3.2 Conversin ..

3.1 DECIMAL V BINARIO 3.2 CONVERSiN


Dos sistemas de numeracin predominan actualmente en el mundo de la computacin: deci- Antes de estudiar cmo los nmeros en forma de patrones de bits se almacenan dentro de una
mal y binario. Analizaremos estos dos tipos distintos de sistemas antes de presentar cmo se computadora, debe comprender cmo convertir manualmente un nmero del sistema decimal
representan los nmeros mediante una computadora. al sistema binario y viceversa.

Hoy da, el mundo utiliza el sistema decimal para los nmeros desarrollado por matemticos Comenzaremos por convertir un nmero del sistema binario al sistema decimal. Tome el
SISTEMA DECIMAl.. CONVERSiN nmero binario y multiplique cada dgito binario por el valor de su posicin. Como cada
rabes en el siglo VIII. Los primeros en usar un sistema numrico decimal fueron los antiguos DE BINARIO
egipcios. Los babilonios mejoraron el sistema egipcio al dar un significado a las posiciones bit binario puede ser slo O o 1, el resultado ser ya sea O o el valor posicional. Despus
A DECIMAl.. de multiplicar todos los dgitos sume los resultados. La conversin de binario a decimal
del sistema numrico. Todos comprendemos fcilmente el sistema numrico decimal.
De hecho lo hemos usado tanto que es bsicamente intuitivo. Pero, realmente entende- se muestra en la figura 3.3.
mos por qu la segunda posicin 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 lOen el sistema
decimal. De esta manera la primera posicin es 10 elevado a la potencia O, la segunda posi- 0101101 nmero binario
cin es 10 elevado a la potencia 1 y la tercera posicin es 10 elevado a la potencia 2. La figu-
ra 3.1 muestra la relacin entre las potencias y el nmero 243. 64 32 16 8 4 2 1 valores posicionales

'" O + 32 + O + 8 + 4 + O + 1 / resultado

10'
10000
lo'
1000
10'
100
t
45 nmero decimal
Posiciones decimales
Figura 3.3 Conversin de binario a decimal

EJEMPLO 1
Convierta el nmero binario 10011 a decimal.

Doscientos cuarenta y tres


SOLUCIN
Figura 3.1 Sistema decimal Se escriben los bits y sus valores posicionales. Se multiplica el bit por su valor correspon-
diente y luego se anota el resultado. Al final, los resultados se suman para obtener el n-
SISTEMA BINARIO Mientras que el sistema decimal se basa en 10, el sistema binario se basa en 2. Slo hay dos mero decimal.
dgitos en el sistema binario, O y 1. La figura 3.2 muestra los valores posicionales para un sis-
Binario 1 O O 1 1
tema binario y el dgito 243 en binario. En la tabla de posiciones, cada posicin es el doble
de la posicin anterior. De nuevo, esto se debe a que la base del sistema es 2. Las potencias Valores 16 8 4 2 1
binarias deben memorizarse cuando menos hasta 2 10 . posicionales
16 + O + O + 2 +
Decimal 19 liI

22 2' 2
4 2 I
Para convertir del sistema decimal al binario utilice la divisin repetitiva. El nmero original,
CONVERSiN
~ll0~
45 en el ejemplo, se divide por 2. El residuo (1) se vuelve el primer dgito binario y el segun-
DE DECIMAl.. do dgito se obtiene dividiendo el cociente (22) por 2 para determinar la siguiente posicin.
A BINARIO Este proceso contina hasta que el cociente es O. La conversin de decimal a binario se
),128 + h64 + Id2 + h16 + 0*8 + 0*4 + h2 + hl
muestra en la figura 3.4.

EJEMPLO 2

Figura 3.2 Sistema binario Convierta el nmero decimal 35 a binario.


.. Representacin de nmeros 3.3 Representacin de enteros ..

Se detiene cuando Representacin


el cociente es O de enteros

1 2 5 11 I
I
I Sin signo J I Con signo I
o 1 1 I I I
Binaria I Signo
y magnitud
1I Complemento
a uno
1I Complemento
a dos
I
Figura 3.4 Conversin decimal a binaria
Figura 3.6 Taxonoma de enteros

SOLUCIN En la actualidad la representacin de uso ms comn es el complemento a dos. Sin em-


bargo, primero estudiamos las otras representaciones debido a que son ms simples y sirven
Se escribe el nmero en la esquina derecha. Se divide el nmero repetidamente por 2 y
como una buena base para el complemento a dos.
se anota el cociente y el residuo. Los cocientes se mueven a la izquierda y el residuo se
anota bajo cada operacin. Este proceso se suspende cuando el cociente es O.
FORMATO Un entero sin signo es un entero que no tiene intervalo, su rango est entre O y el infinito
o <c- 1 8 <c- 17 <--- 35 (Decimal) DE ENTEROS positivo. No obstante, como no hay manera de que una computadora represente a todos los
J- J- J- J- SIN SIGNO enteros en este intervalo, la mayora de las computadoras define una constante llamada el
entero mximo sin signo. Un entero sin signo vara entre O y esta constante. El entero mxi-
Binario 1 o o o 1 1 l1li
mo sin signo depende del nmero de bits que la computadora asigna para almacenar un en-
tero sin signo. A continuacin se define el intervalo de los enteros sin signo en una
computadora, donde N es el nmero de bits asignado para representar un entero sin signo:

,
3.3 REPRESENTACION DE ENTEROS Intervalo: Q... (2 N -1)

Ahora que sabe cmo convertir del sistema decimal al sistema binario, veamos cmo alma-
cenar enteros dentro de una computadora. Los enteros son nmeros ntegros (es decir, n-
meros sin una fraccin). 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, -134 es un entero, pero -134.567 no lo es.

Un entero puede ser positivo o negativo. Un entero negativo vara del infinito negativo
a O; un entero positivo vara de O al infmito positivo (figura 3.5). Sin embargo, ninguna Nmero d~ bits Intervalo
computadora puede almacenar todos los enteros en este intervalo. Para hacerlo, requerira un 8 O. . . 255
nmero infinito de bits, lo cual significa una computadora con una capacidad de almacena-
16 O. .. 65535
miento infinita.
Tabla 3.1 Intervalo de enteros sin signo

Representacin El almacenamiento de los enteros sin signo es un proceso sencillo segn se esboza en los pa-
-= += sos siguientes:

1. El nmero cambia a binario.


Figura 3.5 Intervalo de enteros
2. Si el nmero de bits es menor que N, se aaden O a la izquierda del nmero binario de
manera que haya un total de N bits.
Para usar la memoria de una computadora de manera ms eficiente, se han desarrollado
EJEMPLO 3
dos amplias categoras de representacin de enteros: enteros sin signo y enteros con signo.
Los enteros con signo tambin pueden representarse de tres maneras distintas (figura 3.6). Almacene 7 en una localidad de memoria de ocho bits.
.. Representacin de nmeros 3.3 Representacin de enteros ..

SOLUCIN positivos que comienzan a partir de O (el primer byte de memoria) y continan hasta un
Primero se cambia el nmero a binario: 111. Se aaden cinco O para hacer un total de N nmero que representa la capacidad de memoria total en bytes. De nuevo, usted no ne-
(8) bits: 00000111. El nmero se almacena en la memoria. lIi cesita nmeros negativos. Los enteros sin signo pueden hacer el trabajo fcilmente.

EJEMPLO 4 FORMATO El almacenamiento de un entero en el formato de signo y magnitud requiere 1 bit para repre-
Almacene 258 en una localidad de la memoria de 16 bits. DE SIGNO sentar el signo (O para positivo, 1 para negativo). Esto significa que en una asignacin de ocho
bits, usted slo puede usar siete bits para representar el valor absoluto del nmero (nmero
Y MAGNITUD
SOLUCIN sin el signo). Por consiguiente, el mximo valor positivo es la mitad del valor sin signo. Lo
Primero se cambia el nmero a binario: 100000010. Se aaden siete O 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 nmero se almacena en la localidad de la memoria. el nmero de bits asignados para representar a un entero de signo y magnitud:

La tabla 3.2 muestra cmo se ahnacenan 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:
los nmeros decimales 258 y 24760 no pueden almacenarse en una computadora que usa
localidades de ocho bits para un entero sin signo. El nmero decimal 1 245 678 no puede al-
macenarse en ninguna de estas dos computadoras; a esta condicin se le llama desbordamien- La tabla 3.3 muestra los intervalos comunes para las computadoras actuales. Observe que
to (se estudia en el captulo 4). en este sistema hay dos O: +0 y ~O.

Decimal' Localidad de 8 bits Localida<i ,de-\16 -bits En la representacin de signo y magnitud hay dos O: positivo y negativo. En una
7 00000111 0000000000000111 asignacin de ocho bits:
234 11101010 0000000011101010
258 Desbordamiento 0000000100000010 +0 00000000
24760 Desbordamiento 0110000010111000 -O 10000000
1245678 Desbordamiento Desbordamiento
Tabla 3.2 Almacenamiento de enteros sin signo en dos computadoras
diferentes 'me~o .d" b[ts .. Rango .

8 ... -127 -O +0 . . +127


Interpretacin Cmo se interpreta una representacin binaria sin signo en decimal? El proceso es simple.
16 ...
-32767 -O +0 . . +32767
Cambie los N bits del sistema binario al sistema decimal como se mostr al principio del ca-
ptulo. 32 -2147483647 . .. -O +0 . .. +2147483647
Tabla 3.3 Intervalo de enteros de signo y magnitud
EJEMPLOS
Interprete 00101011 en decimal si el nmero se almacen como un entero sin signo.
Representacin Ahnacenar enteros de signo y magnitud es un proceso sencillo:
SOLUCIN
1. El nmero se cambia a binario; el signo se ignora.
Usando el procedimiento mostrado en la figura 3.3, el nmero decimal es 43.
2. Si el nmero de bits es menor que N - 1, los Ose aaden a la izquierda del nmero de
manera que haya un total de N - 1 bits.
Desbordamiento Si usted intenta almacenar un entero sin signo como 256 en una localidad de memoria de
ocho bits, obtiene una condicin llamada desbordamiento (overflow). 3. Si el nmero es positivo, un O se aade a la izquierda (para volverlo de N bits). Si el
nmero es negativo, se aade un 1 a la izquierda (para hacerlo de N bits).
Aplicaciones La representacin 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 uWizarse para almacenar el nmero. La representacin de enteros sin En la representacin de signo y magnitud, el bit en el extremo izquierdo defme el
signo puede usarse siempre que no se necesiten los enteros negativos. En seguida se listan al- signo del nmero. Si ste es 0, el nmero es positivo. Si es 1, el nmero es negativo.
gunos casos:

l1li Conteo. Cuando se cuenta, no se necesitan los nmeros negativos. Usted comienza con-
tando a partir de 1 (a veces de O) y contina. EJEMPLO 6
11 DireccionaITento. Algunos lenguajes de computacin almacenan la direccin de una lo- Almacene +7 en una localidad de memoria de ocho bits usando una representacin de sig-
calidad de memoria dentro de otra localidad de memoria. Las direcciones son nmeros no y magnitud.
.. Representacin de nmeros 3.3 Representacin de enteros ..

SOLUCIN EL FORMATO DE Tal vez haya notado que la representacin de un nmero en el sistema binario es una cuestin
Primero se cambia el nmero a binario: 111. Se aaden cuatro O para hacer un total de COMPLEMENTO de convencin. En la representacin de signo y magnitud adoptamos la convencin de que el
N - 1 (7) bits: 0000111. Luego se aade un cero ms, 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 nmero es positivo. El resultado es 0000111. 11 Los diseadores de la representacin del complemento a uno adoptaron una convencin
diferente: para representar un nmero positivo, usan la convencin adoptada para un entero
EJEMPLO 7 sin signo. Y para representar un nmero negativo, complementan el nmero positivo. En otras
palabras, +7 se representa justo como un nmero sin signo, mientras que -7 se representa
Almacene -258 en una localidad de memoria de 16 bits usando una representacin de sig-
como el complemento de +7. En el complemento a uno, el complemento de un nmero se
no y magrtitud.
obtiene al cambiar todos los O a 1 y todos los 1 a O.
SOLUCIN A continuacin se define el intervalo de los enteros complemento a uno en una computa-
dora, donde N es el nmero de bits asignados para representar un entero complemento a uno:
Primero se cambia el nmero a binario: 100000010. Se aaden seis O para hacer un total
de N - 1 (15) bits: 000000100000010. Se aade un 1 ms, que aqu se muestra en negri-
tas, puesto que el nmero es negativo. El resultado es 1000000100000010. 111
Intervalo: _(2 N - 1 -1) +(ZN-l -1)

La tabla 3.4 muestra cmo se almacenan los nmeros de signo y magnitud en dos compu-
tadoras diferentes; una que usa localidad de ocho bits y una que usa localidad de 16 bits.

Existen dos O en la representacin del complemento de uno: positivo y negativo. En


Decimal ... . .... .....' '.:. )'"QcaJidad de $ bits LQcalidad de 16 bits
una asignacin de 8 bits:
+7 00000111 0000000000000111
-124 11111100 1000000001111100 +0 00000000
+258 Desbordamiento 0000000100000010 -O 11111111
-24760 Desbordamiento 1110000010111000
Tabla 3.4 Almacenamiento de enteros de signo y magnitud en dos compu-
tadoras diferentes La tabla 3.5 muestra los intervalos comunes actuales para las computadoras. Observe que
en este sistema hayal menos dos O: un +0 y un -O.

Interpretacin Cmo se interpreta una representacin binaria de signo y magnitud en decimal? El proceso
es simple: Nmero de bits Intervalo
1. Ignore el primer bit (el que est en el extremo izquierdo). 8 -127 ... -O +0 .. +127
2. Cambie los N - 1 bits de binario a decimal como se explic al principio del captulo. 16 -32767 ... -O +0 .. +32767
3. Agregue un signo +o- al nmero con base en el bit que est en el extremo izquierdo. 32 2147483647 ... O +0 ... +2147483647
Tabla 3,5 Rango de los enteros complemento de uno
EJEMPLOS
Interprete 10111011 en decimal si el nmero se almacen como un entero de signo y mag-
nitud. Representacin Para almacenar los enteros complemento de uno se siguen estos pasos:

1. Cambie el nmero a binario; el signo es ignorado.


SOLUCIN
2. Aada uno o varios O a la izquierda del nmero para hacer un total de N 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 nmero es -59. l1li 3. Si el signo es positivo, no se necesita ninguna otra accin. Si el signo es negativo, com-
plemente cada bit (cambie O por 1 y 1 por O).

Aplicaciones Actualmente, la representacin de signo y magnitud no se usa para que las computadoras
actuales almacenen nmeros con signo. Hay cuando menos dos razones para ello. Primero, las En la representacin del complemento de uno, el bit que est en el extremo izquier-
operaciones como la suma y la resta no son sencillas para esta representacin. Segundo, hay dos do define el signo del nmero. Si ste es 0, el nmero es positivo. Si es 1, el nme-
Oen esta representacin que vuelven las cosas difciles para los programadores. Sin embargo, ro es negativo.
la representacin de signo y magnitud tiene una ventaja: la transformacin de decimal a bina-
rio y viceversa es muy fcil. Esto hace que esta representacin sea conveniente para aplicacio-
nes que no necesitan operaciones con nmeros. Un ejemplo es el cambio de seales analgicas EJEMPLO 9
a seales digitales. Usted muestrea la seal analgica, asigna un nmero positivo o negativo a Ahnacene + 7 en una localidad de memoria de ocho bits usando la representacin de com-
la muestra y lo cambia a binario para enviarlo por canales de comunicacin de datos. plemento a uno.
.. Representacin de nmeros 3.3 Representacin de enteros ..

SOLUCIN Desbordamiento Si se intenta almacenar un entero complemento a uno como +256 en una localidad de memo-
ria de ocho bits, se obtiene una condicin llamada desbordamiento.
Primero se cambia el nmero a binario: 111. Se aaden cinco O de modo que haya un total
de N(8) bits: 00000111. El signo es positivo as que no se requiere realizar otra accin. 11
Actualmente la representacin del complemento a uno no se usa para almacenar nmeros en
Aplicaciones computadoras. Hayal menos dos razones para ello. Primero, las operaciones como la suma y
EJEMPLO 10
la resta no son sencillas para esta representacin. Segundo, hay dos Oen esta representacin,
Almacene -256 en una localidad de memoria de 16 bits usando la representacin del
lo cual vuelve las cosas difciles para los programadores. Sin embrago, esta representacin
complemento de uno.
tiene cierta relevancia. Primero, es la base para la siguiente representacin (el complemento
SOLUCIN a dos). Segundo, tiene propiedades que la vuelven interesante para aplicaciones de comuni-
cacin de datos tales como la deteccin y correccin de errores.
Primero se cambia el nmero a binario: 100000010. Se aaden siete O con el fin de que
haya un total de N(l6) bits: 0000000100000010. El signo es negativo, de manera que ca-
Como se mencion previamente, la representacin del complemento a uno tiene dos O ( +0 Y
da bit complementa. El resultado es 1111111011111101. 111 FORMATO DEL
-O). Esto puede crear un poco de confusin en los clculos. Adems, en el siguiente captu-
COMPLEMENTO lo se ver que si se suma un nmero y su complemento (+4 Y -4) en esta representacin, se
La tabla 3.6 muestra cmo se almacenan los nmeros complemento a uno en dos computa-
doras distintas: una que usa localidades de ocho bits y otra que usa localidades de 16 bits.
A DOS obtiene -O negativo en lugar de +0 positivo. La representacin del complemento a dos re-
suelve todos estos problemas.
Decimal Localidades de 8 bits Looalidades de 16 bits
+7 00000111 0000000000000111
El complemento a dos es la representacin de enteros ms comn, ms impor-
-7 11111100 1111111111111000
tante y de ms amplio uso en la actualidad.
+124 01111100 0000000001111100
-124 10000011 1111111110000011
+24760 Desbordamiento 0110000010111000 A continuacin se define el intervalo de los enteros complemento a dos en una computa-
-24760 Desbordamiento 1001111101000111 dora, donde N es un nmero de bits asignados a un entero complemento a dos:
Tabla 3,6 Almacenamiento de enteros complemento a uno en dos compu-
tadoras distintas Intervalo: +(2N - 1
-1)

Interpretacin Cmo se interpreta una representacin 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 O (nmero positivo), en este sistema hay slo un O y que el principio del intervalo es 1 menos que aquel para el
a. se cambia el nmero entero de binario a decimal. complemento a uno.
b. se pone un signo ms ( +) enfrente del nmero.
2. Si el bit que est en el extremo izquierdo es 1 (bit negativo), Nmero de bits Intervalo
a. se complementa el nmero entero (cambiando todos los O a 1, y viceversa). 8 -128 -o +0 +127
b. se cambia el nmero entero de binario a decima1.
16 -32768 -o +0 +32767
c. se pone un signo negativo (-) enfrente del nmero.
32 -2147483648 -o +0 +2147483647
EJEMPLO 11 Tabla 3,7 Intervalo de nmeros complemento a dos
Interprete 11110110 en decimal si el nmero se almacen como un entero complemento
a uno. Para almacenar el complemento a dos se deben seguir estos pasos:
Representacin
SOLUCIN 1. El nmero se cambia a binario; el signo se ignora.
El bit en el extremo izquierdo es 1, de modo que el nmero es negativo. Primero se com- 2. Si el nmero de bits es menor que N se aaden O a la izquierda del nmero de manera
plementa. El resultado es 00001001. El complemento en decimal es 9, de manera que el que haya un total de N bits.
nmero original era -9. Observe que el complemento de un complemento es el nmero
3. Si el signo es positivo, no se necesita una accin posterior. Si el signo es negativo, to-
original. lIiI
dos los Oen el extremo derecho y el primer 1 permanecen sin cambios. El resto de los
bits se complementa.
La operacin complemento a uno significa invertir todos los bits. Si se aplica la
operacin complemento a uno a un nmero positivo, se obtiene el nmero negati-
vo correspondiente. Si Se aplica la operacin complemento a uno a un nmero ne- En la representacin del complemento a dos, el bit en el extremo izquierdo define
gativo, se obtiene el nmero positivo correspondiente. Si un nmero se el signo del nmero. Si ste es 0, el nmero es positivo. Si es 1, el nmero es ne~
complementa dos veces, se obtiene el nmero original. gativo.
.. Representacin de nmeros 3.3 Representacin de enteros ..

EJEMPLO 12 EJEMPLO 14
Almacene +7 en una localidad de memoria de ocho bits usando la representacin del Interprete 11110110 en decimal si el nmero se almacen como un entero complemento
complemento a dos. a dos.

SOLUCIN SOLUCIN
Primero se cambia el nmero a binario: 111. Se aaden cinco O con el fin de que haya un El bit en el extremo izquierdo es 1. El nmero es negativo. E11 O a la derecha se deja tal
total de N(8) bits: 00000111. El signo es positivo, as que no se requiere realizar ninguna corno est y el resto se complementa. El resultado es 00001010. El nmero complemento
otra accin. 111 a dos es 10, as que el nmero original era -10.

EJEMPLO 13
Almacene -40 en una localidad de memoria de 16 bits usando la representacin del com-
plemento a dos. La operacin complemento a dos puede lograrse al invertir todos los bits, excepto
los bits que estn en el extremo derecho hasta el primer 1 (inclusive). Si se aplica la
SOLUCIN operacin complemento a dos a un nmero positivo, se obtiene el nmero negativo
Primero se cambia el nmero a binario: 101000. Se aaden diez O de modo que haya un correspondiente. Si se aplica la operacin complemento a dos a un nmero negati-
total de N(16) bits: 0000000000101000. El signo es negativo. as que los O en el extremo vo, se obtiene el nmero positivo correspondiente. Si un nmero se complementa
derecho permanecen sin cambio hasta el primer 1 (inclusive) y el resto se complementa. dos veces, se obtiene el nmero original.
El resultado es 1111111111011000. l1li

La tabla 3.8 muestra cmo se almacenan los nmeros complemento a dos en dos computado-
Aplicaciones La representacin del complemento a dos es la representacin estndar 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 captulo siguiente, usted ver por qu ocurre esto cuando
se considera la simplicidad de las operaciones que usan el complemento a dos.
u . Decimal Localidad de 8 bits Localidad.de 16 bits
+7 00000111 0000000000000111 RESUMEN DE LA Para darse una idea general de los mtodos de representacin de nmeros, examine la tabla
3.9. En esta tabla, suponga que N es 4. La localidad de memoria puede almacenar slo cua-
-7 11111001 1111111111111001 REPRESENTACiN
tro bits. Si usted mira el contenido de la localidad de memoria, puede interpretar el nmero
+124 01111100 0000000001111100 DE ENTEROS en una de las cuatro representaciones. Aun cuando la interpretacin es la misma para los en-
-124 10000100 1111111110000100 teros positivos, es diferente para los enteros negativos.
+24760 Desbordamiento 0110000010111000
-24760 Desbordamiento 1001111101001000
Contenido Signo Complemento Comp,lemento
Tabla 3.8 Ejemplo de representaciones de complementos a dos en dos de''!a memoria y magJitud auno ~(dos
Sin signo
computadoras
0000 O +0 +0 +0
0001 1 +1 +1 +1
Slo hay un O en el complemento a dos: En una asignacin de ocho bits: 0010 2 +2 +2 +2
0011 3 +3 +3 +3
o 00000000 0100 4 +4 +4 +4
0101 5 +5 +5 +5
0110 6 +6 +6 +6
0111 7 +7 +7 +7
Interpretacin Cmo se interpreta una representacin binaria del complemento a dos en decimal? El pro-
ceso involucra los pasos siguientes:
1000 8 -o -7 -8
1001 9 -1 -6 -7
1. Si el bit en el extremo izquierdo es O (nmero positivo), -2 -5 -6
1010 10
a. se cambia todo el nmero de binario a decimaL 1011 11 -3 -4 -5
b. se pone un signo ms (+) enfrente del nmero. 1100 12 -4 -3 -4
2. Si el bit en el extremo izquierdo es 1 (nmero negativo), 1101 13 -5 -2 -3
a. se dejan los bits en el extremo derecho hasta el primer 1 (inclusive) como estn. 1110 14 -6 -1 -2
b. se cambia todo el nmero de binario a decimal. 1111 15 -7 -O -1
c. se pone un signo negativo ( -) enfrente del nmero. Tabla 3.9 Resumen de la representacin de enteros
.. Representacin de nmeros 3.5 Representacin de punto flotante ..

Conversin de la Este procedimiento es el mismo que se present en el captulo 2.


3.4 SISTEMA EXCESS parte entera
Otra representacin que permite ahnacenar tanto nmeros positivos como negativos en una Para convertir una fraccin a binario, use la multiplicacin repetitiva. Por ejemplo, para con-
computadora es el sistema Excess. En este sistema, es fcil transformar un nmero de deci-
Conversin de la
vertir 0.125 a binario, multiplique la fraccin por 2; el resultado es 0.250. La parte entera del
mal a binario, y viceversa. Sin embargo, las operaciones con los nmeros son muy complica- parte fraccionaria
resultado (O) se extrae y se vuelve el dgito binario en el extremo izquierdo. Ahora multipli-
das. Su nica aplicacin en uso actualmente es en el almacenamiento del- valor exponencial que por 2la parte fraccionaria (0.250) del resultado para obtener 0.50. De nuevo, se extrae la
de una fraccin. Esto se estudia en la seccin siguiente. parte entera del resultado y se vuelve el siguiente dgito binario. Este proceso contina hasta
En una conversin Excess, un nmero positivo conocido como el nmero mgico se utili- que la parte fraccionaria se vuelve O o cuando se llega al lmite del nmero de bits que se pue-
za en el proceso de conversin. El nmero mgico normalmente es (2N - 1) o (2 N - 1 -1) don- den usar (figura 3.7).
de N es la asignacin de bits. Por ejemplo, si N es 8, el nmero mgico es ya sea 128 o 127.
En el primer caso, llamamos a la representacin Excess_128 y en el segundo, Excess_127.

Representacin Para representar un nmero en Excess, utilice el procedimiento siguiente: Parar cuando

1. Sume el nmero mgico al entero.


2. Cambie el resultado a binario y aada uno o varios O de modo que haya un total de N
bits.

EJEMPLO 15
Represente -125 en Excess_127 usando localidades de ocho bits. o . L_O_ _ _ _ _O _ _ _ _ ----.J
Binario
SOLUCIN
Primero se suma 127 a -25 y se obtiene 102. Este nmero en binario es 1100110. Aada Figura 3.7 Cambio de fracciones a binario
un bit para obtener una longitud de ocho bits. La representacin es 01100110. lIlII

Interpretacin Para interpretar un nmero en Excess, utilice el siguiente procedimiento: EJEMPLO 17


1. Cambie el nmero a decimal. Transforme la fraccin 0.875 a binario.
2. Reste el nmero mgico del entero.
SOLUCIN
EJEMPLO 16 La fraccin se escribe en la esquina izquierda. El nmero se multiplica continuamente por
Interprete 11111110 si la representacin est en Excess_127. 2 y se extrae la parte entera como dgito binario. El proceso se detiene cuando el nmero
es 0.0.
SOLUCIN
Fraccin 0.875 --> 1.7 50 --> 1.50 --> LO 0.0
Primero cambie el nmero a decimal: 254. Luego reste 127 del nmero. El resultado es t t
t
lnffi~~. ~

Binario: O. 1 1 1 111

, EJEMPLO 18
3.5 REPRESENTACION DE PUNTO FLOTANTE Transforme la fraccin 004 a un binario de 6 bits.

Para representar un nmero de punto flotante (un nmero que contiene un entero y una SOLUCIN
fraccin), el nmero se divide en dos partes: el entero y la fraccin. Por ejemplo, el nmero La fraccin se escribe en la esquina izquierda. El nmero se multiplica continuamente por
de punto flotante 14.234 tiene un entero de 14 y una fraccin de 0.234. 2 y se extrae la parte entera como dgito binario. En este caso, usted no puede obtener la
representacin binaria exacta debido a que reaparece la fraccin original. Sin embargo,
CONVERSiN Para convertir un nmero 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. Fraccin 0.4 --> 0.8 --> 1.6 --> 1.2 --> 0.4 --> 0.8 --> 1.6
2. Convierta la fraccin a binario. t t t t t t
3. Ponga un punto decimal entre las dos partes. Binario: O O 1 1 O O 1 ~

l
3.5 Representacin de punto flotante ..
.. Representacin de nmeros

NORMALIZACiN Para representar el nmero 71.3125 (+1000111.0101), en la memoria se almacena el signo,


todos los bits y la posicin del punto decimal. Aunque esto es posible, dificulta las operacio-
nes con nmeros. Se necesita una representacin estndar para nmeros de punto flotante. La
23
solucin es la normalizacin, es decir, el desplazamiento del punto decimal para que haya
slo un 1 a la izquierda del punto decimal. Signo Exponente Mantisa

1 . xxxxxxxxxxxxxxxxxx a. Precisin simple

Para indicar el valor original del nmero, ste se multiplica por 2e , donde e es el nmero 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 aade luego dependien-
do del signo del nmero original. La tabla 3.10 muestra ejemplos de la normalizacin.
GJ 11
52

Signo Exponente Mantisa

Nmero origin~ Desplazamiento Normalizado .. b. Precisin doble


+101000LlIOOI <E-- 6 +2' X 1.01000111001 Estndares del IEEE para la representacin de punto flotante
2
Figura 3.8
-11 1.000011 <E-- 2 -2 X 1.11000011
+0.00000111001 6 ~ +2- 6 X 1.11001
_2- 3 El procedimiento para almacenar un nmero de punto flotante en la memoria mediante el uso
-0.001110011 3 --'> X 1.110011 Representacin del formato de precisin simple es el siguiente:
Tabla 3.10 Ejemplos de la normalizacin de precisin simple
1. Almacene el signo como O (positivo) o 1. (negativo).
2. Almacene el exponente (potencia de 2) como Excess_127.
SIGNO, EXPONENTE Despus de que se normaliza un nmero, se almacenan slo tres piezas de informacin del 3. Almacene la mantisa como lm entero sin signo.
Y MANTISA mismo: signo, exponente y mantisa (los bits a la derecha del punto decimal). Por ejemplo,
+ 100011 1.0101 se convierte en: EJEMPLO 19
Muestre la representacin del nmero normalizado
+ 26 X 1.0001110101
+ 26 X 1.01000111001
Signo: + Exponente: 6 Mantisa: 0001110101
SOLUCIN
Observe que ella la izquierda del punto decimal no se almacena; esto es comprensible. El signo es positivo y se representa como O. El exponente es 6. En la representaci~ Ex-
cess 127 se le suma 127 y se obtiene 133. En binario es 10000101. La manl1sa es
0100011;001. Cuando se aumenta la longitud a 23, se obtiene 01000111O~1O00000000000.
Signo El signo de un nmero puede almacenarse usando 1 bit (O o 1). Advierta que no se puede ignorar el O a la izquierda porque es una fraccIOn, s~ c?nslderar
que el O es lo mismo que multiplicar el nmero por 2. Obse~~e que los. ~ ~e anadleron a la
derecha (no a la izquierda) debido a que se trata de una fraCCIOno ~a a~lclon .de .0 a la ~~r~
Exponente El exponente (potencia de 2) define el movimiento del punto decimal. Observe que la poten- cha de una fraccin no modifica a la fraccin, pero aadir O a la IzqUIerda Slgnific~ dIVldrr
cia puede ser negativa o positiva. El mtodo que se utiliza para almacenar el exponente es la el nmero entre una potencia de 2. El nmero en la memoria es un nmero de 32 bIts como
representacin de Excess. El nmero de bits asignado N define el intervalo de nmeros que
se muestra en seguida:
una computadora puede almacenar.
Signo exponente mantisa
01000111001000000000000 lIi
O 10000101
Mantisa La mantisa es el nmero binario a la derecha del punto decimal. Define la precisin del n-
mero. La mantisa se almacena como un entero sin signo. La tabla 3.1.1 exhibe ms ejemplos de representacin de punto flotante.

Signo Exponente Mantisa


Nmero
ESTNDARES IEEE El Instituto de Ingenieros Electrnicos y Elctricos (IEEE: Institute of Electrical and Elec-
_22 X LlI000011 1 10000001 11000011000000000000000
tronics Engineers) ha defmido tres estndares para almacenar nmeros de punto flotante; dos 11001000000000000000000
+r 6 X Ll1001 O 01111001
de ellos se utilizan para almacenar nmeros en la memoria (precisin simple y precisin do-
_Z-3 X 1.110011 01111100 11001100000000000000000
ble). Estos formatos se muestran en la figura 3.8. Observe que el nmero dentro de los cua-
dros es el nmero de bits para cada campo. Analizamos el formato de precisin simple y Tabla 3.11 Ejemplos de representacin de punto flotante
dejamos el formato de precisin doble como un ejercicio.
.. Representacin de nmeros 3.9 Prctica ..

Interpretacin El procedimiento siguiente interpreta un nmero de punto flotante de 32 bits almacenado en


de punto flotante la memoria.
3.8 RESUMEN
para precisin
1. Use el bit del extremo izquierdo como el signo.
simple !IIII El sistema decimal tiene diez dgitos y se basa en poten- 11 Complementar un nmero significa convertir cada 1 a O
2. Cambie los siguientes ocho bits a fonnato decimal y reste 127 del resultado. ste es el cias de lO. ycadaOal.
exponente.
11 El sistema binario, utilizado por computadoras para al- 111 En el mtodo de representacin de enteros del comple-
3. Aada un 1 y un punto decimal a los siguientes 32 bits. Usted puede ignorar cualquier macenar nmeros, tiene dos dgitos, O y 1, Y se basa en mento a uno, un nmero negativo se representa al dejar
O adicional a la derecha. potencias de 2. todos los O en el extremo derecho y el primer 1 sin cam-
111 La asignacin de bits es el nmero de bits utilizado pa- bio y luego complementar los bits restantes.
4. Mueva el punto decimal a la posicin correcta usando el valor del exponente.
ra representar a un entero. 11 La mayora de las computadoras actuales utiliza el mto-
S. Cambie la parte entera a decimal.
!IIII Los enteros pueden representarse como nmeros enteros do de representacin de enteros del complemento a dos.
6. Cambie la parte fraccionaria a decimal. con signo y sin signo. 111 Tanto el mtodo de signo y magnitud como el de comple-
7. Combine las partes entera y fraccionara. 11 Existen tres mtodos principales de representacin de n- mento a uno tienen dos representaciones para el valor O;
meros con signo: signo y magnitud, complemento a LillO el complemento a dos tiene slo una representacin para
EJEMPLO 20 y complemento a dos. el valor O.
Interprete el siguiente nmero de punto flotante de 32 bits: 111 Los nmeros sin signo se usan comnmente para conteo If Un nmero de punto flotante es un nmero entero y una
y direccionamiento. fraccin. La conversin de la fraccin a binario requiere
1 011111 00 11 00 11 00000000000000000 11 En el mtodo de signo y magnitud de la representacin que el denominador de la fraccin se exprese como una
de enteros, un bit representa el signo de nmero; los bits potencia de 2. El sistema Excess_X se utiliza para alma-
SOLUCIN 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- 11 En el mtodo de representacin de enteros del comple- 11 U na fraccin 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 nmero negativo se representa por me- operaciones sean ms simples.
tes son la mantisa. Si se ignoran los O adicionales, se obtiene 110011. Despus de que se dio de la operacin complemento del nmero positivo 111 Para almacenar una fraccin en la memoria, se necesita
aade un 1 a la izquierda del punto decimal, el nmero normalizado en binario es: correspondiente. su signo, exponente y mantisa.

-2- 3 X 1.110011 111


,
3.9 PRACTICA
3.6 NOTACION HEXADECIMAL - PREGUNTAS DE REPASO 11. Compare y contraste la representacin de los enteros po-
sitivos en los mtodos de signo y magnitud, complemen-
1. Cmo se convierte un nmero decimal a binario?
to a uno y complemento a dos.
Como se e:::tudi en el captulo 2, los nmeros pueden representarse en notacin hexadecimal. 2. Cmo se convierte LID nmero binario a decimal?
12. Compare y contraste la representacin de los enteros ne-
Por ejemplo, el nmero 48 puede representarse en un formato sin signo de ocho bits como 3. En un sistema binario, cada posicin es una potencia de gativos en los mtodos de signo y magnitud, comple-
00110000 o como el hexadecimal x30. De manera similar, un nmero como 81.5625 puede qu nmero? mento a uno y complemento a dos.
representarse en el estndar IEEE como 01000010101000111001000000000000 o en nota-
cin hexadecimal como x42A390oo. 4. En un sistema decimal, cada posicin es una potencia 13. Compare y contraste la representacin del O en los m~
de qu nmero? todos de signo y magnitud, complemento a uno y com-
5. Cules son los tres mtodos para representar enteros plemento a dos.
con signo? 14. Compare y contraste el rango de nmeros que pueden
6. Cul es el significado del trmino mximo entero sin representarse en los mtodos de signo y magnitud, com-
-
3.7 TERMINOS CLAVE signo? plemento a uno y complemento a dos.
15. Comente el papel que juega el bit en el extremo izquier-
7. Cul es el significado del tnnino asignacin de bits?
do en los mtodos de signo y magnitud, complemento a
conversin de binario a decimal fonnato de precisin simple 8. Por qu no se puede almacenar el nmero decimal 256
representacin del complemento uno y complemento a dos.
conversin de decimal a binario fraccin en una localidad de memoria de ocho bits?
a uno 16. Cul es el uso principal del sistema Excess_X?
entero mantisa 9. Cules son los usos de los enteros sin signo? Mencione
representacin del complemento
entero negativo normalizacin dos. 17. Por qu es necesaria la nonnalizacin?
a dos
entero positivo nmero de punto flotante sistema binario 18. Qu es la mantisa?
10. Qu sucede cuando se intenta almacenar el decimal 130
entero sin signo nmero entero 19. Despus de que se normaliza un nmero, qu tipo de
sistema decimal utilizando la representacin de signo y magnitud con
formato de precisin doble representacin de signo y magnitud sistema Excess informacin almacena una computadora en la memoria?
una asignacin de ocho bits?
.. Representacin de nmeros 3.9 Prctica ..

28. En la representacin de nmeros (de) ____, hay 36. En la representacin de nmeros Excess_X, general- 44. La precisin del nmero fraccionario almacenado en
PREGUNTAS DE OPCiN MLTIPLE una computadora se define por el (la) _ _ __
una representacin para O. mente cul es la relacin entre X y N, la asignacin de
20. Los nicos dgitos usados en el sistema numrico ~__ _
bits? 3. signo
sonOy 1. a. enteros sin signo
a.X~2N-l b. exponente
a. decimal b. complemento a uno
c. complemento a dos b.X~2N+l c. mantisa
b. octal 1
d. a y c c. X = 2N - - 1 d. ninguno de los anteriores
c. binario
d. a o c 45. Cmo se almacena la mantisa en una computadora?
d. hexadecimal 29. Si el bit en el extremo izquierdo es O en la representa-
cin de nmeros de , entonces el nmero deci- 37. Cuando una computadora almacena una fraccin, el 3. en el complemento a uno
21. Cuando se convierte un nmero decimal a binario, se di-
mal es positivo. ____ por lo general se expresa como una potencia b. en el complemento a dos
vide repetidamente en ~~~_.
3. signo y magnitud de 2. c. como un entero sin signo
a.2
b. complemento a uno 3. numerador d. en signo y magnitud
b. 8
c. complemento a dos b. denominador
c. 10 46. Un dgito octal convertido a binario se compone por
d. todas las anteriores c. nmero entero ____ bits.
d. 16
30. Si el bit en el extremo izquierdo es 1 en la representa- d. aob
22. Cul de los siguientes mtodos de representacin de en- a. 2
cin de nmeros de , entonces el nmero deci- 38. Si el denominador de una fraccin es 1024, entonces el b.3
teros maneja tanto nmeros 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
c. complemento a dos
b.8
c. complemento a dos c. 10
d. todos los anteriores d. ninguna de las anteriores d. 16 EJERCICIOS
23. En los enteros sin signo, una asignacin de cuatro bits 31. Cul es el mtodo de representacin de nmeros de uso 47. Cambie los siguientes nmeros decimales a enteros de
39. Si el numerador de una fraccin tiene tres bits de longi-
pennite ~~~_ nmeros negativos. ms difundido hoy da para almacenar nmeros en una ocho bits sin signo si es posible.
tud, entonces el denominador es ____ o

a. 7 computadora? a.23
b. 8 a. 2
a. signo y magnitud b. 121
b.8
c. 15 b. complemento a-uno c. 34
d. 16 c. 10
c. complemento a dos d.342
d. 16
24. En todas las representaciones de enteros sin signo, una d. enteros sin signo
40. Cul es la representacin de 5 en Excess_128? 48. Cambie los siguientes nmeros decimales a enteros sin
asignacin de cuatro bits permite nmeros no 32. Cul mtodo de representacin de nmeros se usa con
a. 00000101 signo de 16 bits.
negativos. frecuencia para convertir seales analgicas en seales
digitales? b. 10000100 a. 41
a. 7
c. 10000101 b.411
b. 8 a. enteros sin signo
b. signo y magnitud d. 10000001 c. 1234
c. 15
d.342
d. 16 c. complemento a uno 41. Cuando una fraccin se nonnaliza, hay un ____ a
d. byc la izquierda del punto decimal. 49. Cambie los siguientes nmeros decimales a enteros de
25. En la representacin de nmeros (de) ____ o 1111
33. Los enteros sin signo pueden utilizarse para ~___. a. bit O signo y magnitud de ocho bits.
en la memoria representa -O.
a. conteo b. bit 1 a. 32
a. enteros sin signo
b. direccionaITento c. secuencia de bits aleatoria b. -101
b. signo y magnitud
c. procesamiento de seales d. aob c. 56
c. complemento a uno
d. ayb d. 129
d. complemento a dos 42. Un nmero normalizado se multiplica por _ _ __
34. Cul mtodo de representacin de nmeros se usa con donde e es el nmero de bits que se desplaz el punto 50. Cambie los siguientes nmeros decimales a enteros de
26. En la representacin de nmeros (de) ____ , 1111 frecuencia para almacenar el valor exponencial de una decimal. signo y magnitud de 16 bits.
en la memoria representa -1. fraccin? 3. 2e a. 142
3. enteros sin signo
a. enteros sin signo b. e!2 b. -180
b. signo y magnitud b. complemento a uno
c. complemento a uno c. e2 c. 560
c. complemento a dos d.2' d.2456
d. complemento a dos d. Excess_X
43. Cuando una fraccin se nonnaliza, la computadora al- 51. Cambie los siguientes nmeros decimales a enteros
27. En la representacin de nmeros (de) ~~~. hay dos 35. En una conversin Excess_X, usted el nme-
representaciones para O. macena el (la) ~~~_. complemento a uno de 16 bits.
ro mgico X al nmero que se va a convertir.
a. signo y magnitud a. suma
3. signo a. 162
b. complemento a uno b. resta b. exponente b. -110
c. complemento a dos c. multiplica
c. mantisa c. 2560
d. ayb d. todos los anteriores d. 12123
d. divide
.. Representacin de nmeros 3.9 Prctica ..

52. Cambie los siguientes nmeros decimales a enteros 60. Los nmeros siguientes son nmeros binarios comple- 66. Normalice los siguientes nmeros binarios de punto flo- Original Nuev~ Original Nueva
complemento a dos de ocho bits. mento a dos. Muestre cmo cambiar el signo del nmero. tante. Muestre de manera explcita el valor del expone- 1/ 0.25 1/4
0.5 2
a. -12 a. 01110111 nente despus de la normalizacin. 1/
0.125 '/s 0.0625 16
b. - 101 b. 11111100 a. 1.10001
0.03125 1/ 0.015625 '/64
c. 56 c. 01110111 b. 2 3 X 111.1111 32

d. 142 d. 11001110 c. r 2 X 101.110011 Tabla 3.12 Ejercicio 70


61. En este captulo mostramos cmo aplicar la operacin d. r' X 101101.00000110011000
53. Cambie los siguientes nmeros decimales a enteros com-
del complemento a dos de un nmero al saltar algunos 67. Muestre los siguientes nmeros en formato IEEE de 32
plemento a dos de 16 bits.
bits y complementar el resto (cambiar los O a 1 y los 1 a bits. a. 0.1875
a. 102
O). Otro mtodo es primero aplicar la operacin comple- a. - 2 X 1.1 0001 b.0.640625
b. -179
mento a uno y luego sumar 1 al resultado. Pruebe ambos b. +23 X 1.111111 c. 0.40625
c. 534
mtodos con los nmeros siguientes. Compare y con- c. +r' X 1.01110011 d. 0.375
d. 62056
traste los resultados. d. -r' X 1.01101000
54. Cambie los siguientes nmeros sin signo de ocho bits a a. 01110111 68. Muestre los siguientes nmeros en formato IEEE de 64 71. Usando los resultados del problema previo, cambie los
decimal. b. 11111100 siguientes nmeros decimales a nmeros binarios.
bits.
a. 01101011 c. 01110100 a. _2 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 operacin complemento a uno a un n- c. +r 4 X 1.01110011 c. 11.40625
d. 01010000 mero dos veces, obtiene el nmero original. Aplique dos d. -25 X 1.01101000
d. 0.375
55. Cambie los siguientes nmeros signo y magnitud de veces la operacin complemento a uno a cada uno de los 69. Cambie las siguientes fracciones decimales a fracciones
ocho bits a decimal. nmeros siguientes y vea si puede obtener el nmero binarias. 72. Usando el resultado del problema anterior, muestre los
originaL siguientes nmeros en el formato IEEE de 32 bits.
a. 01111011 a. 35/8
b. 10110100 a. 01110111 b. 123/32 a. +7.1875
b.ll111100
c. 01100011 c. 413/64 b. + 12.640625
c. 01110100 d. 125/128
d. 11010000 c. - 11.40625
d. 11001110 70. La tabla 3.12 muestra otra forma de escribir una fraccin
56. Cambie los siguientes nmeros complemento a uno de d. -0.375
63. Si usted aplica la operacin 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 nmero 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 operacin complemento a dos a cada uno de los binacin de entradas para encontrar la fraccin apropia- do el formato IEEE.
b. 10000100 nmeros siguientes y vea si puede obtener el ntunero da. Por ejemplo. 0.635 no est en la tabla, pero usted
c. 01110011 a. x012AOO + xl2AAFF
original. 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-
ma adecuada. Cambie las fracciones decimales siguien- c. x9111111 + x211111
57. Cambie los siguientes nmeros complemento a dos de b. 11111100
c. 01110100 tes a una fraccin con una potencia de 2. d. xEllllll + x777777
ocho bits a decimal.
a. 01 110111 d. 11001110
b. 11111100 64. El equivalente de un nmero 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 nmero se
obtiene al restar cada dgito de 9. Encuentre el comple-
58. Los siguientes nmeros son nmeros binarios de signo y
mento a nueve para cada uno de los siguientes nmeros
magnitud. Muestre cmo cambiar el signo del nmero.
decimales. Suponga que est utilizando slo tres dgitos.
a. 01110111
a. +234
b. 11111100 b. + 112
c. 01110111 c. -125
d. 11001110 d. -111
59. Los nmeros siguientes son nmeros binarios comple- 65. Si usted usa tres dgitos, cul es el intervalo de nme-
mento a uno. Muestre cmo cambiar el signo del nmero. ros que puede representar usando el complemento de
a. 01110111 nueve? En este sistema, cmo puede determinar el sig-
b.l1111100 no de un nmero? Se tienen dos ceros en este sistema?
c. 01110111 Cul es la representacin para +O? Cul es la repre-
d. 11001110 sentacin para - O?
-
4.1 Operaciones aritmticas ..

,
4.1 OPERACIONES ARITMETICAS
Las operaciones aritmticas involucran la suma, la resta, la multiplicacin, la divisin y as
por el estilo. Usted puede aplicar estas operaciones a los enteros y a los nmeros de punto flo-

Operaciones OPERACIONES
tante. Primero nos concentraremos en los enteros.

Todas las operaciones aritmticas como la suma, la resta, la multiplicacin y la divisin pue-
den aplicarse a los enteros. Sin embrago, slo nos concentraremos en la suma y la resta. La

con bits ARITMTICAS


CON ENTEROS operacin de multiplicacin puede implementarse en software usando sumas sucesivas, o en
hardware usando otras tcnicas. La operacin de divisin tambin puede implementarse en
software usando restas sucesivas o en hardware usando otras tcnicas. No obstante, un anli-
sis profundo de la multiplicacin y la divisin est ms all del mbito de este libro y lo de-
jamos corno 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 representacin 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 nmeros en el complemento a dos es como la suma de nmeros en el sistema de-
complemento 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 dgitos binarios, no con dgitos
a dos
En los captulos 2 y 3 mostramos la manera de almacenar diferentes tipos de datos en una decimales. Cuando se suman dos bits el resultado es O o 1. Asimismo, se debe acarrear un
computad?ra. En este ~~p~tulo, mostramos cmo hacer operaciones con bits. Las operacio- 1 que se transmite a la siguiente columna. Por consiguiente, necesita ser cuidadoso al sumar
nes con bIts pueden diVIdIrse en dos amplias categoras: operaciones aritmticas y opera- dos o tres bits. La tabla 4.1 es una gua para sumar bits.
ciones lgicas (figura 4.1).
Nmero de {' Resultado Acarreo ..
Ninguno O ..
Uno 1 .
Operaciones
con bits Dos 2 I
Tres 3 1
I Tabla 4.1 Suma con bits
l
I Aritmticas
I I Lgicas
I Ahora podemos definir la regla para sumar dos enteros en el complemento a dos:
.
FIgura 4.1 OperacIones con bits

RegIa para sumar enteros en el complemento a dos

Sume dos bits y propague el nmero de acarreo a la siguiente columna. Si hay un


acarreo final despus de la suma de la columna del extremo izquierdo, descrtelo.

EJEMPLO!
Sume dos nmeros en la representacin del complemento a dos:

(+17) + (+22) ---- (+39)

SOLUCIN
Estos nmeros 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 tamao de asig-
nacin.
Ea Operaciones con bits
4.1 Operaciones aritmticas ..

Acarreo 1
Un error resalta de inmediato aqu. El bit en el extremo izquierdo del resultado es 1, 10
00010001+ cual significa que el nmero es negativo (esperamos un nmero positivo). Cul es este
O O O 101 1 O nmero? El complemento a dos es 126. Esto significa que el nmero es -126 en lugar de
130. En la siguiente seccin sobre desbordamiento tratamos este problema. 11
Resultado 00100111

El resultado es 39 en decimal. El desbordamiento es un error que ocurre cuando usted intenta almacenar un nmero que no
Desbordamiento
est dentro del intervalo definido por la asignacin. Cuando sume nmeros en el complemen-
EJEMPLO 2
to a dos usando N bits, asegrese de que cada nmero y el resultado estn en el intervalo de-
Sume 24 Y -17. Ambos nmeros estn en formato de complemento a dos. finido para la representacin del complemento a dos. En el captulo 3, mencionamos que el
intervalo de nmeros que pueden representarse en el complemento a dos est entre _2N - 1 y
(+24) + (-17) ---> (+7) 2N - 1 _1.

SOLUCIN
Los nmeros en el complemento a dos pueden representarse como sigue:
Intervalo de nmeros en la representacin del complemento a dos:
Acarreo 1 1 1 11 _(2N - 1) - - o - - + (2"-1 -1)
00011000+
1 1 1 O1 1 1 1
Resultado OOOOO1 1 1 Para el ejemplo 4, el intervalo es -2 8 - 1 a +28-1 -1, lo cual es -128 a 127. El resultado
de la suma (130) no est en el intervalo. Pero otra pregunta sigue sin respuesta: Por qu la
Observe que el resultado es +7 Y que el ltimo acarreo (a partir de la columna en el ex- respuesta es -1267 La respuesta puede encontrarse si usted visualiza los nmeros en el com-
tremo izquierdo) se descarta. plemento a dos como puntos de un crculo (Fig, 4.2).

EJEMPLO 3
Sume - 35 Y 20. Ambos nmeros estn en formato de complemento a dos.

(-35) + (+20) ---> (-15)

SOLUCIN
Los nmeros en el complemento a dos pueden representarse como sigue:

Acarreo 111
-64 63
11011101+
O O O 1 O 100
Resultado 11110001

Observe que el resultado es -15 (si se aplica la operacin complemento a dos al resulta-
do, se obtiene 15). -128 127

EJEMPLO 4 Figura 4.2 Visualizacin de nmeros en el complemento a dos


Sume 127 Y 3. Ambos nmeros estn en formato del complemento a dos.

( +127) + (+3) ---> (+ 130) Comience desde O y sume 1 sin interrupcin hasta que obtenga 127. Si suma un 1 ms no ob-
tiene 128, sino -128. Si suma otro 1, obtiene -127. Sume un 1 ms y obtendr -126. Esto
SOLUCIN
fue lo que ocurri en el ejemplo 4.
Los nmeros en el complemento a dos pueden representarse como sigue:

Acarreo 1 1 1 1 1 1 1
01111111+ Cuando realice operaciones aritmticas con nmeros en una computadora. recuer-
OOOOOO 1 1 de que cada nmero y el resultado deben estar en el intervalo definido por la asig-
nacin con bits.
Resultado 10000010
.. Operaciones con bits 4.2 Operaciones lgicas El
Resta en el Una de las ventajas de la representacin del complemento a dos es que no hay diferencia en- SOLUCIN
complemento tre la suma y la resta. Para restar, se invierte (complemento a dos) el segundo nmero y se su- El exponente del primer nmero es 132-127, o 5. El exponente del segundo nmero es
a dos ma. En otras palabras, las dos expresiones siguientes son lo mismo: 130-127, o 3. Por consiguiente, los nmeros son:

Nmero 1 Nmero 2 +---i> Nmero 1 + (-Nmero 2) +25 X 1.1011


EJEMPLOS +23 X 1.011
Reste 62 de 101 en formato del complemento a dos.
Iguale los exponentes:
(+101) (+62) +---i> (+101) + (-62) --- (+39)
+25 X 1.1011
SOLUCIN +25 X 0.01011
Los nmeros en el complemento a dos pueden representarse como sigue: 111
+25 X 10.00001
Acarreo 1 1
01100101+ Ahora normalice el resultado: l1li

1 1 OOOO1 O +2' X 1.000001


Resultado O O 100 1 1 1
El flotante almacenado en la computadora es: l1li
El resultado es +39. Observe que el acarreo en el extremo izquierdo se descarta. lIIiI
o 10000101 000001000000000000000000

OPERACIONES Todas las operaciones aritmticas como la suma, la resta, la multiplicacin y la divisin pue-
ARITMTICAS den aplicarse a los nmeros de punto flotante (flotantes). Sin embargo, slo nos concentra-
EN NMEROS mos en la suma y la resta porque la multiplicacin es simplemente una suma sucesiva y la
divisin, una resta sucesiva.
DE PUNTO
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 LGICAS
slo damos el concepto general.
Un solo bit puede ser ya sea O o l. Usted puede interpretar el O como el valor lgico falso y
el 1 como el valor lgico verdadero. De esta manera, un bit almacenado en la memoria de una
Suma y resta La suma y la resta para los nmeros de punto flotante son un proceso. Los pasos son como computadora puede representar un valor lgico que es ya sea falso o verdadero.
sigue: Si un bit se interpreta como un valor lgico, entonces pueden aplicarse las operaciones l-
gicas a este bit. Una operacin lgica acepta uno o dos bits para crear slo un bit. Si la ope-
111 Revise los signos.
racin se aplica slo a una entrada, es una operacin unaria. Si sta se aplica a dos bits es
a. Si los signos Son iguales, sume los nmeros y asigne el signo al resultado. una operacin 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.

111 Desplace los puntos decimales para igualar los exponentes. Esto significa que si los ex-

I-I--'~
ponentes no son iguales, el punto decimal del nmero con el exponente menor se mue-

l1li
111

111
ve a la izquierda para igu~ar los exponentes.

Sume o reste las mantisas (incluyendo la parte entera y la parte fraccionaria).

Normalice el resultado antes de almacenarlo en la memoria.

Verifique si hay desbordamiento.


Entrada-1 Unaria
II---)~
o

a. Operador unario
Salida
Entrada1

Entrada ---+1
Binario

b. Operador binario
Salida

Figura 4.3 Operaciones unarias y binarias


EJEMPLO 6
Sume dos flotantes:

o 10000100 10110000000000000000000 En esta seccin se analiza un operador unario y tres operadores binarios, los cuales se
O 10000010 01100000000000000000000 muestran en la figura 4.4.
.. Operaciones con bits 4.2 Operaciones lgicas ..

Operacin NOT .
lgica
1 --j---i NOT'>o--l-- o

O--~--~Nm~J--i---
Entrada Salida



AND OR XOR
,><>-+-0
Figura 4.4 Operaciones lgicas

TABLAS DE VERDAD Una manera de mostrar el resultado de una operacin lgica es con una tabla de verdad. Una Figura 4.6 Operador NOT
tabla de verdad lista todas las combinaciones de entrada posibles con su salida correspon-
diente. En el caso de un operador unaria 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-
En esta seccin se analizan los operadores binarios: AND, OR Y XOR.
blas de verdad para NaT, AND, OR Y XOR. OPERADORES
BINARIOS

AND El operador AND es un operador binario. Este operador toma dos entradas (dos patrones con
Operador AND
x y xAl'IDy bits) y crea una salida (patrn con bits). AND aplica la tabla de verdad a un par con bits, uno
Nar o o o de cada entrada y crea la salida correspondiente (figura 4.7). Se utiliz el smbolo AND que
~x NOTx" o 1 o aplica disyuncin a cada par con bits y un cuadro AND que es una operacin que se aplica a
o o o
cada par de patrones. Para cada par con bits de entrada, el resultado es 1 si y slo si ambos
bits son 1; de lo contrario, es o.
OR XOR
x y x OR y x y xXORy
o o o o o o
o 1 o 1
o o Entrada
o

Figura 4.5 Tablas de verdad o

OPERADOR UNARIO El nico operador unano que analizamos es el operador NOT. AND O
AND

Operador NOT El operador NOT tiene una entrada (un patrn con bits). Este operador invierte los bits, es de- Salida
cir, cambia el O a 1 y ella O. La figura 4.6 muestra el resultado de aplicar el operador NOT

a un patrn con bits. En ella, aparece el smbolo NOT convencional que convierte cada bit y 1

un cuadro NOT que es una operacin aplicada a todo el patrn. Observe que una tabla de ver-
dad se aplica a cada bit individual.
1 O
EJEMPLO 7 Entrada
Use el operador NOT en el patrn con bits 10011000.
Figura 4.7 Operador AND
SOLUCIN
La solucin es:

Objetivo 10011000 NOT EJEMPLOS


Resultado 01100111 l1li Use el operador AND en el patrn con bits 10011000 y 00110101.
.. Operaciones con bits 4.2 Operaciones lgicas ..

SOLUCIN EJEMPLO 9
La solucin es: Utilice el operador OR en los patrones con bits 10011000 y 00110101.

Patrn 1 10011000 AND SOLUCIN


Patrn 2 00110101 La solucin es:
Resultado 00010000 111 Patrn 1 10011000 OR
Patrn 2 00110101
Regla inherente del operador AND Un aspecto interesante sobre el operador AND es Resultado 10111101
que si un bit en una entrada es O, usted no tiene que revisar el bit correspondiente en la otra
entrada; puede concluir rpidamente que el resultado es O. Este hecho se define como la re-
gla inherente del operador AND (figura 4.8). Regla inherente del operador OR Un aspecto interesante sobre el operador OR es que
si un bit en una entrada es 1, usted no tiene que revisar el bit correspondiente en la otra en-
trada; puede concluir rpidamente que el resultado es 1. Definimos este hecho como la regla
inherente del operador OR (figura 4.10).

(O) AND (X) ~ (O)


(1) OR (X) ~ (1)
(X) AND (O) ~ (O)
(X) OR (1 ) ) (1)
Figura 4.8 Regla inherente del operador AND
Figura 4.10 Regla inherente del operador OR

Operador OR El operador OR es un operador binario. Este operador toma dos entradas (dos patrones con
Operador XOR El operador XOR es un operador binario, que toma dos entradas (dos patrones con bits) y
bits) y crea una salida (patrn de bis). OR aplica la tabla de verdad a un par con bits, uno de
crea una salida (un patrn 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 smbolo
cada entrada, y crea la salida correspondiente (figura 4.11). En la figura se utiliz el smbolo
OR convencional que incluye cada par con bits y un cuadro OR que es una operacin aplica-
XOR convencional que aplica exclusin 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 O si y slo si ambos
bits son O; de lo contrario, es 1. racin aplicada al par de patrones. Para cada par con bits de entrada el resultado es Osi y s-
lo si ambos bits son iguales; de lo contrario es 1.

Entrada Entrada
o O 1 '" o 1

}-I--- O O

OR XOR
Salida Salida

-----r--l--
, ,
, "

O O
Entrada Entrada

Figura 4.9 Operador OR Figura 4.11 Operador XOR


4.2 Operaciones lgicas ..
.. Operaciones con bits

EJEMPLO 10
Objetivo
Use el operador XOR en los patrones con bits 10011000 y 00110101.
X X X X X X X X
SOLUCIN I l I I l I I I
La solucin es la siguiente:

Patrn 1 10011000 XOR


I
AND


II ) O O O O O X X X
Salida
Patrn 2 00110101
O O O O O 1 1 1
Resultado 10101101 Mscara

Regla inherente del operador XOR Un aspecto interesante sobre el operador XOR es Figura 4.14 Ejemplo de apagado con bits especficos
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).
EJEMPLO 11
Use una mscara para apagar (borrar) los cinco bits en el extremo izquierdo de un patrn.
Pruebe la mscara con el patrn 10100110.
(1) XOR (X) NOT(X)
SOLUCIN
La mscara es 00000111. El resultado de aplicar la mscara es:
(X) XOR (1) NOT(X)
Objetivo 10100110 AND
Figura 4.12 Regla inherente del operador XOR
Mscara 00000111
Resultado 00000110 l1li
APLICACIONES Las tres operaciones binarias lgicas pueden utilizarse para modificar un patrn con bits. Pue-
den hacer disyuncin, conjuncin o invertir bits especficos. El patrn con bits que se va a EJEMPLO 12
modificar se aplica disyuncin (AND), conjuncin (OR) o exclusin (XOR) con un segundo
Imagine una planta de energa que bombea agua a una ciudad usando ocho bombas. Los
patrn con bits, el cual se conoce como mscara. La mscara se usa para modificar otro pa-
estados de las bombas (encendido o apagado) pueden representarse mediante un patrn de
trn con bits (figura 4.18).
ocho bits. Por ejemplo, el patrn 11000111 muestra que las bombas 1 a 3 (a partir de la
derecha), 7 y 8 estn encendidas, mientras que las bombas 4, 5 Y 6 estn apagadas. Ahora
suponga que la bomba 7 se apaga. Cmo puede mostrar esta situacin una mscara?
--

Objetivo ----'.!
Operador SOLUCIN
binario I--~ Salida
Mscara ---+1 Se utiliza la mscara 10111111 operada AND con el patrn objetivo. El nico bit O (bit 7)
en la mscara apaga el sptimo bit en el objetivo.

Situacin anterior 11000111 AND


Figura 4.13 Mscara
Mscara 10111111
Nueva situacin 10000111
Apagar bits Una de las aplicaciones del operador AND es apagar (forzar a O) bits especficos en un pa-
especficos trn con bits. Para hacerlo, use una mscara de apagado con la misma longitud con bits. Las
Una de las aplicaciones del operador OR es encender (forzar a 1) bits especficos en un pa-
reglas para construir una mscara de indetenninacin pueden resumirse como sigue: Encender bits
trn con bits. Para hacerlo, utilice una mscara de detenninacin con la misma longiUld con
1. Para apagar un bit en el patrn con bits objetivo, utilice O para el valor correspondien-
especficos
bits. Las reglas para constmir una mscara de encendido pueden resumirse como sigue:
te en la mscara.
1. Para encender un bit en el patrn con bits objetivo, use un 1 para el bit correspondien-
2. Para dejar un bit sin cambiar en el patrn con bits objetivo, use 1 para el bit correspon-
te en la mscara.
diente en la mscara.
2. Para dejar un bit en el patrn con bits objetivo sin cambiar, utilice un O para el bit co-
Para comprender por qu operan estas reglas, remtase a la regla inherente del operador AND rrespondiente en la mscara.
en la figura 4.8.
Para comprender por qu estas reglas operan, remtase a la regla inherente del operador OR
Por ejemplo, suponga que quiere apagar los cinco bits en el extremo izquierdo de un patrn
de ocho bits. La mscara debe tener cinco O a la izquierda, seguidos por tres 1 (figura 4.14). en la figura 4.10.
.. Operaciones con bits 4.3 Operaciones de desplazamiento ..

Por ejemplo, suponga que quiere encender los cinco bits en el extremo izquierdo de un pa- Para comprender por qu operan estas reglas, remtase a la regla inherente del operador XOR
trn de ocho bits. La mscara debe tener cinco 1 a la izquierda seguidos por tres O (figura 4.15). en la figura 4.12.
Por ejemplo, para complementar los cinco bits en el extremo izquierdo de un patrn de
ocho bits, haga una mscara que comience con cinco 1 a la izquierda seguidos por tres O (fi-
gura 4.16).
Objetivo
xxxxxxxx
Objetivo
1 1 1 I 1 I I I

~~~~OFR-F-F~~~l
X X X X X X X X
1 1 1 1 X X X
l l l l l I I I Nota: X es el complemento de X.

11111000
I Salida

I i I I
XOR
I ~ X X
-
X X X
Salida
X X X

Mscara
1 1 1 1 1 O O O
Figura 4.15 Ejemplo de determinacin con bits especficos Mscara

EJEMPLO 13 Figura 4.16 Ejemplo de reversin con bits especficos


Use una mscara para encender los cinco bits en el extremo izquierdo de un patrn. Prue-
be la mscara con el patrn 10100110. EJEMPLO 15

SOLUCIN Utilice una mscara para revertir los cinco bits en el extremo izquierdo de un patrn. Prue-
be la mscara con el patrn 10100110.
La mscara es 11111000. El resultado de aplicar la mscara es:
SOLUCIN
Objetivo 10100110 OR
La mscara es 11111000. El resultado de aplicar la mscara es:
Mscara 11111000

Resultado 11111110 Objetivo 10100110 XOR


11
Mscara 11111000

EJEMPLO 14 Resultado 01011110


Tomando el ejemplo de la planta de energa, cmo se podra utilizar una mscara para
mostrar que la bomba 6 ahora est encendida?

SOLUCIN 4.3 OPERACIONES DE DESPLAZAMIENTO


Se utiliza la mscara 00100000 Y el operador OR con el patrn objetivo. El nico bit 1 (bit
6) en la mscara enciende el sexto bit en el objetivo. Otra operacin comn en patrones con bits es la operacin de desplazamiento. Un patrn con
bits puede ser desplazado a la derecha o a la izquierda. La operacin de desplazamiento a la
Situacin previa 10000111 OR derecha descarta el bit en el extremo derecho, desplaza cada bit hacia la derecha e inserta Oco-
Mscara 00100000 mo el bit en el extremo izquierdo. La operacin de desplazamiento a la izquierda descarta el
bit en el extremo izquierdo, desplaza cada bit hacia la izquierda e inserta O como el bit en el
Nueva situacin 10100111 l1li extremo derecho. La figura 4.17 muestra esas dos operaciones en patrones de ocho bits don-
de a, b, .. " h representan bits individuales.
Se debe tener cuidado con las operaciones de desplazamiento si el patrn representa un n-
Complementar bits Una de las aplicaciones de XOR es complementar bits, lo cual significa cambiar el valor con
mero con signo. Una operacin de desplazamiento puede cambiar el bit en el extremo izquier-
especficos bits especficos de O a 1 y viceversa. Las reglas para construir una mscara XOR pueden re-
sumirse como sigue: do del patrn, el cual en un nmero con signo representa el signo del nmero. Las operaciones
de desplazamiento slo pueden utilizarse cuando un patrn representa un nmero sin signo.
1. Para complementar un bit en el patrn con bits objetivo, utilice un 1 para el bit corres-
pondiente en la mscara. EJEMPLO 16
2. Para dejar un bit en el patrn con bits objetivo sin cambiar, utilice Un O para el bit co- Muestre cmo se puede dividir o multiplicar un nmero por 2 usando operaciones de des-
rrespondiente en la mscara. plazamiento.
mi Operaciones con bits 4.6 Prctica

Entrada Entrada
4.5 RESUMEN
abcdefgh abcdefo-h

Desplazamiento I
I I I I I I I I
.' .' ,'/" ".-,,;' I
I I I I I
\, '-, ", I'-, I I Desplazamiento a
11 Usted puede realizar operaciones aritmticas o lgicas
sobre bits.
11 El resultado de la operacin binaria AND es verdadero
slo si ambas entradas son verdaderas.
a la izquierda ~>~F>"'"~~""'";"'F""'";...~. .. '.. '.. '... '.. '~ '~ ~ la derecha
t..

11 La mayora de las computadoras utiliza el mtodo de re- 11 El resultado de la operacin binaria OR es falso 'slo si
I I I I presentacin de enteros del complemento a dos. ambas entradas son falsas.
bcdefghO Oabcdefg
Salida Salida 11 Si hay un acarreo despus de la suma de los dgitos en el l1li El resultado de la operacin binaria XOR es falso si am-
extremo izquierdo, el acarreo se descarta. bas entradas son iguales.
Figura 4.17 Operaciones de desplazamiento 11 Para restar en el complemento a dos slo se complemen- 11 Una mscara es un patrn con bits que se aplica a un pa-
ta el nmero a ser restado y se suma. trn con bits objetivo para lograr un resultado especfico.
11 Para apagar (borrar) un bit en un patrn con bits objeti-
11 Los nmeros a ser sumados deben estar dentro del inter-
SOLUCIN vo, se pone el bit de la mscara correspondiente en O y
valo definido por la asignacin con bits.
Si un patrn con bits representa un nmero sin signo, una operacin de desplazamiento a se utiliza el operador AND.
11 El trmino desbordamiento describe una condicin en la
11 Para encender un bit en un patrn con bits objetivo, se
la derecha divide el nmero por 2 (divisin de enteros). El patrn 00111011 representa 59.
cual un nmero no est dentro del intervalo definido por
Cuando el nmero se desplaza a la derecha, se obtiene 00011101, el cual es 29. Si el n- pone el bit de la mscara correspondiente en 1 y se utili-
la asignacin con bits.
mero original (59) se desplaza a la izquierda, se obtiene 01110110, el cual es 118. lIiI za el operador ORo
111 La operacin lgica sobre bits puede ser unaria (una en- 11 Para complementar un bit en un patrn con bits objetivo,
trada) o binaria (dos entradas). se pone el bit de la mscara correspondiente en 1 y se uti-
EJEMPLO 17
11 El operador NOT unario invierte su entrada. liz~ el operador XOR.
Utilice una combinacin de operaciones lgicas y de desplazamiento para encontrar el va-
lor (O o 1) del cuarto bit (a partir de la derecha) en un patrn.

SOLUCIN
Se utiliza la mscara 00001000 operada AND con el objetivo para mantener el cuarto bit 4.6 PRCTICA
y borrar el resto de los bits.
PREGUNTAS DE REPASO 14. Cul es la regla inherente del operador AND?
abcdefgh AND
1. Cul es la diferencia entre una operacin aritmtica y 15. Cul es la regla inherente del operador OR?
O OO O 1 O O O
una operacin lgica? 16. Cul es la regla inherente del operador XOR?
OOOOe OOO
2. Cmo se relaciona la multiplicacin con la suma? D un
17. Qu operacin binaria puede usarse para encender bits?
ejemplo.
Para tener aCCeso al valor del cuarto bit (e), se desplaza el nuevo patrn tres posiciones a Qu patrn con bits debe tener la mscara?
la derecha de modo que el bit especfico se coloque en la posicin del extremo derecho. 3. Qu sucede con un acarreo de la columna en el extremo
18. Qu operacin binaria puede usarse para apagar bits?
izquierdo en la suma final?
Qu patrn con bits debe tener la mscara?
OOOOeOOO ~ OOOOOeOO ~ OOOOOOeO ~ OOOOOOOe 4. Puede N, la asignacin con bits, ser igual al? Por qu
s o por qu no? 19. Qu operacin binaria puede usarse para revertir bits?
Ahora es muy fcil probar el valor del nuevo patrn como un entero sin signo. Si el valor Qu patrn con bits debe tener la mscara?
es 1, el bit original fue 1; si el valor es O, el bit original fue O. 111 5. Cul es la definicin del trmino desbordamiento?
6. En la suma de nmeros de punto flotante, cmo se ajusta
la representacin de nmeros con diferentes exponentes? PREGUNTAS DE OPCiN MlTIPLE
, 7. Cul es la diferencia entre una operacin unaria y una 20. es una operacin aritmtica con bits.
4.4 TERMINOS CLAVE operacin binaria?
a. El OR exclusivo
8. Menciona cules son las operaciones binarias lgicas. b. El NOT unario
acarreo forzar a 1 operacin 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 mscara operador NOT
11. Cundo es verdadero el resultado de una operacin 21. es un operador lgico con bits.
complementar nmero de punto flotante operador OR
AND?
complemento a dos operador Ai'lD operador unario a. El OR exclusivo
desbordamiento operacin aritmtica operador XOR 12. Cundo es verdadero el resultado de una operacin OR? b. El NOT unario
encender operacin binaria tabla de verdad 13. Cundo es verdadero el resultado de una operacin c. El AND binario
forzar a O operacin lgica XOR? d. Todos los anteriores
.. Operaciones con bits 4.6 Prctica ..

22. El mtodo de representacin de enteros de es 29. Si usted est sumando dos nmeros, uno de los cuales tie- 37. Para complementar todos los bits de un patrn con bits, 43. Sin hacer reahnente el problema, puede decir cul de las
el mtodo ms comn para almacenar enteros en la me- ne un valor de exponente de 7 y el otro un valor exponen- hace una mscara de todos los bits en 1 y luego _ _ __ siguientes opciones crea desbordamiento si los nmeros y
moria de la computadora. te de 9, necesita desplazar el punto decimal del nmero el patrn con bits y la mscara. el resultado estn en notacin de complemento a dos de
menor _ _ __ ocho bits?
a. signo y magnitud a. operaAND
b. complemento a uno a. un lugar a la izquierda b. opera OR a. 32 + 105
c. complemento a dos b. un lugar a la derecha b. 32 - 105
c. operaXOR
d. enteros no asignados c. dos lugares a la izquierda c. -32 + 105
d.operaNOT
d. dos lugares a la derecha d. -32 - 105
23. En la suma del complemento a dos, si hay un acarreo fi- 38. Para apagar (forzar a O) todos los bits de un patrn con
nal despus de la suma de la columna en el extremo iz- 30. El operador binario ____ toma dos entradas para 44. Muestre el resultado de las operaciones siguientes supo-
producir una salida. bits, hace una mscara de todos los los bits en O y luego
quierdo, ____ el patrn con bits y la mscara. niendo que los nmeros se almacenan en la representa-
a. ste se suma a la columna en el extremo derecho
a. AND cin de complemento a dos en 16 bits. Muestre el resul-
b.OR a. operaAND tado en notacin hexadecimal.
b. ste se suma a la columna en el extremo izquierdo
c. XOR b. opera OR
c. ste se descarta a. x012A + xOE27
d. todos los anteriores c. operaXOR b. x712A + x9EOO
d. aumenta la longitud con bits
31. El operador unario _ _ _ _ invierte su nica entrada. d.operaNOT c. x8011 + xOOO 1
24. Para una asignacin de ocho bits, el nmero decimal ms
a. AND 39. Para encender (forzar a 1) todos los bits de un patrn d. xE12A + x9E27
pequeo que puede representarse en la forma de comple-
mento a dos es _ _ __ b.OR con bits, hace una mscara de todos los bits en 1 y luego 45. Muestre el resultado de las siguientes operaciones de
c. NOT _ _ _ _ el patrn con bits y la mscara. punto flotante. Primero convierta cada nmero a notacin
a. -8
d. XOR a. operaAND binaria y realice la operacin; luego convierta el resulta-
b. -127
32. Para el operador binario ____ , si la entrada es dos O b. opera OR do de nuevo a notacin decimal.
c. -128
d. -256 la salida es un O. c. opera XOR a. 34.075 + 23.12
a. AND d. opera NOT b. -12.00067 + 451.00
25. Para una asignaci~ de ocho bits, el nmero decimal ms 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 es _ _ __
d. todos los anteriores EJERCICIOS
46. Muestre el resultado de las siguientes operaciones de
a. 8 40. Usando una asignacin de ocho bits, primero convierta
33. Para el operador binario _ _ _ _ ., si la entrada es dos 1 punto flotante. Primero convierta cada nmero a notacin
b. 127 cada uno de los siguientes nmeros a complemento a
la salida es O. binaria y realice la operacin; luego convierta el resulta-
c. 128 dos, realice la operacin y luego convierta el resultado a
a. AND do de regreso a notacin decimal.
d.256 decimal.
b.OR a. 23.125 + 12.45
26. En la representacin del complemento a dos con una c. XOR a. 19 + 23
b. 0.234 - 7.192
asignacin de cuatro bits, usted obtiene cuan- d. todos los anteriores b. 19 - 23
c. -0.345 + 45.123
do le suma 1 a 7.
34. Para la operacin binaria AND, slo una entrada de c. -19 + 23 d. -0.234 + 5.345
a. 8 ____ da una salida de 1. d. -19 - 23
47. En cul de las siguientes situaciones nunca ocurre un
b. 1 a. dos O 41. Usando una asignacin de 16 bits, primero convierta ca- desbordamiento? Justifique su respuesta.
c. -7 b. dos 1 da uno de los siguientes nmeros a complemento a dos, a. la suma a dos enteros positivos
d. -8 c. unOyun 1 realice la operacin y luego convierta el resultado a deci- b. la suma de un entero positivo y un entero negativo
27. En la representacin del complemento a dos con una d. cualquiera de los anteriores mal. c. la resta de un entero positivo y un entero negativo
asignacin de cuatro bits, usted obtiene cuan- 35. Para la operacin binaria OR, slo una entrada de a. 161 + 1023 d. la resta de dos enteros negativos
do le sumaS a 5. ____ da una salida de O. b. 161 - 1023
48. Muestre el resultado de las operaciones siguientes:
a. -5 a. dos O c. -161 + 1023
b. -6 a. NOTx99
b. dos 1 d. -161 - 1023
c. -7 c. uuOyun 1 b. NOTxFF
d. 10 d. cualquiera de los anteriores 42. Cul de las siguientes situaciones crea desbordamiento c. NOTxOO
si los nmeros y el resultado se representan en la nota- d. NOTxOI
28. Si el exponente en Excess_127 es el binario 10000101. el 36. Usted utiliza un patrn con bits llamado ____ para
cin de ocho bits usando complemento a dos? 49. Muestre el resultado de las operaciones siguientes:
exponente en decimal es ____ o modificar otro patrn con bits.
a. mscara a. 11000010 + 00111111 a. x99 AND x99
a.6
b. acarreo b. 00000010 + 00111111 b. x99 AND xOO
b. 7
c. 8 c. flotante c. 11000010 + 11111111 c. x99 AND xFF
d. 9 d. byte d. 00000010 + 11111111 d. xFF AND xFF
Operaciones con bits

50. Muestre el resultado de las operaciones siguientes: 54. Necesita encender (forzar a 1) los cuatro bits en el extre-
a. x990Rx99 mo derecho de un patrn. Muestre la mscara y la opera-
b. x99 OR xOO cin.
c. x990RxFF
55. Necesita complementar los tres bits en el extremo dere-
d. xFFORxFF cho y los dos bits en el extremo izquierdo de un patrn.
51. Muestre el resultado de las operaciones siguientes: Muestre la mscara y la operacin.
a. x99 XOR x99
56. Necesita apagar los tres bits en el extremo izquierdo y
b. x99 XOR xOO encender los dos bits en el extremo derecho de un patrn.
c. x99 XOR xFF Muestre las mscaras y las operaciones.
d. xFF XOR xFF
57. U se la operacin 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 OR (NOT xOO) 58. Use la operacin de desplazamiento para multiplicar un
c. (x99 AND '(33) OR (xOO AND xFF) nmero sin signo por 8.
d. (x99 OR x33) AND (xOO OR xFF)
59. Utilice una combinacin de operaciones lgicas y de des-
53. Necesita apagar (forzar a O) los cuatro bits en el extremo plazamiento para extraer el cuarto y el quinto bits de un
izquierdo de un patrn. Muestre la mscara y la opera- nmero sin signo.
cin.
5.1 Unidad central de procesamiento (CPU) ..

5.1 UNIDAD CENTRAL DE PROCESAMIENTO (CPU)


La unidad central de procesamiento (CPU: central process unit) realiza operaciones con
los datos. Tiene tres partes: una unidad lgica aritmtica (ALU: arithmetic logic unit), una

OrganJ;~acinde
unidad de control y una serie de registros (figura 5.2).

la co."putadora -';<
~=~!RI
~=~!R2
ALU
~=~!R3
'---_---'! 1
Unidad de control
Registros

Figura 5.2 CPU


En este captulo se estudia la organizacin de una computadora independiente. En el cap~
tulo siguiente mostraremos cmo conectar computadoras independientes para formar una red
y cmo conectar redes para formar una red de redes (o internet).
UNIDAD LGICA La unidad lgica aritmtica (ALU) realiza operaciones aritmticas y lgicas.
Las partes que forman una computadora se pueden dividir en tres categoras o subsistemas ARITMTICA (ALU)
generales: el CPU (unidad central de procesamiento), la memoria principal y los subsistemas
de entrada/salida (E/S). Las siguientes tres secciones tratan sobre estos subsistemas y la ma~
nera como se conectan para formar una computadora independiente. La figura 5.1 muestra los Operacin Las operaciones unarias ms simples son el incremento (sumar 1) y el decremento (restar 1).
tres subsistemas de una computadora independiente. aritmtica Las operaciones binarias ms simples son la suma, la resta, la multiplicacin y la divisin. La
unidad de control, como se ver en breve, es responsable de la seleccin de una de estas ope-
raciones.

Operacin lgica La operacin unaria lgica ms simple es la operacin NOT. Las operaciones binarias lgi-
-----------------------------------~ ,,

.. ====
cas ms simples son AND, OR YXOR. Estudiamos estas operaciones en el captulo 4. La uni-
CPU
,,,
Memoria dad de control es responsable de la seleccin 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 operacin del CPU. Algunos de estos
,,
registros estn en la figura 5'.2.
I
, ., .. I
,,
,,
I I ?/<\ I
,,,
,, Registros de datos En el pasado, las computadoras slo tenan un registro para alojar por turnos uno de los da-
,
,,, ef) ,,, tos de entrada (el otro dato de entrada venia 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 ms 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, slo mostramos tres registros generales: dos para entrada de datos
Hardware de computadora
y uno para salida de datos (registros RI, R2 Y R3) en la figura 5.2.
Figura 5.1 Hardware de computadora
Registro Hoy da, las computadoras almacenan en la memoria no slo datos sino tambin el programa
de instruccin correspondiente. El CPU es responsable de buscar las instrucciones, una por una, desde la
memoria, almacenarlas en el registro de instrucciones (registro 1 en la figura 5.2), interpre-
tarlas y ejecutarlas. Este tema se estudiar en una seccin posterior.
5.2 Memoria principal ..
.. Organizacin de la computadora

Contador Otro registro comn en el CPU es el contador de programa (registro PC en la figura 5.2).
de programa El contador de programa hace un seguimiento de la instruccin que se ejecuta actualmente.
Despus de la ejecucin de la instruccin, el contador se incrementa para apuntar a la direc-
cin de la siguiente instruccin en la memoria.
0000000000000000 01111001
0000000000000001 10010100

UNIDAD El tercer componente de cualquier CPU es la unidad de control. La unidad de control es co- 0000000000000010 lOOOOIlOO ..... .
DE CONTROl.. mo la parte del cerebro humano que controla la operacin de cada parte del cuerpo. El con-
trol se logra a travs de lneas de control que pueden estar activas o inactivas. Por ejemplo,
una ALU simple necesita realizar tal vez diez operaciones diferentes. Para especificar estas
operaciones se necesitan cuatro lneas de control desde la unidad de control al ALU. Cuatro
lneas de control pueden defInir 16 situaciones diferentes (24 ), diez de las cuales pueden usar-
se para operaciones aritmticas y lgicas. El resto puede utilizarse para otros propsitos. Pue-
de designar una linea de control inactiva como O y una lnea de control activa como 1; los
estados de las lneas de control pueden designarse como 0000, 0001, 0010 ... 1111. Se puede
1111111111111101
definir 0000 (todas las lneas de control inactivas) para denotar ninguna operacin, 0001 pa-
ra denotar incremento, 0010 para denotar decremento y as por el estilo. 1111111111111110

Memoria

5.2 MEMORIA PRINCIPAL Figura 5.3 Memoria principal

La memoria principal es otro subsistema en una computadora (figura 5.3). Es una coleccin
de localidades de almacenamiento, cada una con un identificador nico conocido como direc- Direcciones como Puesto que las computadoras operan mediante el almacenamiento de nmeros como patrones
cin. Los datos se transfieren hacia y desde la memoria en grupos de bits llamados palabras. patrones de bits de bits, la direccin en s misma tambin se representa como un patrn de bits. As que si una
computadora tiene 64 kilobytes (2 16) de memoria con un tamao de palabra de 1 byte, enton-
Una palabra puede ser un grupo de 8 bits, 16 bits, 32 bits o en ocasiones 64 bits. Si la pala-
bra es de ocho bits, se hace referencia a ella como un byte. El trmino byte es tan comn en ces para definir una direccin, se necesita un patrn de 16 bits. Recuerde del captulo 3 que las
direcciones pueden representarse como enteros sin signo (usted no tiene direcciones negativas).
las ciencias de la computacin, que a veces se hace referencia a una palabra de 16 bits como
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 direccin 0000000000000000 (di-
reccin O) y la ltima locacin se refiere como una direccin 1111111111111111 (direccin
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 tamao de log2 N bits para referirse a cada localidad de memoria.
ESPACIO DE
DIRECCIONAMIENTO gramadores utilizan un nombre para identificar una palabra (o una coleccin de palabras), en
el nivel. del hardware cada palabra se identifica por una direccin. El nmero total de loca-
lidades nicas identificables en la memoria se llama espacio de direccionamiento. Por ejem-
Las direcciones de memoria se defmen usando enteros binarios sin signo.
plo, una memoria con 64 kilobytes y un tamao de palabra de un byte tienen un espacio de
direccionamiento que vara de O a 65535.
La tabla 5.1 muestra las unidades usadas para referirse a la memoria. Observe que la tenni-
nologa es engaosa; aproxima el nmero de bytes en potencias de 10, pero el nmero 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. Cuntos bits se necesitan para
asignar una direccin a cualquier byte individual en la memoria?
Unidad Nmero exc,to,' rl:e bytes Aproximacin
kilobyte 10
2 (1024) bytes 103 bytes SOLUCIN

megabyte 220 (1048576) bytes 106 bytes El espacio de direccionamiento de memoria es 32 MB o 225 (25 X 220). Esto significa que
se necesitan log2 225 o 25 bits para asignar una direccin a cada byte. lIlI
gigabyte 2 30 (1 073741824) bytes 109 bytes
40 12
terabyte 2 (1 024) bytes 10 bytes EJEMPLO 2
petabyte 250 (1024) bytes 10 15
bytes Una computadora tiene 128 ME de memoria. Cada palabra en esta computadora tiene
exabyte 260 (1024) bytes 10 18 bytes ocho bytes. Cuntos bits se necesitan para asignar una direccin a cualquier palabra in-
dividual en la memoria?
Tabla 5.1 Unidades de memoria
.. Organizacin de la computadora
5.2 Memoria principal ..

SOLUCIN
JERARqUA Los usuarios necesitan computadoras con mucha memoria, especialmente con memoria q~e
El espacio de direccionamiento de memoria es 128 ME, 10 cual significa 2 27 Sin embargo, DE LA MEMORIA sea muy rpida y muy barata. No siempre es posible satisfacer esta de~anda. La ~~mona
3
cada palabra es de ocho (2 ) bytes, lo cual significa que usted tiene 224 palabras. Esto sig- muy rpida por lo general no es barata. Se requiere hacer un compro~so,. La solUClOn son
24
nifica que se necesitan log2 2 , o 24 bits, para asignar una direccin a cada palabra. 11 niveles jerrquicos de memoria (figura 5.4). La jerarqua se basa en lo SIgUIente:

TIPOS DE MEMORIA Hay dos tipos de memoria disponibles: RAM y ROM.


Velocidad muy rpid~(registros)

RAM La memoria de acceso aleatorio (RAM: random access memory) constituye la mayor par-
te de la memoria principal en una computadora. El trmino es confuso debido a que tambin
se puede tener acceso a la ROM en fanna aleatoria. Lo que distingue a la RAM de la ROM
es que el usuario puede leer de y escribir en la RAM. El usuario puede escribir algo en la Velocd~d;~pida (memoria principal)
RAM y posterionnente borrarlo simplemente al sohrescribirlo. Otra caracterstica de la RAM
es que es voltil; la nfo1TIIacin (programa o datos) se borra si el sistema se apaga. En otras
palabras, toda la informacin en la RAM se borra si usted apaga la computadora o si hay un
Figura 5.4 Jerarqua de la memoria
apagn. La tecnologa de la RAM se divide en dos categoras generales: SRAM y DRAM.

11 Utilice una cantidad muy pequea de memoria de alta velocidad cuando la velocidad sea
SRAM La tecnologa de RAM esttica (SRAM: slaUe RAM) utiliza compuertas flip-flap crucial. Los registros dentro del CPU son de este tipo.
(compuertas con dos estados, O y 1) para almacenar datos. Las compuertas alojan su estado
(O o 1), lo cual significa que los datos se almacenan mientras haya suministro de corriente; 11 Utilice una cantidad moderada de memoria de velocidad media para almacenar datos a
no hay necesidad de refrescar. La SRAM es rpida pero costosa. los cuales se accede con frecuencia. La memoria cach, que se analiza enseguida, es de
este tipo.
DRAM La tecnologa de RAM dinmica (DRAM: dynamic RAM) utiliza capacitares. Si II!II Utilice una gran cantidad de memoria de baja velocidad para datos a los cuales no se a-
el capacitor est cargado, el estado es 1; si est descargado el estado es O. 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
peridicamente. Las DRAM son lentas pero econmicas.
MEMORIA CACH La memoria cach es ms rpida que la memoria principal pero ms lenta que el CPU y los
ROM El contenido de la memoria de slo lectura (ROM: read-only memory) es escrito por el fa- registros dentro del CPU. La memoria cach, la cual por lo general es pequea en tamao, se
bricante; el usuano puede leer la ROM pero no escribir en ella Su ventaja es que no es vol- coloca entre el CPU y la memoria principal (ligura 5.5).
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. CPU

PROM Una variacin de la ROM es la memoria de slo lectura programable (PROM:


=
=
=
programmable read-only memory). Este tipo de memoria est en blanco cuando la computa- =
1-_'/0:1
dora se empaca. El usuario de la computadora, con algn equipo especial, puede almacenar
programas en ella. Cuando esto sucede, esta memoria se comporta como la ROM y no pue-
de sobrescribirse. Esto permite que el usuario de la computadora almacene programas espe- Memoria
cficos en la PROM.
Figura 5.5 Cach
EPROM Una variacin de la PROM es la memoria de slo lectura programable y borra-
ble (EPROM: erasable programmable read-only memory). El usuario puede programar esta La memoria cach contiene en cualquier momento una copia de una porcin de la memo-
memoria, pero es posible borrarla con un dispositivo especial que utiliza luz ultravioleta. Pa- ria principal. Cuando el CPU necesita acceder a una palabra en la memoria principal, sigue
ra borrar la memoria EPROM se requiere quitarla fsicamente y volver a instalarla. este procedimiento:

1. El CPU revisa la cach.


EEPROM Una variacin de la EPROM es la memoria de slo lectura programable y bo- 2. Si la palabra est ah, copia la palabra; si no, el CPU accede a la memoria principal y
rrable electrnicamente (EEPROM: electronically erasable programmable read-only me- copia un bloque de memoria comenzando con la palabra deseada. El bloque reempla-
mory). Esta memoria puede programarse y borrarse usando impulsos electrnicos sin quitarla za el contenido previo de la memoria cach.
fsicamente de la computadora.
3. El CPU accede a la cach y copia la palabra.
.. Organizacin de la computadora 5.3 Entrada/Salida ..

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 Cabeza de
lectura/escritura
copian a la cach. Puesto que es muy probable que el CPU, en su ciclo siguiente, necesite ob-
tener acceso a las palabras que siguen a la primera palabra, la existencia de la cach acelera
e
i
Disco o
el procesamiento. n
Tal vez ellectOI se pregunte por qu la memoria cach es tan eficiente a pesar de su tama-
l' o pequeo. La respuesta est en la regla 80-20. Se ha observado que la mayora de las com-
t
r
putadoras por lo general invierte el 80 por ciento del tiempo en obtener acceso slo al 20 por o
ciento de los datos. En otras palabras, se tiene acceso a los mismos datos una y otra vez. La 1
il memoria cach, con su gran velocidad, puede alojar este 20 por ciento para hacer que el ac- a
I ceso sea ms rpido al menos el 80 por ciento del tiempo. d
1'1 o
r
Cabeza de
5.3 ENTRADA/SALIDA lectura/escritura

El tercer subsistema en una computadora es la coleccin de dispositivos conocidos como el Figura 5.6 Distribucin fsica de un disco magntico
subsistema de entrada/salida (E/S). Este subsistema pennite 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 categoras generales: dispositivos
de almacenamiento y dispositivos que no son de almacenamiento.

DISPOSITIVOS Los dispositivos que no son de almacenamiento penniten al CPU o a la memoria comuni-
QUE NO SON DE carse con el mundo exterior, pero no pueden almacenar informacin.
ALMACENAMIENTO

Teclado y monitor 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 cdigo
como ASen (vase el apndice 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 Organizacin de la superficie de un disco
vez directamente en una computadora a menos que alguien lo teclee o 10 digitalice en un es-
cner.

DISPOSITIVOS DE Los dispositivos de abnacenamiento, aun cuando se clasifican como dispositivos de entra- !II Organizacin de la superficie. Para organizar los datos almacenados en el disco, cada
ALMACENAMIENTO da/salida, pueden almacenar grandes cantidades de informacin que se recuperar 1 en un mo- superficie se divide en pistas, las cuales a su vez se dividen en sectores (figura 5.7). Las
mento posterior. Son ms econmicos que la memoria principal y su contenido no es voltil pistas estn separadas por un espacio entre pistas y los sectores estn 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 magnticos u pticos.
11 Acceso a datos. Un disco magntico se considera un dispositivo de acceso aleatorio. No
Dispositivos de Este tipo de dispositivos utiliza la magnetizacin para almacenar bits de datos. Si un punto se obstante, un sector es el rea de almacenamiento ms pequea a la que puede tener ac-
almacenamiento magnetiza, representa un 1; s no se magnetiza, representa un O. ceso a la vez. Un bloque de datos puede almacenarse en uno o ms sectores y recuperar-
magnticos se sin necesidad de recuperar el resto de la informacin en el disco.
Disco magntico Un disco magntico es uno o ms discos apilados uno encima de otro.
Los discos se cubren con una pelcula magntica delgada. La informacin se almacena y se
111 Rendimiento. El rendimiento de un disco depende de varios factores; los ms importan-
recupera de la superficie del disco usando una cabeza de lectura/escritura para cada super-
tes son la velocidad de rotacin, el tiempo de bsqueda y el tiempo de transferencia. La
ficie magnetizada del disco. La figura 5.6 muestra el diagrama de un disco magntico.
velocidad de rotacin define qu tan rpido gira el disco. El tiempo de bsqueda de-
fine el tiempo para mover la cabeza de lectura/escritura a la pista deseada donde se al-
1 N. del T. Bajo este contexto, recuperar significa tener acceso al dispositivo o a la localidad de almace- macenan los datos. El tiempo de transferencia define el tiempo para mover los datos
namiento para obtener la infonnacin. del disco al CPU o a la memoria.

.. Organizacin de la computadora
5.3 Entrada/Salida ..

CD-ROM El disco compacto de memoria de slo lectura (eD-ROM: compact disc read-
Carrete de la cinta Carrete receptor on/y memory) utiliza la misma tecnologa que el CD (disco compacto), originalmente desa-

~~
rrollado por Phi11ips y Sony para grabar msica. La nica diferencia entre estas dos
tecnologas es la mejora; una unidad de CD-ROM es ms robusta y busca errores. La figura
5.10 muestra los pasos en la creacin y el uso de un CD-ROM.

Superficie Superficie Superficie Superficie Superficie


(Lalld) (Lalld) (Land) (Land) (Lalld)

Cinta Cinta gUJelO


(Pa)
AgUjero
(Rtt)
AgUjero
(PJt)
Plstico O vidrio

AgUjero
(PIt)
AgUjero
(Pu)

Cabeza de lectura/escritura
a. Disco maestro

Figura 5.8 Configuracin mecnica de una cinta

Pista 1 b. Molde

l
,iBlioquellliBiloque.

r
~ 1I1I1I1!lIlllIllIiill(
Pista 9 Polieacbonato'
Resina
Figura 5.9 Organizacin de la superficie de una cinta

Cinta magntica Una cinta magntica viene en varios tamaos. Un tipo comn es una
cinta de plstico de media pulgada cubierta con una pelcula magntica gruesa. La cinta se Detector lser
Origen del lser
monta en dos carretes y utiliza una cabeza de lectura escritura que lee o escribe la infonna-
cin cuando la cinta pasa por ella. La figura 5.8 muestra la configuracin mecnica de una
cinta magntica. c.CD-ROM

11 Organizacin de la superficie. El ancho de la cinta se divide en nueve pistas. Cada Figura 5.10 Creacin y uso de un CD-ROM
punto de una pista puede almacenar un bit de infonnacin. Nueve puntos verticales
pueden almacenar 8 bits de informacin referente a un byte, ms un bit para deteccin
de error (figura 5.9).
11 Creacin. La tecnologa de CD-ROM utiliza tres pasos para crear un gran nmero de
11 Acceso a datos. Una cinta magntica 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 lser infrarrojo de alta potencia que hace patro-
miento para acceder a cada bloque. Para recuperar un bloque especifico en una cinta, se
necesita pasar por todos los bloques previos. nes de bits en plstico cubierto. El lser traduce el patrn de bits en una secuencia de
agujeros (pits: hoyos) y superficies (lands: superficies sin hoyos). Los agujeros por
11 Rendimiento. Aunque una cinta magntica es ms lenta que un disco magntico, es ms lo general representan los Oy las superficies, los 1. Sin embargo, sta es slo una con-
econmica. Actualmente, la gente usa cintas magnticas para respaldar grandes cantida- vencin y puede ser revertida. Otros esquemas utilizan una transicin (agujero a hoyo
des de informacin.
u hoyo a agujero) para representar el 1 y la falta de transicin para representar el O.

Dispositivos de Los dispositivos de almacenamiento ptico son una nueva tecnologa que utiliza luz (l- b. Desde el disco maestro se hace un molde. En el molde, los agujeros (hoyos) se rem-
almacenamiento ser) para almacenar y recuperar datos. El uso de la tecnologa de almacenamiento ptico su- plazan por protuberancias.
ptico cedi a la invencin del CD (disco compacto), utilizado para almacenar infonnacin de c. Resina de policarbonato fundida se inyecta en el molde para producir los mismos
audio. Hoy da, la misma tecnologa (ligeramente mejorada) se utiliza para alrnacenar infor- agujeros que el disco maestro. Una capa muy delgada de aluminio (que sirve como una
macin en una computadora. Los dispositivos que usan esta tecnologa incluyen CD-ROM, superficie reflectante) se aade al policarbonato. Encima de ste, se aplica una capa
CD-R, CD-RW y DVD.
protectora de laca y se aade una etiqueta. Se repite slo este paso para cada disco.
.. Organizacin de la computadora 5.3 Entrada/Salida ..

II1II Lectura. El CD-ROM se lee usando un rayo lser de baja potenca que proviene de la CD-R Como se mencion, la tecnologa de CD-ROM es justificable slo si el fabricante pue-
unidad de la computadora. El rayo lser 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 travs de una superficie. Se refleja dos veces cuando se encuentra un agujero, una pact disc recordable) permite a los usuarios crear uno o ms 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 creacin de CD-ROM. Es particulannente til para hacer respaldos. El usuario
nen un efecto destructivo debido a que la profundidad del agujero se elige para ser exac- puede escribir slo una vez en este disco, pero puede leerlo varias veces. Por esta razn, 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 ms 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. 11 Creacin. La tecnologa de CD-R utiliza los mismos principios que el CD-ROM para
crear un disco (figura 5.12). A continuacin se listan las diferencias:
11 Formato. La tecnologa de CD-ROM utiliza un formato distinto a un disco magntico
a. No hay disco maestro o molde.
(figura 5.11). El formato de datos en un CD-ROM se basa en:
b. La capa reflectante est hecha de orO en lugar de aluminio.
a. Un bloque de datos de ocho bits se transforma en un smbolo de 14 bits que usa un
c. No hay agujeros (hoyos) fsicos en el policarbonato; los agujeros y las superficies s-
mtodo de correccin de errores llamado cdigo Hamming.
lo se simulan. Para hacerlo, se aade una capa ms de tinte, similar al material utili-
b. Se forma un Frarne de 42 smbolos (14 bits/smbolo).
zado en fotografa, entre la capa reflectante y el policarbonato.
e, Se forma un sector de 96 fIarnes (2352 bytes). d. Un rayo lser de alta potencia, creado por el quemador de CD de la unidad, forma un
l1li Velocidad, Las unidades de CD-ROM vienen en diferentes velocidades. La velocidad punto negro en el tinte (cambiando la composicin qumica) lo cual simula un aguje-
simple se llama 1x, 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.2 muestra las velo-
l1li Lectura, Los CD-R pueden leerse mediante una unidad de CD-ROM o de CD-R. Esto
cidades y la tasa de transferencia de datos correspondiente.
significa que cualquier diferencia debe ser transparente para la unidad. El mismo rayo
lser de baja potencia pasa enfrente de los agujeros simulados y las superficies. Para una
Velocidad ' Tsa de transferencia Aproxilacin superficie, el rayo alcanza la capa reflectante y se refleja. Para un agujero simulado, el
Ix 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
l1li Formato y velocidad, El formato, la capacidad y la velocidad de los CD-R son los mis-
4x 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 111 Aplicacin. Esta tecnologa es muy atractiva para la gente que desea crear y distribuir
12x 1 843 200 bytes por segundo 1.8 ME/s un pequeo nmero de discos; tambin es muy til para hacer depsitos 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 ME/s
32x 4915200 bytes por segundo 4.8 ME/s
40x 6 144 000 bytes por segundo 6 MB/s

Tabla 5,2 Velocidades de CO-ROM

iII Aplicacin. Los gastos involucrados en la creacin de un disco maestro, el molde y el


disco real pueden justificarse si existe un gran nmero de clientes potenciales. Dicho de
otra forma, esta tecnologa es econmica si los discos se producen masivamente. ~~Tinte
Agui~ro simulado
Resina

D Byte (8 bits) de policarbonato

O Smbolo (14 bits)


1I l O IFrame (42 bits)
Detector lser

11
Sector (98 Frames) Origen del lser

Figura 5,11 Formato de CO-ROM Figura 5.12 Creacin de un CO-R


.. Organizacin de la computadora
5.4 Interconexin de subsistemas ..

CD-RW Aunque los CD-R se han vuelto muy populares, slo se puede escribir en ellos una 111 Capacidad. Estas mejoras dan como resultado mayores capacidades (tabla 5.3).
vez. Para sobrescribir materiales previos, existe una nueva tecnologa que Crea un nuevo tipo
de disco llamado disco compacto de reescritura (CD-RW: compact disc rewritable). A ve-
ces se le llama disco ptico borrable. Ca,ra(!terstica Capa(:idad

111 Creacin. La tecnologa de CD-RW utiliza los mismos principios que el CD-ROM pa- Una cara, capa simple 4.7GB
ra crear el disco (figura 5.13). Las diferencias se listan enseguida: Una cara, capa dual 8.5 GB
a. En lugar de tinte la tecnologa utiliza una aleacin de plata, indio, antimonio y telu- Doble cara, capa simple 9.4GB
rio. Esta aleacin tiene dos estados estables: cristalino (transparente) y amorfo (no Doble cara, capa dual 17GB
transparente).
Tabla 5.3 Capacidades de OVO
b. La unidad usa lser de alta potencia para crear agujeros simulados en la aleacin
(cambindola de cristalina a amorfa).
111 Lectura. La unidad utiliza el mismo rayo lser de baja potencia que el CD-ROM y el 111 Compresin. La tecnologa de DVD utiliza el fonnato MPEG (vase el captulo 15) pa-
CD-R para detectar agujeros y zonas. ra compresin. Esto significa que un DVD de una sola cara y capa simple puede alojar
11 Borrado. La unidad Usa un rayo lser de potencia media para cambiar los agujeros a 133 minutos (2 horas y 13 minutos) de video a una alta resolucin. Esto tambin ~nc1u
superficies. El rayo cambia un punto del estado amorfo al estado cristalino. ye tanto audio como subttulos.
111 Formato y velocidad. El formato, la capacidad y la velocidad de los CD-RW son los l1li Aplicacin. 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.
lIiII Aplicacin. Esta tecnologa es definitivamente ms atractiva que la tecnologa de CD-R.
Sin embargo, los CD-R son ms populares por dos razones. Primero, los discos CD-R
vrgenes son menos costosos que los discos CD-RW vrgenes. Segundo, los discos CD-
R son preferibles en casos donde el disco creado no debe cambiar, ya sea de manera ac- 5.4 INTERCONEXIN DE SUBSISTEMAS
cidental o intencional.
Las secciones previas explicaron resumidamente las caractersticas de los tres subsistemas
DVD La industria ha sentido la necesidad de medios de ahnacenamiento digital con una ca- (CPU, memoria principal y E/S) en una computadora independiente. En esta seccin, explo-
pacidad an mayor. La capacidad de un CD-ROM (650 ME) no es suficiente para almacenar ramos cmo se interconectan estos tres subsistemas. La interconexin representa un impor-
informacin de video. El dispositivo de almacenamiento de memoria ptica ms reciente en tante papel porque la infonnacin requiere ser intercambiada entre los tres subsistemas.
el mercado se llama disco verstil digital (DVD: digital versatile disc). Este disco utiliza una CONEXiN DEL CPU
tecnologa similar al CD-ROM pero con las diferencias siguientes: El CPU Y la memoria normalmente se conectan por medio de tres grupos de lneas, cada una
Y LA MEMORIA
1. Los agujeros son ms pequeos: 0.4 micras de dimetro en lugar de 0.8 micras usados llamada bus: bus de datos, bus de direcciones y bus de control (figura 5.14).
en los CD.
2. Las pistas estn ms cercanas entre S.
3. El rayo es un lser rojo en vez de un infrarrojo.
CPU Memoria
4. El DVD usa una de dos capas de grabacin y puede ser de una cara o de doble cara. c-;-
D
W D
D
D
Bus de datos

Bus de direcciones
=
== ,
~
O D
Bus de control --'---

Figura 5.14 Conexin del CPU y la memoria usando tres buses

Cristalino (superficie)
Resina'
de policarbonato Bus de datos El bus de datos est fonnado por varias lneas de control, cada una de las cuales transporta
1 bit a la vez. El nmero de lneas depende del tamao de la palabra. Si la palabra mide 32
bits (4 bytes) en una computadora, se necesita un bus de datos con 32 lneas de modo que to-
dos los 32 bits de una palabra puedan transmitirse al mismo tiempo.
Detector lser
Origen del Bus de direcciones El bus de direcciones permite el acceso a una palabra en particular en la memoria. El nme-
ro de lneas en el bus de direccin depende del espacio de direccionamiento de la memoria.
Si la memoria tiene 2/1 palabras, el bus de direcciones necesita transportar n bits a la vez. Por
Figura 5.13 Creacin de un CO-RW consiguiente, debe tener n lneas.
.. Organizacin de la computadora 5.4 Interconexin de subsistemas ..

Bus de control El bus de control lleva la comunicacin entre el CPU y la memoria. Por ejemplo, debe ha- hasta a 1.5 ME/s. Tiene un bus de cuatro lneas de control; dos de ellos llevan energa elc-
ber un cdigo enviado desde el CPU a la memoria para especificar una operacin de lectura trica al dispositivo. La figura 5.18 muestra la conexin de un USB a los buses.
y escritura. El nmero de lneas utilizadas en el bus de control depende del nmero total de
comandos de control que necesita la computadora. Si una computadora tiene 2m acciones de
control, necesita m lneas para el bus de control porque m bits pueden definir 2m operaciones CPU Memoria
Bus de datos
diferentes. o
CONEXiN DE Los dispositivos E/S no pueden conectarse directamente a los buses que conectan el CPU y
W O
O
O
DISPOSITIVOS E/S la memoria, dado que la naturaleza de los dispositivos EIS es diferente de la naturaleza del
CPU y la memoria. Los dispositivos EIS son dispositivos electromecnicos, magnticos u p-
D EJ

ticos, nrientras que el CPU y la memoria son dispositivos electrnicos. Los dispositivos E/S
operan a una velocidad mucho ms 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 travs de lo que se conoce como controlador de entrada/salida o interfaz. Existe un
controlador especfico para cada dispositivo de entrada/salida (figura 5.15). ID=5 ID=4

,....,
w O
O
O
O
Bus de dato,s
= Figura 5.16
Disco

Controlador SCSI
CD-ROM Escner Cinta

D O
Bus de
direcciones ~
Bus de control~
CPU Memoria

, 8
CPU Memoria
,1I del momtor'Won"."dj
Controlador Control~dor de la Contro!ador Bus de
1
del teclado impresora 1 del drsco "1

~ DO
Figura 5.15 Conexin de los dispositivos E/S a los buses

Controladores Los controladores o interfaces quitan el obstculo entre la naturaleza del dispositivo E/S yel
CPU/memoria. Un controlador puede ser un dispositivo serial o paralelo. Un controlador se-
rial tiene slo una linea de conexin al dispositivo. Un controlador paralelo tiene varias lneas
de conexiones al dispositivo de modo que varios bits pueden transferirse a la vez.
Diversos tipos de controladores estn en uso. Los ms comunes actualmente son SCSI, Fi-
reWire y USE.
Figura 5.17 Controlador FireWire
SCSI La interfaz pequea de sistemas de computadoras (SCSI: small computer system
inteiface) fue desarrollada en un principio para las computadoras Macintosh en 1984. Hoy
da se utiliza en muchos sistemas. Tiene una interfaz paralela con 8, 16 Y 32 lneas. La inter-
faz SCSI ofrece una conexin en cadena margarita como se muestra en la figura 5.16. Ambos
extremos de la cadena deben estar terminados y cada dispositivo debe tener una direccin ni-
CPU
O
Bus de datos ,....,
Memoria

ca (ID objetivo).
W O
O
O
Bus de direcciones
~
FireWire El estndar IEEE 1394 define una interfaz serial comnmente llamada FireWi~ Bus de control ~
D O
re, la cual es una interfaz serial de alta velocidad que transfiere datos en paquetes, logrando
una velocidad de tasa de hasta 50 ME/s. Puede utilizarse para conectar hasta 63 dispositivos I ~

en una cadena o una conexin de rbol (usando slo una lnea). La figura 5.17 muestra la co- r~~~lad9~::I
:F : JJ~",;;:
nexin del dispositivo de entrada/salida a un controlador FireWire. No hay necesidad de ter-
minacin como en el controlador SCSI. 1
USB Un competidor para el controlador FireWire es el controlador bus serial universaJ l Ratn
JI Teclado I
(USB: universal serial bus). USE tambin es un controlador serial utilizado para conectar a
una computadora dispositivos ms lentos como el teclado y el ratn. Puede transferir datos Figura 5.18 Controlador USB
.. Organizacin de la computadora 5.5 Ejecucin de programas ..

DIRECCIONAMIENTO El CPU por lo general utiliza el mismo bus para leer la memoria principal y el dispositivo EfS
DE DISPOSITIVOS DE o escribir datos en ellos. La nica diferencia es la instruccin. Si la instruccin se refiere a CPU Memoria
ENTRADA/SALIDA una palabra en la memoria principal, la transferencia de datos se realiza entre la memoria Bus del sistema O
O
principal y el CPU. Si la instruccin identifica un dispositivo de entrada/salida, la transferen-
cia de datos es entre el dispositivo de entrada/salida y el CPU. Existen dos mtodos para ma- ti O
O
O 101
nejar el direccionamiento de dispositivos E/S: E/S aislado y EIS por mapas de memoria. Read 101
O D Read 64001
64000

E/S aislado En el mtodo E/S aislado, las instrucciones utilizadas para la memoria de lectura/escritura
de la memoria son totalmente diferentes de las instrucciones de lectura/escritura usadas pa-
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 direccin. Las
direcciones de entrada/salida pueden traslaparse con las direcciones de memoria sin ningu-
na ambigedad debido a que la instruccin en s misma es diferente. Por ejemplo, el CPU Controlador
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 confusin debido a que el co. Figura 5.20 Direccionamiento de E/S por mapas de memoria
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).

5.5 EJECUCiN DE PROGRAMAS


CPU Memoria En la actualidad, las computadoras de uso general utilizan una serie de instrucciones llama-
o da programa para procesar los datos. Una computadora ejecuta el programa para crear datos

~~~~~~~~~~~~j
de salida a partir de los datos de entrada. Tanto el programa como los datos se almacenan en
101 la memoria,
Read 101

65535
CICLO DE MQUINA El CPU utiliza ciclos de mquina 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
103 (fetch), decodificar (decode) y ejecutar (execute) (figura 5.21).

Controlador
("_lni""'rliO_.',,,'
Figura 5.19 Direccionamiento de E/S aislado

E/S por mapas En el mtodo 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, slo existe una instruccin Read. Si la direccin define una palabra desde la
memoria, los datos se leen desde esa palabra. Si la direccin define un registro de un disposi-
tivo de entrada/salida, los datos se leen desde ese registro, La ventaja de la configuracin por
mapas de memoria es un pequeo nmero 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 propsito. 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 de un ciclo
Organizacin de la computadora 5,5 Ejecucin de programas ..

Buscar y traer En el paso buscar y traer, la unidad de control ordena al sistema copiar la siguiente instruc-
cin en el registro de instruccin en el CPU. La direccin de la instruccin a ser copiada se
mantiene en el registro del contador del programa. Despus de copiar, el contador del progra- .14
I Rl 070
Rl 07( ,
ma se incrementa para referirse a la siguiente instruccin en la memoria. 071
Load 200 Rl
Load 2m R2 07 , Load 200 Rl
Load 201 R2
I R2 072 "AddRIR2R3 -10 R2 072 AddRl R2 R3
073 Slme 202,R3 073 Sto[e202 R3
I R3 R3

Decodificar Cuando la instruccin est en el registro de instruccin, la unidad de control la decodifica. El Load 200Rl I1 200
'+14" :;>&2 Lom::l 201 R2 1 21~

+14i<:'&;

(decode) resultado de este paso de decodificacin es cdigo binario para algunas operaciones que rea-
Ipc
20 1
202
-10
'" 072 ,<X' ,;':-:1 PC
20 I

20?-
10"

lizar el sistema. ..9\\



a. Despus de la primera instruccin b. Despus de la segunda instruccin
Ejecutar (execute) Despus de que se decodifica la instruccin, la unidad de control enva la orden de la tarea a
un componente en el CPU. Por ejemplo, la unidad de control puede indicar al sistema que
cargue (lea) un elemento de datos de la memoria, o el CPU puede indicar a la ALU que su- I .'4 I Rl 070 Load 200 Rl
Load 20l R2
Rl 070
07 ,
me el contenido de dos registros de entrada y coloque el resultado en un registro de salida.
ste es el paso ejecutar.
I ,:,'
I R2 07 1
072
073
AddRJ R2 R3
-,0 R2 07'
07 3
-
I I R3 Store'202 R3
R3

;'.j.4'

I AddRl R2 R3
I1 , 200

.'4 :
1 200
,
f!1
20 10 20

UN EJEMPLO DE Veamos una operacin muy simple como la suma de dos enteros. Una computadora con una
Ipc 202
~~~I:~ PC -
CICLO DE MQUINA 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 ejecucin del pro-
073
""

grama; el resultado estar en la memoria despus de la ejecucin del programa. c. Despus de la tercera instruccin d. Despus de la cuarta instruccin
Aunque todo se representa mediante patrones de bits, por simplicidad suponga que los n-
meros y las direcciones estn en decimales. Tambin suponga que las instrucciones estn 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 despus de cada ciclo
lidades 200 y 201. Los datos de salida se almacenarn en la localidad de memoria 202.
La figura 5.22 muestra la memoria y el CPU antes de la ejecucin del programa. R1, R2
Primera operacin En la primera operacin (Load 200 RI), la mquina pasa por los tres pasos de buscar y traer,
Y R3 son registros generales. R1 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 1 es el registro de instruccin 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 R1.

Segunda operacin En la segunda operacin (Load 201 R2), la mquina 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 operacin En la tercera operacin (Add Rl R2 R3), la mquina pasa por los tres pasos de buscar y traer,
decodificar y ejecutar para sumar los datos en Rl y R2, Y almacenar el resultado en R3.
,,,- -
R1 070
071 Cuarta operacin En la cuarta operacin (Store 202 R3), la mquina pasa por los tres pasos de buscar y traer, de-

- ,
1- - -
R2 codificar y ejecutar para almacenar el resultado de la operacin en la localidad de memoria 202.
'8 , L __
072
073
o=
R3
,
"'" , L __
1 OPERACiN DE Existe la necesidad de comandos para transferir datos desde los dispositivos E/S al CPU y la

'"i!<l= , memoria. Debido a que los dispositivos de entrada/salida operan a velocidades mucho ms
200
~
201
ENTRADA/SALIDA
lentas que el CPU, la operacin del CPU debe sincronizarse de alguna manera con el dispo-
PC 202
Unidad de control sitivo de entrada/salida. Se han ideado tres mtodos para esta sincronizacin: 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 mtodo de E/S programada, la sincronizacin 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
Figura 5.22 Contenido de la memoria y el registro antes de la ejecucin una instruccin en el programa. Cuando el CPU encuentra una instruccin E/S, no hace na-
.. Organizacin de la computadora 5.5 Ejecucin de programas ..

da ms hasta que la transferencia est completa. El CPU revisa constantemente el estado de


Instruccin previa
la unidad de E/S; si el dispositivo est listo para transferir, los datos se transfieren al CPU. Si
el dispositivo no est listo, el CPU contina revisando el estado hasta que el dispositivo EIS Instruccin de E/S

est listo (figura 5.24). El gran prob1emaaqu es que el tiempo del CPU se gasta en la revi
M".n.,hh, para No
sin del estado del dispositivo E/S para cada unidad de datos a ser transferida. Observe que transferir?
los datos se transfieren a la memoria despus de la operacin de entrada; los datos se trans-
fieren desde la memoria antes de la operacin de salida.

Instruccin previa

-----,

Ms palai?;Ills ,para No
transfet;i-;:'r Interrupcin

---- . . . . . . . . . . . . . ~~~~

Siguiente instmccin

Figura 5.25 E/S manejada por interrupciones

______ ... ...,...=..=_=__=__ =__ ,..J_


...... "
CPU Memoria
r==
Siguiente instruccin
w ==
Figura 5.24 E/S programada O
Transferencia del bloque
=
~
de datos (5)

E/S manejada En el mtodo de E/S manejada por interrupciones, el CPU infonna al dispositivo E/S que
va a ocurrir una transferencia, pero no prueba el estado del dispositivo E/S de manera conti-
por interrupciones
nua. El dispositivo E/S infonna (interrumpe) al CPU cuando est listo. Durante este tiempo,
el CPU puede hacer otros trabajos como ejecutar otros programas o transferir datos desde o
hacia otros dispositivos E/S (figura 5.25).
En este mtodo, el tiempo del CPU no se desperdicia. Mientras que el dispositivo E/S len-
Disco
to est terminando una tarea, el CPU puede hacer algo ms. Observe que, al igual que la E/S
programada, este mtodo tambin transfiere datos entre el dispositivo y el CPU. Los datos se
transfieren a la memoria despus de la operacin de entrada; los datos se transfieren desde la Figura 5.26 Conexin DMA al bus general
memoria despus de la operacin de salida.

Acceso directo El tercer mtodo de transferencia de datos es el acceso directo a memoria (D:MA). Este m- lida), la direccin de inicio de la localidad de memoria y el nmero de bytes a ser transferi-
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.
a memoria (DMA)
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 infonna 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 despus de la transferencia a la memoria. La figura use. Despus de la transferencia de datos, directamente entre el nMA y la memoria, el CPU
5.26 muestra la conexin DMA para el bus general. En este mtodo, para una operacin E/S contina su operacin nonnal (figura 5.27). Observe que en este mtodo el CPU queda inac-
el CPU enva un mensaje al DJ\!1A. El mensaje contiene el tipo de transferencia {entrada o sa- tivo durante un breve lapso.

L
.. Organizacin de la computadora
5.8 Resumen ..

Instruccin previa RISC RISC son las siglas en ingls de computadora con conjunto de instrucciones reducidas (re-
duced instruction set computer). La estrategia en que se basa la arquitectura RISC es tener un
mstruccin de E/S
,---------- -----------, conjunto pequeo de instrucciones que realicen un nmero mnimo de operaciones simples.
Las instrucciones complejas se simulan usando un subconjunto de instrucciones simples. Es-
Transferencia de DMA to provoca que la programacin en RISC sea ms difcil y extensa que en el otro diseo, porque
la mayora 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 App1e.

,
5.7 TERMINOS CLAVE
Instruccin
siguiente acceSO directo a memoria (DMA) almacenamiento memoria slo de lecutra programable
I agujero E/S aislado (PROM)
bus EIS manejada por interrupciones memoria de slo lectura (ROM)
Siguiente instruccin bus de datos E/S por mapas de memoria memoria principal
bus de control E/S programada Monitor
Figura 5.27 Entrada/salida de DMA bus de direcciones ejecutar operacin aritmtica
bus serial universal (USB) escribir una vez, leer muchas operacin lgica
buscar y traer (WORM) pista
No obstante, la duracin del tiempo de inactividad es muy corta comparada con otros mto- cabeza de lectura/escritura espacio de direccionamiento patrn de bits
dos; el CPU est inactivo slo durante-la transferencia de datos entre el DMA y la memoria, ciclo de mquina espacio entre pistas RAM dinmica (DRAM)
no cuando el dispositivo prepara los datos. cinta magntica espacio entre sectores RAM esttica (SRAM)
contador de programa FireWire registro
controlador de entrada/salida frame registro de datos
computadora con conjunto de instruc- impresora registro de instrucciones
5.6 DOS ARQUITECTURAS DIFERENTES ciones complejas (CISC) interfaz pequea de sistemas de resina de policarbonato
computadora con conjunto de computadoras (SCSI) sector
El diseo de computadoras ha pasado por muchos cambios durante las ltimas dcadas. Los instrucciones reducidas (RISC) memoria subsistema de entrada/salida (E/S)
dos diseos fundamentales que dominan el mercado son CISC y RISC. Estas dos metodolo- disco compacto de reescritura memoria cach superficie
gas de diseo se analizan brevemente a continuacin. (CD-RW) memoria de acceso aleatorio (RAM) teclado
disco compacto grabable (CD-R) memoria de slo lectura de disco tiempo de bsqueda
disco maestro compacto (CD-ROM) tiempo de transferencia
CISC CISC son las siglas en ingls de computadora con conjunto de instrucciones complejas disco magntico memoria de slo lectura programable unidad central de procesamiento
(complex instruction set computer). La estrategia en que se basa la arquitectura CISC es te- disco verstil digital (DVD) y borrable electrnicamente (CPU)
ner un conjunto grande de instrucciones, incluyendo las complejas. La programacin en
dispositivo de almacenamiento (EEPROM) unidad de control
CISC es ms fcil que en el otro diseo debido a que hay una instruccin para una tarea sim- dispositvo de almacenamiento ptico memoria de slo lectura programable unidad lgica aritmtica (ALU)
ple o compleja. Los programadores no tienen que escribir un conjunto de instrucciones para
dispositivo que no es de y borrable (EPROM) velocidad rotacional
que realicen una tarea compleja.
La complejidad del conjunto de instrucciones hace que el sistema de circuitos del CPU y
la unidad de control sean muy complicadas. Los diseadores de la arquitectura CISC han
ideado una solucin para reducir esta complejidad. La programacin se realiza en dos nive- 5.8 RESUMEN
les. Una instruccin en el lenguaje de mquina no se ejecuta directamente por el CPU. El
CPU ejecuta slo operaciones simples llamadas microoperaciones. Una instruccin comple- Una computadora tiene tres subsistemas: el CPU, la me- 11 La unidad de control supervisa las operaciones en una
ja se transforma en un conjunto de estas operaciones simples y entonces son ejecutadas por moria principal y el subsistema de entrada/salida. computadora.
el CPU. Esto requiere la adicin de una memoria especia1llamada micromemoria que aloja 11 La memoria principal es una coleccin de localidades de
El CPU realiza operaciones en los datos y tiene un ALU,
el conjunto de operaciones para cada instruccin compleja el conjunto de la mquina. El tipo almacenamiento.
una unidad de control y una serie de registros.
de programacin que utiliza microoperaciones se llama microprogramacin. 11 Las direcciones de memoria se definen usando enteros
Una objecin a la arquitectura CISC es la sobrecarga asociada con la microprogramacin El ALU realiza operaciones lgicas y aritmticas. binarios sin signo.
y el acceso a la micromemoria. Sin embargo, los defensores de la arquitectura sostienen que
Los registros son dispositivos de almacenamiento inde- 11 La RAM provee la mayor parte de la memoria en una
esto se compensa por los programas ms pequeos en el nivel de la mquina.
pendientes que alojan los datos temporalmente. Los re- computadora. La SRAM utiliza las compuertas flip-flop
Un ejemplo de la arquitectura CISC puede verse en la serie de procesadores Pentium de- gistros pueden alojar datos e instrucciones, y tambin tradicionales para alojar los datos y la DRAM usa capa-
sarrollada por Inte!.
funcionan como un contador de programa. citores.
5.9 Prctica ..
.. Organizacin de la computadora

Cul es la ventaja del CD-RW sobre el CD-ROM y el 43. Una unidad de control con cinco lneas de control puede
111 El contenido de la ROM viene del fabricante; slo se 11 Un CD-RW es un dispositivo de almacenamiento ptico
CD-R? definir hasta ____ operaciones.
pennite a los usuarios leerla, pero no escribir en ella. en el cual el usuario quema los datos en el disco. Los da-
!II Las computadoras necesitan una memoria de alta velo- tos pueden borrarse y se puede volver a escribir en el 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. lO
para la memoria cach y memoria de baja velocidad pa- c. 16
111 Un DVD es un dispositivo de almacenamiento ptico de 27. Compare y contraste la lectura de los datos en los tres ti-
d. 32
ra la memoria principal. pos de discos compactos.
gran capacidad.
l1li El subsistema de entrada/salida es una coleccin de dis- 44. Una palabra es _ _ _ _ bits.
28. Cmo se borran los datos en un CD-RW?
positivos que permite a una computadora comunicarse 11 Un bus de datos, un bus de direcciones y un bus de con- a. 8
trol conectan el CPU a la memoria. 29. En qu difiere un DVD de un disco compacto?
con el mundo exterior. b. 16
111 Estos dispositivos son ya sea dispositivos de almacena- 30. Cules son las funciones de los tres buses que conectan c. 32
111 Un controlador maneja las operaciones de EIS 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 ms lentos. SCSI,
111 El teclado, el monitor y la impresora son ejemplos de 31. Cul es la funcin de los controladores de dispositivos 45. Si el espacio de direccionamiento de la memoria es 16
FireWire y USB son controladores comunes.
dispositivos que no son de almacenamiento. E/S? ME Y el tamao de palabra es ocho bits, entonces se re-
11 Un disco magntico es un dispositivo de almacenamien- 111 Existen dos mtodos para manejar el direccionamiento 32. Qu es un controlador SCSI? quieren bits para tener acceso a cada palabra.
to formarlo 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. b. 16
34. Qu es el controlador USB?
Al La cinta magntica es un dispositivo de almacenamien- 111 Para ejecutar una instruccin en un programa, el CPU c. 24
to en el cual la cinta se divide en pistas. El acceso a los 35. Compare y contraste los dos mtodos para manejar el di-
primero busca y trae la instruccin, la decodifica y lue- d. 32
datos es secuencial. reccionamiento de dispositivos E/S.
go la ejecuta. 46. Los datos en _ _ _ _ se borran si la computadora se
11 Un CD-ROM es un dispositivo de almacenamiento pti- 36. Cules son los pasos en un ciclo de mquina?
11 Hay tres mtodos para sincronizar el CPU con el dispo- apaga.
co en el cual el fabricante quema los datos en el disco. 37. Compare y contraste los tres mtodos para manejar la
Los datos no pueden borrarse.
sitivo E/S: E/S programada, E/S manejada por interrup- a. RAM
sincronizacin del CPU con los dispositivos E/S.
ciones y DMA. b. ROM
11 Un CD-R es un dispositivo de almacenamiento ptico en 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 111 Los dos diseos para la arquitectura de CPU son CISC tectura RISC. d. unCD-ROM
no pueden borrarse. y RISC.
47. es un tipo de memoria con capacitores que
PREGUNTAS DE OPCiN MLTIPLE necesitan refrescarse peridicamente.
, 39. El ____ es un subsistema de computadora que rea- a. SRAM
5.9 PRACTICA liza operaciones con los datos. b. DRAM
a. CPU c. ROM
PREGUNTAS DE REPASO 14. Comente los niveles de velocidad de la memoria y el ti- b. memoria d. todas las anteriores
1. Cules 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
15. D ejemplos de dispositivos E/S que no sean de almace- d. ninguno de los anteriores tradicionales para alojar datos.
tadora?
namiento. 40. - - - es una localidad de ahnacenamiento indepen-
2. Cules son las partes de un CPU? a. SRAM
16. Cules son las dos clases principales de dispositivos de diente que aloja los datos temporalmente. b. DRAM
3. Cul es la fimcin del ALU?
almacenamiento? a. Un ALU c. ROM
4. Cules son los diferentes tipos de registros? Descnbalos.
17. Describa los componentes fsicos de un disco magntico. b. Un registro d. todas las anteriores
5. Cul es la funcin de la unidad de control? c. Una unidad de control
18. Cmo est organizada la superficie de un disco mag- 49. Hay _ _ _ _ bytes en 16 terabytes.
6. Cul es la diferencia entre una palabra y un byte? ntico? d. Una unidad de cinta
a. i 6
7. Cul es la funcin de la memoria principal? 19. Qu factores afectan el rendimiento de un disco mag- 41. ____ es una unidad que puede sumar dos entradas. b. 240
8. Cmo se relaciona la aproximacin de un megabyte ntico? a. Un ALU C. 244
con el nmero real de bytes? 20. Describa los componentes fsicos de una cinta magntica. b. Un registro d. 256
9. Qu tipo de representacin de nmeros se utiliza para 21. Cmo est organizada la superficie de una cinta mag- c. Una unidad de control 50. La puede programarse Y borrarse usando
representar direcciones de memoria? ntica? d. Una uuidad de cinta impulsos electrnicos, pero puede permanecer en una
10. Cul es la diferencia entre RAM y ROM? 22. Cmo se accede a los datos en una cinta magntica? 42. Un registro en un CPU puede alojar _ _ __ computadora durante el borrado.
11. Cul es la diferencia entre SRAM y DRAM? 23. Mencione cinco tipos de dispositivos de almacenamien- a. ROM
a. datos
12. Comente las diferencias entre PROM, EPROM Y EE- to ptico. b. instrucciones b. PROM
PROM. c. valores del contador de programa c. EPROM
24. Quin escribe los datos en un CD-ROM?, en un
d. todos los anteriores d. EEPROM
13. Cul es el propsito de la memoria cach? CD-R?, en un CD-RW?
.. Organizacin de la computadora 5.9 Prctica ..

51. La ____ es un tipo de memoria en la cual el usua- 59. El es un dispositivo de almacenamiento que Un bus de ____ conecta el CPU y la memoria. 75. En el mtodo para sincronizar la operacin
rio, no el fabricante, almacena programas que no pueden puede sufrir mltiples escrituras y borrados. del CPU con el dispositivo E/S. el dispositivo E/S infor-
a. datos
sobrescribirse. a. CD-ROM b. direcciones ma al CPU cuando est listo para transferir datos.
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
Si el tamao de palabra es 2 bytes, se necesita un bus de c. DMA
d. EEPROM
60. El rea de almacenanriento ms pequea en un disco datos con lneas. d. E/S aislado
52. Los registros del CPU deben tener memoria de _ __ magntico a la cual se puede tener acceso a la vez es a. 2 76. En el mtodo para sincronizar la operacin
a. alta velocidad
b. 4 del CPU con el dispositivo E/S. el CPU est inactivo
b. velocidad media a. pista c. 8 hasta que se termina la operacin de E/S.
c. baja velocidad b. sector d. 16 a. E/S programada
d. cualquiera de las anteriores c. frame
Si la memoria tiene 2 32
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 lneas.
neral consiste de grandes cantidades de memoria de d. E/S aislado
61. Para un disco magntico, el tiempo de es el a. 8
tiempo que le toma a la cabeza de lectura/escritura mo- b. 16 77. En el mtodo para sincronizar la operacin
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. rotacin d. 64 de puede pasarse directamente de un dispositivo E/S a la
c. baja velocidad
b. bsqueda memoria.
d. cualquiera de las anteriores Un bus de control con ocho lneas puede definir
c. transferencia a. E/S programada
54. La memoria contiene una copia de una por- ____ operaciones.
d. localidad b. E/S manejada por interrupciones
cin de la memoria principal. a. 8
62. La resina de policarbonato se utiliza en los _ _ __ b. 16 c. DMA
a. CPU
a. CD-ROM d. E/S aislado
b. cach c. 256
b. CD-R d. 512
c. principal
c. CD-RW EJERCICIOS
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 conexin en cadena para dispositivos E/S. 78. Una computadora tiene 64 MB (megabytes) de memo-
miento. 63. En un , un rayo lser de alta potencia simula a. SCSI ria. Cada palabra mide 4 bytes. Cuntos bits se necesi-
agujeros en una aleacin de plata, indio, antimonio y te- b. FireWire tan para asignar una direccin a cada palabra individual
a. el teclado
lurio. en la memoria?
b. el monitor c. USB
c. la impresora a. CD-ROM d. IDE 79. Cuntos bytes de memoria se necesitan para almacenar
d. todos los anteriores b. CD-R
72. El controlador es un dispositivo serial que co- una pantalla de datos completa si la pantalla se forma de
c. CD-RW
56. Un ____ es un dispositivo de almacenamiento p- necta dispositivos lentos como el teclado y el ratn a la 24 lneas con 80 caracteres en cada lnea? El sistema uti-
d. todos los anteriores
tico. computadora. liza cdigo ASCII. cada carcter ASCII es almacenado
a. CD-ROM 64. En un , un rayo lser de alta potencia simula a. SCSI como un byte.
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 Rl). 1 024 palabras en la memoria y 16 ins-
d. todos los anteriores b. CD-R d. IDE trucciones diferentes (sumar, restar, etc.). Cul es el
c. CD-RW tamao mnimo de una instruccin en bits, si una ins-
57. El es un dispositivo de almacenanriento en el 73. El controlador ____ es una interfaz serial de alta
cual el fabricante escribe informacin en el disco. d. todos los anteriores truccin tpica utiliza el formato add 565 R2?
velocidad que transfiere datos en paquetes.
a. CD-ROM 65. Cul dispositivo de almacenanriento ptico tiene la ma- a. SCSI 81. Si la computadora del ejercicio 80 utiliza el mismo ta-
b. CD-R yor capacidad? b. FireWire mao de palabra para los datos y las instrucciones, cul
c. CD-RW a. CD-ROM c. USB es el tamao para cada registro de datos?
d. todos los anteriores b. CD-R d. IDE
82. Cul es el tamao del registro de instrucciones de la
58. El es un dispositivo de almacenamiento en el c. CD-RW
74. Los tres pasos en la ejecucin de un programa en una computadora del ejercicio 80?
cual el usuario puede escribir informacin slo una vez d. DVD
computadora se realizan en este orden especfico:
en el disco. 66. En un DVD, un rayo ____ lee el disco. 83. Cul es el tamao del contador de programa de la com-
a. CD-ROM putadora del ejercicio 80?
a. lser de alta potencia a. buscar y traer, ejecutar y decodificar
b. CD-R b. infrarrojo 84. Cul es el tamao del bus de datos en el ejercicio 80?
b. decodificar, ejecutar y buscar y traer
c. CD-RW c. lser rojo C. buscar y traer, decodificar y ejecutar 85. Cul es el tamao del bus de direcciones en el ejercicio
d. todos los anteriores d. lser azul d. decodificar, buscar y traer, y ejecutar 80?
Organizacin de la computadora

86. Cul es el tamao nnimo 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 (lO bits). Si la memoria est fonuada por 1000 pa-
do. La memoria tiene 1024 palabras. Si cada controla- labras, a cuntos controladores de cuatro registros se
dor tiene 16 registros, a cuntos controladores se puede puede tener acceso mediante esta computadora?
tener acceso mediante esta computadora?

e es de f~~0;~\
omputiihorJf

En el captulo anterior analizamos la organizacin de una computadora. El anlisis se cen-


tr en la arquitectura de una computadora independiente. Sin embargo, en la actualidad las .
computadoras se conectan con frecuencia para formar una red, y las redes a su vez se conec-
tan para formar un conjunto de redes interconectadas.
En 'este captulo primero definimos una red de computadoras. Luego estudiamos el modelo
OSI que define tericamente cmo deben interactuar entre s los componentes de una red.
Ehsegida analizamos las categoras de redes como LAN, MAN YWAN. Asimismo mostra-
mos cmo conectar redes, mediante dispositivos de conexin, para fonnar un conjunto de
te'~es interconectadas o una interred. Despus analizamos Internet y el conjunto de protoco-
}os TCPIIP que la controla, incluyendo algunas de las aplicaciones en Internet.
.. Redes de computadoras 6.2 Modelo OSI ..

6.1 REDES, GRANDES Y PEQUEAS 7 Aplicacin

Una red de computadoras es una combinacin de sistemas (por ejemplo, una computadora)
conectados mediante un medio de transmisin (por ejemplo, un alambre, un lnea de control
61 Presentacin

o el aire). Una red de computadoras puede abarcar un rea geogrfica pequea, mediana o
grande. En el primer caso. la red es nna red de rea local (LAN: local area network). En el
51 Sesin

segundo, la red es una red de rea metropolitana (MAN: metropolitan aTea network), y en el
tercero se trata de una red de rea amplia (WAN: wide area network). Discutiremos las redes
41 Transporte

LAN, MAN Y WAN ms adelante en este captulo. Estos tres tipos de redes tambin pueden
conectarse por medio de dispositivos de conexin para fonnar un conjunto de redes interco~ 31 Red

nectadas (o interred).
21 Enlace de datos

MODELO En este captulo, usamos con frecuencia dos trminos: modelo y protocolo. Un modelo es la
Fsico
Y PROTOCOLO especificacin establecida por una organizacin de estndares como un estndar para el dise- 1
o de redes. Un protocolo, por otra parte, es un conjunto de reglas que controla la interaccin
de diferentes dispositivos en una red o en un conjunto de redes interconectadas. La seccin si- Figura 6.1 El modelo OSI
guiente presenta la recomendacin OSI como un modelo. Posterionnente, se define TCPIIP
como el conjunto de protocolos oficial de Internet.

Dispositivo Dispositivo
6.2 MODELO OSI A B

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 relacin entre los compo-
~ e : Red ~
~
nentes y la funcin de cada componente. La Interconexin de sistemas abiertos (OSI: Open
Systems Interconnection) es un modelo de stos. El modelo OSI fue diseado por la Organi- m~ rn ~
zacin para la Estandarizacin Internacional (ISO: Intemational Standard Organization). En 7 7
teora, el modelo permite que dos sistemas distintos (por ejemplo, computadoras) se comuni- I
6 6
quen sin importar su arquitectura subyacente.
5 5

El modelo de Interconexin Abierta de Sistemas (OSI) es un modelo terico que 4 4


I
muestra cmo dos sistemas diferentes cualesquiera pueden comunicarse entre s. 3 3

2
SIETE CAPAS El modelo OSI es un marco de referencia de siete capas que da a los diseadores de redes una
idea de la funcionalidad de cada capa independiente pero relacionada. Cada capa tiene un
nombre: fsico (capa 1), de enlace de datos (capa 2). de red (capa 3), de transporte (capa 4). ) .. ?~..........I
de sesin (capa 5), de presentacin (capa 6) y de aplicacin (capa 7) (figura 6.1). El modelo
Medio fsico
OSI no establece que cada dispositivo involucrado en una red debe implementar las siete
capas. U TI dispositivo puede necesitar slo una capa, dos capas, tres capas o todas las capas. Figura 6.2 Flujo de datos en el modelo OSI
El nmero de capas depende de la funcionalidad del dispositivo y de su ubicacin en la red.
La figura 6.2 representa la funcin de las capas cuando un mensaje se enva desde un dis-
positivo A hasta un dispositivo B. Conforme el mensaje viaja de A a B, puede atravesar mu-
chos nodos intennedios (no aparecen en la figura). Estos nodos intermedios por lo general
FUNCIONES Esta seccin describe brevemente las funciones de cada capa en el modelo OSI.
involucran slo las primeras tres capas del modelo OSI.
Como lo muestra la figura, antes de que los datos se enven al medio de transmisin, s- DE LAS CAPAS
tos se desplazan hacia abajo a travs de las siete capas hasta que negan a la capa fsica. En
cada capa se aade infonnacin de control a los datos en fonna de encabezados (headers)-o
caracteres de control (trailers). Los encabezados se aaden a los datos en las capas 7, 6, 5, Capa fsica La capa fsica es responsable de la transmisin de un flujo de bits a travs de un medio fsi-
4, 3 Y 2. Los caracteres de control se aaden en la capa 2. En la mquina 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- seal. Las especificaciones fsicas y mecnicas de los dispositivos fsicos se determinan me-
cia la sptima capa. diante la capa fsica.
.. Redes de computadoras 6.3 Categoras de redes ..

Capa de enlace La capa de enlace de datos organiza los bits en unidades lgicas llamadas bloques de da. descomprime los datos para un mejor rendimiento. Cifra y descifra los datos por razones de
de datos tos iframes)l. Un bloque de datos contiene informacin de la capa de red. La capa de seguridad (vase el captulo 16). Al igual que ocurre con la capa de sesin, actualmente la ma-
de datos aade un encabezado y caracteres de control para deflnir el bloque de datos para yora de las implementaciones no utiliza una capa de presentacin. Esto no significa que las
estaciones receptora o intermedia. En particular, a los datos se aade informacin de funciones definidas para la capa de presentacin no sean necesarias, simplemente significa
cionamiento, por lo general en forma de dos direcciones. Esto define las direcciones de que las redes actuales han asignado estas responsabilidades a otras capas. Por ejemplo, el ci-
estaciones contiguas, una que enva y otra que recibe. Observe que la capa de enlace de frado/descifrado se realiza tanto en la capa de red como en la capa de aplicacin.
tos es responsable slo de la entrega nodo a nodo del bloque de datos (de una estacin
otra). Cuando una estacin recibe un bloque de datos (no destinado para s misma), cambia de aplicacin La capa de aplicacin permite que el usuario, ya sea una persona o software, tenga acceso a
la direccin de origen a su propia direccin y la direccin de destino a la direccin de la la red. Define aplicaciones comunes que pueden implementarse para simplificar el trabajo del
tacin siguiente. La capa de enlace de datos a menudo es responsable del manejo de usuario. Analizaremos algunas de estas aplicaciones ms adelante en este captulo en la sec-
entre dos estaciones contiguas. Los datos redundantes se aaden en los caracteres de cin sobre Internet.
ya sea para detectar errores o para corregirlos.

Capa de red 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 CATEGORAS 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 aade un encabezado a la unidad de datos proveniente de la Ahora que se tiene un modelo para la comunicacin, podemos dividir las redes en tres cate-
capa superior que incluye, entre otras cosas, una direccin de origen y una direccin de desti- goras principales: redes de rea local CLAN), redes de rea metropolitana (MAN) y redes de
no. Estas direcciones comnmente se llaman direcciones lgicas (o, como se ver posterior- rea amplia (WAN) (figura 6.3).
mente en este captulo, direcciones IP) para distinguirlas de las direcciones fsicas. Para la
comunicacin global, una direccin lgica debe ser nica. Note que cuando un paquete se tras-
lada del origen a un destino, la direccin sica (aadida a la capa de enlace de datos) cambia
de estacin a estacin, pero la direccin lgica permanece intacta del origen al destino.
Redes
Capa de transporte 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
todo el mensaje. Un mensaje puede conformarse por uno o ms paquetes. La capa de trans-
porte es responsable de dividir el mensaje en varios paquetes y entregarlos a la capa de red,
la cual enva los paquetes al exterior uno a uno, independientes uno del otro. Algunos paque-
tes pueden llegar desordenados a su destino, mientras que otros pueden perderse en el cami- Figura 6.3 Categoras de redes
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 REA Una red de rea local (LAN) est diseada 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 combinacin de computadoras y dispositivos perifricos (por ejemplo, impresoras)
Capa de sesin La capa de sesin est diseada para controlar el dilogo entre los usuanos. Establece, man- conectados mediante un medio de transmisin (por ejemplo, lnea de control). La figura 6.4
tiene y sincroniza el dilogo entre sistemas que se comunican. Tambin aade lo que se llama muestra tres ejemplos de LAN.
puntos de sincronizacin para respaldar la entrega en caso de un fallo en el sistema o la red. La primera LAN en la figura utiliza una topologa de bus en la cual las computadoras se
Los puntos de sincronizacin dividen un mensaje largo en mensajes ms pequeos y se asegu- conectan a travs de un medio comn llamado bus. En esta configuracin, cuando una esta-
ran de que el receptor reciba y reconozca cada seccin. En este caso, si hay una falla en el sis- cin enva un bloque de datos a otra computadora, todas las computadoras reciben el bloque
tema o la red, no es necesario que el emisor reenve el mensaje completo. El emisor puede de datos y revisan su direccin de destino. Si la direccin de destino en el encabezado del blo-
desplazarse al ltimo punto de sincronizacin y reenviar el mensaje desde ese punto. La ma- que de datos coincide con la direccin fsica de la estacin, el bloque de datos se acepta y los
yora de las implementaciones de red actuales no utiliza una capa de sesin 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 sesin, por lo general se incluyen en la capa de aplicacin. ma importante en este tipo de topologa es la eliminacin del bloque de datos. Una topologa
de bus utiliza terminadores de lnea de control diseados para dar fin electrnicamente a la
Capa de La capa de presentacin se ocupa de la sintaxis (formato) y la semntica (significado) de la seal que reciben. Si los terminadores de lnea de control no estn funcionando, la seal re-
presentacin informacin 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 estacin la recibir una y otra
mas utilizan mtodos de codificacin distintos (por ejemplo, ASCII y Unicode). Comprime Y vez, lo cual es una situacin poco deseable.
La segunda LAN en la figura utiliza una topologa de estrella en la cual las computado-
l N. del traductor. En la literatura de computacin a los bloques de datos tmnbin se les conoce como ras se conectan a travs de un concentrador (hub), un dispositivo que facilita la conexin, o
tramas. un conmutador (switch), un concentrador sofisticado que controla el envo del bloque de da-
la Redes de computadoras 6.4 Dispositivos de conexin ..

a. LAN en bus
Red pblica de una ciudad

b. LAN en estrena

Figura 6.5 MAN

CJ
c. LAN en anillo

Figura 6.4 LAN

tos. Cuando se utiliza un concentrador, la LAN se comporta lgicamente como un bus. El


concentrador slo enva los datos fuera de todas sus interfaces. Cuando se utiliza un conmu-
tador, ste revisa la direccin en el bloque de datos y el bloque se enva hacia fuera slo a tra-
vs de la interfaz del destino. En una topologa de estrella, cada estacin que recibe un bloque
de datos es responsable de quitar el bloque de la red.
La tercera LAN utiliza una topologa de anillo. En esta topologa, cuando una computa-
dora necesita enviar un bloque de datos a otra computadora, la enva a su computadora veci-
na. En sta el bloque se regenera y se enva a la siguiente computadora vecina, repitiendo el
proceso hasta que el bloque llega a su destino final. El destino abre el bloque, copia los datos
y lo elimina del anillo o le aade un reconocimiento para enviarlo de regreso (a travs del ani-
llo) al emisor original. En este ltimo caso, el emisor elimina el bloque de datos ms tarde.
Las LAN instaladas en el pasado se configuraban en cualquiera de las topologas mencio-
nadas; pero en la actualidad la topologa dominante es la de estrella.

REDES DE REA Una red de rea metropolitana (MAN) utiliza servicios proporcionados por una empresa de
METROPOLITANA comunicaciones (proveedor de servicios de red) comn, tal como la compaa telefnica.
(MAN) 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 compaas telefnicas proveen un
servicio de MAN generalizado llamado servicios de datos conmutados mutlimegabit (SMDS:
switched multimegabit data sendces).
6.4 DISPOSITIVOS DE CONEXIN
RED DE REA Una red de rea amplia (WAN) es la conexin de computadoras individuales o LAN distri-
AMPLIA (WAN) buidas en una gran rea (estado, pas, el mundo). Las WAN, al igual que las MAN, estn 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 conexin. La interconexin de redes hace posible la comunicacin global desde un extremo
una persona que usa una lnea telefnica para conectarse a un proveedor de servicios de In- del mundo al otro. Los dispositivos de conexin 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 segn su relacin con las capas del modelo OSI: repetidores, puentes, enru-
compaa telefnica 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
.. Redes de computadoras 6.4 Dispositivos de conexin

red. Los enrutadores y las gateways habitualmente interconectan redes en un conjunto de re- Cuando una red utiliza una topologa de bus, todas las estaciones comparten el medio. En
des (interred) (figura 6.7). otras palabras, cuando una estacin enva un bloque de datos, esta estacin ocupa el bus co-
mn y ninguna otra estacin tiene permitido enviar un bloque de datos (si 10 hace, los dos blo-
ques colisionan). Esto implica una disminucin en el rendimiento. Las estaciones necesitan
esperar a que se libere el bus. Esto es similar a un aeropuerto que slo tiene una pista de ate-

I Dispositivos
de conexin
I rrizaje; cuando un avin utiliza la pista, otro avin listo para despegar debe esperar.
Un puente es un controlador de trfico. Puede dividir un bus grande en segmentos ms pe-
queos de manera que cada segmento sea independiente respecto al trfico. Un puente insta-
I lado entre dos segmentos puede pasar o bloquear el paso de bloques de datos con base en la
I I
I
Dispositivos
de red
I Dispositivos de redes
interconectadas
direccin de destino que tengan los mismos. Si se origina un bloque de datos en un segmen-
to y la direccin de destino est en el mismo segmento, no hay razn para que el bloque pa-
se el puente y viaje por otros segmentos. El puente utiliza una tabla para decidir si el bloque
I I
debe reenviarse a otro segmento. Con un puente, dos o ms pares de estaciones pueden co-
I I I I municarse al mismo tiempo (figura 6.9).
I Repetidores I I Puentes I I Enrutadores I I Gateways I
Figura 6.7 Dispositivos de conexin

REPETIDORES Un repetidor es un dispositivo electrnico que regenera los datos. Extiende la longitud fsi-
o
a. Sin puente
ca de una red. Conforme se transmite una seal, sta puede perder fuerza y un receptor pue-
de interpretar una seal dbil errneamente. Un repetidor puede regenerar una seal y
enviarla al resto de la red. La figura 6.8 muestra una red con y sin repetidor.

b. Con puente
a. Sin repetidor
Figura 6.9 Puente

IJ

Adems de sus deberes de control de trfico, un puente tambin funciona como un repe-
b. Con repetidor
tidor al regenerar el bloque de datos. Como se vio anteriormente, esto significa que un puen-
te opera en la capa fsica, pero debido a que necesita interpretar la direccin incrustada en el
Figura 6.8 Repetidor
bloque de datos para tomar decisiones de filtrado, tambin opera en la capa de enlace de da-
tos del modelo OSI.

Los repetidores operan slo en la capa fsica del modelo OSI. No reconocen las direccio-
nes fsicas ni lgicas. Simplemente regeneran cada seal que reciben. Los repetidores, cuyo
Los puentes operan en las dos primeras capas del modelo OSI.
uso se volvi generalizado cuando la topologa de bus era la dominante, con frecuencia co-
nectaban dos buses para ampliar la longitud de la red.

En aos recientes, la necesidad de un mejor rendimiento ha conducido al diseo de un nuevo


dispositivo llamado conmutador de segunda capa, el cual es simplemente un puente sofisti-
Los repetidores operan en la primera capa del modelo OSI. cado con varias interfaces. Por ejemplo, una red con 20 estaciones puede dividirse en cuatro
segmentos usando un puente de cuatro interfaces. O la misma red puede dividirse en 20 seg-
.. Redes de computadoras 6.5 Internet y TCPjlP ..

mentas (con una estacin por segmento) usando un conmutador de 20 interfaces. En este ca~
so, un conmutador aumenta el rendimiento; una estacin que necesita enviar un bloque de da-
tos los enva directamente al conmutador. Los medios no se comparten; cada estacin Se
conecta directamente al conmutador (figura 6.10).

WAN

--Conmutador

'Enrutador

Figura 6.11 Enrutadores en una interred

Figura 6.10 Conmutador Aplicacin Gateway


Presentacin

EN RUTADO RES Sesin


Los enrutadores son.dispositivos que conectan redes LAN, MAN YWAN. 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 direccin fsica (capa de enlace de datos) del bloque, lill emutador elige la ruta que Red
seguir un paquete con base en la direccin lgica (capa de red) del paquete.
Enlace de datos
Fsico

Los enruadores operan en las primeras tres capas del modelo OSI. Figura 6.12 Dispositivos de conexin y el modelo OSI

En tanto que un puente puede conectar dos segmentos de un LAN o dos LAN pertenecien- MODELO OSI La figura 6.12 presenta la relacin entre los dispositivos de conexin y el modelo OSI.
tes a la misma organizacin, un enrutador puede conectar dos redes independientes: una LAN
Y DISPOSITIVOS
a una WAN, una LAN a una MAN, una WAN a otra WAN, y as sucesivamente. El resultado
es un conjunto de redes interconectadas (o interred). Usted ver en breve que Internet (la ni-
DE CONEXiN
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.

6.5 INTER.NET Y TCPIP


GATEWAYS Comnmente, una gateway es un dispositivo de conexin que se desempea como converti-
dor de protocolo. Permite conectar entre s dos redes, cada una con un conjunto diferente de Como se mencion antes, usted puede conectar LAN, MAN YWAN individuales (usando en-
protocolos para las siete capas OSI, y la comunicacin entre ellas. Por lo general, una gate- rutadores o gateways) para formar una red de redes, llamada conjunto de redes interconec-
way es una computadora instalada con el software necesario. La gateway entiende los proto- tadas o interred. En la actualidad, existen muchas interredes privadas y pblicas, la ms
colos usados por cada red conectada y por tanto es capaz de traducir de uno a otro. Por famosa de las cuales es Internet (con 1 mayscula). Originalmente, Internet era un conjunto
ejemplo, una gateway puede conectar una red usando el protocolo AppleTalk a una red que de redes interconectadas de investigacin diseado para conectar varias redes heterogneas
utiliza el protocolo Novell Netware. distintas. Estaba auspiciada por la Agencia de Proyectos de Investigacin Avanzada para la
Hoy da, no obstante, los trminos gateway y enrutador se utilizan de manera indistinta. Defensa (DARPA: DeJense Advanced Research Projects Agency). Sin embargo. hoy da In-
Algunas personas se refieren a la gateway como un emutador y otras se refieren a un enruta- ternet es un conjunto de redes interconectadas que conecta millones de computadoras en to-
dor como gateway. La distincin entre los dos trminos est desapareciendo. do e1mundo.
.. Redes de computadoras
6.5 Internet y TCP/IP 1m
El protocolo de control de transmisin/protocolo Internet (TCPIIP) es un conjunto o
una pIla de protocolos que controla a Internet de manera oficial. TCPIIP se desarroll antes Patrn de bits
que el modelo OSI. Por lo tanto, las capas en el protocolo TCPIIP no coinciden exactamente"
con las del modelo OSI (figura 6.13). 10000001 00001010 00000111 00011110
1 I
I
I I rl
IAplicacin j 129.10.7.30
IPresentacin

BBBEJ ]
1 Figura 6.14
Notacin con punto decimal

Direcciones IP en notacin con punto decimal


I Trnnsporte Tep 11 UDP

Red En la capa de transporte, TCPIIP define dos protocolos: el protocolo de control de transmi~
DE
<

LAII'A
sin (TCP) y el protocolo de datagrama de usuario (UDP: user datagram protocol). El
IP protocolo de datagrama de usuario es el ms simple de los dos. Es un protocolo de capa de
transporte de punto a punto que proporciona slo las necesidades bsicas para la entrega pun-

IEnlace de datos,>' \' to a punto de una transmisin.


El Protocolo de Control de Transmisin provee servicios completos de capa de transporte
Otros protocolos para las aplicaciones. TCP es un protocolo de transporte confiable. Divide un mensaje en una
secuencia de segmentos que se numeran en fonna secuencial. Si un segmento se pierde, se
enva de nuevo. Si un segmento se recibe fuera de orden, se ordena con la ayuda del meca-
nismo de numeracin en secuencia.
Figura 6.13 TCP /IP y el modelo OSI
La capa de aplicacin TCPIIP es equivalente a las capas de sesin, presentacin y aplicacin
del modelo OSI combinados. Esto significa que todas las funcionalidades asociadas con estas
tres capas se manejan en una sola capa, la capa de aplicacin.
CAPA FSICA Y DE En las capas fsicas y de enlace de datos, Tep/IP no define ningn protocolo especfico. So-
La comunicacin en Internet utiliza el modelo cliente-servidor (figura 6.15). Un cliente,
ENLACE DE DATOS porta todos los protocolos estndar y propietarios.
un programa de aplicacin que se ejecuta en una mquina local, solicita un servicio de un ser-
vidor, un programa de aplicacin que se ejecuta en una mquina remota. Por lo general, el
programa servidor est siempre en ejecucin y el programa cliente slo se ejecuta cuando es
CAPA DE RED En la capa de red (o ms precisamente, en la capa de redes interconectadas o capa de red), necesario.
TCPIIP soporta el protocolo Internet (IP). IP es un protocolo poco formal y un servicio de
entrega del mejor esfuerzo. El tnnino mejor esfuerzo significa que IP no proporciona verifi-
cacin o seguimiento de errores. La unidad de datos en la capa IP se conoce como datagra~
ma ~, un paque~e independiente que viaja del origen al destino. Datagramas que pertenecen
al nusmo mensaje o a mensajes distintos pueden viajar a lo largo de diferentes rutas y pue-
d~~ ~legar sin un orden o duplicados. IP no sigue la pista de las rutas y no cuenta con la po- Cliente Servidor
sIbIlidad para reordenar los datagramas una vez que stos llegan.
5 11 11 S

4 4

3 J
Direccionamiento TCPIIP requiere que cada computadora conectada a Internet se identifique mediante una di-
1-2
1-2
reccin internacional nica. Esta direccin a veces se conoce como direccin Internet o di-
reccin IP.
Internet
~ada direccin 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: notacin con punto decimal. La figura 6.14 mues-
tra el patrn de bits y el fonnato decimal de una posible direccin. Figura 6.15 Modelo cliente-servidor
.. Redes de computadoras 6.5 Internet Y TCP/IP ..

Protocolo de El protocolo estndar en Internet para transferir un archivo desde una mquina a otra es
Equipo
transferencia protocolo de transferencia de archivos (FTP: file transfer protocol)o FTP se dise de escritorio
de archivos (FTP) responder a los problemas tradicionales relativos a la transferencia de archivos. Uno de
problemas son los diferentes sistemas de codificacin en uso; una mquina puede utilizar
en 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 informacin de control (comandos y respuestas). La co- Cliente
nexin de control est presente durante toda la sesin FTP; la conexin de datos est presen- SMTP
te slo cuando hay datos a transferir (figura 6.16).
Internet

Figura 6.17 SMTP


Cliente Servidor

5 1 1 5

1-4 T Control
T 1-4
Parte local l@ll__ .:.N:.:o:::m:::h:.:,.:..e:.:d:.:e:.:d:.:o.:.m.:.i_n_io_ _

Jo Internet )
...".". Datos Figura 6.18 Direcciones de correo electrnico
Figura 6.16 FTP

Protocolo simple Por mucho, la aplicacin ms popular en Internet de hoyes el correo electrnico (email). Pero no existe un programa cliente-servidor en Internet llamado "crear un programa", "com-
de transferencia de protocolo que soporta el correo electrnico en Internet es el protocolo simple de transfe- pilar un programa" o "ejecutar un programa". Actualmente hay muchas tareas diferentes que
rencia de correo (SMTP: simplemail transfer protocol) (figura 6.17). El servicio de correo
correo (SMTP) un usuario necesita realizar en una computadora remota. No hay manera de tener un progra-
electrnico por naturaleza es diferente de otras aplicaciones. Para enviar y recibir correo elec- ma cliente-servidor especfico para cada tarea.
trnico, el usuario debe instalar software SMTP tanto cliente como servidor en su computa- La solucin es un programa cliente-servidor de uso general que permita a un usuario eje-
dora. Adems, SMTP siempre debe ejecutarse para recibir correo electrnico. Una mquina cutar un programa de aplicacin en una computadora remota como si el usuario estuviera ac-
apagada no recibir correo electrnico. 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: post office protocoT). El computadoras y accede directamente a una computadora, se le llama inicio de sesin locaL
usuario an utiliza el cliente SMTP para enviar mensajes por correo electrnico. 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 sesin remoto.
tadora (la cual siempre est en ejecucin). El servidor SMTP se ejecuta en esta computadora TELNET (TEnninaL NETwork: red terminal) es un programa cliente-servidor general en
y recibe los mensajes y los almacena en el buzn de correo del usuario (un archivo especial). Internet que permite el inicio de sesin remoto. TELNET permite el establecimiento de una
Cuando el usuario quiere recuperar el correo electrnico, utiliza el cliente POP para entrar en conexin desde un sistema local a un sistema remoto de tal manera que la tenmnallocal 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 electrnico. Normalmente hay una interraz de usuario llamada agente de
usuario (VA: 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 buzn de correo del usuario, donde to- Cliente Servidor
do el correo recibido por un usuario se almacena para su recuperacin posterior por el agen- TELNET TELNET Programas de aplicacin
te de usuario. El nombre de dominio define la computadora (a menudo de manera simblica)
que sirve como servidor SMIT Temilnal 1 1 11 .. I
TELNET FTP y SMTP proporcionan servicios especficos para el usuario. FIP se utiliza para transfe-
rir archivos; SMTP se usa para enviar correo electrnico. Existen otros servicios que necesi-
ta un usuario en Internet. Por ejemplo, los estudiantes que toman un curso de programacin
necesitan tener acceso a una de las computadoras del laboratorio de la universidad para hacer
L Le :rJ L...........---J
Internet

la programacin. Necesitan, adems, crear un programa, compilarlo y ejecutarlo (vase el ca~ Figura 6.19 TElNET
ptulo 9). Todas estas tareas deben realizarse en forma remota.
.. Redes de computadoras 6.5 Internet y TCP /IP 111
Protocolo de El protocolo de transferencia de hipertexto (HTTP: hypertext transfer protocoT) es un pro-
transferencia grama cliente-servidor que se utiliza para tener acceso a y transferir documentos en el World Desde el teclado
de hipertexto Wide Web. Aunque transfiere los datos en forma de texto simple, hipertexto, audio, video y
as por el estilo, est diseado particularmente para transferir documentos de hipertexto (va~
(HTTP)'
se la seccin siguiente). L-~c~on~tr~o~l=ad~o=r__~1 ~
Un cliente HTTP enva una solicitud al servidor. El servidor enva la respuesta al cliente,
Los comandos del cliente al servidor se incrustan en un mensaje tipo carta. El contenido del Al monitor
archivo solicitado u otra informacin se incrusta en un mensaje de respuesta tipo carta.
Mtodos (HTTP... )
Localizador uniforme de recursos (URl) HITP utiliza un tipo especial de direcciona-
miento llamado localizador unifonne de recursos (URL: unifotm resource Zocator), el cual
es un estndar para especificar cualquier tipo de informacin en Internet. El URL define cua-
A Internet
tro cosas: mtodo, computadora anfitrin, puerto y ruta (figura 6.20).

Figura 6.21 Explorador

Documento Web
Figura 6.20 URL

El mtodo es el programa cliente-servidor usado para transferir los documentos, HTTP en Figura 6.22 Categoras de documentos Web
este caso (el URL puede utilizarse por otros programas de aplicacin). El anfitrin es la com-
putadora donde se localiza la informacin, aunque el nombre de la computadora puede ser un
alias, que por lo general comienza con los caracteres "www". Tipos de documentos Generalmente hay tres tipos distintos de documentos en Internet:
El puerto, el cual defme el nmero de puerto del servidor, es opcional. La ruta es el nom- esttico, dinmico y activo (figura 6.22).
bre de ruta del archivo donde se localiza la informacin. Observe que la ruta puede contener
diagonales que, en el sistema operativo UNIX, separan los directorios de los subdirectorios y l1li Los documentos estticos tienen contenido fijo. Se crean en el lado del servidor y slo
archivos. pueden copiarse. Un documento esttico norrnahnente utiliza el lenguaje para marcado de
hipertexto (HTML: hypertext markup language) para el formato de pantalla y los vncu-
los en el documento. En el captulo 9 se estudia el HTML.
World Wide Web El World Wide Web (WWW), o Web, se basa en la idea de informacin distribuida. En lu-
(WWW) gar de mantener toda la infonnacin en un lugar, cada entidad (individuo u organizacin) que lB Los documentos dinmicos son programas que residen en el lado del servidor. Cuando
tiene informacin para compartir almacena esa informacin en su propia computadora y per- un explorador enva una solicitud el servidor ejecuta el programa y enva el resultado (no
mite el acceso a la misma a los usuarios de Internet. El WWW es una coleccin 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 enve el resultado del programa al cliente. Los docu-
mentos dinmicos usan una tecnologa llamada Interfaz de Compuerta Comn (CGI:
common gateway inteiface) que incluye lenguajes de programacin corno PerI (vase el
Hipertexto El WWW utiliza el concepto de hipertexto, el cual es un documento que con-
captulo 9) y HT1VlL para manejar la creacin y la interpretacin del documento.
tiene texto, palabras y frases especiales que pueden crear un vnculo a otros documentos que
contienen texto, imgenes, audio o video. Un documento de hipertexto disponible en el Web
11 Los documentos activos tambin son programas, pero no es posible ejecutarlos en el
se llama pgina. La pgina central de una organizacin o individuo se conoce como pgina
servidor. En vez de ello, el explorador debe solicitar la transferencia del programa. Des-
principal.
pus de la transferencia, el programa se ejecuta en el lado del explorador. La diferencia
entre un documento dinmico y un documento activo es que el primero se ejecuta en el
Explorador Para obtener acceso a una pgina en el WWW, se necesita un explorador que lado del servidor y su resultado se transfiere al explorador, y el ltimo se transfiere alIa-
por lo general consiste de tres partes: un controlador, un mtodo y un intrprete (figura 6.21). do del explorador y luego se ejecuta. Un documento activo es necesario cuando el pro-
El controlador es la parte medular del explorador; coordina todas las actividades. El mtodo eS grama no puede ejecutarse en el lado del servidor. Por ejemplo, cuando un programa
un programa de aplicacin cliente que recupera el documento. Aunque puede ser cualquiera de involucra animacin, debe ejecutarse en el lado del explorador. Un documento activo por
los programas de aplicacin que hemos analizado, por lo general es HTTP. El intrprete des- lo general se escribe en lenguaje Java (vase el captulo 9). El explorador requiere un in-
pliega el documento en la pantalla. trprete Java para interpretar (ejecutar) un documento activo.
.. Redes de computadoras 6.8 Prctica 111
El Protocolo de Datagrama de Usuario (UDP) y el Pro- 1II El Protocolo de Transferencia de Hipertexto (HTTP) es
6.6 TRMINOS CLAVE tocolo de Control de Transmisin (TCP) son los proto- un programa cliente-servidor para tener acceso y trans-
colos de TCP/IP en la capa de transporte. ferir documentos en el World Wide Web (WWW), una
bloque de datos entrega de nodo a nodo Protocolo de Datagrama de Usuario El Protocolo de Transferencia de Archivos (FTP) es una coleccin de documentos multimedia.
capa de aplicacin entrega de origen a destino (UDP) aplicacin cliente-servidor para copiar archivos de lUl 111 El Localizador Uniforme de Recursos (URL) es un
capa de enlace de datos explorador Protocolo de Transferencia de anfitrin a otro. identificador estndar para especificar informacin en
capa fsica gateway Archivos (FTP) El protocolo que soporta correo electrnico (emaif) en Internet.
capa de presentacin inicio de sesin local protocolo Internet (IP) Internet es el Protocolo Simple de Transferencia de co- 11 Se requiere un explorador para tener acceso a una pgi-
capa de red inicio de sesin remoto protocolo para transferencia de rreo (SMTP). na en elWWW.
capa de sesin Interconexin abierta de sistemas hipertexto (HTTP)
TELNET es una aplicacin cliente-servidor que pennite 11 Un documento en Internet puede clasificarse como est-
capa de transporte (OSI) protocolo simple de transferencia de
a un usuario iniciar una sesin en lUla mquina remota, tico, dinmico o activo.
caracteres de control (trailer) Internet correo (SMTP)
dando al usuario acceso al sistema remoto.
cliente lenguaje para marcado de hipertexto puente
conjunto de redes interconectadas (HTML) punto de sincronizacin
conmutador Localizador Uniforme de Recursos red de rea amplia (WAN)
correo electrnico (email) (URL) red de rea local (LAN)
datagrama topologa de bus red de rea metropolitana (MAN) PRCTICA
datagrama IP modelo red de computadoras
direccin tIsica modelo cliente-servidor repetidor PREGUNTAS DE OPCiN MLTIPLE
PRIEGUNTAS DE REPASO
direccin Internet nodo segmento
direccin IP notacin con punto decimal servidor Cul es la diferencia entre un modelo y un protocolo? 18. Un es un conjunto de reglas que controla la
dispositivos de conexin pgina principal TELNET (red tenninal) D un ejemplo de cada uno. interaccin de distintos dispositivos en una red o en un
documento activo protocolo topologa conjunto de redes interconectadas.
Cules son las capas del modelo OSI?
documento dinmico Protocolo de Control de Transmisin topologa de anillo a. modelo
documento esttico (TCP) topologa de estrella Cules son las capas del conjunto de protocolos TC- b. protocolo
encabezado Protocolo de Control de Transmisin! Web PIIP? c. dilogo
enrutador Protocolo Internet (TCP/IP) World Wide Web (WWW) d. punto de sincronizacin
Qu funcin tiene cada capa del modelo OSI?
19. El modelo OSI tiene ____ capas.
Cul es la diferencia entre la entrega nodo a nodo y la
a. cinco
6.1 RESUMEN entrega origen a destino?
b. seis
Cul es la diferencia entre bloque de datos y paquete? c. siete
111 Una red de computadoras es una combinacin de dispo- 111 Un repetidor es un dispositivo de conexin que regene- d. cualquiera de las anteriores
sitivos conectados mediante un medio de transmisin. 7. Cul es el propsito de un punto de sincronizacin?
ra los datos y extiende la longitud fsica de una red.
20. La capa _ _ _ _ del modelo OSI organiza los bits en
lIIl El modelo de Interconexin de sistemas abiertos (OSI) I!I Un puente es un dispositivo de conexin que filtra el ,8. Cules son las tres topologas comunes? Cul de ellas
unidades de datos lgicas llamadas bloques de datos
es un modelo terico que muestra cmo dos sistemas di- trfico. es la ms popular hoy en da?
(!rames).
ferentes cualesquiera pueden comunicarse entre s.
111 Un enrutador es un dispositivo de conexin que enruta 9. Mencione cuatro tipos de dispositivos de conexin y sus a. fsica
lIIIl Las siete capas del modelo OSI son la capa fsica, la capa
los paquetes. funciones respectivas. b. de enlace de datos
de enlace de datos, la capa de red, la capa de transporte,
10. Cul es la diferencia entre TCP y UDP? c. de red
la capa de sesin, la capa de presentacin y la capa de 111 Una gateway pennite a dos redes, cada una con un con-
d. de transporte
aplicacin. junto de protocolos completamente diferentes, comuni-
11. Por qu las direcciones Internet son necesarias?
111 Una red de rea local (LAN) permite el uso compartido carse entre s. 21. La capa _ _ _ _ del modelo OSI permite a una perso-
de recursos (hardware, software y datos) entre computa- 12. Cmo difiere la capa de aplicacin de TCP/IP de aque- na tener acceso a Internet.
l1li Un conjunto de redes interconectadas es dos o ms
doras. lla del modelo OSI? 3. de enlace de datos
LAN, MAN o WAN.
111 Una LAN puede configurarse en una topologa de bus, 13. Cul es el propsito de FrP? b. de transporte
111 El Protocolo de Control deTransmisinlProtocolo Inter- c. de aplicacin
anillo o estrella.
net (TCP/IP) es el conjunto de protocolos utilizados por 14. Cul es el propsito de TELNET? d. fsica
l\III Una red de rea metropolitana (MAN) utiliza los servi- Internet, un conjunto de redes de computadoras interco-
dos proporcionados por una empresa de comunicacio- nectadas en todo el mundo. 15. Cul es el propsito de SMTP? 22. La capa del modelo OSI comprime y descom-
nes comn. prime los datos.
lIII El Protocolo Internet (IP) es el protocolo poco confiable 16. Cul es la diferencia entre un inicio de sesin local y un
lIII Una red de rea amplia (WAN) es la conexin de com- 3. fsica
de TCP/IP en la capa de interred. inicio de sesin remoto?
putadoras individuales o LAN sobre un rea de gran ex- b. de enlace de datos
tensin. Las WAN se instalan y ejecutan por empresas l1li Una direccin IP identifica a cada computadora coneC- 17. Compare y contraste los tres tipos de documentos In- c. de sesin
de comunicaciones comunes. tada a Internet. ternet. d. de presentacin
.. Redes de computadoras 6.8 Prctica ..

23. La capa ____ del modelo OSI cifra los datos. 30. Los Postres Divinos de Cindy es una panadera con , ;Un(a) es un dispositivo de conexin que acta 45. ____ es un protocolo para transferencia de archi-
a. fsica tro puntos de venta en San Francisco. Los puntos de como un convertidor de protocolo. vos.
ta necesitan comunicarse unos con otros. Este tipo
b. de enlace de datos repetidor 3. FTP
red probablemente es una _ _ __
c. de sesin puente b. SMTP
3. LAN enrutador C. TELNET
d. de presentacin b. MAN gateway d. HTTP
24. La capa del modelo OSI transmite un flujo de c. WAN
____ es un dispositivo de conexin que seg- 46. es un protocolo para servicio de correo elec-
bits sobre un medio fsico. d. ninguna de las anteriores
el trfico. trnico (email)
a. fsica 31. La compaa Papas Irlandesas de Kate tiene su base repetidor a. FTP
b. de enlace de datos Irlanda pero tiene sucursales en Boston y San
puente b. SMTP
Las sucursales se comunican entre s mediante
c. de red enrutador c. TELNET
d. de transporte gateway d. HITP
3. LAN
25. La capa del modelo OSI es responsable de la ____ es un dispositivo que puede enrutar un pa- 47. es un protocolo para tener acceso y transferir
b. MAN
entrega nodo a nodo de un bloque de datos entre dos es- quete con base en su direccin de capa de red. documentos en el WWW.
c. WAN
taciones contiguas. d. ninguna de las anteriores puente a. FTP
enrutador b. SMTP
a. de transporte
32. Vecchiarelli Consultores ocupa dos reas contiguas en repetidor c. TELNET
b. de red edificio Coffland. La red, que consiste en cuatro todos los anteriores d. HTTP
c. de enlace de datos nes de trabajo y una impresora, probablemente es
VHI'",_",e opera en ____ del modelo OSl. 48. Un documento ____ tiene contenido fijo.
d. de sesin
3. LAN la primera capa a. esttico
26. La capa del modelo OSI es responsable de la las primeras dos capas b. dinmico
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 Una gateway opera en ____ del modelo OSI.
c. de enlace de datos
33. Cul es el nombre de dominio de la direccin de EJERCICIOS
electrnico kayla@pit.arc.nasa.gov? a. la primera capa
49. Cul o cules de las capas OSI estn involucradas en ca-
d. de sesin b. las primeras dos capas
3. kayla da una de las actividades siguientes:
c. las primeras tres capas
27. La capa del modelo OSI es responsable de la b. pit.arc.nasa.gov a. enVo de un bloque de datos a la siguiente estacin
d. todas las capas
entrega de origen a destino de un paquete individual. c. kayla@pit.arc.nasa.gov b. envo de un paquete desde el origen al destino
a. de transporte d. nasa.gov La capa de de TCP/IP tiene funciones simila- c. envo de un mensaje largo desde el origen al destino
res a aquellas de las capas de aplicacin, presentacin y d. inicio de una sesin en una computadora remota
b. de red 34. Cul topologa utiliza un concentrador o un conmu- sesin del modelo OSl. e. cifrado y descifrado de datos
c. de enlace de datos tador?
a. transporte f. cambio de los datos de cdigo de mquina a Unicode
d. de sesin a. bus b. red
b. anillo 50. Una pequea parte de una LAN en bus con 200 estacio-
28. La capa del modelo OSI controla el dilogo c. aplicacin
c. estrella nes est daada. A cuntas estaciones afecta este dao?
entre los usuarios. d. sesin
d. todas las anteriores 51. Una pequea parte de una LAN en estrella con 200 es-
a. de transporte La direccin IP actualmente mide ____ de longi- taciones est daada. A cuntas estaciones afecta este
b. de sesin 35. Cul topologa necesita tenninadores de cable? tud. dao?
c. de presentacin a. bus a. 4 52. Una pequea parte de una LAN en anillo con 200 esta-
d. de aplicacin b. anillo b. 8 ciones est daada. A cuntas estaciones afecta este
c. estrella c. 32 dao?
29. A travs de la capa del modelo OSI los servi- d. todas las anteriores d. ninguno de los anteriores
cios de correo y de directorio estn disponibles para los 53. Si usted tiene una habitacin cuadrada con una compu-
usuarios de red. 36. Un(a) es un dispositivo de conexin que slo 44. El protocolo de la capa de transporte de Tep/IP se llama tadora en cada esquina, cul topologa necesita menos
regenera la seal. cableado? Justifique su respuesta.
a. de conexin de datos
a. repetidor a. Tep a. una LAN en bus
b. de sesin
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 aplicacin d. gateway d. incisos a y b tro de la habitacin
.. Redes de computadoras

54. Si usted tiene una habitacin cuadrada con una compu- 60. Cambie las siguientes direcciones IP de notacin binaria
tadora en cada esquina, cul topologa es ms confia- a notacin de punto decimal:
ble? Justifique su respuesta. a. 011111101111000101100111 01111111
b. 10111111110111001110000000000101
a. una LAN en bus
b. una LAN en anillo
c. una LAN en estrella con un concentrador en el cen-
tro de la habitacin
55. Un ingeniero observa que los datos que reciben las com-
c. 00011111111100000011111111011101
d. 100011111111010111000011 00011101
e. 11110111100100111110011101011101
61. Explique el modelo cliente-servidor en Internet. En
cul capa del conjunto de protocolos TCPIIP est imple-
oftwa
putadoras en los dos extremos de una LAN en bus con-
tienen muchos errores. Cul cree que sea el problema?
Qu se puede hacer para resolver el problema?
56. Un ingeniero nota una gran cantidad de trfico en una
LAN en bus grande. Qu puede hacer para mejorar la
mentado el modelo?
62. Separe la parte local y el nombre de dominio en las si-
guientes direcciones de correo electrnico:
a. madeleine@belle.gov
b. lindsey@jasmine.com
ec
situacin? c. wuteh@hunan.int
57. Cul es la ventaja de tener dos protocolos de transpor- d. honoris@queen.org
te en TCPIIP? 63. Explique la diferencia entre una direccin de correo
58. Cules son las ventajas y desventajas de tener una capa electrnico y una direccin IP. Existe una relacin uno
de aplicacin en el conjunto de protocolos TCP/IP en a uno entre las dos direcciones?
vez de tres capas (sesin, presentacin y aplicacin) co- 64. Explique la diferencia entre FTP y TELNET. Cundo
mo en el modelo OSI? se utiliza FTP y cundo TELNET?
59. Cambie las siguientes direcciones IP de notacin de 65. Un usuario utiliza un explorador para descargar un jue-
punto decimal a notacin binaria: go. Qu tipo de documento descarga?

a. 112.32.7.28 66. Un usuario utiliza un explorador para descargar un do-


b. 129.4.6.8 cumento tcnico. Qu tipo de documento descarga?
c. 208.3.54.12 67. Escriba un URL que utilice HTTP, el cual tenga acceso
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.
7.2 Evolucin

,
1.1 DEFINieRON
Un sistema operativo es tan complejo que es dificil dar una simple definicin universal. En
vez de ello, he aqu algunas definiciones comunes:

Sistemas 11.

11
Un sistema operativo es una interfaz entre el hardware de una computadora y el usuario
(programas o personas).
Un sistema operativo es un programa (o una serie de programas) que facilita la ejecu-

operativos 11
cin de otros programas.
Un sistema operativo acta como un gerente general que supervisa la actividad de cada
componente en el sistema de computacin. Como gerente general, el sistema operativo
revisa que los recursos de hardware y software se utilicen de manera eficiente y cuan-
do existe un conflicto al usar un recurso, el sistema operativo acta como mediador para
resolverlo.

Un sistema operativo es una interfaz entre el hardware de una computadora y el


usuario (programas o personas) que facilita la ejecucin de otros programas y
el acceso a recursos de hardware y software.
Una computadora es un sistema formado por dos componentes importantes: hardware y
software. El hard-:vare de computadora es el equipo fsico. El software es la coleccin de pro-
gramas que perrruten que el hardware realice su trabajo.
Dos objetivos de diseo importantes de un sistema operativo son:
El software de computadora se divide en dos amplias categoras: el sistema operativo y los
programas de aplicacin (figura 7.1), Los programas de aplicacin utilizan el hardware de 1. El uso eficiente del hardware.
computadora para resolver los problemas de los usuarios. El sistema operativo, por otro 2. Facilidad para usar los recursos.
lado, controla el acceso al hardware por parte de los usuarios.

1.2 EVOLUCiN
Sistema de
computacin
Los sistemas operativos han pasado por una larga historia de evolucin, la cual resumimos a
continuacin.

Hardware Los sistemas operativos por lotes se disearon en la dcada de 1950 para controlar a las
SISTEMAS
POR LOTES computadoras mainframe. En ese entonces, una computadora era una mquina grande que
utilizaba tarjetas perforadas para entrada de datos, impresoras de lnea para salida y unidades
de cinta para medios de almacenamiento secundarios.
Sistema Programas
operativo de aplicacin
Cada programa a ejecutarse se llamaba tarea. Un programador que deseaba ejecutar una
tarea enviaba una solicitud a la sala de operaciones junto con tarjetas perforadas para el pro-
grama y los datos. El programador no tenia ningn controlo interaccin con el sistema. Un
Figura 7.1 Sistema de computacin 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; slo se aseguraban de que todos
los recursos se transfirieran de una tarea a la siguiente.

SISTEMAS Para utilizar los recursos del sistema de computacin eficientemente, se introdujo la multi-
DE TIEMPO programacin. La idea es mantener varias tareas en memoria y slo asignar un recurso a una
COMPARTIDO tarea que 10 necesite con la condicin de que el recurso est disponible. Por ejemplo, cuando
111 Organizacin de la computadora 7.3 Componentes ..

un programa est usando un dispositivo de entrada/salida, el CPU est libre y puede ser uti.
lizado por otro programa. La multiprogramacin se estudia posteriormente en este captulo. Sistema operativo
La multiprogramacin trajo la idea del tiempo compartido: los recursos pueden compar.
tirse entre diferentes tareas. A cada tarea puede asignrsele una parte del tiempo para usar el Interfaz
recurso. Como una computadora es mucho ms rpida que una persona, el tiempo comparti- de usuario
do es transparente para el usuario. Cada usuario tiene la impresin de que todo el sistema es-
t trabajando para l o para ella.
La multiprogramacin y finalmente el tiempo compartido mejoraron en gran medida la
eficiencia de un sistema de computacin. No obstante, sta requera un sistema operativo
ms complejo. El sistema operativo ahora tena que hacer una planificacin: asignacin de
los recursos a los distintos programas y decidir cul programa debera utilizar cul recurso Figura 7.2 Componentes de un sistema operativo
y cundo.
Durante esta poca, la relacin entre una computadora y un usuario tambin cambi. El
usuario poda interactuar directamente con el sistema sin pasar por un operador. Un nuevo tr- Una de las responsabilidades de un sistema de computacin moderno es la administracin de
mino tambin se acu: proceso. Una tarea es un programa a ejecutar; un proceso es un pro- la memoria. Aun cuando en aos recientes el tamao de la memoria de las computadoras ha
MEMORIA aumentado enormemente, tambin lo ha hecho el tamao de los programas y los datos a ser
grama que est en la memoria en espera de recursos.
procesados. La asignacin de memoria debe ser administrada para evitar el sndrome de "que-
Cuando las computadoras personales se introdujeron, haba una necesidad de un sistema ope- darse sin memoria". Los sistemas operativos pueden dividirse en dos amplias categoras de
SISTEMAS
rativo de este tipo de computadora. Durante esta poca, se introdujeron los sistemas operati- administracin de memoria: la monoprogramacin y la multiprogramacin.
PERSONALES
vos monousuario tales como DOS (disk operating system: sistema operativo de disco).
La monoprogramacin pertenece al pasado, pero vale la pena mencionarla puesto que le
SISTEMAS La necesidad de una mayor velocidad y eficiencia condujo al diseo de los sistemas parale~ Monoprogramacin ayudar a comprender la multiprogramacin. En la monoprogramacin, la mayor parte de la
PARALELOS los: varios CPU en la misma mquina. Cada CPU poda utilizarse para servir a un programa capacidad de la memoria se dedica a un solo programa; nicamente se necesita una pequea
o a una parte de un programa, 10 cual significa que muchas tareas pueden lograrse en parale- parte para alojar el sistema operativo. En esta configuracin, todo el programa est en la me-
lo en vez de en fonna seria1. El sistema operativo para estos sistemas es ms complejo que moria para su ejecucin. 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 captulo 6, han creado
DISTRIBUIDOS una nueva dimensin en sistemas operativos. Una tarea realizada previamente por completo
en una computadora ahora poda compartirse entre computadoras que podan estar a miles de
millas de distancia. Un programa puede ejecutarse parcialmente en una computadora y parcial-
mente en otra si stas estn conectadas mediante un conjunto de redes interconectadas como Sistema
operativo
Internet. Adems, los recursos pueden distribuirse. Un programa puede necesitar archivos lo-
calizados en distintas partes del mundo. Los sistemas distribuidos combinan caractersticas
de la generacin 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
Memoria
administrar diferentes recursos en un sistema de computadoras. Se parece a una organizacin
con varios gerentes de alto nive1. Cada gerente es responsable de administrar su departamen-
Figura 7.3 Monoprogramacin
to, pero tambin necesita cooperar con otros y coordinar las actividades. Un sistema operati-
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 accin justo aqu, ya que carga el programa en la me-
algn administrador, un sistema operativo tambin tiene un componente semejante, el cual moria, lo ejecuta y 10 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 tcnica:
de usuario es responsable de la comunicacin del sistema operativo con el exterior (como un
departamento de relaciones pblicas). La figura 7.2 muestra los componentes de un sistema llIII El programa debe caber en la memoria. Si el tamao de la memoria es menor que el ta-
operativo. mao del programa, ste no puede ejecutarse.
la Sistemas operativos
7.3 Componentes ..

I!II Cuand~ un ~:ograma est en ejecucin, ningn otro programa puede ejecutarse. Particionamiento La primera tcnica usada en la multiprogramacin se llama particiona-
te su ~JecuclOn, u~ pro?~ama a menudo necesita recibir datos de dispositivos de miento. Bajo este esquema, la memoria se divide en secciones de longitud variable. Cada sec-
y enVIar datos a dISpOSItIVOS de salida. Los dispositivos de entrada/salida en realidad cin o particin aloja un programa. El CPU alterna entre los programas. Comienza con un
lentos c~mparados con el CPU. As que cuando se llevan a cabo las operaciones de programa. Ejecuta algunas instrucciones hasta que se encuentra una operacin de entrada/sa-
trada/salida el C~PU est in~ctivo. No puede atender a otro programa porque este lida o el tiempo asignado a ese programa expira. El CPU guarda la direccin de la localidad
programa no esta en memona. Se hace un uso poco eficiente de la memoria y del de memoria donde se ejecut la ltima instruccin y se traslada al siguiente programa. El mis-
mo procedimiento se repite con el segundo programa. Despus de que se han atendido todos
Multiprogramacin En la ~ultiprogramacin, en la memoria hay ms de un programa al mismo tiempo, los
los programas, el CPU regresa al primer programa. Desde luego, puede haber niveles de prio-
ridad en el acceso al CPU (figura 7.6).
les se eJe~utan concurrentemente. El CPU alterna entre los programas. La figura 7.4
la memona en un entorno de multiprogramacin.

I~I
Sistema . . Sistema Sistema
operativo operativo
operativo
CPU
Programa 1 I~I Programa 1
Programa 1
Programa 2 CPU Programa 2
Programa 2
.. Programa 3 Programa 3
.
Programa 3
.... ....... Memoria Memoria

Programa 4 a. El CPU inicia la ejecucin del programa 1. b. El CPU inicia la ejecucin del programa 2.

Memoria Figura 7.6 Particionamiento


Figura 7.4 Multiprogramacin

Con esta tcnica, cada programa est completamente en la memoria y ocupa localidades
contiguas. El particionamiento mejora la eficiencia del CPU, pero an hay otros problemas:
Desde la dca~a de 1960, la multiprogramacin ha sufrido varias mejoras que pueden ver-
se en la taxonorrua de la figura 7.5. En las secciones siguientes analizamos cada esquema de
11. El tamao de las particiones debe ser determinado de antemano por el administrador de
una manera muy breve. Dos tcnicas pertenecen a la categora de no intercambio; esto signi-
memoria. Si los tamaos de particin son pequeos, algunos programas no pueden car-
f~ca que el programa permanece en la memoria durante toda la ejecucin. Las otras dos tc-
garse en la memoria. Si los tamaos de particin son grandes, podra haber algunos es-
mcas pertenecen. a la cate~ora de intercambio. Esto significa que, durante la ejecucin, el
pacios vacos (localidades sin utilizar) en la memoria.
programa puede mtercambwrse entre la memoria y el disco una o ms veces.
111 Aun si el particionamiento es perfecto cuando la computadora se inicia, debe haber al-
gunos espacios vacos despus de que los programas se remplazan con otro nuevos.

11 Cuando hay muchos espacios vacos, el administrador de memoria puede compactar las
Multiprogramacin particiones para eliminar los espacios vacos y crear particiones nuevas, pero esto crea
una sobrecarga adicional en el sistema.

Paginacin La paginacin mejora la eficiencia del particionamiento. En la paginacin, la


memoria se divide en secciones de igual tamao llamadas bloques. El programa se divide en
secciones de igual tamao llamadas pginas. El tamao de una pgina y un bloque por 10 ge-
neral es el mismo y es igual al tamao del bloque utilizado por el sistema para recuperar in-
formacin de un dispositivo de almacenamiento (figura 7.7).
Una pgina se carga en un bloque en la memoria. Si un programa tiene tres pginas, ocupa
tres bloques en la memoria. Con esta tcnica, el programa no tiene que estar contiguo en la me-
Figura 7.5 Categoras de la multiprogramacin moria. Dos pginas consecutivas pueden ocupar dos bloques en memoria no consecutivos.
Sistemas operativos 7,3 Componentes ..

gramas estn en la memoria y 20 MB estn en el disco. El tamao real de la memoria es 10


Programa A J\.1B pero hay una memoria virtual de 30 J\.1B. La figura 7.8 muestra el concepto. La memo-
I Pgina 1 I Sistema ria virtual, la cual implica la paginacin bajo demanda, la segmentacin bajo demanda o am-
I Pgina 2

Programa B
1-
L
,.-
.. operativo
Bloque 1
Blo ue 2-
bas, se utiliza en casi todos los sistemas operativos actuales.

PlIina 1 Bloque 3
Pgina 2 Bloque 4
Paina 3 Bloque 5
Programa e Bloaue 6
BlOQue 7
I Poina 1 t-
I P,ina 2 .. Memoria ftiiJtij Sistema
operativo

Figura 7.7 Paginacin


:ODOO~:_~~j
iDDOoi
La ventaja de la paginacin sobre el particionamiento es que dos programas, cada uno de los
iD O O O~i~...t:=:~j
cuales utiliza tres bloques no contiguos, pueden remplazarse por un programa que necesita
iOODD:
seis bloques. No hay necesidad de que un nuevo programa espere hasta que seis bloques con- iOODDi
._--------------' Memoria fsica
tiguos estn libres antes de ser cargados en la memoria. Memoria virtual
La paginacin mejora la eficiencia en cierto grado, pero el programa completo an 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 slo hay cuatro bloques desocupados.
Figura 7.8 Memoria virtual
Paginacin bajo demanda La paginacin 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
ejecucin. La paginacin bajo demanda ha eliminado esta ltima restriccin, ya que en este ADMINISTRADOR Una segunda funcin de un sistema operativo es el administrador de procesos, pero antes de
tipo de paginacin el programa se divide en pginas, pero las pginas pueden cargarse en la DE PROCESOS analizar este concepto, se definen algunos tnninos.
memoria una a una, ejecutarse y remplazarse por otra pgina. En otras palabras, la memoria
puede alojar una pgina de varios programas al mismo tiempo. Adems, no es necesario que Programa, Los sistemas operativos modernos utilizan tres trminos que se refieren a una serie de instruc-
en el mismo bloque estn cargadas pginas consecutivas del mismo programa. Una pgina ciones: programa, tarea y proceso. Aunque la terminologa es vaga y vara de un sistema ope-
tarea y proceso
puede cargarse en cualquier bloque libre. rativo a otro, podemos definir estos trminos de manera informal.

Segmentacin bajo demanda Una tcnica similar a la paginacin es la segmentacin. Programa Un programa es una serie de instrucciones no activas escritas por un programa-
En la paginacin, un programa se divide en pginas de igual tamao, 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 trminos de mdulos, no de pginas de
igual tamao. Como ver en captulos posteriores, un programa por 10 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 segmentacin bajo demanda el progra- ra su ejecucin 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 mdulos 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. bin 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
Paginacin y segmentacin bajo demanda La paginacin y segmentacin bajo de una tarea en todas estas situaciones. Cuando un trabajo ha terminado de ejecutarse (ya sea
manda incluso pueden combinarse para mejorar an ms la eficiencia del sistema. Un seg- normalmente o de manera anonnal), 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 mdulo puede dividirse en pginas. no todos los programas son tareas.
Las pginas de un mdulo pueden cargarse despus en la memoria y ejecutarse una a una.
Proceso Un proceso es un programa en ejecucin. Es un programa que ha iniciado pero
no se ha tenninado. En otras palabras, un proceso es una tarea que reside en la memoria. Se
Memoria virtual La paginacin bajo demanda y la segmentacin 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 ejecucin. 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 ME. En cualquier momento, los 10 ME de los 10 pro- tareas son procesos.
.. Sistemas operativos 7.3 Componentes 111
Diagrama La relacin entre un programa, una tarea y un proceso se esclarece si se considera cmo un Para cambiar una tarea o proceso de un estado a otro, el administrador de procesos utiliza
de estado programa se vuelve una tarea y cmo 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 lineas divididas para los lmites 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 ejecucin al estado de terminacin. 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
----------------------------------------------------~

En espera
I 6"nnina~
Se vuelve unlpm'grama I
Planifica :
Planificador
de tareas
: Planifica
1
.,- --~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ --------- ----------------~ --,.
_'______

: __________________________________________
~
Procesos :
J
Entra a la memoria Sale

: !,_r.?~~~?
" Obtener acceso al
Figura 7.10 Planificador de tareas
Listo

de espacio
E/S resuelta solicitada
ti ocurri Planificador de procesos El planificador de procesos cambia un proceso de un estado a
una interrupcin otro. Cambia un proceso del estado de ejecucin al estado de espera cuando el proceso est es-
"
, .. -------------------------------- -------------. perando que ocurra un evento. Cambia un proceso del estado de ejecucin al estado de listo si
ha expirado el tiempo asignado. Cambia el proceso del estado de espera al estado de listo cuan-
do el evento ha ocurrido. Cuando el CPU est listo para ejecutar el proceso, el planificador de
procesos cambia el proceso del estado de listo al estado de ejecucin. La figura 7.11 muestra
Figura 7.9 Diagrama de estado con los lmites entre un programa, una
el planificador de procesos con respecto a un diagrama de estado.
Y un proceso

Un programa se vuelve una tarea cuando es seleccionado por el sistema operativo y lleva- Planificador
do al estado de espera. Permanece en este estado hasta que puede cargarse en la memoria. de procesos
Cuando hay espacio disponible en la memoria para cargar el programa total o parcialmente, d'

d'

la tarea cambia al estado de listo. Ahora se convierte en un proceso. Permanece en la memo- s:
". S:
".
ria y en este estado hasta que el CPU puede ejecutarlo; cambia al estado de ejecucin en es- ~: '": ".
te momento. Cuando est en el estado en ejecucin, ocurre una de las tres cosas siguientes: Listo }---'--~-"';"'--..( En eJecuci6n
t
11 El proceso se ejecuta hasta que necesita E/S. "

II/i El proceso agota su espacio de tiempo asignado.

l!lI El proceso tennina.

En el primer caso el proceso va al estado de espera y espera hasta que la E/S se haya CoIll- Figura 7.11 Planificador de procesos
pletado. En el segundo caso, va directamente al estado listo. En el tercer caso, va al estado
de tenninacin y ya no es ms un proceso. Un proceso puede moverse entre los estados de
ejecucin, espera y listo varias veces antes de que entre en el estado de terminacin. Obser-
ve que el diagrama puede ser mucho ms complejo si el sistema utiliza memoria virtual y a1~ Otros planificadores Algunos sistemas operativos utilizan otros tipos de planificadores
terna los programas dentro y fuera de la memoria principa1. para alternar entre procesos de una manera ms eficiente.
.. Sistemas operativos 7.3 Componentes ..

Colas de espera Nuestro diagrama de estado muestra una tarea o proceso que cambia de un estado a otro. En
realidad, hay muchas tareas y muchos procesos que compiten unos con otros por los recursos
Se asigna a Ha solicitado
de la computadora. Por ejemplo, cuando algunas tareas estn en la memoria, otras deben es-
perar hasta que haya espacio disponible. O cuando un proceso est en ejecucin usando el
CPU, otros deben esperar hasta que el CPU est libre. Para manejar varios procesos y tareas,
el administrador de procesos utiliza colas de espera (listas de espera). Asociada con cada ta-
rea o proceso hay un bloque de control de tareas o bloque de control de procesos que guar-
da informacin sobre esa tarea o proceso. El administrador de procesos almacena el bloque Archivo 1 Archivo 2
de control de tareas o de procesos en las colas de espera, en vez de la tarea o el proceso mis-
mo. La tarea o el proceso permanece en la memoria o en el disco, es demasiado grande para
ser duplicado en una cola de espera. El bloque de control de tareas o el bloque de control de
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 mues-
tra la circulacin de las tareas y los procesos a travs de tres colas de espera: la cola de tareas,
la cola de listo y la cola de E/S. La cola de tareas aloja las tareas que estn esperando memo-
'-------c.l. ~ .I
Ha solicitado " ":,::'
,"
...o(---------'
Se asigna a

Figura 7.13 Punto muerto


ria. La cola de listo aloja los procesos que estn en la memoria, listos para su ejecucin y es-
perando al CPU. La cola de E/S aloja los procesos que estn esperando uu dispositivo de
entrada/salida (puede haber varias colas de E/S, una para cada dispositivo de entrada/salida,
pero por razones de simplicidad slo mostramos una).

Tarea
,-----------------------------------------------------------------
Proceso
:- --- --------- -----------------------CP --- Figura 7.14 Punto muerto en un puente
Cola de tareas : Cola de listo ...... o
Inicio: Realizado
) DDDDI ,Al~,:;DDDD lA']"",",;' ~~ ) Como analoga, la figura 7.14 muestra un punto muerto en un puente estrecho. La situa-
cin es similar debido a que el recurso (parte del puente) est ocupado por un vehculo que

~
~ I EspaclO de tiempo agotado I~ .~
no lo libera hasta que llega a la otra parte del puente, la cual est ocupada por el otro vehcu-
lo, y viceversa.
El punto muerto ocurre si el sistema operativo permite que empiece la ejecucin de un pro-
ia--1DDDD ~ ceso sin revisar primero si los recursos requeridos estn listos y pennite al proceso ocupar ese
Cola de E/S recurso todo el tiempo que lo desee. Debe haber alguna condicin en el sistema para impedir
los puntos muertos. Una solucin es no permitir que un proceso inicie su ejecucin hasta
que los recursos se liberen, pero posteriormente ver que esta solucin genera otro problema.
La segunda solucin es limitar el tiempo que un proceso puede ocupar un recurso.
Figura 7.12 Colas para el administrador de procesos

El administrador de procesos puede tener diferentes polticas para seleccionar la siguiente ta-
rea o proceso de una cola de espera; podra ser primero en llegar, primero en salir (FIFO:first Los puntos muertos ocurren cuando el sistema operativo no pone restricciones de
in, first out), primero el ms corto, aquel con mayor prioridad y as por el estilo. recursos a los procesos.

Proceso de La idea global que sustenta al administrador de procesos es sincronizar distintos procesos con
diferentes recursos. Los recursos pueden utilizarse en cualquier momento por cualquier usua-
sincronizacin El punto muerto no siempre ocurre. Hay cuatro condiciones necesarias para un punto muer-
rio (procesos en este caso); se pueden presentar dos situaciones: punto muerto y privacin. A
to: exclusin mutua (slo un proceso puede ocupar un recurso), ocupacin de un recurso (un
continuacin se presenta una breve explicacin de ambas situaciones.
proceso ocupa un recurso aun cuando ste no pueda utilizarse hasta que otros recursos estn
Punto muerto En lugar de una defInicin formal de punto muerto, daremos un ejemplo. 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 uu archivo llamado Ar- 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 llama- 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 se punto muerto. Sin embargo, estas condiciones slo son condiciones necesarias (no suficien-
asign a B) y no puede liberarlo hasta que tenga el Archivo 1 (B ha solicitado el Archivo 1). tes), lo cual significa que deben estar presentes para que ocurra un punto muerto, pero podra
Los archivos en la mayora de los sistemas no son compartidos; cuando un proceso utiliza un 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 condicin en esta ocurre. Esto le proporciona un mtodo para impedir o evitar el punto muerto: No permita que
situacin para forzar a un proceso a liberar un archivo, se crea un punto muerto (figura 7.13), alguna de estas condiciones ocurra.
.. Sistemas operativos 7.3 Componentes ..

Privacin La privacin es 10 opuesto al punto muerto. Puede ocurrir cuando el sistema ope~
rativo pone demasiadas restricciones a los recursos en lill proceso. Por ejemplo, imagine un
sistema operativo que especifica la posesin 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
CII
'@I ~
el Archivo 1 y el Archivo 2. El Archivo 1 est en uso por el proceso B y el Archivo 2, por ei

~@~
proceso E. El proceso B termina primero y libera al Archivo l. El proceso A no puede iniciar~
se porque el Archivo 2 an no est disponible. En este momento se pennite la ejecucin del
proceso e, el cual necesita slo al Archivo 1. Ahora el proceso E termina y libera al Archivo
2, pero el proceso A todava no puede ejecutarse porque el Archivo 1 no est disponible. .. . . . . . @.
fIII""'"
Arroz
......~.; ......

@@

Figura 7.16 Cena de filsofos

Un problema de privacin clsico es aquel presentado por Dijkstra. Cinco filsofos estn
sentados a una mesa redonda (figura 7.16). Cada filsofo necesita dos palillos para comer un
tazn de arroz. Sin embargo, uno o ambos palillos podran ser usados por su vecino. Un fil-
sofo podra "pasar hambre" si no tiene dos palillos disponibles al mismo tiempo.
a. El proceso A necesita tanto al Archivo 1 como al Archivo 2.

,-----1(;) El administrador de dispositivos, o administrador de entrada/salida, es responsable del ac-


ceso a los dispositivos de entrada/salida. Hay limitaciones en el nmero y la velocidad de los
Ha solicitado

1 dispositivos de entrada/salida en un sistema de computacin. Debido a que estos dispositivos


son ms lentos comparados con el CPU y la memoria, cuando un proceso accede a un dispo-

liII Archivo I
sitivo de entrada/salida, no est disponible para otros procesos durante un periodo. El admi-
nistrador de dispositivos es responsable del uso eficiente de los dispositivos de entrada/salida.

"'-~
Un anlisis detallado del administrador de dispositivos requiere un conocimiento avanza-
do de los principios del sistema operativo y est ms all del mbito de este libro. Sin embar-
go, podemos describir brevemente las responsabilidades del administrador de dispositivos:

11 El administrador de dispositivos monitorea constantemente cada dispositivo de entrada-


/salida para asegurarse de que funcione apropiadamente. Tambin el administrador debe
b. El proceso A an necesita tanto al Archivo 1 como al Archivo 2.
saber cundo un dispositivo ha terminado un proceso y est listo para tomar el siguien-

H, ;olioit,do
.-----1()I-----,
1 ;~)1 1 Ho ;oli"todo
111
te en la lista.
El administrador matiene constantemente una fila para cada dispositivo de entrada/sali-
da o una o varias filas para dispositivos similares. Por ejemplo, si hay dos impresoras r-

-=1 A"h',ol
111
pidas en el sistema, el administrador puede generar una fila para cada una, o una sola
para ambas.
El administrador controla las polticas de acceso a los dispositivos de entrada/salida. Por
A"gn,do" ejemplo, puede utilizar FIFO para un dispositivo y primero el ms corto para otro.

G
c. El proceso A todava necesita tanto al Archivo 1 como al Archivo 2 (privacin).
ADMINISTRADOR
DE ARCHIVOS
Hoy los sistemas operativos utilizan el administrador de archivos para controlar el acceso a
stos. Un anlisis detallado del administrador de archivos requiere un conocimiento profundo
de los principios de sistemas operativos, lo cual queda ms all de los propsitos de este libro.
En el captulo 13 se estudian algunos problemas relacionados con el acceso a archivos, pero
esto no es adecuado para comprender la operacin real de un administrador de archivos. A
Figura 7.15 Privacin continuacin se listan las principales responsabilidades de un administrador de archivos:
.. Sistemas operativos 7.6 Resumen 111
11 El administrador de archivos controla el acceso a los archivos. El acceso est pemtitillo Linux, desarrollado por Linus Torvalds en Finlandia, est basado en UNIX. D~ hecho, es tan
slo a aquellos que cuentan con permiso, y el tipo de acceso puede variar. Por parecido a UNIX que algunas personas lo consideran un clan de UNIX. La Idea. era lograr
un proceso (o un usuario que llama a un proceso) puede tener permiso para leer un que UNIX fuera ms eficiente cuando se ejecutara en un microprocesador Intel. LllluX ahora
chivo pero no para escribir (hacer cambios) en l. A otro proceso se le puede POll111Jtlf est disponible para todas las plataformas y se est volviendo ms y ms popular entre los
ejecutar un archivo pero no se le permite ver el contenido. programadores y los usuarios comerciales.

111 El administrador de archivos supervisa la creacin, eliminacin y modificacin de


archivos.

11 El administrador de archivos puede controlar la asignacin de nombres a los archivos.

I!I El administrador de archivos supervisa el almacenamiento de los archivos: Cmo se al. TRMINOS CLAVE
macenan, dnde se almacenan y as por el estilo.
lministrwoor de archivos monoprograrnacin punto puerto
111 El administrador de archivos es responsable de archivar y hacer los respaldos. lministra,dor de dispositivos multiprogramacin segmentacin bajo demanda
,dnrinistrad,or de memoria pgina sincronizacin de procesos
INTERFAZ Cada sistema operativo tiene una interfaz de usuario, la cual es un programa que acepta so~ dmini,;tra.dor de procesos paginacin sistema distribuido
DE USUARIO licitudes de los usuarios (procesos) y las interpreta para el resto del sistema operativo. Una de datos (frame) paginacin bajo demanda sistema operativo
interfaz de usuario en algunos sistemas operativos, tales como UNIX, se conoce COmo intr. paginacin y segmentacin bajo sistema operativo monousuario
prete de comandos (Shell). En algunos otros sistemas se le llama ventana para denotar que demanda sistema paralelo
est manejada por mens y tiene un componente GUI (graphical User interface: interfaz gr- particionamiento sistema operativo por lotes
fica de usuario). planificacin software
planificador de procesos tarea
de terminacin planificador de tareas tiempo compartido
UNIX
7.4 SISTEMAS OPERATIVOS MS COMUNES de usuario privacin
proceso
~CID<,m()ria virtual programa
En esta seccin presentamos algunos sistemas operativos comunes como una motivacin
para un estudio posterior. Elegimos tres sistemas operativos que son familiares para la mayo-
ra de los usuarios de computadoras.

WINDOWS 2000 Windows 2000 (de Microsoft) es un buen ejemplo de un sistema operativo que ha avanzado
un gran tramo en su evolucin. Comenz como una interfaz para ejecutarla con el DOS (sis-
RESUMEN
tema operativo de disco). Ahora es una sistema operativo complejo manejado por mens que
incluye una GUI robusta, la cual utiliza memoria virtual que permite la multiprogramacin. Un sistema operativo facilita la ejecucin de otro soft- 11 En la paginacin, la memoria se divide en secciones de
Tiene una capacidad de conectividad en red integral que lo vuelve un sistema operativo pa- ware, acta como el administrador general de un sistema igual tamao llamadas bloques y el programa se divide
ra redes. Windows 2000 tambin incluye una caracterstica de seguridad que lo vuelven con~ de computacin y garantiza el uso eficiente de los recur- en secciones de igual tamao llamadas pginas. Las p-
veniente para situaciones donde la seguridad es un problema. sos de hardware y software. ginas de un programa no necesitan ser contiguas, pero
todas ellas deben estar presentes en la memoria para la
La evolucin de los sistemas operativos ha incluido sis-
UNIX ejecucin del programa.
UNIX es un sistema operativo conocido entre los programadores de computadoras y cient~ temas operativs--por lotes, sistemas de tiempo compar-
ficos de la computacin. Es un sistema operativo muy poderoso con tres caractersticas so- tido, sistemas monousuario y sistemas distribuidos. 11 La paginacin bajo demanda es similar a la paginacin
bresalientes. Primero, UNIX es un sistema operativo porttil que puede trasladarse de una con la excepcin de que no es necesario que todas las
El sistema operativo supervisa al administrador de me-
plataforma a otra sin muchos cambios. La razn es que est escrito en su mayora en lengua- pginas estn en la memoria.
moria, el administrador de procesos, el administrador de
je C (en lugar de un lenguaje de mquina para un sistema especfico). Segundo, UNIX tiene
dispositivos, el administrador de archivos y la interfaz de 11 La segmentacin bajo demanda es similar a la pagina-
una serie de utileras (comandos) poderosas que pueden combinarse (en un archivo ejecuta-
usuario. cin con la excepcin de que en lugar de secciones de
ble llamado script) para resolver muchos de los problemas que en otros sistemas operativos
requieren programacin. Tercero, es independiente de los dispositivos debido a que incluye En la monoprogramacin, la mayor parte de la capaci- igual tamao, el programa se divide para corresponder
los controladores de los dispositivos en el sistema operativo mismo, 10 cual significa que pue- dad de la memoria est dedicada a un solo programa. con las divisiones del programa.
de configurarse fcilmente para ejecutar cualquier dispositivo. En resumen, UNIX cuenta con
En la multiprogramacin, hay ms de un programa en 111 La paginacin bajo demanda y la segmentacin bajo de-
todas las caractersticas que tiene un sistema operativo poderoso, incluyendo la multiprogra-
memoria al mismo tiempo. manda pueden combinarse para mejorar la eficiencia de
macin, la memoria virtual y sistemas de directorios y archivos muy bien diseados. La ni-
un sistema de computacin.
ca crtica que se hace a UNIX con frecuencia es que los comandos son cortos y complicados 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 111 La suma de los tamaos de todos los programas en la
sitan comandos cortos. programa. memoria es la memoria virtual.
.. Sistemas operativos 7.7 Prcticas ..

liII Un programa es una serie de instrucciones no activas es- 111 El punto muerto es una situacin en la cual un Un sistema operativo se necesita para tareas 33. En el (la) el programa puede dividirse en sec-
eritas por un programador y almacenadas en un disco o es incapaz de ejecutarse debido al uso irrestricto de ;;;,:onlp,rrtidas entre computadoras conectadas a distancia. ciones de diferente tamao.
cinta. por lotes 3. particionamiento
cursos por otros procesos.
de tiempo compartido b. paginacin
l1li Una tarea es un programa seleccionado para su ejecucin. l1li La privacin es una situacin en la cual un proceso es c. paginacin bajo demanda
paralelo
liII Un proceso es una tarea que reside en la memoria. capaz de ejecutarse debido a que hay demasiadas restric_ distribuido d. segmentacin bajo demanda
ciones en los recursos.
liII Un diagrama de estado muestra la relacin entre un pro- La multiprogramacin 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 111 El administrador de dispositivos controla el acceso ciones de igual tamao llamadas pginas, pero no es ne-
los modos de espera, terminacin, listo, ejecucin o es- dispositivos de E/S. por lotes cesario que las pginas estn en la memoria al mismo
pera. Un proceso puede estar en uno de los tres ltimos l1li El administrador de archivos controla el acceso a los de tiempo compartido tiempo para la ejecucin del programa.
estados. chivos. paralelo 3. particionamiento
distribuido b. paginacin
l1li El planificador de tareas crea un proceso a partir de una 111 La interfaz de usuario es software que acepta
tarea y cambia un proceso de regreso a una tarea. DOS se considera un sistema operativo _ _ __ c. paginacin bajo demanda
de los procesos y los interpreta para el resto del sistema
a. por lotes d. segmentacin bajo demanda
l1li El administrador de procesos cambia un proceso de un operativo.
b. de tiempo compartido
estado a otro. 35. Un proceso en el estado de ____ puede entrar ya
111 Windows 2000, UNIX Y Linux son tres sistemas opera- paralelo
sea en el estado de listo, tenrllnacin o espera.
11 Las tareas y los procesos esperan en colas de espera. tivos muy comunes. personal
a. espera
Un sistema con ms de un CPU requiere un sistema ope-
b. virtual
rativo _ _ __
c. ejecucin
, por lotes
d. incisos a y c
7.7 PRACTICAS de tiempo compartido
paralelo 36. Un proceso en el estado de listo entra en el estado de eje-
distribuido cucin cuando _ _ __
PREGUNTAS DE REPASO 17. Por qu un sistema operativo necesita colas de espera?
____ es multiprogramacin con intercambio. a. entra a la memoria
le Cul es la diferencia entre un programa de aplicacin y 18. Cul es la diferencia entre un punto muerto y la priva-
el particionamiento b. solicita EIS
un sistema operativo? cin?
c. obtiene acceso al CPU
19. Cules son las funciones de un administrador de dispo- la paginacin
2. Cmo ha cambiado la conectividad en red y la interco- d. termina su ejecucin
la paginacin bajo demanda
nectividad entre redes a los sistemas operativos? sitivos?
la asignacin a colas de espera 37. Un programa se convierte en un(a) cuando el
3. Cul es la diferencia entre monoprogramacin y multi- 20. Cules son las funciones de un administrador de archi-
____ es multiprogramacin sin intercambio. sistema operativo lo selecciona y lo lleva al estado de es-
programacin? vos?
el particionamiento pera.
4. Cules son los componentes de un sistema operativo? la memoria virtual a. tarea
PREGUNTAS DE OPCiN MLTIPLE la paginacin bajo demanda b. proceso
5. En qu difiere la paginacin del particionamiento?
21. es un programa que facilita la ejecucin de la asignacin a colas de espera c. punto muerto
6. Cul es la diferencia entre una pgina y un bloque?
otros programas. En la (el) slo un programa puede residir en d. particin
7. Por qu la paginacin bajo demanda es ms eficiente
a. un sistema operativo la memoria para su ejecucin. 38. Todos los procesos son
que la paginacin nonnal?
b. el hardware a. monoprogramacin a. tareas
8. Qu es la segmentacin bajo demanda?
c. una cola de espera b. multiprogramacin b. programas
9. Cmo se relaciona la memoria virtual con la memoria d. un programa de aplicacin c. particionamiento c. particiones
fsica? d. paginacin
22. supervisa la actividad de cada componente en d. incisos a y b
10. Cmo se relaciona un programa con una tarea? Cmo ____ es un mtodo de multiprogramacin en el cual
un sistema de cmputo. 39. El planificador crea un proceso a partir de una
se relaciona una tarea con un proceso? Cmo se rela- varios programas estn 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 3. de tareas
11. Dnde reside un programa? Dnde reside una tarea? a. el particionamiento
c. una cola de espera b. de procesos
Dnde reside un proceso? b. la paginacin
d. un programa de aplicacin c. virtual
12. Cul es el propsito de un diagrama de estado? c. la paginacin bajo demanda
d. de colas de espera
23. El primer sistema operativo, llamado sistema operativo d. la segmentacin bajo demanda
13. En qu tipos de estado se puede encontrar un proceso?
____ , slo tena que garantizar que los recursos se En la paginacin 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? do a otro.
transfirieran de una tarea a la siguiente. igual tamao llamadas ____
15. Si un proceso est en el estado de ejecucin, a qu es- a. pginas 3. de tareas
a. por lotes
tados puede cambiar despus? b. bloques b. de procesos
b. de tiempo compartido
16. Cul 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
.. Sistemas operativos

41. Para evitar la (un) _ _ _ _ un sistema operativo puede tercero necesita 10.5 ME Y ocupa la segunda
poner restricciones a los recursos en los procesos. Finahnente, el cuarto programa necesita 20 ME Y
a. privacin la cuarta particin. Cul es el total de memoria
b. sincronizacin da? Cul es el total de memoria desperdiciada?
c. paginacin porcentaje de memoria se desperdicia?
d. punto muerto
50. Repita el ejercicio 49 si todos los programas
42. _ _ _ _ puede ocurrir si un proceso tiene demasiadas !O MB de memoria.
restricciones en los recursos.
51. Un sistema operativo multiprogramacin utiliza la
a. la privacin

IgoritlTlos
nacin. La memoria disponible es 60 ME divididos
b. la sincronizacin
15 pginas. cada una de 4 ME. El primer programa
c. la paginacin
cesita 13.ME. El segundo programa necesita 12 ME.
d. un punto muerto
tercer programa necesita 27 ME.
43. El adnllnistrador de _ _ _ _ es responsable del archi- a. Cuntas pginas utiliza el primer programa?
vo y el respaldo. b. Cuntas pginas utiliza el segundo programa?
a. memoria c. Cuntas pginas utiliza el tercer programa?
b. procesos d. Cuntas pginas quedan sin utilizarse?
c. dispositivos e. Qu cantidad total de memoria se desperdicia?
d. archivos f. Qu porcentaje de memoria se desperdicia?
44. El administrador de _ _ _ _ es responsable del acce- 52. Un sistema operativo utiliza O memoria virtual pero
so a los dispositivos de E/S.
quiere que todo el programa est en la memoria
a. memoria durante la ejecucin (sin paginacin o segmentacin).
b. procesos este captulo presentamos el concepto de algoritmos, los cuales son procedimientos paso
tamao de la memoria fsica es 100.ME. El tamao de
c. dispositivos para resolver un problema. Despus analizamos las herramientas util~zadas. para. de-
memoria virtual es 1 GB. Cuntos programas de 10
d. archivos algoritmos. Finalmente, damos algunos ejemplos comunes de algontmos IteratIvos
puede ejecutar simultneamente este sistema operativ()?,
45. El planificador de tareas y el planificador de procesos Cuntos de ellos pueden estar en memoria en cualquier
estn bajo el control del administrador de _ _ __ momento? Cuntos de ellos deben estar en disco?
a. memoria
53. Cul es el estado de un proceso en cada una de las si-
b. procesos
guientes situaciones (segn la figura 7.9)?
c. dispositivos
a. El proceso est utilizando al CPU.
d. archivos
b. El proceso ha terminado de imprimir y necesita la
atencin del CPU de nuevo.
EJERCICIOS c. El proceso se ha detenido porque su espacio de tiem-
46. Una computadora tiene un sistema operativo de mono- po ha ternrinado.
programacin. Si el tamao de la memoria es 64 MB Y d. El proceso est leyendo los datos desde el teclado.
el sistema operativo residente necesita 4 NIB, cul es el e. El proceso est imprimiendo los datos.
tamao mximo de un programa que puede ejecutar es-
54. Tres procesos CA, B Y C) se estn ejecutando simult
ta computadora?
neamente. El proceso A tiene al Archivo 1, pero necesi-
47. Repita el ejercicio 46 si el sistema operativo asigna au- ta el Archivo 2. El proceso B tiene al Archivo 3, pero
tomticamente 10 ME de memoria a los datos. necesita el Archivo 1. El proceso C tiene al Archivo 2,
48. Un sistema operativo de monoprogramacin 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 cin de punto muerto?
acceder a los dispositivos de E/S. Qu porcentaje de 55. Tres procesos (A, B Y C) se estn ejecutando de manera
tiempo est inactivo el CPU? simultnea. El proceso A tiene al Archivo 1. El proceso
49. Un sistema operativo multiprogramacin utiliza un es- B tiene al Archivo 2, pero necesita el Archivo 1. El pro~
quema de reparticin y divide los 60 ME de memoria ceso C tiene al Archivo 3, pero necesita el Archivo 2. Di-
disponibles en cuatro particiones de 10 MB, 12 ME, 18 buje un diagrama similar al de la figura 7.13 para estoS
MB Y 20 ME. El primer programa a ser ejecutado nece- procesos. Se trata de una situacin de punto muerto? Si
sita 17 MB Y ocupa la tercera particin. El segundo pro- su respuesta es "No", muestre cmo los procesos ternu-
grama necesita 8 ME Y ocupa la primera particin. El naran sus tareas finalmente.
Algoritmos 8.1 Concepto la
8.1 CONCEPTO
L,.;';'''';;'''''';;''''';_';';'...1 Lista de entrada

En esta seccin definimos de manera infonnallo que es un algoritmo y elaboramos el con- EncontrarMayor
cepto utilizando un ejemplo.

Paso 1
DEFINICiN Una definicin informal de un algoritmo es:
INFORMAL f;::,- ---------j~;-;':~~;,~;- ---.-'-~:
: - - - - - - - - - - - - - - 7,-;:,~ ;,~ - - - - - - - - - - - - -
.M~yorl 12 L>b, 8 L+f <:~I~f\Al?A\hJ LIsta:
~~:::.;.;:,,_ .. ------ -- --~ -- -- ---- ------------ -- --------- ---'--'-- ----_ ..
Paso 2
Algoritmo: un mtodo paso a paso para resolver un problema o realizar una tarea.
~~;;'~j' ul~" i" i' '~~~~ifK;~.;" "" ';;" ~i;~i~~'i"'" ui;~1
._------~._._--------------_._-----------~------------------_
Paso 3
..
En esta definicin un algoritmo es independiente del sistema de cmputo. Ms especfica-
mente, tambin debemos notar que el algoritmo acepta una lista de datos de entrada y crea i~~~~~i" 'i;" i" jj~;,:ii u,u~f"" U", 9'" j":'" ';;;,1
una lista de datos de salida (figura 8.1). .. _----_ ..
._~-_
Paso 4
_-----~-~~---_.-._._-----------_ ... ---------_._~

.-------------------------------------------------- .. _~------
:Mayor! 13 I1
?L;~<,;I{ h;11 U;t, 1 ;/;1 I
~-----------_._-------------~--~--_ .. ------------------------
Paso 5
Lista de entrada

Algoritmo Resultado de salida


Un mtodo paso a paso para resolver
un problema o hacer una tarea Figura 8.2 Encontrar el entero mayor entre los cinco enteros

Lista de salida Procesamiento El algoritmo utiliza los siguientes cinco pasos para encontrar el entero mayor.

PASO 1 En este paso, el algoritmo examina el primer entero (12). Puesto que no ha mane-
Figura 8.1 Definicin informal de un algoritmo utilizado en una computadora
jado al resto de los enteros (observe que no revelamos los 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 definicin con un ejemplo. Queremos desarrollar un algoritmo para mer entero (12) como su valor.
encontrar el entero ms 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 000000. PASO 2 El entero mayor hasta ahora es 12, pero el nuevo nmero puede cambiar la situa-
etc.). El algoritmo debe ser general y no depender del nmero de enteros. cin. El algoritmo hace una comparacin entre el valor del Mayor (12) y el valor del segun-
Es obvio que encontrar el entero ms grande entre muchos enteros {por ejemplo, 1 milln) do entero (8). Encuentra que el Mayor es ms 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 an est manteruendo al entero ms 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 mtodo intuitivo. Primero utilice un nme-
ro pequeo de enteros (por ejemplo, cinco) y luego extienda la solucin a cualquier nmero PASO 3 El entero mayor hasta ahora es 12, pero el nuevo nmero (13) es ms grande que
de enteros. Su solucin de cinco enteros sigue los mismos principios y restricciones para 1000 el Mayor. Esto significa que el valor del Mayor ya no es vlido. El valor del Mayor debe rem-
o ~ 000 000 de enteros. Suponga, incluso para el caso de cinco enteros, que el algoritmo ma- plazarse con el tercer nmero (13). El algoritmo cambia el valor del mayor a 13 y se mueve
neJa los enteros uno a uno. Observa el primer entero sin conocer los valores de los enteros al paso siguiente.
restantes. Despus de observar el primero, calcula el segundo entero y as sucesivamente. La
figura 8.2 muestra Una manera de resolver este problema. PASO 4 Nada se cambia en este paso debido a que el Mayor es ms grande que el cuarto
entero (9).
Llamamos al algoritmo Encontrarl\tIayor. Cada algoritmo tiene un nombre que 10 distin-
gue ~e 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 ms grande que el quinto en-
porCIOna el mayor como salida.
tero (11).

Salida Como ya no hay ms enteros a procesar, el algoritmo da el resultado del valor del Mayor, el
Entrada El algoritmo acepta la lista de cinco enteros como entrada. cual es 13.
.. Algoritmos
8.2 Tres estructuras de control l1li
DEFINICiN La figura 8.2 no muestra qu debe hacerse en cada paso. Usted puede modificar la figura pa~
DE ACCIONES ra que muestre ms detalles. En el paso 1, establezca el valor del primer entero como el Ma-
yor. No obstante, en los pasos 2 a 5 se requieren acciones adicionales para comparar el valor r 12 8 13 9 11 J Lista de entrada
del Mayor con el entero que se est procesando en ese momento. Si el entero actual es ms
EncontrarMayor
"'....-....I
t"..;;;....;;.............
grande que el Mayor, se establece el entero actual como el valor del Mayor (figura 8.3).
'-''"c'-- ------- ---,
~

,: futablezca el Mayor a O.:,


'PaSO 0
---------------._-_.~---~_ .. __ ..... _------------------------------------ .. -
11;...1 Lista de entrada
....;,;12.....;.8_..,1..3__9_.. : Si el nmero actual eS\ns grande que el Mayor, establezca el nmef{) ac~ co~o:~l Ma!?~.
1
~ ________________________ __ .. ___ _ .. ___________
_~ ~ ____ ~_. ______ ~~~_~ __ J

EncontrarMayor Paso 1
,'" -- -.,-,-- .... --,:, ",- -,. ---oo- -_. ---_.. --___ --_.. _,_ -.,_ ------_.. ---_. -------_.. ------';
:'-st,a~leza er'prinl6r nlhei6 co~o el:MaYor. ,
~---;~--~--------------------------------------
Paso 1 . _------~----------------~ ---- .. _._--------:--~-------..-- ----------_
. .. ---------_._ .... _--_._-----_ ..
: Si ~1 nmero actuar ~,;~~: ~d~ que 'el M'ayor, establezca el nmero actual corno el Mayor.
,- - ~,,- - - - ",- - -,,~':7 - - ;'~ - - -", - - -,,~: - -.., '::;- - ~ ,~," - - ~,- - - -',"- - -- .. - - - ;:- - -,"":,:",- - - -: ___ .. ________ -; :- -- -----.',- ---;. -',:::~'~ -'- - -"~- ---------- --------- --- --------.' oo. ------ -oo. -- _.. __
: Siel segllndo numero es ms grande qu'e el Mayor. establezca el segundo nmero como el Mayor. PasoS
~-~------------~-----------~-----------------~-------~~-------------~---~
Paso 2
~~:,? - - .... -- - ,~,,- _.. -," - - -,,~, - - ~,~ - .. ~,~,- - -,~,,-- - -,-, - - - - - - - -," -- - - - - - -~, - - - - - - - - - - - .. - - - .. - - -";
t
!JI] Resultado de salida
;- Si d',tercer rimero es ms grnde que el Mayor,' establezca el tercer nmero corno el Mayor: :
'- ---~,~ ---'- ---'-- -- . ---
Paso 3 -- ---------- . --------.. _- ----- -- ----~- -- -- ------ -. -- ~
," - - .. - - - - -- - - --7'- - - - - - - - - - - .. - - - .. - - - .. - - - _ .. ___ .,. ___ .. _____________ .. _________ ,__ ";
Figura 8.4 EncontrarMayor refinado
: s el cuart nnie;o es'ms,'gr.mde'9ue 'el Mayor. es'tblezca el cuarto numero corno el Mayor. ,
~---
Paso. _-~-------------
4 . _--------------- . _--------------------- . _---------~
'
' -----------------------------------------------------------------------
-' ,
.. -,,
: 'Si el quinto nmero es ms gr.mde qe el Mayor': establezca el quinto nmero corno el Mayor:. ,
~----~-_
Paso S .. _-----------.~-----_ .. _ .. _---_ .. _----~~-_ .. _-------------~---------~ r Lista de entrada J
~ EncontrarMayor
W
Figura 8,3 Definicin de acciones en el algoritmo EncontrarMayor
Resultado de salida :---------_ ...
: Establezca el Mayr a O. :
, '
~~-~~

.. ::::::::::::::::~-------------------------_. __ ... _.. _ . ----------------------------:


: Repita el paso siguiente N veces
'"
. ---------------- .. -------------------------------------------------------1
REFINAMIENTO ~ ~i el nmero at~a1 es ~~~'~rande ~ue el Mayor, establezca el nmero actual como 'el Mayor.
Este algoritmo necesita refmarse para que sea aceptable para la comunidad de programacin. : ~ . . . . - oo. - - - - __ - - - - ~ ' __ - - - - - ____ - __ - - - - oo . . . - _ .. - - - - - _ . __ .. - - __ - - ~' ____ - ___ .._ .._-_-_-_.;;_.___ -_-_~ _ .. - - - j
Existen dos problemas. Primero, la accin para el primer paso es diferente de aquellas para :- -- -----oo. -oo. oo. ----------- _. ---- _. - --- _. _. - ---- --------- - _.. _. _
los otros pasos. Segundo, la formulacin no es la misma en los pasos 2 a 5. Usted puede re-
definir fcilmente el algoritmo para eliminar estos dos inconvenientes. Cambie la formulacin
en los pasos 2 a 5 a "Si el nmero actual es ms grande que el Mayor, establezca el nmero I Mayor J
actual como el Mayor". La razn de que el primer paso sea diferente de los otros pasos se de~
be a que el Mayor no se ha inicializado. Si usted inicializa el Mayor en O (ningn entero po- Figura 8.5 Generalizacin de EncontrarMayor
sitivo puede ser menor que O), entonces el primer paso puede ser igual que los otros pasos.
Aada un ~uevo paso (llmelo paso O para mostrar que debe realizarse antes que el procesa-
miento de cualquier nmero). 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.

GENERALIZACiN TRES ESTRUCTURAS DE CONTROL


Es posible generalizar el algoritmo? Usted quiere encontrar el nmero mayor de N enteros
positivos, donde N puede ser 1 000, 1 000000 o incluso ms. Desde luego puede seguir los Los cientficos de la computacin han definido tres estructuras de control para un pr~gr~a
pasos de la figura 8.4 y repetir cada paso. Pero si usted cambia el algoritmo a un programa, o algoritmo estructurado. La idea es que un programa debe conformarse de una combmaclOn
entonces aunque parezca mentira necesita teclear las acciones para N pasos! Hay una mejor de slo estas tres estructuras: secuencia, decisin (seleccin) y repeticin (figura 8.6). Se ha
fOlTIla de hacer esto. Usted puede indicar a la computadora que repita los pasos N veces. Aho-
probado que no hay necesidad de ninguna otra estructura. El usar s~lo estas estructuras hace
ra incluimos esta caracterstica en nuestro algoritmo pictrico (figura 8.5).
que un programa o algoritmo sea fcil de entender, depurar o cambIar.
Algoritmos 8.3 Representacin de algoritmos lIiI

realiza la accin 1
realiza la accin 2

------------------,
Otra secuencia Una secuencia Una secuencia
realiza la accin n

a. Secuencia
:
....... j........ :' ,r,
de acciones de acciones de acciones

i f una condicin es verdadera, whi 1 e una condicin es verdadera, ~ 9 ~~~~


then
r;e~li~ 1a-;c-ci; i1
~ !~~~~~~~ ~~~~~~~~~~i~~~~} :, realiza la accin 2:,
, , a. Secuencia b. Decisin c. Repeticin

: realiza otra serie de acciones', <:"


, ............... , ce.'" ,,',,"'.', ."
,:r: Figura 8.7 Diagrama de flujo para las tres estructuras de control
b. Decisin c. RepeticIn

Figura 8.6 Tres estructuras de control -----------------------,


if (condicin)
then
accin ,, -----------------------
'
,------------------------' , '' while (condicin)
SECUENCIA La primera estructura se llama secuencia. Un algoritmo y finalmente un programa es una se- : accin 1 : accin , :
cuencia de instrucciones, la cual puede ser ya sea una instruccin simple o cualquiera de las accin
accin 2
otras dos estructuras. el se accin

accin n accin
DECISiN Algunos problemas no pueden resolverse slo con una secuencia de instrucciones simples. En ------------------------ accin End while
a. Secuencia ~----------------------
ocasiones usted necesita probar una condicin. Si el resultado de la prueba es verdadero, us- c. Repeticin
ted sigue una secuencia de instrucciones; si es falso, usted sigue una secuencia de instruccio- End i f
nes diferente. A esto se le llama estructura de decisin (seleccin). b. Decisin

REPETICiN En algunos problemas, debe repetirse la misma secuencia de instrucciones. Esto se maneja Figura 8.8 Pseudocdigo para las tres estructuras de control
con la estructura de repeticin. Encontrar el nmero mayor entre una serie de nmeros (que
se vio al principio del captulo) es una estructura de este tipo.
EJEMPLO!
Escriba un algoritmo en pseudocdigo que encuentre la estructura de dos nmeros.

8.3 REPRESENTACIN DE ALGORITMOS SOLUCIN


ste es un problema simple que puede resolverse usando slo la estructura de secuencia.
Hasta ahora, hemos utilizado figuras para expresar el concepto de un algoritmo. Durante las Observe que las instrucciones se numeraron para una referencia fcil (algoritmo 8.1). Ob-
ltimas dcadas, se han diseado herramientas para este propsito. Dos de estas herramien- serve tambin que se nombr el algoritmo, se defini la entrada del algoritmo y al tinal se
tas, el diagrama de flujo y el pseudocdigo, se presentan aqu. mostr el resultado usando una instruccin de retorno.

DiAGRAMA Un diagrama de flujo es tilla representacin pictrica de un algoritmo. Oculta todos los de- Algoritmo 8.1 Promedio de dos
DE FLUJO talles de un algoritmo en un intento por dar la idea global; muestra cmo el algoritmo
de principio a fin. Los diagramas de flujo se cubren con detalle en el Apndice C. Aqu slo PromedioDeDos
mostramos cmo se representan las tres estructuras en diagramas de flujo (figura 8.7). Entrada: Dos nmeros
1. Suma los dos nmeros
PSEUDOCDIGO El pseudocdigo es una representacin de un algoritmo parecida al ingls. No hay un estn- 2. Divide el resultado entre 2
dar para pseudocdigo; algunas personas utilizan muchos detalles y otras usan menos. Algu- 3. Devuelve el resultado del paso 2
nos utilizan un tipo de cdigo que se parece al ingls y otros utilizan una sintaxis como el End
lenguaje Pascal. El pseudocdigo se cubre con detalle en el Apndice D. Aqu slo mostra-
mos cmo pueden representarse las tres sentencias mediante pseudocdigo (figura 8.8).
111 Algoritmos 8.3 Representacin de algoritmos ..

EJEMPLO 2 4. i f (el nmero est entre 60 y 69, inclusive)


Escriba un algoritmo para traducir una calificacin numrica a una calificacin aproo.a< then
do/reprobado. 4.1 Establece la calificacin a "D".
End i f
SOLUCIN 5. i f (el nmero es menor que 60, inclusive)
Este problema no puede resolverse slo con la estructura de secuencia. Tambin se then
5.1 Establece la calificacin a "F"
sita la estructura de decisin. Se da un nmero a la computadora entre O y 100. De'vu"lv<".
"aprobado" si el nmero es mayor o igual que 70; devuelve "reprobado" si el nmero End if
6. Devuelve la calificacin
menor que 70. El algoritmo 8.2 muestra el pseudocdigo para este algoritmo. Observe
numeracin. La instruccin de decisin tiene el nmero 1 y su subinstruccin tiene el n~ End
mero 1.1 (la primera subinstruccin dentro de la primera instruccin). 111

Algoritmo 8.2 Traduccin a aprobado/reprobado Observe que las instrucciones if no necesitan el se porque no ocurre nada si la condicin
es falsa.
Aprobado/reprobado
EJEMPLO 4
Entrada: Un nmero
Escriba un algoritmo para encontrar el nmero mayor de una serie de enteros. Usted no
1. i f (el nmero es mayor o igual que 70)
then conoce el nmero de enteros.
1.1 Establece la calificacin a l/aprobado"
SOLUCIN
else
1.2 Establece la calificacin a "reprobado" Utilice el concepto de la figura 8.5 para escribir un algoritmo para este problema (algorit-
End i f mo 8.4).
2. Devuelve la calificacin
Algoritmo 8.4 Encontrar el mayor
End

EncontrarMayor
Entrada: Una lista de enteros positivos
EJEMPLO 3 1. Establece el Mayor en O
Escriba un algoritmo para cambiar una calificacin numrica a una calificacin de letra. 2. while (ms enteros)
2.1 i f (el entero es ms grande que el Mayor)
SOLUCIN then
2.1.1 Establece el valor del entero como el Mayor
Este problema necesita ms de una decisin. El pseudocdigo en el algoritmo 8.3 mues-
End if
tra una forma (no la mejor, sino una fcil de comprender) para resolver el problema. De
End while
nuevo, se da un nmero entre O y 100 Y usted quiere cambiarlo a una calificacin de letra
3. Devuelve el Mayor
CA, B, e, D o F).
End
Algoritmo 8.3 Calificacin con letra

CalificacinLetra EJEMPLOS
Entrada: Un nmero Escriba un algoritmo para encontrar el nmero mayor entre 1000 nmeros.
1. if (el nmero est entre 90 y 100, inclusive)
then SOLUCIN
1.1 Establece la calificacin a /lA" En este caso se necesita un contador para contar el nmero de enteros. Inicialice el conta-
End if dor en O y aumntelo en cada repeticin. Cuando el contador sea 1000, salga del ciclo
2. if (el nmero est entre 80 y 89, inclusive) (loop) (algoritmo 8.5).
then
2.1 Establece la calificacin a /lB" Algoritmo 8.5 Encontrar el nmero mayor entre 1000 nmeros
End if
3. i f (el nmero est entre 70 y 79, inclusive) EncontrarMayor
then Entrada: 1000 enteros positivos
3.1 Establece la calificacin a "C" 1. Establece el Mayor en O
End i f 2. Establece el Contador en O
.. Algoritmos 8.5 Subalgoritmos El
3. while (el Contador es menor que 1000)
3.1 i f (el entero es ms grande que el Mayor)
EncontrarMayor
then

End if
3.1.1 Establece el valor del entero como el Mayor
Entrada: Una lista de enteros
1. Establece el Mayor en O
2. while (ms enteros)
Encontr'arMsGrande
Entrada: El Mayor y el enter~' . e,
1. if (el entero ms grande que el Mayor)
3.2 Incrementa el contador then
End while 2.1' EncontrarMs
1.1 Bstablece el valor del entero como el
Grande
4. Devuelve el Mayor Jvlayor
End End while Erid' ifc
3. Devuelve el Mayor End
111 End

, ,
8.4 DEFINICION MAS fOR.MAL Figura 8.9 Concepto de subalgoritmo

Ahora que hemos estudiado el concepto de un algoritmo y hemos mostrado su representacin,


El algoritmo EncontrarMayor ejecuta cada instruccin hasta que encuentra el nombre de
se presenta una definicin ms formal:
otro algoritmo, EncontrarMsGrande, en la lnea 2.1. En esta lnea, EncontrarMayor se sus-
pende y EncontrarMsGrande comienza. EncontrarMsGrande encuentra el nmero ms
Algoritmo: una serie ordenada de pasos precisos que produce un resultado y termina en
grande entre el valor del Mayor y el valor del entero actual. Esto se conoce como una llama-
un tiempo finito.
da de funcin. Observe que en cada iteracin EncontrarMsGrande se llama una vez. Usted
puede pensar que este diseo es ms grande que el diseo original. En este caso es verdad.
Expliquemos con mayor detalle esta definicin.
Pero el uso de subalgoritmos tiene ventajas que hacen algo ms que compensar el esfuerzo
adicional de escribir unas cuantas lneas ms de cdigo:
SERIE ORDENADA Un algoritmo debe ser una serie de instrucciones ordenadas y bien defmidas.
II1II Es ms comprensible. Al estudiar el algoritmo EncontrarMayor, usted puede ver de in-
PASOS Cada paso en un algoritmo debe definirse de una manera clara e inequvoca. Si un paso es pa-
mediato que una tarea (encontrar el ms grande entre dos nmeros) se repite.
PRECISOS ra sumar dos nmeros se deben definir ambos nmeros, as como la operacin de suma. No
puede utilizarse el mismo smbolo para referenciar suma en una parte y multiplicacin en al- 11 Un subalgoritmo puede llamarse muchas veces en diferentes partes del algoritmo princi-
gn otro lado. pal sin que se vuelva a escribir.

PRODUCE Un algoritmo debe producir un resultado; de lo contrario es intil. El resultado pueden ser da- El algoritmo 8.6 muestra en pseudocdigo cmo utilizar un subalgoritmo dentro de un al-
UN RESULTADO tos que se devuelven al algoritmo que hace la llamada o algn otro algoritmo (por ejemplo, goritmo.
imprimir).
Algoritmo 8.6 Encontrar el nmero mayor
TERMINAR EN UN Un algoritmo debe terminar (detenerse). Si no lo hace (por ejemplo que tenga un ciclo infi-
TIEMPO FINITO nito), entonces no se ha creado un algoritmo. En el captulo 17, estudiaremos problemas so- EncontrarMayor
lubles e insolubles, y usted ver que un problema soluble tiene una solucin en la fonna de Entrada: Una lista de enteros positivos
un algoritmo que tenruna. l. Establece el Mayor en O
2. while (ms enteros)
2.1 EncontrarMayor
8.5 SUBALGORITMOS End while
3. Devuelve el Mayor
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 programacin estructurada requieren que un
EncontrarMsGrande
algoritmo se divida en pequeas unidades llamadas sllbalgoritmos (los trminos subprogra-
Entrada: El nmero mayor y el entero actual
mas, subrutinas, procedimientos, funciones, mtodos y mdulos tambin se utilizan). Ca-
1. if (el entero es ms grande que el Mayor)
da subalgoritmo a su vez se divide en subalgoritmos ms pequeos. El proceso contina hasta
then
que los subalgoritmos se vuelven intrnsecos (comprensibles de inmediato).
1.1 Establece el valor del entero como el Mayor
Usted puede diviilir el algoritmo 8.4 en un algoritmo principal y en un subalgoritmo. Es-
End if
te algoritmo es un buen candidato para este propsito debido a que repite una tarea muchas
End
veces. En cada iteracin, el algoritmo encuentra el nmero mayor entre dos enteros. Usted
puede separar esta parte de la tarea y crear una pequea subtarea fuera de ella (figura 8.9). lIi
.. Algoritmos 8.6 Algoritmos bsicos 111
CARTA Otra herramienta que los programadores utilizan es la carta estructurada, la cual es una he~
ESTRUCTURADA rramienta de alto nivel que muestra la relacin entre diferentes mdulos en un algoritmo. Se
utiliza principalmente en el nivel de diseo y no en el nivel de programacin. En el apndice
E se estudia la carta estructurada.

,
8.6 ALGORITMOS BASICOS
Varios algoritmos se utilizan en la ciencia de la computacin con tanta frecuencia que se les
considera bsicos. En esta seccin estudiamos los ms comunes. El anlisis es muy general,
ya que su implementacin depende del lenguaje.

SUMATORIA Uno de los algoritmos ms comunes en las ciencias de la computacin es la sumatoria. Us-
ted puede sumar dos o tres nmeros muy fcilmente, pero cmo puede sumar muchos n-
meros o una serie variable de nmeros? La solucin es simple: Utilice el operador de suma
en un ciclo (figura 8.10). Un algoritmo que suma tiene tres partes lgicas: Figura 8.11 Multiplicatoria

1. Inicializacin de la suma al principio.


2. El ciclo, el cual aade en cada iteracin un nuevo nmero a la suma. Por ejemplo, el algoritmo anterior puede utilizarse para calcular :t usando una modificacin
menor (se deja como ejercicio). Como otro ejemplo, el mismo algoritmo puede usarse para
3. Devolver el resultado despus de salir del ciclo. calcular el factorial de un nmero (se deja como ejercicio).

,... "'." ...... y MAYOR Estudiamos el algoritmo para encontrar el nmero mayor entre una lista de nmeros al prin-
cipio del captulo. La idea era escribir una estructura de decisin para encontrar el ms gran-
de de dos nmeros. Si usted pone esta estructura en un ciclo, puede encontrar el nmero
mayor de una lista de nmeros.
Detenninar el nmero menor entre una lista de nmeros es similar con dos diferencias me-
nores. Primero, se utiliza una estructura de decisin para encontrar el menor de dos nmeros.
Segundo, se inicializa con un nmero muy grande en lugar de uno muy pequeo.

Una de las aplicaciones ms comunes en las ciencias de la computacin es la ordenacin, 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, tomara horas y horas encon-
trar una sola pieza de informacin. Imagine la dificultad de encontrar el nmero telefnico de
alguien en un directorio telefnico que no estuviera ordenado.
En esta seccin presentamos tres algoritmos de ordenacin: ordenacin de seleccin, orde-
nacin por burbuja y ordenacin por insercin. Estos tres algoritmos de ordenacin son la ba-
se de los ordenamientos ms rpidos utilizados actualmente en las ciencias de la
computacin.
Figura 8.10 Sumatoria

En la ordenacin por seleccin, la lista se separa en dos sublistas -ordenada y sin ordenar-
MULTIPlICATORIA Otro algoritmo comn es hallar el producto de una lista de nmeros. La solucin es simple: seleccin las cuales se dividen por una pared imaginaria. Usted encuentra el elemento ms pequeo de
Use el operador de multiplicacin en un ciclo (figura 8.11). Un algoritmo de producto tiene la sublista sin ordenar y 10 intercambia por el elemento al principio de los datos sin ordenar.
tres partes lgicas: Despus de cada seleccin e intercambio, la pared imaginaria entre las dos sublistas mueve
un elemento hacia delante, aumentando el nmero de elementos ordenados y disminuyendo
1. Inicializacin del producto al principio. el nmero de aquellos sin ordenar. Cada vez que usted mueve un elemento de la sublista sin
2. El ciclo, el cual multiplica en cada iteracin un nuevo nmero por el producto. ordenar a la lista ordenada, usted ha completado un paso de ordenacin. Una lista de n ele-
mentos requiere n - 1 pasos para reacomodar los datos completamente. El orden de seleccin
3. Devuelve el resultado despus de salir del ciclo. se presenta grficamente en la figura 8.12.
111 Algoritmos
8.6 Algoritmos bsicos ..

Pared Inicio

Intercambio (elemento menor por elemento k) Se coloca la pared al principio


de la lista

Ordenados Sin ordenar


Mientras hay ms elementos falso
en la lista sin ordenar
Figura 8.12 Ordenacin por seleccin

;~ ~t~~~~:1:11~:~~~\::,d:~
Lista original :Esto pJ~~:hacer~q;~,n
su~~~rpgram~\ irnpIic~\m
Sin ordenar

El elemento ms pequeo
se intercambia con el primer

.. Sin ordenar
Despus del paso 1 elemento de la lista sin ordenar

La pared se mueve un elemento


a la derecha

Despus del paso 2

Alto
Despus del paso 3
11 ID
Ordenados Sin ordenar Figura 8.14 Algoritmo de ordenacin por seleccin

Despus del paso 4


En el mtodo de ordenacin por burbuja, la lista se divide en dos sublistas: ordenada y sin
Ordenados
burbuja ordenar. El elemento ms pequeo es una burbuja de la sublista sin ordenar y se mueve a la
lista ordenada. Despus de que el elemento menor se ha movido a la lista ordenada, la pared
Despus del paso 5 se mueve un elemento hacia delante, aumentando el nmero de elementos ordenados y dis-
minuyendo el nmero 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 ordenacin se completa (figura 8.15).
Dada una lista de n elementos, la ordenacin por burbuja requiere hasta n - 1 pasos para or-
Figura 8.13 Ejemplo de ordenacin por seleccin denar los datos.

La figura 8.13 ubica un conjunto de seis enteros y como son ordenados. Muestra cmo
p~ed entre las sublistas ordenada y sin ordenar se mueve en cada paso. A medida que estu-
dIe la figura Se dar cuenta de que la lista est ordenada despus de cinco pasos, lo cual es Pared Burbujas que suben
uno menos que el nmero de elementos en la lista. De esta manera, si usted utiliza un ciclo
para controlar el ordenamiento, el ciclo tendr una iteracin menos que el nmero de elemen-
tos en la lista.

Algoritmo El a.lgori.tmo .utiliza dos ciclos, uno dentro del otro. El ciclo exterior se itera para cada paso;
de la ordenacin el cIclo mtenor encuentra el elemento ms pequeo en la lista sin ordenar. La figura 8.14 Ordenados Sin ordenar
por seleccin mue~s~a el diagrama de flujo para el algoritmo de ordenacin por seleccin. Dejamos el pseu-
docodlgO como un ejercicio . Figura 8.15 Ordenacin por burbuja

.
Algoritmos 8.6 Algoritmos bsicos ..

La figura 8.16 muestra cmo la pared se mueve un elemento en cada paso. Al observar el
primer paso, usted comienza con 56 y 10 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 ningn 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 ubicacin y la
pared se mueve una posicin hacia arriba.
El orden de burbuja se escribi originalmente para "burbujear hacia abajo" el elemento en la Ordenados Sin ordenar
posicin superior de la lista. Desde el punto de vista de la eficiencia, no hay diferencia entre que
sea el elemento en la posicin superior el que burbujea hacia abajo o sea el elemento inferior, Figura 8.17 Ordenacin por insercin
Desde el punto de vista de la consistencia, sin embargo, hace que las comparaciones entre los
ordenamientos sean ms fciles si los tres trabajan del mismo modo. Por esa razn, hemos ele~
gido burbujear el valor inferior en cada paso.

Lista original

~ 231781451 8 1321561 Lista original


111 .. Despus del paso 1
Sin ordenar

ij 23178145 1321 56 1
...L. 11 lfI
Despus del paso 1
Despus del paso 2
Sin ordenar

Ordenaf~s. ~ ~ __~i~ ~~rdenar


Despus del paso 2
.. Sm. ordenar .. 18123l4~i~~n ;21 56 1 Despus del paso 3
11. ~

f'~JI<231 ~j~ 451 781 561


Ordenados
Despus del paso 3
11 .. 111 .. Despus del paso 4
Ordenados Sin ordenar
Ordenados
Despus del paso 4 Ordenado
Despus del paso 5
Ordenados
Ordenados
Figura 8.16 Ejemplo de ordenacin por burbuja

Figura 8.18 Ejemplo de ordenacin por insercin


Algoritmo de ordenacin por burbuja La ordenacin por burbuja tambin utiliza dos
ciclos, uno dentro del otro, El ciclo exterior se itera para cada paso; cada iteracin del ciclo
interior trata de burbujear un elemento hacia la parte superior (izquierda). Dejamos el diagra- En la ordenacin por insercin, al igual que en los otros dos algoritmos de ordenacin ana-
ma de flujo y el pseudocdigo corno ejercicios, lizados en este captulo, 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
Ordenacin El algoritmo de la ordenacin por insercin es una de las tcnicas de ordenamiento ms co- y se inserta en el lugar apropiado (figura 8.17). Observe que una lista de n elementos tomar
por insercin munes y a menudo la utilizan los jugadores de cartas. Cada carta que un jugador escoge se cuando ms 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 ordenacin por insercin a travs de nuestra lista de seis nmeros.
miento de las cartas es un ejemplo de ordenacin 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 Algoritmos bsicos ..
Algoritmos

Algoritmo de ordenacin por insercin El diseo de la ordenacin por insercin


el mismo patrn visto tanto en la ordenacin por seleccin como en la ordenacin por
ja. El ciclo exterior se itera para cada paso y el ciclo intenor encuentra la posicin de .
cin. Dejamos el diagrama de flujo y el pseudocdigo como ejercicios.

Otros algoritmos Existen otros algoritmos de ordenacin: ordenacin rpida, ordenacin de pila, ordenacin
de ordenacin Shell, ordenacin por balde, ordenacin por fusin, etc. La mayora de estos algoritmos
ordenacin avanzados se analiza en libros sobre estructuras de datos.]
Tal vez se pregunte por qu hay tantos algoritmos de ordenacin. La razn es el tipo
datos que necesitan ser clasificados. Un algoritmo es ms eficiente para una lista que se or-
dena ms frecuentemente, mientras que otro algoritmo es ms eficiente para una lista que
t completamente desordenada. Para decidir cul algoritmo es adecuado para una aplicaci'n
en particular, se necesita una medicin llamada complejidad de algoritmos. Este tema se
tudia en el captulo 17, pero una comprensin a fondo requiere tomar cursos adicionales
programacin y estructuras de datos.

BSQUEDA. Otro algoritmo comn en las ciencias de la computacin es la bsqueda, la cual es el proce-
so de encontrar la ubicacin de lill objetivo entre una lista de objetos. En el caso de una
la bsqueda significa que dado un valor, usted desea encontrar la ubicacin (ndice) del primer
elemento en la lista que contiene ese valor. El concepto de bsqueda se ilustra en la figura 8.19.

Figura 8.20 Ejemplo de una bsqueda secuencial

El algoritmo de bsqueda secuencial es muy lento. Si usted tiene una lista de 1 milln de ele-
>BIsc~uleda binaria mentos, debe hacer un milln de comparaciones en el peor de los casos. Si la lista no est or-
denada, sta es la nica solucin. Sin embargo, si la lista est ordenada puede usar un
algoritmo ms eficiente llamado bsqueda binaria. En trminos generales, los programado-
res utilizan una bsqueda binaria cuando una lista es grande.
Una bsqueda 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 revisin posterior en la segunda mitad. Si es-
Figura 8.19 Concepto de bsqueda 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 cmo encontrar el
Hay dos bsquedas bsicas para listas: bsqueda secuencial y bsqueda binaria. La bs- objetivo, 22, en la lista usando tres referencias: primero, medio y ltimo.
queda secuencial puede utilizarse para localizar un elemento en cualquier lista, mientras que
la bsqueda binaria requiere que la lista se ordene.
1. Al principio, el primero muestra O y el ltimo muestra 11. Sea el medio la posicin de
en medio. (O + 11)/2, o 5. Ahora se compara el objetivo (22) con los datos en la posi-
Bsqueda La bsqueda secuencial se utiliza si la lista en la que se est realizando la bsqueda no est
cin 5(21). El objetivo es mayor que este valor, as que se ignora la primera mitad.
secuencial ordenada. Por 10 general usted utiliza esta tcnica slo para listas pequeas o listas que no se
consultan a menudo. En otro casos, es mejor primero ordenar la lista y luego realizar la bs-
2. El primero se mueve despus del medio a la posicin 6. Sea el medio la parte media de
queda usando la bsqueda binaria que se estudia ms adelante.
la segunda mitad, (6 + 11)/2, u 8. Ahora se compara el objetivo (22) con los datos de la
En una bsqueda secuencial usted comienza buscando el objetivo desde el principio de la
posicin 8 (62). El objetivo es menor que este valor, as que los nmeros de este valor
lista y contina hasta que encuentre el objetivo o est seguro de que ste no est en la lista
(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 posicin 7. El medio se calcula de nuevo, (7 +
6)/2. o 6. El objetivo (22) se compara con el valor de esta posicin (22). Usted ha en-
1 Vase Richard E Gilberg y BehrouzA. Forouzan, Data Stmctures: A PseudocodeApproach with C++, contrado el objetivo y puede salir.
(Padic Grove, California, Brooks/Cole, 2001), pp. 502-559.
.. Algoritmos 8.7 Recursividad 111
primero medio ltimo -
si n = O

Factorial (n) =

n X Factorial (n - 1) si n > O
~ -

Figura 8.23 Definicin recursiva de factorial


medio ltimo
22> 21
0C!1
.~i~. Factorial (3) ~ 3 X Factorial (2) Factorial (3) ~ 3 X

Factorial (2) ~ 2 X Factorial (1) Factorial (2) ~ 2 X 1~ 2

Factorial (1) ~ 1 X 1 ~ 1

Figura 8.24 Trazado de la solucin recursiva del problema factorial

Un algoritmo se defme de manera recursiva siempre que el algoritmo aparece dentro de la de-
finicin misma. Por ejemplo, la funcin factorial puede definirse de manera recursiva como
Figura 8.21 Ejemplo de una bsqueda binaria en la figura 8.23.
La descomposicin de factorial (3), usando la recursividad, se muestra en la figura 8.24.
Si usted estudia la figura con cuidado, notar que la solucin 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 clculo recursivo es mucho ms grande y ms
difcil. As que por qu querra usar el mtodo recursivo? Aunque el mtodo recursivo pare-
En general, hay dos mtodos para escribir algoritmos que resuelvan un problema. Uno utili- ce ms difcil cuando se usa papel y pluma, a menudo es una solucin mucho ms fcil y ms
za iteraciones y el otro usa la recursividad. La recursividad es un proceso mediante el cual elegante cuando se usan computadoras. Asimismo, ofrece una simplicidad conceptual para el
un algoritmo se llama a s mismo. creador y el lector.

DEFINICiN Para estudiar un ejemplo simple, considere el clculo de un factorial. El factorial de un n- Solucin iterativa Escribamos un algoritmo para resolver el problema factorial de modo iterativo. Esta solucin
ITERATIVA mero es el resultado de los valores absolutos desde 1 hasta el nmero. La definicin es itera- por lo general implica un ciclo como el que aparece en el algoritmo 8.7.
tiva (figura 8.22). Un algoritmo es iterativo siempre que la definicin no involucra al
algoritmo mismo. Algoritmo 8.7 Factorial iterativo

Factorial
Entrada: Un entero positivo num
1. Establece FactN en 1
si n = O 2. Establece i en 1
3. whi 1 e (i menor o igual que num)
Factorial (n) ~
3.1 Establece FactN a FactN X i
3.2 Incrementa i
n X (n - 1) X (n - 2) X ... X 3 X 2 X 1 si n > O
End while
4. Devuelve FactN
Figura 8.22 Definicin iterativa de factorial End
.. Algoritmos
8.10 Prctica la
Solucin recursiva La solucin recursiva para un factorial se ve en el algoritmo 8.8. No se necesita un ciclo; el La bsqueda secuencial se usa para listas sin ordenar. 11 Un algoritmo iterativo implica slo los parmetros y no
concepto por s mismo implica repeticin. En la versin recursiva, usted permite que el algo-
el algoritmo mismo.
ritmo factorial se llame a si mismo. '111 La bsqueda binaria se usa para listas ordenadas.
11 Un algoritmo recursivo implica el algoritmo mismo.

Algoritmo 8.8 Factorial recursivo

Factorial ,
Entrada: Un entero positivo num
1. i f (num es igual a O)
PRACTICA
then
1.1 devuelve 1 DE REPASO 18. En las ciencias de la computacin hay _ _ _ _ estruc-
else Cul es la definicin formal de algoritmo? turas bsicas.
1.2 devuelve num x Factorial (num - 1) a. una
Defina las tres estructuras utilizadas en la programacin b. dos
End if estructurada.
End c. tres
3. Cmo se relaciona un diagrama de flujo con un algo- d. cuatro
ritmo?
19. La estructura _ _ _ _ prueba una condicin .
. 4. Cmo se relaciona el pseudocdigo con un algoritmo? a. de secuencia
,
5. Cules son los otros trminos para las unidades que b. de decisin
8.8 TERMINOS CLAVE conforman un algoritmo? c. de repeticin
d. lgica
algoritmo funcin procedimiento Cmo utilizan los programadores la carta estructurada?
bsqueda iteracin pseudocdigo Cul es el propsito del algoritmo de sumatoria? 20. La estructura _ _ _ _ es cualquier accin.
bsqueda binaria mdulo recursividad a. de secuencia
Cul es el propsito del algoritmo de multiplicatoria?
bsqueda secuencial ordenacin subalgoritmo b. de decisin
carta estructurada ordenacin por burbuja subprograma Cul es el propsito de un algoritmo de ordenacin? c. de repeticin
datos de entrada ordenacin por insercin subrutina Cules son los tres tipos de algoritmos de ordenacin? d. lgica
datos de salida ordenacin por seleccin sumatoria
En qu se parecen los tres algoritmos de ordenacin? 21. La estructura _ _ _ _ maneja acciones repetitivas.
diagrama de flujo paso de ordenacin
En qu difieren? a. de secuencia
Cul es el propsito de un algoritmo de bsqueda? b. de decisin
c. de repeticin
Cules son los dos tipos de bsqueda principales?
d. lgica
8.9 RESUMEN Cul es la diferencia entre ellos?
22. _ _ _ _ es una representacin pictrica de un algorit-
D una definicin y un ejemplo de un proceso iterativo.
l1li De manera informal, un algoritmo es un mtodo paso a II1II Una carta estructurada es una herramienta de diseo de mo.
D una definicin y un ejemplo de un proceso recursivo.
paso para resolver un problema o realizar una tarea. alto nivel que muestra la relacin entre diferentes mdu- a. Un diagrama de flujo
los de un programa. b. U na carta estructurada
l1li Un algoritmo acepta una lista de entrada de datos y crea
UNTAS DE OPCiN MLTIPLE c. El pseudocdigo
una lista de salida de datos. l1li La sumatoria es un algoritmo bsico en el cual los n-
d. Un algoritmo
lIlI Un programa es una combinacin de estructuras de se- meros se suman. ____ es un mtodo paso a paso para resolver un
cuencia, estructuras de decisin y estructuras de repeti- llII La multiplicacin es un algoritmo bsico en el cual los problema o realizar una tarea. 23. es una representacin del cdigo parecida al
cin. nmeros se multiplican. a. Una estructura ingls.

!IIII Un diagrama de flujo es una representacin pictrica de liII Encontrar el mnimo o el mximo en una lista de nme- b. Una recursividad a. Un diagrama de flujo
un algoritmo. ros es un algoritmo bsico. c. Una iteracin b. Una carta estructurada
c. El pseudocdigo
!IIII El pseudocdigo es una representacin de un algoritmo 111 La ordenacin, un proceso para acomodar los datos en d. Un algoritmo
d. Un algoritmo
parecida al ingls. orden, es un algoritmo bsico. Para establecer el valor de una variable antes de que ocu-
l1li Formalmente, un algoritmo es una serie ordenada de pa- 111 La ordenacin por seleccin, la ordenacin por burbuja Y 24. es una herramienta de alto nivel que muestra
rra cualquier procesamiento, usted la variable.
sos precisos que produce un resultado y termina en un la relacin entre diferentes mdulos de un programa.
la ordenacin por insercin son algoritmos de ordenacin a. estructura
tiempo finito. de uso comn. a. Un diagrama de flujo
b. itera
b. Una carta estructurada
l1li Un algoritmo puede dividirse en unidades ms pequeas l1li La bsqueda, un proceso para localizar un objetivo en c. inicializa c. El pseudocdigo
llamadas subalgoritmos. una lista de datos, es un algoritmo bsico. d. incrementa d. Un algoritmo
Algoritmos 8.10 Prctica ..

25. Un subalgoritmo tambin se conoce como _ _ __ 33. En la ordenacin por , el elemento que va a la Haga un diagrama de flujo para un algoritmo que en- 54. Una lista contiene los siguientes elementos. Los prime-
a. funcin lista ordenada siempre es el primer elemento en la lista cuentre el nmero menor entre N nmeros. ros dos elementos se han ordenado usando el algoritmo
b. subrutina sin ordenar. 43. Escriba un pseudocdigo para el algoritmo del nmero de ordenacin por insercin. Cul es el valor de los ele-
c. mdulo a. seleccin menor del ejercicio 42. mentos en la lista despus de tres pasos ms de la or-
d. todos los anteriores b. burbuja denacin por insercin?
44. Haga un diagrama de flujo para un algoritmo que en-
c. insercin
cuentre el nmero mayor entre N nmeros. 3 13 7 26 44 23 98 57
26. es un algoritmo bsico que encuentra el pro- d. todos los anteriores
ducto de una lista de nmeros. Escriba un pseudocdigo para el algoritmo del nmero 55. Una lista contiene los siguientes elementos. Usando el
34. En la ordenacin por , el elemento ms peque~ mayor del ejercicio 44.
a. La sumatoria algoritmo de bsqueda binaria, detalle los pasos que se
o de la lista sin ordenar se intercambia con el elemen-
b. La multiplicatoria Escriba un pseudocdigo para el algoritmo de ordenacin siguieron para encontrar el nmero 88. En cada paso,
to al principio de la lista sin ordenar.
c. EIMenor por seleccin. muestre los valores del primero, ltimo y medio.
a. seleccin
d. El Mayor b. burbuja Haga un diagrama de flujo y escriba un pseudocdigo 8 13 17 26 44 56 88 97
c. insercin para el algoritmo de ordenacin por burbuja.
27. La _ _ _ _ es un algoritmo bsico que acomoda los 56. Una lista contiene los siguientes elementos. Usando el
d. todos los anteriores Dibuje un diagrama de flujo y escriba un pseudocdigo
datos de acuerdo con sus valores. algoritmo de bsqueda binaria. detalle los pasos que se
35. En la ordenacin por , el elemento ms peque- para el algoritmo de ordenacin por insercin. siguieron para encontrar 20. En cada paso, muestre los
a. solicitud de informacin
b. ordenacin o se mueve al principio de la lista sin ordenar. No hay Usando el algoritmo de ordenacin por seleccin, orde- valores de primero, ltimo y medio.
c. bsqueda intercambio uno a uno. ne la siguiente lista en forma manual y muestre su traba- 8 13 17 26 44 56 88 97
d. recursividad a. seleccin jo en cada paso:
b. burbuja 57. Escriba un algoritmo recursivo para encontrar el mxi-
14 7 23 31 40 56 78 9 2
28. ____ es un algoritmo bsico que suma una lista de c. insercin mo comn divisor (mcd) de dos enteros utilizando la de-
nmeros. d. todos los anteriores Usando el algoritmo de ordenacin por burbuja, ordene finicin de la figura 8.25.
la siguiente lista en forma manual y muestre su trabajo
a. La sumatoria 36. es un algoritmo bsico en el cual usted quie- en cada paso:
b. La multiplicatoria re encontrar la localidad de un objetivo en una lista de
c. El Menor 14 7 23 31 40 56 78 9 2 mCd (y. x)
elementos.
d. El Mayor a. La ordenacin Usando el algoritmo de ordenacin por insercin, orde- med (x, y) = x
b. La bsqueda ne la siguiente lista en forma manual y muestre su traba- [
29. ____ es un algoritmo bsico que encuentra el n- med (y, x mod y)
c. La multiplicatoria jo en cada paso:
mero menor de una lista de nmeros.
d. La sumatoria 14 7 23 31 40 56 78 9 2
a. La sumatoria Figura 8.25 Ejercicio 57
b. La multiplicatoria 37. Utilice una bsqueda _ _ _ para una lista sin ordenar.
Una lista contiene los siguientes elementos. Los prime-
c. El Menor a. secuencial
ros dos elementos se han ordenado usando el algoritmo
d. El Mayor b. binaria
de ordenacin por seleccin. Cul es el valor de los ele-
c. por burbuja 58. Escriba un algoritmo recursivo para encontrar la combi-
mentos en la lista despus de tres pasos ms de la or-
30. En la ordenacin por , los elementos se divi- d. por insercin denacin por seleccin? nacin de n objetos tomando k a la vez utilizando la de-
den en dos listas: ordenados y sin ordenar. 38. Utilice una bsqueda ____ para una lista ordenada. finicin de la figura 8.26.
78264413239857
a. seleccin a. secuencial
b. burbuja b. binaria Una lista contiene los siguientes elementos. Los primeros
c. insercin c. por burbuja dos elementos se han ordenado usando el algoritmo de

. ~ ;Le ~ Oo n ~ ;j
d. todos los anteriores d. por insercin ordenacin por burbuja. Cul es el valor de los elemen-
C(n k) si k

31. Para la ordenacin por ____ , se necesitan n - 1 pa- 39. La ____ es un proceso en el cual un algoritmo se
tos en la lista despus de tres pasos ms de la ordenacin
por burbuja?
(n - l. k) + e
(n -l. k - 1) si n > k > O J
sos para ordenar los datos. llama a s mismo.
7 8 26 44 13 23 57 98 Figura 8.26 Ejercicio 58
a. seleccin a. insercin
b. burbuja b. bsqueda
c. recursividad
c. insercin
d. iteracin
d. todos los anteriores

32. Para la ordenacin por _ _ _ , se necesitan dos ciclos. EJERCICIOS


a. seleccin 40. Escriba un pseudocdigo para el algoritmo de sumatoria
b. burbuja definido en la figura 8.10.
c. insercin 41. Escriba un pseudocdigo para el algoritmo de multipli-
d. todos los anteriores catoria definido en la figura 8.11.
9.1 Evolucin ..

EVOLUCIN
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

Le"guajes . e,
un programa de acuerdo con reglas predefinidas (sintaxis).
Con los aos, los lenguajes de computadora han evolucionado desde lenguaje de mqui-
na a lenguajes naturales. Una lnea de tiempo para lenguajes de computadora se presenta en
la figura 9.1.

programaclon "
;y~ o' C>
;f' ,,0'
S>~
lo"" ",0 -so'>
0
<$'
'"
~~ 0
'>
.o' ~:s:
<:>~ :::,.0--,

y~
,}
'0'
",'"

y~
",
,
.'
'0'

yO
&-'6
'0"
v'>'
""P
v~"" '":i
::toO '00
L..!!<:>

1940 1950 1960 1970 1990 2000

Figura 9.1 Evolucin de los lenguajes de computadora

En este captulo damos una visin general de los lenguajes de programacin para dar a
estudiantes una idea de los distintos lenguajes y cundo se usan. Primero estudiamos En los primeros das de las computadoras, los nicos lenguajes de programacin disponibles
evolucin de los lenguajes. Enseguida clasificamos los lenguajes de acuerdo con su eran los lenguajes de mquina. Cada computadora tena su propio lenguaje de mquina, el
para resolver problemas y los tipos de problemas que pueden resolver. Luego estudiamos cual est formado por cadenas de O y 1. El programa 9.1 muestra un ejemplo de un progra-
lenguaje popular y analizamos sus elementos y capacidades. ma en lenguaje de mquina. Este programa multiplica dos nmeros e imprime el resultado.

1. 00000000 00000100 0000000000000000


2. 01011110 00001100 11000010 0000000000000010
3. 11101111 00010110 0000000000000101
4. 11101111 10011110 0000000000001011
5. 11111000 10101101 11011111 0000000000010010
6. 01100010 11011111 0000000000010101
7. 11101111 00000010 11111011 0000000000010111
8. 11110100 10101101 11011111 0000000000011110
9. 00000011 10100010 11011111 0000000000100001
10. 11101111 00000010 11111011 0000000000100100
11. 01111110 11110100 10101101
12. 11111000 10101110 11000101 0000000000101011
13. 00000110 11111011 11000101 0000000000110001
14. 11101111 00000010 11111011 0000000000110100
15. 00000100 0000000000111101
16. 00000100 0000 OOOOOO111101

Programa 9.1 Programa en lenguaje de mquina

Las instrucciones en lenguaje de mquina deben estar en cadenas de O y 1 debido a que


el circuito interno de una computadora est formado por interruptores transistores y otros
dispositivos electrnicos que pueden estar en uno de dos estados: encendido o apagado. El
estado apagado se representa por O; el estado encendido, mediante 1.
la Lenguajes de programacin 9.2 Escribir un programa ..

1. /* Este programa lee dos nmeros enteros desde el


El nico lenguaje comprendido por una computadora es el lenguaje de mquioa. 2. teclado e imprime su producto.
3. Escri to por:
4. Fecha:
5. */
LENGUAJES Se vuelve evidente que no se escribirlan muchos programas si los programadores continuaran 6. #include <iostream.h>
SIMBLICOS trabajando en lenguaje de mquina. A principios de la dcada de 1950, Grace Hooper, un ma~ 7.
temtico y miembro de la Armada de Estados Unidos, desarroll el concepto de un lenguaje 8. int main (void)
que simplemente reflejaba los lenguajes de mquina utilizando smbolos, o ayuda nemotcni- 9. {
ca, para representar las diversas instrucciones del lenguaje de mquina. Dado que utilizaban 10. / / Declaraciones locales
smbolos, estos lenguajes se conocan como lenguajes simblicos. El programa 9.2 muestra 11. int numberl;
el programa de multiplicacin en un lenguaje simblico. 12. int number2;
13. int resul t;
1. entry rnain, "rn<r2> 14.
15. / / Instrucciones
2. sub12 #12, sp
16. cinn numberl;
3. jsb C$MAIN_ARGS
17. cinn number2;
4. movab $CHAR_STRING_CON
18. result ~ numberl * number2;
5.
19. cout resul t i
6. pushal -8 (fp)
20. return O;
7. pushal (r2)
21. } / / principal
8. calls #2,read
9. pushal -12(fp)
10. pushal 3(r2) Programa 9.3 Programa en lenguaje C++
11. calls #2,read
12. mu1l3 -8 (fp) ,-12 (fp) ,-
Idealmente, usted podra usar su lenguaje natural (por ejemplo, el idioma ingls, francs o
13. pusha 6(r2)
14. calls #2,print
chino) y la computadora lo comprendera y ejecutara sus solicitudes de inmediato. Aunque
esto puede parecer ciencia ficcin, actualmente se est realizando un trabajo considerable
15. clrl rO
16. ret sobre los lenguajes naturales en los laboratorios. Hasta el momento, su uso en la industria
todava es bastante limitado.
Programa 9.2 Programa en lenguaje simblico

Un programa especial llamado ensamblador se usa para traducir el cdigo simblico en


lenguaje de mquina. Como los lenguajes simblicos deban ensamblarse en lenguaje de ESCRIBIR UN PROGRAMA
mquina, pronto se conocieron como lenguajes ensambladores. Este nombre an se utili-
za en la actualidad para los lenguajes simblicos que representan rigurosamente el lenguaje Como se vio en la seccin anterior, una computadora comprende un programa slo si el pro-
de mquina. grama se traduce a su lenguaje de mquina. En esta seccin, explicamos el procedimiento
para convertir un programa en un lenguaje de alto nivel a un lenguaje de mquina.
LENGUAJES Aunque los lenguajes simblicos mejoraron en gran medida la eficiencia de la programa- Es tarea del programador escribir el programa y luego convertirlo en un archivo ejecu-
DIE ALTO NIVEL cin, an requeran que los programadores se concentraran en el hardware que estaban usan- table (lenguaje de mquina). Hay tres pasos en este proceso:
do. Trabajar con lenguajes simblicos tambin era muy tedioso debido a que cada instruccin
de mquina deba codificarse individuahnente. El deseo de mejorar la eficiencia del progra- 1. Escribir y editar el programa.
mador y cambiar el centro de atencin de la computadora al problema que se estaba resol- 2. Compilar el programa.
viendo condujo al desarrollo de los lenguajes de alto nivel. 3. Vincular el programa con los mdulos de biblioteca requeridos.
Los lenguajes de alto nivel se pueden portar a muchas computadoras diferentes, permi-
tiendo al programador concentrarse en la aplicacin en lugar de las complejidades de la La figura 9.2 muestra estos tres procesos.
computadora. Se disearon para liberar al programador de los detalles del lenguaje ensam-
blador. Los lenguajes de alto nivel comparten una caracterstica con los lenguajes simbli-
cos: deben convertirse a lenguaje de mquina. Este proceso se llama compilacin. El software utilizado para escribir programas se conoce como editor de texto. Un editor de
Con los aos, se desarrollaron varios lenguajes, en particular BASIC, COBOL, Pascal, texto ayuda a introducir, cambiar y almacenar datos de caracteres. Dependiendo del editor en
su sistema, usted podra usarlo para escribir cartas, crear infonnes o escribir programas. La
Ada, C, C++ y Java. El programa 9.3 muestra el programa de multiplicacin del programa PROGRAMAS
9.2 como si estuviera en lenguaje C++. gran diferencia entre las otras fonnas de procesamiento de texto y escribir programas es que
.. lenguajes de programacin 9.4 Categoras de lenguajes 111
DE PROGRAMAS
Una vez que su programa se ha ligado, est listo para su ejecucin. Para ejecutar su progra-
-3inelude <iostream, h> ma usted utiliza un comando del sistema operativo, como run, para cargar su programa en
int main (\loid) la memoria principal y ejecutarlo. Meter el programa en la memoria es la funcin de un pro-
int a\
grama de sistema operativo conocido como el cargador, el cual localiza el programa ejecu-
int b\ table y lo lee en la memoria. Cuando todo est listo se da el control al programa y comienza
la ejecucin.
ein ,;
return 0\ En la ejecucin de un programa tpico, el programa lee datos para su procesamiento ya
sea desde el usuario o desde un archivo. Despus de que el programa procesa los datos, pre-
Biblioteca
del sistema ODEOIOO Fuente para la salida. La salida de los datos puede ser hacia el monitor del usuario o a un archivo.
lQlOl~-,O
Cuando el programa est terminado, se lo indica al sistema operativo, el cual elimina el pro-
O~OGIOll
'-Ol101~O
grama de la memoria. La ejecucin de un programa en un entorno de computadora personal
aparece esquematizada en la figura 9.3.
:)~_18l081D C~O~(}
GO~120-lj: :L'cOl

Figura 9.2 Construccin de un programa

los programas se orientan en torno a lneas de cdigo mientras que la mayor parte del procesa-
miento de texto se orienta en torno a caracteres y lneas. Despus 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.

COMPILACiN La informacin en un archivo fuente almacenada en el disco debe traducirse a lenguaje de m-


quina de modo que la computadora pueda comprenderlo, La mayora de los lenguajes de alto
DE PROGRAMAS
nivel utiliza un compilador para hacerlo. El compilador en realidad son dos programas separa-
Figura 9.3 Ejecucin de un programa
dos: el preprocesador y el traductor.
El preprocesador lee el cdigo fuente y lo prepara para el traductor. Cuando prepara el
cdigo, busca comandos especiales conocidos como directivas de preprocesador. Estas di- ,
rectivas indican al preprocesador que busque bibliotecas de cdigo especiales, haga sustitu- 9.4 CATEGORIAS DE LENGUAJES
ciones en el cdigo y prepare de algunas otras maneras el cdigo para su traduccin a
lenguaje de mquina. El resultado del preprocesarniento se llama unidad de traduccin. Actualmente, los lenguajes de computadora se clasifican de acuerdo con el mtodo que utili-
Despus de que el preprocesador ha preparado el cdigo para su compilacin, el traduc- zan para resolver un problema y la categora de problemas que resuelven. Dividimos los
tor realiza el trabajo de convertir la unidad de traduccin a lenguaje de mquina. El traductor lenguajes de computadora en cinco categoras: lenguajes procedurales (imperativos), lengua-
lee la unidad de traduccin y escribe el mdulo 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).
mdulo de objeto es el cdigo en lenguaje de mquina. Aun cuando la salida del compila-
dor est en lenguaje de mquina no est listo para ejecutarse; es decir, an no es ejecutable
porque no tiene todas las partes requeridas.
Lenguajes
de computadora

LlGADOR Un lenguaje de alto nivel tiene muchos subprogramas, algunos de los cuales estn escritoS
DE PROGRAMAS 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 matemticas que existen en al-
gunas otras partes y deben ser adjuntadas a su programa. Elligador ensambla todas estas
funciones, las de usted y las del sistema, en su programa ejecutable finaL Figura 9.4 Categoras de lenguajes
liI Lenguajes de programacin
9.4 Categoras de lenguajes ..

LENGUAJES Un lenguaje procedural, o imperativo, utiliza el mtodo tradicional de programacin. Sigue el


PRO(EDURALES mismo mtodo empleado por el hardware de computadora para ejecutar un programa (buscar Pascal Niklaus Wirth invent Pascal en 1971 en Zurich, Suiza. Recibi su nombre en honor a Blaise
y traer, decodificar, ejecutar). Un lenguaje procedural es una serie de instrucciones que se Pascal, el matemtico y filsofo francs del siglo xvn que invent la calculadora Pascalina.
(IMPERATIVOS) Pascal se dise con un objetivo especfico en mente: ensear programacin a los nova-
ejecutan una por una de principio a fin a menos que una instruccin mande el control a al-
guna otra parte. Incluso en este caso, el programa todava requiere una serie de instruccio- tos al enfatizar el mtodo de programacin estructurada. Aun cuando Pascal se convirti en
nes que se ejecutan una despus de otra, aunque algunas podran ejecutarse ms de una vez el lenguaje ms popular en la academia, nunca logr la misma popularidad en la industria.
o algunas podran saltarse. Los lenguajes de procedimiento actuales le deben mucho a este lenguaje.
Cuando los programadores necesitan resolver un problema usando uno de los lenguajes
procedurales, deben saber cul es el procedimiento a seguir. En otras palabras, para cada pro- e El lenguaje e Se desarroll a principios de la dcada de 1970 por Dennis Ritchie en Bell
blema el programador debe disear un algoritmo cuidadosamente, y el algoritmo debe tradu- Laboratories. Originalmente estaba pensado para escribir sistemas operativos y software del
cirse con cuidado a instrucciones. sistema (la mayor parte del sistema operativo UNIX est escrito en C). Posteriormente, se
Cada instruccin en un lenguaje procedural manipula los elementos de datos (cambia los volvi popular entre los programadores por varias razones:
valores almacenados en localidades de la memoria o los mueve a alguna otra parte) o es una
iI C tiene todas las instrucciones de alto nivel que un lenguaje de programacin estructu-
instruccin de control que localiza la siguiente instruccin a ser ejecutada. Por esta razn,
rada de alto nivel debe tener; oculta los detalles del hardware al programador.
un lenguaje procedural a veces se llama lenguaje imperativo: cada instruccin es un coman-
do para que el sistema de computacin realice alguna tarea especfica. !lI C tambin tiene algunas de las instrucciones de bajo nivel que permiten al programador
Se han desarrollado varios lenguajes procedurales de alto nivel durante las ltimas dca- tener acceso al hardware de manera directa y rpida; C est ms cerca de ser un lengua-
das: FORTRAN, COBOL, Pascal, C y Ada. En esta seccin presentamos brevemente carac- je ensamblador que cualquier otro lenguaje. Esto lo vuelve un buen lenguaje para los
tersticas de cada lenguaje. Ms adelante en este captulo analizamos los elementos de C con programadores de sistemas.
ms detalle. 111 C es un lenguaje muy eficiente; sus instrucciones son breves. Algunas veces un smbo-
lo en e puede realizar la misma tarea que una palabra larga en un lenguaje corno CO-
FORTRAN FORTRAN (FORmula TRANslation: traduccin de frmulas), diseado por un grupo de in-
BOL. Esta concisin atrae a los programadores que quieren escribir programas cortos.
genieros de IBM bajo la supervisin de Jack Backus, estaba disponible comercialmente en
1957. FORTRAN fue el primer lenguaje de alto nivel. Tiene algunas caractersticas que, des- l1li C ha sido estandarizado por el ANSI y la ISO.
pus de cuatro dcadas, an lo hacen un lenguaje ideal para aplicaciones cientficas y de in-
Algunos elementos del lenguaje C se estudian con ms detalle al final de este captulo.
geniera. Estas caractersticas pueden resumirse como sigue:
111 Aritmtica de alta precisin
Ada recibi su nombre por Augusta Ada Byron, la hija de Lord Byron y asistente de Char-
111 Capacidad de manejo de nmeros complejos les Babbage (el inventor de la mquina analtica). El Departamento de Defensa (DoD) de Es-
111 Clculo de exponentes (a') tados Unidos cre este lenguaje para que fuera el lenguaje unifonne usado por todos los
Durante los ltimos 40 aos, FORTRAN ha pasado por varias versiones: contratistas del DoD.
Ada tiene tres caractersticas que lo vuelven un lenguaje muy utilizado por el DoD, las
1, FORTRAN computadoras jumbo y la industria:
2. FORTRAN II
3. FORTRAN IV !II Tiene instrucciones de alto nivel como otros lenguajes procedurales.
4. FORTRAN 77 11 Tiene instrucciones que permiten el procesamiento en tiempo real. Esto lo vuelve ade-
5. FORTRAN 99 cuado P!lTa el control de procesos.
6. HPF (High Peiformance FORTRAN: FORTRAN de alto rendimiento)
11 Tiene capacidades de procesamiento paralelo. Puede ejecutarse en computadoras main-
La versin ms reciente (HPP) se utiliza en computadoras con multiprocesadores de alta ve- frame con mltiples procesadores.
locidad.

(OBOI.. COBOL (COmmon Business-Oriented Language: Lenguaje comn orientado a negocios) LENGUAJES La programacin orientada a objetos utiliza un mtodo para la solucin de problemas total-
fue diseado por un grupo de cientficos de computacin dirigido por Grace Hopper de la ORIENTADOS mente diferente de la programacin de procedimientos. Usted puede pensar en un elemento
Armada de Estados Unidos. COBOL tiene una meta de diseo especfica: servir como un A. OBJETOS de datos en ambos lenguajes como un objeto. Un programa puede imaginarse como una se-
lenguaje de programacin 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 ingeniera. Los programas para En la programacin procedural, los objetos estn completamente separados y son totalmen-
negocios no necesitan los clculos precisos que requieren los programas de ingeniera. Las te independientes de las operaciones. Los objetos pueden almacenarse en una computadora y
necesidades de programacin del mundo de los negocios pueden resumirse como sigue: diferentes programas que utilizan aplicaciones distintas se aplican a ellos. En otras palabras,
en la programacin procedurallos objetos son pasivos. No tienen ninguna operacin definida
11 Acceso rpido a archivos y bases de datos para ellos. Los programadores definen las operaciones y las aplican a los objetos.
11 Actualizacin rpida de archivos y bases de datos En la programacin orientada a objetos, los objetos y las operaciones que se van a aplicar
ilI Generacin de una gran cantidad de informes en ellos estn ligados. El programador primero define un objeto y los tipos de operaciones
11 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 combinacin e invocar algunas o todas las operaciones definidas para resol ver un proble-
ma. En otras palabras, los objetos en la programacin orientada a objetos estn activos.

L
lenguajes de programacin 9.4 Categoras de lenguajes ..

La idea es similar para los objetos en la vida reaL Existen objetos que son pasivos, como vidor y se ejecuta por un explorador. El explorador puede descargar el applet y ejecutarlo 10-
una piedra. No hay operacin incluida con la piedra. Si alguien quiere realizar una opera~ cahnente.
cin en una piedra, l o ella define la operacin y la realiza. Por otro lado, un automvil En Java, un programa de aplicacin (o un applet) es una coleccin de clases e instancias de
un objeto activo. Hay varias operaciones definidas para un automvil. El conductor slo ne~ esas clases. Una caracterstica interesante de Java es la biblioteca de clases, una coleccin
cesita invocar a una de estas operaciones. de clases. Aunque C++ tambin ofrece una biblioteca de clases, en Java el usuario puede
Varios lenguajes orientados a objetos se han desarrollado. Estudiamos brevemente construir nuevas clases con base en aquellas provistas por la biblioteca.
caractersticas de dos: C++ y Java. La ejecucin de un programa en Java tambin es nica. Usted crea una clase y la pasa al
intrprete que llama a los mtodos de clase.
El lenguaje C++ fue desarrollado por Bjarne Stroustrup en BeU Laboratories como un len~ Otra caracterstica interesante en Java es la ilacin mltiple (multithreading). Un hilo (th-
c++ read) es una secuencia de acciones ejecutadas una despus de otra. C++ slo permite una
guaje e mejor. Utiliza clases para definir las caractersticas generales de objetos similares y
las operaciones que pueden aplicarse a eUas. Por ejemplo, un programador puede definir una ilacin individual (todo el programa se ejecuta como un solo hilo), pero Java permite la ila-
clase Formas_geomtricas y todas las caractersticas comunes para dos formas geom~ cin mltiple (ejecucin concurrente de varias lneas de cdigo).
tricas bidimensionales tales como el centro, el nmero de lados y as por el estilo. La clase
tambin puede definir operaciones (funciones o mtodos) que pueden aplicarse a una forma
geomtrica tales corno el clculo y la impresin del rea, el clculo y la impresin del peri~ En la programacin funcional, un programa se considera una funcin matemtica. En este
metro, la impresin de las coordenadas del punto central, etc. Por tanto, se puede escribir un contexto, tilla funcin es una caja negra que correlaciona una lista de entradas con una lista
programa para crear diferentes objetos del tipo Formas_geomtricas. Cada objeto pue- de salidas (figura 9.5).
de tener un centro localizado en un punto distinto y un nmero diferente de lados. El pro- Por ejemplo, la suma puede considerarse una funcin con n entradas y slo una salida.
grama puede entonces calcular e imprimir el rea, el permetro y la ubicacin del centro para La funcin toma las n entradas, las suma y crea el resultado de la suma. Un lenguaje fun-
cada objeto. cional realiza lo siguiente:
En el diseo del lenguaje C++ se utilizaron tres principios: encapsulamiento, herencia y
polimorfismo. 1. Predefine una serie de funciones primitivas (atmicas) que puede usar cualquier pro-
gramador.
Encapsulamiento El encapsulamiento es la idea de ocultar los datos y algunas operacio~ 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 normalmen-
te no tiene acceso directo a los datos. En vez de ello, se accede a los datos a travs de una Por ejemplo, usted puede definir una funcin primitiva llamada primero 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 tambin una funcin llamada resto que extraiga todos los ele-
be qu se hace con los datos sin saber cmo se hace. mentos excepto el primero. Un programa puede definir una funcin 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 nahrraleza, 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 ms especfica que hereda algunas de las caractersticas de la clase ge~
neral, pero tambin tiene nuevas caractersticas. Por ejemplo, cuando un objeto de tipo
Formas_geomtricas se define, usted puede definir una clase llamada Rectngulos.
Los rectngulos son formas geomtricas con caractersticas adicionales. En C++ se permite
herencia mltiple. Una clase puede heredar algo de ms de una clase. n entradas m salidrts

Polimorfismo Polimorfismo significa "muchas formas". El polimorfismo en C significa


que usted puede definir varias operaciones con el mismo nombre que pueden realizar cosas
distintas en clases afines. Por ejemplo, suponga que usted define dos clases, RectnguloS Figura 9.5 Funcin en un lenguaje funcional
y Crculos, ambas heredadas de la clase Formas_geomtricas. Usted define dos ope-
raciones ambas llamadas rea, una en Rectngulos y otra en Crculos, que calculan el
rea de un rectngulo o un crculo. Las dos operaciones tienen el mismo nombre pero hacen
cosas distintas; el clculo del rea de un rectngulo y del rea de un crculo necesitan dife-
rentes operandos y operaciones.

Java Java se desarroll en Sun Microsystems, Inc. Se basa en C y en C++, pero algunas caracte~
Lista Resultado
rsticas de C++, como la herencia mltiple, se quitaron para hacer el lenguaje ms robusto.
Adems 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. Tercero
Un programa en Java puede ya sea ser una aplicacin o un applet. Una aplicacin es un pro-
grama independiente completo que puede ejecutarse de manera independiente (como un
programa C++). Un applet, por otro lado, se incrusta en lenguaje HTM, se almacena en un ser- Figura 9.6 Extraccin del tercer elemento de una lista
.. Lenguajes de programacin 9.4 Categoras de lenguajes ..

Un lenguaje funcional tiene dos ventajas sobre un lenguaje de procedimiento: fOlnenta Un problema asociado con los lenguajes declarativos es que un programa es especfico
programacin modular y pennite al programador hacer nuevas funciones adems de las para un dominio particular porque la recopilacin 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 razn por la cual la programacin declarativa
pensas a errores a partir de programas ya probados. est limitada hasta ahora slo a campos especficos corno la inteligencia artificial.
Estudiamos brevemente LISP y Scheme como ejemplos de lenguajes funcionales.
Uno de los lenguajes declarativos famosos es Prolog (PROgramming in LOGic: programa-
LlSP LlSP (USt Programming) fue diseado por un equipo de investigadores del MIT a cin en lgica), desarrollado por A. Colmerauer en Francia en 1972. Un programa en Pro-
pios de la dcada de 1960. Es un lenguaje de programacin de procesamiento de listas en 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 (Johnl
Sc:heme El lenguaje LISP sufri de una carencia de estandarizacin. Despus de un tiempo, haba di-
ferentes versiones de LISP por todas partes; el estndar de facto es el desarrollado por el mortal (humano)
MIT a principios de la dcada de 1970, llamado Scherne.
El usuario puede entonces preguntar:
El lenguaje Scheme define un conjunto de funciones primitivas que resuelve problemas,
El nombre de la funcin y la lista de entradas a la funcin se colocan entre parntesis. El re- ? - mortal (John)
sultado es una lista de salida que puede usarse como la lista de entrada a otra funcin. Por
ejemplo, existe una funcin, car, que extrae el primer elemento de una lista. Hay una fun- y el programa le responder que s.
cin, llamada edr, que extrae el resto de los elementos de una lista excepto el primero. En
otras palabras usted tiene: Durante las ltimas dcadas, han aparecido algunos lenguajes nuevos que no pueden colo-
carse en las cuatro categoras que acabarnos de analizar. Algunos son una combinacin de
(car 2 3 7 8 11 17 2 O) ====> 2 dos o ms modelos y otros pertenecen a una tarea especfica. Los clasificamos bajo el rubro
(cdr 2 3 7 8 11 17 2 O) ====> 3 7 8 11 17 20 de lenguajes especiales.

Ahora puede combinar estas dos funciones para extraer el tercer elemento de cualquier lista. El HTML (lenguaje para marcado de ltipertexto) es un pseudolenguaje que incluye marcas
que sirven como sugerencias de formato y vnculos a otros archivos. Un archivo HTML es-
(car (cdr (cdr list))) t formado por texto y etiquetas. Una etiqueta aparece entre dos parntesis angulares y por
lo general viene en pares. Un archivo HTML (pgina) se guarda en el servidor y puede des-
Si usted aplica la-funcin anterior a 2 3 7 8 11 17 20,staextraee17debidoaque cargarse mediante un explorador. El explorador elimina las etiquetas y las interpreta como
el resultado del parntesis ms interior es 3 7 8 11 17 2 O. Esto se convierte en la en- sugerencias de formato o vnculos a otros archivos. Un lenguaje de marcado como el HTML
trada para el parntesis medio con el resultado 7 8 11 17 20. Esta lista ahora se vuel- le permite incrustar instrucciones de formato en el archivo mismo. Las instrucciones se al-
ve la entrada para la funcin 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 estacin de trabajo que se est usando.
LENGUAJES Un lenguaje declarativo utiliza el principio del razonamiento lgico para responder a las Uno podra preguntar: Por qu no se usan las capacidades de formato de los procesado-
DECLARATIVOS consult3. Se basa en la lgica formal definida por los matemticos griegos y desarrollada res de palabras para crear y guardar el texto con formato? La respuesta es que los distintos
(LGICOS) posteriormente en lo que se llama clculo de predicados de primer orden. procesadores de palabras utilizan tcnicas o procedimientos diferentes para dar formato al
El razonamiento lgico se basa en la deduccin. Se dan algunas instrucciones (hechos) texto. El HTML le permite usar slo caracteres ASCII tanto para el texto principal como pa-
que se supone son verdaderas; la lgica utiliza reglas rigurosas de razonamiento lgico pa- ra las instrucciones de fonnato. De esta manera, cada computadora puede recibir el docu-
ra deducir nuevas instrucciones (hechos). mento entero corno 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 deduccin en lgica es:
compone de dos partes: el encabezado y el cuerpo.
Si (A es igual a Bl y (B es igual a el, entonces (A es
igual a el Encabezado (Head) El encabezado es la primera parte que contiene el ttulo de la pgi-
na y otros parmetros que utilizar el explorador.
Usando esta regla y los dos hechos siguientes,

Hecho 1: Scrates es un ser humano ---- A es igual a B Cuerpo (Body) El contenido real de una pgina est en el cuerpo, el cual incluye el tex-
Hecho 2: Un humano es mortal ---- B es igual a e to y las etiquetas. Mientras que el texto es la informacin real contenida en una pgina, las
etiquetas definen la apariencia del documento. Cada etiqueta HTML es un nombre seguido
podernos deducir un nuevo hecho: por una lista opcional de atributos, encerrados entre parntesis angulares and.
Hecho 3: Scrates es mortal ---- A es igual a e
Etiquetas (Tags) El explorador torna una decisin respecto a la estructura del texto basa-
Los programadores deben estudiar el dominio de su terna (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. Adems los programadores deben cerrada entre dos parntesis angulares y usualmente viene por pares. Una etiqueta puede tener
ser expertos en lgica 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 ms comunes.
.. Lenguajes de programacin 9.5 Un lenguaje procedural: e

:tii'queta inicial Etiqueta final Significado


<HTML> <lHTML> Define un documento HTML UN LENGUAJE PROCEDURAL: C
<HEAD> <lHEAD> Define el encabezado del documento
En esta seccin, exploramos rpidamente un lenguaje procedural comn que la mayora de
<BODY> <lBODY> Define el cuerpo del documento
los programadores considera la madre de varios lenguajes modernos como e++, Java y
<TITLE> <I1'ITLE> Defme el ttulo del documento
PERL. Analizamos la estructura del lenguaje y describimos sus elementos. Este viaje de nin-
<Hi> <IHl> Define diferentes encabezados (i es un entero)
guna manera es una cobertura completa de la sintaxis del lenguaje; es una mirada a vuelo de
<B> <lB> Tipo negritas pjaro que muestra los diferentes aspectos del lenguaje para estudiantes que estudiarn los
<I> </1> Itlicas lenguajes de programacin en el futuro. l
<U> <fU> Subrayado
<SUB> <lSUB> Subndice Una caracterstica presente en todos los lenguajes de computadora es el identificador. Los iden-
<SUP> <lSUP> Superndice tificadores le penniten nombrar datos y otros objetos en el programa. eada pieza de datos en
<CENTER> <lCENTER> Centrado una computadora se ahnacena en una direccin nica. Si no hubiera identificadores para repre-
sentar simblicamente las localidades de los datos, usted tendra que conocer y usar direcciones
<BR> Salto de lnea
de datos para manipularlos. En vez de ello, simplemente proporciona nombres de identificado-
<OL> <lOL> Lista ordenada
res de datos y deja que el compilador siga la pista de dnde se localizan fsicamente.
<UL> <IUL> Lista sin ordenar
Los diferentes lenguajes de programacin utilizan reglas distintas para formar identifica-
<LI> <!LI> Un elemento en una lista dores. En e las reglas para los identificadores son muy simples. Los nicos smbolos de
<IMG> Define una imagen nombre vlidos son las letras maysclas de la A a la Z, las letras minsculas de la a a la z,
<A> <lA> Define una direccin (hipervnculo) los dgitos de O a 9 y el subrayado. El primer carcter del identificador no puede ser un di-
gito. Segn la costumbre, las aplicaciones no utilizan el subrayado para el primer carcter
Tabla 9.1 Etiquetas comunes
porque muchos de los identificadores en las bibliotecas del sistema que soportan e inician
con un subrayado. De este modo, usted se asegura de que sus nombres no duplican los nom-
bres del sistema, 10 cual podra volverse muy confuso. La ltima regla es que el nombre que
A continuacin se muestra un ejemplo de un programa HIML (pgina web). Cuando ste usted crea no puede ser ninguno de los 50 nombres especiales, conocidos como palabras
se ejecuta, muestra la imagen vinculada al mismo. reservadas o palabras clave, que estn contenidas en el lenguaje mismo.

DE DATOS Un tipo de dato define un conjunto de valores y una serie de operaciones que pueden apli-
<HTML>
carse a aquellos valores. El conjunto de valores para cada tipo se conoce como el dominio
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 slo estos dos valores, su tamao es dos. Slo hay dos opera-
<!HEAD> ciones que pueden aplicarse a un interruptor de luz: encender y apagar.
<BODY> e contiene tres tipos estndar: int (abreviatura para enteros), char (abreviatura para ca~
sta es la imagen de un libro: racteres), f 1 oa t (abreviatura para punto flotante). Los tipos estndar son atmicos: no pueden
<IMG SRC=/tlmgenes!librol.gif/t ALIGN=MIDDLE> dividirse. Tambin sirven como los bloques de construccin bsicos para los tipos derivados.
Los tipos derivados son estructuras complejas que se construyen usando los tipos estndar.
</BODY>
Los tipos derivados son: apuntador, tipo enumerado, unin, arreglo y estructura.
<!HTML>
Un tipo in t (integer: entero) es un nmero sin una parte fraccionaria. Tambin se conoce co-
Programa 9.4 Programa HTML
mo un nmero integral. e soporta tres tamaos distintos del tipo de datos entero: short
int, int y long int. Un short int tambin puede referirse como short y a long int
tambin se le puede llamar long. Ya definimos un entero en el captulo 3; las denominacio-
nes short y long definen el nmero de bytes asignados para un entero por el compilador.
PEoRL El lenguaje prctico de extraccin e infonnes (PERL: Practical Extraction and Report Lan-
guage) es un lenguaje de alto nivel con una sintaxis similar al lenguaje e pero ms eficien- El segundo tipo es char (character: carcter). Aunque pensamos en los caracteres como si
te. La fuerza de Ped radica en su uso bien diseado de expresiones regulares que permiten fueran letras del alfabeto, el lenguaje e tiene otra definicin. Para e, un carcter es cualquier
al programador hacer un anlisis sintctico de una cadena de caracteres en sus componentes valor que puede representarse en el alfabeto de la computadora. e utiliza el alfabeto del e-
y extraer la informacin requerida. digo norteamericano de estndares para intercambio de infoanacin (ASeII, que se pronun-
cia as-qui). Los caracteres ASCII se presentan en foana de tabla en el apndice A.

SQ.L El lenguaje de consultas estructurado (SQL: Structured Query Languague) es un lenguaje


1 Paraun anlisis completo, consulte Behrouz A. Forauzan y Richard G. Gilberg, An Introduction lo
utilizado para responder consultas sobre bases de datos. Veremos algunos ejemplos de SQ1
Computer Science: A Slntctured Programming Approach Using e, 2a. ed. (Pacific Grove, California,
en el capitulo 14 cuando estudiamos las bases de datos relacionales. Ed. Brooks/Cole, 2001.)
l1li lenguajes de programacin 9.5 Un lenguaje procedural: e 111
float Despus de esto, la computadora asigna algunas localidades de memoria (el nmero depen-
Un tipo float es un nmero con una parte fraccionaria, por ejemplo 43.32. Los tipos
de del sistema de cmputo) y las llama en fonna colectiva precio. Observe que esta varia-
tantes se definieron en el captulo 3. El lenguaje C soporta tres tamaos diferentes de
ble est definida, pero no hay nada almacenado todava 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.
e permite que una variable se inicialice al momento que se declara y define. El inicializa w

variables dor establece el primer valor que la variable contendr. Para inicializar una variable cuando
VARIABLES Las ~ariables son nombres de localidades de memoria. Como se vio en el captulo 5, sta es definida el nombre es seguido por el operador de asignacin (el signo igual) y luego
localidad de memoria (o palabra) en una computadora tiene una direccin. Aunque la por el inicializador. El formato de inicializacin simple es:
putadora utiliza las direcciones internamente es muy inconveniente para el programador
float pr,e'ici>';tZ\~'3'~' 45 ;
direcciones debido a que el programador no sabe dnde se almacenan el programa y los
tos en la memoria. Los nombres como un sustituto de las direcciones, liberan al Pf()grLllmL';
dor de pensar en el nivel que se ejecuta el programa. Un programador puede usar Las constantes son valores de datos que no pueden cambiarse durante la ejecucin de un
variable, tal como puntaje para almacenar el valor entero de una calificacin recibida programa. Por ejemplo, tal vez un programador necesite usar el valor de pi (3.14) varias ve-
una prueba (97). La computadora puede usar la localidad de memoria 245,876 para ilHIlac,. 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 puntaj e durante la ejecucin del un).,.,.,. < 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 ao, pero se fija durante el ao. Un pro-
concepto de una variable. gramador puede definir una constante para el valor de gravamen y revisar cada ao para ver
si ste ha cambiado.
Las constantes pueden aparecer en un programa en una de tres formas: constante literal,
constante nombrada o constante simblica.

literal Una constante literal es un valor sin nombrar que se usa en un programa tal cual es. Por
ejemplo, a continuacin'se muestra cmo se utiliza una constante literal en una instruccin
en C. El valor 2 es una constante literal. Las variables son longitud, ancho y circunferencia.

circunferencia = 2 * longitud * ancho

Una constante nombrada es un valor que se almacena en la memoria; usted no quiere que
el programa la cambie. Enseguida se muestra cmo el lenguaje C crea una constante nom-
brada:
Programa Memoria const pi "" 3 .14, ,',}

Figura 9.7 Variables


Una constante simblica es un valor que tiene slo un nombre simblico. El compilador
lmlIJlica puede remplazar el nombre con el valor. En la mayora de los lenguajes de programacin, el
valor no se almacena en la memoria. La constante simblica se define al principio del pro-
C requiere que el programador defina un tipo para la variable. La razn 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 nmero de ocasional. Lo siguiente demuestra cmo el lenguaje C define una constante simblica:
bytes que pueden asignarse a esa variable.
#defin'e 'valorGravamen 0.0825

Declaracin C requiere que una variable se declare y defina antes de usarla. Una declaracin se usa para
Al igual que las variables, las constantes tienen un tipo. La mayora de los lenguajes de pro-
y definicin nombrar una variable. Las definiciones se utilizan para crear la variable y asignar una loca-
gramacin utilizan constantes enteras, constantes de punto flotante, constantes de carcter y
de variables lidad de memoria a ella.
constante de cadena. Por ejemplo, el cdigo siguiente muestra diferentes constantes en el
Cuando usted crea una variable la declaracin le da un nombre simblico y la definicin
lenguaje C. Las literales de carcter 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 estn entre comillas dobles. Observe que el texto encerrado entre /* y */ es un comenta-
que requiere el programa para su operacin.
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 /* Liter~l de entero */
usarse para declarar y definir una variable llamada precio en C. El nombre de la variable 23.12 /* Literal efe punto flotante */
es precio y su tipo es float (nmero de punto flotante). 'A' /* Litral de carcter */

float preciq'
"Hola" 1* Literal de cadena */

...
-
.. lenguajes de programacin 9.5 Un lenguaje procedural: e ..

ENTRADA Casi todos los programas necesitan leer y/o escribir datos. Estas operaciones pueden ser bas- Operador Definicin Ejempl" < >
tante complejas, en especial cuando se leen o escriben archivos grandes. La mayora de los
Y SALIDA < Menor que Numl < 5
lenguajes de programacin utilizan una funcin predefinida para entrada y salida.
<= Menor o igual que Numl <= 5
> Mayor que Num2 > 3

Entrada La introduccin de los datos se da ya sea por una instruccin o por una funcin predefinida. >= Mayor o igual que Num2 >= 3
El lenguaje e tiene varias funciones de entrada. Por ejemplo, la funcin scanf lee datos des- Igual que Numl == Num2
de el teclado y los almacena en una variable. Vase el siguiente ejemplo: No igual que Numl != Num2

scanf (JI %d", &riumr --"; Tabla 9.3 Operadores relacionales

Cuando el programa encuentra esta instruccin, espera a que el usuario teclee un entero. Lue- Operadores lgicos Los operadores lgicos combinan valores lgicos (verdadero o fal-
go almacena el valor en la variable numo La %d indica al programa que espere un entero. so) para obtener un nuevo valor. El lenguaje e utiliza tres operadores lgicos como se mues-
tra en la tabla 9.4.

La salida de los datos se da ya sea por una instruccin o por una funcin predefinida. El len-
Salida
guaje e tiene varias funciones de salida. Por ejemplo, la funcin printf despliega una cade- p~rdor Definicin Ejemplo '.
, .' ....
na en el monitor. El programador puede incluir el valor de una variable o variables como parte
de una cadena. Enseguida aparece el valor de una variable al final de una cadena literal.
! NO ! (Numl < Num2)
&& y (Num1 < 5) && (Num2 > 10)
printf ("El :Yl.1pr del :'n;~~ero es: %d" I nUIn ) i
11 O (Numl < 5) II (Num2 > 10)
Tabla 9.4 Operadores lgicos
EXPRESIONES U na expresin es una secuencia de operandos y operadores que se reduce a un solo valor.
Por ejemplo, la siguiente expresin tiene un valor de 10.
Operadores de asignacin Un operador de asignacin almacena un valor en una va-
2 * 5 riable. El lenguaje e define varios operadores de asignacin, algunos de los cuales se mues-
tran en la tabla 9.5.

Operador Un operador es un elemento sintctico de un lenguaje especfico que requiere que se reali-
ce una accin. Los operadores ms conocidos se tomaron de las matemticas. Por ejemplo, '., '
Operador Ejemplo Significado '.
multiplicar (*) es un operador. Indica que dos nmeros se van a multiplicar. Todos los len-,
= num = 5 ; Almacena 5 en la variable num
guajes tienen operadores y su uso se especifica rigurosamente en la sintaxis, o reglas, del
+= num += 5 ; Lo mismo que num = nUID + 5
lenguaje.
- num - 5 ; Lo mismo que num = num - 5
*= num *= 5 ; Lo mismo que num = nUID * 5
Operadores aritmticos El lenguaje e define varios operadores aritmticos, algunos
1= nUID 1= 5 ; Lo mismo que num = nUID I 5
de los cuales se muestran en la tabla 9.2.
%= nUID %= S ; Lo mismo que nUID = num % 5

Tabla 9.5 Operadores de asignacin


OperadQ' Defi'iicin Ejemplo
+ Suma 3 + 5
Un operando recibe la accin de un operador. Para cada operador dado puede haber uno,
Resta 2 4
dos o ms operandos. En nuestro ejemplo aritmtico, los operandos de multiplicar son el
Multiplicacin Num * 5
* multiplicador y el multiplicando.
/ Divisin (cociente) SUIDI
% Divisin (residuo) Count
INSTRUCCIONES Una instruccin provoca que el programa realice una accin. sta se traduce directamente
Count % 4
en una o ms instrucciones de computadora ejecutables. Por ejemplo, el lenguaje e defme
++ Incremento (suma 1 al valor de la variable) Count++ seis tipos de instrucciones: instruccin de expresin, instruccin compuesta, instruccin eti-
Decremento (resta 1 al valor de la variable) Count-- quetada, instruccin de seleccin, instruccin iterativa e instruccin de salto (figura 9.8). En
esta seccin se estudian algunas de ellas.
Tabla 9.2 Operadores aritmticos

Instrucciones Una expresin se convierte en instruccin al colocar un punto y coma (;) despus de ella.
Operadores relacionales Los operadores relacionales comparan los datos para ver si un
de expresin Cuando e ve el punto y coma evala la expresin. Si hay una asignacin involucrada (exis-
valor es mayor que, menor que o igual que otro valor. El resultado de aplicar operadores r~ tencia de un operador de asignacin, un ++ o --), el valor se almacena en la variable. Si no
lacionales es los valores lgicos verdadero (tme) o falso (jalse). El lenguaje e utiliza seIS hay asignacin el valor se descarta. A continuacin se presentan algunos ejemplos de ins~
operadores relacionales (tabla 9.3). trucciones de expresin:
lenguajes de programacin 9.5 Un lenguaje procedural: e Ea

---l Instruccin
de expresin

Instruccin
compuesta

l Instruccin
de seleccin
Instruccin 1-
---1 Instruccin
etiquetada

---l Instruccin A lo ms una pieza


iterativa
de datos puede salir.

---l Instruccin
de salto
Figura 9.9 Efecto secundario de una funcin
Figura 9.8 Instrucciones

archivo, o el cambio del valor de una variable en la funcin que llama. El concepto de fun-
"a++ cin aparece en la figura 9.9.
b
e = * Las funciones en e deben tanto declararse como definirse. La declaracin de funciones se
realiza con una declaracin prototipo. Usted utiliza la funcin al llamarla. La definicin de
Una instruccin compuesta es una unidad de cdigo que consiste en cero o ms instruccio- funcin contiene el cdigo requerido para completar la tarea. La figura 9.10 muestra las in-
Instrucciones nes. Tambin se conoce como bloque. La instruccin compuesta permite a un grupo de ins- terrelaciones entre estos componentes de funcin. Observe que el nombre de funcin se uti-
compuestas trucciones volverse una sola entidad. Una instruccin compuesta se compone de una llave liza tres veces: cuando se declara la funcin, cuando se llama y cuando se defme.
de apertura y una seccin de instrucciones opcional, seguida por un corchete de cierre. En-
seguida se muestra la composicin de una instruccin compuesta.
U.,1"in icin La definicin de funcin contiene el cdigo para una funcin. La definicin se compone de
funcin dos partes: el encabezado de funcin y el cuerpo de funcin, el cual es una instruccin com-
{ puesta.
x= 1;
y = 20:
Encabezado de funcin Un encabezado de funcin consiste en tres partes: el tipo de re-
}
greso, el nombre de funcin y la lista de parmetros formales.

EN e, una subrutina se conoce como funcin. Un programa en e est formado por una o Cuerpo de funcin El cuerpo de funcin contiene las declaraciones e instrucciones para
FUNCIONES la funcin. El cuerpo inicia con definiciones locales que especifican las variables requeridas
ms funciones, una y slo una de las cuales debe llamarse main (principal). La ejecucin
del programa siempre inicia y termina con main, pero esta funcin puede llamar a otras fun~ por la funcin. Despus de las declaraciones locales, se codifican las instrucciones de fun-
ciones para que realicen tareas especiales. cin, terminando con una instruccin return. Si un tipo de retorno de funcin es void
Una funcin en C (incluyendo a main) es un mdulo independiente que se llama para que puede escribirse sin una instruccin return.
realice una tarea especfica. La funcin 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 de funcin Una llamada de funcin se utiliza para llamar a la funcin. La llamada contiene los par-
operativo. metros reales, los cuales identifican los valores que se van a enviar a la funcin llamada.
En general, el propsito de una funcin es recibir cero o ms piezas de datos, realizar stos corresponden a los parmetros formales de la funcin en tipo y orden en la lista de pa-
operaciones en ellos y devolver a lo ms una pieza de datos. Al mismo tiempo, una funcin rmetros. Si hay varios parmetros actuales, stos se separan por comas.
puede tener un efecto secundario, el cual es una accin que resulta en un cambio de estado
del programa. Si hay un efecto secundario, ste ocurre cuando la funcin se est ejecutando
y antes de que regrese la funcin. El efecto secundario puede implicar la aceptacin de da~
de parmetros En C, se puede pasar un parmetro a una funcin de dos maneras: paso por valor ypaso por
referencia.
tos desde fuera del programa, el envo de datos fuera del programa hacia el monitor o a un
.. Lenguajes de programacin 9.5 Un lenguaje procedural: e ..

#include <stdio h> falso verdadero i f (expressiOIl)


(cero) (cero)

instruccionl
int main {voidJ
{
e 1 se
La llamada se
la seccin de jrIstnJCeln:""
instruccion2

a. Flujo lgico b. Cdigo


return o:;
}

La definicin se realiza Figura 9.11 Instruccin if-else

switch (expresin)

case constante-l : instruccion

instruccion

case constante-2 instruccion


Figura 9.10 Declaracin de funcin
instruccion

case constante-n instruccion


Paso por valor Cuando se pasa por valor se crea una copia de los datos y se coloca en
una variable local en la funcin llamada. Esta forma de pasar los datos asegura que a pesar
instruccion
de cmo se manipulen los datos y cambien en la funcin llamada, los datos originales en la
funcin que llama estn seguros y permanecen sin cambios. Debido a que el paso por valor
default instruccion
protege a los datos, es la tcnica de paso preferida.
instruccion
Paso por referencia Sin embargo, hay veces que es necesario pasar por referencia. El pa
so por referencia enva la direccin de una variable a la funcin llamada en lugar de enviar
su valor. Cuando usted quiere cambiar el contenido en una variable en la funcin que llama,
debe pasar por referencia. Figura 9.12 Instruccin switch
Considere el caso en el cual necesita escribir una funcin que procese dos valores de da~
tos y los devuelva a la funcin que llama; es decir, almacena sus valores en el programa que ambas instrucciones se ejecuten en la misma evaluacin. Una instruccin if-else puede
llama. Dado que una funcin puede devolver slo un valor, usted tiene un problema. La sO~ anidarse (una dentro de la otra) para crear una seleccin de mltiples sentidos.
lucin es el paso por referencia.
Aun cuando se puedan utilizar instrucciones if-else anidadas para la seleccin de mlti-
ples sentidos, hay otra instruccin en C para este propsito: la instruccin switch (figura
SElECCIN Como se vio en el captulo 8, para resolver un problema usando un algoritmo se necesitan
9.12). La condicin de seleccin debe ser uno de los tipos integrales de C.
instrucciones de seleccin.

REPETICIN En el captulo 8 se vio que se necesitan instrucciones de repeticin. El lenguaje C define tres
if-else Para implementar una seleccin de dos sentidos en C, se puede usar la instruccin if~ tipos de instrucciones de ciclo: while, for y do-while.
el se. La figura 9.11 muestra el flujo lgico para if-else. La expresin puede ser cua1~
quier expresin C. Despus de que sta se ha evaluado, si su valor es verdadero (no O) se Cid O while La instruccin de repeticin principal en e1lenguaje e es el ciclo while (figura 9.13). Un ci-
ejecuta instruccionl; de lo contrario, se ejecuta la instruccion2. Es imposible que clo while es un ciclo preprobado. Revisa el valor de una expresin de prueba. Si el valor es
lenguajes de programacin
9.6 Trminos clave .. ii
i::

while I expresin
do
{

ccin ';: ,'1


I
~~cin
I~': Accin
I

}while ( expresin );

Salida
a. Diagrama de flujo b. Lenguaje C
a. Diagrama de flujo b. Lenguaje e
Figura 9.15 Ciclo do-while
Figura 9.13 Ciclo while

Cido do-while El ciclo do-while es tambin un ciclo controlado por eventos; no obstante, a diferencia del
ciclo while es un ciclo post prueba (figura 9.15). El ciclo realiza una iteracin y prueba
el valor de una expresin. Si es falso, tennina. Si es verdadero, realiza una iteracin ms y
I prueba de nuevo.
for ( expr1
expr2
expr3 TIPOS DE DATOS Adems de los datos simples estudiados anteriormente, el lenguaje C tambin permite tipos

Accin
{I Accin I DER.IVADOS de datos derivados: arreglos, apuntadores, uniones y estructuras. Estudiaremos algunos de
estos tipos de datos en el capitulo 11 sobre la estructura de datos.

Accin I Accin I El lenguaje C soporta la recursividad (analizada en el captulo 8). Una funcin en C puede
llamarse a s misma.

Accin I Accin I
TRMINOS CLAVE
Salida constante simblica FORTRAN
'~cblivoejecutable cuerpo de funcin funcin
a. Diagrama de flujo b. Lenguaje e
archlvo fuente declaracin herencia
Figura 9.14 Ciclo for bloque declaracin de funcin HTML
~argador definicin identificador
definicin de funcin inicializador
verdadero (no es cero), pasa por una iteracin del ciclo y prueba de nuevo el valor. El ciclo ciclo do-while directiva de preprocesador instruccin
whi le se considera un ciclo controlado por eventos. El ciclo contina en iteracin hasta que editor de textos instruccin compuesta
ocurre un evento que cambia el valor de la expresin de prueba de verdadero a falso. efecto secundario instruccin de expresin
encapsulamiento instruccin if-else
encabezado de funcin instruccin swi tch
Ciclo for El ciclo for tambin es un ciclo de preprueba (figura 9.14). Sin embargo, a diferencia del
compilador ensamblador Java
ciclo while, es un ciclo controlado por el contador. Un contador se fija en un valor inicial
COnstante entero lenguaje e
y aumenta (o disminuye) en cada iteracin. El ciclo se termina cuando el valor del contador
constante literal expresin lenguaje C++
coincide con un valor predetenninado.
constante nombrada float lenguaje declarativo
.mi lenguajes de programacin
9.8 Prctica ..

lenguaje de alto nivel operacin polimorfismo


lenguaje de computadora operador preprocesador PRCTKA
lenguaje de mquina operador aritmtico Prolog
29. Cul es la diferencia entre ~na instruccin if-else y
lenguaje de programacin operador de asignacin recursividad 'REC:;UfUJl~:S DE REPASO
una instruccin switch? Es un subconjunto de la
lenguaje ensamblador operador lgico Scheme En qu se diferencia un lenguaje simblico de un len-
otra? Explique por qu s o por qu no.
lenguaje funcional operando SQL guaje de mquina?
lenguaje imperativo operador relacional traductor Por qu un lenguaje simblico tambin se conoce co- 30. Comente las tres instrucciones de ciclo.
lenguaje natural palabra clave tipo de datos mo lenguaje ensamblador?
lenguaje procedural palabra reservada tipos derivados Cules son las ventajas de un lenguaje de alto nivel so-
lenguaje orientado a objetos parmetro formal tipos estndar bre un lenguaje de mquina? PREGUNTAS DE OPCiN MLTIPLE
lenguaje simblico parmetros reales sintaxis
Mencione algunos de los lenguajes de alto nive1. 31. El nico lenguaje comprendido por el hardware de
ligador Pascal subprograma
Qu es un lenguaje natural? computadora es e1lenguaje _ _ __
LISP paso por referencia unidad de traduccin
Qu es un archivo fuente? Qu es un archivo ejecuta-
llamada a funcin paso por valor variable a. de mquina
ble? Cmo se relacionan los dos?
mdulo de objetos PERL b. simblico
Cul es la funcin de un compilador?
c. de alto nivel
Cul es la funcin de un ligador?
d. natural
Cules son las cinco categoras de los lenguajes de
9.7 RESUMEN computadora? D un ejemplo de cada una. 32. Los lenguajes tambin se conocen como len-
Cmo se relaciona Java con C y C++? guajes ensambladores.
111 El nico lenguaje comprendido por una computadora es 111 Un lenguaje especial no puede clasificarse en uno de los Por qu C es un lenguaje popular entre los programa~ a. de mquina
el lenguaje de mquina. otros cuatro grupos. HTML, PERL Y SQL son lengua- , dores? b. simblico
jes especiales. Cules son algunos de los grupos que usan Ada? c. de alto nivel
llIl Un lenguaje simblico utiliza smbolos para representar
varias instrucciones de lenguaje de mquina. Los len- 111 C se considera la madre de lenguajes como C++, Java y En qu difiere la programacin procedural de la pro- d. natural
guajes simblicos tambin se conocen como lenguajes PERL. gramacin orientada a objetos?
33. El noruego, el farsi y el ruso pueden clasificarse como
ensambladores. lIlI Un identificador nombra a datos y otros objetos en un Cules son tres conceptos intrnsecos a los programas
idiomas (lenguajes) _ _ __
programa. en C++?
111 Un lenguaje de alto nivel se puede transportar de un ti- a. de mquina
llII Un tipo de datos defIne un conjunto de valores y una se- Qu es un lenguaje funcional? D un ejemplo de una
po de computadora a otro, y libera al programador de b. simblico
rie de operaciones que pueden aplicarse a aquellos va- funcin.
preocupaciones relacionadas con el hardware. BASIC, c. de alto nivel
lores. Qu es un lenguaje declarativo?
Pascal, Ada, C, C++ y Java son lenguajes de alto nivel.
11 Los tipos de datos estndar para el lenguaje C son int Qu eS un lenguaje especial? d. natural
111 Los pasos para construir un programa incluyen escritu- (entero), char (carcter) y float (punto flotante). Mencione los tres tipos de datos estndar en el lengua- 34. C, C++ y Java pueden clasificarse como lenguajes
ra, edicin, compilacin y ligado de ("f.iigo. je C.
iII Una constante es un valor de datos que no puede cam-
!lIII Hay cinco categoras de lenguajes de computadora: biarse durante la ejecucin de un programa. Cul es el propsito de un inicializador en el lenguaje a. de mquina
procedurales, orientado a objetos, funcional, declarati- l1li Una variable es un nombre para una localidad de me- C?
b. simblico
va y especiaL moria. Cules son las diferencias entre una constante literal,
c. de alto nivel
una constante nombrada y una constante simblica?
111 En un lenguaje procedural, un algoritmo se traduce en 111 Por lo general los datos se introducen y se da salida a d. natural
Qu es una variable?
cdigo. El cdigo manipula los datos y controla la eje- los mismos mediante funciones predefinidas.
Cul es una manera eficiente de manejar funciones de 35. El software utilizado para escribir un programa se llama
cucin de instrucciones. FORTRAN, COBOL, Pascal, 11 Una expresin es una secuencia de operandos y opera-
uso frecuente como leer la introduccin de datos de un
C y Ada son lenguajes procedurales. dores que se reduce a un solo valor.
archivo? a. preprocesador
lI!l En un lenguaje orientado a objetos como C++ y Java, 111 Una instruccin provoca que un programa realice una Cules son los operadores relacionales en el lenguaje b. editor de texto
los objetos y las operaciones aplicadas a los objetos es- accin.
C? c. traductor
tn ligados. 111 Una funcin es un mdulo independiente que realiza Cules son los operadores lgicos en lenguaje C? d. archivo fuente
una tarea especfica. Cules son los operadores de asignacin en el lengua-
liI!I C++ utiliza los conceptos de encapsulamiento, herencia 36. El ensambla unidades precompiladas de
y polimorfismo. 111 Un programa en C tiene una funcin llamada main y je C?
fuentes distintas en un programa ejecutable.
cero o ms funciones distintas. Describa la funcin main en el lenguaje C.
liI En un lenguaje funcional, el algoritmo es de naturaleza a. preprocesador
111 Una instruccin if-else o una instruccin switch Mencione las partes de la definicin de una funcin en
matemtica. LISP y Scheme son lenguajes funcionales. puede implementar una decisin en C. b. editor de texto
C y la funcin de cada una de ellas.
lIlI Un lenguaje declarativo utiliza los principios del razo- 11 La repeticin en C puede manejarse con un ciclo while, Cul es el propsito de una instruccin de decisin c. ligador
narrriento lgico. Prolog es un lenguaje declarativo. un ciclo for o un ciclo do-while. (seleccin)? d. cargador

i
~
la lenguajes de programacin 9.8 Prctica 111
37. El compilador consiste de un ____ y un _ _ __ 46. , el primer lenguaje de alto nivel, an es Un ejemplo de un lenguaje ____ es Prolog. 62. Investigue y encuentre el formato de la instruccin com-
a. preprocesador; cargador pular en las comunidades cientficas y de ingeniera. a. procedural puesta en FORTRAN. COBOL Y Pascal. Comprelo y
b. editor de texto; cargador a. FORTRAN b. funcional contrstelo con el formato definido para el lenguaje e en
c. preprocesador; traductor b. C++ c. declarativo este captulo. Utilice una tabla para la comparacin.
d. ligador; preprocesador c. C d. orientado a objetos
d. COBOL 63. Investigue y encuentre el formato de las instrucciones Ite-
38. es el cdigo en lenguaje de mquina. HTML, PERl Y SQL caen dentro de la clasificacin de rativas (ciclo for, ciclo while, ciclo do-while, etc.)
a. Una unidad de traduccin 47. es un programa diseado para ensear lenguajes _ _ __ en FORTRAN, COBOL Y PascaL Comprelo y contrs-
b. Un mdulo objeto gramacin a los novatos que enfatiza el mtodo tela con el formato definido para el lenguaje C en este ca-
a. modernos
c. Un archivo fuente gramacin estruchIrado. ptulo. Utilice una tabla para la comparacin.
b. especiales
d. Un subprograma
a. C++ c. declarativos
39. Un programa de sistema operativo llamado _ _ __ b. C d. orientados a objetos 64. Investigue y encuentre el fonnato de las instrucciones de
lleva el programa ligador en la memoria. c. Pascal decisin (it y swi tch) en FORTRAN. COBOL Y Pas-
d. Scheme Un tipo de datos estndar en el lenguaje C _ _ __ cal. Comprelo y contrstelo con el formato definido pa-
a. cagardor
b. vinculador a. int ra el lenguaje C en este captulo. Utilice una tabla para la
48. El sistema operativo UNIX est escrito en un lerlguaje. b. char comparacin.
c. traductor
llamado _ __ c. float
d. procesador
a. C++ d. todos los anteriores 65. Investigue y encuentre la instruccin de salto (por ejem-
40. Un lenguaje _ _ _ _ utiliza el mtodo tradicional pa- b. C plo, goto y continue) en FORTRAN, COBOL Y Pas-
fa programacin y tambin se conoce como lenguaje El tipo de datos estndar _ _ _ _ describe un nmero cal. Comprela y contrstela con el fonnato definido para
c. Pascal
imperativo. d. LISP
con una parte fraccionaria. el lenguaje e en este captulo. Utilice una tabla para la
a. procedural 3. int comparacin.
b. funcional 49. Un lenguaje procedural muy popular en el DaD b. char
c. declarativo c. float 66. Investigue y encuentre cmo se manejan las funciones en
d. orientado a objetos a. Ada d. todos los anteriores FORTRAN. COBOL Y Pascal. Comprelas y contrste-
b. Java las con las funciones definidas para el lenguaje C en es-
41. FORTRAN es un lenguaje _ _ __ El tipo de datos estndar ____ describe un nmero
c. C++ te captulo. Utilice una tabla para la comparacin.
a. procedural sin una parte fraccionaria.
d. Scheme
b. funcional 3. int 67. Investigue y encuentre si la recursividad est soportada
c. declarativo 50. Un lenguaje popular orientado a objetos es _ _ __ b. char en FORTRAN. COBOL Y Pascal.
d. orientado a objetos c. float
a. FORTRAN
d. todos los anteriores 68. Identifique cada uno de los siguientes identificadores en
42. Pascal es un lenguaje _ _ __ b. COBOL
a. procedural c. C++
e como vlidos o no vlidos. Justifique su respuesta.
El tipo de datos estndar describe cualquier
b. funcional d. LISP valor que pueda representarse en el alfabeto de la com- a. 2AB
c. declarativo putadora. b. A2B
51. En C++. la(el)____ es ocultar los datos y las
d. orientado a objetos
raciones al usuario. a. int c. AC
43. C++ es un lenguaje a. encapsulamiento b. char
d. 999
a. procedural b. herencia c. float
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 3. Una variable int llamada i.
52. Un programa ____ puede ser una aplicacin o b. Una variable float llamada f.
44. LISP es un lenguaje
applet.
a. procedural Investigue y encuentre los operadores aritmticos en c. Una variable char llamada c.
b. funcional a. FORTRAN FORTRAN, COBOL Y Pascal. Comprelos y contrs-
c. declarativo b. C++ telas con los operadores aritmticos definidos para el 70. Repita el ejercicio 69 pero inicialice cada variable con
d. orientado a objetos c. C lenguaje C en este captulo. Utilice una tabla para la un valor apropiado.
d. Java comparacin.
45. es un lenguaje comn en el mundo de los ne- 71. En el lenguaje e, muestre cmo leer dos enteros desde
gocios. 53. LISP y Scbeme son lenguajes _ _ __ Investigue y encuentre los operadores relacionales en el teclado usando slo una instruccin.
a. FORTRAN a. procedurales FORTRAN, COBOL Y Pascal. Comprelos y contrs-
b. C++ b. funcionales telos con los operadores aritmticos definidos para el 72. En el lenguaje C, muestre cmo imprimir el valor de
c. C c. declarativos lenguaje C en este captulo. Utilice una tabla para la dos variables de nmeros enteros usando slo una ins-
d. COBOL d. orientados a objetos comparacin. truccin.
ID lenguajes de programacin

73. Escriba las siguientes instrucciones en lenguaje C: 74. Escriba un ciclo f or en e 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 while.
b. Aumente el valor de la variable x. 76. Repita el ejercicio 74 utilizando un ciclo do-while.
c. Disminuya el valor de la variable y. ',e ~.
enlerla
77. Escriba una instruccin en Scheme para hacer una nue~
d. Compare el valor de las variables x y y para probar va lista aparte de la lista existente que contenga slo el
una igualdad, tercer y el cuarto elementos.

e software

este captulo presentamos el concepto de ingeniera de software. Comenzamos con la


del ciclo de vida del software. Luego mostramos cmo se usan dos modelos para el pro-
de desarrollo: el modelo de cascada y el modelo incremental. Finalmente, analizamos
relacionados con la ingeniera de software, tales como la modularidad, la calidad y

ingeniera de software es el establecimiento y uso de mtodos y principios de ingeniera


para obtener software confiable que trabaje en mquinas reales. Esta defInicin, to-
de la primera conferencia internacional sobre ingeniera de software en 1969, se propu-
aos despus de que se construy la primera computadora. Durante ese periodo el
fue ms un arte que una ciencia. De hecho uno de los tratamientos ms serios de la
'gnlffi"cinla describe como un arte: The Art of Computer Programming. Esta serie de tres
.Uffiene,s, originalmente escrita por Donald E. Knuth a finales de la dcada de 1960 y prin-
de la dcada de 1970, se considera el anlisis ms completo de muchos conceptos de
Cl"nClas de la computacin.
.. Ingeniera de software 10.1 Ciclo de vida del software ..

El proceso de desarrollo comienza con la fase de anlisis, 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 trminos que
Un concepto fundamental en la ingeniera de software es el ciclo de vida del el usuario comprende. Hay cuatro pasos en la fase de anlisis: definicin del usuario, defini-
El software, al igual que muchos otros productos pasa por un ciclo de fases rel)etiti" cin de las necesidades, definicin de los requisitos y definicin de los mtodos.
(figura 10.1).
El software primero se desarrolla por un grupo de desarrolladores/programadores. Un paquete de software puede disearse para un usuario genrico o para un usuario especfi-
general, est en uso durante algn tiempo antes de que se requiera hacerle ill()dific,aci'Dt co. Por ejemplo, un paquete de contabilidad puede crearse para que lo utilice cualquier em-
Las modificaciones a menudo son necesarias debido a errores encontrados en el sof'tware presa. Por otra parte, un paquete bancario personalizado puede ser creado para un banco
cambios en las nonnas o leyes, o a cambios en la compaa misma. El software debe especfico. El usuario del paquete debe definirse con claridad.
, ficarse antes para su uso posterior. Estos dos pasos, usar y modificar, continan hasta
software se vuelve obsoleto. Por "obsoleto" queremos decir que el software pierde su !finici,n de Despus de que se ha identificado al usuario, los analistas definen claramente las necesida-
debido a su ineficiencia, la obsolescencia del lenguaje, cambios importantes en la necesidades des. En este paso, la mejor respuesta viene del usuario. El usuario, o el representante del mis-
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 facturacin y los
de contabilidad. efinid,n de Con base en las necesidades del usuario, el analista puede definir con precisin los requisitos
El proceso de desarrollo en el ciclo de vida del software implica cuatro fases: anlisis, requisitos para el sistema. Por ejemplo, si un paquete va a imprimir cheques al final del mes para cada
sea, implementacin y pruebas. La figura 10.2 muestra estas fases como parte del empleado, qu nivel de seguridad y precisin debe emplearse?
de desarrollo.
Finalmente, despus de que se definen los requisitos en trminos claros, el analista puede ele-
gir los mtodos apropiados para cumplir estos requisitos.

( INICIO La fase de diseo define cmo lograr el sistema lo que se defini en la fase de anlisis. En
la fase de diseo, se deternlnan los sistemas y el diseo de archivos y/o bases de datos se
Desarrollo
completa.
del sistema
I Actualmente la fase de diseo utiliza un principio bien establecido llamado modularidad.

-( Obsoleto? S Todo el paquete se divide en pequeos mdulos. Cada mdulo se disea, se prueba y se vin-
cula a otros mdulos a travs de un programa principal. La modularidad se estudia posterior-

1 No mente en este captulo.

Uso del La fase de diseo utiliza varias herramientas, siendo la ms comn un diagrama de estructu-
sistema
ra (analizada en el captulo 8). Un diagrama de estructura muestra cmo dividir un paquete
en pasos lgicos; cada paso es un mdulo independiente. El diagrama de estructura tambin
Modificacin muestra la interaccin entre todas las partes (mdulos).
del sistema

I En la fase de implementacin se crean los programas reales.


f
ALTO ")
Esta fase utiliza varias herramientas para mostrar el flujo lgico de los programas antes de la
Figura 10.1 Ciclo de vida del sistema escritura real del cdigo. Una herramienta, an generalizada, es el diagrama de flujo (anali-
zado en el captulo 8). Un diagrama de flujo utiliza smbolos grficos estndar para repre-
sentar el flujo lgico de datos a travs de un mdulo.
La segunda herramienta utilizada por los programadores es el pseudocdigo (tambin vis-
Desarrollo to en el captulo 8). El pseudocdigo es parte de idioma (espaol, ingls, etc.) y parte lgica
del sistema
de programa que describe, con detalles algortmicos precisos, que indican qu hace el progra-
ma. Esto requiere definir los pasos con tanto detalle que la conversin a un programa de com-
putadora pueda lograrse fcilmente.
Anlisis Diseo Implementacin Prueba
Despus de la produccin en un diagrama de flujo, pseudocdigo, o ambos, el programador
en realidad escribe el cdigo en un lenguaje especfico para el proyecto. La opcin del len-
Figura 10.2 Fases de desarrollo del sistema guaje se basa en la eficiencia del lenguaje para esa aplicacin en particular.
la Ingeniera de software 10.2 Modelos del proceso de desarrollo ..

FASE DE PRUEBA Una vez que los programas se han escrito, deben probarse. La fase de prueba puede ser
tediosa y consumir parte del tiempo del desarrollo del programa. Los programadores
completamente responsables de probar sus programas. En los proyectos de desarrollo 1_ Anlisis
des, con frecuencia hay especialistas llamados ingenieros de pruebas quienes son responsa'
Diseo
bIes de probar el sistema como un todo, es decir, de hacer pruebas para comprobar que
los programas trabajan en conjunto.
Hay dos tipos de pruebas: caja negra y caja blanca. La prueba de caja negra es reilliZilda' Implementacin
por el ingeniero de pruebas del sistema y por el usuario. Las pruebas de caja blanca
ponsabilidad del programador.
Pruebas

Pruebas de Las pruebas de caja negra reciben su nombre del concepto de probar un programa sin
caja negra ber qu hay dentro y sin saber cmo funciona. En otras palabras, el programa es como
caja negra en la que usted no puede ver. Figura 10.3 Modelo de cascada
Dicho en forma simple, los planes de pruebas de caja negra se desarrollan considelcan,lo
slo los requisitos. Por esta razn es muy importante tener un buen conjunto de requisitos
flnidos. El ingeniero de pruebas utiliza estos requisitos, su conocimiento en el desarrollo
sistemas y el entorno de trabajo del usuario para crear un plan de pruebas. Este plan se lisis de todo el proyecto debe_ completarse antes de que su fase de diseo se inicie. La fase de
zar despus cuando el sistema se pruebe como un todo. Usted debe pedir que le mUleS!Ien diseo completa debe terminarse antes de que la fase de implementacin 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 diseo, por ejem-
Pruebas de Mientras que las pruebas de caja negra suponen que no se sabe nada acerca del pr,oll'canla,Ia; plo, sabe exactamente qu hacer debido a que se ha completado la fase de anlisis. La fase de
caja blanca pruebas de caja blanca asumen que usted sabe todo acerca del programa. En este caso, pruebas puede evaluar el paquete completo ya que todo el proyecto est listo.
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 eXi,ctament,'. proceso debe investigarse.
qu sucede dentro del programa. Usted debe asegurarse de que todas las instrucciones
bIes y todas las situaciones posibles se hayan probado. Y sta no es una tarea simple)
La experiencia ayudar al programador a disear un buen plan de pruebas, pero algo 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 hbito de escribir planes de prueba. Comenzar. ware primero completa una versin simplificada de todo el paquete. La versin representa el
su plan de pruebas cuando est en la etapa de diseo. A medida que construya su dlilgrama 01:.< paquete completo pero no incluye los detalles.
estructura, se preguntar a s mismo qu situaciones necesita probar, especialmente las Esta primera versin por lo general consiste slo en los mdulos principales con llamadas
les, y las anotar de inmediato, pues puede suceder que no las recuerde una hora ms tarde. a submdulos vaCos. Por ejemplo, si el paquete tiene diez submdulos, el mdulo principal
Cuando el programador escribe sus diagramas de flujo o pseudocdigo, debe re,riSirrlo,i, llama a cada uno de ellos, con cada submdulo devolviendo slo un mensaje indicando que
poniendo atencin 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 or:anizru:,:: En la segunda versin, se completan uno o ms submdulos, mientras que el resto quedan
las en conjuntos lgicos. Excepto por programas tipo estudiante muy simples, un conjunto de sin terminar (slo 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 submdulos sin problemas. Si hay un problema aqu, el de-
escala, tal vez sea necesario ejecutar 20, 30 o ms casos de prueba para validar un pflOIl'ama, sarrollador sabe que el problema es con estos submdulos y no con el mdulo principal. No
Finalmente, cuando realiza las pruebas, pensar en ms casos de prueba. De nuevO, se aaden ms submdulos hasta que el paquete trabaja en forma apropiada.
anotar e incorporar a su plan de pruebas. Despus de que se ha terminado el programa Este proceso contina hasta que todos los submdulos se aaden. La figura 1004 muestra
ste est en produccin, el programador necesitar nuevamente los planes de prueba el concepto del modelo incremental.
modifique el programa.

10.2 MODELOS DEL PROCESO DE DESARROLLO


9
Existen varios modelos para el proceso de desarrono. Eshldiamos dos de los ms comun"." Primer incremento
b ..
el modelo de cascada y el modelo incremental.
9
MODElO Un modelo muy conocido para el proceso de desarrollo es el modelo de cascada (figura
En este modelo, el proceso de desarrollo fluye en una sola direccin. Esto significa que una
ltimo incremento b
DIE CASCADA
se no puede iniciarse hasta que se ha completado la fase anterior. Por ejemplo, la fase de Figura 10.4 Modelo incremental
Ingeniera de software 10.3 Modularidad 111
El acoplamiento global utiliza variables globales para comunicarse entre dos o ms funcio-
10.3 MODULARIDAD nes. sta no es una buena tcnica de acoplamiento. De hecho, nunca debe utilizarse. Hay va-
rias razones por las cuales usted nunca debe utilizar el acoplamiento global. Citaremos slo
Modularidad significa la divisin de un proyecto grande en partes ms pequeas que pue~ las dos ms importantes.
den entenderse y manejarse ms fcilmente. En otras palabras, modularidad significa dividir 1. El acoplamiento global vuelve prcticamente imposible determinar cules mdulos se
un problema grande en programas ms pequeos que pueden comunicarse entre s. estn comunicando entre s. Por consiguiente, cuando se necesita hacer un cambio en
En la programacin 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-
HERRAMIENTAS
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.
programacin procedural para mostrar la relacin entre los procedimientos o funciones. Un 2. El acoplamiento global liga estrechamente una funcin al programa. Esto significa que
diagrama de clase se utiliza en la programacin orientada a objetos para mostrar las relacio- no puede transportarse fcilmente a otro programa.
nes entre las clases.
Se cre un nuevo estndar llamado Lenguaje de modelado nnificado (UML: Unified El ltimo tipo de acoplamiento, el acoplamiento de contenido, ocurre cuando una funcin ha-
I\c(lIPh~miento
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 funcin. Evidentemente, este
contenido
se refiere. concepto rompe todos los principios de la programacin estructurada. Hacer referencia a los
datos en otra funcin requiere que los datos se hagan visibles externamente fuera de la funcin:....-
ACOPLAMIENTO El acoplamiento es una medida de qu tan estrechamente se ligan dos mdulos el uno con el
otro. Entre ms estrechamente acoplados estn, menos independientes son. Como el objetivo
Otro problema en la modularidad es la cohesin. La cohesin es una medida de qu tan es-
es hacer a los mdulos lo ms independientes posible, usted quiere que stos estn acoplados
trechamente se relacionan los procesos en un programa. Existen varios niveles de cohesin.
holgadamente. Hay varias razones para desear un acoplamiento holgado:
1. Es ms probable que las funciones independientes, es decir con un acoplamiento hol- Un mdulo con cohesin funcional contiene slo un proceso. ste es el nivel de cohesin
gado, se vuelvan a utilizar. ms alto y el nivel que usted debe tratar de modelar. Por ejemplo, en la impresin de un in-
2. Las funciones acopladas holgadamente tienen menos probabilidades de crear errores en forme, la funcin report debe llamar a tres funciones de un nivel inferior: una para obtener
funciones relacionadas; a la inversa, entre ms estrecho sea el acoplamiento, mayor es la los datos, una para dar formato al ttulo del informe e imprimirlo y otra para dar formato a los
probabilidad de que un error en una funcin genere un error en una funcin relacionada. datos e imprimirlos.
3. Las modificaciones de mantenimiento, las cuales son modificaciones necesarias para
implementar nuevos requisitos del usuario, son ms fciles de hacer y menos propen~ Slo una cosa Cada funcin debe realizar slo una cosa. Adems, todas las instrucciones
sas a crear errores con funciones acopladas holgadamente. en la funcin 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 estadsticas del promedio y la desviacin es-
tndar. Las dos medidas estadsticas estn claramente relacionadas por la sola razn de que
Acoplamiento El acoplamiento de datos pasa slo los datos mnimos requeridos de la funcin que llama a ambas son medidas de la misma serie de nmeros. Pero usted no calculara ambas medidas
de datos la funcin llamada. Todos los datos requeridos se pasan como parmetros y no se pasa nin~ en una sola funcin, ya que esto implicara realizar dos clculos y cada funcin debe hacer
gn dato adicional. sta es la mejor fonna de acoplamiento y debe utilizarse siempre que sea slo una cosa.
posible.

Las funciones tienen un acoplamiento de sello si los parmetros son objetos compuestos co~ En un lugar El corolario es que una cosa que realiza una funcin debe realizarse en un so-
Acoplamiento lo lugar. Si el cdigo para un proceso se esparce en varias partes distintas del programa y que
IDO arreglos o estructuras. El acoplamiento de sello no es malo y con frecuencia es necesariO.
de sello no guardan ninguna relacin, es muy difcil hacer cambios. Por lo tanto, todo el procesamien-
El peligro con el acoplamiento de sello es que a menudo es muy fcil enviar una estructura
cuando no se requieren todos los datos de la estructura. Cuando se envan datos adicionales, to para una tarea debe colocarse en una funcin y, de ser necesario, en sus subfunciones.
usted comienza a abrirle la puerta a errores y efectos secundarios indeseables.
Un mdulo con cohesin secuencial contiene dos o ms tareas relacionadas que se vinculan
Acoplamiento 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 control lgico de una funcin. Es muy parecido al acoplamiento de datos con la excepcin de que en ejemplo de cohesin secuencial son los clculos para una venta. El diseo para esta funcin
vez de datos se pasa una bandera. Cuando se usa adecuadamente, el acoplamiento de control podra ser el siguiente:
es un mtodo de comunicacin entre dos funciones necesario y vlido. 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 los artculos
mente, comunica 'el estado: Se lleg al final del archivo. Se encontr el valor de bsqueda. 2. Sumar los artculos
Por lo general un uso pobre de las banderas es una indicacin de un diseo pobre del pro~ 3. Calcular el impuesto sobre las ventas
grama, tal es el caso de un proceso que se divide entre dos o ms funciones independientes. Las
4. Calcular el total
banderas utilizadas para la comunicacin horizontal entre varias funciones en el diagrama de
estructura con frecuencia son una indicacin de un diseo pobre. Las banderas de accin, 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 funcin receptora realice algn pro~ que calcula la suma de los artCulos adquiridos utiliza los precios determinados. Esta suma
cesamiento especial tambin son sumamente sospechosas. Un ejemplo de bandera de accin 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 limite de crdito o que no se recibi ningn pago en el ltimo mes. entrada del siguiente proceso.
.. Ingeniera de software 10.4 Calidad ..

Aunque es bastante comn encontrar el cdigo detallado para estos procesos comt,in"dos Cada uno de estos atributos de buen software recae de lleno en el diseador y programador
en una sola funcin, esto vuelve a la funcin ms compleja y menos reutilizable. La del sistema. Observe que colocamos en el programador la carga de satisfacer no slo los re-
dad de reutilizacin es un motivo de preocupacin si ocurren los mismos clculos o "'lo",~ quisitos explcitos del usuario sino tambin sus necesidades implcitas. 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 implcitos, los cuales estn ocultos en el fondo. sta es una ta-
Cohesin La cohesin de comunicacin combina procesos que trabajan en los mismos datos. Es rea verdaderamente formidable.
ral tener una cohesin de comunicacin en los mdulos superiores en un programa, pero Pero el software de calidad no es slo un concepto vago, Si quiere alcanzarlo, tendr que
de comunicacin ser capaz de medirlo. Siempre que sea posible, estas mediciones pueden ser cuantitativas; es
ted nunca debe encontrarla en el nivel primario. Por ejemplo, considere una funcin que
un archivo de inventario, imprime el estado actual de las partes y luego lo revisa para ver decir, deben ser susceptibles de ser medidas numricamente. Por ejemplo, si una organiza-
alguna parte necesita ordenarse. cip. es seria respecto a la calidad, debe ser capaz de indicarle el nmero de errores (bugs) por
Los primeros tres niveles de cohesin se consideran principios de programacin bien es~ cada mil lneas de cdigo y el tiempo promedio entre las fallas de cada sistema de software
tructurados. Sin embargo, ms all de este punto, la facilidad de comprensin e im!p1ementa~ que mantiene. stas son estadsticas de medicin.
cin, la capacidad de mantenimiento y la precisin comienzan a caer rpidamente. Por otra parte, algunas de las mediciones pueden ser cualitativas, lo cual significa que no
siguientes niveles deben utilizarse slo en los niveles ms altos de un diagrama de estru(:tura. pueden medirse numricamente. 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 ms bien
que se basan en el juicio de una persona para evaluar la calidad de un sistema.
Cohesin El cuarto nivel, la cohesin de procedimiento, combina procesos no relacionados que
de procedimiento vinculados mediante un flujo de control. (Esto difiere de la cohesin secuencial, donde 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
dividir posteriormente como se muestra en la figura 10.5.
Cohesin El quinto nivel, la cohesin temporal, es aceptable slo sobre una variedad limitada de pro~
temporal cesos. Combina procesos no relacionados que siempre ocurren juntos. Dos funciones
ralmente cohesivas son la inicializacin y la tennmacin de una tarea. Son aceptables debido
a que se utilizan slo una vez en el programa y porque nunca son portables. Sin embargo, ad~
Calidad del
mita que an deben contener llamadas para las funciones primarias funcionalmente cohesi~
software
vas siempre que sea factible.

I I I
Cohesin lgica Los dos ltimos niveles pocas veces se encuentran en los programas actuales. La cohesin
r I
~
lgica combina procesos que estn relacionados slo por la entidad que los controla. Una fun~ Capacidad de Capacidad de
y cohesin casual Operabilidad
cin que condicionalmente abri diferentes series de archivos con base en una bandera que I mantemITllento I transferencia
pasa como un parmetro sera lgicamente cohesiva. Finalmente, la cohesin casual combi~ Eficiencia Capacidad Interoperabilidad
na procesos que no guardan ninguna relacin entre s. La cohesin casual existe slo en teo~ Fiabilidad de correccin Portabilidad
ra. Nunca hemos visto un programa profesional que contenga cohesin casual. Facilidad de uso Capacidad Reutilizacin
Pertinencia de pruebas del cdigo
Precisin Flexibilidad
Seguridad Variabilidad
10.4 CAUDAD
Figura 10.5 Factores de calidad
No encontrar a nadie que haya llegado a considerar siquiera reducir al mnimo la calidad del
software, al menos no 10 ha hecho pblicamente. Todos quieren el mejor software disponible
y al escuchar a los creadores de sistemas en el mercado, todos sus sistemas son perfectos. Aun La operabilidad se refiere a la operacin bsica 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 sensacin. Esto significa, en especial
es una contradiccin. Todos tenemos nuestros productos de software favoritos, pero ninguno para un sistema en lnea interactivo, qu tan fcil e intuitivo es usarlo. Se adapta al sistema
de ellos carece de una imperfeccin 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 necesi~ Windows, sus mens desplegables y de aparicin instantnea deben trabajar del mismo mo~
ta estar consciente de los conceptos bsicos de la calidad del software. En esta seccin, estu~ do que los mens del sistema operativo. En pocas palabras, la operabilidad responde a la pre-
diamos algunos de los atributos de un producto de calidad y cmo hacer para lograr la gunta: "Cmo se maneja?"
calidad. Pero estos factores son subjetivos; no son mesurables. As que he aqu los factores que
confonnan la operabilidad; se listan en orden alfabtico.
DEIFINlcON El software de calidad se define como sigue:
Eficiencia La eficiencia es, en general, un trmino subjetivo. En algunos casos el usuario
DECAUDAD Software que satisface los requisitos explcitos e implcitos del usuario, est bien docu~ especificar una norma de rendirriiento, tal como una respuesta en tiempo real que debe reci-
mentado, cumple con las normas operativas de la organizacin y se ejecuta de manera efi~ birse en un segundo el 95 por ciento de las veces. Esto es sin duda medible.
ciente en el hardware para el cual se desarroll.
Ingeniera de software 10.4 Calidad

Fiabilidad La fiabilidad es en realidad la suma de los otros factores. Si los usuarios cueo.., zacin de un cambio solicitado. Si se lleva mucho tiempo, tal vez se deba a que es difcil cam-
tan con el sistema para lograr terminar su trabajo y tienen confianza en l, entonces lo ms 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 medicin 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 medicin de la facilidad de cambiado muchas veces con los aos, a menudo pierden sus centros estructurados y es dif-
uso es observar a los usuarios y ver si estn usando el sistema. Las entrevistas a los usuarios cil cambiarlos. Tambin deben rescribirse.
a menudo revelan problemas con la facilidad de uso de un sistema.
La capacidad de transferencia se refiere a la capacidad para mover datos y/o un sistema de una
Pertinencia La pertinencia en la ingeniera de software puede significar varias cosas dis- plataforma a otra y para reutilizar el cdigo. En muchas situaciones no es un factor importan-
transferencia
tintas. El sistema proporciona su salida de manera oportuna? Para los sistemas en lnea, el te. Por otra parte, si usted est escribiendo software generalizado, sta puede ser crtica.
tiempo de respuesta satisface los requisitos de los usuarios? Para los sistemas por lotes, los
reportes se entregan oportunamente? Tambin es posible, si el sistema tiene una buena ca- Interoperabilidad La interoperabilidad es la capacidad de enviar datos a otros sistemas.
pacidad de inspeccin para detenninar 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 despus 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 clculo.

Portabilidad La portabilidad es la capacidad para mover software de una platafonna de


Seguridad La seguridad de un sistema se refiere a qu tan fcil es para personas no auto-
hardware a otra; por ejemplo, desde una Macintosh al ambiente Windows o de un mainframe
rizadas llegar a los datos del sistema. Aunque sta es un rea subjetiva, existen listas de con-
IBM al ambiente VAX.
trol que ayudan en la evaluacin de la seguridad del sistema. Por ejemplo, el sistema tiene
y requiere contraseas para identificar a los usuarios? Reutilizacin del cdigo Si las funciones estn escritas de manera que puedan volver a
utilizarse en diferentes programas y proyectos, entonces su reutilizacin es alta. Los buenos
Precisin Un sistema que no es preciso es peor que no tener ningn sistema. La mayoa programadores escriben bibliotecas o funciones que pueden reutilizar para resolver proble-
de los empleados se basan ms bien en la intuicin y en la experiencia que en un sistema que mas similares.
saben proporciona informacin falsa y engaosa.
Cualquier sistema que se desarrolle, por lo tanto, debe ser probado a conciencia tanto por cRCULO El primer y ms importante punto a reconocer es que la calidad debe planearse en un siste-
ma. No puede agregarse de ltimo momento. Comienza en el paso 1, la determinacin de 'los
un ingeniero de pruebas del sistema como por el usuario. La precisin puede medirse a tra- LA CALIDAD
vs de mtricas tales como el tiempo promedio entre fallas, el nmero de errores por cada mil requisitos del usuario, y contina a lo largo de la vida del sistema. Debido a que la calidad es
lmeas de cdigo y el nmero de solicitudes de usuario para que se le hagan cambios. un concepto continuo que, al igual que un crculo, nunca tennina, nos referimos a sta como
el crculo de la calidad. Hay seis pasos para crear software de calidad: herramientas de ca-
lidad, revisiones tcnicas, evaluacin formal, controles de cambio, estndares, medicin y
Capacidad La capacidad de mantenimiento se refiere a mantener a un sistema en ejecucin de manera creacin de informes (figura 10.6).
correcta y actualizado. Muchos sistemas requieren cambios regulares, no porque estn pobre- Nadie puede negar que la calidad .:omienza con los ingenieros de software asignados al
de mantenimiento
mente implementados, sino debido a los cambios en los factores externos. Por ejemplo, el sis- equipo, y que necesitan herramientas de calidad para desarrollar un producto de calidad. Por
tema de nmina para una compaa debe cambiarse cada ao, si no es que con mayor suerte, las herramientas de desarro110 actuales son excelentes. Un conjunto de software de he-
frecuencia, para cumplir con las modificaciones a las leyes y regulaciones gubernamentales. rramientas de calidad, conocido como ingeniera de software asistida por computadora (CA-
SE: Computer-Aided Software Engineering) gua el desarrollo del software a travs de los
Capacidad de correccin Una medicin de la capacidad de correccin es el tiempo pro- requisitos, el diseo, la programacin, las pruebas y la produccin. Para el programador hay
medio de recuperacin, el cual es el tiempo requerido para volver a poner un programa en estaciones de trabajo que no slo ayudan a escribir el programa, sino tambin en las pruebas
operacin despus de que ste falla. Aunque sta es una definicin reactiva, actualmente no y la depuracin del mismo. Por ejemplo, es posible dar seguimiento a las pruebas mediante
hay predictores de cunto tiempo tomar corregir un programa cuando ste falla. un programa y luego determinar cules instrucciones se ejecutaron y cules no. Las herra-
mientas cmo sta son invaluables para las pruebas de caja blanca.
Capacidad de pruebas Usted podra pensar que sta es un rea sumamente subjetiva, pero Otro paso importante en el software de calidad es la revisin tcnica. Estas revisiones de-
un ingeniero de pruebas tiene una lista de control de factores que pueden evaluar la capaci- ben realizarse en cada paso en el proceso de desarrollo, incluyendo los pasos de requisitos,
dad de pruebas de un programa. diseo, programacin y pruebas. Una revisin de programa comn comienza despus de que
el programador ha diseado las estructuras de datos y el diagrama de estructura para un pro-
Flexibilidad Los usuarios constantemente solicitan cambios en los sistemas. La flexibilidad grama. Luego se convoca a una junta de revisin del diseo compuesta por el analista de sis-
es un atributo cualitativo que intenta medir qu tan fcil es hacer estos cambios. Si un progra- temas, el ingeniero de pruebas, un representante del usuario y una o dos personas ms.
ma necesita rescribirse por completo para llevar a cabo un cambio, entonces no es flexible. por Observe que no se pennite asistir a una revisin tcnica a ninguna persona del rea adminis-
fortuna, este factor ya no es ms un problema con la negada de la programacin estructurada. trativa. Durante la revisin, el programador explica el mtodo y comenta las interfaces para
otros programas mientras los revisores le hacen preguntas y sugerencias.
Variabilidad Qu tan fcil es cambiar un sistema es un factor subjetivo. Sin embargo, loS
La calidad tambin requiere una evaluacin fonnal, ya que sta asegura que los programas
lderes de proyecto experimentados son capaces de calcular cunto tiempo se llevar la reali-
trabajen en conjunto como un sistema y cumplan con los requisitos definidos. Despus de que
Ingeniera de software 10.6 Trminos clave ..

)OC1umlel'litaci?n en En esta fase, la informacin recopilada debe documentarse con cuidado. Adems, el analista
fase de anlisis debe definir la fuente de informacin. Los requisitos y mtodos elegidos deben exponerse cla-
ramente con las razones en las que se basan.

en En esta fase, las herramientas utilizadas en la copia fInal deben documentarse. Por ejemplo,
fase de diseo si un diagrama de estructura sufre varios cambios, la copia final debe documentarse con ex-
plicaciones completas.

En esta fase debe documentarse cada herramienta y cada programa. Adems, el programa por
lo general debe autodocumentarse. Hay dos niveles de documentacin de programas. El pri-
mero es la documentacin general al principio del programa. El segundo nivel se encuentra
dentro de cada bloque.

Documentacin general Cada programa debe comenzar con una descripcin general del
programa. Enseguida est el nombre del autor y la fecha en que se escribi el programa. A
Figura 10.6 Crculo de la calidad continuacin se incluye el historial de cambios del programa. Para un programa de produc-
cin que abarca varios aos, el historial de cambios puede ser bastante grande.
el programador ha completado las pruebas de unidad, el programa pasa a otro ingeniero de
software para su integracin y las pruebas del sistema. En un proyecto pequeo, es muy pro- Documentacin de funcin Adems, 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 hay mentario para bloques de cdigo. Un bloque de cdigo es muy parecido a un prrafo 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 aos. Es muy natural que especfica. Los bloques de cdigo en su programa deben estar separados por lneas en blan-
durante periodos largos, ocurran cambios en los requisitos y en el diseo. Para asegurar la ca: co, justo como las que inserta en sus reportes entre prrafos.
lidaq, cada cambio debe revisarse y aprobarse por una junta de control de cambios. El impac-
to de un cambio solicitado en cada programa necesita evaluarse y planearse apropiadamente.
Un cambio incontrolado provoca que el calendario se extienda y el presupuesto se rebase, y mentadn en Finalmente, los desarrolladores deben documentar cuidadosamente la fase de pruebas. Cada
que los productos sean de baja calidad. fase de pruebas tipo de prueba aplicada al producto fInal debe mencionarse junto con el resultado. Incluso los
Finalmente, un entorno de buena calidad mide todos los aspectos de la calidad y reporta resultados poco favorables y los datos que los produjeron deben documentarse.
los resultados con regularidad. Sin medicin, usted no puede saber si la calidad es buena o
mala, si mejora o empeora. Al mismo tiempo, las normas publicadas proveen el patrn para Observe que la documentacin es un proceso en curso. Si el paquete tiene problemas despus
muchas mediciones de la calidad. de su lanzamiento al mercado, stos deben documentarse. Si el paquete se modifIca, todas las
.(01l1li0 UN PROCESO
modifIcaciones y sus relaciones con el paquete original tambin deben documentarse. La do-
CURSO
cumentacin se detiene cuando el paquete se vuelve obsoleto.
~

10.5 DOCUMENTACION
Para que un paquete de software se utilice en forma adecuada y se mantenga eficientemente,
se necesita la documentacin. Por 10 general, dos conjuntos independientes de documenta- TRMINOS CLAVE
cin se preparan para un paquete de software: la documentacin del usuario y la documen-
tacin del sistema. cohesin casual fase de diseo
de contenido cohesin de comunicacin fase de implementacin
DOCUMENTACiN Para ejecutar el paquete adecuadamente, el usuario necesita documentacin, habitualmente de control cohesin de procedimientos fase de pruebas
DEl USUARIO llamada el manual, que muestra cmo utilizar el paquete paso a paso. Por lo general contie- de datos cohesin funcional fiabilidad
ne una seccin de tutonal para guiar al usuario a travs de cada caracterstica del paquete. global cohesin lgica flexibilidad
Un buen manual del usuario puede ser una herramienta de marketing muy poderosa. Debe de sello cohesin secuencial ingeniera de software
escribirse tanto para el usuario novato como para el experto. La importancia de la documen- holgado cohesin temporal interoperabilidad
tacin del usuario en marketing no puede exagerarse. Un paquete de software con buena do- diagrama de clase modelo de cascada
cumentacin del usuario defInitivamente aumentar las ventas. capacidad de correccin diagrama de estructura modelo incremental
de pruebas diagrama de flujo modularidad
DOCUMENTACIN La documentacin del sistema defIne el paquete mismo. Debe redactarse de modo que el de vida del software documentacin del sistema mdulos
DEl SISTEMA paquete pueda mantenerse y modifIcarse por personas distintas a los desarrolladores origina- crculo de la calidad eficacia operabilidad
les. Debe haber documentacin del sistema para las cuatro fases del desarrollo de sistemas. fase de anlisis pertinencia
al Ingeniera de software 10.8 Prctica ..

portabilidad pruebas de caja negra seguridad DE OPCiN MLTIPLE 17. Realizar pruebas a un paquete de software puede involu-
precisin pseudocdigo software de calidad crar las pruebas de _ _ __
Los principios de ingeniera de software se establecieron
pruebas de caja blanca reutilizacin variabilidad a. caja negra
por primera vez hace aos.
b. caja blanca
a. 10
c. caja de pan
b. 30
c. 100 d. ayb
10.7 RESUMEN d. 1000 18. Las pruebas de caja negra se realizan por el_ __
Un sistema de software se vuelve obsoleto cuan- a. usuano
111 La ingenieria de software es el establecimiento y uso de 11 El acoplamiento es una medida de qu tan do,_ _ _. b. ingeniero de pruebas del sistema
mtodos y principios de ingenieria slidos para obtener te se ligan dos mdulos el uno con el otro. Los tipos a. se encuentra un error en el cdigo c. programador
software confiable que trabaje en mquinas reales. acoplamiento incluyen de datos, de control, global y b. el1enguaje con el cual se escribe ya no se utiliza d. ayb
contenido. c. el programador principal abandona el proyecto 19. Las pruebas de caja blanca se realizan por el_ __
111 El proceso de desarrollo para un paquete de software im-
iII La cohesin es una medida de qu tan estrechamente d. ay b
plica cuatro fases: anlisis, diseo, implementacin y 3. programador
pruebas. relacionan los procesos en un programa. Los tipos de Una fase en el desarrollo de sistemas es _ _ __ b. usuario
hesin incluyen funcional, secuencial, de 3. anlisis c. ingeniero de pruebas del sistema
l1li La fase de anlisis del proceso de desarrollo consiste en de procedimiento, temporal, lgica y casual. b. pruebas d. CTO
la definicin de los usuarios, necesidades, requisitos y
iIIi La calidad del software puede dividirse en tres c. diseo
mtodos. 20. En la primera versin del modelo , cada m-
nes generales: operabilidad, capacidad de mantenimien- d. todas las anteriores
l1li La fase de diseo del proceso de desarrollo consiste en dulo llamado slo devuelve un mensaje indicando que se
to y capacidad de transferencia. La definicin de los usuarios, las necesidades, los requi-
la determinacin de los sistemas y el diseo de los archi- le llam.
111 Factores importantes para la operabilidad del sitos y los mtodos es parte de la fase de _ _ __
vos y/o bases de datos. a. cascada
son la precisin, eficiencia, fiabilidad, seguridad, " 3. anlisis
b. incremental
11 En la fase de implementacin del proceso de desarrollo nencia y facilidad de uso. b. diseo
c. instrumental
se escribe el cdigo real. c. implementacin
111 Factores importantes para la capacidad de mantenimien- d. de caja negra
d. pruebas
l1li En la fase de pruebas del proceso de desarrollo, deben to son la variabilidad, capacidad de correccin,
21. En el modelo de una fase completa del pro-
realizarse las pruebas de caja negra y de caja blanca. dad y capacidad de pruebas. En el proceso de desarrollo de sistemas, la escritura del
yecto se tennlla antes de que comience la fase siguiente.
1111 Factores importantes para la capacidad de cdigo es parte de la fase de _ _ __
111 Existen dos modelos de desarrollo de software: el mode- 3. cascada
son la reutilizacin del cdigo, interoperabilidad y 3. anlisis
lo de cascada y el modelo incremental. b. incremental
tabilidad. b. diseo
l1li En el modelo de cascada cada mdulo se termina com- c. implementacin c. instrumental
pletamente antes de que se inicie el siguiente mdulo. iiII Hay seis pasos para el software de calidad: estndares; d. pruebas d. de caja negra
medicin y creacin de informes, herramientas de ca1i~
11 En el modelo incremental, todo el paquete se construye, dad, revisiones tcnicas, evaluacin formal y controles En el proceso de desarrollo de sistemas, el diagrama de 22. El(la) _ _ _ es la separacin de un programa grande
con cada mdulo compuesto por slo un intrprete de de cambio. estructura es una herramienta utilizada en la fase de en partes pequeas.
comandos; los mdulos ganan complejidad con cada ite- a. acoplamiento
111 La documentacin del usuario y la documentacin del
racin del paquete. 3. anlisis b. aumento incremental
sistema son necesarias para que un paquete de software
b. diseo c. obsolescencia
l1li La modularidad es la divisin de un programa grande en se utilice de manera apropiada y se mantenga de mane-
c. implementacin d. modularidad
partes ms pequeas que pueden comunicarse entre s. ra eficiente.
d. pruebas
23. La modularidad se vuelve ms visible mediante herra-
En el proceso de desarrollo de sistemas, el diagrama de mientas como _ __
flujo es una herramienta usada en la fase de ____ o

3. el diagrama de estructura
a. anlisis
b. el diagrama de clase
b. diseo
10.8 PRCTICA c. implementacin
c. la cascada incremental
d. pruebas d. ayb
PREGUNTAS DE REPASO 5. Qu implica la fase de anlisis del desarrollo de siste- 24. El(la) . es una medida de qu tan estrechamente
En el proceso de desarrollo de sistemas, el pseudocdi-
mas? se ligan dos mdulos el uno con el otro.
1. Defina la ingeniera de software. go es una herramienta usada en la fase de _ _ _ _ o

6. Qu son las pruebas de caja negra? 3. anlisis


a. modularidad
2. Qu se quiere decir con el ciclo de vida del software?
b. diseo b. acoplamiento
3. Cundo el software se vuelve obsoleto? 7. Qu son las pruebl<; de caja blanca?
c. implementacin c. interoperabilidad
4. Cules son las cuatro fases en el desarrollo del software? 3. Cul e.s la diferencia entre cohesin y acoplamiento? d. pruebas d. cohesin
.. Ingeniera de software
10.8 Prctica ..

25. El(la) una medida de qu tan estrechamente se 33. La cohesin combina procesos que slo 43. Una programadora escribe un programa que incluye una
relacionan los procesos en un programa. relacionados por la entidad que los controla. funcin de suma. Posteriormente escribe otro programa
a. modularidad Una funcin se escribe para encontrar el nmero ms
a. lgica que tambin requiere una suma. Cuando trata de usar la
b. acoplamiento pequeo entre una lista de nmeros. La lista se pasa a la
b. de procedimiento funcin anterior, se da cuenta que debe escribir una fun-
c. interoperabilidad ,funcin como un arreglo. El nmero menor se devuelve
c. temporal cin completamente nueva. Qu principio de calidad se
d. cohesin la funcin que llama. Qu tipo(s) de acoplamiento se
d. funcional viola aqu?
entre la funcin que llama y la funcin llamada?
26. El acoplamiento de ___ slo pasa el mlimo de datos
34. La cohesin _ _ _ combina dos o ms tareas Se escribe una funcin para ordenar una lista de nme- 44. Imagine que le asignan la tarea de realizar la documen-
requerido de la funcin que llama a la funcin llamada.
nadas que estn estrechamente ligadas entre S. ros. La funcin utiliza la lista en la funcin que llama, tacin del sistema en la fase de anlisis para un gran pro-
a. datos
pero devuelve una bandera para mostrar si se realiz el yecto. Idee la hoja de plantilla apropiada para utilizarla
b. sello a. funcional
ordenamiento satisfactoriamente o no. Qu tipo(s) de en los cuatro pasos involucrados en esta fase.
c. control b. secuencial acoplamiento se utiliz entre la funcin que llama y la
d. global c. de comunicacin 45. Repita el ejercicio 44 para la fase de diseo.
funcin llamada?
27. El acoplamiento de _ _ _ ocurre cuando una funcin d. lgica
_Se escribe una funcin para intercambiar datos entre dos 46. Repita el ejercicio 44 para la fase de implementacin.
se refiere directamente a los datos o instrucciones en variables. La funcin utiliza directamente una variable
35. La cohesin combina procesos no re],aci,onado~,
otra funcin. definida en la funcin que llama. Qu tipo de acopla- 47. Repita el ejercicio 44 para la fase de pruebas.
que estn ligados por un control de flujo.
a. datos miento se utiHz?
a. funcional
b. sello
c. contenido b. secuencial
d. control c. de procedimiento
d. lgica
28. El acoplamiento de utiliza variables globales
para comunicarse entre dos o ms funciones. 36. La cohesin combina procesos que trabajan so-
a. datos bre los mismos datos.
b. sello a. funcional
c. contenido b. secuencial
d. control c. de comunicacin
29. El acoplamiento de pasa banderas que pueden d. lgica
dirigir el flujo lgico de una funcin.
37. La precisin, eficiencia, fiabilidad, seguridad, pertinen~
a. datos
cia y facilidad de uso son factores importantes para la
b. sello
_ _ _ del software.
c. control
d. global a. operabilidad
b. capacidad de mantenimiento
30. El acoplamiento de pasa parmetros que son c. capacidad de transferencia
objetos compuestos como arreglos o estructuras.
d. longevidad
a. datos
b. sello 38. La variabilidad. capacidad de correccin, flexibilidad Y
c. control capacidad de pruebas son factores importantes para la
d. global _ _ _ del software.
a. operabilidad
31. La cohesin _ _ _ es el nivel de cohesin ms alto.
a. funcional b. capacidad de mantenimiento
b. secuencial c. capacidad de transferencia
c. de comunicacin d. longevidad
d. lgica
39. La reutilizacin de cdigo, la interoperabilidad y la por-
32. La cohesin _ _ _ combina procesos no relacionados tabilidad son factores importantes para la del
que siempre ocurren juntos. software.
a. lgica a. operabilidad
b. de procedimiento b. capacidad de mantenimiento
c. temporal c. capacidad de transferencia
d. funcional d. longevidad
I
t

CAPTULO 12: .Tipos.d~ da~qs~~tistradOs


--'-<---,,'<' ,:,:, ,,;;_f\<,>f-' :'?$:L
?~,'i;:<~<!y,', ~,/i~'

CAP"t~l(:)1'3: Estr..i~~~ra$~e '~~~hivo~~


CAPTULO 14: Basei:Jato$
11.1 Arreglos ..

.1 ARREGLOS
Imagine que tiene un problema que requiere el procesamiento de veinte nmeros. Usted nece-
sita leerlos, procesarlos e imprimirlos. Tambin debe mantener estos veinte nmeros en la me-

Estructuras
moria para la duracin 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. Cmo puede leer veinte nme-
ros desde el teclado y almacenarlos? Para hacerlo, necesita veinte referencias, una para cada

e at s
variable. Adems, una vez que stas estn en la memoria, cmo 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 nmeros.

nmero O
k ~'tl~;: 1
nmero 1 ~~.: '2>0<Y:' ~'
:1

nmero 2
1 1

I I
En los captulos anteriores utilizamos variables que almacenan una sola entidad. Aunque
>i~:<~;t ;1
variables individuales se utilizan ampliamente en los lenguajes de programacin, no nmero 18 1
usarse para resolver problemas complejos de una manera eficiente.
nmero 19
1 1
En este captulo presentamos la estructura de datos. Una estructura de datos utiliza una
Nmeros
leccin de variables relacionadas a las que se puede acceder de manera individual o como
todo. En otras palabras, una estructura de datos representa un conjunto de elementos de
Figura 11.1 Veinte variables individuales
tos con una relacin especfica entre ellos.

Analizamos tres estructuras de datos en este captulo: arreglos, registros y listas ligadas.
mayora de los lenguajes de programacin tiene una implementacin implcita de los
ros dos. La tercera, sin embargo, se simula utilizando apuntadores y registros.

Este captulo es un preludio para el siguiente captulo, en el cual presentamos tipos de


abstractos (ADT: abstrae' data type).

Figura 11.2 Procesamiento de variables individuales


Estructuras de datos 11.1 Arreglos El
Aunque esto puede ser aceptable para veinte nmeros, definitivamente no es aceptable para
200, 2 000 o 20 000 nmeros. Para procesar grandes cantidades de datos se necesita una es~
tructura de datos poderosa, tal como un arreglo. Un arreglo es una coleccin en secuencia,
de tamao fijo, de elementos del mismo tipo. Dado que un arreglo es una coleccin en se~
cuenea, usted puede referirse a los dems elementos en el arreglo como el primer elemento,
el segundo elemento y as sucesivamente hasta que llegue al ltimo elemento. Si usted fuera
a poner veinte nmeros en un arreglo, podra designar el primer elemento como nmero o CO~
mo se muestra en la figura 11.1. De una manera similar, podra referirse al segundo nmero
como nmero 1 y al tercero como nmero2o Al continuar la serie el ltimo nmero sera n-
mero 19. El subndice indica el nmero ordinal del elemento contado desde el principio del
arreglo,
Lo que usted ha visto es que los elementos del arreglo se direccionan a travs de sus
subndices (figura 11.3). El arreglo como un todo tiene un nombre, nmero, pero se puede
tener acceso a cada nmero en forma individual a travs de su subndice.

nmero O nmero [OJ

nmero 1 nmero [lJ


Figura 11.4 Procesamiento de un arreglo
nmero 2 nmero [2J
I--"--'--'~~

En esta seccin estudiamos una aplicacin de los arreglos: el arreglo de frecuencia y su re-
presentacin grfica.
nmero 18 nmero [18J

nmero 19 nmero [19J


~~ _ _~ L~~~~U
Un arreglo de frecuencia muestra el nmero de elementos con el mismo valor encontrado
Nmeros Nmeros frecuencia en una serie de nmeros. Por ejemplo, suponga que ha tomado una muestra de 100 valores
a. Forma de subndice b. Fonna de ndice
entre y 19. Usted quiere saber cuntos de los valores son 0, cuntos son 1, cuntos son 2 y
as sucesivamente hasta 19.
Figura 11.3 Arreglos con subndices e ndices Puede leer estos valores en un arreglo llamado nmeros. Luego se crea un arreglo de vein-
te elementos que mostrar la frecuencia de cada valor en la serie (figura 11.5).

Las ventajas del arreglo estaran limitadas si usted no tuviera adems constructores de pro~
gramacin que le permitan procesar los datos de una manera ms conveniente. Por fortuna, nmero [OJ L,;C"c<,: frecuencia [O]
hay un poderoso conjunto de constructores de programacin, ciclos, que facilitan el procesa-
nmero [1] frecuencia [1J
miento de arreglos.
Usted puede utilizar ciclos para leer y escribir elementos en un arreglo. Los ciclos se pue- nmero [2] frecuencia [2]
den usar para sumar, restar, multiplicar y dividir los elementos. Usted tambin puede usar ci~
nmero [3J
elos para un procesamiento ms complejo tal como el clculo de promedios. Ahora no
importa si hay 2. 20. 200. 2000 o 20 000 elementos a ser procesados, Los ciclos facilitan el nmero [4]
manejo de todos ellos.
frecuencia [18J
Pero una pregunta sigue sin respuesta: Cmo puede escribir una instruccin de modo que
una vez se refiera al primer elemento de un arreglo y la siguiente vez se refiera a otro elemen- frecuencia [19]
to? En realidad es muy simple: Tan slo se pide prestado el concepto de subndice que se ha Frecuencias
estado usando. No obstante, en lugar de usar subndices, se coloca el valor del subndice en~
nmero [98J
tre corchetes. Usando esta notacin, usted hace referencia al nmero ocomo nmero[O]. ~~-+j
Siguiendo esta convencin, el nInero 1 se convierte en el nmero[IJ y el nmero 19 se nmero [99J
tc=='---'
convierte en el nllleroI19]. Esto se conoce como indexacin. Usando una referencia tpica, Nmeros
usted ahora hace referencia a su arreglo utilizando la variable. El diagrama de flujo para pro~
cesar sus veinte nmeros utilizando un arreglo y los cielos aparece en la figura 11.4. Figura 11.5 Arreglo de frecuencia
.. Estructuras de datos 11.2 Registros 111
Histogramas Un histograma es una representacin pictrica de un arreglo de frecuencia. En lugar de im~
primir los valores de los elementos para mostrar la frecuencia de cada nmero, se imprime un
histograma en forma de grfica de barras. Por ejemplo, la figura 11.6 es un histograma pa~
ra una serie de nmeros en el rango de O a 19. En este ejemplo, los asteriscos (*) se utilizan
para construir la barra. Cada asterisco representa una ocurrencia del valor de datos. Vista del usuario

Los arreglos analizados hasta ahora se conocen como arreglos unidimensionales debido a que' fila O fila 1
ARREGLOS
BIDIMENSIONALES los datos se organizan linealmente en una sola clireccin. Muchas aplicaciones requieren que los 12111 01.11 l,p2~1 !jp!l!1 ~LO~ I
datos se almacenen en ms de una dimensin. Un ejemplo comn es una tabla, que es un arre~ [OliO] [0][1] [0][2] [0][3] [0][4] [1][0] [1][1] [1][2] [1][3J [1][4J
glo que consiste en filas y colunmas. La figura 11.7 muestra una tabla, a la cual por lo general
se le llama arreglo bidimensional. Observe que los arreglos pueden tener tres, cuatro o ms Vista de la memoria
dimensiones. Sin embargo, el anlisis de los arreglos multidimensionales est ms all del
mbito de este libro. Figura 11.8 Disposicin en la memoria

Disposicin Los ndices en la definicin de un arreglo bidimensional representan filas y colLllllllas. Este for-
en la memoria mato relaciona la forma en que los datos se disponen en la memoria. Si usted fuera a consi-
derar la memoria como una fila de bytes con las direcciones inferiores a la izquierda y las
direcciones superiores a la derecha, entonces se podra colocar un arreglo en la memoria con .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 dimensin es una fiJa de elementos que se alma- Un registro es una coleccin 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 ms pequeo 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 seleccin o manipu-
lacin. Un campo difiere de una variable principalmente en que ste es parte de un registro.
00 La diferencia entre un arreglo y un registro radica en que todos los elementos en un arre-
4**** S;Vete3 glo deben ser del mismo tipo, mientras que los elementos en un registro pueden ser del mis-
mo tipo o de uno diferente.
2 7 *******
3 7 ******* La figura 11.9 contiene dos ejemplos de registros. El primer ejemplo, fraccin, tiene
dos campos, ambos formados por enteros. El segundo ejemplo, es tudian te, tiene tres cam-
pos formados por dos tipos distintos.
. C;;Vero19
18 2 * *
19 O
Figura 11.6 Histograma

o
Primera
dimensin (filas)

o 2 3

estudiante
Segunda dimensin
(columnas

Figura 11.7 Arreglo bidimensional


Figura 11.9 Registros
El Estructuras de datos 11.3 Ustas ligadas El
Los elementos de un registro pueden ser del mismo tipo o de tipos diferentes.
Pero todos deben estar relacionados. ~
pList datos
I +-1
liga datos
[;;;~
liga datos
I =H
liga datos
I~I
liga
Una lista ligada con un apuntador de encabezamiento pLis t

Sin embargo, hay una advertencia de diseo. Los datos de un registro deben estar relacio_
nados a un objeto. En la figura 11.9, los enteros de la fraccin pertenecen a la misma frac-
cin, y los datos en el segundo ejemplo estn relacionados con un estudiante. No combine pLis"C
datos que no estn relacionados por conveniencia de programacin. Una lista ligada vaca

ACCESO Primero se describir cmo acceder a componentes individuales de un registro y despus se figura 11.10 Listas ligadas
A REGISTROS examinar la asignacin de todos los registros.

Acceso a campos
individuales
Se puede tener acceso y manipular cada campo de un registro al emplear expresiones y ope-
radores. Todo lo que se puede hacer con una variable individual se puede hacer tambin con
un campo del registro. El problema est en identificar los campos individuales en los que us-
Datos
I. t
ted est interesado.
Dado que cada campo en un registro tiene un nombre, se puede usar simplemente el nom- Figura 11.11 Nodo
bre. El problema con esta sencilla opcin 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 instruccin podra ser
ambigua. Por lo tanto, necesita identificar de algn modo los registros que contienen identi- el final de la lista. Definimos como lista ligada vaca aquella que tiene un apuntador de enca-
ficadores de campo, en este caso los id. Muchos lenguajes de programacin utilizan un pun- bezamiento nulo. La figura 11.10 tambin contiene un ejemplo de una lista ligada vaca.
to (.) para separar el nombre del registro del nombre del campo.
Por ejemplo, si tiene dos registros (Estudiantel y Estudiante2) del tipo estudiante,
Los elementos de una lista ligada tradicionalmente se llaman nodos. Un nodo de una lista
puede referirse a los campos individuales de esos registros como sigue:
ligada es un registro que tiene al menos dos campos: uno contiene los datos y el otro la direc-
Estudiantel,. ig, Estudiante2.nqmbre y Estudiantel.qrado cin del siguiente nodo en la secuencia (figura 11.11).
Estudiante2. id, Estudiante2.'nombre y Estudiante2.grado Los nodos de una lista ligada se llaman registros autorreferenciaIes. En un registro au-
torreferencial, cada instancia del registro contiene un apuntador a otra instancia del mismo ti-
Tambin puede leer y escribir datos de los miembros de un registro del mismo modo que po estructural.
lo hace en las variables individuales.

Una lista ligada siempre debe tener un apuntador de encabezamiento. Dependiendo de c-


mo se emplear la lista, tambin es posible tener varios apuntadores. Por ejemplo, si va a
buscar en una lista ligada, sin duda debe tener un apuntador a la ubicacin (pLoc) donde en-
contrar los datos que busca. En muchos registros, el programa es ms eficiente si existen
11.3 LISTAS LIGADAS apuntadores al ltimo nodo en la lista y a apuntadores de encabezamiento. Este ltimo apun-
tador por lo general se llama pLas t (apuntador al ltimo) o pRear (apuntador a la parte
Una lista ligada es una coleccin ordenada de datos en la que cada elemento contiene la ubi- posterior).
cacin del siguiente elemento; es decir, cada elemento contiene dos partes: datos y liga. La
parte de los datos mantiene la infoIIDacin til, los datos a procesarse. La liga se emplea pa-
ra encadenar los datos. Contiene un apuntador (una direccin) que identifica el siguiente ele- Hay cinco operaciones bsicas en una lista 1igada, las cuales son suficientes para resolver
mento en la lista. Adems, la variable apuntador identifica el primer elemento en la lista. El cualquier problema en la secuencia de la lista. Si una aplicacin 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 fcilmente.
da que se describe aqu se conoce comnmente 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 por Para insertar un nodo en una lista ligada, siga estos tres pasos (figura 11.12):
otras estructuras disponibles. 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 encabez~
miento de la lista-, que contiene cuatro elementos. La liga en cada elemento, excepto el ltL- 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.
El Estructuras de datos
11.4 Trminos clave la
... -1 132 ,~, -, 178 Ia-.
Dada una clave objetivo, la lista ordenada intenta localizar el nodo solicitado en la lista liga-
da. Si un nodo en la lista concuerda con su valor objetivo, entonces la bsqueda regresa un
Lista original valor de verdadero; si no hay coincidencias con las claves, devuelve el valor de falso.

Recuperacin Ahora que sabe cmo localizar un nodo en la lista, podemos describir la recuperacin de un
, 156 ~U, de un nodo nodo. Para recuperar un nodo, busque en la lista para localizar los datos. Si stos se encuen-
tran, se mueven al rea de salida en el mdulo que llama. Si stos no se encuentran, no se re-
Despus del paso 1
cuperar nada.

.. . -J[l13~2I&:':5J-1~,;;JC:17~8liiJ~'"
6 Cruce de una lista Los algoritmos que cruzan una lista inician en el primer nodo y examinan cada nodo en su-
Despus del paso 2 cesin hasta que se ha procesado el ltimo nodo. El cruce lgico se utiliza por varios tipos de
algoritmos, tales como el cambio de un valor en cada nodo, la impresin de la lista, la suma
de un campo en la lista o el clculo del promedio de un campo. Cualquier aplicacin que re-
"'-1 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
Despus del paso 3 apuntador auxiliar para el primer nodo en la lista. Luego, utilizando un ciclo, contine hasta
que todos los datos se han procesado. Cada ciclo llama a un mdulo de proceso y le pasa los
Figura 11.12 Insercin de 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 tennina (figura 11.14).

Lista original

... -1[~75;--:]~?;<,l-1- - -...... , 124 ,~ ...


Despus de eliminarlo

Figura 11.13 Eliminacin de un nodo


pWalker

Figura 11.14 Cruce de una lista


Observe que en algunos casos especiales (al agregar al final de una lista, al agregar al comien-
zo de una lista o al agregar a una lista vaca), estos tres pasos deben modificarse segn el caso.

Eliminacin Para eliminar un nodo primero debe ubicar el nodo mismo. Una vez que localice el nodo a eli-
de un nodo 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 vaca. Recuerde que la eliminacin del pri-
mer nodo o del nico nodo son casos especiales que necesitan un manejo especial.
11.4 TRMINOS CLAVE
Bsqueda La bsqueda 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 lgico de los nuevos datos. Para almacenamiento de filas mayores bsqueda en una lista lista ligada individualmente
eliminar datos, necesita encontrar el nodo a ser eliminado e identificar a su predecesor lgi~ apuntador campo memoria
co. Para recuperar datos de una lista, necesita buscar en la lista y encontrar los datos. Ade~ apuntador nulo ciclo nodo
ms, muchas aplicaciones de usuarios requieren que se realicen bsquedas en las listas para arreglo estructura de datos registro
localizar datos.
arreglo bidimensional grfica de barras registro autorreferencial
Para buscar una lista en una clave, necesita un campo de clave. Para las listas sencillas, arreglo de frecuencia histograma subndice
la clave y los datos pueden estar en el rusmo campo. Para registros ms complejos se nece~ arreglo multidimensional liga variable
sita un campo de clave independiente.
arreglo unidimensional lista ligada
El Estructuras de datos 11.6 Grupo de prcticas ..

_ _ _~ es un conjunto de tamao fijo y secuenciado 25. Cada elemento de un registro se conoce como _ __
11.5 RESUMEN de elementos del mismo tipo de datos. 3. una variable
3. un arreglo b. un ndice
liI Arreglos, registros y listas ligadas son estructuras de da- 11 Cada elemento de un registro se llama campo. b. un registro c. un campo
tos que se estudian en este captulo. c. una lista ligada
111 Una diferencia entre un arreglo y un registro es que to- d. un nodo
111 Un arreglo unidimensional es una secuencia de tamao 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 de _ _ _ o

Dado el arreglo llamado obj eto con veinte elementos,


ser del mismo tipo o de uno diferente. a. el mismo tipo
!IIII Puede acceder a los elementos individuales de un arre- si usted ve el trmino objeto 1Cl , sabr que el arreglo
111 Una lista ligada es un conjunto de datos ordenados en la tiene una forma de ____ b. distintos tipos
glo utilizando el nombre del arreglo y el ndice. o

cual cada elemento contiene la ubicacin (direccin) del c. tipo entero


3. variable
11 Puede procesar los valores de un arreglo usando un ciclo. siguiente elemento; es decir, cada elemento contiene dos d. tipo carcter
b. registro
111 Un arreglo de frecuencia es aquel cuyos elementos partes: datos y liga. 27. Todos los miembros de un registro deben ser de _ _ _
c. ndice o

muestran el nmero de ocurrencias de valores de datos 11 El nodo en una lista ligada individualmente contiene d. subndice 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 ningn otro Dado el arreglo llamado objeto con veinte elementos,
111 Un histograma es una representacin grfica de un arre- c. tipo entero
nodo. si usted ve el trmino objeto [10], sabr que el arre-
glo de frecuencia. d. tipo carcter
glo tiene una forma de _ __
I!I Un arreglo bidimensional es una presentacin en una ta- R Cuando se desea insertar un elemento en una lista liga~
3. variable 28. 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 ubicacin del siguiente
vaca, agregar al inicio de la lista, agregar a la mitad y
!II Un arreglo multidimensional es una extensin de un c. ndice elemento.
agregar al final.
arreglo bidimensional a uno de tres, cuatro o ms dimen- d. subndice a. arreglo
I!I Cruzar una lista ligada significa recorrer la lista, nodo
siones. b. registro
por nodo, y procesar cada nodo. Tres ejemplos de cruces Un(a) es una representacin grfica de un
c. lista ligada
111 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 sin del contenido de los nodos y la suma de los valores d. nodo
a. lista ligada
nombre. de uno o ms campos. b. histograma 29. En una lista ligada, cada elemento contiene _ _ _ o

c. registro 3. datos
d. nodo b. una liga
11.6 GRUPO DE PRCTICAS Un arreglo que consiste simplemente en filas y colum-
c. un registro
nas probablemente es un arreglo _ _ _ o
d. ayb
PREGUNTAS DE REPASO 12. Cul es la funcin del apuntador en una lista ligada?
a. unidimensional 30. E1(la) es un apuntador que identifica el siguien
1. Por qu existe la necesidad de las estructuras de datos? 13. Cmo se puede apuntar hacia el primer nodo en una lis- b. bidimensional te elemento dentro de la lista ligada.
2. Mencione tres tipos de estructuras de datos. ta ligada? c. tridimensional a. liga
3. Qu es un arreglo? 14. A qu apunta el apuntador en el ltimo nodo de una lis- d. multidimensional b. nodo
ta ligada? c. arreglo
4. En qu difiere un elemento en un arreglo de un elemen- En un arreglo bidimensional con cuatro filas, la fila con
15. Qu es una lista ligada individualmente? las direcciones superiores en la memoria es la _ __ d. ao b
to en un registro?
16. Describa el predecesor del apuntador cuando se agrega fila. 31. Dada una lista ligada llamada nios, la variable del
5.. Cul es la diferencia entre un elemento en un arreglo y
un elemento en una lista ligada? un nodo a: a. primera apuntador nios identifica al elemento de la
3. el inicio de una lista ligada b. segunda lista ligada.
6. Por qu debe usar ndices en lugar de subndices para
b. el punto medio de la lista ligada c. tercera a. primer
identificar los elementos de un arreglo?
c. el fmal de una lista ligada, y d. cuarta b. segundo
7. Qu es un arreglo de frecuencia? d. una lista vaca c. ltimo
Un(a) es un conjunto de elementos relaciona-
8. Cmo se relaciona un histograma con un arreglo de fre- d. cualquiera
PREGUNTAS DE OPCiN MLTIPLE dos, posiblemente de distintos tipos, que tienen un solo
cuencia?
nombre. 32. Una lista ligada vaca consiste de _ __
9. Cmo se almacenan los elementos de un arreglo en la 17. Una estructura de datos puede ser _ _ o

a. arreglo a. una variable


memoria? 3. un arreglo
b. un registro b. registro b. dos nodos
10. Cul es la definicin de un campo en un registro? c. lista ligada c. datos y una liga
c. una lista ligada
11. Cules son los campos de un nodo en una lista ligada? d. todas las anteriores d. todas las anteriores d. un apuntador de encabezamiento nulo
.. Estructuras de datos

33. En un registro autorreferencial, cada instancia del re- 40. Utilizando la figura 11.9, cul es el resultado de las
gistro contiene un apuntador hacia otra instancia de guientes instrucciones, suponiendo que Fr 1 es del
_ _ _ tipo. fraccin?
a. el mismo Frl.numerador = 7;
Frl.denominador = 8;
b. diferente
c. similar
d. ao b

34. Dado un nodo para insertar en una lista vinculada, cuan-


41. Usando la figura 11.9, escriba un algoritmo para
una fraccin (Frl) a otra fraccin (Fr2).
42. Utilizando la figura 11.9, escriba un algoritmo para
tar una fraccin (Frl) de otra fraccin (Fr2).
datps
ipos'~lde
do el nodo predecesor tiene un apuntador nulo, entonces
usted lo estar agregando a _ __
a.
b.
una lista vaca
el inicio de la lista
43. Usando la figura 11.9, escriba un algoritmo para
plicar una fraccin (Frl) por otra fraccin (Fr2).
44. Usando la figura 11.9, escriba un algoritmo para
bstractos
una fraccin (Frl) entre otra fraccin (Fr2).
c. el final de la lista
45. Usted puede tener un arreglo de registros. Muestre
d. ao b
camente un arreglo de fracciones (utilice la figura 1
35. Dado un nodo para insertar en una lista ligada, cuando 46. Puede tener una lista ligada en la cual la parte de los
el nodo predecesor tiene un apuntador no nulo, entonces tos sea un registro. Muestre grficamente una lista
usted lo -estar agregando a _ __ da de registros de estudiantes (utilice la figura 11.9).
a. el inicio de la lista 47. En la mayora de los lenguajes de programacin,
b. el cuerpo de la lista arreglo es una estructura de datos esttica. Cuando
c. el final de la lista define un arreglo, el tamao es fijo. Qu problema vC>ffi(,nz:anlos este captulo con un breve resumen de los antecedentes del tipo de datos abs-
d. aob r esta restriccin? (IDA). Enseguida damos una definicin y proponemos un modelo. El resto del cap-
48. Una lista ligada es una estructura de datos dinmica. estudia diversos TDA, tales como la lista lineal, la pila, la cola de espera, el rbol, el
36. Para cruzar una lista, se necesita un apuntador _ __ binario y el grafo.
tamao de una lista ligada puede modificarse de m,melO,l
a. nulo dinmica (durante la ejecucin del programa). De
b. auxiliar forma esta caracterstica beneficia al programador?
c. inicial 49. Cul operacin cree usted que es ms sencilla, agregar
d. de insercin un elemento a un arreglo o agregar un elemento a
lista ligada? Justifique su respuesta.

EJERCICIOS 50. Cul operacin cree usted que es ms sencilla, elirnin:l!


un elemento de un arreglo o eliminar un elemento
37. Usted tiene dos arreglos. A y B, cada uno de diez ente-
lista ligada? Justifique su respuesta.
ros. Escriba un algoritmo que compruebe si cada elemen-
to del arreglo A es igual al elemento correspondiente del 51. Cul operacin considera que es ms sencilla, acceder
arreglo B. a un elemento de un arreglo o acceder a un elemento
una lista ligada? Justifique su respuesta.
38. Escriba un algoritmo que invierta los elementos de un 52. Cul operacin piensa usted que es ms fcil, realizar
arreglo de manera que el ltimo elemento se convierta una bsqueda en un arreglo o en una lista ligada? Justi-
en el primero, el antepenltimo en el segundo, y as en fique su respuesta.
adelante.
53. Cul operacin cree usted que es ms sencilla, ordenar
39. Escriba un algoritmo para imprimir el contenido de un elementos en un arreglo u ordenar una lista ligada? Jus-
arreglo bidimensional de 1 filas y J columnas. tifique su respuesta.
.. Tipos de datos abstractos 12.2 listas lineales El
No podemos exagerar la importancia de ocultar la implementacin. El usuario no tiene que
12.1 ANTECEDENTES conocer la estructura de datos para usar el TDA. Respecto al ejemplo de cola de espera, el
programa de aplicacin no debe tener conocimiento de la estructura de datos. Todas las refe-
En los primeros das de la programacin no haba tipos de datos abstractos. Si queramos leer rencias a los datos y la manipulacin de los mismos en la cola de espera debe manejarse a tra-
un archivo, escribamos el cdigo para leer el dispositivo de archivo fsico. No tomaba mu~ vs de interfaces definidas para la estructura. Permitir que el programa de aplicacin haga
cha tiempo darse cuenta de que el mismo cdigo se escriba una y otra vez. As que los cien- referencia directamente a la estructura de datos es una falta comn en muchas implementa-
tficos de la computacin crearon lo que se conoce ahora como tipo de datos abstracto ciones que impide que elIDA sea completamente porttil a otras aplicaciones.
(TDA). Escribimos el cdigo para leer un archivo y luego 10 colocamos en una biblioteca pa-
ra uso de todos los programadores. El modelo TDA aparece en la figura 12.1. El rea sombreada con un contorno irregular re-
Este concepto se encuentra en los lenguajes modernos de hoy en da. El cdigo para leer presenta el modelo. Dentro del rea abstracta hay dos aspectos del modelo: la estructura de
el teclado es un IDA. Tiene una estructura de datos, carcter y una serie de operaciones que datos y las funciones operativas. Ambas estn totalmente contenidas en el modelo y no den-
pueden usarse para leer esa estructura de datos. Las reglas penniten no slo leer la estructu- tro del mbito del usuario. No obstante, la estructura de datos est disponible para todas las
ra de datos sino adems convertirla en diferentes estmcturas de datos tales como enteros y ca- operaciones con IDA segn se requiera y una operacin puede llamar a otras funciones para
denas. cumplir su tarea. Dicho de otra forma, las estructuras de datos y las funciones estn dentro
Con un TDA, a los usuarios no les preocupa cmo se realiza la tarea sino qu puede hacer del mbito de la una y de las otras.
sta. En otras palabras, el TDA consiste en una serie de definiciones que permiten a los pro-
gramadores utilizar las funciones mientras se oculta la implementacin. Esta generalizacin
de operaciones con implementaciones inespecficas se conoce como abstraccin. Usted abs-
trae la esencia del proceso y deja ocultos los detalles de la implementacin.

El concepto de abstraccin significa:


1. Usted sabe qu puede hacer un tipo de datos.
2. La manera de hacerlo queda oculta.

Corno ejemplo, considere a un analista de sistemas que debe simular la fila de espera de
un banco para determinar cuntos cajeros se necesitan para atender a los clientes de manera
eficiente. Este anlisis requiere la simulacin de una cola de espera. Sin embargo, las colas
de espera por lo general no estn disponibles en los lenguajes de programacin. Incluso si un
tipo de cola de espera est disponible, el analista an necesitara alglmas operaciones bsicas,
como la insercin (enqueuing) y la eliminacin (dequeuing) de un elemento, para la simula~
cin 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 solucin es buena slo para una
aplicacin prxima) o (2) se puede escribir un TDA de cola de espera que se utilice para re- Figura 12.1 Modelo para TDA
solver cualquier problema de cola de espera. Si se elige esta ltima opcin, el analista toda-
va necesitar escribir un programa para simular la aplicacin bancaria, pero hacerlo ser Los datos se introducen, se accede a ellos, se modifican y se eliminan mediante las interfaces
mucho ms fcil y rpido debido a que l o ella podrn concentrarse en la aplicacin en vez
OPERACIONES
operativas dibujadas como rectngulos parcialmente dentro y parcialmente fuera de la estruc-
de concentrarse en la cola de espera. CON TDA
tura. Para el encabezado (header) de cada operacin, hay un algoritmo que realiza una ope-
racin especfica. Slo el nombre de la operacin y sus parmetros estn visibles para el
DEfiNICiN Definamos formalmente un TDA. Un tipo de datos abstracto es una declaracin 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. Despus se encap- se para cumplir requisitos especficos.
sulan los datos y las operaciones que se aplican a los datos, y se ocultan al usuario.

Tipo de datos abstracto 2.2 LISTAS LINEALES


1. Declaracin de los datos Primero definiremos unos cuantos TDA comenzando por la lista lineal. Una lista lineal es
2. Declaracin de las operaciones una lista en la cual cada elemento tiene un sucesor nico. En otras palabras, una lista lineal
3. Encapsulamiento de los datos y operaciones tiene una estructura secuencial. La propiedad de secuencia de una lista lineal se muestra en
el diagrama de la figura 12.2.
$

.. Tipos de datos abstractos


12.2 Listas lineales
111
lista
I Elemento 1 ~ ~ - - -1 ~ - - - -1 ~ - - - -1

Figura 12.2 lista lineal


Elemento 2 Elemento 3 Elemento 4

~
10 ~ .. -1 20 ~ml
I !
30
t
datos
Las listas lineales puec ~n '::1Vidirse en dos categoras: 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 ti ordena-
das. En una lista aleatoria no hay un orden en los datos. En una lista ordenada los datos se lista
acomodan segn una clave. Una clave es uno o ms campos dentro de una estructura que se
utilizan para identificar los datos o para controlar de algn otro modo su uso. En un arreglo
simple, los datos tambin son las claves.
/1....1_lO_-,r m _20_-,
11....'
3
L-_ 0_...JI"
En una lista restringida, los datos slo pueden aadirse o eliminarse en los extremos de
la estructura, y el procesamiento est restringido a operaciones de los datos en los extremos Figura 12.4 Insercin en una lista lineal
de la lista. Describimos dos estructuras de lista restringida: la lista primero en entrar, pri-
mero en salir (FIFO: jirs! in, jirs! out) y la lista ltimo en entrar, primero en salir (LIFO: La eliminacin 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 LIPO com(m- bsqueda en la lista para localizar los datos que se van a eliminar. Cualquier algoritmo de bs-
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 operacin es la lista vaca. Si
la lista est vaca, sta se encuentra en un estado de sobre desbordamiento y la operacin
fracasa.

Se elimina el elemento
identificado
por la bsqueda
lista
I azul
I 1
m
verde amarillo

datos
Figura 12.3 Categoras de listas lineales

En esta seccin nos concentramos en un tipo de lista lineal: la lista lineal general con da-
azul .'LI__v_e_r_de_--,~ - hl amarillo
tos ordenados. Las listas lineales restringidas se analizarn posteriormente en el captulo.
Figura 12.5 Eliminacin de una lista lineal
Aun cuando podemos definir muchas operaciones con una lista lineal general, slo analiza-
OPERACIONES CON
LISTAS LINEALES
remos cuatro operaciones de las ms comunes: la insercin, la eliminacin, la recuperacin Y Recuperacin La recuperacin de lista 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 insercin y la eliminacin, cualquier algoritmo de bsqueda 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-
Insercin Para mantener el orden se requiere insertar los datos al principio o al final de la lista, pero la ple operacin es una lista vaca. No se puede recuperar un elemento de una lista lineal vaca.
mayor parte del tiempo los datos se insertan en algn lugar dentro de la lista. Para determi-
nar dnde se van a colocar los datos, los cientficos de la computacin utilizan un algoritmO El recorrido de una lista es una operacin en la cual todos los elementos en la lista se proce-
de bsqueda. El nico problema posible con esta simple operacin 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 recuperacin, el
miento y el elemento no puede aadirse. La msercin se muestra grficamente en la figura almacenamiento, etc. El recorrido de listas requiere un algoritmo iterativo en vez de una bs-
12.4. Los datos insertados se identifican mediante el elemento sombreado, en este caso, el ter- queda. Cada iteracin 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.
.. Tipos de datos abstractos 12.3 Pilas ..

lista
gato fm -- --1 cebra

Elemento recuperado
II}.:!>I
identificado K !*1$!
por la bsqueda
1&,,1. ,,~I
,
Pila de monedas Pila de libros Pila de computadoras
lista ir-
/~====~~~~~==~~==~I~
,--_ga_t_o_...J~ I, -, ~'""-"""""''''' "-'_ _ _---1 - - - ce_b_ra_--l. Figura 12.8 Tres representaciones de una pila
m jL'_ _

objeto diferente del que est en la cima, primero debe eliminar todos los objetos que estn de-
Figura 12.6 Recuperacin desde una lista lineal
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 bsicas: inser-
lista tar, extraer y vaciar.

L
_...,g,at_o_--ll
m

L-=-_--.J
---1____ *cebra Al insertar (push) se aade un elemento en la parte superior de la pila (figura 12.9). Despus
+ de insertar, el elemento se vuelve la cima. El nico problema posible con esta operacin 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 aadirse.

Figura 12-1 Recorrido de una lista lineal

I-___~.I l'liAsftdl Cima


IMPLEMENTACiN Dos mtodos comunes de implementacin de una lista lineal general son un arreglo y una Cima c::::J
lista ligada. Operacin
DE UNA LISTA c::::J
LINEAL GENERAL Pila Pila

APLICACIONES Las listas lineales se utilizan en situaciones donde se accede a los elementvs en forma alea- Figura 12_9 Operacin de insertar en una pila
DE LISTA LINEAL toria. Por ejemplo, en una universidad una lista lineal puede utilizarse para almacenar infor-
macin sobre los estudiantes que estn inscritos en cada semestre. La informacin puede 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 vaco. Si se hace una llamada a la operacin de ex-
traer cuando la pila est vaca, sta s~ encuentra en un estado de sobre desbordamiento.

12.3 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, .
Cima
el orden de los datos se invertir. La entrada de datos como 5, 10, 15,20 debe eliminarse co-
c::::J Cima
mo 20, 15, 10 Y 5. Este atributo de inversin es la razn por la cual las pilas se conocen co- Operacin
mo una estructura de datos ltimo en entrar, primero en salir (LIPO). c::::J
Una persona utiliza en su vida diaria muchos tipos de pila distintos. A menudo hablamos Pila Pila
de una pila de monedas o de una pila de platos. Cualquier situacin en la cual usted simple-
mente pueda aadir o eliminar un objeto en la cima es una pila. Si desea eliminar cualquier Figura 12.10 Operacin de extraer de una pila
.. Tipos de datos abstractos 12.4 Colas de espera ..

Vaciar Esta operacin (empty) hace una revisin para ver si una pila est vaca o no. La respuesta es El retroceso, dar marcha atrs a los datos previos, es un uso de pila que se encuentra en apli-
ya sea verdadera o falsa. caciones como los juegos de computadoras, el anlisis de decisiones y los sistemas expertos.

EJEMPLO 1
Muestre el resultado de las siguientes operaciones en una pila S.
COLAS DE ESPERA
Una cola de espera es una lista lineal en la cual los datos slo pueden insertarse en un extre-
mo, llamado extremo trasero, y eliminarse en el otro extremo, llamado frente. Estas restric-
ciones aseguran que los datos se procesen a travs de la cola de espera en el orden en el cual
se reciben. En otras palabras, una cola de espera es una estructura de primero en entrar, pri-
mero en salir (FIFO).
SOLUCIN Una cola de espera es lo mismo que una fila, De hecho, si usted estuviera en Inglaterra,
no entrara en una fila sino en una cola de espera. Una fila de gente esperando el autobs en
La figura 12.11 muestra las operaciones y el resultado final. una estacin es una cola de espera; una lista de llamadas que se ponen en espera para que les
responda un operador telefnico es una cola de espera, y una lista de tareas que esperan ser
procesadas por una computadora tambin es una cola de espera.

L;rl rL; r
ULJW lliJlliJ Lill
La figura 12.12 exhibe dos representaciones de una cola de espera: la primera, una cola de
12 espera de personas y la otra, una cola de espera de computadora. Tanto las personas como los
datos entran a la cola de espera en la parte trasera y avanzan por la misma hasta que llegan al
S S S S S S frente. Una vez que estn en la parte de adelante, dejan la cola de espera y son atendidos.

Figura 12.11 Ejemplo 1

IMPLEMENTACIN Aunque una pila puede implementarse. ya sea como un arreglo o como una lista ligada, la for-
Bances I
DE UNA PILA ma ms comn es una lista ligada debido a que las operaciones de extraccin e insercin pue-
den implementarse mucho ms fcilmente en una lista de este tipo.

Las aplicaciones de pila pueden clasificarse en cuatro amplias categoras: inversin de datos, Eliminar
ll tj~tttt
a. Una cola de espera (fila) de personas
Insertar
APLICACIONES
anlisis sintctico de datos, postergacin del uso de los datos y retroceso sobre los pasos. (dequeue) (enqueue)
DE PILA

Inversin de datos La inversin de datos requiere que un conjunto dado de datos se reordene de modo que el pri- ~r--""""""I r-I--'1 -I~,""';;;I '-[--..I~
mer elemento y el ltimo se intercambien, con todas las posiciones entre el primero y el lti-
parte de enfrente parte trasera
mo tambin intercambiadas relativamente. Por ejemplo, 1 2 3 4 se convierte en 4 3 2 1.
b. Una cola de espera de computadora

Anlisis sintctico Otra aplicacin de pilas es el anlisis sintctico. Este tipo de anlisis es cualquier lgica que
Figura 12.12 Representaciones de colas de espera
divide los datos en piezas independientes para su procesamiento posterior. Por ejemplo, para
traducir un programa fuente a lenguaje de mquina, un compilador debe analizar el progra-
ma en partes individuales como palabras clave, nombres y elementos sintcticos (tokens), Aun cuando sea posible definir muchas operaciones para una cola de espera, tres son las b-
OPERACIONES CON
Un problema de programacin comn son los parntesis sin par en una expresin algebrai- sicas: eliminar, insertar y vaciar.
ca. Cuando los parntesis no tienen par pueden ocurrir dos tipos de errores: pueden faltar ya
COLAS DE ESPERA
sea el parntesis de apertura o el parntesis de cierre. Siempre que se encuentra un parntesis Insertar La operacin 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 parntesis de cierre, un parnte- pus 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 vaca, Como se vio con las pilas, el nico problema posible con la insercin es quedarse sin espa-
significa que hay ms parntesis de apertura que de cierre. Tambin 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 parntesis de cierre y no hay parntesis de apertura en la cima de la fila, entra en un estado de desbordamiento,

Postergacin Cuando se utiliza una pila para invertir una lista, toda la lista es leda antes de que los resul- Eliminar La operacin de eliminar (dequeue) un elemento de una cola de espera se muestra en la fi-
tados se comiencen a generar. Con frecuencia, la lgica de una aplicacin 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-
cacin requiere la postergacin del uso de los datos, cin, la cola est en un estado de sobre desbordamiento.

12.5 rboles ..
.. Tipos de datos abstractos

Una cola de espera puede implementarse ya sea como un arreglo o como una lista ligada.

parte de enfrente

APILlC.ACIIONES Las colas de espera son una de las estructuras de procesamiento de datos ms comunes. Se
encuentran en prcticamente todo sistema operativo y red en incontables reas distintas. Por
Operacin DE LA COLA DE
ejemplo, las colas de espera se utilizan en aplicaciones de negocios en lnea tales como el pro-
datos ESPERA
cesamiento de solicitudes del cliente, tareas y pedidos. En un sistema de cmputo una cola de
espera es necesaria para procesar tareas y para servicios del sistema tales como los servicios
parte traserd ciruelal I kiwi I L:uva$fl de impresin.
Las colas de espera pueden volverse bastante complejas; damos una implementacin sim-
Cola de espera
ple de cola d~ espera: una aplicacin que es til para clasificar datos. Una cola de espera pre-
serva el orden de los datos. Por ejemplo, usted tiene una lista de nmeros y necesita clasificarlos
Figura 12.13 Operacin de insertar
en grupos (100 o menos, entre 100 y 201. etc,). Puede leer los datos y crear varias colas de es-
pera. Un nmero 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 nmeros en la categora de 100 o
menos pueden imprimirse primero en el orden en que se leyeron. Despus, todos los nmeros
parte de adelante I~ ~ ~ entre 100 y 201 pueden imprimirse en el orden en que se leyeron y as por el estilo .
.
2.5 RBOLES
parte de adelante I~ ~ Los rboles se usan exhaustivamente en las ciencias de la computacin como una estructura
eficiente para realizar bsquedas en listas dinmicas grandes y para aplicaciones diversas co-
Cola de espera
mo los sistemas de inteligencia artificial y los algoritmos de codificacin. En esta seccin
analizamos el concepto bsico de rbol. En la siguiente seccin presentamos un tipo especial
Figura 12.14 Operacin de eliminar
de rbol, llamado rbol binario, el cual es una estructura comn en las ciencias de la compu-
Esta operacin (empty) hace una revisin para ver si una cola de espera est vaca o no. El re- tacin.
Vaciar
sultado es verdadero o falso.
CONCEPTOS Un rbol consiste de un conjunto finito de elementos, llamados nodos, y un conjunto finito
EJEMPLO 2 BSICOS DE RBOL de lneas dirigidas, llamadas ramas, que conectan los nodos. El nmero 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-
en~~E;~,<~t- :" (Q 23 ,:; ,::",; '::/:\
I
ma de las ramas de grado de entrada y de grado de salida es el grado del nodo. En la figura
i f nClt;eIl\]:?CY (Q), dequeue (Q) 12.16 el grado del nodo B es 3.
enquee ''(0'/20) Si el rbol no est vaco, el primer nodo se conoce como raz. El grado de entrada de la raz
'enqueue(Q; 19) es, por definicin, cero. Con excepcin de la raz todos los nodos en un rbol deben tener un
"J1f"noc emptl!\~: [Q), dequeue,{Q) grado de entrada de exactamente uno. Todos los nodos en el rbol pueden tener cero, una o
ms ramas que salen de ellos, es decir, pueden tener un grado de salida de cero, uno o ms.
SOLUCIN
La figura 12.15 muestra las operaciones y el resultado final.

parte de
enfrente
c== partede~
enfrente 23
partedeC==
enfrente

Q Q Q
partede~ partede~ Partede~
enfrente 20 enfrente 20 19 enfrente 19

Q Q Q
Figura 12.1 S Ejemplo 2 111 Figura 12.16 Representacin de un rbol
El Tipos de datos abstractos 12.6 rboles binarios ..

Terminologa Adems de la raz, muchos tnninos distintos se utilizan para describir los atributos de un
bol. Una hoja es cualquier nodo con un grado de salida de cero. En la figura 12.16, el nodo
es una hoja. Un nodo que no es una raz o una hoja se conoce como nodo interno debido
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 ---es decir, si tiene un grado de salida mayor
que cero. A la inversa, un nodo con un predecesor es un hijo. Un nodo hijo tiene un grado de.
entrada de uno. Dos o ms nodos con el mismo padre son hennanos. Por fortuna, usted
tiene que preocuparse por las tas, los tos, las sobrinas, los sobrinos y los primos. Almque :'lo
gunos libros utilizan el trmino abuelo, nosotros no lo hacemos; preferimos el trmino
general de ancestro. Un ancestro es cualquier nodo en el camino desde la raz hasta el nodo.
Un descendiente es cualquier nodo en el camino debajo del nodo padre; es decir, todos los'
nodos en los caminos de un nodo dado hacia una hoja son descendientes del nodo. La figura Figura 12.18 Subrboles
12.17 muestra el uso de estos trminos.

Las operaciones con un rbol son complejas y su explicacin est ms all del mbito de es-
te libro. Se analizan en un curso de estructura de datos.
NivelO

Rama
NiveLl PI RBOLES BINARIOS
Un rbol binario es un rbol en el cual ningn nodo puede tener ms de dos subrboles. En
otras palabras, un nodo puede tener cero, uno o dos subrboles. Estos subrboles estn dise-
ados como el subrbol izquierdo y el subrbol derecho. La figura 12.19 muestra un rbol bi-
Padres: A, B, F Hojas: C. D, E, F, G, H, 1
nario con sus dos subrboles. Observe que cada subrbol es por s mismo un rbol binario.
Hijos: B, E, F, e, D, G, H, 1 Nodos internos: B, F
He'manos: {B.E.F}. {C.D}, {G.H.I}

Figura 12.17 Terminologa de rbol

Varios trminos tomados de las matemticas o creados por cientficos de la computacin


describen los atributos de los rboles y sus nodos. Un camino es una secuencia de nodos en
la cual cada nodo es adyacente al siguiente. Se puede llegar a cada nodo en el rbol al seguir
un camino nico que principia en la raz. En la figura 12.17 el camino de la raz a la hoja 1
Subrbol izquierdo Subrbol derecho
est designada como AFI. Incluye dos ramas distintas: AF y Fr.
El nivel de un nodo es su distancia desde la raz. Debido a que la raz tiene una distancia
cero desde s misma, la raz est en el nivelO. Los hijos de la raz estn en el nivel 1 y los hi- Figura 12.19 rbol binario
jos de stos, en el nive12, y as sucesivamente. Observe la relacin entre los niveles y los her-
manos de la figura 12.17. Los hermanos siempre estn en el mismo nivel, pero no
necesariamente todos los nodos en un nivel son hermanos. Por ejemplo, en el nivel 2, e y D Para comprender mejor la estructura de los rboles binarios, estudie la figura 12.20. sta
son hermanos al igual que G, H e l. Sin embargo, D y G no son hermanos porque tienen dife- contiene ocho rboles, el primero de los cuales es lm rbol nulo. Un rbol nulo es un rbol
rentes padres. que no tiene nodos (figura 12.20[aJ). A medida que estudie esta figura, notar que la simetra
La altura de un rbol es el nivel de la hoja en el camino ms largo desde la raz ms 1. no es requisito de un rbo1.
Por definicin, la altura de un rbol vaco es -1. La figura 12.17 contiene nodos en tres nive-
les: 0, 1 Y 2. Su altura es 3. Debido a que el rbol se dibuja de arriba hacia abajo, algunos teX- Ahora definimos varias propiedades para los rboles binarios que los distinguen de los rbo-
Propiedades
tos se refieren a la profundidad de un rbol en vez de a su altura. les generales.
Un rbol puede dividirse en subrboles. Un subrbol es cualquier estructura conectada de-
bajo de la raz. El primer nodo en un subrbol se conoce como la raz del subrbol y se utili- Altura de rboles binarios La altura de los rboles binarios puede predecirse matemti-
za para nombrar al subrbol. Adems, cada subrbol puede dividirse a su vez en subrboles. camente. Dado que usted necesita almacenar N nodos en un rbol binario, la altura mxima,
En la figura 12.18 BDC es un subrbol, como E y FGHr. Observe que segn esta defmicin, H mx' puede definirse corno sigue:
un nodo individual es un subrbol. De esta manera, el subrbol B puede dividirse en dos su-
brboles, e y D, Y el subrbol F contiene los subrboles G, H e 1.
Tipos de datos abstractos 12.6 rboles binarios ..


les difiere por no ms de 1 (su factor de equilibrio es ~ 1, o + 1) Y sus subrboles tambin

LJ~r:rJ~
estn equilibrados. Esta definicin fue creada por Adelson~ Velskii y Landis en su definicin
de un rbclAVL.

a b d CON Las tres operaciones ms comunes definidas para un rbol binario son insertar, eliminar y re-
correr. Las operaciones de insercin y eliminacin son complejas y su explicacin est ms
AI\''''''-'''''' BINARIOS
all del mbito de este libro. Analizamos el recorrido de rbol binario en esta seccin.

Un recorrido de rbol binario requiere que cada nodo del rbol se procese una vez y slo
una vez en una secuencia predeterminada. Los dos mtodos generales para la secuencia de re-
c. corrido son primero en profundidad y primero en anchura.

~ / Recorrido primero en profundidad Dado que un rbol binario consiste en una raz, un
.9 subrbol izquierdo y un subrbol derecho, podemos definir seis secuencias diferentes de re-
e corrido primero en profundidad. Los cientficos de la computacin han asignado a tres de
o
estas secuencias nombres estndar en la literatura; los otros tres no tienen nombre pero se de-
h.
rivan fcilmente. Los recorridos estndar se muestran en la figura 12.21.

Figura 12.20 Ejemplos de rboles binarios

Un rbol con una altura mxima es raro. Ocurre cuando todo el rbol se construye en una
direccin, como se muestra en las figuras l2.20(g) y l2.20(h). La altura mnima del rbol,
H mino se determina mediante la frmula siguiente:

H mfu ~ [lag, N] + 1 rbol rbol rbol rbol rbol rbol


izquierdo derecho izquierdo derecho izquierdo derecho
Dada la altura de un rbol binario, H, el nmero llnimo y el nmero mximo de nodos
a. Recorrido en pre orden previo b. Recorrido en orden c. Recorrido en post orden
en el rbol se dan como:

Figura 12.21 Recorrido de primero en profundidad de un rbol binario

La designacin tradicional de los recorridos utiliza una designacin de node (N) para la
Equilibrio La distancia de un nodo desde la raz determina qu tan eficientemente puede raz, left (L) para el subrbol izquierdo y right (R) para el subrbol derecho.
localizarse. Por ejemplo, los hijos de cualquier nodo en un rbol pueden accederse siguiendo
slo uno camino de rama, aquel que conduce al nodo deseado. Por ejemplo, es posible acce 11 Recorrido en pre orden (NLR). En el recorrido en pre orden, el nodo raz se procesa
der a los nodos en el nivel 2 de un rbol nicamente siguiendo dos ramas desde la raz. por primero, seguido por el subrbol izquierdo y luego por el subrbol derecho. Toma su nom~
10 tanto, es lgico que entre ms corto sea el rbol, ms fcil ser localizar cualquier nodo de~ bre del prefijo en latn pre, el cual significa "va antes de". As, la raz va antes que los su-
seado en el rbol. brboles. La figura 12.22 muestra otra forma de visualizar el recorrido del rboL Imagine
Este concepto nos conduce a una caracterstica muy importante de un rbol binario: su que est caminando alrededor de un rbol, comenzando por la izquierda de la raz y man-
equilibrio. Para determinar si un rbol est en equilibrio, calcule su factor de equilibrio. El tenindose tan cerca de los nodos como le es posible. En el recorrido de orden, usted pro-
factor de equilibrio de un rbol binario es la diferencia en altura entre sus subrboles izquier~ cesa el nodo cuando est a la izquierda del mismo. Esto aparece como una caja negra a la
do y derecho. Si se define la altura del subrbol izquierdo como H y la altura del subrbol izquierda del nodo. El camino se muestra como una lnea que sigue una trayectoria com~
derecho como HD , entonces el factor de equilibrio del rbol, B, est determinado por la si~ pletarnente alrededor del rbol y de regreso a la raz.
guiente fnnula:
11 Recorrido en orden (LNR). El recorrido en orden primero procesa el subrbol iz-
quierdo, luego el nodo raz y finalmente el subrbol derecho. El significado de la pala-

Utilizando esta frmula, los equilibrios de los ocho rboles en la figura 12.20 son (a) por
definicin, (b) 0, (e) 1, (d) ~ 1, (e) 0, (f) 1, (g) ~2 Y (h) 2.
bra en es que la raz se procesa "dentro" de los subrboles. La figura 12.23 muestra otra
forma de visualizar el recorrido de un rbol. Imagine que est caminando alrededor de
un rbol, comenzando por la izquierda de la raz y mantenindose tan cerca de los nodos
Un rbol est equilibrado si su factor de equilibrio es O y sus subrboles tambin estn como le es posible. En el recorrido en orden, usted procesa el nodo cuando est debajo
equilibrados. Debido a que esta definicin ocurre rara vez, una definicin alternativa se apli~ de l. Esto aparece como una caja negra bajo el nodo. El camino se muestra como una
ca de una manera ms general: Un rbol binario est equilibrado si la altura de sus subrbo~ lmea que sigue una trayectoria completamente alrededor del rbol y de regreso a la raz.
.. Tipos de datos abstractos 12.6 rboles binarios ..

hay). Finalmente procesa el nodo raz. 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 raz y mantenindose 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 lnea que sigue una trayectoria completamente alrededor del rbol y de regre-
so a la raz.

R4!CCllrr,idc)jj primero En el recorrido primero en anchura de un rbol binario, usted procesa todos los hijos de un
anchura nodo antes de continuar con el siguiente nivel. Dicho de otra forma, dada una raz 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
Figura 12.22 Recorrido en pre orden de un rbol binario
un camino. Esta vez, no obstante, el camino contina a modo de escalera, primero atraviesa
el nivel raz, luego atraviesa el nivel 1, enseguida el nivel 2 y as sucesivamente hasta que to-
do el rbol se recorre (figura 1225).

- - /

Figura 12.25 Recorrido primero en amplitud de un rbol binario


Figura 12.23 Recorrido en orden de un rbol binario

Un rbol binario normalmente se implementa como una lista ligada.

DEI.. Una interesante aplicacin de rbol binario es el rbol de expresiones. Una expresin es una
BINARIO secuencia sintctica que siguen las reglas prescritas. Un elemento sintctico (token) puede ser
ya sea un operando o un operador. En este anlisis consideramos slo los operadores aritm-
ticos binarios en la forma de operando-operador-operando. Para simplificar el anlisis, usa-
mos nicamente cuatro operadores: suma, resta, multiplicacin y divisin.
Un rbol de expresiones es un rbol binario con las propiedades siguientes:
1. Cada hoja es un operando.
2. La raz y los nodos internos son operadores.
Figura 12.24 Recorrido en post orden de un rbol binario 3. Los subrboles son subexpresiones, con la raz siendo un operador.

Para un rbol de expresiones, los tres recorridos estndar representan tres formatos de expre-
111 Recorrido en post orden (LRN). El ltimo de los recorridos estndar es el recorrido sin diferentes: infijo, posfijo y prefijo. El recorrido en orden produce la expresin de infi-
en post orden, el cual procesa el nodo raz despus (post) de que los subrboles izquier~ jo, el recorrido en post orden genera la expresin de posfijo y el recorrido en pre orden
do y derecho se han procesado. Comienza localizando la hoja en el extremo izquierdo produce la expresin de prefijo. La figura 12.26 muestra una expresin de infijo y su rbol de
y procesndola. Luego procesa el hermano derecho, incluyendo sus subrboles (si los expresiones.
El Tipos de datos abstractos 12.7 Grafos ..

a * (b + e) + d I

a. Grafo ditigido b. Grafo no dirigido

Figura 12.27 Grafos dirigidos y no dirigidos


Figura 12.26 rbol de expresiones
El grado de un vrtice es el nmero de lfueas incidentes a l. El grado de salida de un vr-
tice en un dgrafo es el nmero de arcos que salen del vrtice; el grado de entrada es el n-
mero de arcos que entran al vrtice.
12.7 GRAFOS En esta seccin, definimos seis operaciones primitivas con grafos que proporcionan los m-
Un grafo tambin puede clasificarse como un tipo de datos abstracto. Los grafos se pueden dulos bsicos necesarios para mantener un grafo: aadir un vrtice, quitar un vrtice, aadir
usar para resolver problemas de enrutamiento complejos, tales como el diseo y la eleccin una arista, quitar una arista, encontrar un vrtice y recorrer un grafo. Como ver, hay dos m-
de rutas de las aerolneas 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.
Ani~dlr un vrtice La adicin de un vrtice inserta un nuevo vrtice en un grafo. Cuando un vrtice se aade, es-
Un grafo es una coleccin de nodos, llamados vrtices (vertex), y una coleccin de segmen- t inconexo; es decir, no est conectado a ningn otro vrtice en la lista. Obviamente la adi-
TERMINOLOGA cin de un vrtice slo es el primer paso en un proceso de insercin. Despus de que se aade
tos de lnea, llamados lneas, que conectan pares de vrtices. Es decir, un grafo se compone
de dos conjuntos: un conjunto de vrtices y un conjunto de lneas. Los grafos pueden ser ya un vrtice, ste debe conectarse. La figura 12.28 muestra un grafo antes y despus de que se
sea dirigidos o no dirigidos. En nn grafo dirigido, o dgrafo, para abreviar, cada lnea tiene ha aadido un nuevo vrtice.
una direccin (punta de flecha) a su sucesor. Las lneas en un grafo dirigido se conocen co
mo arcos. En este tipo de grafo el flujo a lo largo de los arcos entre dos vrtices puede seguir
slo la direccin indicada. En un grafo no dirigido ninguna de las lneas, las cuales se cono
cen como aristas, tiene direccin (punta de flecha). En un grafo no dirigido el flujo entre dos
vrtices puede tomar cualquier direccin. La figura 12.27 contiene un ejemplo de ambos ti-
pos, un grafo dirigido (a) y nn grafo no dirigido (b).
Se dice que dos vrtices en un grafo son vrtices adyacentes (o vecinos) si una lnea 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 vrtices en la cual cada vrtice es adyacente al siguiente.
En la fignra 12.27, {A, B, C, E} es un cantino y {A, B, E, F} es otro. Observe que tanto los
Figura 12.28 Adicin de un vrtice
grafos dirigidos como los no dirigidos tienen caminos. En un grafo no dirigido, usted podra
viajar en cualquier direccin.
un vrtice La eliminacin de un vrtice quita el vrtice del grafo. Cuando se quita un vrtice, todas las
Un ciclo es un camino que consiste en al menos tres vrtices e inicia y termina con el mis-
aristas que conecta tambin se eliminan. La figura 12.29 contiene un ejemplo de eliminacin
mo vrtice. En la fignra 12.27(b), B, C, D, E, B es un ciclo. Sin embargo, advierta que los
de un vrtice.
mismos vrtices en la figura 12.27(a) no constituyen un ciclo porque en un dgrafo un cami-
no slo puede seguir la direccin del arco, mientras que en un grafo no dirigido un camino
puede moverse en cualquier direccin 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 vrtice.
Se dice que dos vrtices estn conectados si hay un camino entre ellos. Se dice que un gra-
fo est conectado si, al suprimir la direccin, hay un camino desde cualquier vrtice a cual-
quier otro vrtice. Adems, un grafo dirigido est fuertemente conectado si hay un camino
desde cada vrtice a cada uno de los otros vrtices en el digrafo. Un grafo dirigido est d
bilmente conectado si al menos dos vrtices no estn conectados. (Un grafo no dirigido co-
nectado siempre est fuertemente conectado, as que el conc-epto normalmente no se usa con
los grafos no dirigidos.) Un grafo inconexo no est conectado. Figura 12.29 Eliminacin de un vrtice
.. Tipos de datos abstractos 12.7 Grafos ..

Aadir una arista La adicin de una arista conecta un vrtice con un vrtice de destino. Si un vrtice Ie<jui,ete Recorrido primero en profundidad En el recorrido primero en profundidad, usted
mltiples aristas, entonces el mdulo de aadir una arista debe llamarse lUla vez para procesa los descendientes de un vrtice antes de pasar a un vrtice adyacente. Este concepto
vrtice adyacente. Para aadir una arista, deben especificarse dos vrtices. Si el grafo es se explica ms fcilmente cuando el grafo es un rbol. En la figura 12.33 mostramos un re-
dgrafo, uno de los vrtices debe especificarse como la fuente y otro como el destino, La fi- corrido de pre orden, uno de los recorridos primero en profundidad estndar.
gura 12.30 contiene un ejemplo de adicin de la alista {A, El a un grafo. El recorrido primero en profundidad de un grafo comienza con el procesamiento del primer
vrtice del grafo. Despus de procesar el primer vrtice, se selecciona un vrtice adyacente a
ste y se procesa. Conforme se procesa cada vrtice, se selecciona un vrtice adyacente hasta
que se llega a un vrtice 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 vrtices adyacen-
tes mientras avanza. Es evidente que esta lgica requiere una pila (o recursin) para completar
~ el recorrido.

Figura 12.30 Adicin de una arista Recorrido primero en profundidad


AXHPEIMGJ
Quitar una arista La eliminacin de una arista quita la arista del grafo. La figura 12.31 contiene un ejemplo de
la eliminacin de la alista {A, El de un grafo.

K--<p ~
~
Figura 12.33 Recorrido primero en profundidad de un grafo
~ Recorrido primero en anchura En el recorrido primero en anchura de un grafo, usted
procesa todos los vrtices adyacentes de un vrtice antes de que vaya al siguiente nivel. Al
Figura 12.31 Eliminacin de una arista
observar el rbol de la figura 12.34 usted ve que su recorrido primero en anchura comienza
en el nivelO y luego procesa todos los vrtices del nivell antes de seguir adelante con el pro-
Encontrar La operacin encontrar un vrtice recorre un grafo en busca de un vrtice especificado. Si s- cesamiento de los vrtices del nivel 2.
un vrtice te se encuentra, sus datos son devueltos. Si no se encuentra; se indica un error. En la figura
12.32, encontrar un vrtice recorre el grafo en busca del vrtice C.
Recorrido primero en anchura
AXHPEYMJG

K--<p
~
Figura 12.32 Encontrar un vrtice
Figura 12.34 Recorrido primero en anchura de un grafo
Recorrer un grafo Siempre hay cuando menos una aplicacin que requiere que todos los vrtices en un grafo El recorrido primero en anchura de un grafo sigue el mismo concepto. Comience seleccio-
sean visitados; es decir, al menos una aplicacin requiere que sea recorrido el grafo. Debido nando un vrtice inicial; despus procselo y procese todos sus vrtices adyacentes. Una vez
a que un vrtice en un grafo puede tener mltiples padres, el recorrido de un grafo presenta que haya procesado todos los vrtices adyacentes del primer vrtice, seleccione el primer vr-
algunos problemas que no se presentan en el recorrido de listas lineales y rboles. Especfi~ tice adyacente y procese todos sus vrtices; luego seleccione el segundo vrtice adyacente y
camente, usted debe asegurarse de alguna manera de que procesa los datos en cada vrtice S~ procese todos sus vrtices, y as sucesivamente hasta que haya terminado con todos.
lo una vez. Sin embargo, debido a que hay varios caminos a un vrtice, se puede llegar al
mismo desde ms de una direccin a medida que se recorre el grafo. La solucin tradicional Para representar un grafo, se necesitan dos conjuntos de datos. El primer conjunto represen-
a este problema es incluir una bandera de visitado a cada vrtice. Antes de hacer el recorrido, ta los vrtices del grafo y el segundo, las aristas o arcos. Las dos estructuras ms comunes uti-
DE UN GRAFO
debe desactivarse la bandera de visitado en cada vrtice. 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 estndar son primero en profundidad y primero en anchura. simple. Los nmeros entre los vrtices son pesos (por ejemplo, la distancias entre redes en
Ambos utilizan la bandera de visitado. una red interconectada).
El Tipos de datos abstractos
12.9 Resumen ..

54'
523 320
TR.MINOS CLAVE
200 360 245 grado de salida padre
grafo pila
345 555 grafo con pesografo dbilmente posfijo
467 conectado postergacin
A BCD E F grafo dirigido prefijo
A o 523 345 o o o grafo fuertemente conectado primero en entrar, primero en salir
B 523 o 200 54' o o expansin grafo inconexo (FIFO)
C 345 200 o 360 467 o de expansin mrima grafo no dirigido tipo de datos profundidad
D o 54' 360 o 245 320 de expresin abstracto (TDA) raz
E o o 467 245 o 555 nulo hermanos rama
F o o o 320 555 o hijo recorrido
hoja recorrido de rbol binario
Matnz de adyacenCia
infijo recorrido en orden (LNR)
e 345
insertar en la cola de espera recorrido en pre orden
A 523 e 200 D 548 insertar (push) recorrido en post orden
lnea recorrido primero en anchura
A 345 B 200 E 467 lista recorrido primero en profundidad
lista aleatoria recuperacin
F 320
lista de adyacencia red
D 245 F 555 lista general retroceso
E 555
sintctico lista lineal simulacin de cola de espera
Lista de vrtices
de la cola de espera lista ordenada sobre desbordamiento
Lista de adyacencia
lista restringida subrbol
Figura 12.35 Implementaciones de grafos matriz de adyacencia ltimo en entrar, primero en salir
nivel (LIFO)
APLICACIONES Los grafos tienen muchas aplicaciones en las ciencias de la computacin. Mencionamos dos nodo vrtice
nodo interno vrtices adyacentes
DE GRAFOS de ellas aqu: las redes y los rboles de expansin mnima.

Redes Una red es un grafo con lneas pesadas. Tambin se le conoce como grafo con peso. El sig~
nificado de los pesos depende de la aplicacin. Por ejemplo, una aerolnea podra utilizar un
grafo para representar las rutas entre las ciudades en las que da servicio. En este ejemplo los R.ESUMEN
vrtices representan las ciudades, y la arista es un camino entre dos ciudades. El peso de las
aristas podrla representar las millas de vuelo entre las dos ciudades o el precio del vuelo. Una 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 aerolnea hipottica pequea se exhibe en la figura 12.35. En este caso, los pe- Las listas lineales pueden dividirse en dos categoras: minaciones estn restringidas a un extremo llamado ci-
sos representan el millaje entre las ciudades. ma, Una pila tambin se conoce como lista LIFO,
general y restringida.
Debido a que el peso es un atributo de una arista, se ahnacena en la estructura que contie- 111 Definimos dos operaciones para una pila: msertar (push)
En una lista general, los datos puede insertarse y elimi-
ne la arista. En una matriz de adyacencia, el peso se almacenara como el valor de intersec-
narse en cualquier parte, y no hay restricciones a las y extraer (pop).
cin. En una lista de adyacencia, ste se almacenara como el valor en la lista ligada de
adyacencia. operaciones que pueden usarse para procesar la lista, La msercin aade un elemento a la parte superior de la
En una lista restringida, los datos pueden aadirse o eli- pila. Despus de la msercin, el nuevo elemento se vuel-
rbol de expansin Podemos derivar uno o ms rboles de expansin desde una red conectada. Un rbol de ex minarse en los extremos de la estructura, y el procesa- ve la cima.
mnima pansin (spanning free) es un rbol que contiene todos los vrtices del grafo. Un rbol de miento est restringido a las operaciones aplicadas a los lIlII La extraccin elimina el elemento en la parte superior de
expansin mnima es un rpol de expansin tal que la suma de sus pesos es el mnimo. Hay datos en los extremos de la lista, la pila. Despus de la extraccin, el elemento que le si-
muchas aplicaciones para los rboles de expansin mrima, todas con los requisitos para mi- Dos estructuras de lista restringidas comunes son pilas gue, si hay alguno, se convierte en la cima.
nimizar algn aspecto del grafo, como la distancia entre todos los vrtices del grafo. por (listas ltimo en entrar, primero en salir [FlFO]) y las I!II En este captulo se analizaron cuatro aplicaciones de pi-
ejemplo, dada una red de computadoras, usted podra crear un rbol que conecte todas las colas de espera (listas primero en entrar, primero en sa- las: mversin de datos, anlisis sintctico de datos, pos-
computadoras. El rbol de expansin mnima le da la menor longitud de cable que puede em- lir [PIFO]). tergacin 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 Cuatro operaciones comunes estn asociadas con listas li- llII Una cola de espera es una lista lineal en la cual los da-
dos computadoras cualesquiera.
neales: msercin, eliminacin, recuperacin y recorrido, tos slo pueden insertarse en un extremo, llamado parte
El Tipos de datos abstractos 12,10 Prctica

trasera, y eliminarse en el otro extremo, la parte frontal. a. En el recorrido en pre orden, primero se procesa la Para representar un grafo en una computadora, se nece- BI En el mtodo de matriz de adyacencia, se usa un arreglo
Una cola de espera es una estructura primero en entrar, raz, seguida por el subrbol izquierdo y luego el su~ sita almacenar dos conjuntos de informacin: El primer para almacenar los vrtices y una matriz para almacenar
primero en salir (FIFO). brbol derecho. conjunto representa los vrtices y el segundo representa las aristas.
11 En este captulo analizamos dos operaciones de cola de b. En el recorrido en orden, primero se procesa el sl~ las aristas. 111 En el mtodo de lista de adyacencia, se utiliza una lista
espera: la insercin (enqueuing) y la eliminacin (de- brbol izquierdo, luego la raz y por ltimo el subr.:, ligada para almacenar los vrtices y una matriz para al-
queuing) de un elemento. bol derecho. Los mtodos ms comunes utilizados para almacenar un macenar las aristas.
c. En el recorrido en post orden, primero se procesa el grafo son el mtodo de matriz de adyacencia y el mto- 11 Definimos dos aplicaciones para un grafo en este captu-
11 Una cola de espera puede usarse para clasificar los datos.
subrbol izquierdo, luego el derecho y al ltimo la do de lista de adyacencia. lo: una red y un rbol de expansin mnima.
11 Un rbol consiste en un conjunto finito de elementos lla- raz.
mados nodos y un conjunto finito de lneas dirigidas lla-
madas ramas que conectan los nodos. El nmero de 111 En el mtodo primero en anchura, usted procesa todos
ramas asociadas con un nodo es el grado del nodo. Cuan- los nodos en un nivel antes de continuar con el nivel si~
do la rama se dirige hacia el nodo, es una rama de grado guiente. PRCTICA
de entrada; cuando se dirige hacia afuera del nodo, es una 11 Definimos una aplicacin para un rbol binario en este
rama de grado de salida. La suma de las ramas de grado jRE~c;,UII,IT)\S DE REPASO 17. Un(a) _ _ _ _ podra ser un TDA.
captulo: rbol de expresin.
a. matriz
de entrada y de grado de salida es el grado del nodo. Qu es un tipo de datos abstracto?
11 Un grafo es una coleccin de nodos llamados vrtices, y b, lista ligada
11 Si el rbol no est vaco, el primer nodo se llama raz, la una coleccin de segmentos de lnea que conectan pares En un TDA, qu se conoce y qu est oculto? e, rbol
cual tiene un grado de entrada de cero. Todos los nodos de nodos llamados aristas o arcos. Qu es una lista lineal? d. todas las anteriores
en el rbol, excepto la raz, deben tener un grado de en-
l1li Los grafos pueden ser dirigidos o no dirigidos. En un Cul es la diferencia entre una lista general y una lista 18, En un TDA, _ __
trada de uno.
grafo dirigido o dgrafo cada lnea tiene una direccin. restringida? a. los datos se declaran
11 Una hoja es un nodo con un grado de salida de cero. En un grafo no dirigido no hay direccin en las lneas.' b. las operaciones se declaran
Cules son dos implementaciones comunes de una lis-
a Un nodo interno no es ni raz ni hoja. Una lnea en un grafo dirigido se llama arco. Una lnea ta general? c. los datos y las operaciones estn encapsulados
111 Un nodo puede ser padre, hijo o ambos. Dos o ms no- en un grafo no dirigido se llama arista. d. todas las anteriores
Qu ventaja tiene la implementacin de una lista liga-
dos con el mismo padre se llaman hennanos. 111 En un grafo se dice que dos vrtices son adyacentes si 19. Un(a) _ _ _ _ es una lista en la cual cada elemento
da de una lista lineal general sobre la implementacin
!iI!I Un camino es una secuencia de nodos en la cual cada una arista los conecta directamente. con un arreglo de una lista lineal general? tiene un sucesor nico.
nodo es adyacente al siguiente. 111 Un camino es una secuencia de vrtices en la cual cada a. matriz
Cul es la diferencia entre la operacin de insertar y la
111 Un antecesor es cualquier nodo en el camino desde la b, red
vrtice es adyacente al siguiente. operacin de extraer?
raz hasta un nodo dado. Un descendiente es cualquier e. lista lineal
II1II Un ciclo es un camino de al menos tres vrtices que ini- Cules 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 vrtice.
111 El nivel de un nodo es su distancia desde la raz. Describa las operaciones de insercin (enqueuing) y eli- 20, Una lista FIFO es una lista lineal _ _ __
11 Un bucle es un caso especial de ciclo en el cual un solo minacin (dequeuing). a, general
iIiI La altura de un rbol es el nivel de la hoja en el camino
arco comienza y termina con el mismo nodo. Qu significa que un rbol binario est equilibrado? b, restringida
ms largo desde la raz ms 1; la altura de un rbol va-
Co es-l. 11 Se dice que un grafo est conectado si, para dos vrtices Cul es la diferencia entre un recorrido primero en pro-
e, sin ordenar
cualesquiera, hay un camino del uno al otro. Un grafo es d, aob
!III Un subrbol 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 raz.
111 El grado de un vrtice es el nmero de vrtices adyacen- Cul es la relacin entre un camino y un ciclo? denar.
Un rbol puede definirse de manera recursiva como un
tes al mismo. El grado de salida de un vrtice es el n- a, general
conjunto de nodos que ya sea (1) est vaco o (2) tiene Cul es la diferencia entre un recorrido primero en
mero de arcos que salen del nodo, mientras que el grado b, restringida
un nodo designado llamado raz desde el cual descien- profundidad y un recorrido primero en amplitud de un
de entrada es el nmero de arcos que entran al nodo. e, FIFO
den jerrquicamente cero o ms subrboles, los cuales grafo? d. LIFO
tambin son rboles. ti Se definieron seis operaciones para un grafo: aadir un
Cul es la principal limitacin de usar un arreglo para 22, Una lista tambin se conoce como cola de es-
fII En un rbol binario, ningn nodo puede tener ms de vrtice, quitar un vrtice, aadir una arista, quitar una
implementar un grafo? Por qu esto representa un pro-
arista, encontrar un vrtice y recorrer un grafo. pera.
dos hijos. blema? a, LIFO
111 Un recorrido de rbol binario visita cada nodo del rbol !II Hay dos recorridos de grafos estndar: primero en pro- Cul es la diferencia entre un grafo y una red? b. FIFO
una y slo una vez en una secuencia predeterminada. fundidad y primero en amplitud.
e, sin ordenar
!II Los dos mtodos del recorrido de rbol binario son pri- !II En el recorrido primero en profundidad, todos los des- UNTAS DE OPCiN MLTIPLE d. ordenada
mero en profundidad y primero en anchura. cendientes de un nodo se procesan antes de moverse a 23, Una lista
En un tipo de datos abstracto, _ _ __ tambin se conoce como pila.
111 Utilizando el mtodo de primero en profundidad, usted un nodo adyacente.
a. se conoce la implementacin de TDA a. LIFO
recorre un rbol binario en seis secuencias diferentes; liI En el recorrido primero en amplitud todos los vrtices b. la implementacin de IDA est oculta b, FIFO
sin embargo, slo tres de estas secuencias reciben nom- adyacentes se procesan antes de procesar a los descen- c. las funciones de IDA estn ocultas e, sin ordenar
bres estndar: pre orden, en orden y post orden. dientes de un vrtice. d. ninguna de las anteriores d, ordenada
El Tipos de datos abstractos 12.10 Prctica

24. Cuando no hay suficiente espacio para insercin, una 32. Cuando los datos se dividen en piezas independientes Si hay 22 nodos a almacenar en un rbol binario, la al- 48. En un recorrido ~~~_, el subrbol izquierdo se pro-
lista ordenada est en un estado ~~~_ para su procesamiento posterior, a esto se le llama tura mxima del rbol es ~~~_ cesa al final.
a. de desbordamiento a. mayor que 22 a. en pre orden
b. de sobre desbordamiento a. inversin de los datos b. menor que 22 b. en orden
c. lento b. postergacin de los datos c. igual que 22 c. en post orden
d. restringido c. anlisis sintctico de los datos d. ninguna de las anteriores d. ninguno de los anteriores
d. retroceso de los datos 49. En un recorrido en orden, la raz se procesa ~~~_
25. Cuando una lista ordenada est en un estado ~~~_ Si hay 16 nodos a almacenar en un rbol binario, la al- a. primero
la lista est vaCa. 33. En una cola de espera, los datos se insertan slo en tura ITnima del rbol es ~~~_ b. en segundo lugar
3. de desbordamiento ~~~_ y se eliminan slo en ~~~_ a. 16 c. al ltimo
b. de sobre desbordamiento a. la parte trasera; la parte frontal o la parte trasera b. 5 d. ao 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 (O, 1 Y 2), cul nivel se procesa al lti-
d. la parte trasera o la parte frontal; la parte frontal mo?
26. En la de listas para una lista ordenada. los da- Un rbol binario tiene una altura de 5. Cul es el nme-
tos en la lista y el nmero de elementos de la lista per- 34. El grado de entrada de ~~~_ de un rbol siempre es ro ITnimo de nodos? a. O
manecen sin cambio. cero. a. 31 b.
a. insercin a. cualquier nodo c. 2
b. 15
b. eliminacin b. una rama d. ninguno de los anteriores
c. 5
c. recuperacin c. la raz 51. Un(a) es una lnea entre dos vrtices en un di-
d.
d. todos los anteriores d. una hoja grafo.
Un rbol binario tiene una altura de 5. Cul es el nme- 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 mximo de nodos? b. arco
da elemento de la lista se procesa en forma secuencial. da. su grado es ~~~_ a. 31 c. arista
3. msercin a. 9 b. 15 d. camino
b. eliminacin b. 1 52. Una arista es _~~_ entre dos vrtices en un grafo no
c. 5
c. recuperacin c. 4 dirigido.
d. 1
d. recorrido d. 5 a. unnodo
En un recorrido en pre orden, ~~~_ se procesa pri-
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 b. un arco
mero. c. una lnea
una pila seguido por B, e y D, es el primer que su grado de salida es ~_ __
a. el subrbol izquierdo
elemento a ser eliminado. a. O d. uncamino
b. el subrbol derecho 53. Si C Y D son dos vrtices adyacentes en un grafo no di-
a. A b. 2
c. la raz rigido, entonces _~~_
b. B c. 4
d. aob a. hay dos caminos
c. e d. ninguno de los anteriores
d. D En un recorrido _~~_, el subrbol derecho se pro- b. slo hay un camino {C. D}
37. Un(a) es una secuencia de nodos en la cual c. slo 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, e y D, es el a. hoja 54. Un vrtice en un dgrafo tiene cuatro arcos que entran y
b. en orden
primer elemento a ser eliminado. b. raz tres arcos que salen. El grado de salida del vrtice es
c. en post orden
a. A c. descendente
d. aob
b. B d. camino a. 4
c. e En un recorrido en post orden, la raz se procesa b. 3
38. Si la altura de un rbol es lO, el nivel ms alto del rbol
d. D c. 2
es~___ .

a. primero d. 1
30. La operacin de extraer de la pila. a. 10
b. en segundo lugar
a. elimina un elemento de la parte superior b. 9
c. al final EJERCICIOS
b. elimina un elemento de la parte inferior c. 5
d. aob 55. Muestre el contenido de la pila sI despus de las opera-
c. aade un elemento a la parte superior d. 1
cion~s siguientes:
d. aade un elemento a la parte inferior En un recorrido en post orden, el subrbol izquierdo se
39. En un rbol binario, cada nodo tiene ~~~~_ dos push (51, 5)
31. La operacin de insertar de la pila. subrboles. procesa _~~_. push~(51, 3)
a. elimina un elemento de la parte superior a. ms de a. primero push (51, 2)
b. en segundo lugar pop (51)
b. elimina un elemento de la parte inferior b. menos de
c. al fmal pop (51)
c. aade un elemento a la parte superior c. cuando mucho push(sL 6)
d. aade un elemento a la parte inferior d. cuando menos d. aob
111 Tipos de datos abstractos 12.10 Prctica ..

56. Utilice un ciclo whi 1 e para vaciar el contenido de la pi- 69. Un rbol binario tiene 10 nodos. El recorrido en Haga una representacin de la lista de adyacencia del
~-"''''ll
la s2. pre orden del rbol se muestra enseguida. Dibuje el grafo de la figura 12.37.
57. Utilice un ciclo while para mover el contenido de la pi- Trace el grafo para la representacin de la matriz de ad-
En pre orden: JCBADEFIGH
la sI a s2. Despus de la operacin la pila sI debe estar
yacencia de la figura 12.38.
vaCa. En orden: ABCEDFJGlli
58. Utilice un ciclo whi 1 e para copiar el contenido de la pi-
la sI a s2. Despus de la operacin el contenido de las 70. Un rbol binario tiene ocho nodos. El recorrido en
pilas s1 y s2 debe ser el mismo. y en post orden del rbol se muestra enseguida. _ """J'......
el rbol: A 8 e D E F
59. Utilice un bucle whi le para concatenar el contenido de
la pila s2 con el contenido de la pila s 1. Despus de la En post orden: FECHGDBA
A o 3 1
concatenacin los elementos de la pila s2 deben estar en-
8 o o 3
En orden: FECABHDG e ;'01 o' 1
cima de los elementos de la pila sI. La pila s2 debe es- 2 ,Pi, o/ 1 2
D
tar vaca.
71. Un rbol binario tiene siete nodos. El recorrido en orden E o 'o o o ini ,3
60. Un palndromo es una cadena que puede leerse hacia y en post orden del rbol se muestra enseguida. Puede F o ni o o oi o
atrs y hacia delante con el mismo resultado. Por ejem- dibujar el rbol? Si no es as, explique por qu.
plo, la creacin siguiente es un palndromo:
En post orden: GFDABEC 12.38 Ejercicio 77
Anita lava la tina
En orden: ABDCEFG
Escriba un algoritmo utilizando una pila para probar si
una cadena es un palndromo. 72. Dibuje todos los rboles diferentes posibles con tres no-
61. Escriba un algoritmo para comparar el contenido de dos dos (A, B Y C).
pilas.
73. Haga el recorrido primero en profundidad del grafo de la
62. Muestre el contenido de la pila sI y de la cola de espera
figura 12.36 partiendo del vrtice A.
ql despus de las -operaciones siguientes:
p;'sh (s~, 3 1
push (s, 51
enqli.ue (q1,6 1
enqli'ue (ql,:- 9 i: A
P9P ',( s 1 1 (q.~.~. 8
~SIu~ue__ .!;< - 9)
.t.queue ;iCql1
E
63. Utilice un ciclo while para vaciar el contenido de la co- G
la de espera q3.
64. Utilice un ciclo whi 1 e para mover el contenido de la Figura 12.36 Ejercicios 73 y 74
cola de espera q2 a la cola q3. Despus de la operacin
la cola de espera q2 debe estar vaCa.
65. Utilice un ciclo while para copiar el contenido de la co- 74. Haga el recortido primero en anchura del grafo de la fi-
la de espera q2 a q3. Despus de la operacin el conte- gura 12.36 partiendo del vrtice A.
nido de las colas de espera q2 y q3 debe ser el mismo.
75. D la representacin de la matriz de adyacencia del gra-
66. Utilice un ciclo while para concatenar el contenido de
fo de la figura 12.37.
la cola de espera q2 con el contenido de q 1. Despus
de la concatenacin, los elementos de la cola de espera
q2 deben estar al final de los elementos de ql. La cola
de espera q2 debe estar vaca.
67. Escriba un algoritmo para comparar el contenido de dos
colas de espera.
68. Encuentre la raz de cada uno de los rboles binarios si-
guientes:
a. rbol con recorrido en post orden: FCBDG
b. rbol con recorrido en pre orden: IBCDFEN
c. rbol con recorrido en post orden: CBIDFGE
.. Estructuras de archivos 13.3 Archivos indexados El
El cdigo siguiente muestra cmo tener acceso a todos los registros en un archivo se- La figura 13.3 es una representacin grfica de la actualizacin de un archivo secuencial. En
cuencial. esta figura, aparecen los cuatro archivos que se han analizado. Aunque utilizamos el smbolo
de cinta para los archivos, podramos haberlos representado con la misma facilidad median-
te el smbolo de disco. Observe que despus de que se completa el programa de actualizacin,
while Not EOF
el nuevo archivo maestro se enva a almacenamiento fuera de lnea 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 lnea y se vuelve el archivo maestro viejo.
Procesa el registro
}

Programa 13.1 Procesamiento de registros en un archivo secuencial Archivo de transaccin Archivo maestro viejo

Actualizacin del archivo secuencial


Para leer y procesar los registros uno a uno se utiliza un ciclo. Despus de que el sistema ope-
rativo procesa el ltimo registro se detecta el EOF y se termina el ciclo.
El archivo secuencial se utiliza en aplicaciones que necesitan tener acceso a todos los re- Registro de transaccin
gistros de principio a fin. Por ejemplo, si la informacin personal sobre cada empleado en una
compaa se almacena en un archivo, se puede usar el acceso secuencial para recuperar ca-
da registro al final del mes con el :fin de imprimir los cheques de sueldo. En este punto, debi~
do a que usted debe procesar cada registro, el acceso secuencial es ms eficiente y fcil que
el acceso aleatorio.
Sin embargo, el archivo secuencial no es eficiente para el acceso aleatorio. Por ejemplo,
si slo se puede tener acceso a todos los registros de clientes en un banco en forma secuen~
cial, un cliente que necesita obtener dinero de un cajero automtico tendra que esperar mien-
tras el sistema revisa cada registro desde el principio del archivo hasta que llega al registro
del cliente. Si este banco tiene un milln de clientes, el sistema, en promedio, recuperara me~
dio milln de registros antes de obtener el registro del cliente, Esto es muy ineficiente. Figura 13.3 Actualizacin de un archivo secuencial

ACTUALIZACiN Los archivos secuenciales deben actualizarse en forma peridica para reflejar cambios en la Para hacer el proceso de actualizacin eficiente, todos los archivos se almacenan en la mis-
informacin. El proceso de actualizacin es muy problemtico debido a que todos los regis~ ma nave. El proceso de actualizacin requiere que usted compare las llaves de los archivos
DE ARCHIVOS
tros necesitan revisarse y actualizarse Cde ser necesario) en forma secuencial. maestro y de transaccin y, suponiendo que no hay errores, realice una de las tres acciones si-
SECUENCIALES
guientes:
Archivos Hay cuatro archivos asociados con un programa de actualizacin: el archivo maestro nuevo, 1. Si la llave del archivo de transaccin es menor que la llave del archivo maestro, aada
involi.llcrados en el archivo maestro viejo, el archivo de transaccin y el archivo de informe de errores. la transaccin al archivo maestro nuevo.
la adualizacin 11 Archivo maestro nuevo. Primero est el nuevo archivo de datos permanente o, como 2. Si la llave del archivo de transaccin es igual a la llave del archivo maestro, opte por
se le conoce comnmente, el archivo maestro nuevo, el cual contiene los datos ms una de estas dos opciones:
actuales. a. Cambie el contenido de los datos del archivo maestro si la transaccin es una revi-
IJ Archivo maestro viejo. El archivo maestro viejo es el archivo permanente que debe ac~ sin (R).
b. Borre los datos del archivo maestro si la transaccin es una eliminacin (D).
tualizarse. Aun despus de la actualizacin, el archivo maestro viejo debe mantenerse pa-
ra referencia. 3. Si la llave del archivo de transaccin 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
111 Archivo de transaccin. El tercer archivo es el archivo de transaccin, el cual contiene
cdigo de transaccin debe ser la adicin CA) o hay un error.
los cambios a aplicar en el archivo maestro. Hay tres tipos bsicos de cambios en todas las
actualizaciones de archivos. La adicin de transacciones contiene los datos de un nuevO Este proceso de actualizacin se exhibe en la figura 13.4. En el archivo de transaccin los
registro a aadir en el archivo maestro. La eliminacin de transacciones identifica regis~ cdigos de transaccin son A para la adicin, D para la eliminacin y R para revisin. El pro-
tras a eliminar del archivo. Y el cambio de transacciones contiene revisiones a registroS ceso comienza con la comparacin de las llaves para el primer registro de cada archivo.
especficos en el archivo. Para procesar cualquiera de estas transacciones, usted necesita
una nave. Una llave es uno o ms campos que identifican de forma nica los datos eU el
archivo. Por ejemplo, en un archivo de estudiantes, la nave podra ser el ID (identificador)
de estudiante. En un archivo de empleados, la llave podra ser el nmero del seguro social,
13.3 ARCHIVOS INDEXADOS
11 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 direccin del
lizacin es un archivo de informe de errores. Es muy raro que un proceso de actuali- registro. Por ejemplo, suponga que una clienta quiere revisar su cuenta bancaria. Ni la clien-
zacin no produzca al menos un error. Cuando un error ocurre, se necesita informarlo al ta ni la cajera conocen la direccin del registro de la clienta. sta slo puede darle a la caje-
usuario. El informe de error contiene un listado de todos los errores descubiertos duran- ra su nmero de cuenta (llave). Aqu, un archivo indexado puede relacionar el nmero de
te el proceso de actualizacin y se presenta al usuario para que lo rectifique. cuenta (llave) con la direccin del registro (figura 13.5).
al Estructuras de archivos 13.4 Archivos Hashed ..

ndice Archivo de datos


000 379452 MaryDodd ...
001 070918 Sarah Trapp ...
Pireccin 002 121267 Bryan Devaux ... Datos
~ 003 166702 Harry Eagle ... >
Archivo Archivo 004
de transaccin maestro viejo 005
006
007 378845 John Carver ...
008

305 160256 Tuang Ngo ...


Archivo maestro nuevo 306 045128 Shouli Feldman ...

Figura 13.4 Proceso de actualizacin Figura13.6 Vista lgica de un archivo indexado

ARCHIVOS HASHED
Llave 11IIIIIIII11IIIIIIII11IIIIIIII*1. En un archivo indexado, el ndice relaciona la llave con la direccin. Un archivo hashed uti-
liza una funcin para lograr esta relacin. El usuario da la llave, la funcin relaciona la llave
con la direccin y la pasa al sistema operativo y el registro se recupera (figura 13.7).

figura 13.5 Relacin de un archivo indexado


Llave I!IIIIIIIIIIIIIIII_~I IIIIIIIIII~~ Direccin
Un archivo indexado se compone de un archivo de datos, el cual es un archivo secuen-
cial y un ndice. El ndice en s es un archivo muy pequeo-con slo,dos campos: la llave del
archivo secuencial y la direccin del registro correspondiente en el disco. La figura 13.6
muestra la vista lgica de un archivo indexado. Para tener acceso a un registro de un archivo
Figura 13.7 Relacin en un archivo hashed
de este tipo, siga estos pasos:

1. Todo el archivo indexado se carga en la memoria principal (el archivo es pequeo 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 bsqueda eficiente tal como una bs-
queda binaria, para encontrar la llave deseada. tos, primero debe cargar el ndice en la memoria, buscarlo para encontrar la direccin del
registro de datos y luego acceder al archivo de datos para tener acceso al registro. En un ar-
3. La direccin del registro se recupera. chivo hashed la direccin se encuentra mediante el uso de una funcin. No hay necesidad de
4. Utilizando la direccin. 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 ms de un ndice, cada unO
INVERTIDOS con una llave distinta. Por ejemplo, un archivo de empleados puede recuperarse con base ya
Sea en el nmero del seguro social o en el apellido. Este tipo de archivo indexado por lo ge~ MTODOS Para la relacin de llaves-direcciones, usted puede seleccionar uno de varios mtodos de dis-
nera! se llama archivo invertido. persin, tambin llamado hashing. Analizaremos unos cuantos de ellos en esta seccin.
DE HASHING

'"-
111 Estructuras de archivos
13.4 Archivos Hased ..

Mtodo directo En el hashing directo, la llave es la direccin sin ninguna manipulacin algortmica. El ar~
chivo debe, por tanto, contener un registro para cada nave posible. Aunque las situaciones pa~ Direccin Registro
fa el hashing directo son limitadas, ste puede ser muy poderoso debido a que garantiza que
no haya sinnimos o colisiones (los sinnimos o colisiones se analizan posteriormente en es- 001 ;;;;;;:;;;;;;:;;;:r
te captulo) como sucede con otros mtodos.
002
Veamos un ejemplo trivial. Imagine que una organizacin tiene menos de 100 empleados. 003 ~&67;;;;t;~;;4
A cada empleado se asigna un nmero entre 1 y 100 (ID del empleado). En este caso, si us-
ted crea un archivo de registros de 100 empleados, el nmero de empleado puede utilizarse
directamente como la direccin 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 direccin (sector) 025.
Observe que no todos los elementos en el archivo contienen un registro de empleado. Una
parte del espacio est desperdiciada.
Figura 13.9 Mdulo de divisin

'Mtollo de Al utilizar el hashing de extraccin de dgitos, los dgitos seleccionados se extraen de la lla-
Direccin Registro
ve y se utilizan como la direccin. Por ejemplo, al usar su nmero de emplea~o de seis ~gitos
para relacionar a una direccin de tres dgitos (000-999), usted puede seleccIOnar el p~ero,
segundo, tercero y cuarto dgitos (a partir de la izquierda) y utilizar el tnnino co~o la direc-
cin. Usando las llaves de la figura 13.9, se relaconan con las direcciones como SIgue:

125870
122801

Figura 13.8 Hashing directo


mtodos Existen otros mtodos populares, tales como el mtodo de cuadrado medio, el mtodo de do-
blado, el mtodo rotacional y el mtodo pseudoaleatorio. Dejamos la exploracin de los mis-
Aun cuando ste es el mtodo ideal, su aplicacin est muy limitada. Por ejemplo, es muy mos como ejercicios.
ineficaz utilizar el nmero del seguro social como la llave porque ste tiene nueve dgitos. As
que se necesitara un archivo enorme con 999 999 999 registros, de los cuales se utilizaran Generalmente, la poblacin de llaves para una lista hashed es mayor que el nmero de regis-
menos de 100. Por lo tanto, volquemos nuestra atencin en las tcnicas de hashing que re1a~ tros en el archivo de datos. Por ejemplo, si usted tiene un archivo de 50 estudiantes para una
cionan una poblacin grande de llaves posibles con pequeos espacios de direccin. clase en la cual los estudiantes se' identifican mediante los ltimos cuatro dgitos de su nme-
ro de seguridad social, entonces hay 200 llaves posibles para cada elemento en el archivo
(lO 000 /50). Debido a que hay muchas llaves para cada direccin en el archivo, existe la po-
Mtodo de mdulo Tambin conocido como hashing de residuo de divisin, el mtodo de mdulo de divisin
sibilidad de que ms de una llave se relacione a la misma direccin en el archivo. Llamamos
de divisin divide la llave entre el tamao de archivo y utiliza el residuo ms 1 para la direccin. Esto da
el simple algoritmo de dispersin siguiente, donde tamao_lista es el nmero de elemen~ al conjunto de llaves que se direccionan a la misma direccin en nuestra lista sinnimos. El
tos en el archivo. concepto de colisin se ejemplifica en la figura 13.10. ..
En la figura, cuando usted calcula la direccin para dos registros diferentes, obo.ene la ~s
ma direccin (4). Evidentemente, los dos registros no pueden almacenarse en la rrusma direc-
cin. Usted necesita resolver la situacin como se explica en la siguiente seccin.
Aun cuando este algoritmo funciona con cualquier tamao de lista, un nmero primo co~
mo tamao de lista produce menos colisiones que otros tamaos en la lista. Por consiguien-
te, siempre que es posible, trate de hacer que el tamao de archivo sea un nmero primo.
Conforme su pequea compaa comience a crecer, se dar cuenta que pronto tendr ms
de lOO empleados. Al planear para el futuro usted crea un nuevo sistema de numeracin de
empleados que manejar un milln de empleados. Tambin decide que quiere proporcionar
t4
espacio de datos hasta para 300 empleados. El primer nmero primo mayor que 300 es 307. Colisin
) (misma direccin)
Por lo tanto, usted elige 307 como su tamao de lista (archivo). Su nueva lista de empleados
4
y algunas de sus direcciones relacionadas se muestran en la figura 13.9. En este caso, Vu Ngu-
yen, con llave 121267, se relacion a la direccin 003 porque 121267 % 307 ~ 2, y usted sU-
ma 1 al resultado para obtener la direccin (003). Figura 13.10 Colisin
.. Estructuras de archivos 13.5 Texto versus binario ..

Si los datos reales que usted inserta en su lista contienen dos o ms sinnimos, tendr co-
Direccin de contenedor Contenedor
lisiones. Una colisin es el evento que ocurre cuando un algoritmo de hashing produce una
direccin para una llave de insercin y esa direccin ya est ocupada. La direccin produci_
da por el algoritmo de hashing se conoce como direccin base. La parte del archivo que con-
tiene todas las direcciones base se conoce como el rea principal. Cuando dos llaves
122803
colindan en una direccin base, usted debe resolver la colisin al colocar una de las llaves y
151354
sus datos en otra localidad.

Resolucin Con excepcin del mtodo directo, 'ninguno de los mtodos que analizamos para hashing crea
de colisiones una relacin uno a uno. Esto significa que cuando usted relaciona una llave nueva a una di-
reccin, puede crear una colisin. Existen varios mtodos para manejar colisiones, cada uno
de ellos independiente del algoritmo de hashing. Es decir. cualquier mtodo de hashing puede
utilizarse con cualquier mtodo de resolucin de colisiones. En esta seccin analizamos a1~ Figura 13.13 Resolucin de hashing de contenedor
gunos de estos mtodos.

Direccionamiento abierto El primer mtodo de resolucin de colisiones, la resolucin de Hashing de contenedor Otro mtodo para manejar el problema de la colisin es direc-
direccionamiento abierto, resuelve colisiones en el rea principal. Cuando ocurre una coli- cionar a contenedores (buckets). La figura 13.13 muestra cmo resolver la colisin en la fi-
sin, 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 ms de un registro.
cenarse en la direccin base es almacenarlos en la siguiente direccin (direccin base + 1).
La figura 13.11 muestra cmo resolver la colisin de la figura 13.10 utilizando este mtodo. Mtodos de combinacin Hay varios mtodos para resolver colisiones. Como se vio con
El primer registro se almacena en la direccin 4 y el segundo se almacena en la direccin 5. los mtodos de hasrung, una implementacin compleja a menudo utiliza mltiples mtodos.

Direccin Registro TEXTO VERSUS BINARIO


4
Direcciona
alabase
t 4
t Antes de cerrar este captulo, analizamos dos tnninos utilizados para clasificar los archivos:
122803
archivos de texto y archivos binarios. Un archivo almacenado en un dispositivo de almacena-
151354 4 Direcciona 5 t1:[!1!~~ miento es una secuencia de bits que puede ser interpretado por un programa de aplicacin co-
al siguiente
mo un archivo de texto o un archivo binario seg(m se muestra en la figura 13.14 y se explica
Figura 13.11 Resolucin de direccionamiento abierto a continuacin.

Resolucin de listas ligadas Una desventaja importante del direccionamiento abierto es


que cada resolucin de colisiones aumenta la probabilidad de colisiones futuras. Esta desven- Interpretado como un archivo Interpretado como un archivo
taja se elimina en otro mtodo para resolucin de colisiones, la resolucin de listas ligadas. binario
En este mtodo, el primer registro se almacena en la direccin base. pero contiene un apun-
tador al segundo registro. La figura 13.12 muestra cmo resolver la situacin que aparece en
la figura 13.1 O.
Dos bytes representan Dos bytes representan
dos caracteres un nmero
Direccin Registro (Ay B) (16706)

Direcciona
a la base
t t
122803 4 4 figura 13.14 Interpretaciones de texto y binaria de un archivo
151354 4
Un archivo de texto es un archivo de caracteres. No puede contener enteros, nmeros de pun-
to flotante o cualesquier otras estructuras de datos en su formato de memoria interna. Para al-
TEXTO
macenar estos tipos de datos, deben convertirse a sus formatos equivalentes de caracteres.
Algunos archivos slo pueden utilizar tipos de datos de caracteres. Los ms notables son
cadenas de caracteres para teclados, monitores e impresoras. sta es la razn por la cual us-
ted necesita funciones especiales para dar formato a los datos que entran a o salen de estos
Figura 13.12 Resolucin de listas ligadas dispositivos.
Estructuras de archivos 13,8 Prctica

Veamos un ejemplo. Cuando los datos (una cadena de caracteres) se envan a la impreso~ En el hashing de extraccin de dgitos, la direccin se 11 El mtodo de resolucin de lista ligada utiliza un rea
fa, la impresora toma ocho bits, los interpreta como un byte y los decodifica en el sistema de compone de dgitos seleccionados desde la llave. separada para almacenar las colisiones y encadena a to~
codificacin de la impresora (ASCII o EBCDIC). Si el caracter pertenece a la categora im. Las llaves que se relacionan a la misma direccin se lla- dos los sinnimos en una lista ligada.
primible, ste se imprimir; de lo contrario, se realiza alguna otra actividad, por ejemplo la man sinnimos. lit El hashing de contenedor es un mtodo de resolucin de
impresin de un espacio. La impresora toma los siguientes ocho bits y repite el proceso. Es~ Una colisin 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 direccin para una insercin dan mltiples ocurrencias de datos.
y esa direccin ya est ocupada.
ARCHIVOS Un archivo binario es una coleccin de datos almacenados en el formato interno de la Com- Los mtodos de resolucin de colisiones mueven los da- 11 Un archivo de texto es un archivo de caracteres.
BINARIOS putadora. En esta definicin, los datos pueden ser un entero, un nmero de punto flotante, un tos direccionados que no pueden insertarse a una direc~
11 Un archivo binario son datos almacenados en el forma~
caracter o cualquier otra informacin estructurada (excepto un archivo). cin nueva.
to interno de la computadora.
A diferencia de los archivos de texto, los archivos binarios contienen datos que son signi~ El mtodo de resolucin de colisiones de direcciona-
ficativos slo 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 caracter. Pero si los datos son numricos, 2 o ms cin 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 PRCTICA
>DIIl'II'I':UNTAS DE REPASO PREGUNTAS DE OPCiN MLTIPLE
13.6 TRMINOS LLAVE 1. Qu es un archivo y cul es su funcin? 18, Un archivo _ _ _ _ puede accederse en forma alea-
2. Cules son los dos tipos generales de mtodos de acce- toria.
acceso aleatorio archivo maestro viejo hashing de extraccin de dgitos a, secuencial
so a archivos?
acceso secuencial archivo secuencial hashing de residuo (mdulo) b, indexado
3. Por qu se necesita lm marcador EOF cuando se proce-
rea principal cinta de divisin e, hashed
san los archivos secuencialmente?
archivo colisin hashing directo d. byc
archivo binario contenedor ndice 4. Cul es la relacin 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. Cul es el propsito del archivo de transicin en la ac- cuencial.
archivo de texto dispositivo de almacenamiento auxiliar mtodo de acceso tualizacin de un archivo secuencial? a, secuencial
archivo de transaccin dispositivo de almacenamiento resolucin de colisiones 6. D un ejemplo propio de una situacin en la cual un ar~ b, indexado
archivo hashed secundario resolucin de lista ligada chivo debe accederse en forma aleatoria. e, hashed
archivo indexado direccin base resolucin de direccionamiento abierto d, byc
7. D un ejemplo propio de una situacin en la cual un ar-
archivo invertido divisin de mdulo sinnimo chivo debe accederse en forma secuencial. 20. Cuando un archivo secuencial se actualiza, el archivo
archivo maestro nuevo hashing de contenedor Describa la funcin de la direccin en un archivo al que _ _ _ _ obtiene la actualizacin ms reciente.
se accedi en forma aleatoria. a. maestro nuevo
Cmo se relaciona el ndice con el archivo de datos en b. maestro viejo
los archivos indexados? c. de transaccin
13.7 RESUMEN Cul es la relacin entre la llave y la direccin en el d. de informe de errores
hashing directo de lill archivo? 21. Cuando un archivo secuencial se actualiza, el archivo
11 Un archivo es una coleccin de datos relacionados que 11 Para el acceso aleatorio de un registro, puede utilizarse
11. Cul es la relacin entre la llave y la direccin en el _ _ _ _ contiene una lista de todos los errores que
se tratan como una unidad. un archivo indexado que consiste en un archivo de datos
hashing de divisin de mdulos de un archivo? ocurren durante el proceso de actualizacin.
!II Un registro en un archivo puede accederse en forma se~
y un ndice.
12. Cul es la relacin entre la llave y la direccin en el a. maestro nuevo
cuencial o aleatoria. 11 En el acceso aleatorio a archivos, el ndice relaciona una
hashing de extraccin de dgitos de un archivo? b. maestro viejo
llave con una direccin, la cual se utiliza despus para
111 En el acceso secuencial, cada registro debe accederse en 13. Qu es una colisin? c. de transaccin
recuperar el registro del archivo de datos.
secuencia, uno despus de otro, de principio a fin, 14. Proporcione tres mtodos de resolucin de colisiones. d. de informe de errores
111 Un archivo hashed es un archivo de acceso aleatorio en
11 La actualizacin de un archivo secuencial requiere un el cual una funcin relaciona una llave con una direccin. 15. Cmo funciona el mtodo de resolucin de colisiones 22. Cuando un archivo secuencial se actualiza, el archivo
archivo maestro nuevo, un archivo maestro viejo, un ar~ I!I En el hashing directo, la llave es la direccin y no se ne~ de direccionamiento abierto? _ _ _ _ contiene los cambios a aplicar.
chivo de transaccin y un archivo de informe de errores. cesita ninguna manipulacin de algoritmos. 16. Comente las dos reas de almacenamiento requeridas pa- a. maestro nuevo
11 En el acceso aleatorio, un registro puede accederse sin 111 En el hashing de mdulo de divisin, la llave se divide ra el mtodo de resolucin de colisiones de lista ligada. b. maestro viejo
tener que recuperar ningn registro antes que l. La di- entre el tamao de archivo. La direccin es el residuo 17. Cul es la diferencia ante un archivo de texto y un archi- c. de transaccin
reccin del registro debe conocerse. ms 1. vo binario? d. de informe de errores
.. Estructuras de archivos
13.8 Prctica la
En el mtodo de resolucin de colisiones _ _ _ _ ., un 44. Un archivo hashed utiliza un mtodo de mdulo de divi-
23. Despus de que se actualiza un archivo secuencial, el ar- 31. En el mtodo de dispersin o hashing _ _ _~
nodo puede mantener mltiples piezas de datos. sin con 41 como el divisor. Cul es la direccin para
chivo contiene los datos ms actuales. gitos seleccionados se extraen de la llave y se
a. maestro nuevo a. direccionamiento abierto cada una de las llaves siguientes?
como la direccin.
b. maestro viejo 8. directo b. lista ligada a. 14232
c. de transaccin b. residuo de divisin c. hashing de contenedor b. 12560
d. de informe de errores c. mdulo de divisin d. ayb c. 13450
24. Cuando un archivo secuencial necesita actualizarse, el d. extraccin de dgitos d. 15341
En el mtodo de resolucin de colisiones _ _ __
archivo en almacenamiento se vuelve el ar- 32. En el mtodo de dispersin o hashing _ _ __
tanto el rea principal como el rea de desbordamiento 45. En el mtodo de dispersin o hashing de cuadrado me-
chivo _ _ __ ve se divide entre el tamao de archivo y la direcc:icl"";
almacenan datos, dio, la llave se eleva al cuadrado y la direccin se selec-
a. maestro nuevo; maestro viejo el residuo ms 1,
a. direccionamiento abierto ciona de la mitad del resultado. Utilice este mtodo para
b. maestro viejo; maestro nuevo a. directo seleccionar la direccin de cada una de las llaves siguien-
b. lista ligada
c. de transaccin; maestro nuevo b. mdulo de divisin tes. Use los dgitos 3, 4 Y 5 (a partir de la izquierda).
c. hashing de contenedor
d. de transaccin; maestro viejo c. residuo de divisin
d. extraccin de dgitos
d. ayb a. 142
25. Si la llave del archivo de transaccin es 20 y la llave del
33. En el mtodo de dispersin o hashing _ _ __ b. 125
primer archivo maestro es 25, entonces usted _ _ __ Un archivo _ _ _ _ es un archivo de caracteres.
sinnimos o colisiones. c. 134
a. aade el nuevo registro al archivo maestro nuevo a. de texto
b. revisa el contenido del archivo maestro viejo a. directo b. binario d. 153
c. elimina los datos b. mdulo de divisin c. de caracter 46. En el mtodo de dispersin o hashing de doblado. la lla-
d. escribe el registro del archivo maestro viejo en el ar- c. residuo de divisin d. hashed ve se divide en partes. Las partes se suman para obtener
chivo maestro nuevo d. extraccin de dgitos la direccin. Utilice este mtodo para encontrar la direc-
26. Si la llave del archivo de transaccin es 20 con cdigo de 34. Los( as) son llaves que se direccionan a la cin de las llaves siguientes. Divida la llave en partes de
borrado y la llave del primer archivo maestro es 20, en- misma localidad en el archivo de datos. dos dgitos y sillelas para encontrar la direccin.
tonces usted _ _ __ a. colisiones Dados el archivo maestro viejo y el archivo de transac-
a. 1422
b. contenedores cin en la figura 13.15, encuentre el archivo maestro
a. aade la transaccin al archivo maestro nuevo b. 1257
c. sinnimos nuevo, Si hay algn error, tambin cree un archivo de
b. revisa el contenido del archivo maestro viejo c. 1349
c. elimina los datos d. listas ligadas error.
35. Cuando un algoritmo de hashing produce una direccin
d. 1532
d. escribe el registro del archivo maestro viejo en el ar-
chivo maestro nuevo para una llave de insercin y esa direccin ya est ocu- Archivo de transaccin 47. En el mtodo de dispersin o hashing de lmite doblado,
Archivo maestro viejo
pada. se le llama _ _ __ X4" Joh'\.Vu ,'~:> ;17:00 A 17 Martha Kert >: 17 :{J' la llave se divide en partes. Las partes izquierda y dere-
27. Si un registro necesita accederse , un archivo
a. colisin :;):{LGeorgeBrow~ 1~;00 D i6 cha se invierten y se suman a la parte media para obte-
indexado es el tipo de archivo ms eficiente para usar. "I7'<Duc Loo' 1'foo R 31
b. sonda ner la direccin. Utilice este mtodo para encontrar la
a. en fonna secuencial ::'20"'Li Nguy6n 12.00 D 45,
c. sinnimo A 89' 'Orva Gi1?ert '20,00 direccin 'de las llaves siguientes. Divida la llave en tres
b. en fonna aleatoria :26'1dWhit<:,,' 23.00
d. lista ligada 31 Iojmellibg ~,:27.00, partes de dos dgitos, invierta los dgitos en la primera y
c. en orden 4S Bruce Wu \ 12.00
36. La direccin producida por un algoritmo de hashing es tercera partes y luego sume las partes para obtener la di-
d. ninguno de los anteriores 89 MifrkBlac'k" ';-'>19.00
la direccin _ _ __ ;~,~, Be~y YeIo~ 14.00" reccin.
28. Un archivo indexado consiste en _ _ __
a. de sonda 3. 142234
a. un archivo de datos secuencial
b. de sinnimo b. 125711
b. un ndice Fiq,.ra 13.15 Ejercicio 42
c. de colisin c. 134919
c. un archivo de datos aleatorio
d. base
d. 153213
d. by c
37. El rea es el rea de archivo que contiene to- Cree un archivo de ndice para la tabla 13.1.
29. El ndice de un archivo indexado tiene _ _ _ campos. das las direcciones base, 48. Encuentre la direccin de las llaves siguientes utilizando
a. dos el mtodo de mdulo de divisin y un archivo de tama-
a. de sonda
b. tres Llave Nombre Dep. o 411. Si hay una colisin, utilice el direccionamiento
b. ligada
c. cuatro 123453 JohnAdarn CIS abierto para resolverlo, Dibuje una figura para mostrar la
c. hash
d. cualquier nmero de d. principal 114237 TedWhite MAT posicin de los registros,
30. Para acceder a un registro en fonna aleatoria, se utiliza 38. En el mtodo de resolucin de colisiones _ _ __ 156734 JimmyLions ING 3. 10278
un(a) en el ndice para encontrar una direc- usted intenta poner en la localidad 124 los datos que no 093245 Sophie Grands NEG b. 08222
cin. pueden colocarse en la localidad 123. 077654 Eve Primary CIS c. 20553
a. direccin a. direccionamiento abierto 256743 Eva Lindens ING d. 17256
b. llave b. lista ligada Bob Bauser ECO
423458 49. Repita el ejercicio 48 usando la resolucin de lista li-
c. sinnimo c. hashing de contenedor
d. aob Tabla 13.1 Ejercicio 43 gada.
d. ay b

L
14.1 Sistemas de administracin de bases de datos El
1 SISTEMA DE ADMINISTRACIN DE BASES DE DATOS
Un sistema de administracin de bases de datos (DBMS: Database managernent systern)
define, crea y mantiene una base de datos. El DBMS adems permite a los usuarios acceso
controlado a los datos en la base de datos. Un DBMS es una combinacin de cinco compo-

ases de atos nentes: hardware, software, datos, usuarios y procedimientos (figura 14.1).

DBMS

figura 14.1 Componentes DBMS

El hardware es el sistema de cmputo fsico que permite acceso fsico 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.
Comenzamos por definir un sistema de administracin 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-
concentr~os en el modelo de bases de datos relacionales con ejemplos de sus operaciones. tos fsicos. Adems, el software controla cul usuario puede tener acceso a qu parte de los
Luego analizarnos un lenguaje (el lenguaje de consultas estructurado o SQL) que opera en las datos en la base de datos.
bases de datos relacionales. Finalmente, estudiamos brevemente otros modelos de bases de
datos.
Los datos en una base de datos se almacenan fsicamente en los dispositivos de almacena-
Una ba~~ de datos es una coleccin de datos que de una manera lgica, pero no necesaria- miento. En una base de datos los datos son una entidad separada del software que accede a
mente fSIca, es coherente. Normalmente, debe haber algn significado inherente a los datos los mismos. Esta separacin permite la organizacin para cambiar el software sin tener que
para justificar la creacin de la base de datos. cambiar los datos fsicos o la manera en que stos se almacenan. Si una organizacin ha de-
cidido utilizar un DBMS, entonces toda la informacin requerida por la organizacin debe
mantenerse bajo una entidad, para que sea accesible por el software en el DBMS.

Usuarios El trmino usuarios en un DBMS tiene un amplio significado. Podemos dividir a los usua-
rios en dos categoras: usuarios finales y programas de aplicacin.

Usuarios finales Los usuarios finales son aquellas personas que pueden acceder a la ba-
se de datos directamente para obtener informacin. 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 mximo de privilegios. Puede controlar a los otros usuarios y su acceso al
DBMS. Puede otorgar algunos de sus privilegios a alguien ms pero conserva la capacidad
para revocarlas en cualquier momento. Un usuario normal, por otro lado, slo puede utilizar
parte de la base de datos y tiene acceso limitado.

Programas de aplicacin Los dems usuarios de los datos en una base de datos son los
programas de aplicacin. Las aplicaciones necesitan tener acceso a los datos y procesarlos.
Por ejemplo, un programa de aplicacin de nmina necesita tener acceso a parte de los datos
en una base de datos para crear cheques de pago a fin de mes.

Procedimientos 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.
El Bases de datos 14.3 Modelos de bases de datos ..

14..2 ARQUITECTURA MODELOS DE BASES DE DATOS


El Comit de planeacin y requisitos de estndares del Instituto Nacional Norteamericano Un modelo de base de datos define el diseo lgico de los datos. El modelo tambin describe
de Estndares (ANSlISPARC) ha establecido una arquitectura de tres niveles para un DBMS: las relaciones entre distintas partes de los datos. En la historia del diseo de bases de datos, tres
interno, conceptual y externo (figura 14.2). modelos han estado en uso: el modelo jerrquico, el modelo de red y el modelo relacional.

En un modelo jerrquico, los datos estn organizados como un rbol invertido. Cada entidad
tiene slo un padre, pero puede tener varios hijos. En la parte superior de la jerarqua, el r-
bol es una sola entidad, la cual se llama ralz. La figura 14.3 muestra una vista lgica del mo-
delo jerrquico. Como el modelo jerrquico es obsoleto, no es necesario ningn anlisis de
este modelo.

DEPARTAMENTO

PROFESORES

Fig"ra 14.3 Modelo jerrquico

:;g".a 14.2 Arquitectura de bases de datos


DE RED En un modelo de red, las entidades se organizan en un grafo, donde se puede tener acceso a
algunas entidades a travs de varios caminos (figura 14.4). No hay una jerarqua. Este mode-
lo tambin es obsoleto y no necesita un anlisis posterior.
NIVEL INTERNO El nivel interno detennina dnde se almacenan realmente los datos en el dispositivo de al-
macenamiento. Este nivel trata con mtodos de acceso de bajo nivel y cmo se transfieren los
bytes hacia y desde el dispositivo de almacenamiento. En otras palabras, el nivel interno in-
teractlla directamente con el hardware.

17;>""= rr.;;;;:::;:ESSTUDIANTES
NIVEl.. CONCEPTUAl.. El nivel conceptual, o comunitario, define el punto de vista lgico de los datos. En este ni-
vel se define el modelo de datos y los diagramas de esquemas. Las funciones principales del
DBMS estn 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 de] nivel interno.

NIVEl.. EXTERNO El nivel externo interacta directamente con el usuario (usuarios finales o programas de apli~
cacin). Cambia los datos que llegan del nivel conceptual a un formato y vista que son cono~
cidos por el usuario. Figura 14.4 Modelo de red

b
al Bases de datos
14.5 Operaciones con relaciones ..

MODELO En un modelo relacional, los datos se organizan en tablas bidimensionales llamadas relacio~
RELACIONAL lles. No hay una estructura jerrquica o de red impuesta en los datos. No obstante, las tablas Atributos
o relaciones estn relacionadas entre s, como se ver en breve (figura 14.5).
No. Nombre del curso Unidad
CISl5 Introduccin a e 5
CISl7 Introduccin a Java 5 Tuplas
DEPARTAMENTO CISl9 UNIX 4
CIS51 Conectividad en red 5
CURSOS

Figura 14.6 Relacin

,
,1------------------------------- _________________ 1 Cada columna en la tabla debe tener un nombre que sea nico en el mbito de la rela-
CURSOS cin. El nmero total de atributos para una relacin se conoce como el grado de la relacin.
ESTUDIANTES Por ejemplo, en la figura 14.6, la relacin tiene un grado de 3. Observe que los nombres
de los atributos no se almacenan en la base de datos; el nivel conceptual utiliza los atri-
butos para dar significado a cada columna.
'lUpIas. Cada fila en una relacin se conoce como tupla. Una tupla define una coleccin
de valores de atributos. El nmero total de filas en una relacin se llama cardinalidad
de la relacin. Observe que la cardinalidad de una relacin cambia cuando se aaden o
eliminan tuplas. Esto vuelve dinmica a la base de datos.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ______ 1

Figura 14.5 Modelo relacional

4.5 OPERACIONES CON RELACIONES


El modelo relacional es uno de los modelos ms comunes en uso en la actualidad y dedi-
carnos la mayor parte de este captulo al mismo. En la ltima seccin, estudiamos brevemen- En una base de datos relacional, podemos definir varias operaciones para crear nuevas rela-
te los otros dos modelos comunes que se derivan del modelo relacional: el modelo distribuido ciones adems de las existentes. Definimos nueve operaciones en esta seccin: insercin, eli-
y el modelo orientado a objetos. minacin, actualizacin, seleccin, proyeccin, juntura, unin, interseccin y diferencia.

La operacin de insercin es una operacin unaria; se aplica a una sola relacin. La opera-
14.4 MODELO R.ELACBONAL cin inserta una nueva tupla en la relacin. La figura 14.7 muestra un ejemplo de la ope-
racin de insercin. Un nuevo curso (CIS52) se ha insertado (agregado) a la relacin.

Continuamos nuestro anlisis de las bases de datos con el modelo ms popular, el sistema de
bases de datos relacionales (RDBMS: relational database management system). En este
modelo, los datos (universo del discurso) se representan mediante una serie de relaciones.
CURSOS
No. Nombre del curso Unidad
RELACiN No. Nombre del curso Unidad
Una relacin, en apariencia, es una tabla bidimensional. El RDBMS organiza los datos de ma- CISI5 Introduccin a e 5
nera que la vista externa sea una serie de relaciones o tablas. Esto no significa que los datos CISI5 Introduccin a C 5 Insercin Introduccin a Java 5
se almacenen como tablas; el almacenamiento fsico de los datos es independiente de la for- CISI7 Introduccin a Java 5 (Insert) UNIX 4
CIS19 UNIX 4
ma en que stos estn lgicamente organizados. La figura 14.6 muestra un ejemplo de una re- CIS51 Conectividad en red 5
lacin. CIS51 Conectividad en red 5
CIS52 Protocolos TCP!IP 6
Una relacin en un RDBMS tiene las caractersticas siguientes:

11 Nombre. Cada relacin en una base de datos relacional debe tener un nombre nico en- Figura 14.7 Operacin de insercin
tre otras relaciones.
11 Atributos. Cada columna en una relacin se llama atributo. Los atributos son los enca-
ELIMINACiN La operacin de eliminacin tambin es una operacin unaria. La operacin elimina una tu-
bezados de las columnas en la tabla. Cada atributo da significado a los datos almacena- pla definido por un criterio de la relacin. La figura 14.8 muestra un ejemplo de la operacin
dos bajo l.
de elinllnacin. El curso CISl9 se elinlln.
.. Bases de datos 14.5 Operaciones con relaciones ..

PROYECCiN La operacin de proyeccin tambin es una operacin unaria; se aplica a una sola relacin
CURSOS y crea otra relacin. Los atributos (columnas) en la relacin resultante son un subconjunto de
No. Nombre de) curso Unidad los atributos de la relacin original. La operacin de proyeccin crea una relacin en la cual
No. Nombre del curso Unidad cada tupla tiene menos atributos. El nmero de tuplas (filas) en esta operacin sigue siendo
CIS15 Introduccin a e 5
Introduccin a Java 5 Eliminacin CIS15 Introduccin a e 5 el mismo. La figura 14.11 muestra un ejemplo de la operacin de proyeccin que crea una re-
CIS17
UNIX 4 (Delete) CIS17 Introduccin a Java 5 lacin con slo dos columnas.
CIS19
Conectividad en red 5 CISSl Conectividad en red 5
CIS51
CIS52 Protocolos TCPIIP 6 CIS52 Protocolos TCPIIP 6

CURSOS
Figura 14.8 Operacin de eliminacin
No. Nombre del curso Unidad No. Unidad
CISIS Introduccin a C 5 CIS15 5
CIS17 Introduccin a Java 5 Proyeccin CIS17 5
ACTUALIZACiN La operacin de actualizacin tambin es una operacin unaria; se aplica a una sola rela~ CIS19 UNIX 4 (Project) CIS19 4
cin. La operacin cambia el valor de algunos atributos de una tupla. La figura 14.9 muestra CIS51 Conectividad en red 5 CIS51 5
un ejemplo de la operacin de actualizacin. El nmero de unidades para CIS51 se ha actua- CIS52 Protocolos TCP/IP 6 CIS52 6
lizado (cambiado) de 5 a 6.
Figura 14.11 Operacin de proyeccin

CURSOS La operacin de juntura es una operacin binaria; toma dos relaciones y las combina con
No. Nombre del curso Unidad No. Nombre del curso Unidad base en atributos comunes. Esta operacin es muy compleja y tiene muchas variantes. En la
figura 14.12 aparece un ejemplo muy simple en el cual la relacin de CURSOS se combina
CIS15 Introduccin a e 5 C1S15 Introduccin a e 5
Introduccin a Java 5
con la relacin de IMPARTIDOS POR para crear una relacin que muestra toda la infonna-
CIS17 CIS17 Introduccin a Java 5
CIS19 UNIX 4 CIS19 UNIX 4 cin sobre los cursos, incluyendo los nombres de los profesores que los imparten. En este ca-
CIS51 Conectividad en red 5 CIS51 Conectividad en red 6 so, el atributo comn es el nmero de curso (No.).
CIS52 Protocolos TCPIIP 6 CIS52 Protocolos TCP/IP 6

Figura 14.9 Operacin de actualizacin


CURSOS
No. Nombre del curso Unidad

CIS15 Introduccin a C 5
SELECCiN La operacin de seleccin es una operacin unaria que se aplica a una sola relacin y crea CIS17 Introduccin a Java 5
otra relacin. Las tuplas (filas) de la relacin resultante son un subconjunto de las tuplas de CIS19 UNIX 4
CIS51 Conectividad en red 5
la relacin original. Esta operacin utiliza algunos criterios para seleccionar algunas de las tu- CIS52 Protocolos TCP/lP 6 No. Nombre del curso Unidad Profesor
plas de la relacin original. El nmero de atributos (columnas) en esta operacin permanece
CIS15 Introduccin a C Loe

~
5
igual. La figura 14.10 muestra un ejemplo de la operacin de seleccin. En esta figura, hay IMPARTIDO POR Juntura CISI? Introduccin a Java 5 Lu
una relacin que muestra los cursos ofrecidos por un pequeo departamento. La operacin de (Join) CIS19 UNIX
No. Profesor 4 Walter
ClS51 Conectividad en red 5 Lu
seleccin pennite al usuario seleccionar slo los cursos de cinco unidades. CIS15 Lee CIS52 Protocolos TCPIIP 6 Lee
CIS17 Lu
CIS19 Walter
CIS51 Lu
CIS52 Lee
CURSOS
No. Nombre del curso Unidad Figura 14.12 Operacin de juntura
CIS15 Introduccin a C 5 No. Nombre del curso Unidad

CIS17 Introduccin a Java 5 CIS15 Introduccin a C 5


CIS19 UNIX 4 CIS17 Introduccin a Java 5
Conectividad en red ClS51 Conectividad en red 5
UNIN La operacin de unin tambin es una operacin binaria; toma dos relaciones y crea una
CIS51 5
nueva relacin. Sin embargo, hay una restriccin en las dos relaciones; stas deben tener los
CIS52 Protocolos TCP/IP 6
mismos atributos. La operacin de unin, segn se define en la teora de conjuntos, crea una
nueva relacin en la cual cada tupla est ya sea en la primera relacin, en la segunda o en am-
Figura 14.10 Operacin de seleccin bas. Por ejemplo, la figura 14.13 exhibe dos relaciones. En la esquina superior izquierda
El Organizacin de datos 14.6 lenguaje de consultas estructurado ..

Lista de tumos de CIS15 Lista de turnos de CIS15


ID de estudiante Nombre Apellido
ID de estudiante Nombre Apellido

145-67-6754 John Brown


145-67-6754 John Brown
232-56-5690 George Yellow
232-56-5690 George Yellow ..
345-89-6580 345-89-6580 Anne Greeo
Anne Greeo ID de estudiante Nombre Apellido
459-98-6789 459-98-6789 Ted Purple
Ted Purple ID de estudiante Nombre Apellido
145-07-6754 John Brown ~ Diferencia
Lista de turnos de CIS52
Unin
(Union) 232-56-5690 George Yellow
Lista de turnos de CIS52
~
( Difference) ~ 345-89-6580
459-98-6789
Anne
Ted
Greeo
Pmp1e
345-89-6580 Anne Green ID de estudiante Nombre Apellido
ID de estudiante Nombre Apellido
459-98-6789 Ted Purple 342-88-9999 Rich White
342-88-9999 Rich White 342-88-9999 Rich White 145-67-6754 Joho Brown ..
145-67-6754 John Brown
232-56-5690 George Yellow
232-56-5690 George Yellow

Figura 14.15 Operacin de diferencia


Figura 14.13 Operacin de unin

est la lista de tumos para CIS15; en la esquIDa inferior izquierda est la lista para CIS52. El
resultado es una relacin con infonnacin sobre los estudiantes que toma ya sea CIS15,
4.6 lENGUAJE DE CONSULTAS ESTRUCTURADO
CIS52 o ambos.
El lenguaje de consultas estructurado (SQL: structured query language) es el lenguaje es-
tandarizado por el Instituto Nacional Norteamericano de Estndares (ANSI) y la Orgauiza-
cin Internacional para la Estandarizacin (ISO) para usar en las bases de datos relacionales.
INTERSECCiN La operacin de interseccin tambin es una operacin binaria; toma dos relaciones y crea Es un lenguaje declarativo (no de procedimientos), lo cual significa que los usuarios declaran
una nueva relacin. Al igual que la operacin de unin, 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 operacin de interseccin, como lo define la teora de conjuntos, crea una ro se implement por Orade Corporation en 1979; desde entonces se han liberado nuevas ver-
nueva relacin en la cual cada tupla 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 operacin de interseccin es En esta seccin se definen algunas instrucciones comunes en el lenguaje SQL que se re-
una relacin con informacin sobre los estudiantes que toman tanto CIS15 como CIS52. lacionan con las operaciones definidas en la seccin anterior. De ninguna manera es un tuto-
rial para el lenguaje SQL. Para obtener ms informacin, consulte libros sobre SQL.

INSTRUCCIONIES Las instrucciones siguientes estn relacionadas con las operaciones que definimos.
Lista de turnos de CIS15

ID de estudiante Nombre Apellido huen: La operacin insert (insertar) utiliza el formato siguiente. La clusula de valores define todos
los valores de atributos para la tupla correspondiente a insertar.
145-67-6754 Joho Brown
232-56-5690 George Yellow
345-89-6580 Anne Green insert into NOMBRE-RELACION
459-98-6789 Ted Purple values (. .)
Interseccin 1I-+lI-ID:-:-:d,..""',..tu"di",n,..'...'I--oN...,om_h_re-+,,A,..p_elli_d_o...
Lista de turnos de CIS52 (lntersection) 145-67-6754 John Brown
ID de estudiante Nombre Apellido 232-56-5690 George Yellow Por ejemplo, la operacin de insercin en la figura 14.7 puede implementarse en SQL uti-
342-88-9999 Rich White lizando;
145-67-6754 John Brown
232-56-5690 George Yellow insert iht~ QU~sos
values ("CIS52" f "Protocolos TCPlIP" I 6)

Figura 14.14 Operacin de interseccin Observe que los valores de cadena estn entrecomillados; los valores numricos no lo estn.

Delete La operacin delete (eliminar) utiliza el siguiente formato. Los criterios para la eliminacin
DIFERENCIA La operacin de diferencia tambin es una operacin binaria. Se aplica a dos relaciones con se definen en la clusula where.
los mismos atributos. Las tuplas en la relacin resultante son aquellas que estn en la prime-
ra relacin pero no en la segunda. Por ejemplo, la figura 14.15 muestra dos relaciones de en- delete from NQMBRE-RELACION
trada. El resultado de la operacin de diferencia es una relacin con inforinacin sobre los where criterios
estudiantes que tOllan CIS15 pero no CIS52.
Bases de datos 14.6 lenguaje de consultas estructurado ..

Por ejemplo, la operacin de eliminacin en la figura 14.8 puede irilplementarse en SQL Por ejemplo. la operacin de juntura en la figura 14.12 puede implementarse en SQL uti-
utilizando: lizando:

delete from,CURSOS
seletit No. "'~8~re de'1W"~~:~:~t',,: Dnidd. Profesor
wher',',{liI~' ,'~ '/~,iSl,9':;
'from CURSOS. 'IMPARTID0S"':'POR
where gURSOS.No = IMPARTlbO'Ef~:POR::'Nq)
Update La operacin update (actualizar) utiliza el formato siguiente. El atributo a cambiar se define
en la clusula set. Los criterios para la actualizacin se definen en la clusula where.
La operacin uruon (unir) utiliza el formato siguiente. Otra vez, el asterisco significa que se
seleccionan todos los atributos.
update NOMBRE-RELACION
set atributo! = valor1 atributo2 valor2,
where criterios select *
frorn RELACIONl
union
Por ejemplo, la operacin de actualizacin en la figura 14.9 puede implementarse en SQL select *
usando: f rorn RELAC ION2

update CURSOS
set unidad<:",:l: Por ejemplo, la operacin de unin de la figura 14.13 puede implementarse en SQL me-
where ==- ,4G;'*SS1"
diante:

Select La operacin select (seleccionar) utiliza el formato siguiente. El asterisco significa que todos select
los atributos se eligen, from Lista-turnos~CIS15

select *
from NOMBRE-RELACION
where criterios
La operacin intersection (interseccin) usa el formato siguiente, De nuevo, el asterisco sig-
Por ejemplo, la operacin de seleccin en la figura 14.10 puede implementarse en SQL nifica que se seleccionan todos los atributos,
usando:

i:,'select select *
*
from CUR~0iii;i; frorn RELACIONl
intersection
where uni~d = 5
select *
frorn RELACION2
Project La operacin project (proyectar) utiliza el formato siguiente. Los nombres de las columnas
para la nueva relacin se listan de manera explcita.
Por ejemplo, la operacin de interseccin de la figura 14.14 puede implementarse en SQL
select lista-atributos utilizando:
from NOMBRE-RELACION
sele6~;-:; ,)*
from -::-:::\J~tS~:~turnos...:6j?~i;5
Por ejemplo, la operacin de proyeccin en la figura 14.11 puede implementarse en SQL ihter:~ecti'o:h";
mediante: select *
from Lista-turnos-CIS52
sele~_t_ ,N(F:'-~'unidad
from :C;URSOS
La operacin difference (diferencia) utiliza el siguiente formato. Nuevamente, el asterisco
Join La operacin join (juntar) emplea el siguiente formato, La lista de atributos es la combina- significa que se seleccionan todos los atributos,
cin de atributos de las dos relaciones de entrada; los criterios definen explcitamente los atri-
butos utilizados como atributos comunes. select *
from RELACIONl
select lista-atributos minus
from RELACION1, RELACION2 select *
where criterios from RELACION2
.. Bases de datos 14.9 Resumen ..

Por ejemplo, la operacin 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: cmo puede accederse a ellos. Asimismo, la base de datos puede crear una relacin entre un
objeto empleado y un objeto departamento (un empleado trabaja en un departamento).
'alect *
f:om Lis,ta-turnos-CIS15
minu,fL";'
slect" "'i#i:
from LIsta-trnos-CIS52 ,
TERMINOS CLAVE
Combinacin El lenguaje SQL le permite combinar las instrucciones anteriores para extraer informacin
de instrucciones ms compleja desde una base de datos. de datos modelo de red operacin update (actualizar)
de datos distribuida duplicada modelo jerrquico procedimiento
de datos distribuida fragmentada modelo relacional programa de aplicacin
base de datos distribuida (replicada) nivel conceptual relacin
14.1 OTROS MODELOS DE BASES DE DATOS de datos orientada a objetos nivel externo sistema de administracin de bases
cardinalidad nivel interno de operacin difference
La base de datos relacional es uno de los modelos ms comunes de hoy en da. Los otros dos Comit de planeacin y requisitos operacin difference (diferencia) sistema de administracin de bases
modelos comunes son las bases de datos distribuidas y las bases de datos orientadas a obje- de estndares (SPARC) operacin intersection (interseccin) de datos relacionales (RDBMS)
tos. Analizamos brevemente estos dos modelos en esta seccin y dejamos una exploracin datos (DBMS) operacin join (juntura) software
ms profunda para libros sobre bases de datos. operacin project (proyeccin) tupla
lenguaje de consultas estructurado operacin select (seleccionar) usuario
BASES DE DATOS El modelo de bases de datos distribuidas en realidad no es un modelo nuevo. Est basado en (SQL) operacin union (unin) usuario final
DISTRIBUIDAS el modelo relacional. Sin embargo, los datos se almacenan en varias computadoras que se co-
munican a travs 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 estn
ya sea fragmentados, con cada fragmento almacenado en un sitio, o duplicados en cada sitio.
RESUMEN
Bases de datos En una base de datos distribuida fragmentada los datos se localizan. Los datos utilizados
distribuidas localmente se almace_nan en el sitio correspondiente. Sin embargo, esto no significa que un
Una base de datos es una coleccin de datos que de ma- 111 El sistema de administracin de ,bases de datos relacio-
fragmentadas sitio no puede tener acceso a los datos almacenados en otro sitio. El acceso es principalmen-
nera lgica, pero no necesariamente fsica, 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 da. Los modelos jerrquico y de red
datos locales, hay un control global a travs de Internet. Por ejemplo, una compaa fanna- Un sistema de administracin de bases de datos son obsoletos.
cutica puede tener mltiples sitios en muchos pases. Cada sitio tiene una base de datos con (DBMS) define, crea y mantiene una base de datos y
info111lacin sobre sus propios empleados, pero un departamento central de personal tiene el permite el acceso controlado a los usuarios. 111 Una relacin puede pensarse como una tabla bidimen-
control de todas las bases de datos. sional.
Un DBMS se compone de hardware, software, datos,
usuarios y procedimientos. i!I Cada columna en una relacin se llama atributo. El n-
Bases de datos En una base de datos distribuida replicada, cada sitio mantiene una rplica exacta de otro
mero de atributos en una relacin es su grado.
distribuidas sitio. Cualquier modificacin en los datos almacenados en un sitio se replica exactamente en
Los usuarios de DBMS pueden ser personas o progra~
cada sitio. La razn para tener una base de datos semejante es la seguridad. Si el sistema en l1li Cada fila en una relacin se llama tupla. El nmero de
replicadas mas de aplicacin.
un sitio falla, los usuarios en este sitio pueden tener acceso a los datos de otro sitio. filas en una relacin es su cardinalidad.
Un DBMS tiene tres niveles: interno, conceptual y exter-
11 Nueve operaciones pueden realizarse con las relaciones.
BASES DE DATOS La base de datos relacional tiene una vista especfica de datos que se basa en la naturaleza de no.
las bases de datos relacionales (tuplas y atributos). La unidad de datos ms pequea en una 11 Una operacin que acta sobre una relacin es un ope-
ORIENTADAS El nivel interno de un DBMS interacta directamente
base de datos relacional es la interseccin de una tupla y un atributo. Sin embrago, actualmen- rador unitario. Los operadores unitarios incluyen las
A OBJETOS con el hardware y se ocupa de los mtodos de acceso de operaciones de insercin, eliminacin, actualizacin, se-
te algunas.aplicaciones necesitan buscar datos en otra fonna. A algunas aplicaciones les gus-
bajo nivel y la transferencia de bytes hacia y desde el leccin y proyeccin.
ta ver los datos como una estructura (captulo 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- 11 Una operacin que acta 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 defme la vista lgica rador binario. Los operadores binarios incluyen las ope-
base de datos orientada a objetos, se definen los objetos y sus relaciones. Adems, cada ob- de los datos as como el modelo de datos y los diagra- raciones de juntura, unin, interseccin y diferencia.
jeto puede tener atributos que pueden expresarse como campos. . mas de esquema.
Por ejemplo, en una organizacin, uno puede definir tipos de objetos tales como emplea- l1li El lenguaje de consultas estructurado (SQL) es ellen-
dos, departamentos y clientes. La clase empleados puede definir los atributos de un objeto , El nivel externo de un DBMS interacta directamente guaje estandarizado por el ANSI y la ISO para usarse en
empleado (nombre, apellido, nmero del seguro social, salario, etc.) y cmo se puede tener, con el usuario. las bases de datos relacionales.

El Bases de datos 14.10 Prctica ..

, En una arquitectura DBMS de tres niveles, el nivel 35. Si una relacin tiene cinco filas, entonces su _ _ __
14.10 PRACTICA ____ interacta directamente con los usuarios. es cinco.
a. externo a. diferencia
PREGUNTAS DE REPASO 20. Los componentes del DBMS tales como la computado_ b. conceptual b. cardinalidad
ra y los discos duros que permiten acceso fsico a los da- c. interno c. duplicidad
1. Cules son los cinco componentes indispensables de un
tos se conocen como ~_ __ d. relatividad
DBMS? d. fsico
3. hardware 36. Un operador unario se aplica a la(s) relacin(es) _ __
2. Mencione los dos tipos de usuarios de un DBMS. b. software De los diversos modelos de bases de datos, el modelo
y crea una salida de relacin(es).
3. Cmo se relacionan los tres niveles de un DBMS en- c. usuarios ____ es el que ms prevalece hoy en da.
a. una; una
tre s? d. programas de aplicacin a. jerrquico b. una; dos
b. de red c. dos; una
4. Cules son los tres modelos de bases de datos? Cules 21. El ____ 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) relacin(es)
5. Qu es una relacin en un RDBMS?
a. usuario final El modelo de bases de datos _ _ _ _ acomoda sus ___~ y crea una salida de relacin(es).
6. En una relacin, qu es un atributo? Qu es una tupla? b. programa de aplicacin datos en forma de un rbol invertido. a. una; una
7. Cul es la diferencia entre una operacin unaria y una c. programador a. jerrquico b. una;dos
operacin binaria? d. b yc b. de red c. dos; una
d. dos; dos
8. Mencione las operaciones unarias que se aplican a las 22. Tanto las personas como ____ pueden considerarse c. relacional
usuarios de una base de datos. d. de lista ligada 38. La operacin unaria de siempre da como re-
relaciones en un RDBMS.
sultado una relacin que tiene exactamente una fila ms
9. Mencione las operaciones binarias que se aplican a las a. los datos 30. En el modelo de bases de datos ____ o cada entidad que la relacin original.
relaciones en un RDBMS. b. el software puede accederse a travs de mltiples caminos. a. insercin
c. los programas de aplicacin a. jerrquico
10. Cul es la diferencia entre las operaciones de insercin b. eliminacin
d. el hardware
y eliminacin? b. de red c. actualizacin
23. En una arquitectura DBMS de tres niveles, la capa que c. relacional d. seleccin
11. Cul es la diferencia entre las operaciones de actualiza- interacta directamente con el hardware es el nivel d. de lista ligada 39. Si se quiere cambiar el valor de un atributo de una tupla,
cin y seleccin?
se utiliza la operacin de _ _ __
La relacin es un conjunto de datos organizado lgica-
12. Cul es la funcin de la operacin de proyeccin? a. externo a. proyeccin
mente como una tabla ____
13. Qu tiene en comn la relacin de salida de la opera- b. conceptual b. juntura
c. interno a. unidimensional
cin de juntura con las relaciones de entrada? c. actualizacin
d. fsico b. bidimensional
d. seleccin
14. Cul es la diferencia entre la operacin de unin y la c. tridimensional
operacin de interseccin? 24. En una arquitectura DBMS de tres niveles, el nivel 40. Si usted tiene tuplas en una relacin que contiene infor-
____ determina dnde se almacenan los datos en
d. de cualquier dimensin
macin de los estudiantes y quiere slo las tuplas de las
15. Cul es la funcin de la operacin de diferencia? realidad en el dispositivo de almacenamiento. Cada columna en una relacin se llama ~_ __ estudiantes mujeres, puede utilizar la operacin de
16. Qu es SQL? a. externo a. atributo
b. conceptual b. tupla a. proyeccin
17. En SQL, cmo se sabe en cules relaciones estn ac-
c. interno b. juntura
tuando los operadores? c. unin
d. fsico c. actualizacin
d. lista ligada
d. seleccin
PREGUNTAS DE OPCiN MLTIPLE 25. El nivel de una arquitectura DBMS de tres ni-
El grado de una relacin es el nmero de ____ en 41. La operacin que toma dos relaciones y las combina con
18. Un DBMS ~___ una base de datos. veles define la vista lgica de los datos.
la relacin. base en atributos comunes es la operacin de ~_ __
a. define a. externo a. atributos a. juntura
b. crea b. conceptual
b. tuplas b. proyeccin
c. mantiene c. interno
c. uniones c. unin
d. todos los anteriores d. fsico
d. posiciones d. interseccin
19. El cdigo DBMS que pennite 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 relacin, pue-
mantener y actualizar es ~_ __ do se definen en el nivel ~_ __ Cada fila en una relacin se llama ____
de utilizarse la operacin de ____
a. el hardware a. externo a. atributo
a. juntura
b. los datos b. conceptual b. tupla b. proyeccin
c. el software c. interno c. unin c. unin
d. el usuario d. fsico d. posicin d. interseccin
14.10 Prctica ..
.. Bases de datos

Las bases de datos relacionales se basan entre entidades 64. Repita el ejercicio 62 para encontrar el tipo de relacin
43. Usted quiere crear una relacin llamada Nueva que con- 49. Usted tiene las relaciones A, B Y e, como se exhibe en
en una organizacin. Encuentre las entidades en el dise- (1: 1, l:M o M:N) entre departamento y profesor.
tenga tuplas pertenecientes tanto a la relacin A como a la figura 14.16. Muestre la relacin resultante si se apli-
la relacin B. Para hacerlo, puede utilizar la operacin can las siguientes instrucciones SQL. o de la figura 14.5. Por ejemplo, el estudiante y el CUI-
65. Repita el ejercicio 62 para encontrar una relacin uno a
de~_ __ so son dos de las entidades de este diseo.
select A3 uno entre dos entidades.
a. seleccin Se dice que las relaciones entre entidades son 1: 1 (uno a
fromA 66. Disee una base de datos relacional para una biblioteca.
b. unin uno, l:M (uno a muchos) y M:N (muchos a muchos).
c. proyeccin 50. Usted tiene las relaciones A, B Y C, segn aparece en la Utilizando el diseo de la figura 14.5, encuentre el tipo 67. Disee una base de datos relacional para una compaa
d. interseccin figura 14.16. Muestre la relacin resultante si se aplican de relacin (1:1, l:M o M:N) entre estudiante y curso. de bienes races.
las siguientes instrucciones SQL. Repita el ejercicio 62 para encontrar el tipo de relacin
44. Cul de las siguientes opciones es un operador unario?
select Bl (1: 1, l:M o M:N) entre estudiante y profesor.
a. interseccin
b. unin from B
c. juntura where B2 ~216
d. proyeccin
51. Usted tiene las relaciones A, B Y C, como se exhibe en
45. Cul de las siguientes opciones es un operador binario? la figura 14.16. Muestre la relacin resultante si se apli-
a. seleccin can las siguientes instrucciones SQL.
b. actualizacin update e
c. diferencia set el ~ 37
d. todas las anteriores
where el ~ 31
46. es un lenguaje declarativo utilizado en las ba- 52. Utilizando el diseo de la figura 14.5, muestre la instruc-
ses de datos relacionales.
cin SQL que crea una nueva relacin que contiene s-
a. PDQ lo el nmero de curso y el nmero de unidades para cada
h. SQL curso.
c. LES
d. PBJ 53. Utilizando el diseo de la figura 14.5, muestre la instruc-
cin SQL que crea una nueva relacin que contiene s-
lo el ID de estudiante y el nombre de estudiante.
EJERCICIOS 54. Utilizando el diseo de la figura 14.5, muestre la instruc-
47. Usted tiene las relaciones A, B Y e, como se exhibe en cin SQL que crea una nueva relacin que contiene s-
la figura 14.16. Muestre la relacin resultante si se apli- lo el nombre de profesor.
can las siguientes instrucciones SQL. 55. Utilizando el diseo de la figura 14.5, muestre la instruc-
select * cin SQL que crea una nueva relacin que contiene s-
lo el nombre de departamento.
fram A
where A2 ~ 16 56. Utilizando el diseo de la figura 14.5, muestre la instruc-
cin SQL que crea una nueva relacin que contiene los
48. Usted tiene las relaciones A, B Y e, como se exhibe en cursos tomados por el estudiante con el ID 2010.
la figura 14.16. Muestre la relacin resultante si se apli-
57. Utilizando el diseo de la figura 14.5, muestre la instruc-
can las siguientes instrucciones SQL.
cin SQL que crea una nueva relacin que contiene los
selectAl A2 cursos impartidos por el profesor Blake.
fromA 58. Utilizando el diseo de la figura 14.5, muestre la instrUc-
whereA2 ~ 16 cin SQL que crea una nueva relacin que contiene s-
lo los cursos que se componen de tres unidades.
59. Utilizando el diseo de la figura 14.5, muestre la instruC-
A B e
cin SQL que crea una nueva relacin que contiene s-
A3 ~1 B2
lo el nombre de los estudiantes que toman el curso
12 100 214 eIS015.
2 16 102 2 216 32 401 1025
3 16 103 3 284 33 405 1065 60. Utilizando el diseo de la figura 14.5, muestre la instnlC-
4 216
4 19 104 cin SQL que crea una nueva relacin que contiene el
nmero de departamento del Departamento de Ciencias
Figu.a 14.16 Ejercicios 47-53 de la Computacin.
15.1 Compresin sin prdida ..

15.1 COMPRESIN SIN PRDIDA

.
resl n
,
En la compresin de datos sin prdida, se conserva la integridad de los datos. Los datos
originales y los datos despus de la compresin y descompresin son exactamente iguales
debido a que, en estos mtodos, los algoritmos de compresin y de descompresin son exac-
tamente inversos uno de otro. Ninguna parte de los datos se pierde en el proceso. Los datos
redundantes se eliminan en la compresin y se aaden durante la descompresin.
Estos mtodos por lo general se utilizan cuando uno no puede pennitirse el lujo de per-

e atos 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 seccin estudiarnos tres mtodos de compresin sin prdida: la codificacin de
longitud de ejecucin, la codificacin de Huffman y el algoritmo de Lempel Ziv.

CODIfiCACiN Probablemente el mtodo ms simple de compresin es la codificacin de longitud de eje-


DIE LONGITUD DIE cucin, la cual puede utilizarse para comprimir datos hechos de cualquier combinacin de
smbolos. No se necesita conocimiento de la frecuencia de ocurrencia de los smbolos (co-
EJECUCiN
mo lo requiere el mtodo siguiente) y puede ser muy eficiente si los datos se representan
como ceros y unos.
La idea general que sustenta este mtodo es remplazar ocurrencias de un smbolo repeti-
das y consecutivas por una ocurrencia del smbolo y el nmero de ocurrencias. Por ejemplo,
AAAAAAAA puede remplazarse por A08. La figura 15.2 presenta un ejemplo de este m
En das recientes, la tecnologa ha cambiado la forma de transmitir y almacenar los datos. todo simple de compresin. Observe que utilizamos un nmero fijo de dgitos (dos) para re-
Por ejemplo, el cable de fibra ptica nos permite transmitir los datos mucho ms rpido y el presentar el conteo.
DVD nos permite almacenar grandes cantidades de datos en un pequeo medio fsico. Sin
embargo, al igual que en otros aspectos de la vida, el ndice de demandas del pblico siem-
pre se est incrementando. Actualmente queremos descargar ms y ms infolIDacin en me-
nos y menos tiempo. Tambin queremos almacenar ms y ms datos en un espacio pequeo. BBBBBBBBBAAAAAAAAAAAAAAAANMMMMMMMMMM
La compresin 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.
A travs de la compresin de datos, hacemos la transmisin y el almacenaje ms eficientes, IBO?A16NOllv\?11
y al mismo tiempo conservarnos la integridad de los datos (hasta cierto punto). b. Datos comprimidos

La compresin de datos significa el envo o almacenamiento de un nmero pequeo de bits.


Aunque muchos mtodos se utilizan para este propsito, en general estos mtodos pueden di~
Figura 15.2 Ejemplo de codificacin de longitud de ejecucin
vidirse en dos categoras generales: mtodos sin prdida y con prdida. La figura 15.1 mues~
El mtodo puede ser an ms eficiente si los datos utilizan slo dos snbolos (por ejem-
tra las dos categoras y los mtodos comunes utilizados en cada categora.
plo, O y 1) en su patrn de bits y un smbolo es ms frecuente que el otro. Por ejemplo, ru-
Primero analizamos los mtodos de compresin sin prdida ms simples y ms fciles de com~ gamos que usted tiene una imagen representada principalmente por ceros y algunos unos. En
prender. Despus, presentamos los mtodos de compresin con prdida ms complicados. este caso puede reducir el nmero de bits al enviar (o almacenar) el nmero de ceros que
ocurren entre dos unos (figura 15.3).

Mtodos de
compresin de datos
a. Datos originales
000000000000001000011000000000000
Mtodos sin prdida Mtodos con prdida
(texto o programas) (imgenes. video. audio)

Lempel Ziv i
b. Datos comprimidos
Figura 15.1 Mtodos de compresin de datos
Figura 15.3 Codificacin de longitud de ejecucin para dos smbolos
lB Compresin de datos 15.1 Compresin sin prdida 111
Hemos representado los conteos como un nmero binario de cuatro bits (entero sin sig-
no). En una situacin real, usted encontrara un nmero ptimo de bits para evitar introdu- @
cir redundancia extra. En la figura 15.3 hay catorce O antes del primer 1. Estos catorce O 17 12 12 27 32
estn comprimidos en el patrn binario 1110 (14 en binario). El siguiente conjunto de ceros
est comprimido en 0100 debido a que hay cuatro O. Enseguida usted tiene dos 1 en los da-
a.
~1
@
.59
~4@
tos originales, los cuales se representan mediante 0000 en los datos comprimidos. Finalmen-
te, los ltimos doce O en los datos estn comprimidos en 1100.
Observe que, dada una compresin binaria de cuatro bits, si hay ms de quince O, stos 17 27 32 d.

se dividen en dos o ms grupos. Por ejemplo, una secuencia de veinticinco O se cifra como b.
1111 1010. Ahora la pregunta es cmo sabe el receptor que stos son veinticinco O y no lOO
quince O, luego un 1 y despus diez O. La respuesta es que si el primer conteo es 1111, el re-
ceptor sabe que el siguiente patrn de cuatro bits es una continuacin de ceros, Ahora surge
~
otra pregunta: qu pasa si hay exactamente quince O entre dos 1? En este caso el patrn es
1111 seguido por 0000. cC@ 27 32
c. e.
CODIfICACiN En la codificacin de Huffman, usted asigna cdigos ms cortos a smbolos que ocurren
con mayor frecuencia y cdigos ms largos a aquellos que ocurren con menor frecuencia. figura 1.5.4 Codificacin de Huffman
DIE HUfFMAN
Por ejemplo, imagine que tiene un archivo de texto que utiliza slo cinco caracteres (A, B,
C, D, E), Elegimos slo cinco caracteres para hacer el anlisis ms simple, pero el procedi-
miento es igualmente vlido para un nmero de caracteres menor o mayor,
Antes de que pueda asignar patrones de bits a cada carcter, usted asigna a cada carcter
un peso basado en su frecuencia de uso, En este ejemplo suponga que la frecuencia de los
o 1
A: 00 D: 10
caracteres es la que se presenta en la tabla 15.1. El carcter A ocurre 17 por ciento de las ve-
B: 010 E: 11
ces, el carcter B ocurre 12 por ciento de las veces y as por el estilo,
C: 011

Cdigo
Carcter A B C D E
Frecuencia 17 12 12 27 32

Tabla 15.1 Frecuencia de caracteres figura 1.5 . .5 rbol final y cdigo

Una vez que se ha establecido el peso de cada carcter, se construye un rbol con base en
aquellos valores. El proceso de construccin de este rbol se muestra en la figura 15.4. Si- Observe estos puntos sobre los cdigos. Primero, los caracteres con las frecuencias ms
gue tres pasos bsicos: altas reciben un cdigo ms corto (A, D Y E) que los caracteres con frecuencias ms bajas
(B y C). Compare esto con un cdigo que asigna a cada carcter longitudes de bits iguales.
1. Se pone todo el conjunto de caracteres en una fila. Cada carcter es ahora un nodo en Segundo, en este sistema de codificacin, ningn cdigo es un prefijo de otro cdigo, Los
el nivel inferior de un rbol. cdigos de dos bits, OO. 10 Y 11 no son el prefijo de ninguno de los otros dos cdigos (010)
2. Se encuentran los dos nodos dentro de los pesos ms pequeos y se juntan para for- y (011). En otras palabras. usted no tiene un cdigo 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 cdigo Huffman un cdigo instantneo. Explicaremos esta pro-
so del nuevo nodo son los pesos combinados de los dos nodos originales. Este nodo, piedad cuando analicemos la codificacin y la decodificacin en la codificacin de Huffman,
un nivel arriba de las hojas, es idneo para combinarse con otros nodos, Recuerde, la
suma de los pesos de los dos nodos elegidos debe ser ms pequea que la combina-
cin de cualesquier otras opciones posibles, Veamos cmo codificar el texto utilizando el ,?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 compresin incluso en este pequeo
Una vez que el rbol est completo, utilcelo para asignar cdigos a cada carcter. Prime- cdigo ficticio. Si usted quiere enviar el texto sin utilizar la codificacin de Huffman, nece-
ro asigne un valor de 1 bit a cada rama. Comenzando desde la raz (nodo superior), asigne sita asignar un cdigo de tres bits a cada carcter. Enviara 30 bits, mientras que con la co-
un O a la rama izquierda y un 1 a la rama derecha, y repita este patrn en cada nodo. dificacin de Huffman usted slo enviara 22 bits.
El cdigo de un carcter se encuentra comenzando en la raz y siguiendo las ramas que Segundo, observe que no hemos utilizado ningn delimitador entre los bits que codifican
conducen a ese carcter. El cdigo mismo es el valor de bits en cada rama del camino toma- cada carcter. Escribimos los cdigos uno despus de otro. La belleza de la codificacin
do en secuencia. La figura 15.5 muestra el rbol final con bits aadidos a cada rama. Obser- Huffman radica en que ningn cdigo es el prefijo de otro cdigo. No hay ambigedad en
ve que movimos los nodos de la hoja para hacer que el rbol pareciera un rbol binario. la codificacin; adems, el receptor puede decodificar los datos recibidos sin ambigedad.
.. Compresin de datos 15.1 Compresin sin prdida ..

usted enva el diccionario est enviando informacin adicional, lo cual va en contra del pro-
Codificador psito general de la compresin)?
Un algoritmo prctico que utiliza la idea de la codificacin adaptativa basada en diccio-
A: 00 D: 10
nario es el algoritmo de Lempel Ziv (LZ). Este algoritmo ha pasado por varias versiones
B: 010 E: 11 EAEBAECDEA
(LZ77, LZ78. etc.). Presentamos la idea bsica del algoritmo con un ejemplo pero no ahon-
C: 011
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 especfica
para simplificar el anlisis.
Envo
( 1100110100011011l0~~ 1 BAABABBBAABBBBAA

CdIgO de Huffman Utilizando nuestra versin simple del algoritmo LZ, el proceso se divide en dos fases: la
compresin de la cadena y la descompresin de la cadena.

Figura 15.6 Codificacin de Huffman


En esta fase, hay dos eventos concurrentes: la construccin de un diccionario indexado y la
compresin de una cadena de smbolos. El algoritmo extrae la subcadena ms pequea que
no puede encontrarse en el diccionario desde la cadena sin comprimir la restante. Luego al-
Decodificacin El receptor tiene una tarea muy fcil en la decodificacin de los datos que recibe. La figura
15.7 muestra cmo ocurre la decodificacin. 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 decisin. Sabe que estos dos se decodifi- valor de ndice. La compresin ocurre cuando la subcadena, con excepcin del ltimo carc-
can como E. La razn, 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-
ningn cdigo de tres bits (no hay cdigo de tres bits que inicie con 11). Asimismo, cuando ce y el nuevo carcter de la subcadena en la cadena comprimida. Por ejemplo, si la
el receptor recibe los siguientes dos bits (00), tambin sabe que el carcter debe ser A. Los subcadena es ABBB, usted buscaABB 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 cdigo (01) no est para nuestra cadena de ejemplo.
en la lista de cdigos. Despus de recibir el siguiente bit (O) interpreta los siguientes tres bits Sigamos unos cuantos pasos en esta figura:
juntos (010) como B. sta es la razn por la cual el cdigo de Huffman se llama cdigo ins~ PASO 1 El proceso extrae la subcadena ms pequea de la cadena original que no est en
tantneo; el decodificador puede decodificar inequvocamente los bits al instante (con el n~ el diccionario. Debido a que el diccionario est vaco, el carcter ms pequeo es un carc-
mero mnimo de bits). ter (el primer carcter, 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 slo un carcter). El proceso inserta B en la cadena
comprimida. Hasta ahora, la cadena comprimida tiene slo un carcter: B. La cadena restan-
te sin comprimir es la cadena original sin el primer carcter.
Decodificador
Cdigo de Huffman PASO 2 El proceso extrae de la cadena restante la siguiente subcadena ms pequea que
no est en el diccionario. Esta subcadena es el carcter A, el cual no est en el diccionario.
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 (slo es un ca-
rcter). 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 separacin).
EAEBAECDEA
PASO 3 El proceso extrae de la cadena restante la siguiente subcadena ms pequea que
no est en el diccionario. Esta situacin difiere de los dos pasos previos. El siguiente carc-
Figura 15.7 Decodificacin de Huffman
ter (A) est en el diccionario, as que el proceso extrae dos caracteres (AB), los cuales no es-
tn 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
CODIFICACiN La codificacin de Lempel Ziv (LZ) es un ejemplo de una categora de algoritmos llama-
subcadena sin el ltimo carcter (AB sin el ltimo carcter es A). El ndice para A es 2, as
DIE lEMPIEl ZIV da codificacin basada 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 sesin de comunicacin. 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 estn en
dice en el diccionario para reducir la cantidad de informacin 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 implementacin. Primero, ceso encuentra el ndice de la subcadena sin el ltimo carcter (AB), el cual es 3. La com-
cmo puede crearse un diccionario para cada sesin (no puede ser universal debido a SU binacin 3B se inserta en la cadena comprimida. Tal vez haya notado que en los tres pasos
longitud)? Segundo, cmo puede el receptor adquirir el diccionario hecho por el emisor (si anteriores, en realidad no logramos ninguna compresin debido a que hemos remplazado un
la Compresin de datos 15,1 Compresin sin prdida ..

1 BAABABBBAABBBBAAI B, A, 2B, 3B, lA, 4B, 5A 1


Descomprimido Comprimido
83 ~I------_ _ "'L:a analizada sintcticamente 83 ~I--------., Cadena analizada sintcticamente
~ BAABABBBAABBBBAA f'~7 .. L;;'iX:.;. ~ A, 2B, 3B, lA, 4B, 5A
~",,-<_----""<""';'2""'C;;'-"'-'~
",,1 Ll:\'ti~~"1X\~i!_~
2B, 3B, lA, 4B, 5A

~ I : I ~ 1 . ._ _ _ _ _,Cadena analizada sintcticamente


,1 , , , L f%~li!'tr:!IM
. '--
t:ZJ!~Y:~!!!!.! r - 3B, lA, 4B, 5A

lA, 4B, 5A

BAABBBBAA

B, A, 2B, 3B, lA, 4B, 5A


Comprimido

Figura 15,8 Ejemplo de decodificacin lempel Ziv Figura 15,9 Ejemplo de decodificacin lempel Ziv

carcter por uno CA 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 CAB 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 repetido PASO 1 La primera subcadena de la cadena comprimida se examina. Es B sin un ndice.
nes (lo cual es cierto en la mayora de los casos), podemos reducir en gran medida el nmero Debido a que la subcadena no est en el diccionario, sta se aade 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 situacin es similar al paso 1. Ahora la
al lector seguir adelante. Observe que el diccionario slo se utiliz por el emisor para encon- cadena descomprimida tiene dos caracteres (EA) y el diccionario tiene dos entradas.
trar los ndices. ste no se enva al receptor y el receptor debe crear el diccionario para si
mismo como veremos en la siguiente seccin. PASO 3 La tercera subcadena (2B) se examina. El proceso realiza una bsqueda en el dic-
cionario y remplaza el ndice 2 con la subcadenaA. La nueva subcadena (AB) se aade a la
Descompresin La descompresin es el proceso inverso de la compresin. Este proceso extrae las subcade- cadena descomprimida y AB se aade al diccionario.
nas de la cadena comprimida y trata de remplazar los ndices con la entrada correspondien-
te en el diccionario, el cual est vaco 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 aade a la cadena des-
ese ndice. La figura 15.9 muestra el proceso de descompresin. comprimida y ABB se aade al diccionario.
111 Compresin de datos 15.2 Mtodos de compresin con prdida

Dejamos la exploracin de los ltimos tres pasos como un ejercicio. Como habr notado, cuadrado del nmero de unidades. Es decir, para toda la imagen, se necesitan 307 2002 ope-
utilizamos un nmero como 1 o 2 para el ndice. En realidad el ndice es un patrn binario raciones (94 371 840000 operaciones). Si se utiliza JPEG, se necesitan 642 operaciones pa-
(posiblemente variable en longitud) para una mayor eficiencia. Tambin advierta que la co- ra cada bloque, lo cual da un total de 64' X 80 X 60 o 19 660 800 operaciones. Esto
dificacin LZ deja el ltimo carcter sin comprimir (lo cual significa menor eficiencia). Una disminuye 4 800 veces el nmero de operaciones.
versin de la codificacin LZ, llamada codificacin de Lempel Ziv Welch (LZW) comprime La idea de JPEG es cambiar la imagen en una serie de nmeros lineales (vector) que re-
incluso este solo carcter. No obstante, dejamos el anlisis de este algoritmo a libros de tex- vela las redundancias. Las redundancias (falta de cambios) pueden entonces eliminarse uti-
to ms especializados. lizando uno de los mtodos de compresin sin prdida que se estudiaron previamente. Una
versin simplificada del proceso aparece en la figura 15.11.

15.2 MTODOS DE COMPRESIN CON PRDiDA


La prdida de informacin no es aceptable en un archivo de texto o archivo de programa. Sin
embargo es aceptable en una imagen o video. La razn es que nuestros ojos y odos no pue-
den distinguir cambios sutiles. Para estos casos, usted puede usar un mtodo de compresin
de datos con prdida. Estos mtodos son ms baratos y requieren menos tiempo y espacio
cuando se trata de enviar millones de bits por segundo para imgenes y video.
Varios mtodos se han desarrollado utilizando tcnicas de compresin con prdida. El en bloques
grupo unido de expertos en fotografa (JPEG: joint photographic experts group) se usa
para comprimir imgenes y grficas. El grupo de expertos en imgenes en movimiento Figura 15.11 Proceso jPEG
(MPEG: motion picture experts group) se utiliza para comprimir video.

En este paso, cada bloque de 64 pixeles atraviesa por una transformacin llamada la trans-
COMPRESiN DE Como se vio en el captulo 2, una imagen puede representarse mediante un arreglo bidimen~ coseno formacin discreta coseno (DCT: discrete cosine transform). La transformacin cambia
IMGENES: WEG sional (tabla) de elementos de imagen (pixeles); por ejemplo, 640 X 480 ~ 307 200 pixe- 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 frmula se da en el apndice 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 (3 X 8 que; T(x, y) define el valor en el bloque transformado. El apndice F muestra la frmula
bits), con cada ocho bits representando uno de los colores en el sistema de colores RBO (o matemtica para una transformacin.
YIQ). Para simplificar el anlisis, nos concentramos en una imagen de escala de grises con Para comprender la naturaleza de esta transformacin, penntanos mostrar el resultado de
640 X 480 pixeles. las transformaciones para tres casos.
Usted puede ver por qu necesita compresin. 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 propsito de dividir la imagen en bloques es disminuir el nmero de clculos, debido de cero debido a que, de acuerdo con la frmula, el valor de T(O, O) es el promedio de los
a que, como ver en breve, el nmero de operaciones matemticas para cada imagen es el otros valores. Esto se conoce como el valor DC (tomado de las siglas en ingls de corriente
directa, de la ingeniera elctrica). El resto de los valores, llamados valoresAC, 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 160 O O O O O O O
20 20 20 20 20 20 20 20 O O O O O O O O

..
..
..
lO
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20 O
O O O O O O O O
O O O O O O O
20 20 20 20 20 20 20 20 O O O O O O O O
lO lO 20 20 20 20 20 20 20 20 O O O O O O O O
20 20 20 20 20 20 20 20 O O O O O O O O
Imagen 20 20 20 20 20 20 20 20 O O O O O O O O
p (x.)') T(m.n)

Figura 15.10 Ejemplo de jPEG en escala de grises, 640 x 480 pixeles Figura 15.12 Caso 1: escala de grises uniforme
Compresin de datos 15.2 Mtodos de compresin con prdida ..

Caso 2 En el segundo caso, usted tiene un bloque con dos secciones diferentes de escala Observe que la nica fase en el proceso que no es reversible es la fase de cuantizacin.
de grises uniforme. Hay un cambio brusco en los valores de los pixeles (de 20 a 50). Cuan_ Usted pierde un poco de informacin aqu que no es recuperable. La verdad es que la nica
do se hacen las transformaciones se obtiene un valor De as como valores AC diferentes de razn por la cual JPEG se llama compresin con prdida es por la fase de cuantizacin.
cero. No obstante, slo hay unos cuantos valores diferentes de cero agrupados alrededor del
valor De. La mayora de los valores son cero (figura 15.13). Despus de la cuantizacin, 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 razn es que si la ima-
gen no tiene cambios finos, la esquina inferior derecha de la tabla T son todos ceros, La fi-
2020202050505050 280 - 109 O 39 O -25 O 22 gnra 15.15 muestra el proceso. JPEG por lo general utiliza codificacin de longitud de
2020202050505050 O O O O O O O O
ejecucin en la fase de compresin para comprimr el patrn de bits que resulta de la linea-
2020202050505050 O O O O O O O O
20 20 20 20 50 50 50 50 O O O O O O O O lizacin de zigzag,
20 20 20 20 50 50 50 50 O O O O O O O O
20 20 20 20 50 50 50 50 O O O O O O O O
2020202050505050 O O O O O O O O T(m, n)
Imagen 20 20 20 20 50 50 50 50 O O O O O O O O
P (x, y) T(m,n)

Figura 15.13 Caso 2: dos secciones

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 De, tambin con muchos valores AC diferentes de cero (fi-
gura 15.14).

o o
20 30 40 50 60 70 80 90 400 -146 O -31 -1 3 -1 -8
20 30 40 50 60 70 80 90 O O O O O O O O
20 30 40 50 60 70 80 90 O O O O O O O O
2030405060708090 O O O O O O O O 20 15 15 12 17 12 O O O O O ... O
20 30 40 50 60 70 80 90 O O O O O O O O
20 30 40 50 60 70 80 90 O O O O O O O O Resultado
20 30 40 50 60 70 80 90 O O O O O O O O
Imagen 20 30 40 50 60 70 80 90 O O O O O O O O
Figura 15.15 lectura de la tabla
P (x, y) T(m,n)

El mtodo del grupo de expertos de imgenes en movimiento (MPEG) se utiliza para com-
Figura 15.14 Caso 3: escala de grises gradiente primir video. En un principio, una imagen en movimiento es un flujo rpido de una serie de
VIDEO: MPEG
cuadros iframes), 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 signiente: combinacin espacial de pixeles y un video es una combinacin temporal de cuadros que se
111 La transformacin crea la tabla T a partir de la tabla P. envan uno despus de otro. La compresin de video, entonces, significa comprimir espa-
cialmente cada cuadro y comprimir temporahnente una serie de cuadros.
111 El valor De da un valor promedio de los pixeles.
Compresin espacial La compresin espacial de cada cuadro se realiza con JPEG (o
111 Los valores AC dan los cambios.
una modificacin de ste), Cada cuadro es una imagen que puede comprimirse de manera
11 La falta de cambios en los pixeles vecinos crea ceros. independiente.
Antes de que cerremos el anlisis de la DCT, observe que la transformacin DCT es rever~ Compresin temporal En la compresin temporal, los cuadros redundantes se elimi-
sible. El apndice F tambin muestra la frmula matemtica para una transformacin inversa. nan, Cuando vemos televisin, recibimos 30 cuadros por segundo. Sin embargo, la mayora
de los cuadros consecutivos son casi iguales. Por ejemplo, cuando alguien est hablando, la
Cuantizacin Despus de que se crea la tabla T, los valores se cuantizan para reducir el nmero de bits ne~ mayor parte del cuadro es la misma que la del cuadro anterior, con excepcin del segmento
cesarlos para la codificacin. Anteriormente a la cuantizacin, dejbamos la fraccin de ca~ del cuadro alrededor de los labios, el cual cambia de un cuadro a otro.
da valor y mantenamos la parte entera. En la actualidad dividimos el nmero entre una Un clculo aproximado apunta a la necesidad de compresin temporal para video, Una
constante y luego dejamos la fraccin. Esto reduce el nmero requerido de bits todava ms. compresin JPEG 20:1 de un cuadro enva 368 640 bits por cuadro; a 30 cuadros por segun-
En la mayora de las implementaciones, una tabla de cuantizacin (8 por 8) define cmo do, esto es 11 059 200 bits por segundo. Necesitamos reducr este nmero.
cuantizar cada valor. El divisor depende de la posicin del valor en la tabla T. Esto se hace Para comprimir los datos temporalmente, el mtodo MPEG primero divide los cuadros
para optimizar el nmero de bits y el nmero de ceros para cada aplicacin en particular. en tres categoras: cuadros 1, cuadros P y cuadros B.
Compresin de datos 15.5 Prctica ..

l1li Cuadros l. Un cuadro intracodificado (cuadro 1) es un cuadro independiente qu ,


1 . . ~ ~ errase
re aClOlla con nmgun otro cuadro (ni con el cuadro enviado antes ni Con el cuadro
~ " .
'
enVIa~
TERMINOS CLAVE
do despues). Este se presenta a mtervalos regulares (por ejemplo, cada noveno cuadro es
un cuadro 1). Un cuadro 1 debe aparecer peridicamente debido a alga"TI cambio re penti'- binario compresin temporal grupo unido de expertos en fotografa
no en e1 cuadro
. que
. los cuadros anterior y posterior no pueden mostrar. Adema>s, c uanod cOldificado basado en diccionario cuadro bidireccional (cuadro B) (JPEG)
se transmIte un vIdeo, un espectador o espectadora puede ajustar su receptor en cualqu' cod,ifi,:aciln de Huffman cuadro intracodificado (cuadro 1) nodo
mo t S' >1 h dr ler
~en o. ,,1 SO o ay un eua o 1 al principio de la transmisin, el espectador que hace wdificaci;n de longitud de ejecucin cuadro predecible (cuadro P) rama
el ajuste mas tarde no recibir una imagen completa. Los cuadros 1 Son independientes co,lificado Lempe! Ziv (LZ) cuantizacin subcadena
de otros cuadros y no pueden construirse a partir de otros cuadros. decodificado transformacin discreta coseno
compresin de datos descompresin (DCT)
Cuadros P. Un cuadro predecible (cuadro P) se relaciona con el cuadro 1 o con el
,colmpres:in de datos con prdida grupo de expertos de imgenes en valor AC
cuadro P precedente. En otras palabras, cada cuadro P contiene slo los cambios respec-
,comp1resin de datos sin prdida movimiento (MPEG) valor DC
to de~ cuadro precedente. Los cambios, sin embargo, no cubren un segmento grande.
CcrJffijpre:sii;n espacial
P?r ejemplo para un objeto en movimiento rpido, los nuevos cambios pueden no re-
gIstrarse en un cuadro P. Los cuadros P pueden construirse slo a partir de los cuad
IP 'L ros
o preVIOS. os cua~os P transportan mucha menos informacin que otros tipos de
cuadros y transportan mc1uso menos bits despus de la compresin.
Cuadros B. Un cuadro bidireccional (cuadro B) le conciernen los cuadros I o P an- 15.4 RESUMEN
terior o posterior. En otras palabras cada cuadro B se relaciona con el pasado y con el
futuro. Observe que un cuadro B nunca se relaciona con otro cuadro B. . Los mtodos de compresin de datos son ya sea sin pr- En la codificacin LZ, las cadenas o palabras repetidas
dida (toda la infonnacin es recuperable) o con prdida se almacenan en variables. Un ndice a la variable rem-
La figura 15.16 muestra una secuencia de cuadros de muestra.
(alguna informacin se pierde). plaza la cadena o palabra.

La compresin de datos toma el mensaje original y re- lIiI La codificacin LZ requiere un diccionario y un algorit-
duce el nmero de bits que se van a transmitir. mo tanto en el emisor como en el receptor.
l1li En los mtodos de compresin con prdida, los datos
En los mtodos de compresin sin prdida, los datos re-
recibidos no necesitan ser una rplica exacta de los da-
cibidos son la rplica exacta de los datos enviados.
tos enviados.
Los tres mtodos de compresin sin prdida son la co- 11 El grupo unido de expertos en fotografa (JPEG) es un
dificacin de longitud de ejecucin, la codificacin de mtodo para comprimir imgenes y grficos.
Huffrnan y la codificacin de Lempel Ziv (LZ),
iI El proceso JPEG involucra la divisin en bloques, la
En la codificacin de longitud de ejecucin, las ocu- transformacin discreta de coseno, la cuantizacin y
rrencias repetidas de un smbolo se remplazan por un la compresin sin prdida.
Figura 15.16 Cuadros MPEG smbolo y el nmero de ocurrencias del smbolo. 11 El grupo de expertos en imgenes en movimiento
11 En la codificacin de Huffman, la longitud del cdigo (MPEG) es un mtodo para comprimir video.
. La figura 15.17 exhibe cmo los cuadros 1, P Y B se construyen a partir de una serie de
SIete cuadros. es una funcin de la frecuencia de smbolos; los smbo- lIiII MPEG involucra tanto la compresin espacial como la
los ms frecuentes tienen cdigos ms cortos que sm- compresin temporal. La primera es similar a JPEG y la
. MPEG ha pasado por muchas versiones. MPEG 1 se dise para un CD- ROM con un n-
bolos menos frecuentes. ltima elimina cuadros redundantes.
dice de datos de 1.5 Mbps, MPEG 2 se dise para DVD de alta calidad con un ndice de
datos de 3-6 Mbps, MPEG 3 (o MP3) es un estndar para compresin de audio,

,
15.5 PRACTICA
PREGUNTAS DE REPASO 5. Qu es la codificacin de Huffman?
1. Cules son las dos categoras de los mtodos de com- 6. Cul es el rol del diccionario en la codificacin LZ?
presin de datos? 7. Cul es la ventaja de la codificacin LZ sobre la codi-
2. Cul es la diferencia entre la compresin sin prdida y ficacin de Huffman?
la compresin con prdida? 8. Cules son dos mtodos de compresin con prdida?
3. Cul es la codificacin de longitud de ejecucin? 9. Cundo utilizara usted JPEG? Cundo utilizara
4. Cmo reduce la codificacin de Lempel Ziv la canti- MPEG?
Figura 15.17 Construccin de cuadros MPEG dad de bits transmitidos? 10. Cmo se relaciona MPEG con JPEG?

-
.. Compresin de datos 15.5 Prctica ..

11. En JPEG. cul es la funcin de dividir en bloques la 23. En la codificacin de , los caracteres que ocu- 36. Puede ser el siguiente un cdigo de Huffrnan? Explique.
imagen? rren con mayor frecuencia tienen cdigos ms cortos A: O B: 1 C: 00 D: 01 E: 10 F: 11
que los caracteres que ocurren con menos frecuencia.
. 31. Codifique el siguiente patrn de bits utilizando la codi-
12. Por qu la DCT se necesita en JPEG? 37. Codifique el mensaje BAABBBBAACAA utilizando el
a. Huffman ficacin de longitud de ejecucin con cdigos de 5 bits:
13. Cmo contribuye la cuantizacin a la compresin? dieciocho ceros, 11, cincuenta y seis ceros, 1, quin- cdigo Huffman siguiente:
b. longitud de ejecucin
ce ceros, 11 A: O B: 10 C: 11
14. Qu es un cuadro en la compresin MPEG? c. LZ
d. todos los anteriores 38. Decodifique el mensaje 0101000011110 utilizando el
15. Qu es la compresin espacial comparada con la com- Codifique el siguiente patrn de bits utilizando codifi-
cdigo Huffman siguiente:
presin temporal? 24. En la codificacin de _ _ _ , PPPPPPPPPPPPPPP cacin de longitud de ejecucin con cdigos de 5 bits:
A: O B: 10 C:11
puede remplazarse por PIS. 1, ocho ceros, 1, cuarenta y cinco ceros, 11
16. Comente los tres tipos de cuadros utilizados en .MPEG. 39. Utilice una transformacin para transformar una tabla
a. Huffman Codifique los caracteres siguientes usando codificacin de cuatro por cuatro. Las reglas son las siguientes:
b. longitud de ejecucin de Huffman con las frecuencias dadas:
PREGUNTAS DE OPCiN MLTIPLE T(O, O) ~ (1/16) [P(O, O) + P(O, 1) +
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
ndices a las cadenas. ste es la Codifique los caracteres siguientes utilizando codifica- T(O, 1) ~ (1/16) [0.95 P(O, O) + 0.9 P(O. 1) +
-- 25. En la codificacin de , una cadena se remplaza cin de Huffman. Cada caracter tiene la misma frecuen- 0.85 P(O, 2) + ... ]
a. codificacin diferencial por un apuntador a la cadena almacenada. cia (1); T(O, 2) ~ (1/16) [0.90 P(O, O) + 0.85 P(O, 1)+
b. codificacin de Lempel Ziv a. Huffman A, B, e, D, E, F, G, H, 1, J 0.80 P(O, 2) + ... ]
c. codificacin Morse b. longitud de ejecucin
d. codificacin con prdida c. LZ Puede ser la siguiente, codificacin de Huffman? Ex- Compare y contraste este mtodo con la DCT. La DCT
d. todos los anteriores plique. en realidad es un clculo promedio con peso como la
18. Una- cadena de cien ceros se remplaza con dos marca- A: O B: 10 C: 11 transformacin precedente? De ser as, cul es el peso?
dores, un O y el nmero 100. sta es la _ __ 26. La codificacin LZ requiere _ __
a. codificacin de longitud de ejecucin a. un diccionario
b. codificacin Morse b. un buffer
c. un algoritmo
c. codificacin diferencial
d. todos los anteriores
d. codificacin de Lempel Ziv
27. La codificacin JPEG involucra , un proceso
19. Un ejemplo de la compresin con prdida es _ __
que revela las redundancias en un bloque.
a. la codificacin diferencial
a. divisin en bloques
b. la codificacin de Lempel Ziv b. la DCT
c. la codificacin de longitud de ejecucin c. cuantizacin
d. JPEG d. vectorizacin
20. En un mtodo de compresin de datos , los da- 28. En la codificacin JPEG el proceso de divide
tos recibidos son una copia exacta del mensaje original. la imagen original en bloques ms pequeos y asigna
a. sin prdida un valor a cada pixel en un bloque.
b. con prdida a. divisin en bloques
c. de menor prdida b. la DCT
d. brillantes c. cuantizacin
d. vectorizacin
21. En un mtodo de compresin de datos _ _ _ , los da-
tos recibidos no necesitan ser una copia exacta del men- 29. El ltimo paso en JPEG, la _ _ _ , elimina las redun-
saje original. dancias.
a. sin prdida a. divisin en bloques
b. con prdida b. cuantizacin
c. compresin
c. de menor prdida
d. vectorizacin
d. brillantes
30. es un mtodo de compresin con prdida para
22. La codificacin de es un mtodo de compre-
imgenes y grficos; mientras que es un mto-
sin de datos sin prdida.
do de compresin con prdida para video.
a. Huffman
a. DCT;MPEG
b. longitud de ejecucin
b. MPEG; JPEG
c. LZ c. JPEG; MPEG
d. todos los anteriores d. JPEG;DCT
---------
16.1 Privacidad

Seguridad

Se urilad Figura 16.1 Aspectos de la seguridad

En una comunicacin segura, el emisor y el receptor esperan privacidad, o confidencialidad.


PRIVACIDAD
En otras palabras, slo el emisor y el receptor del mensaje son capaces de comprender el
contenido del mensaje.

La confidencialidad del mensaje no es suficiente en una comunicacin segura; la autentica~


cin tambin es necesaria. El receptor necesita estar seguro de la identidad del emisor.

La confidencialidad y la autenticacin son slo dos elementos de una comunicacin segura.


La integridad del mensaje tambin necesita conservarse. Ni el emisor ni el receptor estn fe-
En la actualidad, la seguridad juega un papel muy importante en las ciencias de la compu- lices si el contenido del mensaje se modifica durante la transmisin. Por ejemplo, en una
tacin. Con el crecimiento de Internet, ms y ms datos se estn intercambiando yesos da- transaccin bancaria, ni el cliente ni el banco estn satisfechos si la transferencia de $1 000
tos necesitan asegurarse. Por ejemplo, cuando usted realiza una compra en Internet, espera del cliente cambia a $10 000 durante la transmisin. El cambio podra ocurrir ya sea de ma-
que la informacin que enva al vendedor se mantenga en secreto y que slo la utilice el ven- nera maliciosa, podra ser provocado por un intruso que se beneficia del cambio u ocurrir ac-
dedor. Adems, cuando recibe un mensaje, en ocasiones necesita autenticar al emisor. En es- cidentalmente como resultado de un mal funcionamiento de hardware o software.
te captulo tratarnos 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- Aun cuando no es muy obvio, uno de los elementos de una comunicacin segura es el no
terior. rechazo, es decir, la prevencin del rechazo (negacin) del emisor. En otras palabras, un sis-
tema seguro necesita probar que el emisor en realidad envi el mensaje. Por ejemplo, cuan-
Podernos decir que hay cuatro aspectos de la seguridad: privacidad (confidencialidad), au- do un cliente enva un mensaje para transferir dinero de una cuenta a otra, el banco debe
tenticacin de mensajes, integridad de los mensajes y no rechazo (figura 16.1). haber probado que el cliente en realidad solicit esta transaccin.

PRRVACIDAD
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.

CIFRADO/ En la actualidad, la privacidad puede lograrse usando mtodos de cifrado/descifrado. Los


DESCIFRADO datos se cifran en el emisor y se descifran en el receptor. Dos categoras de mtodos de ci-
frado/descifrado en uso hoy en da son la llave secreta y la llave pblica.

Privacidad La manera ms simple de cifrar los datos es utilizar una llave secreta. El emisor utiliza es-
I
. con cifrado ta clave y un algoritmo de cifrado para cifrar los datos; el receptor utiliza la misma llave y
de llave secreta el algoritmo de descifrado correspondiente para descifrar los datos (figura 16.2).
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
.. Seguridad 16.1 Privacidad ..

La etapas 1, 18 Y 19 del algoritmo son slo operaciones de permutacin (que no usan la


llave). Las etapas 2 a 17 son etapas idnticas. Los 32 bits de la derecha de una etapa se con-
vierten en los 32 bits de la izquierda de la etapa siguiente. Los 32 bits de la izquierda de una
etapa se revuelven con la llave y se convierten en los 32 bits de la derecha de la etapa si-
guiente. La revoltura es compleja y est ms all del mbito de este libro.

Ventajas y desventajas Los algoritmos de llave secreta tienen una gran ventaja: la efi
Figura 16.2 Cifrado de llave secreta ciencia. Les toma menos tiempo cifrar o descifrar en comparacin con los algoritmos de lla
ve pblica que estudiaremos en breve. Son muy buenos candidatos para los mensajes largos.
Sin embargo, los algoritmos de llave secreta tienen dos grandes desventajas. Cada par de
entre s en el sentido de que, por ejemplo, si el algoritmo de cifrado aade algo a los datos, usuarios debe tener una llave secreta. Esto significa que si N personas en el mundo quieren
el algoritmo de descifrado sustrae lo mismo de los datos. utilizar este mtodo, se necesita que haya N (N - 1) I 2 llaves secretas. Por ejemplo, para
que un milln de personas se comuniquen, se requiere medio billn de llaves secretas. Asi-
mismo, la distribucin de las llaves entre dos partes puede ser difcil. En breve se ver c
mo resolver este problema.
En el cifrado de llave secreta, la misma llave se utiliza en el cifrado y en el desci-
frado. Sin embargo, los algoritmos de cifrado y descifrado son inversos entre s.
Privacidad con El segundo tipo de cifrado/descifrado es el cifrado de llave pblica. En este mtodo, hay
d1Frado de llave dos llaves; una llave privada y una llave pblica. La llave privada es mantenida por el re-
ceptor, y la llave pblica se anuncia al pblico (tal vez por medio de Internet).
Observe que frecuentemente se hace referencia a los algoritmos de cifrado de llave secre- Cuando un usuario A quiere enviar un mensaje a un usuario B, A utiliza la llave pblica
ta como algoritmos de cifrado simtrico debido a que la misma llave secreta puede utilizar- para cifrar el mensaje. Cuando B recibe el mensaje, utiliza su llave privada para descifrarlo
se en la comunicacin bidireccional. (figura 16.4).

Estndar de cifrado de datos (DES) El cifrado de llave secreta se ha utilizado por ms


de dos milenios. Al principio, los algoritmos eran muy simples y las llaves eran muy fciles de Al pblico
Llave pblica de B
adivinar. Hoy en da, usamos algoritmos muy sofisticados; el ms comn es el llamado es- Jo.

,______________________ ~:i~~~~~~~~~ 1
,
tndar 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 aaden a la ltima seccin Llave privada de B

si sta no es de 64 bits). Cada seccin 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-
Texto cifrado
tra la disposicin general de este mtodo.
La idea es revolver los datos y la llave de tal manera que cada bit de texto cifrado depen
Cifrado
I
da de cada bit de texto plano y de la llave. Esto vuelve muy difcil para un usuario adivinar A B
los bits de texto plano a partir de los bits de texto cifrado.
Figura 16.4 Cifrado de llave pblica

Llave de 56 bits La idea de este mtodo es que los algoritmos de cifrado y descifrado no son inversos en
tre s. Aunque un intruso tenga la llave pblica y los algoritmos de cifrado y descifrado, no
puede descifrar el mensaje sin la llave privada.

RSA El algoritmo de llave pblica ms comn recibe su nombre en honor a sus inventores,
cifrado de Rivest-Shamir-Adleman (RSA). La llave privada es un par de nmeros (N, d);
Texto plano _....,.1 :'MI '"'--I~ Texto cifrado la llave pblica es tambin un par de nmeros (N, e). Observe que N es comn a las llaves
(segmento de 64 bits) (segmento de 64 bits) pblica y privada.
El emisor utiliza el siguiente algoritmo para cifrar el mensaje:
Algoritmo de cifrado

Figura 16.3 DES


111
,,
.. Seguridad 16.2 Firma digital

Ventaja y desventaja La ventaja del algoritmo de llave pblica es el nmero de llaves.


Cada entidad puede usar el procedimiento anterior para crear un par de llaves, mantener la
(119,5)
llave privada (N, ) Y distribuir pblicamente la otra (N, e). Los individuos pueden incluso
publicar su llave pblica en su sitio web. Adems, observe que en este sistema, para que un
(119,77)
milln de usuarios se comuniquen, se necesitan slo dos millones de llaves, no medio billn
como en el caso del algoritmo de llave secreta. Sin embargo, la gran desventaja del mtodo

~
F-~ , 6-=F ,~ de llave pblica es la complejidad del algoritmo. Si usted quiere que el mtodo sea eficaz,
Texto plano "9'"'t>
Texto plano necesita nmeros grandes. Calcular el texto cifrado a partir del texto plano utilizando las lla-
ves largas toma mucho tiempo. sta es la razn principal de que el cifrado de llave pblica
Figura 16.5 RSA no sea recomendable para grandes cantidades de texto.

PRBVACIDAD Usted puede combinar a 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 nmero. e es el nrne~ algoritmo de llave pblica (distribucin fcil de las llaves). La llave pblica se utiliza para
ro que representa el texto cifrado. Los dos nmeros e y N son componentes de la llave p-
MEDIANTE LA
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 trmino fiad indica que el residuo se
.COMBINACIN
el siguiente:
enva como el texto cifrado.
1. El emisor elige una llave secreta. Esta llave secreta se llama llave de una sesin; slo
El receptor utiliza el siguiente algoritmo para descifrar el mensaje:
se utiliza una vez.
2. El emisor utiliza la llave pblica del receptor para cifrar la llave secreta (como texto)
c~ pdmodN y enva la llave secreta cifrada al receptor. Observe que dijimos que el mtodo de lla-
ve pblica es bueno para un mensaje corto. Una llave secreta es un mensaje corto.
3. El receptor usa la llave privada para descifrar la nave secreta.
4. El emisor utiliza la llave secreta para cifrar el mensaje actual.
En este algoritmo, P y e son los mismos que antes. Los dos nmeros d y N son componen~
tes de la llave privada. La figura 16.6 muestra la idea de la combinacin.
He aqu uu ejemplo. Imagine que la llave privada es el par (119. 77) Y la llave pblica es

,,
el par (119, 5), La emisora necesita enviar el caracter F. Este caracter puede representarse
como el nmero 6. (F es el sexto caracter en el alfabeto). El algoritmo de cifrado calcula Llave pblica de B
e = 65 mod 119 = 41. Este nmero se enva al receptor como texto cifrado. El receptor uti- ~----------------------------
liza el algoritmo de descifrado para calcular P ~ 41 77 mod 119 ~ 6 (el nmero original). El ,
Llave privada de B
nmero 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 podra un intruso
utilizar la prueba y error para encontrar d? La respuesta es que en este ejemplo trivial, un in-
truso fcilmente podra adivinar el valor de d. Pero un concepto importante del algoritmo
RSA es el uso de nmeros muy grandes para d y e. En la prctica, los nmeros son tan gran-
des (en la escala de decenas de dgitos) que el mtodo de ensayo y error para forzar el cdi-
go requiere mucho tiempo (meses, si no es que aos) incluso con las computadoras ms
rpidas disponibles hoy en da.
Figura 16.6 Combinacin
Eleccin de claves pblicas y privadas Una pregunta que viene a la mente es cmo ele-
gir los tres nmeros ~ d Y e para que el cifrado y el descifrado funcionen. Los inventores
del algoritmo RSA probaron matemticamente que utilizar el procedimiento siguiente ga-
rantiza que los algoritmos funcionarn. Aun cuando la prueba est ms all del mbito de 16.2 fiRMA DIGITAL
este libro, damos una idea general del procedimiento:
Sorprendentemente, los otros tres aspectos de la seguridad (integridad, autenticacin y no re-
11 Se eligen dos nmeros primos grandes, p y q. chazo) pueden lograrse utilizando un solo concepto. El concepto viene de la firma (autenti-
l1li Se calculaN ~ p X q. cacin) de un documento por su autor o creador. Cuando un autor firma un documento, ste
no puede cambiarse. Como una analoga, si usted tacha algo en un documento como un che~
l1li Se elige e (menor que N) tal que e y (p - l)(q - 1) sean relativaruente primos (tenien-
que, debe poner su firma o iniciales por el cambio que hizo. De esta manera, no puede ne-
do como factor slo el uno).
garlo posteriormente (no rechazo). Cuando usted enva un documento en forma electrnica,
111 Se elige d tal que (e X ) mod [(p - l)(q - 1)] sea igual a uno. puede adems firmarlo. A esto se le llama firma digital.
.. Seguridad 16.2 Firma digital 111
Hay dos maneras de hacer una fIrma digital. Usted puede firmar todo el documento o
puede firmar un compendio del documento.

FIRMA DE TODO El cifrado de llave pblica puede utilizarse para firmar todo el documento. Sin embargo, el Funcin hash I--~ ;~,;",~
EL DOCUMENTO uso de la llave pblica aqu es diferente de aquel para la llave privada. Aqu el emisor utili-
za su llave pblica o privada (no la llave privada del receptor) para cifrar el mensaje. El re-
ceptor, por otra parte, utiliza la llave pblica del emisor (no su llave privada) para descifrar
el mensaje. En otras palabras, la llave privada se utiliza para cifrado y la llave pblica para
figura 16.8 Firma del compendio
descifrado. Esto es posible debido a que los algoritmos de cifrado y descifrado usados ac-
tualmente, como RSA, son frmulas matemticas y sus estructuras son las mismas. La figu-
ra 16.7 muestra cmo se hace esto.
,
~--------------I

Compendio
-nnnado

Llave pblica de A Llave privada de A

1------- ~.---=

- - "'D~oxt~o,:! if,~'d~o- -t~ l.f~ :l j., ~f,1 ~


Llave privada de A
---...., Mensaje ms
compendio finnado

Texto P11
Finna Revisin Figura 16.9 Sitio del emisor
A B
El mtodo utiliza una tcnica llamada funcin hash para crear un compendio del mensa-
Figura 16.7 Firma de todo el documento je. No importa qu longitud tenga el mensaje, el compendio es de tamao fijo (por lo gene-
ral, 128 bits) como se aprecia en la figura 16.8.
Las dos funciones hash ms comunes son Message Digest 5 (:rvID5) Y Secure Hash Algo-
ritm 1 (SHA-l). El primero produce un compendio de 128 bits. El segundo produce un com-
Veamos cmo este tipo de cifrado puede proporcionar integridad, autenticacin 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 funcin hash tiene dos propiedades para garantizar su xito. Primero, el
cepta el mensaje y lo cambia total o parcialmente, el mensaje descifrado sera (con una alta
hashing debe ser en un sentido; el compendio slo puede crearse a partir del mensaje, pero
probabilidad) ilegible e incluso no parecera un mensaje. El mensaje tambin puede auten-
no viceversa. Segundo, el hashing debe ser uno a uno; debe ser muy difcil encontrar dos
ticarse debido a que si un intruso enva un mensaje (fingiendo que viene del verdadero au-
mensajes que crean el mismo compendio. La razn de esta condicin se ver en breve.
tor), utiliza su propia clave privada. El mensaje entonces no se descifra correctamente
Despus de que se ha creado el compendio, ste se cifra (fIrma) usando la llave priva~a
mediante la llave pblica del verdadero autor (es ilegible). El mtodo tambin proporciona
del emisor. El compendio cifrado se adjunta al mensaje original y se enva al receptor. La fl-
no rechazo. Aunque el emisor puede negar el envo 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 pblica. 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 funcin hash al mensaje para crear un segundo compendio. Tambin descifra el compen-
Observe dos puntos importantes. Primero, no puede proporcionar estos aspectos de la se-
dio recibido usando la llave pblica 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 pblica del emisor para
receptor.
leer el mensaje. Para aadir confidencialidad a esta tcnica, 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 pblica).
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 rplica del compendio. As que


FIRMA DEL Mencionamos anterionnente que una de las desventajas del cifrado de llave pblica 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 pblica para firmar pendio).
todo el documento (todo el documento debe cifrarse y descifrarse). 2. El compendio viene del verdadero emisor, as que el mensaje tambin viene del ver-
Para hacer el proceso ms eficiente, usted puede dejar que el emisor firme un compendio dadero emisor. Si un intruso hubiera iniciado el mensaje, el mensaje no habra 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 pblica del emisor). nico mensaje que puede crear ese compendio es el mensaje recibido.

...J.
l1li Seguridad 16.5 Prctica ..

,
Mensaje ms
PRACTICA

,
compendio finnado
DE REPASO 18. Una de las ventajas del cifrado de llave pblica es
DesdeA -----~I
Llave pblica de A Cules son las cuatro condiciones necesarias para la
seguridad de los datos transmitidos? a. el poco tiempo requerido para el cifrado/descifrado
b. que se requiere un nmero pequeo de llaves
Cmo se puede asegurar la privacidad de un mensaje?
,
-----------~
c. que se conserva la integridad
Cmo se puede autenticar al emisor de un mensaje? d. que todos conocen todas las llaves
Cmo puede usted conservar la integridad de un men-
t~\rl-----+ Compara +-0 saje?
19. El algoritmo RSA es la base de un mtodo de cifrado

Compendio Compendio D un ejemplo de no rechazo. a. llave pblica


Cules son las dos categoras principales de mtodos b. llave secreta
Figura 16.1 (1 Sitio del receptor de cifrado? c. llave privada
d. todas las anteriores
Cmo se relaciona el texto plano con el texto cifrado?
De nuevo observe que este mtodo de finna digital no proporciona privacidad; si la privac- 20. Para crear un compendio de un documento, usted pue-
Qu es DES?
dad se requiere, debe aadirse usando otro nivel de cifrado ya sea con cifrado de nave se- de utilizar _ __
creta, con cifrado de llave pblica o con ambos. Comente la llave secreta, la llave pblica y la llave pri- a. una firma digital
vada. Quin tiene posesin de cada llave? Cul es el
b. un nmero primo
tipo de cifrado que utiliza cada llave?
c. DES
Por qu el algoritmo RSA es tan poderoso? d. una funcin hash
, Cules son las desventajas del cifrado de llave secreta?
21. En el mtodo de fmua digital, el emisor utiliza su Have
16.3 TERMINOS CLAVE Cul es la desventaja del cifrado de llave pblica? _ _ _ para cifrar el mensaje.

Cul es la diferencia entre firmar todo el documento y a. pblica


autenticacin estndar de cifrado de datos (DES) pennutacin
cifrado fIrma digital segnridad finnar el compendio? b. privada
cifrado de llave pblica llave privada texto cifrado c. secreta
Cmo se relaciona la finna digital con los asuntos de
cifrado de Rivest-Shamir-Adleman llave pblica texto plano d. reducida
privacidad?
(RSA) llave secreta
descifrado 22. En el mtodo de fuma digital, el receptor utiliza la lla-
no rechazo
AS DE OPCiN MLTIPLE ve para descifrar el mensaje.
En el cifrado/descifrado, la llave ____ es conocida a. pblica
por todos. b. privada
a. secreta c. secreta
b. privada d. reducida
16.4 RESUMEN c. pblica
d. reducida 23. Qu representa 10 fiod 3?
111 La seguridad involucra los temas de privacidad, auten- l1li DES es un mtodo de cifrado de llave secreta popular. a. 1
_ _ _ se logra a travs del cifrado/descifrado.
ticacin, integridad y no rechazo. b. 3
l1li En el cifrado de llave pblica. la llave pblica es cono- a. autenticacin
a La privacidad se logra a travs del cifrado. El cifrado cida por todos, pero la llave privada es conocida slo b. integridad c. 3.33
traduce un mensaje (texto plano) ininteligible para el por el receptor. c. privacidad d. 10
personal no autorizado. d. no rechazo
JI Un mtodo de cifrado de llave pblica de uso comn se 24. En una firma digital que involucra un compendio, la
111 Un mtodo de cifrado/descifrado puede clasificarse ya basa en el algoritmo RSA En el mtodo de cifrado y descifrado de llave secreta, funcin hash se necesita _ _ _.
sea como un mtodo de llave secreta o un mtodo de _ _ _ posee(n) la llave secreta.
11 La autenticacin, la integridad y el no rechazo se logran a. slo en el receptor
llave pblica. a. slo el emisor
a travs de un mtodo llamado firma digita1. b. slo en el emisor
b. slo el receptor
111 En el cifrado de llave secreta, slo el emisor y el recep- 11 Usted puede usar la firma digital en todo el documento c. tanto el emisor como el receptor c. tanto en el emisor como en el receptor
tor conocen la llave. o en un compendio del documento. d. el pblico en general d. por el pblico en general

J
.. Seguridad

25~ El mtodo de firma digital no proporciona _ __ 30. Una operacin en un algoritmo de llave secreta es' la
a. privacidad operacin XOR (consulte el captulo 4). A un patrn d
b. autenticacin bits de tamao fijo (texto plano) se le aplica XOR con el
c. integridad
d. no rechazo
mismo tamao de patrn de bits (llave) para crear un
texto cifrado de tamao fijo. Cul es el algoritmo d~ ,
EJERCICIOS
26. Uno de los primeros mtodos de llave secreta se llamaba
sustitucin monoalfabtica (o la Cifra de Csar, atribuido
cifrado aqu? Cul es el algoritmo de descifrado? Cn-
sidere el hecho de que un algoritmo XOR es Un algorit-
mo reversible. eorl f
ela ,
utacln
31. Utilice la llave pblica (15. 3) para cifrar el nmero 7.
a Julio Csar). En este mtodo, cada caracter en texto Use la llave privada (15. 11) para descifrar el resultado
plano se mueve hacia delante n caracteres. Los caracteres del cifrado anterior. Haga un diagrama que muestre el
se envuelven de ser necesario. Por ejemplo, si n es 5, el flujo de informacin entre el emisor y el receptor.
caracter A se remplaza por F, el caracter B por G y as su-
cesivamente. Cul es la llave aqu? Cul es el algorit- 32. Pruebe que el papel de la llave pblica y el papel de la
mo de cifrado? Cul es el algoritmo de descifrado? llave privada pueden cambiar al repetir el ejercicio pre-
vio. pero cifre el nmero 7 con la llave privada (15. ll)
27. Usando la Cifra de Csar y 6 como la llave. cifre el
Y descfrelo con la llave pblica (15. 3). Haga un dia
mensaje Hola.
grama para mostrar el flujo de informacin entre el emi-
28. Comente la efectividad de la Cifra de Csar. Puede un sor y el receptor.
intruso adivinar la llave buscando slo en el texto cifra-
do? De ser as, cmo? 33. Comente por qu el cifrado/descifrado de llave secreta
no puede usarse para el no rechazo.
29. Una de las operaciones utilizadas en un algoritmo de arias preguntas inquietaron a los cientficos de la computacin al principio de la era de las
llave secreta es la permutacin de los bits. Un texto 34. Comente por qu el cifrado/descifrado de llave secreta
plano de 8 bits se permuta (revuelve). El bit 1 se con no puede usarse para la autenticacin.
vierte en el bit 3, el bit 2 se convierte en el bit 7 Y as Cules problemas pueden resolverse mediante una computadora? Cules no?
35. Aada un nivel de cifrado/descifrado de llave secreta a
por el estilo. Dibuje un diagrama que muestre el cifra- Cunto tiempo se lleva la solucin de un problema usando un lenguaje en particular?
la figura 16.7 para proporcionar privacidad.
do y el descifrado. Elija su propia revoltura. Cul es la Un lenguaje es superior a otro? Es decir, un programa de computadora escrito en un
llave aqu? Cul es el algoritmo de cifrado? Cul es el 36. Aada un nivel de cifrado/descifrado de llave pblica a lenguaje puede resolver un problema que otro no puede?
algoritmo de descifrado? la figura 16.7 para proporcionar privacidad.
Cul es el nmero Ilnimo de instrucciones necesarias para que un lenguaje resuelva un
problema?
Antes de ejecutar un programa, puede determinarse si el programa se parar (terntina-
r) o se ejecutar por siempre?
responder estas preguntas, pasamos a una disciplina llamada teora de la computacin.
Prime,ro. presentamos un lenguaje, llamado el Lenguaje simple, para mostrar que el nmero
de instrucciones requeridas para resolver cualquier problema que tiene solucin me-
una computadora es tres. En otras palabras, probamos que todos los lenguajes que tie-
estas tres instrucciones bsicas son iguales. Segundo, presentamos otra herramienta, un
de computadora llamado la mquina de Turing. Mostramos que un problema que
resolverse mediante nuestro Lenguaje simple, tambin puede resolverse por la mqui-
de Turing. Tercero, probamos que ningn programa puede decir si otro programa se detie-
o no. Esta prueba es en s misma una indicacin de que hay problemas que no pueden
re,solvelrse mediante una computadora. Finalmente, comentamos brevemente la complejidad
de los algoritmos.
111 Teora de la computacin
17.1 lenguaje simple

Segunda macro: X f--- n El cdigo siguiente muestra cmo utilizar las instrucciones
17.1 LENGUAJE SIMPLE en este lenguaje para asignar un entero positivo a la variable X. La notacin de macros para
esto es X +-- n. Primero limpie la variable X; luego incremente la X n veces.
Podemos definir un lenguaje con slo tres instrucciones: de incremento, de decremento y el
ciclo while (figura 17.1). En este lenguaje, usted utiliza slo el tipo de datos de enteros. No
hay necesidad de ningn otro tipo de datos porque usted puede simular otros tipos de datos,
con el tipo entero. El lenguaje utiliza slo unos cuantos smbolos como { y }.

Instrucciones
en lenguaje simple
Tercera macro: y ~ X Todo lenguaje de programacin tiene una instruccin que co~
pia el valor de una variable a otra sin perder el valor de la variable original. E.sta macro pue-
Incremento Decremento Ciclo de simularse en el Lenguaje simple utilizando la siguiente serie de instruCCIOnes. Observe
que el segundo ciclo utiliza una variable temporal (TEMP) para restaurar el valor de x.
Figura 17.1 Instrucciones en lenguaje simple

INSTRUCCiN La instruccin de incremento aade un 1 a la variable (por ejemplo, x). El formato es:
DE INCREMENTO

INSTRUCCiN La instruccin de decremento sustrae un 1 de la variable (por ejemplo, x). El formato es:
DE DECREMENTO x

decr
INSTRUCCiN La instruccin de ciclo repite una accin (o una serie de acciones) cuando el valor de la va- incr
riable (por ejemplo, X) no es cero. El formato es:
DE CICLO }

Cuarta macro: z ~ x + y Esta macro suma los valores de X y Y Y almacena el re-


sultado en Z. Esto se hace en dos pasos. Primero almacena el valor de X en z (tercera ma-
ero) y luego incrementa la z Y veces.

z.
De manera inductiva, podernos probar que este lenguaje de programacin simple con slo \'",TEMP
El.. PODER
tres instrucciones es tan poderoso (aunque no necesariamente tan eficiente) como cualquier while
DEI.. lENGUAJE
lenguaje sofisticado en uso hoy en da, por ejemplo C. Para hacerlo, mostramos cmO pode~ {
SIMPLE 'i\q!:' z
mas simular varias instrucciones encontradas en algunos lenguajes populares.
dec'f:, ',TEMP
}
Macros en el Llamamos a cada simulacin una macro y la utilizamos en otras simulaciones sin la nece-
Lenguaje simple sidad de repetir el cdigo. 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 multiplicacin es una suma repetida.
Primera macro: X +---- O El cdigo siguiente muestra cmo utilizar las instrucciones
z+-- O
en este lenguaje para asignar Oa la variable X. La notacin de macros para esto es X +--- O.
A veces se le llama limpiar una variable. TEMP Y
while TEMP
while X
z +-- y
decr:' X TEMP
El Teora de la computacin 17.2 Mquina de Turing El
Sexta macro: Z +-- X ** Y Esta macro eleva X a la potencia Y y almacena el resul~ ~nl~ ..",d", y salida Tal vez se haya planteado preguntas sobre las instrucciones de entrada/salida. Por ejemplo,
tado en z. Esto se hace utilizando la multiplicacin porque la exponenciacin es una multi- cmo puede leer datos en una variable y cmo puede imprimir el resultado de un progra-
plicacin repetida. ma? Para un lenguaje como ste, no hay necesidad de entrada o salida. Usted puede simular
la entrada, como read x, mediante una instruccin de asignacin (x ------ n). Tambin
puede simular la salida al suponer que la ltima variable utilizada en un programa aloja lo
que debera imprimirse. Recuerde que ste no es un lenguaje prctico, est diseado para
probar algunos teoremas en las ciencias de la computacin.

El Lenguaje simple es tan poderoso como cualquier otro lenguaje analizado en el captulo
9. Esto significa que si usted no puede resolver un problema en este lenguaje, no podr re-
solverlo en ningn otro lenguaje. Posterionnente, mostramos que el problema de paro (hal-
ting) no tiene solucin en ningn lenguaje porque no tiene solucin en el Lenguaje simple.
Sptima macro: comp (X) Esta macro complementa el valor de x. Si el valor de X es O
(falso), lo cambia a 1 (verdadero). Si no es O (verdadero), lo cambia a O (falso). El primer
ciclo cambia el valor de x a O si ste no es O (positivo). Si usted introduce este ciclo (x no
es O), entonces el valor de TEMP se establece en 0, lo cual significa que usted nunca intro- 17.2 MQUINA DE TURING
duce el segundo ciclo. Si usted nunca introduce el primer ciclo (x es O), entonces definitiva-
mente introduce el segundo ciclo y cambia el valor de x a 1 (el ciclo se itera slo una vez La mquina 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 seccin, presentamos una
versin muy simplificada de esta mquina para mostrar cmo funciona. Luego mostramos
cmo implementa las instrucciones en el Lenguaje simple.

COMPONENTES DE Una mquina Turing est formada por tres componentes: una cinta, un controlador y una ca-
MQUINA beza de lectura/escritura (figura 17.2).
TURING
Aun cuando las computadoras modernas utilizan un dispositivo de acceso aleatorio con capa-
cidad finita, la memoria de la mquina de Turing es infinita. La cinta, en cualquier momen-
to mantiene una secuencia de caracteres del conjunto de caracteres aceptado por la mquina.
Para nuestro propsito, suponemos que la mquina puede aceptar slo unos cuantos smbo-
los: el signo de nmero (#), el ampersand (&), el dgito 1 y el espacio en blanco. La figura
Octava macro: if X then Al else A2 Esta macro simula la instruccin de toma 17.3 muestra un ejemplo de los datos en una cinta en esta mquina. El # define el principio
de decisiones (if-then-else) de los lenguajes modernos. Si el valor de X no es O, Al (una ac- del nmero, el nmero almacenado en la cinta se representa mediante 11111 y el & define el
cin o una serie de acciones) se ejecuta en el primer ciclo. Sin embargo, el ciclo se ejecuta s- final del nmero. El resto de la cinta contiene caracteres en blanco.
lo una vez porque, despus de la primera iteracin, el valor de TEMP se vuelve O y usted sale
del ciclo. Si el valor de X es O, el primer ciclo se omite. El valor de TEMP, el cual es lo mismo
que el valor de x, se complementa (se vuelve no O) y el segundo ciclo se ejecuta slo una vez.

Cabeza de lectura/escritura

TM,P +--'- X
C0111p (TEMP)
;'Whi 1 e,', +,EMP Cinta
t<"
A2 Figura 17.2 Mquina de Turing
TEMP"~

Otras macros Tal vez haya adivinado que necesita ms macros para hacer el Lenguaj
simple compatible con los lenguajes contemporneos. La creacin de otras macros es posi-
#'1 1 1 1

ble, aunque no trivial. Hemos dejado algunas macros desafiantes como ejercicios. Figura 17.3 Cinta
p

lB Teora de la computacin 17.2 Mquina de Turing ..

Tambin suponemos que la cinta procesa slo los datos enteros positivos representados .
Estal\.oacl;u;l ;.; k. Le~ .. ); Escribe S,'m:teve ~~onuevo
en la aritmtica unaria. En esta aritmtica, un entero positivo se fonna slo 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 O.
A #0& & <-- e
La cabeza de lectura/escritura en cualquier momento seala a un smbolo en la cinta. lla-
B 1 1 <-- e
Cabeza de B no 1 lo mismo que lee A
lectura/escritura mamos a este smbolo el smbolo actua1. La cabeza de lectura/escritura lee y escribe un sm-
bolo a la vez desde la cinta. Despus de leer y escribir se mueve a la izquierda, a la derecha
e 1 espacio en blanco -----> B

o permanece en su lugar. La lectura, la escritura y el desplazamiento, todos se realizan bajo


e no 1 1 -----> D
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 terica de la unidad central de procesamiento (CPU) en las
Controlador
computadoras modernas. Es un autmata de estado finito, una mquina que tiene un nme- Tabla 17.1 Tabla de transicin
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, Veamos si podemos escribir programas (crear tablas de transicin) que implementen las ins-
La figura 17.A exhibe el diagrama de transicin para un controlador que tiene un aut-
SIMULACiN DIE
trucciones del Lenguaje simple.
mata de estado finito, En esta figura el autmata tiene cuatro estados (A, B, C, D). El dia- LENGUAJE SIMPLE
grama muestra el cambio de estado como una funcin de la lectura de caracteres. Lo
siguiente describe la figura: Implementemos la instruccin (incr x) utilizando la mquina de Turing. La figura 17.5
Instruccin
muestra el diagrama de transicin para esta instruccin. Interpretamos la X como los datos
l!IlI Si el controlador est en el estado A y lee 1 o un espacio en blanco, pasa al estado B. de incremento
Si lee # o &, pasa al estado C. que ya estn 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-
111 Si el controlador est en el estado B y lee 1, pasa al estado C. Si lee cualquier otro ca-
tado de error).
rcter pasa al estado A.
11 Si el controlador est en el estado C y lee 1, pasa al estado B. Si lee cualquier otro ca-
rcter pasa al estado D.
11 Si el controlador est en el estado D y lee cualquier carcter excepto un espacio en blan-
co, pasa al estado B. Pero si lee un espacio en blanco, permanece en el estado D.

x
1
1 o espacio en blanco
)

no 1
#0&

Figura 17.5 Diagrama de transicin para incr X

La tabla 17.2 muestra la tabla de transicin para esta instruccin.


Figura 17.4 Estado de transicin
Estado ctual, h L~e Escribe Se mueve Estado nuev~~
Para cada lectura de un smbolo, el controlador escribe un carcter, define la siguiente po-
StartIncr # # ~ Forward
sicin de la cabeza de lectura/escritura y cambia el estado. En el diagrama de transicin,
Forward 1 1 ~ Forward
mostramos slo uno de estos tres; una tabla de transicin puede mostrar los tres, La tabla de
Forward & 1 ~ Added
transicin, como se puede ver en la tabla 17.1, tiene cinco columnas: el estado actual, el ca-
Added cualquiera & ~ Backward
racter ledo, el caracter escrito, la siguiente posicin de la cabeza de lectura/escritura Y el
Backwanl 00# 10 mismo
nuevo estado. que lee ~ Backward
Para cada problema, debemos definir la tabla correspondiente. Esto es similar a un pro-
Backwar # # a ningn lugar StopIncr
grama escrito en un lenguaje de computadora. Un programa es una implementacin moder-
na de la tabla de transicin. Tabla 17.2 Tabla de transicin para la instruccin incr x
El Teora de la computacin
17.2 Mquina de Turing ..

Forward I
StartLoop
# & 121 1 1& # &
No1
#11&;111 Check
Data X
Added
1 Added

l l
kw 1 1& f# 11 11 1& #

& & &

& &

Figura 17.6 Pasos en la instruccin incr x

Figura 17.8 Diagrama de transicin para la instruccin loop

x Instruccin loop Para simular el ciclo, suponga que X se almacena despus del smbolo #. La & marca el fi-
nal de x y el principio de los datos que se procesan en el cuerpo del ciclo (ste puede ser
ms que un solo elemento de datos). La figura 17.8 muestra el diagrama de transicin.
La tabla 17.4 muestra la tabla de transicin.

No#
Esta,do a~!lliU,; /.Lee .. Escrip.e, ..... Se mueve
---+
Estado nuevo
StartLoop # # Check
Check No 1 Lo mismo que se lee <-- StartLoop
Check 1 1 ---+ Fonvard
Figura 17.7 Diagrama de transicin para decr X Fonvard No& Lo mismo que se lee ----> Fonvard
Forward & & Ninguno StartProcess
La figura 17.6 muestra cmo el estado del controlador cambia y cmo se mueve la .. . .. . .. . .. . ...
za de lectura/escritura. .. . .. . . .. .. . . ..
EndProcess Cualquiera Lo mismo que se lee <-- Backward
Instruccin La instruccin de decremento (decr x) es similar a la instruccin de incremento. La Backward No# Lo mismo que se lee <-- Backward
de decremento gura 17.7 muestra el diagrama de transicin. Backward # # Ninguno Check
La tabla 17.3 muestra la tabla de transicin para esta instruccin. Tabla 17.4 Tabla de transicin para la instruccin loop

::, Estad~: ctnal,:- Lee Escri!:>~ . S-'mueve EstadQ- q4evo La mquina de Turing es tan poderosa como nuestro Lenguaje simple. Cualquier problema
CONCLUSiN
StartDecr # # ~ Forward que puede resolverse mediante el Lenguaje simple tambin puede resolverse por medio de
Forward 1 1 ~ Forward la mquina de Turing. Pero qu hay del otro lado de la moneda? Hay un problema que
Forward & blanco <-- Delete pueda resolverse mediante la mquina de Turing que no se pueda resolver mediante el Len-
Delete 1 & <-- Backward guaje simple? Aunque no podemos probarlo, durante las dcadas posteriores, los cientficos
Backward no# lo mismo de la computacin 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 ningn lugar StopDecr como el Lenguaje simple y la mquina de Turing son equivalentes. Todos los problemas que
pueden resolverse mediante el Lenguaje simple tambin pueden resolverse por medio de la
Tabla 17.3 Tabla de transicin para la instruccin decr X
mquina de Turing y viceversa.
El Teora de la computacin 17.4 Problema de paro El
Para mostrar que el sistema de numeracin es nico, utilice los pasos siguientes para inter-
17.3 NMEROS DE GODEL pretar un nmero de G6del:

1. Convierta el nmero a hexadecima1.


En la ciencia de la computacin terica, un nmero sin asignar se asigna a cada programa
2. Interprete cada dgito hexadecimal como un smbolo utilizando la tabla 17.5 (ignore
que puede escribirse en un lenguaje especfico. Por lo general, a esto se le llama el nmero
de Godel (en honor a Kurt GOdel). un O).
Esta asignacin tiene muchas ventajas. Primero, los programas pueden utilizarse como Observe que mientras cualquier programa escrito en Lenguaje simple puede representarse
un solo elemento de datos que sirva como entrada a otro programa. Segundo, se puede ha- mediante un nmero, no todos los nmeros pueden interpretarse como un programa vlido.
cer referencia a los programas simplemente mediante sus representaciones de enteros. Ter- Despus de la conversin, si los smbolos no siguen la sintaxis del lenguaje, el nmero no
cero, la numeracin puede usarse para probar que algunos problemas no pueden resolverse es un programa vlido.
mediante una computadora al mostrar que el nmero total de problemas en el mundo es mu-
cho ms grande que el nmero total de programas que puedan escribirse. EJEMPLO 2
Se han concebido distintos mtodos para numerar los programas. Utilizamos una trans-
Interprete 3058 como un programa.
fonnacin muy simple para numerar programas escritos en nuestro Lenguaje simple. El
Lenguaje simple usa slo 15 smbolos (tabla 17.5). Observe que en este lenguaje usted uti- SOLUCIN
liza slo x, Xl, X2,. . " X9 como variables. Para codificar estas variables, se maneja Xn
El nmero se cambia a hexadecimal y se remplaza cada dgito con el smbolo correspon-
como dos smbolos X y n (x3 es X y 3). Si usted tiene una macro con otras variables, stas
necesitan cambiarse a Xn. diente:

3058
B F
Smbolo Cdigo hexadecimal Smbolo Cdigo hexadecimal
decr
1 9 9
2 2 incr A
Observe que en nuestro Lenguaje simple cada programa incluye entrada y salida. Esto
3 3 decr B significa que la combinacin de un programa y sus entradas define el nmero de G6de1.
4 4 while e l1li
5 5 { D
6 6 ) E
7 7 X F
8 8 17.4 PROBLEMA DE PARO
Tabla 17.5 Cdigo para smbolos utilizados en el lenguaje simple
Casi todo programa escrito en un lenguaje de programacin implica la repeticin (ciclos o
funciones recursivas). Un constructor de repeticin puede no terminar (pararse o detenerse);
es decir, un programa puede ejecutarse por siempre si ste tiene un ciclo infinito. Por ejem-
REPRESENTACiN Utilizando la tabla, usted puede representar cualquier programa escrito en nuestro Lengua- plo, el programa siguiente en Lenguaje simple nunca termina.
DE UN PROGRAMA je simple mediante un entero positivo nico. Siga estos pasos:

1. Remplace cada smbolo con el cdigo hexadecimal que le corresponde en la tabla.


2. Interprete el nmero hexadecimal resultante como un entero sin asignar.

EJEMPLOl
Una pregunta de programacin clsica es:
Cul es el nmero de G6del para el programa incr x?

SOLUCIN Puede escribirse un programa que evale si un programa, representado por su


Se remplaza cada smbolo mediante su cdigo hexadecimal: nmero de Godel, terminar o no?

A La existencia de este programa ahorrara a los programadores mucho tiempo. La ejecucin


175 (en.. decimal} 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 decepcin para los progra-
De modo que este programa puede representarse mediante el nmero 175. 111 madores).
..
El Teora de la computacin 17.5 Problemas con solucin y sin solucin El
El PROBLEMA En vez de decir que el programa evaluador no existe y nunca podr existir, el cientfico de
ProgramaP
DE PARO NO la computacin dice: "El problema de paro no tiene solucin".
(nmero de Godel)
TIENE SOLUCiN
Prueba Demos una prueba informal sobre la inexistencia de este programa evaluador. Nuestro m~ Extrao Si P termina, Extrao no termina.
todo a menudo se utiliza en las matemticas: Suponga que ste existe y luego muestre que Si P no termina, Extrao termina.
su existencia crea una contradiccin. Por consiguiente, no puede existir. En este mtodo usa-
rnos tres pasos para mostrar la prueba.
x (1 o O)
PASO 1 En este paso, suponemos que existe un programa, llamado Evaluar. ste puede
while X
aceptar cualquier programa como P, representado por su nmero de G6del, como entrada y {
produce una salida ya sea de 1 o O. Si P termina, la salida de Evaluar es 1; si P no tennina, }
la salida de Evaluar es O (figura 17.9).

Figura 17.10 Paso 2 en la prueba


ProgramaP
(nmero de GOde!)

t Programa Extrao

IEvaluador Si P tennina, X es 1.
Si P no termina, X es O.
(nmero de Godel)
t
r
X
Extrao
Si Extrao tenruna, Extrao no
figura 17.9 Paso 1 en prueba tennina.

X (1 o O) Si Extrao no termina, Extrao


PASO 2 En este paso, creamos otro programa llamado Extrao que se compone de dos while X tennina.
partes: una copia de Evaluar al principio y un ciclo vaco (ciclo con un cuerpo vaco) al fi~
naL El ciclo utiliza X como la variable de prueba, la cual en realidad es la salida del progra-
ma Evaluar. Este programa tambin utiliza P como la entrada. Llamamos a este programa
Extrao por la siguiente razn. Si P termina, la primera parte de Extrao, la cual es una co-
pia de Evaluar, produce una salida de 1. Este 1 es la entrada del ciclo. El ciclo no termina Figura 17.11 Paso 3 en prueba
(ciclo infinito) y, en consecuencia, Extrao no tennina. Si P no termina, la primera parte de
Extrao, la cual es una copia de Evaluar, produce una salida de O. Este O es la entrada del Esto prueba que el programa Evaluar no puede existir y que debemos dejar de buscarlo. El
ciclo; el ciclo tennina (ciclo finito) y en consecuencia Extrao tennina. problema de paro no tiene solucin.
En otras palabras, tenemos dos situaciones extraas:

, S~::f tefmjna;' ~xtraiiQ no termina.


/ si' P llP' t~nni*\~fEXitaoJ,ermina. 17.5 PROBLEMAS CON SOLUCIN Y SIN SOLUCiN
La figura 17.11 muestra el paso dos en la prueba. Ahora que hemos demostrado que al menos un problema no tiene solucin mediante una
computadora, tratemos este tema importante un poco ms. En las ciencias de la computacin
PASO 3 Ahora, al haber hecho el programa Extrao, probamos este programa consigo podemos decir que, en general, los problemas se dividen en dos categoras: problemas con
mismo (su nmero de Godel) como entrada. Esto es legtimo porque no ponemos ninguna solucin y problemas sin solucin. Los problemas con solucin se dividen a su vez en dos
restriccin a P. La figura 17.10 muestra la situacin. categoras: problemas polinomiales y no polinomiales (figura 17.12).

Contradiccin Ve alguna contradiccin? Existe un nmero infinito de problemas que no pueden resolverse mediante una computado-
PROBLEMAS
ra, uno de ellos es el problema de paro. Un mtodo para probar que un problema no tiene
Si suponemos que,'Evaluar, existe, tenemos las siguientes contnidicciones: SIN SOLUCiN solucin es mostrar que si ese problema tiene solucin, el problema de paro tambin tiene so-
Extrao no termina si Extrao termina. lucin. En otras palabras, probar que la capacidad de solucin de un problema da como re-
Extrao termina si Extrao no termina. sultado la capacidad de solucin del problema de paro.
..
El Teora de la computacin 17.7 Resumen

Problemas polinomiales Si un programa tiene una complejidad de O (log n), O (n), O


(n 2 ), O (n'), O (n 4 ) o O (nk ) (siendo k una constante) se le llama polinomial. Con la veloci-
Problemas dad de las computadoras actuales, usted puede obtener soluciones para los problemas poli-
nomiales con un nmero razonable de entradas (por ejemplo, de 1 000 a un milln).

Con solucin Sin solucin Problemas no polinomiales Si un programa tiene una complejidad mayor que un polino-
mial-por ejemplo, O (Ion) O O (n!)- ste puede resolverse si el nmero de entradas es muy
pequeo (menor que 100). Si el nmero de entradas es grande, uno podra sentarse enfrente
Polinomiales No polinomiales de la computadora durante meses para ver el resultado de un problema no polinomial. Pero
quin sabe? Al ritmo con el que la velocidad de las computadoras est aumentando, usted tal
vez sea capaz de obtener un resultado para este tipo de problema en menos tiempo.
Figura 17.12 Taxonoma de los problemas

PROBLEMAS Existen muchos problemas que pueden resolverse mediante una computadora. Con frecuen~
CON SOLUCiN cia, queremos saber cunto tiempo le toma a la computadora resolver ese problema. En otras
palabras, qu tan complejo es el programa? 17.6 TRMINOS CLAVE
La complejidad del programa puede medirse de varias maneras distintas, tales como el
tiempo de ejecucin, la memoria requerida y as por el estilo. Un mtodo es el tiempo de eje- cinta instruccin loop problema no polinomial
cucin: cunto le toma al programa ejecutarse? controlador macro problema polinomial
dgito hexadecimal mquina de Turing problema sin solucin
instruccin de decremento nmero de Gadel
instruccin de incremento problema con solucin
Complejidad Una manera de medir la complejidad de un problema con solucin es encontrar el nmero
de los problemas 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 solucin
grama. Esta medida de la complejidad puede depender del nmero de entradas. Por ejemplo,
si un programa est procesando una lista (ordenando una lista), la complejidad depende del
nmero de elementos en la lista.
17.7 RESUMEN
Notacin de orden O Con la velocidad de las computadoras actuales, no estamos tan
11 La teora de la computacin puede ayudar a los cientfi- 11 El controlador en una mquina de Turing controla la ca-
preocupados con los nmeros exactos como con los rdenes de magnitud generales. Por
cos de la computacin a responder preguntas intrnsecas. beza de lectura/escritura. Es la contraparte terica del
ejemplo, si el anlisis 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 rpidos que usted no puede
11 Tres instrucciones (incremento, decremento y ciclo) son
ver la diferencia. Por otra parte, si los nmeros son 15 contra 1 500, usted debe preocuparse. 111 Un diagrama de transicin es una representacin pict-
necesarias para simular todos los otros tipos de instruc-
Esta simplificacin de eficiencia se conoce como notacin de orden O. Damos la idea de rica de los estados del controlador.
ciones en un lenguaje de computadora. Por ejemplo, us-
esta notacin sin ahondar en su definicin y clculo formales. En esta notacin, el nmero de
ted puede limpiar una variable, asignar un valor a una 111 Una tabla de transicin es una representacin de una
operaciones (o una serie de operaciones relacionadas) se da como una funcin del nmero de
variable, copiar el valor de una variable a otra y sumar matriz de informacin respecto a los estados del con-
entradas. La notacin O (n) significa que un programa realiza n operaciones para n entradas;
los valores de dos variables usando las tres instrucciones trolador.
la notacin O (n 2) significa que un programa realiza n2 operaciones para n entradas.
bsicas.
11 Usted puede asignar un nmero de Gadel a cada progra-
EJEMPLO 3 ma en un lenguaje de computadora especfico.
11 La mquina de Turing puede implementar instrucciones
Imagine que ha escrito tres programas distintos para resolver el mismo problema. El pri- en nuestro Lenguaje simple. 111 No hay un programa que pueda predecir si un programa
mero tiene una complejidad de O (logo n), el segundo O (n) y el tercero O (n2 ). Supo- terminar o no.
niendo una entrada de un milln, cunto tiempo se llevara ejecutar cada uno de estoS 11 Una mquina de Turing tiene una cinta, un controlador
programas en una computadora que realiza una instruccin en un milisegundo (un milln y una cabeza de lectura/escritura. liI La notacin de orden O se utiliza para denotar la eficien-
por segundo)? cia de un programa.
11 La cinta en una mquina de Turing mantiene una secuen- 11 Los problemas son ya sea con solucin o sin solucin.
SOLUCIN cia de caracteres de un conjunto de caracteres aceptable. Los problemas con solucin pueden clasificarse como
A continuacin se muestra el anlisis: polinomiales y no polinomiales.
11 La cabeza de lectura/escritura en una mquina de Turing
Primer programa: n=l 000 000 O(logo n) ---7 6 Tiempo ---7 6 flS en cualquier momento seala a un caracter. Despus de 11 Los problemas no polinomiales por lo general toman
Segundo programa: n=l 000 000 O{n) ---7 1 000 000 Tiempo -7 1 sec leer y escribir, la cabeza puede moverse a la izquierda, a ms tiempo en resolverse que los problemas polinomia-
Tercer programa: n=l 000 000 O{n 2 ) ---7 lo-e?' Tiempo ---7 277 hrs 111 la derecha o permanecer inmvi1. les si el nmero de entradas es muy grande.
.. Teora de la computacin 17.8 Prctica 111
24. Despus de leer un smbolo, la cabeza de lectura/escri- 32. Usted utiliza ____ para denotar la complejidad de
17.8 PRCTICA tura _ __ un programa.
a. se mueve a la izquierda a. el nmero de Turing
PREGUNTAS DE REPASO 16. La instruccin de ____ repite una o ms acciones. b. se mueve a la derecha b. la notacin de orden O
a. incremento c. permanece en su sitio c. factoriales
1. Por qu se necesita la teora de la computacin?
b. decremento d. cualquiera de las opciones anteriores d. el Lenguaje simple
2. Mencione y proporcione las funciones de las tres ins- c. ciclo
25. El (la) ____ es la contraparte torica del CPU. 33. Si la complejidad de O (n]) es 8, entonces el nmero de
trucciones bsicas que son la base de otras instruccio- d. complemento
entradas es _ _ __
nes en un lenguaje de computadora. a. disco
17. La instruccin de ____ resta un 1 de la variable. a. uno
3. Muestre cmo la asignacin del valor de una variable a a. incremento b. cinta
b. dos
otra (con la variable original conservando su valor) uti- b. decremento c. controlador c. tres
liza las tres instrucciones bsicas. c. ciclo d. cabeza de lectura/escritura d. cuatro
d. complemento 26. El controlador tiene ____ estados.
4. Cul es la relacin entre la mquina de Turing y nues- 34. Si la complejidad de O (n!) es 24, entonces el nmero
tro Lenguaje simple? 18. Para limpiar una variable utilice las instrucciones de a. tres de entradas es ____
b. cuatro ao uno
5. Cules son los componentes de la mquina de Turing a. incremento
y cul es la funcin de cada componente? c. un nmero finito de b. dos
b. decremento c. tres
d. un nmero infinito de
6. Cul es una forma de delimitar los datos en una cinta c. ciclo d. cuatro
de mquina de Turing? d. byc 27. Un(a) ____ es una representacin grfica de los es-
tados y sus relaciones entre s. 35. La complejidad de O (lag*lO n) y la computadora
7. Cuando una cabeza de lectura/escritura termina la lec- 19. Para asignar un nmero a una variable, utilice las ins-
a. diagrama de transicin ejecuta un milln de instrucciones por segundo. Cun-
tura y escritura de un smbolo, cules son sus siguien- trucciones de _ _ __
b. diagrama de flujo to tiempo se toma la ejecucin del programa si el nme-
tes opciones? a. incremento
ro de entradas es !O OOO?
b. decremento c. tabla de transicin
8. Cmo se relaciona un diagrama de transicin con un a. un microsegundo
c. ciclo d. mquina de Turing
controlador de mquina de Turing? b. dos microsegundos
d. todas las anteriores
28. Un(a) muestra, entre otras cosas, el movi- Co tres microsegundos
9. Cmo se relaciona un diagrama de transicin con una 20. Para copiar el valor de una variable a otra variable y que miento de la cabeza de lectura/escritura, el caracter le- d. cuatro microsegundos
tabla de transicin? Tienen la misma informacin? la primera variable mantenga su valor, utilice las ins- do y el caracter escrito.
Cul tiene ms infonnacin? trucciones de _ _ __ EJERCICIOS
a. diagrama de transicin
10. Qu es un nmero de Gdel? a. incremento b. diagrama de flujo 36. Simule la macro siguiente utilizando las instrucciones o
b. decremento
c. tabla de transicin macros previamente definidas en el Lenguaje Simple:
11. Cmo utilizara un nmero de Godel para probar que c. ciclo
d. mquina de Turing z+---x-y
el problema de paro no tiene solucin? d. todas las anteriores
29. El nmero de Godel es un nmero ____ asignado 37. Simule la macro siguiente utilizando las instrucciones o
12. Cmo 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 especfico. macros previamente definidas en el Lenguaje simple:
sitivo a O se llama macro ____
13. Compare y contraste la complejidad de un problema ao binario if X < Y then Al el se A2
polinomial con solucin y un problema no polinomial a. decr X
b. Y X b. entero 38. Simule la macro siguiente utilizando las instrucciones o
con solucin.
c. comp (X) c. con signo macros previamente definidas en el Lenguaje simple:
d. switch (X) d. sin signo if x > y then Al else A2
PREGUNTAS DE OPCiN MLTIPLE 22. Una mquina de Turing tiene los siguientes componen- 30. El nmero de Godel para decr X en decimal es 39. Simule la macro siguiente uti1izando la") instrucciones o
14. Un lenguaje de computadora simple puede disearse tes: _ _ __ macros previamente defmidas en el Lenguaje simple:
a. 367
con slo ____ 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
c. tres d. 191
d. disco, memoria y controlador
d. cuatro 31. El nmero de Gadel para decr X en hexadecimal es
23. En una mquina de Turing, la (el) ____ mantiene 40. Simule la siguiente macro usando las instrucciones o
15. La instruccin de ____ suma un 1 a la variable. una secuencia de caracteres. macros previamente definidas en el Lenguaje simple:
a. incremento a. disco a. B C while x < y
b. decremento b. cinta b. CB
c. ciclo c. controlador c. B F acciones
d. complemento d. cabeza de lectura/escritura d. AF
Teora de la computacin

4L Simule la macro siguiente utilizando las instrucciones o 45. Muestre el diagrama de transicin para la mquina de
macros previamente definidas en el Lenguaje simple: Turing que simula la macro Z +-- x + Y.
while x == y
46. Muestre el diagrama de transicin para la mquina de
Turing que simula la macro Z +-- X * Y.
acciones
47. Muestre el diagrama de transicin para la mquina de
Turing que simula la macro comp (X).
42. Muestre el diagrama de transicin para la mquina de
48. Muestre el diagrama de transicin para la mquina de
Turing que simula X +-- O.

s
Turing que simula la macro if x then Al e 1 s e A2.
43. Muestre el diagrama de transicin -para la mquina de 49. Cul es el nmero de Gdel para la macro Xl +--- 07
Turing que simula X +-- D.
500 Cul es el nmero de G6del para la macro X2 +--- n?
44. Muestre el diagrama de transicin para la mquina de 51. Cul es el nmero de G6del para la macro
Turing que simula y +-- x. x3 ~ Xl + X2?

cdigo norteamericano de estndares para intercambio de informacin (ASCII) es un


cdigo de siete bits que representa 128 caracteres como se muestra en la tabla 1.
0,

111 Cdigo ASCII Cdigo ASCII ..

Decimal Hexadecimal Binario Caracter Descripcin Decimal Hexadecimal Binario Caracter Descripcin
O 00 0000000 NUL Nulo 48 30 0110000 O
I 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 transmisin 52 34 0110100 4
5 05 0000101 ENQ Indagacin 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 OA 0001010 LF Avanee de lnea 58 3A 0111010 Dos puntos
11 OB 0001011 VT Tabulador vertical 59 3B 0111011 ; Punto y coma
12 OC 0001100 FF Salto de pgina 60 3C 0111100 < Signo menor que
13 OD 0001101 CR Retorno de carro 61 3D 0111101 = Signo igual
14 OE 0001110 SO Desplazamiento hacia afuera 62 3E 0111110 > Signo mayor que
15 OF 0001111 SI Desplazamiento hacia dentro 63 3F 0111111 ? Signo de interrogacin
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 sncrona 70 46 1000110 F
23 17 0010111 ETB Fin del bloque de transmisin 71 47 1000111 G
24 18 0011000 CAN Cancelar 72 48 1001000 H
25 19 0011001 EM Fin del medio 73 49 1001001 1
26 lA 0011010 SUB Sustituto 74 4A 1001010 J
27 lB 0011011 ESC Escape 75 4B 1001011 K
28 lC 0011100 FS Separador de archivos 76 4C 1001100 L
29 ID 0011101 GS Separador de grupos 77 4D 1001101 M
30 lE 0011110 RS Separador de registros 78 4E 1001110 N
31 lF 0011111 US Separador de unidades 79 4F 1001111 O
32 20 0100000 SP Espacio 80 50 1010000 P
33 21 0100001 ! Signo de exclamacin 81 51 1010001 Q
34 22 0100010 " Comillas dobles 82 52 1010010 R
35 23 0100011 # Signo de nmeros 83 53 1010011 S
36 24 0100100 $ 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 Apstrofe 87 57 1010111 W
40 28 0101000 ( Parntesis abierto 88 58 1011000 X
41 29 0101001 ) Parntesis cerrado 89 59 1011001 Y
42 2A 0101010 * Asterisco 90 5A 1011010 Z
43 2B 0101011 + Signo ms 91 5B 1011011 [ Corchete de apertura
44 2C 0101100 Coma 92 5C 1011100 \ Diagonal invertida
45 2D 0101101 - Guin 93 5D 1011101 1 Corchete de cierre
46 2E 0101110 Punto 94 5E 1011110 - Circunflejo
47 2F 0101111 / Diagonal 95 5F 1011111 Guin bajo

Tabla A.l Tabla ASCII Tabla A.l Tabla ASCII (continuacin)


.. Cdigo ASCII

Decimal Hexadecimal Binario Caracter Descripcin


,
96 60 0110000 Acento grave
97 61 0110001 a
98 62 0110010 b
99 63 0110011 c
100 64 0110100 d
101 65 0110101 e
102 66 0110110 f
103 67 0110111 g
104 68 0111000 h
105 69 0111001 1

106 6A 0111010 j
107 6B 0111011 k
108 6C 0111100 1
109 6D 0111101 m
110 6E 0111110 n
111 6F 0111111 o
112 70 1000000 P
113 71 1000001 q
114 72 1000010 r
115 73 1000011 s
116 74 1000100 ! UlnlC'ode es un cdigo de 16 bits que puede representar hasta 65 536 smbolos. Utilizando
117 75 1000101 u notacin hexadecimal, el cdigo puede variar de 0000 a FFFF. Observe que se requieren
118 76 1000110 v "decer,as, si no es que cientos, de pginas para mostrar todos los smbolos individuales (ca-
119 77 1000111 w ta,:!er,es). Aqu mostramos slo algunos intervalos.
120 78 1001000 x
121 79 1001001 Y
122 7A 1001010 z
123 7B 1001011 { Llave de apertura
124 7C 1001100 I Barra
125 7D 1001101 } Llave de cierre
126 7E 1001110 - Tilde
127 7F 1001111 DEL Eliminar
Tabla A.l Tabla ASCII (continuacin)

i,
I
I
i'j
I.J
El Unicode Unicode ..

ALFABETOS Los cdigos de 0000 a lFFF definen diferentes alfabetos. Algunos de ellos se muestran en SMBOLOS Los cdigos 2000 a 2FFF definen los smbolos y las marcas de puntuacin. 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 cdigos 0000 a 007F (Latn bsico) son exactamente los mismos que se definie~ DE PUNTUACiN
ron para el cdigo ASCII.
2. Los cdigos 0080 a OOFF (complemento de Latn 1) son los mismos que los caracteres Intervalo Descripcin
Latn 1 definidos por la ISO. El sistema operativo Windows utiliza la variacin de estos 2000 2067 Puntuacin general
smbolos. Los caracteres de Latn bsico se complementan con caracteres de acento, 2070-209F Subndices y superndices
diresis, el signo de interrogacin de cierre y as por el estilo. 20AO 20CF Smbolos de moneda
20D0-20FF Combinacin de marcas para smbolos
Intervalo 2100-214F Smbolos tipo carta
Descripcin
2150-218F Formatos de nmeros
0000-007F Latn bsico
2190-21FF Flechas
0080-00FF Complemento de Latn 1
2200-22FF Operadores matemticos
0100-017F Latn extendido A
2300-23FF Miscelnea tcnica
0180-024F Latn extendido B
2400-243F Imgenes de control
0250-02AF Extensin del alfabeto fontico internacional (IPA)
2440-245F Reconocimiento ptico de caracteres
02BO-02FF Espaciado de letras modificadoras
2460 24FF Alfanumrico cerrado
0300-036F Combinacin de marcas diacrticas
2500-257F Bordes de cuadros
0370-03FF Griego
2580-259F Elementos de bloque
0400-04FF Cirlico
25AO 25FF Formas geomtricas
0530-058F Armenio
2600-26FF Smbolos miscelneos
0590-05FF Hebreo
2700-27BF Smbolos decorativos
0600-06FF rabe
2800-28FF Patrones Braile
0700-074F Sirio
2E80-2EFF Complemento radical CJK
0780-07BF Thaana
2FOO 2FDF Kanji radical
0900-097F Deviagari
2FF0-2FFF Caracteres de descripcin ideogrfica
0980-09FF Bengal
OAOO-OA7F Gumurkhi Tabla B.2 Smbolos y puntuacin (2000 a 2FFF)
OA80-0AFF Gujarat
OBOO-OB7F Oriya
OB80-0BFF Tarou!
OCOO-OC7F Teluga AUXILIARES :jK Los cdigos 3000 a 33FF definen los auxiliares chinos, japoneses y coreanos (CJK: Chine-
OC80-0CFF Kannada se, Japanese and Korean), algunos de los cuales se muestran en la tabla B.3.
ODOO-OD7F Malayalam
OD80-0DFF Cingals
OEOO-OE7F Tailands Intervalo Descripcin
OE80-0EFF Lao 3000-303F Smbolos y puntuacin de CJK
OFOO-OFFF Tibetano 3040-309F Hiragana
1000-109F Myanmar 30A0-30FF Katakana
lOAO-lOFF Georgiano 3100-312F Bopomofo
1l00-1lFF Hangul Jamo 3130-318F Jamo con compatibilidad Hangul
1200-137F Etope 3190 319F Kanbun
J3AO-J3FF Cheroqu 3 lA0-3lBF Bopomofo extendido
1400-167F Silbico unificado de los aborgenes canadienses 3200-32FF Letras y meses en CJK cerrados
1680-169F Ogham 3300-33FF Compatibilidad con CJK
16aO-16FF Rnico
1780-17FF Jemer Tabla B.3 Auxiliares CJK (3000 a 33FF)
1800-18AF Mongol
lE00-1EFF Latn extendido adicional
lFOO-lFFF Griego extendido
IDEOGRAMAS qK Los cdigos 4000 a 9FFF definen los ideogramas CJK unificados.
Tabla B.l Alfabetos (0000- 1 FFF) UNIFICADOS I
~
.. Unicode

SUSTITUTOS Los cdigos D800 a DFFF definen los sustitutos.

USO PRIVADO Los cdigos EOOO a F8FF son para uso privado.

CARACTERES
Y SMBOLOS
Los cdigos F900 a FFFF defmen caracteres y smbolos miscelneos.

MISCElNEOS
lagr~~as
de fl~[~\

U na herramienta muy efectiva para mostrar el flujo lgico de un programa es el diagrama


de flujo. En un entorno de programacin, puede utilizarse para disear un programa com-
pleto o slo parte de un programa.
El propsito principal de un diagrama de flujo es mostrar el diseo de un algoritmo. Al mis-
mo tiempo, libera a los programadores de la sintaxis y los detalles de un lenguaje de progra-
macin mientras que les pennite concentrarse en los detalles del problema a resolver.
Un diagrama de flujo proporciona una representacin pictrica de un algoritmo. Esto es en
contraposicin a otra herramienta de diseo de programacin, el pseudocdigo (ver apndice
D), que proporciona una solucin de diseo textual. Ambas herramientas tienen sus ventajas,
pero un diagrama de flujo tiene la capacidad pictrica que a otras herramientas les falta.
.. Diagramas de flujo C.2 Smbolos principales ..

Col SMBOLOS AUXILIARES LNEAS DE FLUJO Las lneas de flujo se utilizan para mostrar el orden o la secuencia de las acciones en un pro-
grama. Estas lneas conectan los smbolos. Por lo general, un smbolo tiene algunas lfueas de
entrada y algunas lneas de salida. El valo START tiene slo una lfuea de salida. El valo de
Un diagrama de flujo es una combinacin de smbolos. Algunos smbolos se usan para me- STOP tiene slo una lnea de entrada. Acabamos de mostrar el uso de las lneas 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 cmo una parte de un diagrama de flujo se conecta con otra. Estos smbo- Usted utiliza slo un smbolo, un crculo con un nmero dentro de l, para mostrar la conec-
los auxiliares se muestran en la figura C.I.
CONECTORES
tividad. Se utiliza cuando se llega al final de la pgina y el diagrama de flujo an no termina.
En la parte inferior de la pgina utilice un conector para mostrar que el flujo lgico contina
en la parte superior de la pgina siguiente. El nmero en el conector puede ser un nmero se-
rial simple o puede ser una combinacin de una pgina y un smbolo en la forma pgina.n-
mero. La figura C.3 muestra un conector fuera de pgina.
SMBOLO NOMBRE APLICACIN

( ) Tenrunal Muestra el principio o


fin de un algoritmo

t!

Lneas de flujo
Muestra el orden
de las acciones en un
algoritmo
( START
I
l"-
) cp ~

Muestra la continuidad
del algoritmo en .
8 Conector la pgina siguiente t
Figura C.l Smbolos auxiliares en el diagrama de flujo
cb ( STOP )

Figura <:.3 Conectores

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. <:'2 SMBOLOS PRINCIPALES
Una de las primeras reglas de la programacin estructurada es que cada algoritmo debe te~
ner slo un punto de entrada y uno de salida. Esto significa que un diagrama de flujo bien es- Los smbolos principales se utilizan para mostrar las instrucciones o acciones necesarias pa-
tructurado debe tener uno y slo un inicio START, y uno y slo un fin STOP. Los valos ra resolver el problema presentado en el algoritmo. Con estos smbolos, es posible represen-
deben estar alineados para mostrar claramente el flujo de la accin en un algoritmo. Por ejem- tar los cinco constructores de programacin estructurada: secuencia, decisin, ciclo while,
plo, en la figura C.2 se muestra un diagrama de flujo para un programa que no hace nada. Es- ciclo for y ciclo do-while.
te programa inicia y termina sin hacer nada.
Un valo tambin puede usarse para indicar el inicio y el fin de un mdulo. Cuando lo uti- Las instrucciones en secuencia simplemente representan una serie de acciones que deben con-
lice al principio escriba dentro de l el nombre del mdulo (en lugar de la palabra START),
INSTRUCCIONES
tinuar en un orden lineal. Aun cuando las acciones representadas en el smbolo de secuencia
cuando al [mal escriba la palabra RETURN (regreso), en vez de STOP. EN SECUENCIA
pueden ser muy complejas, por ejemplo una operacin de entrada o una operacin de salida,
el flujo lgico debe introducir el smbolo en la parte superior y fluir hacia fuera en la parte
inferior. Los flujos de secuencia no permiten que se tome ninguna decisin o haya cambios
de flujo dentro del smbolo.
( START ) Existen cinco smbolos de secuencia: instruccin nula, de asignacin, de entrada/salida,
llamada de mdulo e instruccin compuesta. Los ltimos cuatro se muestran en la figura C.4.

Instruccin nula Vale la pena resaltar que do nothing (hacer nada) es una instruccin vlida. Comnmente se
le conoce como instruccin nula. La instruccin nula se considera una instruccin de secuen-
( STOP)
cia debido a que no puede cambiar la direccin del flujo de un programa. No hay un smbo-
lo para una instruccin nula. Es simplemente una lnea de flujo. La figura C.2 es un ejemplo
Figura C.2 Smbolos de inicio y fin de una instruccin nula.
.. Diagramas de flujo e2 Smbolos principales ..

o Instruccin de asignacin
Instruccin
compuesta
Aun cuando no hay un smbolo real que muestre una instruccin compuesta, encapsulamos
todas las instrucciones que hacen una instruccin compuesta en un rectngulo de lnea dis-
continua.

! I Instruccin de entrada/salida
INSTRUCCIONES A diferencia de la instruccin de secuencia, las instrucciones de seleccin pueden provocar

ID
,,-------------,,,
Llamada de mdulo
DE SELECCiN que el flujo del programa cambie. Penniten la ejecucin de instrucciones seleccionadas y el
salto de otras instrucciones. En la programacin estructurada hay dos instrucciones de selec-
cin: bidireccional y multidireccional.
: 'Instruccin compuesta
I _ _ _ _ _ _ ------~ Seleccin
El smbolo bidireccional es el diamante. Cuando se utiliza para representar una instruccin
bidireccional
if-else, la lgica verdadera se muestra en la parte derecha del flujo lgico, y la condicin
Figura 1:.4 Smbolos de secuencia
falsa, si la hay, se coloca en la parte izquierda del mismo. Con if -else, siempre debe ha-
ber dos flujos lgicos, aunque a menudo uno de ellos es nulo. (Recuerde que la instruccin
nula se representa mediante una lnea de flujo; no hay un smbolo para nulo.) Finalmente, la
instruccin tennina con un conector donde los flujos verdadero y falso se unen. En este caso,
variable <E----- expresin el conector no tiene nada dentro de l.
Aunque con frecuencia ver decisiones esbozadas con el inicio del t1ujo 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 1:.5 Instruccin de asignacin
La figura C.7 muestra el uso del smbolo de decisin en la instruccin if-else. Como
sealamos, siempre hay dos ramas. En una de ellas se pennite tener una y slo una instruc-
cin. Desde luego, la instruccin en cada rama puede ser una instruccin nula o compuesta.
( START ) (~-=..::AV.,:R.:..:G--,) Pero slo se pennite una instruccin en cada rama; ni ms, ni menos. Tambin recuerde que
I toda la figura es una sola instruccin, no dos o tres; es una sola instruccin i f -el se.

~ F T
,--"'-(ICondicin.)-----,

Instruccin Instruccin
falsa verdadera

Figura :.6 Instruccin de llamada de mdulo

Instnu::cin La instruccin de asignacin se muestra utilizando un rectngulo. Dentro del rectngulo,


de asignacin operador de asignacin se muestra como una flecha que apuma a la izquierda. Aliado
Figura :'7 Seleccin bidireccional
cho de la flecha hay una expresin cuyo valor debe almacenarse en la variable del lado
quierdo. La figura C.S muestra una instruccin de asignacin.

Instruccin de Un paralelogramo se utiliza para mostrar cualquier entrada o salida, por ejemplo, leer de Seleccin La segunda aplicacin del smbolo de seleccin utilizado en la programacin estructurada es
entrada/salida teclado o escribir en la consola del sistema. la seleccin multibidireccional (figura C.8). Como puede ver, se pueden tener tantas ramas
multidireccional
como sea necesario. En cada rama, se pennite tener una y slo una instruccin. Desde luego,
Instruccin de El smbolo para llamar a un mdulo es un rectngulo con dos barras verticales dentro. El dia~ la instruccin en cada rama puede ser una instruccin nula o compuesta. Pero recuerde que
llamada de mdulo grama de flujo para el mdulo llamado debe estar en alguna otra parte. En otras palabras, slo se pennite una instruccin en cada rama; ni ms ni menos. Tambin recuerde que toda
cada vez que usted vea una instruccin de llamada de mdulo, busque otro diagrama de flu- la figura es una sola instruccin, no dos o tres.
jo con el nombre del mdulo (figura C.6).
Diagramas de flujo C2 Smbolos principales ..

Condicin

Figura C,l o Ciclo while

Figura C.S Seleccin multidireccionaI Usted utiliza el mismo smbolo bsico para el ciclo while, pero debido a que slo hay
una prueba de lmite, las divisiones internas no son necesarias. La figura C.IO muestra el for-
INSTRUCCiONES mato bsico de la instruccin while.
Hay tres instrucciones de ciclo: for, while y do-while.
DE CiClO
Instruccin La tercera aplicacin del smbolo de ciclo es la instruccin do-while (figura C.II). Debido
do-while a las diferencias inherentes entre los ciclos for y while y el ciclo do-while, ste se pre-
Instruccin for La instruccin f or es un ciclo controlado por contador. En realidad es una instruccin 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 inicializacin del ci- while y do-while:
clo, la cual normalmente establece el contador del ciclo; (2) la prueba de lmite y (3) las
instrucciones de accin de fin del ciclo, las cuales por lo general incrementan un contador. 1. Un ciclo while es un ciclo de preprueba. El ciclo do-while es un ciclo de pos-
Dado que la instruccin for es un ciclo de preprueba, es posible que el ciclo no se ejecute. prueba.
Si la condicin que termina es verdadera al inicio, el cuerpo de la instruccin for se salta. 2. El cuerpo de un ciclo while puede no ejecutarse nunca. El cuerpo de un ciclo do-
Corno sucede en todos los constructores de programacin estructurada, el cuerpo del ciclo while se ejecuta al menos una vez.
puede contener una y slo una instruccin. Como sucede con los otros constructores, esta ins~
truccin puede ser nula o compuesta. La figura C.9 muestra el ciclo foro

Fin F
de la
accin I-----~-.,
d,
ciclo

T Condicin

Figura C, 11 Ciclo do-while

Figura C,9 Ciclo for

Instruccin while El segundo constructor de ciclo es la instruccin whi le. La principal diferencia entre los ci~
elos for y while es que el ciclo while no es un ciclo de conteo. Ambos son ciclos de pre~
prueba; esto significa que, como sucede con for, el cuerpo del ciclo while puede nO
ejecutarse nunca.
D.1 Componentes

Algoritmo D.l

Algoritmo: Encontra" Menor


Propsito: Este algoritmo encuentra el nmero ms pequeo entre una
lista de nmeros.
Pre: Lista de nmeros

seu oc o Post: Ninguno


Devuelve: El menor
1. Establece el menor como el primer nmero
2. loop (no al final de la lista)
2.1 if (siguiente nmero < menor)
2.1.1 establece el menor como el nmero siguiente
2.2 end if
3. endloop
4. return menor
End Encontrar Menor

D.l COMPONENTES
U na de las herramientas ms comunes para definir algoritmos es el pseudocdigo. El pseu- Un algoritmo escrito en pseudocdigo puede decomponerse en varios elementos y cons-
docdigo es una representacin tipo idioma ingls del cdigo requerido para un algoritmo. Es tructores.
parte ingls y parte cdigo estructurado. La parte de ingls proporciona una sintaxis relajada
fcil de leer. La parte del cdigo consiste de una versin ampliada de los constructores de al- ENCABEZADO Cada algoritmo comienza con un encabezado que lo nombra. Por ejemplo, en el algoritmo
goritmos bsicos: secuencia, seleccin e iteracin. El algoritmo D.1 muestra un ejemplo de DE ALGORITMO D.1, el encabezado comienza con la palabra Algoritmo, la cual nombra al algoritmo como
pseudocdigo. "Encontrar Menor".

PROPSITO, Despus del encabezado, usted por lo general menciona el propsito y las pIe y postcondicio-
CONDICIONES nes, y devueltos por el algoritmo.
Y DEVOLUCiN
Propsito El propsito es una breve frase sobre lo que hace el algoritmo. Necesita describir slo el pro-
cesamiento del algoritmo general. No debe intentar describir todo el procesamiento. En el al-
goritmo D.I, el propsito comienza con la palabra Propsito y contina con el objetivo del
algoritmo.

Precondicin La precondicin lista cualquier requisito precursor. Por ejemplo, en el algoritmo D.1, se re-
quiere que la lista est disponible para el algoritmo.

Pos1:condidn La postcondicin identifica cualquier efecto creado por el algoritmo. Por ejemplo, tal vez el
algoritmo especifica la impresin de los datos.

Devolucin Creemos que todo algoritmo debe mostrar lo que devuelve el mismo. Si no hay nada que de-
volver, aconsejamos que se especifique una devolucin nula. En el algoritmo D.1, se devuel-
ve el valor ms pequeo encontrado.

NMEROS DE Las instrucciones se numeran como se muestra en el algoritmo D.1 (1,2,3 ... ). Las instruc-
INSTRUCCiN ciones dependientes se numeran de manera que muestren sus dependencias (1.1, 2.4 ... ).

CONSTRUCTORES Cuando Niklaus Wirth propuso por primera vez el modelo de programacin estructurada, de-
DE INSTRUCCiN clar que cualquier algoritmo puede escribirse con slo tres constructores de programacin:
secuencia, seleccin y ciclo. Nuestro pseudocdigo contiene slo estos tres constructores b-
Pseudocdigo

sicos. La implementacin de estos tres constructores se basa en la riqueza del lenguaje de im-
plementacin. Por ejemplo, el ciclo puede implementarse como una instruccin whi le, do-
while o for en el lenguaje C.

SECUENCIA Una secuencia es una serie de instrucciones que no alteran la ruta de ejecucin 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 tambin se con-
sidera una instruccin de secuencia. La razn radica en el concepto de programacin
estructurada de que cada algoritmo tiene slo una entrada y una salida. Adems, cuando un
algoritmo se completa, regresa a la instruccin inmediatamente despus de la llamada que lo
Diagra S
de estructura
invoc. Por consiguiente, usted puede considerar de manera apropiada la llamada del algorit-
mo como una instruccin de secuencia. El algoritmo D.2 muestra una secuencia.

Algoritmo 0.2

7. establece x como el primer nmero


8. establece y como el segundo nmero
9. multiplica x por y y almacena el resultado en z

SELECCIN Las instrucciones de seleccin evalan una o ms alternativas. Si son verdaderas, se toma una
ruta. Si son falsas se toma una ruta distinta. La instruccin de seleccin tpica es la seleccin El diagrama de estructura es la principal herramienta de diseo para un programa. Como
bidireccional (i f-else). Aun cuando la mayor parte de los lenguajes proporciona seleccio- herramienta de diseo, sta se crea antes de comenzar a escribir un programa.
nes multidireccionales, no proporcionamos ninguna en el pseudocdigo. Las alternativas de la
seleccin se identifican mediante sangras (sangrando), como se muestra en el algoritmo D.3,

Algoritmo 0.3

5. if (x < y)
5.1 incrementa x
5.2 imprime x
6. else
6.1 disminuye y
6.2 imprime y
7. end if

CICLO Un ciclo itera un bloque de cdigo, El ciclo en nuestro pseudocdigo se parece ms al ciclo
while. Es un ciclo de preprueba~ es decir, la condicin se evala antes de ejecutar el cuerpo
del ciclo. Si la condicin es verdadera, el cuerpo se ejecuta. Si la condicin es falsa, el ciclo
termina. El algoritmo DA muestra un ejemplo de un ciclo,

Algoritmo 0.4

3. loop (no al final del Archivo 1)


3.1 lee la lnea siguiente
3.2 elimina los espacios principales
3.3 copia la lnea al Archivo 2
4.endloop
BI Diagramas de estructura E.3 Smbolos del diagrama de estructura ..

SELECCiN La figura E.3 muestra dos smbolos para una funcin que es llamada por una instruccin de
E.l SMBOLOS DEL DBAGRAMA DE ESTRUCTURA EN EL DIAGRAMA seleccin: la condicin y el OR exclusivo.
DE ESTRUCTURA
La figura B.l muestra los diversos smbolos utilizados en un diagrama de estructura.

doIt

o a. Funcin
~ <
1
::> C<~ doA 08

ro
;,,::;',' ,<"

b. Funcin
comn
c. Condicin d. Ciclo e. Ciclo
condicional Figura 10.3
a. Condicin

Seleccin en una tabla de estructura


b. OR exclusivo

O
I
I
(+) I
En la figura E.3a, la funcin dOlt contiene una llamada condicional a una subfuncin,
fun. Si la condicin es verdadera, se llama a fun. Si no es verdadera, se omite fun. Esta si-

r T1
tuacin se representa en un diagrama de estructura como un diamante en la lnea vertical en-

I 11
f. OR exclusivo
I g. Flujo de datos h. Baudera
tre los dos bloques de funcin.
La figura E.3b representa la seleccin entre dos funciones diferentes. En este ejemplo, la
funcin select elige entre daA y daB. Una y slo una de ellas se llamar cada vez que se
ejecute la instruccin de seleccin. 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 ms
Figura 1:..1 Smbolos del diagrama de estructura
entre los procesos.
Ahora considere el diseo encontrado para una serie de funciones que puede llamarse ex-
clusivamente. Esto ocurre cuando una seleccin multidireccional contiene llamadas a varias
SMBOLO Cada rectngulo en un diagrama de estructura representa una funcin que usted escribe. El
funciones diferentes. La figura E.4 contiene un ejemplo de una instruccin de seleccin que
DIE FUNCiN nombre en el rectngulo es el nombre que usted da a la funcin (figura E.2).
llama a diferentes funciones con base en el color.

No~br~::,de>
programa

ICe
initializ-:~:f
ii
I
-;' proes.:;s "
I
di;}~~ii
,
I
I I I Figura E.4 Ejemplo de una seleccin

A : I 8 C
.
CICLOS EN Veamos cmo se representan los ciclos en un diagrama de estructura. Los smbolos son muy
I EL DIAGRAMA simples. Los ciclos pueden ir en crculos, as que el smbolo usado es un crculo. Los progra-
J I DE ESTRUCTURA madores usan dos smbolos de ciclo bsicos. El primero es un ciclo simple, como se muestra

G l.
l
A.2
en la figura E.5a. El otro es el ciclo condicional, exhibido en la figura E.5b.
Cuando la funcin se llama de manera incondicional, como en un ciclo while, el crculo
fluye alrededor de la lnea que est sobre la funcin llamada. Por otra parte, si la llamada es
condicional, como en una funcin llamada en una instruccin i f-else dentro de un ciclo,
Figura 10.2 Ejemplo de un diagrama de estructura entonces el crculo incluye un diamante de decisin en la lnea.
la Diagramas de estructura
E.3 Reglas de los diagramas de estructura la
A menudo, un programa contendr varias llamadas a una funcin comn. Estas llamadas
select por lo general se esparcen en todo el programa. El diagrama de estructura mostrar la llama-
dolt
da siempre que sta ocurra lgicamente en el programa, Para identificar estructuras comunes,
la esquina inferior derecha del rectngulo estar sombreada, Si la funcin comn es comple-
ja y contiene subfunciones, estas subfunciones necesitan mostrarse slo una vez. Debe mos-
trarse una indicacin de que las referencias incompletas contienen estructura adicional. Por
fun doA lo general esto se hace con una lnea debajo de la funcin rectngulo y un smbolo de corte
(-). Este concepto se muestra en la figura E.7, la cual utiliza una funcin comn, average,
a. Ciclo b. Ciclo condicional en dos lugares diferentes del programa. No obstante, observe que nunca muestra grficamen-
te una funcin conectada a dos funciones que hacen una llamada.
Figura E.5 Ciclos en un diagrama de estructura

La figura E.6 muestra la estructura bsica para una funcin llamada process. El crculo
est debajo de la funcin que controla el ciclo. En este ejemplo la instruccin de ciclo est main
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 bsicos.

I
Figura E.7 Varias llamadas a la misma funcin

Figura 10.6 Ejemplo de un ciclo


E.3 REGLAS DE LOS DIAGRAMAS DE ESTRUCTURA
FLUJO DE DATOS No es necesario mostrar los flujos de datos y las banderas, aunque puede ser til en ciertas
A continuacin resumimos las reglas analizadas en esta seccin:
circunstancias. Si stos se muestran, las entradas se colocan a la izquierda de la lnea vertical
y las salidas, a la derecha. Cuando se incluyen, el nombre de los datos o la bandera tambin 11 Cada rectngulo en un diagrama de estructura representa una funcin escrita por el pro-
deben indicarse. gramador.
11 El nombre en el rectngulo es el nombre que se usar en la codificacin de la funcin.
11 El diagrama de estructura contiene slo un flujo de funcin. No se indica ningn cdigo.
E.2 LECTURA DE DIAGRAMAS DE ESTRUCTURA 11 Las funciones comunes se indican mediante sombreado en la esquina inferior derecha
del rectngulo de la funcin.
Los diagramas de estructura se leen de arriba hacia abajo y de izquierda a derecha. Respec- !II Los flujos de datos y las banderas son opcionales. Cuando se utilizan, debe asignrseles
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 11 Los flujos de entrada y las banderas se muestran a la izquierda de la lnea vertical; los
derecha, la primera llamada en el programa es initialize. Despus de que se completa flujos de salida y las banderas se muestran a la derecha.
ini tialize, el programa llama a process. Cuando process est completo, el progra-
mallama a endOfJob. En otras palabras, las funciones en el mismo nivel de un 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, By c. Sin embargo, la funcin B no comienza su ejecu-
cin hasta que A haya terminado. Mientras A est en ejecucin, sta llama a su vez a Al y A2,
En otras palabras, todas las funciones en una lnea de proces s a A2 deben llamarse antes de
que la funcin B pueda comenzar.
F,l Transformada coseno discreta ..

F.1 TRANSfORMADA COSENO DISCRETA


En esta transformacin, cada bloque de 64 pixeles pasa por una transformacin llamada trans-
formada coseno discreta (DCT: discrete cosine transform). La transformacin cambia los 64

Transforma a
valores de modo que la relacin relativa entre los pixeles se mantiene pero las redundancias
se revelan. La frmula 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.

"
'-'j

';'i'
cos'eno discreta T(m,n),?q.~5c(m)c(n)
7

ZZP(x, y)
.>-=0 y=O
cos (
2Y + l)nn)
16

En este apndice, damos las bases matemticas para las transformaciones de coseno discre~
ta y de coseno discreta inversa.

f.2 TRANSFORMACiN INVERSA


La transfonnacin inversa se utiliza para crear la tabla P (x,y) a partir de la tabla T (m,n).

/",>
~;:':i;,:~~i' 7 7 :
~ O.2sl~x)c(y)
'>0;
Z zT(m,n)
",=011=0

sarlo

A administrador de dispositivos: un componente de un sistema


abstraccin: la generalizacin de las operaciones de un algorit- operativo que controla el acceso a los dispositivos de entra-
mo sin una implementacin especificada. da/salida.
acceso directo a memoria (DMA): una forma de E/S en la agujero: en un disco ptico, una rea que hace el lser en la tra-
cual un dispositivo especial controla el intercambio de da- duccin de un patrn de bits; por lo general representa un bit O.
tos entre la memoria y los dispositivos de E/S. algoritmo: los pasos lgicos necesarios para resolver un pro-
acceso secuencial: un mtodo de acceso en el cual se tiene ac- blema con una computadora; una funcin o parte de una
ALU: (arithmetie logic uni!) unidad lgica aritmtica. LIFO: (last in, first out) ltimo en entrar, primero en salir.
ceso a los registros en un archivo en forma serial comenzan- funcin.
ANSI: (American National Standards Institute) Instituto Nacional LISP: (LIS! programming) procesamiento de lista.
Norteamericano de Estndares. LZ: codificacin de Lempel Ziv. do por el primer elemento. almacenamiento de filas mayores: un mtodo de ordenacin
ASCII: (American Standard Codefor Infonnation Interchange) Cdigo LZW: codificacin de Lempel Ziv Welch. acoplamiento: una medida de la interdependencia entre dos de elementos de un arreglo en la memoria en el cual los ele-
norteamericano de estndares para intercambio de informacin. :MAN: (metropolitan area network) red de rea metropolitana. funciones separadas. Vase tambin acoplamiento de conte- mentos se almacenan fila a fila .
bit: (binary digil) dfgito binario. .MPEG: (mofion picture experts group) grupo de expertos en imgenes nido, acoplamiento de control, acoplamiento global y aco-
en movimiento.
altura: un atributo de rbol que indica la longitud de la ruta
CD-R: (compaet dise recordable) disco compacto grabable.
OSI: (Open Systems Interconneetion) Interconexin de sistemas abier-
plamiento de sello. desde la raz al ltimo nivel; el nivel de la hoja en la ruta
CD-ROM: (compact disc read-only memory) disco compacto de
memoria de slo lectura. tos. acoplamiento de contenido: la referencia directa a los datos en ms larga desde la raz ms 1.
CISC: (complex instruction set computer) computadora de serie de PERL: (Practical Extraction and Report Language) lenguaje prctico un mdulo mediante instrucciones en otro mdulo; la fonna anloga: una entidad que vara continuamente.
instrucciones complejas. de extraccin e informes. inferior de acoplamiento misma que debe evitarse.
PC: (personal computer) computadora personal.
anlisis sintctico: un proceso que divide datos en piezas o
COBOL: (COmmon Business-Oriented Language) lenguaje comn acoplamiento de control: comunicacin entre funciones en las
orientado a negocios. pixel: (picture eIements) elementos de imagen. seales.
cuales un mdulo establece las banderas para controlar las
CPU: (central process mil) unidad central de procesamiento. PROM: (programmable read-only memory) memoria de slo lectura apuntador: una constante o variable que contiene una direc-
DBMS: (database management system) sistema de administracin de programable. acciones de otro.
cin que puede utilizarse para tener acceso a los datos alma-
bases de datos. RAi"I: (random access memory) memoria de acceso aleatorio. acoplamiento de datos: comunicacin entre mdulos en la
cenados en alguna otra parte.
DES: (data encryption standard) estndar de cifrado de datos. RDBMS: (reIational database managemen! rystem) sistema de bases de cual slo se pasan los datos requeridos; considerada la me-
DJ\llA: (direct memory access) acceso directo a memoria. datos relacionales. rbol: un conjunto de nodos conectados estructurado de tal
jor forma de acoplamiento.
DRAtV1: (dynamic RAAf) RAM dinmica. RISC: (reduced instruction set computer) computadora de serie de manera que cada nodo slo tiene un predecesor.
acoplamiento de sello: la tcnica de comunicacin entre m-
DVD: (digital versatile dise) disco verstil digital. instrucciones reducidas. rbol casi completo: un rbol con grado de salida limitado que
EBDIC: (Extended Binary Coded Decimal Interchange Code) Cdigo ROM: (read-only memory) memoria de slo lectura. dulos en la cual los datos se pasan como una estructura; con
tiene la altura mnima para sus nodos y en la cual el nivel
extendido de intercambio decimal codificado en binario. RSA: cifrado de Rivest-Shamir-Adleman. frecuencia resulta en que se pasan datos no requeridos.
SCSI: (small computer system inteiface) interfaz pequea de sistemas
de hoja se llena desde la izquierda.
EEPROM: (eleetronically erasable programmable read-only memory) acoplamiento global: una tcnica de comunicacin en la cual
memoria de slo lectura programable y borrable electrnicamente. de computadoras. los datos estn accesibles para todos los mdulos de un pro- rbol de expansin: un rbol extrado de un grafo conectado
EPROM: (erasable programmable read-only memory) memoria de SMTP: (simplemai! transfer protoeol) protocolo simple de transferen- que contiene todos los vrtices en el grafo.
grama; se le considera un mtodo muy pobre para la comu-
slo lectura programable y borrable. cia de correo. rbol de expansin mnima: un rbol extrado de una red co-
FIFO: (first en, first OUl) primero en llegar, primero en salir. SQL: (Structured Query Language) lenguaje de consultas estructurado. nicacin entre programas.
SRAM: (static RAM) RAM esttica. acoplamiento holgado: un tipo de acoplamiento entre mdu- nectada tal que la suma de los pesos es el mnimo de todos
FORTRAN: (FORmula TRANslation: traduccin de frmulas.
FTP: (file transfer prolocol) protocolo de transferencia de archivos. TDA: tipo de datos abstracto. los que los vuelve ms independientes. los rboles posibles contenidos en el grafo.
HTML: (hypertext markup langl/age) lenguaje para marcado de hiper- TCP: protocolo de control de transmisin. actualizacin eJ;l linea: un proceso de actualizacin en el cual rbol de expresin: un rbol en el cual las hojas son elemen-
texto. TCP!IP: protocolo de control de transmisin/protocolo Internet. tos de datos y el nodo interno y la raz son operadores.
un usuario que tiene acceso directo al sistema introduce y
HTTP: (hypertext transfer protocol) protocolo de transferencia de TELNET: (TEnninal NETwork) red terminal.
UDP: (user datagram prolocol) protocolo de datagrama de usuario. procesa las transacciones. rbol nulo: un rbol sin nodos.
hipertexto.
IP: (Internet prolocol) protocolo Internet. URL: (unifonn resource locatar) localizador uniforme de recursos. Ada: un lenguaje de programacin de alto nivel concurrente desa- arco: una lnea dirigida a un grado. Contraste con arista.
ISO: (Internalional Standard Organization) Organizacin para la USB: (universal serial bus) bus serial universal. rrollado por el Departamento de Defensa de Estados Unidos. archivo binario: una coleccin de datos almacenados en el
Estandarizacin Internacional. WAN: (wide area network) red de rea amplia. formato interno de la computadora. Contraste con archivo
administrador de archivos: el componente del sistema opera-
JPEG: (joint photographic experts group) grupo unido de expertos en WORM: (write once, read many) escribir una vez, leer muchas.
tivo que controla el acceso a los archivos. de texto.
fotografa. WWW: World Wide Web.
LAN: (local area network) red de rea local.
361
360
.. Glosario Glosario ..

archivo de reporte de errores: en un proceso de actualizacin 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 infonne 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. crculo de calidad: un diagrama en forma circular de los pasos
tualizacin. ciones. capacidad de correccin: 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: acrnimo de binary digit (dgito binario). En una compu- facilidad con la cual pueden corregirse los errores en un m- clase: la combinacin de datos y funciones unidos para formar
macenan como caracteres. Contrasta con archivo binario. tadora, la unidad de almacenamiento bsico con un valor ya dulo. un tipo.
archivo de transaccin: un archivo que contiene datos relati- seadeOo l. capacidad de pruebas: un atributo del software que mide la fa- dear: en las mscaras, una tcnica para hacer un bit O; tambin
vamente transitorios que se utilizan para cambiar el conte- bloque: un grupo de instrucciones tratadas como un todo. cilidad con la cual el sofuvare puede probarse como un siste- conocida como forzar a O.
nido de un archivo maestro. bus: el canal fsico que enlaza los componentes de hardware en ma operacional. diente: en un programa cliente-servidor, la aplicacin que soli-
archivo ejecutable: un archivo que puede ejecutarse (correr); una computadora; el medio fsico compartido utilizado en cargador: la funcin del sistema operativo que busca y trae un cita servicios de un servidor.
un programa. una red de topologa de bus. programa ejecutable a la memoria para su ejecucin. COBOL: un lenguaje de programacin de negocios (COmmon
archivo fuente: el archivo que contiene instrucciones de pro- bus de control: el bus que transporta infonnacin entre compo- char: el tipo de dato en lenguaje C para carcter. 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 tcnica de ciclo en la cual codificacin basada en diccionario: un mtodo de compresin
tan en lenguaje de mquina; el archivo de entrada a un bus de datos: el bus dentro de una computadora utilizado para el nmero de iteraciones es controlado por un contador. en el cual un diccionario se crea durante la sesin.
ensamblador o compilador. transportar datos entre componentes. ciclo controlado por eventos: un ciclo cuya tenninacin se ba- codificacin de Huffman: un mtodo de compresin estadsti-
archivo hashed: un archivo en el cual se busca utilizando uno bus de direccin: la parte del bus del sistema utilizada para sa en la ocurrencia de un evento especificado. Contraste con co que utiliza cdigo de longitud variable.
de los mtodos de hashing. transferir direcciones. ciclo controlado por contador. codificacin de Lempel Ziv (LZ): un algOlitmo de compresin
archivo maestro: un archivo permanente que contiene los da- bus serial universal (USB: universal serial bus): un controla- ciclo de mquina: la secuencia repetitiva de eventos en la que utiliza un diccionario.
tos ms actuales referentes a una aplicacin. dor de dispositivos de E/S que conecta dispositivos ms len- ejecucin de instrucciones de programa (fetch, decode y codificacin de Lempel Ziv Welch (LZW): una versin mejo-
archivo maestro nuevo: el archivo maestro que se crea desde tos, tales como el teclado y el ratn, a una computadora. execute). rada de la codificacin LZ.
un archivo maestro viejo cuando se actualiza el archivo. bsqueda: el proceso que examina una lista para localizar uno ciclo de postprueba: un ciclo en el cual la condicin de finali- codificacin de longitud de ejecucin: un mtodo de compre-
archivo maestro viejo: el archivo maestro que se procesa jun- o ms elementos que contienen un valor designado conocido zacin se prueba slo despus de la ejecucin de las instruc- sin sin prdida en el cual una serie de smbolos se reempla- '
to con el archivo de transaccin para crear el nuevo archivo como el argumento de bsqueda. ciones de ciclo. Contraste con ciclo de preprueba. za mediante el smbolo y el nmero de smbolos repetidos.
maestro. bsqueda binaria: un algoritmo de bsqueda en el cual el va- ciclo de preprueba: un ciclo en el cual la condicin de finali- cdigo: una serie de patrones de bits diseados para representar
archivo secuencial: una estructura de archivos en la cual los lor de bsqueda se localiza al dividir repetidamente la lista a zacin se prueba antes de la ejecucin de las instrucciones de smbolos de texto.
datos deben procesarse en forma serial desde el primer ele- la mitad. ciclo. Contraste con ciclo de postprueba. cdigo de intercambio decimal codificado en. binario extendi-
mento en el archivo. bsqueda en una lista: Vase bsqueda. 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 bsqueda secuencial: una tcnica de bsqueda utilizada con sos requeridos para desarrollar software; comienza con la ne- ge Code): el conjunto de caracteres diseado por IBM para
la direccin base. una lista lineal en la cual la bsqueda comienza con el primer cesidad de software y concluye con su implementacin. sus sistemas de cmputo ms grandes.
arista: una lnea de grafo que no tiene direccin. elemento y contina basta que el valor de un elemento igual ciclo de vida del software: la vida de un paquete de software. Cdigo norteamericano de estndares para intercambio de
arreglo bidimensional: un arreglo con elementos que tiene al valor que se busca se localiza o hasta que el [mal de la lista ciclo do-while: en los lenguajes C y C++, un ciclo postprueba informacin (ASCII: American Standard Code for Infor-
dos niveles de indexacin. Vase tambin arreglo multidi- se alcanza. controlado por eventos. mation Interchange): un esquema de codificacin 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++. cohesin: el atributo de un mdulo que describe qu tan estre-
nen ms de un nivel de indexacin. dos para el operador. ciclo: en un programa, un constructor de la programacin estruc- chamente se relacionan los procesos escritos en un mdulo
ASCII: Vase Cdigo norteamericano de estndares para in- turado que provoca que una o ms instrucciones se repitan; en entre s.
tercambio de informacin. e un grafo es una Hnea que comienza y finaliza con el mismo cohesin casual: la combinacin de procedimientos que no es-
ASCII extendido: un conjunto de caracteres que ampla el calidad del software: software que satisface los requisitos ex- vrtice. tn relacionados.
ASCII bsico. Los caracteres extras representan caracteres plcitos e implcitos del usuario, est bien documentado, ciencias de la computacin: estudio de los temas relacionados cohesin de comunicacin: un atributo de diseo en el cual los
para lenguajes extranjeros as corno para otros smbolos. cumple con los estndares operativos de la organizacin y se con una computadora. procesos de mdulo se relacionan debido a que comparten
ejecuta de manera eficiente en el cifrado: conversin de un mensaje a una forma ininteligible que los mismos datos.
camino: una secuencia de nodos en los cuales cada vrtice es es ilegible a menos que se descifre. cohesin de procedimiento: un atributo de diseo en el cual el
bandera: un indicador utilizado en un programa para designar adyacente al siguiente. cifrado a nivel de bits: un mtodo de cifrado en el cual los da- procesamiento dentro del mdulo se relaciona con los flujos
la presencia o ausencia de una condicin; switch. campo: la unidad nombrada de datos ms pequea que tiene tos primero se dividen en bloques de bits antes de cifrarse. de control. Se considera un modelo aceptable slo en los ni-
base de datos: una coleccin de informacin organizada. significado en la descripcin de informacin. Un campo cifrado a nivel de carcter: un mtodo de cifrado en el cual el veles ms altos de un programa.
base de datos distribuida: una base de datos en la cual los da- puede ser una variable o una constante. carcter es la unidad de cifrado. cohesin funcional: un atributo de diseo en el cual todo el
tos se almacenan en varias computadoras. capa fsica: la primera capa en el modelo OSI; responsable por cifrado de llave pblica: un mtodo de cifrado que utiliza dos procesamiento se relaciona con una sola tarea. El nivel ms
base de datos distribuida fragmentada: una base de datos dis- formar y transmitir bits a lo largo de la red. llaves: privada y pblica. La llave privada se mantiene en se- alto de cohesin.
tribuida en la cual se localizan los datos. capa de presentacin: la sexta capa en el modelo OSI; respon- creto; la llave pblica se revela al pblico. cohesin lgica: un atributo de diseo que describe un mdulo
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 mtodo de ci- en el cual el procesamiento dentro del mdulo se relaciona
cual cada sitio aloja una rplica de otro sitio. compresin. frado de llave pblica popular. slo 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 sesin: el quinto nivel en el modelo OSI; responsable cinta magntica: un medio de almacenamiento con capacidad zando. Se considera inaceptable en la programacin estruc-
los datos se tratan como estructuras (objetos). de establecer y tenninar sesiones y controlar dilogos. secuencial. turada.
circuito integrado: transistores, cableado y otros componentes cohesin secuencial: un atributo de diseo en el cual el proce-
al
1
Glosario Glosario ..

samiento dentro del mdulo es tal que los datos de un proce- constante: un valor de datos que no puede cambiar durante la declaracin de funcin: en C, una instruccin de prototipo que disco compacto grabable (CD~R): un disco compacto en el cual
so se utilizan en el siguiente proceso.
cohesin temporal: un diseo de mdulo en el cual los proce-
ejecucin del programa. Contraste con variable.
constante literal: una constante sin nombrar codificada en una
describe el tipo de regreso de la funcin, el nombre y los pa-
rmetros fonnales.
el usuario slo puede escribir una vez y leerlo muchas veces.
disco maestro: el disco que aloja el arcmvo maestro en la actua-
sos se combinan debido a que todos necesitan procesarse en expresin. decodificacin: proceso de restaurar un mensaje codificado a lizacin de archivos.
la misma secuencia de tiempo. constante nombrada: una constante a la que el programador da su forma anterior a la codificacin. disco magntico: un medio de almacenamiento con capacidad
cola de espera: una lista lineal en la cual los datos slo pueden un nombre. definicin de funcin: en C, la implementacin de una decla- de acceso aleatorio.
insertarse en un extremo, llamado la parte de atrs, y elimi- constante simblica: una constante que est representada por racin de funcin. disco verstil digital (DVD): un medio de almacenamiento p-
narse desde el otro extremo llamado la parte de adelante. un indentificador. definicin: en C, el proceso que reserva memoria para un obje- tico de acceso directo que puede almacenar hasta 17 gigaby-
colisin: 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 pelcula de 2 horas)
de hashing produce una direccin para una insercin y esa di- la direccin de la siguiente instruccin a ejecutarse en la desbordaITento: la condicin que resulta cuando no hay sufi- diseo de arriba hacia abajo: un concepto de diseo de pro-
reccin ya est ocupada. memoria. cientes bits para representar un nmero en binario. Vase grama en el cual un diseo progresa a travs de una descom-
columna vertebral backbone: los medios y dispositivos que contenedor: un algoritmo de hasmng, una localidad que puede tambin declaracin. posicin de las funciones, comenzando por la parte superior
crean conectividad para redes pequeas. acomodar varias unidades de datos. descendiente: cualquier nodo en el camino desde el nodo actual del diagrama estructurado y trabajando hacia los mdulos
comentario: en un programa e, una nota para el lector del pro- controlador de entrada/salida (E/S): un dispositivo que con- a una hoja. interiores.
grama que es ignorada por el compilador. trola el acceso a los dispositivos de entrada/salida. descifrado: la recuperacin 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 mquina Turing que es tos cifrados. Vase cifrado. quier dispositivo de almacenamiento fuera de la memoria
fuente en cdigo objeto ejecutable; tradicionalmente asociado equivalente al CPU de una computadora. descompresin: la accin realizada en los datos comprimidos principal; almacenamiento de datos pennanente; almacena-
con lenguajes de alto nivel. Vase tambin ensamblador. conversin binaria a decimal: el cambio de un nmero binario para obtener los datos originales. miento externo; almacenamiento secundario.
complemento a uno: la operacin relacionada con bits que in- a nmero decimal. diagrama de clase: un diagrama en la programacin orientada dispositivo de almacenamiento ptico: un dispositivo de E/S
vierte el valor de los bits en una variable. conversin decimal a binaria: el cambio de un nmero deci- a objetos que muestra la relacin entre objetos. que utiliza luz (lser) para almacenar y recuperar datos.
complemento a dos: una representacin de nmeros binarios mal a nmero binario. diagrama de estado: un diagrama que muestra los diferentes dispositivo de almacenamiento secundario: Vase dispositivo
en la cual el complemento de un nmero se encuentra al com- correo electrnico (e~mail): un mtodo para enviar mensajes estados de un proceso. de almacenamiento auxiliar.
plementar todos los bits y sumar un 1 despus de eso. electrnicamente basados en la direccin del buzn de correo diagrama de flujo: una herramienta de diseo de programa en dispositivo de almacenamiento: un dispositivo E/S que puede
compresin: la reduccin de un mensaje sin prdida significa- electrnico en vez del intercambio de anfitrin a anfitrin. la cual los smbolos grficos estndar se utilizan para repre- almacenar grandes cantidades de infonnacin para recuperar
tiva de infonnacin. CPU: Vase unidad central de procesamiento. sentar el flujo lgico de datos a travs de una funcin. en un momento posterior.
compresin de datos con prdida: compresin de datos en la cuadro bidireccional (cuadro B): en :rvIPEG un cuadro que se diagrama estructurado: una herramienta de diseo y docu- dispositivo de interconexin de redes: dispositivos como enruta-
cual se permite que algunos datos se pierdan; utilizada para relaciona tanto Con los cuadros precedentes como con los mentacin que representa un programa como un flujo jerr- dores o gateways que conectan redes para formar una interred.
compresin de imagen, audio o video. posteriores. quico de funciones. dispositivo de no almacenamiento: un dispositivo E/S que
compresin de datos sin prdida: compresin de datos en la cuadro intracodificado (cuadro 1): 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 ningn dato; utilizada para comprimir tex- pendiente. dgito binario (bit): la unidad ms pequea de infonnacin almacenar informacin.
to o programas. cuadro pronosticado (cuadro P): en MPEG, un cuadro que se (O o 1). dispositivo de salida: un dispositivo en el que puede escribirse
compresin de datos: la reduccin de la cantidad de datos sin relaciona con el cuadro 1 o el cuadro B precedentes. dgito hexadecimal: un smbolo en el sistema hexadecimal. pero no leerse.
una prdida significativa. cuantizacin: asignar un valor de una serie finita de valores. digrafo: un grado dirigido. dispositivos de conexin: dispositivos como emutadores, puen-
compresin espacial: compresin realizada por JPEG en un cuerpo: la parte de una funcin que contiene las definiciones e ins- direccin base: en una lista hashed, la primera direccin produ- tes y repetidores que conectan LAN o WAN.
cuadro. trucciones; el todo de una funcin con excepcin de la declara- cida por el algoritmo de hasmng. documentacin del sistema: un registro estructurado formal
compresin estadstica: un mtodo de compresin en el cual la cin del encabezado. Contraste con encabezado de funcin. direccin de puerto: la direccin utilizada en TCP y UDP para de un paquete de software.
codificacin se basa en la frecuencia de los smbolos. cuerpo de la funcin: el cdigo dentro de una funcin conteni- distinguir un proceso de otro. documento activo: en el WorId Wide Web, un documento eje-
compresin temporal: compresin realizada por MPEG en los do dentro de la definicin de la funcin y las secciones de direccin IlSica: la direccin de un dispositivo en el nivel de en- cutado en el sitio local utilizando Java.
cuadros. instrucciones. lace de datos. documento dinmico: un documento web creado mediante la
computadora de conjunto de instrucciones complejas (CISC: direccin Internet: una direccin de 32 bits utilizada para defi- ejecucin de un programa en el sitio del servidor.
complex mstruction set computer): una computadora que D nir nicamente una computadora en Internet. documento esttico: una pgina web que se crea en el sitio re-
define un amplio conjunto de instrucciones, incluso aquellas datagrama: el paquete enviado mediante el protocolo IP. direccin IP: Vase direccin 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- direccin lgica: una direccin definida en el nivel de red. mento dinmico.
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 slo las instrucciones utilizadas con frecuencia. datos de entrada: informacin del usuario que se presenta a de computadora y programas. E
computadora personal (PC): una computadora diseada para una computadora para ejecutar un programa. disco compacto: un medio de almacenamiento ptico de acce- E/S aislada: un mtodo de direccionamiento de un mdulo 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 slo lectura (CD~ROM): un moria, difieren totalmente de las instrucciones utilizadas pa-
seales recibidas (un repetidor). datos lgicos: 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 conexin que declaracin: en C, la asociacin de un nombre con un objeto, el disco y slo pueden ser ledos por el usuario. E/S mapeada a memoria: un mtodo de direccionamiento de
no regenera los datos. tal como un tipo, una variable, una estructura o una funcin. disco compacto escribible (CD~RW): un disco compacto en el un mdulo E/S en un solo espacio de direccin; utilizada tan-
conmutador: Vase bandera. Vase tambin definicin. que puede escribirse muchas veces y leerse muchas veces. to para la memoria como para los dispositivos.
.. Glosario Glosario ..

E/S manejada por interrupciones: una fonna de E/S en la cual espacio entre pistas: el vaco entre las pistas de un disco. fetch: la parte del ciclo de instrucciones en el cual la instruccin grafo dirigido: un grafo en el cual la direccin se indica en las
el CPU, despus de emitir un comando de E/S, contina sir- espacio entre sectores: el vaco entre los sectores de un disco. a ser ejecutada se trae desde la memoria. lneas (arcos).
viendo otros procesos hasta que recibe una seal 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-
cin de que la operacin de E/S se ha completado. les y verticales, la lnea nueva y los caracteres de cambio de racin total de un sistema. no desde cada nodo a cada otro nodo. Contraste con grafo d-
E/S programada: una fonna de E/S programada en la cual el pgina. FIFO: Vase primero en entrar, primero en salir. bilmente conectado.
CPU debe esperar a que la operacin de EIS se complete. esquema: el estndar de facto del lenguaje LISP. FireWire: un controlador de dispositivo de entrada/salida con grafo inconexo: un grafo que no est conectado.
EBCDIC: Vase Cdigo extendido de intercambio decimal co- estarlo de ejecucin: en la administracin de procesos, un esta- una interfaz serial de alta velocidad que transfiere los datos grafo no dirigido: un grafo que consiste slo de dos aristas; es
dificado en binano. do en el cual un proceso est utilizando el CPU. en paquetes. decir, un grafo en el cual no hay indicacin de la direccin 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 mtodo utilizado para autenticar el emisor del las lneas.
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 imgenes 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 mtodo de compresin con
efecto secWldario: un cambio en una variable que resulta de la cibir la atencin del CPU. cual un programa puede cambiarse para cumplir con los re- prdida para comprimir video (y audio).
evaluacin de una expresin; cualquier entrada/salida reali- estado de listo: en la administracin de procesos, el estado de quisitos de los usuarios. grupo unido de expertos en fotografa (JPEG: joint photograp-
zada por una funcin llamada. procesamiento en el cual el proceso est esperando obtener flip: cambiar un bit de O a 1 o de 1 a O. mc experts group): un estndar para comprimir imgenes.
eficiencia: el factor de calidad que trata el uso ptimo del hardwa-
atencin del CPU. fioa!: un tipo de punto flotante.
re de computadora o la velocidad de respuesta para un usuario. estado de terminacin: en la administracin de procesos, un formato de doble precisin: un estndar para almacenar nme-
estado en el cual un proceso ha tenninado de ejecutarse. ros de punto flotante en la memoria con mayor precisin que hardware: cualquiera de los componentes fsicos de un sistema
ejecutar: poner en funcionamiento un programa.
estndar de cifrado de datos (DES): el mtodo de cifrado del el formato de precisin simple. de cmputo, tales como un teclado o una impresora.
elemento de imagen (pxel): la unidad ms pequea de una
gobierno estadounidense para uso no militarizado y no clasi- FORTRAN: un lenguaje de procedimiento de alto nivel utiliza- hashing de contendor: un mtodo de hashing que utiliza con-
imagen.
ficado. do para aplicaciones cientficas y de ingeniera. tenedores para reducir la colisin.
eliminacin (dequeue): eliminacin de un elemento de una cola.
estructura autorreferencial: una estructura que contiene un forzar a O: el concepto de manipulacin de bits utilizado para hashing de extraccin de dgitos: un mtodo de hashing que
encabezado: la infonnacin aadida al principio de un paquete
apuntador hacia s misma. cambiar los bits seleccionados a O. utiliza la extraccin de dgitos.
para enrutamiento y otros propsitos.
estructura de datos: la representacin sintctica de los datos forzar a 1: el concepto de manipulacin de bits utilizado para hashing de residuo de divisin: un tipo de hashing en el cual la
encabezado de funcin: en una definicin de funcin, la parte
organizados para mostrar la relacin entre los elementos in- cambiar los bits seleccionados de a 1. llave se divide por un nmero y el residuo se utiliza como
de la funcin que proporciona el tipo de regreso, el identifi-
dividuales. forzar al cambio: el concepto de manipulacin de bits utiliza- la direccin.
cador de funcin y los parmetros fonnales. Contraste con
explorador: un programa de aplicacin que despliega un docu- do para cambiar los bits seleccionados de O a 1 y de 1 a O. hashing directo: un mtodo de hashing en el cual la llave se ob-
cuerpo.
mento del WWW. fraccin: una parte de un nmero entero. tiene sin modificacin algortmica.
encapsulamiento: el concepto de diseo de ingeniera de soft-
expresin: una secuencia de operadores y operandos que se re- funcin: un bloque nombrado de cdigo que realiza un proceso hashing doble: un mtodo de resolucin 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 cdigo con- hing en el cual la direccin de la colisin se produce para de-
tos y se mantienen en fonna separada de la aplicacin que los
expresin primaria: una expresin que consiste de un solo sistente en un encabezado, el nombre de la funcin y un cuer- teTIllnar la siguiente direccin.
utiliza.
operador; la expresin de prioridad ms alta. po, diseada 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
extraccin de dgitos: seleccin de dgitos de una llave para se nueva mientras se mantienen los objetos de datos y los m-
modelo OSI que conecta redes independientes. Un ennttador
usar como una direccin. todos de la clase base y se aaden nuevos objetos de datos y
dirige un paquete con base en su direccin de destino.
extraer (pop): la operacin de eliminacin en una pila. gateway: un dispositivo que conecta dos redes separadas que mtodos.
enrutanllento: el proceso realizado por un enrutador.
utilizan diferentes protocolos de comunicacin. hermanos: nodos en un rbol con el mismo padre.
ensamblador: software del sistema que convierte un programa
grado: el nmero de lneas incidentes a un nodo en un grafo. hipertexto: un documento con referencias a otros documentos.
fuente en cdigo objeto ejecutable; asociado tradicionalmen- F
grado de entrada: el nmero de lneas que entran a un nodo en histograma: una representacin grfica de una distribucin de
te con un programa de lenguaje ensamblador. Vase tambin facilidad de cambio: el factor de calidad que aborda la facili-
un rbol o grafo. frecuencia. Vase tambin arreglo de frecuencia.
compilador. dad con la cual los cambios pueden hacerse con precisin pa-
grado de salida: el nmero de lneas que dejan un nodo en un hoja: un grafo o nodo de rbol con una grado de salida de O.
entero: un nmero entero, un nmero sin una parte fraccionaria. ra un programa.
rbol o grafo. HTML: Vase lenguaje de marcacin de hipertexto.
entero negativo: un entero que vara de infinito negativo a O. factor de equilibrio: en un rbol, la diferencia entre la altura
grfica de barras: una grfica con valores representados me- Hub: Un dispositivo que interconecta otros dispositivos en una
entero positivo: un entero que vara de O a infinito positivo. del subrbol derecho y el subrbol izquierdo.
diante barras. red.
entero sin signo: un entero sin un signo; su valor vara entre O fase de anlisis: una fase en el ciclo de vida del sistema de soft-
grfico de mapa de bits: una representacin grfica en la cual
y el infiQito positivo. ware que define los requisitos que especifican lo que el siste-
una combinacin de pixeles define la imagen.
entrega de nodo a nodo: la entrega de datos desde un nodo al ma propuesto va a lograr.
grfico de vectores: el tipo de grficos en el cual las lneas y las identificador: el nombre dado a un objeto en un lenguaje de
siguiente. fase de diseo: una fase en el ciclo de vida del sistema de soft-
curvas se definen utilizando frmulas matemticas. programacin.
entrega de origen a destino: la entrega de un paquete de datos ware que define cmo lograr el sistema lo que se defini en
grafo: una coleccin de nodos, llamados vrtices, y segmentos de imagen: datos en la forma de grficos o imgenes.
de la fuente al destino. la fase de anlisis.
lnea, llamados aristas o arcos, que conectan pares de nodos. inanicin: un problema en la operacin de un sistema operati-
equilibrio: un atributo de nodo de rbol que representa la dife- fase de implementacin: una fase en el ciclo de vida del soft-
grafo con peso: un grafo con lneas con peso. Cada lnea tiene vo en el cual los procesos nO pueden tener acceso a los recur-
rencia en altura entre los subrboles 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 (WORl\lI): otro nombre para un fase de pruebas: un fase en el ciclo de vida del software en la
grafo dbilmente conectado: un grafo en el cual hayal 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 expresin. Tambin conocido como incremento unario.
.. Glosario Glosario ..

ndice: la direccin de un elemento en un arreglo. iteracin: una sola ejecucin de instrucciones en un ciclo. lenguaje simblico: un lenguaje de computadora, un nivel eli- llave secreta: una llave que se comparte por dos participantes
infijo: una notacin aritmtica en la cual el operador se coloca minado del lenguaje de mquina, que tiene un identificador en el cifrado de llave secreta.
entre dos operandos. nemnico para cada instruccin de mquina y tiene la capa-
ingeniera de software: el diseo y la escritura de programas
J M
Java: un lenguaje de programacin orientada a objetos para cidad de nombres de datos simblicos.
estructurados. LIFO: Vase ltimo en entrar, primero en salir. macro: un procedimiento diseado personalmente que puede
crear programas independientes o documentos dinmicos en
inicializador: una instruccin que inicializa el valor de una va- liga: en una estructura de lista, el campo que identifica el si- utilizarse una y otra vez.
Internet.
riable. guiente elemento en la lista. mantisa: la parte de un nmero de punto flotante que muestra
inicio de sesin local: un inicio de sesin en una computadora ligador: la funcin en el proceso de creacin del programa en la precisin.
conectada directamente a la terminal. 1. - la cual un mdulo de objeto se une a funciones precompila- mquina analtica: la computadora inventada por Charles Bab-
lenguaje C++: un lenguaje orientado a objetos desarrollado por das para formar un programa ejecutable. bage.
inicio de sesin remoto: inicio de sesin en una computadora
Bjarne Stroustrup. lnea de tiempo: un atributo de softwarte que mide la rapidez de mquina de Turing: un modelo de computadora con tres com-
conectada a la computadora locaL
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.
Dennis Ritchie. lnea: un elemento de grafo que conecta dos vrtices en el gra- que puede implementar instrucciones en un lenguaje de
insertar (push): la operacin de insercin de pila.
lenguaje de alto nivel: un lenguaje de programacin (porttil) fo. Vase tambin arco y arista. computadora.
Instituto Nacional Norteamericano de Estndares (ANSI: diseado para permitir al programador concentrarse en la Linux: un sistema operativo desarrollado por Linux Torvalds mscara: una variable o constante que contiene una configura-
American National Standards Insttute): una organizacin aplicacin y no en la estructura de una computadora o siste- para volver a UNIX ms eficiente cuando se ejecuta en un cin de bits utilizada para controlar el arreglo de bits en una
que crea estndares en los lenguajes de programacin, espe- ma operativo en particular. microprocesador Inte1. operacin relativa a los bits.
cificaciones elctricas, protocolos de comunicacin y as por lenguaje de computadora: cualquiera de los lenguajes sintc- LISP: un lenguaje de programacin de procesamiento de listas matriz de adyacencia: un mtodo de representacin 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 vrtices y una matriz (arre-
instruccin compuesta: en algunos lenguajes de programa- tales como el lenguaje de mquina, el lenguaje ensamblador, glo bidimensional cuadrado) para almacenar las aristas.
lista: un conjunto ordenado de datos contenidos en la memoria
cin, una coleccin de instrucciones tratadas como una sola C, COBOL y FORmAN. memoria: la memoria principal de una computadora consistente
principal. Contraste con archivo.
por el lenguaje. lenguaje de consultas estructurado (SQL: Structured Query en memoria de acceso aleatorio (RAM) y memoria de slo lec-
lista aleatoria: una lista sin orden de los datos.
instruccin de ciclo: una instruccin que provoca que el pro- Language): un lenguaje de base de datos que incluye instruc- tura (ROM); utilizada para almacenar datos e instrucciones de
lista de adyacencia: un mtodo de representacin de un grafo
grama itere una serie de distintas instrucciones. ciones para definicin, manipulacin y control de la base de programa.
que utiliza una lista ligada para almacenar los vrtices y un
instruccin de decremento: la instruccin que resta 1 del valor datos. memoria cach: una memoria pequea y rpida utilizada para
arreglo de lista ligada bidimensional para almacenar las aristas.
de una variable. lenguaje de mquina: las instrucciones nativas para el procesa- almacenar elementos de datos que se estn procesando.
lista de parmetros! una lista de valores pasados a una funcin.
instruccin de expresin: en C, una expresin terminada con dor central de una computadora que son ejecutables sin en- lista doblemente ligada: una coleccin ordenada de datos en la memoria de acceso aleatorio (RAlVI: random access memory):
un signo de punto y coma. samblaje o compilacin. cual cada elemento contiene dos apuntadores, uno que apun- la memoria principal de la computadora que almacena datos
instruccin de incremento: en C o C++, la instruccin que su- lenguaje de marcacin de hipertexto (HTML: hypertext mar- ta hacia el elemento previo y uno que apunta hacia el elemen- y programas.
ma un 1 a un valor entero. kup language): el lenguaje de computadora para especificar to siguiente. memoria de slo lectura (ROM: read-only memory): memo-
instruccin de seleccin: una instruccin que elige entre dos o el contenido y fonnato de nn documento web; permite que el lista general: una lista en la cual los datos pueden insertarse o ria pennanente con contenido que no puede cambiarse.
ms alternativas. En C, las instrucciones if-else y switch. texto incluya fuentes, pantallas, grficos incrustados y vncu- eliminarse en cualquier parte de la lista. memoria de slo lectura programable (PROM): memoria con
instruccin ifwelse: un constructor que implementa una selec- los a otros documentos. lista ligada: una estructura de lista lineal en la cual el orden de contenidos elctricamente establecidos por el fabricante; el
cin de dos sentidos. lenguaje de procedimiento (procedual): un lenguaje de com- los elementos se detennina mediante campos de liga. usuario puede restablecerla.
instruccin switch: la implementacin C de la seleccin de putadora en el cual una serie de instrucciones por lo general lista ligada individualmente: una coleccin ordenada de datos memoria de slo lectura programable borrable electrnica-
j
mltiples rutas. se ejecuta una a una de principio a fin. I en la cual cada elemento contiene slo la localizacin del si- mente (EPROM): memoria de slo lectura programable
instruccin: un comando que indica qu hacer a una compu- lenguaje de programacin: un lenguaje con palabras limitadas guiente elemento. Contraste con lista doblemente ligada. que puede programarse y borrarse usando impulsos electr-
tadora. Un constructor sintctico en e que representa una y reglas limitadas diseadas para resolver problemas en una 1
lista lineal: una estructura de lista en la cual cada elemento, ex- nicos sin ser eliminados de la computadora.
operacin en una funcin.
Interconexin de sistemas abiertos (OSI: Open Systems Inter-
computadora.
lenguaje declarativo: un lenguaje de computadora que utiliza
!I cepto el ltimo, tiene un sucesor nico.
lista ordenada: una lista en la cual los elementos se acomodan
memoria de slo lectura programable y borrable electrnica-
mente (EEPROM: electronically erasable programmable

connection): un modelo de siete capas diseado por la ISO el principio del razonamiento lgico para contestar consultas.
como una gua para comunicacin de datos. lenguaje ensamblador: un lenguaje de programacin en el cual
! de manera que los valores clave se coloquen en secuencia as- read-only memory): memoria de slo lectura programable
que puede programarse; el borrado de la EPROM requiere
interfaz de usuario: un programa que acepta solicitudes de los hay una correspondencia uno a uno entre el lenguaje de m- ! cendente o descendente.
lista restringida: una lista en la cual los datos slo pueden aa- que sta sea removida de la computadora.
usuarios (procesos) y las interpreta para el resto del sistema quina de la computadora y el conjunto de instrucciones sim- dirse o eliminarse en los extremos de la lista y el procesa- memoria primaria: la memoria de alta velocidad de una
I
operativo blicas del lenguaje. miento est restringido a operaciones en los datos de los computadora, donde los programas y los datos se almacenan
interfaz pequea de sistemas de computadoras (SCSI: small lenguaje funcional: un lenguaje de programacin en el cual un extremos. cuando el programa se est ejecutando. La memoria primaria
computer system interface): un controlador de dispositivo de programa se considera una funcin matemtica. llamada de funcin: una instruccin que invoca a otra funcin. es voltil, lo cual significa que el contenido se borra cuando
EIS con una interfaz paralela. lenguaje imperativo: otro nombre para un lenguaje de procedi- llave: uno o ms campos utilizado para identificar un registro la computadora se apaga; memoria principal.
Internet: la interred global que utiliza el conjunto de protoco- miento. (estructura). memoria principal: Vase memoria primaria.
los TCPIIP. lenguaje natural: cualquier lenguaje hablado. llave privada: una de las dos llaves utilizadas en el cifrado de memoria virtual: la memoria que resulta de intercambiar pro-
interoperabilidad: el factor de calidad que trata la capacidad lenguaje orientado a objetos: un lenguaje de programacin en llave pblica. gramas hacia el interior y el exterior de la memoria durante
de un sistema para intercambiar datos con otro sistema. el cual los objetos y las operaciones a aplicar en ellos se in- llave pblica: una de las llaves en un cifrado de llave pblica; la ejecucin para dar la impresin de un memoria principal
interred: abreviatura de interconexin de redes. cluyen juntas. se revela al pblico. ms grande de la que realmente existe.
Glosario Glosario ..

mtodo de acceso: una tcnica para leer datos desde un dispo- nivel interno: la parte de la base de datos que define dnde se operacin OR: una operacin 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 O slo si las dos entradas son O; de lo contrario almacenamiento principal durante el proceso de ordenacin.
microcomputadora: una computadora lo suficientemente pe- nodo: en una estructura de datos, un elemento que contiene tan- es 1. ordenacin: el proceso que ordena una lista o un archivo.
quea para que quepa en un escritorio. to datos como elementos estructurales utilizados para proce- operacin unaria: una operacin que necesita slo un operan- Organizacin para la Estandarizacin Internacional (ISO:
modelo: la especificacin establecida por una organizacin de sar la estructura de datos. do de entrada. International Standard Organization): una organizacin
estndares como un lineamiento para disear redes. nodo interno: cualquier nodo de rbol excepto la raz y las ho- operador: la seal sintctica que representa una accin sobre mundial que define y desarrolla estndares para una variedad
modelo cliente-servidor: el modelo de interaccin entre dos jas; un nodo en medio de un rbol. los datos (el operando). Contraste con operando. de tpicos.
programas de aplicacin en los cuales un programa en un ex- normalizacin: en una base de datos relacional, el proceso de operador AND: el operador utilizado en la operacin AND.
tremo (cliente) solicita un servicio de un programa en el otro eliminar redundancias. operador aritmtico: el operador utilizado en una operacin
extremo (servidor). notacin O: una medida de la eficiencia de un algoritmo con aritmtica. padre: un rbol o nodo de grafo con un grado de salida mayor
modelo de cascada: un modelo de desarrollo de software en el slo el factor dominante considerado. operador binario: un operador que se utiliza en una operacin que O; es decir, con sucesores.
cual cada mdulo se ternrina completamente antes de que co- notacin hexadecimal: un sistema de numeracin con base 16. binaria. pgina: una de una serie de secciones de igual tamao de un
mience el siguiente mdulo. Sus dgitos son O, 1,2,3,4,5,6,7,8,9, A, B, e, D, E Y F. operador de actualizacin: en una base de datos relacional, un programa.
modelo de red: un modelo de base de datos en el cual un regis- notacin octal: un sistema de numeracin con una base de 8; operador que cambia algunos valores en tilla tupla. pgina web: una unidad de hipertexto o hipennedia disponible
tro puede tener ms de un registro padre. los dgitos octales son de O a 7. operador de asignacin: en e y C++, el operador que asigna en el Web.
modelo de von Neumann: un modelo de computadora (consis- nmero de Gijdel: un nmero asignado a cada programa que un valor a una variable. pgina principal: la pgina principal de un documento de hi-
tente en memoria, la unidad lgica aritmtica, la unidad de puede escribirse en un lenguaje especfico. 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 nmero de punto flotante: un nmero que contiene tanto un cional que se aplica a dos relaciones con los mismos atribu- paginacin: una tcnica de multiprogramacin en la cual la me-
computadora moderna se fundamenta. entero como una fraccin. tos. La tuplas en la relacin resultante son aquellas que estn moria se divide en secciones de igual tamao llamadas bloques.
modelo jerrquico: un modelo de base de datos que organiza nmero entero: Vase entero. en la primera relacin pero no en la segunda. paginacin bajo demanda y segmentacin: un mtodo de asig-
datos en una estructura tipo rbol en el que se pueden reali- operador de eliminacin (delete): en una base de datos rela- nacin de memoria en el cual una pgina o un segmento de un
zar bsquedas desde la parte superior a la parte inferior. o cional, el operador que elimina una tupla de la relacin. programa se carga en la memoria slo cuando se requiere.
modelo incremental: un modelo en ingeniera de software en el operabilidad: el factor de calidad que trata la facilidad con la operador de insercin: un operador en una base de datos rela- paginacin bajo demanda: un mtodo de asignacin de me-
cual todo el paquete se construye con cada mdulo confor- cual puede utilizarse un sistema. cional que inserta una tupla en una relacin. moria en el cual una pgina de un programa se carga en la
mado por slo una consola de comandos; los mdulos ganan operacinAND: una de las operaciones a nivel de bits; el resul- operador de interseccin: un operador en el lgebra relacional memoria slo cuando sta se requiere.
complejidad con cada interacin del paquete. tado de la operacin es 1 slo si ambos bits son 1; de lo con- que encuentra tuplas comunes entre dos relaciones. palabras clave: Vase palabras reservadas.
modelo relacional: Vase base de datos relacional. trario es O. operador de juntura: un operador en una base de datos rela- palabras reservadas: la serie de palabras en un lenguaje que
mdulo: Vase subalgoritmo. operacin aritmtica: una operacin que toma dos nmeros y cional que toma dos relaciones y las combina con base en sus tiene una interpretacin predeterminada y no puede estar de-
mdulo objeto: la salida de una compilacin que consiste de crea otro nmero. atributos comunes. finida por el usuario.
instrucciones en lenguaje de mquina. operacin binaria: una operacin que necesita dos operandos operador de proyeccin: un operador de lgebra relacional (uti-
parmetro: un valor pasado a una funcin.
mdulo de la divisin: dividir dos nmeros y mantener el residuo. de entrada. lizado en bases de datos relacionales) en el cual una columna
parmetros formales: la declaracin de parmetros en una fun-
monitor: la unidad de despliegue visual de un sistema de cmpu- operacin de actualizacin: una operacin en una base de datos o columnas de datos se extraen con base en un criterio dado.
cin para describir los tipos de datos que se pasarn a la funcin.
to; por lo general un dispositivo de despliegue de video. relacional en la cual se cambia la infonnacin sobre una tupla. operador de seleccin: un operador de lgebra relacional que
parmetros reales: los parmetros en la instruccin de llamada
monoprogramacin: la tcnica que permite que slo un pro- operacin de diferencia: una operacin en dos conjuntos. El extrae tuplas con base en el criterio seleccionado.
de funcin 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 unin: en el lgebra relacional, un operador que
funcin. Contraste con parmetros fonnales.
muestreo: tomar medidas a intervalos iguales. nes en las dos conjuntos. combina filas de dos relaciones.
particionamiento: una tcnica utilizada en la multiprograma-
multiprogramacin: una tcnica que permite a ms de un pro- operacin de interseccin: una operacin en dos conjuntos en operador lgico: un operador que realiza una operacin lgica.
cin 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- operador NOT: el operador utilizado en una operacin NOT.
nes a los dos conjuntos. operador OR: el operador usado en una operacin OR. Pascal: un lenguaje de programacin diseado con un objetivo
N operador relacional: un operador que compara dos valores. especfico en mente: ensear programacin a los novatos al
operacin de proyeccin: una operacin en una base de datos
nivel: un atributo de un nodo que indica su distancia desde la raz. operador unario: un operador que realiza una operacin unaria. enfatizar el mtodo de programacin estructurada.
relacional en la cual se selecciona una serie de columnas con
nivel conceptual: relativo a la estructura lgica de la base de base en un criterio. operador XOR: el operador utilizado en una operacin XOR. paso de ordenacin: un ciclo durante el cual todos los elemen-
datos. Trata con el significado de la base de datos, no con su operacin de seleccin: una operacin en una base de datos re- operando: un objeto en una instruccin en la cual se realiza una tos se prueban mediante un programa de ordenacin.
implementacin fsica. lacional que selecciona una serie de tuplas. operacin. Contraste con operacin. paso por referencia: una tcnica de paso de parmetros en la
nivel de aplicacin: el sptimo nivel en el modelo OSI; propor- operacin de unin: una operacin en dos conjunts en la cual OR exclusivo (XOR): una operacin lgica binaria en la cual el cual la funcin llamada se refiere a un parmetro pasado uti-
ciona acceso a los servicios de red. el resultado contiene todos los elementos de ambos conjun- resultado es verdadero slo 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 tcnica de paso de parmetros en la cual el
responsable de la entrega de datos nodo a nodo. operacin de XOR: una operacin relacionada con bits cuyo orden por burbuja: un algoritmo de ordenacin en el cual ca- valor de una variable se pasa a una funcin.
nivel de red: el tercer nivel del modelo OSI, responsable de la resultado es 1 slo si uno de los operandos es 1. da paso a travs de los datos mueve (burbujea) el elemento patrn de bits: una secuencia de bits (O y 1).
entrega de paquetes desde el anfitrin original hasta el desti- inferior al principio de la porcin sin ordenar de la lista. PERL: un lenguaje de alto nivel (con una sintaxis similar a C)
operacin lgica: una operacin en la cual el resultado es un
no final. ordenamiento por insercin: un algoritmo de ordenacin en el que utiliza expresiones regulares que penniten el anlisis sin-
valor lgico (verdadero o falso).
nivel externo: la parte de la base de datos que interacta con el operacin NOT: la operacin que cambia un bit O a 1 o un bit cual el primer elemento de la porcin de la lista sin ordenar tctico de una cadena de caracteres en componentes.
lser. 1 a O, se inserta en su posicin adecuada en la lista ordenada. permutacin: revoltura.
~

.. Glosario
!! Glosario ..
I
pila: una estructura de datos restringida en la cual los datos pue-
den insertarse y eliminarse slo en un extremo, llamado cima.
pista: parte de un disco.
protocolo de control de transmisin/protocolo Internet (TC~
PIIP): el protocolo oficial de Internet, fonnado por cinco ni-
veles.
I

1
recorrido en past orden: un mtodo de recorrido de rbol bi-
nario en el cual el subrbol izquierdo se procesa primero, lue-
go el subrbol derecho y despus la raz.
resolucin de colisiones: un proceso algortmico que detennina
una direccin opcional despus de una colisin.
resolucin de direccionamiento abierto: un mtodo de resolu-
pixel: Vase elemento de imagen.
planificacin: asignar los recursos de un sistema operativo a di-
ferentes programas, y decidir cules programas deben utili-
protocolo de datagrama de usuario (UDP): uno de los proto-
colos de capa de transporte en el conjunto de protocolos
TCPIIP.
II recorrido en pre orden: un recorrido de rbol binario en el cual
el subrbol izquierdo se recorre primero, la raz se recorre en-
seguida y el subrbol derecho se recorre al ltimo.
cin de colisiones en el cual la nueva direccin est en el rea
base.
resolucin de lista ligada: un mtodo de resolucin de colisio-
zar cules recursos y cundo. protocolo de transferencia de archivos (FTP: file transfer pro- , recorrido en orden: un mtodo de recorrido de rbol binario en nes en hashing que utiliza un rea separada para los sinni-
planificador de procesos: un mecanismo del sistema operativo tocol): un servicio del nivel de aplicacin en TCPIIP para el cual la raz se recorre despus del subrbol izquierdo y an- mos, los cuales se mantienen en una lista ligada.
que despacha los procesos que esperan obtener acceso al CPU.
planificador de tareas: un planificador que selecciona una ta-
transferir archivos desde y hacia un sitio remoto. I tes del subrbol derecho.
recorrido primero en amplitud: un mtodo de recorrido grfi-
retroceso: un proceso algortmico, por lo general implementa-
do con una pila o a travs de la recursin, que recuerda la ru-
rea para su procesamiento de una cola de espera de tareas que
protocolo de transferencia de hipertexto (HTTP: hypertext
transfer protocol): el protocolo que se utiliza para recuperar
I co en el cual los nodos adyacentes al nodo actual, se proce- ta a travs de una estructura de datos y puede regresar por la
aguardan a ser movidas a la memoria. pginas web en Internet. san antes que sus descendientes. ruta en orden inverso.
polimorfismo: en C++, definir varias operaciones con el mismo recorrido primero en profundidad: un mtodo de recorrido en reutilizacin: 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-
cionadas.
portabilidad: el factor de calidad relacionado con la facilidad con
tocolo TCP/IP responsable de la transmisin de paquetes de
una computadora a otra a travs de Internet.
I
I
el cual todos los descendientes de los nodos se procesan an-
tes de cualesquier nodos adyacentes (hennanos).
recorrido: un proceso algortmico en el cual cada elemento en
cual el software puede utilizarse en otros programas.

la cuallUl sistema puede moverse a otros entornos de hardware.


postergacin: cambiar el orden de acceso de los datos.
postfijo: una notacin aritmtica en la cual el operador se colo-
protocolo simple de transferencia de correo (SMTP): el pro~
tocolo TCPIIP para servicio de correo electrnico.
pruebas de caja blanca: pruebas de programa en las cuales se
I
I
una estructura se procesa una vez y slo una vez.
recuperacin: la localizacin y devolucin de un elemento en
una lista.
sector: una parte de una pista en un disco.
segmentacin bajo demanda: un mtodo de asignacin de me-
moria en el cual un segmento de un programa se carga en la
considera el diseo interno del programa; tambin se le co-
ca despus de sus operandos.
precisin: el factor de calidad que trata la repetibilidad de un
sistema.
noce como pruebas de caja clara.
pruebas de caja negra: pruebas basadas en los requisitos del II recursividad: un diseo de funcin en el cual la funcin se lla-
ma a s misma.
red: un sistema de nodos conectados que pueden compartir re-
memoria slo cuando ste se necesita.
seguridad: el factor de calidad que trata la facilidad o dificultad
con la cual un usu~o no autorizado puede acceder a los datos.
sistema en lugar de un conocimiento del programa.
prefijo: una notacin aritmtica en la cual el operador se colo- cursos. seleccin bidireccional: una instruccin de seleccin que es
ca antes de los operandos.
preprocesador: la primera fase de una compilacin e en la cual
pseudocdigo: instrucciones del tipo del idioma ingls que si-
guen una sintaxis definida libremente y se utilizan para ex- I red de rea amplia (WAN): una red que abarca una distancia
geogrfica grande.
capaz de evaluar slo dos alternativas. En C, la instruccin
if-else. Contraste con la seleccin de mltiples caminos.
las instrucciones fuente se preparan para la compilacin y se
presar el diseo de un algoritmo o funcin.
puente: un dispositivo de conexin que opera en los primeros dos
I1 red de rea local (LAN: local area network): una red que co- seleccin multidireccional: una instruccin de seleccin que es
cargan cualesquier bibliotecas necesarias. necta dispositivos dentro de un rea limitada. capaz de evaluar ms de dos alternativas. En e, la instruccin
niveles del modelo OSI con capacidades de filtrado y enVo.
primero en entrar, primero en salir (FIFO: first en, fust out): red de rea metropolitana (WAt'l): una red que puede abarcar switch. Contraste con seleccin de dos caminos.
punto de sincronizacin: un punto introducido en los datos
un algoritmo en el cual el primer elemento de datos que se
aade a una lista es el primero que se elimina de la lista.
problema sin solucin: un problema que no puede resolverse
por el nivel de sesin para propsito de control de flujo y de
errores.
punto muerto: una situacin en la cual los recursos requeridos
I
1,
una ciudad o un pueblo.
red de computadoras: Vase red.
redes interconectadas: una red de redes.
seal (elemento sintctico): un constructo sintctico que repre-
senta una operacin, una bandera o una pieza de datos.
servidor: en un sistema cliente-servidor, la computadora centrali-
~
mediante una computadora. registro autorreferencial: un registro en el cual parte del regis- zada que proporciona servicios auxiliares (programas servidor).
problema no polinomial: un problema que no puede resolver-
por una tarea para tenninar su trabajo estn alojados en otros f tro se utiliza para apuntar a otro registro del mismo tipo. set: en mscaras, una tcnica para hacer un bit 1.
programas.
se con complejidad polinomial. registro de datos: un rea que aloja los datos a ser procesados simulacin de cola de espera: una actividad de modelado utili-
problema polinomial: un problema que puede resolverse con dentro del CPU. zada para generar estadsticas sobre el rendimiento de una
N registro de instruccin: un registro en el CPU que aloja la ins- cola de espera.
la complejidad polinomial.
notacin de punto decimal: la notacin ideada para facilitar la truccin antes de que sea interpretada por la unidad de control. sin rechazo: una calidad de un mensaje recibido que no penni-
problema con solucin: un problema que puede resolverse me-
lectura de las direcciones IP; cada byte se convierte a nme- registro: la informacin relacionada con una entidad. Una lo- .te al emisor negar 10 enviado.
diante una computadora.
ro decimal; los nmeros estn separados mediante un punto. calidad de almacenamiento rpido independiente que aloja sincronizacin de procesos: un mecanismo del sistema operati-
procedimiento: otro tnnino para un subalgoritmo.
los datos en fonna temporaL vo que controla el acceso a un recurso por ms de un proceso.
procesador de datos programable: una mquina que toma da-
tos de entrada y un programa para producir datos de salida.
R relacin: una tabla en una base de datos relacional. sinnimo: una lista hashed, dos o ms naves que se dirigen a la
raz: el primer nodo de un rbol. representacin de signo y magnitud: un mtodo de represen- misma direccin base.
procesador de datos: una entidad que introduce datos, los pro-
Rl"-I dinmica (DRAM): RAM en la cual las celdas usan ca- tacin 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 peridicamente para mero y los bits restantes representan la magnitud. conjunto de palabras clave y reglas de fonnato que deben se-
proceso: un programa en ejecucin. representacin del complemento a dos: un mtodo de repre- guirse cuando se escribe un programa.
retener sus datos.
programa: una serie de instrucciones. RAM esttica (SRAl\1): una tecnologa que utiliza las com- sentacin de enteros en el cual un nmero negativo se repre- sistema binario: un sistema de numeracin que utiliza dos sm-
Prolog: un lenguaje de programacin de alto nivel basado en la puestas flip-flop tradicionales (una compuerta con dos esta~ senta al dejar todos los Oen el extremo derecho y el primer 1 bolos (O y 1).
lgica formal. dos: O y 1) para almacenar datos. sin cambios y complementar los bits resta sistema de administracin de base de datos (DBMS: databa-
protocolo: una serie de reglas para intercambio de datos entre rama: un lnea en un rbol que conecta dos nodos adyacentes. representacin en complemento a uno: un mtodo de repre- se management system): un programa o una serie de progra-
computadoras. recorrido de rbol binario: el proceso de visitar cada nodo en sentacin de enteros en el cual un nmero negativo se repre- mas que manipula una base de datos.
protocolo de control de transmisin (TCP): uno de los proto- un rbol binario. senta al complementar el nmero positivo. sistema de bases de datos relacionales (RDBMS: relational da-
colos del nivel de transporte en el conjunto de protocolos recorrido de lista ligada: un mtodo de recorrido en el cual ca- resina de policarbonato: en la produccin de CD-ROM, un tabase management system): una serie de programas que ma-
TCPIIP. 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.

t
I
.. Glosario Glosario ..

sistema decimal: un mtodo de representacin numrica que tiempo compartido! un concepto del sistema operativo en el terpretar instrucciones. En una computadora personal, un m1- velocidad de transmisin: un nmero de bits enviado por se-
utiliza 10 smbolos (de O a 9). cual ms de un usuario tiene acceso a una computadora al crochip que contiene una unidad de control y unidad lgica gundo.
sistema distribuido: un sistema operativo que controla los re- mismo tiempo. aritmtica. velocidad rotacional: la velocidad de giro de un disco magn-
cursos localizados en las computadoras en sitios diferentes. tiempo de bsqueda: en el acceso a disco, el tiempo requerido wdad de control: el componente de un CPU que interpreta las tico.
sistema Excess: un mtodo de representacin numrica utiliza- para mover la cabeza de lectura/escritura sobre la pista don- instrucciones y controla el flujo de datos. vrtice: un nodo en un grfico.
do para almacenar el valor exponencial de una fraccin. de estn los datos. unidad de traslacin: en C, un archivo de compilacin tempo- vrtices adyacentes: dos vrtices en un grafo que estn conec-
sistema operativo monousuario: un sistema operativo en el tiempo de transferencia: el tiempo para mover datos desde el ral utilizado para almacenar el cdigo fuente modificado. tados por una lnea.
cual slo un programa puede estar en la memoria a la vez. disco al CPU/memoria. unidad lgica aritmtica (ALU: arithmetic logic unit): la par- video: una representacin de imgenes (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. aritmticas y lgicas con los datos.
antes de atenderlas. tipo de datos abstracto (TDA): una declaracin 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 cientficos de la computacin. WAN: Vase red de rea amplia.
putacin y proporciona una interfaz para el usuario. tipo de datos: un conjunto nombrado de valores y operaciones unset: Vase forzar a O. Web: Vase World Wode Web.
sistema paralelo: un sistema operativo con varios CPU en la definidas para manipularlos, tales como carcter y entero. URL Oocalizador uniforme de recursos): una cadena de ca- World Wide Web (WWW): un servicio Internet multimedia
misma mquina. tipo derivado: un tipo de datos compuesto construido a partir de racteres que define una pgina 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, estmctura, unin, apuntador y tipo enume- usuario final: la entidad que utiliza el producto final. documento a otro por medio de vnculos.
intento para eliminar datos de una estructura de datos vaca. rado).
software: los programas de aplicacin y del sistema necesarios topologa: la estructura de una red, incluyendo el arreglo fsico v
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 lser en la tra-
sonda: en un algoritmo de hashing, el clculo de una direccin topologa de anillo: una topologa en la cual los dispositivos se valor DC: el valor que no cambia con el tiempo. duccin de un patrn de bits; por lo general representa un bit.
y su prueba satisfactoria; en un algoritmo de bsqueda, una conectan en un anillo; cada dispositivo recibe una unidad de variable: un objeto de almacenamiento de memoria cuyo valor
iteracin del ciclo que incluye la prueba para el argumento de datos de un vecino y la enva al otro vecino. puede cambiarse durante la ejecucin de un programa. Con-
bsqueda. topologa de bus: una topologa de red en la cual todas las com- traste con constante.
SQL: Vase lenguaje de consultas estructurado. putadoras se conectan a un medio compartido.
subalgoritmo: una parte de un algortimo que est escrita indepen- topologa de estrena: una topologa en la cual todas las compu-
dientemente. Se ejecuta cuando se llama dentro del algortimo. tadoras se conectan a un concentrador comn.
subrbol: cualquier estructura conectada debajo de la raz de topologa de malla: una topologa en la cual cada dispositivo se
un rbol conecta a todos los otros dispositivos.
subcadena: una parte de una cadena. topologa ln'brida: una topologa formada por ms de una topo-
subprograma: Vase subalgoritmo. loga bsica.
subrutina: Vase subalgoritmo. traductor: un tnnino genrico para cualquiera de los progra-
subscript: un nmero ordinal que indica la posicin de un ele- mas de conversin de lenguajes. Vea tambin ensamblador y
mento dentro de un arreglo. Vase tambin ndice. compilador.
subsistema de entrada/salida: la parte de la organizacin de la trailer: informacin de control agregada a una unidad de datos.
computadora que recibe datos desde el exterior y los enva 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 nmeros. transformacin discreta de coseno (DCT): una transfonna-
cin matemtica utilizada en JPEG.
T tupla: en una base de datos relacional, un registro (lnea) en una
tabla de enrutamiento: la tabla utilizada por un enrotador para relacin.
emutar un paquete.
tabla de verdad: una tabla que lista todas las combinaciones l- IJ
gicas posibles con la salida lgica correspondiente. ltimo en entrar, primero en salir (LIFO: last in, first out):
TDA: Vase 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- aadi a una lista se elimina de la lista en primer lugar.
mricas y teclas de funcin utilizado para texto o datos de UlVIL (lenguaje de modelado unificado): una herramienta utili-
control. zada para disear en las ciencias de la computadin y los ne-
TELNET (Terminal Network): un programa cliente-servidor gocios.
de propsito general que permite inicio de sesin remota. Unicode: un cdigo de 65 536 caracteres que incluye los sm-
texto: datos almacenados corno caracteres. bolos de la mayora 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-
ndice ..

binario a hexadecimal, conversin de, portabilidad, 205 implementacin, 237


22,23 precisin, 203 insercin (enqueue), 235
binario a octal, conversin, 22, 23 reutilizac operaciones, 235
binario, rbol, 239 variabilidad, 204 parte de adelante, 235

ce altura, 239
aplicacin, 243
derecho, 239
equilibrio, 240
calidad, 202
camino,238,244
campo,219
campo de llave, 222
parte de atrs, 235
representaciones, 235
simulacin, 228
colas de espera, 132
expresin, 243 capa de sesin, 102 colisin, 263, 264
factor de eqnilibrio, 240 capa de transporte, 102 contenedor, 265
implementacin de lista ligada, carcter direccionamiento abierto, 264
243 ASCII,179 lista ligada, 264
izqnierdo, 239 cargador, 171 resolucin, 264
nulo, 239 cascada, modelo, 198 colisin, resolucin de rea de
A anlisis sintctico, 234 archivo maestro nuevo, 258 operaciones, 241 CASE,205 desbordamiento, 264
abstraccin, 228 ancestro, 238 archivo maestro viejo, 258 recorrido, 241 char,179 compendio, 312, 313
AC, valor, 299 ANSIISPARC, 272 archivos, administrador de, 125, 135 recorrido de orden posterior, 242 Church, tesis de, 325 sitio emisor, 313
acceso, 257 aplicacin, 174 funciones, 135 recorrido de orden previo, 241 ciclo, 152,217,244,352,355 sitio receptor, 313
aleatorio, 257 aplicacin, nivel de, 103 archivos. Vase FTP recorrido primero en amplitud, condicional, 355 compresin MPEG,301
secuencial, 257 responsabilidades, 103 arco,244 243 simple, 355 espacial, 301
ACK,336 TCP/lP, 111 rea principal, 264 recorrido primero en profundidad, y arreglos, 217 computadora, lenguaje de, 167
acoplamiento, 200 aplicacin, programa, 122, 271 arista, 244 241 while, 355 comunicacin, cohesin de, 202
bandera, 200 servidor, 111 con peso, 249 recorrido en orden, 241 ciclo de vida del software con peso, 248
contenido, 201 applet, 175 aritmtico, operador, 182 seal,243 fase de anlisis, 197 conectado, 244
control, 200 apuntador lista ligada, 221 arreglo,216 binario, archivo, 265. 266 fase de implementacin, 197 conector, 345
datos, 200 rbol,292 bidimensional, 218 binario, dgito, 28 fases, 196 consola de comandos, 125
global,201 altura, 238 bsqueda, 158 binario,operador,277 fase de prueba, 198 interfaz de usuario, 125
sello,200 ancestro, 238 colunma,218 bit, 16,28 ciclo de vida del software, 196 consola de comandos, 125, 136
activo, documento, 115 balanceado, 240 despliegue de memoria, 218 interruptor, 16 cifrado, 307 constante, 181
activo, objeto, 173 binario, 239 fila, 218 bloque, 184 cinta, 256, 321 literal, 181
actualizacin, operador, 276 definicin, 237 frecuencia, 217 Vase tambin instruccin crculo de calidad, 205 nombrada, 181
Ada, 173 descendiente, 238 histograma, 218 compuesta crculo, 355 simblica, 181
Adelson-Veskii y Landis. Vase AVL grado, 237 implementacin de grafos, 247 bloque de control de procesos, 132 cliente, 112 constructo, 147
administrador de base de datos. Vase grado de entrada, 237 ordenacin, 153 burbuja, orden de, 155 cliente/servidor constructo de instruccin ciclo, 352
DBA grado de salida, 237 unidimensional, 218 algoritmo, 156 inicio de sesin remoto, 113 instruccin de secuencia, 352
aguardo, estado de, 130 hijo,238 ASCII, 179, 266, 335 bsqueda, 158 COBOL, 172 instruccin de seleccin, 352
aleatoria, lista, 230 hoja, 238 asignacin, instruccin de, 346 binaria, 159 cdigo instantneo, 293 contenido, acoplamiento de, 201
alfabeto, 179 profundidad, 238 atmicos, datos, 179 lista ligada, 222 Cdigo norteamericano de estndares control, acoplamiento de, 200
algoritmo, 141, 142 nivel,238 atributo, 274 objetivo, 158 para intercambio de informacin. controlador, 114, 322
definicin, 150 nodo, 237 automata de estado, 322 buzn de correo, 112 Vase ASCII conversin de binario a decimal, 29
ejemplo, 142 nodo interno, 238 autenticacin, 306, 307 byte, 16 cohesin, 201 de binario a hexadecimal, 22, 23
almacenamiento auxiliar, 256 rama, 237 autorreferencial, estructura, 221 casual, 202 de binario a octal, 22, 23
enteros sin signo, 31, 33, 35, 37 rbol binario, recorrido en orden, 241 AVL,241 e de comunicacin, 202 corte, smbolo de, 357
secundario, 256 rbol de expansin, 249 C ++,174 de procedimiento, 202 CPU, 322
alto nivel, lenguaje de, 168 rbol de expresin B C, lenguaje, 173 funcional,201 controlador, 322
altura, 238 rbol binario, 243 B, cuadro, 302 caja blanca, prueba de, 198 lgica, 202 estados del, 322
altura de un rbol binario, 239 recorridos, 243 bandera caja negra, prueba, 198 secuencial, 201 CR,336
ambulante, apuntador, 223 archivo, 256, 265 en acoplamiento, 200 calidad del software, 202, 203 temporal, 202 cuadro, 128
aadir arista, 246 aleatorio, 257, 259 base de datos, 270 capacidad de correccin, 204 cohesin funcional, 201 MPEG,301
aadir vrtice, 245 binario, 265, 266 modelo de red, 273 capacidad de mantenimiento, 204 cohesin lgica, 202 cuerpo,l77
anlisis, fase, 197 indexdado, 260 modelo jerrquico, 273 eficiencia, 204 cola de espera, 230
define la necesidad, 197 de texto, 265 modelo relacional, 274 flexibilidad, 205 aplicaciones, 237 D
define el mtodo, 197 secuencial. 257 base de datos, modelo, 273 fiabilidad, 204 definicin, 235 datagrama, 11 O
define el requisito, 197 archivo fuente, 170 binaria, bsqueda, 159 interoperabilidad, 205 eliminacin (dequeue), 235 datos, 271
define el usuario, 197 archivo hashed, 261 binario a decimal, conversin de, 29 operabilidad, 203 FIFO,235 representacin, 16
376
I11III ndice ndice ..

tipos, 15 instruccin compuesta, 347 eliminacin, operador, 275 exclusivo, or, 355 GOdel, nmero de, 326 decodificacin, 294
datos, acoplamiento de, 200 instruccin de asignacin, 346 eliminar cola de espera, 235 expansin, rbol de, 249 interpretar, 327 nodo, 292
datos, compresin de, 290 instruccin de entrada-salida, 346 eliminar (dequeue), 235 explorador, 175, 177 grado de entrada, 237, 245 pasos de codificacin, 292
codificacin de Huffman, 292 instruccin if. .. eIse, 347 eliminar arista, 246 arquitectura, 114 grado de salida, 237, 245 prefijo, 294
codificacin de longitud de lnea de flujo, 345 eliminar vrtice, 245 componentes, 114 grado, 237, 245
ejecucin, 291 para ciclo, 348 en orden, recorrido, 241 controlador, 114 grafo
con prdida, 298 diamante, 347, 355 encabezado de algoritmo, 351 intrprete, 114 grafo dirigido. Vase digrafo l, cuadro, 302
sin prdida, 291 diferencia, operador, 278 ciclo, 352 lenguaje de marcacin, 177 gran 0, notacin, 330 identificador de campo, 220
datos, representacin de digrafo, 244 instruccin de secuencia, 352 programa cliente, 114 grupo de expertos en fotografia identificador, 179
texto, 17 dinmico, documento, 115 instruccin de seleccin, 352 expresin, 182 unidos. Vase JPEG if-else, instruccin, 186,347,355
DBA,271 direccin base, 264 nmero de instruccin, 351 instruccin, 183 Grupo de expertos en imgenes en imperativo, lenguaje, 171
dbilmente conectado, 244 direccionamiento abierto, 264 postcondicin, 351 extraer (pop), 233 movimiento. Vase MPEG implementacin, 247
DBMS,271 disco,256 precondicin, 351 extremo a extremo, entrega, 102 GUI,136 implementacin, fase, 197
DBMS,271 diseo, 353 encabezado, 100,351,177 codificacin, 197
componentes, 271 diseo, fase de encapsulamiento, 174 F ti herramientas, 197
nivel conceptual, 272 desarrollo, proceso, 198 encontrar vrtice, 246 factorial, 160 hardware, 271 inanicin, 134
nivel externo, 272 fase de diseo de ciclo de vida del enlace de datos, nivel de, 102 FF,336 hash, bsqueda, 269 problema de Dijkstra, 135
nivel interno, 272 software, 197 funcin, 102 FIFO, 132, 230, 235 hash, funcin, 313 inconexo, 244
DC, valor, 299 herramientas, 197 enrutador, 108 cola de espera, 230 hashed, archivo, 261 incremento, instruccin, 318, 323
DCT,299 modelo por incrementos, 199 enrutador, jerarquas 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. Vase EOF rea principal, 264 indexado, archivo, 260
caso de escala de grises uniforme, modularidad, 197 conceptos, 108 fin, smbolo, 344 colisin, 264 accesO a registro, 260
299 dispositivos, administrador de, 125, ensamblador, 168 fsica, direccin, 110 contenedor, 265 archivo invertido, 260
caso de gradiente, 300 135 ensamblador, lenguaje, 168 fsico, nivel, 101 direccin base, 264 componentes, 260
inverso, 300 divisin de mdulos, hashing de, 262 entrada, 182,356 flotacin, 179, 180 direccionamiento abierto, 264 ndice, 260
frmula, 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, instruccin, 346 flujo, lnea de, 345 divisin de mdulo, 262 inequvocos, pasos, 150
valor OC, 299 documentacin (continuacin) entrega FORTRAN,I72 extraccin de dgitos, 263 ingeniera de software asistida por
decimal,28 manual del usuario, 206 origen a destino, 102 frecuencia, arreglo, 217 mtodos, 261 computadora. Vase CASE
hexadecimal, 23 documentacin, 206 punto a punto, 102 FTP, 112 residuo de divisin, 262 ingeniera de software, 195
decisin, constructo, 146 acoplamiento global, 201 EOF,257 conexin de control, 112 resolucin de colisin, 264 acoplamiento, 200
declaracin, 180 acoplamiento de sello, 200 EOT,336 conexin de datos, 112 head, funcin, 185 acoplamiento de contenido, 201
funcin, 185 calidad del software, 203 equilibrio, factor de, 240 conexiones, 112 herencia, 174 acoplamiento de control, 200
declarativo, lenguaje, 171, 176 crculo de calidad, 205 errores, archivo de reporte de, 258 fuertemente conectado, 244 hermanos, 238 acoplamiento de datos, 200
decremento, instruccin, 318, 324 fase de anlisis, 207 ESC, 336 funcin, 184 hexadecimal, 23 diseo, 353
definicin, 180, 244 fase de diseo, 207 escala de grises, 298 cuerpo, 185 hijo, 238 inicializador, 181
DEL,338 fase de implementacin, 207 espacial, compresin, 301 declaracin, 185 hipertexto, 114 inicio, smbolo, 344
DES, 308 fase de prueba, 207 especial, lenguaje, 171, 177 definicin, 185 histograma, 218 insercin, 230
desbordamiento, 230, 231, 233 funcin, 207 espera, estado de, 130 efecto secundario, 184 hoja, 238 insercin, operador, 275
pila, 230, 231, 233 general, 207 estndar de cifrado de datos. Vase encabezado, 185 Hopper, Grace, 168 insertar lista ligada, 221
desbordamiento, 233 medicin, 206 DES llamada, 185 HTML,177 insertar (enqueue), 235
desbordamiento, rea, 264 programa, 207 estndar, tipo, 179 parmetro real, 185 documentos ASCII, 177 insertar (push), 233
descendiente, 238 prueba formal, 205 esttico, documento, 115 paso por referencia, 186 etiqueta, 177 instruccin, 146, 183
diagrama de estado, 130 sistema, 206 estructura tabla de, 353 paso por valor, 186 explorador, 177 expresin, 183
estado de aguardo, 130 dos sentidos, seleccin, 347 autorreferencial, 221 funcin, bloque, 355 lenguaje de marcacin, 177 seleccin, 355
estado de ejecucin, 130 DOS, 124 estructura de datos, 214 funcin comn, 357 HTTP, 114 instruccin compuesta, 184, 347
estado de preparacin, 130 doub1e,180 modelo de red, 273 funcin, cuerpo, 185 comandos incrustados, 114 instruccin, nmero de, 351
planificador de procesos, 131 modelo jerrquico, 273 funcin, encabezado, 185 tipos de mensajes, 114 int, 179
planificador de tareas, 131 E modelo relacional, 274 funcin principal, 184 URL,114 integridad, 306, 307
diagrama de flujo, 146, 197,343 EBCDIC, 266 ETB,336 Huffman, codificacin de, 292 Interconexin de sistemas abiertos,
ciclo, 348 editor de texto, 169 etiqueta, 177 G rbol, 292 modelo,100
ciclo do ... while, 347 ejecucin, estado de, 130 atributos, 177 gateway, 108 asignacin de cdigo, 293 interno, nodo, 238
conector, 345 ejecutable, archivo, 169 comn, 177 convertidor de protocolo, 108 asignacin de peso, 292 Interred, protocolo. Vase IP
decisin, 347 eliminacin, 231 ETX, 336 global, acoplamiento, 201 codificacin, 294 Interseccin, operador, 278
ndice ndice ..

interruptor, 16 USP,176 lotes, sistema operativo por, 124 NUL, 336 pgina web polinomial, problema, 329, 331
bit, 16 lista general, 230 LZ, codificacin, 295 nula, instruccin, 345 con peso arista, 249 postcondicin, 351
estado de apagado, 16 lista ligada, 220 compresin, 295 nulo, rbol, 239 cuerpo, 177 postergacin, 234
estado de encendido, 16 apuntador, 221 descompresin, 297 numeracin, sistemas de encabezado, 177 precondicin, 351
inversin de datos, 234 autorreferenciales, 221 diccionario, 295 binario, 28 estructura, 177 prefijo, 294
invertido, archivo, 260 bsqueda, 222 LZW, codificacin, 298 etiqueta, 177 preparacin, estado de, 130
!P, 110 datos, 220 o texto, 177 prepocesador, directiva, 170
caractersticas, 110 implementacin de grafo, 247 M objetivo, 158 pgina, 114 preprocesador, 170
datagrama, 11 O individualmente, 220 macro, 318 objeto, 173 paginacin preprueba, ciclo de, 348
direccionamiento,110 insertar nodo, 221 asiguar, 318 objetos, mdulo de, 170 bajo demanda, 128 presentacin, 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 conexin, 110 nodo, 221 complemento, 320 operacin, 179 multiprogramacin, 128 privacidad, 306, 307
IP, direccin pila,234 copiar una variable, 319 unitaria, 275 particionamiento, 128 privada, llave, 309
formato, 110 recorrido, 223 exponenciacin, 320 operaciones, 245 segmentacin, 128 problema soluble, 329
notacin de punto decimal, 110 vaca, 221 if-then-else, ciclo, 320 operador, 182 paginacin bajo demanda, 128 complejidad, 330
irresoluble, problema, 329 lista lineal, 229 multiplicacin, 319 binario, 277 palabra clave, 179. Vase tambin procedimiento, cohesin de, 202
iterativa, definicin, 160 cola de espera, 230 simulacin, 318 multiplicacin, 152 reservadas, palabras procedimiento, lenguaje de, 171, 172,
iterativo, 141 desbordamiento, 230 suma, 319 suma, 152 paralelo, sistema, 124 76
eliminacin, 231 MAN,104 operando, 183 parmetro real, 185 procedimientos, 271
J FIFO,230 mantenimiento, capacidad de, 204 operativo, sistema, 122 parmetros, paso de, 185 proceso, 124, 129
Java, 174 implementacin, 232 mquina, lenguaje de, 167 administrador de archivos, 125, paro, problema de, 321, 328 punto muerto, 132
!PEG, 298, 303 insercin, 230 marcacin, lenguaje de, 177 135 prueba, 328 sincronizacin, 132
compresin, 301 UFO, 230 ms, signo, 355 administrador de dispositivos, 125 particionamiento, 126 tarea, 129
compresin espacial, 301 lista general, 230 MD5,313 administrador de memoria, 125 paginacin, 128 procesos, administrador de, 125
cuantizacin, 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 recuperacin, 231 modularidad, 200 DOS, 124 paso programa, 129,322
juntura, operador, 277 restringida, 230 acoplamiento, 200 evolucin, 124 por referencia, 186 documentacin, 207
sucesor, 229 herramientas, 200 por lotes, 124 por valor, 186 programacin, constructo, 345, 351
K lista lineal, 230 monoprogramacin, 125 sistema paralelo, 124 patrn de bits, 16 smbolo, 17 Prolog, 177
Knuth, Donald E, 195 lista vinculada, algoritmos MPEG, 298, 301,303 orden de insercin, 156 prdida, compresin con, 298 protocolo de transferencia de
insertar nodo, 221 compresin temporal, 301 orden posterior, recorrido, 242 prdida, compresin sin, 291 hipertexto. Vase HTTP
L recorrer lista, 223 cuadro B, 302 orden previo, recorrido, 241 prdida, mtodo con, 290 protocolo de transferencia de finito,
LAN,103 vinculador, 170 cuadro 1, 302 ordenacin, 153 prdida, mtodo sin, 290 primero en entrar, primero en
lectura/escritura, cabeza de, 322 lista, recorrido, 231 cuadro P, 302 burbuja, 155 PERL,178 salir. Vase FIFO
Lempel Ziv, codificacin. Vase LZ, lista, recuperacin, 231 tipos de cuadros, 30 I insercin, 156 personal, computadora, 124 protocolo simple de transferencia de
codificacin literal, constante, 181 multidireccional, seleccin, 347, 355 paso, 153 pila, 230, 232 correo. Vase SMTP
Lempel-Ziv-We1ch, codificacin, llamada de modulo, instruccin, 346 multiprogramacin, 124, 126 seleccin, 153 anlisis sintctico, 234 proyeccin, operador, 277
Vase LZW, codificacin llave pblica, 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 mquina, 167 llaves, 309 NAK,336 origen a destino, entrega, 102 insertar (push), operacin, 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 TCPIIP, 110 funciones de niveles, 101 lista ligada, 234 pseudocdigo, 146, 197
simblico, 168 localizador uniforme de recursos. nivel de red, 102 TCPIIP, II O nivel de eulace de datos, 102 operaciones, 233 pblica, llave, 309
lenguaje de consulta estructurado. VaseURL nivel, 238 nivel de presentacin, 102 postergacin, 234 puente, 107
Vase SQL lgico, operador, 183 no dirigido, 244 nivel fsico, 101 recorrido primero en profundidad, punto flotante, 180
lenguaje para marcacin de long double, 180 no dirigido, grafo, 244 TCPIIP,110 247 punto muerto, 132
hipertexto. Vase HTML long int, 179 no polinomial, problema, 329, 331 valo, 344 retroceso, 235
LF,336 longitud de ejecucin, codificacin no rechazo, 306, 307, 311 pila, 233 R
UFO, 230, 232 de, 291 nodo, 221, 237, 292 p contencin, 233 raz, 237
estructura de datos, 232 longitud de ejecucin, compresin de, recuperacin, 223 P, cuadro, 302 pixel, 298, 301 rama, 237
liga, 220 291 nombrada, constante, 181 padre, 238 planificacin, 124 seleccin de dos caminos, 347
lnea, 244 loop, instruccin, 325 nombre, 274 pgina principal, 114 polimorfismo, 174 seleccin de mltiples caminos, 347
111 ndice ndice 111
RDBMS,274 revision tcnica, 205 simple, lenguaje, 317 lectura, 356 short, 179 unitaria, operacin, 275
relacin, 274 revisin tcnica, 205 entrada/salida, 321 reglas, 354 void,179 URL, ll4
real, parmetro, 185 herramientas, 205 numerar programas, 326 smbolo, 354 top-down concept, 356 alias, 114
recorrido primero en amplitud, 247 RSA problema de paro, 321 tabla de estructura, 353 topologa, 99 anfitrin, 114
recorrido primero en profundidad, desventaja, 311 simulacin, 318 tarea, 129 traduccin de protocolo, 108 componentes, 114
247 ejemplo, 310 sin signo tareas, bloque de control de, 132 emutador, 108 mtodo, 114
recorrido, 231, 241 elegir las claves, 310 almacenamiento, 31, 33, 35,37 tareas, planificador, 131 traductor, 170 nmero de puerto, 114
primero en amplitud, 247 ventaja, 311 sinnimo, 263 TCP,I11 tfailer, 100 recuperacin de documentos, 114
primero en profundidad, 247 RSA, cifrado, 309 sistema de administracin de bases de protocolo de nivel de transporte, transaction file, 258 ruta, 114
recorrido, 246 datos relacionales. Vase 111 transferencia, capacidad de, 205 usuario final, 271
rectngulo, 354, 357 S RDBMS protocolo puerto a puerto, 111 transformacin discreta de coseno. usuario, 271
recuperacin de un nodo, 223 salida, 182 sistema de administracin de datos. TCPIIP,110 VaseDCT interfaz de usuario, 125, 136
recuperacin, 231 salida, flujo de, 357 VaseDBMS concepto de interred, 100 transicin, diagrama, 322 final, 271
recursin, 160, 189 Scheme, lenguaje, 176 sistema operativo distribuido, 124 Internet, II O transicin, tabla, 322 normal, 271
factorial, 160 secreta, llave, 307 sistema operativo, 124 modelo OSI, 110 programa, 322 programa de aplicacin, 271
recursiva, definicin, 161 secuencia, 145 SMTP,112 nivel de aplicacin y modelo OSI, translacin, unidad, 170
recursivo, 141 secuencia, constructo de, 146 buzn de correo del usuario, 112 111 transporte, 102 V
red secuencia, instruccin, 345, 352 direccionamiento, 112 nivel de red, 11 O transporte, nivel de valor, 179
rbol de expansin, 249 secuencial, archivo, 257, 260, 258 nombre de dourinio, ll2 nivel fsico, 110 control de errores, 102 variable, 180
definicin, 248 actualizar, 258, 259 Sistema de direcciones, 112 nivel de enlace de datos, 11 O responsibilidades, 102 ventajas, 309
grafo con peso, 248 llave, 258 sobredesbordamiento, 231 nivel de transporte, 111 TCP, 111 TCPIIP,111 DES, 308
red, 248 usar, 258 cola, 235 TDA tupla, 275 desventajas, 309
redundancia, 290, 299 secuencial, cohesin, 201 pila, 233 definicin, 228 Turing, mquina, 317 utilizado con llave pblica, 311
registro, 219 segmentacin, 128 software, 122,271 encapsulamiento, 228 componentes, 321 vrtice, 244
acceso, 220 demanda, 128 ciclo de vida, 196 modelo, 229 instruccin de decremento, 324 vrtice, 244
accessing individual fields, 220 paginacin, 128 obsoleto, 196 operacin, 229 instruccin de incremento, 323 adyacente, 244
aplicacin, 220 seguridad, 306 SOR, 336 TELNET, 112, 113 instruccin loop, 325 grado, 245
relacin, 274 seleccin, 145 sombreado, 357 temporal, cohesin, 202 cabeza de lectura/escritura, 322 grado de entrada, 245
actualizacin, 276 en la tabla de estructura, 355 SP,336 temporal, compresin, 301 lectura, 322 grado de salida, 245
atributo 274 seleccin, constructo de, 186 SQL, operaciones, 178, 279 teora de la computacin, 317 Lenguaje simple, 325 vrtices adyacentes, 244
cardinalidad, 275 seleccin, instruccin, 347, 352, 355 actualizacin, 280 terminal, red. Vase TELNET cinta, 321 aplicaciones, 248
diferencia, 278 seleccin, operador, 276 combinadas, 282 texto cifrado, 307 escritura, 322 vinculador, 170
eliminacin, 275 seleccin, orden de, 153 diferencia, 281 texto, 17 void, 179
insercin, 275 sello, acoplamiento de, 200 eliminacin, 279 texto, archivo, 265 u VT,336
interseccin, 278 servicios de datos conmutados insercin, 279 time-sharing system, 124 UDP
juntura, 277 mutlimegabit (SMDS), 104 interseccin, 281 tipo derivado, 179 protocolo de extremo a extremo, W
nombre, 274 SHA-1,313 juntura, 280 tipo, 179 111 WAN,104
operacin, 275 sbort int, 179 proyecto, 280 char, 179 protocolo de nivel de transporte, tamao, 104
proyeccin, 277 signo y magnitud, 33 seleccin, 280 datos atmicos, 179 III while, ciclo, 187,318,348,352, 355
seleccin, 276 simblica, constante, 181 STX,336 derivado, 179 ltimo en entrar, primero en salir. Wirth, Niklaus, 351
tupla, 275 simblico, lenguaje, 168 subalgoritmo, 150 double,180 Vase LIFO World Wide Web. Vase WWW
unin, 277 smbolo, 17 subrbol, 238 estndar, 179 un lugar, 201 WWW
relacional, operador, 182 crculo, 355 subrbol derecho, 239 float, 179, 180 una cosa, 201 documento esttico, 115
repeticin, 145 corte, 357 subrbol izquierdo, 239 int, 179 unidad central de procesamiento. hipertexto e hipermedia, 114
repeticin, constructo, 146, 187,327 diagrama de flujo, 344, 345 subcadena, 295 long double, 180 Vase CPU pgina principal, 114
repetidor, 106 diamante, 347, 355 subscript, 216, 217 long int, 179 unin, operador, 277
representar un programa, 326 fin, 344 suma, 152
instrucciones, 317 inicio, 344 suma, operador, 152
mquina de Turing, 317, 325 valo, 344 switch, instruccin, 187
simulacin, 323 patrn de bits, 17 SYN, 336
reservadas, palabras, 179 principal, 345
Vase tambin palabras clave rectngulo, 354 T
residuo de divisin, hashing de, 262 signo ms, 355 tabla de estructura, 152, 354
restringida, 230 sombreado, 357 ciclo, 355
retroceso, 235 smbolo principal, 345 funcin comn, 357

S-ar putea să vă placă și