Ver el Tema

 Imprimir Tema
mIRC Scripting Language [Parte Cuatro: Condiciones]
SykO
Hola lector, esta vez hablaremos sobre condiciones. Este es quizas lo mas importante en toda la programacion, puesto que esto nos permite hacer cierta accion dependiendo de la situacion.

Cuando vamos caminando y algo se nos pone enfrente decidimos que hacer dependiendo de las condiciones, por ejemplo, si a tu derecha está la carretera entonces das un paso a la izquierda, si hay una pared a tu izquierda y hay una manera segura de ir a la derecha y continuar entonces hacemos eso, de lo contrario buscamos otra solución más adecuada. En programación hacemos que nuestros resultados dependan de condiciones como este ejemplo.

En sí, este procedimiento se puede simplificar de la siguiente manera:

Si (esta condición) hacer esto
Si (la condición anterior no fue correspondida intentar esta otra condición) hacer esta otra acción
Si (ninguna condición fue correspondida) hacer esto


En programación se traduce a:

If (condición) { proceso }
Elseif (condición) { proceso }
Else { proceso }


Si alguna vez has visto un código de mSL u otro lenguaje, muy probable que hayas visto esto. Para entenderlo mejor vamos a practicarlo. Nuevamente abrir editor y borrar nuestro viejo código.

Crearemos lo siguiente:

Descargar código fuente.  Código.
alias CambioDeNick {
nick $1
}




Como hemos aprendido anteriormente si el usuario no indica un parámetro tendremos un error en el comando nick. Ahora nosotros vamos hacer lo mismo que hace el comando nick y verificar si el usuario ha pasado un parámetro, de lo contrario dar un mensaje al usuario que le recuerde que necesita pasar un parametro.

Modificamos de la siguientemanera:

Descargar código fuente.  Código.
alias CambioDeNick {
if ($0 == 0) {
echo Para poder cambiar apodo necesitas indicar un nuevo apodo. Ejemplo: /cambioDeNick mi-nuevo-apodo
}
}




El == es un operador que verifica si el lado izquierdo (v1) es igual a el lado derecho (v2). Existen varios operadores como este, pero antes de aprender el resto vamos a terminar nuestro comando. Por ahora el comando no hace nada más que verificar que si el usuario ha mandado cero, si esto es cierto entonces enviamos el comando echo con un mensaje.

Si conociéramos todos los comparadores quizás algunos de nosotros crearíamos lo siguiente para cambiar el nick si el usuario a enviado al menos un parámetro:
(el comparador “!=” indica que v1 no es igual a v2)

Descargar código fuente.  Código.
alias CambioDeNick {
if ($0 == 0) {
echo Para poder cambiar apodo necesitas indicar un nuevo apodo. Ejemplo: /cambioDeNick mi-nuevo-apodo
}
If ($0 != 0) {
nick $1
}
}




Aunque esto funcionaria correctamente, no es la manera más eficaz de hacer esto. Volvamos a nuestro ejemplo de ir caminando, si tenemos un objeto en nuestro camino queremos primer ver si se puede ir a la derecha y continuar nuestro camino. Es decir, si ya tomamos una decisión basada en un evento no queremos verificar o pensar en el resto de nuestras condiciones porque sería pérdida de tiempo. Imagínate que después de haber tomado tu decisión aún tengas que ver el resto de tus opciones y quizás hasta hacer la reacción de esa decisión, entonces harías dos acciones innecesarias.

Para entender esto cambiemos un poco nuestro comando, primero veamos el siguiente código y luego lo esplicaremos:

Descargar código fuente.  Código.
alias CambioDeNick {
if ($0 == 1) {
nick $1
}
If ($0 >= 1) {
echo número de parámetros enviados: $0
}
If ($0 >= 0) {
echo no se envió ningún parámetro.
}
}





El primer if verifica que solo se haya enviado un parámetro, si esto es cierto cambiamos de nick.
El segundo if verifica si se enviaron (>=) más o igual de un parámetro, si esto es cierto mostramos el número de parámetros.
El ultimo if verifica si no se envió ningún parámetro, si esto es cierto muestra el mensaje especificado en echo.

Salvamos y probamos primer sin ningún parámetro, luego con uno, y luego con más de uno. El primero solo nos dará un echo, el segundo y el tercero nos dará cambio de apodo y un mensaje.
Como podemos ver esto no es eficaz porque queremos que la segunda prueba se detenga de comparar el resto. Esto se logra con elseif y else de la siguiente manera:

Descargar código fuente.  Código.
alias CambioDeNick {
if ($0 == 1) {
nick $1
}
elseif ($0 >= 1) {
echo número de parámetros enviados: $0
}
else {
echo no se envió ningún parámetro.
}
}




Si volvemos hacer nuestras tres pruebas, todo funcionara como lo hemos planeado. Sé que he dado mucha vuelta para decir algo simple, pero los que hemos aprendido esto solos cometemos el “error” de no ser eficaces y si vez algunos códigos por ahí veras que usamos muchos ifs y ningún else. Nota que yo también me incluí, porque yo también lo hacía (y aún hay veces que lo hago).
Lo que pasa es que mSL u otro lenguaje entenderá que si una decisión se ha tomado saltara el resto de las comparaciones. Tal vez alguna vez tendras algo como lo siguiente:

If (esto) {
Comando/s
}
Elseif (esto) {
Comando/s
}
Elseif (esto) {

}
Else {

}


Como puedes ver en una decisión puedes tener varios elseifs y solo un if y un else. Creo que es buena idea que al igual que las llaves, en esto cada que pongas un if también crees un else.

Volvamos a nuestro comando y arreglemos algo más:

Descargar código fuente.  Código.
alias CambioDeNick {
if ($0 == 1) {
nick $1
}
Else {
echo enviaste $0 parametros, este comando solo toma un parametro.
}
}




Como podemos notar esto sería lo más eficaz que podemos hacer. Sé que este “tutorial” esta algo largo, pero esto es muy importante de entender y saber usarlo correctamente. Espero poder continuar esta serie y espero tú también la sigas, porque el if/elseif/else lo utilizaremos de aquí en adelante.

Después de esto seguirán los famosos comandos/identificadores locales y con eso se terminará lo aburrido. Porque al terminar eso comenzaremos con lo divertido y podremos comenzar a construir nuestro primer addon.

Bueno antes de despedirnos nos falta ver el resto de los comparadores:

== v1 igual v2
=== v1 igual exactamente v2
!= v1 no es igual v2
< v1 menor v2
> v1 mayor v2
>= v1 mayor o igual v2
<= v1 menor o igual v2
// v2 es multiple de v1
\\ v1 es multiple de v2
Isin v1 se encuentra entre las palabras/letras v2


Y existen más que puedes leer en el archivo de ayuda de mIRC. Si instalaste mIRC completo solo tienes que presionar F1 dentro de mIRC y podrás ver el archivo. Si estas en la pestaña index solo busca “if then else” y podrás leer sobre este tema y los operadores (en inglés). De hecho el archivo de ayuda de mIRC se tiene que convertir en tu mejor amigo, ahí encontraras todos los comandos/identificadores de mIRC y mucho más. De hecho, con lo que sabes muy probable que el resto se vuelva fácil.

Bueno para terminar solo queda mencionar el combinar condiciones:

If (condición1) && (condición2) comando


Esto indica que solo si condición1 y condición2 son ciertas entonces el comando se ejecutara.

If (condición1) || (condición2) comando


Esto indica que si alguna condición1 o condición2 es cierta entonces el comando se ejecuta.

Ahora es el turno de que tu practiques lo que has aprendido. Nuevamente gracias por leer y esperemos leernos una vez más.

-Kedyn Macedonio
Editado por SykO el 30-01-2018 02:18
Todo lo que se pierde se puede volver a encontrar, menos el tiempo perdido!
 
http://syko.wormzweb.com/
Saltar al Foro:
EScripting.NET #eScripting, ChatHispano utiliza cookies. Las cookies nos permiten ofrecer nuestros servicios. Más información. Por favor, haga clic en el botón Aceptar para ocultar esta barra y aceptar nuestras cookies. Si usted continúa utilizando Nuestro sitio sin realizar ninguna acción, vamos a suponer que usted consiente nuestras cookies de todos modos.
Cookiebar Panel fromVenue

Iniciar Sesión

Nombre de Usuario

Contraseña



¿No eres miembro?
Regístrate aquí.

¿Contraseña olvidada?
Recupera tu contraseña.

Usuarios Conectados

Invitados: 1
Miembros: 0
Total Miembros: 352
Último Miembro: DaNnY

Últimas Visitas:

SykO 1 Semana
aM3 1 Semana
FsDk 2 Semanas
NiGhT 2 Semanas
kn1ght 5 Semanas
AfraN 7 Semanas
Zetup 18 Semanas
slim 50 Semanas
El_tio_la... 65 Semanas
MaCLeoD 71 Semanas

  Ver más usuarios 

Mini Charla

Tienes que logearte para enviar un mensaje.

11-01-2018 09:31
0_o

04-07-2017 22:29
Angry Sad Angry

13-05-2017 00:03
omg saludos a todos!!

21-01-2017 21:03
Shock Grin Shock

07-01-2017 01:25
Angry Sad Angry Cool

Archivo de mensajes