Una estructura repetitiva permite ejecutar una instrucción o un conjunto de instrucciones varias veces.
Una ejecución repetitiva de sentencias se caracteriza por:
- La o las sentencias que se repiten.
- El test o prueba de condición antes de cada repetición, que motivará que se repitan o no las sentencias.
Representación gráfica de la estructura while:
Funcionamiento: En primer lugar se verifica la condición, si la misma
resulta verdadera se ejecutan las operaciones que indicamos por la rama
del Verdadero.
A la rama del verdadero la graficamos en la parte inferior de la
condición. Una línea al final del bloque de repetición la conecta con la
parte superior de la estructura repetitiva.
En caso que la condición sea Falsa continúa por la rama del Falso y sale
de la estructura repetitiva para continuar con la ejecución del
algoritmo.
El bloque se repite MIENTRAS la condición sea Verdadera.
Importante: Si la condición siempre retorna verdadero
estamos en presencia de un ciclo repetitivo infinito. Dicha situación es
un error de programación, nunca finalizará el programa.
Problema 1:
Realizar un programa que imprima en pantalla los números del 1 al 100.
Sin conocer las estructuras repetitivas podemos resolver el problema
empleando una estructura secuencial. Inicializamos una variable con el
valor 1, luego imprimimos la variable, incrementamos nuevamente la
variable y así sucesivamente.
Es muy importante analizar este diagrama:
La primera operación inicializa la variable x en 1, seguidamente
comienza la estructura repetitiva while y disponemos la siguiente
condición ( x <= 100), se lee MIENTRAS la variable x sea menor o
igual a 100.
Al ejecutarse la condición retorna VERDADERO porque el contenido de x
(1) es menor o igual a 100.
Al ser la condición verdadera se ejecuta el bloque de instrucciones que
contiene la estructura while. El bloque de instrucciones contiene una
salida y una operación.
Se imprime el contenido de x, y seguidamente se incrementa la variable x en uno.
La operación x=x + 1 se lee como "en la variable x se guarda el
contenido de x más 1". Es decir, si x contiene 1 luego de ejecutarse
esta operación se almacenará en x un 2.
Al finalizar el bloque de instrucciones que contiene la estructura
repetitiva se verifica nuevamente la condición de la estructura
repetitiva y se repite el proceso explicado anteriormente.
Mientras la condición retorne verdadero se ejecuta el bloque de
instrucciones; al retornar falso la verificación de la condición se sale
de la estructura repetitiva y continua el algoritmo, en este caso
finaliza el programa.
Lo más difícil es la definición de la condición de la estructura while y
qué bloque de instrucciones se van a repetir. Observar que si, por
ejemplo, disponemos la condición x >=100 ( si x es mayor o igual a
100) no provoca ningún error sintáctico pero estamos en presencia de un
error lógico porque al evaluarse por primera vez la condición retorna
falso y no se ejecuta el bloque de instrucciones que queríamos repetir
100 veces.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EstructuraRepetitivaWhile1
{
class Program
{
static void Main(string[] args)
{
int x;
x = 1;
while (x <= 100)
{
Console.Write(x);
Console.Write(" - ");
x = x + 1;
}
Console.ReadKey();
}
}
}
Problema 2:
Escribir un programa que solicite la carga de un valor positivo y nos muestre desde 1 hasta el valor ingresado de uno en uno.
Ejemplo: Si ingresamos 30 se debe mostrar en pantalla los números del 1 al 30.
Es de FUNDAMENTAL importancia analizar los diagramas de flujo y la
posterior codificación en C# de los siguientes problemas, en varios
problemas se presentan otras situaciones no vistas en el ejercicio
anterior.
Diagrama de flujo:
Podemos observar que se ingresa por teclado la variable n. El operador puede cargar cualquier valor.
Si el operador carga 10 el bloque repetitivo se ejecutará 10 veces, ya
que la condición es “Mientras x<=n ”, es decir “mientras x sea menor o
igual a 10”; pues x comienza en uno y se incrementa en uno cada vez que
se ejecuta el bloque repetitivo.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EstructuraRepetitivaWhile2
{
class Program
{
static void Main(string[] args)
{
int n,x;
string linea;
Console.Write("Ingrese el valor final:");
linea=Console.ReadLine();
n=int.Parse(linea);
x=1;
while (x<=n)
{
Console.Write(x);
Console.Write(" - ");
x = x + 1;
}
Console.ReadKey();
}
}
}