DFD, clase10 – ejercicios de aplicacion IV

Hola a todos/as,

Bien ahora que vimos el ciclo: «mientras que..» , haremos unos ejercicios para dejar mas claro su uso 😉

Recomendación: ver la clase9

13.) Hacer un algoritmo que haga lo siguiente:

Pida un numero, mientras que el numero que ingrese el usuario/a, NO sea 100 debera volver a pedirle el numero cuantas veces sea necesario, hasta que ingrese el valor de 100. Una vez ingresado el valor 100 que muestre un mensaje diciendo: «correcto».

Bien, entonces debemos pedir un numero y que si no es 100 el valor ingresado se seguirá pidiendo el numero hasta que ingrese ése valor. Despues para confirmar que se ingresó 100 se muestra un mensaje de «correcto». Vamos a ello:

– Abrimos DFD

– Colocamos el detalle del ejercicio

im1ampliar imagen

– Declaramos las variables, apenas necesitamos una variable que va a ser el numero que ingresará el usuario ( porque si se fijan no hay ninguna operacion que hacer 😉 ), entonces vamos con la variable: «numero»

im2ampliar imagen

– Ahora vamos con la condicion 😉 , la condicion decia que si el numero que ingresaba el usuario/a no era 100, pues que lo vuelva a pedir hasta que ingrese esa cantidad, entonces vamos a pasar al lenguaje del algoritmo eso, para ellos colocaremos:

im3ampliar imagen

EXPLICACION: el simbolo != significa «no es igual a«, entonces al poner:

numero != 100 , queremos decir que « mientras que numero no sea igual a 100 «, pues que haga lo que le vamos a especificar.

¿ Y que era lo que debia hacer si el numero no era 100 ? 😉

Pedirlo y pedirlo hasta que ingrese esa cantidad, entonces eso es lo que haremos, le indicaremos que el algoritmo pida otra vez el numero mientras el numero no sea igual a 100. Así:

im4ampliar imagen

– Bien eso hará que si el numero ingresado no es 100, lo vuelva a pedir hasta que el numero ingresado sea ése. Ahora hay que recordar que para confirmar que se ingreso el numero 100 ( el que objetivo de la condicion ). Debiamos mostrar un mensaje de confirmacion, osea mostrar: « correcto «

im5ampliar imagen

14.) Hacer un algoritmo que haga lo siguiente:

Pida dos numeros al usuario/a, y que los multiplique. Si la multiplicacion da un valor menor a 150, se volveran a pedir los numeros hasta que la multiplicacion de ambos tengan una respuesta mayor a 150. Mostrar la respuesta en cada intento.

Bien, debemos pedir dos numeros, que de una vez declarandolos serian nuestras variables ( n1 y n2 ), luego hay que multiplicarlos, ese valor se deberá almacenar en una nueva variable, declarandola de una vez podemos decir que sera nuestra variable «respuesta«, si en la variable «respuesta» se almacena un valor menor a 150 pues quiere decir que al multiplicar n1 con n2 dió un valor menor a 150 y la condicion dice que se deberán volver a pedir los numeros hasta que en la variable «respuesta» se almacene una cantidad mayor a 150, queriendo decir que n1 * n2 dió un valor mayor a 150, satisfaciendo asi la condicion. Vamos a ello:

– Abrimos DFD

– Colocamos el detalle del algoritmo

img1ampliar imagen

– Declaramos las variables

img2ampliar imagen

– Como ya habiamos dicho las variables iban a ser:

n1 = primer numero

n2 = segundo numero

respuesta = la muliplicacion de n1 con n2

– Seguimos, pediremos los dos numeros con su mensaje respectivo

img3ampliar imagen

img4ampliar imagen

img5ampliar imagen

img6ampliar imagen

– Ahora que ya tenemos los numeros, calculamos la respuesta que viene a ser la multiplicacion de n1 con n2

img7ampliar imagen

– Bien, ¿ hasta ahora que hemos hecho ?

Si el programa estubiera ejecutandose, nos habria pedido dos numeros los hubieramos ingresado y despues calculaba cuanto era la multiplicacion de ambos numeros, pero no hemos hecho la condicion de que si el numero es menor a 150 se deben seguir pidiendo dos numeros. Hasta llegar a un punto en que la multiplicacion de los numeros ingresados sea mayor a 150. Para hacerlo usaremos el simbolo que estamos viendo desde la clase9, el ciclo mientras que, Así

img8ampliar imagen

EXPLICACION: ahi éstamos colocando que si respuesta es menor a 150 va a hacer algo que le especifiquemos, y ¿ qué queriamos que haga si la respuesta osea la multiplicacion de n1 con n2 no era mayor a 150  ? , pues que pida reiteradamente al usuario/a que ingrese otra vez los numeros.

– Entonces por eso, dentro del ciclo colocaremos que lo que dijimos en la explicacion de arriba, osea pediremos denuevo los numeros y calcularemos su multiplicacion, Así:

123456ampliar imagen

img10ampliar imagen

img11ampliar imagen

img12ampliar imagen

img13ampliar imagen

– Bien hemos hecho lo mismo que hicimos al principio del programa, porque el objetivo es éste:

1- Comienza el programa

2- Pide los dos numeros

3- Los numeros se multiplican

4- Si la multiplacion dio mas de 150 se acaba el programa

5- Si la multiplacion dio menos de 150 se vuelven a pedir los numeros y se vuelve a calcular la multiplicacion de ambos numeros para ver si ya da mas que 150 y asi acabar la aplicacion.

6- Mostrar un mensaje de cnfirmacion

– Nosotros estamos en el el punto 5 , y marque con rojo una parte, para que se fijen el por qué estamos pidiendo denuevo los numeros, y fijense que hay que volver a calcular la multiplicacion proque el valor de ella ( la variable: » respuesta » ) va ir cambiando con cada reiteracion, porque en cada reiteracion el usuario/a va a colocar diferentes cantidades.

– Bien, avanzamos al punto 6 , que no es más que confirmar que el resultado de la multiplicacion de n1 con n2 fue mayor a 150.

img17ampliar imagen

– Pero ojo, que el enunciado pedia que ademas de mostrar la «confirmacion» de que la multiplicacion supero la cantidad de 150, dijo que: «Mostrar la respuesta en cada intento.»

– Entonces bajo la parte en donde calculamos la multiplicacion de n1 con n2 , es decir donde calculamos el valor y se lo asignamos a la variable «respuesta» podemos ingresar un simbolo de «salida» mostrando cuanto salio en la multiplicacion en cada intento, Así:

* En la primera vez:

img18ampliar imagen

* En la reiteracion:

img19ampliar imagen

Saludos 😉


23 respuestas

  1. Hola! esta my buena la explicación del ejercicio,y no solo este,sino todos los otros tambien ya que no entendía mucho de dfd y ahora un poco mas ;D.
    He intentado aplicar algo de este ejercicio pero no he encontrado buenos resultados.
    Mejor te lo dejo al ejercicio para ver si podrias explicarme como hacerlo: exactamente me pide «realizar la suma de n numeros y encontrar el primer valor para el cual la suma excede al 1000»
    Bueno eso nomas,despues de aprender dfd me pasaré por las clases de Dev-C++ para aprender más ;D.

    • Hola Leonardo,
      No entendi bien el ejercicio que planteaste la verdad, pero mas o menos entendiendo lo que podrias haber dicho, realizé un algoritmo lo más parecido a lo que tu has pedido amigo, de esta manera:«Algoritmo que realiza la suma de N numeros y si la suma de aquellos numeros exede a la cantidad de 1000, se mostrará el primer numero involucrado en aquella suma.», lo he publicado en la entrada ( DFD – miscelanea de ejercicios ), quedó como ultimo por ahora es el numero 36, Miralo y ejecutalo a ver si es lo que pedias, si no. Cuentame ok 😉
      Espero te sirva campeon, saludos y mucha suerte 😀

      • Es algo parecido, solo que cuando ejecuto y le doy «la suma de 2 numeros» por ej.» 56+67″, la ejecucion finaliza sin resultados.No está bien claro lo que me piden pero lo que entendi es que hay sumar n cantidad de numeros aleatorios hasta que uno de ellos de como resultado un valor mayor a 1000.Ej:Ingresar 4 numeros: (5,8,4,7).Sería «5+8+4+7» =24. Osea»5+8+4+7+5+8+4+7+5+8+4+7+….y la suma de esos numeros se repite varias veces hasta llegar a mas de 1000,suponiendo que el ultimo numero que se sumo y dió como resultado un numero mayor a 1000 fue 7,el programa me indica que efectivamente el numero 7 fue el primer numero que sobrepasó el numero 1000.
        Me recomiendan usar el ciclo mientras.
        Y tambien si no es mucha molestia,¿podrias indicarme la forma de realizar la productoría de n numeros?
        Desde ya muchisimas gracias por responder tan rapido y por tomarte el trabajo de subir un ejercicio hecho :D.

      • Hola Leonardo,
        Lamento no haberte podido respoder ayer, pero tuve problemas con la pc, ahora te digo.. entiendo como va el ejercicio que me pides, pero no recuerdo haber realizado alguna vez funciones con numeros aleatorios en DFD, ¿ estás seguro que es en DFD que te pidieron el ejercicio ?, quizá en lenguaje C++ podriamos realizarlo con un poco de cabeza fria si quieres 😉

  2. hola eddy,
    tengo una pregunta quiero hacer un ejercicio que haga lo siguiente que pida 10 numeros y al final de haber ingresado los diez numeros que me muestre cuanto son positivos, cuantos son negativos y cuantos son ceros.
    lo hice pero cuando lo hago me va mostrando cuantos son positivos, cuantos son negativos, y cuantos son ceros cada vez que ingreso un numero

    • Hola Ragg, como estas 😉
      Pues lo he hecho para que veas el diagrama y asi veas donde estaba el error en el tuyo amigo. Puedes descargarlo aqui mismo desde la miscelanea de ejercicios, quedó como ultimo por ahora es el ejercicio 40. Saludos y que pases bien 😉

  3. eddy disculpa es que alguna vez en clase el profesor nos paso un juego en dfd que consistia en adivinar un numero que el sistema escogia al azar y uno iba ingresando numeros y si estaba por debajo te decia es menor y en caso contrario es mayor algo asi hasta dar con el y te decia en cuantos intentos lo lograste me podrias ayudar a decifrar como se hace

    • Hola Andres, pues claramente si se trata de adivinar se va a usar un random de numeros para que no sean constantes ya que si tu los pusieras siempre adivinarias. Asi que dalo por seguro que tiene algun random, tambien ha de tener alguna validacion que diga «Si el numero que ingresó es menor al que está en el random ( osea el que intentas adivinar )», pues muestre un mensaje: en numero es menor, sino el numero es mayor, hasta dar con el numero que seria «=» al numero «x» que es un random de cualquier rango por ejemplo de 1 – 100.
      Ahora solo queda meter esos datos en un algoritmo o en algun programa de codigos como c++ y tendras hecho el programa. Saludos!

  4. amigo eddy como esta, primero que todo muchas felicitaciones por esta pagina, la verdad que me ha servido de mucho, ya que estoy estudiando ingenieria de sistemas en primer semestre, pero ahora tengo que realizar un trabajo final en dfd, el trabajo «debe hacer algo» osea en mi caso tengo que llevar el control de una sala de videojuegos, como por ejemplo que consola esta siendo utilizada, a que hora ingres a que hora termina cuanto paga etc, y el profesor nos pide que el trabajo tenga menus y cosas asi, pero todo en dfd, asi que me gustaria saber si me puedes ayudar, no se si sea posible contactarme contigo por msn, si es posible mi msn es diegodelpiero34@hotmail.com, la verdad que agradeceria mucho tu ayuda,

    • Hola Piero, bienvenido!
      Primero lamento mucho no poder ayudarte asi de rapido como lo hacia antes a todos mis lectores, pero es que no cuento de mucho tiempo ahora..
      Puedo darte unas pautas de como hacerlo, mira para el menu es facil solo muestras con el simbolo de salida
      algo asi:
      1) consolas disponibles
      2) costo por hora
      3) ingrsar
      y pues validas despues con un simbolo de decision (si – no) si fue 1, pues que muestre las consolas disponibles por ejemplo: PS3, Xbox360, Wii
      si fue 2, que muestre cuanto cuesta x hora el uso de cada una ( o si todas cuestan lo mismo pues poner eso.. )
      y si fue 3, pues solo queda multiplicar las horas que usó por el valor que cuesta, por ejemplo cuando ponga 3 del menu
      deberias pedirle que ingrese, cuantas horas uso y dependiendo de eso hacer una operacion que sea asi por ejemplo:
      total_pagar = horas_usadas * valor_hora
      y listo, muestras el total_pagar , con eso terminaria. Espero mis instrucciones te guien un poco como hacerlo. Saludos y mucha suerte!

  5. me gusta como detallas todos los flujogramas si puedes mandame algo sobre pascal y ciclos for muy bueno el programa nos ayuda mucho

  6. hola Eddy, primero muchas gracias por la ayuda que nos das y segundo, no he podido hacer el siguiente ejercicio: un programa que calcule la suma de los numeros multiplos de 3 y 7 a partir del numero 9 y finaliza en el numero 45, no deben incluirse en la suma los #s entre 21 y 27. Muchas gracias por la ayuda

    • Hola Western, bienvenido!
      Primero si te dice que halles la suma los multiplos de 3 y 7 ( son infinitos porque pertenecen al conjunto de los reales ) entonces te debe dar un limite, y bien te da el limite 45.
      Ahora dice que no debe incluir en la suma el 21 y el 27, entonces ahi ya debes saber que vas a usar una condicion..
      primero debes hacer un «ciclo para» para los multiplos de 3 y otro «ciclo para» para los multiplos de 7,
      en el primero y en el segundo el tope será 45, porque hasta 45 es que debes hallar sus respectivos multiplos.
      Entonces en el primero: «desde 3 hasta 45 de 3 en 3» . En el segundo «desde 7 hasta 45 de 7 en 7 »
      en caso de 3, tendras como respuesta: 3,6,9,12,15,18,21,24,27,30,33,36,39,42,45.
      en caso de 7, tendras como respuesta: 7,14,21,28,35,42.
      Te he puesto en negrita para que veas en donde salen los «21 y 27»; entonces lo que debes hacer es que dentro de cada «ciclo para»
      tener una «variable acumulador» donde vas a ir guardando la suma de cada reiteracion
      es decir, por ejemplo esa variable puedes ponerle:
      en la declaracion, suma3 = 0 y suma7 = 0
      luego en el «ciclo para» ir acumulando la suma de ésta manera: suma3 = suma3 + x
      // x va a ser nuestra variable del ciclo «para» es decir desde x=3 hasta x=45 de 3 en 3 ( lo que te habia puesto arriba )
      esto hara que en la primera haga esto: 0 = 0 + 3
      y sigue… 3 = 3 + 3 , 6 = 6 + 3 …. hasta 42 = 42 + 3 y fin porque llega a 45. y como sabemos
      en los multiplos de 3 está 21 y 27, asi que esos no hay que sumarle ( pero dirás.. ya se los sume porque fue acumulandose toda la suma )
      si, pero ahi vamos a hacer esto sumar 21+27=48 ( esos son los multiplos que no deben entrar ) y ese 48 se lo restas a la suma de todos
      los multiplos eso te dara la suma total, es decir sumando:
      3+6+9+12+15+18+21+24+27+30+33+36+39+42+45=360
      entonces suma3 deberia tener 360 en su interior, pero despues debes hacer una resta simple: suma3 = suma3 – 48
      y entonces suma3 debera tener el valor de 312 ( 360-48 )y ese es «el valor de la suma de todos los multiplos de 3 hasta el 45 excluyendo al 21 y 27»
      Ahora la misma idea es para los multiplos de 7 ( solo que como ya vimos en la del 7 no hay 27 sino solo 21 para restarle al final ), suerte!

  7. holas me ha servido mucho estos ejemplos muchas gracias espero que sigan colgando ejemplos para continuar aprendiendo.
    y si tuvieran mas ejemplos de los ciclos: para , mientras y contador porfa manden a mi correo.

    [ e-mail suprimido por seguridad ]

    gracias

    • Hola Henri, bienvenido!
      Gracias por el comentario, es un gusto haberte sido de ayuda y te aseguro que seguire colgando clases y ejemplos
      a medida que tenga tiempo para hacerlo, por cierto suprimi tu e-mail porque puedes ser victima de spam al dejar
      tu cuenta de correo expuesta en lugares publicos, saludos!

      • bueno gracias pero pense k me podian enviar info ahi.
        porfa ayudame a entender los ciclo para , mientras y los arreglos que me estan causando problemas y se me viene un parcial de esto.

        porfa mandame info de esto si tuvieras urgente.

        te lo agradeceria mucho.

  8. mira si puede pon lo flujogramas y como pasarlo a pascal bueeeeeeeeeeeeenisimo me as ayudado un monton gracias

  9. no se donde deje el otro comentario pero es que me falto algo y dice… leer dos caracteres y decir si estan en orden alfabetico,. No se como determinar si estan en orden alfabetico. gracias

  10. holas
    muchas gracias por tus ejercicios me han servido de mucho
    sera que me podrias hacer el favor de enseñarme como hacer para que el Diagrama de Fuljo escoja un numero al azar
    o como se hace para crear un ‘ramdon’ como tu dijiste mas ariba.
    ((entre 1 y 10))
    porfa es urgente.
    gracias

    • Hola xneider, bienvenid@!
      Para hacer un random en DFD, necesitas declarar una variable como RANDOM( ? )
      Donde los parentesis indincan hasta que numero quieres crear el random, entonces
      si quieres crear un random de 1 a 10 solo necesitas declarar una variable por ejemplo:
      numero <- RANDOM(10)
      pero ojo, random le dará a numero un valor aleatorio entre 0 – 9 porque en el lenguaje
      de los compiladores se comienza a contar desde cero [ más detalles -> Aqui: ejercicio20 ]
      Entonces como tu quieres de 1 – 10, por ahora se me ocurre que podrias validar que:
      «mientras el numero = 0, entonces haga el random de nuevo»
      Saludos!

  11. me ayudas con este ejercicio?
    REALIZAR L SIGUIENTE EJERCICIO EN DFD:

    Suponga que se piden X pesos prestados a un banco, con el acuerdo de devolver Y pesos cada mes hasta devolver el préstamo completo. Parte del pago mensual serán intereses, calculados como el i por ciento del capital por devolver en ese momento. El resto del pago mensual se aplica a reducir el capital a devolver. El programa debe determinar:
    a.- La cantidad de intereses pagada cada mes. Determinamos nosotros 2 %
    b.- La cantidad de dinero aplicada cada mes al capital por devolver, cuanto necesitan pagar cada mes!,
    c.- La cantidad acumulada de intereses pagados al final de cada mes.
    d.- La cantidad del préstamo aún pendiente al final de cada mes. Cuanto se debe para acabar de pagar la deuda1
    e.- El número necesario de pagos mensuales para devolver el préstamo completo.
    f.- La cantidad del último pago (probablemente menor que Y)
    Compruebe el programa usando los siguientes datos: X lo que pedimos prestamos = 7.200.000, Y pesos que debe devolver cada mes = 360.000, i= 1%

  12. bueno mi duda es la siguiente como utilizar variables acumuladoras y contadoras en dfd he tenido varios problemas no cuando se usa en asignaciones hay esta todo perfecto, pero hablando del ciclo para y el siclo mientras que, ya es otro el asunto.

    tengo un ejercicio que no he podido realizar es el siguiente

    haga un dfd que le 10 edades y diga cuantas de estas son mayores de 21 y menores de 30

    espero me puedas ayudar me han servido mucho todo lo que has publicado me has sacao de muchas dudas pero cuando se habla de contadores y acumuladores en variables no se exactamente como funciona este programa y eso me a traido varios inconvenientes

    gracias de nuevo y espero una respuesta

  13. Hola tengo un ejercicio de DFD que dice: pedir al usuario numeros hasta que ingrese 0. se pide informar el valor mas alto y pueden haber numeros negativos, combinados o positivos. Estoy en el ciclo while o mientras pero nose como usar un arreglo para que guarde la cantidad de numeros que se ingresen y luego compararlos.

Deja un comentario