operadores aritmeticos

18/11/08 Programación 1 (03)  Unidad IV: Expresiones  Prof. Flor Narciso  Departamento de Computación  Escuela de Ingen

Views 103 Downloads 53 File size 794KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

18/11/08

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

Expresión  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

1

18/11/08

Expresión  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 Semestre B-2008

3

Operadores aritméQcos en C  Operación

Operador

Expresión algebráica

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

%

R % S

Incremento

I + 1

++

I++ ó ++I

Decremento

I - 1

--

I- - ó - - I

Módulo

Prof. Flor Narciso

Programación 1 Semestre B-2008

Operador en Expresión en C C

4

2

18/11/08

Operadores aritméQcos en C  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 Semestre B-2008

5

Operadores aritméQcos en C  Ejemplos   25 % 5 = 0   13 % 2 = 1   23 % 4 = 3 

Prof. Flor Narciso

Programación 1 Semestre B-2008

6

3

18/11/08

Operadores aritméQcos en C  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 Semestre B-2008

7

Operadores aritméQcos en C  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 Semestre B-2008

8

4

18/11/08

Operadores aritméQcos en C  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  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

5

18/11/08

Operadores aritméQcos en C  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 Semestre B-2008

11

Operadores aritméQcos en C  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 Semestre B-2008

12

6

18/11/08

Operadores aritméQcos en C  •  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  ✩  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

7

18/11/08

Precedencia de los operadores  aritméQcos en C   ( )   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   Ejemplo: Evaluar la siguiente expresión aritméQca: 

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

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

R5 = R4%5 ← Resultado 

Prof. Flor Narciso

Programación 1 Semestre B-2008

16

8

18/11/08

Expresiones aritméQcas  Ejemplo: Evaluar la expresión aritméQca   para los valores:  

(a + b + c + d + e)%5  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   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

9

18/11/08

Expresiones aritméQcas   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  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

10

18/11/08

Expresiones aritméQcas  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 Semestre B-2008

21

Expresiones aritméQcas  Codificación

/* Convertir grados Fahrenheit a grados Centígrados */

#include

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 Semestre B-2008

22

11

18/11/08

Operadores compuestos en C  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 Semestre B-2008

23

Operadores compuestos en C  Ejemplos

Prof. Flor Narciso

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;

Programación 1 Semestre B-2008

24

12

18/11/08

Sentencia de asignación múlQple  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

Prof. Flor Narciso

Programación 1 Semestre B-2008

25

Recuerde !!!!!  Cuatro maneras de asignar valores a las variables variable = valor constante

x = 3;

variable = variable

x = y;

variable = expresión Leer (variable)

Prof. Flor Narciso

x = (y + 1)/2; scanf(“%d”, &x);

Programación 1 Semestre B-2008

26

13

18/11/08

Ejercicios  • 

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 Semestre B-2008

27

Ejercicios  •  • 

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) 4x ‐ 2y + 7    b) a + b  c) 3x + 2y                              c ‐ d            2z  d) x + y   ‐  3x    e) y2 ‐ y1           x          5         x2 ‐ x1       

Prof. Flor Narciso

Programación 1 Semestre B-2008

28

14

18/11/08

Ejercicios  • 

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  •  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

15

18/11/08

Ejercicios  •  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  a2 + b2 = c2  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 m2 ‐ n2,  2mn y m2 + n2 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 a2 + b2 = c2  

Prof. Flor Narciso

Programación 1 Semestre B-2008

31

Ejercicios  •  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

16

18/11/08

Ejercicios  •  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  •  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

17

18/11/08

Ejercicios  •  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/s2, calcular su masa  –  Una fuerza actúa sobre un cuerpo de n kg de masa, pasando la  velocidad de éste de v0 a vf m/s en t segundos. Calcular la fuerza 

Prof. Flor Narciso

Programación 1 Semestre B-2008

35

Expresión lógica  •  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

18/11/08

Operadores relacionales en C 

Prof. Flor Narciso

Programación 1 Semestre B-2008

37

Operadores relacionales en C  Ejemplos 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 Semestre B-2008

38

19

18/11/08

Precedencia de los operadores  relacionales en C  ()

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 Semestre B-2008

39

Expresiones lógicas en C   

(a + b) < c

 

votos > electores

 

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

Expresión mixta!

 

(alto - bajo) == 2

Expresión mixta!

 

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

 

numero = (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   Ejemplo: Evaluar la siguiente expresión lógica:  num % 4 == 0  

    R1 = num % 4  R2 = R1 == 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

21

18/11/08

Expresiones lógicas   Ejemplo: Evaluar la siguiente expresión lógica:  (a + b ‐ 1) = 7 falso R3 = !falso cierto R4 = !cierto falso R5 = falso && cierto = falso →Resultado

Prof. Flor Narciso

Programación 1 Semestre B-2008

50

25

18/11/08

Expresiones lógicas  Ejemplo: Evaluar la siguiente expresión lógica !((i > 4) || (j 4 R2 = j 4 R2 = 3 = 19) R1 = R2 = R3 = R4 = R5 = R6 = R7 = R8 =

Prof. Flor Narciso

→ Resultado

Programación 1 Semestre B-2008

52

26

18/11/08

Expresiones lógicas  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  Evaluar cada una de las siguientes expresiones  a) (b + (b * b ‐ 4 * a * c)) / (2 * a) = MINIMO) && (x  D)  (   )  Exp1: (A>B || C