Algorítmica - Presentación del método
Objetivos del capítulo
-
Descomponer jerárquicamente un conjunto de datos.
-
A partir de la división de los datos escritos (datos de salida) y de los datos leídos (datos de entrada) por el programa, establecer el organigrama estructurado de la lógica de la aplicación.
-
Escribir el programa a partir del organigrama.
Presentación del método
1. ¿Por qué un método de programación?
En un proyecto informático, en general lo primero que expresa el futuro usuario es el resultado que desea. «Quiero un programa para gestionar mi stock, quiero un sitio web para presentar mi empresa, etc.». Por lo tanto, hay que ver en qué consiste el stock, qué información se debe presentar en el sitio web, etc.
Para terminar, habiendo establecido con precisión la lista de los datos disponibles y el conjunto de los datos que se quiere obtener, el desarrollador programa la lógica que permite llegar al resultado deseado. Se dice que diseña el algoritmo de la solución.
Una receta de cocina es un algoritmo. ¿Qué plato quiero hacer? ¿Tengo los ingredientes para hacerlo? Para terminar, ¿cómo hacerlo? ¿Cuál es la receta?
El arte de la informática es descubrir la receta, el algoritmo que se ha de programar.
En los capítulos anteriores, hemos realizado programas sin utilizar un método. Para resolver los problemas, por lo general es suficiente un razonamiento lógico, traducido adecuadamente en instrucciones estructuradas del lenguaje (if, while...).
Cuando la complejidad aumenta, el conjunto de los datos que se ha de tratar es importante y el algoritmo se convierte en algo menos evidente de encontrar.
-
La primera ventaja de un método...
Ejemplo: edición de facturas
1. Estado de salida que se quiere obtener
Para cada cliente, se imprimen filas «factura». Cada una de ellas contiene un número de factura, la cantidad de la factura y un descuento del 10 % sobre la cantidad de la factura, si esta supera los 2 000 €.
2. Descomposición del estado de salida
Cuando se examina el estado, comprobamos que se organiza «cliente por cliente»:
Cada subconjunto en gris es un conjunto de datos relativos a un cliente.
El conjunto del estado se puede describir como un conjunto de datos relativos a un cliente, tantas veces como clientes hay.
Podemos indicarlo de la siguiente manera:
c.d.r.: abreviación para «conjunto de datos relativos».
(c): cardinalidad repetitiva para: tantas veces como clientes.
Ahora nos centramos en la organización de los datos de un cliente, por ejemplo los datos del cliente 001:
Cada subconjunto en gris es un conjunto de datos relativos a una factura.
El conjunto de los datos de un cliente se puede describir como: un número de cliente (ncli) presente 1 vez y después un conjunto de datos relativos a una factura tantas veces como facturas.
Podemos indicarlo de la siguiente manera:
Nos centramos ahora en la organización de los datos de una factura:
El subconjunto en gris se corresponde con un descuento.
El conjunto de los datos de una factura se puede describir como: un número de factura (nfac) presente 1 vez, una cantidad de factura (cant) presente 1 vez y un descuento presente 0 o 1 veces.
Descomposición completa:
3. El archivo de las facturas
La información necesaria para la edición de las facturas se lee en un archivo de entrada cuyos registros tienen la siguiente estructura:
Este archivo secuencial se ordena con el N ° CLIENTE. Solo hay un registro por factura.
Estructura correspondiente:
typedef struct
{
char ncli[4];
char nfac[6];
float cant;
} FACTURA;
Se considera que el archivo de las facturas no está vacío.
4. Descomposición jerárquica del archivo de entrada
Para hacer la descomposición del archivo de las facturas, es útil diseñar algunos registros del archivo de entrada, si es posible los que permiten obtener el estado de salida:
Nos centramos en el conjunto de los datos...
Trabajo práctico: estadística de las ventas
1. Comentario sobre el enunciado
El enunciado del trabajo práctico está inspirado en entornos profesionales.
Fija los nombres de las variables, tanto en modo edición como en modo lectura. De esta manera, de un programador a otro, el hecho de respetar tanto el enunciado como el método conduce a programas parecidos.
El enunciado contiene:
-
una breve descripción del objetivo de la aplicación;
-
un esquema de tratamiento;
-
una descripción del estado que se va a obtener, con el nombre de cada una de las filas a la derecha;
-
la descripción de cada fila;
-
eventuales características particulares del estado;
-
una descripción de los archivos.
El enunciado, el organigrama, los resultados obtenidos y el programa constituyen un directorio de programación bastante completo.
2. Tema
a. Objetivo del programa
Editar una estadística de las ventas, presentada por sectores, por representante y por cliente.
b. Esquema del tratamiento
c. Estado de salida para obtener
Las filas de impresión se identifican por un código: LE1, LE2, LE3, LD1, LT1, LT2, LT3.
d. Filas de impresión
e. Característica del estado
-
Salto de página: una vez por sector.
-
Toda la información de un sector en una página.
-
El total general se imprime en la misma página que el último sector.
f. Descripción del archivo: pagos
Un registro del archivo pagos contiene:
Estructura correspondiente:
typedef struct
{
char nosect[3];
char norep[4];
char nocli[5];
char nofac[6];
double cant;
char codpais[3];
} PAGO;
Organización del archivo: secuencial
Criterios de ordenación:
-
nosect (número de sector),
-
norep (número de representante),
-
nocli (número de cliente).
Este archivo se proporciona. Su ruta de acceso es: C:\C\archivos\pagos
Su contenido es el siguiente:
3. Proposición de corrección
a. Descomposición jerárquica del estado de salida
El estado se presenta como un conjunto...