C sharp - quiero que el programa se cierre a petición del usuario

 
Vista:

quiero que el programa se cierre a petición del usuario

Publicado por Hector (2 intervenciones) el 21/01/2021 15:09:31
HOla! Este es mi primer programa. Una suma. Pero quiero que el programa se cierre a petición del usuario. quién me lo termina para ver la diferencia? GRACIAS!!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Escribe tu nombre");
            string nombre = Convert.ToString(Console.ReadLine());
 
            Console.WriteLine("Escribe tu primer número para la suma: ");
            double num1 = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("Escribe tu segundo número para la suma: ");
            double num2 = Convert.ToDouble(Console.ReadLine());
 
            double resultado;
 
            resultado = num1 + num2;
 
            Console.WriteLine(nombre + " Tu resultado es: " + resultado);
 
            Console.WriteLine("Quiere volver a sumar? s/n");
            string respuesta = Convert.ToString(Console.ReadLine());
 
            if (respuesta != "s")
 
            {
 
                Console.WriteLine("Muy bien, Gracias y adiós");
                Console.ReadLine();
            }
            else
 
 
 
 
 
// 10 minutos después he descubierto el goto. esta es la diferencia para conseguir que el programa funcione:
 
 
 class Program
    {
        static void Main(string[] args)
        {
            main:
            Console.WriteLine("Escribe tu nombre");
            string nombre = Convert.ToString(Console.ReadLine());
 
            Console.WriteLine("Escribe tu primer número para la suma: ");
            double num1 = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("Escribe tu segundo número para la suma: ");
            double num2 = Convert.ToDouble(Console.ReadLine());
 
            double resultado;
 
            resultado = num1 + num2;
 
            Console.WriteLine(nombre + " Tu resultado es: " + resultado);
 
            Console.WriteLine("Quiere volver a sumar? s/n");
            string respuesta = Convert.ToString(Console.ReadLine());
 
            if (respuesta != "s")
 
            {
 
                Console.WriteLine("Muy bien, Gracias y adiós");
                Console.ReadLine();
            }
            else
                goto main;
       }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

quiero que el programa se cierre a petición del usuario

Publicado por Hector (2 intervenciones) el 21/01/2021 15:30:25
Por cierto, aprendí el goto gracias al manual que hay anexo a este foro! de C#
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 88
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

quiero que el programa se cierre a petición del usuario

Publicado por Kabuto (16 intervenciones) el 22/01/2021 00:33:13
Hola.

Diría que usar goto no es demasiado recomendable.
No es que esté mal usarlo..., pero es una instrucción remanente de lenguajes más antiguos que no ofrecían una forma óptima de controlar el flujo del programa y el uso (abusivo) de la instrucción "goto" y equivalentes originaba lo que se llama "código espagueti"

Además, si te acostumbras a usarlo, luego te encontrarás que no existe equivalente en otros lenguajes habituales, como Java o C++, y cuando quieras portar tu código a otros lenguajes te será más difícil.


Es mucho más recomendable usar un bucle (loop). Un bucle lo que hace es repetir una determinada porción de código mientras se cumpla una determinada condición, o bien hasta que deje de cumplirse.
Los bucles los encuentras en TODOS los lenguajes de programación y prácticamente se usan de forma idéntica, salvo sutiles diferencias en algunos casos.
De hecho, cuando avances más en programación, ya verás que los bucles se usan continuamente para prácticamente todo.

Por ejemplo, en tu programa podemos usar un do while() donde la condición para que se repita el código sea que el usuario responda con la letra s a la pregunta de si quiere continuar.

Aquí te dejo un código de ejemplo.
Fíjate en algo MUY importante. La variable respuesta, la que el bucle while va a evaluar para determinar si se cumple o no la condición, se ha de declarar ANTES de que empiece el bucle.
Esto es indispensable hacerlo. Si la declarásemos DENTRO del bucle, no nos serviría para evaluar la condición, porque entonces la variable solo "existiría" dentro del bucle, y no fuera.
Esto es lo que se llama "ámbito de variable" y si estás comenzando ahora a aprender, pues no te preocupes demasiado si no entiendes de lo que estoy hablando. Ya lo irás aprendiendo poco a poco, a su debido tiempo.

Tan solo recuerda que la variables que vayas a usar como condición en un bucle while, se ha de declarar ANTES de que empiece el bucle.

Otra cosa importante, para comparar datos de tipo string, no debemos usar los comparadores == o !=.
No siempre nos van a dar un resultado fiable. Es mejor usar el método Equals(), tal como podrás ver en mi código.

Y lo último que quiero comentar, de menor importancia. Fíjate que para leer un dato de tipo string, no hace falta hacer ninguna conversión.
La instrucción Console.ReadLine() ya te devuelve un string, no necesitas convertir nada.

Si hay que hacerlo cuando queramos datos numéricos, ya sea double, int, etc...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Program
{
    static void Main(string[] args)
    {
 
        string respuesta;
 
        do
        {
            Console.WriteLine("Escribe tu nombre");
            string nombre = Console.ReadLine();
 
            Console.WriteLine("Escribe tu primer número para la suma: ");
            double num1 = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("Escribe tu segundo número para la suma: ");
            double num2 = Convert.ToDouble(Console.ReadLine());
 
            double resultado;
 
            resultado = num1 + num2;
 
            Console.WriteLine(nombre + " Tu resultado es: " + resultado);
 
            Console.WriteLine("Quiere volver a sumar? s/n");
            respuesta = Console.ReadLine();
 
        } while (respuesta.Equals("s"));
 
 
    }
}


Como puedes ver, usar un bucle do while() es muy sencillo. Y lo mejor es que es idéntico a como se usa en Java, C/C++, JavaScript...
Así que si sabes hacer un bucle en C#, sabes hacerlo también en otros lenguajes.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar