Vous êtes sur la page 1sur 52

y orqaruzacron de archivos

Segunda Edlclon

.,

Mary E. S. Loomis

Traducci6n FRANCISCO LEON HERNANDEZ Licenciado en Matematlcas Aplicadas y Computaci6n. UNAM Revision tecnica EMMA CECILIA MONTERO MEJIA Matematica y Maestrn on Cienclas de la Cornputacion Facultad Ciencias, U NAM ",

PRENTICE-HALL

HISPANOAMEAICANA,

S. A.

Mexico-Englewood Cliffs, Londres, Sydney, Toronto


Nueva Delhi, Tokio, Singapur, Rio de Janeiro

-----------

---------------~

contenido~_ _
PREFACIO CAPITULO 1

J
1

xxi
INTRODUCC/ON EI usn de datos
Fuentes de informacuin, 2 Datos y decisiones, 2 Mane_ju de (bios
Obj<'til'M

A LA ESTRUCTURA

DE DATOS

Tipos de dccisiones, 2

:>

del manejo de datos, 3 de cstructuras de datos 4

Clasilieaci,'>IJ

Estructuras logicas de datos, 4 Estructuras primitivas y simples, 4 Estructuras lineales y 110 lineales, 5 Orguniaicion de archives, 5 Pritnitjvas EntcrosS 5 Booleanos, 5 Caracteres, 6

Cadenas

Definicion, 7 Longltud de cadena, 7 Concatenacion de cadenas, 7 Subcadenas, 8 Operaciones compuestas, 9 Cadenas y enteros, 9 vii

vii!

Conlenido

Conlenido

ix

Estrueturas de datos en lenguajes de programacion

10

Forrnas de a lmaccnutniontu:
Limite inferior; inferior, 35 Formas
UIIO,

Arrcglos lllliditncllsionalcs
Generoliracion Arrcglos del limite

34

Estructuras de datos definidas par el programador, 10 Declaration de primitives en COBOL, 11 Declaracion de primitives en Pascal, 11 Declaracion de cadenas e/l COBOL, 12 Decluracion de cadenas en Pascal, 12 Operaciones de cadenas, 12

34

de alrnaccna-nicnto:

m.iltidimcnsionales

35
Orden por renglon, 35 Orden pur cotumna, 37 Selecclon de una tecnica de linealliacion, 39

Formas de almacenamiento: Enteros

13

Represcntacion por signo y magnitud, 13 Reprcsentucion de complemento a dos, 13 Representacion de complemento a uno, 14 Formas

Arrcglos triangulares
Definlciones, 40 compartido,41

40
Linealiracion, 40 Espacio Cambia de acomodo, 41

de almacenamicnto:

Caractcrcs

14

EBCDIC, 15 ASCII. 15 Esquemas de proposito especial, 15 Uso de codigo, 15 Representacion de datos numericos, 15 Rcpresentacion de decimal empacado. j 7

Arrcglos dispcrsos
Definicion, 42 vectorial, 42

42
Linealiracum, 42 Representacion Represcutacion de. listas ligadas, 43

Formas tie alrnacenamiento:

Cadenas

17

Resumen

43 44
44 45

A Iternativas de almacenam iento, 17 Representacion de cadenas empacndas, 19 Representacion de cadcnas descmpacadus, 19 Seleccion

Terminologfa

Refcrcncias sugeridas
Ejcrcicios de rcpaso

de la forma adecuada de almacenarnicnto 21 22 22 22

20 CAPITULO 3

Resumen

REGISTROS Definiciones 48
Claves de

48

Terminologia

Referencias sugeridas Ejercicios de repaso

Formacion de registros, 49 Ejemplos, 49 identificacion, 50 Archivos, 50

Rcgistros

(!O

COBOL y Pascal

50

CAPITULO 2 ARREGLOS Arreglos unidirnensionales


Subindices, 26

25
25
Ejcmplos, 26

COBOL, 51 Pascal, 52 Culificacion de nombres, 52 Ejemplo de fillja de trafico, 54

Forrnas de almaccnarniento Resumen 55 56 56 56

55

Dejinicion, 26 27

Arrcglos multidimensionales

Tertninologfa

Subindices, 27 Definiciones, 28 Ejemplos, 28 Seccion transversal, 29 Transpuesta, 29 Extensioncs a nuisdimensiones.Bt)

Rcfcrencias sugcridas Ejercicios de rcpaso CAPITUL04 PILAS Dcfiniciones 57

Arrcglos en COBOL y Pascal

31

57
Pi/a,57 Ejelllplo,60 Ejelllplos,58 Opcraciones

A rreglos bidimensionales, Arreglos unidimensionales, 31 Operaciones sobre los 32 Mas dimensiones, 33 elementos de! arrcglo, 33 Operaciones sobre arreglos, 33

Lista lineal, 57 sabre pi/as, 59

Contenido

Contenido

xi

Pilas en COBOL y Pascal

61
Dcclaracion de pi/as, 62

Operaciones basicas en una lista ligada


Notacion, 101 1111 nodo, 104

101
Insercion de

Pitas alojadas ell urreglos, 61 Operaciones sabre pilas, 63

Remocion de nodos, 103

Ejemplos de aplicaciones de pilas


Corrcspondencia de parentesis, 65 Notacion postfija, 68
Formas

64
Recursion. 66

Manejo del espacio disponible

105
UI1

Almacenamlento compartido, /05 Asignaci611 de nodo, 106 Liberacion de un 1I0do, 107


"

nuevo

de almacenamicnto

74

Listas ligadas en Pascal usando variables apuntadoras

108

Espacio compartido, 74

Resumen

75 76 76 76

Definicion de listas ligadas, 108 Mane]o de espacio, 109 Supresion de 1111 nodo, 109 Insercion de UI1 nodo, 110

Tcnninologia

Listas ligadas en COnOL y Pascal, sin cl uso de variables


apuntadoras 110 Utilizando UI1 arreglo, 110 Definici(JrI de una lista ligada, III Supresion de un nodo, 112 Insercion de un nodo, 112

Referencius sugeridas Ejercicios de repaso CAPITULO 5 COLAS Definiciones 78

78
Ejemplo, 81

Otras manipulaciones

de listas Hgadas individuales

113

Operaciones de colas. 79

Localiiacion de un nodo particular, J 13 Insercion a/final de una lista, 114 Inversion de una lista, 117 Lislas circulates ligadas y nodes principales 118 119

Colas en COBOL y Pascal

82
Declaracion de Desplazamiento a

Alojamiento de colas en arrcglos, 82 colas, 83 Operaciones de colas, 83 troves del almacenamiento, 85

El problema de Jose, 1I 8 Nodos principales, Supresion de un nodo particular, 121

Listas doblemente ligadas


Conceptos basicos, 122, doblcmente ligada. 123 lnsercion de UI1 nodo, 125

122
Defillicioll de una lista Supresion de un nodo, /24

Colas circulares

87
Variaciones, 90 Resumen, 94 Una

Usa de colas circulares, 89 represeniacion alterna, 93

Cornportamicnto de colas

95
95

Ejernplos de aplicacion de listas ligadas

127

Partunetros de comportamiento, 95 Obsermcion, Simulacion; 95 Teoria de co/as, 96

Polinomios,127 Una lista mulriligada simple, 132 Arreglos disperses, 132

Resumen

97 97 97 99 99 CAPITULO 7

Resumen

134 135 135 135 139 139


Ciclos, 141 Grafos dirigidos, 142

Terminologia

Tenninologia

Ejercicios de rcpaso CAPITUL06 L1STAS L1GADAS

Referencias sugeridas Ejcrcicios de repaso GRAFOS Definiciones

Represcntacion de listas ligudas

Problemas Call la representacion sccuencial, 99 Represeniacion no secuencial, /00 Conccptos bdsicos, 100 Ventajas, 100 Costos, 10J

Trayectorias, 141

Grafos en programas

143

xii

Cbnlenido

Contsnido

xlll

Representacion de la matriz de adyucencias

143

Grafos dirigidos, 144 Matrices dispcrsas, 144 Definicion de grafos en COBOL y Pascal, 145 Calculo de aristas, 145 Aristas panderarlas, 146 Representacioncs 1igadas

Recorrido en-ardell norecursivo, 181 Rccorrido en-orden ell Pascal, 182 Recorrido post-orden ell COBOL, 183

Arboles binarios cnlazados

184

147
Aristes

Representacion de nodes, 184 Recorrido en-orden, 188 U,lO representacion alternativa, 188

Representucion de directorio de nodes, J 48 ponderadas. 150 Calculo de aristas, 151 Representacion de multi-lista, 151

Busquedas dircctas Insercion de nodos

] 89 193
Insercion enhilada, 193

Rceorrido de grafos

153
Recorrido en profundidad,

Insercion desenhilada, 193

Recorrido en amplitud, 153 155 Comparacioncs, 156

Insercion de nodos un arbol de busqucda hinario


Supresion

195

de nodox

196

Alcanee y trayectorias mas cortas


Alcance, 157 Rutas criticas

157

Elimil1oci6n enhilada, 196

Trayectorias mas cortas, ]58 159

Supresion de nodos de un Mho] de busqucda binario Balanceo de arboles de busqucda binaries Arboles balanceudos por su altura (AVI.) Arboles balanccados pot un lirnitc (BB) Resumen 202 203 203 206 MIEN TO ]9R 199 201

]96

Arboles de expansion

161

Algoritmo de Kruskal, /62

Resumen

164 164 165 J 65 CAPITULO 9

Tcrminologia

Referencias sugeridas Ejercicios de repaso

Terminologia

Refetencias sugcridas Ejetcicios de rcpaso

CAPITULO 8

ARBOLES GENERALES Y BINAR/OS Arboles generales 167


169

167

BUSQUEDA
Busqucda

Y QRDENA
211

211

sccuenciai

Fotmas de representacion,

Como mejorat Ia clicicncia de la busqucda secucncial Muestreo de accesos, 214 214 '/i"ansposiciol1,2i6 Movimiento hacia el frente, Ordenamiento, 217

214

Arboles binarios

170 173
Definicinn de

Represcntacion de arboles binaries


Definicion de arboles en Pascal, 173 arboles en COBOL, 174 Arboles binaries como reprcsentacion

Busqueda binaria

218 221 222


COil

Introduccion al ordcnarnlcnto 174 Ordcnamicnto por sclcccion


Orrlenamiento por scleccion

de arboles generales

Ejemplos de arboles

177 178

lntercambio,

224

Arboles de busqucda binarios Busquedas secuenciales


Los algoritmos, 180

Ordcnarnicnto

por inscrcion

226

179
Recorrido enorden, 181

Ordcnamicruo por inlcrcamhio: cl mclodo de 1~burhuja


Ordenurnicnto por particion e intcrcarnbio (ordcnamicnto

227

rapido

quicksort)

230

xiv

Contenido

Contenido

xv

Rendimiento, 233 Ordenamicn:o por apilarnicnto (hcapsort) 233

Referencias sugcridas
Ejercicios de rcpaso

278
27fi

Estructura de apilamiento, 234 Creacion de un apilamiento, 235 Procesamienio del apllamiento, 237 Ordcnarniento por torneo 240

CAPITULO 11 ORGAN/ZAC/ON Definiciones 28 J

DE AR CHI VOS SECUENCIALES

281

Desempeiio, 246 Resumen Terminologia Referencias Ejcrcicios 247 248 sugeridas de repaso 249 250

Ejemplo, 282 Procesamiento, Almacenamicnto

Ordenaclon de registros, 283 283 Ventajas y desventajas, 284 de archives 286 sccuenciales 284

Cinta magnetica

Representacion de datos y densidad, 287 Control de error y paridad, 287 Bloqueo, 288 Marcas y etiquetas de cinta, 291 Emp/eo de cintas, 292

CAPITULO 10 SISTEMAS DE ARCHIVOS


Archivos 252 Maneras de

252

Declaracion

de archives

secuenciales

292

COBOL,292

Pascal,295

Clasificacioti de archives por funcion, 253 accesar archivos, 255 Organizaciones Opcracioncs de 'archives sabre archivos 257

Creacion de un archive sccuencial

296

257 ;t

Edicion de transacciones, 297 Entrada inteiigente de datos, 298 Escritura de registros, 299 Archives de reporte, 299

Creacion de un archive, 258 Actualizacion de u~arcliivo, 258 Recuperacion de informacion de un archivo, 259 Mantenimiento de un archive, 260 Slstemas, de archivo Dircctorios de archive 261 262

Recupcracion de informacion de archives secuenciales


Actualizacion

301

de archives

secuenciales

303

Dispositivosdc control

263

6 Can qui frecuencia es necesaria fa actualiracion Z, 304 Gencracion de archives, 305 Tipos de actuuliracion, 305 Manipulacion de errores, 306 Logica de actualizacion, 306

Canales, 263 Tipos de canales, 264 Tipos de dispositivos, 265 Actividades del canal, 265 Procesamiento de una lectura, 266 Bloqueo de registros, 267 Manejo

Desernpcfio de archives sccuenciales


Factor de bloqueo, 308 Seleccion de la llave, 311 Resumen Tertninolugfa 311 312

308

Longltud del archivo, 309

del buffer

alrnacenamiento temporal

267

Almacenamiento temporal unico por demanda, 267 Almacenamiento temporal par anticipacion, 268 Almacenamiento temporal can bloques, 269 Doble almacenamiento temporal, 270 Triple almacenamiento temporal, 272 Apcrtura Sistemas Resumen Tcrminologra

Referencias sugeridas
Ejcrcicios

312 313 Y MEZCLA DE ARCHIVOS


e intercalacion de archives

de repaso

y cicrrc de archives
de bases de datos

273 274

CAPITULO 12 ORDENAMfENTO
Introducci6n

317 317

,,1 crdcnamicnto

276
277

Logica de intercalacion, 318 delordenamielllo/inrercaIHcir5n, Intercalacll;/!,320

Fases,3i8 Desempeiio 319 Ordenamlento, 320

xvi

Contenido

Contenido xvii

Intcrcalaciones naturales
Ejemplo, 321

320

Desempeiio, 322

Tccnicas de busqucda en cl directorio


Estructum del directorlo, 353 registros, 354 Vcntajas, 354 Tecnicas de calculo de dircccioncs

352

Tntercalacioncs balanccadas
Ejemplo, 326

322

Almacenamiento de Desempeiio, 355 355

Desempeiio, 326

Intcrcalaciones de polifuse Ejemplo, 328


Intercalacion

326

de cascada

329

Hashing por residua de la division, 358 Hashing per cuadrado medic, 360 Hashing por pliegue, 360 Comparaci6n entre las funciones hash, 361

Ejemplo, 330 Ordcnamicnto/intercalacion


Especificacion ejemplo, 332

Metodos para el problema de las colisiolles 330


Otro 333

362

con utilcrias

del proceso. 330 Ejemplo, 331 Procesamiento sobre pedido, 332

Sondeo lineal, 363 Doble hashing, 364 Comparacinn entre el sondeo lineal y el doble hashing, 365 Encadenamien: 10 de sinonimos, 367 Dirrccirmamiento por cubetas, 368

Usa de archivos relarivos

372

Ordenatnknto/inlcrcalaci6n

en progtatnas en COBOL

Primerejemplo,334 Segundo ejemplo, 335 Intercalacion de archives ordcnados, 336 Desernpcfio del ordenamicnto/inlcrcalacion

Declaracinn de un archive relative, 372 Creaci61i de un archivo relative, 373 Recuperacion de datos de archives relativos, 373 Actrw!izaci<5" de archives relatives, 373 Responsahilidades del programador, 373

336

Archivos relativos en COBOL

374

Resumen

337 338 338 339

Terminologia

Referencias sugcridas Ejercicios de repaso

Declaracion de un archive relative, 374 Creacion de un archiv{), 375 Rccuperncion de registros, 377 Actuaiizaci6n de archivo, 379

II"

Dcsernpcno de los archives relatives Resumen 340 382 382 383 386

380

CAPITULO 13 ORGANIZACION DE ARCHIVOS RELA TlVOS Dcfmidones 340


Ejemplo, 342 Ventajas y

Tetmillologia

Refcrcncias sugeridas Ejercicios de repaso CAPITULO 14 ESTRUCTURAS

Procesamiento, 34 I desventajas, 343 Almacenarnicnto

INDEXADAS 381\

en disco magnetico

343

388 390

Arboles de husqueda binados corno indices Arboles de busqueda de M-vias

Caracteristicasflsicas de Ius discos niagneticos, 343 Representacion y dircccionamiento de datos. 344 Acceso a disco de cabera movible, 346 Acees{) a discos de cabeza fija, 348 Manejadores de una cabeia-por-pista y discos Winchester,348 Almacenamienio en disco flexible, 349

Ejelllplu. 391 Arboles de busqueda de Msvias como indices. 39/ Blisqucda en arboles de lnisqueda de M'vias, 392 Desempena, 393

Tecnicas de dircccionamiento Tecnicas de mapco dirccto


Direccionamiento relativo, 351

350 350
Direccionamiento

Arbolcs-B

394
Btisquerla en arholes-B. 396

Ejemplo. 394

absoluto, 350

Insercion en lin arbol- B


Ejemplo, 397

397

Dcsempeiio, 400

xviii

Contcnido

Cor.terudo

XiK

Supresion

([,~nn ,irhoj- B

402

Ejcrcicios

de repaso

442

Eklllp/I),402 Arbolcsl P 404


fill

CAPITULO 16 ORGANfZA CION DE ARCHIVOS MUL TlLLA VE


Acccso (l,-boi H*, 405
147 11,;squCf./a en

446

multillavc
M''''''ju

446
pam

lnsercion en Tries de 409


1111

fjemp{(>,- [(I ncccsidad de travertorin


pOT

midtiple

(leU_WI,

rluplicacion 448

de datos, 448

Problemas
a!;n.'8tJci(il!

Ejemplo,

4 fa (ric, 412 41S 416

trie, 112 Varinntes de rUl trie, 414


lUI

Manteninuento

causados por 1<1 duplirncion, d« indices, +19 Organizucion de archivos

Manejo por 449

Resumen Tcnninologia Rcfercncias

in vcrtidos

slIgerid;-;:;

416 418

Coneepco» basicos, 449 Ejemplo, 149 Varian/.'s, 450 Mas dcjiniciones, 452 flld"XflCidl1 (,()n direccionamiento indirect(),452 V"{OH'_" de Ita ,'''-I' tlO- unicas, 453
Consultas acerca d« existcncia, 454

Ejcrci cios de rcpaso

Organizucion
COJJC(~pIOS

de archives
,hish,·(" v, 455 4.')8 Variantes,

multilista

454
Proce s amiento,

CAPITULO 15 ORGANfZACION DE ARCHfVOS SECUENCfALES fNDEXADOS


Dcfllliciones 420

Ejemplo, 4SS

420

456

Archives

secuencialcs

indcxados

COil

Have alrcrna

459

!:innpios, 421 Aplicaciones Estructuras 421 de arbol-B+ 422 lilisqucrla tI"

Ejcmplo, 459 Declaracion de 1111 orchivo en COnnl, 459 Crcacion de lUI archivo, 460 Rccupcracion de regis/fils sccuenciatnu-nte, 460 Recnpcracion ch: f.t!xisfros dirrctamenre, 462 A ctW:tii(.(lCi6n dt~ regi. ... ·trns.. 463 COlnpm"e101"'S y clcctos Resumen P"labr;ls 463 464

Manipulacio» de un arbol-B", 424 arboles B', 424 !\icmp!o 425 Au-ex" 429

d" diserio de archivos finales 466 466 sugcridas 466 467

Acre.WI directo, 425 de registros, 427 E~llll(;tna CbiGOde imliccs 430 Archivns J'recisimws,433

Sl'CUCIJCifd.

427

Inscrcion

Terminologra Rcfcrcncias

Acc.("so a registros de datos, 430

Inscrcion de reoistros; SupreS;'JII d« registros, 4J} en COBOL Creacion de 434


uu urchivo,

ljcrei cios ,k rcpaso

GLOSARfO RESPUESTAS APENDICE INDICE A LOS EJERCICfOS DE REPASO PARA COBOL

469 490

st::clJl~ll"i:oks indexarios de
archivos,

435 Cret_u',dn de lI.n arc..hivo u... sarulo I..u!(l utileria, 4J6 Recup,:'-"':;"11 de rrgistros. 437 J"kluolimcj<i" de archivos 13S
iJec/arm:i<ifl

1.H

META-LENGUAJE

507 509

Disei\o Ik archives Resumen Tcrminologia Rcfcrcncias


I

xccucncinles

indcxados

430

14 t 441
S(

Igcridas

441

I
I

...____

[--------

1-----------_

..------_.,______________ . ,,_ __

".-prefacio

-----

.. --.~----

....

_--

Esrc libro (r'al" sobrc la cstructnracion y urBan i f:(<:;6n de darox, un asp,:c!n r"lId"r1WIII~tI del disciio e impl.intacrou ,_k j))'ogralnas C<)tll)'Lllaciol\ak,;. I."" cxtr ucturax de dalUs detcrminan la conexion I(')giell .-ttlre l(lS ,bins y afccrun d pr"ecsami~nl" fi,ic() de Ie,sdal"s_ Todos Jus pI'Og"~ltll:l::'; cotnplJI;wionalc. ..... uxan cxtrucu irax de d:1h)s de :lIg-llna CI':'LL";C; Y IlHL·· chox otrc»: usau archi "U~, Aquelloo (jUl' di~Cl)'HI y (k~"rnJlbll :;uflwarc 1',\1" apl icaciolll'S comcrcialc-, y lcclllJj('),!ica:-;, :lSt' (Cl)lllil qlliclws dixcnnn y dcs;tlTollan si~klll'IS computucionalcx, ex dec-it, ~isll'IW" operatives, c"lIlpibd01r" xixtcrnax d" adlninislt'aei<"lI clc base de datos y si~lelna:s de cOUHlnicacj('Hl entre pt()c("sadores., t"I:"::{Jufcn:n de. cUllocillll1.·lI. los dt: cxtructurns de daln,', Las c:,'lI-'Jeilll'>lS .k: d.uox y la ('I-g;ll)i/,:ICi(\1l de :m'hi vos son los clcrncnt.», prillcip:d,.~ {Ille deknninal\ d rcndimicnro dL' I()~ pr<)g!';Hlla", I, .. ""Ie 1o.:xlo cxi~;tt'n dos l':,nl~s principales: 1:0 priuicra (Capitulo.c; I "I 9) In\la .';ohr" el urea Iwdil,iol ",]lll(l\tc l~(JII(lCida COII)Ocxtructurus ,Ie daln;;; la se}:'Ollda (.Capitulos 10 "I J (i) sc pl-"rtOll(h~a ell vl lnancj() y proccsamieuro dL"archives. l.'sl:1 "hi it grua al lector dc-;dc lu., «:,PCClo, 1l1;i;; h:isi<ous del m.incjo de datos (ir.cluycnd« pilus cui:!" y !isl;ls ligad:o:;) llast:.\ 1'1.'; cstructuras de dal()~ rn,is c()tllpk_jus ((II'holes y gr;ificasJ, cl pr()Ces:tllliel\lol dl: archive», (Sl'~'Il<'II(:i,dcs, t'cbliv(l~, il1dexatlns )' muhillavc) y los dCI1K'lItos de ,',i,\lem,l.' L:I>IJlplejus dL' In:llll~j() de hase ,k d:Jlos (DHJ\,lS), lo~ l:IJak" sun cada vev lnjs illlp(lrtank~~_ l~~ln:) xc cncucutran cu tudas partcx, l:1] In:l-cro.s y minicompnlltdol'as, y :;1)11,',,,la vc). I));i~, f'reC(l<:IllL:s en II's "CIIlH'S de 1J""baju}' en las COIllI .utadorus i'<.:r:;(lualc;;, J-:I ("",-a""'11 de IlII DB/\·lS e.'; I:] c:stntClltr:wit"I, dc, dalos y cl pmCeSl!iHkr>to klgic~) archiv( ),'-;_ d{_~
"i,klWIS

b;1c lihro "cd 111:;,; I'll il " In, kclmcs dl' ,."i)lnpIOto), <1,-, l't'Ogl':tmaci,',",

qOl(: pur

k'-ll)!.an

\11\

1)1 iuimo curso

,_k c(>!l()cJJnj"tll,,-,

de
a la

cjcmplo,

cl

CS I (ililruduc("i"ll)

xxi

xxii
PreIacio

Prolacio

xxiii

. , Iologl" de I" I'rugrarllaei"lII) tec<""ncl"lado POt cl /\Clvf Cnrriculun, C()mmil[ce 01. ~:D~" put cr .sciences "C II rri culum ' 73- I{(:cmnnwildal i{ 'I IS !( rr tl Ie Undngradllitle I'rogran I III Computer Science" (C'O!l1In. /tCM, no), marzo, 1979).
InCj,_}(

(>ran purte del lihro tr.ua los al)!Lll"iUnos (;oncl'tIJienk."; a la COIlStrucl"illl! y ruanejo (k cxrrucruras de datos y orgalli/.aci,)n de archivos Por 10 gcncrul, esto:< pn'cedimicllI','S SC prl"Sefll3tl ell l!iagwl11as .k filljo y en letlguaj" COIlOL 0 P:l$ea1. EI lcnguujc COHO I. :<l' ,c I"cewno ,k hl<"l<., que prcvalcci- hasl;11l11t:olros elias para la adrn illi:;1nlci"'" a de datox, y cl kllguaje Pascal rcprcsc-n I a a UII micmhro dc Ia l~ll1oiliatlcl nCCiCll1lOnt"I1rlCro de kllgll:Ijl:S l"'lrUcllJr;rJes), 1Tlcl(hdarcos, iI'W lir:flCll U!J;J buena .ipificacion de da1os,

b ,'slillclura higic:" de Ins algnrilnw.'i, No xc neccsua conoccr ambos lengwljcs (0 cllahjuin otro] P"tilc'lllclldLT e:;k li hro. Si So Ita crupcL:ldo a C{)I!OCCt"J kllgn:ij" C ().::I FOHTRAN (0 Basic, {) 1'1-/1, <"I kllguajc' en_~amhladnt II O~to) y cmplca 1~1lpoeu de lil'lup!l par" coruprcnder d n\digo presenl:«I" ell cl 1cxl!), ,il final de] libro {iJ~po!ldr;i 110 s(',lo ch- 1111'\cumptcllsi<lll de los prillcipi()s Lid In:lIl''jn d"
"otlv.:nielltctllcnlc d;du:·; y del pH")(:es~ltnjetlfn de ~ln.:lljv x, SIIlO blnbien •• de un (~{ulociIHio:.~rdt)n"J1["':lhlc

"~knds

de mostrar

<k COBOL y P""cal. S<'>l() ha clnf'l"ado COBOL c.'il:illdar (ANSI X3.2:1- ['J74, rso xc J0ll()- [1)7ll, lamhietl conocirlo cOlnu rO!\(lL 7'1»), I,,:,;"'sllllCI'J!'<IS k,si(,,!s (Ir: P",';("al. 1:11 el <l1'(:lHlice 'i" incluyr: dl)"lIltH'lltacj()n dd Iilt'lakll,!!,II".jc (~lllplr:ad(} 1'''1';0 l"',;nihir la Slt,I;IXlS dL' cunOI._ N() ('s 111~"L'S:lri() It:ll..::r hases rnal"llI~li("as, pcro SI "lgull(l:; CC'111(>cinucnto-, bisi",)~ d.., I,\;;i(";, para res, ilvcr ;llgl11I(IS 1"-' )h["IU~IS_
Cada illlrl\~h~l'ci(JJ; capitulo gelleral
tcrtninn

con un tC:Slllllell breve anleS clrl ('''pilld,,),

(cl ellal fUlll'inl1:J

ta)rlhiL'1l coruo

111101

1J1lali,la de (,'nuiIIUS Y lin conjllllio ,k Cj,·rCll:ru.' d" repaso_ La lista ,Jt, 101"111inno incluyc pal a bru-, 'Ill" lucron il!(l"Odll('i,b~ ell el "'''pilule, 0 ~OI1de c:il.n:cial ill'POllllI,cia pnra Ia ('''I 11 tl.\ i,'11 lid Il'xlo Us1<:d .,<, lWlld'i l'rc I cia~:~I,(1~·"gunbtlld(lsc a "I mi-mo sohn: l'i significado dc: c~I(lS I,·-rn,jlln.s y u:';;\I1,[" h, dc:J IIIICH)llC.'i dd Gloxario. A lgunos de Iu.'i ejcrcic i()s ,I<-. rcp"-,,() rcqui. 'rell s(-,Io rC,!'lwsl:ls C()rla:;, oll':!" slIfliaell progr.unux y J1:nycl'l~s pat". ayluJado:t fllrtalc'TI' b cOlnpl"l"rI.\j')1l lid malni"l_ En gelH:tal, los eJel'clcln~ ma~ Sl~tlL'lll()s apareC"11 jlritllC'rp, sc!}uid(l.\ de (Jlms "'de ~,,·ci'.')Il" IIl<is il,lleres:J!lIcS, I.as n'spllC:"I~I., a fa" preguillas ,,,'k,~,"i(lltad'h se illclu),clI dc,splll'~ de] (,los:1l'lu. EsI" es un ILOXII) prori:td" a p:lta apo)'ar lin "!Irsn CS2 fDb"!I" " illlpl:ml'lci'lIl de ~llJgramas _. 'P~'t:l III:is d('lalk~ V(:dSc; KolTlllan, E B., n, :>1 I pic y c_ E_ \'l/ardk" "11 ReC()J1ltllelll-lt:d C\llTielliunl f()r CS2, ('.)1-;>1", Cmf/m_ ACM, 2R(R), :11;<"1.\10 ,il, 1')ll51, <lsi enlll() para d ."lIt·.'i(l d" ('S5 (flllroducei.·lIl aJ pr("''':;:lIll i "lito ,k L\l'rhivo~) y petta algllllos :!sl·ec.tos 1l1iTHiliOS Lie lllalcl11:ilicas de:! Clll.~u CS7 (1:>lnH:IUI':1.'i .k dal,,:; y an,iii"i" dl.' aigntlllllns) Lid i\CM ClItTinlilnn Cotrll11ilkr:: Ull C()Ill[llltn Scir'lle,'s ""Rl'cnllmwndarions jtll'lh" UIlr!(:rgr:ldlJak Progralll in Co 111lllll'l SciclI(:<'" [ C0I1II1L ,1CM, 2'I{J), m:ir~[) [ 1979 (k. 1: Ell d TIIvd de gl'adlladus ap"),a d nlr,,, CS_12 (AIm"cl"lIanlj"l1ln y aC[;e,,,. de m!nnn'}('lOn) dd 1l11;;mu cum itl' "'RccOrlll1H:nd:lli()lls Ii») 1\'bslcr\: I.,~vd Pro,-,:r~llus in CnlllpllI'T Seicllcr:"' f COli/III , ,-teA!, :>1(3), !lIar/{) dl' I<)Kn Tatllhi(~lll:''i llprnpi'rlilo para llpoyar cI "lJr~" IS2 (Prugl-all1w,;, lbros y ":;II'liL"lm",, de arc!Jivo) tId ACM ClJl-riclllum
(,~(lnllni Ikl' Oil !Jlf"l'IllilliOiI lot Ihe RO's: Ulllkrgl';\(III:llr: de 10R2_ Sysl<:lw;" IlIf(ll'lluli, III Syslcill.' Cllnicli!J111) Ik"lml<"llfJ:Jliol),"i alld (3rillltlillc: PI UL! III I""', 1';
('0111111,

~i~c itT

Se ha lisa do estc liluo ell un curso unual de liccnciutura en la materia de Admlnistraciou de Sistemas de lnformaci.rn (AS I), ell cl Colcgio d" COin ere in y Administracion Publica, de; E.slados Unidos, yell un ClJI"SO selHeslr,,1 pata gruduados cn ASI y Cienc ias de I" Computaci on, EI objd i\'0 ptinclpn I al escr ihir exte Ii hro ~.C; c] de estruct Ilr~l')' dcscribir.xle mancra comprcnxihlc, I()~ priucipios del rnanejo d" (btus y cl procesarrucnto de aI'ChlV{)S. Se ha muntcnido "I rigor m'li.erwiiic(l y (k ];! materia, sin ahrumar al lector con dcmasiados dcrallcs. La ],;1,,<".principal para cI materiul del tcxro es la CnSC(bfl~." del mismo, extendi,~Jl(I(ls" a [rave.' Lid crnpcrio, (;S['IlClIO y 11.';(> cn la industria, tanto para consuuccton comercin] COIlW par':\ aplie'](:iollc~ t('CllJe-as )' :;isl<'ll1a~ de udministracion de bnsc .-I" datos. Sc cspcra hahn dcscrito COl! ex ito acercu de e~las haxcx, p:ltil prcscnrnr til csre lil.ro una combinacion ulii de conccptos tcoricox y :lpli"acjml("., pr.iclicas. [:,;1", "c·.gunda edicion dificn- de lu prilnl'r:J "11 ;d!-!Il\\oS aspectos, Sc ha cambiado la oq~aIli:ral'i("m de remus pm" ha("'r !ll;IYOT v 'nr"si" en h rclacion entre ,?rdc"Il:lllllelll{), busqucda y Ic'cniL'as dc, cstructuruciou. Sc' haec hincupic ell las Cat"cI(;tlSlI,::lS de .rendirnicnro de vari.is cstructuras de dalos y archivos, In (l1H: heili(:! cotnprendcr cuando usar unu u otru. Aderuas, se h'l ,-,01111<'111,,010 1"1110 cl Glosario COil\\) cl nurncro de ej,:rdd()s. H mntcrial, ell ~l:t",;al, S!O prcsenta con nuis cluriclud y ,ldenililiellto en ulguuas paries dificilcx. AI tcrrnin,u cl libro, cl lector po. lui allali'.ar r:J Imlllejo de dalos clc lUI problema ('1) pnrtlculur, ;;elef.."c_ion';J[,lu (:";(;1 ruciura ':'Lptop.iada de (bto:":\ y cl.....()tg~'It1i:J,aCI,t'~O dt: archivos, consuuir la "~IIIlc!lJl", n:cul>t:rar d"lu.'i sclcct iv.uucntc, uctu.ilizar y uuu 11(':1 T b (:::i,~[(ll;K 1111':1,V coinprcndcr llUl: cS J() que Ii" va a haccr. 1:1lihn. le proporcionura una base: I lm~c panl (Ic,,'!rrollarsco _junto con csra ICCIloli)gb en cvoluciou del '-'llnll'lc'.IOC~ltnP() lid manC)o de informacion, y pj"(.:parat~l al lcclut p;J1"a CUlll iuuar ;:-iU,':). c~lH(ho:-;; VH tcciucas ,-Ie admjnixtracjon de bases de ,biOS,

RECONOCIMI

ENTOS

J.:1 l'rilll<'l'a

"dici,'lI1 SL' hencfici"'CI'lll,,'i "porlaciollC"" de: tml<,:ho;; lOsludia.nks del I_k.lxlrluIllCll\O de Admillisltaci")(l ,k Sj~!<':lllas dc' Inforlnaci,')ll lI" la Ulliversidad de Arizona, c"pcciall[wntt: CJ;I,Y11J1l Curlis y J-'rui K _ Nel~()I1_ I_us l'cvisiDIlCS "sl"llvictull a "argo ,ie Prnltic:c-Hali, cCil'ecialin(:nle dt: Ruhert P. Burl()lI, <j\l" ayud,) a pl'cpal'ar csla .'iegllnda ediei()I1_ Agradc:r.co a Illi r~lItjJia, pur su cOllliuuo csl illlulo para terminal' eslcl

raha_jo_ Ql1int

pueda

tal"hj<:rl

t<X<.>IlOC<'f "slIlllll10 Sll

pclnl

11" ('Ollwn"at'

"lgl'm otto Iraha_jo" Milry F_ s_ l.oomi.>

,H'M.

2S( 1 J), 1l\)vi~lllhrc

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

.. ,... ~~-"'-

capitulo uno introducci6n a la estructura de datos _


En la primcr.i parlL' de vstc libr« "" .m.ilizan In" pt"itl"tp:lk~ 1ipos de C~lr-tlcl'jra., ("'.lhtns y So.odescribe C"'IIIO '" m.mcjan en progr,mtas,]" cornpuruclora I':"k c'l'iltdo inl!'"dllc Iorio puc-de "y"darlo a comprendcr qlle' ," "1'):1 csrrucrura .I" dal<,::<y ('u:iic-:; -"CJIl la, cstructurus de dutos rn:.is ilnpOrL~lIllcs en sistern~l:'-1 de iuformnrion , aSI como :dgnU'i..,l:-; conocunicuto.. !;eJwmk~ sobrc b~ ",;1 rue turus .I" .-blo::>In~io simples.

I~Lusa DF OATOS
Allt.-, dc "'<""''''1.''1' con cl an,;Ji~is de las <.:slnl.-tLl1a~; ,k datoo, considct"-"l)o:; que: son los da10s y "'11"0 apoyall " jps xixtcrna-: (It-: informacion. La fi):tm, I-I iluxtra cl 1'''1',,1 '-I11l' <. k:i<:lnpciiall 1,,:-; tilt!."" en los '-wolJlceimicIlICl~.; ,]" cualquicr OI'galliz.:Jc.i"H1, [I circulo grande ll.unudo "d:\1os" rcpl'<;~t'nla 0.::1 to.u] de datos en 1<} nrpll~j',a('i(;ll, F,l<)~ rccurso.. son una parle :lCliva de las OP'T)(;jolli.'S 'j plaucnciones de hi ol'ganiza"j6H. ] ,o~ eircul"" nuis ]W(j1H:tiOS rcprescntun elcmcnrox indi vidualcx (] ikJJls de datos, Ius cuales punkt) eOll~jdl'nll'o;e ,:utIlO materia I'tilJl'l y SOil agregadns y sumados en divcrsu., forma,'; l'lI,i1.-, para t"(,r-j uar inlon Il~IC1{'Hl. J .as (i{'l"j~h HlCS SC roman con h~l:Scell t'st:~ it liz )fjna(:i('JI1; esp<~nl[ll()S qlle la, dccisionc, qw, 1()1~1t'111"S scan ini'.)JIwltb,':1 ulguicu. A lu~ n'~ldl:Ld()" de las decisioil"s sc le,; llama acciones, que SO[l rc·gn::,;adas coruo dalos, los ('\1:>1",,; "to pucdcn incorporar ,k~J1Ul;~ a (lIm cirlo dd pmec-"" dc ToW:] d" dl:c.j"j{ltICS

lntroduccron
DI,)..:l!;iOIl
.>'

i\

la estructura

do datos

Capitulo

Mancjo de datos

'\

In'omMf;ll',r1

\'.:.
"-_
-'-"

Inf()lm~Ki6j~

\~~,."
(_)

..,,:~/

tuimcrn de kkfoll(" verdes pl-oducido, por 1" III,i'luill<l de 111old"" d" pl.istico 1:?3.,j5-7R, SC pucde usar para responder a carla una <"I" Ia.s xiguicrucs pn.:gunlas:

N"

.....

'6.:.-\
o

-: . \"
;._

l. ,_CU,iIlII1S Icld(»))os
(Opcracional) 2, Ih"ad""
tu,iljuilias

verdes

pucdc

prndut'ir

a] dia Ia nuiquina

N" ILHS-7W!
,,<I'Itlit'i1'

ell b pro.luccior, bib y corrccciou lk datl)s, i_podnllo,', m.is para hucc r Ickl-()lt()~? l Coni 1'(1)

In:s

I I
I

Di\I()S
()

\
,I
I
!

3,
I

'-.

I
1,'j~IIl-:j l l D;)lO":" (ITI iugrcdicnt« c;:-:.:_·ncialp~lra crnpreml.-r unn ~l(:(~j(;jL 1).as~td;-.en It}lna de tk~d~i~ltlC:-i inlonnadn.
v

;,S" pucdc itdqllirir 1IIJ,I con 'P:lt-1b ~lIhsidiarill '.{lW produzca m.iqllinas paw ruoldcs d,~ pLislk(l, Y 'lsi incrcmeutar [;, displ1nihilidad plOra resrolld"r a los cambios (I<!:os rUtTl.as riel mcrcado? (Plaucacion) .

\ __

_/

tl.~spuc~ln.a

I..os ,bios sc dchen '~'ll'lld urar <:(lrl'ed:llnc:nk paca que ""an Hcn:sibk:; Y {J'''' sirvar, v.uir»; tipos dl'. ptcf.!unfa,s,

Om1<.1

MANEJO DE DATOS Fuentes de informacion N,it!.'se 'P'" cnalquu-r clemelll!> ,k Jail" P'l<,,_k i'clt-licipat en I" gcnel'al'i,* de "paries" multiplex de la informacion. Fs it"p(lrtal.llesulll,xil.ili,hd rOU"1 '{"t: pucduu se'l' ar;I-"!;;H.ios Y sllillados de ",I mall en! qu,' pucda producirsc it Ij,jrlll'ICi"Jll I'll i1 pam :Il'llyal' d('d~i()l1l'S nportunamcntc. N/lteSl' rurnbicn (jue algunos "klllenios ilc dalPS ell 1I11ITCIII'S() dc daros ,k la orgul1i·':Jci'·lI1 han rvsultado de .rccioncs I< \ll1adas por fuer~.'IS o CUC'I'I"''''cxtcrru», a
la organi
"I.~IC((',n,

Los dalD~ son c"~l()s,-,s. Ik["'11 "<:I" tnalleja(l",,; de tallnillwr~, seat) corrcctr»; Y estcn disronibks para producir illl'_lfln;l['i("I,- Lus ;\"pcclo., en ,:1 IlIiUH:_j" de d"lll.~ bUll 10;; sigll icntcs:
• Medici/)[I

'I""


(~ul(.~cci61l
"rralls(~til)C i(",r I
Valida<'iOII


i\IIlI<lc.cllamit:lIlo
Agreg:aci')J\

1.a

ne(~j.j_')!l

de

L'~)tlll

)l~t

id~)I'l'S,

(:1)1 ripon

all lien

In (le. verulcck

.rcs (. ,-'I ien

[l.~~

)' l.;l [ucr zu de leqlJerillli(':1l10~


LU1~l OI·g~1tll'l:tc

i~ )r!_

iL-g"ks, (:1111'"'' ell un

1'1'0,:0::;" de lum:,

de ,k"isj<ltl<.:s ell


• •

j\du.:.dizac:i~')11
){ccIlpnaej(I1' Pr·otCl,:ci(~HI

OrgalJi/.aci(lll del mane]o de datos

Tipos de dccislonos Ll>S datos curnu cs c(lt1vellienk • • rccurxo dcl«- u apoya r alg'Jit,," cia,;"" de tonm (k dcci:iitll1c~. Por cllo, reCOIIOCct (reo cla.,;,,;s illlJlurlalltc,; ,it: decixioncs: 'Ill" t:nhicn"'l1 di"t'i~lItwJ'lc las "clividad,,~ (k Ia
lJrga-

Objetivos
1,:1 l~hil'liv()

(Ie uu "Ic:ien,a dL' Illanej() de ,bIOS ,,~ haccr

que ,:,;Ios xcan adaplahlcs


llI"t

para "I'nyitf e: pro""", clc IOlll:J de d""i"ifll1l'.'; clc !'-iug-en.~ncias \"Itilt"::-; para un ~[:;tcIn~l de adlnini:-:'lr;.tl'i~')[l .k: datos.

tk.\lhk"

(lrgani';ll'i(m_

Cua: to

sun

l_kcisimJc's opcrucionales,
nfznt·:k-)u,

Dccisioncs de em t 1/'''/, que ,kldmjn'H1 I:i forma de (,rgl11l1zar Ia cjccucion "mision" ~~::-:.ignada. E:81~l:~ dcci~;innc.\ :dg1JlI:IS veces son llumadus dt:ci:-;iuIlCS
cas.

d" xu tricti

1.
2, 3, 4.

LOi d:JI()S dci1cl1 rcprescntars» tcnormente. Los ,hto.> dchcn or;';(!lIizurs('


e]cntcuicnt
l~.

y alntacenarsr:

COli icrta Jorm.i pill a accexnrh», c


pnru

pos-

d,'

Il1nI>CI-"

adecnada

ace"~arlo:i xclccriva Y dique pucdan


valor.

Dccisioncs de: efall('iu-idll, (I'''' desml'olbr, "k'IL /\Igullllc Vl'e,,~sou Iblt;<I(bs d,:,~i:'iil

y clerill""
'lIl'S

la "rnision"

de la orguniza-

eSlrm(~i{,{ls_

Los dal""

ddwl1/)I'()('('SII{S(

jJrCSclIlf/I's,'

de led tuancra p.irn q\l(: uo

apoyar

cfi-

ci('lIleml:f1le ul u:-;uati".

Datos y decisiones

Los dalo" dd\t'tl

{!r(l{(:;';"l'se y nutnejarsr

pindall su

·1

"I'" '" "I,,, 'n" nivclcs d" toma 'k dec', "" "'. 1""1'''' "". un "I<-, ncnto d, '''' tos, c] L_,_'S_._n_,_i,_.l_n_,_IS_"_,_IC_l_n_c:_II_l_{-'_S_'_"_'_'I_:I_II_"'_'_l'_'_'C_'_I'_'I_I_P_"_t'_ti_C_j_I'_"_t_"_l_I_I~ __I'_n_"_I_U_C_C_i'_)_ll_'_I<_'_ir_.t_'_)I_t_'1_<I_e_i'_l_[I_I_"_lr_~

~~

"'I.e. ,I<- ~m Ie' "'' ,

d, dOl'" , "',,, ,k """" ;"";"" ,k ""I,;" '. ",,"' son I>_r_il_l_Il_'I_"_l_d_i_"C_'_"_ti_~_'_n_H_"_"_I_a_t_l_'!'_I_'_"_C_I_II_a_C_i,_,_tl_'_"_ll_'_1'_"_'I_'1_1l_'_r'_li_~_n_I_"_Y __ (_'1_-g_'_'n_i_/_"_"_i_')_II_(_I_~_'_L_11_(_,~_-_a-===

I,,,

Ie'";,,,

Introducci6n a la estructura de datos

Capitulo 1

Primitivas

Estructuras lineales y no-lineales


Las eslrucluras de dalos simples se puedcn cornbinar de varias mancras para formar estructuras mas cornplcjas. Las des clases principales de estructuras de ''''tos cornplejas son las lineales y las no-lineales, dcpcruliendo dc la cornplcjidad de las rclaciones, logicas que rcpresentan. Las estrucruras de datos lineales que discutircmos incluyen pilas, colas y lis las ligadas lineales. Las cstruclums de datos no lineales incluycn grufos y :irboit:s. Enccntrare.nos que existcn muchos lipos de cstructurus cle arboles l)l1C son ut ilcs en sistemas de infottnnci6n,

CLASIFICACION

DE ESTRUCTURAS

DE DATOS

organizacion Y pro,cesamiento Nuestro. enfoquc inicial cs el cstudio dc la rcprcscntacion, . a de dalos desdc cl punto de vista de c'SlmctllT."s de datos. U na e.llruc 1iI.r, de c mas fi 'd . I cs una , , '.. . clase de datos g"e se puedc caruct ertzat pOT su orga11lz"~lo.'11 Y oper'lcloncs (C Inl a:-> '. sobrc ella. Algunas vcccs a cstas cstructuras sc lcs llama tipos de datos.

Estructuras 16gicasde datos


. un Las estructuras de d aIDS son mny I1nporI' t It·.s en sistemas cornputucionalcs. ',', En >_ aI ," . rourarna cada variable pcrtcncce u ulguna cstructuru de datos explicita 0 implicitamen p" ' ., . , te d sfinida , la eual determine cl conjunto d c opcruc "tones V alidas.' p'lra ella, Las estructuras , e '" '" " j' de datos que discutimos ugU!. SOil estructuras ru. d aro: ' l' 'cas Cada cstructura de •datos Ogl, , ,,' , . . , ,., 'S logics puerle tenor vanas , reprcsen I: .ion C. fisicas difercntcs para SUs almuccnatrncntos aci , '." .',", f . I· a I posibles. Para Gil Ia e,truclum . tel iatos que consideremos mus posiblcs de almaccnarnicnto. , se introducuan
varius

Organizaci6n de archives
Las tccnicas de estructuracion de dutos aplicadas a conjuntos de datos l)IIC los sislt:mas operativos tnant:jan como "cajus negras" conuinmcnte sc llaman organiracion de archivas. Un archivo tiene ncmbre, contcnido, clircccjon dondc ,e. gunnln y ulgunn informscion administrurivn, por cjcmplo, quien In elaboro y cu.in grande ('S, Las cuatro clases basicas de organizacion de archives que disclllircmos son sccucnc iul, relative, sccuencial indexadn y rnultiilave, Estu-, organizucioncs detcrnrinun como sc estructurn el eontenido dt: los archives, los cuales son conxtruidns COIl hast: en tecnicas de cxtructuraciOll de da lOS,

or-

Estructuras primitivas y simples


, La tabla 1-1 catcgotlza a lcunas dc las estructuras de datos discutidu« en estc libro.' gunas c 'c" 11 AI zunas son primitivas: es dccir IlO estrin compuestas por, lltr~s estructuras ue t.~lll". Co~,siderarcrn(ls brevemcntc ejcrnplos de Ires cxtructuras pnnutrvas: cl:ter~s, h~)oka~oS ,1S Y caractcrcs. Otras estructuras de datos sc pucdcn construir de una a ma~ prun.uvas. . ' de estructuras de datos simples guc consic Ieraremos se co nstruycn a partir .. cstructuras , ald:
'> ,

PRIMITIVAS

Enteros
Tal vcz ya conoce un gran nurnero de estructurus de dalos prirniiivas, porque sc utilizan ell todos los Ienguajes de prograrnacion. Una cstructura de datos primiiiva son los enteros. Un cntero es un miemhro del siguiente conjunto de mimeros:

. .. cgistros , A esras estructuras pnmiuvas y son: ell de , " arreg Io~ y r (;. cnas, muchos lenguujcs de progtatnaClOli. Eslructuras de cates que se analizan en cad a capitulo
Estructuras de datos simples
E.-..;trlJctu[as de o..'l.toscompnestas

de datos la respa

an

Tablal-1
Estructuras de datos primitivas

I· , . , -(n
Organizacion de archives

+ 1), -/I, .. , , - 2,

-1,0, 1, 2, .. , , n, }) + 1, ' .. J.

No lineales Lineales
Emcros (I)

Binarias Arbol binarlc (8)


Arboles de btisquedu bin~lrios(:':)

N-arius
Gnificas (7) Arboles generales

Las operuciones Iundamenmlcs sobre cntcrns, son muy conocidas: Sumu, resta, multiplicacion, division, cxponenciucion y otras. Todas estas opcraciones trubajan sobre un par de numcrox, considerados COITIU opcradores binaries. Un operuclur unario tiene solo un opcrando, La ncgacion, que cambia cl signo de UII numcro, es un ejcmplo de un opcrador unurio.

Cadena (1)
Arrcglo (2)

Boolcanos (I) Caractcr (I)

Pila (4) Colas (5)


Li..,U1S

(8.)

Sccuencial (] I) Rol"liv" (13)


Sccucncial

Booleanos
UII segundo cjciuplo de cstrucruru de datos primitivu cs el booleano, tnmbien llamudo hi!:i("(), Un dalo hll()ieano cs lin clemente que pucde tcncr uno de dos valorcs: verdadero o/ii/su. EI c()njltillo de operucioncs definidas sohn: es tc tipo de estrucrura de datos es dikn'nl" del conjunto de operacioncs para los cntcros. Los trcs operudorcs boulcanos b;\sic[ ISson 110[, and y or (ncgacion, conjunci on y disyuncion, rcspccii vamcntc), La la bl«

Rcgistro (3)

lig:uh.;(6)

Arboles de. busqueda de Mvcaminus (14} Arboles-B (14) Arboles 8', 8+ (14) Tne (14)

indcxodo(l5) Multillavc (1G)

lnlroduccion

,,1<1e structurn

de datos

Capitulo

Cacfcnas

rahla

1-2

opel<'H.lores

bcoleunos

Valor dd pnnn-r ~~I)u,mdL)

V:lk,r\[L'.l
::-;.q!: 1]IICiC.l O]1'.:T;J IRk
j

Y~-·I'"J':I(re r ~~ Vl~t~hd(.'rL) (;LI:-.;\)

V'(~rd'1dl'rlf

jjl[:="'l v,.:r,I.'1,I.:rn

f;il:-.f'
:.l

f:lr:s(~

.\-2 III 11cSlolXl d


f-,OO\c'IlIU,

rcxultudo de nplicar

'''Ida

N<ll<;..'" que or )' am 1son opetadorcs

,"

una rio, EI noftkne prcccdencia sohn: 1111Of' cl ,:u,II cnmbi .. cl ordcu dc la cvuluacion, cjemplo, ell lu cvaluacion de la ,'X I'rcxi ('>1 1 A (1IId ncn (I,

uno de c~tos npnadmc; pen'a cada valor hi nurios, C) ( tan I0 'lut' not c" lin "pcrador '-' ullllnri; cs dccir, en auscncia de purcntcsis, el not <:~ cvuluado arucx del and u or, Pl)r

los ~igLJktlft:,,: 'CD I', 'CD', 'nDe', 'I Dill " y a~i succxivunicntc, incluycndo lo curlcna nula 0 vacia. Por 10 general, cl iuicio y 1111al de una cu.lcna In delirn i 1<111'0::> eon comi Ilas, J ,<IS carlenns SOil lUI iipo iruportante de daro y sc usan .unpli.uncntc Ell primcru inslanci:" lax cadcnns s,>Il d mc.Iio lxisico ram ",><.:rihit prograina~ )' tranxmitirlos a I~I comrlllado,a. Sq;unc!o, xon d mcrlio principa] rh- inlcrcambio de informacion COil los usuaries. Tercero, las cudcnas ~e usan p'lta almaccnnr informncion en archivox, Cunrto, sc usau .:11 leng\lajcs de: prograruucion p;lra nombrcs de variables. Clique-las y proccdiruienros, Y ell un contcxlo Ill';:> general, SOil 1I11clvb (k comunicacion entre los scres hurnanos. AI conjunio de todas la: poxibles cadctiax 4,le se pnedr-n derivar de un 'llfahcto xc lc llama vocobulario V, cl cua] sc .k-r iva de lin lllbht'wA )' se dcnota algllllas vcccs como V,,= A, Un nlfahcto no solo couiicuc Ictrus dd alfubcro IA,B,C, , Y,ZI; Latllbit'n conncnc cualquicr simholo v.ilido. Si eI alt:,lwLo'es (0, [I "nlonc"s lase"dcnas 'lut' sc "hl iencn Se llurnan cornunmcntc cadenas d« bits. Definicion

"!

pri u.cro y cl rcxultudo c'~ i nrcrsccuclo COil A, L, .s val "res verdadcro vfalso I am h i':11 PLiC" l.-n ['('sui I '-If de Ia aplic'-lc ion d" oprradores rrlacionalcs; los e'Jalc,s 1(0 ticncn opc'nl!ld,,:-< hoolean",; Ill~b bien, ;;011 npcTadot<,s COil rcxulrarlox bO"l<:"JIOo, Talc:; (lp"r"d[)re~ n.lacionalcs ~';ll <,:>, =, "~, :.~. '10', 10, =. (los cuak . :s ~~~ lccn como: mcnor tpH .. } mayor que, igu~d ~I, 111C:tlUf 0 ign:d, mayor (I igua], no ~ mayor () igual, 110 )W'tHll''' ig",,1 Y dikwlll"; d,,) Put "jctllplo, " punk opcr.rr -,ohl'<' dos enrcros, ellyo rC:'I111"du e,c; till valor boolcano: (i < 12 l'o vcrdaaero.
Caractere s EI car;idl'l' cs 1l!1:I tcr cna prunitiva rp'" prol.ublcrnctue ya conocc muy bien lin I.':lr:idcr ,-:0; un elcmcnto l[)mad" de un conjunro {Ie sillll-.:>in" lln CiL'Jllpl<)de conjunto (k:;iln]'.-.lus cs 10,1 .23,4,5,(i,7,X,9,A,R,C,[J,. "

n ,,~ l1e\'.,,, I"

dOlld" C<lrb cur.ictcr /lirA,

I'''ta

<i

<: N.
el cua] L'Scl numcro de caructcrcs a I:Js ddinidas en
]a

Cad" ,-,,,den,, ticru- lin .uribnto l!amado


cadena, ,:Ulans_ L"

fOllgitm(

Las ,)per:wioIlG" d<'Jillid", :;(1)1'" las cadnl<ls ,;on difcl\;nlcs Ires opcracioncs priucipulcs "(lhtl' cadcnas ~"n Longinnl, Concatcnacion, Subcadcuu. de cadena

paw los

I. 2. 3.

,X,Y,!."?,,,.,

+,-,

I)
esp~'<,i,d es.

Longitud

<:11 della] "c incluyeu digit,)" Ius cataclL:t·c:; del alb,]wLo Y :d~II1I(lS car:lc!et"s Un cornpilador de IcllglJaj.:. rCC''iIUCC 1111 ('Dniulllo particular d~ cuructercx

H opcrador de I{l]lgitn,l da el numcro d,' carucrcres d.-, UIWcatlcll<l, I~,I'I ticric 'In (lpcratllhl tI" tipo cadena Y SII rcsultarlo cs lie lipu ent ero. Po(]coin()S "plical' L'i "IWi"ldor de' 1()lIgillid " la cadcnn S defiuida en l.i ...cuacion I-I, d,mdo un resultado N ,,] cxcrihi;

CADENAS
lin cjemplo de una CSlrudllr;J dL' .1,,10'; "011,'11'111.1:1a purtir de una l:olrlldllra lie <lalo.'> primiuva eo I" (.'adl:/I<I,]a cual PCS una "TI.Il:I'I('ialinil:1 de ,illlh"los toma.k I~ d.. un conjun10 de curacrercs. 1-] l:(){jjtlIll() (i<: car""kl'l::; que Oi" cmplca 1'~lIa gC1I"I'lt Cldl'lI'1s sc llama alfubcto. U c()njulI\(1 do: c~,klla.\ Sc' punk, ,kriv~11 dd alf"lll'lu t\ ", [C, n, I) Incluy;

N:

= Lenglh(S),

Concatenacion
Ll

de cadenns s<' decI""1 sobrc Ull pur de cudcnas, junt.iudolas EI opcrador ik C(1IICa!cn:ICi('m ticuc de dos

'I""

('I-.::taci(,n de ccncarenucion
a cxlrrmo

cxtrcruo

"11 lIn>l !lUCY" <::llkna,

lntrorluccion ala esuuclura

de datos

Capitulo

Cadonas

opcrandos, amhos ,I" I ip<I uJ(jclI<i y prc)(lucc un rcsultad« por I:.t ceuacion I-I Y S' se dcfiru- p"r

de til'"

ca.JI'II{J.

Si S

.\C

Ikl"mc

Opernciories

compuestns

doudc "DeI;r car.ictcr Y B es un al lubcto, e!JIOIK"~


('''11<:;11 (S,.)")

hrn, ]lam

I -: i < M

Existell otras ")'C't'acoiollc:; cOlllptle:;(as v;;!idas para C[ltkll<lS. Por ejcttlpln, cl opcrudor de inscrciou ticnc dos ol'cnJncio:; de (il'o catlcna, uno ,It" tipo «utero y xu n'"lI[I:HI" {'s de I.ipo c(1(il'l/(J.I.:o opel'",,,j(')11Ill.,,·rt(S.S",iJ inxcrra b e;"kna ,\" dcnlro de la ",ade!>" S, <It- ("I I,mna que cl primer caracn-r de S',,~ cl i-,;~im() Gl[,;ck.r dd rcsultudn
Insel'I(S,S",i)

se forma COllin: ,i - I), S').slJh,tr(S, i, J ,cngtll(S)


. (i _ I»)

cs 'a,u, ' . ,0,)),/):.

',_

h,,'.

C\)llca(Collcal(Sl,h:;II(S,1 dondc

I -: i <; Lenglh(,)") + I, de lipu (S, i. .I)

l.cnglh

,'mlcil

(.'\,S"» - L~llglh(S)

I,c:nglh("\"),
l'(0I!1l,)

I.a concutvnucion de la cadcna ('OIl valor 'S"I'( lVI,' y I" '::Li 1"11;1 Cl'Il valor 'PIPE' tla rcxultudo la cadcll!\ 'STClVF['JPE',

EI opcrador de slIl)I'e.':i(in licIW 1][, operundo de lipo cadcna, d().~ upel,mdo;; entero, y lamhi("ll ploduce 1111 ]'cslllh(i<) ,k lipo cadcna. La OPCI"J(:i<")]l l'kkll' suprime de S 1:1slIbcadcll:l d~ lougil11dj que inicia ell cl i-c·si1llU cankllT.

lk lek (S, i,j) Subcadenas


C(l)Wal(Sllh~II(S, La opcraciou suhcadc..~na tiC1K l'.DtIlO l'UltcO (JP~T'Uldo un.t c~ldcn;l de. ILl C.\l:i~ gcncru una nueva cudcna couro rcsuitali(). [>'11"\ espccil'ic:w complct.uncnte la opcra"WII de sul»:u dena, dcbcn ""pn:iricarsc no ",',in I,.,",,,[ena opcraudo, sino I:Hnhit'll cl 1'''111'-'dl" inicio y cl mnncro de curactcrcs ejl Ie dcbcn 1()11rrsc pam lornu.r ulla nueva "",kl1<1, 1:1 "fWt; ".101 u ~uhc;;dclla [iL"IIC 111l opcrando de IiI''' ('(JtiCI)(J, dih <'P<'I';'II<lO, de I ipll entrro; y produce un rcsultudo de lip.) cudena. Si S SC' dell Ill' POt]" ccuucion I I, cntonces: l.i·

0(;

fon ua como: + j,LCltglJJ (S) - (i +.1 - I»))

I), SUhSII(8,i
<. IXllgllt(S)

dou Lie 1

o <i

<i

: L:nglh(S) 0<; i +! - I ::; l.cl1g1h(S)

Suh;;II(S, i, j) cs 'a,. (I,. " ll, ') L' dOfH.Je i eS el puuto de inicio, () < i -: LUIgtll(S) .i t~::; cl numcro de caructcres a toruur, o -;j < l.englh(S) y o < i +i 1 < Ixngth(S), p;,"'" i, j, .It:: lip" l:11h:W.

Cadenas y cnteros
Hernos dislinguid!l vulorcs ['llilT"" de valnrcs C:\(]L'II:1 (ids l:'laic-, <:SI:;ll d"lill)il"d"s por coruil las), Para disl inguir c~I(),; valores, los kngnajc' tit: progra 1)I;Il' i.m pdr I" regl)];,r 10 haccn de la mi,'lml mancm. Si J 234 c~ 1m cntcro, l~sl" ~c cscrihc emnu 1214. Si 1214 eS una cndena, <'sie sc cscribe CUlm) '1234' u"121,i·', Dc Ia mism., Inaner", los 1"IJ~ll",je~ de prugrmnaci(m disliuglH'B "1'111'<, valorcs cadeila y uombrcs dl' Val'i'lhlcs, 1'01' <'.iC'ml,lo, ELI\1ER pucclc xcr FLl\lER, nomhr e de una vnrinhh-, () ELM I-:I{ ]a ca.lcna. La "'I<hna 1':1,MEI~ s"('~nihcc()t)ju 'EI.1\1EH'" "El A1ER"; y <,InC'IJ,hre de I" variahlu EUdER ~c ""cri!,C como ELlvfER. 'I.n~ lIes opcradorcx lk cad"'lla --lollgill1'd, conentcuacion y ~111)(~a(klla-- nu pucdcu aplicar-«. pam v:niahks que ~UI1 ,it: tipo ,I" dal" cnrcro Si Jese:JIII()S 1" ,tWI' cl cnlcro 12 junto c«I!l cl "lllel'O 34, (,',j vcz 1l011()S cstumos rdiricnd" a la ""ncaICIl~lCi(\Ill'<HI 1l'~\lh'HIl1 123·1, sino lll,i:; bien " la xurna COil 1"CSUlllldo4(). Sin t'lllharg(), ci ..TI;lIl1c·nle c''; vali.lo CllW'a(l'tlar Ias";ld'~nas' 12' y '3'1', que da corno I'cs,tilad(l' 12"1,'[',Ie- l<ltlgil\td .. . ;\If',uIl.s 1
vccc:.-;, 10:-; cntcrox se. convicrtcu a C;'JdC1WS Y sc In~lHcjan corno (~~H_h.'nas, p~lia
(h;~]1ne:--.. (,UllV~:l'Ilf::--:"'_'
a l.'lllct"t.\"-i._

L" lonuitucl ,k la ~\I],,::j(k])({ cs ], dctcrminada


UnCI :\]11 icaci,',n de la npet';!ci<)JJ ~!lh":llkna
concaICll;H:i("llL

['01 I.crrglil(SlIh:ilr(S,i./)), ., cs, pot <'jell1l'ln, d,,~ll(lcet' ill opcr.rcron de

SUhSII(CllIIC11(S,S'l, y

I LCIlJ!lh(S)) cl r..su ltado '" S.

Suh~(r(Col1cal(S,,'?),lxngth(S)

I-

I ,Lenglh(5"j)

lOS

S'.

10

irilrodlJCcion

1<1 estructura

de datos

CapitlJlo

1 11

ESTRUCTURAS

DE DATOS EN lENGUAJES

DE PROGRAMACION Declaraclon de prunitlvas en COBOL

1~o:;knguai"s de pJ'Ognnn"cir'm dan ,,j pWgranlado)" los medius para as igll:J)' una es IIUctura a e",.b variable. Una vari.iblc ddw I 0111 'u valore-, (k 1111 eOHjlllllodc v,lliIH:s(kfinidos por slle:,lruciu ra ,Ie dillo,~)' S(',)n piled,,!! CiC:Cll(,U·,"t:s( II.l[ela vari'lh/e aq\le/las llpnad()nc~ ",,{"inidus COIlI() v;ilidas p"t~ I" l'~!n"'(llra de datno;, V"l'ios kngllaj"s de pl'ugmrnaci()11 tiencr, dircrl'll(e,~ In:Jlll:tas de "slgllat eslnlclura,~ dc daTus a bs v"1"iahk:~; ,dgil11"~ ''<)][1piladnres (otnan IFI,is I'll scrio que (I(!'..,s h rcspoll:<ahililic" rie v('.[il((,:lei,)n dl: las n:glas es(ahkei<bs para una e$(nJdlll';j 01" d'l(<J~ ell p:ltlieu):lt, Pot cj..lllpln, algunos ~()lllpiJa: dnr"s no (lclll'n ell rcalidad <'Hi(bdo ell'llirio ,~cn.uevo III. cat:.ictn aIL,h('lico como 'Q' il un campo de li[1o cntcro; lu cua] genera l'e~lIlt:tdu;; ilnpred.:cihleo, cuatulo "c rculizau
"pcraeiolle::> atilllll'licas, ~11no COllla!' COIl1llClls:Jjes de a(l ,'"rtel Icia, OIH'" Cl'llIpilad,.>l'c;; gl'lll'l"~lIl UII error al ticinpo d,' enll1pibei('lll l_) liClllPO d c e_i<:C'IIc:i('I),dql<'ndiendu <.'llalldo oc.urrn un inovimi"lllO 1I "pnaci(m ilegal.

Las siguicntcs SOH la~ i'Ol"1l1<lSr,11 las cuales Uti pmgr:lllladnt de COBUI.. punle derillit "ari:II,1e ....con cstructums de dulw.; de cntcrox, ho()1c'!I!()~ y earadcr(;~_ Slll'nilgamo:; 'I Ill' la var.ahlc entcra sc I]ain;l]',i COUNT, liene un !n~ixirn() d" 3 digilo~; Iii vari.rhlr- I"'H>!e"!la ~e llamar.i SWI1'(:I/;}' 101 variabh; "",-jdcr ,'it: llumnr.i nETA. La DIVISION dt: DArO;; de1l'rograma dchc incluir:

de

UJ 0 HINT I'ICTlJRE S9'N. 01 FUM I)ICTUIU': x. 0] La S, ell Ia dallsul" :sitllD p:.u-a j x.rmitir COBOL
"0 liell!: l'aC1eri,lica

COBOl" rc:quic)"t'll que cl Pl"<~g!"atnad()r cxplkiraclIIpkada ell d J..1fO,Ql'allJ:i Otrn.~ letlglJajc~, por ejell1plu FORTRAN, (ic'n''!1 !ipn:; de datos ddillidl>, illll'li..:il;ltlJL'lliL'. Es <.led]', la~ variahln; que cn'lPic:CCII ('Oil I, J, K, L, Ivl "N son de lipo ,'lllel(_!:l monos que ~c declar"n de orra Ionun clpirciiiJIfl('ni,e,
mciue dL'c)ilrco iii cslrucll1r;l (I<- "ada v:ttial)le Ell algulloo; )It(ll'(')sil{l ejelllplu lcIlguait'~, c:; C0K,IOC{)HOI~,hay UIl:1divi";i'JIll'sp""i;li dcclaraci,'ll priucipn]

Algunos

knguajes

como Pascal}'

SX SWITCH V!\Lln: BETA PICTURf': X.

-v

PIC1'lJI~ E de (_,()\JNT, r"l)t"Sl:!JTiJ l,1 si~n,) ,1"1 v.rlur. S,' lIc'C(:sila r.] cl :dulHt.Tn;'Hnienlu de valorcs tll:gatIvos ell unn vat"iahlc Hlml~rica,

1a

Pa,~c"l, /;J CSII'llclllnl

cn un program" ellyn de' la, ':slnK'lur'h ,k daills, I'll otr:», le!Jguaj<:~, pot dl' un.i vnriuhlc deh" ~n previalllclll<.: dccbra'h mll.c.o; ,Ie:

usar!», PLj I tiencla itlc;!mcej,')Il DI_\CLARJ: pal'" I" defilli('il'lll de dal()s; Pac;cailir:m.' "I cnunciado var: ell FOHTI~t\N ex iSi<:n I(ls "mll1l'i'ld,,~ INTcCi/'H, REAL y 1)Jl\IFNSf ON.

un tip" dc: d"lu lIalllacio hnnkaIH); cu SII lugur sc pucd« vinl,le:lr I" ,'ade norubrc (Ie- condicion p,mL "snchr I';')ahl'''-, COil l"s VI.rOr-,,~ LIIIt: un daln dClI1C1!(al [>lll'de a;;l1tllir, ;\si, I",; nombrcx de (:(l11lIi"i'\l1 Sl' jllll:ckn ''1111'1'''<1'"11 ill:;TrIlCCiUile" cou.licionalcs. Por cjcmplo, aqlJi, cl nivcl :ill ,'S cl ll(l!llhrl' dc la I.'(lJldit:iclll S\VlTCH, la ella] ,;" del"ille para IL.'IIl:f 1111 valor hook:Jll() verdudera ('lIilll< 101,'I.[)A ,,,a igllal 'Y' y cl valor hon/",mu/a/,I'o pClr:)clI<l/qui,'r otro valor de I'LI)i\, 1':lJlunc<:.s, "I I,m.. gtalll!Jdor puc, lc codifi Cat

II' SWI"I'CII 1:1.,')1..:.. Estructu(as de datos definidos por el programador en /lIg:tr de l'villchu~ kUQlI'll':S de ptogr:lIll,'l<:i('m ol'rnTII al prllgl'alnOld()r ur: C<.>njlllllo predci'illid() dc esrn"'lm,'ls de d:do,';, ()ll'os, d pr(lgr;lIll'ld()r plledc: d"rin it SllS propia, (;Slrnnllms de datos. pOl' ekillpl(_) Pascal, con xu <:Illl!wi'ld" Iyp" y cl kllgllajc: C ('Oil d clJlJtlciad() :;J_ru~, Algllll",~ V'Tl'S ,'sl" C:.lt:lekt·Ltica :i<: IlsaI"~" d"r 111111(>I[)h)"" dermid(l pur cl pmgl':llllat/or a ja~ C:oltlldllI'8" prilniliv:l" qllC .s" dd'illt:n en d siS(etlld, pet" ('l1"Ilhi,'11 s" puvdc utilil.ar para ddillir una "slcllellll':wi,'m drl dell!>..; m:is "1''''lli,<1 del ptogr-:JJll'ldOl'. Ell ]O~ l-lllilllUs cuprtulo-, di:,;cIJTirL·III(l., al,~lIlli.l~ dc la~ eSU'IICIIJra" d" dalOS Ttl,i" C(lITlllUes que IlU piled':11 itlallei"r dire-clIIITWlll<: 1a maY0r-la de II):; knguajes di- jll'C)FI':nll:]ci<in. I In>J de la,~ diktclwias Ill;i" tlo(:lhlcs entre ".~Irllclltta~ de daTos pmpUfciunada,; por cl kngu".ic, l's(rW;(uras de d:dus pt"ddillida~ y dcfinilids PUt l'1 l'I'U[':I':Il11adnr, ,:;, 1'1 vu li(IaCkll1 dc las opcrnci 01 ws ;;0],[<' las "olt"llcllIr;Ls de, Jalns, Unn cxccpci I'm son h.,.; )cngllajes de l)I"ogralr),I"!<'llll]l1l' (Csl:ill OriClli:ldn:-; a llhjlll"~ (:]110> """Ie:; <:1pl'ur;r"lll:ldor dcci:lrcl de rnUTll't'a explieil;l d C(mjulll0 de (l1"'ra.:i()IWS dis[lolJihk:; P,jt":l IIna "S()"lIC1l1r~ (k dalo:; ddillid,'1 (co!]lliTlIIl<'nle Ilantada dose <:IT ,',0'; )eJlgll:ljc:s), EI cOl"llpil:lllllr rerlln/.a i:J I'e~L1e ItiCl'i61l de '1 1:'llic"tncll!e a'jIlLllao.; '')In''ej(llJc.\ I'lled,'11 CJllpkllV: P"t" mallipllI,'JI" ill'; ..

TlIl~N

nn

II, FLUA 1'1.~ r:

'Y' TIII~N.

J .a X indica que I'LD,\


carac
para

COIlOL;

c] ') p:m,

y [lETA lull1"l1 vnlol"cs dl'. lin '''.'niull(o complcto <II' L'w';,dc-re" COUNT iudica que los vulorcs O'C Tuman dl: un l'(")lI_jllIJIIJ de

It..~ It:"~ III i lueriL'tl.s.

Dcc1araci6n Un prllgranl:ldol'
ci,,,.),, var. hool"'Jl]allaml".la

de primitivas
ell Pascal switcl:

en Pascal las ,,_,[nlelm:'ls prillliliv:IS de datos lIsalld" d cnuu una variable r:nkra 11:J11J!ld:l cont, lin" ,,:enable
de c:lr:i<.:lc:r Ilam:ldLl bela:

(kcbr;l

POI' <'jcllll'i(l,

p:-JEl tln'latat

1111 Ilolrlhn,

~anci.as de

('.sa .. ..;e:\h'[[(_'[~Jnl:-;.

Var UJ~l[!f:~~g~;

swilch: huo!l'~m; bda ... :har;

12

lntroduccion a 1<1structura de datos e

Capitulo 1

Forrnas

de almaccnnnuonto:

urltc~ros

13

EI mnucro de dig;""; "11 (0<'111-'coI"l<','!e C()l)t~"I;H "I [ormatcar l:! kell]r" ala variable <witch st' lc punk ",'ignar d valor true " Lib, tvcrda.lrro

y ln

('scritOJra;

FORMAS DE ALMACENAMIENTO: ENTEROS


Un'l (~;lI-:H:lnislic'l de 1111'-l "tnwluw " dl' daln, I')j_\ica, L'S qm: pllL'(k kiln varius forma" posiblcs de almaccn.unicntn Y rcplrscI01" .. i("il n~ic:L Ell ,('<,<"i,l I1 Sl' diScule]] all(OJl "'S alu-rnativcs para ulmaccnar cnlcro«. Para cllo, "I)!:"ll"~ compilaclorcs tomun [(,d:L,'; Ia" decisi[)11l:S W,ccs:lrias paw la r-cj>le';clltacj(\11 rHea a utilizar, eL1[:lll[() que n[I',>,<pcrmircn al pr-ogcatlladur xclcccionarlus de 1.111 oujunro de opcioncs pn-dcfinidas. c

(l/ills").

,.~t"

Declaracion de cadenas en COBOL


Las ca<iellas sc I'\led,~n dcclarar con ('Kii idad ell COBOL, Para d"clanu lIll nomhrc vuriablc llamada Dirccciou "I'll uuu Inilgillld de 25 car"dnc~ s(' ,";eI"ih",: UJ n][(ECCION PICTl.IFE XC.?.')).
L'(1I1JtLll[(I

de

Rcpresentaci6n

por signa y magnitud

E! :llfahdn
compilu.lor.

paL' dcrivat

1:ls ",,,kim, e~ un

<1" cane-Incs,

rcspallbd"

I'm cl

Dcclaracion

de cadenas en Pascal

Una forlll:J posible de alrnaccnuuiicnto p;.ra entcros L'S a (!'",,<'s de signo y lIIagl/illl/l, (ILL" vouvcncionnl (k I" rcprcsnll:Lci(i]] (k numeros por los humauos. La magnitilt! sc rL'])res<:nla por ILtL" hile:r;L.le digilos pl'ec,:di,b pur LIIOSigLH' llL';:; (+) (_)IrWU()S (-) segl'ul se tr.uc de l~tltt_"n),s poxitiv .... 0 tH"g~ll i VO:-:" I"CSpccI iv:mll."J l~i.". Colt fTccnt:lJci~l ::-:.C ~:-:. ornite cl ~iguo de m:L-; (+) L,:11l LLSc) olidialH,_ Sill ,:Illh'lrgo, c c C'stc sc cklx cousidcr.u cuaudo ~c pmce~a nwdi:H,k h ('()mpuhd< '1':,- 1.,1t)l:lgnilud ,k un numero ,', cl valor natural de una hilcru de digito~, En cl crnplco di,lriu por ~I sc)' 1111111"110,la magnillld de LHL muncro xc tCl'n'~''''tlL1 ell haxc I () (,ktilrlal), Ell Ia rncmoria tI" la t~... mpILlad"l':J, I" I""gl)-I[nd ~t~ represent» en h:1,,', 2. (hinario).
c,> la Ionua
l

Aqui

carla clemente del urrcglo Ibmarill "dircccion" coniicuc un ell uctcr de]" c.ulcua. Los arrcglos se dcbcu CIl11"""U' si se lk.~l>" h''''''I' "CfC:L'l'IKi:L a 10<1:1 I" cadena; de "tra manna solo 10., c.uactcrc-; que iUrlu:J1O " b c~ldl'l,a p,-"II;in Sl"L'ld'"rl'ncind"s, Cnnsicicrarcmox a los alTcglos 11J,i~ del:dladallLclJlc en .:1 ,iel,il'Ull' c'lj,il,J\,,_ FI ]cllgnaje PaSC"I)WHllit" "I pL-ogralll:1dc>r dat un nornbrc a unu nucvi cstnJ(~tLlt:J ,Ii: datos "01I1[>L1<"'" y dl'SpU~'s design"r till nuevo lip" de vuriahlc: POL' ejcmplo a b cstructur.i de ~bt"s I()lmada pm la primitiva char podr:; &it:-.,'Jt, "I nornl-rc de c:,dell:l"2C,:

EI SCI" hum.uio "11 cxclusi v" usa lu forma de :;igllo y m.rguinul, Si desarrollamos algoriunos computacionales JX't':1 suruar numrrox en su [onna de sigtw y magnitwl, cncontr.ucrnos que cuando los opl'randus ricncn signns c.nl][t·atin:s~ la suma _L.:;.e. COUvlctlt' t:!I substraccion, lo cuu] complies la operacion. Par" cvitnr ,,~tc probkma, Ia forma IhllH"da /liJr complcmcnto c-, otra forll,a dc' :,]rn:J(:cll:ll1licn[o, Hcpresentaclon

de complemento

a do s

Ikspm's,.:1

prngr"ln;,dut

l'udl'Ji

cSI'C:c'ifi"ar

que' las v ;lrLrhlcs

noiubrc

y dirCTci,ill ti"I"~LI

esta cxtructura:

Dando l,lS cutcros 00 11"g:.liv()s X, X' y R ddillilLH,S X' """1<' d C()JII!Jlr~m''''l() r/,' X con respccto (J R " d complernento I~ de X cuaudo X + X' " I? Ell b r"l'tcs"lll;rcj,',1j ,k complcmcnto, !"., cntcros X SO]] IlatlL:\{k\:;.!;JI1!WS vcrdadcras y Ius ciucros X' - R - X ~,.u Ilalllati, 's /;)rJ!JtIS rir' comptcmcnto. I-:n unu I,m "a hinaria, una elcccion pr:jclic' del cornplcnu-nto de ]a coustante R,,~ L11"1 l'OivllCia ck 2:

a .. 2",
Operacionos de cadcnas
Algunos knguajcs ticncr: int.-gradu, "PCl';l(I"fl:S para II! manipulaciun <1<: variables cuyu cstructura de: ,],)10:-: ,,,'n catll'1W", I'IJ/ iicuc LEN(_;TH, SUnSTf< y II (",OIlGlleLL:oci"lIlj_ COHOI. tien« STRINC; y lJ NSTRINU, En bs iengn"-jes qUe" uo C< IlIiCrnpl:lo ('~[()S "1"'radon's rll[!<ialll<'lltah,,, (""nlU rase"I), d pro;;r,,,,,,,dor .h.hc e::nihir bs rutin..-. rorrcxpondir.ntcs p:.t.::.l cjccutar opcr.icioucs de ·radcn:ls 00 cxtl"a .... las rutj nn-: de nlp,ltna -r bibliotcca de C(idigll~_ I.engllaje" como SNOBOl., lJCSD Pascal y LISP )1nnLil<:n al
l

progr;lI11ador Lllanipubr

n,lJ L",ilid"d

h, "l'l'r:oci(\llo ,Ie cad"",,-,

l~ll':ltlg' I < k "I ltc[", 'S '1"<' ,'" pucdcn r"l)n:~"llt;Lr. El ",dOI-1L L"Y<lr de 2" cs 2,'" i\ los "i,'(t("m'L\ (]" I ra",:f()L'-nlaci,-lll qlLe "-,,an R ~, 7,'" sC I,''_; ""r"xc como sislclll:lS d" complcuivnto " dos, La tabla 1-3 ilu~[n. lu H'j1rc~".'n[:l('i()ll de -"igllf> y n'aglli[uJ e11sislema hiriario, Y la rcprcscntacion ,h' COin 11k .. uunl o a cl",; ("_',:11"1,, R ,- 2"') para cntcrox l:Olllprclldit1()s en un nll1)C(l ,k --7" 17, La IOI'llia ,]" C(lllll'kmcn[() r ~ R- X r"pnos\COla d ""Ino l1egalivn (-Xl; y I" forma v{'I<Ltdn" <I.. X 1'''I>I"l'';Cl1t"{"I "nllTO positivo X. I., 'OJ all',<lr-j lll0:; '-IlK s('. cmplcan pura opcru: de lonna ariunctica s, ,h,'c cntvros reproI ~"t)[ad,,, ell b forma de complemcutu, '<'II m';~ ,,,kcn,,,I ... para [u c01nl,ulaciura s q\le los 1,:1 d"""i"u <I,'_IIi dl'lnlllina
1<~Jl1c's"ut"hle ell C:""lll'knlClLlu

...

____

._------_

.. _._---_

..__ .

14

Inlroducci6n a la estructura de datos

Capitulo 1

Formas ue almacenamiento: caractcros

15

coruplernunto

Tabla 1-3

Dn~;mGtnlllls,par a I.) repH~s.E>fLt~.cinn de valorcs erdr:rus:


a do~;

~iyrlD

1n,)Q[litu(1

en hinario y

.\i~',lh)

I;I)I~: I ~ I

flt;~~!1 illl(1 bill:lrill

{ ·nlnl~II·llI':lIh> ~Ii in',

bio Decimal Codifi"'Jd(H-ll Hinario (Exlcmkd Binary CI ,ded J)ecjll.lalllll<'r~'hangc C:)(k, EBCDIC) y Codigo E,I,indar Aln'.,ricann para hucrc.unbio de: Informacion (Atncrl""n Standard Cude for Information Illterchange, ASCII)_ EBCDIC

i-n

--()

-,

III I){I 1(11 j(~1 011 (JIll (101

1001 1\)111 1011 I HlI) III1I 1110 1III


!"~'[lll;~S d,.ol

EI cl'><-!i!-,:oBCDIC E

,I

tcr (c un COllJllf1 I(1 l,' J (). ("()'J K hI-I, Iny _, .• I... I·


~

<:S dc: 8 bits, IClseualr:s:;" rcquicrcn ~" '" ((·s dcc.r

para n,pn:~"llbr
, Cj 56} ~.

cualquicr Clinic_cornhinncionc-; posthks_ 1.,,1

-2 +f!
!

1(11)11 , (101 ,0111 <-()JI


I 1110 1,][11

l)rHIII
[triO [

COHl!ll,'llll'IJ),

conjunro de caractercx que: cl u·,digo EBCDIC puedc gc~llnar ill~'lllYC tanto caracrcres alfaht'licos en mavuxculas y minuscnlus, digilus y un'l grail cuntid.id de caructcrcs ex-

pcciules.
ASCII
f"I·rll:l:.
v,'r(bd~·r:.:-.:

-t ,~
I)

uoin
11011 (111111

-l ~
I _I

-rC) 17

[illil
OIHI 0111

II!)

I-III

1'1 ASCII CS WI l<"ltgO de 7 bits. I by)7 "umbitl"ciUI1"~ p()sihks, las cH"k~ son la llIil,·".i dcl numcro de ",-,raelnes rel,]'csctlr"d(ls pur cl d)riigo ELlCDIC_ I.a \--.:t II"Ja cs !i'l<' C;,ti;r caructcr conxurnc iucuox alIIHlc\.~nalIdcntu y sc rrunsmitc con [lUIS rapld(:;:,

Esqucmas
algorillrl(lS p,ara!~,aniplIl"r cntcros rq~rC~Ctllad~')s pOt· I" i"0I1n<1de signo Y lIlagilillid. Dc cslc Ulud')::il :iC tu-ncn que: Cjc(:lIlar' u!llci,,-,s cakulos sohr" unn variable ,'ukra, PUL,tlC Set acollscjah lc n '!1l'l'SCUlJ tb en all tl"n'Il~H Itielll(, ut il [/.Hndo tJt '" l'onlla de c(lfltpic Inen to. Representacion

de proposito especial

de complemcnto

a uno

se dispone de: ,d}_'UlIO'> <I,. proposito especial, 1.,,1 En ('sie lip" de ,,'"'dig.), los c~lr"cI.l't(" -«: rq"-''_ senran POt lOU nuincro vuri ahk: de hi Is, dependicn<i" de Ia r rccucncia rcl.ui vu de oLurrerwias dd car.icrcr en c] vocal.ulario de la aplicacion. 1;_,acnIL~"_lahlc rcprcscutur Ins cuructc res que O{:lIlTCIt ""11 mas frn:nc{]cia con cl patron de bih meltor y los carucrcres d<: mcnor lrccucncia l'(\11 cl 1',111"("1) de hils mayot-_ Por cfelnpll), ,,1\ la labia 1 ··,1 ~" rcprcsentu cl cur.ictcr 0 con ItII solo bit, c] 0; cl caructcr A Sc 1"I.'l'tC"-'I1I:.1 Ill> p"tW!J POt de 5 hils 10101; eI ecll'~iclc:r dc % se rcprcxc nt a pUt 1(11 puuon <icc J() bib 101111 ! II III 100!. Una dcsvcntuja de 1<1 t-Cpt-"'t:!ll'l<~il'ltl ('ntnptirnida rcxultuntc es cl
proccsumicnto IH_':C~.'--i~H-io p~lt;1 cudjfk:HI"

I':nlre nlro~; l~~qtJC'm'lS cit: codificacion cornu la familia de q·,dig()s Huffuuu..

!:-:SI"sistellla
a uno (IlS"lld,)

de tr;ln"lurtHaci,'ltl

Ill:; ejcrci cios, a] fi II:!I de I C:lpitu I, >, sUf!_i"tc desilm )lIar la tqm.'scnl

::iccconocc como sjSI('IlI~\ de complemcruo u 111/0_ lIno de ac ion del c()Il'pleUlclIlo H~ 2' -- I) ,Ic Ir,.'i('Illet,-,sde interv.il» 7 a 1),1-:1 siskln<\ rldc()tnpl<,tI1el)(()

tC:CUlIucct

carach"rcs,

Uso de codiqo Mr ichos COlli pi lador('~ surni n ixt t-an s,-',I" una Iorma para _aJ rnacenum ielll() dc~ ""r-a'.'icTcS. 1\ lgunox, xin embargo, pcn.iitir.in ,II pmgr;J1l1ac!m cS]ll:l'IIICar el uso dc.algunos c()fligus Gil un prng\W\Ja, POI' ejcmplo, un rr<.>gr:un;l ell COl I{)! .plIede lccr o "~c:ril>tt ,_bluo; ltsand,: c,idi"n [,BeD[C y .Iar C()tJlI.':JI ihilidad "I>It ,. di l-erc1<lt's"'1'JtI'''~ <.II: <"(lllll'''!(>' On'os ,bh" pucdcn lccrxe o e,>c'l'ihi r:-;l' en ASCII, snlm: 1,,,.10l"lllJllid"dc:.,d,· Il'dad()_y IKHlla!b_ (laos dalo, puc.len rcprcscntnrse ll.s"lld,) C(xlig"" intcruox dc' lIntj,'n"td"d, St 1"-, ."'-'tI compurlidos Cllli proccsos de alglllt otro equip<l_ Hepre scntacion de datos numorlco
(1I1r,'·
L'lI

a 1<lIO prop<>l-eiona hs tniSIl!a, v"I>laj'iS "uhf(; la fOrll1~1 t.lc ~ign" y magnil"d que 10:-<e d cUlllpkmt.'1I10 a d,)s, Sill ('Inh:ltg\l, [dglln()s ,dg()rilnHl~ "tiIIIt'·'liens de <:Ot"plel!lCnlu a dO'S')ll u"i" eOTnl'kj(), s(lhrc la Iouu.i dc·<"()tllpir'meut" " 'Hll>;)' otr,,;; "'11 tll:;:; l'()illplrojo., h"jo lu f"rma de '·otHplc:lnel!ld" 11110_
Tanto
l'S

lux fOrlnas

de

:-.lJ.!Tlfl

Y Jrl:lgllillld

Cnl"110

bl~ de

enl11ph:lnen!O~

h:.srcallll.t~le

rq1n~"<'rllatl etl!.c:rn,'; pot kJ))a

aln

tuccnur

y v:lri""i,in ,olm:- I:t magnilud de:! nutncro. Una allnll;niva cnteros digil.n pot diglln~ tratando cmb digito corn« lHI c:lnldl'l".

FORMAS DE ALMACENAMJENTO:

CARACTEAES

s
~c'.

H(lY en ..ria cxistcn inuch.», l:Sl]u'-'lnac;COliS!) par" 1:0 rCI't,·sct'lac:i,.)]) (I.: da("o; tipo ,-,,,r:;<'II:[. i.o" dos c:;qll(;llta~; prcval""iclll<:s de codificac;"'11 'J)Jl d u"digo ,'xkt"lid" de lukrc-am

L"s :Ird,ivos P:ll',l ,cor inkre~lmhiad(),,; EBCDIC (l ASC[J, ya sea 'jll<' l:slc'n

coinputadorus cinta magnd te'"'

cscribcn

,)

Ir:,ns!IllIHI"s

pur 10 general ,'n pOl' tclccomuui

16

Introriuccion

[l

Ia

8 slruclur<l

do datos

Capitulo

17
cacion. Por 10 tnnlu, 10:-;c~qucIna:-.; de cDdinC;lCil~)ll de: caracrcrc ..... ot! Irccucncia c

Tabla 1-4

CoJiso HtJfflll'-Lr1

paw una aplicuclon pClJlic1Jlar

Sl)I)

llsatios 1',,1'1 rqH'''''''lll:or' "Ilkr-!),. l ill .-;igrl() de mas " tn,'llUS se. ;111]):O"<'l1a l'nn I" reprosciuacion de los digitus P:OI" jn<ijc;u' ,i ~!'trurn de un valor poxitivo {l ll,'galivo Pur 10 )c:cncr-al, ""tc ,igrlo xt: "h";.\cCIW a la dcrccha del digito .k- oulcn mcnor del I u'!lnero , Hc prc seutuciou de decimal ernpacado
opcioncs

()

f)f).b

1 2
/}

~}_7
4.!)

:{
6
1

:J.5 3_3 3.2 :LO


2.'/ 2.7 2.2
UI I)) 1.2

9 F
B monk
J)

1.1

E Z I' N
u

o.s
0.7

l.0

O_G

o.s
0.'1

C II it

no'!
0,1 0,:)

M
1, I T

o.s
0.3 O.2f>

S K
Y

0.20
0.15 0.15 0.13

II lUOO 110(1 ]()(IIO 10100 10101 J 011 () JIIOO 11101 1111 () 100 j 10 1011 J 0 11 J 110 II () 110 110100 1101111 ]011110 1111IlO 1101110 100]1110 ] 00 I I 100 1()ll11l01 11)1l11l 0 11111110 1111111 I 1I0111ltJ 100l1l1Jll 11 (JIll! I [) 1101 I 1111

;J

Mill J lOS 'co )111)'ilar lot"", ofrcccn .cprexcnuu ClllnllS,

,ul iLi(,ltak~

V;H·j ""I

c~ '"

,IXL" ~sl(lS l'{'ldigus

pata

Ii Ii
{i (i

cmpacado. Fs~e esquclna H.. rHCScnla d:llo.s 1UllU("rico;:.i de nrancrn uui-, cOllci:-;~l .i] almaccuar dosdfgi" I"~ en K hit«, en l11gar de uno (l'III:J1CDrC). I"" R hils de nub a b dCfl,dm no S('>It) ",-,11IlcJ'l'11 cl digiln de rncnor ordcn :-;iulJ unnbicn c] ~igno del muncro. La til]'1" 1 5 ilustrn la [('I'I"<'.":III;[(·i,'111 de IOf: enter()s entre -')0] a +')OJ, ll,allri() val'i,!s C"~;qtl"lllas de rcprrsell!aci{'m pur C:Lr~.clcr.
"llnlJati""

vuiz,; I"

II";S

llsacla C'scl i'ortn;ltn decimal

Ii Ii '/ 7

FORMAS DE ALMACENAMIENTO: CADENAS


Ahora que ya St' ha visto como Sl' Tcpn:,"'IITall (",; caracic-rcs de f"nn'l individual, COllS)dCfl'1lI0S bs ultcrn.uivas p,\ra I:) rcpr,'~;enlacic'>Il de (:;,,),'1[:1'; de caractcres. LI disl'll"j,"'l)
ell L'sta scccion ~" limita a Iii rcpn'."'lllaci"'ll ,I<: cadell:ls «n <""l'acill conriguo: cl almaccnumicut« dt'. ":ulcn,,, de )l'ngillid N rcqucrir.i fi,;ic:lmenk ".sP;lC1p ;HIY:JelOll1" 1":\1';1 N (~:It~l('l t,~n~:s_ 1\:11(1 (k:-;.crihir LI f'l.lrllJd de alillaci.::tl~.unl(':n!o l.'()ntlgllu de ~:adc:n'-t''';~c ...... ]u..':cc..;:!rll) iDdit:ar" (1<"11<1" cnruicnzn y (k>nd".I'Tlltilla i:J c;ldel>". I':n cuda lIll" deb,_; ,igllienlc~ convcncionc«, sc ncccsuara al rucnos una vuriublr apuntmlor.), 1\-h1s<l,kl:lIIk hahlan::mo:-; del lip" 1.1" oalo::-:; ;JPllllLh"I()l"~ por ahol'a di !"t:111n:; que cl valor (lei upuntudor cs uun dircccion, 'l'S .Iccir, cs cl icicnlific;"lor de: \11)') Inc"lidad de "lm;tcCllaln i('1110.

'r

8
K

S 8 K

8
K
!) !)

L()ll~J.

p r om , .de car.]_cLt~re~:

....:...

rom i n rio
IUOllll111 ]011 I 111()O 101111110J 10111111100 101l1111]Ol 10111111110 101111111110 I 0111 I 1 111 I 1 lOl111l111110001 ]011111111110010 1011111111110011 10] 1111111110100 1011111111110101 1011111111110110 101111111111()lll 101 111111111 1000 1011111111111001 1(1111)1111110)0 101111111111101 L 10111111]1111100 101Jll11111]1101 1011 1111111 J III () 1011.1111111 11111

X
G

0.1 ~

o
w

o.i o o.in
o.ns

Q V

(1.03 003

10 10 10 11 II 11

to

!)

O.fi;)flXl+O,112X" + O.ZOG X ,> •. 0.7,; X 6 1 0 ,0111 ~_ 7 + 0.24 X8 + 1).005 X [J+O.OO·lbX 10 0.0017 X II + O.()OO:~ X 12 +().OOOIXIJJ "-:?. 91 ni t.c p o r t:al."Ztctcr
j

Alternativas

de almacenarnie nto

n.n:'
0.01

onoo

12
Hi
l(i

11)
l(i

&

H;
16 16 II;
II; I '-lIn

-:

) ( %

O.()Ol

LHCI)IC
AS('lt

1111H.11l1
OIII()(11

IG
16 1.6 11; lli

111 WIlI)O OIIIlOOO


(Hil 11100

111111011 If!

11l1l11l110

10(111

0101'111

I (WJlOlK)I)

It,

Hl('I)tC

1111111111

1111()(j()(J (I I

11)

1\,('11
,nod

nilimll 1011[001.1(1

1I1d1)(1

11111#)11 Oll(llll I

(j(IIOI~IO()
IJlIlIIllI

111.11111\)1

Fue-nte: J Mnrt in, Com/Hun


hH' .. ~(n1), FI!.~ _L!.ll:

D{Jin

nU.f ()"g.wi?~Jlirm, 2J1(1{·d. (hlgk~w~

eli frs, N .1..

['n."lIL

i,.T.-!-J :.11, .

18

lntroduccion a la PsIJlJctura de datos

Capitulo

l-ormas de almacenanuento: cadenas

19

en csr"cilJs

cnJI[igIJos_
=

CDEFC' Y CADENA2

US<'ll1n~ CU[lUl c_jelllp[" d'b '[le])'_

cadcnas:

CADFNA

'AfI-

3.

Guardar una tubla CIlIl b ~igIJj"lll<.' inhmll'lci('JIl pam cada variable ,t.: tipo cadena: nombrc, direcci<iu dc inicio y llsando Ull" 1l1~I]'U\ ,k'llll de caclcna (cs tln'if,~) para ddil"ilar la cadcna, I'm cjcruplo, NOMIlH[ CAD[NAI CI\[)FNA2 INI(']O /\1'1' II APT21
pLlcd,' xcr

I. Guurdar Ia tahla siguienlc COli informacion puru cada variable de ti1''-' c.ulcna: nombrc, dircy'(,i"'Jl de inicio y longitud, I'm cjctnplo_
NOr-fB!-tE CADLNA I CADENA 2 EI rOl'l)l;llo corrcspondicntc IN[OO LUNC;ITUD 7 E1 i'01'l1lato corrcspondicnrc
SCJ C

APTII AIT21

J
put'lle

de almacenalUi,'llln

d" almaccnaruicnln

A
\

BC

DE

""

BC
\ \

ABC

xr-ru
n (tTasbpandc> I,\s "adl'llaS) ;\ Il CJ)~FCi
.~ -. ..

Ii (;

LJ Hcpre scntacion

APril de c ad erms cmpacndns

,\1''1'21

\'.
i\ 1'1'2 1

1
APi'll 2. Gu.rrdnr una tahla nombrc, apunrudur
<'(>11

APT21

01 ru tontlsi rlct:oe ion .01> la rc pl'e~"nl "eic'lll de ",,,_kll<lS alrllaC\'.Il~l(bs, e, que Sll rcpresc"ulaci"ll S" plll,da eU11'ac.ar 0 d",cllll'aC<l1'. Dado un csqucln'l dc' codil·tc:·oei'-'Il J>"rliclIbr y suponicndo una m,i<jllilla lJl'icnl:H.1a a pal.ihru», ln rrprcsetum.ion ctnpacada de: una cadella consiste en gllanlaJ' cuda uno de Ill:; codig()~ P"l'il I,,~ caractcrcx en palahra~ contigua» dt: almaccrl:IUlil'lllO, 'YHI {al1r"s C:lt:wll'-res e()lun Sc';\ posihk, La cad"lla '[>01'0CATEPE'I'I,' C<'11<:\I:1[n, euta('(CT,'" c'mp'lcados 11<'[ palabra sc mucstra ell 1a ligllra 1-2.

la ,~i).;LJil'nl" inru[,I1l<l"ic)ll para cuda vru'iabkJe ripo cadena: do.: i [,ieill Y upuntador dl' tcruinucion. Por o.:jemplo, INIC[O AT'Tl I AI'T2 I Tf:RMINACION AI'TIT APT2T

I ~;:)~')'~AT~[ I'~~ [
f- --1"
palobrn i p.:tI:,br.l i
+1

i+

:2

NOMBl~I: CADENAI CADI':NA2

i---

I I

p;~!;!br.J.

Uenn"jizandn, ulruaccnar

con K cma'~lnc~

por p.ilahra,

cl nurncro

b ""dena

'rLUngill'd(STl ,~C~ j(--

-'-"'1'

d"tlde

I I

l ., ,
de I',dahtas
L·~ unu

I'L'ljIJ<;tid:ls para

tuncior,

rk fcdollr\(;<)_'

--

A
I

CDEI'Gnc

,
\

AI'Tli

APTIT

APT21

i\VITr

Alg"Jla" vccc-, eel n'>Lligo dd "::Ir,ictn ,.>t'r;1 mixmo t.un.ui« de la p.ilabru. Sin embargo, del d cc')dign ASCII, dL' 7 biL; POt car<icll'l', pcrmitiru do" '''Hader,'s ell uua palahra de J(i hits con dus hih iksapl'<lV.~chadD~, o <,,,,,11'0cur.u.tcrcx en una pulubra de. T2 hils con cuutro bits lIO utiliz.rdos.

Hcprcsentacion de cadcnas dcscrnpacarlas


L1 rrpl'cs(,IIf(l{'irilJ de Cili."~II(/S dvscm pacada» c"Il-'I~k vn d nltuuccrunuicuo de un cap"Lohl'a pelr .. cada "'1I':'c\<'1' dc una '''ClwnLi~t Pur II_)gl~I)c:r-:d.cada caracter
":" ~· (:~In.:-;i~km s -I; 1-\1 " (1 LI~::~I ~l [uuvicm \
]lP

t",,\l'I' en un,
'_
-'~"

APTII

,\1'1'21

AI'TlT

1'_1_f()1 '"

.<.

:-\!uo:.-t:c I pr i mer

\':~!l )1'cntcn

LOI

yor quo ~1i~~Ll!11

al (fl{:r

:_rl~i(). ~,)<:.~r o!.;"'~~11IPI(l

20

Introducci6n

a la estructura de datos

Capitulo

Resumen

21

sc guarda ell los hits de mayor orden de la palabra. La cadena 'POPOCATEPETL' almacenada en un formate dcscmpacudo se mucstra ell [a figura 1-3.

Figllra ]-3

Ejemplo dc la Iigura 1-2, en una rt:pr,;_~st~!Iraci6neselllpacaua, d

muyorcs, como 1'1 CDC, CYBER 175 y CDC 7600, ticncn palabras de 60 hits. E~las computudoras son Inuy uti lcs para calculos cicnuficos debido a la mayor precixion posihie POt la mayor longitud de la palubra. Un codigo de caracter d« 6 bits (BCD) rcprcscrua adccuadumcnte 10 caractcrcs pm paluhra. Algunos codigos que ahorran cspacjo xe emplean cuando es poco cl cspacio en memoria 0 hi capacidad de almaccnumicntr, cs muy limitada. Las codigos que se usan mas en lu acrualidad para el intcrcambio de dat()s entre compuindoras son el EBCDIC y cl ASCI!. Muchos vcudcdorcs de compiladores ofreccn amhax opciorics. Adcmas, todos los vcndcdorcs de terminalcs proporcionan cquipos COil proccsadores que accptun uno 0 ambo» codigos.

Para almuccnar la cadcna S, en format" descmpacado, rcquiere de uu nutnero de: palabras igual ala lor.gitud de S. i,Cmil de las dDS Iormas de ahnaccnumicnto de cadcnas cs mejor", csto dcpcndc del objctivo que sc pcrsiga. La rcpreseniucion empacada cs ideal paru situaciones donde es muy importnrue 13 minimizacion de a.tnucenamicnto; sin embargo, las operaciones son pm 10 general mas lcntas en rcpresentacioncs cmpacadas que ell representacioncs descrnpucadas. La reprcscntacion dcscmrecndu no rcquicre cambios, mascaras 0 converxion cuando sc manipula cl contcnido de bs palahras.

RESUMEN
Este cupitulo cmpczo con una revision de la importancia de IllS dutos para el proccso de toma de dccisiones en las orgatlinlciones. Sc propusicron directrices para los sistemas de administracion de base de datos. Se intrndujo d conccpt« de cstructura de datos y varias estructuras de datos, que scran anulizarlas Il1US adclan:c en cstc libro, Se introdujcron enrcros, boolcanos y caractercs; como cjcmplos de cstructurus de datos primitives. Sc introrlujo tarnhicn una estructura de datos compucsta, llamada cadcna y sus opcrudorcs fundarr entalcs (longitud, concatenacion y suncadcnas). Se estudiaron los mciodos para dcclarar enlcros, boolcanos, caractcrcs y cadenas en COBOL y Pascal, Estos dos lcnguajcs sc usaran en toclo cl libro, para ilustrar cl tipo de upoyo del qllC cI progrumador pucdc disponer para la definicion de estructuras de datos y SIJ manipulacion. Ex ixt en varias alternativas para almaccnar cualquicr cstructura de lblos logica en la cornputaclora. Se discuticron las rcpreseruacioncs de signo, magnitud y complcruento de enteros. Se introdujcron los codigos EBCDIC y ASCl[ como tccnicas para a.macenar caractcres y su usc para cl ulrnaccnurniento de cntcro», Por ultimo, sc 1110St1'0 Ia rcprcscnlccion de. decimal cmpucudo de enteros, La forma de almaccnar una cadena involucra tanto 1) la rcpresentaclon de carla curiicter de la cadcna, como 2) lu rcprcsentacion de la cornbinacion de caructcres que forman la cadena. Sc propusieron ultcmarivas para almaccnar Ia informacion ncccsaria para encontrur el inicio y cl Iinal de una caclcna, dcspucs, sc hizo la distincion entre rcprcscruacion ernpucnda y descrnpacada de cadcnas, La sclcccion de la transformacion m.is apropiuda patu cualquicr csirucmra de datos particular, sc puede basar en la manipulacion qlle sea ejccutada sobrc cstc dato, las curactcristicas de los valores que tcndni la estructuru de datos, y las caractcnsticas de [a computadora <lsi como de la memoria, que procesuru y alrnaccnani la cstructura de datos. So: introdujcron algullas ventajas y dcsvcntajus h.isicas de las dilcrcntes Iormas dc; "II rracCtlamiclltll. I .as eslructuras de datos son escnciaks en 10;;sistetnas de infumlaci''">fI. Pura SCI'eapar. de disciiar npoyos eficict]tGs para los recurs()s de lIntos dc un sistema de illf()1111acic\n, ~G debe c()lllprcnucr cC>lno r"presenlar y manipular los datos. Los lipos de datos '111"se U5an en un progratna uyucJan a delen11inar cm,ks son los requ<:l'illlien!os de ulmacctlll-

SELECCION DE LA FORMA ADECUADA

DE ALMACENAMIENTO

La scccion anterior puede convenccrlo de que' en real idad e x istcn varias formas posihles de almaccnauriento para las cstruc-urns de datos. La determinacion de cual es la opcion mas adecuada a usar sc basa en 1) corno sera rnanipulada la variable, 2) cl rango de valorcs que icndra lu variable, y 3) las caructcnsucas de la computadora y de Ia memoria dondc 5(' proccsura y almaccnaru la variable. La eleccion de la forma de cornplcmcnto 3 uno 0 ados irnplica que los algoritrnns aritmericos que sc van a usar son menno complcjos para la computadora que la representacion de sigtla y magnitud. Los aigoril1ll0S paTa calculus con cnteros representados en un c6digo de digito POt digito son mill m.is cornplejos que los ulgoritrnos para la forma de signa y magnitud, D" hccho, muchos cornpiladorcs convicr.cn numcros del Formato digito POt digito a una represcntacion de signo y magnitud 0 complcmcnto para cjccutar la aritmcrica. Si los crilculos sun menus eficicntes con la rcprcscntacion de digito par digito, CHtonccs, i.pm que exislen? La razon basics de la importancia de los exquernax de codificacion, tales como e] EBCD1C Y el ASCII es Sll capacidad de representacion de carneteres no nurnericos. Aderruis, si los datos numcricos han dc set exhihidos en una terminal o escritos en un rcporte qlle sea cornprcnsible para el humano, enionces dchcn represcntarse en un codigo exhihible. Los ccidigos EBCDIC y ASClI con [recucnciu son crnplcados para codificar datos ell cintas magncticus 0 trunsmitidos via teleprocexo,
entre computadotas.

i.Por que hay tantos csquemas de codificacion? La ruzor: principal es 'Juc difcrcntcx grupus los han dcsurrollado par<l varios prop''")SilllS. Algullas cOlnpmadoras talcs COIllO 113M y DEC, llsall palabras d.:: 32 bilS. Un e[ldigo pata un catUcier de 1\ hils (EBCDIC) es muy convenientc para representar datos COil esle tumm'1o de palabrils. EI sistema DEC-IO tiene palubrns de 36 bits. Un e[)digo de earacter de 7 bits (ASCII) cs convenielltc para representar cinco caractcres por palahra, can un bit para cl signa. Las compuwdmas

r II

r-.

22

Introducd6n

a la estructura de datos

Capitulo 1

Capitulo

1 Ejercicios

de repaso

23

miento, qui ticmpo de respucsta tcndrrin, cualcs son los requcrirnientos de proceso, que rcquerimientos de entrada/salida hay, etc. Una gran caniidad de estructuras de datos esuin disponibles en primera instancia, puesto que diferenl"s tipos de datos se utiiizun en distintas form as. Las tJslruclufllS de datos que sc utilizan actualrnentc, dcfincn las rutas de acceso entre los elementos de datos viables. EI enfoque de cste libro cs hacia la cornprcnsion de como pueden emplcarse varias estrucruras de datos en la solucion de problemas de modo eficicnte y efectivo.

4.

LQue resulrado

5C obricne de cada una de las siguientes operacioncs dondc 10 variable booleana PRIMERO tiene e] valor de verdadcro, la variable SEGUNDO tienc el valor/aL,,) y lo variable TERCERO tiene e1 valor de verdadero't

a) not PRIMERO b) d)

PRIMERO and SEGUNDO (J}uiTERCERO or TERCERO PRIMERO or SEGUNDO

c) PRIMERO e) PRIMERO

TERMINOLOGIA
alfabeto

f) not (PR1MERO or TERCERO)


g)

not (PR[MERO or TERCERO) and SEGUNDO and SEGUNDO) and


/l()t

ASCII
booleano cadena cadena de bits caractor concatenaci6n

longitud de cadena operador booleano primitiva representaci6n de cadena desempacada representaci6n de cadena empacada representaci6n represontacion representacion subcadena tipo de dato vocabulario de signo y magnitud decimal empacada del complemento 5.

h) not PRIMERO i) not (PRIMERO k) not (PRIMERO

j) PRIMERO and not SEGUNDO SEGUNDO) donde


[3

i,Cwil cs cl rcsulrado de cada una de las siguicn.es opemciones, ~]I rienc ~I, valor ·PIE' la variable 52 tienc c[ valor ·MA?:~" WHEEL ?>';.~
a)

variable cadcna
53 tiene el valor

EBCDIC
entero estructura de datos orientada lenguaje de programaci6n a objetos 16gica

Length(52)

b) Lellgth(53)

~iJ.o:'S'i·. .!,('-o
,\ \\ \~

,,>-.--.J ..~~ ,

e) Concal(S2,Sl) d) Suhstr(S3,4,3) e) Concal(Suhtr(S2,1.3),Sl)


t) COllcat(Sublr(S2,1 ,3),S3)


\

>,~'

\" . J i, ~. ~.-. - ..~., ,:,.//

',." ..'

~'l, >//
!

-,

'I
'II!

g) SunSlr(Concat(Sl

,S2), 1,Lenglh(Sl)) + I,Length(S I))

REFERENCfAS SUGERIDAS
BAHAN!,

11) Substr(Concal(S2,Sl),Lenglh(S2)
i) InS"rl(Sl ,Substr(S3,6, 1),3)
On

F. B. and S. S. JYENGAR. "The effect of data structures programs;': Comm. ACM, 30(3);250--259, March 1987. 772,
OCL

the logical complexity

of 6. 7, 8. 9. ]0. 11. 12, 13.

j)

Delele(S2,2,2) del complcrncnto a uno (con R ~ 2< - I) de los cnrcros en el de R para los ados

k) Jruerl(S 1 ,Dr.Jetc(S3, I ,3), I) Construya [a representacion rango de -7 a +7.

BOYER,

R. S. and J. S. 1977.

MOORE.

"A

fast string searching atgcrithm."

Comm. ACM, 20(10);762in pictorifl


infor-

CHOCK, M., A. F. CARDENAS, mation systems," Computer,


HALL,

and A. KUI'IGER. "Manipulating data structures 14(l1):43-.~O, Nov. 1981.


"Approximate lis,s,·' string matching."

<Cnal cs el valor minimo de R, necesario para represent." cl coruplemento valores entre: a) -10 y 110; h) -100 a +100? iCwintos bits se necesitan para rcprcsentar los valores en In para los valores entre; "1 -lOa + 10; b)·] 00 a + 100'1
iCu:i11l0S bits sc necesi.an
f0l111<l

]2(4):381-402,

P. A. V. and G. R. DOWLING.

Dec. 1980.

ACM CmnplItlnl!

Surveys,

de complcrncnto

TURBA. T. N. "Length-segmented

Con", .. ACM. 25(i\);522-526,

Aug. j~82.

para represcntar valorcs en la

r011113

de cornplcmcnto

a do> con a uno con

R - 2"? i,Cu,\ntos hits sc necesitan paca rcprcscnrar valores ell 13 rOm1a de complerucnto R = 2'" - I? LCual"s SOD los vnlorcs mayores y mcnorcs '1l1e 5" pueden reprcscntar cornplcmcnto a dos eon: 0) R ~ 32; b) R = 256; c) R - 2N? i,Cu,iles son los valorcs mayores Y tnenores, que se puedcn rcprcscntar cornplcmento " uno con; a) - R = 32; b) R = 256; c) R2N - 1'I

EJEflCICIOS
I. 2,
3.

DE REPASO

Excriba una lista de aspectos del llli1I1CjO de datlls. neccxnri.», cn un xixtcma de inlonnacion. De estas tuncioncs, i.cu<lj de elI", rcsulta m.ix elI"·! i,Pur quc? Escriba cinco ejemplos de valorc , cnterox.
Escriba

en la forma de en la forma de

tanros ejenlplos como lc sea po,-.;ildl" d~· vahuu-, h(1oil"anDS

LQue tecnica- utilizaria para almacenar cntcros en los corr.piladorcs de que usted dispone?

24

Introducci6n ala estructura de datos

Capitulo i
~~-'-.~

14. 15. 16.


17:

i.QUe tecnicas utilizaria para a.maccnar dispone? De la reprcscntacion


De la reprcsentacion

caractcrcs en los cornpiladores

de que usted

(
I

-----_."

---_.

Encuentrc tablas que den los cooigos de los caractc res en EBCDIC y ASCIl. de su nombrc y dircccion con el codigo EBCDIC.
de
$\1

nornbrc y dircccion

con el codigo
0

ASCII. alpiIl aim rnunero, en codigos Ires cadenas:

18. 19. 20.


21.

Represente 5U numero de iderrificacion del scguro social EBCDIC, ASCII y decimal cmpacado. De al men os Ires posiblcs Iormas de alrnaccnamicnto 'MAGPIE'. 'PIE' Y ·MAGENTA'. cadenas traslapodas?

capitulo dos. arreglos


I

I !

de las siguicntes

~Cu;ilesson las vemajas y ctesvcntajas basicas que dcbcn considcrarse cuando se almaccnan
"Cual son las venrajas y desventajas que dcbcn considcrarse cuando
ernpacadas.
$C

almaccnan cadcnns

22,

"Cuelcs sun las vcutajas y desvcntajas que dcbcn considerarse al u,,~l': a) .un indic~ctor de longitud para irlcntificar el filial de 1" cadcna; b) un apuntador para identificar el final de la cadcna.y c) una marca de lin de cadcna pant identificar cl I1nal de la cadcna? Explique en que dinero un lenguaje de I'rogrmnaci,\n oricniado a objcios de un Icnguaje de
programacion convcncional en cuanto a las opcracioncs sobre las estructuras de datos,

23. 24. 25. 26. 27. 28. 29.

\._

iCual cs el conjunto de caractcres.rnas complcto, que sc lisa en cl compiludor de xu lenguaje programacioncya sea Pascal 0 algun otro (COROL, fORTRAN, PL/l. ... l?

de

Invcstiguc como debe ser cl f'ormaro de enrrada de cadcnas par"

SU

cornpilador Pascal.

Escriba un progra.ua para leer y cscribir cinco cadcnas de caractcrcs, cada una de longirud de 10. Modifiquc su program a para leer y escribir N cadcnas de caractercs, cada una de longitud indetcnuinada. ;,Cw!i"s 50111(1$ t'cquisilllS de entrada para SI! programa? Escriba un programa q"e utilice los opcr8dorcs de longitud, concatenacion y subcadcna, Agrcgllc los operadores de inscrcion Y suprcsion ell el programs del ejercicio 28,

En estc capitulo se discutcn las estructuras de datos conocidas como arreglos, los cualcs son bloques basicos para la construccion de estructuras de datos mas complejas. Cusi todas las estructuras complejas se pucdcn representur indirectamcruc mediante arrcglos. Primcro dcfiniremos los arreglns simples y multidimensionales y, despues vcrcmos las facilidadcs para declarar arreglos en COBOL y Pascal. Gran parte del capitulo sera dedicarlo al lema de como alrnaccnar arreglos uni y multidimcnsionalcs. Finulrncnte, se concluye el capitulo can un analisis dc las tecnicas para representor arreglos disperses

y triangulares. Encontraremos que los arreglos son muy utilizados en la estructuracion de datos en la memoria de trabajo dc un prograrna, asf como en Lacstructuracion dc datos ell archives mas pcrmanentes y en bases de datus.

ARREGLOS UNIDIMENSIONALES Un arreglo es un conjunro finito ordenado de elementos hornogeneos. La propiedad de ordenacion significa que es posible identificur el prirnero, segundo, tercero, ... , y c1 enesimo elemento del arreglo. Los elementos del arreglo son hornogcncos porquc todos SOil del lnismu tipo de dato. Un arreglo pucde ser un conjunto de elementos de tipo cadcna ell tanto que otro puede ser de tipo cntcro. Los elementos de un arreglo pueden scr, a SU YC7., otro urreglo. A los arreglos por 10 general se les llama tablas. La forma mas simple de un arreglo ('5 cl arreglo unidimensional, conocido como vector, Un arreglo unidimensional ilamado VICTOR, cl coal consiste de N elementos, sc pucdc represent at como en la figura 2-1. 25

26

Arreglos

Capitulo 2

Arreglos multidimensionales

27

Figuru 2-1 Ejemplo de un an:eglo unidimensional,

Subindices
Los subindices a indices de un clemente designan su posicion en el arreglo; en la notacion que se emplea aguf, un elcmcnto en particular sc define can el nornbrc del arreglo, scguido por cl subindice del elcrnento entre parentesis, es dccir, VICTOR(I). Otras posibilidades para desi!,'11ar al elernento del arrcglo VICTOR con subindice I, SOil: VICTOR[I], VICTOR], VICTOR!. Notesc que s610 cl arreglo en su totalidad tiene un nombre, Para hacer referencia a los elementos de un arreglo es necesario utilizar un subindice, cs decir, su posicion relativa en cl arreglo. Esta convcncion permico al prograrnador escribir algoritrnos que mediante cifras recorran los elementos de un arrcglo, enillgar de usar un nornbrc distinto para cada elerncnto,

DIO-INGRESOS(l) contjenc el promedio de ingrcsos del J-csimo del estado, donde los estados son ordenados secuencialmente, Asi, PROMEDIO-lNGRESOS(l) es el ingreso promedio del estado de Aguascalicntes y PROMEDIO-INGRESOS(32) corresponde al ingrcso prorncdio de] estado de Zacatecas. En algunas aplicacioncs es mas natural usar un limite inferior que no sea igua] a 1. Pot ejemplo, puede ser Imi.s conveniente almacenar las temperaruras de un expcrimento que se registran cada 10 segundos desde 0, ell lin arreglo con limite inferior iguai a o. Aun mas, el limite inferior puedc ser negative. Este cs cl cnso Irecucntc en arrcglos que almacenan datos que se exhibcn gralicamente, tal como en un eje de puntos en cl renglon de -100 a + 100.

mas

ARREGLOS MUL TIDIMENSIONALES


Un atreglo de dos dimcnsiones, es un arreglo en el cual cada elemcnto es otro arregill. Un arreglo Hamada B, el cual consixte de M elementos, cada uno de los ccalcs cs un arrcglo de N elementos se puedc rcprescntar como una tabla de M por N, como se rnuestra en la figurn 2-2.

Definicion De rnanera mas formal, cl arreglo unidimensional de datos 1; subindizados dcsde L hasta U, es
A(L:U) = (A(l)] para f = L, L + 1, ... donde cada clemente , A, COIlelementos de! tipo de cstructura

u-

1, U de datos de tipo T.
ell

A(l) es una cstructura

La notacion A(L: U) indica que los subindices La U.

de A estan cornprundjrjos

un rango de
M

El mimero de elementos en un arreglo se llama rango. EI tango de un arrcglo A(L:U) cs U - L + 1, en tanto que el del arreglo B(1;N) es N.

Figura 2-2 Ejemplo de un arreglo de M por

N,

Subindices Ejemplos
Como ejernplo, un arreglo unidimensional contiene las mediciones de temperatura de una ciudad, n:gistrada cadu hora, durante un periodo de 24 horas, Estas mcdicioncs se ordcnan por su hom de observacicn corrcspondientc. Todos los elementos son de un mismo tipo, pues cada uno corrcsponde a una medicion de temperatura. EI valor rrunimo permisible para el subindicc del arrcglo se llama limite inferior; el valor maximo permisiblc se llama limite superior. Ell nucstra definicion formal de un arreglo, L cs el hmitc itd·edor y U cs el hrnitc superior por cl tango del suhindice de A. En el ejemplo mcdiciones de temperatura, un limite inferior natural es 1 y e] superior es 24. Al arreglo 10 podcmos llamarTEMPERATURA, y en TEMPERATURA(l) registrar las mediciones pam III I-csima hora, dondc 1 ::; 1<;24. Otro ejernplo dc arrcglo unidimensional C$ una tabla de promedio de ingresos estatulcs, si llarnurnox ill arrcglo COlTH) PROMrDIO-INClRESOS. 1"1clcmen to PROMEM

Es neccsario espccificar dos subindices arreglo bidimensional. Por convencion,

pata idcntificar lin clemente indi vidual en UII cl primer subindice hace referenda al renglon

2 r-.
~.

BII. 1-~------'--

J)

Figura

2-3 Elcmenro

8(1,1) en un arrcglo bidimensional.

_.

28

Arreglos

Capitulo

Arreglos

multidimensionales 29

Y "I segundo suhindicc se rcficrc a la columna. Esto es R(J,J) lOS elerncnto de B que est;) en el I·esimo renglon y J-csima columna del arregln B, tal como se mucstra en la figura

2-3. Definiciones Mas formalmcntc, el arreglo bidimensional B can elementos individuales de tipo T tienen subindiccs para el renglon quese cxiicndc de 1 e M, y subindices para la columna, desde I hasta N es B( I :M, 1:N) = IR(I,J)} para I = I, , , . , M y J = 1, , , , , N
dondc cada B(l,J) es una estructura de datos de tipo T.

J-esimo e,xamen, EI valor de I pucdc cstar entre 1 y M inclusive; J puedc estar entre 1 y 4 incluxivc. Cada elemcnto del urreglo csunu calificacion; todos los elementos pueden ser enteros 0 de punto Ilotan:e con dos dccimales dcspues del pun to, 0 bien puedcn scr caractcres, todo dcpcnde de la convencion arloptada.

Secci6n transversal
Una seccion tran.sversal de un arreglo bidimensional xe obtienc al manrcner a uno de ~u~ subindices e(~~tanlcS mientras sc hace variar a otto en el tango de valores para estc ultimo. La notacion frecl1cntemcl1te usada para denotar una seccjon transversal cs un a~tcriseo (*) para el subindice que puedc tomar cualquier valor del tango definido, Por cjcrnplo , 8(*,4) sc refierc a 13 cuar:a columna B(",4) De rnancra scmejante, B(l,*)
.ee

Se dice que el arreglo B es de dimensioncs de M par N. Existcn N elementos ell cada renglon, y M elementos en cuda columna de R; asi, el total de elementos en el arrcglo B es de M'N. En general, un arrcglo bidimensional B, donde su primer subindicc tlcne limite inferior LI' y limite superior Up y su segundo subindice ticne hmires L, y U" inferior y superior, rcspeci ivamente, se dcfincn como B(LI:Ul' L,:U,) ~ {fl(J,})) para L, <; 1 s VI de datos de tipo T.

del atteglo (B(J,4),

B prcsentado

al inicio de la seccion, es dccir: B(M,4»)

8(2,4),8(3,4)",.,

y t, 5J5 V, donde cada B(l,J) ex una cstructura

es el J-esimo

renglon

dcl-arreglo

de B;

EI numero de elementos en lin rcnglon de: B cs U, - L,' I Y el nurncro de elementos de una columna de B es VI - L, + l. Asi, el total de elementos en cl arreglo B cs (U, .. L, + l)'(U, .. L, + I).

W(47,*) es cl rengion de W que conticne los vulorcs registrados


<'11 el47o,

dia del ana;

Ejemplos
Los arreglos bidimcnsionalcs son muy cornuncs. Pot ejemplo, la Cumara de Corncrcio de la ciudad puede registrar el numero de horas con ciclo despejado durante los 365 dins del aiio. Estosdias pucdcn set almaccnados ell un arreglo con dimcnsiones de 365 por 24, Llarnernos al arrcglo W, los valores de W sc puedcn clctcrrninar par W(l,J) ~ I si esui dcspcjado durante la J-esima hnra del J-esimo dia del ano, o en cualquier' otro cnso, cs decir, si neva, Ilueve, llovizna, etc" durante la J-csim~l hom en cl /-esimo dia de! uno.

BOLET A(* ,3) es la colurnna de BOLETA, que conticne las ealificaeioncs de los exurncnes de todos los eSll1d,iatltcs del tercer scmestrc, Una seccion transversal de un arrcglo bidimensional es esencialmenn, una rebanada tomada del arreglo,

Transpuesta
La [ra~lSpuesla de un arrcglo bidimensional sc ohticne invirtiendo las posiciones del sub!tldlCC. La tl'anspuesta de un arregio de M pOl' N es un atteglo de N POt M. La transpuesta de <111 arrcglo B cs ccnninrneme denotada por 8': La transpucsta de un arrcglo R sc rnlle~ll'a en I" Figura 2-4, Por dcfluicion, li(l,J) ~ D'U,!).

Todos los elementos

del arrcglo son de la rnisrna clasc; cada uno es un boolcano. Otro ejernplo de arreglos bidilnellsjorJuks es aqucl que contiene datos sabre las calificaciones de los cxarnerics de estudiuntes de cuarto scmcstrc. Estc arreglo lIamado BOLETA, puede tener ditnensiones de M por 4, donde M es el numcro de estudianrcs. Entonces BOLETA (J,J) cs la calificacion obtenida pot cl J-csimo estudiunr« en su

30

Arreglos

Capitulo

Arreglos

en COBOL y Pascal

31

Figura 2.--4 Tran .spuesta del arreglo de la figura 2-2.

Por ejcrnplo, B(3,8)

= BT(8,3)
Sexo

El elemcnto end renglon 3, columna 8 del arregio B cs el mismo clemente 8, columna 3 de la transpucstn de B.

en cl renglon

Flgur~ 2-5 Ejerrrplo de un arrcglo tridimensional.

Extensiones a mas dimensiones


Un arrcglo se pucde definir como un arreglo tridimensional, eU3tridimen.'>ional, N-dirncnsional. Los conceptos de subindices, range y numero de elementos se pueden extender dircctanrentc de una y dos dimcnsiones a arreglos de ordcn mayor, En general, un arrcglo N-dimensional requicre que los valores de 10., N subindices xe cspecifiquej; para idenrificar un clemento en particular del arrcglo. Un arregloA N-dimensional puedc identiflcarsc corno

entienda 10 que cad a dirnension significa). El arreglo COLEGIO se puede representar como se muestra en la Figura 2-5. . El valor del clcmento COLEGIO i], J, K) es un entero, que representa el numero de esturlianrcs en la clasc I del scxo J en cl colcgio K. Para quc I sea valido debe cstar entre 1,2,3,4,5 y 6; J debe estar entre 1 y 2; K debe estar. cntr".! y 10. . .. ". Es dificil graficar un arreglo con mas de tres. dimensiones. Una s~ccwn lrall,~ers~1 de un arreglo multidimensional se forme manteniendo uno 0 mas subindices ~~nstanles y hacienda varier cada uno de los otros subindices en su tango de valores validos. Por ejernplo, COLEGIO cspccifica scxos, cl numcro (5,*,3) de estudiantes de la Sa. clase (graduados) dcl Scr. colegio, de ambos

Un clemento it"lividual de un arreglo A se pucdc espccificar par AU , I, ... , I,), I donde cada subiudice J, csui dentro de los limites pcrrn it idos Lk <: I, <: Uk' para cad a k: = 1,2, ... , N El nurnero total de elementos en el arrcglo A. es:

11
~ ' •• J

(Uk ~ L,

I)
COIllO:

COLEGIO indica el numero

(*,*,3) del 3er. colegi() para cada clase y ambos seXDS.

el cual tarnbicn

se puede cscribir

de estudiantcs

(VI ~ LI

I)' (V, - L,

I) * ...

"(UN

- LN

I).

cs uno que pucde contener datos accrca del nurncro de estudianres, en cnda una de las scis clasificacioncs de estudiantcs de la universidad (de primero, s.:gllndo, pcnul.imo y ultimo :1I10S,graduados, no clasificados) y por sexu, para los 10 colcgiDs de la univcrsidad. A dic.io arrcglo 10 podernos llarnar COLEGTO, con dimetlsionc-s {k 6 por 2 por 10. (Altcrnalivamcllte, las dirncnsiones puedcn ser de 10 par 2 por 6, 0 6 pot 10 por 2, 10 por 6 por 2, ctc., siernpre y cuando sc

Un ejernplo de un arreglo tridimensional

ARREGLOS EN COBOL Y PASCAL Arreglos unidimensionales


Los lcnguajcs de programacion mas comunes utilizan ~l.mismo enfoque para declarar arreglos. Para dcclurar un arrcglo sc ncccsitan especificnr ires casas: 1) el nombre del urreglo, 2) cl range del subindicc, y 3) cl tipo dc la cstructura de datos para los

32

Arreglos

Capitulo

Arreglos en COBOL y Pascal

33

elementos del arrcglo, Considere primero la dcclaracir'm de un arrcglo unidimensional llamado TEMPERATURA, can subindices en cl tango de 1 a 24. Suponga gue cada c1emento del arreglo es un cntcrc, can Tunga de 0 a 99. En COBOL, para referirse a la I-6simu temperatura como TEMPERATlJRA(I), cl programador tiene que introducir un nombre de agrupacion para los elementos del arreglo, Par 10 que resulta con venicnte agrcgur!e el nombre TABLA al nornbrc del arreglo de aplicacion. Asi, [a DIVISION DE DATOS del prograrna debe incluir:

Mas dimensiones
EI nurncro ejcmplo: maximo de dimension!.:,; que sc pucdcn declarar en COBOL cs de tres, Per

01 TABLA COLEGlO. 02 CLASE OCCURS 6 TIMES.

01 TABLA-TEMPERATURA. 02 TEMPERATURA OCCURS 24 TIMES PICTURE 99 En Pascal no es necesaria la variable con cl cnunciado vat:
de agruparniento artificial. Los atteglus se

03 SEXO OCCURS 2 TIMES_ 04 COLEGIO OCCURS 10 TIMES PICTURE 9(5). Si intcntarnos


En Pascal dcclarar mas de 3 dirncnsiones, el compilador 10 detecta, los arrcglos tridimen:>ianales se pueden dcfinir por: ~ colegio: arruy [I •. 6, I .. 2,1 . _ 1OJ ~ integer.

declaran

:::'!:": temperatura:
Pascal permite limites inferiorcs vaT puntos-grafica:

array

lJ ..

24] ~ integer. rncnores a 1, por cjernplo:

para cl subindice,

array -100 .. I 00] ~ integer.

En algunos lenguajes, como FORTl<AN y C0130L sc asigna cspacio de memoria para los urreglos en el momenta de la compilacirm Asf los rangos cichcn espceificarse cxplicitamellte cuando se define un arrcglo, En otros lenguajes, como PL/I, el espacio puede asignarse en fonna dinarnica en el motnento de la ejccucion. Operaciones sobre los elementos del arreglo COBOL y Pascal (y otros lellguajes que pcrmiten declarer arrcglos) ticnen facilidades para la manipulacion de elementos individualcs de un arreglo. EI eonjunlo de operaciones legales sc define POt cperacicncs de subcadena un arreglo de tipo cadcna. individualcs de un arrcglo las cstructuras de datos de C50S elementos. Por cjcmplo, las y concatenacion se pucden ejccutar sobrc Ins elementos de Los crilculos aritmeticos pueden cjecutarsc sobre elementos de entcros o dc punto Ilotante. Por ejemplo, en C0I30L:
=

En COBOL, los arrcglos solo permiten subindices rnayorcs a O. La clausula OCCURS indica el limite superior del subindice. Para referirsc al I-csimo clcmento del arreglo de arriba, COBOL usa la noiacion: TEMPERATURA(I), en tanto que Pascal usa corchetes en lugar de parcntesis: Tempe-

rarura[i]. Arreglos bidimensionales


La declaracion de un arreglo que contenga las punruacioncs de 40 estudiantes en 4

examenes puede ser como sigue: En COBOL!:ic introducen dos nombres de agruparniento:
01 TABLA-CALIFlCACION. 02 ESTUDIANTES OCCURS 40 TIMES.

COMPUTE PAGO· TOTAL (I)

PAGO-POR-HORA (1)" HORAS TRA.BAJADAS (I)


es un clemente del arreglo.

donde cada una de las (res variables

03 CALIFICACION OCCURS 4 TIMES PICTURE 99V9. En Pascal,


var calificacion: array [I .. 40, I .. 4] ~real

Operaciones sobre arreglos lenguajes de programaeicin tambien lien en opcrucinnes sobre arrcglos, Por cjemplo, si A fuc declaradn como un arreglo en PL/I, entonces A = A + 2 surnaria 2 a cada uno de los elemenlOS del arrcglo, Si A Y B lucron deciarados como arreglos con las
Algunos mismas dirnensioncs, enionces en PL/I, A = A "- B multiplicaria cada clcmcn to de A pOT su correspondienre clerncnto de B (es dccir, por cl clcrnemo con el mismo subindice), guatdando cl resulrado enA. Estc producto de arrcglos 110 cs la muliiplicacion matricial (COIllO la que sc define en algebra).

En COBOL, la calificacion para el /-esitno estudiantc en el J-esimo exarncn es CALIFICACION (1,.!). Pascal utiliva corchetes en lugsr de parentesis: calificacion [I,ll
Los subindices dcbcn cstar dentro del tango valido.

En PL/I, las opcracioncs puedcn ejecutarse

sobre secciones

transversale",

lid arrcg]o.

34

Arreglos

Capitulo 2

Formas de almacenamiento:

arreglos multidimensionales

35

Pot ejernplo, CALIFICAC!ON(20,*) inicializa cada elemento del arreglo


=

localidad

del I-esimo

elcrncnto

del arreglo cs: B + (I - l)k S ("culleion 2-1)

= 0;
en el renglon 20 con valor cero.

CALIFICACION ARREGLOI(I,*)

VECTOR(*)

ARREGL02(*,J);

multiplica los elementos del J-csirno renglon del ARREGLOI par los elementos de la J~esima columna del ARREGL02. Los arreglos se dcben dcclarar de tal manera yue exixtu compatibilidad en cl rango de vulorcs para los suhiruliccs. Par ejernplo, si el segundo xubindicc del ARREGLOI ILene un range de 0 a 25, entonccs el primer subindice dLI ARREGL02 turnhien debe estar en un range de 0 a 25,10 mismo que el subindice ell- VECTOR. La multiplicacion de arriba iienc los mismos efectos que el siguicntc ciclo: DO K = OTO 25; VECTOR(K) END;

ya que [ - 1 elementos, cada uno de tumafio S, Iisicamente preceden aII-e,imo elernento EI compilador neccsita ser capaz de detcnninar las loculidadcs de los clementes; dichas localidadcs tam bien son utilcs para un prograrnador que efectue un vaciado de memoria para dcpuracion. .

Generalizaci6n del limite inferior


Ahern, extcndarnos la ecuacion 2~1 para cncontrar el r-csimo elemcnto de un atreglo, el cual tiene subindices con limite inferior difetentc de uno. Es decir, conxiclerc el arrcglo dcciarado como Z1(4 : 10). Tomando un caso especifico, [a direcojnn de inicio de Z1(6) es: B+(6-4J*S ya que (i - 4 (es dccir, 2) elementos ( - 2:2), 13 localidad de Z2(1) es preccden a Z1(6). Para un urrcglo dcclarado 22

= ARREGLOI(I,K)k

ARREGL02(K,J);

FORMAS DE ALMACENAMIENTO:

ARREGLOS UNIDIMENSIONALES

B + (1 - ( - 2») * S
ya que (1 - ( - 2)) (cs decir, 3), elementos En general, el clemente ARREGLO(f) csid en la Incalldad (Z2( - 2), 22( - 1), Y 22(0» precedcn a Z2(1). del arreglo dcfinido como ARREGLO(L: U)

Como en las otras cstructuras de dutos, bay vurias formas de rcpresentur arrcglos en memoria. Estos esqucmas de represcntncion Se pucdcn evaluar con base en cuatro cnractcrixlicas: 1) La sirnplicidad de acceso a los elementos, 2) facilidad de rccorrcr a travcs de varios caminos, 3) cficicncia de alrnuccnrunicmo, y 4) faciiidad de crecer, Sin embargo, no es posiblc optimizar simultancamcnre estas cuatro caracteristicas,

B + (/ - L)

*S
L ya sea positive,

LImite inferior: uno


Esta formula lnicialmente considererr.os In forma de almaccnar arregl(ls unidimensionalcs y nornbremos lin arrcg!o como EMP~NO con limite inferior igual u uno y limite superior igual a N. UtI" forma de ulrnacenar este arrcglo es que el orden fisico de los elementos sea el misrno que el orden 16gico de los elementos, El almacenarnienn', puta el clcrnento EMP~NO(l + I) sera adyacenle al alrnuccnamiento del elernento EMP~NO(J), para cs valida para cuulquicr limite inferior

(ccuacion ncgativo

2-2)

0 cero,

FORMAS DE ALMACENAMIENTO: Orden por rengl6n

ARREGLOS MUL TIDIMENSIONALES

l=l,

... ,N-l.

Para culcular la direccion (l), es necesario conocer: L 2. La dircccion

de inicio (es dccir, la localidad)

del clerncnto

EMP~NO

de inicio del cspaci»

rcscrvado

para airnaccnur

el arrcglo.

El tumaiio de cadu elcmcnto

en cl urreglo. turnhicn conocida como 5 bytes. Entonccs I"

a B como III dirc:cei,'lI' de inicio <it'! arrcglo, localidad base. Supongumos <JIIC cad" ckllll'lllo del urrcglo Dcnotarnos

Dcbido a que la memoria de la cotuputadorn lOS lineal, se debe lille,dizar un arreglo Illlllliciilllensional para su ulmaccrlHmiclllo. Una allemntiva para let Iinealizaciun cs almacenar primero e] primer rcnglon del "rrcglo, dcslJues el segllndo renglon del arreglo, dcspues el terccro, y llsi sucesivamctltc. Por cjemplo, el arreglo dclinido pm RAZON (I :4,1 :6), cl cun] logiclll1lClllC apurcce como se muesrru en la ligur" 2-6, [isicurnenle "parece en orden pur renglon como en la Figura 2-7.
Eslc cs e] csqucmn de ulmaccn.un iento usudo para arregtos de las illlplalllacil>lll:" de COBOL, Pus""I, C y PLfl

\lCllpa

declarados

en la mayoria

36

Arregios

Capitulo 2

Formas

de aimacenamiento:

arreglns

rnuitidllTl8nsionaies

37

Renghlll 0

Rt!t1gI61l 1
'~

Rcngl6n 2

,-- 1-- f-- -

HALON (2, 4),

Figura 2-6 Ejcmplo de un nrreglo bidlrnenskmal.

den al rcnglon " S, que prccedcn


Henqlcn 1 Henqlcn 2
Henqlon 4

ZIO,61

I I I I 'I
Figura 2-9 Arrcglo de la figura 2-8, lincalizudo porrenglon

En e] rcnglo:

1"

,t! clcrncnto Z(0,6), ESlo ex, la localidad de inici(~ de Z(0,6) es


- 4 + 1)*S + (6 - 4)*S,

0 I, .., (css d CCIT, 6- - 4) elementos ' 1ay ~ ,

cada uno de

1011

iitud g

I I I I I \ I I I I I I ! I I I I I I I I 1I I 1
fI
Figura
RALON (2, 1)

B + (0 - (-2))*(6
2-1 Arreglo de la figura 2-6, linealizado por rcnglon mayor.

la cual es B

+ 8*S,

I deon un mregl~l N-dimensional, el orden por renglon (c crccha n izquierdu. Por ejernplo pam el arrcglo:

varia los subindices

en ordcn

Supongatnos

que B cs la dircccicn

base del urrcglo y que cadu elemento RAZON(f,J) es

del arrcglo Los elementos se almacenan cl siguientc ordcn:

cs de tamafio 5, la direccion

inicial del elemento

B + (l- 1)*6*5 + (J - 1)'5


debido que cxisten I - 1 rengloncs, cada uno de longitud 6 * 5, los cuales precedcn al renglon en el '-lue esta el clement" RAZON(I,l) y existen J - 1 elernentus, cada uno de longitud S, los cuales prcccden al elemcnio RAZON(l,J) en el rengl[m I, El clemente RAZON(2,4) se localize en B + 9*5, Generalizando, el clemento ARREOLO(l,J) OLO(L]: V"L2: Vol est! en la localidad: B + (1- LY(U,-l.1 + 1)*5 + (J- L,)"'S (ecuacion z-S) del arreglo dcfinido por ARRE-

ell

A(L"L"""L,) A(L"L"""LN A(L"Lz, --,UN)

1)

A(L"L"""LN_,

I,LN)

ya que, hay 1- L, rengJclIIcs, cnda uno de longirud renglon en cl que esl" cl elcmcntc ARREGLO(l,J),

(U,- 1.2 + 1)*S, los cualcs preceden al y hay J - L, elementos, cada uno de ltSgicHtnente

longitud S, los cualcs precedcn al clemente ARREGLO(l,J) en el renglon r. I1ustrando esto, el urrcglo dcfinido por Z( - 2:2, 4:6) puede rcprcsentarse

A(U"L"
A(U"L2,
..

_,,L

N_

"LN) "LN

como sc rnucstra en la figura 2-8, Este urreglo ap3rece ffsicamen:e ordcnado por renglon como se muestra en la Figura 2-9, Hay dos renglones (rcnglon -2 y renglon -I), cada uno de longitud 3 * S, que prece-

"LN_

l)

Orden por columna


::2 ~----

zro.s:
Fig""' 2-8 Ejemplo de un arreglo bidlmenstonal

de l inculiz.rci ,in J c' un ,111 0 bidi ltnenSlonal es almaccnar los elementos "',,1eg ,' I es dccir ,I maccnar pnrncro , In pntner columna dCSpllr.'S h ' ' , err, '1 '" scgundn _ COlWIlt1'1 " (kCI')11 c. I,' tc 's " crcera, y ast " succstvamente. " ~., EI arrcglo PORCENTAJE ya tnCI1"'<lI",d,) " '11nte l"'C f'I'sl'" t nentc or d ena d 0 por columna cn la figura 2, W, ' , sica Otra nltcrnntivu
ardell

en

por

CO/UIII!!"

>

38

Arreglos

Capitulo 2

Formas de almacenamiento:

arreglos multidimensionales

39

DlTTTffi 1 i I: i I iIi I rrj ! i d


Coil Col 2 Col 3 Col 4 Col 5 Col 6 nAZON (2,4)

A(L"L"

... ,U",)

Figura 2-10 Arrcglo de 13 flgura 2-6, lincalizado por columna.

Este esquema de almacenamicllto taciones de FORTRAN.

sc utiliza pam arreglos

dec!arados

en varias implandel arreglo

Seleccion de una tecnica

de linealizaci6n

Suponi:ndo que.B cs u;la dire~c~c5n base del arrcglo y que cada clemento es de tarnano S, la direccion de uucro del elerncnto RAZON(!,J) es

B + (J - 1)"4*S + il

>

lY-S

ya que hay J - 1 columnas, cada una de longitud 4 *S, las cuales precedcn a la columna del clemente RAZON(!,J), y hay I - I elementos, cad» uno de longitud S, los cuales preccden a RAZON(IJ) en In eolumnaJ. EI clemente RAZON(2,4) es localizado en B + 13*S. Generalizando, cl elerncnto ARREGLO(l,J) del arreglo (I.,; U"L,: li,), ordenado por columna sc ]()caliza en; dcl'inido como ARREGLO

Para determinar cuando es mas ventajoso alrnacenar un arrcglo en orden por columna o en orden por renglon cs necesario conocer en que orden se refcrcnciaran los elementos del arrcglo, De hecho, los lenguajes de programacion disponiblcs no dan oportunidnd al progrnmudor de elegir la tccnica de almacenarnicnto de arrcglos. Es mas, especialmente en un ambiente de memoria virtual, el programador debe hacer un csfucrzo pot ajustar el patron de rcfercncius de los elementos del urreglo al patron de alrnacenamicnto. Par ejemplo, considcre un procedimicnro para calcular cl valor prornedio de los elementos de un arreglo llamado A de 50 por 225. Call UTI almaccnamicnto par columna se debe usar el siguientc patron de referencias: En COBOL: COMPUTE TOTAL SUMA = O. Y ARYING J FROM I BY 1 UNTIL J > 225 AFfER I FROM 1 BY 1 UNTIL I > 50. PERFORM dond"

B + (1- L1y(U,- L, • l)"S·1 (T - L,)*S. Compare esta ccuacion con In 2-3.

(ecuacion

2-4)

Can un atreglo N dimensional, el orden por columna izquicrda a derecha. Por ejcmplo, para el arreglo:

varia a los ~ubindices

de

SUMA. COMPUTE TOTAL

= TOTAL

+ A (I,J) antes de continuer can la

los elerncntn-, A(L"L" A(L,

sc almuccnun ... ,L,J

en cl siguientc

orden:

Este algoritmo suma todos los elementos de una columna siguientc. Lo mismo en lenguajc Pascal cs:
total: for

i:~I

~ 0; 10225 do

I- I,L" ... ,LNJ

Ior i: -;; I to 50 do total: ·::;-Wla!+ alij];

A(U"I., .... L.,) + I, ... ,L",) MI., I- [,L, + 1,... ,L~)


A(L"L,

PDt oira parte, con alrnaccnamicnto por renglon, el cual CS mas comun en COBOL y Pascal, "S preferible el siguicntc patron de referenda. EI algoritrno surna todos los elementos de 1m renglon antes de conrinuar COil e! siguientc> En COBOL: COMPUTE PERFORM TOTAL SUMA
=

O.

A(L"Lo,· A(L,

.. ,L,

I,L" ....

+ I) L""J

VARYING I FROM 1 BY 1 UNTIL I> 50 AFTER J FORM I BY I UNTIL J > 255.

donel"
Ell

Pascal: SUMA. TOTAL

A(U, ,L" ... ,LN+,)

= TOTAL

+ AU).

Arreglos

Capitulo

Arreglos

triangulares 41

total: ~ 0, for i: ~ I to 50 do rorj: =lto253~ total: ~ total + a[i,51; . , ' Cuando sea ncccsano , pa,ar arrcg 1os en Ire rutinas de fORTRAN .. y rutinas ' en otros lenguajcs (como COBOL , ,PLjI '. Pascal) .'. cs . de sutna .irnportancia . ',. program a d or es.t e' enterudo d'" las tccnicas de lincalizacion ~ ,,' ~, uiilizudas. cscritas 1 que C

NL....

-.
N Nt I

-"

ARREGLOSTR~NGULARES
. . . de arrcglos ,,' rnultidimcnsionalcs, 1 d ell En la scccion antcnor J', iscuumos 'I' d lincalizacion ,. , esta 'scccion, conSl ide at " "I cmos '. a 19u110S ,.. , aspectos , lk la lineul izacjon dt! upos cspCCla cs e arrcglo: los arreglos triangulares. Definiciones
. Un arreg ID mangu Iar puc,J, c 'r 111)0 de los dDS arrcglos superior 0 inferior, mostrados ( ~ ~~ , , . b.' en Ias fitguras 2 - l J y 2 - 12 , rcxpecl ivarnente. Donde todos,. los elementos de; ,I aJD o I.. ' ,. arriba) de la diagonal son cero. s, di~e y'lleun arre~~o cS est~l~tamenle triangu "l superior (0 inferior) si los elementos de la diagonal, tarnbien, son cero.

Figura .2-13 Arreglos triangui<lrcs superior I.! inferior que cornpurter, un espacio de N por N.

FL~lIr.a 2-14 Arrcglos triangulares superior c jnfr,rlor . que comparten un espacio de N por N + 1.

N(N + 1)/2. EI clemen to T (1, 1) cs alrnacenad., en el clemcnto S(I), el elcrnento T( 1,2) es alrnacenado en S(2), y asi suce~ivamerite hasta el elcmento T{l, N) cl cual se alrnacena en e1 eletriento S(N). Entonces, el elcrnento T(2,2) se alrnaccna en SeN + 1), ya que T(2, I) cs cero. El elcmentn T(N.N) sc almacena en S(N(N + 1)/2), En general, (,donde se almacena T(f,J) en S? Observe que f < J para todo elemcnto en la parte diferentc de ccro de T.

Espacio com partido


veccs un program a requiere el usa de rruis de un arrcglo triangular, Si dos de de las mistnas dlrncnsiones, entonces es una tarea directa cl almacenarlos, de tal forma que se cconomice espacio. Suponga que un arreglo A es un arrcglo triangular superior de N POt Ny que B es un arrcglo triangular inferior de N - 1 pot N - I. Entonees A y B se pueden almaeenar juntas en un arreglo C de N pot N como se rnucstra en 1'1figura 2-13. Los elementos C(l,J) donde / ~ J SOil elementos de A, y Ius elementos C(J J) donde f > J son elementos de B. De hecho los elementos A (I,J) se almacenan como C(l,J) para 1 SJ Y los elementos B(l,J) se alrnacenan como C(/ + 1,J) para f ? J. Algunas

estes arrcglos son esencialrncnte

x x a
0

x x x
0

x x x
0

x x
x

x x x x

x x x x

0 0

0 0 0

x x
X

x x

~
inferior.

I"igura 2-11 Arreglo lri~lnglilar snperior.

Figura 2-12 Arrcgln triengular

E un arrcglo triangular interior con N rcngloncs, el rmiximo llume,ro de elementos, , n , .1 difcrentes de cera en c J-'cs'1'1 0 rellgl(m , es I. El total de elementos difcrcntcs de ccro n
c

Sea A un arrcglo triangular superior, sea Bun arreglo triangular inferior, ambos de N por N. Entonces, el arreglo C puede set de N por N + 1 para contencr ambos arrcglos A y B, tal COInO sc rnuestra en la figura 2-14, Aqni, los elementos A(l,J) sc almacenan como C( f,J + J) para I;; J y, B(l,J) sc almaccna como c(1,J) para l? J. Considcre ahora cl caso en cl cual dos arrcglos triangulares, digamos A y AA (ambos de N por N), ticncn que compartit dmisrno espacio. Un metodo seria transporter uno de los arrcglos triangulares, digarnos AA, de tal fonna que en lugar de ser un urrcglo tr ianguler superior, uparczca COIllO un arrcglo Iriarlguiar inferior. Esto es, cl arreglo AA sc t ranspone para formar ci arn::glo AA", y los eiClnentos AA(l,J) sc con vier!" ell AT(J,f), Enlonccs A y AAT pucdcn "Itnaccllarse juntos en un an-eglo C COil dirncnsiones N pOI' (N + 1), tal y como se Inul".slra ell cl parrafo anterior. El elemcnto AU ..!) se almacena como C(J,J + I) Y ci cicmentoAA(l,J) es alrnaccnado como C(J,f),

es a

10 mas:

2./
/J
I~I

N(N
=

-2-~

1)

." t· mbi \11cs vcrdadera para un arrcglo triangular superior con N rcngloncx. Esla expresron a ~. d 1 I", ales a ecru . Para una N gra t 1de , scria dcscablc no tcner ulmucenados to os os vu orcs 19u c: ~" < del arreglo.

Linealizacicin
Un enfoque para cstc problema e~ lincalizar el arreglo y almac~nu ~(~I()k)~ ~'I,elll~':lh~~ difc , tcs d ' ccro. Supongamos que sc almaccna un arrcglo tnangular, supenor f p( r [ cr1en c', arrcglo unidimensional, llamudo S, can subindices lirnitados entre I y (eng ones c n"un ,

Cambio de acomodo
Un problema COIl estas tecnicas de iinealizacion uparcce cuando elementos de la parte inferior de un arreglo triangular superior sc vuelven difcrcntes de cern, 10 que convierre

P
'-',_,' .

r.}.i.'-.' "'.;.
v :

',:

42

Arreglos

Capitulo

Resumen

43

a
0

a
I

a
0 0 0 0 0 0

0 0

0 0

a a
0

0 0 0 0 4

0
0

a
0

0 0

0
0

a a a
0

0 0

0 0 0 0
0 0

a
0 0
0 V(l1: V(2): V(31: V(4): V(5): V(6): }'igura 2-15

renqlcn I, 1, 2, 3, 5,

columna

valor

0 0

a
2

5, 8,
2, I 4, 8, I, 2, I 4

a a

0 0

a
0

Ejemplo de un arreglo disperse.

V(7): V(S):

6, 8, 8,

Figura 2-16 Rcpresernacior; vectorial del a rregln disperse deIa figura 2-15,

al arreglo en un arreglo no triangular, Si se comparte el espacio de un arreglo cuadzado con 1~ arreglo triangular inferior, cntonces, habra problemas, Una solucion es no pertrutir q~e un arreglo t~iangulat superior sea actualizado si eso causara que el arrcglo no Iuera triangular supcnor. Otro metodo, es reconoccr cl cambio en las caracterfsricas del arreglo transfiriendolo a 5U propio espacio,

ARREGLOS DlSPERSOS Definicion


Otro tipo espe~ial de arrcglos los cualcs aparecen con Irccuencia en aplicaciones, son los arreglos dispersos. Hoy en dia cs dificil establecer una dcrnarcacion entre e5tos arreglos y los que no l~ son; informalmenre, a un arrcglo se Ie llama disperso si ticne, al parecer, una alta dcnsidad de elementos cero. Por ejcrnplo, el arrcglo de lu figure 2-15, en la cual se muestran 8 elementos difcrcntcs de ecru de 80 que sf 10 son, cs di'perso, esto es el 90% de ceros.

representaria por una pareja, En general, cada elemcnto diferente de cere> de Uh arreglo N-dimensional se rcprcscnta con N + 1 valorcs, Las operacioncs sobrc la rcprescntacion vectorial de un arreglo disperse de dos digit os dcbcn utilizar la informacion sohre renglon y columna para deterrninnr dondc sc cncuentra cada valor. Uti inconveniente que se presenta al usar csta forma de representacion es el manejar la suma de los elementos difcrcntcs de cere del arreglo 0 carnhiar valores no eero a valores cera, El problema no csta en el cambio del valor, sino en mantcncr cl orden de los elementos diferenlex de cero en la representacion vectorial, Par ejernplo, 51 el arreglo de arriba fueta actualizado de tal forma quc cl clemente con subindices (1,8) cambiara su valor a cero, entonces los elementos V(3) a V(8) del vector deberian recorrerse hasta convcrtirse en los elementos V(2) a V(7), De maneru similar, si los elementos con subindices (4,6) fucran actualizados con el valor 9, eutonces los elementos V(5) a V(8) ncccsitarian rccorrerse hasta convertirse ell los elementos V(6) a V(9) y V(S) seria la lerna (4,6,9),

Representaci6n

de listas ligadas

Linealizaclnn
Los arre .Ios dispcrsos muliidimcnsionales se pucdcn linculiznr a (raves de las tccnicas

Otra rcprcscntacion para arreglos dispersos es cl uso de listas ligadas, Difcrircrnos la


considerucion Iistas ligadas_ de esa importante alternativa hasta cl capitulo 6, donde sc analizan las

ya presen.ad~s en est~ capitulo; sin embargo, cstas podrum ocasionar cl despcrdicio de ll:ucho espacio. Considerernos dos representucioncs ultcrnat ivas para almaccnar explicttarnente solo elementos difercntcs tic ccro.

RESUMEN
Un arreglo cs un conjunto llnito de elementos homogencos ordcnados. Los elementos del arrcglo son rcfcrenciudos segun sus posicioncs, las cuales sc cspccifican por subindices. La composic ion de arreglos en los cuales cada clemente es un arregl o, da como rcsultado un arreglo multidimensional. EI capitulo present» la dcclaracion de

Representaci6n vectorial
Cada elemento diferente de ccto ell un arrcglo dispers() bidimensional sc pucde representar como una lerna con cl f(lrlll:llo (suhindice del rcnglo», subindicc de la columna valor). ~nt.onces estas tcrnas pucdcu ordcnursc incrcrncntando el subindicc del renglon y el sU~lhdiCCde la columna y Sl: [lll"'kn ulmnccnur como lIll vector. Por ejemplo, usando este metodo el arrcglo disp'-'fS() de H pOl" I() <)11" xc mucstru cn la figura 2-15 se rcpresenta por el vector V '-i"C $C mucxtru en la I1gllrll 2-1 (l, _ Esta forma de aimace~lalllj"nlll LIS"1lI';S "'p:rcio pata rcprcscntar cualquier (hfcr~nte de cera pero cvua la n.prcscnt.rcion de Ius elementos ccro, Si cl arreglo disperso f\lcse ullidilm:lIsj(lllal, cada clcmento difcrente clemente de ccro se

arrcglos en programas en COBOL

y Pascul. Los arreglos unidimcnsionalcs pueden alruaccnarse en una forma lineal. Para calcular la dircccion de inicio de un clemente en particular, es necesario conoeer la localidad base del arreglo y del tamario de cada e lcmcnto precedente en el arreglo, Los arreglos multidimcnsionalcs puedcn Iincalizarse de acuerdo a 13 forma de almncenurnicn!o que sc clija. Las tccnicas mas corr.uncs de linealizacion pam arreglos bictimensionales. son cl almacenamicnto por rcnglon mayor (COBOL, Pascal, C,y PL/I) 0 por columna mayor (FORTRAN).

44

Arreg!os

Capitulo

Capitulo

2 Ejercicios

de repaso

45

EI capitulo tcrmina con cl anal isis de dos tipos cspccialcs de arreglos: arreglos triangulares y arrcglos disperses. Para estos tipos de arrcglos, el uso de las tccnicas de lincalizacion convencionalcs POf 10 general ocasiona cxccsivos rcque-imientos de cspacio. Las tccnicas de lincalizacion adccuadas a las camctcristicas de los arrcglos triangulates y dispersos cornprenden d alrnaccnamiento de dos arrcglos triangulares unidos en un solo arreglo cuadrado y la representucion exclusiva de los elementos difcrcntes de cero de arreglos disperses. Las tccnicas de direccionamicnto en arrcglos se analizan con dcrallc en cl capitulo 13, en la scccicn sobrc tccnicas de calculo de direccion para archives relatives.

SI ANDISH,
TAl<JAN.

T. A. "Arrays," Chaplcr R in /)"/11 Structur» Techniques, Reading, Wesley Publishing ce., pp. J4X-376, I')~O.'

Mass.:

AddisonNov.

1979.

R. E. and A. C. YAO. "Storing

a sparse tahle,"

Comlll.

ACM

22(11):

606-611,

EJERCrCIOS DE REPASO
1.

En un an'eglo can columnas nurncradas dcl4 al13 y renglones de 6 a 12, i.cwl! es cl nurnero maximo de elementos que se pucdcn alrnacenar? ~Que significan los terminos "ordcn par renglon" y "ordcn pur columna"? i,Cuantos elementos hay en el arreglo ESPACIO(A:B,C;D)? ~Cuant()s elementos pueden contencr arreglos con dirnensiones A(l :N) y B( _ NO,})? E1 arreglo PRUEBA(l : 10,1 : 5) sc almuccna ell memoria par columnas, Si la localidad base es B ~ 0 y el ramafio del clemente es S = 1, (.eual es la direccion del elemcn:o PRUEBA(7,2)'1
Dado a)

TERMINOLOGIA
Arreglo Arreglo Arreglo

2. 3. 4. 5.

Localidad base
disperso estrictamente triangular Orden Orden por columna par rengl6n

Arreglo triangular Arreglo triangular inferior Arreglo triangular superior Indice Limite inferior Limite superior

Rango
Secci6n transversal Subindice 6.

ARREGLO(lO:30.

10:1(0), con localidad

base

50 y tarnano de elemento

8 hits:

Tabla
Transpuesta

i,Cwintos elementos hay en el arrcglo? ~Cu;il "5 la localidad de inicio de ARREGLO(21 ,75) si ARREGLO renglon? sc alrnaccna par

b) 7. 8,

Vector

Dado el arreglo

A(50: 100, 50:75), ~cuJUcs la localidad de inicio de A(62,56)1

Escriba una formula para cncontrar la direccion del J-esimo clement a en el i-esimo rcnglon del arreglo IVAN(B:A,D:C), donde cada c'crncnto en cl arreglo ocupa n palabras de memoria. ASlIlna una localidad de inicio igual a 0. Considere cl arreglo Q(A:B,C:D.E:F), a) h) la localidad base = X, longitud de clemente
del arreglo,
=

REFERENCIAS SUGERIDAS

9,

L;

Encucntre el numero lOlal de elementos

DEMlllO, R. A., S. C. EISTENST AT, ANIJ R. J. Comm. ACM 21(3): 228-231, March 1978.
GRHNBERG,

LIPTON.

"Preserving average proximity in array',"

Encuentn; la localidad de inicio de QU,J, K). i,Que suposlcion tuvo que adoptar accrca de como So linealiza y almaccna el arreglo?

H. J. and R. P. O'NEILL. "Representing super-sparse matrices with perturbed values," Comm. ACM 24(7): 451-456, July 198!' HEI.I.ERMAN,H. "Addressing multidimensional arrays," Comm. ACM 5(4): 205-207, April 1962.
MACVE1Gfl, D. T.

10, IL

i,Cwij cs el mlmcro maximo de dimensioncs disponlble para arrcglos en COBOL'! Dado cl slguiente arrcglo en COBOL: OJ TABLA.
03

"Effect

of data representation

On

cost of sparse

matrix operations,"

AUI!

111_

[ormatica 7(4): 361-394, 1977.


POOCH"U.

RENGLONES 05 07

OCCURS 50 TIMES. OCCURS 4 TIMES. TABLA OCCURS 6 TIMES


PIC XX.

and A. NIEDER. "A survey of indexing techniques for 'pane matrices," Computing Survevs 5(2): 109-133, JUlie 1973. W.,

COLUMNAS

ACM

PROFUNDIDAD-DE

ROSEN"ERG,

A. L. and L. J. STOCKMEYER. 24(2): 199-221, April, 1977.

"flashing schemes for extendible arrays," Lour, ACM


"Storage schemes arrays," for boundedly Jour. ACM extendible

i,Cuantos elementos contienc la tabla? 12. 13, 14. !lustre y dcscriba un rnetodo para represcntar arrcglos disperses. Escriba un algoritmo para transponer un arrcglo, Escriba un algoritmo para almaccnar el siguientc arreglo disperse como un vector de tres componentes (sublndic« del rcngloll, suhindice de 18 columna, valor)

ROSENDERG,

A. L., and L. J. S rOCKMEYER. Acta Informatica 7(3): 289-303, 1977.

arrays,"

ROSENBERG,

A. L. "Allocating storage for extendible

21(4): 652 (71), Oct.

1974.

46

Arreglos

Capitulo

Capitulo 2 Ejercicios de rspaso

47

l
0 2 0 0 15. 16. 17. 18. 19. 20.

0 0 0 16 0 0 0

0 0 9 0

0 3 0 0

0 0

l
dispcrsas, cada una

a a
0 0 1

0 0

0 0 0 0

a
0 0 0 0
1

0 .- f-Q 0
Q

,--'

~0
1

0 1 I 0 0 0 0 1 1-. 0

0
Q

a
0 0 0
·I-~

0 0 0 1 1 1 0 0 1 1 1 1

a
0

t
1 1
1

0 0 1

I 1 1 1 1 1 1_ 1 1 1

! 1
1

0 1

a
1 0 0 ! 0

t
0

I-~
1
Q

Escriba un algorirruo pam calcular reprcscntada por un arrcglo,

el producto

de dos matrices

a
0 0 0 0 0
L..___

a
0 0 1

a
0 1 0 0 0 1

0 0 1

1 0 1 1 1
_____

1 1 1 0 0
L-_

a
a a
0 0

a
0 0 0 0

Mucsrre como pucdcn almacenarsc juntos dos arreglos triangulares. ~Que ventajas y dcsventajas dcbcn considerarse cuando se alrnacenan des arrcglos triangu lares en un cspacio cuadrado? Mnestre que un arrcglo triangular superior con N rengloncs no tiene elementos difercntcs de cero.

a
0 0 1

ilia,

de N(N + 1)/2

a
0 1

a
1

a
1

Considere cl aimaccnamielllo por rcnglones de un arreglo triangular inferior de N LX" N. llarnado T, en un arreglo unidimensional S, con subindices de 1 a N(N + 1)/2. z.CuaL es el subindice en S pam e1 elernento T(I,!)? (iEs dificil l) Un tipo de arrcglo disperse) que ocurre con cierta [recucncia es un "IT"glo "tridiagonal", donde todos los elementos, excepto aquellos sobre la diagonal principal y las diagonales inrncdiatamente arriba y abujo, son cero. Por ejernplo, un arreg.o tridiagonal de 5 por 5, tiene la estructura:

Figllra P2-21 Ej~~mp[(J un labcrinto. de

La salida debe consistir de la ruia (excluyendo las vucltas) cspccificada por Los rcnglones y columnas de los elementos recorridos desde el inicio hasta el final del laberinto. No pueclc recorrcr en diagonal, 22. Hay un tipo de data conocido como cadena de lorigitud variabl e.sel cual tiene uu atriburo de lcngitud que pucde tornur diferentes valores a la vez. Considcre un arrcglo de cadcnas de longitud variable, por ejemplo el arreglo MES(l: 12), donde cada elemenio es una cadena de longitud de 0 y 9 caracteres, cuyo valor cs la Iougitud del nornbrc de cada meso Una forma de almacenar este arreglo es reservar espacio para 10 caracteres para cada elemento, sin considerar que tanto cspacio sc utiliza en rcalidad. LComo sc puede almaccnar el arreglo, de tal forma que el total de espacio reservado sea rninimo? .:.Su tecnica runcicnaria si se rnodificaran los valorcs de los elementos del arrcglo? z.Por que los algoritmos convencionales para encontrar elementos que todos scan del misrno tipo de estructura de datos'! en un arreglo, requieren

l
21.
'.I

a"
0 0

a" a" a"


0 0

0 0

0 0

a"

an
aJ.]

a,. a.. a~

a.,
0

a (I.,
at:.!)

23. 24.

Consider" el almaccnamiento de un arreglo lridiagonal en un arrcglo unidimensional B(!), con all en B(l), all ell £3(2); y asi sucexivamcntc, i,Cual cs cl suhindicc, ell B, del elcrncutc Q .. ? Escriba un prograrna para recorrer un Iaberinto, Ellabcrinto cs una tabla bidimensional, de 12 poc 12 con valorcs de I, que indican las posibles rutas y 0 que indican las paredcs, La tigura P2~21 es un cjeruplo de labcrinto. Habra on solo clcmernn en La primera columna COIl c] valor de 1 e) cual sera el punto de inicio. I Iahra, tambien solo un unico valor I en la ultima columna cl cual indicara el punto final, El labcrinro se leera (on un rcnglr)n pur linea. Los valcres del rcnglon estarnn en las 12 column as de la linea. Hoga su propio labcrinto [lura probar y des!'u", use c l cjcrnplo de arriba.

Algunos lenguajes de programaclon, por ejcmplo CanOL y FORTRAN dan por omision cl limite inferior 1 para arreglos. Otros, como C, dan 0 como limite inferior. Sugerimos que practique la prograrnacion que pucda ayudarle a erradicar las dificultades ell subindizacion que se pucdan encontrar en Iii convencion de programas fORTRAN a C (0 viccversa), Algunos leuguajes de programacion como H)RTRAN, alrnaccnan arrcglos Gn ordcn por columna. alms como C y COBOL alruacenan arrcglos en [mien par rcnglon. Ilustr e los problemas encontrados al pEsilr arreglos entre prograrnas FORTRAN, C, o COBOL. Consider" el arrcg.o Q( _ 1:1,1:2.1:3). a)
e)

25.

26.

;.Cu;\ntos elementos hay en Q?


Liste 101 secuencia

10J Lisle 13 secuencia de elementos, si Q es almacenada en orden por rcnglon. de elementos, sl Q cs almacenada en orden por columna.

--------...

Definiciones

_------

----

49

---capitulo tres --registros-

-~-.-~
-__ ._~_I

1I
I

Formaci6n

de registros

I I

Una unidaJ de informacion deriva, por In rncnos, algo de su significado; a partit de sus relaciories con orra inrormaci<in. La estructura de dutos regislro permite que un conjunro de elementos de lnlormucion, higicamente relacionados, se pucda agtupar explicilamente, Par ejemplo, cl campo de tipo cadcna Hamada TITULO-DE-TAREA, con valor 'ANALISTA', no proporciona rnucha informacion por si mismo. Sin emhargo, sc proporcionn rnas informacion cuando el campo TITULO-DE-T AREA se acopla con otros campos kigieatnente rclacionados, como NUM-EMPLEADO, de tipo cadena COIl valor '123456789' y TARIFA-PAGO, de tipo decimal cot) valor 15.93. Esros elementos hetcrogeneos no pucdcn constitujr un arreglu porque son difercntes cstructuras de datos. Sin cmhargo, se pucden agrupar para constituir un registro de infonrwcion del crnpleado como sc muestra en la figura 3-1.

~- __ J

Figllra 3·1 Ejctnplo de un registro.

Ejemplos
Un elcmenlo de un registro pucde ser una estructura de datos compucsta, regblIO 0 un arreglo. Por ejcrnplo, un registro de empleado pucdc contencr NOMBRE y DIRECCION-OFlCINA, como se muestra en la figura 3-2.
THUlO-DETAFIEA NUI~.E:Mf"'LE/,OQ TAnIFA-PAGO PIAl ANAUSJA

En este caWlulo se presents una cstructura de datos simple que es de gran importaneia: cl registro, La cstructura de datos registro sc define y sc compara con los otros tipos dc datos que ya fueron presentados; a continnacior; sc revisaran las facilidades para dcclarar registros en CanOL y Pascal. La estructura de datos registro csta cornpuesta por otras estnlcluras de datos, las cuales se abordaran brevcmente en cstc capitulo, La forma de llimacenar las variables de los registros es directa y las opcraciones con los registros Ie

como otro los campos

NOMBRE

f)~RECCION-OFrCfNA

INOM"R~
JOE

seran ya familiares.

123q56789

15.93

MUD]

MAT. N

EDIF,

1CUBICULO

esc 1

403

Los registros son los componentcs basicos de los archivos y de las bases de datos. La estructura de datos registro que sc introduce en este capitulo Seta una cstructura elemental que se utilizara en el resto del texto.

Figura 3-2 Ejcmplo de un rcgistro.

Tarnbien podria contener en I" figura 3-3.

un arreglo de CODIGOS-DE-PROYECTO,

como

Se

rnuestra basico;

DEFINICIONES
Un registro es una colcccion finita y ordcnada de elementos, posiblernenrc hcterogcneos, que se (ratan como una unidad, Un rcgistro se distingue de un arrcglo en cl hecho de que todos los elementos de un arrcglo dcbcn teller la misma estrucrura, a difcrencia de los elementos componentcs del registro que pueden (encr diferentes cstructurus de datos. Un registro se rncnciona algunas veces s610 como 11l1a estructura. Los elementos de un registro son comunrncnte llarnados campos. Un campo C5 un area cspeciflca de uti rcgistro utilizada para una clase particular de intormacion.

En c] cjcmplo anterior, a un campo sin campos subordinados


r--.-~.
TmJI_o·DE NUM.· (_J..IPlEACO T A~lfAPAGO

se lc llama elcmcnto

NOMGR(

·TARE~
!lNt,LJSTA

D[R~CCION·mIC[.NA ~AT. CODIGOSTDE.rROYtCTO EDIF.

--~123456789

'----

~-

10.93

PAT.

1NOMBF.-;r

MUD

1 JOE T

esc

lCUOJGULO

403

IS

140141150153
NOMBRE y

Figura 3·] Ejcmplo de un rcgistro que contiene un arrcglo.

a un ('ampo con campos subordinados D]RECcrON-()FICINA son elementos

sc le llama grupales.

elerncnto

grupal,

48

SOIl 1l111)' comunes rcgistros compuestos como cste, Tarnbicn es posihlc rcncr un arrl'glo de' ('kll1l'lllns del tipo registro dcntro de un registro. For ejernplo, un rcgixtro de

m
.

:'

50

,':

Registros

Capitulo 3

Registros en COBOL y Pascat

51

cmpleado podtia tcner un arreglo de dos elementos grupales como sc muestra en la figura 3A.

NUM-TELEFONICO

'

COBOL COBOL utiliza un sistema de numeros de nivel para indicar las estructuras de los registros. Una dcscripcion de registro cmpicza con cl nombre del rcgistro, e! cuul
sicrnpre csta en cl nivel 01 y despucs incluye las cspccificaciones de los campus que va a contencr. Por ejernplo, el registro Hamado EMPLEADO, rncncionado anteriormcnte, se tlcclara en la DIVIS[ON DE DATOS del programa COBOL como sigue: 01

Figura.3-4

Ejcmplo de un regisrro que contienc arregios y subrcgisrrog

Este registro de EMPLEADO esta compuesto por los campos TITULO-DE-TAREA

NUM-F.~PLEADO, TARIFA-PAUO, NOMBRE, DlRECCION-OFICINA, CODI~ GOS-DE-PROYECTO Y NUM-TELEFONICO, cada U!lO, claro, con su respective ~slructura de datos. La variable EMPLEADO pucde lomar varios valores a traves del u ern po. Llaves de ldentlficaclon
~!l registro, )lOt 10 general, conl icne un campo que 10 idetlliflca. Continuandn con el CJCl11plo anterior, un registro de ernplcado se idcntifica en particular POt cl valor en el carnpo NUM-EMPLEADO. EI campo que idetllitica un rcgistro se llama campo llave. La liuve de un rcgrstro p~edescr Uti elcrnento baxico 0 bicn uno grupal. Porejempio, un rcgistro de la c,lase particular CURSO puedc idetllificarse por el valor de S1J~ campus DEPARTAMENTO, NUMERO Y SECCrON.

REG-EMPLEADO. 02 TLTULO-DE-TAREA PICTURE X(7). 02 NUM-EMPLEADO PICTURE X(9). 02 TARIFA-PAGO PICTURE 9(2)V9(2). 02 NOMBRE. 03 APELLIDO-PATERNO PICTURE X(20). 03 APELLIDO-MATERNO PICTURE X(20). 03 NOMBRE-PILA PICTURE X(20). 02 DOMICIUO-OHCINA. 03 EDlFfCIO PICTURE X(3). 03 CUBICULO PICTURE 9(3). 02 CODIGOS-DE-PROYECTO OCCURS 5 TIMES PICTURE 9(2). 02 NUM-TELEFONICO OCCURS 2 TIMES. 03 CLAVE-LADA PICTURE 9(4). 03 NUM-LOCAL PICTURE 9(7).

Archivos Se llama archive a una col.ecci6n de ocurrcncias de registros logicamente relacionados que se tratan C~tllO una unidad, E.s usual que (OdDS los registros de! archivo scan de un solo.fomlato. ~In embargo, algunas vcces hay diversos formatos de registros en un solo archjvo, Por cjcrnplo, una ocorrencia del registro FMPLEADO podri . 'J . '. ." . la ser scgur 0 por varras ocurrencias de rcgistros del tipo RESPONSABILIDAD-DEL-PROYECTO detallando cada uno las aceiones ejcrcidas por el empkado en alguu proyectn en particular.
La mayor p~:rte de este icxto esla dedicado al topico de organizacion de archi vos de regl~lrOS, d~ t.al!~~~a que pucdan scr uti Ie: en el proc~sarrriellto de apl icaciones, Aunque trl1Jch~sarch!v()s:;~ alrnuccnan en rnCI1lDtIU secunrlana, algunos archives relativatnente pequcnos que ~e utll!zan frccucntcmcnt- se almaccnan en la memoria principal Las opera crones legales sobre rcgistros son aqucllas que se definen a partir del contenido de los campo", busadas en sus estructuras de datos.

Cada dcscripcion dc clemente cs prcccdida por un numerc de nivel tom ado del conjunto (01,02,03, ... , 491~'; la cornbinacion de estos nurneros de nivel describe la estructura jcrarquica de los campos del registro. Los incrementos en los numcros de nivcl, como de 01 a 02 entre EMPLEADO y TlTULO-DE-TAREA, y de 02 a 03 entre NOMBRE y APELLlDO, entre DIRECCION-OFICINA y EDlFIClO, entre NUM-TELEFONICO Y COD [GO-AREA, indican lu subdivision de un elerncnto grupal en los campos que 10 componen. 61 elemento grupal EMPLEADO comprcndc al TITULODE-TAREA, NUM-EMPLEADO, TARIFA-PAGO, NOMBRE,DlRECCION-OFICINA, CODIGOS-DE-PROYECTO y NUM-TELEFONICO. EI elerncnto grup8l NUM-TELEFONICO, cl cua] cs un arrcglo con dos ocurrcncias, cornprcndc II los elementos CLAVE-LADA y LOCAL Observe que s610 los elementos basicos ticncn la cluusula PICTURE. Est" informacion sabre cl tipo de datos no sc ntiliza can los clcrr.cntos grupales, pnrquc sus cstructuras estrin dcfinidus par los elementos btisicos que contict.cn. Una jcrarquia mas dcsatrollada en CODOL podr ia requerir el uso de nurneros de nivcl rruis grar.dcs. Por ejcmplo, la parte LOCAL del mimero tclefonico podria subdividirse en dos elementos gmpulcs llumado-: NUM-SERIE y NUM-SECUENCIA.
02

REGISTROS EN COBOL Y PASCAL COllsidcremos ahora las facilidades qlle pcrmiten la dcclaracion . , v, reglslro en COBOL y Pascal.
It' \

" 'una

bl

1. cs (c tlpo

03 03

NUM-TELEFONICO CLAVE-LADA NUM-LOCAL.

OCCURS 2 TIMES. PICTURE 9(4).

52

Registros

Capitulo 3

Regislros

en COElOL y Pas(:<ll

53

04 04

NUM-SERIE NUMSECUENCIA

PICTURE PICTURE

9(1). 9(6).

':'S suficicnt"~ ~"ro .si cl llol11hrc del campo no cs unico, entonccs deberii ulili,-arsc alguna lonna de calificacion pam huccrlo unico Por ejcrnplo, considere In siguicnte estructura de registws en COBOL. .

Notese quc cl clemente LOCAL ya no incluye III informacion del tipo pOl'que ahora ya no es un clemente btisico. PLjI utiliza los 1111l11erosde nivel casi igual que COBOL, s610 que PLjlno antepone cl 0 (cero) al mimero de nivcl,

01

ESTUDlANTE.

02

Pascal
Pascal usa blnques ell lugnr de la convcncion de numeros de nivel para definir la estructura del regislrn; cad" entrada que sc dcba subdividir se delimit a mediante las palabras record y end, para indicar d ugruparnicnto de elementos. lyre nornbre -~ record

FECHA-NACIMIENTO. 03 MES 03 DIA OJ AND BACHILLEK

PICTURE PICTURE PICTURE

99. 99. 99.

02

03

-'-';;pellidu-plllcmo : packed array [I .. 121 of char; nombrc-pi]» : packed alTay [1. ,8J ~ ch'lf; _.end;

03

dircccion

Telefono

record cdilicio : packed "nay [1 .. 3] ~ char; cubiculo : inlegcr-end; = record ~cTavc ·Iada integer;
=

f'ECHA-MATRICULA, 04 MES 04 DlA 04 ANO FECHA~r:;RADUACION, 04 MES 04 DIA 04 ANO

PICTURE PICTURE PICTURE PICTURE PICTURE PICTURE

99. 99. 99,

99.
99. 99.

02

GHADUADO.

record

03

end; end;

numscrie : integer; nurn-sccucnciu : integer;


--"-~

03
,.,.record titulo-de-tarca : packed array [1 .. 7J of char; numempleado : p~ckecl array [1 . . 91~' char; tarifa-pago : real;-----

rcgistroernpleado

j'ECHA-MATRICULA. 04 MES 04 DIA 04 ANO FECHA-GI~ADUACION. 04 MES 04 DIA 04 ANO

PICTURE PICTURE PICTURE PICTURE PICTURE PICTURE

99. 99. 99. 99. 99.


99.

nombre-cmpleado : Hombre;
dirccclon-oficina : dirccclon; codigos-de-proyecto : array [1 .. 5] of integer; num-tclcfcnico : arr3y~ 2] ~ teldona;
end;

81 nomhrc de dulo ANO 110 es unico, pero puedcscr calificado para mostrar a cual es~"Uctura xc rcficre: por ejernplo ANO DE FECHA-NACIMIENTO. Sin embargo, ANO DE FE~HA-MA TRICULA no cs unico y se nccesita una mejor caiificacior, que pucde ser AND DE FECHA-MATRICULA DE ESTUDIANTE, 0 bien, ANO DE fECHA-MATRlCULA DE GRADUADO. Un nornbrc de variable, totalmerue calificad« xc rclcriru " todos sus niveles husta cl 01; pot cjcmplo, ANO DE FECHA-MATRIClJLA DE GRADlJADD DE ESTUDIANTE. Puscal usa una eonvcncion ligcrallll'IlIL' dii','rentc para culificar los nombres de variables. Los cjernplos del purrafo antcnor :;Cl"liln los siguicntcs:
rt:Chil-n.acilnlel1[O,iJIlo

Este ejernplo mucstra la definicion de nuevos tipos de datos, como nornbrc, dircccion, tclefono y regisLro-empkado. La dcclaracion ~ puede seguirse por la definicion de variables con las estructurns dcfinidas. var ernplcado : reglsrrocmplcado;

Calificaci6n

de nombres

Para rcfcrirsc a un clemente particular de una estructura de rcgistro, debe IlS11rSC un nombre de variable. de identificud(·11l1Il1ico. Si el nornbrc del CUlllpOes unico, cntonces

[la" hill ~r.rCcha-m3IricllJa."n(] gracl'lacio.fech"-malricula.aiio cstudiantc .gradu ado.fccha- matricula.afio

54

Registros

Capitulo 3

Resumen

55

Ejcmplo de flujo de trafico


La figura 3-5 es otro cjernplo de una cstructura de registro y su dcclarucion en COBOL sobre cl flujo de trafico en una interscccion.

y Pascal. El registro conticne informacion


THAFICO

id: integer; 10e: packed array [1 .. 51 ~ chat; info-trafico: informacion; dir: army [l.. 4, I .. 31 ~integer

end;
VClr tni.flto; reg-trafico;

Figllt"a 3-5 Ejcrnplo de

Un

rcglstro

de Ilujo de tr-iflco.

rORTRAN no tiene facilidnd para declarer variables de tipo registro. En su Ingar, cada UIiO de los com ponentcs clcmcntales se definen por scparado y se agrupan pata Iormar un rcgistro ell forma irnplicitu. l.e 16gica 0 la docurnentacion del prograrna debe indicur que \111 grupo de campos forma rcalmentc un rcgistro.

En COBOL, 01

estc rcgistro se podria declarar

como:

FORMAS DE ALMACENAMIENTO
Los regixtrox se almacenan casi sicrnprc en forma lineal. La memoria se reserva para cada uno de los elementos busicos en cl rcgistro, ordcnados ell forma contiguu, tal y como "parecen en la declarucion. Por cjcmplo, en el rcgistro TRAFICO, la distribucion de datos ell la nicmoria xetia la que se muestra en 1<1 figura 3~5. Esta tccnica de ulmacenamien;o lineal con Irccucncia ocasiona que los elementos de datos crnpicccn fuera de los lirnites de la pulabra. En alguna~ miiquinas, cicrios tipos de proccsarnienro requicrcn que los datos queden ulincudos de acuerdo a cicrto tipo de lfmitcs: de media palabra, de palahru cornpleta D de doole pnlabrn. Para ascgurursc del alincumicn-o correcto en estos CaSO'; puede ser necesario yue el programador inscrtc cspacios sin inlormacion significative entre los elementos de datos. Estc expacio de rclleno es Ilamado bytes inactivos 0 relleno. La alineacion uclecuada de elementos de datos y limitcs naturales pueden conducir hacia una ejecucion mas eficiente de algunos opcracioncs aritmcticas y de. subindizacion. Cuando algunos elementos de datos aparecen entre los litnitcs de palabras 0 cruzan CS10S luniies pucdc set ncccsario moverlos a otro lugar para perrnitir la ejecucion de algunas "peracioncs de maquina. La sincronizacion pucde lograrse mediante el rcc(lnocilll.ient[) de los limitcs de la palabra y III crganizacion apropiada dc los datos, usando rcllenos en la extructuru de datos, D, en COBOL, usando III clausula SYNCHRONIZED. VC:1.,e UTI manual de icngllaje COBOL para mas dctullcs sobrc (;S13 clausulu.

TRAFICO. 02 10 02 LOC 02 lNfORMACION. 03 FECHA. 04 MM 04 DD 04 AA 03 DIA 03 HORA. 04 INIClO 04 fIN 02 ESQU1NA OCCURS 4 TIMES. 03 DIRECCION OCCURS 3 TIMES pod ria ser:

PICTURE PICTURE

99. X(5).

PICTURE PICTURE PICTURE PICTURE PICTURE PICTURE PICTURE

99. 99. 99. X(3). 9(4) 9(4). 9(6).

En Pascal lu dcciarucion

type Iecha - record mm: integer; dd: integer; alia: integer end; --hora - record inicio: integer; till: inicger; end; --- t» informaci- lin - record --- fecha-inlo: fcchas; dia: packed array [l .. 31 of char; h '"l:fl~ . --end: om-a
0:

RESUMEN
Un registro es una colcccion flnira y ordcnuda de elementos posiblcmcntc hcterogcncos, los cuales pucden scr a su vez cstructuras COlllpUl"stas (registros D arrcglos), El principal d' 1· . I· I proposiio (10.: 1:1 estructura de atos registro, es agrupar campos ogicamcntc rc acionac us para cjccumr sobre cllos operaciones de entrada/salida. Los element us del registro, se pucc'cn rcfcrcnciar de forma individual en un prograrna, y el grupo complero de elementos salida. en cl rcgistro que puede tratarsc
SL'

colectivarnente sobrc

en las operacioncs

de entrada/ d"

tora

Las operucioncs datos, SOil defiuidas

pucdcl1 ejecutat

los elementos

de una estructura

n:g·tr:itico -rc·l:'ord

de acuerdo

con sus tipos de dams individualcs.

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

56

Registros

Capitulo 3
~/-

tit: rcgistros por 10 general es simple y lineal. Algunas veccs se Inserra un espacjo de relleno dentro del rcgisiro con el proposito de aurncntar la eficicncia de ciertas operaciones aritmcticas. Este espacio puede ser inscrtado explicitamente 0 mediante e1 uso de una instruccion del lenguaje de programacion, como la clausula de COBOL SYNCHRONIZED, Los rcgistros 50n importantcs porquc pucdcn prcscrvar la estructura klgiea natural de los elementos de informacion rclncionados.

La forma de almaocnamicnro

!~capitu'o cuatro
~pifas_ ._~
~-:

TERMINOLOGIA
Archivo Bytes inactivos Campo Clave Elemento basico Elemento grupal Estructura Numero de nivel Registro Relleno

REFERENCIAS SUGERIDAS
COBOL, PUI, and Pascal textbooks and language manuals. MARCH,S. T. "Techniques for structuring database records." ACM Comru1ing 79, March 1983. Surveys 15(1)' 45--

I~.
Una de las estructurus lineales de datos mas cornuncs es la pi!a. Las opcraciones que dcfinen esttll~tura de datos de tipo pila se prcscntan para, despues, dar paso a la dedaraClOl1 y manJp"lacklllde pilus. Casi todo cs:e capitulo esta dcdicado u ejcmplificar el uso de las pilus. .

:l~a

EJERCICIOS DE REPASO
1. 2. 3. i.emil es 13 diferencia entre un arrcglo Y un rcgistro? i.Pucde un arreglo set parte de un rcgistro? i.Pucde un rcgistro ser parte de un arrcglo? i.Pur que podria uri programador dcsglosar tin campo en componentcs parcialcs? Dos programas accesan el mismo archive. Un programa ira.a a Num-telefonico como un elerncnto basko, micntras que cl otro program" considers a Num-tclefonico como un clcmento grupal. ;.Cual es la razon de la discrcpancia? Basados en cl contenido de este capitulo, i.por que nee que FORTRAN ha sido considerado como un lcnguajc inapropiado para la administracion de negocios? iCUC\]es son las vcntajas y desvcntajas que dcbcn tomarsc en cuenta al usar rellcnos y al usar la c!~nsula SYNCHRONIZED del COBOL? Encuentra una cstructura para los registros del archivo de estudiantes medic.
0

DEFINICIONES Lista linea!


Una lista lilleaL. es una cstructura de datos formada por un conji.nio de elementos ordcnadns; cl numcro de elementos en la lista pucdc variur, Dcnoternos Ia list" lineal lJamada A, formada por T elemenlos como; A
=

4. 5, 6. 7. 8, 9.

lAp A" ' .. , A,l

cmplcados
0

ell 5U

Si.T = 0, CJ110nccs A sc dice qULO cs una lista vacia 0 hula. Se puedc borrar un clernento o J1):;erta~' ell ~llalqllicr posicion de la lis:a As! la lista puede crccer 0 dccrcccr al transcurrir cl rrcnipo. Pila

Estudie algunos ejemplos de declaracion de registrr» de program as en COBOL

Pascal.

Escriba un programa para leer los datos del registro EMPLEADO usado como cjcmplo en este capitulo. Por 10 general todos los rcgistros en un archive tienen la misma estructura. Sin embargo, algunas voces cxisten varias cstrucmras de rcgistros en un solo archive. i.Cu,ile, son las vcntajas y dcsvcntajas entre a) mczclar los registros de ESTUDJANTE y CLASE en un solo archivo, y b) poner cada clase de rcgistro en su propio archive? De una situacion donde la opcion a) sea mas apropiada y una dondc la opcion b) sea mas correctu.

:'_
~,

:····.'····· ... ..• ·l


()pnaC!OllCS

Unn pi!{/ '"S 1111casn (','peeiai de una lisia lineal en el cued, la insercjoll Y suprcsion son lJLIc' sui" pucdcn ocurrir en lin extrema de !a rib, cl cued sc dcnorninu COInO 57

..

'

".

_-

58 Pllas Capitulo 4 Definiciones

59

tope de Ia pila. Denotemos P,donde

a TOPE(P)

como el clemente

tope de Ia [lib P. Para la pila en el tope son visibles y pucden utilizarse (v ease la figura 4-2). Al agrcgar otra battdcja en la parte superior de la pila, se comprirnc cl resorte; al rctirar una bandeja, el rcsorie se cxtiende y Ia siguiente bandcja se encucntra accesihle

p ~ rp"p" ... , P,? cI TOPE(P)


es P.r'

Usernos Numel(P) para denotar cl ruirnero de elementos en Ia pila P. NUlnel(P) es un atributo de la pila P, el cual ticne un valor cntero. Para la pila P de arriba, Nume!(P) es T. Ei T-esimo elcmeruo de la pila cs el clerncnto tope. Pndelllns reprcsenmmente una pila de varias [0111135: el tope puede estar en la parte slJperior, horizontal derecha u h.orizontal izquierda, como se rnuestra en Ia figura 4-1. gr~ifica. inferior,
Resorte

Nivel del mostraocr

Figura 4-2 Ejcmplo de una pila de baudejax.

'0" -~

fB tB ~.L!lx)xlx

Otro ejcmplo de una pila cs un sistema de una posicion a orzn (Figura 4-3).

de rieles, usado para dcsvinr curros de tren

'"eo

Ixlxlxlx]
Tape

Tope

Figura 4~ 1. Reprc.'5(;ntaciones gdfic,LS de pilas,

Figurn ""-.3 Rieks que fan nan Una pil»,

La representacion grMien que se eiija no impolta en tanlo que haya consisleneia para cuul'luier pila en particular. Aqui gcneralmcntc u~arernos la cOllvencion de teller eI lope en direccion slJperior.
Ell

El ultimo carro de tren que entra en la rib

es e] primeru

que puede salir de ella.

cualquie-

caso, para una pila,

Operaciones sobre pilas


Existen 1. 2. 3. 4. cuatro operaciones basicus que son validas para cI tiro de datos pila:

p~ rp"p" .. " PTj,


direlll(lS quc el clemente PI esta arriba de! eiemen:o P si 1 > J. PI esla mas uccesiblc que J los elementos anteriares, es decir, PI podm sacnrsc de la piia atlles que cualquicr elernento que estc abajo de d. PI pcrrnanccr, en la pila mCIlOS tiernpo que <ualqu.cr elcmcnto anterior. CuaJquier gnifica de una pila s610 la represent» en un instan:e de ticrnpo Los elementos en el (ope carnblan en tanto que la pila crccc 0 dccrecc, en eambiu, Ia base pcrmanece fijll.

Crear (pi la) Est,i-vacia Sacar (pila). Crear(P) regrcsa una piln vaciu con cl nombre cs 0 P. Por definicion (pila) pilu)

Meter (cletllCIlIO,

EjempJos
Un ejcmplo cornun de Una pila cs un apilamiellto de bandejas en una cafeteria. Las bandejas est.in sostcnidas POt LIn Inccallismo de resortc, de tal forma que solo las b.unicjas

EI operador

Nlltnel(Crcar(P)

y Tnpc(rr"ar(P)) es nulo.
EI opcrador dctcrrnina clland() una pi 1:1est.i vucia !l0. El opcrando cs la pi la; :1 re~ suitado cs boolcano Est:i-vacia(P) lOS verdadern si la pi.u Pesta vucia (es dccir, :>1

60

Pilas

Capitulo 4

Pilas en COBOL y Pascal

61

Numel(P)

~ 0) y [also en caso contrario,

Hay Cjue notar que ESI.i-vacia(Crcar(P))

es

Despucs

entra el elcrncnto

B, obtcnicndosc

P = IA,I3J (Figura 4-4c):

verdadcro.

Ala operacion de ajiadirun clemente a Lapila sc lc llama meter ala pila. Mcter(E,P), agrcga un eiemento E ell el tope de la pilu P, aumcntando de tumaiio I" pila, Note que Tope(Mctcr(E,P)) La operacion elemcnto Meter (E,P), cs E. iarnbicn aumcntu el Numd(P). El rcsultudo de rueter un

P NumeJ(P) = 2, Topt:(P) = B, Ahoru introduzcamos al clemente C, asi P = [;\,B,C]

Fi~lIr" 4-4<)

(Figura 4-4dj:

en cualquicr Est.i-vacia

pila no pucdc ser una pilu vacia: (Meter(E,P)) es false. Si dcscamos

Numel (P)

3, Topct'P) ~ C. en In pita, (cnemos

Fil(ura 4-4d)

sacar un clemente

Cjut: P ~ [A,B] (Figura 4-4e):

Ala operacion dc remover un ekmcllio de la pila se lc llama sucar de la pila. Saear(P) rcmucve un elcrncnto del tope de [a pi!a P' disminuycndo el tamaiio de la pila. Si cl clemente extraido debe conscrvnrse sc dcbcr.i tomur alguna accion antes de la operucion de sacar. Note gue la opcracion Sacar(P) disminuyc a Nurnd(P), y que seria LIn error intcntar sacar un clcmcnto Sacar(Crcar(P)) En auscncia de una pila vucia:

NlltT1el(p) = 2, Topet}')

~ B, mris, digaJ1l()s DyE, obteniendo P ~ [A,I3,D,El

DCSPllCS, quizas mctamos


da una condicion de error. a Nurne.lt l') y cambia el (Figura 4 -4j);

dos elementos

de tal error, Ia opcracion sueur dcshacc

Suc<lI'(P) decrcmcnta de Ia operaei6n

Tope(P), El operador

el resultado produce P.

meter; Numel(P) de las operaciones Y si quisicramos ~ 4, Tope(P) ~ E. P = [ ;\,B,01 (Figura 4-4g);

Sacar(Melcr(E,P)) Usted puedc cncornrar elementnlcs

util derivur otras tautolog ias de la oornhinacion

sacar un clemente

de La pita, obtcndriatnos

sobrc pilas.

Ejcmplo
Comcncernos con una pi la vacia y consideremos los efecto» de una sec ucncja de operaciones de Meter y Sueur. Rcprcscntarclrlo$ grMicamenle la pila vucia con la figure 4-4a).

Numd(P)

~ 3, T"pe(P)

D,

Figura 4...:1g}

t
p
Primero

Y asi sucesivamente, Se dice gLJ'" las pibs operan'::l1 la forma uliimo-en-entrar-primero-en-salir (ell ingle»: last-in-first-out 0 LIFO). Es dccir, los elementos sc rernucven en orden invcrso al ordcn en que fucron insertados en la pila.

Numelt}')

~ 0, Topc(P)

indcfinido.

Figura 4-4a)

PILAS EN COBOL Y PASCAL


sc mete "I clemente A, y se obticne P = fA I (Figura 4-411):

l~
P

Pilas alojadas en arreglos


Aunque las pilus son estructuras muy usadas, la mayoria de los Icnguajes de prugramacion no ticncn prcdcfinida la cstructura de datos tipo pi/a. Para resolver cstc problcrua,

Numd(P)

1, Tope(P)

~ A,

62
Pilas Capitulo 4 Pi1as en COBOL y Pascal

63

el progtatnador debcra usar (Jperaciolles snbre una pila. mas simple para rcprcscntar cste melodo para manipular

las caractcriSlicas exblclllcs dellcllgUlIjc para sirnular las Existcn varias formas de rcprcscm.u pi las, quizas lu f0TI11a pilus es alojarlas en arrcglos. En esta seecion inlroeluc1mos pilas en COROL y Pascal.

Opcraciones sobre pilas


.. I,·, 'I' s de opcracion LIFO para una pila la.s violacioncs a as re g a'i >be·tener cuidado de no indexar I . t cl l)l"Ograrnu(l or ( e. alojada en UQ arrcglo, por 0 tan .0, .. ' d. " d .r nor A PUNTADOR~TOPE. . " m P excepcl0n de] clemento iu lea o P' . ,. cualquier elemcnto en a . de P pueden prograrnur como siguc: . de 't .r Y sacar elementos e se ~ FF Las opcractoncs c me c. ' . lcb i mctcrsc dentro de P y hO N . , . ii ar cl clemente que uc era . se pucdc usar EO para m: c. ,.., . e ele P (Note que ulmaccnarcmos a EOFF), Pata indicar cl clemente que debera sacUl.s d. I. ru maximo de elementos que . . NUMEI -MAX para III lear c nume . se usura la variable ., ." i NUMEL-MAX = 100. La uplicacion determine las ci arreglo P puedc contcncr; aqu .. , de desb rde (cuando sc intenta meier . d .urre una condicion to es () el acetones a tornar etlan 0 oc b I( do se intenra sacar elementos e elementos ell una pila Ilcna), 0 de subdes ore c cuan . una pila vacia). Un compilador no detecta En COBOL METER. los parrafos son:

Una pilu xc pucde aloja, en un arrcglo, pero cs muy importuille di61inguir que una pila y un arreglo son dos e"lrueluras de datos con difcrenlcs reglas. Prilncro, rccuerde que 110 hay rcstricciones para insert"t 0 borrar elementos en alguJJu parte del arrcglo. Lo cual hace que el programador sea cl reSjJol1Subk de poner en vigor las regia::; LIFO para una pila que sc aloja en un arreglo. SegUlldo, al alojar una pila en un arreg!o, inmcdiatamenn, sc reSlritlgc a 1a pila para contener elcmento-, homogeneos. En lliJlgUJI rnomcnro el eotlccptu de pila previcne que su cU!llcnido no pueda ser de di!"crcmes tipos de elementos. Otra testriccioll artificial ilTlpuesta, es que el ptogrumador debe establecet ci Iimirc superior para los subindices del arreglo, a diferencia de hi cstrUCllInt de pila que no restringe al nurnero maximo de Giemetltos que pucde eOlItcner (de bandejas en una cafeteria, 0 fichas de poker por cjernplo). Sin embargo, una pila variable alojuda en un arreglo queda rcstringida a] cspacio asignado para ese arreglo. De hecho, la pila crcce o deereee con el tiempo, pew un arreglo tiene un tamano COllstante.

Declaraci6n de pilas

Considcremo, In dcclaraei<in ele una vuriablc de tipo pila Hamada P. Asumamo, que calla clemento do P sera un entcro y qlle P tcndr.i un maximo de 100 elementos. Ademds de dcclarar el arreglo que alojarri a P, tcncrnos que dcclarar una variabl.c APUNTA DORTOPE, euyo valor sera el subinelicc de! clem.entD tope de Ia pila. Llumemos a la combinaci6n ell' arteglo y tope como ESTRUCTURA-PILA. Con csta reprcsenlacion, Numd(P) = A PUNTA DOH-TOPE. La Iuncion Esta-vacfa(P) cs verdadera cuando APUNTADOR-TOPE = 0, y Ialsu cuando APUNTADOR-TOPE > O. En COBOL:

If APUNTADOR-PILA <.~UMEL-MOAp~ = APUNTADOR-TOPE THFN COMPUTE APUN I ADOR-T . MOVE EON TO P (APUNTADOR-TOPE) ELSE condlcion-dc-dcsbordc SA CAR.

+1

IF APUNTADOR-TOPE
THEN

>

c.

MOVEP (APUNTADOR-TOPE) COMPUTE APUNTADOR-TOPE ELSE condieiCin-de-subdcsborcJe. son:

ro rorr
~ APlJNTADOR

_
TO

PE-

01

En Pascal Ills proccdimientos ESTRlfCTURA· 02 P 02 En Pascal: type cSlruclura.pi]a _


._ record

PI LA. PInURE
OCCURS 100 TIMES

APUNTADOR-TOPE

9(3)

PICTURE

9(5).

var

end;
p: l'srructur:l-piltl;

pila: array fl. .100jlJfin!egcr; ap\tni;;;rm~·pila: inle.~r---

procedure meter (eon: integer); . . be . .f (p apuntadortope < numel-rnax) !.:glnl I_ b·· upuntador-rope . ~ p.apll11tador·llJpe + 1; I len cgtn p.u ~--~p.pi!a [p.apuntador-tope] : ~ con end else CONDICION·DESBORDE end;~ccdllf~ sacnr (eolT: integer); begin if (p.apuntador-topc > 0) ,. -~then beain coif: ~ p.pila [p.apunradcr-topc]; ~__ b~ p.apuntador-topc : ~ p.a puntador-topc ... 1
end

Si sc utilizan varias pila.\ en Ull Itiisll1() programa, cada una ncec~ilar;i su propic; apUlIlauor de tope. (N"ta: Ell CUHU!. Ia pabhra TOP cs paluhra rescrvaela.) Sc
~\lpOI1C

else CONDICION,SU13DESBORDE end; que P e.s una variable global conocida.

64

Pilas

Capitulo

Ejemplos

de aplicaciones

de pilas

65

Es importantc tener prccauciou sohrc In intcgridad de la pi la, In cual sc debe man tenor por el prugrarnador, cuando la pila xe aloja en un arrcglo. Es rcsponsabilidad del progratnador ascgurar que el apuntador de tope solo sea usado como punto de referenda de la pila. Hay otras Iorrnas de represenrar pilas, aun cuando no se tcngan estructuras de datos de tiro pila, Analizaremos csras reprcscntaciones el capitulo 6, que trata sobre Iistas ligadas. incorporadas 111115 adelautc, las en

Ejemplo:

correspondencia

de parentes is

Una de las tun~as del compiiador e-, la de verificar q'IC cl programudor ha espeeillcado de forma corrccta las reg las gramuriculcs (xintax is) del ietlgllajc de prngramaci(in. Considerc cl problema de verificaci,'ln de sjntux is gue consistc en ascgllrar que cadn porcmcsis Izquierdo tiene su [",rcnte;;i, derccho corrcspolldicnlc. Una pila sc pucde usar para facilitar el procedimiellto de aparealllicntl). . El algoritmo es simple. Rastreamos la cadena de elementos de izquicrda a dcrcchu. Cada vcz que cncontramos un purcntesis izquicrdo 10 mctcmos en III pilu. Cada vel; que encontrarnos ur: porcntesis dcrccho rcvixamos el contcnido de la pila. Si cst.i vactu entotIccs huhtemos encontrudo un parentcsis derccho qlle no cierra un parentcsis izquicrdo, y tendrc.nos lin arm. Si la pila no exui vacia habrcmos encontrado cI par, y solo 10 sacarcmos de la rnisma. Si la pil» no esta vacfa al rcrminar la cadcnn, ellt()llCCS hay un parcntesis izquicrdo sin ccrrar. En clIulqllicr puruo del rastreo, cl nurncro de elementos en la pila lOS Ia prolundidan de anidamicnto de los parcntesis, que varia de aClIcrdo "I mUlncnto en cl que sc hal Ie la bUs'l"eda. Es:c alglJritmo se rnucstra en d diagram:l de flujo de la figura 4-5.

EJEMPLOS DE APLICACIONES

DE PILAS
de problemas, Se usan de aplicacion. En csta

Las pilus se utilizan rnucho en la rcsolucion de una gran variedad en cornpiladores, ell sisremas operativos y ell divcrsos prograrnas

seccion ejcmplificarcrnos solo algunos usos de las pilas; aunque existcn muchos otros, Verernos trcs cjcrnplos Y uiilizarcmos uno para ilustrarlo con Ilueslros lcnguajes de prograrnacion (COBOL, Pascal),

Programamos csta rlltina ell COBOL. La cadcna a scr raslrcadu se alrnaccna, caracter por caracter, Cll un arrcgio Ilamado CADENA. La pila sc aloja ell un arreglo llaruado PILA. Supongamos que cl numero maximo de caractercs en la cndcna es de 80 Y 'Ill" In
cadena term ina con un punto Y coma (;). Las estructuras 01 sc dcfincn pore

Sintnxrs

valida

ESTRUCTURA-PILA. 02 PILA
02 APUNTADOR-TOPE CADENA. 02 CARACTER SJGUIENTE~CARACTGR por cl siglJiente codigo:

t i
f 01

OCCURS 80 TIMES PTCTUREX. PICTURE 99 VALUE CERO, OCCURS 80 TIMES


PlCTURE X.

01

PICTURE 9').

Estas cstructurus se mancj:m PERFORM


Sintaxis invanda:

EXAMINA-SIG-CARACTER >

VARYING SKiUIENTE-CARACTER UNTil. SIGUIENTE-CARACTER

so

FROM 1 HY 1
= ";".

no

!
I I

OR CAHACTER(SIGUIENTE-CARACTER) IF AI'IJNTAIlOR-T(WE = 0 xintuxi« v:i!ida EI"S E si 111:, xix-i nvu Iida-parentcs donric is-izqu ierdo-no-cerrado,

f,.

loo.emel1.lar 5tGUi[NTt:

CAnACTEA ealSfQ\Jrent~
(:ar~der en

e ceeene

EXAMINA-SIG-CARACTER.
de parcntcsis.

Figura 4-5 LOgics para aparearniento

IF CARACTER(SIGl..JJENTE-CARACTER)

"t"

PERfORM

METE

66

Pilas

Capitulo

Ejemplos

de aplicaciones

de pitas

67

ELSE IF CARACTER(SIGUIENTE-CARACTEH) PERFORM SACA METE.

'T'

program retiroroutput); consl objctivo ~ 100(){)OO; var nhora-tcngo.rcal; procedure compucsio 1 ario antcs ] 2 occln if (;:IlIU > Ojthcn
_o_ -

tasa

~ ()_OR;

COMPUTE APUNTADOR-TOPE ~ APUNTADOR-TOPE +L MOVE CARACTER(SIGUIENTE-CARACTER) TO PILA (APUNTADORTOPE). SACA IF APUNTADOR-TOPE ELSE COMPUTE ~0 ~ APUNTADOR-TOPE _ 1. S intax is- in Vii! ida -pan'ntesis-izquierdo-no-cerrado APUNTADOR-TOPE

aiio.intcger; (var ano: integer);

r dclen11ina

cl monto del ahorro

J
4

begin ahoru-tengo:
-_

~ ahoru-tengo/(Ln afio : "'"ano - 1; (ano)

+ tusa);

5
6

COJtlpUeSIO

7 8
9 10 11

end; f compuesto}
begin ano .- 25; {bloque compuesro write end. programa

end; ,. principal

-_

ahora-tcngo ;- ohjctivo;
(afio); writcln.end; (ahoru-tengo);

En rcalidud, para cI proposito de estc problema, en el cual no VCIllOS los ekillentos que se sacan de la pila, lOS suf1cil'llte con registrar el mimcro de elementos que conuene la pila en un rnomento dado. Por blHo, en este cjetnplo la pila puedc ser virtual. Un problema mas intercsanle de verificaci6n sinldctica es la construccirin de un algoriuno para apareur 110 soio parcnlcsis, sino tambien !laves y corchctcs izquicrdos con dercchos, en una misrna cadcnu. POI' cjcrnpln, dada la siguiente cadena como entrada, el algoritmo debe ser capaz de determinar si e1 aparenmiento de corchetes es corrccto 0 incorrccro. + H - (F + G)*(A + B)])*(F - G + B) l/(D del algoriuno

(r A. + B*Cj(lD El desarrollo nccesarias?

E _ (A + 8))).

y la codifieacion

se deja como ejcrcicio.

i. CUanlas ribs son

EI valor de la variable ado camhia cada ve: que d proc~dilll~~nIO denotninad,o ~ompue~to OS llamudo corncnzando COil 25 y icrminando la cjccucion del progrurna cuando cs , I. E'I sistema uriliza una pita para rcgixtrar donde se encucntra el Pt~)g~'Hna 19ua a ceTO. . ,. ' .. 1 dimiento de retiro, ell uri momenta dado, durante la cjccucion. Cada Vc.Z~uc ", p~oce,. • com ucsto se invoca, la direcci6n de llurnada se mete en la pila. Cada VI:~ qu~ ,el cOlll~lleslo tcrrnina. sc cxtrae la dircccion de la pila y se tcgresa cl cOlltt(~1 a Iu dlre?:101l que se encontraba en el tope. La prim era 1l,lInada a compucslo se da en I" tnstruccron 9, y la pila de control cstti como se rnucstra en la figura 4-6a,

Ell cste problema, como en rnuchos otros que utilizan pilas, [a pila contiene un n~gislro de ohligacioncs pospuesras, las "!HIles ncccsitnn scr atcndidas en orden Llro, Ejemplo: recursion
Las pilas se usun conuinmenupara inrlicar en qlH.: punto se Clleucntm un program a cuando contienu procedimienlos gue se llarnan a Sl rnismox Estos proccdimientos se conoccn como procedi tn icnto: recursivos; Por cjemplo, considere el problema de converurse en millonario. Para tcner un mi llon de d()inres denlro de 25 afios, i,cu,into dinero necesita depositar hoy en el banco, con intcres cDmplIes!o del R% a.rual? Una forma de: pmgmmar estc problema ex a lI'uvcs del uso de proccciimietltos rccursjvox, Veamos el problema de In siguienti, rnanera: supongnmos que han pasado 25 unos y ahora ticne un III i 1I011 dolares. i,Cuanto dinero de tuvo en cl banco en el ario 24'1 en csu epoca usicd tuvo una camidad que, al aplicarlc el 8% al uno sigukntc, sc convirtio en un millon de d6larcs, L~ cantidad cs un millon dividido entre 1.0R, L.Cualllo IlCCl'.siI6 tenor ell cl arlo 23?, y asi sucesivamcnte.

Af1VNTADOR-TOPE

-_

....

L:J

Flgur a 4-6")

La scgunda invocacion u compuesto valor de 24_ La pila de control cst.i

COIllO

provicnc de la instruc_citil~ 5, cuando se mucstra en la figura 4-6b,

afio tienc el

APUNTADOR·TOPE

Figura 4-6b)

La tcrcera llarnadu a compucsto pruvicnc de la instruccion 5, cuando afio tienc cl valor de 23. La pila de control, cntonces, sc cncucntra como sc tr.ucst ra en la figura 4-6c.

AI'UNTAOOR·TOP[

rnillon,

EI siguicnt« programa en Pascal usa un procedimicnto rccursivo llarna.Io compucsto para culcular el dinero que nccesit., dcpo,~itar el primer ano pam obtener en 25 arios un

Figura 4-6c)

Despues

la Iiguru 4-6d,

de 25 llumadus

al prnccrlirnicnto .,

cOIllpuesto,

a csta como se rnucstra I a pi'1,"," .e

en

68

Pilas

Capitulo

Ejemplos

de aplicaciones

de pilas

69

APUNT"DOR-TOPE

aparecen antes del operador cs decir AB + EF r I·'- . j' - ',. 'I ' , , , . ~Sl,l orma es tTla,s Iricil de Inanilmia por c cO~TJPllador, como vercrnos en scguirl». r Considere cl siguicntc algoritr no, c cua I convicrte cxprcsion 'S de n I ., . Ii' '1" . , lr - E ,', _ . <.c. e o acton In IJa .\ Pos lJa_ n una pilu xe rctcndran Ius opera dotes infijos hasta que SIlS operandos hayan

Hubo 24 llamndas ala instruccion 5, y ano finalmcntc ticne cl valor de 0_ Ahoru la pila cntra en accion a medida que las llamadas sc dcsencadcnan. Cada invocacion a compucsto ncccsita SCI' rcgrcsada en una sccucnciu (LIFO), nasta que sc alcanza la l larnudu original. EI rcgreso de lu ultima Harnada a corupuesto rcsulta en una cxtruccion de lu pila, tal y como se muestra en hi figura 4-6e.
TERMINAR

"PUNTADOR-TOPE

Figura 4-6c)

Adem.is, todas las dirccciones sc cxtracn de 13 pila de control hasta regrcsar a la instruccion 9. La sigllietlte instruccion escribc cl valor dcterminu.lo de la variable
ahora-tengo, cl cual es la cantidad que nccesita depositor.
)

En cstc ejernplo, el compilador cit: Pascal cstublccio la necesidad de la pila y proporciono las instrucciones apropiadas para las opetaciones de meter y sacar de la
pila. En eI cjcmplo anterior, el programndor en COBOL cargaba
COil

f.

toda Ia rcsponxa-

bilidad del manc_jo de la pi 1:.'Algunos cornpiladores no son capaces de ruanipular llarnadas a proccdimicntos recursivos porque no ticncn los mccanismos de pila nccesuriox. Ahles de prograrnar y esperar que la recursividad funcionc (espccialmcntc en COBOL () FORTRAN) consultc sus manualcs de lengua_je_ D~safort\ln,][bmente, los proccdirnicntos recursivos en estes lenguajcs por 10 comun cornpilan correctarncntc en apuricncia, pero fallan durante 1,1 ejecucion,

f
i
}

f
f

I ,

Ejcrnplo: Notaci6n postfija


Una tercera apiicacion de pilus ex lu compilacion de exprcsioncs aritrneticas en lcnguajes de programacion de alto ni vel. Los compiludores nccesitan scr capaces de traducir de la forma usual de prcsentaci611 de instrucciones ariuncticas (Hamada notacion il/fija) a una forma mas facil de usar para la gencracion del codigo objcro, Para operadorcs binarios, como la suma, resta, multiplicacion, division y cxponcuciacion, los operadore» en

l~D
Mueve

""{itc:ler

-=r--~
.1_

la salida

notacion infiju aparecen entre dos opcradores, es decir, A + B, E i F. Las pilus puedcn usarse para trunsforrnur csta noiacion a lIotllciOIi postfija, en la cual los dos opcrandos

l~.",

POSICION

para el I---_..J :";IIJ_ CM~cIGr de Ia c~d€'lnu INFIJA I

Incrementa

Hi-----;;I

.J
po .•tflja. .

Figur'a 4-7 Logica para convertir cxprcsiones de notecion infija

'i

T 70 Pilas Ejemplos de apticaciones de pilas

Capitulo 4

71

sido exarninados, busicus.

La ex presion sc cxamina

de izquicrcla u dcrecha

Exi,len cuutro reglas

1. Si el sirnbolo es lin "("


0ste se mete a la pila de opcradores.

2.

Si cl simholo cs un ")" se saca de la pila todo 10 que exist" hasta llegar 31 primer '"C. Los opcradores van a la salida, a rncdida que :;akn de I" pila. EI "C' sc saca pew no va a la salida.

Note que (odos los parcntcsis sc han rcrnovido de la cxprcsion. Los parcntesis cran necesarios en la notacion inJija para indicar la prccedencia dcscada de operadores. En notacion postfija, [a precedencia de opcradorcs 5C indica de ucuerdo al ardell de los operadorcs. La cadena postfija sc pucdc rastrcar de izquierda a dcrccha, establccicndo expresioncs intermedius que involucren solo operacioncs binarias, como siguc: Paso 1. T, = A B + Paso 2. T, = TI C* Paso 3. TJ Paso 4. T,
= =

la cadena se convlerte

en: T, C*DIEFf

+(;1

3.

Si el sirnbolo

es un operador, preccdcncia, hast" que el cncuentre en sc mete ala

la cadcna se convierte en: T,DI EFt 1" cudena se convicrtc: la cadcna sc convierte la cadena sc convierte

-o)

cntonces si cl operador en el tope de la pila cs de la rnisma 0 de mayor dicho operador se saca y va a Ia salida, continuando de csta munera primer parentesis izquierdo 0 un opcrador de mcnor preccdcnciu se la pila, Cuando csta sitLlacion ocurrc, entonces, cl operador en turno pila.

T,DI EFi

T,EF i +GI
en: TJ

T., + GI

Paso 5. T, = T, T4 + Paso 6.

en: 1~ G]

4.

Si c! sfrnbolo cs un opcrando,
esle sc cnvia dircctamcnte a la salida. de hi pila.
ell

To = T, C;

la caden a se convicrre en: T"

El sirnbolo de tcrrninccion, aqui CS el punto y cornu, saca todos los simholos EI algoritmo se rnucstra en la figura 4-7. COllsicieremos dotes: prirncro el algoritrno con solo tres nivelcs de prcccdcncia

operu-

Como podni observar, ningun operador sc rastrca hasta despues de <J.lIe sus dos operandos hay an sido rastreados. Si csta Jnrniliarizado con un lenguaje ensamblador, puedc rcsultar obvio cl tipo de codigo que el compilador dcbcr.i gcncrar para implantar los scis pasos antcriores. Este algorirmo sc pucdc programar en COBOL C()\TIO sigue: Prirncro 13s variables se declaran ell lu DIV!S!ON DE DATOS. 01 PILA-OPERADORES. 02 PILA OCCURS 100 TIMES 02 APUNTADOR-TOPE 02 NUMERO~DE-ELEMENTOS 01 CADENA~DE~ENTRADA. 02 CADENA~INF[JA OCCURS 100 TIMES 01 MANEJO 02 POSICION 02 STG~CARACTER 02 ELEMENTO-SACADO 02 OP~PRECEDENCIA 02 PRECEDENCIA-TOPE 01 REGLA~DE-PRECEDENC[A. 02 CARACTER~DE~ VERIFICACTON 81\ N1VEL~0 88 N1VEL~1 81\ NIVEL~2 8R NIVEL~:l 02 NIVEL~DE~PRECEDENCIA En hi D1V!.)·[ON DE f'ROC!;,[)IMIENTOS cl conductor

Ex poncnciucio-, Multiplicucion

(t), "I mas alto n ivcl, ("), division

U), de rncdio nivcl.

Suma (+), resta (-), cl nivcl mas bajo, La figllfa 4-8 mucstra Ia pila de operudorcs caructer de la exprcsion aritrnericu infije:

y la salida a rnedida que sc cxarnina cada

PICTURE X. PICTURE 9(3). PICTURE 9(3) VALUE 100. PICTURE PICTUI~E PICTURE PICTURE PICTURE PICTURE X. 9(3). X.

«A
Punto

B) * CfD
1

+ 2 I
( (

E i F)jG;
3 A 4
I

temporal

5
B

5
)

B C

TO D

11

12 E

13 1

14
F

15
)

16 I
I

17

18

Caracter

i
!

Pil']' de

..

+
~I (

I
(

operedorcs

+ I
I

~
( (

I
(

I
(

I
C

+ I
E

,
+ I

X. 9.
9.

I
F

Salida

1+

Figura 4-K Forma U~examinar el contenido de lu pila.

£1 resnltado

en notaoion

postl'iju

C5:

PICTUREX. VALUE '+', '-'. VALUE '*', VALUE '1'. VALUE '(' PICTURE 9.

-r.

AB + C' DjEF t +

C/.

cs como si,o'11<':

72

Pitas

Capitulo 4

Ejemplos de aplicaciones de pilas

73

~.

COMPUTE APUNTADOR-TOPE = O. PERFORM EXAMINA-SIG-CARACTER VARYING POSICION FROM 1 BY 1 UNTIL POSIC[ON > NUMERO-MAX-DE-ELEMENTOS CADENA-INFlJA (POSICION)

If APUNTADOR·Tc)PE

>0

OR

PERFORM SACA-DE-LA-P1LA-A-SALlDA UNTIL APUNTADOR-TOPE ~ O.

y
EXAMIN A-SIG -CA RACTER. MOVE CADENA-INfI1A IF SlG-CARACTER PERFORM (POSICION) TO SlG-CARACTER.

MOVE PILA (APUNTADOR-TOPE) TO CARACTERDE- VERTFICACION PERFORM ENCUENTRA-PRECEDENCIA MOVE NIVEL-DE-PRECEDENCIA TO PRECEDENCIATOPE ELSE MOVE 0 TO PRECEDENCIA·TOPE P1LA-VACIA-A-MENOR-PRECEDENCIA. PERFORM SACA-DE-LA-PILA-A-SALIDA. PERFORM ENCUENTRA-PRECEDENCIA-TOPE. ENCUENTRA-PRECEDENCIA. IF NIVEL-O COMPUTE NIVEL~DE-P.RECEDENCIA ~0 ELSE IF NIVEL 1 COMPUTE NIVEL-DE-PRECEDENCIA ~1 ELSE IF NIVEr. 2 COMPUTE NIVEL-DE-PRECEDENCIA ~2 ELSE IF NIVEL 3 COMPUTE NIVEL-DE-PRECEDENCIA EI.S F cond icion-dc-crror. Una forma alternativa para la rcprcscntacion de una expresion aritrnctica

='C
METE-A-LA-PILA.

ELSE IF SIG-CARACTER ~ ')' PERFORM SACA-DE-LA-PILA-A-SALlDA UNTIL PILA (APUNTADOR-TOPE)

= 'C

PERFORM SACA-DE-LA-PILA ELSEIFSIG-CARACTER='j' OR '*' OR'( OR '+' OR '-' PERFORM ENC\JENTRA-OP-PRECEDENCIA PERFORM ENCUENTRA-PRECEDENCIATOPE PERFORM PILA_VACIA-A-MENOR-PRECEDENCIA UNTIL OP-PRECEDENCIA > PRECEDEN CIA -TOPE PERFORM METE-A-LA-PIl.A ELSE DISPLA Y SIG-CARACTER. METE-A-LA-PILA. . COMPUTE APUNTADOR-TOPE = AFUNTADOR-TOPc + l. IF APUNTADOR-TOPE> NUMERO-MAX-DE-ELEI'AENTOS condi cion-lie-error ELSE MOVE SlG-CARACTER TO PILA (APUNTADOR-TOPE).

=3

es la forma

prefija en dondc los operudorcs prcccdcn a sus operandos, por ejemplo, +AB, i EF. Un ejercicio ul Iinul del capitulo pregunta que carnbios necesita hacer al algoritrno anterior
para obtener cadcnas en notacion prefija en Ingar de postfija, EI ejercicio tambicn sugierc que conxiderc una mejora para que el algorilmo lome en cucnta el exurnen de los opcradores rclacionalcs < =, =, > =, », los operadorcs boolcanos (and, or, not) y los opcradorcs aritrneticos unitarios (-, +). Para auxiliarlo en su esfucrzo, anotumos a continuacion la precedencia usual de los opcradorcs

«,

Nivcl 6: Opcrador

unjtario

-, uniturio

+,!lot

SACA-DE-LA-PILA. IF APUNTADOR-TOPE =0 condicion-decrror ELSE MOVE PILA (APUNTADOR-TOPE) TO ELEMENTO -SACADO COMPUTE APUNTADOR-TOPE = APUNTADOR-TOPE SACA-DE-LA-PILA~A-SALlDA. PERFORM SACA-DE-LA-PILA. DISPLA Y ELEMENTO-SACADO. ENCUENTRA-OP-PRECFDENCIA. MOVE SIG-CARACTER TO CARACTER-DE-VERIFICACJON. - 1.

Nivcl 5: Exponcnciacion Nivcl I: Muhiplicacion, Nivcl 3: Suma, testa +. I.

i
division,

*, I
<, <

i'

Nivcl 2: Opcradorcs Ni vel 1: Opcrudor Nivcl 0: Opcrudor

rclacionales hoolcano hoolcano

=, =,

>

=.

>

and
or de COBOL infija, y

PERFORM ENClJENTRA-PRECEDENCIA. MOVE N1VEL DE-PRECEDENCIA TO OP-PRECEDENCIA. ENCUENTRA PRECEDENCIA-TOPE.

Note que tamhicll hunos asignado Utili prioridad alta al "(" en la rurina anterior, In cual Iacilit« ln munipulucion de la pila, Mris adelanto, ell cl capitulo 8, volvcrernos a discutir postfija, cuumlo cstmlkm()~ los .irbolcs binario». [as notacioncs

prcfija,

74

Pilas

Capitulo

Resumen

75

FORMAS DE ALMACENAMIENTO
Yu discutimos el usa de arrcglos pam alojar pilus. Tambien virnos que uti arreglo unidimensional cs, pot 10 general, almacenado de manera fisicamcntc secucncia1. Sc reserv., un conjunto contiguo de direccionex para los elementos del arrcglo. La forma mas sencilla para alrnaccnar pilus sigue cl mismo principio, A una pila se le asigna una localidad base, la cual se rnanticne fija. Despues la pila pucde creccr sobrc las localidadcs contiguu-;

Espacio para N elementos

Base

d. PI

I I
Tope actual do PI

Espacio compartldc
Hasta aqui consideramos la reservacion de espacio para una sola pila. Suponga que ahora tenemos dos pilas que nccesitan coexistir en memoria. Si la pila Pl tiene un nuiximo de M elementos y la pi la P2 tiene un maximo de N elementos, sc les pucde asignar memoria como so muestra en la figura 4-9.

Tope actual de P2

-r
de P2

Figura 4-1I} Forma


para dos pilas,

alterrta para <1sig:nar expacio 1a."Icuales crecen una f rente a otra,

PI y P2 nunca sc truslaparan pucsto quc ninguna alcanzara la eondici61~ de sobrc-flujo. Unidas pueden alojar N elementos. La pila PI crece ala derccha y la pila P2 crcce a [a
izquierda, Considere ahora el problema que 1) la condicion de desborde juntas, . . de reservucion de memoria para Ires 0 mas pilus, l.ales ocurra solo cuando cl tarnafio total de todas las.pllas,

Espaclo para M elementos

Espacio

para N

cxcedan el espacio disponible, y 2) cada pila tenga una localidad base fija. De hecho no cs posiblc que so curnplan ambas condiciones al mismo tiempo para trcs 0 mas pilas, Cuando sea neccsario rcservar memoria para varias pilas, una
0

elementos

ambas

Aa,e de P1

I
I

Base de P2

I
Tope
actual

condiciones deberan ser flexibles. 0 bien, se tendra que reservar mas espacio 0 las bases de las pilas tendran que cambiarsc a otra dircccion. Una tecnica eficiente p.ara reservar cspacio cuando hay mas de dos pilas es 10.tecnica llarnada de Garwl.ek, la. eual periodicamcntc rcasigna cspacio para las pilas. Durante cl ticmpo de rcusignacioncel
tnicio de la sigulente estructura de datos }'igunI4-9 Asignacion de expnclo p::lra dos pi lux.

Top~ actual de Pi

de P2

BIO no es partieulannente eficiente, en especial misrno ti.nnpo llcnas en su totalidad.

si las pilas Ply

P2 nunea estan al
en PI y P2

combinadas, nunca cxcederun


Numcl(P!)

Considere

el caso, en el cual sabcrnos que cl nurnero de N elementos: + Numel(P2) :::;N.

total de elementos

crecirnicnto de las pilas se mide y 01 espacio se prorratea de tal rnanera que cada pila recibe una parte proporcional a Sll crecirniento desde la lilti~a reasignacion. .En esta tecnica las bases de las pilus se van moviendo a otras direcciones; aquellas pilas quc ticnden a crecer obtienen mas espacio, En el capitulo 6 cstudiarcmos otras formas para rcscrvar cspacio para pilas e~ memorias no contiguas, utilizando listas ligadas, Por 10 general no es posible predecir el tarnafio rnax irno qlle puede lIegat a obiener una pila; por 10 cual 10.' esquernas de almaccnarnicnro dinamico (como la tecnica de Garwiek) y los esqucmas de almacenamicnto no contiguo, son los que se usan con mtis frccucncia.

RESUMEN
Una pila es un case especial de una lista lineal en la cual [as opcraciones dc inscre~on (Meter) Y supresion (Sacar) son estrictarnentc cfcctuadas sobrc un extreme de la pila, cl cual es llamado tope de la p.la. Las piles se pucdcn alojar en arrcglos. Este cnloque impone algunas rcstricciones en el uso de las pilus, peru sc utiliza con frccucncia, La intcgridad de una pila debe mantenersc cuando esta eo; alojada en arrcglos. Es responsnbilidad elernento del programador ascgurur que la inscrcion tope de la pila, En cl capitulo sc introdujo y suprcsion sc efeelli~n sol~ en el la dcclaracion y manipulacion de

POt ejemp!o, sllponga que hay 500 personas resolviendo una pwcba de aptirud en programacio«. En la actualidad algunos son cmpieados profcsionales en cornputacion; y cl tes(o no 10 son. Antes de terrninar Ia prucba, no COnoeemos cuantas personas hay . en cada catcgorja, Sin embargo, qucrernos registrar la sccuencia en la cual las personas terminan la prueba, usando una pila para carla categoria. Un enfoque es reservar cspacio para que cada pila ctezca hasta xu maximo numero de N elementos, como ya fue planteado. En eualquier rnomento dado, habra espacio reservado para al monos N elementos; Unn forma aiternativa scria disponer de espacio soia para un maximo combinado de N, poniendo a las dos pilus una frcntc a la otra y que cstas fucran creciendo hasta encontrarse, tal y como sc muestro ell la figura 4-10.

pilus en COBOL y Pascal. ." Los ejernpk», ilustraron que las pilus puedcn ernplcarse en la SOI~clotl de problemas que necesitan de una estructura de datos tipo liltimo-qlle-entra-pnmt'ro-que-sale. Un

76

Pilas

Capitulo 4

Capitulo 4 Ejercicios

de repaso

77

ejetnplo

necesidad eI registro utilize un particular, multiples.

de llamadas rccursivas para dctcrminar In inversion de capital mostro la de regresar a una J ircccion de llamada, Para ella sc.uso una pila par~ .conserv~r de cstas direcciones en orden de las llamadas. £1 ejernplo de notucion pOS(fiJ3 patron LIFO, para idcntificar cuales operandos pertenecian a algun operador as] como un patron de anidamiento de parentesis, El capitulo termino can una discusion sabre asignacion de memoria para pilas

b)
c)

Sacar

F_qa-vaci" (Mcrcrtl, P»), ticne cl valor do: (Crear(P), tienc c! valor de


si aplica Sacar (Meterti,

_ _
P»)?

4.
5.

i,Que rcsultado sc obtiene al aplicar Tope (Meterfi.Pj)": i.eua! cs el tesultado ljue se obtienc LComo puedc implantar una pila en lcnguajc FORTRAN? Escriba un algoritmo que agrcge elementos a una pils. Escriba un algoritmo que cxtraiga los elementos de una pila, Escriba un algoritrno que cree y Ilene una pila.

6, 7, 8. 9,

TERMINOLOGIA Usia lineal Meter NotacicSninfija Notaci6n postfija Notaci6n prefija Pila Procedimiento recursivo Sacar Sintaxis Tope Ultimo-en-entrar-primero-en-salir

10. 11.

Consignc tres uplicaclones de pilas, Para cada una describa las razones de por que las pilas scrian preferibles a los arreglcs, El algoritmo METER verifica la condicion de desborde y d algoritrno SACAR verifica la ccndicion de sulxlesborde. i Que significado tienen las condiciones de desbordc y subdesborde y por que es aconsejab[everificarlas? ~Cllal podna ser laaccionaclecuada a tamar bajo cada condicicin? i.Cual cs la forma postfija
a) A * B - (C;

(LIFO)

12,

para cada una de las siguicntes expresioncs":


c)

D) - (£ - F) + F/H t I A i B * C - D + ElF I (G + H)
a una

b) ((B' 13.

C) + C/D i F) + G

REFERENCIAS SUGERIDAS
14.
GARWICK, KNUTH,

Escriba \1Il algoritmo para SHear un elcmento de una pila y asignar el valor "acado variable x.

J "Data storage in compilers."


Addison-Wesley Publishing

Bl'F, 4: 137-[40,

D. E. The Art of Computer Programming. Vol.


Co .. [973,

r.

[964. Fundamental Algorithms. Reading,


procedure," Comm. ACM 26(11)

Escriba un programa que usc una pila para verificar 13cxistencia de parentesis izquicrdo y dcrecho, corchetes izquierdo y dcrecho, y \laves izquierda y derecha en una cadena de
caract eres, Escriba un algoriuno

Mass.:

pp. 234--251. manipulation

15. 16. 17.

que use una pila para convcrtir una exprcsion aritrnetica de notacion infija a notacion prefija.
SIl

KO"SH. J. F. 'and G. LAI.~ON. "A multiple-Slack

921-923, Nov. 1983.


STANDJSH.

Escriba un programa para implantar

algoritrno

de conversion infija a prefija.

T. A. "Slacks ami queues," Chapter 2 in Data Structure Techniques. Reading. Mass.: Addison-Wesley Publishing Co .. 1980. pp. 28-41. D. Y. and T. MUNAKATA. "Dynamic 'tacks," Comm. ACM 2'l(2) t34--141,
feb.

Escriba un program a cn lenguajc Pascal p3r~ convertir cxpresiones ari trneticas de notacion infija a postfija. Escriba un prograrna para convcrtjr Una cxpresion aritmcrica de notacion infija a poxtflja, donde la cxpresion pneda contener los siguicntes operadores: <, <=, =, >~, >, and. (JC. not, T, - unario, + unario, T, *, [, +, _. La siguicnte PILA contiene los elementos:
3 4

YEl-l,

allocation and local reallocation procedures for multiple 1986.

.! ,

EJERClC10S DE REPASO
1. 2. Dibuje una pila e indiquc la dircccion de entrada y salida de los elementos. Llene las lincas
a) SI aplica
ell

I !
r

18.

19.

I 8
6

blanco:
dl' sacar en una pila vacia, provocuni un(a): __

Una opcracion

f
~ ~ _

b) c) d) e) 3. a)

Si aplica corrccramente la operacion Meier cl clemente de i a una pila, Tope ~. EI tope de una pila vacia es igual a: ~ Si prirnero saca y despue« Mete el elemento i, Tope ~ i.Cuanlos elementos hay en una pila de nueva crcacion? es el result ado de las siguicntcs aseveracioncs? Esta-vacia (Crem(P)], ticnc cI valor de:

Escriba un alguritmo para crcar una nueva pila que contenga a los elementos de 13PILA de arriba, en ordcn ascendcnre. Minirnicc el numero de pilas intcnnedias usadas.

i, Cull!

-----------

---

-----_--- ------ ---

__

--- ----.

Delin icio nes

79

--capitulo cinco~-----

Ell una cola la insercion se hace estrictamentc par un extreme de la Iisia, al cual podemos llarnar fondo; la supresion solo puede hacersc por eI otto extrerno de la l~sla, al cual lIatnamosfrente. Denotaremos por Frente (C) al inicio de la cola C, y por fondo (C) al extrema [111alde la cola C. Para In cola C donde:

I
I
I ,
EI Prentc (C) eo;C, y el Fondo (C) es CT. Usemos Numel (C) para denotar el ruimcro de elementos en la cola C. Numcl.(C) cs un atriburo de La cola C, y tienc un valor nurnerico cntero. Para Ia cola C de arriba, Numel (C) cs T.
EI 'I'<esimo elcrncnto elernento de In cola C csta al final de la cola; es el elerncnto en la cola el mayor tiempo. vaya de derecha que ha

~-II I
I
---"._--

permanecido en [a cola el mellor tiempo. El clemento de enfrcnre de la cola C, cs el


que ha perrnanecido En realidad, no es importantc si trazarnos una cola cuyo crecirniento a izquierda, como se rnuestra en la figuru 5- 1a.

-----

---

----

----

--~-

..,---

-_____/ J

Otro caso especial de la estructura de datos de lista lineal, que sc intwdujo en cl capitulo 4, cs la cola. Mientras que en las pilas se reslringe [a adicion y supresior, de elementos a (raves de un solo extreme, Ilarnado lope de I" list", a las colas se les restringe a que los elementos sc suprirnnn par el frentey sc agrcguen por atras. De hecho, ya estarnos fami Iiarizados con las colas, pues muchos ejernplos uparccen en nuestra vida cliarla. Encontrarnos ejemplos de colas en los supertncrcados, en los bancos y en las oficinas de correos, Los automoviles gcneraltnente avanzan ell colas a traves de intersecciones. Tambien, es trccuenre cncontrar colas en los sistemas de informacion basados en compuladoras. Las orderies de clicntes entran en una cnla para ser despachadas; los productos entran en colas de invetltarios; las tarcas a ejecutar por una cornputadora qucdan ordenadas en una cola para espcrur u scr atendidas por la Unidad Central de Proccsarniento. En cstc capitulo, se introduccn las opcraciones que dcfinen la cstructuru de datos de tipo cola; decspllCS, SO;: describen las facilidades para dcclarar y manipular colas en COBOL y Pascal. FDr ultimo, se analizan 01 final del capitulo algunos ejernplos de aplicacion que usan colas.

Fondo

Frente

Figura 5-1a) Diagramas

de una cola.

ode

izquierda

a dcrecha,

como sc muestra

en la Iigura 5·lb

Frente

Fonda

Figura 5-1[,)

bien, en forma vertical, en tanto searnos frente y cl fondo de la cola,


0,

consistentes

con respecto

a cuales

son el

En cualquier

caso, para una cola:

DEFINICIONES
Una cola es un caso especial de la cstructurn anterior como una Lista lineu]: general de datos ddinida en cl capitulo

dirernos que C, csta antes que antes que cualquicr clemente que cualquier otto clcmcnto detenninar el orden en que se Operaciones de colas
Existen cuatro opcrucioncs

el clemente c, cuando I < 1. C, sen, eliminado ?e la cola que est": dctras de d. C, ha estado en la cola mas tiempo que 10 prcccda. Esta sera la forma de procedcr para aticnde, por cjcmplo, en una oficina de correos.

A
78

[A" A" .. _ , ATJ.


basicas validas

para los datos tipo cola:

1. Crear (cola), 2.
Esta-vacia (cola),

80

Colas

Capitulo

Definiciones

81

3.

Insertar (elernento, cola), Eliminar (cola). una cola vacia cuyo nombre es e. Por definicion:
":

4.

S610 en un unico casu, la eliminacion previa del elerncnto de la cola:

de un clcrncnto .

de la cola deshaec

In insercion

Crear (e) produce

Numel (crcar (C») es 0 (cern) Frente (crcar (C) es indefinido, Fondo (crear (C)) es indefinido. EI operador Esta-vacfu (e) determine si la cola est a 0 no vacia. El operando es La cola; el resuliado es un valor booleano. Esta-vacia (C) lOS vcrdadcro SI la cola e esta vacla (cs decir, si Numcl (C) ~ 0) y Ialso en caso contrario, Noicsc quccsta-vacia (crear (e)) es verdadcro. Inscrtar (E,C) es to! opcrador que inserts cJ elemento E en la cola C. Par definicion, E es colocado al final de la cola, cl rcsultudo de la operacion incrementa la cola. Fondo Numel (Inserter (E,C)) es E por la operacion Inscrlar, y

Si Esta-vacia (C) cntonccs Elirninar (Inscrtar (E,e» es C si no Eliminar (Inserter (E,e» = Inserter (E, Eliminar (C).

}"
i

Si e no esta vacia, la insercion cfccto una sobre otra.

y climinacion

acuian indepcndicntcmcruc .

y no iiencn

Ejcmplo
Como ejemplo de los cfectos de una secuencia dc opcracioncs en una cola, comencemos con una cola vacia llarnada C. As! e = [ J puede ser representada por la figura 5-2a.

(C) sc incrementa

eN""'''
El resultado 10 que:

es igual a E. de un elemento en una cola no puede scr una cola vacia, por EI primer elernento a inscrtar

Numel(C) = 0 Frente(C) indefinido Fondo(C) indefinido

Figura 5.2.)

de la insercion

cs A, \0 que da C

tAJ

(Figura 5-2b),

Esta-vacia

(Inscrtar

(E,e)) es Ialso.
tie
Uti

Solo en una situacion cola:

In insercion

elemento

en la cola, afec;a el Ircnte de Ia

Numel(C) = 1 Frenle(C) ~ A Fonda(C) ~ A

Figura 5-2h)

Si Esui-vacia (C) entonces Frente (Insertar (E,C») cs E si no Frente (Insertar (E,C) cs Frcnte (C)_ Elirninar (C), saca el elemento del frentc de La cola C, 10 cual produce cl dccrecimicnto de la cola. Si se debe conservar estc primer elernentc, se debera tomar alguna accion antes de la opera cion de eliminar, Nurncl (C) se reduce por la operacion Eliminar y el que era el segundo elemento de e sc convertira en el nuevo clemente de cnfrcntc, Es un error tratar de eliminar un elcmcnto de una cola vacia:

dcspucs

cl clcmcnto

B sc inscrta, asi C = [A,B] (Figura

5-2c),

Numel(C) ~ 2 Frente(C) = A Fondo(C) ~ B

Figura 5-2~)

Si Nurnel (e) = 0
cntonces Notese que: Eliminar (Crear (C) tarnbicn produce una condicion de error, Eliminar (C) provoea una condicion de error.

nhonl, cl clt-tlle"("

C; C ~ [A,B,CJ

(Figur« 5-2d).

Numel(C) Frente(C) Fondo(C)

=3 =A =C

Figur-a 5-2<1)

Vous aimerez peut-être aussi