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
En DESDE el contador se inicializa con el VALOR INICIAL
En DESDE el contador esta oculto y se ejecuta justo antes de dar la vuelta
En DESDE en cada vuelta se hace una comparación del valor actual de la variable con el VALOR FINAL
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
En DESDE el numero de vueltas es conocido salvo que usted modifique el valor de la variable contadora por algún motivo
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