3.3 Bucle "PARA"
![]() |
Imagen en Pixabay de skeeze bajo licencia CC0 Public Domain |
Esta instrucción es otro bucle parecido a los anteriores, con más similitudes por ejemplo con mientras, pero en definitiva otra estructura repetitiva con sus propias características. Se usa por tanto para repetir un proceso un número determinado de veces. El número de repeticiones se debe conocer previamente. Por ejemplo si tenemos que buscar un dato referente a un alumno en una lista de una clase con 40 alumnos, sabemos que tendremos que usar un bucle que repase 40 alumnos. En cambio, si tenemos que buscar un dato en un fichero que no tiene un número constante de registros, a priori no sabremos el número de búsquedas que tiene que realizarse. Por esta razón se suele usar esta instrucción cuando se conoce previamente el número de repeticiones que deseamos hacer y los otros tipos de bucles cuando no se conoce.
Al igual que el bucle "Mientras", puede iterar cero o más veces. En el bucle "Para" se utiliza una variable para contabilizar las repeticiones que se realizan. Esa variable tomará un valor inicial la primera vez que la ejecución llega al bucle, se va incrementando con un paso determinado al final del bucle y se vuelve a evaluar su valor para comprobar que no se ha llegado a un valor final especificado. Cuando la variable sobrepasa ese valor final, el bucle ya no se ejecuta más.
Sintaxis:
Para (variable <- valor inicial) Hasta (valor final) Con Paso (incremento) Hacer
Instrucciones
Instrucciones
...
...
FinPara
Como se puede apreciar en la sintaxis, se usa una variable a la que se da un valor inicial, un valor final y una cadencia, es decir un valor de incremento, que es opcional y que si no se explicita toma valor 1, o valor -1 si el valor inicial es mayor que el final.
NOTA: Para agilizar el estudio de los siguentes ejemplos, puedes seleccionarlos para ir copiando, pegando y ejecutando directamente en PseInt.
Ejemplo1:Tomemos el ejemplo clásico de mostrar los números del 1 al 20.
Algoritmo Mostrar_los_20_primeros_numeros_orden_ascendente
Para x=1 Hasta 20 Hacer
Escribir x
Fin Para
FinAlgoritmo
Ejemplo 2: Igual que el anterior pero en orden descendente
Algoritmo Mostrar_los_20_primeros_numeros_orden_descendente
Para x=20 Hasta 1 Hacer
Escribir x
Fin Para
FinAlgoritmo
Ejemplo 3: Tomemos el mismo ejemplo pero sólo queremos mostrar los números pares del 1 al 20.
Algoritmo Mostrar_los_pares_comprendidos_en_los_20_primeros_numeros
Para x=2 Hasta 20 Con Paso 2 Hacer
Escribir x
Fin Para
FinAlgoritmo
Nótese que el resultado del ejercicio anterior también se puede obtener con:
Algoritmo Mostrar_los_pares_comprendidos_en_los_20_primeros_numeros
Para x=1 Hasta 10 Hacer
Escribir 2*x
Fin Para
FinAlgoritmo
En los dos ejemplos anteriores, los dos bucles dan el mismo número de pasadas, es decir que los programas tardan el mismo tiempo en ejecutarse, pero la diferencia es que las variables de los dos bucles toman valores distintos, pues estamos usando dentro del segundo bucle la fórmula de una progresión aritmética de diferencia 2. Igualmente se pueden usar las fórmulas de progresiones geométricas con la razón deseada o matemáticas de todo tipo, como trigonométricas por ejemplo si necesitamos repasar todos los valores angulares (seno, coseno, tangente, etc.). Es de gran utilidad para apoyo en estudios matemáticos de sucesiones, límites, etc.
Ejemplo 4: Dibujar en pantalla, usando caracteres, un rectángulo de las dimensiones que el usuario introduzca por teclado.
Algoritmo Rectangulo
Escribir "Vamos a crear un rectángulo"
Repetir
Escribir "Teclea la altura (entre 4 y 7):"
Leer altura
Hasta Que altura>=4 y altura<=7
Repetir
Escribir "Teclea la base (entre 20 y 30):"
Leer base
Hasta Que base>=20 y base<=30
Para a<-1 Hasta altura Con Paso 1 Hacer
Para b<-1 Hasta base Con Paso 1 Hacer
Escribir "#" sin saltar
Fin Para
Escribir ""
Fin Para
Escribir ""
FinAlgoritmo

Curiosidad
Aunque es algo más complejo pues se usan instrucciones que aún no se han explicado, insertamos aquí otro ejemplo gráfico más visual tomado del programa "Pseint" que ya tanto hemos usado. Cuando lo ejecutéis disfrutaréis y comprobaréis las posibilidades que tiene esta instrucción, combinada con otras evidentemente.
Algoritmo Misil
Escribir "Presione una tecla para iniciar el lanzamiento!"
Esperar Tecla
// el array cohete tiene el dibujo del cohete como lineas de texto
dimension cohete[9]
cohete[1]<-" /|\ "
cohete[2]<-" |B| "
cohete[3]<-" |O| "
cohete[4]<-" |M| "
cohete[5]<-" |B| "
cohete[6]<-" //|\\ "
cohete[7]<-" ******* "
cohete[8]<-"* * * * *"
cohete[9]<-" * * * * "
// primero se muestra la primera parte del dibujo y la cuenta regresiva
Para i<-1 hasta 11 Hacer
Borrar Pantalla
Para j<-1 hasta 15 Hacer
Escribir ""
FinPara
Para j<-1 hasta 6 Hacer
Escribir cohete[j]
FinPara
Escribir ""
Escribir "Lanzamiento en ",11-i
Esperar 1 Segundo
FinPara
// despues se muestra el dibujo completo y cada vez mas arriba
Para i<-1 hasta 15 Hacer
Borrar Pantalla
Para j<-i hasta 15 Hacer
Escribir ""
FinPara
Para j<-1 hasta 8 Hacer
Escribir cohete[j]
FinPara
si i>1 Entonces
Escribir " * * * * "
finsi
Esperar 1/i Segundo
FinPara
// finalmente se va modificando el dibujo para hacer la explosion
// estado tiene un entero que dice en qué parte de la explosion va cada linea del dibujo
Dimension estado[6]
estado[1]<-3; estado[2]<-2; estado[3]<-1
estado[4]<-2; estado[5]<-3; estado[6]<-4
Para i<-1 hasta 10 Hacer
Borrar Pantalla
Para j<-1 hasta 6 Hacer
Estado[j]<-Estado[j]-1
segun Estado[j] Hacer
0: cohete[j]<-" + "
-1,-5: cohete[j]<-" +X+ "
-2,-4: cohete[j]<-" +XXX+ "
-3: cohete[j]<-" +XXXXX+ "
-6: cohete[j]<-" "
FinSegun
Escribir cohete[j]
FinPara
Esperar .2 Segundos
FinPara
FinAlgoritmo