AYUDA .NET

Bucle For en C# (Cómo funciona para desarrolladores)

En este tutorial completo, cubriremos todo lo que necesitas saber para comenzar con los bucles for dentro del método public static void Main. Exploraremos los bucles for, las variables de bucle, los cuerpos de bucle, las variables de iteración, los bucles internos y externos, los bucles infinitos, las expresiones booleanas, los bucles anidados, etc. ¡Comencemos!

Introducción a los bucles for

Un bucle for es un tipo de bucle en C#, específicamente diseñado para situaciones en las que sabes exactamente cuántas veces deseas iterar. La sintaxis de un bucle for en C# se muestra en el bloque de código a continuación:

    for (initialization; condition; increment)
    {
        // Loop body
    }
    for (initialization; condition; increment)
    {
        // Loop body
    }
initialization
Do While condition
		' Loop body
	increment
Loop
$vbLabelText   $csharpLabel

Desglosemos los componentes de un bucle for:

  1. Inicialización: Aquí es donde se declara e inicializa la variable del bucle, o variable de iteración.

  2. Condición: Una expresión booleana/condicional que determina si el bucle debe seguir ejecutando declaraciones múltiples veces o no.

  3. Incremento: Esta declaración actualiza la variable de iteración después de cada iteración.

Variables estáticas Void Main y Loop

En C#, el método static void Main o static void Main(String []args) es el punto de entrada de tu aplicación. Aquí es donde su programa comienza a ejecutarse. A continuación se muestra un ejemplo de cómo usar un bucle for dentro del método static void Main:

    using System;

    class Program
    {
        static void Main()
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("This is the first for loop!");
            }
        }
    }
    using System;

    class Program
    {
        static void Main()
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("This is the first for loop!");
            }
        }
    }
Imports System

	Friend Class Program
		Shared Sub Main()
			For i As Integer = 0 To 4
				Console.WriteLine("This is the first for loop!")
			Next i
		End Sub
	End Class
$vbLabelText   $csharpLabel

En este ejemplo, la variable de bucle int i se inicializa en 0 y actúa como la variable. El bucle seguirá ejecutándose mientras i sea menor que 5. Después de cada iteración, la operación de incremento i++ aumenta el valor de i en 1.

Exploración de bucles anidados

Bucles anidados en C# son bucles que se colocan dentro de otros bucles, formando un bucle interno y un bucle externo con secciones de iterador. Pueden ser útiles cuando se trabaja con estructuras de datos multidimensionales como matrices o cuando se necesita realizar una operación determinada en cada combinación de elementos.

Este es un ejemplo de un bucle for anidado con un bucle interno dentro de un bucle externo en C#:

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            Console.WriteLine($"i: {i}, j: {j}");
        }
    }
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            Console.WriteLine($"i: {i}, j: {j}");
        }
    }
For i As Integer = 0 To 2
		For j As Integer = 0 To 1
			Console.WriteLine($"i: {i}, j: {j}")
		Next j
Next i
$vbLabelText   $csharpLabel

En este ejemplo, el bucle externo se ejecuta y comienza con i igual a 0. Luego, el bucle interno itera a través de todos los valores posibles de j antes de pasar al siguiente valor de i.

Bucles infinitos y control de bucle

Un bucle infinito es un bucle que nunca termina porque su condición de prueba nunca se convierte en falsa. Estos pueden ser peligrosos, ya que pueden hacer que su programa se cuelgue indefinidamente. Sea cauteloso al escribir bucles como bucles while o foreach para asegurarse de que la condición de salida se cumpla eventualmente. A continuación se muestra un ejemplo de bucle infinito sin condición especificada en C#.

// This is an example of an infinite loop
for (int i = 0; ; i++)
{
    Console.WriteLine("This loop will run forever!");
}
// This is an example of an infinite loop
for (int i = 0; ; i++)
{
    Console.WriteLine("This loop will run forever!");
}
' This is an example of an infinite loop
Dim i As Integer = 0
Do
	Console.WriteLine("This loop will run forever!")
	i += 1
Loop
$vbLabelText   $csharpLabel

Además de la estructura estándar del bucle for, C# también proporciona declaraciones de control de bucles, como break y continue, que pueden ayudarte a gestionar tus bucles de manera más efectiva.

  • break: Esta instrucción se utiliza para salir inmediatamente del bucle. Cuando se encuentra una instrucción break, el bucle se termina y el programa continúa con la siguiente línea de código fuera del bucle.
  • continue: Esta declaración se utiliza para omitir el código restante en el cuerpo del bucle para la iteración actual y pasar a la siguiente iteración del bucle.

    Aquí tienes un ejemplo que demuestra el uso de break y continue en un bucle for:

for (int i = 0; i < 10; i++)
{
    if (i == 5)
    {
        break; // Exits the loop when i is equal to 5
    }

    if (i % 2 == 0)
    {
        continue; // Skips even numbers
    }

    Console.WriteLine($"Odd number: {i}");
}
for (int i = 0; i < 10; i++)
{
    if (i == 5)
    {
        break; // Exits the loop when i is equal to 5
    }

    if (i % 2 == 0)
    {
        continue; // Skips even numbers
    }

    Console.WriteLine($"Odd number: {i}");
}
For i As Integer = 0 To 9
	If i = 5 Then
		Exit For ' Exits the loop when i is equal to 5
	End If

	If i Mod 2 = 0 Then
		Continue For ' Skips even numbers
	End If

	Console.WriteLine($"Odd number: {i}")
Next i
$vbLabelText   $csharpLabel

En este ejemplo, el bucle deja de ejecutarse cuando i alcanza 5. La instrucción continue se utiliza para omitir los números pares, por lo que solo se imprimirán números impares menores que 5.

Expresiones booleanas y condiciones de bucle

La condición del bucle es un booleano que determina si el bucle debe continuar ejecutándose. Esta expresión se evalúa antes de cada iteración, y el bucle solo se ejecutará si la expresión es true. Las expresiones booleanas más utilizadas en muchos bucles son:

  • Comparaciones: i < 10, i >= 10, i >= 10, i == 10, i != 10
  • Operadores lógicos: && (AND), **

    ** (O), **!`** (NO)

    Puede combinar varias expresiones utilizando operadores lógicos para crear condiciones de bucle más complejas. Por ejemplo:

    for (int i = 0; i < 10 && i != 5; i++)
    {
        Console.WriteLine(i);
    }
    for (int i = 0; i < 10 && i != 5; i++)
    {
        Console.WriteLine(i);
    }
Dim i As Integer = 0
Do While i < 10 AndAlso i <> 5
		Console.WriteLine(i)
	i += 1
Loop
$vbLabelText   $csharpLabel

En este ejemplo, el bucle se ejecutará mientras i sea menor que 10 y no igual a 5.

Bloques de código y cuerpos de bucle

Un bloque de código es un grupo de declaraciones encerrado entre llaves {}. En un bucle for, el bloque de código que sigue a la declaración del bucle se conoce como cuerpo del bucle. Aquí es donde colocarás el código que quieres ejecutar durante cada iteración del bucle.

    for (int i = 0; i < 5; i++)
    {
        // This is the loop body
        Console.WriteLine($"Iteration: {i}");
    }
    for (int i = 0; i < 5; i++)
    {
        // This is the loop body
        Console.WriteLine($"Iteration: {i}");
    }
For i As Integer = 0 To 4
		' This is the loop body
		Console.WriteLine($"Iteration: {i}")
Next i
$vbLabelText   $csharpLabel

En este ejemplo, el cuerpo del bucle consiste en una única sentencia Console.WriteLine que imprime el número de iteración actual.

Pasos de ejecución del bucle

Cuando se encuentra un bucle for en su código, se produce la siguiente secuencia de eventos:

  1. Se inicializa la variable de bucle.

  2. Se evalúa la expresión booleana. Si la expresión es false, se omite el bucle y el programa continúa con la siguiente línea de código fuera del bucle.

  3. Si la expresión es true, se ejecuta el cuerpo del bucle.

  4. La variable de bucle se incrementa o actualiza.

  5. Los pasos 2-4 se repiten hasta que la expresión booleana se convierte en false.

Integración de IronPDF para generar informes con bucles For

Aprenda sobre las capacidades de generación de PDF de IronPDF para crear informes PDF dinámicos y robustos en C#. Puede ser una herramienta útil cuando se trabaja con bucles for, especialmente si necesita crear informes o documentos dinámicos basados en los datos procesados en sus bucles. En esta sección, le mostraremos cómo utilizar IronPDF junto con bucles for de C# para generar un informe sencillo.

En primer lugar, deberá instalar el paquete NuGet de IronPDF. Para ello, utilice la consola del gestor de paquetes de Visual Studio:

    Install-Package IronPDF
    Install-Package IronPDF
SHELL

Una vez que tengas IronPDF instalado, vamos a crear un ejemplo sencillo que genere un informe PDF a partir de HTML usando IronPDF que contenga una tabla de números y sus cuadrados utilizando un bucle for.

Paso 1: Añada los espacios de nombres necesarios.

    using IronPdf;
    using System.IO;
    using IronPdf;
    using System.IO;
Imports IronPdf
	Imports System.IO
$vbLabelText   $csharpLabel

Paso 2: Cree un nuevo método llamado GenerateReport.

static void GenerateReport()
{
    // Create an HTML template for the report
    var htmlTemplate = @"
    <html>
        <head>
            <style>
                table {
                    border-collapse: collapse;
                    width: 100%;
                }

                th, td {
                    border: 1px solid black;
                    padding: 8px;
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <h1>Number Squares Report</h1>
            <table>
                <thead>
                    <tr>
                        <th>Number</th>
                        <th>Square</th>
                    </tr>
                </thead>
                <tbody>
                    {0}
                </tbody>
            </table>
        </body>
    </html>";

    // Generate the table rows using a for loop
    string tableRows = "";
    for (int i = 1; i <= 10; i++)
    {
        tableRows += $"<tr><td>{i}</td><td>{i * i}</td></tr>";
    }

    // Insert the generated table rows into the HTML template
    string finalHtml = string.Format(htmlTemplate, tableRows);

    // Create a new PDF document from the HTML using two variables
    var pdf = new IronPdf.ChromePdfRenderer();
    var document = pdf.RenderHtmlAsPdf(finalHtml);

    // Save the PDF to a file
    document.SaveAs("NumberSquaresReport.pdf");
}
static void GenerateReport()
{
    // Create an HTML template for the report
    var htmlTemplate = @"
    <html>
        <head>
            <style>
                table {
                    border-collapse: collapse;
                    width: 100%;
                }

                th, td {
                    border: 1px solid black;
                    padding: 8px;
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <h1>Number Squares Report</h1>
            <table>
                <thead>
                    <tr>
                        <th>Number</th>
                        <th>Square</th>
                    </tr>
                </thead>
                <tbody>
                    {0}
                </tbody>
            </table>
        </body>
    </html>";

    // Generate the table rows using a for loop
    string tableRows = "";
    for (int i = 1; i <= 10; i++)
    {
        tableRows += $"<tr><td>{i}</td><td>{i * i}</td></tr>";
    }

    // Insert the generated table rows into the HTML template
    string finalHtml = string.Format(htmlTemplate, tableRows);

    // Create a new PDF document from the HTML using two variables
    var pdf = new IronPdf.ChromePdfRenderer();
    var document = pdf.RenderHtmlAsPdf(finalHtml);

    // Save the PDF to a file
    document.SaveAs("NumberSquaresReport.pdf");
}
Shared Sub GenerateReport()
	' Create an HTML template for the report
	Dim htmlTemplate = "
    <html>
        <head>
            <style>
                table {
                    border-collapse: collapse;
                    width: 100%;
                }

                th, td {
                    border: 1px solid black;
                    padding: 8px;
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <h1>Number Squares Report</h1>
            <table>
                <thead>
                    <tr>
                        <th>Number</th>
                        <th>Square</th>
                    </tr>
                </thead>
                <tbody>
                    {0}
                </tbody>
            </table>
        </body>
    </html>"

	' Generate the table rows using a for loop
	Dim tableRows As String = ""
	For i As Integer = 1 To 10
		tableRows &= $"<tr><td>{i}</td><td>{i * i}</td></tr>"
	Next i

	' Insert the generated table rows into the HTML template
	Dim finalHtml As String = String.Format(htmlTemplate, tableRows)

	' Create a new PDF document from the HTML using two variables
	Dim pdf = New IronPdf.ChromePdfRenderer()
	Dim document = pdf.RenderHtmlAsPdf(finalHtml)

	' Save the PDF to a file
	document.SaveAs("NumberSquaresReport.pdf")
End Sub
$vbLabelText   $csharpLabel

Llama al método GenerateReport desde tu archivo Program.cs:

GenerateReport();
GenerateReport();
GenerateReport()
$vbLabelText   $csharpLabel

Informe de Cuadrados de Números de IronPDF

Cuando ejecute este ejemplo, se generará un informe PDF llamado "NumberSquaresReport.pdf" en el directorio de salida de su aplicación. El informe contendrá una tabla de números del 1 al 10 y sus cuadrados, generada mediante un bucle for de C#.

Conclusión

En conclusión, este completo tutorial le ha proporcionado una base sólida en C# para los bucles y sus conceptos relacionados. Hemos explorado las variables de bucle, los cuerpos de bucle, las variables de iteración, los bucles internos y externos, los bucles infinitos, las expresiones booleanas, los bloques de código, los bucles anidados e incluso hemos demostrado cómo integrar la potente biblioteca IronPDF para generar informes PDF dinámicos utilizando bucles for.

IronPDF ofrece una prueba gratuita de IronPDF para que pruebes sus capacidades, y si lo encuentras útil, las licencias comienzan desde opciones asequibles adecuadas para tus necesidades.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
C# Wait For Seconds (Cómo funciona para desarrolladores)
SIGUIENTE >
C# String Replace (Cómo funciona para desarrolladores)