apuntes:introduccion
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| apuntes:introduccion [2023/05/28 15:22] – [Clase Object] Santiago Faci | apuntes:introduccion [2026/10/28 22:58] (current) – [Ejercicios] Santiago Faci | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Introducción al lenguaje Java ====== | ====== Introducción al lenguaje Java ====== | ||
| + | |||
| + | ===== Algo de código para empezar ===== | ||
| + | |||
| + | <code java> | ||
| + | package com.codeandcoke.helloworld; | ||
| + | /* | ||
| + | * Primer programa escrito en Java | ||
| + | */ | ||
| + | public class HelloWorld { | ||
| + | public static void main(String args[]) { | ||
| + | System.out.println(" | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * Los comentarios se escriben entre los caracteres /* y */ y pueden ocupar varias líneas | ||
| + | * Si un comentario sólo ocupa una línea se puede escribir justo después de los caracteres < | ||
| + | * La instrucción '' | ||
| + | * Cada sentencia de código se termina siempre con un '';'' | ||
| + | * La definiciones de las clases y métodos no se consideran sentencias y no terminan con el caracter '';'' | ||
| + | * Cada bloque de código se inicia con el caracter '' | ||
| + | |||
| + | ===== Palabras clave ===== | ||
| + | |||
| + | < | ||
| + | {{ keywords.png }} | ||
| + | < | ||
| + | |||
| + | ===== Proceso de desarrollo de una aplicación Java ===== | ||
| + | |||
| + | === Algunas consideraciones === | ||
| + | |||
| + | * Normalmente una aplicación se corresponde con un Proyecto (en IntelliJ IDEA en nuestro caso) | ||
| + | * Estructura basada en paquetes (carpetas) y debemos especificar uno como mínimo | ||
| + | * La unidad mínima de un proyecto es la clase (normalmente pública) y normalmente cada una se escribe en un fichero de código | ||
| + | * La unidad mínima de ejecución es el método que normalmente estará compuesto de un conjunto de instrucciones relacionadas | ||
| + | * Como mínimo tendrá que haber una clase pública con el método public static void main(String args[]), que será el punto de arranque cuando se ejecute el proyecto | ||
| + | * El compilador nunca procesa los comentarios | ||
| + | * Nunca debemos editar/ | ||
| + | * En definitiva, a la hora de escribir el código debemos seguir la [[https:// | ||
| + | |||
| + | === Estructura de un proyecto Java === | ||
| + | |||
| + | < | ||
| + | {{ java-project.png }} | ||
| + | < | ||
| + | |||
| + | === Proceso de creación de una aplicación === | ||
| + | |||
| + | * Al compilar, cada clase de código genera un fichero .class y sólo una de ellas será la que inicie la aplicación | ||
| + | * No es raro que un proyecto pueda contener más de 100 clases, a lo que habría que sumar otros recursos (texto, imágenes, . . .) | ||
| + | * Lo normal es que el código compilado se empaquete como .jar o .war | ||
| + | * Junto con las clases compiladas se empaqueta el manifiesto de la aplicación, | ||
| + | * Los IDE incorporan menús para facilitar la creación de empaquetados y manifiestos del proyecto | ||
| + | * En IntelliJ IDEA le llaman artifacts y se pueden configurar desde el menú '' | ||
| + | * El artifact quedará almacenado en la carpeta '' | ||
| + | * Dependiendo de cómo esté configurado el Sistema Operativo podemos lanzar la aplicación simplemente haciendo doble-click sobre el empaquetado (HelloWorld.jar, | ||
| ===== Los comentarios ===== | ===== Los comentarios ===== | ||
| Line 77: | Line 134: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| + | |||
| + | < | ||
| + | {{ primitives.png }} | ||
| + | < | ||
| En el programa, cuando se quiere hacer uso de una variable, se debe escribir el tipo de datos separado del nombre por un espacio. Por ejemplo, para declarar una variable de los tipos que hemos visto anteriormente sería como sigue: | En el programa, cuando se quiere hacer uso de una variable, se debe escribir el tipo de datos separado del nombre por un espacio. Por ejemplo, para declarar una variable de los tipos que hemos visto anteriormente sería como sigue: | ||
| Line 167: | Line 228: | ||
| Con todo esto, por norma general, siempre podremos convertir el valor de una variable a otra variable de distinto tipo, siempre y cuando tenga sentido representar dicho valor como otro tipo de dato. Por ejemplo, el dígito 1 puede ser interpretado como el número '' | Con todo esto, por norma general, siempre podremos convertir el valor de una variable a otra variable de distinto tipo, siempre y cuando tenga sentido representar dicho valor como otro tipo de dato. Por ejemplo, el dígito 1 puede ser interpretado como el número '' | ||
| + | |||
| + | === Conversión implícita === | ||
| Algunas conversiones resulta bastante triviales y las hará Java por nosotros. Es lo que se conoce como una conversión ímplicita, ya que no requiere ninguna codificación extra por parte del programador y no suponga ninguna pérdida en el valor. Veamos un ejemplo donde un valor entero se convierte de forma implícita a un tipo entero: | Algunas conversiones resulta bastante triviales y las hará Java por nosotros. Es lo que se conoce como una conversión ímplicita, ya que no requiere ninguna codificación extra por parte del programador y no suponga ninguna pérdida en el valor. Veamos un ejemplo donde un valor entero se convierte de forma implícita a un tipo entero: | ||
| Line 183: | Line 246: | ||
| System.out.println(otroNumero); | System.out.println(otroNumero); | ||
| </ | </ | ||
| + | |||
| + | === Conversión explícita === | ||
| Para poder llevar a cabo por el momento una conversión explícita de tipos sencilla, podemos interponer el tipo de dato al que queramos convertir el valor (encerrado entre paréntesis). Aunque hay que tener en cuenta que esto sólo se podrá hacer entre tipos de datos compatibles ('' | Para poder llevar a cabo por el momento una conversión explícita de tipos sencilla, podemos interponer el tipo de dato al que queramos convertir el valor (encerrado entre paréntesis). Aunque hay que tener en cuenta que esto sólo se podrá hacer entre tipos de datos compatibles ('' | ||
| Line 237: | Line 302: | ||
| public static final float IVA = 0.21; | public static final float IVA = 0.21; | ||
| public static final int NUMERO_PAGINAS = 10; | public static final int NUMERO_PAGINAS = 10; | ||
| + | </ | ||
| + | |||
| + | ===== Enumeraciones ===== | ||
| + | |||
| + | * Permiten definir nuevos tipos de datos con rangos de valores muy limitados | ||
| + | * Sustituyen a las constantes para casos en los que éstas estaban relacionadas entre sí (distintos valores de un mismo rango) | ||
| + | * Al final no dejan de ser una serie de constantes pero agrupadas entre sí y con cierto contexto añadido | ||
| + | * Una vez definida una enumeración, | ||
| + | |||
| + | <code java> | ||
| + | public enum Direccion { | ||
| + | ARRIBA, ABAJO, DERECHA, IZQUIERDA | ||
| + | } | ||
| + | . . . | ||
| + | private Direccion direccion; | ||
| + | direccion = Direccion.ABAJO; | ||
| + | </ | ||
| + | |||
| + | === Definir tipos enumerados === | ||
| + | |||
| + | <code java> | ||
| + | public enum Estacion { | ||
| + | PRIMAVERA (10, 20.5f), | ||
| + | VERANO (23, 40), | ||
| + | OTONO (5.3f, 15), | ||
| + | INVIERNO (-2.1f, 10); | ||
| + | |||
| + | private final float temperaturaMinima; | ||
| + | private final float temperaturaMaxima; | ||
| + | |||
| + | Estacion(float minima, float maxima) { | ||
| + | temperaturaMinima = minima; | ||
| + | temperaturaMaxima = maxima; | ||
| + | } | ||
| + | | ||
| + | public float temperaturaMinima() { | ||
| + | return temperaturaMinima; | ||
| + | } | ||
| + | | ||
| + | public float temperaturaMaxima() { | ||
| + | return temperaturaMaxima; | ||
| + | } | ||
| + | | ||
| + | public float diferenciaTemperatura() { | ||
| + | return temperaturaMaxima - temperaturaMinima; | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| Line 357: | Line 469: | ||
| int integerNumber = generator.nextInt(10); | int integerNumber = generator.nextInt(10); | ||
| boolean booleanValue = generator.nextBoolean(); | boolean booleanValue = generator.nextBoolean(); | ||
| + | </ | ||
| + | |||
| + | ===== Code snippets ===== | ||
| + | |||
| + | ==== Mostrar un mensaje en pantalla ==== | ||
| + | |||
| + | <code java> | ||
| + | System.out.println(" | ||
| + | . . . | ||
| + | int cantidad = 10; | ||
| + | System.out.println(" | ||
| + | </ | ||
| + | |||
| + | ==== Generar un número aleatorio entre 0 y 10 ==== | ||
| + | |||
| + | <code java> | ||
| + | Random generador = new Random(); | ||
| + | int numeroAleatorio = generador.nextInt(10); | ||
| + | </ | ||
| + | |||
| + | ==== Simular el lanzamiento de una moneda ==== | ||
| + | |||
| + | <code java> | ||
| + | Random generador = new Random(); | ||
| + | boolean lanzamientoMoneda = generador.nextBoolean(); | ||
| + | </ | ||
| + | |||
| + | ==== Leer la entrada del usuario por teclado ==== | ||
| + | |||
| + | <code java> | ||
| + | Scanner teclado = new Scanner(System.in); | ||
| + | String entrada = teclado.nextLine(); | ||
| + | </ | ||
| + | |||
| + | ==== Reproducir un fichero de audio ==== | ||
| + | |||
| + | <code java> | ||
| + | try { | ||
| + | File f = new File(" | ||
| + | AudioInputStream audioIn = AudioSystem.getAudioInputStream(f.toURI().toURL()); | ||
| + | Clip clip = AudioSystem.getClip(); | ||
| + | clip.open(audioIn); | ||
| + | clip.start(); | ||
| + | } catch (IOException | UnsupportedAudioFileException | LineUnavailableException ioe) { | ||
| + | ioe.printStackTrace(); | ||
| + | } | ||
| </ | </ | ||
| Line 363: | Line 521: | ||
| ====== Ejercicios ====== | ====== Ejercicios ====== | ||
| - | - Haz un programa que solicite dos números y diga si son o no iguales | + | {{ ejercicio.png}} |
| - | - Realiza un programa que solicite un número y diga si es positivo o negativo | + | |
| - | - Realiza un programa que solicite tres números y los pinte en la pantalla ordenados de menor a mayor. Si el usuario introduce el 10, el 20 y el 2, el programa mostrará: "2 10 20" | + | Ver [[https://java.codeandcoke.com/apuntes:cadenas# |
| - | - Realiza un programa que solicite un número entre 1 y 1000 e indique cuántos dígitos tiene | + | |
| - | - Haz un programa que calcule el área de diferentes forma geométricas. Puedes hacer un menú donde el usuario pueda escoger entre algunas de ellas (cuadrado, rectángulo, | + | |
| - | - Realiza un programa donde el usuario tenga que introducir 3 números y el programa calcule cuál de ellos es el mayor de todos. Lo mostrará por pantalla. | + | |
| - | - Realiza un programa que permite introducir al usuario una hora (formato 12 o 24 horas, hora, minuto y segundo por separado) y compruebe que es correcto cada uno de los datos que éste introduzca. En caso de fallo hará que el usuario vuelva a introducir el dato erróneo. | + | |
| - | - Realiza una aplicación que solicite por pantalla 3 números y los guarde en una cadena de texto separados por un espacio. Por ejemplo, si el usuario introduce el 2, el 13 y el 235, el programa los almacena como "2 13 235" y lo pinta en la pantalla. | + | |
| - | - Realiza un programa que comience solicitando al usuario dos números cualesquiera. El programa tendrá que mostrar por pantalla la secuencia completa de números enteros que vayan desde el número menor al mayor de los introducidos. Por ejemplo, si el usuario introduce los números 20 y 12 el programa hará aparecer la siguiente secuencia (uno por línea): 12, 13, 14, 15, 16, 17, 18, 19, 20. | + | |
| - | - Realiza un programa que comience solicitando al usuario dos números cualesquiera. A continuación, | + | |
| - | - Realiza un programa como el anterior pero será el usuario quién decida si de la secuencia final de números que se deben mostrar, lo harán los pares o los impares. Esa información se la solicitará el programa tras pedirle los dos números iniciales. | + | |
| - | - Realiza una aplicación que funcione como conversor de monedas entre dos divisas (dólar y euro). Al iniciar la aplicación se presentarán al usuario las dos opciones (pasar de dólares a euros y viceversa) y el usuario tendrá que seleccionar una de las dos. A continuación, | + | |
| - | - Realiza un programa que solicite al usuario un número cualquiera y le indique al usuario si el número introducido es par o impar. El programa solicitará siempre un nuevo número hasta que el usuario decida salir (puedes crear un menú o bien seleccionar un texto que sirva como forma de indicar que se desea salir). | + | |
| - | - Realiza un programa donde el ordenador se piense un número y el usuario tenga un número límite de intentos para adivinarlo. El programa permitirá al usuario fijar ese número límite de intentos y por cada uno de ellos dará una pista indicando si el número que se ha pensado es mayor o menor que el introducido. Una vez que el usuario adivine el número o bien gaste el número de intentos se terminará el programa. En caso de que el usuario pierda se mostrará el número pensado por el ordenador. (Justo antes de los ejercicios puedes consultar cómo generar un número aleatorio y guardarlo en una variable). | + | |
| ---- | ---- | ||
| (c) 2019-{{date> | (c) 2019-{{date> | ||
apuntes/introduccion.1685287370.txt.gz · Last modified: by Santiago Faci
