Ape unidad4

30
ALGORITMIA Y PROGRAMACIÓN ESTRUCTURADA UNIDAD 4: ARREGLOS Y TIPOS ESTRUCTURADOS MCC. Sandra Luz Morales Güitrón 1

Transcript of Ape unidad4

Page 1: Ape unidad4

ALGORITMIA Y PROGRAMACIÓN ESTRUCTURADA

UNIDAD 4: ARREGLOS Y TIPOS ESTRUCTURADOS

MCC. Sandra Luz Morales Güitrón

1

Page 2: Ape unidad4

Temario

4.1. Arreglo unidimensional4.2. Arreglos de más dimensiones.4.3. Diferencia entre acceso de memoria dinámicay estática.4.4. Tipos Estructurados.

2

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

Page 3: Ape unidad4

Objetivos

Resolver problemas que requieran de arreglos de tipos dedatos compuestos para representar información mixtaconstruyendo módulos documentados que mantengan lasdefiniciones y las operaciones necesarias.

Comprenderá la creación y uso de los arreglos.

Aprenderá como utilizar los arreglos unidimensionales omultidimensionales.

Conocerá cual es la diferencia de acceso a memoria dinámica oestática.

Entenderá el uso de los tipos estructurados.

3

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

Page 4: Ape unidad4

Introducción

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

4

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

Page 5: Ape unidad4

Introducción

Datos estructurados:

Estructura de Datos es una colección de datos que se caracterizan por suorganización y las operaciones que se definen en ella. Los datos de tipo estándarpueden 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 decompilació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 entiempo de ejecución. Corresponden a este tipo las listas, árboles y grafos . Estasestructuras no son soportadas en todos los lenguajes. La elección de la estructurade datos idónea dependerá de la naturaleza del problema a resolver y, enmenor medida, del lenguaje. Las estructuras de datos tienen en común que unidentificador, nombre, puede representar a múltiples datos individuales.

5

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

Page 6: Ape unidad4

4.1. Arreglo unidimensional

Arreglos(Arrays):Un arreglo (array) es una colección de datos del mismo tipo, quese almacenan en posiciones consecutivas de memoria y reciben unnombre común. Para referirse a un determinado elemento de unarray se deberá utilizar un índice, que especifique su posiciónrelativa 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

6

Page 7: Ape unidad4

4.1. Arreglo unidimensional

Los arreglos se clasifican de acuerdo con el número de dimensiones quetienen. 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

7

Page 8: Ape unidad4

4.1. Arreglo unidimensional

Arreglos Unidimensionales:Están formados por un conjunto de elementos de unmismo tipo de datos que se almacenan bajo un mismonombre, y se diferencian por la posición que tienecada elemento dentro del arreglo de datos. Aldeclarar un arreglo, se debe inicializar sus elementosantes de utilizarlos. Para declarar un arreglo tiene queindicar su tipo, un nombre único y la cantidad deelementos que va a contener.

Entero Calificaciones[0…99]

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

8

Page 9: Ape unidad4

4.1. Arreglo unidimensional

Para acceder a valores específicosdel arreglo, use un valor de índiceque apunte al elemento deseado.Por ejemplo, para acceder alprimer elemento del arreglocalificaciones debe utilizar elvalor de índice 0(calificaciones[0]). Los programasen C++ siempre indizan el primerelemento de un arreglo con 0 y elúltimo con un valor n -1al tamañodel arreglo.

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

9

Page 10: Ape unidad4

4.1. Arreglo unidimensional

Inicialización y asignación de valoresComo se decía anteriormente, antes de utilizar un arreglo esnecesario inicializarlo: Calificaciones[0];

Para inicializar todos los elementos de una vez, es necesarioasignar un valor a un elemento del arreglo se hace porejemplo: Calificaciones[0] =100;

Cuando se usan arreglos, una operación común es usar unavariable índice para acceder a los elementos de un arreglo.Suponiendo que la variable índice I contiene el valor 3, lasiguiente instrucción asigna el valor 400 a valores[3]:valores[I] = 400;

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

10

Page 11: Ape unidad4

4.1. Arreglo unidimensional

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

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

11

Page 12: Ape unidad4

4.1. Arreglo unidimensional

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/ escrituraAsignaciónActualización(inserción, eliminación, modificación)Recorrido (acceso secuencial)OrdenaciónBúsqueda

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

12

Page 13: Ape unidad4

4.1. Arreglo unidimensional

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

13

Page 14: Ape unidad4

4.1. Arreglo unidimensional

Lectura

El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada unode sus elementos. Normalmente se realizan con estructuras repetitivas, aunquepueden usarse estructuras selectivas. Usamos los índices para recorrer los elementosdel 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, loescribimos.

leer (N)

desde i = 1 hasta N hacer

escribir (arre[i])

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

14

Page 15: Ape unidad4

4.1. Arreglo unidimensional

Asignación: No es posible asignar directamente un valor a todo el arreglo; sino que se debe asignar elvalor deseado en cada componente. Con una estructura repetitiva se puede asignar un valor a todos loselementos 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_desdeM. en C. Sandra Luz Morales Güitrón

15

Page 16: Ape unidad4

4.1. Arreglo unidimensional

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óngeneral sobre todos los elementos de ese vector.

Actualización.Incluye añadir (insertar), borrar o modificar algunos de los ya existentes. Se debetener en cuenta si el arreglo está o no ordenado. Añadir datos a un vector consisteen agregar un nuevo elemento al final del vector, siempre que haya espacio enmemoria.

Investigue cómo insertar o eliminar elementos en un arreglo:a) Ordenado

b) No ordenado

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

16

Page 17: Ape unidad4

4.2. Arreglos de más dimensiones.

Arreglo Bidimensional:Es un conjunto de datos homogéneo, finito y ordenado, donde se hacereferencia a cada elemento por medio de dos índices. El primero seutiliza para los renglones (filas) y el segundo para las columnas.También puede definirse como un arreglo de arreglos. Internamente enmemoria se reservan MxN posiciones consecutivas para almacenartodos los elementos del arreglo.

Declaración de una matríz:

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

17

Page 18: Ape unidad4

4.2. Arreglos de más dimensiones.

Por ejemplo un arreglo de MxN (4x5) , tiene 4 renglones y 5 columnas, esdecir, cada renglón se divide en 5 columnas, como se muestra acontinuación:

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

18

COLUMNA 1 2 3 4 5

RENGLÓN 1

(1,1) (1,2) (1,3) (1,4) (1,5)

RENGLÓN 2

(2,1) (2,2) (2,3) (2,4) (2,5)

RENGLÓN 3

(3,1) (3,2) (3,3) (3,4) (3,5)

RENGLÓN 4

(4,1) (4,2) (4,3) (4,4) (4,5)

Para relacionar cada elementoindividual de una matriz se usan dossubíndices; el primero indica elrenglón y el segundo la columna.

Page 19: Ape unidad4

4.2. Arreglos de más dimensiones.

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

19

Page 20: Ape unidad4

4.2. Arreglos de más dimensiones.

Arreglos Multidimensionales (Poliedros):Son arreglos de tres o más dimensiones. También se les denominapoliedros. Este tipo de arreglos no son de uso frecuente, no obstante sonuna 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úmeromá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

20

Page 21: Ape unidad4

4.2. Arreglos de más dimensiones.

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

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

21

Renglón

Columna

Capa 1

Capa 3Capa 2

Page 22: Ape unidad4

4.3. Diferencia entre acceso dememoria dinámica y estática.

Datos estáticos: Su tamaño y forma es constante durante laejecución de un programa y por tanto se determinan entiempo de compilación. El ejemplo: típico son los arrays. Tienenel problema de que hay que dimensionar la estructura deantemano, lo que puede conllevar desperdicio o falta dememoria.Datos dinámicos: su tamaño y forma es variable (o puede serlo) a lo largo de un programa, por lo que se crean ydestruyen en tiempo de ejecución. Esto permite dimensionar laestructura de datos de una forma precisa: se va asignandomemoria en tiempo de ejecución según se va necesitando.

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

22

Page 23: Ape unidad4

4.3. Diferencia entre acceso dememoria dinámica y estática.

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

23

Entero, Real, Carácter, Lógico

Datos SimplesHacen referencia a un único valor a la vez en memoria

Datos EstructuradosSe refieren a un grupo de casillas de memoria

Estáticos

Dinámicos

Arreglos, Registros, Archivos, Cadenas

Listas, Arboles, Grafos

Page 24: Ape unidad4

4.3. Diferencia entre acceso dememoria dinámica y estática.

Cuando el sistema operativo carga un programa para ejecutarlo y loconvierte 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 laque va a contener los datos dinámicos, la cual, a su vez, en cada instantede la ejecución tendrá partes asignadas a los mismos y partes libres quefragmentarán esta zona, siendo posible que se agote sino se liberan laspartes utilizadas ya inservibles. (La pila también varía su tamaño odiná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 lamemoria 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 (yaque con los tipos vistos hasta ahora sólo podemos acceder a datos con untamaño y forma ya determinados).

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

24

Page 25: Ape unidad4

4.3. Diferencia entre acceso dememoria dinámica y estática.

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

25

Page 26: Ape unidad4

4.3. Diferencia entre acceso dememoria dinámica y estática.

Implementación

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

26

Para implementar alguna estructura de datos, primero esnecesario tener muy claro cómo va a ser el manejo dememoria.La diferencia entre estructuras estáticas y dinámicas es elmanejo de memoria.

EstáticaDurante la ejecución del programa el tamaño de la estructura no cambia

DinámicaDurante la ejecución del programa el tamaño de la estructura puede cambiar

Page 27: Ape unidad4

4.4. Tipos Estructurados.

Tipos estructurados o registros:Definidos por el programador partir de otros tipos escalareso compuestos.Conjunto de datos conceptualmente relacionados.Cada dato del conjunto puede ser de un tipo distinto.

REGISTERCampo1Campo 2…

END_REGISTER

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

27

Page 28: Ape unidad4

4.4. Tipos Estructurados.

Semántica:Campo: cada objeto de un tipo estructurado, es unavariable de un cierto tipo (escalar o compuesta)Para acceder a los campos de un registro:

<variable_estructurada>.<nombre_campo>Persona= REGISTERCadena: Nombre, ApellidoP, ApellidoMCarácter: sexo, edo_civil.Entero: num_id, edad.END_REGISTER

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

28

Page 29: Ape unidad4

4.4. Tipos Estructurados.

Declaración de variables.Persona p;

Acceso a los campos. p.Nombrep.sexop.edad…

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

29

num_id Nombre ApellidoP ApellidoM sexo edo_civil edad

Variable de tipo cadena

Variable de tipo carácter

Variable de tipo numérico (entero)

Page 30: Ape unidad4

4.4. Tipos Estructurados.

Asignaciónp.Nombre = “Esteban”p.sexo = “M”p.edad= “25”

LecturaVar1= p.NombreVar2= p.sexoVar3= p.edad

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

30

num_id Nombre ApellidoP ApellidoM sexo edo_civil edad

1 Esteban Sánchez Garcia M S 25

num_id Nombre ApellidoP ApellidoM sexo edo_civil edad

1 Esteban Sánchez Garcia M S 25

Esteban M 25

Var1 Var2 Var3