Corte de Control
* Corte de Control: cuando se interrumpe el circuito
de instrucciones que se estaban ejecutando.
* Es necesario determinar el momento preciso en
que finalizan los elementos de entrada de un
grupo para comenzar con otro.
Detectar el momento en que cambia el valor
(contenido) de la variable campo de control.
* Campo de Control:
* Es el campo que identifica acada subconjunto o grupo de elementos de
entrada (registros) de un conjunto mayor de
datos.
Requisitos:
*Ordenamiento de los datos de entrada.
* Que existan varios subconjuntos para que tenga
sentido el corte de control.
* Que cada subconjunto tenga varios elementos.
Diagrama de flujo:
EJEMPLO EN C
#include<stdio.h> struct sRegistro { int nroLib; int codCarrera; int codMat; float notaOb; }; struct sRegistro registro; FILE *archivo_dat; float acumNo = 0; int contaNo = 0; int nroLibAnt; float promedio; int totalAlumnos; int codCAn; void principioPrograma(); void finPrograma(); void abrirArchivo(); void leerArchivo(); void cerrarArchivo(); void alumno(); void principioAlumno(); void movimiento(); void finAlumno(); void finCarrera(); void principioCarrera(); int main(){ principioPrograma(); while (!feof(archivo_dat)){ alumno(); } finPrograma(); } void abrirArchivo(){ archivo_dat = fopen("facena_alumnos.dat", "rb"); } void leerArchivo(){ fread(®istro,sizeof(struct sRegistro), 1,archivo_dat); if (feof(archivo_dat)){ registro.nroLib = 9999; registro.codCarrera = 9999; } } void cerrarArchivo(){ fclose(archivo_dat); printf ("\n"); system("pause"); } void principioPrograma(){ printf("Listado de alumnos \n"); abrirArchivo(); leerArchivo(); } void finPrograma(){ printf("\n\nTotal de alumnos: %d", totalAlumnos); cerrarArchivo(); } void carrera() { principioCarrera(); while (registro.codCarrera == codCAn){ movimiento(); } finCarrera(); } void principioCarrera() { contaNo = 0; acumNo = 0; codCAn = registro.codCarrera; printf("Nro de carrera: %d \n",registro.codCarrera); printf(" materia \t promedio"); } void alumno(){ principioAlumno(); while(registro.nroLib==nroLibAnt) { carrera(); } finAlumno(); } void principioAlumno(){ nroLibAnt = registro.nroLib; printf("\nNro de libreta: %d \n",registro.nroLib); } void movimiento(){ printf ("\n %d \t %.2f ",registro.codMat, registro.notaOb); contaNo++; acumNo = acumNo + registro.notaOb; leerArchivo(); } void finCarrera(){ promedio = acumNo / (float)contaNo; printf ("\npromedio: %.2f \n", promedio); } void finAlumno(){ totalAlumnos = totalAlumnos + 1; printf ("\n\n"); }