| La estructura
condicional (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:
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:
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 } Es perfectamente posible "anidar" instrucciones if, es decir, incluir más ifs 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 { if ( %A > %C ) { echo -s El mayor es %A }
} Los
operadores de comparación que podemos utilizar dentro de
la condición de un if son los siguientes:
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:
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.
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 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> /CargaVar { set %valor $$?="Introduzca un número
entre 0 y 9" echo -a Dato erróneo, introduzca solo un
dígito entre 0 y 9 } } 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 #
} 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 } Documento escrito por SomaTic ( sucubus@arrakis.es ) |