Uso de centinelas para toma de decisiones. Esquemas y diagramas de flujo. Ejemplos resueltos. (CU00167A)

Resumen: Entrega nº 66 del curso Bases de la programación Nivel I.
Codificación aprenderaprogramar.com: CU00167A

 

 

SEÑALEROS (CENTINELAS) PARA TOMA DE DECISIONES

Es habitual el uso de variables para ser portadoras de información de cara a la toma de decisiones a lo largo del programa. Las posibilidades son tan variadas como imaginación podamos tener. Indicaremos algunos usos posibles:

 

 

 

· La variable adquiere valor a partir de un menú inicial de múltiples alternativas y a partir de ahí guía la toma de decisiones del programa.

· Existe un menú inicial y diversos menús u opciones a lo largo del programa, por lo que un grupo de señaleros van tomando valor y guiando la toma de decisiones.

· La variable adquiere valor a partir de un cálculo interno del programa y sirve de guía para la toma de decisiones.

· La variable va asociada a cada uno de los datos o serie de datos indicando su terminación.

· La variable va asociada a un dato o serie de datos a los que aporta información relativa a su origen, calidad, contenido, etc.

 

 

Consideremos los siguientes ejemplos:

 

Ejemplo 1 aprenderaprogramar.com: Un programa de una fábrica para el cálculo de salarios tiene un menú inicial que pide el tipo de trabajador con las opciones de: 1. Turno de mañana, 2. Turno de tarde, 3. Turno de noche, 4. Trabajador en prácticas. La elección queda almacenada en la variable Tipo. Un primer enfoque de organización del programa nos daría alternativas como:

 

 

 

 

En el primer esquema, en base al valor que tenga el señalero se siguen distintos procesos. En el segundo, hay unos procesos comunes independientemente del valor del señalero, y otros procesos específicos en función del valor de la variable. Poner en común todo lo que se pueda nos permite ahorrar código, pero si es posible o no habrá que estudiarlo para cada caso particular.

 

 

Ejemplo 2 aprenderaprogramar.com: En el programa anterior se decide dividir a los trabajadores según su antigüedad en 1. Menos de un año de antigüedad, 2. Entre uno y cinco años de antigüedad, 3. Más de cinco años de antigüedad. La elección queda almacenada en la variable Ant. Por otro lado, la variable Tipo almacena el tipo de trabajador.

La estructura del programa habría que estudiarla con el fin de optimizarla. Una posible sería del tipo que muestra el siguiente esquema.

 

 

 

Ejemplo 3 aprenderaprogramar.com: Un programa pide dos parámetros z y h que sirven para calcular el valor de la variable Omt. En función de que el contenido de Omt sea igual, mayor o menor que cero el señalero Ref toma tres valores posibles. El esquema podría ser algo así:

 

 

El programa continuará usando el señalero Ref para la toma de decisiones. ¿Por qué no seguir tomando decisiones en base a la variable Omt? Por un lado puede que nos interese usar un señalero que aporte claridad de interpretación. También es posible que Omt cambie de valor en los siguientes pasos del programa y el señalero nos sirve para recordar algo que ha ocurrido pero que ya no ocurre.

 

 

Ejemplo 4 aprenderaprogramar.com: Un archivo contiene los datos laborales relativos a un mes de trabajo en una empresa, organizados de la siguiente manera:

Dato(1) = [Número de trabajador]

Dato(2) = [Días trabajados en el mes a jornada normal]

Dato(3) = [Horas extras realizadas en el mes]

Dato(4) = [Señalero – 99]

Dato(5) = [Número de trabajador]

Dato(6) = ... etc.

 

 

En base a ello podemos tomar decisiones. Por ejemplo, si después de un Dato(x) que debe contener el señalero éste no se encuentra, puede significar que ha habido un error o problema al guardar los datos del trabajador número x – 3. Así, podríamos programar:

Si Dato(x) = - 99 Entonces

Mostrar “Se han leído los datos del trabajador nº”, x - 3

SiNo

Mostrar “Existe un error al leer los datos del trabajador nº”, x – 3

FinSi

 

 

Ejemplo 5 aprenderaprogramar.com: Un archivo contiene los datos laborales relativos a un mes de trabajo en una empresa, organizados de la siguiente manera:

Dato(1) = [Número de trabajador]

Dato(2) = [Horas totales trabajadas en el mes]

Dato(3) = [Señalero – 66: indica turno de mañana]

Dato(4) = [Número de trabajador]

Dato(5) = ... etc.

 

 

El señalero puede adoptar los valores:

- 66 para turno de mañana

- 50 para turno de tarde

- 33 para turno de noche

 

 

Obsérvese que el hecho de que sea negativo le confiere un doble significado: un significado a través del signo que puede ser “último dato del trabajador” y otro a través del valor que informa si el turno es de mañana, de tarde o de noche.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

Donar o colaborar

Este sitio se mantiene abierto gracias al apoyo de muchas personas. Si crees que merece la pena apoyar económicamente este sitio web puedes realizar una donación o colaborar. Contacta con nosotros.

¿Puedo yo aprender?

Seas o no del área informática, si quieres aprender a programar te ofrecemos una solución guiada y personalizada: realizar un curso tutorizado on-line. Con este tipo de curso, podrás aprender a programar de forma ágil y amena.

Acceder a detalles y precios de los cursos tutorizados on-line

Política sobre cookies

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, de acuerdo a tus hábitos de navegación.

Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra Política de Cookies.

En Facebook!

Ahora puedes seguirnos en Facebook. Noticias, novedades y mucho más ¡Te esperamos!

RANKING APR2+

Ranking de lenguajes y entornos de programación aprenderaprogramar.com
 

JULIO - AGOSTO 2017

1. Java / J2EE
2. Entornos Oracle
3. Entornos SQL Server
4. JavaScript, jQuery
5. .NET, C#
6. HTML, CSS
7. Android, iOS
8. Php, MySql


Acceder a detalles sobre el ranking de programación aprenderaprogramar.com

FOROS APR2+

Pregunta, responde, consulta, lee, intercambia...

Participa!!! Entra en los foros aprenderaprogramar.com.

             Copyright 2006-2017 aprenderaprogramar.com                La web abierta a cualquier persona interesada en la programación