2.2.8. Declarar variables en un for
Curso: Programación en C# (2015), por Nacho Cabanes
2.2.8. Declarar variables en un for
Se puede incluso declarar una nueva variable en el interior de "for", y esa variable dejará de estar definida cuando el "for" acabe. Es una forma de trabajar recomendable, para evitar un fallo frecuente: reutilizar variables pero olvidar volver a darles un valor inicial:
for (int i=1; i<=10; i++) ...
Por ejemplo, el siguiente fuente compila correctamente y puede parecer mostrar dos veces la tabla de multiplicar del 3, pero el "while" no muestra nada, porque no hemos vuelto a inicializar la variable "n", así que ya está por encima del valor 10 y ya no es un valor aceptable para entrar al bloque "while":
// Ejemplo_02_02_08a.cs // Reutilizacion incorrecta de la variable de un "for" // Introducción a C#, por Nacho Cabanes using System; public class Ejemplo_02_02_08a { public static void Main() { int n = 1; // Vamos a mostrar la tabla de multiplicar del 3 con "for" for (n=1; n<=10; n++) Console.WriteLine("{0} x 3 = {1}", n, n*3); // Y ahora con "while"... pero no funcionará correctamente while (n<=10) { Console.WriteLine("{0} x 3 = {1}", n, n*3); n++; } } }
Si declaramos la variable dentro del "for", la zona de "while" no compilaría, lo que hace que el error de diseño sea evidente:
// Ejemplo_02_02_08b.cs // Intento de reutilizacion incorrecta de la variable // de un "for": no compila // Introducción a C#, por Nacho Cabanes using System; public class Ejemplo_02_02_08b { public static void Main() { // Vamos a mostrar la tabla de multiplicar del 3 con "for" for (int n=1; n<=10; n++) Console.WriteLine("{0} x 3 = {1}", n, n*3); // Y ahora con "while"... pero no compila while (n<=10) { Console.WriteLine("{0} x 3 = {1}", n, n*3); n++; } } }
Esta idea sea puede aplicar a cualquier fuente que contenga un "for". Por ejemplo, el fuente 2.2.6a, que mostraba varias tablas de multiplicar, se podría reescribir de forma más segura así:
// Ejemplo_02_02_08c.cs // "for" anidados, variables en "for" // Introducción a C#, por Nacho Cabanes using System; public class Ejemplo_02_02_08c { public static void Main() { for (int tabla=1; tabla<=5; tabla++) { for (int numero=1; numero<=10; numero++) Console.WriteLine("{0} por {1} es {2}", tabla, numero, tabla*numero); Console.WriteLine(); } } }
Ejercicios propuestos:
Ejercicio propuesto 2.2.8.1: Crea un programa que escriba 6 líneas de texto, cada una de las cuales estará formada por los números del 1 al 7. Debes usar dos variables llamadas "linea" y "numero", y ambas deben estar declaradas en el "for".
Ejercicio propuesto 2.2.8.2: Crea un programa que pida al usuario el ancho (por ejemplo, 4) y el alto (por ejemplo, 3) y escriba un rectángulo formado por esa cantidad de asteriscos, como en el ejercicio 2.2.6.2. Deberás usar las variables "ancho" y "alto" para los datos que pidas al usuario, y las variables "filaActual" y "columnaActual" (declaradas en el "for") para el bloque repetitivo.
Actualizado el: 29-10-2014 23:44