Algorítmica - Alternativas complejas
Preámbulo
Se habla de alternativas complejas cuando, en la descomposición de los datos de entrada, aparecen varias estructuras alternativas al mismo nivel de descomposición.
Actualización del archivo «stock» con incidentes
1. Tema
Descripción del archivo anteriorStock
Un registro del archivo anteriorStock contiene:
-
numero: número de producto,
-
nombre: nombre del producto,
-
cantidad: cantidad
Estructura correspondiente:
typedef struct
{
char numero[3];
char etiqueta[21];
int cantidad;
} PRODUCTO;
Organización del archivo: secuencial
Criterios de ordenación:
-
numero (N° de producto)
Hay un registro por producto.
Este archivo se proporciona. Su ruta de acceso es: C:\C\archivos\anteriorStockCplx
Descripción del archivo movimientos
Un registro del archivo movimientos contiene:
-
numeroProducto: número de producto
-
cantidad: cantidad
-
codigo: código (E o S)
La cantidad de un movimiento en entrada (E) se añade a la cantidad en stock.
La cantidad de un movimiento en salida (S) se deduce de la cantidad en stock.
Estructura correspondiente:
typedef struct
{
char numeroProducto[3];
int cantidad;
char codigo;
} MOVIMIENTO;
Organización del archivo: secuencial
Criterios de ordenación:
-
numeroProducto (N° de producto)
Hay 0 (cero) o n registros por producto.
Este archivo se proporciona. Su ruta de acceso es: C:\C\archivos\movimientosCplx
Ejemplo
Cada registro del archivo anteriorStock da origen a un registro en el archivo nuevoStock.
Solo la cantidad de cada producto evoluciona en función de las cantidades de los movimientos que le afectan. Si el código del movimiento es E (Entrada), la cantidad en movimiento se añade a la cantidad del producto. Si el código vale S (Salida), se resta.
Hay incidentes cuando un registro del archivo movimientos no se corresponde con ningún producto del archivo anteriorStock. En este caso, el registro movimientos se imprime en el estado de los incidentes.
2. Descomposiciones jerárquicas
Descomposición de los archivos de salida (nuevoStock e incidentes)
El conjunto de los datos de salida es el conjunto de datos presentes en los dos archivos. Este conjunto se presenta como un conjunto de datos relativos a un producto, tantas veces como productos hay (conjuntos en gris).
Para cada producto, está presente 0 o 1 vez en el archivo...
Actualización del archivo de los empleados
1. Tema
El programa que se va a realizar permite actualizar un archivo de empleados.
Se constituye un nuevo archivo de empleados (EMPNuevo) a partir de tres archivos:
-
El antiguo archivo de empleados (EMPAnterior).
-
Un archivo de empleados que se va a crear (EMPCreacion).
-
Un archivo de empleados que se va a modificar (EMPModif).
Estructura correspondiente a los cuatro archivos:
typedef struct
{
char numero[3];
char infos[21];
} EMPLEADO;
Se proporcionan los archivos de entrada. Su ruta de acceso es:
C:\C\archivos\EMPAnterior
C:\C\archivos\EMPCreacion
C:\C\archivos\EMPModif
Para cada empleado, se vuelve a copiar en el archivo EMPNuevo un registro que proviene de uno de los tres archivos de entrada.
-
Se vuelve a copiar el registro de EMPAnterior si el empleado no está ni modificado ni es de nueva creación.
-
Se vuelve a copiar el registro de EMPCreacion si el empleado no es ni antiguo ni modificado.
-
Se vuelve a copiar el registro de EMPModif si el empleado es antiguo y no es de nueva creación.
Los otros casos se corresponden a situaciones de incidente:
El empleado tiene un registro en EMPAnterior y en EMPCreacion.
El empleado tiene un registro en EMPModif y no en EMPAnterior.
Ejemplo
2. Descomposiciones jerárquicas
Descomposición de las salidas
Para cada empleado, hay que escribir en el archivo EMPNuevo (e.d.c. 1 empleadoN(0-1)) o en el estado de los incidentes (e.d.c. 1 incidente(0-1)).
Descomposición de las entradas
Para cada empleado, puede haber un registro en uno, dos o tres archivos de entrada.
3. Validación
No hay ningún dato que comprobar.
4. Organigrama
numEmp contiene el número de empleados que hay que tratar. Esta variable se asigna durante el emparejamiento.
En las comprobaciones, las letras indicadas significan:
-
a: empA.numEmp == numEmp?
-
c: empC.numEmp == numEmp?
-
m: empM.numEmp == numEmp?
empA, empC, empM son variables de tipo EMPLEADO para la lectura de los archivos EMPAnterior, EMPCreacion, EMPModif
Significado de las siglas en las piezas:
I.A: inicio del tratamiento de un empleado que está en el archivo EMPAnterior.
F.A: Fin de este tratamiento.
I.NoA: inicio del tratamiento de un empleado que no está en el archivo EMPAnterior.
F.NoA: fin de este tratamiento.
I.NoA.C: inicio del tratamiento de un empleado que no está en el archivo...
Trabajo práctico: actualización del histórico de ventas
1. Tema
Objetivo del programa
Se trata de actualizar el histórico de ventas, agregando nuevos registros.
a. Esquema del tratamiento
El programa que se va a realizar permite actualizar el histórico de ventas. Se forma un archivo venta1 a partir del archivo venta y de los archivos ped y pedd.
El archivo venta es el que se ha utilizado en el trabajo práctico «Estadísticas sobre las cifras de negocio» del capítulo Algorítmica - Las tablas. Es un histórico de las ventas que el programa debe actualizar.
Los archivos ped y pedd son los utilizados en el trabajo práctico «Edición de facturas» del capítulo Algorítmica - Datos de fase, saltos de página. Contienen los pedidos y los pedidos de ayuda. A partir de estos dos archivos, el programa genera nuevos registros en el histórico.
La fecha de facturación de los nuevos registros de venta1 se introduce por el teclado al inicio de programa.
b. Recordatorio: descripción del registro de los archivos ped y pedd
El archivo venta1 tiene la misma descripción que el archivo venta.
c. Recordatorio: descripción de registro del archivo venta
d. Tratamiento
-
Escribir la fecha de facturación por el teclado al inicio de programa (DD/MM/AAAA).
-
Leer completamente los tres archivos: histórico de las ventas (venta), pedidos normales (ped) y pedidos de ayuda (pedd).
-
Cada registro del archivo de ventas (venta) en la entrada se vuelve a copiar en el archivo de salida (venta1).
-
Cada registro del archivo de pedidos normales (ped) o del archivo de pedidos de ayuda (pedd) da lugar a la creación de un nuevo registro en el histórico de ventas (venta1). En este registro, la fecha de facturación es la introducida por el teclado, y el precio de venta sin IVA se calcula según la siguiente fórmula: cantidad por el precio unitario.
Al siguiente tratamiento, el archivo venta1 deberá tomar el lugar del archivo venta. Es el principio de la rotación de los archivos históricos.
2. Actualización del histórico de ventas: proposición de corrección
a. Descomposiciones jerárquicas
En la salida de este programa, solo está el archivo venta1.
La descomposición del archivo venta se ha hecho en el trabajo práctico «Estadísticas...