Sentencias de salto (goto)
Parte de la sección Lógica y Flujo del Journey de C# de Coddy. Lección 20 de 66.
La instrucción goto en C# proporciona una forma de transferir el control directamente a una instrucción etiquetada dentro del mismo método.
Crea una etiqueta en tu código:
start:Usa la instrucción goto para saltar a esa etiqueta:
goto start;Aquí tienes un ejemplo sencillo que utiliza goto para crear un bucle:
int i = 0;
start:
if (i < 5)
{
Console.WriteLine(i);
i++;
goto start;
}Después de ejecutar el código anterior, la salida será:
0
1
2
3
4Aunque goto existe en C#, por lo general se recomienda usar en su lugar instrucciones de control de flujo estructurado (if, for, while, etc.), ya que hacen que el código sea más legible y fácil de mantener.
Desafío
FácilCrea un método llamado ProcessCommands que acepte un argumento:
- Una cadena (
command) que contiene un comando que se procesará.
El método debe implementar un procesador de comandos simple mediante instrucciones goto:
- Si el comando es "start", imprime "Starting process" y después ve a la etiqueta "end"
- Si el comando es "stop", imprime "Stopping process" y después ve a la etiqueta "end"
- Si el comando es "pause", imprime "Pausing process" y después ve a la etiqueta "end"
- Si el comando es cualquier otra cosa, imprime "Unknown command" y después ve a la etiqueta "end"
- En la etiqueta "end", imprime “Command processed”
Pruébalo tú mismo
using System;
public class Program
{
public static void ProcessCommands(string command)
{
// Escribe tu código aquí
}
public static void Main(string[] args)
{
string command = Console.ReadLine();
ProcessCommands(command);
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arrays multidimensionales
Conceptos básicos de arrays 2DDeclaración e inicialización de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DArrays irregularesOperaciones comunes con matricesRepaso: arrays multidimensionales4Técnicas de control de flujo
Retornos anticipadosCláusulas de guardaSentencias de salto (goto)Break y ContinueAplanar condicionales anidados7Operadores lógicos avanzados
Evaluación de cortocircuitoOperadores lógicos condicionalesPrecedencia de operadoresRepaso: operadores avanzados2Toma de decisiones avanzada
Múltiples condicionesLógica booleana complejaComparación entre If y SwitchSentencias Switch anidadasRepaso: decisiones avanzadas5Manejo de excepciones
Fundamentos de Try-CatchTipos de excepcionesMúltiples bloques CatchTrabajo con archivosBloque FinallyUso de Using frente a Try-FinallyExcepciones personalizadasRepaso: manejo de errores3Mejoras de bucles
Rendimiento de buclesIteración de estructuras complejasCada tipo de bucleRefactorización de buclesRepaso: bucles optimizados6Manejo de valores nulos
Conceptos básicos de referencias nulasTipos de valor anulablesPatrones de comprobación de valores nulosProgramación defensivaRepaso: seguridad frente a valores nulosPractica por tu cuenta: Compilador de C# online