Anda di halaman 1dari 4

Algoritmos y estructura de datos CC Marta Ferrari

1
Cortes de control
El corte de control es un proceso que se realiza sobre un archivo donde los registros
estn agrupados por un determinado dato y que consiste en repetir una serie de
acciones mientras los registros ledos pertenezcan al mismo grupo.

La aparicin de un nuevo grupo o haber llegado al fin de archivo producir un corte
en el proceso, en el primer caso el proceso se repetir con el nuevo grupo y en el
segundo se terminar el problema.
Casi siempre, este proceso se realiza sobre archivos ordenados, en forma ascendente o
descendente, por el dato que servir como elemento de corte.
Un proceso de corte de control deber utilizarse si, por ejemplo, dado un archivo que
contiene informacin sobre alumnos de una facultad (legajo, materia, n de curso,
nota, etc) y que est ordenado por n de curso se pide que se informe cuntos alumnos
hay en cada curso o el promedio de notas de cada curso o los legajos de los mejores
alumnos (mayor nota) de cada curso.
Supongamos que el archivo mencionado como ejemplo contiene la siguiente informacin
de cada alumno :
Legajo Materia Curso Nota
100000 Ingls 1032 5
98000 Ingls 1032 8
99000 Ingls 1032 4
92500 Fsica 1120 6
101000 Fsica 1120 2
98700 Ingls 1135 9
93000 Ingls 1135 4
95000 Ingls 1135 2
y se quiere saber cuntos alumnos hay en cada curso.
Para contestar lo pedido se debern contar los registros ledos mientras sean del
mismo curso; el ingreso de un registro con otro nmero de curso indicar que se han
terminado los datos del curso anterior y en consecuencia se deber finalizar con el
proceso de dicho curso y empezar a procesar el nuevo.
Por ejemplo, cuando ingresa el primer registro del curso 1120, termina el curso 1032,
cuando ingresa el primer registro del curso 1135 termina el curso 1120, cuando se
detecta el fin de archivo termina el ltimo curso, es decir que cada vez que finalice
un curso puede ser que haya que empezar con uno nuevo o terminar el proceso.
Veamos la estrategia de un algoritmo que contempla todos estos puntos:
ESTRATEGIA























C
Ingresar datos de un alumno
No es fin de archivo
Guardar el n de curso como clave
Inicializar el contador de alumnos del curso
No es fin de archivo y el curso ingresado coincide con el curso guardado como clave
Incrementar el contador de alumnos del curso
Ingresar datos de un alumno
Mostrar el curso y el contador de alumnos del curso
F
Algoritmos y estructura de datos CC Marta Ferrari
2
ALGORITMO

DISEO DEL REGISTRO DEL ARCHIVO
typedef struct { long legajo;
char materia [20];
int curso;
int nota;
} TREG;

































Observando detenidamente este ejemplo donde hay un corte de control (corte por
curso), podemos determinar en qu consiste el mtodo:

1) el algoritmo se basa en ciclos anidados
2) la cantidad de ciclos es igual a la cantidad de cortes de control + 1
3) el ciclo ms externo depende del fin de archivo
4) los ciclos ms internos dependen de la coincidencia con la clave elegida +
las condiciones del ciclo inmediato anterior
5) el primer registro del archivo se ingresa afuera de los ciclos , todos los
dems registros se ingresan dentro del ciclo ms interno , como ltima
instruccin
6) antes de cada ciclo hay un bloque de inicializacin y despus de cada ciclo hay
un bloque de finalizacin
7) el bloque de inicializacin de los ciclos internos contiene las sentencias
donde se guarda la clave y se prepara todo lo necesario para esa clave
8) el bloque de finalizacin de los ciclos internos contiene las sentencias que
deben cumplirse cuando termina una clave
9) el bloque de inicializacin del ciclo externo contiene el ingreso del primer
registro y la preparacin de todo lo necesario en forma general
10)el bloque de finalizacin del ciclo externo contiene las sentencias que deben
cumplirse cuando se terminan todos los datos.
C
! feof (archivo)
clave reg.curso
! feof (archivo) y ( reg.curso = clave )





totalu totalu + 1
archivo fopen ( alu.bin , rb )
totalu 0
clave , totalu
fclose ( archivo )
F
archivo
reg
archivo
reg
Algoritmos y estructura de datos CC Marta Ferrari
3
La estrategia general para un proceso de un corte es:



























Resolvamos ahora un problema con 2 cortes, supongamos tener el archivo anterior
ordenado por materia y dentro de cada materia por curso

Legajo Materia Curso Nota
92500 Fsica 1120 6
101000 Fsica 1120 2
100000 Ingls 1032 5
98000 Ingls 1032 8
99000 Ingls 1032 4
98700 Ingls 1135 9
93000 Ingls 1135 4
95000 Ingls 1135 2


Se pide informar:
a) para cada curso de cada materia: la materia, el curso y el total de alumnos
b) el total de alumnos en cada materia
c) el total de alumnos de la facultad

C
Bloque de inicializacin con ingreso del primer registro (1)
No es fin de archivo
Bloque de inicializacin (2)
No es fin de archivo y coincide la clave
Proceso e ingreso de un registro
Bloque de finalizacin (2)
F
Bloque de finalizacin (1)
Algoritmos y estructura de datos CC Marta Ferrari
4
ESTRATEGIA





































Identifiquemos en la estrategia las partes principales.
en el bloque 1 empieza la facultad
en el bloque 2 empieza la materia ( primer corte )
en el bloque 3 empieza el curso ( segundo corte )
en el bloque 4 finaliza el curso
en el bloque 5 finaliza la materia
en el bloque 6 finaliza la facultad

Observe tambin los ciclos:

entre 1 y 6 est el ciclo donde se procesan todos los registros de la facultad
entre 2 y 5 est el ciclo donde se procesan todos los registros de la misma
materia
entre 3 y 4 est el ciclo donde se procesan todos los registros del mismo curso
de la misma materia

Ejercicio: a partir de esta estrategia construir el algoritmo
C
Ingresar datos de un alumno e inicializar total de alumnos
No es fin de archivo
Guardar la materia como clave1 e inicializar total por materia
No es fin de archivo y la materia coincide con clave1
Guardar el curso como clave2 e inicializar total del curso
contador de alumnos del curso
Mostrar el curso y el total de alumnos del curso
No es fin de archivo y la materia coincide con clave1 y el curso coincide con clave2
Incrementar el total por curso Ingresar datos de un alumno
Sumar el total del curso al total de la materia
Mostrar la materia y el total de alumnos de la materia
Mostrar el total general de alumnos
Sumar el total de alumnos de la materia al total general
F
1
2
3
4
5
6