SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
1




UNIDAD 4: ARREGLOS Y TIPOS ESTRUCTURADOS

      ALGORITMIA Y PROGRAMACIÓN
      ESTRUCTURADA
        MCC. Sandra Luz Morales Güitrón
Temario
2


     4.1. Arreglo unidimensional
     4.2. Arreglos de más dimensiones.
     4.3. Diferencia entre acceso de memoria dinámica
     y estática.
     4.4. Tipos Estructurados.




                   M. en C. Sandra Luz Morales Güitrón
Objetivos
3


     Resolver problemas que requieran de arreglos de tipos de
     datos compuestos para representar información mixta
     construyendo módulos documentados que mantengan las
     definiciones y las operaciones necesarias.

       Comprenderá la creación y uso de los arreglos.
       Aprenderá como         utilizar      los     arreglos    unidimensionales   o
       multidimensionales.
       Conocerá cual es la diferencia de acceso a memoria dinámica o
       estática.
       Entenderá el uso de los tipos estructurados.


                          M. en C. Sandra Luz Morales Güitrón
Introducción
4

     Todas las variables que se han considerado hasta ahora son de tipo
     simple. Una variable de tipo simple consiste de una sola caja de
     memoria y sólo puede contener un valor cada vez. Una variable de
     tipo estructurado consiste en toda una colección de casillas de
     memoria. Los tipos de datos estudiados: entero, real, alfabético son
     considerados como datos de tipo simple, puesto que una variable
     que se define con alguno de estos tipos sólo puede almacenar un
     valor a la vez, es decir, existe una relación de uno a uno entre la
     variable y el número de elementos (valores) que es capaz de
     almacenar. En cambio un dato de tipo estructurado, como el arreglo,
     puede almacenar más de un elemento (valor) a la vez, con la
     condición de que todos los elementos deben ser del mismo tipo, es
     decir, que se puede tener un conjunto de datos enteros, reales, etc.

                         M. en C. Sandra Luz Morales Güitrón
Introducción
5

     Datos estructurados:
        Estructura de Datos es una colección de datos que se caracterizan por su
        organización y las operaciones que se definen en ella. Los datos de tipo estándar
        pueden ser organizados en diferentes estructuras de datos: estáticas y dinámicas.
     Estructura de Datos estáticas:
        Son aquellas en las que el espacio ocupado en memoria se define en tiempo de
        compilación y no puede ser modificado durante la ejecución del programa.
        Corresponden a este tipo los arrays y registros
     Estructuras de Datos Dinámicas:
        Son aquellas en las que el espacio ocupado en memoria puede ser modificado en
        tiempo de ejecución. Corresponden a este tipo las listas, árboles y grafos . Estas
        estructuras no son soportadas en todos los lenguajes. La elección de la estructura
        de datos idónea dependerá de la naturaleza del problema a resolver y, en
        menor medida, del lenguaje. Las estructuras de datos tienen en común que un
        identificador, nombre, puede representar a múltiples datos individuales.

                              M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
6


     Arreglos(Arrays):
       Un arreglo (array) es una colección de datos del mismo tipo, que
       se almacenan en posiciones consecutivas de memoria y reciben un
       nombre común. Para referirse a un determinado elemento de un
       array se deberá utilizar un índice, que especifique su posición
       relativa en el array. Un arreglo es una colección finita,
       homogénea y ordenada de elementos.
         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 del arreglo deben ser del mismo tipo.
         Ordenada: Se puede determinar cuál es el primer elemento, el segundo,
         el tercero,.... y el n-ésimo elmento.


                           M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
7

     Los arreglos se clasifican de acuerdo con el número de dimensiones que
     tienen. Así se tienen los:
     1.   Unidimensionales (vectores)
     2.   Bidimensionales (tablas o matrices)
     3.   Multidimensionales (tres o más dimensiones)




                                M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
8


     Arreglos Unidimensionales:
      Están formados por un conjunto de elementos de un
      mismo tipo de datos que se almacenan bajo un mismo
      nombre, y se diferencian por la posición que tiene
      cada elemento dentro del arreglo de datos. Al
      declarar un arreglo, se debe inicializar sus elementos
      antes de utilizarlos. Para declarar un arreglo tiene que
      indicar su tipo, un nombre único y la cantidad de
      elementos que va a contener.
        Entero Calificaciones[0…99]

                     M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
9


                                Para acceder a valores específicos
                                del arreglo, use un valor de índice
                                que apunte al elemento deseado.
                                Por ejemplo, para acceder al
                                primer elemento del arreglo
                                calificaciones debe utilizar el
                                valor        de        índice     0
                                (calificaciones[0]). Los programas
                                en C++ siempre indizan el primer
                                elemento de un arreglo con 0 y el
                                último con un valor n -1al tamaño
                                del arreglo.

               M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
10


      Inicialización y asignación de valores
        Como se decía anteriormente, antes de utilizar un arreglo es
        necesario inicializarlo: Calificaciones[0];
        Para inicializar todos los elementos de una vez, es necesario
        asignar un valor a un elemento del arreglo se hace por
        ejemplo: Calificaciones[0] =100;
        Cuando se usan arreglos, una operación común es usar una
        variable índice para acceder a los elementos de un arreglo.
        Suponiendo que la variable índice I contiene el valor 3, la
        siguiente instrucción asigna el valor 400 a valores[3]:
        valores[I] = 400;

                        M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
11


      Partes de un arreglo:
        Los componentes. Hacen referencia a los elementos que forman el
        arreglo, es decir, a los valores que se almacenan en cada una de las
        casillas del mismo.
        Los índices. Permiten hacer referencia a los componentes del
        arreglo en forma individual, especifican cuántos elementos tendrá el
        arreglo y además, de qué modo podrán accesarse esos
        componentes.




                          M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
12


      Definición de Arreglos:
      ident_arreglo = arreglo[liminf .. Limsup] de tipo Operaciones
      con vectores:
      Las operaciones que se pueden realizar con vectores durante
      el proceso de resolución de un problema son:
        Lectura/ escritura
        Asignación
        Actualización(inserción, eliminación, modificación)
        Recorrido (acceso secuencial)
        Ordenación
        Búsqueda
                          M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
13

      Ejemplos: Sea arre un arreglo de 70 elementos enteros con índices enteros.
      Su representación nos queda:




                            M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
14

      Lectura
      El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada uno
      de sus elementos. Normalmente se realizan con estructuras repetitivas, aunque
      pueden usarse estructuras selectivas. Usamos los índices para recorrer los elementos
      del arreglo:
         desde i = 1 hasta 70 hacer
         leer ( arre[i])
         fin_desde
      Escritura:
      Es similar al caso de lectura, sólo que en vez de leer el componente del arreglo, lo
      escribimos.
         leer (N)
         desde i = 1 hasta N hacer
         escribir (arre[i])
         fin_desde
                                 M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
15

      Asignación: No es posible asignar directamente un valor a todo el arreglo; sino que se debe asignar el
      valor deseado en cada componente. Con una estructura repetitiva se puede asignar un valor a todos los
      elementos del vector.
      Por ejemplo:
          arre[1] =120 (asignación de un valor constante único a una casilla del vector)
          arre[3] =arre[1] / 4 (asignar una operación)

      Se puede asignar un valor constante a todos los elementos del vector:
          desde i = 1 hasta 5 hacer
          arre[i] =3
          fin_desde
      O bien
      arre =3 (con arre del tipo arreglo)
      Inicialización
      Para inicializar con cero todos los elementos del arreglo:
          desde i = 1 hasta 70 hacer
               arre[i] ¬ 0
          fin_desde
                                             M. en C. Sandra Luz Morales Güitrón
4.1. Arreglo unidimensional
16

      Acceso Secuencial. (Recorrido)
         El acceso a los elementos de un vector puede ser para leer en él o para escribir
         (visualizar su contenido). Recorrido del vector es la acción de efectuar una acción
         general sobre todos los elementos de ese vector.
      Actualización.
         Incluye añadir (insertar), borrar o modificar algunos de los ya existentes. Se debe
         tener en cuenta si el arreglo está o no ordenado. Añadir datos a un vector consiste
         en agregar un nuevo elemento al final del vector, siempre que haya espacio en
         memoria.
      Investigue cómo insertar o eliminar elementos en un arreglo:
         a) Ordenado
         b) No ordenado




                               M. en C. Sandra Luz Morales Güitrón
4.2. Arreglos de más dimensiones.
17


      Arreglo Bidimensional:
        Es un conjunto de datos homogéneo, finito y ordenado, donde se hace
        referencia a cada elemento por medio de dos índices. El primero se
        utiliza para los renglones (filas) y el segundo para las columnas.
        También puede definirse como un arreglo de arreglos. Internamente en
        memoria se reservan MxN posiciones consecutivas para almacenar
        todos los elementos del arreglo.
      Declaración de una matríz:




                          M. en C. Sandra Luz Morales Güitrón
4.2. Arreglos de más dimensiones.
18

      Por ejemplo un arreglo de MxN (4x5) , tiene 4 renglones y 5 columnas, es
      decir, cada renglón se divide en 5 columnas, como se muestra a
      continuación:
                                                   COLUMNA         1       2       3       4       5
                                                   RENGLÓN
                                                                  (1,1)   (1,2)   (1,3)   (1,4)   (1,5)
      Para relacionar cada elemento                   1

      individual de una matriz se usan dos         RENGLÓN
                                                      2
                                                                  (2,1)   (2,2)   (2,3)   (2,4)   (2,5)

      subíndices; el primero indica el             RENGLÓN
                                                                  (3,1)   (3,2)   (3,3)   (3,4)   (3,5)
                                                      3
      renglón y el segundo la columna.
                                                   RENGLÓN
                                                                  (4,1)   (4,2)   (4,3)   (4,4)   (4,5)
                                                      4


      Los subíndices pueden ser números, variables o expresiones de tipo entero.
      Como toda variable, una de tipo matriz puede usarse para leer datos,
      asignarle valores mediante expresiones aritméticas, imprimir su contenido,
      formar parte de expresiones lógicas, etcétera.

                            M. en C. Sandra Luz Morales Güitrón
4.2. Arreglos de más dimensiones.
19




                M. en C. Sandra Luz Morales Güitrón
4.2. Arreglos de más dimensiones.
20


      Arreglos Multidimensionales (Poliedros):
        Son arreglos de tres o más dimensiones. También se les denomina
        poliedros. Este tipo de arreglos no son de uso frecuente, no obstante son
        una herramienta útil para un determinado número de problemas.
        La mayoría de los lenguajes de programación admiten estas estructuras,
        aunque cada uno de ellos tiene una limitación con respecto al número
        máximo de dimensiones permitidas.


        Tipo de dato IDARREGLO= arreglo[capa, fila, columna]


        Entero IDARREGLO[liminf…limsup, liminf…limsup, liminf…limsup]



                           M. en C. Sandra Luz Morales Güitrón
4.2. Arreglos de más dimensiones.
21


      Por ejemplo un arreglo de ZxXxY (3x5x6) , tiene 3 capas, 5
      renglones y 6 columnas, es decir, cada capa se divide en 5
      renglones, y 6 columnas, como se muestra a continuación:

                                                 Columna
                                                                Capa 3
                                                              Capa 2
                                                             Capa 1
                          Renglón




                       M. en C. Sandra Luz Morales Güitrón
4.3. Diferencia entre acceso de
22
     memoria dinámica y estática.
      Datos estáticos: Su tamaño y forma es constante durante la
      ejecución de un programa y por tanto se determinan en
      tiempo de compilación. El ejemplo: típico son los arrays. Tienen
      el problema de que hay que dimensionar la estructura de
      antemano, lo que puede conllevar desperdicio o falta de
      memoria.
      Datos dinámicos: su tamaño y forma es variable (o puede ser
      lo) a lo largo de un programa, por lo que se crean y
      destruyen en tiempo de ejecución. Esto permite dimensionar la
      estructura de datos de una forma precisa: se va asignando
      memoria en tiempo de ejecución según se va necesitando.

                         M. en C. Sandra Luz Morales Güitrón
4.3. Diferencia entre acceso de
23
     memoria dinámica y estática.
      Datos Simples
      Hacen referencia a un único valor a la vez en memoria

                        Entero, Real, Carácter, Lógico


       Estáticos               Arreglos, Registros, Archivos, Cadenas


       Datos Estructurados
       Se refieren a un grupo de casillas de memoria


         Dinámicos                  Listas, Arboles, Grafos

                           M. en C. Sandra Luz Morales Güitrón
4.3. Diferencia entre acceso de
24
     memoria dinámica y estática.
      Cuando el sistema operativo carga un programa para ejecutarlo y lo
      convierte en proceso, le asigna cuatro partes lógicas en memoria principal:
      texto, datos(estáticos), pila y una zona libre. Esta zona libre (o heap) es la
      que va a contener los datos dinámicos, la cual, a su vez, en cada instante
      de la ejecución tendrá partes asignadas a los mismos y partes libres que
      fragmentarán esta zona, siendo posible que se agote sino se liberan las
      partes utilizadas ya inservibles. (La pila también varía su tamaño o
      dinámicamente, pero la gestiona el sistema operativo, no el programador):
      Para trabajar con datos dinámicos necesitamos dos cosas:
         1. Subprogramas predefinidos en el lenguaje que nos permitan gestionar la
         memoria de forma dinámica (asignación y liberación).
         2. Algún tipo de dato con el que podamos acceder a esos datos dinámicos (ya
         que con los tipos vistos hasta ahora sólo podemos acceder a datos con un
         tamaño y forma ya determinados).

                             M. en C. Sandra Luz Morales Güitrón
4.3. Diferencia entre acceso de
25
     memoria dinámica y estática.




               M. en C. Sandra Luz Morales Güitrón
4.3. Diferencia entre acceso de
26
     memoria dinámica y estática.
      Implementación
       Para implementar alguna estructura de datos, primero es
       necesario tener muy claro cómo va a ser el manejo de
       memoria.
       La diferencia entre estructuras estáticas y dinámicas es el
       manejo de memoria.

      Estática                            Dinámica
      Durante la ejecución del            Durante la ejecución del
      programa el tamaño de la            programa el tamaño de la
      estructura no cambia                estructura puede cambiar



                          M. en C. Sandra Luz Morales Güitrón
4.4. Tipos Estructurados.
27


      Tipos estructurados o registros:
        Definidos por el programador partir de otros tipos escalares
        o compuestos.
        Conjunto de datos conceptualmente relacionados.
        Cada dato del conjunto puede ser de un tipo distinto.
        REGISTER
          Campo1
          Campo 2
          …
        END_REGISTER
                       M. en C. Sandra Luz Morales Güitrón
4.4. Tipos Estructurados.
28


      Semántica:
      Campo: cada objeto de un tipo estructurado, es una
      variable de un cierto tipo (escalar o compuesta)
      Para acceder a los campos de un registro:
        <variable_estructurada>.<nombre_campo>
         Persona= REGISTER
         Cadena: Nombre, ApellidoP, ApellidoM
         Carácter: sexo, edo_civil.
         Entero: num_id, edad.
         END_REGISTER
                      M. en C. Sandra Luz Morales Güitrón
4.4. Tipos Estructurados.
29


      Declaración de variables.
      Persona p;

      num_id   Nombre   ApellidoP     ApellidoM        sexo edo_civil   edad


      Acceso a los campos.
          p.Nombre                         Variable de tipo cadena
          p.sexo                           Variable de tipo carácter
          p.edad                           Variable de tipo numérico (entero)
          …

                         M. en C. Sandra Luz Morales Güitrón
4.4. Tipos Estructurados.
30


     Asignación                    num_id     Nombre      ApellidoP     ApellidoM     sexo     edo_civil    edad


        p.Nombre = “Esteban”            1     Esteban      Sánchez        Garcia         M          S        25


        p.sexo = “M”
        p.edad= “25”
     Lectura
        Var1= p.Nombre           num_id     Nombre      ApellidoP     ApellidoM     sexo     edo_civil     edad

        Var2= p.sexo                1       Esteban     Sánchez        Garcia        M          S          25

        Var3= p.edad
                                              Esteban                 M                  25
                                                Var1                 Var2             Var3


                     M. en C. Sandra Luz Morales Güitrón

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (18)

Arrays - programación 3
Arrays - programación 3Arrays - programación 3
Arrays - programación 3
 
Cap06
Cap06Cap06
Cap06
 
Estructura de datos (Arreglos)
Estructura de datos (Arreglos)Estructura de datos (Arreglos)
Estructura de datos (Arreglos)
 
Arreglos Java (arrays)
Arreglos Java (arrays)Arreglos Java (arrays)
Arreglos Java (arrays)
 
Arreglos
ArreglosArreglos
Arreglos
 
Bryan gordillo ensayo_arreglos
Bryan gordillo ensayo_arreglosBryan gordillo ensayo_arreglos
Bryan gordillo ensayo_arreglos
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Arreglos en java v01
Arreglos en java v01Arreglos en java v01
Arreglos en java v01
 
Estructuras de Datos (Arreglos)
Estructuras de Datos (Arreglos)Estructuras de Datos (Arreglos)
Estructuras de Datos (Arreglos)
 
Arreglos (unimensionles y matrices (bidimensionales)
Arreglos (unimensionles y matrices (bidimensionales)Arreglos (unimensionles y matrices (bidimensionales)
Arreglos (unimensionles y matrices (bidimensionales)
 
Unidad i
Unidad iUnidad i
Unidad i
 
Arreglos Unidimensionales
Arreglos UnidimensionalesArreglos Unidimensionales
Arreglos Unidimensionales
 
Vectores y matrices. DIEGO ALEJANDRO ORTEGA
Vectores y matrices. DIEGO ALEJANDRO ORTEGAVectores y matrices. DIEGO ALEJANDRO ORTEGA
Vectores y matrices. DIEGO ALEJANDRO ORTEGA
 
Arreglos en Java
Arreglos en JavaArreglos en Java
Arreglos en Java
 
Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datos
 
Tipos de datos en java
Tipos de datos en javaTipos de datos en java
Tipos de datos en java
 
Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)Estructuras de datos 1(Arrays y Estructuras)
Estructuras de datos 1(Arrays y Estructuras)
 
6 A Arrays
6 A Arrays6 A Arrays
6 A Arrays
 

Ähnlich wie Ape unidad4

Ähnlich wie Ape unidad4 (20)

Estructuras de Datos Elementos y Arreglos.ppt
Estructuras de Datos Elementos y Arreglos.pptEstructuras de Datos Elementos y Arreglos.ppt
Estructuras de Datos Elementos y Arreglos.ppt
 
Presentación Arreglos
Presentación ArreglosPresentación Arreglos
Presentación Arreglos
 
Arreglos..
Arreglos..Arreglos..
Arreglos..
 
Trabajo en grupo
Trabajo en grupoTrabajo en grupo
Trabajo en grupo
 
Arreglos
Arreglos Arreglos
Arreglos
 
Arreglos
ArreglosArreglos
Arreglos
 
Los arreglos crisbet
Los arreglos crisbetLos arreglos crisbet
Los arreglos crisbet
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Revista digital vectores y matrices
Revista digital vectores y matricesRevista digital vectores y matrices
Revista digital vectores y matrices
 
Exposicion Arreglos
Exposicion ArreglosExposicion Arreglos
Exposicion Arreglos
 
Expocicion de Arreglos
Expocicion de ArreglosExpocicion de Arreglos
Expocicion de Arreglos
 
ARREGLOS UNIDIMENSIONALES
ARREGLOS UNIDIMENSIONALESARREGLOS UNIDIMENSIONALES
ARREGLOS UNIDIMENSIONALES
 
12 Arreglos
12 Arreglos12 Arreglos
12 Arreglos
 
Arreglos en Java
Arreglos en JavaArreglos en Java
Arreglos en Java
 
Unidad5
Unidad5Unidad5
Unidad5
 
Estructuras estáticas de datos
Estructuras estáticas de datosEstructuras estáticas de datos
Estructuras estáticas de datos
 
Estructuras estáticas de datos
Estructuras estáticas de datosEstructuras estáticas de datos
Estructuras estáticas de datos
 
Arrays
ArraysArrays
Arrays
 
Vectores unidimensionales
Vectores unidimensionales Vectores unidimensionales
Vectores unidimensionales
 
Vectores
VectoresVectores
Vectores
 

Ape unidad4

  • 1. 1 UNIDAD 4: ARREGLOS Y TIPOS ESTRUCTURADOS ALGORITMIA Y PROGRAMACIÓN ESTRUCTURADA MCC. Sandra Luz Morales Güitrón
  • 2. Temario 2 4.1. Arreglo unidimensional 4.2. Arreglos de más dimensiones. 4.3. Diferencia entre acceso de memoria dinámica y estática. 4.4. Tipos Estructurados. M. en C. Sandra Luz Morales Güitrón
  • 3. Objetivos 3 Resolver problemas que requieran de arreglos de tipos de datos compuestos para representar información mixta construyendo módulos documentados que mantengan las definiciones y las operaciones necesarias. Comprenderá la creación y uso de los arreglos. Aprenderá como utilizar los arreglos unidimensionales o multidimensionales. Conocerá cual es la diferencia de acceso a memoria dinámica o estática. Entenderá el uso de los tipos estructurados. M. en C. Sandra Luz Morales Güitrón
  • 4. Introducción 4 Todas las variables que se han considerado hasta ahora son de tipo simple. Una variable de tipo simple consiste de una sola caja de memoria y sólo puede contener un valor cada vez. Una variable de tipo estructurado consiste en toda una colección de casillas de memoria. Los tipos de datos estudiados: entero, real, alfabético son considerados como datos de tipo simple, puesto que una variable que se define con alguno de estos tipos sólo puede almacenar un valor a la vez, es decir, existe una relación de uno a uno entre la variable y el número de elementos (valores) que es capaz de almacenar. En cambio un dato de tipo estructurado, como el arreglo, puede almacenar más de un elemento (valor) a la vez, con la condición de que todos los elementos deben ser del mismo tipo, es decir, que se puede tener un conjunto de datos enteros, reales, etc. M. en C. Sandra Luz Morales Güitrón
  • 5. Introducción 5 Datos estructurados: Estructura de Datos es una colección de datos que se caracterizan por su organización y las operaciones que se definen en ella. Los datos de tipo estándar pueden ser organizados en diferentes estructuras de datos: estáticas y dinámicas. Estructura de Datos estáticas: Son aquellas en las que el espacio ocupado en memoria se define en tiempo de compilación y no puede ser modificado durante la ejecución del programa. Corresponden a este tipo los arrays y registros Estructuras de Datos Dinámicas: Son aquellas en las que el espacio ocupado en memoria puede ser modificado en tiempo de ejecución. Corresponden a este tipo las listas, árboles y grafos . Estas estructuras no son soportadas en todos los lenguajes. La elección de la estructura de datos idónea dependerá de la naturaleza del problema a resolver y, en menor medida, del lenguaje. Las estructuras de datos tienen en común que un identificador, nombre, puede representar a múltiples datos individuales. M. en C. Sandra Luz Morales Güitrón
  • 6. 4.1. Arreglo unidimensional 6 Arreglos(Arrays): Un arreglo (array) es una colección de datos del mismo tipo, que se almacenan en posiciones consecutivas de memoria y reciben un nombre común. Para referirse a un determinado elemento de un array se deberá utilizar un índice, que especifique su posición relativa en el array. Un arreglo es una colección finita, homogénea y ordenada de elementos. 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 del arreglo deben ser del mismo tipo. Ordenada: Se puede determinar cuál es el primer elemento, el segundo, el tercero,.... y el n-ésimo elmento. M. en C. Sandra Luz Morales Güitrón
  • 7. 4.1. Arreglo unidimensional 7 Los arreglos se clasifican de acuerdo con el número de dimensiones que tienen. Así se tienen los: 1. Unidimensionales (vectores) 2. Bidimensionales (tablas o matrices) 3. Multidimensionales (tres o más dimensiones) M. en C. Sandra Luz Morales Güitrón
  • 8. 4.1. Arreglo unidimensional 8 Arreglos Unidimensionales: Están formados por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre, y se diferencian por la posición que tiene cada elemento dentro del arreglo de datos. Al declarar un arreglo, se debe inicializar sus elementos antes de utilizarlos. Para declarar un arreglo tiene que indicar su tipo, un nombre único y la cantidad de elementos que va a contener. Entero Calificaciones[0…99] M. en C. Sandra Luz Morales Güitrón
  • 9. 4.1. Arreglo unidimensional 9 Para acceder a valores específicos del arreglo, use un valor de índice que apunte al elemento deseado. Por ejemplo, para acceder al primer elemento del arreglo calificaciones debe utilizar el valor de índice 0 (calificaciones[0]). Los programas en C++ siempre indizan el primer elemento de un arreglo con 0 y el último con un valor n -1al tamaño del arreglo. M. en C. Sandra Luz Morales Güitrón
  • 10. 4.1. Arreglo unidimensional 10 Inicialización y asignación de valores Como se decía anteriormente, antes de utilizar un arreglo es necesario inicializarlo: Calificaciones[0]; Para inicializar todos los elementos de una vez, es necesario asignar un valor a un elemento del arreglo se hace por ejemplo: Calificaciones[0] =100; Cuando se usan arreglos, una operación común es usar una variable índice para acceder a los elementos de un arreglo. Suponiendo que la variable índice I contiene el valor 3, la siguiente instrucción asigna el valor 400 a valores[3]: valores[I] = 400; M. en C. Sandra Luz Morales Güitrón
  • 11. 4.1. Arreglo unidimensional 11 Partes de un arreglo: Los componentes. Hacen referencia a los elementos que forman el arreglo, es decir, a los valores que se almacenan en cada una de las casillas del mismo. Los índices. Permiten hacer referencia a los componentes del arreglo en forma individual, especifican cuántos elementos tendrá el arreglo y además, de qué modo podrán accesarse esos componentes. M. en C. Sandra Luz Morales Güitrón
  • 12. 4.1. Arreglo unidimensional 12 Definición de Arreglos: ident_arreglo = arreglo[liminf .. Limsup] de tipo Operaciones con vectores: Las operaciones que se pueden realizar con vectores durante el proceso de resolución de un problema son: Lectura/ escritura Asignación Actualización(inserción, eliminación, modificación) Recorrido (acceso secuencial) Ordenación Búsqueda M. en C. Sandra Luz Morales Güitrón
  • 13. 4.1. Arreglo unidimensional 13 Ejemplos: Sea arre un arreglo de 70 elementos enteros con índices enteros. Su representación nos queda: M. en C. Sandra Luz Morales Güitrón
  • 14. 4.1. Arreglo unidimensional 14 Lectura El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada uno de sus elementos. Normalmente se realizan con estructuras repetitivas, aunque pueden usarse estructuras selectivas. Usamos los índices para recorrer los elementos del arreglo: desde i = 1 hasta 70 hacer leer ( arre[i]) fin_desde Escritura: Es similar al caso de lectura, sólo que en vez de leer el componente del arreglo, lo escribimos. leer (N) desde i = 1 hasta N hacer escribir (arre[i]) fin_desde M. en C. Sandra Luz Morales Güitrón
  • 15. 4.1. Arreglo unidimensional 15 Asignación: No es posible asignar directamente un valor a todo el arreglo; sino que se debe asignar el valor deseado en cada componente. Con una estructura repetitiva se puede asignar un valor a todos los elementos del vector. Por ejemplo: arre[1] =120 (asignación de un valor constante único a una casilla del vector) arre[3] =arre[1] / 4 (asignar una operación) Se puede asignar un valor constante a todos los elementos del vector: desde i = 1 hasta 5 hacer arre[i] =3 fin_desde O bien arre =3 (con arre del tipo arreglo) Inicialización Para inicializar con cero todos los elementos del arreglo: desde i = 1 hasta 70 hacer arre[i] ¬ 0 fin_desde M. en C. Sandra Luz Morales Güitrón
  • 16. 4.1. Arreglo unidimensional 16 Acceso Secuencial. (Recorrido) El acceso a los elementos de un vector puede ser para leer en él o para escribir (visualizar su contenido). Recorrido del vector es la acción de efectuar una acción general sobre todos los elementos de ese vector. Actualización. Incluye añadir (insertar), borrar o modificar algunos de los ya existentes. Se debe tener en cuenta si el arreglo está o no ordenado. Añadir datos a un vector consiste en agregar un nuevo elemento al final del vector, siempre que haya espacio en memoria. Investigue cómo insertar o eliminar elementos en un arreglo: a) Ordenado b) No ordenado M. en C. Sandra Luz Morales Güitrón
  • 17. 4.2. Arreglos de más dimensiones. 17 Arreglo Bidimensional: Es un conjunto de datos homogéneo, finito y ordenado, donde se hace referencia a cada elemento por medio de dos índices. El primero se utiliza para los renglones (filas) y el segundo para las columnas. También puede definirse como un arreglo de arreglos. Internamente en memoria se reservan MxN posiciones consecutivas para almacenar todos los elementos del arreglo. Declaración de una matríz: M. en C. Sandra Luz Morales Güitrón
  • 18. 4.2. Arreglos de más dimensiones. 18 Por ejemplo un arreglo de MxN (4x5) , tiene 4 renglones y 5 columnas, es decir, cada renglón se divide en 5 columnas, como se muestra a continuación: COLUMNA 1 2 3 4 5 RENGLÓN (1,1) (1,2) (1,3) (1,4) (1,5) Para relacionar cada elemento 1 individual de una matriz se usan dos RENGLÓN 2 (2,1) (2,2) (2,3) (2,4) (2,5) subíndices; el primero indica el RENGLÓN (3,1) (3,2) (3,3) (3,4) (3,5) 3 renglón y el segundo la columna. RENGLÓN (4,1) (4,2) (4,3) (4,4) (4,5) 4 Los subíndices pueden ser números, variables o expresiones de tipo entero. Como toda variable, una de tipo matriz puede usarse para leer datos, asignarle valores mediante expresiones aritméticas, imprimir su contenido, formar parte de expresiones lógicas, etcétera. M. en C. Sandra Luz Morales Güitrón
  • 19. 4.2. Arreglos de más dimensiones. 19 M. en C. Sandra Luz Morales Güitrón
  • 20. 4.2. Arreglos de más dimensiones. 20 Arreglos Multidimensionales (Poliedros): Son arreglos de tres o más dimensiones. También se les denomina poliedros. Este tipo de arreglos no son de uso frecuente, no obstante son una herramienta útil para un determinado número de problemas. La mayoría de los lenguajes de programación admiten estas estructuras, aunque cada uno de ellos tiene una limitación con respecto al número máximo de dimensiones permitidas. Tipo de dato IDARREGLO= arreglo[capa, fila, columna] Entero IDARREGLO[liminf…limsup, liminf…limsup, liminf…limsup] M. en C. Sandra Luz Morales Güitrón
  • 21. 4.2. Arreglos de más dimensiones. 21 Por ejemplo un arreglo de ZxXxY (3x5x6) , tiene 3 capas, 5 renglones y 6 columnas, es decir, cada capa se divide en 5 renglones, y 6 columnas, como se muestra a continuación: Columna Capa 3 Capa 2 Capa 1 Renglón M. en C. Sandra Luz Morales Güitrón
  • 22. 4.3. Diferencia entre acceso de 22 memoria dinámica y estática. Datos estáticos: Su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo: típico son los arrays. Tienen el problema de que hay que dimensionar la estructura de antemano, lo que puede conllevar desperdicio o falta de memoria. Datos dinámicos: su tamaño y forma es variable (o puede ser lo) a lo largo de un programa, por lo que se crean y destruyen en tiempo de ejecución. Esto permite dimensionar la estructura de datos de una forma precisa: se va asignando memoria en tiempo de ejecución según se va necesitando. M. en C. Sandra Luz Morales Güitrón
  • 23. 4.3. Diferencia entre acceso de 23 memoria dinámica y estática. Datos Simples Hacen referencia a un único valor a la vez en memoria Entero, Real, Carácter, Lógico Estáticos Arreglos, Registros, Archivos, Cadenas Datos Estructurados Se refieren a un grupo de casillas de memoria Dinámicos Listas, Arboles, Grafos M. en C. Sandra Luz Morales Güitrón
  • 24. 4.3. Diferencia entre acceso de 24 memoria dinámica y estática. Cuando el sistema operativo carga un programa para ejecutarlo y lo convierte en proceso, le asigna cuatro partes lógicas en memoria principal: texto, datos(estáticos), pila y una zona libre. Esta zona libre (o heap) es la que va a contener los datos dinámicos, la cual, a su vez, en cada instante de la ejecución tendrá partes asignadas a los mismos y partes libres que fragmentarán esta zona, siendo posible que se agote sino se liberan las partes utilizadas ya inservibles. (La pila también varía su tamaño o dinámicamente, pero la gestiona el sistema operativo, no el programador): Para trabajar con datos dinámicos necesitamos dos cosas: 1. Subprogramas predefinidos en el lenguaje que nos permitan gestionar la memoria de forma dinámica (asignación y liberación). 2. Algún tipo de dato con el que podamos acceder a esos datos dinámicos (ya que con los tipos vistos hasta ahora sólo podemos acceder a datos con un tamaño y forma ya determinados). M. en C. Sandra Luz Morales Güitrón
  • 25. 4.3. Diferencia entre acceso de 25 memoria dinámica y estática. M. en C. Sandra Luz Morales Güitrón
  • 26. 4.3. Diferencia entre acceso de 26 memoria dinámica y estática. Implementación Para implementar alguna estructura de datos, primero es necesario tener muy claro cómo va a ser el manejo de memoria. La diferencia entre estructuras estáticas y dinámicas es el manejo de memoria. Estática Dinámica Durante la ejecución del Durante la ejecución del programa el tamaño de la programa el tamaño de la estructura no cambia estructura puede cambiar M. en C. Sandra Luz Morales Güitrón
  • 27. 4.4. Tipos Estructurados. 27 Tipos estructurados o registros: Definidos por el programador partir de otros tipos escalares o compuestos. Conjunto de datos conceptualmente relacionados. Cada dato del conjunto puede ser de un tipo distinto. REGISTER Campo1 Campo 2 … END_REGISTER M. en C. Sandra Luz Morales Güitrón
  • 28. 4.4. Tipos Estructurados. 28 Semántica: Campo: cada objeto de un tipo estructurado, es una variable de un cierto tipo (escalar o compuesta) Para acceder a los campos de un registro: <variable_estructurada>.<nombre_campo> Persona= REGISTER Cadena: Nombre, ApellidoP, ApellidoM Carácter: sexo, edo_civil. Entero: num_id, edad. END_REGISTER M. en C. Sandra Luz Morales Güitrón
  • 29. 4.4. Tipos Estructurados. 29 Declaración de variables. Persona p; num_id Nombre ApellidoP ApellidoM sexo edo_civil edad Acceso a los campos. p.Nombre Variable de tipo cadena p.sexo Variable de tipo carácter p.edad Variable de tipo numérico (entero) … M. en C. Sandra Luz Morales Güitrón
  • 30. 4.4. Tipos Estructurados. 30 Asignación num_id Nombre ApellidoP ApellidoM sexo edo_civil edad p.Nombre = “Esteban” 1 Esteban Sánchez Garcia M S 25 p.sexo = “M” p.edad= “25” Lectura Var1= p.Nombre num_id Nombre ApellidoP ApellidoM sexo edo_civil edad Var2= p.sexo 1 Esteban Sánchez Garcia M S 25 Var3= p.edad Esteban M 25 Var1 Var2 Var3 M. en C. Sandra Luz Morales Güitrón