Temas:
(ver enunciado en clase anterior.)
Obtener datos:
Sumar los tiempos: Alternativa 1
print("Hora ? ");
int horas1= readInt();
print("Minutos ? ");
int minutos1= readInt();
print("Hora ? ");
int horas2= readInt();
print("Minutos ? ");
int minutos2= readInt();
Sumar los tiempos: Alternativa 2
// 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.");
Propuesto: Modificar el programa para que sea capaz de sumar horas,
minutos y segundos.
// Sumar en minutos
int minutos= horas1*60+minutos1 + horas2*60+minutos2;
print("Suma= "); print(minutos/60); print(" hrs. ");
print(minutos%60); print(" min. ");
En el lenguaje Java se pueden calcular las funciones matemáticas típicas que vienen en una calculadora. Por ejemplo para calcular el lado de un cuadrado a partir de su área se puede usar la función que calcula la raíz cuadrada:
En esta instrucción,
double lado= sqrt(area);
sqrt(area) es una llamada a una
función. Una llamada a función es una forma de expresión aritmética.
Su sintaxis general es:
En donde ``argumentos'' son una o más expresiones separadas por coma. Una llamada a una función se puede colocar en cualquier parte en donde sea válido colocar una expresión.
Una función puede ser por ejemplo:
(Obs. a los profesores: vean sólo algunas de estas funciones. La idea es mostrar la sintaxis.)
| Función | Significado | Ejemplo | Valor |
|---|---|---|---|
| sqrt(x) | raíz cuadrada | sqrt(4.0) | 2.0 |
| abs(x) | valor absoluto | abs(-3.0) | 3.0 |
| pow(x,y) | x elevado a y | pow(2.0, 3.0) | 8.0 |
| exp(x) | e a la x | exp(1.0) | 2.71... |
| log(x) | logaritmo natural | log(E) | 1.0 |
O puede ser una función trigonométrica:
| Función | Significado | Ejemplo | Valor |
|---|---|---|---|
| sin(x) | seno | sin(PI/2) | 1.0 |
| cos(x) | coseno | sin(PI) | -1.0 |
| tan(x) | tangente | tan(PI/4) | 1.0 |
| asin(x) | arco seno | asin(1.0) | PI/2 |
| acos(x) | arco coseno | asin(-1.0) | PI |
| atan(x) | arco tangente | atan(1.0) | PI/4 |
O puede ser una función de conversión:
| Función | Significado | Ejemplo | Valor |
|---|---|---|---|
| round(x) | redondea | round(1.5) | 2.0 |
| round(1.4) | 1.0 | ||
| floor(x) | piso | floor(3.9) | 3.0 |
| floor(-5.2) | -6.0 | ||
| ceil(x) | techo | ceil(3.9) | 4.0 |
| ceil(-5.2) | -5.0 |
O puede ser una función para calcular el máximo o mínimo:
| Función | Significado | Ejemplo | Valor |
|---|---|---|---|
| max(x) | máximo | max(3.5, 5.2) | 5.2 |
| min(x) | mínimo | min(3.5, 5.2) | 3.5 |
Todas las funciones anteriores operan con números reales (double). La siguiente función toma un número real y devuelve un entero:
| Función | Significado | Ejemplo | Valor |
|---|---|---|---|
| trunc(x) | convierte | trunc(3.9) | 3 |
| a entero | trunc(-5.2) | -5 |
Ejercicio: Calcular el máximo de 3 números.
Primer número ? 2.1
Segundo número ? 8.6
Tercer número ? -2.0
El máximo es : 8.6
Los argumentos de una llamada a una función pueden ser el resultado
de otra llamada a función.
// Leer datos
print("Primer número ? ");
double a= readDouble();
print("Segundo número ? ");
double b= readDouble();
print("Tercer número ? ");
double c= readDouble();
// Calcular el máximo
print("El máximo es : ");
print(max(max(a,b),c);
Motivación: Indicar si una ecuación de segundo grado tiene raíces reales o complejas.
Coeficiente a ? 1.
Coeficiente b ? 4.
Coeficiente c ? 7.
La ecuación tiene raíces complejas
Sintaxis de if:
if (b*b >= 4*a*c)
print("La ecuación tiene raíces reales");
else
print("La ecuación tiene raíces complejas");
if (``condición'')
``instrucción 1''
else
``instrucción 2''
Semántica de if:
La condición sigue la siguiente sintaxis:
En donde el operador relacional compara expresiones numéricas y puede ser: >, <, >= (mayor o igual), <= (menor o igual), == (igual) o != (distinto).
Ejercicio: desplegar el máximo entre a y b sin usar max.
Solución incorrecta:
¡Entre if (a>b) y el else solo puede haber una instrucción!
if (a>b)
print("El máximo es ");
print(a);
else
print("El máximo es ");
print(b);
Se puede agrupar instrucciones usando { }:
Encerradas entre { }, las dos instrucciones son ahora una sola instrucción
compuesta, que se puede colocar en cualquier lugar en donde sea válido
colocar una instrucción. La forma general es:
{ print("El máximo es "); print(a); }
Por lo tanto, el máximo se puede escribir como:
La cantidad de líneas que ocupe una instrucción es irrelevante.
if (a>b) {
print("El máximo es ");
print(a);
}
else {
print("El máximo es ");
print(b);
}
Complete el programa que calcula las raíces de la ecuación de segundo grado. Cuando la ecuación tiene raíces reales, el diálogo debe ser el siguiente:
Por ejemplo:
Coef. a ? 1.
Coef. b ? -3.
Coef. c ? 2.
Las raíces son 1.0 y 2.0