Professional Documents
Culture Documents
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
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
Operadores aritméQcos en C
Resta - B - C - B - C
Producto x X x Y * X*Y
Decremento I - 1 -- I- - ó - - I
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
Operadores aritméQcos en C
Ejemplos
25 % 5 = 0
13 % 2 = 1
23 % 4 = 3
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
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
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
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
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
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
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
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
7
18/11/08
Precedencia de los operadores
aritméQcos en C
Nota: La evaluación de los operadores con la misma prioridad se
realiza de izquierda a derecha
Expresiones aritméQcas
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
8
18/11/08
Expresiones aritméQcas
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 17
Semestre B-2008
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
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
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))
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
Expresiones aritméQcas
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;
}
11
18/11/08
Operadores compuestos en C
+= 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;
Operadores compuestos en C
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;
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
Recuerde !!!!!
Cuatro maneras de asignar valores a las variables
variable = valor constante x = 3;
variable = variable x = y;
variable = expresión x = (y + 1)/2;
Leer (variable) scanf(“%d”, &x);
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
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
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
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;
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
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 ?
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%)
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
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
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)
18
18/11/08
Operadores relacionales en C
Operadores relacionales en C
Ejemplos
19
18/11/08
Precedencia de los operadores
relacionales en C
Expresiones lógicas en C
(a + b) < c Expresión mixta!
numero <= 2
20
18/11/08
Expresiones lógicas
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
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
21
18/11/08
Expresiones lógicas
Ejemplo: Evaluar la siguiente expresión lógica:
(a + b ‐ 1) < (x * y)
Expresiones lógicas
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ónProf.
1 Flor Narciso 44
Semestre B-2008
22
18/11/08
Operadores lógicos en C
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)
O-lógico (OR) ∨ || a || b
Negación (NOT) ¬ ! !a
Operadores lógicos en C
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
23
18/11/08
Operadores lógicos en C
Ejemplos
!(p && q) || s
p && q && s
(a || b) && (c || d)
!encontrado
Precedencia de los operadores lógicos
en C
24
18/11/08
Precedencia y asociaQvidad de los
operadores en C
Expresiones lógicas
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
25
18/11/08
Expresiones lógicas
Ejemplo: Evaluar la siguiente expresión lógica
!((i > 4) || (j <= 6))
R1 = i > 4
R2 = j <= 6
R3 = R1 || R2
R4 = !R3 → Resultado
R1 = 22 > 4 cierto
R2 = 3 <= 6 cierto
R3 = cierto || cierto cierto
R4 = !cierto falso
Expresiones lógicas
Ejemplo: Evaluar la siguiente expresión lógica
R1 =
R2 =
R3 =
R4 =
R5 =
R6 =
R7 =
R8 = → Resultado
26
18/11/08
Expresiones lógicas
Ejemplo: Evaluar la siguiente expresión lógica
R1 = a + b
R2 = R1 == c
R3 = c != 0
R4 = b - c
R5 = R4 >= 19
R6 = !R2
R7 = R3 && R5
R8 = R6 || R7 → Resultado
Ejercicios
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
27
18/11/08
Ejercicios
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)
Ejecicios
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)
28
18/11/08
Ejercicios
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.
29