martes, 6 de abril de 2010

jerarquia de operadores C++

OPERADORES ARITMÉTICOS.

Sirven para realizar operaciones aritméticas básicas. Los operadores aritméticos C siguen las reglas algebraicas típicas de jerarquía o prioridad.

Los paréntesis se utilizan en las expresiones de C de manera muy similar a como se usan en las expresiones algebraicas, sirven para indicar que la expresión dentro de ellos se debe realizar primero. Por ejemplo, para multiplicar a por la cantidad b+c escribimos:

a * (b + c)

Pow es la función que permite realizar las potencias. Por ejemplo x=23 se podría presentar en C de las maneras siguientes: x=pow (2 , 3); o x=2*2*2;

Las reglas de precedencia o jerarquía de operadores son guías de acción, que le permiten a C calcular expresiones en el orden correcto. Cuando decimos que una evaluación o cálculo avanza de izquierda a derecha, nos estamos refiriendo a la asociatividad de los operadores.

Ejemplo 1:

El siguiente ejemplo contiene módulo (%), multiplicación, división, adición y sustracción.

Algebraicamente: z= pr mod q + w ÷ / x - y

En C: z = p * r % q + w / x – y;

1, 2, 4, 3, 5

Los números de las operaciones indican el orden en el cual C valorará o calculará los operadores. La multiplicación, el módulo y la división, serán evaluadas primero, en un orden de izquierda a derecha (es decir, se asocian de izquierda a derecha), en vista de que tienen precedencia mayor que la suma y la resta. La suma y la resta serán calculadas después. También ellas se evaluarán de izquierda a derecha.

No todas las expresiones con varios pares de paréntesis contienen paréntesis anidados. La expresión a * ( b + c) + c * (d + e) no contiene paréntesis anidados. En vez de ello, se dice que estos paréntesis están “en el mismo nivel”. En ese caso, se calcularán las expresiones del paréntesis primero y en un orden de izquierda a derecha

Ejemplo 2:

Se tiene la siguiente expresión polinómica de segundo grado y=2*5*5+3*5+7, se desea evaluarla y encontrar el resultado.

Solución:

Paso 1. y = 2 * 5 * 5 + 3 * 5 + 7;
2 * 5 = 10 (Multiplicación más a la izquierda primero)

Paso 2. y = 10 * 5 + 3 * 5 + 7;
10 * 5 = 50 (Multiplicación más a la izquierda)

Paso 3. y = 50 + 3 * 5 + 7;
3 * 5 = 15 (Multiplicación antes de la suma)

Paso 4. y = 50 + 15 + 7;
50 + 15 = 65 (Suma más a la izquierda)

Paso 5. y = 65 + 7;
65 + 7 = 72 (Última operación)

Operadores de Igualdad en Lenguaje C.

Como ya hemos visto, en Lenguaje C, los operadores algebraicos tienen la misma función, pero cambia la forma en la que se presentan.

Los operadores de igualdad no son la excepción y al hablar de estos nos referimos a igual (=) y no igual (≠). El resultado que generan los operadores de igualdad, puede ser un cero (falsa) o uno (verdadero).

Tabla de Operadores de Igualdad.
Ejemplo:

a = b , se muestra en Lenguaje C de la siguiente manera: a = = b;

y a ≠ b , se escribiría así: a ! = b.

Operadores Relacionales en Lenguaje C.

Los enunciados ejecutables de C, pueden llevar a cabo ACCIONES (como cálculos o salidas de datos), o tomar DECISIONES (evaluación de dos o más expresiones). Por ejemplo, podríamos necesitar tomar una decisión en un programa para determinar si la calificación de una persona en un examen es mayor o igual a 7, y si es así, imprimir el mensaje “Felicidades usted pasó”.

Los operadores relacionales tienen un mismo nivel de precedencia y se asocian de izquierda a derecha. En C, una condición puede ser cualquier expresión que genere un valor de verdad falso o verdadero.

Tabla de Operadores Relacionales.
Ejemplo
Dados a=1, b=2 y c=3 efectúe la siguiente expresión: 10 * a > c * 10 + b

Paso I. 10 * 1 > 3 * 10 + 2

Paso II. 10 > 30 + 2

Paso III. 10 > 32

Respuesta FALSO

Operadores Lógicos.

Se utilizan para evaluar dos o más relaciones, estos operadores son AND, OR y NOT, siempre devuelven como resultado un 0 (falso) o 1 (verdadero). Se evalúan primero las relaciones y luego se evalúan las operaciones entre sí tomando en cuenta los operadores lógicos.

El Operador AND.

Se evalúan primero las expresiones aritméticas, luego las relacionales y lógicas. Con el operador and, para que la respuesta sea verdadera, ambas relaciones deben ser verdaderas, de lo contrario, con una que sea falsa, el resultado de la evaluación es falso. En C se utiliza && para representar el operador AND.

Ejemplo 1:

3 > 5 and 3 <> 5 && 3 <> 2 and 10 ≥ 9; en Lenguaje C se representa por 5 > 2 && 10 >= 9;

En esta expresión las dos evaluaciones dan como resultado un valor VERDADERO, por lo que al evaluar VERDADERO and VERDADERO da como resultado VERDADERO.

El Operador OR.

En este caso, al evaluar las expresiones aritméticas y luego las relacionales y lógicas; para que la respuesta sea verdadera, una de las relaciones debe ser VERDADERA, si todas las evaluaciones son FALSAS, el resultado de la evaluación es falso. En C se utiliza para representar el operador OR.

El Operador NOT.

Este operador tiene la función de cambiar el valor de verdad al penúltimo resultado obtenido de evaluar la expresión. Si al final se obtiene not (verdadero), el resultado será FALSO; y si es not (falso), el resultado será VERDADERO. En C se utiliza ! para representar dicho operador.

Ejemplo 1:

Not(99 >= 50 or 10 > = 75); en Lenguaje C se representa !( 99 >= 50 10 >= 75)

Al evaluar esta expresión, notamos que en la primera parte nos da un verdadero y en la segunda nos da un falso. De verdadero or falso obtenemos verdadero y finalmente not de verdadero nos da como resultado un FALSO.

Jerarquía general de operadores en Lenguaje C.
ASOCIATIVIDAD

En una expresión tal como 3 * 4 + 5 el compilador realiza primero la multiplicación - por tener el operador * prioridad más alta - y luego la suma, por tanto, produce 17. Para forzar un orden en las operaciones se deben utilizar paréntesis.

3 * (4 + 5) produce 27, ya que 4 + 5 se realiza en primer lugar.

La asociatividad determina el orden en que se agrupan los operadores de igual prioridad; es decir, de izquierda a derecha o de derecha a izquierda. Por ejemplo,

X – y + z se agrupa como ( x – y ) + z

Ya que – y +, con igual prioridad, tienen asociatividad de izquierda a derecha. Sin embargo,

x = y = z se agrupa como x = ( y = z ) dado que su asociatividad es de derecha a izquierda.

Uso de Paréntesis

Los paréntesis se pueden utilizar para cambiar el orden usual de evaluación de una expresión determinada por su prioridad y asociatividad. Las subexpresiones entre paréntesis se evalúan en primer lugar según el modo estándar y los resultados se combinan para evaluar la expresión completa. Si los paréntesis están anidados, es decir, un conjunto de paréntesis contenido en otro, se ejecutan en primer lugar los paréntesis más internos. Por ejemplo, considérese la expresión ( 7 * (10 – 5) % 3 ) * 4 + 9

La subexpresión (10 – 5) se evalúa primero, produciendo (7 * 5 % 3) * 4 + 9

A continuación se evalúa de izquierda a derecha la subexpresión (7 * 5 % 3) y obtenemos

(35 % 3) * 4 + 9 luego

2 * 4 + 9 donde se realiza la multiplicación y obtenemos 8 + 9 lo que produce un resultado final de 17.

Ejercicio 1.

A continuación se muestran expresiones algebraicas en base a las cuales usted deberá formular expresiones en C, utilizando los operadores aritméticos y tomando en cuenta la precedencia de operadores aritméticos.

1.) db+ac÷x+y 3.) d mod c (b + a) 5.) ax

2.) x+y ( m) n 4.) x + y + z ( w ÷ a) 6.) (x + y) dn

Ejercicio 2:

Si x=10, y=5 y z=1 encontrar el resultado de las siguientes expresiones:

a) x = y ______ b) z ≥ y ______ c) x ≤ y ________

Ejercicio 3:

Si x=2, y=1, c=4 y d=6 evalúe la expresión y diga el resultado.

A) x = y _____________ B) c ≠ d __________

Ejercicio 4. Evalúe las expresiones siguientes; use los mismos valores del ejemplo anterior:

A) ( y + 2 ) * c > = ( d + 1 ) * c R/ ______________

B) ( ( 2 / c ) * ( d / 2 ) ) + 5 < operador =" asigna" pi =" 3.1416" raiz2 =" 1.4142" a =" b" c =" 45;" a=" (b" c =" 45));" a =" b" c =" 5;" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg8XCs8tzfD5ZhLmiYWQdThIzOaH_Ak0swuQfzbwqRNSyRbrDEA1-y4xfFA8ziSQE8SIjLJGG34xXFeuuTZkXO7r-il39Qwnb-7ph8sOYsqPEH2zLGEd3s6ZJbN0TOXy2ksCfVOPyUylo/s1600-h/asignacion.JPG">

Operadores de Incrementación y Decrementación

De las características que incorpora C, una de las más útiles son los operadores de incremento ++ y decremento -- . Los operadores ++ y --, denominados de incrementación y decrementación, suman o restan 1 a su argumento, respectivamente, cada vez que se aplican a una variable.

Entonces a++ equivale a a = a + 1

Estos operadores tienen la propiedad de que pueden utilizarse como sufijo o prefijo, el resultado de la expresión puede ser distinto, dependiendo del contexto.

Las sentencias ++n; y n++; tienen el mismo efecto; así como --n; y n--;

Sin embargo, cuando se utilizan como expresiones tales como

m = n++;

printf(“ n = %d”, n--) ; el resultado es distinto si se utilizan como prefijo.

++n produce un valor que es mayor en uno que el de n++, y --n produce un valor que es menor en uno que el valor de n--. Supongamos que

n = 8;

m = ++n; /* incrementa n en 1, dando 9, y lo asigna a m */

n = 9;

printf(“ n = %d”, --n); /*decrementa n en 1, dando 8 y lo pasa a printf( ) */

En este otro ejemplo:

int a = 1 , b;

b = a++; /* b vale 1 y a vale 2 */

int a = 1, b;

b = ++a; /* b vale 2 y a vale 2 */

Entonces, si los operadores ++ y -- están de prefijos, la operación de incremento o decremento se efectúa antes que la operación de asignación; si los operadores están de sufijos, la asignación se efectúa en primer lugar y la incrementación o decrementación a continuación.

3 comentarios: