Académique Documents
Professionnel Documents
Culture Documents
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.
-----------
---------------~
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
:>
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
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
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
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
20 CAPITULO 3
Resumen
REGISTROS Definiciones 48
Claves de
48
Terminologia
Rcgistros
(!O
COBOL y Pascal
50
25
25
Ejcmplos, 26
55
Dejinicion, 26 27
Arrcglos multidimensionales
Tertninologfa
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
Contenido
Contenido
xi
61
Dcclaracion de pi/as, 62
101
Insercion de
64
Recursion. 66
105
UI1
nuevo
de almacenamicnto
74
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
78
Ejemplo, 81
Otras manipulaciones
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
82
Declaracion de Desplazamiento a
122
Defillicioll de una lista Supresion de un nodo, /24
Colas circulares
87
Variaciones, 90 Resumen, 94 Una
Cornportamicnto de colas
95
95
127
Resumen
97 97 97 99 99 CAPITULO 7
Resumen
Terminologia
Tenninologia
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
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
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
] 89 193
Insercion enhilada, 193
Rceorrido de grafos
153
Recorrido en profundidad,
195
de nodox
196
157
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
Resumen
Tcrminologia
Terminologia
CAPITULO 8
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
Busqueda binaria
de arboles generales
Ejemplos de arboles
177 178
lntercambio,
224
Ordcnarnicnto
por inscrcion
226
179
Recorrido enorden, 181
227
rapido
quicksort)
230
xiv
Contenido
Contenido
xv
Referencias sugcridas
Ejercicios de rcpaso
278
27fi
Estructura de apilamiento, 234 Creacion de un apilamiento, 235 Procesamienio del apllamiento, 237 Ordcnarniento por torneo 240
281
Desempeiio, 246 Resumen Terminologia Referencias Ejcrcicios 247 248 sugeridas de repaso 249 250
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
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
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
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
308
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
de repaso
y cicrrc de archives
de bases de datos
273 274
CAPITULO 12 ORDENAMfENTO
Introducci6n
317 317
,,1 crdcnamicnto
276
277
xvi
Contenido
Contenido xvii
Intcrcalaciones naturales
Ejemplo, 321
320
Desempeiio, 322
352
Tntercalacioncs balanccadas
Ejemplo, 326
322
Desempeiio, 326
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
362
con utilcrias
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
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
374
Resumen
Terminologia
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
Tetmillologia
INDEXADAS 381\
en disco magnetico
343
388 390
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
350 350
Direccionamiento
Arbolcs-B
394
Btisquerla en arholes-B. 396
Ejemplo. 394
absoluto, 350
397
Dcsempeiio, 400
xviii
Contcnido
Cor.terudo
XiK
Supresion
([,~nn ,irhoj- B
402
Ejcrcicios
de repaso
442
446
multillavc
M''''''ju
446
pam
midtiple
(leU_WI,
rluplicacion 448
de datos, 448
Problemas
a!;n.'8tJci(il!
Ejemplo,
Manteninuento
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
Organizucion
COJJC(~pIOS
de archives
,hish,·(" v, 455 4.')8 Variantes,
multilista
454
Proce s amiento,
Ejemplo, 4SS
420
456
Archives
secuencialcs
indcxados
COil
Have alrcrna
459
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
Acre.WI directo, 425 de registros, 427 E~llll(;tna CbiGOde imliccs 430 Archivns J'recisimws,433
Sl'CUCIJCifd.
427
Inscrcion
Terminologra Rcfcrcncias
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
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\
,_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
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
pclnl
11" ('Ollwn"at'
,H'M.
---------~-.-
.. ,... ~~-"'-
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
[l.~~
i~ )r!_
1'1'0,:0::;" de lum:,
de ,k"isj<ltl<.:s ell
•
• •
j\du.:.dizac:i~')11
){ccIlpnaej(I1' Pr·otCl,:ci(~HI
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()
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.
y alntacenarsr:
pos-
d,'
Il1nI>CI-"
adecnada
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,'
apoyar
cfi-
ci('lIleml:f1le ul u:-;uati".
Datos y decisiones
{!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_~
~~
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'";,,,
Capitulo 1
Primitivas
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.
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-
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)
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)
(8.)
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)
lnlroduccion
,,1<1e structurn
de datos
Capitulo
Cacfcnas
rahla
1-2
opel<'H.lores
bcoleunos
V:lk,r\[L'.l
::-;.q!: 1]IICiC.l O]1'.:T;J IRk
j
V'(~rd'1dl'rlf
jjl[:="'l v,.:r,I.'1,I.:rn
f;il:-.f'
:.l
f:lr:s(~
rcxultudo de nplicar
'''Ida
,"
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,. "
I'''ta
<i
<: N.
el cua] L'Scl numcro de caructcrcs a I:Js ddinidas en
]a
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
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
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)
',_
h,,'.
C\)llca(Collcal(Sl,h:;II(S,1 dondc
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.
0(;
I), SUhSII(8,i
<. IXllgllt(S)
dou Lie 1
o <i
<i
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._
SUhSII(CllIIC11(S,S'l, y
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
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}'
-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
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
'Y' TIII~N.
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
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~;
12
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;
(l/ills").
,.~t"
de
Rcpresentaci6n
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
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
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
Capitulo 1
15
coruplernunto
Tabla 1-3
~iyrlD
1n,)Q[litu(1
en hinario y
.\i~',lh)
I;I)I~: I ~ I
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
--()
-,
EI cl'><-!i!-,:oBCDIC E
,I
para n,pn:~"llbr
, Cj 56} ~.
-2 +f!
!
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"
!:-: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
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
cscribcn
,)
Ir:,ns!IllIHI"s
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
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
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
,ul iLi(,ltak~
V;H·j ""I
c~ '"
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
Ii Ii '/ 7
'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
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
D{Jin
['n."lIL
i,.T.-!-J :.11, .
18
Capitulo
19
en csr"cilJs
cnJI[igIJos_
=
CDEFC' Y CADENA2
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
,\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
i---
I I
p;~!;!br.J.
Uenn"jizandn, ulruaccnar
con K cma'~lnc~
por p.ilahra,
cl nurncro
b ""dena
-'-"'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.
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
al (fl{:r
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
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-
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)
c) PRIMERO e) PRIMERO
TERMINOLOGIA
alfabeto
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.
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 ..~~ ,
t·
\
>,~'
',." ..'
~'l, >//
!
-,
'I
'II!
g) SunSlr(Concat(Sl
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
j)
Delele(S2,2,2) del complcrncnto a uno (con R ~ 2< - I) de los cnrcros en el de R para los ados
BOYER,
R. S. and J. S. 1977.
MOORE.
"A
<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
Aug. j~82.
r011113
de cornplcmcnto
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
LQue tecnica- utilizaria para almacenar cntcros en los corr.piladorcs de que usted dispone?
24
Capitulo i
~~-'-.~
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
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?
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,
\._
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
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
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
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
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.
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
pata idcntificar lin clemente indi vidual en UII cl primer subindice hace referenda al renglon
2 r-.
~.
BII. 1-~------'--
J)
Figura
2-3 Elcmenro
_.
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.
B prcsentado
8(2,4),8(3,4)",.,
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).
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,!).
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
= 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
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:
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
32
Arreglos
Capitulo
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-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
declaran
:::'!:": temperatura:
Pascal permite limites inferiorcs vaT puntos-grafica:
array
lJ ..
para cl subindice,
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-
examenes puede ser como sigue: En COBOL!:ic introducen dos nombres de agruparniento:
01 TABLA-CALIFlCACION. 02 ESTUDIANTES OCCURS 40 TIMES.
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.
sobre secciones
transversale",
lid arrcg]o.
34
Arreglos
Capitulo 2
Formas de almacenamiento:
arreglos multidimensionales
35
localidad
del I-esimo
elcrncnto
= 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. .
= 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,
(ccuacion ncgativo
2-2)
0 cero,
l=l,
... ,N-l.
del clerncnto
EMP~NO
rcscrvado
para airnaccnur
el arrcglo.
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
ZIO,61
I I I I 'I
Figura 2-9 Arrcglo de la figura 2-8, lincalizudo porrenglon
En e] rcnglo:
1"
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:
en ordcn
Supongatnos
que B cs la dircccicn
cs de tamafio 5, la direccion
ell
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)
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
A(L"L"
... ,U",)
dec!arados
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"
(ecuacion
2-4)
Can un atreglo N dimensional, el orden por columna izquicrda a derecha. Por ejcmplo, para el arreglo:
de
= TOTAL
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
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
donel"
Ell
= 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.
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.
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
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,
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
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
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.
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.
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
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;
DEMlllO, R. A., S. C. EISTENST AT, ANIJ R. J. Comm. ACM 21(3): 228-231, March 1978.
GRHNBERG,
LIPTON.
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_
RENGLONES 05 07
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,
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,
arrays,"
ROSENBERG,
1974.
46
Arreglos
Capitulo
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
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:
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
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.
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
-~-.-~
-__ ._~_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
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
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.
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.
se lc llama elcmcnto
NOMGR(
·TARE~
!lNt,LJSTA
--~123456789
'----
~-
10.93
PAT.
1NOMBF.-;r
MUD
1 JOE T
esc
lCUOJGULO
403
IS
140141150153
NOMBRE y
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
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
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
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
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;
=
99.
99. 99.
02
GHADUADO.
record
03
end; end;
03
,.,.record titulo-de-tarca : packed array [1 .. 7J of char; numempleado : p~ckecl array [1 . . 91~' char; tarifa-pago : real;-----
rcgistroernpleado
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
54
Registros
Capitulo 3
Resumen
55
id: integer; 10e: packed array [1 .. 51 ~ chat; info-trafico: informacion; dir: army [l.. 4, I .. 31 ~integer
end;
VClr tni.flto; reg-trafico;
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
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).
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
pucdcl1 ejecutat
los elementos
de una estructura
n:g·tr:itico -rc·l:'ord
de acuerdo
----------------------------------------.----------------------------------------------------------------------------------------------------------------------------------------==~
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
4. 5, 6. 7. 8, 9.
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
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.
:'_
~,
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
..
'
".
_-
59
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
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
'0" -~
fB tB ~.L!lx)xlx
Otro ejcmplo de una pila cs un sistema de una posicion a orzn (Figura 4-3).
'"eo
Ixlxlxlx]
Tape
Tope
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
es e] primeru
cualquie-
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
61
Numel(P)
es
Despucs
entra el elcrncnto
B, obtcnicndosc
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
Fi~lIr" 4-4<)
(Figura 4-4dj:
en cualquicr Est.i-vacia
Numel (P)
Fil(ura 4-4d)
sacar un clemente
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}')
dos elementos
Tope(P), El operador
el resultado produce P.
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)
l~
P
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.
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.
ro rorr
~ APlJNTADOR
_
TO
PE-
01
PI LA. PInURE
OCCURS 100 TIMES
APUNTADOR-TOPE
9(3)
PICTURE
9(5).
var
end;
p: l'srructur:l-piltl;
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
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
01
PICTURE 9').
EXAMINA-SIG-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.
IF CARACTER(SIGl..JJENTE-CARACTER)
"t"
PERfORM
METE
66
Pilas
Capitulo
Ejemplos
de aplicaciones
de pitas
67
'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
r dclen11ina
J
4
begin ahoru-tengo:
-_
+ 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
E _ (A + 8))).
y la codifieacion
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")
COIllO
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,
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 ,
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
Incrementa
Hi-----;;I
.J
po .•tflja. .
'i
Capitulo 4
71
La ex presion sc cxamina
de izquicrcla u dcrecha
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
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;
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
Suma (+), resta (-), cl nivcl mas bajo, La figllfa 4-8 mucstra Ia pila de operudorcs caructer de la exprcsion aritrnericu infije:
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+
£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
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
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.
= '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.
i
division,
*, I
<, <
i'
=, =,
>
=.
>
and
or de COBOL infija, y
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-;
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
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,
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
P2 nunea estan al
en PI y P2
Considere
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
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
_ _
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,
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.
Bl'F, 4: 137-[40,
r.
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.:
que use una pila para convcrtir una exprcsion aritrnetica de notacion infija a notacion prefija.
SIl
algoritrno
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,
.! ,
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!
-----------
---
__
--- ----.
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
---"._--
-----
---
----
----
--~-
..,---
-_____/ 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
de una cola.
ode
izquierda
a dcrecha,
como sc muestra
en la Iigura 5·lb
Frente
Fonda
Figura 5-1[,)
consistentes
con respecto
a cuales
son el
En cualquier
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
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.
de un clcrncnto .
de la cola deshaec
In insercion
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
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
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
In insercion
elemento
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
5-2c),
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).
=3 =A =C
Figur-a 5-2<1)