Estructuras Repetitivas programación con Desde (para)

 

Forma de uso

 

Desde Variable =Valor Inicial Hasta  Valor Final hacer

       acción 1

       acción 2

       acción 3

        ....

Fin_desde

 

o también

 

Para Variable =Valor Inicial   Hasta  Valor Final  Hacer

       acción 1

       acción 2

       acción 3

        ....

Fin_Para

 

Ejemplo 1

 

Hacer un programa que muestre los números del 1 al 10

 

inicio

    Desde x = 1 hasta 10 hacer

        Escribe x

    Fin_desde   

fin

 

aquí x toma un valor inicial de 1 y en cada vuelta el valor de x se incrementa en 1 así x tomará los valores 1,2,3,4....10,11

¿11?, si así como lo ve.... la estructura DESDE  es una variante de MIENTRAS en la forma:

 

Inicio

    x=1

    Mientras x<=10 hacer

        Escribe x

        x= x +1

    Fin_mientras

Fin

    

aquí el ultimo valor de X es 11 pero el ultimo valor mostrado es 10

 

Características de la estructura DESDE

                   Si la comparación resulta en FALSO el bucle termina. en este caso asi,

                   cuando x vale 1 pregunta 1 <= 10 verdadero entonces ejecuta las acciones

                   cuando x vale 2 pregunta 2 <= 10 verdadero entonces ejecuta las acciones

                    ....

                   cuando x vale 10 pregunta 10 <= 10 verdadero entonces ejecuta las acciones

                   cuando x vale 11 pregunta 11 <= 10 FALSO sale del bucle y continua con las acciones después del FIN_DESDE

        Una broma de nunca acabar:

        Inicio

        DESDE x= 1 hasta 10 HACER

            x= 1

            Escribe x

        FIN_DESDE

 

En esta broma x nunca  va a llegar a ser 10 ya que en cada vuelta x se convierte en 1 en el FIN_DESDE la variable x a lo sumo obtiene el valor de 2 pero de allí no pasa ya que x=1 la vuelve a ser 1

seria equivalente a

 

x= 1

Mientras  x<= 10 hacer

    x= 1

    escribe x

    x= x+1

Fin_mientras

 

 

INCREMENTOS

Para lograr incrementos distintos a 1 se considera la forma

 

DESDE Variable=VALOR INICIAL   HASTA VALOR FINAL INCREMENTO incremento Hacer

        Acciones....

FIN_DESDE

 

Ejemplo 2

Hacer un programa que muestre los números pares comprendidos entre 20 y 30 incluyendo a éstos números

 

DESDE a = 20 hasta 30 incremento 2 hacer

    escribe a

FIN_DESDE

 

La salida en pantalla será 20,22,24,26,28,30 pero el contador "a" irá hasta 32 ya que el contador oculto es x = x + 2

 

EJERCICIOS RESUELTOS

 

1.- Hacer un programa que muestre los numero pares comprendidos entre 50 y 100 sin mostrar el rango de números comprendido entre 60 y 80 incluso

 

INICIO

    DESDE x = 50 HASTA 100 incremento 2 hacer

        Si x < 60 o x >80 entonces

                escribir x

        Fin_SI

     Fin_DESDE

FIN

 

 

2.- Hacer un programa que lea 10 números y muestre el mayor valor de ellos

 

INICIO

    Mayor  = 0

    DESDE x = 1 HASTA 10 hacer

           leer numero

            si numero > Mayor entonces

                        Mayor  =  numero

            fin_si

     Fin_DESDE

    Escribe Mayor

FIN

 

3.- Hacer  un programa que simule un RELOJ mostrando los Segundos, Minutos, Horas desde las 01:00:00 hasta

las 23:59:59

 

INICIO

        Desde H = 1 hasta 23 hacer

            Desde M = 0 hasta  59 hacer

                 Desde S = 0 hasta 59 hacer

                            Escribe H,M,S

                 Fin_Desde

            Fin_Desde

        Fin_Desde

FIN

 

4.- Suponga que existe un instrucción  llamada UBICAR x , y  que me permite Ubicarme en una coordenada de la Pantalla

por ejemplo

 

Inicio

       Nombre$ = "Roberto"

       Ubicar 5,3

       Escribir Nombre$

Fin

 

haría lo siguiente:

 

 

es decir el texto "Roberto" sale en la columna 5  y en el renglón 2 tal como se ve en la figura, entonces propongo el

siguiente ejercicio

 

El Desarrollo sería :

 

INICIO

    DESDE x = 1 hasta 5  hacer

            Ubicar x , x

            Escribe "Roberto"

     FIN_DESDE

FIN

 

En QBASIC el desarrollo seria

 

CLS

    FOR x = 1 to 5

        Locate x,x

        Print "Roberto"

    NEXT

End

 

Observe que, FOR x = 1 TO  5 es lo mismo que  DESDE x = 1 hasta 5  hacer

NEXT es lo mismo que FIN_DESDE

UBICAR es lo mismo que LOCATE

 

 

 

 

 

5.- Hacer un programa que plotee 5 puntos de una parábola de la forma y = x^2 con el caracter " * "  usando UBICAR

INICIO

    Desde x = 1 hasta 10

        y = x ^ 2

        Ubicar  x, y

        Escribe  " * "

    Fin_Desde

FIN

 

6.- Se tienen 2 rectas Hacer un programa que por tanteos descubra si ambas rectas se cruzan en un rango de 1 a 100 para

cada valor de X

 

dado que se conocen a, b ,p, q 

X1, X2, Y1, Y2 son datos que se obtienen por iteración.

 

Inicio

    leer a, b , p ,q

    mx1 = 0

    my1 = 0

    my2 = 0 

    DESDE X1= 1 hasta 100

            x2 = X1

            y1 = a  +  b * x1

            y2 = p  -  q * x2

            si y1 > y2  entonces

                mx1 = x1

                my1 = y1

                my2 = y2

            fin_si

    Fin_Desde

    Si mx1 > 0 entonces

           Escribir  "El cruce aproximado se llevó a cabo en la posición ", mx1, my1 , "Para la primera Recta "

           Escribir  " y en la  posición ", mx1, my2 , "Para la segunda Recta "

    Si no

           Escribir "Nunca se cruzaron"

    Fin_SI

Fin

 

Propuestos

1.- Hacer un programa que muestre los números múltiplos de 2 y de 3 comprendidos entre 20 y 50 usando DESDE

2.- Hacer un programa que pida 50 números y muestre cual es el numero mayor y cual es el menor de ellos

3.- Hacer un programa que muestre en que coordenada X  la recta Z = 8 - 10x cruza el eje X por tanteos

4.- Hacer un programa que muestre en que coordenada Y  la recta Y = 8 - 10x cruza el eje Y por tanteos

5.- Completar el programa que utilizando 2 estruturas  (DESDE)  anidadas  muestre que valores de Y

son divisores exactos de X

....

DESDE x = 100 hasta 1 incremento -1  hacer

    DESDE y = 1 hasta x

   ....

    Fin_desde

FIN_DESDE

....

 

6.- En el Ejercicio Anterior muestre cual es el Número que contiene mas divisores