Temas:
Una expresión aritmética se escribe realizando operaciones aritméticas entre variables y constantes numéricas. Por ejemplo:
(Obs. PI es una constante predefinida.)
2*PI*radio
(dist1+dist2)/difTiempo
5
3.14159
Los operadores más usados son:
Obs. 2: Existe una parentización implícita como en el álgebra matemática:
Los operadores * y / tienen prioridad sobre + y -.
Entre operadores de la misma prioridad (como + - o * /) las expresiones se asocian de izquierda a derecha.
a-(b-c);
Una expresión puede ser entera (int en Java) o real (double). Por ejemplo, las siguientes son expresiones enteras:
Estas otras son reales:
5
5 + 2 * 20 // expresión compuesta
5/2
-2
Esto se puede resumir en:
3.14
3.14 * 8.5 / 2.0
5. // 5.0
1. + 1 // 2.0
Ejemplo:
(4 - 1) * 5. / (5 / 2)
| | | | |
int int double int int
\ / / \ /
int / int
\ / /
double /
\ /
\ /
\ /
double
Propuesto: ¿Cuanto valen 1/2*2.0 y 2.0*1/2?
Ejercicio: Cálculo de porcentajes en un plebiscito.
Se requiere un programa que establezca el siguiente diálogo:
Votos SI ? 80
Votos NO ? 120
Total de votos= 200
SI= 40.0 %
NO= 60.0 %
(El programa completo se encuentra en
Plebiscito.java.)
println("Calculo de porcentajes de un plebiscito");
print("Votos SI ? ");
int si= readInt();
print("Votos NO ? ");
int no= readInt();
print("Total de votos= "); println(si+no);
print("SI= "); print(100.0*si/(si+no)); println(" %");
print("NO= "); print(100.0*no/(si+no)); println(" %");
Observaciones:
class Plebiscito extends Program {
void run() {
El programa
}
}
En los ejercicios futuros nos ahorraremos esta parte que
es siempre igual.
println("Total de votos= "+ (si+no));
Cuando una expresión se repite una y otra vez, su valor se puede almacenar en una variable. Por ejemplo:
La primera instrucción es una declaración. Introduce la variable
total. Una declaración tiene la sintaxis:
int total= si+no;
println(100.0*si/total);
println(100.0*no/total);
En donde `identificador' es el nombre de la variable y `expresión' es el valor inicial que se le da a esa variable.
El `tipo' puede ser int o double. Si es int, la variable sólo puede almacenar un valor entero. Si es double, solo puede almacenar un real (Ej. 2.5, -1.2, 1.0). Ejemplo:
(Obs. a los profesores: por simplicidad no introduzcan el tipo float.
Hace que en muchos caso se necesite los horrendos casts. En todo
caso, con double se puede hacer todo y mejor.)
double perimetro= 2*PI*radio;
Calcula el residuo de la división entre enteros. Por ejemplo:
Ejercicios:
(Propuesto.)
Hora ? 8
Minutos ? 35
Hora ? 1
Minutos ? 30
Suma= 10 hrs. 5 min.
Primero se dialoga con el usuario para obtener los datos.
Luego se suman los tiempos. Alternativa 1:
print("Hora ? ");
int horas1= readInt();
print("Minutos ? ");
int minutos1= readInt();
print("Hora ? ");
int horas2= readInt();
print("Minutos ? ");
int minutos2= readInt();
(El programa completo se encuentra en
SumaHoras1.java.)
// Sumar hora y minutos por separado
int horas= horas1+horas2;
int minutos= minutos1+minutos2;
// Si minutos >= 60, pasarlos a las horas.
print("Suma= "); print(horas+minutos/60);
print(" hrs. "); print(minutos%60); print(" min.");
Alternativa 2
(El programa completo se encuentra en
SumaHoras2.java.)
// Sumar en minutos
int minutos= horas1*60+minutos1 + horas2*60+minutos2;
print("Suma= "); print(minutos/60); print(" hrs. ");
print(minutos%60); print(" min. ");
(Propuesto.)