Diferencia entre revisiones de «Ejercicios programación Java»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
(No se muestran 99 ediciones intermedias del mismo usuario)
Línea 8: Línea 8:
 
:* [http://about.me/angeldfg Profesor Angel D. Fernández González]
 
:* [http://about.me/angeldfg Profesor Angel D. Fernández González]
  
−
== Ejercicios UD1: Identificación de los elementos de un programa informático ==
 
  
−
* En este punto entraría:
+
== Recuerda ==
−
:* Estructura de un programa en Java.
 
−
:* Variables.
 
−
:* Constantes.
 
  
 +
:* El código debe estar indentado (tabulado correctamente). Lo debe de hacer automáticamente el IDE Netbeans.
 +
:* Cada vez que hay una apertura con llave ('''{''') debe tener un cierre de llave correspondiente ('''}'''). Por lo tanto, si el IDE no lo pone automáticamente, escribirlo antes de empezar a implementar el código interior.
 +
:* Java distingue mayúsculas de minúsculas. Una variable de nombre '''edad''' es diferente de otra de nombre '''Edad'''.
 +
:* Respeta las reglas de nomenclatura de Clases, variables, constantes y métodos.
 +
:* Todas las sentencias en Java deben acabar en punto y coma (''';''')
  
−
===Ejercicio 1===
+
== Ejercicios UD0: Uso de NetBeans ==
  
−
: Obtenidos en parte desde [https://www.jmramirez.pro/codigofuente/013-identificadores-variables-y-constantes/ este sitio web].
 
  
−
* Indica qué identificadores de los siguientes son válidos y cuales no lo son. En el caso que no sean válidos detalla el por qué: casa, -numero, micasa1, MES_1, mes_1, _a890, numero_”, 3numero, a890
+
* Crea un nuevo proyecto Java de nombre 'ProyectoJava' con una clase principal de nombre 'Principal' dentro del paquete 'mispaquetes'.
  
 +
: Modifica el método '''main''' para que al ejecutar la clase muestre tu nombre.
 +
: Compila y ejecuta la clase comprobando que funciona adecuadamente.
  
−
* Tenemos que crear variables para medir la temperatura de un horno, almacenar un número de teléfono, un interés bancario, los campos para guardar los datos personales de una persona, las partes de un ordenador. Indica los nombres que les darías a cada una de las variables.
 
  
 +
* Cambia a la vista '''Archivos''' y comprueba que el bytecode fue generado y se encuentra en el directorio build.
 +
: Compila y ejecuta la clase desde una consola (terminal en Linux). Recuerda que para compilar una clase dentro de un paquete tienes que situarte en la carpeta del proyecto y el nombre de la clase a compilar tiene que ir precedido del nombre del paquete de la forma 'paquete/Clase.java'.
 +
:: Utiliza la opción que nos da NetBeans de abrir una terminal dentro de su entorno (botón derecho => Herramientas => Open in terminal).
 +
: Ejecuta la clase compilada desde consola. Recuerda que en este caso, el nombre de la clase es paquete.Clase
  
−
* Indica los nombres que les darías a cada una de las constantes: constante para medir 32 grados de fiebre, almacenar el teléfono de urgencias 112, la primera vocal del alfabeto y la velocidad de la luz.
 
  
 +
* Modifica desde Netbeans el nombre del paquete en la clase creada y cámbialo por mispaquetes2. ¿ Qué sucede ?
 +
: Haz lo necesario para subsanar el error. Recuerda utilizar la función '''Reestructurar''' de Netbeans.
  
  
−
====Solución Ejercicio 1====
+
* Al hacer el paso anterior, cambiamos la clase Principal del proyecto (ahora está en otro paquete). Debemos modificar sus propiedades para que coja la nueva clase.
 +
: Edita la configuración del proyecto y cambia la clase Principal (si intentamos ejecutar el proyecto sin cambiar la clase, el IDE nos pedirá que escojamos la nueva clase a 'ejecutar' => realmente busca una clase con el método main y lo ejecuta).
  
−
* Indica qué identificadores de los siguientes son válidos y cuales no lo son. En el caso que no sean válidos detalla el por qué: casa, -numero, micasa1, MES_1, mes_1, _a890, numero_”, 3numero, a890
 
−
:* '''Solución:''' Mirando los apuntes podemos comprobar como un identificador debe comenzar con una letra, $ o _ pero por convenio no se debe utilizar '''$''' y '''_'''
 
−
:: Por lo tanto, en el caso anterior no son válidos: -numero,_a890,3numero
 
−
:: Por otra banda no se puede utilizar ninguno de los caracteres especiales (las comillas dobles): numero_”
 
  
 +
* Comprueba desde la vista de Archivos de Netbeans como quedan en '''build''' las carpetas de los paquetes creados. Haz uso de la opción 'Compilar y limpiar' de Netbeans para que borre las carpetas que ya no son necesarias.
  
−
* Tenemos que crear variables para medir la temperatura de un horno, almacenar un número de teléfono, un interés bancario, los campos para guardar los datos personales de una persona, las partes de un ordenador. Indica los nombres que les darías a cada una de las variables.
 
−
:* '''Solución:''' tempHorno; telefono; interesBancario; nombreCompleto, direccion, telefono, codigoPostal,pais; marcaMonitor, marcaCpu, marcaHd, capacidadHD
 
−
:<u>Nota:</u> Fijarse que se hiciéramos uso de la POO, podríamos crear una clase Monitor (por ejemplo) que tuviera las propiedades (variables) marca, tamaño,...
 
  
 +
* Utiliza la función '''Reestructurar''' de Netbeans para cambiar el nombre del paquete a 'nuevos.paquetes'.
 +
: ¿ Cual es el resultado ?. Cada paquete representa físicamente una carpeta a nivel de S.O. Podéis comprobarlo mirando la vista de 'Archivos' de Netbeans.
  
−
* Indica los nombres que les darías a cada una de las constantes: constante para medir 32 grados de fiebre, almacenar el teléfono de urgencias 112, la primera vocal del alfabeto y la velocidad de la luz.
 
−
:* '''Solución:''' GRADOS_32, TFNO_URGENCIAS;VOCAL_1; VELOCIDAD_LUZ
 
  
−
===Ejercicio 2===
+
* Cambia el nombre de la clase a ProyectoJava2 sin utilizar la reestructuración. ¿ Qué pasa ? ¿ Qué tendrías que hacer para que se pueda compilar la clase ?
  
−
* Identifica los tipos de variables que encuentres en esta clase, atendiendo a si son:
 
−
:* Variables de tipos primitivos/de referencia.
 
−
:* Variables/Constantes
 
−
:* Variables miembro/locales
 
  
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
+
* Personalización del NetBeans:
−
class Computador{
+
:* [http://www.javatutoriales.com/2009/01/configurando-nuestra-herramienta-de.html Enlace 1. Varias opciones].
 +
:* [https://codegeando.blogspot.com.es/2013/10/netbeans-temas-para-tu-netbeans-theme.html Enlace 2. Themes].
 +
:* [https://pmartinez.wordpress.com/2011/05/02/atajos-utiles-en-netbeans/ Enlace 3. Atajos de teclado.].
 +
:* [https://byspel.com/atajos-de-teclado-en-netbeans/ Enlace 4: Otros atajos de teclado.].
  
−
    final int MAYOR_EDAD=100;
 
−
    int capacidade;
 
−
    String marca;
 
−
 
 
−
    void calcularPotencia(){
 
−
        float indice=0;
 
−
     
 
−
     
 
−
    }
 
−
    String obtenerDescripcion(){
 
−
        String temporal="";
 
−
        final String CADENA_FIJA="TE ENCUENTRAS EN:";
 
  
−
     
+
* Combinación de teclas útiles en Netbeans.
−
        return temporal;
 
−
    }
 
−
 
 
−
}
 
−
</syntaxhighlight>
 
  
 +
:* '''fori + Tab''': Genera el código necesario para hacer un for.
 +
:* '''iff + Tab''': Genera los bloques if.
 +
:* '''sout + Tab''' o '''soutv + Tab''': Genera los System.out.println(“”).
 +
:* '''sw + Tab''': Genera el switch.
 +
:* '''whilexp + Tab''': Genera los bloques While.
  
−
====Solución Ejercicio 2====
+
:* '''Ctrl + Space''': Completa el código que estamos escribiendo.
 +
:* '''Alt + Insert''': Agrega constructores, métodos accesores, propiedaes, overrides, etc...
 +
:* '''Alt + Enter''': Se usa sobre el texto subrayado para ver la sugerencia que nos hace el IDE cuando hay algún error de sintaxis.
 +
:* '''Ctrl + R''': Si lo hacemos sobre el identificador, renombra todas las ocurrencias.
  
−
::<syntaxhighlight lang="java" line enclose="div" highlight="3,5,6,9,12,13" >
 
−
class Computador{
 
  
−
    final int MAYOR_EDAD=100; => primitivo, constante, miembro
+
* Podéis ver una lista completa [https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiEpo72s9zWAhWHvRoKHeJCA4QQFgglMAA&url=https%3A%2F%2Fnetbeans.org%2Fproject_downloads%2Fusersguide%2Fshortcuts-80.pdf&usg=AOvVaw2DdGJjFdq93kFT7xApdChb en este documento].
−
 
 
−
    int capacidade; => primitivo, variable, miembro
 
−
    String marca; => referencia, variable, miembro
 
−
 
 
−
    void calcularPotencia(){
 
−
        float indice=0; => primitivo, variable, local
 
−
    }
 
−
    String obtenerDescripcion(){
 
−
        String temporal=""; => referencia, variable, local
 
−
        final String CADENA_FIJA="TE ENCUENTRAS EN:"; => referencia, constante, local
 
  
−
     
 
−
        return temporal;
 
−
    }
 
−
 
 
−
}
 
−
</syntaxhighlight>
 
  
 +
== Ejercicios UD1: Identificación de los elementos de un programa informático ==
  
−
===Ejercicio 3===
+
* [[Programacion Listado de ejercicios UD1 | Listado ejercicios UD1: Identificación de los elementos de un programa informático]]
−
 
 
−
* Define las variables y constantes con un nombre adecuado y un tipo correcto que serían necesarios para dar solución a los siguientes problemas:
 
−
 
 
−
:* Se quiere crear una clase que guarde información personal de sus empleados (incluidos teléfono y email).
 
−
 
 
−
:* Se quiere crear un método que a partir de un radio dado, calcule el diámetro, la longitud y el área.
 
−
 
 
−
:* Se quiere crear un método que en base a un conjunto de notas de cada uno de los alumnos, calcule la media de todas ellas.
 
−
 
 
−
:* Se quiere crear una clase que guarde información sobre los coches de alquiler de los que dispone.
 
−
 
 
−
:* Se quiere crear un método que calcule el importe total del precio de un producto con su iva.
 
−
 
 
−
 
 
−
====Solución Ejercicio 3====
 
−
 
 
−
 
 
−
* Se quiere crear una clase que guarde la dirección y nombre de sus empleados (incluidos teléfono y C.P.).
 
−
:* '''Solución:'''
 
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 
−
String nombre;
 
−
String apellidos;
 
−
String fechaNac;  // Si queremos guardar la fecha de nacimiento, Java dispone de una clase Date.
 
−
String direccion;
 
−
String telefono;  // ¿ No debería ser un número ?
 
−
String codigoPostal; // ¿ No debería ser un número ?
 
−
 
 
−
</syntaxhighlight>
 
−
 
 
−
:: Os indico alguna de las razones por las que no sería necesario que teléfono y código postal sean número:
 
−
::* El código postal y el teléfono aportan información con parte de sus dígitos. Así el C.P., por ejemplo, 15660 indicaría que es de Coruña. Extraer esas 'partes' es mucho más fácil si el tipo de dato es String.
 
−
::* No vamos a realizar operaciones matemáticas con ellas. Si tuviéramos un campo edad, sí que sería numérico, ya que podríamos querer obtener la media de edad de todos los empleados, o cual de ellos es mayor.
 
−
::* Si alguno de los datos tiene ceros al comienzo, no podrían ser guardados dentro de un campo de tipo numérico.
 
−
 
 
−
 
 
−
:* Se quiere crear un método que a partir de un radio dado, calcule el diámetro, la longitud y el área.
 
−
:* '''Solución:'''
 
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 
−
float radio;
 
−
float diametro;
 
−
float longitud;
 
−
float area;
 
−
final float PI;
 
−
</syntaxhighlight>
 
−
 
 
−
:: Podríamos utilizar double para guardar los datos. De echo, las operaciones trigonométricas de senos, cosenos,...devuelven un double. Todo dependerá del dato de entrada que utilicemos y de la precisión que queramos tener.
 
−
 
 
−
 
 
−
:* Se quiere crear un método que en base a un conjunto de notas de cada uno de los alumnos, calcule la media de todas ellas.
 
−
:* '''Solución:'''
 
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 
−
float media;
 
−
float nota;  // Ponemos float ya que la nota podría venir con números decimales y llega el tipo float para guardar dos dígitos.
 
−
</syntaxhighlight>
 
−
:: El enunciado habla de un conjunto de notas. En este caso estamos definiendo el nombre y tipo de una nota. Para guardar un conjunto de notas tendremos que hacer uso de unas estructuras de datos más complejas, como arrays o listas.
 
−
 
 
−
 
 
−
:* Se quiere crear una clase que guarde información sobre los coches de alquiler de los que dispone.
 
−
:* '''Solución:'''
 
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 
−
String marca;
 
−
String matricula;
 
−
int km;
 
−
</syntaxhighlight>
 
−
 
 
−
 
 
−
:* Se quiere crear un método que calcule el importe total del precio de un producto con su iva.
 
−
:* '''Solución:'''
 
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
 
−
final float IVA;
 
−
float precioFinal;
 
−
</syntaxhighlight>
 
−
 
 
−
===Ejercicio 4===
 
−
 
 
−
* Crea una variable para cada uno de los siguientes datos e inicialízala (cuando se indique su valor).
 
−
: Cada variable se escribirá en una línea.
 
−
 
 
−
: <u>Nota:</u> Fíjate en las advertencias errores que muestra NetBeans
 
−
 
 
−
::* peso
 
−
::* Edad: 12
 
−
::* Temperatura Exterior: -45 ºC
 
−
::* Temperatura interior: 13 ºC
 
−
::* Radio del universo: 13 x 10-97m
 
−
::* Gastos: 1443.14 €
 
−
::* Poblacion existente en China: 1.325.254.589 habitanes
 
−
::* Sexo: H
 
−
::* float: 3;
 
−
::* Peso de un tomate: 0.23 Kg
 
−
::* letra del NIF
 
−
::* NIF
 
−
 
 
  
−
====Solución Ejercicio 4====
+
== Debugger==
  
  
−
* Es esta solución se hace uso del '''método printf''' el cual permite mostrar información con un formato determinado. Más información [https://www.cs.colostate.edu/~cs160/.Spring16/resources/Java_printf_method_quick_reference.pdf en este enlace].
+
* Podemos ver en la siguiente imagen el significado de cada botón cuando iniciamos una depuración de un programa.
 +
[[Imagen:Programacion_debugger_1.jpg|600px|center]]
 +
<small><center>[http://puntocomnoesunlenguaje.blogspot.com.es/2014/11/netbeans-debugger-java.html Información obtenida de este enlace].</center></small>
  
 +
== Ejercicios UD2: Estructuras de selección y repetición. Excepciones ==
  
−
::<syntaxhighlight lang="java" line enclose="div" highlight="" >
+
* [[Programacion Ejercicios UD2 | Ejercicios UD2: Estructuras de selección y repetición. Excepciones]]
−
    public static void main(String[] args) {
 
−
        // TODO code application logic here
 
  
−
        float peso;
 
−
        byte edad=12;  // Si tenemos dudas de si 127 va a ser una edad alcanzable, mejor poner un short
 
−
        byte tempExterior=-45;
 
−
        byte tempInterior=13;
 
−
        double radioUniverso=13e97;
 
−
        float gastos=1443.14f;
 
−
        int poblacionChina=1325254589;  // Si queremos tener un margen mayor pondríamos un long
 
−
        char sexo='H';  // En programación, a los datos que pueden guardar solamente dos valores se les asigna un tipo boolean
 
−
        // float es una palabra reservada y no se puede utilizar como nombre de variable;
 
−
        float pesoTomate = 0.23f;
 
−
        char letraNif;
 
−
        String nif="11111111A";
 
  
−
        // Al ser variables locales (están definidas dentro del metodo main) las no inicializadas no tienen valor y por tanto no pueden visualizarse.
 
−
       
 
−
        System.out.println("Edad:" + edad);
 
−
        System.out.printf("Edad:%d años %n", edad);
 
  
−
        System.out.println("Temperatura exterior:" + tempExterior);
 
−
        System.out.printf("Temperatura exterior:%d ºC %n", tempExterior);
 
  
−
        System.out.println("Temperatura interior:" + tempInterior);
 
−
        System.out.printf("Temperatura interior:%d ºC %n", tempInterior);
 
−
       
 
−
        System.out.println("Radio Universo:" + radioUniverso);
 
−
        System.out.printf("Radio Universo:%,.2f %n", radioUniverso);  // Muestra la coma separando los miles y dos dígitos decimales
 
  
−
        System.out.println("Gastos:" + gastos);
 
−
        System.out.printf("Gastos: %,.2f Euros %n", gastos);
 
−
       
 
−
        System.out.println("Población en China:" + poblacionChina);
 
−
        System.out.printf("Población en China: %,d personas. %n", poblacionChina);
 
  
−
        System.out.println("Sexo:" + sexo);
 
−
        System.out.printf("Sexo: %C %n", sexo);  // C en maíscula pasa a letra a maiúscula
 
  
−
        System.out.println("Peso del tomate:" + pesoTomate);
 
−
        System.out.printf("Peso del tomate: %.2f Kilogramos %n" , pesoTomate);
 
  
−
        System.out.println("NIF:" + nif);
 
−
        System.out.printf("NIF:%s%n" , nif);
 
−
       
 
−
    }
 
  
−
</syntaxhighlight>
+
<br/>
 +
Página creada por [http://www.about.me/angeldfg Angel D. Fernández González]

Revisión actual del 12:20 25 nov 2017

Fuentes

  • Algunos de los ejercicios listados fueron obtenidos de las siguientes fuentes:


Recuerda

  • El código debe estar indentado (tabulado correctamente). Lo debe de hacer automáticamente el IDE Netbeans.
  • Cada vez que hay una apertura con llave ({) debe tener un cierre de llave correspondiente (}). Por lo tanto, si el IDE no lo pone automáticamente, escribirlo antes de empezar a implementar el código interior.
  • Java distingue mayúsculas de minúsculas. Una variable de nombre edad es diferente de otra de nombre Edad.
  • Respeta las reglas de nomenclatura de Clases, variables, constantes y métodos.
  • Todas las sentencias en Java deben acabar en punto y coma (;)

Ejercicios UD0: Uso de NetBeans

  • Crea un nuevo proyecto Java de nombre 'ProyectoJava' con una clase principal de nombre 'Principal' dentro del paquete 'mispaquetes'.
Modifica el método main para que al ejecutar la clase muestre tu nombre.
Compila y ejecuta la clase comprobando que funciona adecuadamente.


  • Cambia a la vista Archivos y comprueba que el bytecode fue generado y se encuentra en el directorio build.
Compila y ejecuta la clase desde una consola (terminal en Linux). Recuerda que para compilar una clase dentro de un paquete tienes que situarte en la carpeta del proyecto y el nombre de la clase a compilar tiene que ir precedido del nombre del paquete de la forma 'paquete/Clase.java'.
Utiliza la opción que nos da NetBeans de abrir una terminal dentro de su entorno (botón derecho => Herramientas => Open in terminal).
Ejecuta la clase compilada desde consola. Recuerda que en este caso, el nombre de la clase es paquete.Clase


  • Modifica desde Netbeans el nombre del paquete en la clase creada y cámbialo por mispaquetes2. ¿ Qué sucede ?
Haz lo necesario para subsanar el error. Recuerda utilizar la función Reestructurar de Netbeans.


  • Al hacer el paso anterior, cambiamos la clase Principal del proyecto (ahora está en otro paquete). Debemos modificar sus propiedades para que coja la nueva clase.
Edita la configuración del proyecto y cambia la clase Principal (si intentamos ejecutar el proyecto sin cambiar la clase, el IDE nos pedirá que escojamos la nueva clase a 'ejecutar' => realmente busca una clase con el método main y lo ejecuta).


  • Comprueba desde la vista de Archivos de Netbeans como quedan en build las carpetas de los paquetes creados. Haz uso de la opción 'Compilar y limpiar' de Netbeans para que borre las carpetas que ya no son necesarias.


  • Utiliza la función Reestructurar de Netbeans para cambiar el nombre del paquete a 'nuevos.paquetes'.
¿ Cual es el resultado ?. Cada paquete representa físicamente una carpeta a nivel de S.O. Podéis comprobarlo mirando la vista de 'Archivos' de Netbeans.


  • Cambia el nombre de la clase a ProyectoJava2 sin utilizar la reestructuración. ¿ Qué pasa ? ¿ Qué tendrías que hacer para que se pueda compilar la clase ?


  • Personalización del NetBeans:


  • Combinación de teclas útiles en Netbeans.
  • fori + Tab: Genera el código necesario para hacer un for.
  • iff + Tab: Genera los bloques if.
  • sout + Tab o soutv + Tab: Genera los System.out.println(“”).
  • sw + Tab: Genera el switch.
  • whilexp + Tab: Genera los bloques While.
  • Ctrl + Space: Completa el código que estamos escribiendo.
  • Alt + Insert: Agrega constructores, métodos accesores, propiedaes, overrides, etc...
  • Alt + Enter: Se usa sobre el texto subrayado para ver la sugerencia que nos hace el IDE cuando hay algún error de sintaxis.
  • Ctrl + R: Si lo hacemos sobre el identificador, renombra todas las ocurrencias.



Ejercicios UD1: Identificación de los elementos de un programa informático

Debugger

  • Podemos ver en la siguiente imagen el significado de cada botón cuando iniciamos una depuración de un programa.
Programacion debugger 1.jpg
Información obtenida de este enlace.

Ejercicios UD2: Estructuras de selección y repetición. Excepciones






Página creada por Angel D. Fernández González