Você está na página 1de 29

18/11/08

Programación 1 (03) Unidad IV: Expresiones Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de

Programación 1 (03) Unidad IV: Expresiones

Programación 1 (03) Unidad IV: Expresiones Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de

Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresión

Expresión Puede ser: ✫   Una variable: x ✫   Una constante: 3 ✫   Una

Puede ser:

Una variable: x

Una constante: 3

Una combinación de operadores y operandos:

(y + 1)/2

Prof. Flor Narciso

Programación 1

Semestre B-2008

2

18/11/08

 

Expresión

 
Expresión Tipos de expresiones ✫   Aritmé'cas : Los operandos que intervienen en ella son numéricos,

Tipos de expresiones

 

Aritmé'cas: Los operandos que intervienen en ella son numéricos, el resultado es numérico y los operadores son aritméQcos

Lógicas: Su resultado es CIERTO ó FALSO. Se construyen mediante los operadores relacionales y lógicos

Prof. Flor Narciso

Programación 1

 

3

Semestre B-2008

 
 

Operadores aritméQcos en C

 
Expresión Tipos de expresiones ✫   Aritmé'cas : Los operandos que intervienen en ella son numéricos,
 

Operación

Operador

Expresión

Operador en

Expresión en

 
 

algebráica

C

C

Suma

+

 

A +

3

+

A +

3

Resta

-

B - C

-

B - C

 

Producto

x

X x Y

*

X * Y

División

/

X/Y ó X Y

/

X/Y

Módulo

%

R % S

 

Incremento

I

+ 1

++

I++ ó ++I

Decremento

 

I

-

1

--

I-

- ó

-

-

I

Prof. Flor Narciso

Programación 1

 

4

Semestre B-2008

 

18/11/08

Operadores aritméQcos en C

Operadores aritméQcos en C Operación Módulo •   Operador: % •   Este operador calcula el

Operación Módulo Operador: % Este operador calcula el resto del cociente entero Se usa con variables enteras Su divisor no puede ser cero

Prof. Flor Narciso

Programación 1

5

Semestre B-2008

 

Operadores aritméQcos en C

Operadores aritméQcos en C Operación Módulo •   Operador: % •   Este operador calcula el

Ejemplos

  • 25 % 5 = 0

  • 13 % 2 = 1

  • 23 % 4 = 3

Prof. Flor Narciso

Programación 1

6

Semestre B-2008

18/11/08

 

Operadores aritméQcos en C

Operadores aritméQcos en C Incremento (++) •   La expresión a++; es equivalente a la expresión

Incremento (++)

 

La expresión a++; es equivalente a la expresión a = a + 1;

En una sola expresión se Qene:

 

Un operador asignación El operador suma Un valor literal: el valor 1

Es un operador unario Se aplica a una sola variable

Prof. Flor Narciso

Programación 1

7

Semestre B-2008

 
 

Operadores aritméQcos en C

Operadores aritméQcos en C Incremento (++) •   La expresión a++; es equivalente a la expresión

Incremento (++)

 

Para n = 2, la ejecución de la sentencia

i

= n++;

/* post‐incremento */

asigna el valor 2 a i y después incrementa el valor de n a 3

i

= 2

n = 3

La ejecución de la sentencia

 

i

= ++n;

/*pre‐incremento */

incrementa el valor de n a 4 y después asigna este valor a i

 

n = 4

i

= 4

Prof. Flor Narciso

Programación 1

8

Semestre B-2008

18/11/08

Operadores aritméQcos en C

Operadores aritméQcos en C Incremento (++) unsigned short int a, b = 2, c = 5;

Incremento (++)

unsigned short int a, b = 2, c = 5;

a = b + c++;

El operador ++ está ubicado a la derecha de la variable c Primero se efectúa la suma y la asignación sobre a, que pasa a valer 7 Luego se incrementa la variable c, que pasa a valer 6 La variable b no modifica su valor

Prof. Flor Narciso

Programación 1

Semestre B-2008

9

Operadores aritméQcos en C

Operadores aritméQcos en C Incremento (++) unsigned short int a, b = 2, c = 5;

Incremento (++)

unsigned short int a, b = 2, c = 5;

a = b + ++c;

El operador ++ está ubicado a la izquierda de la variable c Primero se incrementa la variable c, que pasa a valer 6 Luego se realiza la suma y la asignación sobre a, que pasa a valer 8 La variable b no modifica su valor

Prof. Flor Narciso

Programación 1

Semestre B-2008

10

18/11/08

 

Operadores aritméQcos en C

Operadores aritméQcos en C Decremento (‐‐) •   La expresión a‐‐; es equivalente a la expresión

Decremento (‐‐)

 

La expresión a‐‐; es equivalente a la expresión a = a ‐ 1; En uno sola expresión se Qene:

Un operador asignación El operador resta Un valor literal: el valor 1

 

Es un operador unario: Se aplica a una sola variable

Prof. Flor Narciso

Programación 1

11

Semestre B-2008

 
 

Operadores aritméQcos en C

Operadores aritméQcos en C Decremento (‐‐) •   La expresión a‐‐; es equivalente a la expresión

Decremento (‐‐)

 

Para n = 5, la ejecución de la sentencia

 

i

= n‐‐;

/* post‐decremento */

asigna el valor 5 a i y después decrementa el valor de n a 4.

i

= 5

n = 4

La ejecución de la sentencia

 

i

= ‐‐n;

/* pre‐decremento */

decrementa el valor de n a 3 y después asigna este valor a i.

 

n = 3

i

= 3

Prof. Flor Narciso

Programación 1

12

Semestre B-2008

18/11/08

Operadores aritméQcos en C

Operadores aritméQcos en C •   Los operadores +, ‐, *, /, se pueden usar con

Los operadores +, ‐, *, /, se pueden usar con operandos (constante, variable o expresión) tanto enteros como reales

La división de enteros da como resultado un entero y trunca el resultado al mayor entero menor que el cociente. Es importante tener esto en cuenta cuando se trabaja con enteros

5/2 = 2 3/4 = 0 17/5 = 3

Cuando la división se realiza entre variables de punto flotante, entonces el resultado es también de punto flotante

Prof. Flor Narciso

Programación 1

Semestre B-2008

13

Operadores aritméQcos en C

Operadores aritméQcos en C ✩   Si ambos operandos son de Qpo entero entonces el resultado

Si ambos operandos son de Qpo entero entonces el resultado es de Qpo entero

Si uno de los operandos o ambos operandos son de Qpo real entonces el resultado es de Qpo real

Si la expresión evaluada da como resultado un valor de Qpo entero y la variable a la cual se le va a asignar este valor es de Qpo real, entonces el resultado será converQdo automáQcamente al Qpo real antes de realizar la asignación

Si la expresión evaluada da como resultado un valor de Qpo real y la variable a la cual se le va a asignar este valor es de Qpo entero, entonces el resultado será converQdo automáQcamente al Qpo entero antes de realizar la asignación

Prof. Flor Narciso

Programación 1

Semestre B-2008

14

18/11/08

Precedencia de los operadores aritméQcos en C ( ) Subexpresiones encerradas entre paréntesis se evalúan primero

Precedencia de los operadores aritméQcos en C

Precedencia de los operadores aritméQcos en C ( ) Subexpresiones encerradas entre paréntesis se evalúan primero

( ) Subexpresiones encerradas entre paréntesis se evalúan primero (mayor nivel de precedencia) ++ ‐‐ * / %

+ ‐ (menor nivel de precedencia)

Nota: La evaluación de los operadores con la misma prioridad se realiza de izquierda a derecha

Prof. Flor Narciso

Programación 1

Semestre B-2008

15

Expresiones aritméQcas

Expresiones aritméQcas Ejemplo : Evaluar la siguiente expresión aritméQca: (a + b + c + d

Ejemplo: Evaluar la siguiente expresión aritméQca:

(a + b + c + d + e) % 5

R1 = a + b R2 = R1 + c R3 = R2 + d R4 = R3 + e

R5 = R4%5 Resultado

Prof. Flor Narciso

Programación 1

Semestre B-2008

16

18/11/08

Expresiones aritméQcas

Expresiones aritméQcas Ejemplo : Evaluar la expresión aritméQca (a + b + c + d +

Ejemplo: Evaluar la expresión aritméQca

(a + b + c + d + e)%5

para los valores:

a = 3, b = 2, c = 1, d = 8, e = 4

R1 = 3 + 2 = 5 R2 = 5 + 1 = 6 R3 = 6 + 8 = 14 R4 = 14 + 4 = 18

R5 = 18 % 5 = 3

Prof. Flor Narciso

Programación 1

Semestre B-2008

17

Expresiones aritméQcas

Expresiones aritméQcas Ejemplo : Evaluar la siguiente expresión aritméQca: a % 2 / b – c

Ejemplo: Evaluar la siguiente expresión aritméQca:

a % 2 / b – c * a * y + 18 / c – 3 * h

R1 = a % 2 R2 = R1 / b R3 = c * a R4 = R3 * y R5 = 18 / c R6 = 3 * h R7 = R2 – R4 R8 = R7 + R5

R9 = R8 – R6 Resultado

Prof. Flor Narciso

Programación 1

Semestre B-2008

18

18/11/08

Expresiones aritméQcas

Expresiones aritméQcas Ejemplo : Evaluar la siguiente expresión aritméQca: a * (b + c) + c

Ejemplo: Evaluar la siguiente expresión aritméQca:

a * (b + c) + c * (d + e)

Determine el resultado para los valores:

a = 3, b = 2, c = 1, d = 8, e = 4

Prof. Flor Narciso

Programación 1

Semestre B-2008

19

Expresiones aritméQcas

Expresiones aritméQcas Ejercicios Suponiendo declaradas y asignadas las variables int i = 10, j = 7;

Ejercicios

Suponiendo declaradas y asignadas las variables int i = 10, j = 7;

Indique los valores de las siguientes expresiones:

  • a) (3 * i ‐ 2 * j) % (2 * d ‐ c)

  • b) 2 * ((i / 5) + (4 * (j ‐ 3)) % (i + j ‐2))

Prof. Flor Narciso

Programación 1

Semestre B-2008

20

18/11/08

Expresiones aritméQcas

Expresiones aritméQcas Convertir grados Fahrenheit a grados Centígrados Análisis E-P-S Entradas : Temperatura en grados Fahrenheit

Convertir grados Fahrenheit a grados Centígrados

Análisis E-P-S

Entradas: Temperatura en grados Fahrenheit (fahr R) Proceso: Calcular la temperatura en grados Centígrados centi = (fahr - 32.0) × (5.0/9.0) Salidas: Temperatura en grados centígrados (centi R)

Algoritmo

  • 0. Inicio

  • 1. Escribir (”Introduzca la temperatura Fahrenheit: ”)

  • 2. Leer (fahr)

  • 3. centi = (fahr - 32.0) × (5.0/9.0)

  • 4. Escribir (”Temperatura equivalente en °C es “, centi)

  • 5. Fin

Prof. Flor Narciso

Programación 1

21

Semestre B-2008

 

Expresiones aritméQcas

Expresiones aritméQcas Convertir grados Fahrenheit a grados Centígrados Análisis E-P-S Entradas : Temperatura en grados Fahrenheit

Codificación

/* Convertir grados Fahrenheit a grados Centígrados */ #include <stdio.h>

int main()

{

const float MULT = 5.0/9.0, SUB = 32.0; float fahr, centi; printf(“Introduzca la temperatura Fahrenheit: ”); scanf(“%f”, &fahr); centi = (fahr - SUB) * MULT; printf(“Temperatura equivalente en °C es %f”, centi); return 0;

}

Prof. Flor Narciso

Programación 1

22

Semestre B-2008

18/11/08

 

Operadores compuestos en C

Operadores compuestos en C Operador Asignación Significado += x += y x = x + y;
     

Operador

Asignación

 

Significado

 
   

+=

 

x

+= y

 

x

= x + y;

   

-=

 

x

-= y

 

x

= x - y;

   

*=

 

x

*= y

 

x

= x * y;

   

/=

 

x

/= y

 

x

= x / y;

   

%=

 

x %= y

   

x = x % y;

Prof. Flor Narciso

 

Programación 1

 

23

 

Semestre B-2008

 
 
 

Operadores compuestos en C

Operadores compuestos en C Operador Asignación Significado += x += y x = x + y;

Ejemplos

 
 

a += b;

 

a = a + b;

 

x

-= y;

x = x - y;

 

pot *= 2;

 

pot = pot * 2;

x

/= y + 1;

x = x/(y + 1);

suma %= 4;

 

suma = suma % 4;

Prof. Flor Narciso

 

Programación 1

 

24

 

Semestre B-2008

 

18/11/08

Sentencia de asignación múlQple

Sentencia de asignación múlQple A = B = C = D = 1 asigna a las

A = B = C = D = 1 asigna a las variables A, B, C y D el valor de 1

Solamente para asignar el mismo valor a diferentes variables
Solamente para asignar el mismo valor a
diferentes variables

Prof. Flor Narciso

Programación 1

Semestre B-2008

25

variable = variable Leer (variable) variable = expresión variable = valor constante Recuerde !!!!!
variable = variable
Leer (variable)
variable = expresión
variable = valor constante
Recuerde !!!!!
variable = variable Leer (variable) variable = expresión variable = valor constante Recuerde !!!!! Cuatro maneras

Cuatro maneras de asignar valores a las variables

x = 3;

x = y;

x = (y + 1)/2;

scanf(“%d”, &x);

Prof. Flor Narciso

Programación 1

Semestre B-2008

26

18/11/08

 

Ejercicios

Ejercicios •   Evaluar cada una de las siguientes expresiones aritméQcas: a) A % B +

Evaluar cada una de las siguientes expresiones aritméQcas:

  • a) A % B + C / D – 6

 
  • b) A + 2 * (3 + B)

  • c) 3 * (A % (B / C)) + 5

  • d) 6 * 5 / 10 * 2 + 10

  • e) (6 * 5 )/ (10 * 2) + 10

  • f) (6 * 5) /( 10 * 2 + 10)

  • g) (6 * 5) / (10 * (2 + 10))

 
  • h) A * B / C * D

 

Prof. Flor Narciso

Programación 1

27

Semestre B-2008

 
 

Ejercicios

Ejercicios •   Evaluar cada una de las siguientes expresiones aritméQcas: a) A % B +

Evaluar la expresión

 

4 / 2 * 3 / 6 + 6 / 2 / 1 / 5 % 2 / 4 * 2 Escribir las siguientes expresiones algebraicas como expresiones en C

  • a) b) a + b

4x ‐ 2y + 7

 
  • c) c ‐ d

3x + 2y

2z

  • d) e) y 2 ‐ y 1

x + y ‐ 3x

 

x

5

x 2 ‐ x 1

Prof. Flor Narciso

Programación 1

28

Semestre B-2008

18/11/08

Ejercicios

Ejercicios •   Si A = 4, B = 5 y C = 1, evaluar las

Si A = 4, B = 5 y C = 1, evaluar las siguientes expresiones

  • a) B * A ‐ B * B / 4 * C

  • b) (A * B) / 3 * 3

  • c) (((B + C) / 2 * A + 10) * 3 * B) ‐ 6

Evaluar la siguiente expresión para A = 2 y B = 5 3 * A ‐ 4 * B / A % 2

Prof. Flor Narciso

Programación 1

Semestre B-2008

29

Ejercicios

Ejercicios •   Dadas las declaraciones: float w; int i, j = 2, k = 4;

Dadas las declaraciones:

float w; int i, j = 2, k = 4;

Determinar el valor de las variables i, w y k después de la ejecución de las siguientes sentencias de asignación:

i = j / k; w = i / j; k = i % j; w = 8.0 / j;

Prof. Flor Narciso

Programación 1

Semestre B-2008

30

18/11/08

Ejercicios

Ejercicios •   Realizar el análisis E‐P‐S, diseño y codificación en C para resolver este problema.

Realizar el análisis E‐P‐S, diseño y codificación en C para resolver este problema.

Si para tres números enteros cualesquiera, a, b y c, se cumple que a 2 + b 2 = c 2 entonces ellos consQtuyen una tripla Pitagórica. Existe un número infinito de tales triplas. A conQnuación se expone una manera de generar estas triplas:

Considere dos números enteros m, y , n tal que m > n. Entonces se Qene que

los tres números m 2 ‐ n 2 , 2mn y m 2 + n 2 son una tripla Pitagórica

El programa debe leer los valores de m y n, tomando en consideración que m es mayor que n. Además, debe imprimir los valores correspondientes a la tripla Pitagórica una vez verificado que se cumple que a 2 + b 2 = c 2

Prof. Flor Narciso

Programación 1

Semestre B-2008

31

Ejercicios

Ejercicios •   Realizar el análisis E‐P‐S, diseño y codificación en C para resolver los siguientes

Realizar el análisis E‐P‐S, diseño y codificación en C para resolver los siguientes problemas:

Calcular el número total de hojas que Qene un árbol, si por ejemplo, Qene doscientos ochenta y cuatro ramas y sabiendo que cada rama Qene como promedio trescientas cuarenta y siete hojas

Un joyero vino de Siria para vender joyas en Bagdad. PromeQó que pagaría por el hospedaje 20 dinares si el dueño de la hostería vendía todas las joyas por 100 dinares; y 35 dinares si las vendía por 200 dinares. Al cabo de varios días, tras andar de aquí para allá, acabó vendiéndolas todas por 140 dinares. ¿ Cuánto debe pagar el joyero de acuerdo con el trato de hospedaje ?

Prof. Flor Narciso

Programación 1

Semestre B-2008

32

18/11/08

Ejercicios

Ejercicios •   Realizar el análisis E‐P‐S, diseño y codificación en C para resolver los siguientes

Realizar el análisis E‐P‐S, diseño y codificación en C para resolver los siguientes problemas:

Calcular los números del 0 al 10 uQlizando cuatro cuatros y cualquiera de las operaciones aritméQcas. Por ejemplo 44 ‐ 44 = 0

Calcular el promedio de cinco notas

Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora de trabajo y, considerando unos descuentos, el sueldo bruto en concepto de impuestos (20%)

Prof. Flor Narciso

Programación 1

Semestre B-2008

33

Ejercicios

Ejercicios •   Realizar el análisis E‐P‐S, diseño y codificación en C para resolver los siguientes

Realizar el análisis E‐P‐S, diseño y codificación en C para resolver los siguientes problemas:

Dado el peso de una persona en libras, calcular su peso en kilogramos y gramos

Leer cuatro números reales. Calcular y escribir su producto, suma y su media aritméQca

Leer el radio de un círculo y calcular e imprimir su superficie y la longitud de la circunferencia

Prof. Flor Narciso

Programación 1

Semestre B-2008

34

18/11/08

Ejercicios

Ejercicios •   Realizar el análisis E‐P‐S, diseño y codificación en C para resolver los siguientes

Realizar el análisis E‐P‐S, diseño y codificación en C para resolver los siguientes problemas:

Si un cuerpo pesa a kp (kilopondios) en un lugar en el que la gravedad es g = 9.8 m/s 2 , calcular su masa

Una fuerza actúa sobre un cuerpo de n kg de masa, pasando la velocidad de éste de v 0 a v f m/s en t segundos. Calcular la fuerza

Prof. Flor Narciso

Programación 1

Semestre B-2008

35

Expresión lógica

Expresión lógica •   El resultado de la evaluación de la expresión es un valor lógico

El resultado de la evaluación de la expresión es un valor lógico (cierto o falso)

Los operadores relacionales y los operadores lógicos crean expresiones que se evalúan como ciertas o falsas

En lenguaje C operan sobre operandos (constantes, variables, expresiones) de diferentes Qpos (numéricos, caracteres)

Prof. Flor Narciso

Programación 1

Semestre B-2008

36

18/11/08

Operadores relacionales en C

 
Operadores relacionales en C Prof. Flor Narciso Programación 1 37 Semestre B-2008 Operadores relacionales en C
Operadores relacionales en C Prof. Flor Narciso Programación 1 37 Semestre B-2008 Operadores relacionales en C

Prof. Flor Narciso

Programación 1

 

37

Semestre B-2008

 
 

Operadores relacionales en C

 
Operadores relacionales en C Prof. Flor Narciso Programación 1 37 Semestre B-2008 Operadores relacionales en C
 

Ejemplos

 

a

b

a==b

a!=b

a

<

b

a<=

b

a

>

b a

>=b

 

2

3

falso

cierto

cierto

cierto

falso

falso

‘a’

‘d’

falso

cierto

cierto

cierto

falso

falso

4.5

4.5

cierto

falso

falso

cierto

falso

cierto

Prof. Flor Narciso

Programación 1

 

38

Semestre B-2008

 

18/11/08

 

Precedencia de los operadores relacionales en C

 
Precedencia de los operadores relacionales en C ( ) Subexpresiones encerradas entre paréntesis se evalúan primero
Precedencia de los operadores relacionales en C ( ) Subexpresiones encerradas entre paréntesis se evalúan primero
   

( )

Subexpresiones encerradas entre paréntesis se evalúan primero (mayor nivel de precedencia)

 

<

<=

>

>=

==

!=

(menor nivel de precedencia)

 
 

Nota: La evaluación de las operadores con la misma prioridad se realiza de izquierda a derecha

 

Prof. Flor Narciso

 

Programación 1

39

 

Semestre B-2008

 
 

Expresiones lógicas en C

 
Precedencia de los operadores relacionales en C ( ) Subexpresiones encerradas entre paréntesis se evalúan primero
 

(a + b) < c

 

Expresión mixta!

votos > electores

 

a != (x*x + b*x + c)

Expresión mixta!

(alto - bajo) == 2

 

Expresión mixta!

(horas*3600) >= (minutos*60 + segundos)

Expresión mixta!

numero <= 2

 

Prof. Flor Narciso

 

Programación 1

40

 

Semestre B-2008

18/11/08

Expresiones lógicas

Expresiones lógicas Ejemplo : Evaluar la siguiente expresión lógica: x >= (y+z) R1 = y +

Ejemplo: Evaluar la siguiente expresión lógica:

x >= (y+z)

R1 = y + z R2 = x >= R1 Resultado

Para los valores x = 3, y = 4, z = 1 se Qene

R1 = 4 + 1 = 5 R2 = 3 >= 5 = falso Resultado

Prof. Flor Narciso

Programación 1

Semestre B-2008

41

Expresiones lógicas

Expresiones lógicas Ejemplo : Evaluar la siguiente expresión lógica: R1 = num % 4 R2 =

Ejemplo: Evaluar la siguiente expresión lógica:

R1 = num % 4

R2 = R1 == 0

num % 4 == 0

Resultado

Para el valor num = 7 se Qene

R1 = 7 % 4 = 3 R2 = 3 == 0 = falso Resultado

Prof. Flor Narciso

Programación 1

Semestre B-2008

42

18/11/08

Expresiones lógicas

Expresiones lógicas Ejemplo : Evaluar la siguiente expresión lógica: (a + b ‐ 1) < (x

Ejemplo: Evaluar la siguiente expresión lógica:

(a + b ‐ 1) < (x * y)

Prof. Flor Narciso

Programación 1

Semestre B-2008

43

Expresiones lógicas

Expresiones lógicas Ejemplo : Evaluar la siguiente expresión lógica: (a + b ‐ 1) < (x

Ejemplo: Evaluar la siguiente expresión lógica:

(a + b ‐ 1) < (x * y)

R1 = a + b R2 = R1 ‐ 1 R3 = x * y R4 = R2 < R3 Resultado

Para los valores a = 31, b = ‐1, x = 3, y = 2 se Qene

R1 = 31 + (‐1) = 30 R2 = 30 ‐ 1 = 29 R3 = 3 * 2 = 6 R4 = 29 < 6 = falso Resultado

Programación Prof. 1 Flor Narciso

Semestre B-2008

44

18/11/08

 

Operadores lógicos en C

 
Operadores lógicos en C Operan sobre operandos (constantes, variables, expresiones) de tipo lógico (cierto o falso)
 

Operan sobre operandos (constantes, variables, expresiones) de tipo lógico (cierto o falso) y evalúan a un valor de tipo lógico (cierto o falso)

 

Operación

 

Operador

Operador

 

Expresión

 

algebraico

 

en

C

en

C

Y-lógico (AND)

 

&&

   

a && b

O-lógico (OR)

 

 

||

 

a || b

Negación (NOT)

¬

 

!

 

!a

Prof. Flor Narciso

 

Programación 1

 

45

 

Semestre B-2008

 
 
 

Operadores lógicos en C

 
Operadores lógicos en C Operan sobre operandos (constantes, variables, expresiones) de tipo lógico (cierto o falso)
 

Ejemplos

 
 

a

 

b

a && b

a

||

b

 

!a

 

cierto

 

cierto

cierto

cierto

 

falso

cierto

 

falso

falso

cierto

 

falso

falso

 

cierto

falso

cierto

 

cierto

falso

 

falso

falso

falso

 

cierto

Prof. Flor Narciso

 

Programación 1

 

46

 

Semestre B-2008

 

18/11/08

Operadores lógicos en C

Operadores lógicos en C Ejemplos    !(p && q) || s    p &&

Ejemplos

!(p && q) || s

p && q && s

(a || b) && (c || d)

a > 5 && !(b < c) || 3 <= d

(op < min) || (op > max)

(edad >= 18) && (edad <= 60 + a)

!encontrado

Prof. Flor Narciso

Programación 1

Semestre B-2008

47

Precedencia de los operadores lógicos en C ( ) → Sub-expresiones encerradas entre paréntesis se evalúan

Precedencia de los operadores lógicos en C

( ) → Sub-expresiones encerradas entre paréntesis se evalúan primero (mayor nivel de precedencia) ! &&

( ) Sub-expresiones encerradas entre paréntesis se evalúan primero (mayor nivel de precedencia)

! &&

|| (menor nivel de precedencia)

Prof. Flor Narciso

Programación 1

Semestre B-2008

48

18/11/08

Precedencia y asociaQvidad de los operadores en C

Precedencia y asociaQvidad de los operadores en C Prof. Flor Narciso Programación 1 49 Semestre B-2008
Precedencia y asociaQvidad de los operadores en C Prof. Flor Narciso Programación 1 49 Semestre B-2008

Prof. Flor Narciso

Programación 1

49

Semestre B-2008

 

Expresiones lógicas

Precedencia y asociaQvidad de los operadores en C Prof. Flor Narciso Programación 1 49 Semestre B-2008

Ejemplo: Evaluar la siguiente expresión lógica

 
 

!(x < 5) && !(y >= 7)

R1 = x < 5 R2 = y >= 7 R3 = !R2 R4 = !R1 R5 = R4 && R3 Resultado

 

Para los valores x = 1, y = -1 se tiene

R1 = 1 < 5 =

cierto

R2 = -1 >= 7

falso

R3 = !falso

cierto

R4 = !cierto

falso

R5 = falso && cierto = falso Resultado

 

Prof. Flor Narciso

Programación 1

50

Semestre B-2008

18/11/08

 

Expresiones lógicas

Expresiones lógicas Ejemplo : Evaluar la siguiente expresión lógica !((i > 4) || (j <= 6))

Ejemplo: Evaluar la siguiente expresión lógica

 
 

!((i > 4) || (j <= 6))

R1 = i > 4 R2 = j <= 6 R3 = R1 || R2 R4 = !R3 Resultado

Para los valores i = 22 y j = 3 se tiene

 

R1 = 22 > 4

cierto

R2 = 3 <= 6

cierto

R3 = cierto || cierto

cierto

R4 = !cierto

falso

Prof. Flor Narciso

Programación 1

51

Semestre B-2008

 
 

Expresiones lógicas

Expresiones lógicas Ejemplo : Evaluar la siguiente expresión lógica !((i > 4) || (j <= 6))

Ejemplo: Evaluar la siguiente expresión lógica

 
 

!(a + b == c) || (c != 0) && (b - c > = 19)

R1 =

R2 =

R3 =

R4 =

R5 =

R6 =

R7 =

R8 =

Resultado

Prof. Flor Narciso

Programación 1

52

Semestre B-2008

18/11/08

Expresiones lógicas

Expresiones lógicas Ejemplo : Evaluar la siguiente expresión lógica !(a + b == c) || (c

Ejemplo: Evaluar la siguiente expresión lógica

!(a + b == c) || (c != 0) && (b - c > = 19)

R1 = a + b R2 = R1 == c R3 = c != 0 R4 = b - c R5 = R4 >= 19 R6 = !R2 R7 = R3 && R5 R8 = R6 || R7 Resultado

Prof. Flor Narciso

Programación 1

Semestre B-2008

53

Ejercicios

Ejercicios Evaluar cada una de las siguientes expresiones a) (b + (b * b ‐ 4

Evaluar cada una de las siguientes expresiones

  • a) (b + (b * b ‐ 4 * a * c)) / (2 * a) <= 25

  • b) (x >= MINIMO) && (x <= MAXIMO)

  • c) (contador < MAXIMO) && !encontrado

  • d) (mes1 < mes2) || (mes1 == mes2) && (anyo1 <= anyo2)

  • e) anyo%4 == 0 && anyo % 100 != 0 || anyo%400 == 0

  • f) (A ‐ 1) < B || A != (B ‐ C) || A >= C

Prof. Flor Narciso

Programación 1

Semestre B-2008

54

18/11/08

 

Ejercicios

Ejercicios Suponiendo declaradas y asignadas las variables int i=8, j=5; double x=0.005, y=‐0.01; Indique los valores
 

Suponiendo declaradas y asignadas las variables int i=8, j=5; double x=0.005, y=‐0.01;

 

Indique los valores de las siguientes expresiones:

  • a) (3 *i ‐2 *j) % (2 *i ‐j)

  • b) 2 * ((i /5) + (4 * (j ‐3)) % (i + j ‐ 2))

 
  • c) ‐(i + j) / 2

  • d) i++;

  • e) j‐‐;

  • f) (x > y) && (i > 0)||(j < 5)

  • g) (x > y) || (i > 0) && (j < 5)

 

Prof. Flor Narciso

Programación 1

55

 

Semestre B-2008

 
 

Ejecicios

Ejercicios Suponiendo declaradas y asignadas las variables int i=8, j=5; double x=0.005, y=‐0.01; Indique los valores
 

Si A = 1, B = ‐2, C = 3, y D = 4, determine cual de los siguientes pares de expresiones lógicas son ambas verdaderas:

 

(

) Exp1: ((A+C)>(B‐D)) && ((B+C)<(D‐A)) Exp2: (B+C > D)

(

)

Exp1: (A<C && B>D)

Exp2: (B+C > D)

(

)

Exp1: (A>B || C<D)

(

)

Exp2: (A<C && B<D) Exp1: A == B Exp2: (A>B || C<D)

Prof. Flor Narciso

Programación 1

56

 

Semestre B-2008

18/11/08

Ejercicios

Ejercicios Dadas las siguientes definiciones de constantes #define MIN 1 #define MAX 5 #define NUM1 5

Dadas las siguientes definiciones de constantes

#define MIN 1 #define MAX 5 #define NUM1 5 #define NUM2 8 #define NUM3 ‐1

y la siguiente declaración de variable

int num;

Escriba las expresiones lógicas que sean verdaderas si

  • a) El valor de num se encuentra en el rango definido por

las constantes MIN y MAX.

  • b) El valor de num es uno de los tres valores constantes

NUM1, NUM2 o NUM3.

Prof. Flor Narciso

Programación 1

Semestre B-2008

57