UD 1: Elementos de un programa informático. JAVA.
Profesor: Néstor Martínez
Índice 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Programa y lenguajes de programación. P.O.O. El lenguaje JAVA. Estructura elemental de un programa Java. Entornos Integrados de Desarrollo. Variables. Tipos de datos simples. Declaración de variables. Asignación de variables. Listar variables. Algunas cuestiones sintácticas. Entrada y Salida elemental. Operadores y expresiones. Conversiones de tipos (CAST). Algunas funciones predefinidas. Bloques de instrucciones. Documentación JAVA. Consideraciones. Ejercicios.
1. Programa y lenguajes de programación.
¿Qué es un programa? Es una serie de órdenes o
instrucciones ordenadas con una finalidad concreta que realizan una función determinada. ¿Qué es un lenguaje de programación?
Lenguaje: conjunto de símbolos, caracteres y palabras
(léxico) y conjunto de reglas (sintaxis y semántica) que permiten agrupar los símbolos para formar las frases del lenguaje. De programación: Sirve para especificar algoritmos sobre un ordenador. Un programa se escribe como una secuencia de frases del lenguaje, con el objetivo de producir alguna acción o salida.
1. Programa y lenguajes de programación. ¿Qué es un algoritmo? Es un conjunto de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los
pasos sucesivos se llega a un estado final y se obtiene una solución.
1. Programa y lenguajes de programación. Tipos de lenguajes de programación: Lenguajes de bajo nivel. Lenguajes de medio nivel. (algunos autores) Lenguajes de alto nivel.
1. Programa y lenguajes de programación. Lenguajes de Bajo Nivel:
Lenguaje muy cercano a la máquina. Las instrucciones del lenguaje son las instrucciones del
microprocesador del ordenador. Difícil y costoso de programar. Cada máquina tiene su propio lenguaje.
Tipos: Lenguaje Máquina: Único lenguaje que entiende el ordenador, el
binario (secuencias de 0 y 1: 0110 1100 1111). Lenguaje Ensamblador: Códigos mnemotécnicos. Cada instrucción ensamblador equivale a una sola instrucción en lenguaje máquina.
Ejemplo: Ensamblador mov ax, 003
Código Máquina (Hex) B8 03 00
1. Programa y lenguajes de programación. Lenguajes de Medio Nivel: Lenguaje muy cercano al usuario, pero con características del lenguaje de
bajo nivel. También se acerca, en menor medida, al lenguaje máquina. Algunos autores no diferencian este nivel, y a estos lenguajes los clasifican dentro de los lenguajes de alto nivel. Mayor independencia de la máquina. Mismo programa en distintas máquinas. Programación más fácil y menos errores que los lenguajes de bajo nivel. No es difícil de programar, pero sí que es más difícil que programar que un lenguaje de alto nivel.
¿Cuál? El único que cumple todas estas características es el lenguaje C. Tiene características de lenguaje de alto nivel (en su mayoría) pero algunas características de lenguaje de bajo nivel. Por ejemplo: tiene punteros a memoria (*a) y direcciones de memoria (&b).
1. Programa y lenguajes de programación.
Lenguajes de Medio Nivel: (continuación) Ejemplo
#include <stdio.h> int main() { int a=0; //Declaración de variable entera de tipo entero int *puntero; //Declaración de variable puntero de tipo entero puntero = &a; //Asignación de la dirección memoria de a printf("El valor de a es: %d. \nEl valor de *puntero es: %d. \n",a,*puntero); printf("La direccion de memoria de *puntero es: %p",puntero); printf(“El valor de a es: %d", *puntero); return 0; }
1. Programa y lenguajes de programación. Lenguajes de Alto Nivel: Lenguajes próximos al lenguaje humano. Mayor independencia de la máquina. Mismo programa en distintas
máquinas. Programación más fácil y menos errores. Instrucciones más flexibles y potentes.
Ejemplos: Java, C++, C#...
1. Programa y lenguajes de programación. Actividad 1: Haz un estudio sobre los lenguajes de programación usados en la actualidad, y comenta lo siguiente: Características de cada uno de ellos. Proyectos grandes y que estén activos en la actualidad, en los que se
basa dicho lenguaje. Estadísticas sobre dichos lenguajes (su uso en la actualidad).
Actividad 2: Explica las diferentes versiones/variantes de la que consta la tecnología Java (JSE, JEE y JME). Actividad 3: ¿Qué es JDK y JRE? ¿Qué diferencias hay? ¿Cuál crees que debo usar para Programación?
1. Programa y lenguajes de programación. ¿Qué es el código fuente? Es el que escribe el
programador en un lenguaje de programación que luego lo compila a código máquina. ¿Qué es el compilar? Consiste en transformar el lenguaje inteligible por la máquina a lenguaje inteligible por el programador. El código fuente está escrito en un lenguaje de programación y el compilador es un programa que se encarga de transformar el código fuente en código máquina. Cada lenguaje tiene su propio compilador.
1. Programa y lenguajes de programación. JAVA
genera un lenguaje máquina intermedio interpretable por una máquina virtual instalada en el ordenador donde se va a ejecutar. Una máquina virtual es una máquina ficticia que traduce las instrucciones máquina ficticias en instrucciones para la máquina real. Compiladores: convierten lenguajes de alto nivel a código
máquina. Realizan primero la traducción completa, y si no hay errores se genera el código máquina. Intérpretes: convierten lenguajes de alto nivel a código máquina. Se traduce y ejecuta instrucción a instrucción.
2. Programación Orientada a Objetos. El lenguaje JAVA. ¿Por qué Java? Los lenguajes de programación C y Fortran se han
utilizado para diseñar algunos de los sistemas mas complejos en lenguajes de programación estructurada, creciendo hasta formar complicados procedimientos. De ahí provienen términos como "código de espagueti" o "canguros" referentes a programas con múltiples saltos y un control de flujo difícilmente trazable. No solo se necesitaba un lenguaje de programación para tratar esta complejidad, sino un nuevo estilo de programación. Este cambio de paradigma de la programación estructurada a la programación orientada a objetos, comenzó hace 30 años con un lenguaje llamado Simula67.
2. Programación Orientada a Objetos. El lenguaje JAVA. ¿Por qué Java? (continuación) El lenguaje C++ fue un intento de tomar estos
principios y emplearlos dentro de las restricciones de C. Todos los compiladores de C++ eran capaces de compilar programas de C sin clases, lo que fue su punto débil y no gustó. Así Java utiliza convenciones casi idénticas para declaración de variables, paso de parámetros, y demás, pero solo considera las partes de C++ que no estaban ya en C.
2. Programación Orientada a Objetos. El lenguaje JAVA. Comienzos… Java fue diseñado en 1990 por James Gosling, de Sun
Microsystems, como software para dispositivos electrónicos de consumo. Curiosamente, todo este lenguaje fue diseñado antes de que diese comienzo la era World Wide Web, puesto que fue diseñado para dispositivos electrónicos como calculadoras, microondas y la televisión interactiva.
2. Programación Orientada a Objetos. El lenguaje JAVA. Tres de las principales razones que llevaron a crear Java son: 1.
2.
3.
Creciente necesidad de interfaces mucho mas cómodas e intuitivas que los sistemas de ventanas que proliferaban hasta el momento. Fiabilidad del código y facilidad de desarrollo. Gosling observó que muchas de las características que ofrecían C o C++ aumentaban de forma alarmante el gran coste de pruebas y depuración. Por ello en los sus ratos libres creó un lenguaje de programación donde intentaba solucionar los fallos que encontraba en C++. Enorme diversidad de controladores electrónicos. Java permite escribir un código común para todos los dispositivos/máquinas.
2. Programación Orientada a Objetos. El lenguaje JAVA. Basándose en el conocimiento y estudio de gran cantidad de lenguajes, este grupo decidió recoger las características esenciales que debía tener un lenguaje de programación moderno y potente, pero eliminando todas aquellas funciones que no eran absolutamente imprescindibles.
2. Programación Orientada a Objetos. El lenguaje JAVA. Primeros Proyectos en que se aplicó Java.
El proyecto Green fue el primero en el que se aplicó
Java, y consistía en un sistema de control completo de los aparatos electrónicos y el entorno de un hogar. Con este fin se construyó un computador experimental denominado *7 (Star Seven). El sistema presentaba una interfaz basada en la representación de la casa de forma animada y el control se llevaba a cabo mediante una pantalla sensible al tacto. En el sistema aparecía ya Duke, la actual mascota de Java.
2. Programación Orientada a Objetos. El lenguaje JAVA. Primeros Proyectos en que se aplicó Java. (continuación)
Más tarde Java se aplicó a otro proyecto denominado VOD
(Video On Demand) en el que se empleaba como interfaz para la televisión interactiva que se pensaba iba a ser el principal campo de aplicación de Java. Ninguno de estos proyectos se convirtió nunca en un sistema comercial, pero fueron desarrollados enteramente en un Java primitivo. Una vez que en Sun se dieron cuenta de que a corto plazo la televisión interactiva no iba a ser un gran éxito, instaron a FirstPerson a desarrollar nuevas estrategias que produjeran beneficios. Entre ellas se encontraba la aplicación de Java a Internet, la cual no se consideró productiva en ese momento.
2. Programación Orientada a Objetos. El lenguaje JAVA. Resurgimiento de Java. Aunque muchas de las fuentes consultadas señalan que Java no llegó a caer en un olvido, lo cierto es que tuvo que ser Bill Joy (cofundador de Sun y uno de los desarrolladores principales del sistema operativo Unix de Berckley) el que sacó a Java del coma en que estaba inmerso. Así Java fue presentado en sociedad en agosto de 1995, como competencia a Microsoft en el mundo de desarrollo Software.
2. Programación Orientada a Objetos. El lenguaje JAVA. Resurgimiento de Java. Razones: Java es un lenguaje orientado a objetos. Es un lenguaje sencillo, aunque sin duda potente. La ejecución del código Java es segura y fiable: Los programas NO acceden directamente a la memoria del computador. Es totalmente multiplataforma.
2. Programación Orientada a Objetos. El lenguaje JAVA. Futuro de Java.
Existen muchas criticas a Java debido a su lenta velocidad de
ejecución, aproximadamente unas 20 veces mas lento que un programa en lenguaje C. Sun está trabajando intensamente en crear versiones de Java con una velocidad mayor. El problema fundamental de Java es que utiliza una representación intermedia denominada código de byte para solventar los problemas de portabilidad. Los códigos de byte posteriormente se tendrán que transformar en código maquina en cada maquina en que son utilizados, lo que enlentece considerablemente el proceso de ejecución. La solución que se deriva de esto parece bastante obvia: fabricar computadores capaces de comprender directamente los códigos de byte. Estas serian unas maquinas que utilizaran Java como sistema operativo y que no requerirían en principio de disco duro porque obtendrían sus recursos de la red.
2. Programación Orientada a Objetos. El lenguaje JAVA. Futuro de Java. (continuación) Los computadores que utilizan Java como sistema operativo se les
llama Network Computer, WebPC o WebTop. La primera gran empresa que ha apostado por este tipo de maquinas ha sido Oracle, que en enero de 1996 presentó en Japón su primer NC (Network Computer), basado en un procesador RISC con 8 Megabytes de RAM. Tras Oracle, han sido compañías del tamaño de Sun, Apple e IBM las que han anunciado desarrollos similares. La principal empresa en el mundo del software, Microsoft, que en los comienzos de Java no estaba a favor de su utilización, ha licenciado Java, lo ha incluido en Internet Explorer (versión 3.0 y posteriores), y ha lanzado un entorno de desarrollo para Java, que se denomina Visual J++.
2. Programación Orientada a Objetos. El lenguaje JAVA. Características de Java. Potente.
Orientación a objetos Riqueza semántica Robusto Descubrimiento de gran parte de los errores en tiempo de complicación. Garbagge Collector. Modelo de objeto rico Clases abstractas a partir de las cuales partir y extender de funcionalidades extra.
Simple.
Fácil aprendizaje Completado con utilidades JDK incluye: compilador, debugger, visualizador de applets, etc.
Interactivo y orientado a red (Ej. Los Applets dan animación a la Web.) Seguridad. Diseñado para no realizar llamadas a funciones globales ni acceder a recursos arbitrarios del sistema. Basado en C++. Gestión de Entrada/Salida. Permiten tratar los archivos, sockets, teclado y monitor como flujos de datos.
2. Programación Orientada a Objetos. El lenguaje JAVA. Características de Java. (continuación) Diferentes tipos de aplicaciones En Java podemos crear los siguientes tipos de aplicaciones: Aplicaciones: Se ejecutan sin necesidad de un navegador. Applets: Se pueden descargar de Internet y se observan en un navegador. JavaBeans: Componentes software Java, que se puedan incorporar gráficamente a otros componentes. JavaScript: Conjunto del lenguaje Java que puede codificarse directamente sobre cualquier documento HTML. Servlets: Módulos que permiten sustituir o utilizar el lenguaje Java en lugar de programas CGI (Common Gateway Interface) a la hora de dotar de interactividad a las paginas Web.
2. Programación Orientada a Objetos. El lenguaje JAVA. Características de Java. (continuación) Basado en C++. Java fue desarrollado basándose en C++, pero eliminando rasgos del mismo poco empleados, optándose por una codificación comprensible. Básicamente, encontramos las siguientes diferencias con C++:
Java no soporta los tipos union ni punteros. No soporta typedef ni #define. Se distingue por su forma de manejar ciertos operadores y no permite una sobrecarga de operadores. No soporta herencia múltiple. Java maneja argumentos en la línea de comandos de forma diversa a como lo hacen C o C++. Tiene una clase String que es parte del paquete java.lang y se diferencia de la matriz de caracteres terminada con un nulo que usan C y C++. Java cuenta con un sistema automático para asignar y liberar memoria (garbagge collector), con lo que no es necesario utilizar las funciones previstas con este fin en C y C++.
2. Programación Orientada a Objetos. El lenguaje JAVA. Versiones y distribuciones de Java: JSE: Java Standard Edition. Orientado
al desarrollo de aplicaciones cliente/servidor. No incluye soporte a tecnologías para internet.
JEE: Java Enterprise Edition. Orientado a empresas y a la integración entre
sistemas. Incluye soporte a tecnologías para internet.
JME: Java Micro Edition. Orientado
a pequeños (teléfonos, tablets, etc.).
dispositivos
móviles
2. Programaciรณn Orientada a Objetos. El lenguaje JAVA. Versiones y distribuciones de Java:
2. Programación Orientada a Objetos. El lenguaje JAVA. Versiones y distribuciones de Java: EVOLUCIÓN JSE
JDK 1.0 (1996): primer lanzamiento del lenguaje Java. JDK 1.1 (1997): mejora de la versión anterior. J2SE 1.2 (1998): esta y las siguientes versiones fueron recogidas bajo la
denominación Java 2 y el nombre "J2SE" (Java 2 Platform, Standard Edition), reemplazó a JDK para distinguir la plataforma base de J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2 Platform, Micro Edition). Incluyó distintas mejoras. J2SE 1.3 (2000): mejora de la versión anterior. J2SE 1.4 (2002): mejora de la versión anterior. J2SE 5.0 (2004): originalmente numerada 1.5, esta notación aun es usada en ocasiones. Mejora de la versión anterior. Java SE 6 (2006): en esta versión, Sun cambió el nombre "J2SE" por Java SE y elimino el ".0" del numero de versión. Mejora de la versión anterior. Java SE 7 (2011): nueva versión que mejora la anterior. Java SE 8 (2014): nueva versión que mejora la anterior.
2. Programación Orientada a Objetos. El lenguaje JAVA. El lenguaje Java es a la vez compilado e interpretado. Con el compilador se convierte el código fuente que
reside en archivos cuya extensión es .java, a un conjunto de instrucciones que recibe el nombre de bytecodes que se guardan en un archivo cuya extensión es .class. Estas instrucciones son independientes del tipo de computador. El interprete ejecuta cada una de estas instrucciones en un computador especifico (Windows, Macintosh, etc). Solamente es necesario, por tanto, compilar una vez el programa, pero se interpreta cada vez que se ejecuta en un computador, sin necesidad de tener el código fuente (a diferencia de otros lenguajes de programación interpretados).
2. Programación Orientada a Objetos. El lenguaje JAVA. Cada intérprete Java es una implementación de la
Maquina Virtual Java (JVM). Los bytecodes posibilitan el objetivo de "write once, run anywhere", de escribir el programa una vez y que se pueda ejecutar en cualquier plataforma que disponga de una implementación de la JVM. Por ejemplo, el mismo programa Java puede correr en Windows 98, Solaris, Macintosh, etc. Java es, por tanto, algo más que un lenguaje, ya que la palabra Java se refiere a dos cosas inseparables: el lenguaje que nos sirve para crear programas y la Maquina Virtual Java que sirve para ejecutarlos.
2. Programación Orientada a Objetos. El lenguaje JAVA. Maquina Virtual Java (JVM). Entorno en el que se ejecutan los programas Java, su misión principal es la de garantizar la portabilidad de las aplicaciones Java. Define esencialmente un computador abstracto y especifica las instrucciones (bytecodes) que este computador puede ejecutar. El interprete Java especifico ejecuta las instrucciones que se guardan en los archivos cuya extension es ‘.class’.
2. Programación Orientada a Objetos. El lenguaje JAVA. Los tipos de programas más comunes que se pueden
hacer con Java son: los applets (se ejecutan en el navegador de la maquina cliente) y las aplicaciones (programas que se ejecutan directamente en la JVM). Otro tipo especial de programa se denomina servlet que es similar a los applets pero se ejecutan en los servidores Java. La API de Java es muy rica, está formada un conjunto de paquetes de clases que le proporcionan una gran funcionalidad.
2. Programación Orientada a Objetos. El lenguaje JAVA. Modelo de programación más utilizado actualmente. La clase es el elemento central de un programa OO.
Determina el comportamiento y características propias de sus componentes. Al caso particular (instancia) de una clase se le denomina objeto. Un programa se entiende como un conjunto de objetos que interactúan entre sí. Principal ventaja POO -> facilita el reúso del código ya realizado.
2. Programación Orientada a Objetos. El lenguaje JAVA. JAVA es un lenguaje OO. (año 1991). JAVA es multiplataforma (independencia de la
máquina donde se va a ejecutar). JAVA hace uso de una Máquina Virtual Java (JVM). Procedimiento necesario para la ejecución de un programa en JAVA:
JAVA es un compilador (compila a bytecode (código
intermedio más abstracto que el código máquina), código JVM) y a la vez un intérprete (se encarga de ejecutar ese código intermedio en la máquina real).
2. Programación Orientada a Objetos. El lenguaje JAVA.
JDK (Java Development Kit): contiene aplicaciones de
consola y herramientas de compilación, documentación y depuración. Incluye el JRE (Java Runtime Enviroment) que consta de los mínimos necesarios para ejecutar una aplicación JAVA (JVM y librerías de clases). Herramientas del JDK: java: es la máquina virtual de Java. javac: es el compilador de Java. javadoc: es el generador de documentación.
Ejemplo: java –version
Actividad: Busca información sobre el comando javadoc.
2. Programación Orientada a Objetos. El lenguaje JAVA. Ejemplo javadoc: (wikipedia) public class Libro{ String titulo;
Copia este código en una clase Java, y ejecuta el comando
‘javadoc’ de dicha clase, verás el HTML que se genera.
2. Programación Orientada a Objetos. El lenguaje JAVA. IMPORTANTE: Una vez instalado el JDK, hay que
modificar los valores de dos variables de entorno:
Variable PATH. Apunta donde está situado el directorio
‘/bin’ del JDK. Variable CLASSPATH. Apunta donde están situadas las clases del JDK.
$ echo $CLASSPATH /etc/enviroment y .bashrc y /usr/bin/java (donde está instalado JAVA).
ESTO SE HACÍA ANTES, AHORA YA SE CONFIGURA TODO AUTOMÁTICAMENTE.
2. Programación Orientada a Objetos. El lenguaje JAVA. Conceptos Básicos. Objetos:
Un objeto del mundo real es cualquier cosa que
vemos a nuestro alrededor: un árbol, una persona, un coche… Ejemplo: Una computadora está compuesta internamente por varios componentes: la placa base, el chip del procesador, un disco duro, una tarjeta de video, y otras partes más. El trabajo en conjunto de todos estos componentes hace operar a una computadora. Se comunican entre ellos a través de mensajes. No nos interesa qué es lo que hace internamente cada uno de estos componentes, sino qué hace (qué funciones nos brinda) que nos pueda ser útil.
2. Programación Orientada a Objetos. El lenguaje JAVA. Conceptos Básicos. Objetos: ¿Qué tiene que ver esto con la programación? La programación orientada a objetos trabaja de esta
manera. Todo el programa está construido en base a diferentes componentes (Objetos), cada uno tiene un rol/papel especifico en el programa y todos los componentes pueden comunicarse entre ellos de formas predefinidas. Todo objeto del mundo real tiene 2 componentes: características y comportamiento.
2. Programación Orientada a Objetos. El lenguaje JAVA. Conceptos Básicos. Objetos: (continuación)
Por ejemplo, los automóviles tienen características
(marca, modelo, color, velocidad máxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.). Los Objetos de Software, al igual que los objetos del mundo real, también tienen características y comportamientos. Un objeto de software mantiene sus características en una o mas "variables", e implementa su comportamiento con "métodos". Un método es una función o subrutina asociada a un objeto.
2. Programación Orientada a Objetos. El lenguaje JAVA. Conceptos Básicos. Objetos: (continuación) Para asimilar estas ideas, imaginemos que hay estacionado en la puerta de AulaCampus un AUDI A4 color negro que corre hasta 260 km/h. Si pasamos ese objeto del mundo real al mundo del software, tendremos un objeto Automóvil con sus características predeterminadas:
Marca = Audi Modelo = A4 Color = Negro Velocidad Máxima = 260 km/h Cuando a las características del objeto le ponemos valores decimos que el objeto tiene estados.
Las variables almacenan los estados de un objeto en un
determinado momento.
Definición teórica: Un objeto es una unidad de código
compuesto de variables y métodos relacionados.
2. Programación Orientada a Objetos. El lenguaje JAVA. Conceptos Básicos.
Clases: En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro teléfono móvil es solo uno de los miles que hay en el mundo. Si hablamos en términos de la programación orientada a objetos, podemos decir que nuestro objeto móvil es una instancia de una clase conocida como “móvil". Los móviles tienen características (marca, modelo, sistema operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar mensajes multimedia, transmisión de datos, etc.).
2. Programación Orientada a Objetos. El lenguaje JAVA. Conceptos Básicos.
Clases: (continuación) Cuando se fabrican los móviles, los fabricantes aprovechan el hecho de que los móviles comparten esas características comunes y construyen modelos o plantillas comunes, para que a partir de esas se puedan crear muchos equipos móviles del mismo modelo. A ese modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a partir de ella la llamamos OBJETOS. Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo tipo y mismas características, pero cada uno de ellos será UNICO.
2. Programaciรณn Orientada a Objetos. El lenguaje JAVA. Conceptos Bรกsicos. Clases: (continuaciรณn)
2. Programación Orientada a Objetos. El lenguaje JAVA. Conceptos Básicos. Clases: (continuación) Definición teórica: La clase es un modelo o prototipo
que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características. Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad NO existe diferencia entre un objeto y una instancia.
3. Estructura elemental de un programa Java. El programa más sencillo en JAVA: un único bloque
principal llamado main que contiene, entre llaves, la secuencia de instrucciones a realizar. Ejemplo: public class HolaMundo { public static void main (String args []) { System.out.println (“Hola Mundo…!!!”); } }
3. Estructura elemental de un programa Java. Particularidades del bloque principal main: Es público (public). Es estático (static). No devuelve ningún valor (void). Admite una serie de parámetros (String args []).
3. Estructura elemental de un programa Java. Recuerda: 1. Usa System.out.println() para escribir un texto en pantalla. 2. Todo método de Java lleva paréntesis. 3. Toda sentencia termina en punto y coma. 4. ‘\n’ hace que el cursor salte al siguiente renglón. 5. Java es CASE SENSITIVE. Distingue mayúsculas de minúsculas.
3. Estructura elemental de un programa Java. Actividad 1: Modifica el ‘HolaMundo.java’ usando el
salto de línea, para mostrar tu nombre en una línea y tu apellido en otra.
Actividad 2: Modifica el programa anterior para que
escriba el nombre de 2 personas en dos líneas diferentes de la pantalla.
4. Entornos Integrados de Desarrollo. Entorno Integrado de Desarrollo (IDE) es una
herramienta con la cual poder desarrollar y probar proyectos en un lenguaje determinado. Importante: para un uso correcto del IDE hay que configurar la ruta del JDK, las rutas de las bibliotecas y demás recursos (actualmente de normal vienen configurados ya correctamente), sino el IDE nunca podrá ejecutar ni compilar programas. $ sudo apt-get install openjdk-7-jdk
Otra forma: (hace falta tener el aptitude instalado) $ sudo aptitude install openjdk-7-jdk
4. Entornos Integrados de Desarrollo. TAMBIÉN PUEDES USAR EL CENTRO DE INSTALACIÓN DE SOFTWARE PARA INSTALAR CUALQUIER APLICACIÓN EN LINUX. Ahora desde el terminal de Linux, lanza para ver qué
versión del JDK tienes instalada:
$ java -version
4. Entornos Integrados de Desarrollo. Te tiene que aparecer que tienes instalada y en
funcionamiento la versión 1.7.
Si por alguna de aquellas, después de instalar la versión 7
de Java, al ejecutar ‘java -version’ te dijera que tienes la versión 1.6, deberás de ejecutar el siguiente comando desde el terminal: $ sudo /usr/sbin/update-alternatives --config java Y nos aparecerá todas las versiones java que tenemos instaladas en nuestro SO Ubuntu. Seleccionamos la opción que contenga Java 7.
4. Entornos Integrados de Desarrollo. Para empezar a programar en JAVA podríamos usar el IDE Geany
(muy liviano e intuitivo, e instalación sencilla), pero lo vamos a hacer todo con editor de textos. TODO EL CURSO EXCEPTO LA 3ª EV. VAMOS A USAR ÚNICAMENTE LA CONSOLA O TERMINAL, NINGÚN IDE. $ sudo apt-get install geany
Existen mas IDEs para trabajar con JAVA, y más potentes: Eclipse.
Desarrollado primeramente por IBM, aunque actualmente es libre mantenido por la Fundación Eclipse (www.eclipse.org). Puede ser usado para otros lenguajes de programación instalando unos plugins. Para proyectos más serios.
NetBeans.
Es libre. Para proyectos más serios.
Cuestión: ¿Es necesario un IDE para compilar y ejecutar JAVA?
5. Variables. Una variable se puede representar como un casillero
en la memoria que guarda un valor. Variable: Es una zona de memoria donde se puede almacenar información del tipo que desee el programador. Toda variable tiene un nombre o identificador, un tipo y un valor.
5. Variables. El nombre o identificador de la variable debe de
cumplir ciertas reglas:
Deben empezar con una letra del alfabeto inglés o guión bajo. Los siguientes caracteres pueden ser dígitos, letras o guión
bajo. Evita las letras con tildes y ‘ñ’ (usa en su lugar ‘ny’). No se deben usar palabras reservadas, éstas son aquellas propias del lenguaje Java como:
public, void, static, boolean, float, int, class, true, false, null, for, if, else, extends …
El estándar de Java sugiere utilizar comenzar en minúscula
e indicar cambio de palabra con mayúscula. Ejemplo:
nuevaVariable cantPersonas unNombreDeVariableMuyLargo
5. Variables. Declaración de una variable: contiene el identificador de la
variable y el tipo al que pertenece.
TipoDeDatos IdentificadorVálido ;
Tipo al que pertenece una variable: Define el conjunto de valores que puede adquirir dicha variable. Y las operaciones que se pueden realizar con ella. Asignación: da valores a las variables o los reemplaza por otros. Identificador = Expresión; Una expresión está formada por operandos, que pueden ser
constantes, variables o subexpresiones, y operadores, y tiene un tipo asignado. En una instrucción de asignación, los tipos de la variable y la expresión deben de ser compatibles. Ejemplos: int var1, var2; char ch1, ch2='u'; float f1=2.0; f2=3.0+f1;
5. Variables. Actividad: Copia los siguientes nombres de variables e
indica al lado si son válidos o no. Realízalo en Linux.
nombre$ape1
5. Variables.
Solución Actividad: Copia los siguientes nombres de
variables e indica al lado si son válidos o no. Realízalo en Linux.
nombre$ape1
S
S
S
S
S
N****
S
S
N***
N**
S*
S
S
*: No recomendado. Usa ‘ny’ en vez de la ‘ñ’. En versiones anteriores de Java, la ‘ñ’ no
la permitía, y muchos lenguajes de programación, no la permiten. **: No es válido ya que el id empieza por un número. Debe empezar por una letra del alfabeto inglés o ‘_’ . ***: No es válido ya que ‘Class’ es una palabra reservada del lenguaje Java. ****: No es válido ya que el carácter ‘#’ no está permitido para los identificadores de las variables.
5. Variables. Las variables miembro de una clase (las veremos más
adelante) se inicializan por defecto, mientras las variables locales (son las que vamos a utilizar desde esta unidad didáctica) NO se inicializan por defecto.
Las variables numéricas se inicializan a cero, los caracteres a ‘0’ y las
referencias a objetos y cadenas a ‘null’.
En Java las variables no pueden declararse fuera de una clase. public class suma {
}
static int n1=50; //variable miembro de la clase public static void main (String args[]){ int n2=30; //variables locales }
Visibilidad de las variables: por regla general, en Java, todas
las variables que están dentro de un bloque (entre { y }) son visibles y existen dentro de dicho bloque.
5. Variables. Las variables miembro de una clase (las veremos más
adelante) son las variables de una clase en concreto. Ejemplo: public class suma {
}
int n1 = 50; //variable miembro de la clase public static void main (String args[]){ int n2 = 30; //variables locales }
En cambio las variables locales (son las que vamos a utilizar
desde esta unidad didáctica) son aquellas que se usan de una manera local a un bloque, método, ... Para nosotros, de momento, van a ser aquellas que usemos en los métodos: public class suma {
}
int n1=50; //variable miembro de la clase public static void main (String args[]){ int n2 = 30; //variables locales }
5. Variables.
(que es el cero ‘0’)
6. Tipos de datos simples. Es el tipo de información que puede almacenar
una variable.
Java dispone nativamente de 8 tipos de datos los cuales
los podemos agrupar en 4 categorías:
6. Tipos de datos simples.
6. Tipos de datos simples. Para las cadenas de texto (conjuntos de caracteres),
usaremos un tipo de datos que NO es un tipo de datos simple. Es el tipo de datos String. Y el valor que queramos se pone entre comillas dobles “”. Un ejemplo de un String es el siguiente: String nombre = “Néstor Martínez”;
6. Tipos de datos simples. Números en coma flotante: Basado en la notación científica, para representar números muy grandes o muy pequeños. Un número en coma flotante tiene tres partes: Signo: indica si el número es positivo o negativo. Mantisa: representa la magnitud del número. Exponente:
fraccionaria.
indica el desplazamiento de la coma
6. Tipos de datos simples. Números en coma flotante: (continuación) Los números decimales en coma flotante se normalizan,
desplazando la coma fraccionaria de manera que la parte entera del número siempre valga cero.
No es necesario representar la base del número, ya que está
implícita en el formato (10x ,donde 10 es la base del número (decimal ya que es 10) y donde la x indica el número de posiciones a desplazar). Dado que la parte entera del un número normalizado siempre es cero, tampoco es necesario representarla:
6. Tipos de datos simples. Datos enteros: Se usan para representar números enteros con signo, pero SIN DECIMALES. Hay cuatro tipos: byte, short, int y long.
Las comas NO son decimales, es para separar de tres
en tres cifras.
6. Tipos de datos simples. Datos en coma flotante: Se utilizan para representar números reales (CON DECIMALES). Existen dos tipos float y double. float:
utilizado para representar los números en precisión simple. double: utilizado para representar los números en precisión doble.
6. Tipos de datos simples. Datos caracteres El tipo de dato char se usa para almacenar caracteres Unicode simples. Debido a que el conjunto de caracteres Unicode se compone de valores de 16 bits, el tipo de datos char se almacena en un entero sin signo de 16 bits. Además de los tipos de datos nativos existe una gran variedad de clases destinadas a la representación de diversos tipos de información. Una de los más utilizados es el tipo de dato String que representa las cadenas de caracteres.
6. Tipos de datos simples. Datos booleanos El tipo de datos boolean sólo acepta dos posibles valores: true o false. Es utilizado para la creación de variables de control.
7. Declaración de variables. Para
poder utilizar una variable debemos declararla antes. Es necesario “avisarle” a Java qué variables vamos a usar, para este proceso se requiere especificar el tipo de dato, nombre o id y opcionalmente un valor inicial. tipoDato nombreVariable = valorVariable;
Ejemplos: int i; char letra=’a’, opc; //aquí estamos declarando dos variables letra y opc. float num, res=7.5; boolean existe= false;
7. Declaración de variables. En una misma línea puedo declarar varias variables
del mismo tipo (nunca diferente) separadas por una coma ( , ), a algunas darles valor y a otras no. Ejemplo:
int a, b; //Declaro dos variables de tipo enteras. Equivalente es esto: int a; int b; double c, d=20; //Declaro dos variables de tipo doble, c no tiene valor y d vale 20. Equivalente es esto: double c; double d=20; double a, char c; //INCORRECTO, en una misma línea sólo pueden haber datos del mismo tipo.
8. Asignación de variables. Es el proceso de darle un valor a una variable, el mismo
puede ser asignado al momento de la declaración o posteriormente usando el signo de igual.
Es importante aclarar que a la hora de asignar un carácter
(tipo char), el valor debe estar entre comillas simples (‘z‘). Y al asignar un float debemos terminar el numero con una ‘f’ (3.1416f), si la omitimos el compilador entenderá que estamos asignando un double. Ejemplos:
int i = 7; double numDouble = 3.1416; float numFloat =3.1416f; char opc= ‘z’;
9. Listar variables. La sentencia System.out.println(), se puede usar para desplegar el contenido de las variables. ď&#x201A;&#x2014; Ejemplo:
9. Listar variables. A diferencia de C en Java NO es necesario la
conversión de tipos de datos a la hora de mostrarlos.
Como se puede apreciar en la línea 9, al invocar el
método, se debe pasar como parámetro el texto entre comillas (“ ”), más el nombre de las variables a mostrar.
El símbolo de más ( + ) es utilizado para
concatenar cadenas y variables.
Actividad Tipos de datos simples.
Actividad: Investiga sobre el juego de caracteres Unicode y
ASCII. Utilización de tipos de datos:
Actividad Tipos de datos simples. Solución actividad: Diferencia entre el juego de caracteres
Unicode y ASCII.
ASCII es un ordenador de codificación sistema basado en el
alfabeto latino. Se utiliza principalmente en inglés moderno y en otros idiomas de Europa occidental.
Unicode permite a una computadora implementar un
entre lenguajes, conversión de texto multiplataforma y procesamiento.
10. Algunas cuestiones sintácticas. Las palabras que se usan en un programa son identificadores y
palabras reservadas. Identificadores: son nombres que el programador da a variables, métodos y clases. Debe comenzar por una letra o guion bajo ( _ ) y a continuación cualquier combinación de letras, números, el carácter subrayado _ , y el signo de dólar $. Las palabras reservadas tienen un significado fijo en el lenguaje de programación y NO se pueden usar como identificadores.
10. Algunas cuestiones sintácticas. La documentación necesaria para explicar las diferentes partes que componen un programa se puede incluir en el mismo a través de comentarios. Hay distintas maneras diferentes de poner comentarios en Java: Se pueden utilizar los símbolos /* para abrir comentario y */ para cerrarlo. También se puede utilizar //, que hace que el compilador interprete todo lo que resta de la línea como comentario.
Por ejemplo:
public class Hola { public static void main (String args[]) { /* Ahora va el saludo */ System.out.println ("Hola a todos"); } } O bien: public class Hola { public static void main (String args[]) { // Ahora va el saludo System.out.println ("Hola a todos"); } }
10. Algunas cuestiones sintácticas. En Java existen tres tipos de comentarios: Comentario de párrafo. /* Esto es un comentario que puede tener mas de una línea */
Comentario de línea. // Esto sirve para comentar una única línea
Comentario de documentación (javadoc). /** Esto además de ser un comentario sirve para que el programa javadoc documente nuestro programa automáticamente */
Se puede leer más en http://www.upct.es/~orientap/ConvencionesCodigoJava.pdf
10. Algunas cuestiones sintácticas. En Java existen caracteres especiales que tienen un papel de separadores. Son los siguientes: Paréntesis () : Contiene listas de parámetros en la definición y llamada a un método. Llaves {} : Sirven para englobar bloques de código y para valores iniciales de vectores. Corchetes [ ]: Sirven para la declaración de vectores y para hacer referencias a elementos de los mismos. Punto y coma ; : Separador de instrucciones. Coma , : Separador de identificadores del mismo tipo en una declaración de variables, separación de argumentos/parámetros en definición de métodos. Punto . : Separador de nombres de paquetes de subpaquetes y clases y para referenciar elementos de un objeto.
11. Entrada y Salida elemental. Vamos a usar la clase Scanner que deriva del paquete java.util, la cual sirve para recuperar datos del teclado. Se inicializa así: Entrada estándar de Java Scanner entrada = new Scanner(System.in); ó Scanner entrada = new Scanner(String); Los métodos más interesantes y que vamos a usar de esta clase Scanner son: nextByte(): Lee un tipo de dato byte y lo devuelve para ser almacenado en alguna variable. nextDouble(): Lee un tipo de dato double y lo devuelve para ser almacenado en alguna variable. nextFloat(): Lee un tipo de dato float y lo devuelve para ser almacenado en alguna variable. nextInt(): Lee un tipo de dato int y lo devuelve para ser almacenado en alguna variable. next(): Lee un tipo de dato String y lo devuelve para ser almacenado en alguna variable. Sólo lee un token o palabra. Lee hasta que encuentra el delimitador espacio en blanco. nextLine(): Lee un tipo de dato String y lo devuelve para ser almacenado en alguna variable. Lee una línea entera (lee hasta que encuentra un \n). hasNext(): Devuelve true si hay elementos por leer en la entrada estándar. useDelimitier(): Por defecto considera cada palabra hasta que encuentra el delimitador espacio en blanco. Con esta función podemos cambiar dicho delimitador por cualquier otro.
11. Entrada y Salida elemental. Esta clase Scanner contiene muchos más métodos que
podemos usar. Para saber más sobre ella consulta la API de dicha clase aquí.
11. Entrada y Salida elemental.
Para poder utilizar la clase Scanner se pondrá al principio de la clase
esta instrucción especial (para importar la librería): import java.util.*; //Importa todas las clases del paquete util O import java.util.Scanner; //Importa solo la clase Scanner
Ejemplo 1:
11. Entrada y Salida elemental. ď&#x201A;&#x2014; Actividad: Realiza un programa donde pidas al
usuario su nombre, edad y altura, y al final le muestres un mensaje como ĂŠste: Los datos ingresados fueron: Nombre: nombreUsuario Edad: edadUsuario Altura: alturaUsuario
11. Entrada y Salida elemental. ď&#x201A;&#x2014; SoluciĂłn actividad:
11. Entrada y Salida elemental. Solución actividad: ACLARACIONES En la línea 7 del ejemplo se esta instanciando un objeto de la clase Scanner, esto se limita a definir una variable con tipo de dato Scanner y con el uso del operador new (destinado a la reserva dinámica de memoria), se invoca al constructor de la clase (lo veremos en temas posteriores). En este caso se le pasa como parámetro el archivo de entrada del sistema ‘System.in’, (podría ser por ejemplo cualquier otro archivo con extensión txt, y otros). Como se puede apreciar en la línea 12, 14 y 16 existen métodos destinados a la obtención de información, definidos para todos los tipos primitivos y el tipo String.
12. Operadores y expresiones
Estos operadores se van a usar para realizar operaciones aritmĂŠticas (sumar, restar, multiplicar, dividir, mĂłdulo (resto de la divisiĂłn)).
12. Operadores y expresiones
Estos operadores se van a usar para evaluar expresiones a cierto o falso.
12. Operadores y expresiones
Estos operadores se van a usar para evaluar expresiones a cierto o falso.
12. Operadores y expresiones Diferencia entre los operadores lógicos && y &, y || y |: Nosotros sólo vamos a usar los operadores && y ||. La diferencia que existe es que los && o || (cortocircuitados), evalúan la expresión lógica por partes, es decir, primero la parte izquierda y si esta es cierta, comprueba la de la derecha. En cambio los operadores & y | (no cortocircuitados), evalúan ambas partes a la vez. En la siguiente unidad didáctica se habla más sobre estos operadores.
12. Operadores y expresiones
(no lo usaremos)
12. Operadores y expresiones Operadores unitarios: ACLARACIÓN. x++: es equivalente a ‘x=x+1;’ Es decir primero incrementa y luego asigna el nuevo valor a ‘x’. Lo mismo ocurre con ‘x--’, pero en vez de sumar se resta. ++x: También existe. Ahora mismo no tiene sentido
usarlo, pero cuando veamos condiciones y bucles si que le veremos sentido usarlo. Lo mismo ocurre con ‘--x’, pero en vez de sumar se resta.
12. Operadores y expresiones (no los vamos a usar)
12. Operadores y expresiones
12. Operadores y expresiones Precedencia de operadores. Utiliza los paréntesis para controlar las operaciones sin tener
que depender de la precedencia y para dejar los programas más legibles.
12. Operadores y expresiones Actividad 1: Crear un programa que solicite un numero y calcule
el doble del mismo. El pseudocódigo sería el siguiente Inicio Mostrar “Ingrese un numero” Leer numero doble=numero*2 Mostrar “el doble es” doble Fin
Ahora hazlo en Java!
12. Operadores y expresiones ď&#x201A;&#x2014; SoluciĂłn Actividad 1: Crear un programa que solicite un
numero y calcule el doble del mismo.
12. Operadores y expresiones Actividad 2: Crear un programa que solicite dos números y
retorne su suma. Ejemplo: Ingrese un número: 8 Ingrese otro número: 4 La suma es 12
12. Operadores y expresiones Solución Actividad 2: Crear un programa que solicite dos
números y retorne su suma.
12. Operadores y expresiones Actividad 3: Crear un programa que solicite dos números
enteros y retorne la división entre estos. Trabajar el concepto de división real (exacta) y entera (donde necesita resto o módulo). Observa la diferencia de almacenar el resultado en una variable de tipo coma flotante (double o float) y otra que no sea de coma flotante (por ejemplo int o long).
12. Operadores y expresiones Solución Actividad 3: Crear un programa que solicite dos
números enteros y retorne la división entre estos.
12. Operadores y expresiones Solución Actividad 3: CONSIDERACIONES. Si las variables num1 y num2 son de tipo double, result deberá
ser double, ya que si es int dará error de compilación, al poder perder precisión en la operación. También tendrá que ser el módulo por el mismo motivo. Si las variables num1 y num2 son de tipo int, y result de tipo double, se realizará la división entera (solo la parte entera) pero al ser double le añadirá un “.0” porque es una variable que lleva decimales, pero no es la división real o exacta.
13. Conversiones de tipos (CAST) Es importante destacar que a la hora de hacer una división
real uno de los elementos de la misma debe ser de tipo float o double. Como en este caso ninguno de los dos lo era, se realizo una conversión de tipo (cast). El operador cast realiza este proceso, es decir, convierte datos, variables o expresiones a un nuevo tipo de dato. Su formato general es (no siempre es así como veremos a continuación): (nuevo tipo) dato;
13. Conversiones de tipos (CAST) En una asignación (identificador=expresion), tanto la variable
como la expresión deben ser del mismo tipo o de tipos compatibles. Conversiones implícitas: Se realiza de forma automática entre dos tipos de datos diferentes. Requiere que la variable destino (izquierda) tenga más precisión que la variable origen (derecha). Ejemplo:
13. Conversiones de tipos (CAST) explícitas: El programador fuerza la conversión mediante una operación llamada casting con el formato:
Conversiones
(tipoDato) expresion Ejemplo: double dDato=5.5; int iDato; iDato = (int)dDato; System.out.println(iDato); //sacará 5 por pantalla
INTENTA a probarlo sin realizar el casting a int, es decir, quitando la
parte (int).
NO se pueden realizar conversiones entre números y booleanos o
reales y booleanos. ¿Por qué? TIPOS INCOMPATIBLES!
13. Conversiones de tipos (CAST) Conversiones explícitas: ASPECTOS A CONSIDERAR. Ejemplo 1:
double a=71.5; int b= (int) a; //b valdrá 71, se carga la parte decimal de a.
Ejemplo 2:
double b= (int)(Math.round()*11); b tomará un valor entre 0 y 10 (ya que Math.round() nunca nos devolverá un 1, con lo cual nunca tomará el valor 11, como máximo 10.99999999, que al hacer casting con un int se quitarán los decimales y al guardarlo en una variable de tipo doublé, se le añadirá un .0
Ejemplo 3:
double a= 21.23; //Se separan los decimales por punto. //Leyendo de teclado por coma. int b= a; ERROR de compilación! Intentamos pasar un valor de un dato con mayor precisión a un dato con menor precisión: posible pérdida de precisión!
Ejemplo 3:
int a= 21; double b= a; Va perfecto! El valor de b sería de 21.0, añade un decimal (un cero). Se puede realizar ya que el double tiene mayor precisión que el int.
14. Algunas funciones predefinidas.
14. Algunas funciones predefinidas. La clase Math define métodos para calcular funciones
trigonométricas, redondear valores reales y otros cálculos. Uso:
Math.nombreMetodo(…);
NOTA: Puedes consultar todos sus métodos y variables en la API de esta clase.
14. Algunas funciones predefinidas. Algunas constantes y mĂŠtodos Ăştiles de la clase Math son:
14. Algunas funciones predefinidas. ASPECTOS a Math.round()): Ejemplo 1:
considerar
con
los
redondeos
(casting
y
double a=71.5; int b= (int)a; //b valdrá 71, se carga la parte decimal de a.
Ejemplo 2: double b= (int)(Math.random()*11); b tomará un valor entre 0 y 10 (ya que Math.random() nunca nos devolverá un 1, con lo cual nunca tomará el valor 11, como máximo 10.99999999, que al hacer casting con un int se quitarán los decimales y al guardarlo en una variable de tipo doublé, se le añadirá un .0
Ejemplo 3: double b= Math.round((Math.random()*11)); b tomará un valor entre 0 y 11 (ya que Math.random() nunca nos devolverá un 1, con lo cual nunca tomará el valor 11, como máximo 10.99999999, que al usar Math.round() de ese número aleatorio lo redondeará hacia arriba o hacia abajo dependiendo el valor generado aleatoriamente.
14. Algunas funciones predefinidas. Algunas constantes y métodos útiles de la clase Math son
(continuación):
14. Algunas funciones predefinidas. Algunas constantes y métodos útiles de la clase Math son
(continuación):
Math.sqrt(int x);
x tiene que ser >=0. Si x es negativa, no hay soluciones reales, hay soluciones imaginarias, pero Java no las puede representar, entonces Java mostrará “NaN” (Not a Number).
15. Bloques de instrucciones. Un bloque es una parte de un programa en Java englobada entre
llaves y formada por declaraciones iniciales y una secuencia de instrucciones (posterior a las declaraciones). SIEMPRE SE DECLARAN ANTES LAS VARIABLES Y LUEGO SE UTILIZAN. Ejemplo: { Scanner entrada = new Scanner(System.in); int a = entrada.nextInt(); System.out.println(a); entrada.close(); }
15. Bloques de instrucciones. Los bloques pueden declararse o anidarse unos dentro de otros. Bloques externos (porque contienen a otros). Bloques internos (cuando están contenidos dentro de otros).
Las declaraciones efectuadas al comienzo de un bloque
tienen sólo validez en el interior del mismo (incluso en bloques internos), fuera del bloque no surten efecto. Dentro de un bloque se pueden utilizar tanto los identificadores definidos en el mismo como en cualquier otro bloque externo que lo comprenda. En distintos bloques anidados NO se pueden definir identificadores con el mismo nombre, en caso de hacerse así se generará un ERROR durante la compilación.
15. Bloques de instrucciones. Ejemplo bloques anidados:
¿Qué valor de la variable ‘dia’ se mostrará por pantalla para cada instrucción System.out.println()?
15. Bloques de instrucciones. Ejemplo bloques anidados: ¿Qué valor de la variable ‘dia’ se mostrará por pantalla para cada instrucción System.out.println()? Solución: Ambas instrucciones System.out.println() mostrarán el valor de la variable día ’12’, ya que la variable dia es la misma para su bloque y el bloque interno, hace referencia a la misma variable o dirección de memoria.
15. Bloques de instrucciones. Se denomina ámbito de una variable a la parte del
programa en la que dicha variable es conocida y puede ser utilizada.
Una variable se dice que es local en el bloque en el que se
define y global para los bloques internos/anidados a éste.
15. Bloques de instrucciones. Las siguientes reglas están relacionadas con el concepto de
bloque y el uso de variables: Todas las variables definidas en el mismo bloque (y en los bloques internos a éste) deben tener nombres diferentes. Una variable definida en un bloque es conocida desde esta definición hasta el final del bloque. Como caso particular, una variable definida en un bloque es conocida en todos los bloques internos a éste. Las variables se deben definir al comienzo del bloque más interno en el que se utilizan.
16. Documentación JAVA. Todos los paquetes, librerías, clases y funciones los
podemos consultar en el API de JAVA, en nuestro caso para este curso usaremos la versión 7 (quien quiera puede usar la 8) del JSE: http://download.oracle.com/javase/7/docs/api/ http://docs.oracle.com/javase/8/docs/api/
17. Consideraciones. Sólo se puede definir una clase pública por fichero fuente. Si el fichero .java contiene una clase pública entonces el fichero debe tomar el mismo nombre de la clase (sin el .java). La compilación correcta de un fichero .java genera en el mismo directorio un fichero (bytecode) llamado de la misma forma con extensión .class
18. Ejercicios. Escribir un programa en Java que pregunte Cómo te llamas?, lea el nombre que introduces por teclado, por ejemplo Albert (acabando con NL) y escriba en pantalla Hola Albert. 2. Escribir un programa en Java que pregunte tu nombre, dirección y teléfono y escriba en pantalla una ficha. 3. Escribir un programa en Java que transforme en euros la cantidad que se introduce como dato en pesetas (1 euro son 166.386 pesetas). 4. Escribir un programa en Java que transforme una temperatura en grados Fahrenheit a grados Celsius (Info: 0ºC==32F y c=(F-32)/1.8) 1.
18. Ejercicios. Escribir un programa en Java para calcular la superficie y el volumen de una esfera a partir del valor del radio (supóngase que es un valor positivo). 6. Escribir un programa en Java para calcular el volumen de una esfera a partir del valor de su superficie (supóngase que es un valor positivo). 7. Una empresa de transporte por carretera ha adquirido vehículos nuevos que viajan más rápido que los antiguos. Les gustaría conocer cómo afectará esto a la duración de los viajes. Supóngase que la reducción media que se consigue del tiempo total de viaje es del 15%. Escribir un programa en Java que lea el horario de salida y llegada antiguo, calcule el nuevo horario de llegada y muestre en pantalla el nuevo tiempo de viaje y la nueva hora de llegada. Nota: Las horas se dan en el formato hhmm, un entero. Por ejemplo las 11:30, sería el entero 1130. 5.
18. Ejercicios. 8. Realiza un programa que genere letras minúsculas
aleatorias. Usa la tabla ASCII como ayuda y el método random() de la clase Math. 9. Ídem del anterior, pero que genere letras mayúsculas. 10. Ídem del anterior, pero que genere letras tanto mayúsculas como minúsculas. Evita que salgan los caracteres que no son letras que hay entre las letras mayúsculas y minúsculas. 11. Realiza un programa en Java que dados dos variables a y b cuyos valores se pedirán al usuario, intercambie los valores de a y b, y los muestre por pantalla.
18. Ejercicios. 12. Se necesita almacenar en una variable booleana el
valor:
ď&#x201A;&#x2014; Verdadero: Si la edad es menor o igual a 28, el
nivel_de_estudios es mayor que tres y los ingresos superan los 28.000 euros. ď&#x201A;&#x2014; Falso: En caso contrario. Declara las variables enteras edad, nivel_de_estudios e ingresos. Pide los datos al usuario y comprueba su correcto funcionamiento.
13. Realiza un programa en Java que dada una variable t
la cual contiene un tiempo en segundos, nos muestre dicho tiempo expresado en horas, minutos y segundos.
18. Ejercicios. 14. Realiza un programa en Java que dado un importe en
euros, nos indique el mínimo número de billetes y la cantidad en monedas sobrante que se pueden utilizar para obtener dicha cantidad.
Más ejercicios en la UD1 del libro “Programación” de
Ra-Ma.