elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Tiene que haber otra forma de hacer este código.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Tiene que haber otra forma de hacer este código.  (Leído 3,603 veces)
Danielㅤ


Desconectado Desconectado

Mensajes: 1.838


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Tiene que haber otra forma de hacer este código.
« Respuesta #10 en: 26 Julio 2024, 18:38 pm »

Otra forma más corta usando el código de **Aincrad** puede ser ésta:

Código
  1. private static bool Menu()
  2.    {
  3.        if (Console.ReadKey(true).Key != ConsoleKey.Enter)  {
  4.            return Menu();
  5.        }
  6.    }

Otra forma de salir del bucle es usar 0 para indicar al programa que finalizó sin errores:

Código
  1. private static bool Menu()
  2.    {
  3.        if (Console.ReadKey(true).Key == ConsoleKey.Enter)  {
  4.            return 0;
  5.        }    else  {
  6.            return Menu();
  7.        }
  8.    }


« Última modificación: 26 Julio 2024, 18:42 pm por Danielㅤ » En línea

Tachikomaia


Desconectado Desconectado

Mensajes: 1.413


Hackentifiko!


Ver Perfil
Re: Tiene que haber otra forma de hacer este código.
« Respuesta #11 en: 27 Julio 2024, 01:50 am »

Concuerdo con EdePC. La explicación está muy bien, pero desde el inicio parece lógico y claro que no es necesario poner un if con una condición sobre cuando acabar el while, si dicha condición se puede poner en la condición misma del while.

Creo que lo ideal sería que el programa no esté mirando a cada milisegundo si se tocó Enter o no, sino que quede detenido hasta que se presione Enter, pero eso parece imposible. Por ejemplo, el sistema de una linterna, supongo, no es que esté chequeando a cada milisegundo si se está presionando un botón o no, nada hace, pero cuando se apreta eso activa algo. Pero un programa creo que no funciona así...


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.162



Ver Perfil
Re: Tiene que haber otra forma de hacer este código.
« Respuesta #12 en: 27 Julio 2024, 01:57 am »

Concuerdo con EdePC. La explicación está muy bien, pero desde el inicio parece lógico y claro que no es necesario poner un if con una condición sobre cuando acabar el while, si dicha condición se puede poner en la condición misma del while.

Creo que lo ideal sería que el programa no esté mirando a cada milisegundo si se tocó Enter o no, sino que quede detenido hasta que se presione Enter, pero eso parece imposible. Por ejemplo, el sistema de una linterna, supongo, no es que esté chequeando a cada milisegundo si se está presionando un botón o no, nada hace, pero cuando se apreta eso activa algo. Pero un programa creo que no funciona así...

Código
  1. while (Console.ReadKey(true).Key != ConsoleKey.Enter);

Console.ReadKey detiene la ejecución del programa y espera a que el usuario presione una tecla, solo cuando el usuario presiona la tecla esta se comprueba si es Enter, si no es, el bucle se vuelve a repetir, pero en todo momento siempre se queda pausado esperando que el usuario teclee algo.

Si otro fuera el caso si que hay que poner una pequeña pausa para no saturar al sistema con un bucle pesado.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Tiene que haber otra forma de hacer este código.
« Respuesta #13 en: 28 Julio 2024, 02:18 am »

De eso se trata, que al menos no se satura todo el rato con un bucle. Se trata que espere que pulse Enter y sales de ahí.

En cuando al Console.Readkey(); Espera que pulse cualquier tecla y sigues. Es como el PAUSE del archivo bat o cmd.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Tiene que haber otra forma de hacer este código.
« Respuesta #14 en: 28 Julio 2024, 08:04 am »

Mira lo que dice aquí.

https://learn.microsoft.com/es-es/dotnet/api/system.console.readkey?view=net-8.0

Hay código de ejemplo que pone esto.

Código
  1. while (Console.ReadKey().Key != ConsoleKey.Enter) {}

Que al final si se usa.
En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.838


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Tiene que haber otra forma de hacer este código.
« Respuesta #15 en: 28 Julio 2024, 18:00 pm »

Mira lo que dice aquí.

https://learn.microsoft.com/es-es/dotnet/api/system.console.readkey?view=net-8.0

Hay código de ejemplo que pone esto.

Código
  1. while (Console.ReadKey().Key != ConsoleKey.Enter) {}

Que al final si se usa.

Si, es correcto ese código porque el condicional al no tener ninguna instrucción a ejecutar, entonces lo ignora y sigue con las demás líneas del código, ésto es igual en otros lenguajes a usar pass, que significa que el programa no hara nada y seguirá su paso/ejecución.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Tiene que haber otra forma de hacer este código.
« Respuesta #16 en: 30 Julio 2024, 01:07 am »

Entendido.  ;)
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[MYSQL] Otra forma de hacer esta consulta?
Bases de Datos
klaine 1 3,453 Último mensaje 12 Noviembre 2011, 15:07 pm
por fran800m
Que errir tiene este codigo?
Java
Grey_Area 1 1,884 Último mensaje 29 Noviembre 2011, 22:40 pm
por Leyer
[AYUDA] ¿Qué tiene de malo este código?
Programación C/C++
Zodiak98 3 2,244 Último mensaje 26 Septiembre 2016, 22:16 pm
por Zodiak98
Que tiene mal este codigo?
Programación C/C++
Mozzard 2 1,998 Último mensaje 22 Septiembre 2018, 15:47 pm
por Mozzard
Que error tiene este codigo?
Programación C/C++
Mozzard 3 2,264 Último mensaje 2 Octubre 2018, 17:25 pm
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines