La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

implementar (a veces es imposible) si se utilizan datos simples.

Presentaciones similares


Presentación del tema: "implementar (a veces es imposible) si se utilizan datos simples."— Transcripción de la presentación:

1 implementar (a veces es imposible) si se utilizan datos simples.
ARREGLOS Con frecuencia se presentan problemas cuya solución no resulta fácil de implementar (a veces es imposible) si se utilizan datos simples. A continuación se presentarán un problema y dos posibles soluciones del mismo utilizando tipos simples de datos. El objetivo de este ejemplo es ilustrar lo complejo que resulta un algoritmo de solución para ciertos problemas, sin usar tipos estructurados de datos. Finalmente, y luego de presentar los arreglos, se ofrecerá una solución usando datos estructurados. EJEMPLO 1.1 Se tiene las calificaciones de un grupo de 50 alumnos. Se necesita saber cuántos alumnos tienen una calificación superior al promedio del grupo. ¿Cómo resolver este problema?

2 EJEMPLO 1.1 Se tiene las calificaciones de un grupo de 50 alumnos. Se necesita saber cuántos alumnos tienen una calificación superior al promedio del grupo. ¿Cómo resolver este problema?

3 Primera solución: Algoritmo 1.1 Doblelectura DOBLELECTURA {Este algoritmo resuelve el problema planteado en el ejemplo 1.1, por medio de una doble lectura} {I y CONT son variables de tipo entero. AC, PROM y C son variables de tipo real} Hacer AC←0 e I ←1 Repetir mientras (I≤50) Leer calificación I (C) Hacer AC←AC+C e I ←I+1 {Fin del ciclo del paso 2} Hacer PROM←AC/50 {Como se necesita decir cuantos alumnos obtuvieron una calificación superior al promedio, se deberá volver a leer las 50 calificaciones para poder comparar cada una de ellas con el promedio} Hacer CONT←0 e I←1 5. Repetir mientras ( I ≤50) 5.1 Si C>PROM entonces Hacer CONT←CONT+1 5.2 {Fin del condicional del paso 5.1} Hacer I←I+1 {Fin del ciclo del paso 5} Escribir CONT

4 Segunda solución: Algoritmo 1.2 Muchasvariables {Este algoritmo resuelve el problema planteado en el ejemplo 1.1, utilizando múltiples variables} {ICONT es una variable de tipo entero. PROM, AC y Ci son variables de tipo real} Leer C1, C2,C3,…C50 {Las calificaciones correspondientes a los 50 alumnos} Hacer AC← C1 + C2 + C3+…+C50, PROM ←AC/50 y CONT←0 Si C1>PROM entonces Hacer CONT←CONT+1 {fin del condicional del paso 2} si C2>PROM entonces {fin del condicional del paso 4} Si C50>PROM entonces {Fin del condicional del paso 100} escribir CONT

5 Las dos soluciones son muy representativas de los inconvenientes a los que debe enfrentarse al tratar de resolver el problema utilizando sólo datos simples. En la solución planteada en el algoritmo 1.1 el usuario del algoritmo debe ingresar dos veces el conjunto de datos. Esto resulta totalmente molesto (considérese que el número de datos puede ser mayor que 50) y además ineficiente (la operación de lectura, ya sea de manera interactiva con el usuario o desde un archivo, debe repetirse, lo que ocasiona pérdida de tiempo). En la solución planteada en el algoritmo 1.2 se manejan 50 variables en memoria. Esta solución presenta el inconveniente de que el manejo de las variables puede tornarse incontrolable, si el número de las mismas crece considerablemente. Además, algunos pasos especificados en el algoritmo (que posteriormente serán instrucciones de algún lenguaje de programación), se repiten ya que no pueden generalizarse. Esta característica no sólo ocasiona más trabajo, sino también errores. Es sabido que ejecutar una tarea repetidamente (en este caso escribir un mismo paso varias veces) quita interés en la acción que se está llevando a cabo, lo que a su vez ocasiona errores.

6 FIGURA 1.2 Representación de arreglos Se observa, entonces, que ninguna de las dos soluciones resulta práctica ni eficiente. Es necesario un nuevo tipo de datos que permitan tratar estos problemas de una manera más adecuada. Los tipos de datos estructurados que ayudan a resolver problemas como éste son los arreglos. Un arreglo se define como una colección finita, homogénea y ordenada de elementos.

7 Finita: todo arreglo tiene un límite; es decir, debe determinarse cuál será el número máximo de elementos que podrán formar parte del arreglo. Homogénea: todos los elementos de un arreglo son del mismo tipo (todos enteros, todos voléanos, etcétera, pero nunca combinación de distintos tipos). Ordenada: se puede determinar cual es el primer elemento, el segundo, el tercero,… y el enésimo elemento. Un arreglo puede representarse gráficamente como se muestra en la figura

8 Si un arreglo tiene la característica de que puede almacenar a N elementos del mismo tipo, deberá tener la facilidad de permitir el acceso a cada uno de ellos. Así, se distinguen dos partes en los arreglos: los componentes los índices Los componentes hacen referencia a los electos que forman el arreglo. Es decir, a los valores que se almacenan en cada uno de las casillas del mismo (véase figura 1.3). Considerando el ejemplo anterior, cada una de las 50 calificaciones será un componente de un arreglo “calificaciones”. Los índices especifican cuántos electos tendrá el arreglo y demás de qué modo podrán accesarse esos componentes del arreglo en forma individual. Es decir, distinguir entre los elementos del mismo.

9 Por lo tanto, para hacer referencia a un elemento de un arreglo se utiliza:
el nombre del arreglo el índice del electo En la figura 1.3 se representa un arreglo y se indica sus componentes y sus índices.

10 Ident_arreglo= ARREGLO [límif..límsp} DE tipo
DEFINICIÓN DE ARREGLOS Como no es la intención del autor seguir la sintaxis de algún lenguaje de programación, se definirá un arreglo de la siguiente manera: Ident_arreglo= ARREGLO [límif..límsp} DE tipo Con los valores líminf y límsup se declara el tipo de los índices así como el número de elementos que tendrá un arreglo. El número total de componentes (NTC)que tendrá el arreglo puede calcularse con la formula 1.1 NTC= límsup-líminf+1 FÓRMULA 1.1

11 Como lo hacemos en java? int[] Arreglo={13, 36, 30, 98, 15, 56, 44, 27}; Int arreglo[] ; Int[10] arreglo ; Object[] arreglo;

12 Con tipo se declara el tipo de datos para todos los componentes del arreglo. El tipo de los componentes no tiene que ser necesariamente el mismo que el tipo de los índices. Observaciones: El tipo del índice puede ser cualquier tipo ordinal (carácter, entero, enumerado). El tipo de los componentes puede ser cualquier tipo (entero, real, cadena de caracteres, registro, arreglo, etcétera). Se utilizaran los corchetes “[]” para indicar el índice de un arreglo. Entre los [] se debe escribir un valor ordinal (puede ser una variable, una constante o una expresión tan compleja como se quiera, pero que dé como resultado un valor ordinal).

13 Sea V un arreglo de 50 elementos enteros con índices enteros. Su
Sea V un arreglo de 50 elementos enteros con índices enteros. Su representación queda como se muestra en la figura 1.4 FIGURA 1.4 V=ARREGLO[1.. 50] DE enteros NTC=(50-1+1)=50 Cada componente del arreglo V será un número entero, y podrá accesarse por medio de un índice que será un valor comprendido entre 1 y 50.

14 Así por ejemplo: V [1] hace referencia al elemento de la posición 1. V [2] hace referencia al elemento de la posición 2. V [50] hace referencia al elemento de la posición 50. Los índices de tipo entero no necesariamente deben tener un límite inferior igual a cero a uno. Podrían usarse valores negativos [ ] o valores mayores a uno [ ].

15 EJEMPLO 1.3 Sea A un arreglo de 26 elementos voléanos con índices de tipo carácter. Su representación queda como se muestra en la figura 1.5. A = ARREGLO[´ a ´..´ z ’]DE voléanos NTC =(ord(‘z’)-ord(‘a’)+1)= =26 Cada componente del arreglo A será uno de los dos posibles valores lógicos (VERDADERO O FALSO), y podrá accesarse por medio de un índice que será un valor comprendido entre los caracteres ‘a’ y ‘z’. Así por ejemplo: A[‘a’] hace referencia al elemento de la posición ‘a’ (1era.) A[‘b’] hace referencia al elemento de la posición ‘b’ (2da.) A[‘z’] hace referencia al elemento de la posición ‘z’ (27ma.)

16 EJEMPLO 1.4 Sea CICLO un arreglo de 12 elementos reales con índices de tipo escalar o enumerados. Su representación queda como se muestra en la figura 1.6. Meses = (ene,feb,mar,abr,may,jun,jul,ago,sep,oct,nov,dic) CICLO = ARREGLO [meses] DE reales NTC = (ord(dic)-ord(ene)+1)=11-0+1=12 Cada componente del arreglo CICLO será un número real, y podrá accesarse por medio de un índice, que será un valor comprendido entre ene y dic. Así por ejemplo: CICLO [ene] hace referencia al elemento de la posición ene (primera). CICLO [feb] hace referencia al elemento de la posición feb (segunda). CICLO [dic] hace referencia al elemento de la posición dic (doceava).

17 1.2.2 OPERACIONES CON ARREGLOS
Podemos clasificar a las operaciones en las que intervienen arreglos de la Siguiente manera: Lectura/Escritura Asignación Actualización: Inserción Eliminación Modificación Ordenación Búsqueda

18 PREGUNTAS?


Descargar ppt "implementar (a veces es imposible) si se utilizan datos simples."

Presentaciones similares


Anuncios Google