TEIMSI
Plataforma del desarrollador de textos programados
Inicio|Utilidades|Foro|Documentación

Indice de contenido -> Capítulo 7 - Referencia de Operadores y funciones


Los operadores y funciones predeterminados son elementos clave en la programación con TEIMSI así como en cualquier lenguaje, entre los operadores están Numéricos y los lógicos. Los operadores trabajan con dos operandos solamente. Los Numéricos trabajan con números y los lógicos con booleanos, aunque pueden compartirse mutuamente, veamos ciertos ejemplos triviales.


	// Estos ejemplos muestran el operador multiplicación "*":

		alert(100*5)				// Muestra "500"
		alert(true*false)			// Muestra "0"
		alert(true*false==false)		// Muestra "true"

	
	// Estos ejemplos muestran el operador lógico and "&&":

		alert( true && false )		// Muestra "false"
		alert( 100 && 0.0 )			// Muestra "false"
		alert( 100 && 0.00000001 )		// Muestra "true" porque ninguno de los operandos es "false" o "cero".

	// Al combinarse booleanos con números, true vale 1 y false vale 0, resultando números:

		alert( true * 11 )			// Muestra "11"
		alert( false * 11 )			// Muestra "0"


La precedencia de operadores determina como se evalúa una ecuación o expresión que utiliza operadores y/o funciones, por ejemplo 88*32+43 se evalúa como (88*32)+43 y no como 88*(32+43), el operador "+" (suma) tiene menor precedencia que el de "*" (multiplicación).

En el uso de operadores lógicos los operandos son booleanos. Los operadores utilizan siempre dos operandos. A continuación se describen los operadores lógicos y numéricos, la lista también muestra el orden de precedencia de los operadores (los de menor precedencia están más arriba).

OperadorNombreCategoríaDescripciónTipo de valor devuelto
 
 
    &&ANDLógicoDevuelve "true" sólo si los dos operandos son "true".Booleano
    ||ORLógicoDevuelve "true" si algún operando es "true".Booleano
    ===IdénticoNumérico/LógicoDevuelve "true" si los operandos son idénticos.Booleano
    !==No idénticoNumérico/LógicoDevuelve "true" si los operandos no son idénticos.Booleano
    ==IgualNumérico/LógicoDevuelve "true" si los operandos son iguales.Booleano
    !=No igualNumérico/LógicoDevuelve "true" si los operandos no son iguales.Booleano
    <=Menor o igualNuméricoDevuelve "true" si primer operando es menor o igual.Booleano
    >=Mayor o igualNuméricoDevuelve "true" si primer operando es mayor o igual.Booleano
 
    <<Shift izquierdaNumérico para enterosCalcula "operador1 * (2 ** operador2)".Número entero de 32 bits
    >>Shift derechaNumérico para enterosCalcula la parte entera de "operador1 / (2 ** operador2)".Número entero de 32 bits
    <MenorNuméricoDevuelve "true" si primer operando es menor.Booleano
    >MayorNuméricoDevuelve "true" si primer operando es mayor.Booleano
    +SumaNumérico/TextoSuma o concatena los operandos. (operando1 + operando2)Cadena/Número
    -RestaNuméricoCalcula (operando1 - operando2)Número
    /DivisiónNuméricoCalcula (operando1 / operando2)Número
    :RadioNuméricoCalcula sqrt(operando1**2 + operando2**2)Número
    **PotenciaciónNuméricoCalcula (operando1) elevado a (operando2)Número
    *MultiplicaciónNuméricoCalcula (operando1 * operando2)Número
    ^XORNumérico para enterosCalcula (operando1 Xor operando2)Número entero de 32 bits
    &ANDNumérico para enterosCalcula (operando1 And operando2)Número entero de 32 bits
    |ORNumérico para enterosCalcula (operando1 Or operando2)Número entero de 32 bits
    %Resto de divisiónNuméricoCalcula (operando1 - operando2*floor(operando1/operando2))
 


Ejemplos:


	alert(2**32)		// Muestra 2 elevado a la 32

	alert(321 % 11)	// Muestra "2", el resto de dividir 321 por 11.  Porque 2 = (321 - 11 * 29) =(321 - 11 * floor(321/11))

	alert(3 : 4)		// Muestra "5", 5=sqrt(3*3+4*4)

	var num1=42.2
	var num2=30.1

	alert("num1 > num2 : " + (num1>num2))	// Muestra "true"


En TEIMSI se puede trabajar con todos esos operadores (y más aún si se incorporan manualmente), pero por cierta razón (en las expresiones se necesitó el procesar primero los operadores de mayor longitud) en la versión actual (0.95) de TEIMSI se recomienda el uso de paréntesis en expresiones que utilicen operadores lógicos y numéricos combinados o con uso del operador potenciación, por ejemplo se evalúan las siguientes expresiones como idénticas: "43>12>>3" y "(43>12)>>3", o también resultan idénticas "83*2**3" a "(83*2)**3"; para evitar el inconveniente se debería expresar en un principio como "83*(2**3)" y la expresión anterior como "43>(12>>3)", el problema se explica al observar la tabla de precedencia de operadores.

Puede modificarse la precedencia de los operadores editando el archivo "protodb.dat" en la carpeta "engine\internal" dentro de la carpeta del Editor de TEIMSI (pero debe respetarse que la multiplicación esté luego de la potenciación y "mayor"/"menor" luego que los de "shift" o de desplazamiento porque contienen el mismo caracter, de otra manera pueden generarse errores de sintaxis inesperados durante la compilación en el procesamiento de expresiones).


Funciones en TEIMSI.

Se distinguen las funciones predeterminadas de las de usuario. En el archivo "protodb.dat" descrito anteriormente también se hallan los prototipos de las funciones predeterminadas de TEIMSI, el dato fundamental allí es la cantidad de parámetros que recibe cada una.

Puesto que TEIMSI trabaja con variables tipo "variant", no es necesario especificar que tipo de datos utilizarán: una variable puede por ejemplo pasar de tener un número a una matriz y recíprocamente en cualquier momento. Esta modalidad es utilizada en el lenguaje "Javascript" y "Php".

Al usar una función debe respetarse la cantidad de parámetros que utilice, en TEIMSI v0.95 no es posible que sea arbitraria. Por ejemplo para mostrar la posición de la letra "w" en la palabra "el whisky" no funciona:

alert(strpos("el whisky","w"))

- Sino más bien:

alert(strpos("el whisky","w",0)) // Muestra "3" que es el desplazamiento para llegar al caracter.

- Porque la función "strpos" debe recibir tres parámetros.


Declarar funciones es muy simple, este es un ejemplo de un programa:

		tarea()
		alert(calculo(44,33))
	
		function tarea(){	alert("Hola, se mostrará cuanto es 44 * 33")	}
	
		function calculo(par1,par2){
			return par1*par2
		}


En el siguiente capítulo llamado "Funciones para variables tipo cadena" se empiezan a describir las funciones predeterminados de TEIMSI, y se recomienda haber leído el tema Nociones de registros del CPU.

Muchas funciones no predeterminadas pero de gran utilidad pueden hallarse en La Framework predeterminada y los ejemplos de proyectos.



Volver arriba