Professional Documents
Culture Documents
Cuello
1 # Ape1o!2i3 en donde 1 i 1,
(l grfico est indicando "arias cosas; el nombre gen*rico ApeNom , la cantidad de elementos 1 , cantidad de dimensiones 1, tipo del %ndice "alores enteros, inter"alo de "alores del %ndice [1; 10], contenido de cada elemento de tipo cadena, por otro lado se nota que la "ariable ApeNom se encuentra ubicada en la direccin 1 y que su tama-o es de Clase 11 A4E 5.6.1. 7.R.8.A. Pgina 1
21 b. x 10 = 210 bytes . (l rea de memoria reser"ada para la "ariable ApeNom "a desde 1 a1 3 #1 4 1, es decir de 1 a 1# 5. Si queremos a"eriguar el tama-o f+sico de un arreglo, esto se puede determinar con la funcin SizeOf(obj), en donde obj indicar el tipo arreglo o la "ariable de ese tipo arreglo. La funcin retorna un longint indicando la cantidad de byte de ese ob&eto. Si queremos calcular el espacio ocupado por la "ariable ApeNom, lo establecer%amos de la siguiente manera, SizeOf(ApeNom), y si ApeNom fue definido de tipo VecAl como un arreglo con 1 componentes cada una de las cuales ser%a una cadena de # caracteres, lo establecer%amos de la siguiente manera, SizeOf(VecAl ). )or lo tanto, SizeOf(ApeNom) = SizeOf(VecAl ) = 210. )or otro lado, si lo que queremos es a"eriguar cuantas componentes tiene un arreglo, esto se establecer%a como el tama-o f%sico del arreglo di"idido por el tama-o de una de sus componentes, es decir, SizeOf(ApeNom) !i" SizeOf(ApeNom[1]) = 210 !i" 21 = 10. Si utili'amos un sub%ndice para que $aga referencia a un elemento del arreglo, estar indicando una direccin de memoria dentro de ese inter"alo, siempre y cuando el "alor del sub%ndice est* comprendido entre 1 y 1 . As%, p.e. si i = 1 la direccin del primer elemento del arreglo coincide con la direccin de la "ariable ApeNom, es decir, !ApeNom 6 !Apenom718, en donde la letra ! indica direccin, si i = 2, la direccin de inicio del segundo elemento es 1 #1, en cambio si i = #, la direccin de inicio del tercer elemento es 1 9# y as% sucesi"amente. )or lo tanto, notamos que un incremento de 1 en el sub%ndice en realidad es un incremento en #1 bytes, es decir, un incremento de acuerdo al tama-o de cada componente del arreglo. #9u" suceder si el su)+ndice adoptara un :alor inferior o superior a 1 ; 1, respecti:a!ente& La respuesta es ob"ia, estar%amos in"adiendo una 'ona de memoria desconocida, por lo tanto, los efectos que se podr%an producir ser%an impredecibles, algunos de los cuales podr%an ser, cambiar los "alores a otras "ariables que estu"ieran contiguas a esta regin de memoria, que aparecieran caracteres e:tra-os en la pantalla, que se colgara la e&ecucin del programa, entre otros. Ser responsabilidad del programador lle"ar el control del "alor del sub%ndice. ;urbo )ascal brinda de una directi"a al compilador <=R>? y <=R@? que permite modificar para que el compilador pueda $acer un control o no, de los "alores que tomen las "ariables y en el caso de los arreglos tambi*n el sub%ndice, para que genere un error cuando sus "alores escapen fuera de su inter"alo definidos en tiempo de compilacin. <a&o estas situaciones se detendr la e&ecucin del programa, si la directi"a est indicada con signo ms. (n cambio si la directi"a est indicada con signo menos se desacti"a esta caracter%stica y en caso que una "ariable o sub%ndice adopten "alores fuera de su inter"alo no se generar ninguna ad"ertencia por parte del compilador y la e&ecucin del programa continuar como si nada $ubiese ocurrido, en estos casos se complementar el "alor e:cedido para que se genere un "alor dentro del inter"alo aceptado por la declaracin del tipo de la "ariable. =na e:cepcin a esta directi"a, es cuando en el cdigo del programa asignamos un "alor fuera de los l%mites que puede soportar una "ariable, en estos casos, al momento de compilar el programa, el mismo compilador informar que el "alor que queremos asignar est fuera de los l%mites. )or e&emplo, si : es una "ariable de tipo byte y $acemos x 2$% al compilar el programa generar un mensa&e de error. (n el caso de los %ndices de un arreglo, si tomamos el e&emplo anterior que es de 1 a 1 , si el sub%ndice adoptara un "alor de 1> 12 #>> no se complementar%a ya que el compilador lo determinar%a como de tipo byte, pero si tomara un "alor negati"o o mayor a #>> en estos Clase 11 A4E 5.6.1. 7.R.8.A. Pgina -
casos s% lo complementar%a, pudiendo generar un "alor entre y #>>, esto en la situacin en que le asignemos estos posibles "alores a la "ariable que ser empleada como %ndice, p.e. si asignamos a la "ariable : #>> y $acemos que la "ariable i : 3 2, si la "ariable i estu"iera definida como de tipo byte el "alor que se asignar%a no ser%a #>? sino que se complementar%a y pasar%a a contener #, es decir, el resultado de #>? 4 #>@, luego si $acemos ApeNom[i] se estar%a refiriendo al segundo elemento del arreglo, es decir a 0%os, !ar%a. (n cambio, si lo que quisi*ramos reali'ar fuera ApeNom[i & #] , en este caso el resultado ser%a #>?, no se complementa y por lo tanto, se estar%a $aciendo referencia al elemento #>? y como notamos, eso est fuera de la regin de memoria de ApeNom, en conclusin, se est in"adiendo una regin de memoria desconocida y como consecuencia se podr%a tener los problemas anteriormente indicados. La directi"a al compilador <=R ? reali'a la "erificacin de inter"alo de "alores de los ob&etos, el s%mbolo 0 se refiere a '()*e, y el error informado en tiempo de e&ecucin es el ErrorA-,1 +()*e c,ec- e''o', Aerificacin de inter"alo. (l "alor por defecto es BC0DE, "ale decir, est desacti"ada. (n el estado BC03E los arreglos y las e:presiones de cadena inde:adas c(![i] , son "erificadas dentro de los l%mites definidos, y todas las asignaciones a "ariables escalares y de inter"alo son tambi*n "erificadas dentro de los l%mites definidos. Si la "erificacin de inter"alo falla, la e&ecucin del programa finali'a y se muestra un mensa&e de error. (sta opcin se debe utili'ar en tiempo de depuracin del programa y desacti"arla cuando el programa $aya sido depurado, de esta manera el programa correr ms rpidamente. Si lo que queremos es controlar en todo el mbito del programa, entonces la directi"a debe ubicarse antes de los mdulos, un lugar apropiado ser%a incluso antes de la cabecera del programa, es decir, antes de la palabra reser"ada progra!, o bien inmediatamente a continuacin de esta cabecera, como se muestra en los siguientes e&emplos, BC03E progra! AerificarFnter"alos; ... progra! AerificarFnter"alos; BC03E ...
Gtros tipos de ad"ertencias que se podr%an generar al compilar un programa que utilice arreglos, son los casos en que nos quedemos sin memoria suficiente; informados por el compilador ;urbo )ascal ser%an los siguientes, ErrorA-- St' ct 'e too l('*e, (structura muy grande. Se produce al definir un arreglo en el cual la memoria se "e saturada por el espacio a reser"ar, es decir, cantidad de elementos por la cantidad de bytes de cada componente, es mayor a @9 Hbytes, que es el espacio m:imo para las "ariables globales, p.e. al definir el siguiente tipo de dato " = array[1..#000] of st'22; se generar dic$o error. ErrorA0B .oo m()y "('i(bles, +emasiadas "ariables. Se producir el definir "arias estructuras de datos en la cual ninguna de ellas supera el m:imo permitido, pero s% la sumatoria de ellas, p.e. " = (''(y[1..2000] of st'22; / = (''(y[1..1000] of st'22; lo mismo ocurrir%a al declarar "ariables espacios en cada uno de los mdulos. Conclusin, al momento de utili'ar arreglos, se deben tomar ciertas medidas pre"enti"as. La memoria interna puede "erse saturada, el sub%ndice puede tomar "alores fuera del inter"alo de "alores definidos. )or estos moti"os se recomienda reali'ar una
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina C
estimacin necesaria para la cantidad de memoria a utili'ar y asegurarse los "alores que adopten los %ndices, ya que, la responsabilidad ser e:clusi"amente del programador.
establecida en 1 : > 6 > elementos ocupando un espacio en la memoria interna cuando se declaren "ariables de ese tipo de > : @ bytes 6 2 bytes. Los arreglos con una dimensin se denominan :ectores y los arreglos con # dimensiones se los denominan !atrices. A los elementos de un arreglo se los puede acceder en for!a secuencial o )ien al a%ar . La manera de recorrer los elementos secuencialmente es con un ciclo que lo recorra desde su "alor inicial $asta su "alor final o bien dentro de estos "alores. Las componentes de un arreglo se ubican en la memoria en forma lineal, en un arreglo unidireccional la correspondencia es directa, pero #c;!o ser en el caso de un arreglo )idireccional o con !s di!ensiones&. ;omemos el caso de un arreglo de # dimensiones de m x ), es decir, m filas y ) columnas, la disposicin se reali'ar por filas o bien por columnas, esto lo determinar el propio lengua&e a utili'ar. (n el caso del ;urbo )ascal la disposicin de los elementos, la con"encin elegida es por filas, esto es, primero se ubican en la memoria los primeros ) elementos de la primer fila, luego los segundos ) elementos de la segunda fila y as% sucesi"amente $asta completar los Iltimos ) elementos de la fila m. Conociendo esta disposicin de los elementos, es fcil poder determinar el lugar de almacenamiento en forma lineal de un eleme)to[i3 j] aplicando la siguiente e:presin, con, (1 i m) 9 (1 j )) (i 7 1) 8 ) & j D1E
)or e&emplo, si m = : y ) = $, encontrar la posicin del eleme)to[23 :] , aplicando la e:presin N1O, reempla'ando i por 2 y j por : obtenemos ;, por lo tanto, el eleme)to[23 :] lineali'ado se locali'a en la posicin ordinal ; a partir de la direccin inicial del arreglo en la memoria interna. (n el e&emplo que se detalla a continuacin notamos que el eleme)to[23 :] = 22 y en la lineali'acin dada a continuacin "emos que en la posicin ; el "alor es 22. Fatri% 1 # 2 9 2# 2> >@ 15 1 1? 2 1# ?2 # @ ? P@ # 2 9> ## P 1> 9 #2 1 #2 9 >
Las matrices pueden ser rectangulares o cuadradas. =na matri' rectangular es aquella en la que la cantidad de filas es distinta a la cantidad de columnas es decir, A)xm3 en donde, ) < m y una matri' cuadrada es aquella en la que la cantidad de filas es igual a la cantidad de columnas, es decir, A)xm = A)x) ya que, ) = m. =na matri' cuadrada presenta # diagonales, una diagonal principal y una diagonal secundaria. Los elementos que se encuentran en la diagonal principal tienen como Clase 11 A4E 5.6.1. 7.R.8.A. Pgina G
condicin i = j y los elementos que se encuentran en la diagonal secundaria tienen como condicin i & j = ) & 1. DHHE Asignar unos a los elementos de la diagonal principal, i 1Q n A7i, i8 1 Asignar 1Ms a los elementos de la diagonal secundaria, i 1Q n A7i, n 3 1 D i8 1 n 3 1 4 i se obtiene de despe&ar & en la e:presin DHHE Los elementos de un arreglo se pueden utili'ar de la misma manera que las "ariables simples para, asignarles un "alor en una asignacin interna o como una asignacin e:terna de entrada o de salida, comparar su "alor, utili'arlas en una e:presin, etc. EIe!plo, A7i8 > A7i 8 A7i8 : 2 : A7i8 di" # A7r.cmp8 U : A7A7#88
EIe!plos, const !FN 6 1; !AR 6 1 ; =L;S!(S 6 1#; t4pe str 6 string7# 8; FntAal 6 1..=L;S!(S; Arr=no 6 arra47!FN..!AR8 of Tord; Arr+os 6 arra471..>,M1M..M>M8 of str# ; Arr1 6 arra47D>..>8 of longint; Arr# 6 arra47FntAal8 of c$ar;
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina B
(n todos los e&emplos precedentes el tipo de cada elemento es un tipo simple de dato, pero e:iste la posibilidad que esos tipos sean de un tipo estructurado de datos. )or lo tanto el tipo de cada componente tambi*n podr%a ser como se indica a continuacin, t4pe str# 6 string7# 8; Kec$a 6 record aa , Tord; mm, dd , byte end; ACuotas 6 arra471..1#8 of real; 0egAlu 6 record NroLeg , longint; ApeNom, +omic, Local , str# ; KecNac , Kec$a; (stCi" , c$ar; ;raba&a , boolean; Cuotas , ACuotas end; Aec0egAlu 6 arra471..1 8 of 0egAlu; AecAec 6 arra471..1 8 of arra471..1 8 of 0egAlu; C&to<yte 6 set of byte; AecC&to 6 arra471..> 8 of C&to<yte; :ar AapeNom , Aec0egAlu; Al igual que los arreglos con componentes simples, tambi*n podremos referirnos a elementos de una estructura arreglo de registro para asignar "alores de manera interna o e:terna de entrada o salida, comparar, emplear dentro de e:presiones, etc. (&emplo, AapeNom7i8.NroLeg 1#29 AapeNom7i8.KecNac.mm U mes : : 3 AapeNom7i8.Cuotas7&8 PasaIe de par!etros de tipo arreglos +e la misma manera que las "ariables simples, o arc$i"os, o registros, o con&untos, los arreglos tambi*n pueden ser pasados como parmetros a los mdulos. Cabe aclarar que los arreglos pueden ser pasados por "alor o por referencia, en el primer caso se $ar%a una copia del arreglo en el segmento de la pila, lo que implica que si el arreglo es muy grande podr%amos saturar ese espacio con la consecuente situacin de error por desbordamiento de la pila, siendo el Error A-,- St(c- o"e'flo/ e''o', (rror por desbordamiento de la )ila. (ste es un error fatal y ocasionar la terminacin de la e&ecucin del programa Clase 11 A4E 5.6.1. 7.R.8.A. Pgina J
inmediatamente. (n el segundo caso si el arreglo es pasado por referencia solo se pasa un puntero al arreglo. )or lo tanto, lo aconse&able ser%a pasar los arreglos siempre por referencia. A continuacin presentamos di"ersas "ariantes para pasar como parmetro la "ariable V(peNom, por ra'ones de con"eniencia en la escritura, se pasar el arreglo por "alor. SizeOf(+e*Al ) = 1:$ y SizeOf(V(peNom) = 1:$00 Cant. )4tes Hn:ocaci;n o Lla!ada Ca)ecera del F;dulo $ue se pasan !od1NAapeNomO !od1NAapeN , Aec0egAluO 19> !od#NAapeNom7i8O !od#NrApeN , 0egAluO 19> !od2NAapeNom7i8.NroLegO !od2NNleg , longintO 9 !od9NAapeNom7i8.KecNacO !od9NfNac , Kec$aO 9 !od>NAapeNom7i8.KecNac.mmO !od>Nmes , byteO 1 !od@NAapeNom7i8.CuotasO !od@NCta , AcuotasO P# !odPNAapeNom7i8.Cuotas7&8O !odPNFmpo , realO @ La asignacin entre "ectores es posible siempre y cuando los arreglos sean del mismo tipo. Si Arr=no es un tipo arreglo y Aec1 y Aec# son ambos de tipo Arr=no, entonces la asignacin entre estos dos arreglos es "lida, como se indica a continuacin, Vec2 Vec1 (sto mismo ser%a equi"alente a reali'ar, i 1 10 Vec2[i] Vec1[i]
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina /
<usLin i 1 e:iste false K eListe M Di CardE Arr2i3 N cl: e:iste <usLin true i 0 (l m*todo de bIsqueda secuencial sir"e tanto si el arreglo est desordenado como si se encontrara ordenado. No obstante en los casos en que el arreglo estu"iera ordenado deber%a optimi'arse el algoritmo para los casos en que $abiendo llegado a una posicin en el arreglo y siendo que su contenido es mayor al "alor buscado, ba&o esta situacin se deber%a abandonar la bIsqueda, ya que si no se lo encontr $asta esa posicin, tampoco se lo encontrar ms adelante, por ser todos esos "alores mayores al buscado, sabiendo que el arreglo se encontraba ordenado en forma ascendente. A continuacin se presenta el mdulo de bIsqueda secuencial optimi'ado. i i31
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina 0
<usLinGpt i salir
1 false
K salir M Di CardE Arr2i3 N cl: salir true <usLinGpt i salir Arr2i3 P cl: true i i31
0 (l mdulo <usLinGpt me&ora el rendimiento de la bIsqueda con respecto al mdulo <usLin, ya que en el segundo caso si se encontr un "alor mayor al buscado se abandona la bIsqueda de los siguientes elementos restantes. )ero, #ser este el !eIor !"todo de )*s$ueda cuando el arreglo se encuentre ordenadoO por el :alor de la cla:e a )uscar&. La respuesta es '1O(. =na me&or manera de buscar un "alor en un arreglo ordenado ser aquel que obtiene un punto medio entre sus e:tremos y es comparado por el "alor a buscar, si es, entonces se encontr y se abandona la bIsqueda, en cambio si no lo es, caben dos posibilidades, que $aya que seguir buscando en una primera mitad o bien en la segunda mitad, en ambos casos el arreglo queda reducido para continuar la bIsqueda en la mitad. (l m*todo que reali'a estas acciones se conoce como m*todo de bIsqueda binario o dicotmica. (ste m*todo ya fue presentado en el tema de buscar un elemento en un arc$i"o ordenado. )or lo tanto, diremos que conser"ar bsicamente la estructura lgica "ista, la Inica diferencia notable est en que no $ace falta ba&ar el dato ya que se encuentra en la propia memoria interna. A continuacin se presenta el mdulo de bIsqueda binaria o dicotmica en arreglos.
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina 1,
<us<in pri 1 salir false Dpri ultE M K salir med Npri 3 ultO di" # Arr2!ed3 N cl: salir true <us<in med Arr2!ed3 Q cl: pri med 3 1 ult med D 1
(l m*todo comien'a conociendo las posiciones e:tremas del arreglo, pri y ult, se obtiene el punto medio med y se compara si el "alor de esta posicin es el "alor cla"e a buscar, si es entonces se abandona el proceso, sino caben # alternati"as, es menor, entonces se modifica el e:tremo inferior pri por el de la posicin med 3 1 caso contrario se modifica el e:tremo superior ult por el de la posicin med 4 1, luego de lo cual se obtiene una nue"a posicin med. Si despu*s de reiteradas bIsquedas no aparece el "alor el algoritmo finali'a cuando el "alor e:tremo inferior pri se "uel"a mayor al "alor del e:tremo superior ult. Como "emos por cada comparacin reali'ada se reduce a la mitad el con&unto de "alores a consultar, por lo tanto, el anlisis ser de, n V #, n V 9, n V ?; es decir, n V #1, n V ##, n V #2 (l proceso finali'ar cuando el tama-o se $aga W 1. )or lo tanto, si J es el nImero mayor de comparaciones n V #J W 1 establecer la finali'acin.
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina 11
Si tomamos un con&unto de > elementos, la cantidad m:ima de comparaciones estar en el orden de log# n 6 log# > X1@. )or lo tanto, con J 6 1@ se abandonar la bIsqueda si aIn no se encontr el "alor de la cla"e en el arreglo. EIe!plo, Se tiene el siguiente arreglo Arr con los siguientes elementos, > 1# #P 2# 2> 92 >9 >@ @1 @@ ?9 5@ 5? 115 1># pos. 1 # 2 9 > @ P ? 5 1 11 1# 12 19 1> y se requiere buscar el "alor 2>, los pasos a reali'ar establecern los siguientes "alores para los e:tremos y los puntos medios, pri 1, ult 1>, med ?, como el "alor de la pos. ? es >@ y no es igual a 2> la comparacin siguiente >@ W 2> es falsa se cambia el e:tremo superior ult med 4 1 y med 9, como el "alor de la pos. 9 es 2# y no es igual a 2> la comparacin siguiente 2# W 2> es "erdadera se cambia el e:tremo inferior pri med 3 1 y med @, notamos que 92 W 2> es falso se modifica ult med 4 1 y med >, por Iltimo "emos que el "alor de la pos. > 2> es igual al "alor a buscar que es 2>, por lo tanto $emos encontrado el "alor cla"e. ;ambien notamos que los e:tremos en este Iltimo caso se $icieron iguales y &ustamente en esa posicin se encontraba el "alor a buscar, este ser%a la Iltima comparacin a reali'ar si el "alor no se $ubiera encontrado, debido a que en el pr:imo paso el e:tremo inferior se "ol"er%a mayor al e:tremo superior, indicando que no debemos seguir procesando la bIsaqueda.
Ordenaci;n de arreglos
Como fue indicado en prrafos pre"ios un arreglo podr encontrarse ordenado o no. Si no se encuentra ordenado, a efectos de me&orar el rendimiento de un proceso o por moti"os de mostrar los datos ordenados ba&o un determinado criterio, $acen de la necesidad de ordenar los arreglos. (:isten "arios m*todos para ordenar arreglos, pero bsicamente podr%amos di"idirlos en # clases; los m*todos cuadrticos o directos NN2O y los m*todos a"an'ados o logar%tmicos o indirectos NN x lo*2 NO. (n el primer grupo encontramos "arios m*todos, a saber; burbu&a Nbubble sortO, seleccin, insercin. (n el segundo grupo encontramos tambi*n "arios m*todos, a saber; s$ell, quicJ sort, ordenacin por me'cla Nme'*eO. Los m*todos directos son fciles de programar pero de e&ecucin ms lenta. (n cambio, los m*todos indirectos son ms comple&os en su programacin pero ms eficientes para su e&ecucin ya que corren ms rpidamente que los directos. No obstante, con pocos elementos en un arreglo, ambos m*todos directos o indirectos funcionan muy pare&os. A continuacin se presentar el m*todo de ordenacin por burbu&eo optimi'ado. (ste m*todo compara elementos adyacentes, es decir, "7i8 y "7i318, cada "e' que un elemento de una posicin menor sea mayor al adyacente inmediato siguiente se debe reali'ar un intercambio, por lo tanto, al a"an'ar desde las posiciones inferiores $acia las posiciones superiores del arreglo, se ir arrastrando el "alor mayor $asta alcan'ar la Iltima posicin, y algunos de los "alores menores se irn corriendo $acia las posiciones inferiores. La cantidad de pasadas estar en funcin de la cantidad de elementos de un arreglo. (n el caso de un arreglo con n cantidad de elementos la cantidad de pasadas m:imas ser de n 4 1. )ero este m*todo por ser optimi'ado tiene la caracter%stica de que si en una pasada no se Clase 11 A4E 5.6.1. 7.R.8.A. Pgina 1-
reali' ningIn intercambio podemos asegurar que el arreglo ya qued ordenado y por lo tanto abandonar las restantes pasadas, consiguiendo un a$orro en el tiempo de e&ecucin. )or cada pasada debemos recorrer cada elemento desde 1 $asta a n 4 J, en donde, J en la primer pasada "ale 1, en la segunda pasada "ale # y as% sucesi"amente. Al termino de cada pasada se $abr acomodado el elemento ms pesado en la Iltima posicin de cada pasada. Seguidamente se presenta el algoritmo de ordenacin por burbu&eo optimi'ado.
J J31 ordenado 0 Los m*todos directos de ordenacin se miden en cuanto a la cantidad de preguntas que deben de reali'arse y est en funcin del "alor N. (n el caso de la ordenacin por burbu&a optimi'ado, notamos que en la primera pasada la cantidad de comparaciones es de ) > 1, en la segunda pasada de nD#, nD2 en la tercera pasada, $asta llegar a 1 comparacin en la Iltima pasada, por lo tanto, 1 & 2 & # & ... & () 7 #) & () 7 2) & () 7 1) = ) ? () 7 1) = 2 = ()2 > )) = 2 (l me&or de los casos es que el arreglo se encuentre ordenado, en esta situacin solo $ar falta una pasada, en cambio, el peor de los casos ser que el arreglo se encuentre ordenado in"ertido, es decir, si queremos ordenarlo en forma ascendente y se encuentra ordenado en forma descendente.
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina 1C
Los m*todos "istos en prrafos pre"ios de bIsqueda secuencial, bIsqueda secuencial optimi'ada, bIsqueda binaria y ordenacin por burbu&eo, $an sido desarrollados para arreglos en la que las componentes son de un "alor simple de dato. No obstante, estos mismos m*todos con algunas ligeras modificaciones pueden ser aplicados para arreglos cuyas componentes sean de tipo estructurado, lo ms comIn de tipo registro. <a&o esta situacin al comparar un elemento con otro modificamos la notacin A''[i] por A''[i].cmp en donde, cmp es el nombre de una de las componentes del registro, es decir, el nombre de un campo.
Arreglos paralelos
=na alternati"a a los arreglos de registro son los arreglos paralelos. Se denominan arreglos paralelos debido a que las componentes de un arreglo se corresponden con las componentes de los otros arreglos, es decir, A''1[i] se corresponde con A''2[i] , ... A'')[i] . Los procesos anali'ados anteriormente, podr%an aplicarse tanto a los arreglos de registros como a los arreglos paralelos. )or e&emplo, si estamos ordenando el arreglo, en el caso de arreglos de registro al intercambiar las componentes A''[i] y A''[i&1] se intercambian todos los campos de esas componentes, es decir se mue"e el registro completo de una y de la otra componente. (n el caso de los arreglos paralelos se deben intercambiar todas las posiciones correspondientes de cada uno de ellos, "ale decir, A''1[i] se intercambia con A''1[i&1] , A''2[i] se intercambia con A''2[i&1] , ..., A'')[i] se intercambia con A'')[i&1] . +espla'amiento de elementos en un arreglo =n arreglo puede generarse incorporando "alores en forma ordenada en el mismo instante en que ocurre el e"ento. (sta accin implicar reali'ar un corrimiento de un lugar, de aquellos elementos que ya estu"ieran en el arreglo para abrir un lugar al nue"o elemento que se insertar en la posicin apropiada para mantener el orden, ya sea ascendente o descendente. La siguiente figura muestra un e&emplo de insertar el "alor 92 en un arreglo que ya contiene los siguientes "alores, # 1 5 # 1# 2 #? 9 2> > 91 @ 95 P ># ? ?P 5 59 1 11 1# 12 19 1>
SegIn el modelo presentado el "alor 92 deber ser insertado entre los "alores 91 y 95. )ara poder lle"ar a cabo esto, los "alores mayores a 91 debern ser despla'ados un lugar $acia la derec$a. Al $acerlo debemos tener cuidado de no perder ningIn "alor en el arreglo, est claro que si mo"i*ramos el "alor 95 a la posicin siguiente perder%amos el "alor >#, por lo tanto el despla'amiento deber%a reali'arse desde el fondo $acia arriba o en esta situacin desde la derec$a $acia la i'quierda, esto es, el "alor 59 se mo"er%a a la posicin 11, luego el "alor ?P se mo"er%a a la posicin 1 , y as% sucesi"amente $asta alcan'ar el "alor 95 que se mo"er%a a la posicin ?. )or Iltimo insertar%amos el "alor 92 en la posicin P. (ste proceso debe contemplar todos los casos posibles, es decir, al insertar el primer elemento, al insertar el Iltimo elemento que completa el arreglo, al insertar al inicio, al insertar al final o en
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina 1.
cualquier otra ubicacin, incluso con "alores que puedan repetirse, insertar ya dado un &uego de "alores que se ingresarn ordenados ascendente o descendentemente. (l proceso deber contemplar entonces todos estos casos. A continuacin se presenta el algoritmo correspondiente. FnsertarGrdenadoN"ar "ec , t"ector; card,TordO
card
"ec7J8 :
o, como el siguiente mdulo, el cual antes de in"ocar se debe determinar que el "alor no e:ista en el arreglo, si es as%, se incrementa en 1 la cantidad de elementos en el arreglo y a continuacin se in"oca al mdulo pasando como argumentos el arreglo, el ele!ento a incorporar y la cardinalidad actuali'ada pre"iamente. A continuacin se representa el mdulo de Fnserta(nGrden ,
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina 1G
Dcard P 1E M Dele! Q :ec2card S 13E "ec7card8 "ec7card 4 18 card card D 1 "ec7card8 elem 0
Clase 11
A4E
5.6.1. 7.R.8.A.
Pgina 1B