Autor Tema: utilidad de las tablas de decisión dudas CU00112A y CU00113A  (Leído 21032 veces)

fran_tm82

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 23
    • Ver Perfil
Hola, siguiendo el curso Bases de la programación nivel I en la entrega CU00112A me encuentro con que se abordan las tablas de decisión. En el ejemplo propuesto, con 4 condiciones nos sale una tabla de 2 elevado a 4, 16 casos. Si el problema tuviera 7 casos nos saldría una tabla con 128 casos, es decir, ya sería prácticamente inabordable. Entonces qué lógica tiene usar esta herramienta si no es útil para un número de condiciones elevado?
« Última modificación: 12 de Septiembre 2014, 18:41 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #1 en: 06 de Noviembre 2011, 17:29 »
Hola fran, efectivamente cuando sube el número de casos las columnas de la tabla crecen exponencialmente, lo cual hace inviable realizar "cálculos a mano". El interés de conocer esta herramienta es que sepamos sus fundamentos y su utilidad, aunque luego sea un ordenador el encargado de resolver los problemas más complejos. Pero para poder programar la tarea del ordenador hemos de conocer los fundamentos.
Responsable de departamento de producción aprenderaprogramar.com

asturinha

  • Sin experiencia
  • *
  • Mensajes: 18
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #2 en: 07 de Noviembre 2011, 07:53 »
La misma situación de crecimiento exponencial de las tablas se da con las "tablas de verdad" que se estudian en las asignaturas de Lógica matemática y Electrónica digital en los estudios de informática.

fran_tm82

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 23
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #3 en: 09 de Noviembre 2011, 07:52 »
No acabo de entenderlo, pero bueno, haré como dices de pensar en la lógica

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #4 en: 10 de Noviembre 2011, 12:44 »
No te preocupes si algún concepto no te queda del todo claro en un momento dado; es posible que a medida que haces ejercicios y avances todo te vaya encajando. Saludos.
Responsable de departamento de producción aprenderaprogramar.com

Enryrigdane

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #5 en: 17 de Diciembre 2011, 07:45 »
Hola buenas noches estoy siguiendo el curso de bases de la programacion nivel 1 solo ke al llegar a  ejemplos de problemas resueltos usanso una tabla de desicion 1 no me keda claro porke las combinaciones inviables en esos 3 casos de la primera tabla y en la segunda y tercera tabla ningun inviable. Tambien siento confusion en los ejemplos posteriores a estas 3 tablas donde se explican las siguientes tablas con unas notas de 1.2 y 3 asteriscos.
Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #6 en: 17 de Diciembre 2011, 10:22 »
Hola Enryrigdane, voy a tratar de aclarar lo que comentas.

Nos situamos en la entrega CU00113A: Ejemplos de problemas resueltos usando una tabla de decisión.

En el texto enunciado del ejemplo podemos identificar las siguientes condiciones:

- Pagar con tarjeta oro
- Pagar con tarjeta club
- Pagar con tarjeta (oro o club) modalidad joven

A su vez podemos identificar las siguientes acciones:

- Descuento del 15 % (por pago con tarjeta oro)
- Descuento del 5 % (por pago con tarjeta club)
- Descuento del 5 % (por pago con tarjeta modalidad joven)

Al decirnos que los descuentos son acumulables significa que el pago con tarjeta joven supondrá sumarle un 5 % de descuento al descuento que ya tuviera previamente el cliente.

Siempre que el pago sea viable tendremos como acción final que calcular el importe.

Ahora nos planteamos lo siguiente: ¿Hay situaciones que en la práctica no se puedan producir? ¿Qué ocurre si se presenta una situación de ese tipo?

Por ejemplo, supongamos que un cliente ha realizado una compra y va a pagar. El dependiente le pregunta: ¿Con qué tarjeta va a realizar el pago? Las respuestas posibles son:

-Con tarjeta oro joven (caso 3)
-Con tarjeta club joven (caso 4)
-Con tarjeta oro (caso 6)
-Con tarjeta club (caso 7)
-Voy a pagar sin tarjeta (caso 8 )

Ahora supongamos que el cliente responde: voy a pagar con tarjeta oro y club. El dependiente le responde "Eso no es posible señor, tiene que elegir una tarjeta para pagar, o la oro o la club. Pagar con dos tarjetas al mismo tiempo es inviable".

Así llegamos a que en la tabla reflejamos inicialmente todas las combinaciones matemáticamente posibles. Pero luego algunas de ellas no son viables en la práctica.  Para reflejar que algunas combinaciones son inviables añadimos una fila en las acciones a la que denominamos "inviable" y ahí marcamos todas las combinaciones que no son posibles, en nuestro caso la 1, 2 y 5.

A continuación procedemos a simplificar la tabla haciendo el siguiente razonamiento: si esos casos no se pueden llegar a producir nunca, ¿para qué tenerlos ocupando espacio en mi tabla? Procedemos a eliminarlos porque no son útiles, y a eso llamamos simplificar la tabla. Por eso en la siguiente tabla ya solo tenemos las combinaciones que son posibles, es decir, las viables. Por eso en la segunda tabla no tenemos ninguna marcada como inviable. Si te fijas en el número que aparece en la parte de arriba de la columna, en la segunda tabla los números que tenemos son 3, 4, 5, 7, 8. Faltan los números 1, 2, 5 que eran los que en la tabla anterior habíamos marcado como inviables y que ya no nos son útiles.

El caso de la tercera tabla es distinta: todas las combinaciones matemáticamente posibles se pueden dar en la práctica, por eso no tenemos ninguna columna marcada como inviable.

Bueno, me he enrollado un poco, pero dime al menos si esta parte ya te queda clara o si todavía te presenta alguna duda para aclararla antes de continuar con la parte de los asteriscos. Saludos.
« Última modificación: 18 de Diciembre 2011, 19:23 por César Krall »
Responsable de departamento de producción aprenderaprogramar.com

Enryrigdane

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #7 en: 18 de Diciembre 2011, 03:06 »
Hola Cesar pues si ya tengo mucho mas claro la cuestion de porque inviable la verdad es que tu explicacion es mucho muy buena  :D
Y pues si t agradeceria si me pudieras explicar lo siguiente ke son los asteriscos porke como t digo tu explicacion anterior fue muy buena.
Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #8 en: 18 de Diciembre 2011, 19:22 »
Bueno, continuemos con el asunto de los asteriscos una vez confirmado que lo anterior queda OK.

El asunto de los asteriscos se puede plantear en términos coloquiales de la siguiente manera:

¿Qué ocurre cuando si pasa un hecho A el resultado es el mismo que cuando ocurre un hecho B? Pues diríamos que es indistinto que pase A o B, porque el resultado va a ser el mismo.

Veámoslo con un ejemplo:

Si llueve, iré al cine.

Si me llaman mis amigos, iré al cine.


1234
LlueveNoNo
Me llaman mis amigosNoNo
------------------------------------------------------------------------------------------------
Voy al cineXXX
Me quedo en casa X


Ahora la pregunta es: ¿Podemos simplificar esta tabla agrupando casos? Resulta que si llueve, es INDIFERENTE que me llamen mis amigos, porque en cualquier caso si llueve iré al cine.

Tal y como se plantea en el curso: Para intentar simplificar la tabla sumaremos casos de dos en dos, agrupando aquellos cuyo cumplimiento de condiciones coincida en todos menos en un parámetro. Dicho parámetro se transformará en un -- , equivalente a indiferente o Sí / No.

A nosotros nos quedaría:

1-234
LlueveNoNo
Me llaman mis amigos--No
------------------------------------------------------------------------------------------------
Voy al cineXX
Me quedo en casa X



¿Qué refleja esta tabla? Que si llueve, da igual si mis amigos me llaman o no, porque iré al cine.

Hemos agrupado dos columnas en una, de este modo ya tenemos una tabla simplificada. Ahora tendríamos que valorar si podemos seguir simplificando la tabla. El caso 3 y el 4 llevan a distinto resultado, por lo tanto no vamos a poder simplificar. El caso 1-2 y el caso 3 sí llevan al mismo resultado, ahora tenemos que ver si el cumplimiento de condiciones coincide en todo menos en un parámetro. Esto no se produce, porque tenemos un Sí <--> No, junto a un indiferente <--> Sí, no se produce la coincidencia de condiciones.

En el texto del curso, lo que indica como "Ejemplos" son ejemplos de distintas situaciones que se podrían presentar y se explica cómo se simplificarían. Esta parte no es demasiado importante.

En la parte final, se explica cómo se aplicarían estas ideas al caso de la nómina de los empleados. Con lo que he tratado de explicar aquí, sí deberías ser capaz de entender las dos simplificaciones que se hacen.

Finalmente dice "Eliminamos también la línea de inviable pues en ningún caso es útil. Esta eliminación la hacemos porque "inviable" no se produce nunca en este problema. Entonces esa línea no tenemos por qué mantenerla. Es decir, podríamos tener más líneas como "Cierra la empresa", "Hay una huelga general", "Cae un meteorito", etc. pero todas aquellas líneas de acciones que no llegan a producirse nunca las podemos eliminar porque si son situaciones que no se producen ¿para qué vamos a estar ocupando espacio con ellas?

Trata de repasar lo que te he expuesto en este post y ya espero tu respuesta para ver si te ha resultado suficientemente aclaratorio o no. Saludos.
« Última modificación: 18 de Diciembre 2011, 19:40 por César Krall »
Responsable de departamento de producción aprenderaprogramar.com

Enryrigdane

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #9 en: 20 de Diciembre 2011, 04:54 »
Hola cesar he repasado las tablas y pues mira creo ke saber donde esta el error conmigo mira lo ke pasa eske no logro encontrar las relaciones de si no, osea necesito conocer y comprender todas las combinaciones posibles de si no, para poder comprender  la unificacion de columnas osea el porke se unifican esas unicas tablas solamente por ejemplo en las tablas de desicion 2 ¿porke se unifican las tablas 1-3 y    4-5 solamente? donde se esta calculando la nomina del empleado.
Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #10 en: 21 de Diciembre 2011, 07:59 »
Hola, lo primero es ir paso por paso:

Primer paso: ¿El ejemplo que he expuesto en el post anterior ha sido suficientemente aclarador, es decir, me he explicado como para comprender bien la simplificación en el ejemplo de "Llueve" y "Me llaman mis amigos"?

Segundo paso: ¿Por qué se unifican las columnas 1-3 y 4-5?

Respuesta a esta pregunta: para simplificar hemos de buscar pares de columnas donde coincidan todos los valores excepto uno de ellos. Si buscamos, encontramos que esta condición la cumplen las columnas 1-3.

Ahora, ¿qué significado tiene simplificar por ejemplo las columnas 1 y 3? El caso 1 implica que es un empleado altamente productivo, encargado y que ha cometido una infracción grave. El caso 3 implica que es un empleado altamente productivo, no es encargado, y que ha cometido una infracción grave. Ambos casos nos llevan a las mismas acciones. Esto significa que si un empleado es altamente productivo y ha cometido una infracción grave, da igual que sea encargado o no (es INDIFERENTE), lo cual nos permite unificar esas dos columnas y poner un guión en el apartado "Empleado encargado". Ese guión significa que da igual si el empleado es encargado o no, es decir que puede que SÍ sea encargado o que NO sea encargado, que el resultado va a ser en ambos casos el mismo. Eso es lo que significa el guión.

¿Por qué hemos unificado esas columnas y no otras? Nosotros buscamos columnas donde podamos hacer simplificaciones y las vamos haciendo, no hay ningún orden especial. Quizás hubiéramos podido simplificar la columna 1 con otra, pero hemos encontrado que podíamos simplificar con la columna 3 y lo hemos hecho.

Dime si te resulta suficiente la explicación para el primer paso lo primero. Si no se comprende el primer paso, no se comprenderá el segundo. Saludos.
Responsable de departamento de producción aprenderaprogramar.com

Enryrigdane

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #11 en: 26 de Diciembre 2011, 04:39 »
Hola buenas noches Cesar a quedado entendido el paso unoe al fin jeje y pues la verdad si me interesa continuar con lo siguiente ya que entre a trabajar como programador de sistemas y pues necesito reafirmar conocimientos y fundamentos de la universidad.
Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #12 en: 26 de Diciembre 2011, 20:06 »
Hola, si ya ha quedado claro el paso 1 (simplificación de "Llueve" y "Me llaman mis amigos") pásate a la entrega CU00113A y trata de entender la simplificación que se hace de la tabla.

En el anterior post estaba explicado, pero te repito un párrafo que me parece importante porque te da una buena clave: "El caso 1 implica que es un empleado altamente productivo, encargado y que ha cometido una infracción grave. El caso 3 implica que es un empleado altamente productivo, no es encargado, y que ha cometido una infracción grave. Ambos casos nos llevan a las mismas acciones. Esto significa que si un empleado es altamente productivo y ha cometido una infracción grave, da igual que sea encargado o no (es INDIFERENTE), lo cual nos permite unificar esas dos columnas y poner un guión en el apartado "Empleado encargado".

Si no te queda claro el paso 2 del post anterior, dime dónde se te presenta el problema y trato de aclararlo. Saludos.
Responsable de departamento de producción aprenderaprogramar.com

Enryrigdane

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #13 en: 27 de Diciembre 2011, 21:33 »
Hola Cesar T agradesco tu atencion y pues me ha quedado claro ese ejemplo tambien ya que con el solo hecho de que el empleado cometa alguna infraccion nos llevara a lo mismo sin importar los otros criterios de si es productivo o no, cierto.
Sabes me emociona seguir avanzando en el curso porque siento que me esta ayudando mucho a desarrollarme.
Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #14 en: 27 de Diciembre 2011, 23:05 »
Me alegro que estés motivado para seguir avanzando. Uno de los problemas principales de muchos alumnos es que abandonan en cuanto aparece una pequeña dificultad. Te aparecerán con seguridad más dificultades, pero con un poco de esfuerzo y la ayuda que puedas conseguir podrás avanzar hasta donde te propongas. Ten en cuenta que las tablas de decisión resultan adecuadas por cuanto introducen muchos conceptos de lógica y toma de decisiones útiles para la programación, pero que tampoco son lo más importante dentro del curso. De hecho, dentro del curso hay partes que se pueden "saltar" sin que esto suponga que el curso no se pueda completar. Así que lo importante es completar el curso, no entender todos y cada uno de sus apartados o párrafos. Animo.
Responsable de departamento de producción aprenderaprogramar.com

Enryrigdane

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #15 en: 29 de Diciembre 2011, 20:56 »
Hola Cesar por el momento agradecido y satisfecho por el curso, lo siguiente seria la cuestion de los problemas con resolucion intuida, directa,etc. En base a esto ¿cuales utilizariamos en programacion? ¿y como puedo aprender a identificar bien a que tipo de resolucion pertenece cada problema?
Saludos.

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #16 en: 29 de Diciembre 2011, 23:31 »
Hola Enryrigdane, si te parece bien voy a abrir un nuevo hilo (tema) denominado "Cómo reconocer y abordar problemas en programación" y ahí te respondo, más que nada para no alargar este hilo que trataba sobre tablas de decisión.

En ese nuevo hilo te respondo la consulta.
Responsable de departamento de producción aprenderaprogramar.com

Enryrigdane

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #17 en: 30 de Enero 2012, 20:24 »
Hola Buen dia Cesar siguiendo con el curso bases de la programacion nivel 1 me encuentro nuevamente con algunas dudillas sobre unos ejemplos de tablas de desicion en la entrega nº47 (CU00148A) en el criterio donde se hace mencion a c1 y c4 con 2 indiferencias ya que no logro comprender el criterio que toman para definir esas 2 diferencias y pues otra duda es porque cuando empiezo a ver muchos ejemplos de tablas se me empieza a hacer tedioso y como crees pudiera hacerle para que eso no ocurra.
Saludos ;)

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:utilidad de las tablas de decisión
« Respuesta #18 en: 31 de Enero 2012, 16:55 »
Hola Enryrigdane, trato de dar una respuesta a las cuestiones que planteas:

Sobre la entrega CU00148A

1. Partimos de la "tabla origen"
2. Buscamos las filas donde exista menor número de indiferencias (es decir, menor número de --). Estas filas son la C1 y la C4, en ambas solo existe una indiferenciea.
3. Como estamos en caso de empate (entre C1 y C4 hay empate, pues no hay una que tenga menos indiferencia que la otra), aplicamos el criterio para casos de empate: "En caso de empate, se divide por la fila que contiene menor número de indiferencias en la vertical de sus indiferencias."

Esta expresión es un poco complicada, pero vamos a tratar de ver cómo lo haríamos. La fila C1 tiene la indiferencia en la columna 4-6-7-12. ¿Cuántas indiferencias hay en la vertical de 4-6-7-12? La respuesta es que hay 2.

Ahora analizamos la fila C4: tien la indiferencia en la columna 1-2-3-8. ¿Cuántas indiferencias hay en la vertical de 1-2-3-8? La respuesta es que hay 2 también.

Vuelve a existir empate, por lo que aplicamos el criterio que en el curso numera como a.1.1) En caso de empate, se divide por la fila que el programador estime oportuna, atendiendo a su conocimiento del problema, y si no hay criterio a seguir siempre la opción “menor” o “sí”.

Es decir, elegimos una cualquiera, en general la más pequeña. Consideramos que el orden es C1, C2, C3, C4... de modo que entre C1 y C4, elegimos C1.



Sobre muchos ejemplos de tablas y que se puede hacer tedioso. Te voy a dar dos consejos que me parece te puedan servir. Tomarlos o no, depende de cada persona:

El primero: el esfuerzo y la constancia llevan a conseguir los objetivos. El objetivo lo marcamos cada uno. Si el tuyo es aprender a programar, con esfuerzo y constancia lo conseguirás.

El segundo es más práctico. Es verdad que los contenidos del curso son  bastante teóricos, pero son la base. ¿Cómo hacer para hacer más ameno el aprendizaje? La recomendación que te daría es: empieza el Curso de Visual Basic nivel I que tenemos en la web. Vete siguiéndolo, de forma que siempre veas los fundamentos (en el curso bases de la programación I) y luego la aplicación práctica (en el curso Visual Basic nivel I). Verás que muchos contenidos y ejercicios de aplicación del curso de visual basic se corresponden con contenidos y ejercicios planteados en el curso bases de la programación (P.ej. Variables en programación -- > Variables en Visual Basic). De esta manera, conjugas los fundamentos con la aplicación práctica.

Espero que lo expuesto te sirva de ayuda. Saludos.
Responsable de departamento de producción aprenderaprogramar.com

Enryrigdane

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 15
    • Ver Perfil
Re:utilidad de las tablas de decisión
« Respuesta #19 en: 03 de Febrero 2012, 18:29 »
Hola Buen Dia Cesar  :)
Asi ya cambia la cosa la verdad es que admiro y t agradesco como te las ingenias siempre para plantearme ejemplos muy aclaradores y pues esta bien lo hare como dices llevando ambos cursos  creo que es muy buena opcion ya que aqui en mi trabajo a pesar de no saber mucho uso visualstudio.net y sql server para programacion web y con apoyo de mis compañeros que tambien me orientan y un poco de ingenio mio he logrado sacar la chamba hasta el momento jeje.
Saludos. :D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".