Академический Документы
Профессиональный Документы
Культура Документы
Concepto de programa
Un programa es un conjunto de instrucciones que indican a un procesador, que puede
o no estar en un ordenador, las acciones que debe ejecutar. Estas instrucciones están
expresadas en lenguaje o código máquina, único lenguaje que entienden los
procesadores.
Estas instrucciones de código máquina son una serie de secuencias de bytes. Cada
byte se compone de 8 bits y un bit puede ser un 0 o un 1. Un bit es la unidad mínima de
información con la que es capaz de trabajar un procesador. Un ejemplo de byte podría ser
este: 10011010.
Lenguajes de programación
Un lenguaje de programación es la herramienta utilizada para crear programas. Es un
conjunto de normas, instrucciones y códigos prefijados que permiten construir
programas capaces de ser interpretados por procesadores.
Es como el alfabeto de una lengua: para que una persona pueda comunicarse y
entenderse con otra debe aprender las vocales, las consonantes, su pronunciación, cómo
se unen letras para formar palabras inteligibles, cómo se agrupan palabras para formar
frases, etc. Este alfabeto y sus normas de aprendizaje cambian de una lengua a otra.
Lo que ocurre es que los programadores no suelen trabajar directamente con código
máquina porque hay muchos tipos (tantos como procesadores) y, además, porque se
programa con un lenguaje muy distinto al que habitualmente se emplea (recordar que las
instrucciones de código máquina se expresan en bytes). Para evitar estos dos problemas
se emplean los lenguajes de programación de alto nivel.
Ejemplos: Java, Visual Basic, Visual Basic.NET, C, C++, C#, Pascal, Cobol, SmallTalk,
Delphi, Perl, Python, etc.
Ejemplo: Ensamblador.
Las instrucciones asociadas a programas creados con lenguajes de alto nivel deben
transformarse en instrucciones de código máquina para que el procesador pueda
interpretarlas; esto se hace con un compilador (es el filtro mencionado anteriormente).
Ocurre que cada procesador tiene distinto código máquina y un programa compilado para
un determinado procesador no vale para otro (una novela española no se entiende en
China a no ser que se traduzca).
Con los programas que se quieren ejecutar en máquinas que no tienen el mismo
procesador ocurre lo mismo. De esto se deduce que se deben tener tantos compiladores
como procesadores distintos se tengan y volver a compilar el programa.
Esto es un engorro y una limitación que Java ha resuelto mediante la JVM (Java Virtual
Machine) o Máquina Virtual de Java o Intérprete de Java.
En la analogía de la novela se podría decir que la JVM sería un traductor mágico capaz de
traducir una novela escrita en cualquier lengua, a nuestra lengua materna.
En función de lo que se considere prioritario para una aplicación se optará por un lenguaje
u otro
Arquitectura ordenador + sistema operativo
Hablando a nivel de ordenador, además del procesador debe considerarse el
sistema operativo (s.o. a partir de ahora) que trabaja en él.
Así, por ejemplo, existen televisores interactivos, teléfonos celulares, relojes, cadenas
de música, electrodomésticos, etc. en las que puede ejecutarse un programa Java.
<< ^ >>
1- Cuestiones básicas de Java Indice Software Java
Si desea obtener un acceso sin restricciones a los contenidos del curso y disfrutar de todas las
herramientas del aula virtual (Videos explicativos streaming, acceso a los foros, chat, ejercicios
resueltos, la ayuda del tutor, audioconferencia, estudio de grabación, test y actividades de
autoevaluación, etc...) puede inscribirse completamente gratis y comenzar a realizar de forma
inmediata el curso hasta la cuarta unidad.
Software Java
J2SE (Java 2 Standard Edition)
Aparte del J2SE, se dispone de dos herramientas más para crear aplicaciones Java.
En vez de emplear la palabra herramientas, se va a utilizar la palabra plataforma ya
que es la recomendada por Sun. Pues bien, además de J2SE la comunidad Java
cuenta con las plataformas:
J2EE (Java 2 Enterprise Edition)
Con esto no basta para poder compilar y ejecutar código Java. Es necesario
configurar adecuadamente el sistema.
¿Cómo?
Hay que agregar a la variable del sistema Path, la ruta del directorio
c:\j2sdk1.4.X_XX\bin
%SYSTEMROOT%\SYSTEM32;%SYSTEMROOT%;%SYSTEMROOT%\SYSTEM32\WBEM
;C:\J2SDK1.4.1_01\BIN
Todo este proceso se explica en el siguiente vídeo. La primera parte del vídeo
corresponde a la descarga ya explicada y actualizada. Lo importante del vídeo viene
después, es decir, en la instalación y configuración. Es fundamental la parte de
CONFIGURACIÓN. Además, se explica como realizar la configuración en
Windows 98.
<< ^ >>
Arquitectura ordenador + Indice Programa Java
sistema operativo
Programa Java
Un programa o aplicación Java se compone de un conjunto de clases que contienen
variables de diversos tipos utilizadas para almacenar datos, y métodos que
implementan código capaz de manipular dichas variables y crear objetos o
instancias de clase, que permitan la interacción con otros métodos y variables de
esas clases.
Las clases y métodos van entre llaves {} y al final de una instrucción o declaración de
variable debe escribirse un punto y coma (;). Se utilizan tabuladores para sangrar las
líneas de código con el fin de facilitar su legibilidad, aunque si se omiten no pasa
nada.
Ejemplo:
Este programa consta de una clase de nombre PrimerSaludo, no declara ninguna
variable y cuenta con dos métodos de nombres main y mostrarMensaje. En
programas más complejos, se tendrán varias clases, en cada clase habrá muchos
métodos y declaraciones de variables, dentro de los métodos se declararán también
variables, etc. Por el momento, con esta sencilla clase nos conformaremos. Se va a
explicar ahora cada una de sus líneas.
Por consola:
Hola Jesus
• Objetivos del método main: mostrar un mensaje por consola, crear un objeto
de la clase PrimerSaludo, invocar al método mostrarMensaje mediante el objeto
anterior y mostrar otro mensaje por consola. Aparte de estos objetivos, el
fundamental y más importante es servir como punto de inicio de la ejecución
del programa.
Luego, se guarda con el mismo nombre que la clase principal, si dicha clase va
precedida del modificador de acceso "public" o con el que se quiera, si la clase
principal no tiene modificador de acceso. Después del nombre se le añade la
extensión java. Al fichero de extensión java guardado se le llama código fuente.
C:\cursojava\tema1>javac PrimerSaludo.java
¿Qué se hace?
C:\cursojava\tema1>java PrimerSaludo
Si, después de haber compilado un código fuente sin errores y obtener los
correspondientes ficheros class, se ejecuta y aparece por consola el siguiente
mensaje:
Posibles causas:
• Nombre del fichero class que debe ejecutarse no tiene el mismo nombre que la
clase principal (aquella que contiene al método main, es decir, al punto de
entrada al programa).
Un código fuente Java sólo puede tener una clase con el modificador de
acceso public. Si el modificador de la clase es public, el código fuente debe
tener el mismo nombre que la clase.
Ejemplo 1:
Ejemplo 2:
NOTA 2 BÁSICA
Si un código fuente Java tiene varias clases, lo habitual es que sólo una de
ellas cuente con método main. Se verá en el tema de sockets que, a veces,
puede resultar cómodo contar con dos métodos main en dos clases de un
mismo código fuente. Por el momento, se trabajará con un sólo método
main. Si hubiera varios definidos en clases del mismo código fuente, sólo se
ejecuta uno de ellos; el resto no se ejecuta.
Ejemplo:
NOTA 3 BÁSICA
Un código fuente Java no tiene por qué tener clase principal (aquella que
contiene el método main o punto de entrada del programa).
Ejemplo:
NOTA 4 BÁSICA
Por consola:
225
NOTA 5 BÁSICA
Ejemplo:
Por consola:
225
NOTA 6 BÁSICA
Ejemplo:
Por consola:
225
Esta clase puede ser utilizada por cualquier programador Java en el momento que lo
necesite el desarrollo de su programa. Es una práctica habitual en el diseño de una
aplicación Java utilizar clases creadas por otros programadores.
Respecto a la descarga de la API, los pasos a seguir son los mismos que cuando se
descarga el SDK
Si desea obtener un acceso sin restricciones a los contenidos del curso y disfrutar de todas las
herramientas del aula virtual (Videos explicativos streaming, acceso a los foros, chat, ejercicios
resueltos, la ayuda del tutor, audioconferencia, estudio de grabación, test y actividades de
autoevaluación, etc...) puede inscribirse completamente gratis y comenzar a realizar de forma
inmediata el curso hasta la cuarta unidad.
NOTA 7 BÁSICA
• El primer carácter debe ser una letra, el carácter subrayado (_) o el símbolo $ y
no otra cosa. Tras el primer carácter, el nombre puede estar compuesto de
letras o de números pero no de espacios en blanco ni tabuladores.
• En las clases, por convenio, el nombre comienza con mayúscula. Si tiene varias
palabras la primera letra de cada palabra será también mayúscula.
• No pueden usarse como nombre palabras reservadas o clave de Java (Java las
emplea para los tipos de variables, instrucciones, modificadores de acceso,
operadores, etc. propios del lenguaje). Tampoco se permite la ñ.
• Los nombres deben ser lo mas representativos de las tareas que ejecutan y de
los valores que almacenan, para que resulte cómoda la lectura del código a
otras personas o incluso a los propios programadores creadores del código una
vez transcurrido un cierto tiempo.
NOTA 8 BÁSICA
Dentro de una clase, para acceder a un método desde otro que no es el main
o no es un método estático, basta con llamar al método directamente. No es
necesario crear un objeto o instancia de la clase.
Ejemplo:
Por consola:
Bienvenido amig@
Por consola:
El valor de entero1 es 10
Ejemplo 3: las líneas en verde son comentarios. Se utilizan para explicar y aclarar
líneas de código. Se analizarán en temas posteriores. El compilador no los tiene en
cuenta.
Por consola:
La suma de 10 y 25 es 35
Ejercicios
Ejercicio 1
Realizar un programa Java que calcule el cuadrado de una suma, el de una diferencia
y que muestre el mensaje siguiente: "Has calculado el cuadrado de una suma y el de
una diferencia. Eres un mossstruo". Utilizar los números 3 y 2 para los cálculos.
25
Debéis hacerlo de las tres formas distintas que se explicaron en las notas 4, 5 y 6:
1. Utilizando cuatro clases públicas asociadas a otros tantos códigos fuente con los
siguientes nombres:
2. Utilizando una clase principal que llamaréis EjercicioBasico02 que, aparte del
método main, incluya los métodos descritos anteriormente.
3. Utilizando una clase principal que llamaréis EjercicioBasico03 que sólo contenga
al método main.
Concepto de variable
Una variable es un contenedor de bits que representan a un valor. Se emplean
para almacenar datos que pueden cambiar durante la ejecución de un
programa. En función de los datos que almacenan se clasifican en:
• Su primer carácter debe ser una letra, el símbolo del subrayado o el carácter
dólar $.
Aparte de estas normas conviene que los nombres de las variables indiquen qué dato
almacenan con el fin de facilitar la lectura del programa y, por otra parte, si un
nombre tiene más de dos palabras la primera letra de la primera palabra irá en
minúscula, la primera letra de la segunda palabra en mayúscula, ídem con la tercera
y así sucesivamente.
Ejemplo:
int miVariableEntera=100;
Variables primitivas
• De tipo entero:
Son variables que almacenan datos numéricos con decimales. Se pueden dividir
en los siguientes tipos:
NOTA: el tipo de variable en que se almacena por defecto un numero decimal es double.
El valor por defecto asociado a cualquier variable real no inicializada es 0.0.
Ejemplo:
boolean tienesCalor=true;
Ejemplo:
char miCaracter='n';
Por consola:
Comienza programa
El valor de letra es n
El valor de letra1 es n
El valor de letra2 es n
Eso es
un mensaje
de tres lineas
Me llamo "Jesus"
Me llamo \Jesus\
Variables referenciadas
Asociadas a objetos o instancias de una clase. Se irán estudiando durante el curso.
Ejemplo 1:
En cambio,
Ejemplo 1:
NOTA: si se sustituyera la primera línea int num1=100 por int num1=1000000, el código compilar
bien, pero habría pérdida de datos, pues el 1000000 se sale del rango de short [-32768, 32767].
mostrar por consola el valor se obtendría un resultado incongruente.
Ejemplo 2:
pero no
Ejemplo extraño:
Dado que cualquier entero, por defecto, se almacena en un int (4 bytes), con la línea
anterior se pretende colocar un valor grande (el int 10) en un contenedor pequeño
(una primitiva de tipo byte con capacidad para 1 byte). Esto, según lo expuesto
anteriormente, precisa de casting explícito.
Pero, resulta que no hace falta, ya que el compilador, cuando se trabaja con
enteros, digamos que, provoca un "casting implícito contranatura" y transforma
automáticamente a byte el int 10. Ocurriría lo mismo si se trabajara con short y char.
Lo que pasa (y esto es lo que resulta un tanto extraño) es que no ocurre lo anterior
con los decimales: por eso, una línea como
Así, pasar de byte a short, de short a int, de byte a int, … es automático siempre y
cuando el entero a convertir no supere el rango del tipo convertido; en definitiva,
pasar de una variable primitiva de un tipo de la cadena de la siguiente línea a otra
que se encuentre a su derecha es automático.
byte-->short-->int-->long-->float-->double
Por consola:
Hola
Adios
En cambio, si se sustituye
Thread.sleep(3000000000L)
• Sí es posible realizar casting entre una variable primitiva char y una variable
primitiva que almacene enteros.
Ejemplo:
Por consola:
El estudio de esta sección del tema se recomienda a personas que no conocen las
estructuras típicas de programación comunes a la mayoría de lenguajes, tales como
los condicionales, los bucles for, los bucles while, las sentencias de ruptura break y
continue, etc.
Primero se realiza una somera explicación de los operadores y expresiones que más
frecuentemente se utilizan en cualquier lenguaje de programación y, a continuación,
se explican las estructuras mencionadas anteriormente.
Expresiones
Una expresión es una instrucción o sentencia que devuelve un valor llamado valor de
retorno y que asigna a una variable un
• Dato numérico
• Valor lógico
• Carácter
Ejemplo 1:
NOTA: los listados que no tienen número de línea no son códigos completos. Sólo muestran las
líneas asociadas a la explicación.
Ejemplo 2:
Operadores
Tipos:
• Aritméticos
• De asignación
• De comparación
• Lógicos
ARITMÉTICOS
• Suma +
• Resta –
• Producto *
• División /
• Resto de la división entera o módulo %
• Incremento unitario ++
• Decremento unitario –
• Incremento de cien en cien +=100
• Decremento de cien en cien -=100
NOTA: se muestran algunos ejemplos del operador módulo o resto de la división entera de dos
números. Debe tenerse en mente que Dividendo=(Divisor*Cociente)+Resto
75%3.5=1.5
7.5%35=7.5
7.5%3.5=0.5
Por consola:
1
NOTA: sólo aparece la parte entera de la división por que se trabaja con dos números
almacenados en variables enteras. Si se quiere obtener la división incluyendo decimales, bien el
numerador o el denominador, deberían declararse como double o float.
Por consola:
Valor de x: 11
Por consola:
Valor de x: 11
Valor de y: 10
Ejemplo 4:
Por consola:
Valor de x: 11
Valor de y: 11
DE ASIGNACIÓN
• x+=y x=x+y
• x-=y x=x-y
• x*=y x=x*y
• x/=y x=x/y
• x%=y x=x%y Es el módulo o resto de una división
Ejemplo 1:
Por consola:
Valor de z: 8
FIN DE PROGRAMA
Ejemplo 2:
Por consola:
El valor de a es 9 y el de b es 27
FIN DE PROGRAMA
DE COMPARACIÓN
Ejemplo:
Por consola:
Valor de z: true
FIN DE PROGRAMA
LÓGICOS
• && (Y lógico): si todas las expresiones lógicas que se evalúan son verdaderas
se devuelve un valor booleano true; si alguna es falsa, devuelve false.
Ejemplo 1:
Por consola:
Valor de z: true
FIN DE PROGRAMA
Ejemplo 2:
Por consola:
Valor de z: true
FIN DE PROGRAMA
Sintaxis:
Ejemplo:
Por consola:
FIN DE PROGRAMA
NOTA 1: si el bloque de código del if tienen una sola línea de código no es necesario utilizar llave,
aunque si se escribe, no da error. Lo mismo ocurre con el bloque de código alternativo
NOTA 2: si no se escribe el else opcional y no se cumple la condición del if, el programa continúa
ejecutándose pasando a las siguientes líneas de código
NOTA 3: si se cambia el valor de la variable int edadLuis a 16, entonces se ejecutará el bloque de
código del else. Es decir, por consola se mostrará:
Operador ternario
NOTA: los valores que se devuelven deben ser compatibles con los que admite la variable que se
inicializa
Sintaxis:
NOTA: si el bloque de código de los if tienen una sola línea de código no es necesario utilizar
llaves, aunque si se escriben, no da error. Lo mismo ocurre con el bloque de código alternativo
Ejemplo:
Por consola:
BIENVENIDO AL PROGRAMA
FIN DE PROGRAMA
Condicional switch
• Limitación 1: sólo admite una condición. No son validos los operadores && y
||.
Ejemplo 1:
Por consola:
El operador es +
El operador es *
El operador es /
Operador desconocido
FIN DE PROGRAMA
Explicación:
Se ejecutan todas las instrucciones a partir del segundo case (es el que coincide con
la variable operador). Si no hay ningún case coincidente, se ejecuta el código
asociado a default.
NOTA 1: no se puede repetir ningún case con el mismo valor. Se produce error de compilación
NOTA 2: si se quiere que el programa, cuando encuentre el primer case coincidente con el valor de
la variable evaluada, salga del switch, debe agregarse a cada case la instrucción break del
siguiente modo:
Ejemplo 2:
Por consola:
El operador es +
FIN DE PROGRAMA
Bucle for
Sintaxis:
Ejemplo 1: se quiere desarrollar un programa que muestre por consola los números
del 0 al 4. En este momento sólo se podría hacer de la siguiente manera:
Por consola:
FIN DE PROGRAMA
Este ejemplo se hace mucho mejor y con menos trabajo para el programador
mediante un bucle for:
Por consola:
01234FIN DE PROGRAMA
Sentencias break, return y continue
Break
Return
Ejemplo 1:
Por consola:
012
Por consola:
012
Ejemplo 2:
Por consola:
Has introducido 10
FIN DE PROGRAMA
Continue:
Aplicable sólo a bucles. Finaliza la iteración "i" que en ese momento se está
ejecutando (significa que no ejecuta el resto de sentencias hasta el final del bucle) y
vuelve a analizar la condición del bucle, pero con la siguiente iteración "i+1".
Por consola:
0 1 2 4 5 6 7 8 9 10
Bucles anidados
Es uno o más bucles for dentro de otro. Se pueden poner los que se consideren
necesarios.
Ejemplo 1:
Por consola:
1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3 4.1 4.2 4.3
FIN DE PROGRAMA
Ejemplo 2:
Por consola:
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55
Bucle while
Estructura utilizada para repetir una o varias líneas de código siempre y cuando se
cumpla una condición.
Sintaxis:
NOTA: si el bloque de código que se repite tiene una sola línea no son necesarias las llaves
Ejemplo: realizar un programa que muestre por consola los números enteros
comprendidos entre el 0 y el 5 ambos incluidos.
Por consola:
Bucle do .. while
Sintaxis:
NOTA: si el bloque de instrucciones que se repite tiene una sola línea no son necesarias las llaves
Ejemplo: realizar un programa que muestre por consola los números enteros
comprendidos entre el 0 y el 5 ambos incluidos.
Ya se especificó cuando se estudió la variable primitiva char, que Java emplea para
representar caracteres este código. Se trata ahora de mostrar por consola los
caracteres Unicode del alfabeto occidental sabiendo que están contenidos en el
intervalo [0,255]. Para ello se utilizará un bucle for
Alcance de variables
El alcance de una variable indica la parte del programa donde puede utilizarse.
En base al alcance, las variables se clasifican en:
• Variables locales
• Variables de instancia
Cada una de las variables anteriores puede ser estática o no. Durante el desarrollo
del tema se irán viendo las características que definen a los diversos tipo de
variables. Todos los códigos en c:\cursojava\tema2 o en
jcreator_home\MyProjects\tema2 si se emplea JCreator.
Variables locales
Se declaran dentro de métodos o de instrucciones asociadas a bucles for,
estructuras condicionales, etc. Su alcance se restringe al código del método o de la
instrucción. No admiten modificadores de acceso salvo "final" y deben estar
inicializadas antes de ser empleadas.
Ejemplo:
Variables de instancia
Se declaran después de la clase y fuera de cualquier método. Los valores que
asumen para cada objeto constituyen el estado o conjunto de atributos del objeto.
Para acceder desde el método main o desde cualquier otro método estático a
una variable de instancia es necesario crear un objeto de la clase.
Ejemplo:
Por consola:
---------------------
Tiene 27 años
---------------------
Se mostrará el elemento nulo asociado a los valores iniciales de los diversos tipos de
variables. Así, en las variables primitivas enteras (byte, short, int y long) dicho
elemento nulo es 0, en las reales (float y double) es 0.0, en las booleanas es false y
en las referenciadas (asociadas a objetos de clases) es null.
Tiene 0 años
---------------------
Tiene 0 años
---------------------
Suelen emplearse para definir constantes comunes a todos los objetos de la clase.
Ejemplo 1:
Por consola:
Su planeta es la Tierra
---------------------
Su planeta es la Tierra
Tiene 27 años
---------------------
Ejemplo 2:
Por consola:
Ejemplo:
Por consola:
Ahorros=2500.0
Ahorros=4500.0
Numero de huchas=2
NOTA: muchas clases de la API disponen de métodos estáticos. Por ejemplo, la clase Math del
paquete java.lang cuenta con multitud de ellos. Estos métodos se emplean para realizar
operaciones matemáticas. La clase Thread, del mismo paquete, cuenta con varios: uno que se
emplea para retardar la ejecución de código es “void sleep(long retardo)”. Consultar la API. Lo
importante de estos métodos es que para su utilización no es necesario instanciar un objeto de las
clases en las que se encuentran ya que son estáticos.
Ejemplo 2:
Por consola:
Clase Math
Esta clase contiene variables de campo y métodos estáticos utilizados para
realizar operaciones matemáticas que van desde el cálculo de una raíz cuadrada
hasta el de funciones trigonométricas. Se van a comentar los menos conocidos. Para
familiarizarse con el resto ir a la API.
Ejemplo:
Ejemplo:
NOTA: si la cifra base para el redondeo es mayor o igual que 5, se aumenta en una
unidad la cifra anterior; si la cifra base es menor que 5, no se modifica la cifra anterior.
Ejemplo:
Así, la clase Integer dispone del método "static int parseInt(String)" que transforma
la String del argumento en un número que se almacena en la variable primitiva int.
Ejemplo:
Por consola:
135
125125
11
Clase Integer
Se va a estudiar la clase Integer. El estudio del resto de clases envoltorio es similar
exceptuando Character y Boolean.
CLASE ASOCIADA:
CONSTRUCTORES:
Los constructores son métodos especiales del mismo nombre que la clase a
la que pertenecen y sin tipo de retorno, que se emplean para crear e
inicializar objetos de una clase y que no admiten tipo de retorno. Cada clase
perteneciente a la API de Java tiene los suyos propios y pueden estudiarse sin más
que consultarla. Para crear un objeto de una clase se utilizará un constructor
de la misma y la palabra reservada de Java new. Además de los constructores
de clases de la API, pueden definirse constructores de clases propias realizadas por el
programador, que no forman parte de la API (se verán más adelante).
• static int parseInt(String num, int base): ídem anterior, pero indicando en
el segundo argumento el sistema de numeración (base 2, base 8, base 10, base
16, etc.) en el que se expresa el primer argumento.
Ejemplo:
Ejemplo 1:
Por consola:
126
Ejemplo 2:
Por consola:
47
47
47
47
java.lang.Character. Al igual que Integer es una clase "final" y, por tanto, no puede
heredarse de ella.
CONSTRUCTORES:
MÉTODOS INTERESANTES:
Ejemplo:
Por consola:
b
true
false
true
☺☻♥♦♣♠♫☼►◄↕‼§▬↨↑↓→←∟↔▲▼!"#$%&'()*
+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP
QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx
yz{|}~⌂????????????????????????????????áíóú
ñѪº¿®½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ
╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙ
ýݯ´ ±‗¾§÷¸°¨•¹³²■
Comentarios
Un comentario es un conjunto de línea/s de código que no se tienen en cuenta en
tiempo de compilación ni de ejecución. Se utilizan para facilitar la lectura y
comprensión del código. Hay tres tipos:
Ejemplo:
Por consola:
Adios
FIN DE PROGRAMA
Ejemplo:
Por consola:
0 1 2 3 4 5 FIN DE PROGRAMA
javadoc <NombreCodigoFuente.java>
Su nombre es Yako
Yako esta hambriento
-------------
Alimentando al perrito
--------------
Su nombre es Yako
--------------
Alimentando al perrito
No gracias, ya he comido
javadoc Perro.java
NOTA 2: los javadocs son mucho más elaborados que el asociado al código anterior. Un ejemplo
puede obtenerse de
http://jcharts.sourceforge.net
Ejercicio 1
Resolver una ecuación de segundo grado y realizar una serie de cálculos con sus
soluciones reales, tomando como punto de partida el siguiente código comentado:
Por consola:
Ejercicio 2
A) Dado el siguiente código, averiguar si va a producirse error de compilación.
Si consideráis que la compilación se realiza con éxito, indicar qué se mostrará por
consola al ejecutarlo.
Ejercicio 3
Qué se mostrará por consola al compilar y ejecutar el siguiente código?
Ejercicio 4
Realizar un código que convierta un número entero positivo almacenado en una
variable de tipo int en su correspondiente valor expresado en el sistema hexadecimal,
octal y binario.
Por consola:
Numero 47 en hexadecimal: 2f
Numero 47 en octal: 57
Clase String
Una String es una variable referenciada asociada a un objeto de la clase
java.lang.String. Se emplea para almacenar cadenas de caracteres.
Las Strings tienen una característica que las diferencia del resto de objetos:
son inmutables, es decir, cuando se intenta modificarlas, por ejemplo al aplicarles
un método, no se modifican sino que se crea otra String nueva.
NOTA: los listados que no tienen número de línea no son códigos completos. Sólo muestran
las líneas asociadas a la explicación.
Por consola:
Jesus Fernandez
Gráficamente:
Se verá más adelante que los objetos desreferenciados son candidatos a ser
eliminados de la memoria mediante un recolector de basura o garbage collector,
que trabaja en un segundo plano de forma transparente para el programador. Esto
hace que la gestión dinámica de la memoria no sea una preocupación de primer nivel
para un programador Java y que pueda focalizar toda su atención en desarrollar
buenos códigos.
Código fuente
Por consola:
Jesus
Jesus Fernandez
11
Gráficamente:
Otras dos características de las Strings son:
• Una String está indexada, es decir, cada uno de sus caracteres tiene asociado
un índice: 0 para el primero, 1 para el segundo, etc.
CLASE ASOCIADA:
CONSTRUCTORES:
Ejemplo:
Ejemplo:
Se crea una String llamada cadenaBis pasándole al argumento del constructor otra,
pero creada como si fuera una variable primitiva.
CONCLUSIÓN: cuando se trabaja con Strings no suele emplearse ningún constructor sino que se
hace uso de la propiedad anteriormente comentada. Así, si se desea crear una String y mostrarla
por consola, el código habitual sería:
System.out.println(cadena);
MÉTODOS PRINCIPALES:
Para poder aplicar estos métodos es necesario crear un objeto String. Además de
estos métodos, la clase String cuenta con otros muchos. Consultar la API para más
información.
Ejemplo:
Por consola:
• int indexOf(String str, int indice): devuelve el índice en el que aparece por
primera vez la String del primer argumento en la que se aplica el método, a
partir del índice especificado en el segundo argumento. Recordar que una String
está indexada. Si el índice a partir del que se inicia la búsqueda no existe o la
String no aparece, devuelve –1. MUY USADO.
Ejemplo:
Por consola:
• int indexOf(char ch): devuelve el índice en el que aparece por primera vez el
carácter que se le pasa al argumento. Si no se encuentra el carácter devuelve –
1. Se observa que el nombre de este método es igual al anterior aunque su
número de argumentos es distinto además de su tipo. A esto, en Java, se le
llama sobrecarga de métodos: mismo nombre pero distinto nº de
argumentos o distinto tipo de argumentos o distinto orden. Ir a la API
para comprobar que hay más con este mismo nombre. Este concepto se tratará
más en profundidad en temas posteriores.
Ejemplo:
Por consola:
cucu
coco
Ejemplo:
Por consola:
14
12
Ejemplo:
Por consola:
rrucu
NOTA 1: los métodos anteriores que devuelven una String NO MODIFICAN la String sobre la
que se aplican; lo que hacen es crear otra nueva, en base a la que se emplea para aplicar el
método. Recordar la inmutabilidad de las Strings
NOTA 2: ahora que ya se está un poco más familiarizado con los objetos, métodos y variables
usados en Java se puede entender mejor la línea de código que se ha venido empleando para
mostrar mensajes por consola “System.out.println(String str)”. La explicación para esta línea
sería la siguiente:
Otra cuestión que se va a introducir y cuyo uso se verá más adelante es la siguiente:
si se quiere convertir a String un objeto de cualquier clase, puede emplearse el
método “void toString()” de java.lang.Object. Ojo pues este método sólo es
aplicable a objetos, NO a variables primitivas.
Ahora conviene realizar los cuatro primeros ejercicios del tema. El número 4
tiene carácter obligatorio: si no se envía al tutor, al alumno no podrá acceder
al siguiente tema del curso.
Java modela flujos mediante clases del paquete java.io. Este paquete se
estudiará más adelante, por el momento se va a explicar cómo una aplicación Java
captura datos introducidos por el usuario a través del teclado y cómo realiza todo tipo
de operaciones sobre los mismos.
Captura de datos desde teclado
Se necesita lo siguiente:
Bueno, pues en la API se observa que un objeto de esta clase es lo que devuelve
la variable de campo estática "in" de la clase java.lang.System. Además, la
explicación API de esta variable nos dice que representa la entrada estándar de
datos de un programa Java. Pues ya está.
CONCLUSIÓN: en los códigos que capturen datos procedentes del teclado, se empleará
System.in para modelar el teclado.
CONCLUSIÓN: en los códigos que generen salida a través de la consola del DOS, se
empleará System.out para modelar la consola del DOS.
No es esta la única forma de interaccionar con el exterior que tiene un código Java.
Más adelante se verá cómo se puede generar salida creando un fichero, por ejemplo.
• Crear un flujo que permita al programador leer datos del teclado. Este
flujo va a ser de entrada o lectura de datos y va a modelarse con una objeto
de la clase InputStreamReader. Ir al API y estudiar sus constructores.
CONCLUSIÓN GENERAL:
Ejemplo: muestra cómo se programa un código Java que tiene que capturar datos
introducidos por el usuario desde teclado.
Ejemplo:
Código fuente
Por consola:
Suma de 10 y 23 es 33
NOTA: la creación del filtro podría hacerse en una sola línea de este modo:
Ejercicio 1
Crear una clase pública de nombre EjercicioString1 que contenga sólo al método
main y partiendo de la String "En mi proxima vida, creere en la reencarnacion"
declarada e inicializada como variable primitiva, mostrar por consola lo siguiente:
1. Su longitud
2. El carácter asociado al índice 7
3. La subcadena "creere"
4. El índice que ocupa el carácter 'x'
5. La String transformada en mayúsculas
6. Por último, comprobar si el primer carácter de la String es 'E' y mostrar por
consola un mensaje que lo indique.
Por consola:
Longitud de la cadena: 46
Ejercicio 2
Crear una clase pública de nombre EjercicioString2 que contenga sólo al método
main y que muestre por consola el número de veces que aparece la letra "a" en la
siguiente String "Mañana es sabado sabadete y voy a irme a tomar unas copillas por
los barrios bajos de Logroño"
Por consola:
Por consola:
Exceso de letra a
Exceso de letra o
Exceso de letra e
FIN DE PROGRAMA
Ejercicio 4 (obligatorio)
Verificar si una cadena de texto almacenada en la String nif, es un NIF correcto o no.
Si lo es, se mostrará por consola su parte numérica; si no lo es se mostrará el
mensaje "NIF no valido". Se tendrá en cuenta lo siguiente:
Suponer que los NIFs tienen 8 dígitos y, a continuación, una letra (no importa que
sea mayúscula o minúscula).
PISTAS: dos condiciones que debe cumplir el NIF: tener 9 caracteres y que el último
sea una letra. Comprobado esto, verificar que el resto de caracteres son dígitos.
RECOMENDACIONES:
• Si NIF correcto:
FIN DE PROGRAMA
• Si NIF incorrecto:
FIN DE PROGRAMA
Ejercicio 5
Calcular el volumen de un cilindro y el de una esfera previa introducción de la altura
y radio del cilindro, así como del radio de la esfera. Se definirá un método para el
cálculo del volumen del cilindro y otro para el de la esfera. Se emplearán métodos
estáticos de la clase Math y la variable de campo estática que almacena el valor de
pi.
NOTA: cuidado con las fórmulas que contienen fracciones. Java considera (4/3) como
1 ya que, por defecto, los numeros enteros se almacenan en una variable int y el
cociente de dos enteros para el programa es otro entero. Habría que hacer que el
numerador fuera un double para que el cociente también lo fuera. Cómo?
Por ejemplo sustituyendo (4/3) por (4.0/3). De este modo se tiene un cociente entre
un double y un entero. Es decir, un double.
Por consola:
Volumen cilindro=70.68583470577035
Volumen esfera=523.5987755982989
FIN DE PROGRAMA
Ejercicio 6
Realizar un programa Java compuesto de una clase pública de nombre
AdivinarNumero que contenga sólo al método main. Su objetivo será permitir que el
usuario averigüe un número entero generado aleatoriamente y comprendido entre
[0,100] que se almacenará, dentro del código del programa, en una variable int a la
que se llamará numero.
Por consola:
---------------------------------------
---------------------------------------
50
100000
40
42
41
FIN DE PROGRAMA