APS v2.0
 Cracks
 Hacking
 Programas
 Juegos
 Utilidades
 Tipos de Letra
 Download
 Scripts
 Addons
 Tutorial
 Scripting
 Links
 E-mail gratis
 Juegos On-Line
 Postales
 Guestbook



SCRIPTING
Estructura IF-Else 

La estructura IF-ELSE permite establecer una bifurcación o alternativa dentro de una secuencia de ordenes. Es decir, en ocasiones es posible que deseemos que el programa ejecute una instrucción o instrucciones, pero solo si se cumple determinada circunstancia, y, en caso contrario, o bien no hacer nada, o bien ejecutar otras instrucciones diferentes. 

Por ejemplo, queremos hacer un alias que a intervalos de un minuto mida nuestro lag, y solo si este supera los 15 segundos nos envíe un mensaje a la pantalla de Status avisándonos de cuanto lag tenemos. Esto no es posible hacerlo mediante una secuencia lineal de instrucciones; es preciso que el programa discierna en algún momento si procede o no ejecutar la orden de imprimir un mensaje. Esta posibilidad es la que nos facilita la estructura IF. 

En definitiva, IF comparará valores, y ejecutará o no diferentes instrucciones, en función del resultado de la comparativa. 

El formato general completo de la estructura IF es el siguiente: 

if (Valor_1 operador Valor_2) { comandos } 
elseif (Valor_1 operador Valor_2) { comandos } 
else { comandos }

La orden if comparará Valor_1 y Valor_2 mediante un operador de comparación. En función de esta comparación ejecutará o no el comando o comandos incluidos dentro de las llaves. Por ejemplo: 

if (%Variable_1 > %Variable_2) { 
echo -s Atención, la primera variable es mayor que la segunda !!! 
splay c:\sonidos\alarma.wav 
}

Esta orden compara del contenido de dos variables, y solo en caso de que la primera variable sea mayor que la segunda enviará un mensaje a la pantalla de Status, y hará sonar un sonido Wav que supuestamente tenemos dentro de un directorio de la unidad C: llamado "sonidos". 

Obsérvese que la condición del if se debe de poner entre paréntesis, y las instrucciones internas a ejecutar estarán encerradas entre llaves (si solo hay una instrucción no son necesarias las llaves). 

Como se puede ver en la sintaxis general del if, junto este se pueden emplear otras dos instrucciones: elseif y else, aunque estas solo de forma opcional. Si podemos leer la sintaxis de IF de la siguiente forma:     Si ( pasa esto ) { Haz esto }   
la del elseif equivaldrá a:     En caso contrario, si ( pasa esto ) { Haz esto }.  
El anexo else es una posibilidad que permite ejecutar una serie de instrucciones en caso de que lo anterior no se haya producido. Las instrucciones comprendidas dentro del else se ejecutarán siempre que no hay resultado cierta la condición del if ni, de existir, la del elseif. Si no se especifica un else, el script sencillamente continuará a desde la instrucción siguiente al último "}", o bien terminará si no hay nada más. 

Es perfectamente posible "anidar" instrucciones if, es decir, incluir más if’s dentro del bloque de instrucciones de un if. Por ejemplo, queremos hacer un alias que se llame "números". Este, al ejecutarse, nos pedirá tres números cualesquiera que cargará en tres variables, a continuación evaluará cual es el mayor de los tres y nos lo imprimirá en la ventana de Status. Podríamos hacer algo como lo siguiente: 

/números { 
set %A $$?="Introduce el primer número" 
set %B $$?="Introduce el segundo número" 
set %C $$?="Introduce el tercer número" 
if ( %A > %B ) { 

if ( %A > %C ) { echo -s El mayor es %A } 
else { echo -s El mayor es %C } 
}

} 
elseif ( %B > %C ) { echo -s El mayor es %B } 
else { echo -s El mayor es %C } 
unset %A %B %C

Los operadores de comparación que podemos utilizar dentro de la condición de un if son los siguientes: 
 
 

A == B

A Igual a B

A != B

A distinto de B

A < B

A menor que B

A > B

A mayor que B

A >= B

A mayor o igual que B

A <= B

A menor o igual que B

A // B

A es múltiplo de B

A\\B

A no es múltiplo de B

A isin B

La cadena de caracteres A se encuentra incluida dentro de la cadena B

A iswm B

La cadena A es idéntica a la cadena B

A isnum B

A es un número incluido dentro de la cadena de números B. Si no se pone B se evalúa simplemente si A es un número

A isletter B

Igual al anterior pero con letras en lugar de números

A ison B

El nick A está en el canal B

A isop B

El nick A es operador en el canal B

A isvo B

El nick A tiene voz en el canal B

A ischan

A está en este momento en el mismo canal que nosotros

A isauto B

El nick A está en muestra lista de auto-op para el canal B (B opcional)

A isignore

A está en nuestra lista de ignorados

A isprotect B

A está en nuestra lista de protegidos en el canal B (B opcional)

A isnotify

A está en nuestra lista de notify

  
  
En esta tabla se han usado, para hacerla más comprensible, los operándos genéricos A y B; en su lugar podemos usar valores numéricos, cadenas de caracteres, variables (identificándolas con su nombre precedido del símbolo %), o identificadores (con su nombre precedido del símbolo $). 

Si anteponemos el símbolo ! delante de cualquiera de los operadores de la tabla anterior este será negado, es decir, la condición se evaluará como cierta no cuando suceda eso, sino cuando no suceda. 

Hasta ahora hemos visto como la estructura if puede evaluar una condición simple; no obstante es también posible crear condiciones complejas combinando varias con o operadores lógicos. El mIRC admite dos tipos de operadores lógicos para enlazar entre sí dos o mas condiciones simples formando así una sola condición múltiple: 

  • Operador AND (&&). En castellano "y":

Si (( pasa esto ) y ( esto ) y ( además esto )) { Haz esto }

Por ejemplo:  if (( $me !iswm SomaTic ) && ( $me isop #ayuda_irc )) { mode $me -o #ayuda_irc }

Esta instrucción comprobará si mi nick es distinto de SomaTic, y además si tengo el estatus de operador dentro del canal #ayuda_irc, de suceder ambas cosas me retirará dicho estatus. 

  • Operador OR ( || ). En castellano "o":

Si (( pasa esto ) o ( esto ) o ( esto otro )) { Haz esto }

Por ejemplo:  if (( %A > 20 ) || ( %B < 10 )) { echo -s Variable fuera de rango }

Esta orden comprobará que la variable %A contiene un número en el rango [10-20] , en caso contrario manda al status un aviso. 
 
 
EL COMANDO "goto" 

El uso del comando goto es un recurso muy útil en especial cuando se utiliza desde dentro de una estructura if. La sintaxis de este comando es:    goto <etiqueta>  
La orden goto provoca un salto automático dentro de la secuencia que el programa utiliza para leer las líneas de un script, pasando directamente a leer a partir de una determinada etiqueta, las líneas que continúan a partir de esta. Una etiqueta no es más que una palabra que ocupa una línea del script, y que se identifica como tal por tener el símbolo ":" delante. La llamada a una etiqueta desde la orden goto no debe de llevar los dos puntos delante. 
 
Ejemplo: 

/CargaVar { 
  
:PideDato 

set %valor $$?="Introduzca un número entre 0 y 9" 
if (( %valor < 0 ) || ( %valor > 9 )) { 

echo -a Dato erróneo, introduzca solo un dígito entre 0 y 9 
goto PideDato

}

}

Este alias es una sencilla rutina que nos permite aceptar valores para una variable, depurando que solo se introduzca un dígito entre 0 y 9, de no ser así el alias volverá una y otra vez a la etiqueta PideDato solicitando un nuevo valor para la variable. 

EJEMPLOS:  

1- El siguiente alias nos presentará la lista de operadores del canal en que nos encontramos en este momento. Se puede observar el empleo de la instrucción de salto incondicional (goto), el uso del parámetro $nick(canal,numero), el comando inc(%variable), y la estructura if

/listaOPs { 

echo -a * Listando Operadores en # 
set %i 1 
:sigue 
set %nick $nick(#,%i) 
if ( %nick == $null ) { goto final } 
if ( %nick isop # ) { echo 3 %nick is un Op! } 
inc %i ;(Se incrementa en uno la variable %i) 
goto sigue 
:final 
echo -a * Fin de la lista de operadores de #.

}

2- Este ejemplo presenta un alias que imprimirá en la pantalla de Status una tabla de los caracteres ASCII entre el 33 y el 241 ambos inclusive. 

/TablASCII { 

set %num 33 
echo -s Tabla ASCII 
:presenta 
if ( %num > 241 ) { goto fin } 
echo -s $chr( %num ) es el carácter ASCII carácter ASCII número: %num 
inc %num 
goto presenta 
:fin 
echo -s Fin de la tabla.

}

 

<---Atrás

Reportajes...

  Las Computadoras del futuro

  Tú en el futuro
  Los carros del futuro
  Nanotecnología
  Redes a la velocidad de la luz
  Investigación AntiVirus
  Los softwares más utilizados

Opciones...
Haz esta tu página principal
Agrégala a tus favoritos!