Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Junio de 2010
Lista de Listas
Perodo
1-2010
Contenido
1
Lista de Listas
Perodo
1-2010
Qu es una Lista de Listas?
Se entiende por una lista de datos a la organizacin o representacin de los datos segn uno o
ms criterios. Una lista simple es, entonces, aquella representacin que tiene un solo criterio de
organizacin.
Por ejemplo: la informacin de los estudiantes de una seccin, donde para cada estudiante se
tiene CI, Nombre, Tres Notas y el Promedio de las tres notas. Al representar esta informacin en
un archivo de datos generalmente, la informacin de un estudiante se coloca en un registro del
archivo, una lnea del archivo. Resultando todos los registros con la misma estructura.
1 0 8 5 6 5 9 8 , L i s s e t M a r t i n e z , 1 0 , 1 5 , 1 4 , 1 3 .0 0
1 4 5 8 9 2 5 6 , M a r i a M o n t e s , 1 4 ,1 8 , 1 8 , 1 6 .6 7
Una lista compuesta [lista de listas], es un conjunto de datos organizados segn dos o ms
criterios, es decir, que se tiene una lista de listas simples. De tal manera que al representar la
informacin en un archivo una lista contina a la otra.
Por ejemplo: una lista de listas con dos criterios de organizacin, es la informacin de los
estudiantes de una asignatura organizados por seccin. Es decir, se tiene varias secciones cada una
con un conjunto de estudiantes. En este caso se mantiene la informacin que se maneja, es decir
que cada lista tiene una estructura de datos igual a la siguiente o a la anterior.
2
Lista de Listas
Perodo
1-2010
0 1 , 1 0 8 5 6 5 9 8 , L i s s e t M a r t i n e z ,1 0 , 1 5 , 1 4 , 1 3 .0 0 01
02, : : : : : : : : : : : :
1 4 4 8 7 9 5 6 , M a r i a M o n t o y a ,1 4 ,1 8 ,1 8 ,1 6 .6 7
0 2 , 1 4 4 8 7 9 5 6 , M a r i a M o n t o y a ,1 4 ,1 8 ,1 8 ,1 6 .6 7
03
0 3 , 1 1 5 6 6 5 6 5 , M n i c a T o r r e s , 1 1 , 1 1 , 1 1 , 1 1 .0 0
1 1 5 6 6 5 6 5 , M n i c a T o r r e s ,1 1 , 1 1 , 1 1 , 1 1 .0 0
: : : : :
En un problema que maneje una lista de listas con dos criterios de organizacin, bsicamente
podemos diferenciar cuatro tipos:
3
Lista de Listas
Perodo
1-2010
Se conoce el nmero de datos de cada lista y el nmero de listas que hay
Forma de los Datos Estructura General de Solucin
Archivo
M , otros datos
N , otros datos Lectura del nmero de Listas, M para el ejemplo y otros datos
Dato1 , dato2, datoL
Dato1 , dato2, datoL Inicializacin de todas las herramientas para
: : : : : : : : Clculos para todas las M listas
Dato1 , dato2, datoL
N y otros datos Ciclo para procesar todas las listas
Dato1 , dato2, datoL For I = 1 To M
Dato1 , dato2, datoL
: : : : : : : : Lectura del nmero de datos de cada Lista, N para el
Dato1 , dato2, datoL ejemplo y de otros datos
N y otros datos
Dato1 , dato2, datoL Inicializacin de todas las herramientas
Dato1 , dato2, datoL para Clculos de cada lista
: : : : : : : :
Dato1 , dato2, datoL Ciclo para procesar los datos de cada lista
::::::: For J = 1 To N
2 Next J
01, 3 Clculos de promedios,% de cada
1085659 ,Ana Morales, 16, 08, 05 lista e impresin de resultados de
7856594, Carlos Romero, 15, 06, 02
14256225, Mara Morales,12, 12 ,10 cada lista
02, 2
14856594, Ana Prez ,12, 16 ,06
19856594, Jos Acosta ,05, 14 ,07
Next I
Clculos de promedios,% de todas las
listas e impresin de resultados de todas
las lista
4
Lista de Listas
Perodo
1-2010
Se conoce el nmero de datos de cada lista, pero NO cuantas listas hay
Forma de los Datos Estructura General de Solucin
Archivo
N , otros datos
Dato1 , dato2, datoL
Dato1 , dato2, datoL Inicializacin de todas las herramientas para
: : : : : : : : Clculos para todas las listas
Dato1 , dato2, datoL
Ciclo para procesar todas las listas siempre que haya datos en
N y otros datos el archivo donde filenumber ser el nmero con que se
Dato1 , dato2, datoL trabaje el archivo
Dato1 , dato2, datoL While Not EOF( filenumber )
: : : : : : : :
Dato1 , dato2, datoL Lectura del nmero de datos de cada Lista, N para el
N y otros datos ejemplo y de otros datos
Dato1 , dato2, datoL
Dato1 , dato2, datoL Inicializacin de todas las herramientas
: : : : : : : : para Clculos de cada lista
Dato1 , dato2, datoL
: :, : :, : :, , : : Ciclo para procesar los datos de cada lista
For J = 1 To N
Ejemplo:
Lectura de los datos de la lista
Se tiene para una asignatura los datos de
las secciones, almacenando nmero de
seccin, numero de estudiantes de la
seccin (N) y para cada estudiante cdula, Instrucciones para calculos de cada
nombre y tres notas. lista calculo de contadores,
acumuladores, mayor y otros
01, 3
1085659 ,Ana Morales, 16, 08, 05 Next J
7856594, Carlos Romero, 15, 06, 02 Clculos de promedios,% de cada
14256225, Mara Morales,12, 12 ,10
02, 2 lista e impresin de resultados de
14856594, Ana Prez ,12, 16 ,06 cada lista
19856594, Jos Acosta ,05, 14 ,07
End While
Clculos de promedios,% de todas las
listas e impresin de resultados de todas
las lista
5
Lista de Listas
Perodo
1-2010
Se desconoce el nmero de Datos de cada lista, pero s cuantas listas hay
Forma de los Datos Estructura General de Solucin
Archivo
M, otros datos
Dato1 , dato2, datoL, cent Lectura del nmero de Listas, M para el ejemplo y
Dato1 , dato2, datoL, 0 otros datos
: : : : : : : :
Dato1 , dato2, datoL, 1 Inicializacin de todas las herramientas para
Clculos para todas las M listas
Dato1 , dato2, datoL, 0
Dato1 , dato2, datoL, 0 Ciclo para procesar las M listas
: : : : : : : : For I = 1 To M
Dato1 , dato2, datoL, 0 Inicializa del centinela para que inicie el ciclo
Dato1 , dato2, datoL, 0 Cent = 0
Dato1 , dato2, datoL, 0 Inicializacin de todas las herramientas para
: : : : : : : : Clculos de cada lista
::::::: ,1
NOTA: cent, corresponde al centinela, para determinar
Ciclo para procesar los datos de cada lista
cundo termina cada lista, 0 significa hay ms datos de la While Cent = 0
lista, 1 ltimo dato de la lista. Sin embargo podra puede ser otra estructura cclica condicional
trabajarse la lista sin l, identificando el cambio, esto se
explica en la prxima seccin.
Lectura de los datos de la
Ejemplo: (REGISTROS IGUALES)
lista
Se tiene para una asignatura los datos de las M
secciones, almacenando para cada estudiante el
nmero de seccin, cedula, nombre y tres notas Instrucciones para calculos de
cada lista calculo de
2
01, 10856594, Ana Morales,16,08,05,0 contadores, acumuladores,
01, 7856594, Carlos Romero,15,06,02,0 mayor y otros
01, 14256225,Mara Morales,12,12,10,1
02, 14856594,Ana Prez,12,16,06, 0
02, 19856594,Jos Acosta, 05, 14, 07, 1 End While
6
Lista de Listas
Perodo
1-2010
Se desconoce el nmero de Datos de cada lista y cuantas listas hay
Forma de los Datos Estructura General de Solucin
Archivo
Dato1 , dato2, datoL, cent
Dato1 , dato2, datoL, 0
: : : : : : : : Inicializacin de todas las herramientas para
Dato1 , dato2, datoL, 1 Clculos para todas las listas
Dato1 , dato2, datoL, cent
Dato1 , dato2, datoL, 0 Ciclo para procesar todas las listas siempre que haya
: : : : : : : : datos en el archivo donde filenumber ser el nmero
Dato1 , dato2, datoL, 1 con que se trabaje el archivo
While Not EOF( FileNumber)
Dato1 , dato2, datoL, 0 puede ser otra estructura cclica condicional
Dato1 , dato2, datoL, 0
: : : : : : : :
Dato1 , dato2, datoL, 0 Inicializa del centinela para que inicie el ciclo
Cent = 0
Dato1 , dato2, datoL, 0
Inicializacin de todas las herramientas para
Dato1 , dato2, datoL, 0
Clculos de cada lista
: : : : : : : :
::::::: ,1
Ciclo para procesar los datos de cada lista
NOTA: cent, corresponde al centinela, para determinar While Cent = 0
cundo termina cada lista, 0 significa hay ms datos de la
puede ser otra estructura cclica condicional
lista, 1 ltimo dato de la lista. Sin embargo podra
trabajarse la lista sin l, identificando el cambio, esto se
explica en la prxima seccin.
Lectura de los datos de la
Ejemplo: (REGISTROS IGUALES) lista
Se tiene para una asignatura los datos de las
secciones, almacenando para cada estudiante el
nmero de seccin, cedula, nombre y tres notas Instrucciones para calculos de
cada lista calculo de
01, 10856594, Ana Morales,16,08,05,0
01, 7856594, Carlos Romero,15,06,02,0
contadores, acumuladores,
01, 14256225,Mara Morales,12,12,10,1 mayor y otros
02, 14856594,Ana Prez,12,16,06, 0
02, 19856594,Jos Acosta, 05, 14, 07, 1 End While
Para esta forma de Organizacin SE PUEDE RESOLVER
IDENTIFICANDO EL CAMBIO DE SECCIN PARA SABER Clculos de promedios,% de cada
CUANDO SE TERMINA UNA LISTA Y COMIENZA OTRA. Ver lista e impresin de resultados
pgina 13 de cada lista
Ejemplo: (REGISTROS DIFERENTES)
Se tiene para una asignatura los datos de las End While
secciones, almacenando nmero de seccin y para Clculos de promedios,% de todas las
cada estudiante cdula, nombre y tres notas listas e impresin de resultados de
todas las lista
2
01
10856594,Ana Morales, 16, 08, 05, 0
7856594,Carlos Romero, 15, 06, 02,0
1425622, Mara Morales,12,12,10,1
02
14856594,Ana Prez, 12, 16, 06, 0
19856594, Jos Acosta , 05, 14,07, 1
7
Lista de Listas
Perodo
1-2010
Una Forma de Realizar el Anlisis del Problema
LA INFORMACIN
NMERO DE DATOS ES: DESCRIPCIN DE LA ITERACION
ASOCIADA A LA LISTA ES:
Externa
Interna
EJEMPLOS DE ANLISIS:
1. Se tiene para una asignatura los datos de las secciones, almacenando nmero de
seccin y para cada estudiante cdula, nombre y tres notas, en un archivo de datos
secciones.dat. Desarrolle un programa que lea la informacin del archivo y
determine Promedio por seccin y Seccin con mejor promedio.
Ejemplo de organizacin del Archivo
01
10856594, Ana Morales, 16, 08, 05, 0
7856594, Carlos Romero, 15, 06, 02, 0
78336594, Carlos Morero, 05, 06, 02, 0
14256225, Mara Morales, 12, 12, 10, 1
02
14856594, Ana Prez,12, 16, 06, 0
24856594, Ana Parada,12, 06, 06, 0
19856594, Jos Acosta,05,14,07,1
8
Lista de Listas
Perodo
1-2010
LA INFORMACIN
NMERO DE DATOS ES: DESCRIPCIN DE LA ITERACION
ASOCIADA A LA LISTA ES:
2. Se tiene para una asignatura los datos de las K secciones, almacenando para cada
seccin el nmero de seccin y para cada estudiante cdula, nombre y tres notas, en
un archivo de datos secciones2.dat. Desarrolle un programa que lea la informacin
del archivo y determine Promedio por seccin y Seccin con mejor promedio.
Anlisis del Problema:
LA INFORMACIN
NMERO DE DATOS ES: DESCRIPCIN DE LA ITERACION
ASOCIADA A LA LISTA ES:
9
Lista de Listas
Perodo
1-2010
Cuando se tiene un archivo que contiene una lista de listas de registros iguales, en los cuales no se
permite alterar los datos del archivo para agregarle un centinela en la lista interna se procede de
la siguiente manera. En ese caso slo se puede saber cuando termina una lista si el dato por el que
est agrupado es diferente del siguiente.
Observe que el criterio de agrupacin es la seccin, que cambia cuando se tiene a Ana Perez que
es de una seccin diferente a la que se viene trabajando.
3
01, 10856594, Ana Morales,16,08,05
01, 7856594, Carlos Romero,15,06,02
01, 14256225,Mara Morales,12,12,10
02, 14856594,Ana Prez,12,16,06
02, 19856594,Jos Acosta, 05, 14, 07
03, 19445559,Juan Acosta, 15, 14, 17
Observe que el criterio de agrupacin es la seccin, que cambia cuando se tiene a Ana Perez que
es de una seccin diferente a la que se viene trabajando y que en este caso aparece en el archivo
el nmero de listas o secciones a procesar.
La lectura debe hacerse por cada lista hasta que los datos consecutivos difieran entre si o se
terminen los datos del archivo .
A continuacin se presentan dos formas de enfrentar este tipo de ejercicios bien sea empleando
dos estructuras cclicas o una sola estructura cclica, se utilizarn banderas para detectar eventos y
se leer el primer registro fuera de los ciclos, puede hacerse dentro de los ciclos empleando otra
bandera para determinar si es el primero de todos, denominaremos REGISTRO a una lnea de
informacin contenida en el archivo de datos a procesar.
10
Lista de Listas
Perodo
1-2010
Ref = sec
End While
'Clculos de promedios,% de todas las listas
e impresin de resultados de todas las lista
11
Lista de Listas
Perodo
1-2010
Si se conoce el Nmero de Listas pero NO el nmero de datos de cada lista
Forma de los Datos Estructura General de Solucin
M
Dato1 , dato2, datoL
Dato1 , dato2, datoL 'Inicializacin de todas las herramientas
para calculo de todas las listas
: : : : : : : : 'SE LEE EL NMERO DE LISTAS M
Dato1 , dato2, datoL 'SE LEE EL PRIMER REGISTRO DEL ARCHIVO
Dato1 , dato2, datoL Ref=Dato1
Dato1 , dato2, datoL Bandera para determinar si se proceso todo
: : : : : : : : el archivo se asigna en False porque se
definir como booelana
Dato1 , dato2, datoL
TODO = False Procesado todo = No
Dato1 , dato2, datoL For I=1 to M 'Para cada una de las M listas
Dato1 , dato2, datoL
: : : : : : : : Inicializacin de todas las herramientas
Dato1 , dato2, datoL para los Clculos para cada lista
Dato1 , dato2, datoL
Dato1 , dato2, datoL 'Ciclo para procesar los datos de cada lista
: : : : : : : : Do
Dato1 , dato2, datoL Instrucciones para calculos de cada
lista calculo de contadores,
SUPOGAMOS EST AGRUPADO POR acumuladores, mayor y otros
DATO1
Ejemplo: If Not EOF(FileNumber) Then
'SI NO SE HA PROCESADO TODO
Se tiene para una asignatura los datos de LEA DEL ARCHIVO EL SIGUIENTE REGISTRO
las secciones, almacenando nmero de Else
seccin y para cada estudiante cdula, TODO = True
nombre y tres notas 'Se indica que ya se proces todo
End If
01, 10856594, Ana Mora,16,08,05
01, 7856594, Carlos Roa,15,06,02 'Hasta que se cambie de lista o se procese todo
01, 14256225,Mara Mor,12,12,10
02, 14856594,Ana Prez,12,16,06
02, 19856594,Jos Rua,05, 14, 07
Loop Until (Dato1 <> Ref) Or TODO
Ref = sec
Next I
'Clculos de promedios,% de todas las listas
e impresin de resultados de todas las lista
12
Lista de Listas
Perodo
1-2010
Usando Un solo ciclo
Si no se conoce el Nmero de Listas, ni el nmero de datos de cada lista
Forma de los Datos Estructura General de Solucin
Archivo
Dato1 , dato2, datoL 'Inicializacin de todas las herramientas
Dato1 , dato2, datoL para calculo de todas las listas
'SE LEE EL NMERO DE LISTAS M
: : : : : : : : 'SE LEE EL PRIMER REGISTRO DEL ARCHIVO
Dato1 , dato2, datoL Bandera para determinar si se proceso todo
Dato1 , dato2, datoL el archivo se asigna en False porque se
Dato1 , dato2, datoL definir como booelana
: : : : : : : : TODO = False Procesado todo = No
Dato1 , dato2, datoL
WHILE NOT TODO 'MIENTRAS NO SE HAYA PROCESADO TODO
Dato1 , dato2, datoL Inicializacin de todas las herramientas
Dato1 , dato2, datoL para los Clculos para cada lista
: : : : : : : :
Dato1 , dato2, datoL primero = True
Dato1 , dato2, datoL 'Bandera PARA GUARDAR EL VALOR DE REFERENCIA
QUE PERMITIR VERIFICAR SI ESTOY EN LA MISMA
Dato1 , dato2, datoL
LISTA
: : : : : : : :
Dato1 , dato2, datoL 'Ciclo para procesar los datos de cada lista
Instrucciones para calculos de cada
SUPOGAMOS EST AGRUPADO POR lista calculo de contadores,
DATO1 acumuladores, mayor y otros
Ejemplo:
If Primero then
Se tiene para una asignatura los datos de Ref=dato1
las secciones, almacenando nmero de Primero = false
seccin y para cada estudiante cdula, Else
nombre y tres notas If Not EOF(FileNumber) Then
'SI NO SE HA PROCESADO TODO
01, 10856594, Ana Mora,16,08,05 LEA DEL ARCHIVO EL SIGUIENTE REGISTRO
01, 7856594, Carlos Roa,15,06,02 Else
01, 14256225,Mara Mor,12,12,10
TODO = True
02, 14856594,Ana Prez,12,16,06
02, 19856594,Jos Rua,05, 14, 07 'Se indica que ya se proces todo
End If
End If
13
Lista de Listas
Perodo
1-2010
Si se conoce el Nmero de Listas, pero NO el nmero de datos de cada lista
Forma de los Datos Estructura General de Solucin
M
Dato1 , dato2, datoL 'Inicializacin de todas las herramientas
Dato1 , dato2, datoL para calculo de todas las listas
'SE LEE EL NMERO DE LISTAS M
: : : : : : : : 'SE LEE EL PRIMER REGISTRO DEL ARCHIVO
Dato1 , dato2, datoL Bandera para determinar si se proceso todo
Dato1 , dato2, datoL el archivo se asigna en False porque se
Dato1 , dato2, datoL definir como booelana
: : : : : : : : TODO = False Procesado todo = No
CLISTAS = 0 Contador de listas procesadas
Dato1 , dato2, datoL
DO 'SE PROCESA EL ARCHIVO HASTA PROCESAR LAS M LISTAS
Dato1 , dato2, datoL Inicializacin de todas las herramientas
Dato1 , dato2, datoL para los Clculos para cada lista
: : : : : : : :
Dato1 , dato2, datoL primero = True
Dato1 , dato2, datoL 'Bandera PARA GUARDAR EL VALOR DE REFERENCIA
QUE PERMITIR VERIFICAR SI ESTOY EN LA MISMA
Dato1 , dato2, datoL
LISTA
: : : : : : : :
Dato1 , dato2, datoL 'Ciclo para procesar los datos de cada lista
Instrucciones para calculos de cada
SUPOGAMOS EST AGRUPADO POR lista calculo de contadores,
DATO1 acumuladores, mayor y otros
Ejemplo:
If Primero then
Se tiene para una asignatura los datos de Ref=dato1
las secciones, almacenando nmero de Primero = false
seccin y para cada estudiante cdula, Else
nombre y tres notas If Not EOF(FileNumber) Then
'SI NO SE HA PROCESADO TODO
01, 10856594, Ana Mora,16,08,05 LEA DEL ARCHIVO EL SIGUIENTE REGISTRO
01, 7856594, Carlos Roa,15,06,02 Else
01, 14256225,Mara Mor,12,12,10 TODO = True
02, 14856594,Ana Prez,12,16,06
02, 19856594,Jos Rua,05, 14, 07 'Se indica que ya se proces todo
End If
End If
14
Lista de Listas
Perodo
1-2010
Referencias
15