Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Curso Java para estudiantes, Esquemas y mapas conceptuales de Programación de Videojuegos

Curso completo de Java básico para principiantes.

Tipo: Esquemas y mapas conceptuales

2018/2019

Subido el 02/04/2019

IGCCC
IGCCC 🇲🇽

1 documento

1 / 81

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Java Fermí Vilà 1
Java 2
(Manual FV)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51

Vista previa parcial del texto

¡Descarga Curso Java para estudiantes y más Esquemas y mapas conceptuales en PDF de Programación de Videojuegos solo en Docsity!

Java 2

(Manual FV)

Antes de empezar:

  • Manual F.V. Significa “manual práctico de informática”, pero realmente realmente PRÁCTICO.
  • En el texto me refiero continuamente a TuCarpeta , esto es un subdirectorio de tu ordenador donde es conveniente que grabes todos los programas de este “tu manual”.
  • Todos los programas y ejercicios del manual han sido probados sin problema en el Java 2 SDK (Standard Edition 1.2.2)
  • Mi consejo, es que escribas de nuevo tal como te indico en el texto, cada uno de los programas utilizando el Bloc de Notas del Windows. Sólo en el caso de que el programa no te funcione y no descubras cuál es el error, cópialo a partir del Word en el Bloc de Notas y grábalo con otro nombre; para poder compararlo con el tuyo y así descubrir el error. Piensa que se aprende más descubriendo los propios errores, que avanzar sin hacer ningún error.

ÍNDICE

  1. Introducción .......................................................................................................................................

Ejercicios de autoevaluación 1 ...............................................................................................................

Soluciones 1 ..........................................................................................................................................

2.Entrada y Salida de Datos....................................................................................................................

Ejercicios de autoevaluación 2 ...............................................................................................................

Soluciones 2 ...........................................................................................................................................

3 Estructura del Lenguaje .......................................................................................................................

Ejercicios de autoevaluación 3 ...............................................................................................................

Soluciones 3 ...........................................................................................................................................

4 Programación Orientada a Objetos ......................................................................................................

Ejercicios de autoevaluación 4 y soluciones ..........................................................................................

5 Aplicaciones y Applets ........................................................................................................................

Ejercicios de autoevaluación 5 y soluciones ................................................................................. 149 a 204

Código fuente Compilador en “Java” Java

En definitiva:

Fichero binario (no es EXE, sino bytecode)

Intérprete Pentium

Intérprete Pentium

Intérprete Mac

No es directamente ejecutable, ya que necesita un intérprete que depende de la “máquina”

Un único código fuente en Java .java

Un único compilador Java (librerías y funciones comunes para todos los sistemas)

Fichero en formato bytecode .class

Intérprete Java propio del sistema

Ejecución del En Sistemas PC/Windows el programa irtérprete es un programa MS/DOS

En el caso particular de un Applet, es un navegador de Internet (el intérprete)

El responsable de ejecutar el programa applet es la llamada Máquina Virtual Java (MVJ) , programa intérprete que forma parte del navegador.

Hot Site

Applet = fichero bytecode

Navegador X

MVJ de X

Navegador Y

MVJ de Y

Java y JavaScript

  • JavaScript es una versión de Java directamente interpretada, que se incluye como parte de una página HTML, lo que lo hace muy fácil y cómodo para aplicaciones muy pequeñas, pero que en realidad tiene muchas limitaciones. La principal limitación es que no todos los browsers lo soportan completamente (Explorer, por ejemplo, no soporta las últimas adiciones de Netscape, como las imágenes animadas).
  • JavaScript es un lenguaje creado por Netscape y Sun.
  • VBScript (Visual Basic Script) es una copia mejorada de JavaScript creada por Microsoft (en continua guerra con Netscape), que sólo funciona con su navegador (Microsoft Internet Explorer).
  • JavaScript se le ha llamado el hermano pequeño de Java, pero es bastante menos que eso, ya que Java es un lenguaje de programación general a diferencia de JavaScript , que sólo sirve para añadir interactividad a las páginas web.
  • JavaScript sólo se puede comparar (salvando las distáncias) con los applets de Java.

Veamos con un ejemplo la relación entre JavaScript y un Applet de Java:

  • Crea utilizando el Bloc de Notas de Windows, el siguiente fichero:

**



Esto forma parte de la página Web **
  • graba el fichero anterior en TuCarpeta con el nombre j001.htm
  • Ejecuta el fichero anterior.
  • Crea, utilizando el Bloc de Notas, el siguiente fichero:

//Applet j import java.awt.Graphics; import java.applet.Applet; public class j002 extends Applet{ public void paint(Graphics g){ g.drawString("Esto es Java",25,25); } }

  • Graba el fichero anterior en TuCarpeta , con el nombre j002.java
  • Crea el siguiente fichero:

**

**

De esta forma compilaremos nuestro programa y se creará el fichero binario (bytecode) nombre1.class

  • Desde MS/DOS y en la carpeta donde tenemos nombre1.java y nombre1.class , escribimos: java nombre1 [Return] De esta forma se “interpreta” el fichero nombre1.class en nuestro ordenador PC/Windows, es decir se ejecuta.
  • En un Applet
  • Igual que en el caso anterior, pero para ejecutar el applet , hemos de incluir la llamada correspondiente en una página Web. Es decir, en lugar de utilizar el intérprete java.exe de antes, utilizamos el navegador que contiene la MVJ como intérprete.

Los primeros programas

  • Escribe utilizando el bloc de notas:

class j004 { public static void main(String [] args) { System.out.println("Bienvenido a Java!"); } }

  • Grábalo en TuCarpeta con el nombre j004.java
  • Compila y ejecuta el programa anterior, es decir:
    • javac j004.java
    • java j
  • Supongo que has deducido para qué sirve la sentencia: System.out.println(“mensaje”);
  • Investiga la utilidad de “\n”, estudiando el siguiente programa:

class j005 { public static void main(String [] args) { System.out.println("Hola\nQue tal"); System.out.println("Uno\nDos\nTres\nCuatro"); } }

  • Grábalo con el nombre j005.java
  • Compílalo y ejecútalo.
  • ¿Qué utilidad tiene “\n”?
  • Investiga la diferencia entre print y println , estudiando el siguiente programa:

class j006 { public static void main(String [] args) { System.out.println("Hola"); System.out.println("Adios"); System.out.println(""); System.out.print("Pues vale"); System.out.print("Eso"); System.out.print("Vale");

  • Grábalo con el nombre j006.java
  • Compílalo y ejecútalo.
  • ¿Qué diferencia hay entre print y println? println(“mensaje”) después de escribir el “mensaje” se produce un cambio de línea equivale a pulsar [Return]

print(“mensaje”) después de escribir el “mensaje”, el cursor se sitúa al final del mensaje y en la misma línea.

Para recordarlo piensa en la siguiente “fórmula”: println = print + ln (línea nueva)

  • Escribe el siguiente programa:

// j007.java = dibuja 2 circunferencias import java.awt.; import java.awt.event.; class j007 extends Frame { public j007() { setTitle("Dos circunferencias"); } public static void main(String [] args) { Frame f=new j007(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setSize(300,200); f.setVisible(true); } public void paint(Graphics g){ g.setColor(Color.red); g.drawOval(10,30,30,30); g.setColor(Color.blue); g.drawOval(35,30,30,30); g.drawString("Dos circunferencias",40,100); } }**

  • Grábalo con el nombre j007.java
  • Compílalo y ejecútalo.
  • f.setSize(600,400) Determina el tamaño de la ventana 1ª coordenada = 600 = anchura en píxels 2ª coordenada = 400 = altura en píxels.
  • g.setColor(Color,red) Establece el rojo como color de dibujo.

f.setSize(400,300); f.setVisible(true); } public void paint(Graphics g){ g.setColor(Color.red); g.drawString("Hola",50,50); g.setColor(Color.blue); g.drawString("Hola",100,100); g.setColor(Color.green); g.drawString("Hola",200,150); g.setColor(Color.yellow); g.drawString("Hola",300,200); } }

Fundamentos de la Programación Orientada a Objetos

  • La programación orientada a objetos POO es una forma de programar que se basa en el uso de clases.
  • Un programa Java consta de una o más clases.

Una clase consta de miembros :

  • Propiedades = campos o variables
  • Funciones = métodos o habilidades

Ejemplo: Clase: Arboles Miembros de “Arboles”: propiedades (color, altura etc.) y funciones (crecimiento, etc) A partir de la clase “Arboles” podemos definir una serie de objetos (elementos o ejemplares): pino, palmera, acacia, roble, etc.

  • Creación de objetos: Sea “Arboles” una clase Arboles pino = new Arboles(); Acabamos de crear un objeto de la clase “Arboles” de nombre “pino”

Analicemos el programa j004.java :

class j004 { public static void main(String [] args) { System.out.println("Bienvenido a Java!"); } }

  • Definimos una clase de nombre j004 (el fichero debe grabarse con el mismo nombre) Que consta de un único método = main
  • System es una clase ya definida en “Java” que contiene todas las posibles propiedades y métodos de entrada-salida
  • out es un objeto de la clase “System” que contiene las propiedades y métodos de salida.
  • println es un método del objeto “out” que imprime en pantalla el mensaje y a continuación hace un [Return]
  • print es otro método del objeto “out” que imprime en pantalla el mensaje.
  • Escribe el siguiente programa:

// j010.java=Contador public class j010 { int x; public j010() { x=0; } public int incCuenta(){ x++; return x; } public int getCuenta() { return x; } }

  • Grábalo con el nombre j010.java
  • Compílalo: Javac j010.java y creará el fichero j010.class
  • No lo ejecutes, porque no hará nada. Veamos:
    • Definimos una clase de nombre j
    • Los miembros de dicha clase son:

Una propiedad: int x; No es mas que la declaración de una variable entera (int) de nombre x

Tres métodos o funciones: public j010() {x=0;} Es una función especial llamada constructor (observa que tiene el mismo nombre de la clase). Su principal utilidad está en inicializar variables, en nuestro caso x=0. public int incCuenta() { x++; return x; } Es una función que devuelve el valor de “x” incrementado en una unidad (x++ es equivalente a x=x+1 ). public int getCuenta() {return x;} Es una función que devuelve el valor actual de “x”.

Lo que acabamos de hacer en j010.java , que tenemos compilado en j010.class es construir una CLASE , que no es mas que un contador

La clase o programa j010 aislado no sirve para nada, vamos a hacer un nuevo programa que utilice la clase “j010.class”

  • Escribe el siguiente programa:

g.drawString(String.valueOf(n),20,50); laCuenta.incCuenta(); g.drawString(String.valueOf(laCuenta.getCuenta()),20,65); g.drawString(String.valueOf(laCuenta.incCuenta()),20,80); } }

  • Grábalo con el nombre j012.java en TuCarpeta
  • Compílalo (no lo ejecutes), es decir tendremos el fichero j012.class
  • Escribe:

** j013.htm

**
  • Graba el fichero anterior en TuCarpeta , con el nombre j013.htm
  • Ejecuta el programa anterior:
    • Podríamos utilizar cualquier navegador.
    • O utilizar el visualizador de applets del SDK: Desde MS/DOS: appletviewer j013.htm

Continuando con la POO

El modificador “static” Cada vez que creamos un objeto, se hace una copia de todos los miembros de la clase.

Veamos: Sea Arboles una clase, y noDePreguntas un método de Arboles. Sea pino y sauce dos objetos de la clase Arboles. El método noDePreguntas del objeto pino es completamente distinto del método noDePreguntas del objeto sauce. Supongamos que por la razón que sea, un método (o propiedad) de una clase, nos interesa que sea el mismo para todos los objetos de la clase. En este caso necesitamos un método (o propiedad) de clase no un método (o propiedad) de objeto. El modificador static determina un método (o propiedad) de clase.

  • Analicemos el siguiente programa (es el más sencillo posible, es tan simple que no hace nada):

class HacerNada { public static void main(String[] args) { } }

Se trata de una clase de nombre “HacerNada”, que sólo tiene un método de nombre main , se trata de un método void (no devuelve nada) y tiene un modificador static , es decir es un método de clase, que será llamado de la siguiente forma: HacerNada.main

Cuando se ejecuta un programa, hemos de dar el nombre de una clase, “Java” busca en dicha clase un método llamado main y empieza ejecutando el programa desde allí, como “Java” debe acceder a dicho método, éste debe tener un modificador public.

Comentarios

  • Escribe el siguiente programa:

// j014.java class j014 { / Programa que mostrará en pantalla un mensaje de error / public static void main(String [] args) { System.out.println("---------------------------"); System.out.println("| |"); System.out.println("| A V I S O |"); System.out.println("|Posible virus destructivo |"); System.out.println("| |"); System.out.println("---------------------------"); System.out.println(); System.out.println("\nEs broma"); } }

  • Grábalo en TuCarpeta con el nombre j014.java
  • Compílalo y ejecútalo.
  • Los métodos println() y print() son métodos de objeto, no de clase, por lo tanto hemos de indicar el objeto correspondiente que es out
  • Comentarios para el programador:

// de una línea /* podemos utilizarlo en varias líneas */

  • System.out.println() Línea en blanco.

Tipos. Variables. Constantes

Java es un lenguaje con tipos y clases estrictos , esto es: en una expresión sólo podemos utilizar elementos del mismo tipo o clase, es decir no podemos mezclar cadenas y números, ni árboles ni pájaros.

Java tiene 8 tipos predefinidos conocidos como tipos primitivos , pero los tres más usados son:

int : números enteros hasta 2.000.000. long : enteros más grandes o para resultados de cualquier operación entera. double : números reales o para resultados de expresiones en las que interviene como mínimo un número real. Los otros tipos primitivos son: boolean, byte, char, float, short

  • Escribe el siguiente programa:

// j015.java / Dadas dos tasas de interés, calcula la diferencia en el interés simple para el resto del año a partir de un mes dado / public class j015 { static final double c=1000; static final int m=4; // ABRIL static final double tasaAntigua=12.5; // tanto por ciento static final double tasaNueva=13.00; // tanto por ciento public static void main(String [] args) { System.out.println("Cálculo del interés"); System.out.println("==================="); // Cálculos preliminares double cPrelim=c(12-m)/12/100; // imprimir resultado System.out.println("Dado un cambio en la tasa de "+ "interés del "+tasaAntigua+"% al "+tasaNueva+ "% en el mes "+m+" ,"); System.out.println("sobre un capital de "+c+ ", el interés para el resto del año"); System.out.print("cambiará en: "); System.out.println(cPrelimtasaNueva-cPrelimtasaAntigua); } }*

  • Grábalo con el nombre j015.java en TuCarpeta
  • Compílalo y ejecútalo.

Impresión de enteros y reales:

Número Se imprime como 10 10 650 650 14.75 14. 1.6213 1. 1/1.6213 0. 0.000000001 1.0E- 1.0/2 0. 1/2 0 Java, si divide dos enteros, automáticamente realiza la “división entera”

Cuando estudiemos el paquete “java.text” ya veremos formas de “controlar” la salida de números por pantalla.

Paquetes Java

Java es un lenguaje muy simple, pero suple su brevedad con muchos paquetes de clases ya escritas que podemos utilizar en nuestros programas.

Un paquete es una colección de clases que encajan lógicamente y que pueden interaccionar entre ellas.

Algunos de los paquetes “Java” más importantes:

  • lang: funciones del lenguaje
  • util: utilidades
  • io: entrada, salida
  • text: formateo especializado
  • awt: gráficos e interfaz gráfica
  • awt.event: gestión de eventos
  • applet: programas para la “web”
  • net: redes

Para conseguir acceso a cualquiera de los paquetes (excepto lang , que siempre está presente): import.java.nombreDelPaquete.;* El “asterisco” indica que todas las clases del paquete han de estar disponibles.

  • Escribe el siguiente programa:

// j016.java / Programa para ver la diferencia entre una constante y una variable / public class j016 { static final double pi=3.141592; public static void main(String [] args) { double radio=5; System.out.println("radio= "+radio); radio=45.34; System.out.println("Ahora el radio mide= "+radio); System.out.println("Longitud circunferencia= "+ 2piradio); } }**

  • Grábalo con el nombre j016.java en TuCarpeta
  • Compílalo y ejecútalo.
  • Observa:
    • Constante: no varía su valor durante el programa. Declarada antes del main() , al poner el modificador static
    • Variable: puede variar su valor durante la ejecución del programa. Declarada en el main : al no escribir ningún modificador.
  1. Crea un programa de nombre evalj1h , que calcule la hipotenusa del triángulo rectángulo de catetos 3.27 t 5.03 cm.

  2. Crea un Applet de nombre evalj1i , que presente la palabra HOLA de color rojo y la palabra ADIOS de color verde. Crea una página web con el mismo nombre (evalj1i) para poder visualizar el applet.

  3. Crea una nueva clase java de nombre evalj1j , que represente un contador, inicializado a 25 y que sirva para decrecer 3 unidades.

  4. Crea un programa de nombre evalj1k , que utilice la clase evalj1j para mostrar el valor inicial y los dos siguientes valores del contador.

  5. Crea un applet de nombre evalj1l , que haga lo mismo que el ejercicio anterior. Deberás crear una página web (con el mismo nombre), para comprobar el funcionamiento del applet.

  6. ¿Cuál era el nombre primitivo del Java y de qué lenguaje de programación deriva?

  7. ¿Qué diferencias hay entre un fichero binario en C++ o en Java?

  8. ¿Porqué un programa Java necesita un intérprete?

  9. ¿Quién es el “intérprete” en el caso particular de un applet de Java?

  10. ¿Qué es un applet?. Relación entre un applet y un programa Java completo.

  11. ¿Qué diferencia fundamental hay entre un applet de Java y un programa JavaScript?

  12. ¿En qué consiste la Máquina Virtual Java?

  13. ¿Qué relación hay entre un fichero con extensión class y un fichero con extensión java?

  14. Si “pepe” es una clase Java, escribe las sentencias para crear tres objetos de “pepe” de nombres: pepito, pep y pepit.

  15. Explica la diferencia entre print y println

  16. Explica lo que sepas sobre un “constructor”

  17. ¿Qué es el appletviewer?

  18. ¿Qué diferencia hay en Java entre división entera y exacta?

Autoevaluación I (Soluciones)

  1. Escribe un programa de nombre EVALJ1A que dibuje un círculo azul en el centro de una ventana de 300x300 píxeles.

// EVALJ1A.java import java.awt.; import java.awt.event.; class evalj1a extends Frame { public evalj1a() { setTitle("EvalJ1A"); } public static void main(String [] args) { Frame f=new evalj1a(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setSize(300,300); f.setVisible(true); } public void paint(Graphics g){ g.setColor(Color.blue); g.drawOval(0,0,300,300); g.drawOval(30,30,240,240); } }**

  1. Escribe un programa de nombre evalj1b , que sirva para calcular las siguientes expresiones: 52 % 100 9000009 Math.pow(4,3) 21/ 22/ 4-3/4-

// EVALJ1B public class evalj1b { public static void main(String [] args) { System.out.println(52%100); System.out.println(9000009); System.out.println(Math.pow(4,3)); System.out.println(21/7); System.out.println(22/7); System.out.println(4-3/4-2); } }