You are on page 1of 9

Desarrollo de Funciones en el Sistema Informático

Curso 2008/2009

Programación en Java (y II). Orientaciones didácticas

 Parte teórica
 Parte práctica
 Base de conocimiento (alias preguntas más frecuentes)

Quincena 08. Orientaciones didácticas Página 1 de 9
Desarrollo de Funciones en el Sistema Informático
Curso 2008/2009

Parte teórica
En el tema 8 debéis leer únicamente el apartado 5.5. Al finalizar este apartado, conoceréis las
características básicas (todas las que nosotros necesitaremos) del lenguaje Java. Y "sólo"
quedará el estudio de los conceptos de programación orientada a objetos, que dejaremos para
los siguientes temas.

Este apartado muestra las diferencias entre C++ y Java. Aunque en el módulo de
Fundamentos de Programación habéis estudiado C, seguramente entenderéis la mayoría de
cosas sobre las que os hablan, ya que C++ es una evolución del lenguaje C. En cualquier caso,
si tenéis alguna duda, planteadla. Para eso estamos.

El punto 5.5.1 es una explicación de cómo maneja Java la entrada/salida. Básicamente, cómo
imprimir por pantalla y cómo leer del teclado. Veréis que mostrar un mensaje es bastante
sencillo, pero no así la lectura desde teclado. Poned mucha atención a esto, ya que es
primordial que lo entendáis.

En el punto 5.5.2 se habla del preprocesador, que deja de existir en Java. En resumen: los
define desaparecen y su equivalente en Java son variables final (constantes); los include
también desaparecen y para la reutilización de código se utiliza import.

El punto 5.5.3 os explica cómo declarar variables y constantes.

Los tipos de datos se estudian en el punto 5.5.4. De este apartado, es fundamental que
entendáis la parte final, donde se os explica cómo se trabaja con cadenas de caracteres en
Java.

El punto 5.5.5 os tiene reservada una de las grandes alegrías que nos brinda Java: la
eliminación de los "inquietantes" punteros de C y C++. Y además, Java también se encarga
por nosotros de gestionar el espacio dinámico que pueda crearse en la ejecución de un
programa y que ya no se utiliza.

El último punto de este tema (5.5.6) nos explica la utilización de funciones y el paso de
parámetros.

Una cosa más: puede que durante la lectura de este apartado encontréis algunos conceptos de
programación orientada a objetos (POO) que desconocéis. Es normal porque todavía no hemos
estudiado la POO. Si en algún momento os parece difícil seguir la lectura del apartado, haced
las preguntas que creáis oportunas y/o consultad el apartado 4.2 de esos mismos apuntes,
donde se explica el paso de C a C++. Es decir, en primer lugar estudiáis el paso de C a C++ y
en un segundo lugar el paso de C++ a Java. La decisión es vuestra.

Quincena 08. Orientaciones didácticas Página 2 de 9
Desarrollo de Funciones en el Sistema Informático
Curso 2008/2009

Parte práctica
La octava Prueba de Evaluación Quincenal del módulo es una práctica dividida en tres partes.

1. La primera es una continuación de la última parte de la anterior PEQ. La única
diferencia es que, en lugar de crear vosotros el programa, ya tenéis el código creado.

2. En la segunda parte tenéis un código que deberéis corregir. Con esta parte pretendo
que conozcáis un poco más el trabajo con Eclipse (veréis que es muy cómodo y
extremadamente potente). La corrección de errores es, desgraciadamente, uno de los
apartados que más tiempo consume en el trabajo diario de un desarrollador.

3. La tercera parte consiste en crear un programa en Java "con un poco más de chicha"
que el "Hola mundo". No obstante, os he dejado dentro del propio código indicaciones
paso a paso de lo que debéis hacer en cada momento. Para mi, lo más importante de
esta parte es que lleguéis a controlar cómo trabajar con la API (Application
Programming Interface) de Java.

Recordad que para acceder a la evaluación cuatrimestral, la entrega de todas las PEQs es
obligatoria (y cada una de ellas debe tener una nota superior a 2).

Quincena 08. Orientaciones didácticas Página 3 de 9
Desarrollo de Funciones en el Sistema Informático
Curso 2008/2009

Base de conocimiento
De Alejandro Beltrán Navarro:
Para realizar el primer apartado de la practica, hay que realizarlo como el de "Hola mundo" de la anterior
practica, creando un nuevo "java project" en Eclipse y pegando el contenido de el archivo
LogStrTok.java??
Yo lo he hecho así y me da de salida por la consola el siguiente resultado:

tokens = 19
Hostname: 123.45.67.89
Date/Time: [27/Oct/2000:09:27:09 -0400
Request: ]
Response: /java/javaResources.html
ByteCount: HTTP/1.0"
Referer: 200 10450
User-Agent:

Esta bien así¿?¿
De Anónimo:
Sí, en principio creo que es tan sencillo como eso.

De Cristian Jorge Garcia Marcos:
Es correcto.

Para cuestiones de este tipo, utilizad el correo privado.

Saludos,

Cristian.

Quincena 08. Orientaciones didácticas Página 4 de 9
Desarrollo de Funciones en el Sistema Informático
Curso 2008/2009

De Alejandro Beltrán Navarro:

Voy muy perdido,
en el apartado 2, también se debe hacer como lo he hecho en el 1¿? Dónde se debe ejecutar el
programa java, en el eclipse con el botón de "Run", o hay alguna otra forma?

Y del código no entiendo ni la mitad.

Dónde debo buscar lo que pone en la práctica:
"Para la realización de esta PEQ8 es muy recomendable la consulta a la API (Application Programming
Interface) de Java. En concreto, las clases String y StringBuilder (sustituto de la clase StringBuffer) del
paquete java.lang y algunos métodos de la clase Arrays del paquete java.util."

De Amadeo Olmedilla García:

Hay un hilo en el blog creado por Cristian donde tienes un enlace a la documentación de la API de
Java (y encima en castellano)
Espero que te ayude.
Pd. Yo sí que estoy atorado en el apartado 3.

De Cristian Jorge Garcia Marcos:
Exacto. Pero tened cuidado con la versión en castellano, ya que los métodos también están
traducidos y, claro está, no funcionarán. Es decir, no existe un método añada de la clase
StringBuffer, sino que el método es append (añadir en castellano).

Por tanto, si tenemos:

StringBuffer dest = new StringBuffer(len);

no podríamos hacer esto:

dest.añada("fin");

ya que no existe ningún método Java que se llame añada. El método correcto sería:

dest.append("fin");

Por tanto, utilizad la versión en castellano sólo para conocer qué hace cada método. Después, id a
la versión inglesa para saber el nombre real del método.

PD: echa un vistazo de vez en cuando al blog, que se actualiza muy a menudo y contiene
información interesante.

De Cristian Jorge Garcia Marcos:

El código del apartado 2 contiene errores. Has de encontrarlos, corregirlos y hacer que se ejecute
correctamente.

La ejecución es siempre igual, con el botón Run de Eclipse. Con este botón se compila y se ejecuta a
la vez.

Respecto al código, la idea es que vayáis aprendiendo la sintaxis a través de un ejemplo ya creado. Os

Quincena 08. Orientaciones didácticas Página 5 de 9
Desarrollo de Funciones en el Sistema Informático
Curso 2008/2009

podría haber pedido que me hicierais un programa desde cero para calcular el factorial, obtener el
número primo a partir de uno dado, construir el triángulo de Tartaglia, ... Es decir, lo que se hace
típicamente al estudiar programación. Pero esta idea me parece más amena, ya tenéis el código y es
cuestión de comentar las dudas puntuales en el foro con el resto de compañeros. Es otra forma de
aprender un lenguaje de programación.

De todas maneras, siempre podéis empezar a programar de la "manera clásica". Si queréis hacer
ejercicios de esa manera, aquí tenéis el enunciado de un primer ejercicio:

"Escribe un programa en Java que calcule el factorial de un número introducido mediante el teclado."

Un saludo,

Cristian.

Quincena 08. Orientaciones didácticas Página 6 de 9
Desarrollo de Funciones en el Sistema Informático
Curso 2008/2009

De Anónimo:

Amb el text de la pràctica no em queda clar que hi ha que entregar, que hem d'entregar de cada apartat;
el codi .java, l' arxiu .class o tan sols la memòria amb el codi??

Gracies!

De Cristian Jorge Garcia Marcos:

De l'apartat A:
"De este apartado deberéis aportar los pasos (junto a los correspondientes pantallazos) que habéis
seguido para compilar y ejecutar el programa, así como el resultado de la ejecución.
Además, debéis enviar el fichero LogStrTok.class que se haya generado."

De l'apartat B:
Detectar i comentar quins errors hi ha, tipus i perquè es tracta d'un error.
Fer el que es demana a l'apartat A.
Enviar els arxius .java i .class corregits.

De l'apartat C:
Únicament enviar el fitxer .java i incloure'l en el fitxer pdf (per facilitar-me la tasca de correcció). El
fitxer .java estarà, òbviament, autodocumentat, amb els comentaris necessaris de les instruccions que
s'han afegit.

Ànim.

Una grandària recomanable de la solució són 10 fulls, com ja és habitual.

Cristian.

Quincena 08. Orientaciones didácticas Página 7 de 9
Desarrollo de Funciones en el Sistema Informático
Curso 2008/2009

De Santi Tur Querol:

En el ejercicio C, para devolver el string en minúsculas, se puede hacer en el return?
Yo lo he hecho así pero no me sale.
return minus.toLowerCase().toString();

De Amadeo Olmedilla García:

Primero lo que haces es quitarle los espacios y los signos de puntuación, etc. (lo que no son
caracteres o números)
¿Verdad?

Pues una vez hecho, si el resultado lo has pasado a una variable p.e. "limpio_string_1", con que
ejecutes el método -toLowerCase()- sobre esa variable te lo pasará a minúsculas.

ej. String minusculas_string_1=limpio_string_1.toLowerCase();

Con esto ya tienes la cadena en minúsculas.

Ahora ya sólo la tienes que ordenar y comparar con la otra (habiendo hecho lo mismo)

Espero que te ayude, que ya queda poco para la entrega.

De Anónimo:

También podrías hacer:

minus=minus.toLowerCase();

Ánimo!

De Cristian Jorge Garcia Marcos:

Haz los pasos poco a poco, tal y como te indico en los comentarios "TODO".
No hay ninguna función (método) donde tengas que devolver una cadena en minúsculas, la única
función que tiene de por medio la conversión a minúsculas es la función "sonAnagramas" y esa
devuelve un booleano.

¿En qué función estás devolviendo eso?

De todas formas, si minus es de tipo String, debes hacer:

minus=minus.toLowerCase();

Eso te deja minus como estaba, pero en minúsculas. No necesitas convertir a String con el método
toString(), porque ya es un String.

Espero que te sirva de ayuda.

Venga, que ya queda menos.

Cristian.

Quincena 08. Orientaciones didácticas Página 8 de 9
Desarrollo de Funciones en el Sistema Informático
Curso 2008/2009

De Santi Tur Querol:

Ok, primero al leer método, pensaba en hacer una función, pero al final lo he hecho dentro de boolean.
Con ordenarlo al utilizar la orden sort, me sale sort subrayado como si tuviera un error, he probado de
esta forma:

arrOrder = sort(arr);

De Anónimo:

Supongo que arr es el vector de caracteres (char[]), para usarlo correctamente tienes que hacer:
Arrays.sort(arr)
y te ordena el vector (no devuelve nada), si no recuerdo mal creo que para poder usar Arrays tienes
que haber importado el paquete java.util.*.

De Cristian Jorge Garcia Marcos:

Es exactamente como te indica Anónimo.

Aquí hay un par de cosas importantes en las que profundizaremos en la siguiente unidad (a partir de
mañana) dedicada a la programación orientada a objetos. Lo explico muy brevemente:

1. Los métodos pertenecen SIEMPRE a un objeto. Es decir, al contrario de lo que ocurre, por ejemplo,
en C, no puedes hacer algo como sort(arr), porque sort "está suelta". En su lugar, Java necesita un
objeto (equivalente a una variable) al que pertenezca ese método. Así, en Java sería algo como
objeto.sort(arr).

2. Ahora bien, en este ejemplo te puede surgir la siguiente duda: mi array se llama arr, por tanto
según lo comentado en el punto 1 debería hacer algo como arr.sort(), pero resulta que sort me pide
como parámetro mi array, es decir, que me obliga a hacer sort(arr). Entonces ¿cuál es el objeto que
tengo que
utilizar para llamar a sort? Para estos casos, Java nos permite de la propia clase. En este caso, la clase
es Arrays, y Java te permite hacer la llamada así:

Arrays.sort(arr).

Me gustaría aclarar que esto lo teníais también explicado en el blog. Echadle de vez en cuando un
vistazo.

Un saludo,

Cristian.

NOTA: Todos los comentarios tienen la autorización expresa de publicación de sus respectivos autores. Aquellos comentarios que aparecen firmados bajo la
autoría Anónimo, también se han publicado autorizados con la condición de no mostrar el nombre del autor.

Esta obra está bajo una licencia Reconocimiento-Compartir bajo la misma licencia 3.0 España de Creative Commons. Para ver una copia de
esta licencia, visite http://creativecommons.org/licenses/by-sa/3.0/es/ o envie una carta a Creative Commons, 171 Second Street, Suite
300, San Francisco, California 94105, USA.

Quincena 08. Orientaciones didácticas Página 9 de 9