¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Desarrollo informático
  3. Algorítmica
Extrait - Desarrollo informático Aprenda a diseñar antes de programar
Extractos del libro
Desarrollo informático Aprenda a diseñar antes de programar Volver a la página de compra del libro

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

images/113-1.png

Descripción del archivo anteriorStock

Un registro del archivo anteriorStock contiene:

  • numero: número de producto,

  • nombre: nombre del producto,

  • cantidad: cantidad

images/113-2.png

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.

images/113-3.png

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

images/113-4.png

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)

images/113-5.png

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).

images/113-6.png

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).

images/113-20.png

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

images/113-21.png

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.

images/113-22.png

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.

images/113-24.png

b. Recordatorio: descripción del registro de los archivos ped y pedd

images/113-25.png

El archivo venta1 tiene la misma descripción que el archivo venta.

c. Recordatorio: descripción de registro del archivo venta

images/113-26.png

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...