Heyyyyyyyyyyyyyyy

Aprende a programar microcontroladores en C... http://tecdigitaldelbajio.com/software-tarjeta.html

lunes, 17 de agosto de 2009

Como saber que elemento de un ChoiceGroup se ha seleccionado



En el post del viernes 12 de junio al cual puedes acceder dando clic aquí se mostro como usar la clase ChoiceGroup, se mostraron también los tres tipos de ChoiceGroup que hay en Java Micro Edition y finalmente se mostro un ejemplo completo para crear una interfaz de usuario que hace uso de los tres tipos de elementos de la clase ChoiceGroup, con ese post y ahora que ya conocemos las instrucciones de condición podemos saber que elemento del ChoiceGroup se ha seleccionado, como se verá a lo largo de este post.

La figura siguiente muestra la interfaz de usuario creada para un ChoiceGroup tipo “exclusive”, que nos servirá para explicar esta lección.


Por otro lado en el post del martes 23 de junio el cual puedes ver desde aquí se mostró como acceder a la ayuda de Java, para ver los métodos de la clase TextField, ahora nos interesa la clase ChoiceGroup, siguiendo las instrucciones de ese post se puede llegar a la clase ChoiceGroup y a sus métodos como se ve en la figura siguiente (puedes dar clic en la figura para verla un poquito más grande):

De todos los métodos vemos cuál nos puede servir para saber que elemento del ChoiceGroup está seleccionado, el método que nos sirve para ello, es llamado getSelectIndex() el cual es remarcado en la figura, dando clic se puede acceder a más información del método, como se muestra en la imagen siguiente (da clic en la figura si lo deseas para verla más grande).


El método regresa el número de índice del elemento que ha sido seleccionado, este método se usa para los ChoiceGroup Exclusive y Popup, solamente, para los ChoiceGroup tipo múltiple se usa el método getSelectedFlags(), el cual no vamos a ver en este post hasta una entrada futura puesto que requiere de instrucciones especiales (arreglos) que no se han visto en el blog.

La figura siguiente muestra como Java ordena los elementos del ChoiceGroup de acuerdo a un número de índice.

Siempre Java los ordena así, eso es automático, el primer elemento tiene el índice 0 el segundo el 1 y así sucesivamente, así que para la figura anterior, donde se selecciona la opción mostrada (San Miguel de Allende) el resultado de la instrucción siguiente:

choiceGroup.getSelectIndex();

Regresa como valor un 0.

Si se selecciona la opción 3 (Celaya) el valor que regresa la sentencia es un 2 como ya imaginará el lector.El valor que se regresa se debe almacenar en una variable para después simplemente compararlo.

Para declarar la variable y obtener el valor del elemento elegido se hace con las sentencias siguientes:

int indice;
indice = choiceGroup.getSelectIndex();


Para realizar la comparación simplemente se usa la instrucción if, por ejemplo puede ser así, suponiendo que el Form tiene un StringItem:

If (índice == 0)
stringItem.setText(“ Respuesta incorrecta, inténtalo de nuevo “);
If (índice == 1)
stringItem.setText(“ Respuesta correcta, felicidades “);
If (índice == 2)
stringItem.setText(“ Respuesta incorrecta, inténtalo de nuevo “);
Bueno hasta aquí dejamos este post, queda pendiente un ejemplo completo de lo visto en esta entrada, mañana mismo espero que salga ese post.



Clic AQUI para leer más...!

viernes, 7 de agosto de 2009

Instrucciones de Condición Anidadas



Ups, perdón por este pequeño receso, pero ya estoy listo para la siguiente lección vamos a hablar más de las instrucciones condicionales, específicamente de instrucciones de condición anidadas.

Una instrucción de condición anidada es cuando una instrucción condicional tiene en su rama del verdadero o falso otra instrucción condicional. No todo se puede arreglar con un solo if, existen una gran infinidad de programas que requieren de estructuras anidadas. Veamos algunos ejemplos de estos tipos de problemas, solo se muestra el código de la parte del if en la solución de los ejemplos.

Ejemplo 1

Realizar un programa que lea un número y que indique si es positivo y además mayor que 10.

Solución

Con una comparación con 0 descubrimos si es positivo o no, si lo es, basta con agregar otro if para compararlo con 10 e indicar si es positivo y mayor que 10 este es el código:
if ( Numero >= 0 ) {
if (Numero > 10) {
stringItem.setText("El Número es positivo y mayor a 10");
}
else {
stringItem.setText("El Número es positivo y menor a 10");
}
}
else
stringItem.setText("El Número es negativo");

En el ejemplo se puede observar claramente como en la rama del verdadero del primer if se agrega otro if, lo anterior es lo que conocemos como if anidados, un if dentro de otro if.

Algo importante es la sangría (el espacio que se deja al iniciar las sentencias), se utiliza para ir agrupando claramente los if, y no confundirse, es altamente recomendable agregar la sangría a los if.

Ejemplo #2

Realizar un programa para ingresar la longitud de tres lados de un triangulo (L1, L2 y L3) y que el programa indique si el triangulo leído es equilátero (los tres lados iguales), o si es isósceles (solo dos lados son iguales) y finalmente que indique si es escaleno (los tres lados diferentes).

Solución

Otra vez se requiere varias comparaciones, varios if anidados, por ejemplo para saber si el triangulo es equilátero, se comparan los lados para saber si son iguales, como se observa en el código siguiente:

if ( L1 == L2 ) {
if ( L2 == L3)
stringItem.setText("El triangulo es equilatero");
}
Para saber si es el triangulo es isósceles se requieren varias comparaciones para comprobar las tres opciones posibles, para saber si hay dos lados iguales de la siguiente forma:
if ( L1 == L2 ) { //Opción 1: cuando L1 es igual a L2 pero diferente a L3
if ( L3 != L1)
stringItem.setText("El triangulo es isósceles");
}
else {
if ( L1 == L3 ) { //Opción 2: cuando L1 es igual a L3 pero diferente a L2
if ( L2 != L1)
stringItem.setText("El triangulo es isósceles");
}
else {
if ( L3 == L2 ) {//Opción 3: cuando L3 es igual a L2 pero diferente a L1
if ( L1 != L2)
stringItem.setText("El triangulo es isósceles");
}
}
}
No lo había mencionado en el blog pero // en Java significa un comentario y se agrega para explicar el código, hay que tener cuidado con las { } por eso precisamente se recomienda ampliamente el uso de sangría para identificar claramente los grupos de instrucciones que van en el if o en el else y cerrar adecuadamente las llaves.

Finalmente para saber si el triangulo es escaleno pues se compararan los lados para saber si son diferentes algo como el caso del triangulo equilátero, este es el código.

if ( L1 != L2 ) {
if ( L2 != L3)
if ( L1 != L3)
stringItem.setText("El triangulo es escaleno");
}
La animación siguiente muestra el código completo para este ejemplo, además se observa la ejecución del programa como la hace el procesador línea por línea para que el lector vea los caminos que se siguen con las diferentes combinaciones que hay.
Basta con introducir los valores de los lados del triangulo en los campos de texto y dar clic en el botón de iniciar la animación, al hacerlo aparece una línea azul que indica las comparaciones que hace el procesador hasta encontrar la solución.

Operadores Lógicos

Afortunadamente en java existen los llamados operadores lógicos que me permiten cambiar los if’s anidados en un solo if. Los operadores lógicos que veremos son los siguientes:

Operador AND ( Y )

La sintaxis del operador es así: &&

Su tabla de verdad nos muestra cuando dos variables unidas por un AND son verdaderas o falsas:
Operador 1Operador 2Operador 1 AND Operador 2
FFF
FVF
VFF
VVV

Véase la tabla de verdad, solo hay una opción para que el operador AND sea verdadero: cuando sus dos operadores sean verdaderos.

Con este operador se puede saber si el triangulo es equilátero con un solo if así:
if (( L1 == L2 ) && ( L2 == L3)) {
stringItem.setText("El triangulo es equilátero");
}
Haciendo una analogía con la tabla de verdad, el operador 1 es (L1 == L2), el operador AND es && y el operador 2 es (L2 == L3) así que, podríamos decir con el if que “Si L1 es igual que L2 y L2 igual que L3 entonces el triangulo es equilátero”.

Recuerde la sintaxis el operador AND es && y siempre debe haber ( ) que encierran toda la expresión y de preferencia cada operador por ejemplo (L1 == L2) también hay que encerrarlo entre ( ).

Para saber si el triangulo es escaleno también se pude usar este operador de la siguiente forma:

if (( L1 != L2 ) && ( L2 != L3) && ( L1 != L3 )) {
stringItem.setText("El triangulo es escaleno");
}
¡¡Que tal, tres if’s los cambiamos por uno solo!!

El operador AND funciona con los operadores que sean, siempre recordando que para que la expresión sea verdadera a fuerzas cada operando tiene que ser verdadero.

Operador OR ( O )

La sintaxis del operador es así: ||

Su tabla de verdad nos muestra cuando dos variables unidas por un OR son verdaderas o falsas:

Operador 1Operador 2Operador 1 OR Operador 2
FFF
FVV
VFV
VVV

Con este operador basta con que un operador sea verdadero para que la expresión total sea verdadera.

Por ejemplo para saber si el triangulo es isósceles, se tienen tres opciones que podemos agrupar con el operador AND.

Opción 1: cuando L1 y L2 son iguales pero L3 es diferente

if (( L1 == L2 ) && ( L3 != L1)) {
}

Opción 2: cuando L1 y L3 son iguales pero L2 es diferente

if (( L1 == L3 ) && ( L2 != L1)) {

}

Opción 3: cuando L2 y L3 son iguales pero L1 es diferente

if (( L2 == L3 ) && ( L1 != L2)) {

}
Ahora bien las tres opciones se pueden agrupar con un OR, porque basta con que una de las opciones sea verdadera para que el triangulo sea isósceles, el código final para saber si el triangulo es isósceles queda con un solo if así:
if ((( L1 == L2 ) && ( L3 != L1)) || (( L1 == L3 ) && ( L2 != L1)) || (( L2 == L3 ) && ( L1 != L2))) { 

stringItem.setText("El triangulo es isósceles"); 
} 
En conclusión, los operadores lógicos pueden facilitarnos el trabajo cuando se trata de muchas instrucciones condicionales y más si son anidadas, como se vio en este ejemplo del triangulo, que se realizaba con más de 10 if’s y con los operadores lógicos se redujo a solamente 3. Hasta aquí vamos a dejar este post, recuerda practicar es la clave del éxito.



Clic AQUI para leer más...!

martes, 14 de julio de 2009

Ejemplo #9 Pide un número y dice si es positivo o negativo (ejemplo con if )



Realizar un programa en el teléfono celular, que pida un número y que el celular envié un mensaje y diga si el número leído es positivo o negativo.

Solución

Pues este es un ejemplo sencillo de cómo se utiliza la instrucción condicional if. Los pasos para el programa se muestran y se analizan en seguida.

  • Diseñar la interfaz de usuario.
  • Declarar las variables necesarias
  •  Obtener el dato de la interfaz
  •  Aplicar el if al dato para indicar si es positivo o negativo

1. Diseñar la Interfaz de usuario

La interfaz es prácticamente igual al ejemplo #8: un objeto TextField para ingresar el número, un objeto Command para realizar la ejecución del código y un objeto TextField o un StringItem para mostrar el resultado.

2. Declarar las variables necesarias

También esto es parecido al ejemplo anterior, Se requiere una variable para el TextField que es de tipo String y una variable para almacenar la conversión de la variable anterior que pasa de String a entero (int).

3. Obtener los datos ingresados por medio de la interfaz

Esto ya se vio en  este post, se utiliza el método getString().

4. Aplicar la instrucción condicional

La solución se vio en el post anterior, aquí reproduzco el código condicional, la variable Numero contiene el valor introducido por el usuario

if ( Numero >= 0 ) 

     stringItem.setText("El Número es positivo");                                                

else 

    stringItem.setText("El Número es negativo");                                                                                 

Video-Tutorial

Tal y como se acostumbra en el blog se puede ver la solución completa del ejemplo #9 en el siguiente video tutorial 

                     

 Código

También como ya se menciono podemos bajar la solución al ejemplo, en formato zip:   bajar ejemplo #9.

Más ejercicios

Ya se sabe, para cualquier cosa que deseamos aprender se requiere practica, mientras más ejercicios hagamos más aprendemos, más fácil vemos las cosas, la programación no es la excepción si deseo aprender a programar celulares necesito practica y más práctica, mucho más si yo soy principiante, así que aquí te dejo unos links de ejercicios que según yo se pueden hacer con lo que se ha visto en este blog, si lo deseas puedes intentar hacerlos.

http://www.mclibre.org/consultar/python/ejercicios/ej01_variables.html

Los siguientes link son ejercicios para el if

http://www.mclibre.org/consultar/python/ejercicios/ej03_if_else.html

http://docencia.50webs.com/EjerIF.htm

 




Clic AQUI para leer más...!

lunes, 13 de julio de 2009

Instrucciones de condición



Estructuras de Control

Para realizar programas más complejos cada vez, vamos a introducir instrucciones nuevas de Java, empezamos con las estructuras de control, estas me permiten modificar el flujo de ejecución de un programa. Se dividen en dos grandes grupos:

  • De condición
  • De Repetición

Instrucciones de Condición

Estas instrucciones de acuerdo a una condición, ejecutan un grupo de instrucciones u otro. Se evalúa una condición, si es verdadera ejecuta un grupo de instrucciones y si es falsa ejecuta otro grupo de instrucciones. Estas instrucciones me permiten tomar decisiones basándose en la evaluación de una condición.

Por ejemplo, para el siguiente programa se desea que se ingrese una calificación y si es mayor o igual a 70, que envié un mensaje de "APROBADO" en caso contrario que envié en el mensaje "REPROBADO".

La siguiente figura muestra como el programa "decide" uno de los dos caminos en base a la evaluación de la condición.




La sintaxis para realizar instrucciones de condición en Java es la siguiente:

if (condicion)

__{ grupo de instrucciones, cuando es verdadero }

else

__{ grupo de instrucciones, cuando es falso }

Para el ejemplo de la figura, suponiendo que usamos un objeto StringItem para mostrar el mensaje, le corresponde el código siguiente:


if ( Calif >= 70 ) {
__stringItem.setText("APROBADO");
}
else {
__stringItem.setText("REPROBADO");
}

Simulación del código

La siguiente animación muestra como ejecuta el código el procesador. Inserta un valor entre 0 y 70 dar clic en el botón de “iniciar” para que se vea lo que el procesador hece, que es comparar y elegir uno de los dos caminos dependiendo de si la condición es verdadera o falsa.




Operadores Relacionales en Java

En el ejemplo anterior para denotar si el numero es mayor o igual se usa el operador >= , la siguiente tabla muestra los operadores relacionales de Java.

Operador

Descripción

= =

Igual que

>

Mayor que

<

Menor que

>=

Mayor e igual que

<=

Menor e igual que

!=

Diferente


Más ejemplos

El objetivo de los siguientes ejemplos es mostrar diferentes sintaxis del if, no es el objetivo entrar en detalle de la solución exacta del problema.

Escribir solo el código condicional para los siguientes problemas:

1.- Programa que lea un número y que diga si es positivo o negativo:

Los números mayores e iguales a 0 son positivos en caso contrario son negativos, el código quedaría así:

if ( Numero >= 0 )
__stringItem.setText("Número Positivo");
else
__stringItem.setText"Número Negativo");

Nótese como se omitieron las { }, esto es válido, si y solo si, sigue una única instrucción como es el caso, si son más de una debe por fuerza llevar las { }

2.- Programa que lea el sueldo de un empleado y si supera los 5000.00 que le quite el 5 % de impuesto

Este es el código para el ejemplo:

if ( sueldo > 5000 ) {
__sueldo = sueldo - ((sueldo * 5 ) / 100 )
__stringItem.setText(" El sueldo total es " + sueldo);
}


Nótese como es posible omitir el else, cuando no es necesario se puede hacer, también nótese las llaves, recuerde si son dos o más instrucciones siempre van las llaves.

3.- Programa que lea un número y diga si es par o impar.

Un número es par si el resultado de la división entre el número y el 2 da como resultado un residuo de 0, y es impar si el residuo es 1, por ejemplo 433 / 2 da como residuo un 1, entonces el número es impar, 556 / 2, da como residuo un 0 el número entonces es par, para obtener el residuo de una división en Java se usa el %, el código es así:

if ( Numero % 2 = = 0 )
__stringItem.setText("Número Par");
else
__stringItem.setText("Número Impar
");

Programa que lea un número entre 1 y 7 y que escriba su correspondiente día de la semana. Si se ingresa el 1 que muestre "LUNES", si es el 2 "MARTES" y así sucesivamente.

Para este ejemplo la solución se puede realizar sin la necesidad del else, también el código muestra un mensaje de error si se insertan valores fuera del rango. Este es el código:

if ( Numero <= 0 )

__stringItem.setText("ERROR: Número fuera de rango");

if ( Numero == 1 )

__stringItem.setText(" El día es LUNES");

if ( Numero == 2 )

__stringItem.setText(" El día es MARTES");

if ( Numero == 3 )

__stringItem.setText(" El día es MIERCOLES");

if ( Numero == 4 )

__stringItem.setText(" El día es JUEVES");

if ( Numero == 5 )

__stringItem.setText(" El día es VIERNES");

if ( Numero == 6 )

__stringItem.setText(" El día es SABADO");

if ( Numero == 7 )

__stringItem.setText(" El día es DOMINGO");

if ( Numero > 7 )

__stringItem.setText("ERROR: Número fuera de rango");

Bueno hasta aquí termina este post, la próxima vez se realizará un ejemplo completo de esta instrucción condicional.



Clic AQUI para leer más...!

martes, 7 de julio de 2009

Ejemplo #8 Conversión de Grados Celsius a Grados Fahrenheit



Realizar un programa en el teléfono celular, que pida la temperatura en grados Celsius y la convierta a grados Fahrenheit, mostrando en pantalla un mensaje del tipo “xxx.xx grados Celsius son yy.yy grados Fahrenheit”

Solución

Analizando el ejercicio me tengo que preguntar, antes de empezar a programar en el NetBeans ¿Qué pasos lógicos tenemos que hacer para realizar el programa que me piden? A continuación se enumeran y son parecidos a los del ejemplo #7:

1. Diseñar la interfaz de usuario.
2. Declarar las variables necesarias
3. Obtener los datos ingresados
4. Aplicar la formula
5. Mostrar el resultado

Veamos cada paso con más detalle.

1. Diseñar la Interfaz de usuario

Si se han seguido los ejemplos del blog ya fácilmente podemos predecir que se requiere: un objeto TextField para ingresar el dato de la temperatura en Celsius, un objeto Command para realizar la ejecución del código de conversión de Celsius a Fahrenheit, y un objeto TextField o un StringItem para mostrar el resultado, en el blog anterior mostramos el resultado en un objeto TextField ahora se va a realizar en un objeto StringItem, la imagen siguiente muestra la interfaz de usuario para el ejemplo #8:


No se observa el StringItem, que muestra el resultado, hasta que se dé clic en el botón de Convertir y se ejecute la formula aparece, el mensaje se coloca con código como se verá más adelante.

2. Declarar las variables necesarias

Se requiere una variable para el TextField que es de tipo String esta variable almacena el valor ingresado por el usuario, se requiere una variable para almacenar la conversión de la variable anterior que pasa de String a decimal y finalmente una variable para almacenar el resultado cuando se aplica la formula. La declaración de una variable con decimales se realiza así:

float grados_Far;

3. Obtener los datos ingresados por medio de la interfaz

Esto ya se vio en el post anterior, se utiliza el método getString().

4. Aplicar la formula

La fórmula para convertir de Celsius a Fahrenheit es: grados_Far = grados_Cel * 9/5 + 32

5. Mostrar el resultado

El resultado se debe mostrar en un objeto de tipo StringItem. Una rápida vista a la documentación de java para identificar como enviamos un texto al StringItem nos lleva al método setText().

Ejemplos de este método son los siguientes:

Para enviar “hola mundo” al StringItem se escribe así:
 
 stringItem.setText(“hola mundo”);

En el ejemplo se pide el siguiente mensaje “xxx.xx grados Celsius son yy.yy grados Farenheit”, como aquí se involucran las variables usamos el operador de concatenación de cadenas de java el +, de esta forma:

stringItem.setText(grados_Cel + “ grados Celsius son “ + grados_Far + “ grados Fahrenheit”);

Por ejemplo si se insertan el 54.16 en el TextField el mensaje final que se muestra en el celular es
54.16 grados Celsius son 129.488 grados Fahrenheit.

Video-Tutorial

Tal y como se acostumbra en el blog se puede ver la solución completa del ejemplo #8 en el siguiente video tutorial


                          
Código

Y por si acaso fuera necesario agregamos a partir de hoy el código fuente y todos los archivos que genera NetBeans, incluyendo el archivo JAR que como se explico en un post anterior es el archivo que se envía al teléfono celular, recuerda este archivo se ubica en la carpeta dist.

Clic para bajar la solución en formato zip: Bajar ejemplo #8

Para verlo descomprimir el archivo, recuerda que se requiere el NetBeans 6.5, y se elije desde el menú: File> Open Project… buscar la carpeta Ejemplo_8 y listo.



Clic AQUI para leer más...!

jueves, 2 de julio de 2009

Ejemplo #7 Programa que calcula el área de un rectángulo



Ahora si por fin se tienen todos los elementos para realizar un programa más completo que simplemente interfaces de usuario, veamos el ejemplo.

Ejemplo #7

Realizar un programa que calcule el área de un rectángulo.

Solución

Siempre es altamente recomendable “analizar antes de programar”, yo simplemente hare una serie de pasos como mi análisis, hay por supuesto muchas técnicas para el análisis como el pseudocódigo, diagramas de flujo, hablando de la POO el lenguaje UML etc. No me meteré con esas cuestiones, simplemente se hará, un análisis sencillo del problema y pues a programar.

Análisis

Me piden que calcule el área de un rectángulo, que hacemos si lo vemos desde el punto de vista de las matemáticas: debemos saber los datos, en este caso la base y la altura, después debo aplicar la formula: A = base * altura, hago la operación y listo calculo el área del rectángulo usando una calculadora o si es fácil lo hago mentalmente y ya.

¿Qué pasos lógicos tenemos que hacer para realizar el programa que me piden? A continuación se enumeran:

1. Diseñar la interfaz de usuario.
2. Declarar las variables necesarias
3. Obtener los datos ingresados a la interfaz de usuario
4. Aplicar la formula
5. Mostrar el resultado

Veamos cada paso con más detalle.

1. Diseñar la Interfaz de usuario

Ya se mencionó en el párrafo anterior, yo necesito de la base y la altura para poder obtener el área, entonces hago la interfaz de usuario para que se puedan ingresar los datos ¿que elemento debo colocar para realizar la interfaz de usuario?, la respuesta es sencilla objetos TextField, debo crear uno para capturar la base, otro para capturar la altura y finalmente un último para mostrar el resultado del área, haaa y pues obviamente un comando para ejecutar la acción, que es la de calcular el área.

La figura siguiente muestra la interfaz de usuario para el cálculo del área de un rectángulo:


Recuerde que NetBeans automáticamente le asigna los nombres de textField, textField1 y textField2 a cada uno de los TextField de la interfaz, esto hay que tomarlo en cuenta ya que más adelante lo necesitaremos.

2. Declarar las variables necesarias

¿Cuántas variables se necesitan? Quizá se puede pensar que dos variables, una para el TextField de la base y otro para el TextField de la altura, pero no, se requiere otras tres variables, para cambiar los tipos de datos, recuerde que el TextField me da una variable String, pero la base y la altura de un rectángulo deben ser solo números, por lo que se necesitan más variables para convertirlas de String a entero (en este caso se va a restringir el problema a puros números enteros). Bueno entonces el código para crear las dos variables de tipo String es el siguiente:

String base;
String altura;

Claro que también se puede escribir así:

String Base, altura;

Después declaro otras tres variables de tipo entero, para poder realizar las conversiones de tipo y el cálculo del área de esta forma:

int intBase;
int intAltura;
int intArea;

También se puede escribir así:

int intBase, intAltura, intArea;

Recuerde que para la creación de las variables el programador se inventa los nombres, yo me invente esos nombres, quizá alguien simplemente escribe:

int b, h, a;

Lo cual también es correcto, eso de la creación de variables depende de cada quien.

3. Obtener los datos ingresados por medio de la interfaz

Esto ya se vio en el post anterior, se utiliza el método getString(), siguiendo la asignación de nombres de instancia de Netbeans, la base es el textField y la altura es el textField1, esto se logra con el código siguiente:

base = textField.getString();
altura = textField1.getString();

Con lo anterior se captura en las variables los valores que el usuario ingreso, pero como se mencionaba esté método nos da como resultado un valor String, aun que se haya teclado un solo número, por eso se debe realizar una conversión de tipo de String a int, esto se vio en el post anterior el código para realizarlo es el siguiente:

intBase = Integer.parseInt(base);
intAltura = Integer.parseInt(altura);

4. Aplicar la formula

Ahora si ya se tienen los valores de la base y la altura de tipo entero, simplemente aplicamos la formula, el operador para multiplicar en Java es el *, el código para calcular el área es el siguiente:

intArea = intBase * intAltura;

5. Mostrar el resultado

Ahora se debe mostrar el resultado del área que está en la variable intArea, dentro de la memoria del teléfono, ¿Cómo se puede enviar ese valor hacia el tercer TextField?. Para realizarlo se usa un método, el método se llama setString(), la figura siguiente muestra el método setString de la clase TextField, tal y como se muestra en la ayuda de Java.

Este método coloca el valor que se ingresa entre paréntesis dentro del TextField, remplazando el contenido previo, por ejemplo esta sentencia envía “Hola Mundo” a un TextField3:

textField3.setString(“Hola Mundo”);

En Java un String debe colocarse ente “ “, lo que va entre paréntesis es llamado parámetro, el otro método que conocemos el getString(), no lleva parámetro, este sí.
También es posible mandar directamente el valor de una variable de tipo String como parámetro, el siguiente código envía también “Hola Mundo” al TextField:
String letras;
letras = “Hola Mundo”
textField3.setString(letras);

Siguiendo el problema del área de un rectángulo, nos encontramos que el valor del área que está en la variable intArea, es de tipo entero (int) y el método setString() requiere de un valor String, ahora el problema es el contrario del que se tenía.

La solución es bien simple, agregando el operador + se pueden “juntar” dos cadenas, comúnmente a esto se le llama concatenar, aunque aquí no son dos string los que se unirán es una cadena vacía y un entero, veamos el código, para enviar el valor de la variable intArea al TextField2 usando el método setString():

textField3.setString(“” + intArea);

El operador + concatena la cadena vacía “” con el valor que está en la variable intArea y todo eso Java lo cambia a String, y listo se despliega el valor del área en el TextField.

Código completo

Enseguida se muestra una animación donde se muestra la interfaz de usuario y todo el código visto anteriormente, se usan dos valores 9 y 7 como datos, se debe dar clic en el botón, para que se vea el código y lo que va pasando en la memoria del teléfono hasta que se muestra el resultado del área.



¿Dónde va el código?

Para terminar con este post, veamos donde debe ir el código creado para el cálculo del área de un rectángulo. Como se menciono al iniciar, la interfaz de usuario cuenta con tres TextField y un objeto tipo Command, ya se vio en un post anterior, que un objeto Command es como un botón, cuando le dé clic tiene que ejecutar el código que ya conocemos. NetBeans de una forma intuitiva me “dice” donde va a ir el código cuando se dé clic al botón, para ello se da clic derecho encima del Command, y se elige “Go To Source” tal y como se observa en la figura siguiente:

Al hacer lo anterior NetBeans nos lleva justo a donde debemos insertar el código visto anteriormente, ahí lo tecleamos, ejecutamos el proyecto y probamos en el emulador que todo salga como era de esperarse.

Existe mucho código creado por NetBeans, para nuestro ejemplo #7, por lo pronto no me interesa analizar el código que se genera, me importa más realizar ejemplos parecidos al que se vio en este post, en su momento se explicara mucho del código que crea NetBeans.

Video-Tutorial

Finalmente, si todavía quedaron dudas en cómo hacer el programa explicado en este post, presento la solución completa en el siguiente video tutorial.





Clic AQUI para leer más...!

jueves, 25 de junio de 2009

Métodos, variables y tipos de datos de Java




En el post anterior se vieron los componentes de la clase TextField, en general todas las clases tienen los elementos siguientes: atributos, constructor y métodos. Vamos a hablar hoy más de los métodos.

También se menciono en el post anterior: “Los métodos representan acciones que puede realizar un objeto”.

Por ejemplo la imagen siguiente muestra la descripción del método getString() de la clase TextField, la imagen se obtuvo directamente de la documentación de Java, también se menciono en el post anterior como tener acceso a la documentación de java.


El método getString() obtiene el contenido del TextField como un valor String. Un String en java es una cadena de letras o números.


Es importante este método, porque con él se puede obtener la información que se va ingresando en el campo de texto. Esto nos sirve para realizar “algo” con la información tecleada, hasta el momento los ejemplos vistos en el blog, solo hacen interfaces de usuario, pero no hacen nada con la información que se puede teclear en el TextField.

En la figura siguiente se observan dos objetos TextField.


U
no de ellos me permite capturar el nombre de una persona, en este caso se capturo el nombre de “FATIMA”, NetBeans le asigna automáticamente a este objeto el nombre textField, el otro captura la edad de la persona, que es de 5, este recibe el nombre de textField1.

Ahora recordemos que hace el método getString(): “obtiene el contenido del TextField como un valor String “, con este método yo puedo saber que se ha escrito en el TextField, para saber cual dato deseo, si el de la edad o el nombre, se usa la notación punto:

nombre_del_objeto.nombre_del_metodo

¿Qué código escribo para obtener lo que se ha teclado en el TextField Nombre? La solución es la siguiente:

textField.getString()

Esa sentencia obtiene el nombre de “FATIMA”.

y ¿qué código obtiene lo que se tecleo en el textField edad? La solución es simple:

textField1.getString();

Esa sentencia obtiene el valor “5”

Bueno, pero se dice que getString() obtiene el valor del TextField, pero y ese valor ¿a dónde se va?¿o como lo puedo seguir usando?, aquí es donde entra el concepto de variable.

Variable

Una variable “es un área reservada de memoria”, yo puedo usar un área de memoria para almacenar el valor que me genera el TextField, y guardarlo ahí para después usarlo cuando yo lo necesite.

Pero como puedo crear una variable en java. Primero me debo preguntar: ¿que va almacenar la variable? ¿Letras, por ejemplo el nombre de una persona? ¿Números enteros, por ejemplo la edad de una persona? ¿Números con decimales, quizá la altura de una persona?, después de contestar esa pregunta se puede elegir de entre los tipos de datos que maneja Java.

Tipos de Datos

A continuación se muestran tres tipos de datos que maneja Java:

  • String. Usado para almacenar cadenas de caracteres.
  • int. Usado para almacenar números enteros.
  • float. Usado para almacenar números decimales.

Es obvio que para almacenar los valores que vienen del método getString() se deben usar variables tipo String, ¿si se ve porque, verdad?

Creación de una variable

Para crear la variable o el espacio de memoria, se debe asignar un nombre inventado por el usuario, se usa la siguiente sintaxis:

Tipo_de_dato nombre_de_la_variable

Por ejemplo la siguiente sintaxis muestra la creación de una variable:

String Nombre;

La variable se llama Nombre, es de tipo String, es decir, puede almacenar una cadena de caracteres. Note que la sentencia termina con ;

¿Cómo se declaran tres variables para almacenar el nombre, el apellido, la dirección y la edad de una persona?

La respuesta es sencilla, se realiza así:

String Nombre;

String Apellido;

String Dirección;

int Edad;

Otra opción es esta:

String Nombre, Apellido, Dirección;

int Edad;

Algo importante a la hora de elegir el nombre de una variable, puede ser cualquiera, aunque conviene utilizar nombres claros y relacionados con lo que va almacenar la variable.

También hay que seguir estas reglas:

  • No pueden contener espacios en blanco.
  • Dos variables no pueden tener el mismo nombre.

Finalmente ¿cual es el código para capturar los datos de los objetos TextField que se mostraron en la parte de arriba?

Solución: recordando un poquito eran dos objetos llamados textField y TextField1, uno captura el nombre y otro captura la edad, el código completo se muestra con la siguiente animación



En la animación se muestra el código para capturar los datos de los TextField, estos datos se almacenan en la memoria del teléfono celular, despues se pueden usar para realizar otra cosa como lo veremos en otra entrada.

Nótese como Edad a pesar de que es un número se declara como String ¿Por qué? porque el método getString() obtiene el valor como un String no importa que escriba uno, siempre regresa un string, asi esta creado este método, por eso es interesante conocer como cambiar de string a entero.

Como cambiar un String a un tipo de dato int

La respuesta la encontramos en la clase Integer, puede el lector si lo desea buscar en la documentación de Java, ahí están los métodos de esta clase. Entre todos sus métodos está uno para cambiar un String a un entero se llama:

Integer.parseInt(valor_tipo_string)

Tomando de referencia la variable Edad podemos escribir el siguiente código para cambiar el String Edad a un tipo int, así:

X = Integer.parseInt(Edad);

Toma el valor de la Edad que es String y lo convierte a int, entonces después de esa sentencia la variable X debe tener el valor numérico de 5, previamente se debe declarar X de tipo entero.

Ups, pensé que hoy podría ver otro ejemplo, pero no, lo dejo para la próxima entrada, creo que por hoy ya es mucha la información que hay que digerir, la próxima entrada mostrará el ejemplo #7 donde vamos a aplicar todo lo que se vio en este post y en el anterior, además vamos a ver donde se debe ubicar el código Java, el que se ve en la animación.




Clic AQUI para leer más...!