MANEJO DE MEMORIA
Estructuras de Datos: Conceptos Conjunto de datos de tipos iguales o diferentes que se relacionan entre si y que se pueden operar como un todo. Entero, Real, Carácter, Lógico Datos Simples Hacen referencia a un único valor a la vez en memoria Datos Estructurados Se refieren a un grupo de casillas de memoria Est á ticos Dinámicos Arreglos, Registros, Archivos, Cadenas Listas, Arboles, Grafos
Estructuras de Datos: Implementación Para implementar algunas estructuras 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 Durante la ejecución del programa el tamaño de la estructura no cambia Dinámica Durante la ejecución del programa el tamaño de la estructura puede cambiar
Memoria Estática:  Conceptos de Arreglos Definición: Colección finita, homogénea y ordenada de elementos.  Finita : Porque todo arreglo tiene un límite.  Homogénea : Porque todos los elementos son del mismo tipo.  Ordenada : Porque se puede determinar cuál es el enésimo elemento. Un arreglo tiene dos partes: Componentes e índices C 1 C 2 .... C n i 0 i 1 i n Componentes Í ndices Componentes : Hacen referencia a los elementos que forman el arreglo. Í ndices : Permiten referirse a los componentes del arreglo en forma individual.
Arreglos Unidimensionales Son los arreglos más simples y constan de un solo índice, también se llaman  vectores . Notación: Podría ser de diferentes maneras. Por ej: Array [0...9] de enteros: Vector Vector: x 14 43 .... 4 x 0 x 1 x 9 Componentes Í ndices X hace referencia a todo el vector, mientras que x 0 , o x 1  hace referencia los elementos en forma individual
Arreglos Unidimensionales Los arreglos se almacenan en forma adyacente, así que su representación en memoria es: X 0  ,Dirección z; X 1  ,Dirección z+1; X n  ,Dirección z+n Cada elemento del arreglo se puede procesar como si fuera una variable simple.Ej: i 3 Sobre los vectores se pueden realizar las siguientes operaciones: Lectura / Escritura, Asignación, Actualización (insertar, eliminar, modificar), Ordenamiento y Búsqueda. Suma   Suma + x[2]  X[2]   15  X[i]   15  X[i+2]   15
Arreglos Bidimensionales Estos arreglos constan de dos índices, también se llaman  matrices . Notación: Podría ser de diferentes maneras. Por ej: Array [0...2, 0...2] de enteros: Matriz Matriz: M 34 43 90 0 1 2 Componentes Índices 83 2 41 56 75 3 0 1 2 Operaciones:  Lectura, Escritura, Asignación.
Registros(Estructuras) Un registro es una colección de datos, que pueden ser de diferentes tipos. Cada uno de sus elementos se llama  Campo . Notación: Podría ser de diferentes maneras. Por ej: Tipo registro: Domicilio Entero: Calle Entero: Numero Cadena: Ciudad Fin Tipo Domicilio: dir El acceso a los campos se hace así: variable_registro.id_campo . Por Ej: dir.Calle, dir.Numero, dir.Ciudad. Numero Ciudad Calle Domicilio
Arreglos y Registros Se pueden presentar las siguientes combinaciones: Arreglos de Registros : Cada elemento del registro es un arreglo. Tipo registro:  Cliente Cadena :  Nombre Cadena :  Teléfono Real :  Saldo Fin Tipo Array [0... 2 ] de  Cliente :  Vector Notación: Vector[0].Nombre Vector N T S N T S N T S 0 1 2
Arreglos y Registros Registro Anidado : Por lo menos un campo del registro es de tipo registro. Tipo registro: Domicilio Entero: Calle Entero: Numero Cadena: Ciudad Fin Tipo Tipo registro:  Cliente Cadena :  Nombre Domicilio :  Dirección Real :  Saldo Fin Tipo Cliente Notación: Cliente.Nombre Cliente.Dirección.Calle Dirección Cll Num Ciu Nombre Saldo
Arreglos y Registros Registro con Arreglos : Por lo menos un campo del registro es un array. Array [0... 2 ] de  Real : Vector   Tipo registro:  Estudiante Cadena :  Nombre Cadena: Código Vector :  Notas Fin Tipo Notación: Estudiante.Nombre Estudiante. Notas[0] Estudiante Notas Nombre Código
Memoria  Dinámica :  Apuntadores Las variables contienen valores específicos, las variables apuntador contienen direcciones de memoria de otras variables. La variable “ptrcont” contiene la dirección de memoria de la variable “cont” Las variables apuntador están asociadas a un tipo de dato. Por ej. Si el valor de cont es entero la variable apuntador ptrcont  debe  ser de tipo entero. 2 cont 29DC ptrcont
Apuntadores Operadores : Una variable apuntador responde a dos operadores: Operando de Dirección(&) : Que devuelve la dirección de su operando. Por ej: Entero Y, *ptry Y 5 Ptry &Y Operando de Indirección(*) : Que devuelve el alias de su operando. Por ej: Entero Y, *ptry Y 5 Ptry &Y Escribir(*Ptry)
Asignación de Memoria Dinámica Es el proceso por el cual a una estructura,  sea cual fuere, se le coloca a apuntar una variable del mismo tipo y sobre ese apuntador se reserva o se libera memoria de acuerdo a si la estructura crece o decrece.

Manejo de memoria

  • 1.
  • 2.
    Estructuras de Datos:Conceptos Conjunto de datos de tipos iguales o diferentes que se relacionan entre si y que se pueden operar como un todo. Entero, Real, Carácter, Lógico Datos Simples Hacen referencia a un único valor a la vez en memoria Datos Estructurados Se refieren a un grupo de casillas de memoria Est á ticos Dinámicos Arreglos, Registros, Archivos, Cadenas Listas, Arboles, Grafos
  • 3.
    Estructuras de Datos:Implementación Para implementar algunas estructuras 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 Durante la ejecución del programa el tamaño de la estructura no cambia Dinámica Durante la ejecución del programa el tamaño de la estructura puede cambiar
  • 4.
    Memoria Estática: Conceptos de Arreglos Definición: Colección finita, homogénea y ordenada de elementos. Finita : Porque todo arreglo tiene un límite. Homogénea : Porque todos los elementos son del mismo tipo. Ordenada : Porque se puede determinar cuál es el enésimo elemento. Un arreglo tiene dos partes: Componentes e índices C 1 C 2 .... C n i 0 i 1 i n Componentes Í ndices Componentes : Hacen referencia a los elementos que forman el arreglo. Í ndices : Permiten referirse a los componentes del arreglo en forma individual.
  • 5.
    Arreglos Unidimensionales Sonlos arreglos más simples y constan de un solo índice, también se llaman vectores . Notación: Podría ser de diferentes maneras. Por ej: Array [0...9] de enteros: Vector Vector: x 14 43 .... 4 x 0 x 1 x 9 Componentes Í ndices X hace referencia a todo el vector, mientras que x 0 , o x 1 hace referencia los elementos en forma individual
  • 6.
    Arreglos Unidimensionales Losarreglos se almacenan en forma adyacente, así que su representación en memoria es: X 0 ,Dirección z; X 1 ,Dirección z+1; X n ,Dirección z+n Cada elemento del arreglo se puede procesar como si fuera una variable simple.Ej: i 3 Sobre los vectores se pueden realizar las siguientes operaciones: Lectura / Escritura, Asignación, Actualización (insertar, eliminar, modificar), Ordenamiento y Búsqueda. Suma Suma + x[2] X[2] 15 X[i] 15 X[i+2] 15
  • 7.
    Arreglos Bidimensionales Estosarreglos constan de dos índices, también se llaman matrices . Notación: Podría ser de diferentes maneras. Por ej: Array [0...2, 0...2] de enteros: Matriz Matriz: M 34 43 90 0 1 2 Componentes Índices 83 2 41 56 75 3 0 1 2 Operaciones: Lectura, Escritura, Asignación.
  • 8.
    Registros(Estructuras) Un registroes una colección de datos, que pueden ser de diferentes tipos. Cada uno de sus elementos se llama Campo . Notación: Podría ser de diferentes maneras. Por ej: Tipo registro: Domicilio Entero: Calle Entero: Numero Cadena: Ciudad Fin Tipo Domicilio: dir El acceso a los campos se hace así: variable_registro.id_campo . Por Ej: dir.Calle, dir.Numero, dir.Ciudad. Numero Ciudad Calle Domicilio
  • 9.
    Arreglos y RegistrosSe pueden presentar las siguientes combinaciones: Arreglos de Registros : Cada elemento del registro es un arreglo. Tipo registro: Cliente Cadena : Nombre Cadena : Teléfono Real : Saldo Fin Tipo Array [0... 2 ] de Cliente : Vector Notación: Vector[0].Nombre Vector N T S N T S N T S 0 1 2
  • 10.
    Arreglos y RegistrosRegistro Anidado : Por lo menos un campo del registro es de tipo registro. Tipo registro: Domicilio Entero: Calle Entero: Numero Cadena: Ciudad Fin Tipo Tipo registro: Cliente Cadena : Nombre Domicilio : Dirección Real : Saldo Fin Tipo Cliente Notación: Cliente.Nombre Cliente.Dirección.Calle Dirección Cll Num Ciu Nombre Saldo
  • 11.
    Arreglos y RegistrosRegistro con Arreglos : Por lo menos un campo del registro es un array. Array [0... 2 ] de Real : Vector Tipo registro: Estudiante Cadena : Nombre Cadena: Código Vector : Notas Fin Tipo Notación: Estudiante.Nombre Estudiante. Notas[0] Estudiante Notas Nombre Código
  • 12.
    Memoria Dinámica: Apuntadores Las variables contienen valores específicos, las variables apuntador contienen direcciones de memoria de otras variables. La variable “ptrcont” contiene la dirección de memoria de la variable “cont” Las variables apuntador están asociadas a un tipo de dato. Por ej. Si el valor de cont es entero la variable apuntador ptrcont debe ser de tipo entero. 2 cont 29DC ptrcont
  • 13.
    Apuntadores Operadores :Una variable apuntador responde a dos operadores: Operando de Dirección(&) : Que devuelve la dirección de su operando. Por ej: Entero Y, *ptry Y 5 Ptry &Y Operando de Indirección(*) : Que devuelve el alias de su operando. Por ej: Entero Y, *ptry Y 5 Ptry &Y Escribir(*Ptry)
  • 14.
    Asignación de MemoriaDinámica Es el proceso por el cual a una estructura, sea cual fuere, se le coloca a apuntar una variable del mismo tipo y sobre ese apuntador se reserva o se libera memoria de acuerdo a si la estructura crece o decrece.