You are on page 1of 16

Expresiones y Operadores Las expresiones son combinaciones de variables, palabras reservadas, literales, llamadas a mtodos y campos, y operadores que

son evaluadas y dan como resultado un valor de un determinado tipo de datos. Este valor puede ser un nmero, un caracter o cualquier otro tipo de datos. El tipo de una expresin est determinado por los tipos de las partes que la componen y la semntica de los operadores. Un operador es un smbolo que transforma una variable o la combina de alguna otra manera con otra variable o literal. Por ejemplo, la siguiente expresin tiene dos operadores, '=' o asignacin y '*' o producto: a = b * c;

Jerarqua de Operadores Un operador es un smbolo o palabra que significa que se ha de realizar cierta accin entre uno o dos valores que son llamados operandos. Tipos de Operadores: a) Aritmticos (su resultado es un nmero): potencia, * , / , mod, div, + , b) Relacionales (su resultado es un valor de verdad): =, <, >, <=, >=, <> c) Lgicos o Booleanos (su resultado es un valor de verdad): not, and, or d) Alfanumricos : + (concatenacin) e) Asociativos. El nico Aritmticos: + - * / % ++ -Asignacin: = += -= *= /= %= Relacionales: < <= > >= == != Lgicos: ! && || ?: Bits: & | ^ ~ &= |= ^= ~= << >> <<= >>= Otros: () ,

Operador asociativo es el parntesis ( ) , el cual permite indicar en qu orden deben realizarse las operaciones. Cuando una expresin se encuentra entre parntesis, indica que las operaciones que estn dentro de ellos debe realizarse primero. Si en una expresin se utilizan ms de un parntesis se deber proceder primero con los que se encuentren ms hacia el centro de la expresin. Jerarqua de Operaciones: () signo Potencia Producto y divisin Div Mod

Suma y resta Concatenacin Relacionales Negacin And Or

Datos de tipo entero tienen los operadores +, -, *, /, div, mod, abs, sqr, sqrt, ln, exp, sin, cos, tan, pow, etc. Los datos de tipo real tienen los mismos operadores enteros y adems trunc, round, int, y otros. La suma y multiplicacin de datos de tipo real cumplen la propiedad conmutativa, pero no siempre la asociativa y la distributiva. Para resolver una expresin aritmtica se deben seguir las siguientes reglas: Primero se resuelven las expresiones que se encuentran entre parntesis. Se procede aplicando la jerarqua de operadores. Al evaluar una expresin, si hay dos operadores con la misma jerarqua, se procede a evaluar de izquierda a derecha. Si hay expresiones relacionales, se resuelven primero parntesis, luego se encuentran los valores de verdad de las expresiones relacionales y por ltimo se aplica jerarqua de operadores lgicos. En caso de haber iguales, proceder de izquierda a derecha.

Las expresiones con que acta un operador se llaman operandos. Existen operadores unarios y binarios, segn actuen sobre uno o dos operandos. Por ejemplo, el operador asignacin es binario mientras que el '-' es unario en este caso: a = -d;

Operadores: Precedencia y Asociatividad Tabla 1. Tabla de Precedencia de Operadores Prec 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Asoc I-D D-I I-D I-D I-D I-D I-D I-D I-D I-D I-D I-D D-I D-I I-D Operadores () [] -> . ~ ! (cast) sizeof (Ptr: * &) * / % + << >> < <= > >= == != & (bit-and) ^ (bit-xor) | (bit-or) && || ?: = *= %= += -= <<= >>= &= ^= |= , ++ --

(signo )

Conversin Tipos: Precedencia Tipos Datos Regla Conversin Tipos-Datos: En una expresin, los operandos tipo-dato menor precedencia se convierten tipo-dato del operando de mayor precedencia Tabla 2. Tabla de Precedencia Tipos de Datos Prec 5 4 3 2 1 Conversin Tipo Segura/Insegura Tipo Dato double float long int char

Conversin Segura: No hay prdidas de informacin, se ajusta a la regla especificando una conversin de menor a mayor precedencia o capacidad, e.g. (int)'A' Conversin Insegura: Conversiones contrarias al orden de precedencia de los tipos de datos y susceptibles de perder informacin, e.g. (int)3.5 Fig. 1. Conversin de Tipo Segura o Insegura Conversin Tipo Explcita/Implcita Conversin Implcita (automtica): El compilador efecta de manera automtica y transparente la conversin siguiendo la regla de conversin de tipos, e.g. 3.0/2+'a' Conversin Explcita (cast): El operador cast convierte un dato de un tipo a otro, e.g. 3.0/(double)2+(double)'a' Conversin Tipos: Ejemplo // conv.c: Conversiones usando operador-cast y printf // Resultados impresos en forma tabular

#include <stdio.h> // printf getchar

main() { double p = 3.14159265; int q = (int)p; // Conversin explcita insegura double r = p - q; // Conv. implcita segura: (double)q printf( "\n%20s = %8.4f", "pi", p ); printf( "\n%20s = %08d", "parte-entera", q ); printf( "\n%20s = %.6f", "parte-decimal", r ); getchar(); return 0; }

Operadores Aritmticos y Asignacin Residuo Divisin Entera %: Devuelve el residuo entero de la divisin entera, e.g. 4 % 5 regresa 4 Pre-incremento ++x: El valor de la expresin es igual al valor final del operando,i.e. variable incrementada Post-incremento x++: El valor de la expresin es igual al valor inicial del operando,i.e. antes de incrementarse Decremento: existe tambin el pre y post decremento, i.e. --i, i--

x = x+1; /* Equivale */ x+=1; /* Equivale */ ++x;

x = x-1; /* Equivale */ x-=1; /* Equivale */ --x;

i = 1; x = ++i; // Pre: x = 2

i = 1; y = i++; // Post: y = 1

Asignacin Mltiple y Abreviada x+=5; /* Equivale */ x=x+5;

x*=4; /* Equivale */ x=x*4;

x/=3; /* Equivale */ x=x/3;

x%=2; /* Equivale */ x=x%2;

x = y = 1; // Asignacin Mltiple

Operadores Lgicos/Bits Operadores Lgicos: Definen expresiones que regresan valores lgicos

Valores Lgicos: Valor de falso y verdadero codificado mediante un nmero entero, ya que NO existen el tipo de dato LOGICO o BOOLEANO

Falso: Valor igual a cero Verdadero: Velor diferente de cero

Tabla 3. Operadores Lgicos/Bits Nombre NOT AND OR XOR Operadores Lgicos/Bits Operador-Lgico ! && || Operador-Bit ~ & | ^ Significado Negacin Y (Conjuncin) O inclusivo O exclusivo

AND &&: Si operando-izquierdo es falso, toda la expresin es falsa y no se evalua operando-derecho, e.g. 0 && ++x NO se evala ++x OR ||: Si un operando es cierto toda la expresin es verdadera y no se evala el otro operando, e.g. 3 || ++x NO se evala ++x

Tabla 4. Tabla de Verdad operadores Lgicos/Bits A F F V V Operadores Especiales Operador Coma (,): Util para dividir una expresin en sub-expresiones, el valor de toda la expresin ser igual al de la ltima sub-expresin evaluada Ejemplo: x=(y=2,z=y*3,z+4) regresa x=10 If Aritmtico (?:): Es el nico operador que tiene tres operandos, si el primer operando es cierto, la expresin regresa el segundo operando, si no, regresa el tercero Ejemplo: x>y? x : y regresa el mayor valor de ambos Precedencia y Asociatividad de los operadores La precedencia de los operadores es su 'adherencia' con respecto a los dems. Los operadores tienen diferentes precedencias, lo que establece el orden de evaluacin o de aplicacin de cada B F V F V NOT A V F V F A AND B F F F V A OR B F V V V A XOR B F V V F

uno de ellos cuando hay ms de uno en la misma expresin. La precedencia se puede modificar utilizando los parntesis '(', ')'. Cuando aparecen juntos dos operadores con la misma precedencia, la asociatividad determina cul se evaluar primero. La siguiente tabla recoge todos los operadores en orden de mayor a menor precedencia. Todos los operadores son binarios excepto los que actuan sobre expr, los operadores de creacin y de conversin de tipo, mientras que el operador condicional es ternario. Los operadores con idntica precedencia aparecen en la misma lnea: postfijos unarios creacin o conversin multiplicacin suma desplazamiento relacionales igualdad AND a nivel de bits XOR a nivel de bits OR a nivel de bits AND lgico OR lgico condicional Asignacin [] . (parmetros) expr++ expr-++expr --expr +expr -expr ~ ! new (tipo)expr */% +<< >> >>> < > <= >= instanceof == != & ^ | && || ?: = += -= *= /= %= >>= <<= >>>= &= ^= |=

Todos los operadores binarios que no son de asignacin asocian por la izquierda. Los de asignacin asocian por la derecha. Lo que hace que a=b=c; sea equivalente a a=(b=c); Tipo de la Expresin Todas las expresiones tienen un tipo de dato. El tipo de una expresin est determinado por los tipos de las partes que la componen y la semntica de los operadores. Si se aplica un operador aritmtico a un valor entero, el resultado es de tipo int, a menos que uno de los dos operandos sea long, en cuyo caso el resultado serlong. Todas las operaciones con enteros se realizan con precisin int o long, por lo que los tipos byte y short son promocionados a int antes de ser evaluados. Si cualquiera de los operandos es un nmero en punto flotante, la operacin se realiza en aritmtica de punto flotante. Tales operaciones se hacen en float a menos que uno de los operandos sea double, en cuyo caso se usa double tanto para el clculo como para el resultado. Cuando se utiliza un char en una operacin aritmtica se convierte a int asignando ceros a los 16 bits superiores.

3.7.4 Conversiones de Tipo Java es un lenguaje de tipado fuerte, lo que significa que comprueba la compatibilidad del tipo en tiempo de compilacin en casi todos los casos. Java impide las asignaciones incompatibles y proporciona conversiones cuando la compatibilidad es posible. Conversiones Implcitas Algunas conversiones se realizan de manera automtica, sin tener que preocuparnos por ellas. Estas se producen cuando utilizamos un tipo de dato ms pequeo en lugar de uno ms grande, en trminos de almacenamiento. As, podramos utilizar un int en lugar de un long (pero no al contrario). Tambin se produce una conversin implcita de enteros a punto flotante, pero no a la inversa. Adems, un valor en punto flotante se puede asignar a cualquier variable en punto flotante de precisin igual o mayor. Conversiones Explcitas Cuando un tipo no se puede asignar a otro con conversin implcita a menudo se puede convertir explcitamente al otro tipo. Una conversin explcita solicita un valor nuevo de un tipo nuevo que sea la mejor representacin disponible del valor antiguo en el tipo antiguo. Algunas conversiones no estn permitidas, como unboolean a int. Este tipo de conversiones puede llevar asociado la prdida de precisin y el redondeo. Las conversiones explcitas se pueden realizar colocando delante del elemento cuyo tipo se quiere cambiar el nuevo tipo entre parntesis, como se puede apreciar en el siguiente ejemplo. double d=7.99; int i=(int)d; Conversiones de cadenas La clase String es especial, pues se usa implcitamente en el operador + de concatenacin de cadenas. Cuando en la concatenacin est un objeto no String Java lo convierte a cadena de caracteres invocando su mtodo toString. Cuando se convierte a cadena de caracteres una referencia nula resulta la cadena "null". Si no hay definido un mtodo toString para una clase, se utiliza uno por defecto, que devuelve una representacin del objeto en forma de cadena de caracteres. 3.7.5 Operadores Aritmticos Operan sobre cualquier tipo de dato numrico, ya sea entero o punto flotante, y producen resultados enteros o de punto flotante. Son - menos unario, + ms unario, * producto, / divisin, % resto de la divisin, + suma y - resta.

La aritmtica de enteros es aritmtica modular en complemento a dos, es decir, si un valor excede el rango de su tipo es recucido a su mdulo. Por tanto, la aritmtica de enteros nunca produce

desbordamientos ni subdesbordamientos. La divisin entre enteros trunca el resto con la siguiente regla: (x/y)*y + x%y == x. La divisin por cero o el resto por cero no son vlidas. La aritmtica de caracteres es aritmtica de enteros ya que un char es convertido implcitamente a int. Java usa el estndar IEEE 754-1985 tanto para la representacin como para la aritmtica de nmeros en punto flotante. De acuerdo con l, podemos producir desbordamientos hacia el infinito o subdesbordamientos a cero. Tambin se puede representar los resultados de expresiones no vlidas, NaN, como la divisin por cero. Concatenacin de Cadenas de Caracteres Se puede usar + para concatenar dos cadenas de caracteres: String ho="ho"; String la= ho + "la"; la += "!"; System.out.println(la); cuya salida ser: hola! Operadores de Incremento y Decremento Los operadores ++ y -- son los operadores de incremento y decremento, respectivamente. La expresin i++ es equivalente a i=i+1, salvo que i se evala slo una vez. Los operadores de incremento y decremento pueden ser prefijos o postfijos, dependiendo de si aparecen delante o detrs del operando. Si el operador est delante, la operacin se realiza antes de que sea devuelto el valor de la expresin. Si est detrs la operacin se realiza despus de que se haya usado el valor original. Por ejemplo: class Prepost{ public static void main(String [] args){ int i=0; System.out.println(++i + " " + i++ + " " + i); } } produce la salida 112 Los operadores de incremento y decremento se pueden aplicar tambin a variables char para obtener el carcter Unicode siguiente o anterior, respectivamente.

Operadores Lgicos, Relacionales y Condicionales Java soporta un juego estndar de operadores relcionales y de igualdad: > mayor que >= mayor o igual que < menor que <= menor o igual que == igual != distinto

Todos estos operadores dan lugar a valores boolean. El operador unario ! convierte un valor lgico en el complementario, !true es igual a false. Los operadores== y != son los nicos que pueden comparar operandos booleanos. Los dems tipos se comparan de forma natural. Dos referencias se pueden comparar siempre a efectos de igualdad. ref1 == ref2 ser true cuando se refieran al mismo objeto o cuando ambas sean null. En caso contrario sern false. Para comparar la igualdad de dos objetos de tipo String hay que utilizar el mtodo String.equals ya que la comparacin con el operador == comparara la referencia, no el contenido de los objetos. Los resultados de expresiones booleanas se pueden combinar con otros resultados para componer expresiones ms complejas utilizando las siguientes conectivas: && Y lgico || O lgico

Estos operadores intentan evitar evaluar el segundo operando si es posible, de modo que en la expresin x && y la variable y ser evaluada slo si x es true, ya que en otro caso la expresin ser siempre false. Java ha mantenido el operador condicional de asignacin del C: ?:. Este operador es ternario: variable = (condicin ? valor1 : valor2); El primer operando es de tipo boolean, y los otros dos pueden ser de cualquier tipo compatible con la variable a la que se asignar uno de ellos dependiendo del valor de la condicin. Si la condicin es true el valor de la expresin ser valor1, si el false ser valor2. int a=1,b=2,menor; menor=(a<b?a:b); // menor contendr el menor de a y b

Operadores relacionales

Sinopsis Los operadores relacionales, tambin denominados operadores binarios lgicos y de comparacin, se utilizan para comprobar la veracidad o falsedad de determinadas propuestas de relacin (en realidad se trata respuestas a preguntas). Las expresiones que los contienen se denominan expresiones relacionales. Aceptan diversos tipos de argumentos, y el resultado, que

es la respuesta a la pregunta, es siempre del tipo cierto/falso, es decir, producen un resultado booleano Si la propuesta es cierta, el resultado es true (un valor distinto de cero), si es falsa false (cero). C++ dispone de los siguientes: < > <= >= == != Menor que Mayor que Menor o igual que Mayor o igual que Igual que (identidad) Desigual que (desigualdad)

2 Sintaxis expresin-relacional < shift-expresion expresin-relacional > shift-expresion expresin-relacional <= shift-expresion expresin-relacional >= shift-expresion expresin-de-igualdad == expresin-relacional expresin-de-igualdad != expresin-relacional

Comentario Como puede verse, todos ellos son operadores binarios (utilizan dos operandos), de los cuales, dos de ellos son de igualdad: == y !=, y sirven para verificar la igualdad o desigualdad entre valores aritmticos o punteros. Estos dos operadores pueden comparar ciertos tipos de punteros, mientras que el resto de los operadores relacionales no pueden utilizarse con ellos. Observe que los operadores == y != tienen una menor precedencia que el resto de los operadores relacionales < y >, <= y>=. El operador de desigualdad != tiene otra forma estndar de designacin mediante la palabra clave not_eq

3.1 Cualquiera que sea el tipo de los operandos, por definicin, un operador relacional, produce un bool (true o false) como resultado, aunque en determinadas circunstancias puede producirse una conversin automtica de tipo a valores int (1 si la expresin es cierta y 0 si es falsa). Ejemplo de comprobacin: #include <iostream.h> int main() { float f = 12.1, g = 12.2; cout << "Tipo: " << typeid(f < g).name() << endl; } Salida

Tipo: bool

4 Condiciones En las expresiones relacionales E1 <operador> E2, los operandos deben cumplir alguna de las condiciones siguientes: 1. E1 y E2 son tipos aritmticos. 2. E1 y E2 son punteros a versiones cualificadas o no cualificadas de tipos compatibles. 3. Uno de ellos es un puntero a un objeto, mientras que el otro es un puntero a una versin cualificada o no cualificada de void. 4. Uno de los dos es un puntero, mientras que el otro es un puntero nulo constante.

Cuando se trata de tipos definidos por el usuario (que no cumplen las condiciones anteriores) estos operadores pueden ser sobrecargados de forma que puedan ser utilizados con dichos tipos

Precaucines 5.1 Con el operador de igualdad Las expresiones relacionales de igualdad son frecuentsimas en la programacin. En multitud de ocasiones se comparan dos expresiones y se toma una decisin en funcin del resultado cierto / falso obtenido. Por ejemplo, la condicin de la sentencia de iteracin while ( 4.10.3) puede ser una expresin relacional de igualdad: int x = 1; y = 2; ... while (x == y ) { cout << "Son iguales..." << endl; ... } Es muy frecuente que, tanto el principiante, como el programador acostumbrado a otros lenguajes, donde el operador de asignacin y el de igualdad son distintos a los utilizados en C++ (por ejemplo := y =), confundan el operador de igualdad == con el de asignacin =. Es este caso, el cdigo anterior sera escrito errneamente: while (x = y ) { cout << "Son iguales..." << endl; ... } El resultado es que el bucle se ejecuta mientras sea y != 0, ya que la expresin asigna y a x, y el resultado es cierto mientras que xsea distinto de cero. Algunos compiladores son suficientemente "inteligentes" como para advertir del posible error, pero otros aceptan que se pretende una asignacin. Por ejemplo, en el caso anterior, el compilador Borland C++ 5.5 produce una advertencia:

Possibly incorrect assignment in function.... En cambio Visual C++ 6.0 de MS acepta la propuesta sin rechistar.

5.2 Con los operadores compuestos Es frecuente alterar el orden de los operadores compuestos. Recuerde que el signo "=" va a la derecha !! Ejemplo: int n = 10; for (i = 0 ; i =< n ; i++) { /* ejecutar este bucle */ } // Error !! for (i = 0 ; i <= n ; i++) { /* ejecutar este bucle */ } // Ok.

3.7.8 Operadores de Campos de Bits Los operadores binarios a nivel de bits se pueden usar slo con datos enteros o booleanos: &Y | O inclusivo ^ O exclusiva (XOR) ~ Complemento << Desplaza los bits a la izquierda, rellenando por la derecha con ceros. >> Desplaza los bits a la derecha, rellenando por la izquierda con el bit ms alto (signo). >>> Desplaza los bits a la derecha, rellenando por la izquierda con ceros.

Ejemplos de sentencias que utilizan estos operandos son: int a=1; int b; b=a<<1; System.out.println("a << 1 = " + b); b=a<<2; System.out.println("a << 2 = " + b); b=a & 0x00000000; System.out.println("a & 0x00000000 = " + b); b=a | 0x00000000; System.out.println("a | 0x00000000 = " + b); cuyos resultados sern; a << 1 = 2 a << 2 = 4 a & 0x00000000 = 0 a | 0x00000000 = 1 Los operadores booleanos a nivel de bits, & y | se pueden usar tambin sobre valores boolean, devolviendo el mismo valor que sus homlogos lgicos && y ||, aunque con una diferencia: los operadores a nivel de bit evalan siempre los dos operandos.

3.7.9 Operadores de Asignacin El operador asignacin ms elemental es =, y su cometido es asignar el operando derecho al izquierdo, y devolver el derecho como resultado. Cualquier otro operando aritmtico o de nivel de bits binario puede combinarse con = para formar otro operador de asignacin. As, la expresin b += a es equivalente b = b + a, slo que en la primera versin b se evala slo una vez. Expresiones

Una expresin es todo aquello que se evala y devuelve un valor que est compuesta por un conjunto de operadores, variables, constantes, con los que se efecta un proceso u operacin. Es una combinacin de constantes, variables, signos de operacin, parntesis y nombres especiales (nombres de funciones estndar), con un sentido unvoco y definido y de cuya evaluacin resulta un nico valor. Toda expresin tiene asociada un tipo que se corresponde con el tipo del valor que devuelve la expresin cuando se evala, por lo que habr tantos tipos de expresiones como tipos de datos. Habr expresiones numricas y lgicas. Numricas: Operadores aritmticos. Son los que se utilizan en las expresiones numricas (una combinacin de variables y/o constantes numricas con operadores aritmticos y que al evaluarla devuelve un valor numrico. +, -, *, /. Operacin resto: Lo que devuelve es el resto de una divisin entera. Divisin entera: Nos devuelve el cociente de una divisin entera (en la que no se sacan decimales). Todos estos operadores son binarios (el operador se sita en medio), el menos tambin puede ser unario (lleva un nico operando) y significa signo negativo. Reglas de precedencia: El problema es cuando una expresin entera segn como la evalue pueda dar diferentes valores. 7*3+4 / 25 La solucin es aplicar prioridad entre los operadores, de modo que ante la posibilidad de usar varios siempre aplicaremos primero el de mayor prioridad. Cada lenguaje puede establecer sus propias reglas de prioridad o precedencia de operadores. Si no nos acordamos, siempre podemos poner ( ).

1) ^ 2) * / div mod 3) + Entre dos operaciones que tienen la misma precedencia para resolver la ambigedad, hay que usar la regla de la asociatividad. La ms normal es la de la asociatividad a izquierdas (primero lo de la izquierda). Expresiones lgicas: Operadores relacionales y lgicos. Una expresin lgica es aquella que slo puede devolver dos valores (Verdadero o Falso). Los valores que pueden aparecer en una expresin lgica son de 2 tipos: lgicos y relacionales. La particularidad de las expresiones lgicas es que mientras en una expresin numrica por devolver un valor numrico los operandos solo pueden ser nmeros, en una expresin lgica los operandos no tienen porque ser booleanos aunque se devuelva un valor booleano. Esto es lo que ocurre cuando en la expresin lgica utilizamos operadores relacionales con lo cual se obtienen valores lgicos o booleanos a partir de otros que no lo son. En cambio cuando los operadores son lgicos los operandos obligatoriamente tambin tienen que ser lgicos. Operadores relacionales: <, >, =,<> Cmo se evala una expresin relacional? 1. Primero se evala el primer operando y se sustituye por su valor. 2. Luego se evala el segundo operando y se sustituye por su valor. 3. Finalmente se aplica el operador relacional y se devuelve el valor booleano correspondiente. El problema del tipo real: Desde la informtica, los nmeros reales son finitos, ya que tenemos un mximo de cifras decimales. Cuando trabajamos con un =, matemticamente da un valor exacto, pero informticamente no es exacto. Soluciones: La que nos aporte el propio lenguaje de programacin. Se considera un valor de error. Trabajar con nmeros enteros siempre que sea posible.

COMENTARIOS En los programas siempre es necesario colocar notas para que sea mas clara su estructura y posteriormente no sea mas fcil su comprensin, para ello puede colocar los comentarios que van antecedidos por dos diagonales //. Los comentario no realizan ninguna accin, por lo tanto no modifican de ninguna manera programa por ello pueden ser colocados en cualquier parte del programa utilizando su sintaxis. Es un fragmento de cdigo que se puede evaluar como un valor, objeto, mtodo o espacio de nombres nico. Las expresiones pueden contener un valor literal, una invocacin de mtodo, un operador y sus operandos o un nombre simple. Los nombres simples pueden ser el nombre de una variable, miembro de tipo, parmetro de mtodo, espacio de nombres o tipo. Las expresiones pueden utilizar operadores que, a su vez, utilizan otras expresiones como parmetros o llamadas a mtodos cuyos parmetros son, a su vez, otras llamadas a mtodos, de modo que pueden variar de simples a muy complejas.

Algunos elementos que pueden formar parte de una expresin son: valores literales (como 2, "hola" o 5.7), variables, operadores y llamadas a funciones. Por ejemplo, la siguiente expresin entrega el valor 10 al ser evaluada: >>> 4 * 3 - 2 10 El valor de la siguiente expresin depende del valor que tiene la variable n en el momento de la evaluacin: >>> n / 7 + 5 Una expresin est compuesta de otras expresiones, que son evaluadas recursivamente hasta llegar a sus componentes ms simples, que son los literales y las variables. Por ejemplo, en la expresin: >>> b ** 2 - 4 * a * c las subexpresiones que son evaluadas son las siguientes: b ** 2 b 2 4*a*c 4*a 4 a c

Literales y nombres simples Los dos tipos de expresiones ms simples son literales y nombres simples. Un literal es un valor constante que no tiene ningn nombre. Por ejemplo, en el cdigo siguiente, 5 y "Hello World" son valores literales: C# int i = 5; string s = "Hello World"; En el ejemplo anterior, tanto i como s son nombres simples que identifican variables locales. Cuando esas variables se utilizan en una expresin, el valor de la variable se recupera y se utiliza para la expresin. Por ejemplo, en el cdigo siguiente, cuando se llama a DoWork, el mtodo recibe el valor 5 de forma predeterminada y no es posible tener acceso a la variable var: C# int var = 5; DoWork(var); Expresiones de invocacin En el ejemplo de cdigo siguiente, la llamada a DoWork es otro tipo de expresin, denominada expresin de invocacin. C# DoWork(var); Especficamente, llamar a un mtodo es una expresin de invocacin de mtodo. Una invocacin de mtodo requiere el nombre del mtodo, ya sea un nombre como en el ejemplo anterior o el resultado de otra expresin, seguido de parntesis y los parmetros del mtodo. Para obtener ms informacin, vea Mtodos (Gua de programacin de C#). Una invocacin de delegado utiliza el nombre de un delegado y los parmetros de mtodo entre parntesis. Para obtener ms informacin, veaDelegados (Gua de programacin de C#). Las invocaciones de mtodo e invocaciones de delegado se evalan como el valor que devuelve el mtodo, si devuelve alguno. Los mtodos que devuelven un valor nulo no se pueden utilizar en lugar de un valor en una expresin.

3.8 Bibliografa
La Biblia de Java. Vanhelsuw et. al. Anaya Multimedia. 1996. El Lenguaje de Programacin Java. Ken Arnold y James Gosling. Addison-Wesley/DOMO. 1997. http://www.edukanda.es/mediatecaweb/data/zip/1164/page_50_b.htm http://ocw.upm.es/ciencia-de-la-computacion-e-inteligencia-artificial/fundamentosprogramacion/contenidosteoricos/ocwfundamentosprogramaciontema4.pdf http://www.gedlc.ulpgc.es/docencia/NGA/expresiones.html http://juancarlosinfor.blogspot.mx/2010/09/jerarquia-de-operadores.html http://www.infor.uva.es/~jvegas/cursos/prog/tema3.html http://www.zator.com/Cpp/E4_9_12.htm#TOP http://csrg.inf.utfsm.cl/~rbonvall/progra-ust-2010-1/expresiones.html http://programacioncitlajessiyaz.blogspot.mx/p/unidad2.html http://msdn.microsoft.com/es-mx/library/ms173144(v=vs.80).aspx http://expo.itch.edu.mx/view.php?f=c_23#page3 http://maxus.fis.usal.es/FICHAS_C.WEB/03xx_PAGS/0303.html http://ruben-tese.blogspot.mx/2008/07/45-prioridad-de-operadores-evaluacin-de.html

You might also like