Estructura Repetitiva For
Estructura Repetitiva For
Estructura Repetitiva For
En su forma más típica y básica, esta estructura requiere una variable entera que
cumple la función de un CONTADOR de vueltas. En la sección indicada como
"inicialización contador", se suele colocar el nombre de la variable que hará de
contador, asignándole a dicha variable un valor inicial. En la sección de
"condición" se coloca la condición que deberá ser verdadera para que el ciclo
continúe (en caso de un falso, el ciclo se detendrá). Y finalmente, en la sección de
"incremento contador" se coloca una instrucción que permite modificar el valor de
la variable que hace de contador (para permitir que alguna vez la condición sea
falsa)
Cuando el ciclo comienza, antes de dar la primera vuelta, la variable del for toma
el valor indicado en la sección de de "inicialización contador". Inmediatamente se
verifica, en forma automática, si la condición es verdadera. En caso de serlo se
ejecuta el bloque de operaciones del ciclo, y al finalizar el mismo se ejecuta la
instrucción que se haya colocado en la tercer sección.
Seguidamente, se vuelve a controlar el valor de la condición, y así prosigue hasta
que dicha condición entregue un falso.
Si conocemos la cantidad de veces que se repite el bloque es muy sencillo
emplear un for, por ejemplo si queremo que se repita 50 veces el bloque de
instrucciones puede hacerse así:
La variable del for puede tener cualquier nombre. En este ejemplo se la ha
definido con el nombre f.
Analicemos el ejemplo:
- La variable f toma inicialmente el valor 1.
- Se controla automáticamente el valor de la condición: como f vale 1 y
esto es menor
que 50, la condición da verdadero.
- Como la condición fue verdadera, se ejecutan la/s operación/es.
- Al finalizar de ejecutarlas, se retorna a la instrucción f++, por lo
que la
variable f se incrementa en uno.
- Se vuelve a controlar (automáticamente) si f es menor o igual a 50.
Como ahora su valor es 2, se ejecuta nuevamente el bloque de
instrucciones e
incrementa nuevamente la variable del for al terminar el mismo.
- El proceso se repetirá hasta que la variable f sea incrementada al
valor 51.
En este momento la condición será falsa, y el ciclo se detendrá.
La variable f PUEDE ser modificada dentro del bloque de operaciones del for,
aunque esto podría causar problemas de lógica si el programador es inexperto.
La variable f puede ser inicializada en cualquier valor y finalizar en cualquier valor.
Además, no es obligatorio que la instrucción de modificación sea un incremento
del tipo contador (f++).
Cualquier instrucción que modifique el valor de la variable es válida. Si por ejemplo
se escribe f=f+2 en lugar de f++, el valor de f será incrementado de a 2 en cada
vuelta, y no de a 1. En este caso, esto significará que el ciclo no efectuará las 50
vueltas sino sólo 25.
Problema 1:
Diagrama de flujo:
Podemos observar y comparar con el problema realizado con el while. Con la
estructura while el CONTADOR x sirve para contar las vueltas. Con el for el
CONTADOR f cumple dicha función.
Inicialmente f vale 1 y como no es superior a 100 se ejecuta el bloque, imprimimos
el contenido de f, al finalizar el bloque repetitivo se incrementa la variable f en 1,
como 2 no es superior a 100 se repite el bloque de instrucciones.
Cuando la variable del for llega a 101 sale de la estructura repetitiva y continúa la
ejecución del algoritmo que se indica después del círculo.
La variable f (o como sea que se decida llamarla) debe estar definida como una
variable más.
Programa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EstructuraRepetitivaFor1
{
class Program
{
static void Main(string[] args)
{
int f;
for(f=1;f<=100;f++)
{
Console.Write(f);
Console.Write("-");
}
Console.ReadKey();
}
}
}
Problema 2:
Diagrama de flujo:
En este caso, a la variable del for (f) sólo se la requiere para que se repita el
bloque de instrucciones 10 veces.
Programa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EstructuraRepetitivaFor2
{
class Program
{
static void Main(string[] args)
{
int suma,f,valor,promedio;
string linea;
suma=0;
for(f=1;f<=10;f++)
{
Console.Write("Ingrese valor:");
linea=Console.ReadLine();
valor=int.Parse(linea);
suma=suma+valor;
}
Console.Write("La suma es:");
Console.WriteLine(suma);
promedio=suma/10;
Console.Write("El promedio es:");
Console.Write(promedio);
Console.ReadKey();
}
}
}
El problema requiere que se carguen 10 valores y se sumen los mismos.
Tener en cuenta encerrar entre llaves bloque de instrucciones a repetir dentro del
for.
El promedio se calcula fuera del for luego de haber cargado los 10 valores.
Problema 3:
Escribir un programa que lea 10 notas de alumnos y nos informe cuántos tienen
notas mayores o iguales a 7 y cuántos menores.
Para resolver este problema se requieren tres contadores:
aprobados (Cuenta la cantidad de alumnos aprobados)
reprobados (Cuenta la cantidad de reprobados)
f (es el contador del for)
Dentro de la estructura repetitiva debemos hacer la carga de la variable nota y
verificar con una estructura condicional si el contenido de la variable nota es
mayor o igual a 7 para incrementar el contador aprobados, en caso de que la
condición retorne falso debemos incrementar la variable reprobados.
Diagrama de flujo:
Programa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EstructuraRepetitivaFor3
{
class Program
{
static void Main(string[] args)
{
int aprobados,reprobados,f,nota;
string linea;
aprobados=0;
reprobados=0;
for(f=1;f<=10;f++)
{
Console.Write("Ingrese la nota:");
linea = Console.ReadLine();
nota=int.Parse(linea);
if (nota>=7)
{
aprobados=aprobados+1;
}
else
{
reprobados=reprobados+1;
}
}
Console.Write("Cantidad de aprobados:");
Console.WriteLine(aprobados);
Console.Write("Cantidad de reprobados:");
Console.Write(reprobados);
Console.ReadKey();
}
}
}
Problema 4:
Escribir un programa que lea 10 números enteros y luego muestre cuántos valores
ingresados fueron múltiplos de 3 y cuántos de 5. Debemos tener en cuenta que
hay números que son múltiplos de 3 y de 5 a la vez.
Diagrama de flujo:
Tengamos en cuenta que el operador matemático % retorna el resto de dividir un
valor por otro, en este caso: valor%3 retorna el resto de dividir el valor que
ingresamos por teclado, por tres.
Veamos: si ingresamos 6 el resto de dividirlo por 3 es 0, si ingresamos 12 el resto
de dividirlo por 3 es 0. Generalizando: cuando el resto de dividir por 3 al valor que
ingresamos por teclado es cero, se trata de un múltiplo de dicho valor.
Ahora bien ¿por qué no hemos dispuesto una estructura if anidada? Porque hay
valores que son múltiplos de 3 y de 5 a la vez. Por lo tanto con if anidados no
podríamos analizar los dos casos.
Es importante darse cuenta cuando conviene emplear if anidados y cuando no
debe emplearse.
Programa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EstructuraRepetitivaFor4
{
class Program
{
static void Main(string[] args)
{
int mul3,mul5,valor,f;
string linea;
mul3=0;
mul5=0;
for(f=1;f<=10;f++)
{
Console.Write("Ingrese un valor:");
linea = Console.ReadLine();
valor=int.Parse(linea);
if (valor%3==0)
{
mul3=mul3+1;
}
if (valor%5==0)
{
mul5=mul5+1;
}
}
Console.Write("Cantidad de valores ingresados múltiplos de 3:");
Console.WriteLine(mul3);
Console.Write("Cantidad de valores ingresados múltiplos de 5:");
Console.Write(mul5);
Console.ReadKey();
}
}
}
Problema 5:
Diagrama de flujo:
Tenemos un contador llamado cantidad y f que es el contador del for.
La variable entera n se carga previo al inicio del for, por lo que podemos fijar el
valor final del for con la variable n.
Por ejemplo si el operador carga 5 en n la estructura repetitiva for se ejecutará 5
veces.
La variable valor se ingresa dentro de la estructura repetitiva, y se verifica si el
valor de la misma es mayor o igual a 1000, en dicho caso se incrementa en uno el
contador cantidad.
Fuera de la estructura repetitiva imprimimos el contador cantidad que tiene
almacenado la cantidad de valores ingresados mayores o iguales a 1000.
Programa:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EstructuraRepetitivaFor5
{
class Program
{
static void Main(string[] args)
{
int cantidad,n,f,valor;
string linea;
cantidad=0;
Console.Write("Cuantos valores ingresará:");
linea = Console.ReadLine();
n=int.Parse(linea);
for(f=1;f<=n;f++)
{
Console.Write("Ingrese el valor:");
linea = Console.ReadLine();
valor = int.Parse(linea);
if (valor>=1000)
{
cantidad=cantidad+1;
}
}
Console.Write("La cantidad de valores ingresados mayores o
iguales a 1000 son:");
Console.Write(cantidad);
Console.ReadKey();
}
}
}
Problemas propuestos
Ha llegado nuevamente la parte fundamental, que es el momento donde uno
desarrolla individualmente un algoritmo para la resolución de un problema.