Upload
angelita-acosta
View
14
Download
1
Embed Size (px)
Citation preview
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Es una estructura de datos formada por una cantidad fija de datos de un mismo tipo, cada uno de los cuales tiene asociado uno o más índices que determinan de forma unívoca la posición del dato en el arreglo.
Arreglo
Tipos de Arreglo
Unidimensionales (Vectores)Multidimensionales (Matrices)
(Prieto y Otros;2002:39)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
DeclaraciónConstantes Tamaño = 3Tipos TipNotas = Arreglo[Tamaño] de RealVariables Nota: TipNotas
Arreglo Unidimensional (Declaración)
Nota
Nomb_Variab: Arreglo[Tamaño] de Tipo dato
Ejemplo:
Nota: Arreglo[3] de Real
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Arreglo Unidimensional (Acceso)
Nombre_Variable[Posición]
Sexo: Carácter
Nota1
Edad: Entero
Relación Memoria-Variables
Arreglo Unidimensional (Representación)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Inicialización
Lectura
Escritura
Búsqueda
(Joyanes, 1998:341)
Operaciones Básicas Sobre Arreglos
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Para indice = 0 hasta tama-1 inc 1
ArreNombres[índice] ” ”
Fin Para
Ejemplo: Limpieza de un arreglo que guardará 6 nombres
1 2 3 4 5 6
ArreNombres
Arreglo Unidimensional (Inicialización)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Para indice = 0 hasta tama-1 inc 1
Escribir “Introduzca el nombre de la persona #:”, índice
Leer ArreNombres[índice]
Fin Para
Ejemplo: Llenado de un arreglo de 6 nombres de persona
1 2 3 4 5 6
ArreNombres
Arreglo Unidimensional (Lectura)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Para indice = 0 hasta tama-1 inc 1
Escribir “Nombre de la persona # ”, indice, “:”, ArreNombres[indice]
Fin Para
Ejemplo: Mostrar el contenido del arreglo de nombres
Arreglo Unidimensional (Escritura)
1 2 3 4 5 6
ArreNombres
Juan Pedro María Jesús José Clara
Nombre de la persona # 2: Pedro
Nombre de la persona # 1: Juan
Nombre de la persona # 3: María
Nombre de la persona # 4: Jesús
Nombre de la persona # 5: José
Nombre de la persona # 6: Clara
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Escribir “Introduzca el nombre a consultar:”
Leer Buscado
Encontro Falso, indice 0
Mientras (indice < = tama-1 Y Encontro = Falso) Hacer
Si ArreNombres[indice] = Buscado Entonces
Encontro Verdadero
Escribir “El nombre buscado ocupa la posición # “, indice
Fin Si
indice indice + 1
Fin Mientras
Si Encontro = Falso Entonces
Escribir “El nombre buscado no existe en el arreglo”
Fin Si
Ejemplo: Buscar un nombre en el arreglo de nombres
Arreglo Unidimensional (Búsqueda)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
(Codificación en Dev C++)
DeclaraciónLimpiezaLecturaEscrituraBúsqueda *
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
Ejercicios propuestos:
1.- Se requieren almacenar las respuestas a 3 preguntas que dieron 100 personas
encuestadas. ¿Qué estructuras utilizaría, dibújelas y declárelas?
2.- Se desea almacenar una serie de 50 números enteros, a fin de procesarlos para
hallar la media y determinar cuántos pares e impares. Haga el pseudocódigo que
contemple la declaración, limpieza, llenado y cálculos requeridos, utilice módulos.
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
RESPONDIENDO EJERCICIO PROPUESTO #1
1.- Se requieren almacenar las respuestas a 3 preguntas que dieron 100 personas
encuestadas. ¿Qué estructuras utilizaría, dibújelas y declárelas?
0 1 2 3 … 99Declaración
Constantes
tama = 100
Tipos
Tipresp=Arreglo[tama] de Cadena
Variables
pregunta1, pregunta2,pregunta3:Tipresp
0 1 2 3 … 99
0 1 2 3 … 99
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
RESPONDIENDO EJERCICIO PROPUESTO #2
2.- Se desea almacenar una serie de 50 números enteros, a fin de procesarlos para hallar la media y determinar cuántos pares e impares. Haga el pseudocódigo que contemple la declaración, limpieza, llenado y cálculos requeridos, utilice módulos.
0 1 2 … 49Algoritmo Procesa SeriesDeclaraciónConstantes tama= 50Tipos tiposerie=arreglo [tama] de enteroVariables serie:tiposerie i: enteroInicio escribir “Este algoritmo procesa una serie de “,tama, “ números enteros” llamar limpiar(serie) llamar llenar(serie) llamar calculos(serie)Fin
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
Procedimiento llenar ( serie: tiposerie)Inicio escribir “a continuación se solicitará cada número de la serie” escribir “se trata de “, tama, “ elementos” para i = 0 hasta tama-1 inc 1 escribir “Ingrese elemento # “, i+1 leer serie[i] fin paraFin Procedimiento
Procedimiento limpiar ( serie: tiposerie)Inicio para i = 0 hasta tama-1 inc 1 serie[i] 0 fin paraFin Procedimiento
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
Procedimiento calculos( serie: tiposerie)DeclaraciónVariables suma, contpar, contimpar: entero media: realInicio suma0, contpar0, contimpar0 para i= 0 hasta tama-1 inc 1 suma suma + serie[i] si ( (-1)^serie[i] >0) entonces contpar contpar +1 sino contimpar contimpar +1 fin si fin para
media suma / tama
escribir” La media calculada es “, media
escribir “Total de Pares: “, contpar
escribir “ total de impares “, contimpar
Fin
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
Ejemplo con varios vectores paralelos. Calculando promedio de notas y buscando la nota menor.
arrenotas
arrenombres
arrecedula0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
Ejemplo con varios vectores paralelos. Verificar si 2 vectores son iguales,
similares o diferentes.
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
2 8 9 6 4
4 6 8 9 2
4 6 8 9 2
Son similares, dado que poseen los mismos
elementos, sin importar su ubicación
4 6 8 9 2
Son iguales, dado que poseen los mismos elementos,
en la misma ubicación
Son diferentes, dado que no poseen exactamente los
mismos elementos.
4 6 8 9 2
8 6 3 9 2
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
Ejemplo con varios vectores paralelos. Verificar si 2 vectores son iguales,
similares o diferentes.
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
Ordenamiento de arreglos por el método de la burbuja
Procedimiento burbuja ( vector: tipvector)DeclaraciónVariables aux, i, j: enteroInicio para i = 0 hasta tama-2 inc 1 para j = 0 hasta tama – 1- i inc 1 si ( vector[ j ] > vector [ j+1] ) entonces aux vector[ j +1] vector[ j +1] vector[ j ] vector[ j ] aux fin si fin para fin paraFin procedimiento
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
I = 0 I = 1
J=0 J=1 J=2 J=3
23
19
45
31
15
19
23
45
31
15
19
23
45
31
15
19
23
31
45
15
J=0 J=1 J=2
19
23
31
15
45
19
23
31
15
45
19
23
31
15
45
19
23
15
31
45
23 19 45 31 15Lista a ordenar
Demostración del Método de Ordenamiento Burbuja
Tama =5
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
19
23
15
31
45
I = 2 I = 3
J=0 J=1
19
23
15
31
45
19
23
15
31
45
19
15
23
31
45
J=0
15
19
23
31
45
Demostración del Método de Ordenamiento Burbuja
Lista
Ordenada
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
23
19
45
31
15
i=423
19
15
31
45
2
J=4
23
19
15
31
45
i=315
19
23
31
45
Posición del mayor
elemento Intercambio
23
19
15
31
45
3
23
19
15
31
45
i=2
0
Demostración del Método de Ordenamiento Selección
23 19 45 31 15Lista a ordenar
Tama =5
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
15
19
23
31
45
15
19
23
31
45
i=11 15
19
23
31
45
ListaOrdenada
Demostración del Método de Ordenamiento Selección
Posición del mayor
elemento Intercambio
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
Asignación: Investigue los algoritmos de ordenamiento por selección y inserción. Haga una corrida en frío, a fin de
comprenderlos.
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Es un arreglo con dos dimensiones (filas y columnas).
23 14
10 51
13 18
7
0
1
2
3
4
5
6
0 1 2 3 4 Matriz de 7 filas y 5 columnas
Posición Elemento
Matriz[1,0] 23
Matriz[1,2] 14
Matriz[2,1] 10
Matriz[2,4] 51
(Joyanes, 1998:352)
Arreglo Bidimensional
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
NombreVariable[Númerofila,Númerocolumna]
Arreglo Bidimensional (Acceso)
0
1
2
3
0 1
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Se puede asociar cada dimensión con un elemento particular a representar. Ejemplo:
0
1
2
3
0 1
Se requieren almacenar los puntajes obtenidos por cada uno de los cuatro participantes de un concurso, en dos evaluaciones realizadas.
(Joyanes, 1998:352)
Arreglo Bidimensional
Evaluaciones
Participantes
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Nomb_Variab: Arreglo[Cantidad de filas, Cantidad de columnas] de Tipo dato
Arreglo Bidimensional (Declaración)
Ejemplo:
Tipo
Tipunto = Arreglo[4, 2] de Real
Variable
Matpuntos: Tipunto
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Bidimensional
PLANTEAMIENTO: Dada una matriz cuadrada 4x4, haga el
algoritmo que verifique si ésta es simétrica. Una matriz es
simétrica si tiene por ejemplo la siguiente estructura:
a b c d
b e f g
c f h i
d g i j
0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3
RELACIÓN CONTENIDO vs. POSICIONES DE LA MATRIZ
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Bidimensional
Algoritmo estudia simetría
Declaración
Tipos
tipmatriz = Arreglo[4,4,] de caracter
Variables
M: tipmatriz
i, j: entero
Inicio
llamar limpiar(M)
llamar llenar(M)
si (Simétrica(M) = verdadero) entonces
escribir “La matriz es Simétrica”
sino
escribir “La matriz no es simétrica”
fin si
Fin
Procedimiento limpiar (M: tipmat)
Inicio
para i =0 hasta 3 hacer inc 1
para j =0 hasta 3 hacer inc 1
M[i,j] ´ ´
fin para
fin para
Fin procedimientoProcedimiento llenar (M: tipmat)
Inicio
para i =0 hasta 3 hacer inc 1
para j =0 hasta 3 hacer inc 1
escribir “ingrese valor para la posición “ , i, j
leer M[i,j]
fin para
fin para
Fin procedimiento
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Bidimensional
a b c d
b e f g
c f h i
d g i j
0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,2
3,0 3,1 3,2 3,3
Función Simétrica ( M: tipmatriz): Lógico
Declaración
Variables
resultado: lógico
i, j: entero
Inicio
resultado verdadero
para i =0 hasta 3 hacer inc 1
para j =0 hasta 3 hacer inc 1
si M[i,j] <> M[j,i] entonces
resultado falso
fin si
fin para
fin para
Simétrica resultado
Fin función
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
PLANTEAMIENTO: Diseñe una estructura de datos para
almacenar el nombre de cada estudiante de Introducción a la
Informática (35 alumnos), y la nota obtenida en cada uno de los
3 parciales presentados. Igualmente señale cómo se realizan los
procesos de:
Carga de datos en la estructura.
Cálculo del promedio de notas por parcial.
Representación de Datos en Arreglos
Tarea
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Diseño de las estructuras de datos requeridas.
Representación de Datos en Arreglos
0 1 2
Parciales
0
1
2
:
34Estudiantes
0
1
2
:
34
VectorNombres MatrizNotas
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Algoritmo DatosEstudiantes
Declaración
Constantes
numfil=35, numcol =3
Tipos
Tipvec= Arreglo[numfil] de cadena
Tipmat = Arreglo[numfil,numcol] de real
Variables
VectorNombres:Tipvec
MatrizNotas: Tipmat
Filas, Columnas: Entero
Inicio
Escribir “Algoritmo para el tratamiento de nombres y notas de alumnos”
Llamar Limpiar(VectorNombres, MatrizNotas)
Llamar Llenar(VectorNombres, MatrizNotas)
Llamar Promparc(MarizNotas)
Fin
Arreglo Bidimensional (Resolviendo el problema)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Procedimiento Limpiar( VectorNombres:Tipvec, MatrizNotas: Tipmat)
Inicio
Para Filas = 0 Hasta numfil-1 inc 1
VectorNombres[Filas] ””
Para Columnas = 0 Hasta numcol-1 inc 1
MatrizNotas[Filas, Columnas] 0
Fin Para
Fin Para
Fin Procedimiento
Arreglo Bidimensional (Limpiar)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Proceso para el llenado de las estructuras
Representación de Datos en Arreglos
0 1 2
Parciales
0
1
2
:
34Estudiantes
0
1
2
:
34
VectorNombres
Inés
Juan
Marcos
Pati
Ivón
9 7 4
9
9.2
9
10
3.3
6
7.5
5 2
7
3
1
MatrizNotas
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Por Filas
Inicio
Fin
0
1
2
3
34
0 1 2
Arreglo Bidimensional (Recorrer por Filas)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Procedimiento Llenar( VectorNombres:Tipvec, MatrizNotas: Tipmat)
Inicio
Escribir “Ingrese los siguientes datos:”
Para Filas = 0 Hasta numfil-1 inc 1
Escribir “Nombre del estudiante # ”, Filas+1
Leer VectorNombres[Filas]
Para Columnas = 0 Hasta numcol-1 inc 1
Escribir “Nota del Parcial # ”, Columnas+1
Leer MatrizNotas[Filas, Columnas]
Fin Para
Fin Para
Fin Procedimiento
Arreglo Bidimensional (Llenar)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Proceso para calcular promedio de notas por parcial
Representación de Datos en Arreglos
0 1 2
0
1
2
:
34
9 7 4
9
9.2
9
10
3.3
6
7.5
5 2
7
3
1MatrizNotas
= 46.2 / 35 = 1.32= 28.83 / 35 = 0.82= 17 / 35 = 0.48
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Por ColumnasInicio
Fin
0
1
2
3
4
0 1 2
Arreglo Bidimensional (Recorrer por Columnas)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Procedimiento PromParc( MatrizNotas: Tipmat)DeclaraciónVariables SumaParcial,Prom: Real Inicio Para Columnas = 0 Hasta numcol -1 inc 1 SumaParcial 0 Para Filas = 0 Hasta numfil-1 inc 1 SumaParcial SumaParcial + MatrizNotas[Filas, Columnas] Fin Para Prom SumaParcial / numfil Escribir “Promedio de Notas en el Parcial # “, Columnas, “=“, Prom Fin ParaFin Procedimiento
Arreglo Bidimensional (Calcular por Columna)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
CODIFICACIÓN EN DEV C++
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglo Unidimensional
1. Se desean almacenar por cada sucursal (Juan Griego, Porlamar y Tacarigua) de la empresa el TRio C.A., los montos de venta en cada uno de sus 3 departamentos, durante los días 24, 25 y 26 de mayo. Una vez almacenados estos datos, se debe presentar el nombre de la sucursal que obtuvo mayor monto de ventas durante los días mencionados; aparte, se debe indicar el número del día en el que se obtuvo el mayor monto de ventas, involucrando para ello a todas las sucursales.
2. Los resultados de una prueba escrita se encuentran registrados en una matriz 4x10, donde las filas representan los alumnos que presentaron la evaluación, y las columnas, representan los ítems evaluados. Las respuestas constan de un valor numérico comprendido entre 0 y 10. Haga un módulo que reciba como parámetros de entrada, la matriz de resultados y el vector de respuestas oficiales, en el que se tiene por cada pregunta, el valor de la respuesta correcta.
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Arreglos.
Registros.
Archivos.
Contenido
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Es una colección de elementos posiblemente heterogéneos que son tratados como una unidad.
Ejemplo: Ficha Estudiantil
Cédula:
Nombre:
Apellido:
Edad:
Sexo:
Registro
(Rose,1993:17)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Ejemplo: Ficha Estudiantil
Nombre Apellido Edad Sexo Cédula
(Joyanes,1998:516)
Un registro está constituido por uno o más campos. Un campo equivale a un valor o ítem que se desea representar. Cada campo se identifica con un nombre. Cada campo es de un tipo de dato simple o estructurado.
Estructura de un Registro
Registro ”X”
Campo1 Campo2 Campo3 Campo4 CampoN
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Declaración Tipos Nombre_Tipo = Registro Campo1: Tipo de dato
Campo2: Tipo de dato Campo3: Tipo de dato CampoN: Tipo de dato
Fin RegistroVariables NombreVariable: Nombre_Tipo
Declaración de un Registro
typedef struct Nombre_Tipo { tipo de dato Campo1; tipo de dato Campo2; tipo de dato Campon;}; Nombre_Tipo NombreVariable;
Declaración Tipos Nombre_Tipo = Registro Campo1: Tipo de dato Campo2: Tipo de dato
Campo3: Tipo de dato CampoN: Tipo de dato
Fin RegistroVariables NombreVariable: Nombre_Tipo
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Ficha Estudiantil
Nombre Apellido Edad Sexo Cédula
Tipos Regiestud = Registro Nombre, Apellido: Cadena
Edad: Entero
Sexo: Carácter
Cedula: Cadena
Fin RegistroVariables Fichaestu: Regiestud
Ejemplo de Declaración de un Registro
typedef struct Regiestud{ string Nombre, Apellido;
int Edad;
char Sexo;
string Cedula;
}; Regiestud Fichaestu;
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
NombreVariable.NombreCampo
(Joyanes,1998:518)
Se puede acceder a cada campo de un registro directamente utilizando un selector de campo de la forma:
Acceso a un Registro
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Empleado
Nombre Dirección Completa
F_Nacim
Día Mes AñoDirección Municipio
Registro Jerárquico
Un registro con uno o más campos de tipo registro se
llama registro jerárquico o anidado.
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Empleado = Registro de Nombre: Cadena DirCompleta: Tipdircomp F_Nacim: Tipfecha Fin Registro
Registro Jerárquico (Declaración)
Declaración
Reg: Empleado Acceso
Reg.Nombre
Reg.DirCompleta.Dirección
Reg.DirCompleta.Municipio
Reg.F_Nacim.Día
Tipdircomp = Registro de Dirección: Cadena Municipio: Cadena Fin Registro
Tipfecha = Registro de Día, Mes, Año: Entero Fin Registro
typedef struct Empleado{ string Nombre; Tipdircomp DirCompleta; Tipfecha F_Nacim;};
typedef struct Tipdircomp{ string Dirección,Municipio;};
typedef struct Tipfecha { int Dia, Mes, Anio;};
Empleado Reg;
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Los registros raramente se usan solos. En general, se
utilizan en conjunto con otras estructuras tales como:
Arreglos y Archivos.
(Joyanes,1998:534)
Uso de Registros en Otras Estructuras
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Arreglos.
Registros.
Archivos.
Contenido
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Un archivo es una colección de información que reside
como una unidad en la memoria secundaria del
computador.
(Joyanes,1998:565)
Archivos
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Archivos de Texto.
Archivos Tipificados o Binarios.
(Joyanes,1998:567)
Tipos de Archivos Según la Estructura de su Información
NOManzanilloPedro Parra44444444
SÍGuatamareKarla Paz33333333
SÍPorlamarLuisa Maneiro66666666
NOJuan GriegoPedro Azócar55555555
SÍAltagraciaJuan Pérez11111111
SeguroDirecciónNombreCédula0
1
2
3
4
Por ejemplo este archivo tiene 5 registros cuyos campos son Cédula, Nombre, Dirección, Seguro
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
(Joyanes,1998:567)
Operaciones sobre Archivos (Declarar)
Algoritmo OperarArchivosDeclaraciónTipos Tipreg = Registro de Nombre, Cédula, Dirección, Seguro: Cadena Fin Registro Tiparch= Archivo de Tipreg Variables Miarchi: Tiparch
Además de declarar la variable tipo archivo, se deben aplicar operaciones especiales para vincular la variable con el objeto
que se almacenará en memoria secundaria (Conectar y Crear).
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
(Joyanes,1998:567)
Operaciones sobre Archivos (Conectar)
Algoritmo OperarArchivosDeclaraciónTipos Tipreg = Registro de Nombre, Cédula, Dirección, Seguro: Cadena Fin Registro Tiparch= Archivo de Tipreg Variables Miarchi: Tiparch Inicio
Conectar Miarchi con Nombre.dat
Es la variable, también se le llama archivo
lógico
Es el nombre del archivo almacenado, se le llama archivo físico
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
(Joyanes,1998:567)
Operaciones sobre Archivos (Crear)
Algoritmo OperarArchivosDeclaraciónTipos Tipreg = Registro de Nombre, Cédula, Dirección, Seguro: Cadena Fin Registro Tiparch= Archivo de Tipreg Variables Miarchi: Tiparch existe: LógicoInicio Conectar Miarchi con Nombre.dat existe BuscaArchivo(Miarchi) Si (existe = falso) entonces
Crear Miarchi Fin si
Función que verifica en memoria secundaria si el archivo físico existe
Crea un objeto almacenado en memoria secundaria, tendrá como nombre el
indicado en la conexión (.dat)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
(Joyanes,1998:567)
Operaciones sobre Archivos (Manipular)
Algoritmo OperarArchivosDeclaraciónTipos Tipreg = Registro de Nombre, Cédula, Dirección, Seguro: Cadena Fin Registro Tiparch= Archivo de Tipreg Variables Miarchi: Tiparch existe: LógicoInicio Conectar Miarchi con Nombre.dat existe BuscaArchivo(Miarchi) Si (existe = falso) entonces Crear Miarchi Fin si Llamar InsertarRegistros(Miarchi) Llamar MostrarRegistros(Miarchi) Llamar BuscarRegistros(Miarchi)Fin
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
(Joyanes,1998:567)
Operaciones sobre Archivos (Manipular)
Algoritmo OperarArchivosDeclaraciónTipos Tipreg = Registro de Nombre, Cédula, Dirección, Seguro: Cadena Fin Registro Tiparch= Archivo de Tipreg Variables Miarchi: Tiparch existe: LógicoInicio Conectar Miarchi con Nombre.dat existe BuscaArchivo(Miarchi) Si (existe = falso) entonces Crear Miarchi Fin si Llamar InsertarRegistros(Miarchi) Llamar MostrarRegistros(Miarchi) Llamar BuscarRegistros(Miarchi)Fin
Procedimiento InsertarRegistros( Miarchi:Tiparch)
Declaración
Variables
reg: Tipreg
ultimapos: entero
otroreg:caracter
Inicio
Abrir Miarchi
ultimapos tamaño(Miarchi)
Llamar Encontrar(ultimapos, Miarchi)
Repetir
Llamar Limpiar(reg)
Llamar Llenar(reg)
Grabar reg en Miarchi
Escribir “Quiere insertar otro registro s/n”
Leer otroreg
Hasta (otroreg =´n´)
Cerrar MIarchi
Fin Procedimiento
Procedimiento InsertarRegistros( Miarchi:Tiparch)
Declaración
Variables
reg: Tipreg
ultimapos: entero
otroreg:caracter
Inicio
Abrir Miarchi
ultimapos tamaño(Miarchi)
Llamar Encontrar(ultimapos, Miarchi)
Repetir
Llamar Limpiar(reg)
Llamar Llenar(reg)
Grabar reg en Miarchi
Escribir “Quiere insertar otro registro s/n”
Leer otroreg
Hasta (otroreg =´n´)
Cerrar Miarchi
Fin Procedimiento
Procedimiento Limpiar( reg: Tipreg)
Inicio
reg.cedula””
reg.nombre””
reg.direccion””
reg.seguro””
Fin Procedimiento
Procedimiento Llenar( reg: Tipreg)
Inicio
escribir “INGRESE UN NUEVO REGISTRO DE PACIENTE”
escribir “Indique número de cédula”
leer reg.cedula
escribir “Indique el nombre”
leer reg.nombre
escribir “Indique la dirección”
leer reg.direccion
escribir “Indique tiene seguro si o no”
leer reg.seguro
Fin Procedimiento
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
(Joyanes,1998:567)
Operaciones sobre Archivos (Manipular)
Algoritmo OperarArchivosDeclaraciónTipos Tipreg = Registro de Nombre, Cédula, Dirección, Seguro: Cadena Fin Registro Tiparch= Archivo de Tipreg Variables Miarchi: Tiparch existe: LógicoInicio Conectar Miarchi con Nombre.dat existe BuscaArchivo(Miarchi) Si (existe = falso) entonces Crear Miarchi Fin si Llamar InsertarRegistros(Miarchi) Llamar MostrarRegistros(Miarchi) Llamar BuscarRegistros(Miarchi)Fin
Procedimiento MostrarRegistros( Miarchi:Tiparch)
Declaración
Variables
reg: Tipreg
i: entero
Inicio
Abrir Miarchi
i 1
Mientras (fda(Miarchi) = falso) hacer
leer reg de Miarchi
escribir “Registro de paciente # ” i
escribir “Nombre: “, reg.nombre
escribir “´Cédula: “, reg.cedula
escribir “Dirección: “, reg.dirección
escribir “Tiene Seguro “, reg.seguro
ii +1
Fin Mientras
Cerrar Miarchi
Fin Procedimiento
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
(Joyanes,1998:567)
Operaciones sobre Archivos (Manipular)
Algoritmo OperarArchivosDeclaraciónTipos Tipreg = Registro de Nombre, Cédula, Dirección, Seguro: Cadena Fin Registro Tiparch= Archivo de Tipreg Variables Miarchi: Tiparch existe: LógicoInicio Conectar Miarchi con Nombre.dat existe BuscaArchivo(Miarchi) Si (existe = falso) entonces Crear Miarchi Fin si Llamar InsertarRegistros(Miarchi) Llamar MostrarRegistros(Miarchi) Llamar BuscarRegistros(Miarchi)Fin
Procedimiento BuscarRegistros( Miarchi:Tiparch)
Declaración
Variables
reg: Tipreg
buscado: cadena
fin: lógico
Inicio
Abrir Miarchi
escribir “Ingrese número de cédula del paciente a buscar”
leer buscado
fin falso
Mientras ( (fda(Miarchi) = falso) Y (fin = falso) ) hacer
leer reg de Miarchi
si ( reg.cedula = buscado ) entonces
escribir “Registro de paciente encontrado”
escribir “Nombre: “, reg.nombre
escribir “Dirección: “, reg.dirección
escribir “Tiene Seguro “, reg.seguro
fin verdadero
fin si
Fin Mientras
Cerrar Miarchi
Fin Procedimiento
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
NOManzanilloPedro Parra44444444
SÍGuatamareKarla Paz33333333
SÍPorlamarLuisa Maneiro66666666
NOJuan GriegoPedro Azócar55555555
SÍAltagraciaJuan Pérez11111111
SeguroDirecciónNombreCédula
Llamar Encontrar (2, Miarchi)
0
1
2
3
4
Llamar Encontrar(Total_Regis - 1, Miarchi)
Llamar Encontrar(Total_Regis, Miarchi)
Total_Regis Tamaño(Miarchi)
Funciones y Procedimientos Básicos para el Tratamiento de Archivos con Organización Secuencial y Acceso Directo
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Pseudocódigo Dev C
CONECTAR archi Con cd.dat
CREAR archi
ABRIR archi archi=fopen("promoto.dat",“w");
archi=fopen(“cd.dat",“modo”);
archi=fopen("promoto.dat",“r");
archi=fopen("promoto.dat",“a+");
Archivos
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Pseudocódigo Dev C
LEER reg de archi
Grabar reg en archi
fread(®,sizeof(reg),1,archi);
fwrite(®,sizeof(reg),1,archi);
POSICIÓN(archi)
fseek(archi,0l, SEEK_END);Encontrar (posi, archi)
fclose(archi)Cerrar archi
fgetpos(archi,&posi);
fsetpos(archi,&posi);
feof(archi)FDA(Archi)
posi tamaño(archi)
Archivos
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Codificación en DevC
Archivos
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Elabore un algoritmo en pseudocódigo que realice la creación del archivo (Promotor.Dat) para mantener información de los promotores de ventas de la empresa Cicle C.A.. En éste se almacenará: número de cédula, monto de ventas, sexo y comisión ganada por cada promotor.
Para ello, siga los pasos expuestos en el tratamiento de archivos, ofreciendo módulos para ingresar y mostrar registros, así como un módulo que permita obtener en un archivo temporal Género.dat, los registros correspondientes a vendedoras.
Problema
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Operaciones sobre Archivos (Modificar)
Para modificar registros se debe, en términos generales, aplicar la siguiente lógica:
1.- Abrir archivo
2.- Localizar el registro a modificar (búsqueda)
3.- Obtener la posición del registro actual, a fin de calcular la posición anterior.
4.- Devolver el apuntador hacia la posición que ocupa el registro a modificar
5.- Pedir al usuario que ingrese los datos nuevos del registro
6.- Grabar el registro en el archivo
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Elabore un algoritmo en pseudocódigo que realice la creación del archivo (Promotor.Dat) para mantener información de los promotores de ventas de la empresa Cicle C.A.. En éste se almacenará: número de cédula, monto de ventas, sexo y comisión ganada por cada promotor.
Para ello, siga los pasos expuestos en el tratamiento de archivos, ofreciendo módulos para ingresar y mostrar registros, así como un módulo que permita obtener en un archivo temporal Género.dat, los registros correspondientes a vendedoras.
Amplíe el algoritmo para que permita modificar el registro de un promotor cuando su monto de venta exceda Bs. 500.000, incrementando en ese caso, su comisión en un 10%.
Problema
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Operaciones sobre Archivos Procedimiento Modificar ( Archi: TipArchi)DeclaraciónVariables Reg, nuevo: RegPromotor buscado, posi, sw: Entero Inicio Escribir “Ingrese el numero de cédula del registro a buscar para modificar” Leer buscado
Abrir Archi sw 0
Mientras ( FDA(Archi) = Falso Y sw= 0) Hacer Leer Reg de Archi Si (Reg.cedula = buscado) entonces sw 1 Escribir “El registro a modificar es:” Escribir “Sexo:” , Reg.sexo Escribir “Monto de Ventas:”, Reg.ventas Escribir “Monto por Comisiones:”, Reg.comisión Escribir”Introduzca el nuevo contenido del registro” Escribir “Sexo:” Leer Reg.sexo Escribir “Monto de Ventas:” Leer Reg.ventas Escribir “Monto por Comisiones:” Leer Reg.comisión *
* posi posicion(Archi) Llamar Encontrar(posi-1, Archi) Grabar Reg en Archi Escribir”Modificación OK” Fin Si Fin Mientras Si (sw = 0) entonces Escribir “No se encontro el registro buscado” Fin si Cerrar ArchiFin Procedimiento
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Arreglos.
Registros.
Archivos.
Arreglo de Registros
Contenido
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Los arreglos son estructuras homogéneas,
Los registros son estructuras heterogéneas.
Para Acceder a cada posición de un Arreglo se utiliza: Nombre_Variable[Posición]
Nombre_Variable[fila,columna]
Para Acceder a cada campo de un registro se utiliza: Nombre_Variable.Campo
Diferencias entre Arreglos y Registros
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
1 2 3 4 5 6Arreglo de Registros
Campoa | Campob | CampoNEn cada posición tiene
un registro
Arreglo de Registros
Nombre_Variable[Indice].NombreCampo
Acceso
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Diseñe una estructura para almacenar el nombre de cada estudiante de
Introducción a la Informática (35 alumnos), y la nota obtenida en cada uno
de los 3 parciales presentados.
Arreglo de Registros
1
2
3
:
35
VectorEstudiantes
Registro Estudiante
Nombre Notas
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Declaración
Tipos
Tipvecreg = Arreglo[35] de Regestudi
Regestudi = Registro de
Nombre: Cadena
Notas: Tipnota
Fin Registro
Tipnota = Arreglo[3] de Real
Variables
VectEstudi: Tipvecreg
Arreglo de Registros (Declaración)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Proceso para cargar los datos en la estructura.
Arreglo de Registros
1
2
3
:
35
VectorEstudiantes
7 6 9 Juan
Ivón 2 8 3
Rey
Gina
Luís
5 9 6
3 8 1
7 8 4
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Procedimiento Llenar( VecEstudi:Tipvecreg)
Declaración
Variables
indiestud, inota: Entero
Inicio
Escribir “Ingrese los siguientes datos para cada estudiante:”
Para indiestud = 1 Hasta 35 inc 1
Escribir “Nombre del estudiante # ”, indiestud
Leer VecEstudi[indestud].Nombre
Para inota = 1 Hasta 3 inc 1
Escribir “Nota obtenida en el Parcial # ”, inota
Leer VecEstudi[indiestud].Notas[inota]
Fin Para
Fin Para
Arreglo de Registros (Llenar)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Procedimiento Mostrar( VecEstudi:Tipvecreg)
Declaración
Variables
indiestud, inota: Entero
Inicio
Escribir “Datos de cada estudiante:”
Para indiestud = 1 Hasta 35 inc 1
Escribir “Estudiante # ”, indiestud
Escribir “NOMBRE: “, VecEstudi[indestud].Nombre
Para inota = 1 Hasta 3 inc 1 Escribir “Parcial # ”, inota, “Puntaje= “, VecEstudi[indiestud].Notas[inota]
Fin Para
Fin Para
Arreglo de Registros (Llenar)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Procedimiento CalculaProm( VecEstudi:Tipvecreg)DeclaraciónVariables indiestud, inota: Entero acum,prom: RealInicio Escribir “Cálculo de Promedio de cada estudiante:” Para indiestud = 1 Hasta 35 inc 1 Escribir “Estudiante # ”, indiestud Escribir “NOMBRE: “, VecEstudi[indestud].Nombre acum0, prom0 Para inota = 1 Hasta 3 inc 1 acum acum + VecEsctudi[indiestud].Notas[inota]
Fin Para prom acum/3 Escribir “El promedio de notas es:”, prom, “ptos.” Fin ParaFin Procedimiento
Arreglo de Registros (Llenar)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Procedimiento PromParcial( VecEstudi:Tipvecreg)DeclaraciónVariables indiestud, inota: Entero acum,prom: RealInicio Escribir “Cálculo de Promedio de cada Parcial:” Para indiestud = 1 Hasta 35 inc 1 acum0, prom0 Para inota = 1 Hasta 3 inc 1 acum acum + VecEsctudi[indiestud].Notas[inota]
Fin ParaFin ParaFin Procedimiento
Arreglo de Registros (Llenar)
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.
Proceso para cargar los datos en la estructura
Arreglo de Registros
1
2
3
:
35
VectorEstudiantes
7 6 9 Juan
Ivón 2 8 3
Rey
Gina
Luís
5 9 6
3 8 1
7 8 4
Suma
0 0 0 9 14 12 7 6 9 14 23 18 17 31 19 24 39 23
Algoritmos y Estructuras de Datos I (230-1214)
Unidad III. Introducción a las Estructuras de Datos Compuestas.Arreglos y Registros
Se requieren almacenar los datos de las facturas realizadas por una empresa durante 3 días, a sabiendas que la facturación se hace por sucursal. La empresa tiene 3 sucursales, de cada sucursal se requiere
Almacenar su nombre, dirección, teléfono y facturación en los días señalados. Por factura se requiere guardar: el número de la factura, el código, cantidad y precio en Bs. de cada artículo. Considere que una factura contiene espacio solo para 40 productos y que al día solo pueden hacer máximo 100 facturas.
Haga el dibujo de la estructura de datos que permita almacenar lo señalado.