Conversión de Tipos de Datos Automática

5

Click here to load reader

Transcript of Conversión de Tipos de Datos Automática

CONVERSIN DE TIPOS DE DATOS AUTOMTICAEl compilador automticamente realiza la conversin implcita en los siguientes casos: si una sentencia requiere una expresin del tipo particular, y se utiliza la expresin de tipo diferente; si un operador requiere un operando de tipo particular, y se utiliza un operando de tipo diferente; si una funcin requiere un parmetro formal de tipo particular, y se le asigna el objeto de tipo diferente; y si el resultado de una funcin no corresponde al tipo del valor devuelto de la funcin declarada.PROMOCINCuando los operandos son de tipos diferentes, mediante la conversin implcita se realiza la promocin de tipo ms bajo a tipo ms alto, de la siguiente manera: bit byte short, byte/char integer, word, longint, longword integer, word longint, longword short, byte/char, integer, word, longint, longword floatRECORTE DE DATOSEn las sentencias de asignacin y en las sentencias que requieren una expresin de tipo particular, el valor correcto ser almacenado en el destino slo si el resultado de expresin no excede al rango del destino. Al contrario, si el resultado de la expresin resulta en un tipo ms complejo de lo esperado, los datos que exceden se recortarn, o sea los bytes ms altos se pierden.dim i as byte 'Variable i ocupa un solo byte de la memoria RAMdim j as word ' Variable j ocupa dos bytes de la memoria RAM

...j = $FF0Fi = j ' i se convierte en $0F, el byte ms alto $FF se pierdeCONVERSIN DE DATOS EXPLCITALa conversin explcita se puede ejecutar bajo cualquier expresin en cualquier punto al escribir la palabra clave de tipo deseado(byte, word, short, integer, longint, float...)delante de la expresin que ser convertida. La expresin debe estar encerrada entre parntesis. La conversin explcita no puede ser realizada bajo el operando de la izquierda del operador de asignacin.a = word(b) ' Conversin explcita de la expresin bword(b) = a ' Compilador informa de un errorComo no afecta a la representacin binaria de los datos, un caso especial es una conversin entre tipos de datos con signo y sin signo.dim a as bytedim b as short'...b = -1a = byte(b) ' a is 255, not -1' El dato no cambia su representacin binaria %11111111 ' pero el compilador la interpreta de la manera diferenteOPERADORESUn operador es un smbolo que denota una operacin aritmtica, lgica u otra operacin particular. Cada operacin se realiza sobre uno o ms operandos (variables o constantes) en una expresin. Adems, cada operador dispone de la ejecucin de prioridad y de la asociatividad. Si una expresin contiene ms de un operando, los operandos se ejecutarn en orden de su prioridad. Hay 4 categoras de prioridad en Basic. Los operadores que pertenecen a la misma categora tienen igual prioridad. Si dos o ms operandos tienen el mismo nivel de prioridad, las operaciones se realizan de izquierda a derecha. Los parntesis se utilizan para definir la prioridad de la operacin dentro de la expresin. A cada categora se le asigna una de dos reglas de asociatividad: de izquierda a derecha o de derecha a izquierda. Refirase a la siguiente tabla:PRIORIDADOPERADORESASOCIATIVIDAD

Alta@ not + -de derecha a izquierda

* / div mod and >de izquierda a derecha

+ - or xorde izquierda a derecha

Baja= < > =de izquierda a derecha

OPERADORES ARITMTICOSLos operadores aritmticos se utilizan para realizar operaciones aritmticas. Estas operaciones se realizan sobre los operandos numricos y siempre devuelven los resultados numricos. Las operaciones binarias se realizan sobre dos operandos, mientras que las operaciones unitarias se realizan sobre un operando. Todos los operadores aritmticos se asocian de izquierda a derecha.OPERADOROPERACIN

+Adicin

-Resta

*Multiplicacin

/Divisin - punto flotante

divDivisin - redondear

modRemanente

DIVISIN POR CEROSi un cero (0) se utiliza explcitamente como el segundo operando en la operacin de divisin (x div 0), el compilador informa de un error y no generar un cdigo. En caso de una divisin implcita, o sea, en el caso de que el segundo operando sea un objeto cuyo valor es 0 (x div y, w y=0), el resultado ser indefinido.OPERADORES RELACIONALESLos operadores relacionales se utilizan para comparar dos variables y determinar la validez de su relacin. En mikroBasic, todos los operadores relacionales devuelven 255 si la expresin es evaluada como verdadera (true). Si una expresin es evaluada como falsa (false), el operador devuelve 0. Lo mismo se aplica a las expresiones tales como si la expresin es evaluada como verdadera, entonces...OPERADORSIGNIFICADOEJEMPLOCONDICIN DE VERACIDAD

>es mayor queb > asibes mayor quea

>=es mayor o igual quea >= 5siaes mayor o igual que5