Introducci´ on a los lenguajes de programaci´ on II
Operadores, expresiones aritm´ eticas y evaluaci´ on
Jonatan Gom´ ez Perdomo, Ph.D.
[email protected]
Arles Rodr´ıguez, Ph.D.(c)
[email protected]
Camilo Cubides, Ph.D.(c)
[email protected]
Grupo de investigaci´ on en vida artificial – Research Group on Artificial Life – (Alife) Departamento de Ingenier´ıa de Sistemas e Industrial
Facultad de Ingenier´ıa Universidad Nacional de Colombia
1er semestre de 2014
Agenda
1 Operadores
Operadores aritm´ eticos Operadores de asignaci´ on
Conversi´ on de tipos de datos num´ ericos (typecasting)
De entero a real De real a entero
Operadores l´ ogicos
Operadores de igualdad y relacionales Precedencia de operadores
2 Evaluaci´ on de secuencias de expresiones Evaluaci´ on de expresiones
Traza de un programa
Agenda
1 Operadores
Operadores aritm´ eticos Operadores de asignaci´ on
Conversi´ on de tipos de datos num´ ericos (typecasting)
De entero a real De real a entero
Operadores l´ ogicos
Operadores de igualdad y relacionales Precedencia de operadores
2 Evaluaci´ on de secuencias de expresiones Evaluaci´ on de expresiones
Traza de un programa
Operadores aritm´ eticos I
Para los datos de tipo num´ erico se pueden utilizar los siguientes
operadores infijos, a excepci´ on del operador - que puede actuar tambi´ en como un operador prefijo:
+ : Suma de dos valores, por ejemplo, cuando se eval´ ua la expresi´ on 2.0 + 3.0 se obtiene el valor 5.0.
- : Resta de dos valores, por ejemplo, cuando se eval´ ua la expresi´ on 2.0 - 3.0 se obtiene el valor −1.0. Tambi´ en se utiliza para cambiar el signo de un n´ umero si se utiliza con un s´ olo operando, por ejemplo, cuando se eval´ ua la expresi´ on -23 se obtiene el valor
−23.
Operadores aritm´ eticos II
* : Multiplicaci´ on de dos valores, por ejemplo, cuando se eval´ ua la expresi´ on 2.0 * -3.0 se obtiene el valor −6.0. La multiplicaci´ on es explicita, es decir no se puede escribir una expresi´ on como (2.0)(-3.0), esto se debe escribir como (2.0)*(-3.0).
/ : Divisi´ on de dos valores, cuando alguno de los operandos es real
retorna la divisi´ on exacta, por ejemplo, cuando se eval´ ua la
expresi´ on -3.0/2 se obtiene el valor −1.5. Cuando ambos
operandos son enteros, se obtiene la parte entera de la divisi´ on
exacta, por ejemplo, cuando se eval´ ua la expresi´ on -3/2 se obtiene
el valor −1. El valor del segundo operando debe ser distinto de 0.
Operadores aritm´ eticos III
% : El resto de la divisi´ on de dos n´ umeros que deben ser enteros, representa la operaci´ on matem´ atica
m mod n = r ,
por ejemplo, cuando se eval´ ua la expresi´ on 9 % 4 se obtiene el valor 1, que es lo mismo que 9 mod 4 = 1, el residuo de dividir 9 entre 4.
m n
r c
m mod n
m ÷ n
9 4 1 2
9 % 4
9 / 4
Otro ejemplo es 3 % 4 = 3, el residuo de dividir
3 entre 4 es 3.
Agenda
1 Operadores
Operadores aritm´ eticos Operadores de asignaci´ on
Conversi´ on de tipos de datos num´ ericos (typecasting)
De entero a real De real a entero
Operadores l´ ogicos
Operadores de igualdad y relacionales Precedencia de operadores
2 Evaluaci´ on de secuencias de expresiones Evaluaci´ on de expresiones
Traza de un programa
Operadores de asignaci´ on I
Para asignar valores a variables se pueden utilizar los siguientes operadores infijos:
= : Asignaci´ on. La parte de la izquierda que debe ser una variable.
Sirve para almacenar un dato en una variable. Asigna el valor de evaluar la parte de la derecha a la variable de la parte de la izquierda. Por ejemplo, cuando se eval´ ua la expresi´ on
pi = 3.14159265, entonces se almacena el valor 3.14159265 en la
variable pi.
Operadores de asignaci´ on II
+= : Asignaci´ on con suma. La parte de la izquierda debe ser una
variable. Suma la evaluaci´ on de parte de la derecha con el valor
almacenado en la variable definida en la parte de la izquierda y
guarda el resultado en la variable de parte de la izquierda. Por
ejemplo, la expresi´ on x += 2, es equivalente a la expresi´ on
x = x + 2.
Operadores de asignaci´ on III
-= : Asignaci´ on con resta. La parte de la izquierda debe ser una variable. Resta al valor almacenado en la variable definida en la parte de la izquierda el resultado de la evaluaci´ on de parte de la derecha y guarda el resultado en la variable de parte de la izquierda.
Por ejemplo, la expresi´ on x -= 2, es equivalente a la expresi´ on
x = x - 2.
Operadores de asignaci´ on IV
*= : Asignaci´ on con multiplicaci´ on. La parte de la izquierda debe ser
una variable. Multiplica el valor almacenado en la variable definida
en la parte de la izquierda con la evaluaci´ on de parte de la derecha
y guarda el producto en la variable de parte de la izquierda. Por
ejemplo, la expresi´ on x *= 2, es equivalente a la expresi´ on
x = x * 2.
Operadores de asignaci´ on V
/= : Asignaci´ on con divisi´ on. La parte de la izquierda debe ser una variable. Divide el valor almacenado en la variable definida en la parte de la izquierda entre el valor de la evaluaci´ on de la parte de la derecha y guarda el resultado en la variable de parte de la izquierda.
Por ejemplo, la expresi´ on x /= 2, es equivalente a la expresi´ on
x = x / 2. El valor de la evaluaci´ on de la parte de la derecha debe
ser distinto de 0.
Operadores de asignaci´ on VI
%= : Asignaci´ on con residuo. La parte de la izquierda debe ser una
variable. Calcula el residuo de dividir el valor almacenado en la
variable definida en la parte de la izquierda entre el valor de la
evaluaci´ on de la parte de la derecha y guarda el resultado en la
variable de parte de la izquierda. Por ejemplo, la expresi´ on x %= 2,
es equivalente a la expresi´ on x = x % 2. El valor de la evaluaci´ on
de la parte de la derecha debe ser distinto de 0.
Operadores de asignaci´ on VII
El operador de incremento ++ (I)
Dos de los operadores m´ as utilizados para asignar valores a variables en programaci´ on son los operadores de incremento y decremento:
++ : este operador se aplica a cualquier tipo de variable y se utiliza para incrementar el valor de la variable en 1; es equivalente a la expresi´ on i = i + 1 o a la expresi´ on i += 1; ´ esta asignaci´ on se puede utilizar dentro de una expresi´ on.
El operador ++ se puede utilizar como un operador prefijo o
postfijo, y dependiendo de la posici´ on donde se ubique entonces la
asignaci´ on se hace antes o despu´ es del incremento, de la siguiente
manera:
Operadores de asignaci´ on VIII
El operador de incremento ++ (II)
++x : este operador de preincremento hace que la variable x se incremente en 1 y luego se retorne el nuevo valor de la variable.
Ejemplo
Para la siguiente porci´ on de c´ odigo int x = 2;
int y = ++x;
se tiene que al final las variables almacenan los valores x = 3 y y = 3. El c´ odigo anterior es equivalente al siguiente c´ odigo
int x = 2;
x = x + 1;
int y = x;
Operadores de asignaci´ on IX
El operador de incremento ++ (III)
x++ : este operador de postincremento hace se retorne el actual valor de la variable x y luego ´ esta se incrementa en 1.
Ejemplo
Para la siguiente porci´ on de c´ odigo int x = 2;
int y = x++;
se tiene que al final las variables almacenan los valores x = 3 y y = 2. El c´ odigo anterior es equivalente al siguiente c´ odigo
int x = 2;
int y = x;
x = x + 1;
Operadores de asignaci´ on X
El operador de decremento -- (I)
-- : este operador se aplica a cualquier tipo de variable y se utiliza para decrementar el valor de la variable en 1; es equivalente a la expresi´ on i = i - 1 o a la expresi´ on i -= 1; ´ esta asignaci´ on se puede utilizar dentro de una expresi´ on.
El operador -- se puede utilizar como un operador prefijo o
postfijo, y dependiendo de la posici´ on donde se ubique entonces la
asignaci´ on se hace antes o despu´ es del decremento, de la siguiente
manera:
Operadores de asignaci´ on XI
El operador de decremento -- (II)
--x : este operador de predecremento hace que la variable x se decremente en 1 y luego se retorne el nuevo valor de la variable.
Ejemplo
Para la siguiente porci´ on de c´ odigo int x = 2;
int y = --x;
se tiene que al final las variables almacenan los valores x = 1 y y = 1. El c´ odigo anterior es equivalente al siguiente c´ odigo
int x = 2;
x = x - 1;
int y = x;
Operadores de asignaci´ on XII
El operador de decremento -- (III)
x-- : este operador de postdecremento hace se retorne el actual valor de la variable x y luego ´ esta se decrementa en 1.
Ejemplo
Para la siguiente porci´ on de c´ odigo int x = 2;
int y = x--;
se tiene que al final las variables almacenan los valores x = 1 y y = 2. El c´ odigo anterior es equivalente al siguiente c´ odigo
int x = 2;
int y = x;
x = x - 1;
Operadores de asignaci´ on XIII
Ejemplo
Para la siguiente porci´ on de c´ odigo int x = 3;
int y = 2 * ++x;
se tiene que al final las variables almacenan los valores x = 4 y y = 8. El c´ odigo anterior es equivalente al siguiente c´ odigo
int x = 3;
x = x + 1;
int y = 2 * x;
Operadores de asignaci´ on XIV
Ejemplo
Para la siguiente porci´ on de c´ odigo int x = 3;
int y = 2 * x--;
se tiene que al final las variables almacenan los valores x = 2 y y = 6. El c´ odigo anterior es equivalente al siguiente c´ odigo
int x = 3;
int y = 2 * x;
x = x - 1;
Operadores de asignaci´ on XV
Ejemplo
Para la siguiente porci´ on de c´ odigo int x = 2;
int y = 4;
int z = ++x * y--;
se tiene que al final las variables almacenan los valores x = 3, y = 3 y z = 12. El c´ odigo anterior es equivalente al siguiente c´ odigo
int x = 2;
int y = 4;
int aux = y;
x = x + 1;
int z = x * aux;
y = y - 1;
Agenda
1 Operadores
Operadores aritm´ eticos Operadores de asignaci´ on
Conversi´ on de tipos de datos num´ ericos (typecasting)
De entero a real De real a entero
Operadores l´ ogicos
Operadores de igualdad y relacionales Precedencia de operadores
2 Evaluaci´ on de secuencias de expresiones Evaluaci´ on de expresiones
Traza de un programa
De entero a real I
De entero a real: dado un dato o una variable de tipo entero, si se opera
o se asigna el dato o la variable con un dato o una variable
de tipo real, entonces al realizar la operaci´ on o la asignaci´ on,
el dato entero se convierte (se promueve) a un dato de tipo
real de forma autom´ atica, simplemente agreg´ andole la parte
decimal “.0”.
De entero a real II
Ejemplo
Para las asignaciones int n = 1;
double x = n;
double y = 0;
double z = -2;
se tiene que las variables almacenan los valores:
n 1
x 1.0
y 0.0
z −2.0
De entero a real III
Ejemplo
Las siguientes operaciones son equivalentes -2 + 1.0 ⇔ -2.0 + 1.0
0.0 * 5 ⇔ 0.0 * 5.0
(5 / 2) * 2.0 ⇔ 2 * 2.0 ⇔ 2.0 * 2.0
(5.0 / 2) * 2 ⇔ (5.0 / 2.0) * 2 ⇔ 2.5 * 2 ⇔
2.5 * 2.0
De real a entero I
De real a entero: dado un dato o una variable de tipo real, si se asigna
el dato o la variable a una variable de tipo entero, entonces
el valor del dato o la variable se convierte (se promueve) a
un dato de tipo entero de forma autom´ atica, simplemente
eliminando la parte decimal del real y dejando la parte entera.
De real a entero II
Ejemplo
Para las asignaciones double x = 1.0;
double y = -2.5;
int n = x;
int m = y;
int p = 3.14159265;
se tiene que las variables almacenan los valores:
x 1.0
y −2.5
n 1
m −2
p 3
De real a entero III
Si se desea convertir el valor de un dato o una variable de tipo real de forma directa, sin necesidad de asignarlo a una variable, se pueden utilizar las instrucciones:
(int)valor ;
(int)variable;
De real a entero IV
Ejemplo
Las siguientes operaciones son equivalentes 2 * (int)2.5 ⇔ 2 * 2
(int)-3.14 * (int)5.5 ⇔ -3 * 5
2 / (2.5 - (int)2.5) ⇔ 2 / (2.5 - 2) ⇔ 2 / (0.5)
⇔ 2 / 0.5 ⇔ 2.0 / 0.5
De real a entero V
Ejemplo
Las siguientes sentencias son equivalentes double x = 0.4;
double y = 2.5;
int n = (int)x * (int)y;
⇔
double x = 0.4;
double y = 2.5;
int n = 0 * 2;
Agenda
1 Operadores
Operadores aritm´ eticos Operadores de asignaci´ on
Conversi´ on de tipos de datos num´ ericos (typecasting)
De entero a real De real a entero
Operadores l´ ogicos
Operadores de igualdad y relacionales Precedencia de operadores
2 Evaluaci´ on de secuencias de expresiones Evaluaci´ on de expresiones
Traza de un programa
Operadores l´ ogicos
! : Operador ¬ de la negaci´ on.
!α ⇔ ¬α
&& : Operador ∧ de la conjunci´ on.
α && β ⇔ α ∧ β
|| : Operador ∨ de la disyunci´ on.
α || β ⇔ α ∨ β
Agenda
1 Operadores
Operadores aritm´ eticos Operadores de asignaci´ on
Conversi´ on de tipos de datos num´ ericos (typecasting)
De entero a real De real a entero
Operadores l´ ogicos
Operadores de igualdad y relacionales Precedencia de operadores
2 Evaluaci´ on de secuencias de expresiones Evaluaci´ on de expresiones
Traza de un programa
Operadores de igualdad y relacionales I
== : Devuelve V si dos valores son iguales.
α == β ⇔ α = β
!= : Devuelve V si dos valores son distintos.
α != β ⇔ α 6= β
> : Mayor que, devuelve V si el primer operador es estrictamente mayor que el segundo.
α > β ⇔ α > β
Operadores de igualdad y relacionales II
< : Menor que, devuelve V si el primer operador es estrictamente menor que el segundo.
α < β ⇔ α < β
>= : Mayor o igual, devuelve V si el primer operador es mayor o igual que el segundo.
α >= β ⇔ α ≥ β
<= : Menor igual, devuelve V si el primer operador es menor o igual que el segundo.
α <= β ⇔ α ≤ β
Operadores de igualdad y relacionales III
Ejemplo
Para escribir la expresi´ on x ∈ (0, 1] en el lenguaje C++ se utiliza la sentencia
(0 < x && x <= 1)
Operadores de igualdad y relacionales IV
Ejemplo
Para escribir la expresi´ on
(a, b) ∈ [−2, 3.5) × (−1.25, 1.5] R
2