Download - Tema02
Sintaxis básica del lenguaje Java
El lenguaje Java — Tema 2 — Sintaxis básica
Curso de Java
Curso de Java Tema 2 – Sintaxis básica - 1Luis Hernández YáñezCarlos Cervigón Rückauer
Índice
Un par de cosas sobre las clases ... 3Comentarios ... 4Identificadores ... 8Palabras reservadas ... 9Separadores ... 10Tipos de datos numéricos ... 11Tipos de datos no numéricos ... 12Literales ... 13Variables ... 14Constantes de clase ... 16Bloques y ámbito de los identificadores ... 17Operadores ... 18Entrada/salida básica ... 21Ejercicios ... 22Una clase muy útil para números: Math ... 24
Sintaxis básica del lenguaje Java
. . .
Curso de Java Tema 2 – Sintaxis básica - 2Luis Hernández YáñezCarlos Cervigón Rückauer
Instrucciones de control de flujo ... 25Selección condicional: bifurcación ... 26Ejercicios ... 28Selección condicional: ramificación múltiple ... 29Bucles: la instrucción for ... 31Ejercicios ... 34Bucles: la instrucción while ... 35Bucles: la instrucción do...while ... 36break y continue ... 37Ejercicios ... 38Métodos ... 39Ejercicios ... 43Sobrecarga de métodos ... 44Recursividad ... 45Ejercicios ... 46Ejercicio de refuerzo ... 47
Sintaxis básica del lenguaje Java
Curso de Java Tema 2 – Sintaxis básica - 3Luis Hernández YáñezCarlos Cervigón Rückauer
Un programa está compuesto por un conjunto de clases(al menos una). Las clases son los módulos del programa.
Una clase consiste en unos datos (atributos) y unas funciones (métodos). Debe haber un método main() en una de las clases.
Una plantilla para los primeros programas de prueba:
// Programa.java
public class Programa {// Declaraciones globalespublic static void main(String[] args) {
// Declaraciones locales// Instrucciones
}}
Un par de cosas sobre las clases
Curso de Java Tema 2 – Sintaxis básica - 4Luis Hernández YáñezCarlos Cervigón Rückauer
Tres tipos de comentarios:
// De una sola línea
/* De una ómás líneas
*/
/** De documentación, de una o varias líneas.Justo antes del elemento que documenta(clase, método, etcétera)
*/
Los comentarios de documentación son utilizados por javadocpara generar documentación en formato HTML.Pueden llevar etiquetas.
Comentarios
Curso de Java Tema 2 – Sintaxis básica - 5Luis Hernández YáñezCarlos Cervigón Rückauer
Etiquetas para referencias:
@see <otra clase>
Etiquetas de documentación de clases:
@version <información sobre la versión>
@author <nombre autor>
Etiquetas de documentación de métodos:
@param <nombre argumento><descripción>
@return <descripción>
@exception <excepción
Comentarios: etiquetas para javadoc
Curso de Java Tema 2 – Sintaxis básica - 6Luis Hernández YáñezCarlos Cervigón Rückauer
Comentarios: ejemplo de uso de javadoc
Hola.java
// Hola.java
/** Primera clase de prueba@author Luis Hernández@version 1.0@see Adios
*/public class Hola {
/** Método principal@param args argumentos de línea de órdenes@return nada
*/public static void main(String[] args) {
System.out.println("Hola mundo");}
}
Curso de Java Tema 2 – Sintaxis básica - 7Luis Hernández YáñezCarlos Cervigón Rückauer
javadoc Hola.java
Hola.html
y otras páginas más.
Comentarios: resultado de javadoc
Curso de Java Tema 2 – Sintaxis básica - 8Luis Hernández YáñezCarlos Cervigón Rückauer
En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($).Los siguientes caracteres pueden ser letras o dígitos.
Convenios:
Nombre de clase: empieza por mayúscula..
Nombre de método o atributo: empieza por minúscula(quizá con un subrayado delante para los atributos).
Las constantes: todo en mayúsculas.
Identificadores formados por varias palabras: comienzo de cada nueva palabra en mayúsculas (dibujaRectangulo)
Identificadores
Java distingue entre mayúsculas y minúsculas
Curso de Java Tema 2 – Sintaxis básica - 9Luis Hernández YáñezCarlos Cervigón Rückauer
abstract continue for new switch
boolean default goto null synchronized
break do if package this
byte double implements private threadsafe
byvalue else import protected throw
case extends instanceof public transient
catch false int return true
char final interface short try
class finally long static void
const float native super while
Palabras reservadas
Curso de Java Tema 2 – Sintaxis básica - 10Luis Hernández YáñezCarlos Cervigón Rückauer
()Para delimitar listas de parámetros o de argumentos.Para modificar la precedencia en una expresión.Para delimitar condiciones.Para realizar conversiones de tipo (moldes o casting).
{}Para definir bloques de código.Para delimitar listas de valores iniciales de los vectores (arrays).
[]Para declarar vectores y referenciar elementos de los mismos.
; Para terminar instrucciones.
, Para separar identificadores en declaraciones.Para encadenar expresiones (operador coma).
. Para acceder a atributos de objetos u objetos globales de clases.Para pasar mensajes a objetos.Para acceder a un subpaquete de un paquete.
Separadores
Curso de Java Tema 2 – Sintaxis básica - 11Luis Hernández YáñezCarlos Cervigón Rückauer
Tipos de datos numéricos
Tipo
byteshortintlong
floatdouble
Tamaño
8 bits16 bits32 bits64 bits
32 bits64 bits
Valor mínimo
-128-32768-2147483648< -9 x 1018
+/- 3.4 x 1038 con 7 dígitos significativos+/- 1.7 x 10308 con 15 dígitos significativos
Valor máximo
127327672147483647> 9 x 1018
Promoción de tipos
Un tipo A es de mayor rango que un tipo B si A es superconjunto de B.Las variales de tipo B siempre se pueden asignar a las de tipo A
double > float > long > int > short > byte
Curso de Java Tema 2 – Sintaxis básica - 12Luis Hernández YáñezCarlos Cervigón Rückauer
boolean: true false
char: caracteres (16 bits)
Clases envolventes de tipos básicos:
Integer Long Float
Double Boolean Character
Permiten manipular los tipos primitivos como objetos
Tipos de datos no numéricos
Curso de Java Tema 2 – Sintaxis básica - 13Luis Hernández YáñezCarlos Cervigón Rückauer
Numéricos: como en otros lenguajes.Para que una constante sea long y no int, se añade una L (29L).Para que una constante sea float y no double, se añade una F.
Literales de carácter: entre comillas simples ('a').Ciertos caracteres especiales se pueden representar utilizandosecuencias de escape:
\n para un salto de línea (\u000A).
\t para un tabulador (\u0009).
\b para un retroceso (\u0008).
\r para un retorno de carro (\u000D).
Literales de cadenas de caracteres: entre comillas dobles
"Hola mundo"
Literales
Curso de Java Tema 2 – Sintaxis básica - 14Luis Hernández YáñezCarlos Cervigón Rückauer
tipo nombre;
tipo nombre = expresión; // inicialización
tipo nombre1, nombre2,...;
tipo nombre1 = exp1, nombre2 = exp2, ...;
long suma = 234;
int altura = 23, ancho = 45;
double resultado = 0.0;
float area = 23 * 45;
boolean encontrado = false;
char nl = '\n';
Variables: declaración
Variables.java
Curso de Java Tema 2 – Sintaxis básica - 15Luis Hernández YáñezCarlos Cervigón Rückauer
Variables compuestas por más de una palabra:iniciales en mayúscula menos la primera (nombreDato).
Variables globales de la clase: si no se inicializan explícitamente, se les asigna un valor por defecto.
Variables locales de los métodos: deben inicializarse siempre de forma explícita.
El modificador final
Impide que se altere el valor de la variable (constante):final int ANCHURA_MAXIMA = 120;final double PI = 3.1416;final int ABRIR_ARCHIVO = 1;
Por convenio, las constantes se escriben en mayúsculas.
Variables: consideraciones
Curso de Java Tema 2 – Sintaxis básica - 16Luis Hernández YáñezCarlos Cervigón Rückauer
Accesibles en toda la clase.
Se declaran en la sección de declaraciones globales de la clase.
Se declaran como static (de clase) y final (inmodificables),asignándoles el valor en la declaración.
public class Pruebas {static final double PI = 3.14159265;public static void main (String[] args) {
System.out.println(PI);}
}
Constantes de clase
Curso de Java Tema 2 – Sintaxis básica - 17Luis Hernández YáñezCarlos Cervigón Rückauer
Las llaves delimitan bloques de código: { ... }
Los bloques están anidados unos dentro de otros(a excepción del bloque correspondiente a la clase entera).
Las reglas de ámbito (alcance) y visibilidad de los identificadores son las habituales:
El ámbito es el bloque en el que está definido(junto con todos los bloques que contenga).
La visibilidad es menor que el ámbito si en bloques interioresse declaran otros identificadores iguales.Nota: Java permite que haya variables locales de los métodos con igual nombre que atributos de la clase (los ocultan), pero no permite que dentro de los métodos se use dos veces un mismo identificador.
Por defecto, las variables se crean cuando se entra en su ámbito y se destruyen cuando se sale de él.
Bloques y ámbito de los identificadores
Curso de Java Tema 2 – Sintaxis básica - 18Luis Hernández YáñezCarlos Cervigón Rückauer
Operador de asignación =variable = expresión;
Operadores aritméticosUnarios: + - ++ (incremento) -- (decremento)
x = y++; // Se asigna y a x; luego se incrementa yx = ++y; // Se incrementa y; luego se asigna y a x
Binarios: + - * / % (módulo)
Ternario: ? (x < y) ? x : y (si x < y, entonces x, si no y)
Abreviaturasx += y; equivale a x = x + y;x -= y; equivale a x = x - y;x *= y; equivale a x = x * y;x /= y; equivale a x = x / y;x %= y; equivale a x = x % y;
Operadores
Area.java
Curso de Java Tema 2 – Sintaxis básica - 19Luis Hernández YáñezCarlos Cervigón Rückauer
Operadores relacionales == != < <= > >=
Operadores lógicos (booleanos) Evaluación perezosa
! Negación (NOT)&& Conjunción (AND) (& para evaluación no perezosa)|| Disyunción (OR) (| para evaluación no perezosa)^ O exclusiva (XOR)
Conversiones de tipos: los moldes (casts)
La promoción de tipos es automática (de menor a mayor).
Las conversiones de tipos mayores a tipos menores se debe hacer explícita por medio de moldes: el tipo deseado entre paréntesis.
(tipo) expresión
El molde precede a lo que se quiere convertir.
Operadores
Casting.java
Curso de Java Tema 2 – Sintaxis básica - 20Luis Hernández YáñezCarlos Cervigón Rückauer
Mayor moldes++ -- (prefijos)!
* / %
+ -
< <= > >=
== !=
&
^
|
&&
||
Menor = += -= *= /= %=
Operadores: precedencia
Los paréntesisnos permitenpasar por altola precedencia
Curso de Java Tema 2 – Sintaxis básica - 21Luis Hernández YáñezCarlos Cervigón Rückauer
Java no proporciona métodos directos para leer datos del teclado.Proporciona métodos para leer líneas.
Una clase MyInput para leer números y cadenas del teclado:
Entrada/salida básica
MyInput.java
...public class MyInput{
public static String readString() { ... }public static int readInt() { ... }public static double readDouble() { ... }public static byte readByte() { ... }public static short readShort() { ... }public static long readLong() { ... }public static float readFloat() { ... }
}
Reproducido de “Introduction to Java”, Y. Daniel Liang, Prentice Hall 2001.
Curso de Java Tema 2 – Sintaxis básica - 22Luis Hernández YáñezCarlos Cervigón Rückauer
Desarrollar un programa en una clase denominada AreaCirculoque pida el radio de un círculo y muestre el área del mismo.
Ejercicios
Curso de Java Tema 2 – Sintaxis básica - 23Luis Hernández YáñezCarlos Cervigón Rückauer
Desarrollar un programa, con una clase que se denomine CalculoHipoteca, que permita calcular los pagos mensual y total de un crédito hipotecario. Pedirá la tasa de interés anual (porcentaje), el número de años y la cantidad a prestar.
donde tasaInteresMensual está normalizada (entre 0 y 1).
AB Math.pow(A,B);
Si quieres que no secambie de línea cuando imprimas en la pantalla:System.out.print();
Ejercicios
12)1(
11 ×+−
×=
añossM ensualtasaIntere
sM ensualtasaInterecantidadlpagoM ensua
Curso de Java Tema 2 – Sintaxis básica - 24Luis Hernández YáñezCarlos Cervigón Rückauer
La clase Math proporciona dos constantes (Math.E y Math.PI) y muchos métodos (de clase) útiles para operaciones matemáticas. Es una clase del lenguaje (java.lang) y por eso se importa automáticamente.
Algunos de los métodos de la clase son:
Math.abs(num) Math.acos(num) Math.atan(num)Math.cos(num) Math.exp(num) Math.log(num)
Math.max(a,b) Math.min(a,b) Math.pow(a,b)
Math.random() Math.round(num) Math.sin(num)
Math.sqrt(num) Math.tan(num)
Math.toDegrees(num) Math.toRadians(num)
Práctica:Rehacer los dos ejercicios anteriores para que el área del círculo sea más precisa y los resultados se muestren con dos decimales.
Una clase muy útil para números: Math
AreaCirculo2 CalculoHipoteca2
Curso de Java Tema 2 – Sintaxis básica - 25Luis Hernández YáñezCarlos Cervigón Rückauer
Instrucciones de selección condicional:
Bifurcación: if if-else
Selección múltiple: switch
Instrucciones de bucles:
Número de iteraciones predeterminado: for
Bucles condicionales: while do-while
Instrucciones de paso de control: break continue
Instrucciones de control del flujo
Curso de Java Tema 2 – Sintaxis básica - 26Luis Hernández YáñezCarlos Cervigón Rückauer
Para la bifurcación condicional disponemos de la típica estructura if.
Veamos sus distintas variaciones:if(condición) instrucción;
if(condición) instrucción-if;else instrucción-else;
if(condición) { secuencia-de-instrucciones;
}
if(condición) { secuencia-de-instrucciones-if;
}else {
secuencia-de-instrucciones-else;}
Selección condicional: bifurcación
condicióntrue
Instruccióno bloque if
false
Instruccióno bloque else
Curso de Java Tema 2 – Sintaxis básica - 27Luis Hernández YáñezCarlos Cervigón Rückauer
if-else anidados: cada else se asocia al if anterior más cercano.
if(i == j) {if(j == k)
System.out.println("i igual a k");} // Llaves para que el else se asocie al primer ifelse {
System.out.println("i no es igual a j"); }
Escalera if-else-if:
if(n == 1 ) { // Bloque 1}else if(n == 2) { // Bloque 2}else { // Si todo falla, Bloque 3 }
Selección condicional: bifurcación
Curso de Java Tema 2 – Sintaxis básica - 28Luis Hernández YáñezCarlos Cervigón Rückauer
– Modificar el programa de cálculo de pagos de hipotecas, de forma que el interés anual dependa del número de años del préstamo:
7,25% hasta 15 años (exclusive)8,5% hasta 20 años (exclusive)9,75% hasta 25 años (exclusive)11% hasta 30 años
Además, los préstamos no pueden durar menos de 10 años ni más de 30.
Nota: para forzar la finalización del programa se puede usar System.exit(0). A menudo evita tener que anidar demasiadas bifurcaciones condicionales.
– Crear un programa que pida tres números (num1, num2 y num3)y los ordene, de forma que num1 contenga el mayor, num2contenga el intermedio y num3 contenga el menor.
Ejercicios
CalculoHipoteca3
Ordena
Curso de Java Tema 2 – Sintaxis básica - 29Luis Hernández YáñezCarlos Cervigón Rückauer
Si tenemos que disponer más de dos ramas de ejecución y la elegida depende del valor de una variable o una expresión, entonces debemos elegir la instrucción switch.
La sintaxis básica es la siguiente:switch(expresión) {
case valor1:instrucciones1[break;]
case valor2:instrucciones2[break;]
...[ default:
por-defecto ]}
Selección condicional: ramificación múltiple
[...] : opcional
exp==val1false
exp==val2 instrucciones2 true
trueexp==valN
...false
false
true instrucciones1
instruccionesN
por-defectoLa instrucción vacía existe
Curso de Java Tema 2 – Sintaxis básica - 30Luis Hernández YáñezCarlos Cervigón Rückauer
switch(mes) {case 1: case 3: case 5:case 7: case 8: case 10:case 12:
numeroDias = 31;break;
case 4: case 6: case 9:case 11:
numeroDias = 30;break;
default:numeroDias = 28;
}
Selección condicional: ramificación múltiple
Curso de Java Tema 2 – Sintaxis básica - 31Luis Hernández YáñezCarlos Cervigón Rückauer
Para ejecutar un determinado número de veces una instrucción o un bloque de código disponemos de la típica instrucción for:
for(inicialización;condición;incremento)instrucción;
for(inicialización;condición;incremento) {secuencia-de-instrucciones
}
La sección de inicialización sirve para establecer la situación inicial; habitualmente se trata simplemente de la asignación de un valor inicial a una variable de control de bucle.
La sección de condición indica si debe proseguir la repetición;mientras sea cierta (true) el bucle continuará.
La sección de incremento sirve para establecer la nueva situaciónde la siguiente iteración; habitualmente se incrementa la variable.
Bucles: la instrucción for
Curso de Java Tema 2 – Sintaxis básica - 32Luis Hernández YáñezCarlos Cervigón Rückauer
for(contador = 1; contador <= ciclos; contador++)instrucción;
Bucles: la instrucción for
true
instrucción
contador<= ciclos
contador = 1
false
contador++
Curso de Java Tema 2 – Sintaxis básica - 33Luis Hernández YáñezCarlos Cervigón Rückauer
Bucles: la instrucción for
TestMulTable.java
...// Display the number titleSystem.out.print(" | ");for(int j = 1; j <= 9; j++) System.out.print(" " + j);System.out.println(" ");
// Print table bodyfor(int i = 1; i <= 9; i++) {
System.out.print(i+" | ");for(int j = 1; j <= 9; j++) { // j de otro bloque
// Display the product and align properlyif(i * j < 10) System.out.print(" " + i * j);else System.out.print(" " + i * j);
}System.out.println();
}...
Reproducido de “Introduction to Java”, Y. Daniel Liang, Prentice Hall 2001.
Curso de Java Tema 2 – Sintaxis básica - 34Luis Hernández YáñezCarlos Cervigón Rückauer
– Crear un programa que pida un número y muestre una pirámide como la siguiente (para el caso en el que el número sea 8):
11 2 1
1 2 3 2 11 2 3 4 3 2 1
1 2 3 4 5 4 3 2 11 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 7 6 5 4 3 2 11 2 3 4 5 6 7 8 7 6 5 4 3 2 1
– Sabiendo que el valor de π se puede aproximar mediante la siguiente fórmula:
π = 4 x (1 – 1/3 + 1/5 – 1/7 + 1/9 – 1/11 + 1/13 ...)
Crear un programa que pida al usuario un número de iteraciones y calcule el valor de π con ese número de aproximaciones.
Ejercicios
Piramide
CalculoPI
Curso de Java Tema 2 – Sintaxis básica - 35Luis Hernández YáñezCarlos Cervigón Rückauer
La instrucción while es una de las dos que están disponibles para bucles no determinados, aquellos que no tienen establecido de antemano un número fijo de iteraciones. La continuidad del bucledepende de alguna condición. Mientras (while) que la condición sea cierta, se sigue iterando; en el momento en que la condición se vuelva falsa, el bucle termina.while(condición) instrucción;
while(condición) {instrucciones
}
Bucles: la instrucción while
falsecondición
true
instrucción
Curso de Java Tema 2 – Sintaxis básica - 36Luis Hernández YáñezCarlos Cervigón Rückauer
La instrucción do...while es la otra instrucción disponible para bucles no determinados. La diferencia con el bucle while se encuentra en que la condición se comprueba al final, después de haber ejecutado el bloque. Así, siempre se realiza al menos una iteración del bucle (con el while puede no haber iteración alguna).do {
instrucciones} while(condición)
Se ejecutan las instruccioneshasta que la condiciónse haga falsa.
Bucles: la instrucción do...while
false
true
instrucciones
condición
Curso de Java Tema 2 – Sintaxis básica - 37Luis Hernández YáñezCarlos Cervigón Rückauer
La instrucción break, además de servir para interrumpir la ejecución del código en los casos de los switch, sirve para interrumpir la ejecución de un bucle while o do...while(dar por terminado el bucle, saliendo de él de forma inmediata).La instrucción continue sirve para interrumpir la ejecución de la iteración actual de un bucle while o do...while, pasando por alto el resto del código del bucle que haya a continuación yforzando a que siga el bucle con la siguiente iteración.int i = 0; float suma = 0;do {
int num = MyInput.readInt();if(num == 0) break;if(num < 0) continue;suma += 1 / num;i++;
} while(i < 5);
break y continue
¿Qué error hayen este ejemplo?
ContinueBreak.java
Curso de Java Tema 2 – Sintaxis básica - 38Luis Hernández YáñezCarlos Cervigón Rückauer
– Convertir el siguiente bucle for en un while y en un do-while:
long suma = 0;for(int i = 0; i <= 1000; i++) suma += i;
– ¿Cuál es la salida del siguiente código?int num = 1000;while(true) {
if(num < 9) break;num -= 9;
}System.out.println("num = " + num);
– ¿Y la de este otro?int num = 1000;while(true) {
if(num < 9) continue;num -= 9;
}System.out.println("num = " + num);
Ejercicios
Curso de Java Tema 2 – Sintaxis básica - 39Luis Hernández YáñezCarlos Cervigón Rückauer
Los métodos de las clases son las unidades funcionales de Java.Son similares a las funciones de otros lenguajes.
modificadores: indican cómo (dónde) se puede invocar el método.De momento, simplemente static.
tipo: tipo de dato que devuelve el método (void si nada).
parámetros: declaraciones separadas por comas.
Métodos
[modificadores] tipo nombre (parámetros){// Cuerpo del método
}
Cabecera
Curso de Java Tema 2 – Sintaxis básica - 40Luis Hernández YáñezCarlos Cervigón Rückauer
static int max(int num1, int num2){
int result;if(num1 > num2) result = num1;else result = num2;return result;
}
Para devolver valores se usa la instrucción return.
El método termina al ejecutar una instrucción returno al llegar a la llave de cierre.static int max(int num1, int num2) {
if(num1 > num2) return num1;else return num2;
}
Métodos
Cada parámetrocon su tipo.
int num1, num2
Si el método no esde tipo void, debeterminar siemprecon un return.
Signatura
Se puede forzar el fin de un método void con una instrucción return;
Curso de Java Tema 2 – Sintaxis básica - 41Luis Hernández YáñezCarlos Cervigón Rückauer
int mayor = max(3, 4);int num1, num2;...mayor = max(num1, num2);System.out.println(12 * max(num1, num2) – 3);max(num1, num2); // válido, pero se pierde el resultado
Los métodos de tipo void sólo se pueden invocarcomo instrucciones independientes:static void algo(...) {
...}
algo(...);
Métodos: invocación
Curso de Java Tema 2 – Sintaxis básica - 42Luis Hernández YáñezCarlos Cervigón Rückauer
Los métodos static se pueden invocar directamente (con sunombre) en los demás métodos de su misma clase:public class MayorMenor {
public static void main(String[] args){int num1, num2, mayor, menor;...mayor = max(num1, num2);menor = min(num1, num2);
}static int max(int num1, int num2) {if(num1 > num2) return num1;else return num2;
}static int min(int num1, int num2) {if(num1 < num2) return num1;else return num2;
}}
Métodos: invocación
MayorMenor.java
Paso de parámetrosPOR VALOR.
Curso de Java Tema 2 – Sintaxis básica - 43Luis Hernández YáñezCarlos Cervigón Rückauer
– Modificar el programa MayorMenor para que muestre el mayory el menor de cuatro números.
– Crear un programa que pida al usuario un número entero largoy muestre la suma de los dígitos del número.Usará un método que se encargue de realizar dicha suma.
– Crear un programa que muestre los 100 primeros números primos.Usará un método esPrimo() que indique si un número es o no primo. Mostrará diez números primos por línea (y alineados en columnas).
Ejercicios
MayorMenor2
SumaDigitos
Primos
Curso de Java Tema 2 – Sintaxis básica - 44Luis Hernández YáñezCarlos Cervigón Rückauer
Los métodos se pueden sobrecargar: varios métodos con igual nombre pero diferente signatura.public class X {
public static void main(String[] args){...
}static int max(int num1, int num2) { ... }static long max(long num1, long num2) { ... }static float max(float num1, float num2) { ... }static double max(double num1, double num2) { ... }
}
Se sabe cuál usar por el tipo de los argumentos.
Métodos: sobrecarga
Sobrecarga.java
Curso de Java Tema 2 – Sintaxis básica - 45Luis Hernández YáñezCarlos Cervigón Rückauer
También llamada recursión, es la posibilidad de que un método se invoque a sí mismo.public class Factorial {
public static void main(String[] args){long num;System.out.print("Introduce el numero cuyo
factorial quieres calcular: ");num = MyInput.readLong();System.out.println("El factorial de " + num + " es " + factorial(num));
}static long factorial(long num) {if(num == 1) return 1; // Caso basereturn num * factorial(num - 1);// Cada vez más cerca del caso base
}}
Métodos: recursividad
Factorial.java
Curso de Java Tema 2 – Sintaxis básica - 46Luis Hernández YáñezCarlos Cervigón Rückauer
– Crear un programa que calcule números de Fibonacci.Pedirá el número del que se quiere calcular su Fibonacci.
F(0) = 0F(1) = 1F(N) = F(N-2) + F(N-1) si N > 1
– Crear un programa que indique los movimientos que hay que realizar para resolver el problema de las torres de Hanoi.
Se pedirá el número de discos que se quieren mover.
Cada pedestal está identificado por una letra (A, B y C).La torre está inicialmente en el A y se quiere llevar al C.
Para mover una torre de discos de un pedestal X a otro pedestal Y, el primer movimiento es mover el disco superior de la torre al tercer pedestal, que se usa como auxiliar.
Ejercicios
Fibonacci
Hanoi
Curso de Java Tema 2 – Sintaxis básica - 47Luis Hernández YáñezCarlos Cervigón Rückauer
Desarrollar un programa que permita manipular fechas.
El día, el mes y el año serán variables de clase (static)(se podrán acceder en cualquier método de la clase).
Los métodos que se desea que tenga el programa son:
leer(): leerá del teclado el día, el mes y el año de la fecha.
valida(): comprobará si la fecha leída es correcta(entre el 1-1-1900 y el 31-12-2050); si no es válida,la ajustará para que lo sea. Se llamará al final de leer().
mostrarCorta(): mostrará la fecha en formato corto(por ejemplo, 02-09-2003).
bisiesto(): dirá si el año de la fecha es bisiesto.
diasMes(mes): devolverá el número de días del mesque se le pasa para el año de la fecha.
Ejercicio de refuerzo
. . .
Curso de Java Tema 2 – Sintaxis básica - 48Luis Hernández YáñezCarlos Cervigón Rückauer
diasTranscurridos(): devolverá el número de días transcurridos desde el 1-1-1900 hasta la fecha.
diaSemana(): devolverá el día de la semana de la fecha(0 para domingo, 1 para lunes, ..., 6 para sábado).El 1 de enero de 1900 fue domingo.
mostrarLarga(): mostrará la fecha en formato largo(por ejemplo, martes 2 de septiembre de 2003).
fechaTras(dias): establecerá la fecha que correspondea haber pasado esos días desde el 1-1-1900.
siguiente(): pasará al día siguiente.
El método main() servirá para probar los demás métodos.
Ejercicio de refuerzo
Fecha