miércoles, 22 de octubre de 2014

Ejemplo de un programa con sentencias selectivas múltiples

En este ejemplo de aplicación de la sentencias condicionales tomaremos un ejercicio del libro: Introducción a la Programación Lógica y Diseño (Stair 2013) el cual dice:

5. Drive-Rite Insurance Company proporciona pólizas de seguros para automóviles a los conductores. Diseñe un diagrama de flujo y un pseudocodigo para lo siguiente:


Un programa que acepte datos de pólizas de seguros, incluyendo el número de las mismas, apellido del cliente, nombre del cliente, edad, fecha de vencimiento de la prima (día, mes y año) y número de accidentes que ha tenido el conductor en los últimos tres años. Si un número de póliza introducido no está entre 1000 y 9999 inclusive, establezca el número de póliza en 0. Si el mes no está entre 1 y 12 inclusive, o el día no es correcto para el mes (por ejemplo, no está entre 1 y 31 para enero o 1 y 29 para febrero), establezca el día, el mes y año en 0. Despliegue los datos de la póliza después que se hayan hecho cualesquiera revisiones.

Aplicando los pasos para realizar un diagrama de flujo y un pseudocódigo:

Paso 1: Definición del problema.
Se quiere verificar los datos de los clientes de la póliza de seguros para su posterior aceptación, los datos deben cumplir con ciertos parámetros para su aprobación los cuales son: el número de póliza debe estar entre 1000 y 9999 y la fecha debe estar entre los meses enero y diciembre, además los días deben estar bien ubicados conforme al mes. Se imprimen todos los datos de la póliza ya verificados.

Paso 2: Planeación de la solución.

Datos de entrada: Apellido y nombre del cliente (datos alfabéticos), numero de póliza, día, mes y año (números enteros).

Datos de salida: Apellido y nombre del cliente (datos alfabéticos), datos ya verificados.

Datos adicionales: Ninguno.

Proceso:
Lo primero que se debe hacer es conocer el apellido y el nombre del cliente que son datos alfabéticos y la edad. Después se debe ingresar el número de la póliza que debe estar en un rango de 1000 y 9999, si no cumple esta condición el programa imprime el número “0” al momento de imprimir los resultados. Después se ingresa la fecha en día, mes y año. Los meses deben estar en el rango entre 1 y 12, los días que estén en los meses: 1, 3, 5, 7, 8, 10 y 12 deben estar en un rango entre 1 y 31, mientras que los días que estén en los meses 4, 6, 9 y 11 deben estar en un rango de 1 y 30. Como caso especial los días que estén en el mes 2 deben estar en un rango de 1 y 28. Si estos datos no cumplen con las condiciones el programa imprime 0, 0, 0. Se imprime toda la información evaluada.

Diagrama de flujo:


(Nótese que en este ejercicio no solo se utilizó una sentencia selectiva múltiple sino que ademas de eso se utilizó sentencias condicionales, esto con el fin de que el programa este mejor estructurado y pueda ser diseñado sin errores, una vez dicho esto el pseudocódigo sería:)

Pseudocódigo:
//Nombre: Juan Diego Mantilla
//Fecha: 09 de Octubre del 2014
//Programa para evaluar datos de código, y fecha de una aseguradora.
INICIO
                    //DECLARACION DE VARIABLES ALFABETICAS: APE, NOM, EDAD, POLI, DIA, MES, AÑO;
IMPRIMIR “INGRESE EL APELLIDO DEL CLIENTE:”;
                    LEER APE;
IMPRIMIR “INGRESE EL NOMBRE DEL CLIENTE:”;
                    LEER NOM;
IMPRIMIR “INGRESE LA EDAD DEL CLIENTE:”;
                    LEER EDAD;
IMPRIMIR “INGRESE EL DIA:”;
                    LEER DIA;
IMPRIMIR “INGRESE EL MES:”;
                    LEER MES;
IMPRIMIR “INGRESE EL AÑO:”;
                    LEER AÑO;
SI (POLI>=1000 Y POLI<=9999) ENTONCES;
                                       SI (MES>=1 Y MES<=12) ENTONCES;
                                                           SEGÚN M HACER:
                                                                               1:                                   
                                                                               3:
                                                                               5:
                                                                               7:
                                                                               8:
                                                                              10:
                                                                               12:
                                                                                                  SI (DIA>=1 Y DIA<=31) ENTONCES;
                                                                                                                       IMPRIMIR APE, NOM, EDAD, POLI, DIA, MES, AÑO;
                                                                                                  SINO;
                                                                                                                      DIA=0, MES=0, AÑO=0;
                                                                                                  FINSI;
                                                                               2:
                                                                                                  SI (DIA>=1 Y DIA<=28) ENTONCES;         
                                                                                                                       IMPRIMIR APE, NOM, EDAD, POLI, DIA, MES, AÑO;
                                                                                                  SINO;
                                                                                                                      DIA=0, MES=0, AÑO=0;
                                                                                                  FINSI;
                                                                               4:
                                                                               6:               
                                                                               9:
                                                                               11:
                                                                                                  SI (DIA>=1 Y DIA<=30) ENTONCES;         
                                                                                                                       IMPRIMIR APE, NOM, EDAD, POLI, DIA, MES, AÑO;
                                                                                                  SINO;
                                                                                                                      DIA=0, MES=0, AÑO=0;
                                                                                                  FINSI;
                                                           FINSEGUN;
                                       SINO;
                                                           DIA=0, MES=0, AÑO=0;
                                       FINSI;
                    SINO;
                                       POLI=0;
                    FINSI;
                    IMPRIMIR APE, NOM, EDAD, POLI, DIA, MES, AÑO;
FIN

Prueba de escritorio:

PARA POLIZA=1500
SECUENCIAS/VARIABLES
APE
NOM
EDAD
POLI
MES
DIA
AÑO
IMPRIMIR
1
PEREIRA







2

CAROLINA






3


23





4



1500




5




5



6





19


7






2013

8







ALBUJA, PABLO, 23, 1500 2, 19, 2013

PARA MES=14
SECUENCIAS/VARIABLES
APE
NOM
EDAD
POLI
MES
DIA
AÑO
IMPRIMIR
1
RAMOS







2

CAMILA






3


53





4



1370




5




14



6





0


7






0

8







RAMOS, CAMILA, 53, 1370, 0, 0, 0
PARA POLIZA=1000000
SECUENCIAS/VARIABLES
APE
NOM
EDAD
POLI
MES
DIA
AÑO
IMPRIMIR
1
BRITO







2

EDISON






3


45





4



1000000




5




11



6





30


7






2013

8







BRITO, EDISOM, 45, 0, 11, 30,2013

No hay comentarios:

Publicar un comentario