DFD, clase7 – operaciones con decisiones

Hola a todos,

Vamos a comenzar a ver el uso de la decision en ésta entrada 😉

Recomendacion:

ver la clase4operaciones con variables

Bien, primero antes de nada..

¿ Por qué decision ?

porque los programas no solo funcionan con operaciones como hemos venido viendo, si no que en muchos casos depenen y varian mucho con los valores que tenemos, por ejemplo.. » si la respuesta es mayor a 15 entonces restarle 3  «. Ése es un caso tipico del uso de la decision. Pero vamos a hacer diferentes ejercicios para que quede más claro 😉

¿ Qué simbolo usamos para la decision ?

los simbolos ya los hemos declarado con anterioridad ( AQUI ) 😉

Entonces, con esas dos preguntas ya ha quedado mas o menos la idea en el aire de lo que haremos con el simbolo decision. Ahora vamos con un ejercicio, para que quede más claro:

9.) Hacer un algoritmo que pida tres numeros, luego calcule cual es mayor entre el primero numero y el segundo numero. Si el primer numero es mayor que el segundo se le restará el tercer numero, si el segundo numero es mayor que el primero ( osea lo contrario ), se le sumará el tercer numero. Mostrar el numero final, avisando al usuario si se le restó o se le sumó el tercer numero.

– Bien, ¿ que nos pide ? 😉

Nos pide tres numeros,

ver si el primero es mayor al segundo. Si es así se le restará el tercer numero.

ver si el segundo es mayor al primero. Si es así se le sumará el tercer numero.

Comencemos, abrimos DFD

– Colocamos de que trata el algoritmo

02-08-2009 20-43-28ampliar imagen

– Ahora declaramos las variables que usaremos, en éste caso vamos a usar 3 variables pues son los numeros que debemos pedirle al usuario/a.

im2ampliar imagen

– Ahora vamos a pedir cada numero con su mensaje de ingreso respectivo

im3ampliar imagen

im4ampliar imagen

im5ampliar imagen

im6ampliar imagen

im7ampliar imagen

im8ampliar imagen

– Ahora viene la parte de hacer las operaciones ( si fueran los programas que habiamos hecho antes, osea sin decision ). Pero ahora tenemos que usar la decision, de eso depende el resultado. Entonces usamos el simbolo de decision y hacemos lo siguiente:

im9ampliar imagen

EXPLICACIÓN: al colocar el simbolo de descision y darle doble click, se nos abre esa ventana que vemos en la imagen de arriba. Pues bien tiene un formato, que es el siguiente:

* Condidcion: aquí pondremos la condicion como su nombre lo indica, condicion que queremos validar para ver si es verdadera o falsa y asi seguir con el programa. En éste caso por ejemplo se ha dicho que si n1 es mayor que n2 entonces haremos algo, que es más adelante 😉

* Condicion verdadera – derecha / izquierda: aquí colocamos para donde queremos que sea la condicion verdadera, osea viene marcado por defecto a la derecha. Osea que el SI va a estar a la derecha, si le damos click en el boton «izquierda» pues el SI estará a la izquierda, es solo cosa de estetica no tiene funcion para nada importante.

* En el camino verdadero ( camino de la verdad ) *

– Ok, entonces ahora que hemos validado si n1 es mayor a n2, queda hacer lo que nos dijo el enunciado del ejercicio si eso era correcto. Osea que si es correcto que n1 es mayor a n2, se le restara el valor que esté almacenado en n3. Así:

im10ampliar imagen

EXPLICACION: hemos usado el simbolo de «asignacion» porque le vamos a asignar a n1 un nuevo valor, porque se cumplió la validacion, y como cumplio con ella dice que: » si n1 es mayor a n2 entonces se le restará n3 «. Eso es lo que hemos planteado ahi. Vemos que estamos siguiendo el camino de «verdadero» ( osea a la derecha ), osea estamos suponiendo que el usuario ya ingresó los dos numeros y que el primero que ingreso es mayor al segundo y por lo tanto le restamos el tercer numero.

– Ahora, como estamos en el «camino de la verdad» ( a la derecha – verdadero ), ya le asignamos a n1 su nuevo valor ( por haber sido mayor que n2, se le restó n3 ). Nos queda solo mostrar el resultado, así:

im11ampliar imagen

* En el camino falso ( camino de la falsedad ) *

– Así como «suposimos» el camino de la verdad, osea que el primer numero era mayor al segundo numero. Ahora vamos a suponer que no es asi, osea el camino contrario que viene a ser el camino falso.

– Siendo NO, el camino falso y está dirigido a la izquierda ( el lado contrario de la verdad, porque la verdad es la derecha. aunque podemos cambiarle el sentido ), la operacion es la misma. Solo con un cambio que ahora se va a sumar el numero porque la condicion no se cumple, la condicion era de que n1 sea mayor a n2. Y como vamos a suponer que no pasó eso, pues se le restará a n1 el valor que tenga n3. Así:

im20ampliar imagen

EXPLICACION: como el simbolo de condicion tiene dos lados:

* lado de la verdad, el derecho ( por defecto )

* lado de la falsedad, el izquierdo ( por defecto )

Hace un momento hicimos la «programacion» en el lado de suposision correcto, es decir que pensamos/supusimos que el usuario ingresó los tres  numeros y que el primero era mayor que el segundo. Por eso hicimos lo que decia el enunciado, osea que le restemos el valor del tercer numero.

Ahora que estamos en el lado de la falsedad, debemos «programar» lo que sucederia ahi, osea que le sumaremos el valor de n3, ya que ahi se supone que no cumplió la condicion. Si a la derecha significaba que n1 era mayor que n2, pues a la izquierda es lo contrario n2 es mayor a n1. Por lo tanto le sumamos el valor de n3.

– Ahora solo queda mostrar el mensaje contrario al que mostramos en el camino de la verdad, es decir lo contrario. Ya que ahi le restamos el valor de n3, ahora diremos que se le sumó el valor de n3 porque n1 no fue mayor a n2, si no que n2 fue mayor a n1. Así:

im21ampliar imagen

Saludos 😉

32 respuestas

  1. Todo funcionó a la perfección, gracias 😀

  2. chevre la clase sigan asi

  3. hola estan excelentes los ejercicios felicitaciones por su trabajo y de antemano gracias por compartirlo con los que queremos aprender a programar.

    • Hola William,
      Bienvenido al Blog compañero, muchas gracias por la felicitacion, trato de hacer lo mejor que puedo cada entrada 😉 . Para mi es un gusto que te sirvan y asi mismo que con ellas puedas aprender, Gracias de nuevo. Suerte 😀

  4. que buen sitio de trabajo,,,,,,me gustaria saber como representar una matriz en dfd…..gracias

  5. Construir un algoritmo que calcule y presente por pantalla el signo del zodiaco a partir de la introducción por teclado del día y mes de nacimiento como números enteros.

    Eddy. ayudame qe no lo entiendoo
    :S

    • Hola Mauro, ese ya lo he hecho pero en c++ . Vamos es un poco largo de hacer pero es facil, no estoy contando de mucho tiempo por lo tanto te dire unas pautas de como lo debes hacer.
      1) necesitas solo 2 variables, el dia y el mes.
      2) pides que las ingrese y las validas ( osea que no sean dias mayores a 31 ni meses mayores que 12, etc.. )
      3) validas con una condicion simple, si el dia fue «tal» y el mes fue «tal» entonces es «tal» signo, y asi con los 12 signos del zodiaco.
      PD. en la wikipedia puedes encontrar los rangos de dias,meses en que van los signos. Saludos!

  6. hola
    gracias por tus tutoriles son muy buenos
    necesito ejercicios de apicacion de dfd con estructura de para, y mientras ,lo necesito urgente.
    te agradeceria si me colaboras

    • Hola Claudia, bienvenida!
      Pues aquí en el blog, puedes encontrar varios de esos; hechale un vistazo a la miscelánea de ejercicios DFD en la sección de [AYUDA]
      Saludos!

  7. HOLA, SOLO UNA PREGUNTA… SI EN UNA DESICICION QUIERO REGRESAR AL PRINCIPIO DEL ALGORITMO COMO LE HAGO? POR EJEMPLO: PREGUNTO: «DECEA FINALIZAR EL PROGRAMA S/N » Y ESCRIBO NO, COMO PUEDO HACER PARA QUE EL PROGRAMA INICIE OTRA VEZ?

    • Hola Jandro, bienvenido!
      Pues, puedes hacerlo el algoritmo dentro de una funcion y al final regresar a ella llamandola si es que el usuario coloco «S», caso contrario que siga el rumbo normal y termine el algoritmo; para ello debes saber manipular funciones, aquello puedes encontrarlo [ aqui ]. Saludos!

  8. uffffff, buensisimos !!!

  9. hola EDDY SOY DANIEL estoy intentando hacer un diagrama de flujo que dice: hacer un df que lea 3 calificaciones y que indique si se esta aprobado o reprobado con una calficacion de aprobacion de 7
    -lo primero que hago es ponerle nombre al programa.
    segundo declaro variables que serian 3 o 4 por que una variable seria para el promedio? y el anuncio pidiendole que introdusca los valores.
    depues coloco la funcionde toma de desicion
    podrias explicarme por favor

    • Hola Daniel, está bien como vas; pero hay que aclara como es el metodo para sacar el promedio en tu caso ( el ejercicio indica como se basa el promedio? ), si no es asi; podemos hacerlo de la manera mas usual que son 3 notas y al sumarlas y dividirlas para el # de notas, en éste caso 3 y nos daria el promedio general y ahi si: validar si es mayor o igual a 7 para ponerle aprobado, caso contrario reprobado. Usarias de variables a: nota1,nota2,nota3,promedio y bueno la formula de promedio seria: promedio -> ( nota1+nota2+nota3 )/3, luego validas con la toma de desicion si promedio es mayor a 7 muestras «aprobado», sino «reprobado». Cualquier otra inquietud por aqui estamos. Saludos!

  10. MUCHAS GRACIAS POR RESPONDER TAN RAPIDO A MIS DUDAS,EL PROBLEMA NO ESPECIFICA LA MANERA DE SACARLO, LO ESTABA HACIENDO ASI COMO USTED DICE,YA QUE DECLERE LAS VARIABLES NOTA1 NOTA2 NOTA3 Y LA VARIABLE PROMEDIO CON LA FORMULA (NOTA1+ NOTA2+NOTA3)/3, TENGO QUE COLOCA EL SIMBOLO DE CONDICION O PONER UN SIMBOLO DE SALIDA PARA QUE ME DE EL PROMEDIO. MUCHAS GRACIAS

    • Pues Daniel, como ves en la clase7 donde estas escribiendome la duda, antes de hacer una desicion se debe tener «lo que se va a evaluar» para de ahi si decidir. Entonces antes de usar la desicion debes ya tener el promedio, entonces el promedio lo hallarias antes; luego en la decision ya preguntarias si es mayor o no a 7, si es verdadero usas el simbolo de salida colocando en él «aprobado», si es falso tambien usas el simbolo de salida pero colocando en él «reprobado».
      PD. por favor, no escribas todo en mayusculas, solo usalas para hacer enfasis pero no son necesarias en realidad. Saludos!

  11. MUCHISIMAS GRACIAS YA ENTENDI LO QUE ME EXPLICO YA PUDE HACERLO GRACIAS A USTED.QUE BUENO QUE EXISTAN PERSONAS QUE LES GUSTE ENSEñAR Y TRANSMITIR SUS CONOCIMIENTOS, USTED ES COMO UN MAESTRO PERSONAL PARA CADA UNO DE SUS ALUMNOS.

  12. gracias esta bien,pendientes

  13. eddy muy bueno todo sirve de mucho explicaitvo y muy organizado gracias pero me quede en lo de resolver matrizes ayudae eddy gracias donde ecuentro eso o realiza una clase 🙂

  14. Hola, estoy viendo tus clases y me parecen excelentes, sin embargo en el caso de este ejercicio sea N1=N2, entonces no existe una decisión propuesta lo cual generaría error en el programa, adjunto mi ejercicio y me dices, un saludo y gracias!!! [comentario editado]

    • Hola Sergio, claro es que no estamos evaluando en ese caso ya que evaluar todas las posibles condiciones haría un poco mas extenso el diagrama y por lo tanto la explicación, por aquello me centro en lo que dice el problema y a resolverlo puntualmente, estamos tomando como premisa que el usuario ingresará números pero no iguales ya que el fin del ejercicio es diferenciar entre mayores y menores. Por cierto, editare tu comentario pues al colocar tu e-mail así puedes ser victima de spam. Saludos!

  15. excelente, me encanta como explicas es genial, gracias a ti estoy entendiendo mucho mejor este programa felicitaciones!! 🙂

  16. Hola Eddy tengo una duda con lo de las decisiones, como se expone en este caso resulta que tengo unos rangos de edades para determinar si una persona es un niño, joven, o anciano
    de 0 a 13 se considera niño
    de 13 a 29 joven, el problema es que despues de plantear la decision de que la edad13 pero al mismo tiempo edad<29, como hago para expresar este rango en la decesion, agradezco toda la información que haz brindado a la comunidad, y te agradeceria aun más si me ayudas a resolver mi duda

  17. perdon me equivoque como plantear que edad=>13 y al mismo tiempo edad<29 para defenir que el rango entre los 13 y 29 son jovenes

    • Hola Andrea, bienvenida!
      Pues mira, esas son decisiones que dependen de mas de una condicion; entonces debemos usar los operadores logicos que son ( y, o, diferente ), vamos con tu ejercicio:
      Necesitas saber si es niño,joven o anciano por medio de la edad, entonces podrías colocar en la decisión:
      ( ver imagen )
      Saludos!

  18. gracias por tu ayuda eddy, me sirvio bastante

  19. HOLA MI AMIGO ME PUEDES AYUDAR CON MI DIAGRAMA DE FLUJO QUE SIMULE UN CAJERO AUTOMATICO 5B.
    QUE DEVERA SOLICITAR LO SIGUIENTE:

    1) UN CODIGO DE TARJETA.
    2)VERIFICACION DEL CODIGO.
    3)OPERACIONES: RETIRO Y SALDOS DE DINERO.
    4)QUE MUESTRE SUS DATOS.

    MI CATEDRATICO ME LO DEJO Y NO SE COMO HACERLO TE AGRADESCO POR TU BLOG TE AGREDECERIA AUN MAS SI ME AYUDAS.

  20. hola porfavor me ayudas con un programa q me diga si un numero es positivo o negativo

  21. hola… gracias por tu blog… creo que te equivocaste el final de este enunciado
    «Solo con un cambio que ahora se va a sumar el numero porque la condicion no se cumple, la condicion era de que n1 sea mayor a n2. Y como vamos a suponer que no pasó eso, pues se le restará a n1 el valor que tenga n3. Así:»,
    creo que es se le sumara, no se le restara. gracias 🙂

Deja un comentario