Título: ¿Se asume el valor del else? Publicado por: Orb en 22 Diciembre 2014, 03:18 am Buenas.
No sé si el título está bien formulado , pero allá va mi cuestión. Actualmente ando con los condicionales de vb.net , y tras empollarme la lección , me puse a intentar crear un código que , al introducir un número en un textbox te dijera si era mayor , menor , o igual que el número pi(Una tontería , pero algo tenía que hacer para practicar) Total que me puse a ello y busqué mas información con respecto a los condicionales. Observé en diversos sitios que añadían el else , y la última condición se "auto-completaba" por decirlo así. Os pondré un ejemplo , este es el código que hice , se basa en un textbox y un button que al ser pinchado te dice si es mayor , igual o menor ; Código
(También me di cuenta de que podía acortar bastante el código , como por ejemplo no declarar los mensajes que te tira al comprobar como string ya que directamente puedes ponerlo como msgbox en la condición) Ahora viene mi duda , veréis que tanto para el if como para el elseif establezco por así decirlo la condición , tanto = 3.14 como < 3.14 , pero al poner el else , directamente interpreta que es mayor , y así lo comprobé al ejecutarlo , que directamente si ponías un número mayor te tiraba el mensaje de que era mayor , sin necesidad de establecer el >3.14 Mi pregunta es , ¿Esto por qué sucede así?¿Siempre es similar?¿Sirve para Strings y demás?Porque no acabo de entender su funcionamiento , busqué un par de ejemplos , e incluso en la página oficial de microsoft pero no sirvió demasiado para despejarme la duda. Un saludo y muchas gracias , a pesar de que mis dudas sean tan imperdonables xD Título: Re: ¿Se asume el valor del else? Publicado por: Eleкtro en 22 Diciembre 2014, 05:26 am Mi pregunta es , ¿Esto por qué sucede así?¿Siempre es similar? Sucede porque es la única posibilidad restante. Es decir, tú has hecho una condición para cuando es Menor, y otra condición para cuando es Igual, entonces obviamente la última condición Else solo puede procesar los números que sean mayores, ya que no hay existe ninguna otra posibilidad. La condicional que has mostrado If + ElseIf + Else se puede traducir de la siguiente manera: Código: Si "x" es menor que "y", entonces... Si "x" es igual que "y", entonces... Si "X" no es menor ni igual que "y", entonces... fín Si las condiciones anteriores al Else no se cumplieron, entonces... solo puede ser Mayor. ¿Siempre es similar? No se muy bien que estás preguntando, si en tu código quitas la condición de Igual (el ElseIf), y dejas el Else, entonces las instrucciones del bloque Else se procesarán cuando el valor sea Igual o Mayor, ya que existen esas 2 posibilidades. Que lio te has montado, mira que es fácil de entender xD, aunque quizás yo no sé explicarme demasiado bien. Por cierto, en las circunstancias en las que te encuentras, donde haces condiciones con valores "constantes", te sugiero utilizar un Select Case: Código
saludos EDITO: no acabo de entender su funcionamiento Las instrucciones que escribas después de la declaración Else, se ejecutarán si ninguna condición anterior se evaluó como True. Es tan simple como eso :P: http://msdn.microsoft.com/en-us/library/752y8abs.aspx Dos ejemplos aleatorios que he escrito por si te ayudan a entenderlo: Código
Código
Título: Re: ¿Se asume el valor del else? Publicado por: Orb en 22 Diciembre 2014, 12:50 pm Pues sí , la verdad es que me monté un buen lío , pero al ser la primera vez que toco programación , intento comprender cada cosa lo máximo posible y quizás me como demasiado la cabeza xD
Es justo eso lo que me intrigaba , si al solo quedar una opción posible dentro de la condición el else asume la última.Con respecto a lo de siempre es similar me refería a si siempre se da ese caso , si siempre que solo quede una condición el else la asume sin necesidad de establecer nada.Siendo sincero , respecto al código que escribiste intentando aclararme hay bastantes funciones que no entiendo , o mas bien , no las he dado , ahora me pondré a documentarme sobre ellas.Por cierto , ¿es necesario declarar el la variable de pi? Muchísimas gracias por tu respuesta Elektro , un saludo Título: Re: ¿Se asume el valor del else? Publicado por: Eleкtro en 22 Diciembre 2014, 15:07 pm Con respecto a lo de siempre es similar me refería a si siempre se da ese caso , si siempre que solo quede una condición el else la asume sin necesidad de establecer nada No exactamente ya que la funcionalidad de la declaración Else no es "asumir", pero podriamos decir que sí, siempre que quede una única condición posible, el Else "la asume". Por cierto , ¿es necesario declarar el la variable de pi? En el código que mostré, estrictamente necesario no es, pero es lo correcto, ya que al declarar la variable puedo acceder directamente al valor en la memoria, en lugar de duplicar instrucciones innecesarias en el Select Case, puesto que es más rápido (y dinámico) acceder directamente a la variable que llamar a la función .ToString * 3 veces para que devuelva el mismo siempre el mismo valor y castearlo a Double :-/, el tiempo de ejecución aumenta. PD: De todas formas la diferencia del tiempo de ejecución es ínfima (quizás no llegue a 5-10 ms de diferencia), pero sigue siendo lo correcto, y yo soy bastante EDITO: Si te referías a la variable 'refValue', entonces esa si que es totálmente necesaria, ya que la función .TryParse pide una variable referida como parámetro, pide una variable para modificarla y almacenar el resultado en caso de que la conversión del string tenga éxito, por otro lado, en otras circunstancias si que podrías evitar declarar la variable referida, usando el constructor (New): Código
De todas formas esa parte del código era solo un control de errores (muy básico), así que puedes omitir la declaración de la variable 'refValue', y la utilización de TryParse. Saludos Título: Re: ¿Se asume el valor del else? Publicado por: Orb en 23 Diciembre 2014, 13:15 pm Vale , esta vez si que me ha quedado todo más claro.
Muchas gracias de nuevo Elektro¡ |