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