You are on page 1of 109

PROGRAMACION II

INDICE GENERAL

01. Generalidades sobre los lenguajes de programacin usando Java - NetBeans 02. Operadores aritmticos, lectura, conversin y escritura Java - Netbeans. 03. Usando If en Java-Netbeans 04. Mejorando las competencias con toma de decisiones. 05. Los ciclos for en java 06. Los ciclo while en java. 07. GUI aplicaciones de escritorio en Java-NetBeans 08. Imgenes en la GUI 9. Los subprogramas en Java 10. Graphics y subprogramas. 11 Los vectores estticos y dinmicos. 12. Aplicando el concepto de matrices en Java 13. Rutinas de tiempo 14. Trabajando con archivos planos 15.Movimiento 2D en la GUI de Java.

L.I. Dolores Villarreal

PROGRAMACION II
01. Generalidades sobre los lenguajes de programacin usando Java - NetBeans Objetivos: Presentar las generalidades del curso y la forma de trabajo. Presentar las generalidades del IDE y los elementos esenciales del lenguaje seleccionado. Los lenguajes Las computadoras y los seres humanos hablamos un lenguaje distinto, por tal motivo necesitamos crear formas de comunicarnos con el fin de poder interactuar. Lenguaje mquina , ensamblador, lenguajes estructurados, lenguajes Orientados a objetos son respuestas a las necesidades que se han dado a lo largo del desarrollo de las computadoras y a la necesidad de comunicacin que se ha planteado entre los diferentes episodios de la computacin. Los lenguajes mquina estn basados en estructuras de ceros y unos o tarjetas perforadas que son fcilmente interpretadas por las mquinas pero no por los seres humanos. Los lenguajes ensambladores incorporan una pocas palabras ms entendibles por los seres humanos en conjunto con valores numricos. Conozcamos los detalles Los lenguajes de programacin. Los lenguajes de programacin son elementos de software, que permiten construir otros programas. La finalidad de los lenguajes es acercar al ser humano "programador" a la forma de "actuar" de las mquinas. Basados en lo anterior los lenguajes permiten comunicar mediante "programas" al ser humano con la mquina.

Lenguaje seleccionado para el curso es JAVA. Se debe descargar jdk que significa herramientas de desarrollo de java, este tiene diferentes versiones, lo ideal es siempre tratar hasta donde sea posible trabajar con la ms avanzada y conocer que ofrece de nuevo. Para la instalacin es prudente tomarse un tiempo. Editor seleccionado para el curso es NETBEANS (IDE). Lo ideal es trabajar con la ltima versin disponible. Nos concentraremos en aprender tcnicas de programacin en el lenguaje seleccionado y continuaremos desarrollando la lgica con algunos temas nuevos muy interesantes e importantes. Un IDE se diferencia de un IDLE que este ltimo es especfico para un lenguaje, mientras que el IDE sirve para un amplio rango de lenguajes. Un error comn es confundir el IDE con el editor y por lo visto ya en esta explicacin son dos elementos complementarios pero distintos.
L.I. Dolores Villarreal

PROGRAMACION II

Entrando en materia. Lo que se necesita saber para trabajar en un lenguaje Grandes rasgos existen unos elementos que se deben evaluar a la hora de aprender un lenguaje de programacin. Lo ms importante es dominar la lgica de programacin y los elementos que la conforman, el lenguaje se aprende, despus de desarrollar la lgica. 1. Instalar los elementos del lenguaje propiamente dicho, de manera legal y recurriendo siempre al sitio oficial del fabricante. 2. Instalar un IDE o editor que nos haga ms fcil el trabajo, que sea legal bien sea gratis o que paguemos por l. 3. Disponer de toda la sintaxis bsica del lenguaje, es decir la forma en que deben ser escritas las instrucciones en dicho lenguaje, aqu el listado es grande pero lo elemental son variables y tipos, decisiones, ciclos, lectura por teclado, impresin de mensajes, vectores matrices y sub programas. Todo los dems elementos que provea el lenguaje deben ser aprendidos para volvernos especialistas en el mismo. 4. Disponer de los listados de smbolos usados y sus significados, operadores aritmticos, relacionales y lgicos. 5. Reconocer la estructura espacial del programa para identificar donde puede ir cada elemento o donde no pude ir. Esto de forma general y practicndolo constantemente. 6. Saber compilar, ejecutar y depurar a fin de codificar los algoritmos y generar los programas deseados. Trabajando Java-Netbeans. En java el cdigo fuente tiene la extensin java y el cdigo objeto tiene la extensin .class java es un lenguaje para el cual existe tanto la compilacin como la interpretacin, despus de compilar los .java, los .class denominados bytecode deben ser interpretados al momento de ejecutar el programa, aunque este es un detalle muy tcnico es vital conocerlo para no caer en imprecisiones. Para mejorar el entendimiento de este proceso, es muy recomendable hacer lo siguiente. 1. Cree un proyecto en una ubicacin conocida por usted. 2. Compile el proyecto que no debe mostrar errores.
L.I. Dolores Villarreal

PROGRAMACION II
3. Abra la carpeta donde cre el proyecto y mire los elementos que lo conforman, entre ellos destaque los *.java y deben haber otros con los mismos nombres pero la extensin *.class . cdigo fuente y objeto respectivamente. Estos son los errores ms comunes al momento de escribir un programa en JAVA. error 1. Falta punto y coma al final de la lnea, toda lnea en java lleva punto y coma al final (;) excepto las lneas que tiene llaves de inicio o fin{ } error 2. Las llaves no se encuentran equiparadas, toda llave que abre { tiene que tener una que la cierra } error 3. Los parntesis no se encuentran equilibrados, todo parntesis que abre ( tiene que tener uno que lo cierra ) error 4. Smbolo no identificado, el programa distingue maysculas de minsculas motivo por el cual hay que saber como se copia cada palabra para que signifique lo esperado ejemplo System.out.println es diferente de system.out.println. error 5. Se esperaba otro elemento, significa que se coloc algo en un sitio que genera defectos, cada cosa en su lugar segn la estructura dada. Ejecutar: despus de verificar que el programa no tiene errores sintcticos o semnticos, se procede a correr, ejecutar o tambin llamado lanzar el programa. Este es ya el programa en funcionamiento, una tcnica recomendad es antes de correr el programa, siempre verificarlo con el paso anterior, hasta que el programa no este libre de errores no se puede proseguir. Recordemos que al ejecutar las entradas por teclado y las salidas por pantalla se visualizan en la consola de entrada salida. Depurar: corregir los errores lgicos, es decir las cosas que se espera el programa debe hacer y no las hace y aquellas que hace y no debera hacer. El IDE seleccionado tiene la forma de depurar los programas. un trmino importante es el punto de parada, o break point, los cuales permiten detener en modo depuracin el programa en una lnea deseada. ver las variables mediante el watch y otros es un tema de cuidado y gran importancia, para tales efectos en clase se explicara ms detenidamente. Los modos de Interfaz de Java La interfaz de los programas que desarrollamos tiene que ver con la forma en la cual los usuarios interactan con sta. Existen diversos tipos as: 1. Aplicaciones de consola. Estas aplicaciones son las que se trabajan con texto plano en las denominadas consolas de los sistemas operativos como el caso de DOS, Windows, UNIX, AS400...

L.I. Dolores Villarreal

PROGRAMACION II

2. Aplicaciones de escritorio con GUI. Estas son las aplicaciones tpicas de los sistemas operativos, son las ms comunes en nuestro medio y para citar ejemplos tenemos los editores de texto, los IDE, la calculadora del sistema operativo entre otros. 3. Aplicaciones WEB. Son sistemas que se encuentran desarrollados para ser accedidos con el explorador de la Internet, ejemplo la consulta de saldos por la Internet, la matrculas por la Internet, el correo electrnico web... 4. Existen otras formas que son ms especializadas como la de los dispositivos mviles, celulares, pda, etc.

Para el trabajo de clase, se usara la tecnologa Swing de Java mediante el editor Netbeans. 1. Crear un proyecto nuevo.

L.I. Dolores Villarreal

PROGRAMACION II

2. Identificar que se construye una aplicacin

L.I. Dolores Villarreal

PROGRAMACION II

Explicacin: 1. Nombre del proyecto, el cual ser tomado tambin como el nombre de la aplicacin. Debe seguir las reglas de no usar caracteres especiales y debe comenzar en mayscula cada palabra que lo conforma. 2. Lugar en el cual se almacenar. Crear o ubicar una carpeta en un sitio donde la ubiquemos con facilidad. 3. No podemos modificarlo pero corresponde a la carpeta en la cual quedar almacenada la aplicacin. 4. significa que ser tratado como el proyecto principal del sistema. 5. No debemos modificar esta parte aunque podemos hacerlo. Dejarlo como lo sugiera el editor. 6. Seleccionar Basic application, lo que nos permite trabajar en una aplicacin bsica de java.
L.I. Dolores Villarreal

PROGRAMACION II

L.I. Dolores Villarreal

PROGRAMACION II

1. El sistema construy tres archivos con las extensin .java, estos archivos cada uno tiene una funcionalidad especfica. El que ms nos interesa desde el punto de vista del desarrollo es el que termina con view, que significa la vista la regla que usa el sistema para nombrar este archivo es que le coloca el mismo nombre de la aplicacin con el sufijo View. 2. este botn al ser oprimido muestra el cdigo que podemos modificar para realizar nuestro programa. Este cdigo tiene elementos totalmente nuevos, separados por subprogramas los cuales explicaremos en clase. 3.Este botn nos lleva al modo de diseo es decir la forma en que ser vista la aplicacin desde la perspectiva del usuario. 4.La pestaa de la ventana principal de nuestro sistema. 5. Esta parte almacena todos los elementos que pueden ser usados o agregados al sistema, los botones, las cajas de texto, las etiquetas, los menues, las imgenes, entre otros... Esto funciona con el principio de drag-and-drop arrastrar y soltar. 6. La ventana de propiedades funciona al dar clic cobre cualquier elemento ubicado en la GUI y nos posibilita cambiar sus propiedades a nuestra conveniencia. 7.Es el rea de trabajo, la cual usaremos para interactuar con el usuario final. Trabajando con los controles ms comunes.

Cuando se agrega un control a la venta, es importante conocer su nombre, de forma que se convierte en una variable dentro del cdigo.

L.I. Dolores Villarreal

PROGRAMACION II

1. Label usada para desplegar textos que solo pueden ser editados mediante el cdigo o en modo diseo. label.setText("texto deseado") permite cambiar el texto de la etiqueta String s = label.getText() permite recupera el texto asociado a la etiqueta. 2. Botn, son usados para activar acciones, se utilizan los denominados eventos que son subprogramas especiales que se ejecutan ante la ocurrencia de una situacin, el evento ms usado es el mouseClicked que se ejecuta cuando se da clic con el ratn en el botn.

3. Caja de texto. Usadas para capturar o mostrar informacin con el usuario en estos campos el usuario ingresa una informacin la cual es utilizada dentro del sistema. Esto se puede asociar a la captura de datos por el teclado.
L.I. Dolores Villarreal

10

PROGRAMACION II

String s=nombreCajaTexto.getText(); permite capturar el texto que se encuentre actualmente ingresado. nombreCajaTexto.setText("informacin"); permite modificar el texto que se ve en el control seleccionado. 4. rea de texto, similar a una caja de texto, solo que permite ingresar varias lneas de informacin, tantas como sean necesarias y por tanto se hacen ideales para situaciones en las cuales se desea mostrar gran cantidad de datos. Peguemos en la ventana de ejemplo uno de cada control visto , etiqueta, caja de texto, rea de texto y boton. as

1. Cambiaremos los nombres de cada uno de los elementos as: clic derecho sobre el control al cual le deseamos cambiar el nombre y el men contextual seleccionaremos Change Variable Name

L.I. Dolores Villarreal

11

PROGRAMACION II

2. asignamos un nuevo nombre. Es muy aconsejable respetar como prefijo el tipo del elemento jLabel, jButton, jTextField, jTextArea ..... seguido del nombre que le deseamos colocar.

L.I. Dolores Villarreal

12

PROGRAMACION II

3. Hacer el mismo proceso descrito para los restantes elementos respetando para cada uno de ellos el prefijo y complementando el nombre con Prueba. jButtonPrueba, jTextFieldPrueba...... Esto significa que en el cdigo nos referiremos a los elementos con los nombres que les asignamos. Vamos a cambiar los textos. OJO no confundir los textos con los nombres los textos tiene que ver con la presentacin y el nombre con la programacin. 1. Para cambiar los textos de los elementos la manera ms simple es la siguiente, clic derecho sobre el control al cual se le desea cambiar el texto, luego en el men contextual se selecciona Edit text

Luego el control se torna azul de manera que se puede editar dicho texto contenido.
L.I. Dolores Villarreal

13

PROGRAMACION II

cambie el texto de la label de modo que diga Etiqueta, retire cualquier texto del jTextField y cambie el texto del jButton por Ejecutar como muestra la siguiente imagen.

Esta parte es la ms importante en trminos de la programacin. Que atender al botn y cuando se de clic en ste comenzar la ejecucin del programa. para tales efectos asociaremos el evento mouseCliked al botn deseado.

L.I. Dolores Villarreal

14

PROGRAMACION II

Inmediatamente se crea un subprograma en el cdigo fuente al cual nos llevar automticamente.

L.I. Dolores Villarreal

15

PROGRAMACION II

L.I. Dolores Villarreal

16

PROGRAMACION II
Recordar los elementos claves: 1. Crear un proyecto desde cero. 2. Anexar elementos a la GUI es decir a la ventana principal del sistema. 3. Colocar textos a las etiquetas, cambiar el texto que tiene por defecto los campos, cambiar de nombre a los campos. Reubicar los controles en la GUI cambiar sus dimensiones. 4. Compilar 5. Ejecutar 6. Cerrar y abrir el proyecto creado.

L.I. Dolores Villarreal

17

PROGRAMACION II
02. Operadores aritmticos, lectura, conversin y escritura Java - Netbeans. Objetivo: Utilizar los conceptos de variable y tipo, mbito de la variable, leer datos de la GUI, mostrar datos en la GUI del lenguaje seleccionado. Trabajando con JAVA. Importante tener presente la bibliografa dada.

La estructura clave de un programa en JAVA La parte 1: es la exterior, en esta solo pueden haber dos tipos de elementos, primero el paquete que aparece con la palabra package nombre; en este ejemplo no lo colocamos pues no debe usarse a la ligera. El segundo tipo de elemento que puede aparecer es la importacin que se logra con la palabra import seguida de lo que se desea importar y terminando con punto y coma package nombrepaquete; import java.io.*; import javax.swing.*; import ....

La parte 2: sta es la macro estructura que se denomina clase, todo debe estar dentro de la clase pero en partes especficas. la clase esta determinada as: public class NombreAlgoritmo{ aqu adentro va todo el programa dividido en partes especficas. } El bloque que forma a la clase esta determinado por las llaves { } desde donde abren significa que inicia y donde cierran significa que termina. Importante que el nombre NombreAlgoritmo sea el mismo del archivo .java es decir del cdigo fuente. Todo el programa debe estar contenido dentro de la estructura que denominamos clase. La parte 3: Este es un subprograma, cada subprograma tiene una estructura especial la cual estudiaremos con ms detalle en los prximos cursos. El bloque esta delimitado por las llaves que abren y las llaves que cierran dentro de este se colocan las instrucciones que conforman el programa.
L.I. Dolores Villarreal

18

PROGRAMACION II
Las variables y su mbito Los tipos de las variables: Java maneja dos grandes tipos que son, los primitivos y los extendidos. Los primitivos son: short: entero muy corto (2 bytes -32768 a 32767) int: entero corto (4 Bytes -2147483648 a 2147483647) long: entero largo (8 Bytes -9223372036854775808 a 9223372036854775807) float: decimal corto (4 Bytes 1.40129846432481707 e-45 a 3.40282346638528860e+38) (positivo o negativo) double: decimal largo (8 bytes 4.94065645841246544e-324 a 1.79769313486231570e+308) (positivo o negativo) char: un carcter incluido los extendidos (2 bytes 0 to 65535) byte: esta en el rango (-128 a 127) boolean: valor lgico true-false (Corresponde a un bit)

Los extendidos: Los tipos de datos extendidos son infinitos, dado que cualquier usuario puede definir el propio segn la orientacin a objetos. Los ms usados para el curso pueden ser. String: para el manejo de cadenas de texto. Double: para la conversin de tipos double Integer: para la conversin de tipos int Short: para conversin de tipos short Long: para la conversin de tipos long Float: para la conversin de tipos float.

Definir una variable Global Estas variables se debe colocar dentro de la clase y fuera de cualquier mtodo. forma general tipo nombre = valorInicial; tipo: es cualquiera de los antes mencionados. nombre: debe ser alfanumrico, puede contender letras y nmeros siempre debe iniciar con una letra y nunca debe contener espacios en blanco o caracteres especiales como /(%$#=+-?...... Ejemplos String nombre=""; double salario=0; int edad=0; Definir una variable local lo que diferencia a esta de las dems es el lugar en donde se colocan. Toda variable local debe colocarse dentro de un mtodo y fuera de cualquier bloque que se defina dentro de este.

L.I. Dolores Villarreal

19

PROGRAMACION II

Las variables globales: son accesibles desde cualquier parte de la clase y por tanto por cualquier mtodo que este contenido en esta, la imagen nos muestra las variables Globales en el bloque numerado con 1 y 3. Dado que la parte en la cual fueron definidas es la clase y fuera de cualquier mtodo. La palabra static significa que la variable pertenece a la clase y no a las instancias de la misma aunque esta es teora orientada a objetos aplica para un mejor entendimiento. Las variables locales: son accesibles solo para el mtodo en el cual han sido definidas en este
L.I. Dolores Villarreal

20

PROGRAMACION II
caso las encerradas en el bloque 2. Dos variables de mbitos distintos pueden llamarse igual, esto no se aconseja dado que hace necesario ingresar un elemento que se denomina resolucin de ambigedad this, con fines prcticos evitaremos que esto suceda. Las variables de bloque: son las que se definen dentro de los bloques como el si el mientras y otros que ms adelante trabajaremos en el curso. Las formas de conversin de textos a numricos son las siguientes: Integer.parseInt(texto); //convierte el texto dado a entero Long.parseLong(texto);//convierte el texto dado a un entero Double.parseDouble(texto);//convierte el texto dado a decimal 5. Operadores aritmticos de java. Asignacin = Suma + Resta Multiplicacin * Divisin / Modulo % Potenciacin Math.pow(base,exponente) Raiz cuadrada Math.sqrt(radicando) Incremento de uno ++ Decremento de uno --6. Operadores relacionales que aplica solo para los nmeros no para los textos mayor que > menor que < mayor o igual que >= menor o igual que <= igual que == diferente que != 7. Operadores lgicos and && or || not !

Los algoritmos de tres pasos usando Java-Netbeans Paso 1 Leer los datos Paso 2 Realizar los procesos Algoritmo Paso 3 Imprimir o mostrar los resultados. Para leer los datos ingresados por el usuario. Obtendremos los datos inicialmente de tres posibles elementos que son: campos de texto textField, las areas de texto textArea, ventana de captura JOptionPane. Todos los elementos mencionados retornan lo capturado del usuario en el formato texto motivo por el cual se hace necesario convertirlo a numrico en los casos en que sea necesario. 1. Recolectando los datos de una campo de texto. nombreCampo.getText(); esta es la forma general de capturar un texto que el usuario a ingresado en el campo de texto.
L.I. Dolores Villarreal

21

PROGRAMACION II
Ejemplo el campo de texto se llama nombre String nom=nombre.getText(); //Lo que se encuentre escrito en el campo de texto lo recupera y lo almacena en la variable. 2. Recolectando los datos de un rea de texto. nombreAreaTexto.getText(); es decir igual que como lo hicimos en el caso del campo de texto. Ejemplo el rea de texto se llama info String dat=info.getText(); 3. Recolectar los datos desde una ventana de captura. JOptionPane.showInputDialog("Texto que ilustra al usuario sobre lo que se le pide"); Ejemplo String apellido=JOptionPane.showInputDialog("Ingrese su apellido"); Para procesar los datos. En estos algoritmos de tres pasos, necesitamos mucho la conversin de tipos a los valores numricos y textos al igual que los operadores aritmticos elementales. Convertir los datos y ejemplos. Forma general Double.parseDouble( texto); // convierte un texto al tipo numrico double Integer.parseInt( texto ); // convierte un texto al tipo numrico entero Long.parseLong( texto ); // convierte un texto al tipo numrico entero de mayor capacidad Float.parseFloat ( texto); // convierte un texto al tipo numrico decimal corto texto se refiere a una de varias cosas que pueden ser (literal, variable, expresin o funcin) todas de tipo String.

Ejemplos para la captura de datos y su conversin a nmero. 1. Si se desea leer un entero capturado de una caja de texto o de una rea de texto a la cual llamaremos num1 //forma1 de hacerlo String s=num1.getText(); int n1=Integer.parseInt(s); //forma2 de hacerlo int n1=Integer.parseInt(num1.getText()); //en este ejemplo se ahorra el uso de la variable de tipo texto. 2. Si se desea leer un decimal de una ventana de captura. //Forma 1 de hacerlo String sal=JOptioPane.showInputDialog("Digite el salario que desea: "); double salario=Double.parseDouble(sal); //Forma 2 de hacerlo double salrio=Double.parseDouble(JOptionPane.showInputDialog("Digite el salario que desea: ")); Para mostrar los datos Los resultados de una sola linea se muestran fcilmente en un campo de texto asi: campoDeTexto.setText( resultado ); resultado debe ser un elemento de tipo texto si no lo es, un truco es colocar inicialmente ""+resultado para lograr la conversin. resultado puede ser una variable, un literal, una expresin o una funcin. Cundo el campo de texto es ms de una lnea podemos usar un rea de texto. areaDeTexto.setText( linea1+"\n");
L.I. Dolores Villarreal

22

PROGRAMACION II
areaDetexto.setText(areaDeTexto.getText()+linea2+"\n"); areaDetexto.setText(areaDeTexto.getText()+linea3+"\n"); // y de esta manera agregar ms lneas "\n" corresponde a un enter Cundo se trata de mostrar en un mensaje de aceptar y cerrar se hace as: JOptionPane.showMessageDialog(mainPanel, resultado ); se puede aplicar cualquiera de las formas antes vistas para el resultado.

EJERCICIOS PRACTICOS Crear un programa que muestre cuntos clic se le ha dado a un botn. La idea es que al momento de hacer clic contamos uno y lo mostramos en un mensaje emergente. 1. Construimos la interfaz grfica. La cual solo constar de un botn. 2. programamos el evento clicked del boton para realizar en este el algoritmo 3. Necesitamos una variable global donde vamos guardando el nmero de veces que se ha presionado el botn. 4. Utilizaremos el JOptionPane.showMessageDialog para mostrar los resultados.

Crear un programa que permita convertir minutos ingresados por el usuario a horas. 1. Construir la GUI del ejercicio, para lo cual usaremos dos cajas de texto una para los minutos ingresados y otra para colocar su equivalente a horas es decir la respuesta el problema dado. 2. Asignar nombres a las cajas de texto de forma que sean usados correctamente en el cdigo para captura y mostrar los datos. 3. Ya en el cdigo capturar los minutos ingresados convertirlos a variables decimales. 4. Aplicar la regla de tres para pasar minutos a horas. 5. Mostrar en el campo de texto seleccionado el resultado de la operacin.

1. Solicitar que un usuario ingrese la base de un nmero y el exponente al cual desea elevarlo, el programa debe mostrar el resultado de la operacin. 2. Solicitarle a una persona que ingrese su nombre, identificacin y cuantos billetes de 1000, 5000, 10000, 20000, 50000 tiene, para que el sistema le imprima el valor total de dinero del que dispone. 3. Dado el lado de un cuadrado, imprimir el rea del mismo. 4. Dada la base y la altura de un triangulo, imprimir el rea del mismo 5. Pedir a un usuario que ingrese un nmero, luego otro y el programa deber imprimir el residuo de la divisin entera del primer nmero sobre el segundo. 6. Pedir a un usuario que ingrese su nombre, identificacin, nombre de la materia, y las notas de seguimiento, parcial y final, el sistema deber imprimir todos los datos junto con la nota definitiva. 7. Dada una lista de cuatro productos, leer el nombre y el precio de cada uno de ellos, el precio no incluye iva, luego imprimir, el valor del iva para cada producto y el costo total de la compra con y sin iva.

L.I. Dolores Villarreal

23

PROGRAMACION II
8. Dado un nombre, ao de nacimiento y teniendo presente el ao actual, calcular la edad de la persona. 9. Pensando en los datos de un triangulo rectngulo, calcular, dados la hipotenusa y uno de los catetos, el rea de dicho triangulo. 10. Dado el nombre de un estudiante, la materia, las notas de seguimiento y parcial, el programa deber imprimir todos los datos y cuanto necesita el estudiante para ganar la asignatura. 11. Dada una cantidad de dolares y el valor de la tasa de cambio a pesos, imprimir a cuantos pesos equivale la cifra ingresada. 12. Pedir a una persona que ingrese el monto que desea que le presten en una natillera, si los intereses son anticipados al 5% mensual, preguntar a cuantos meses desea el prstamo y generarle cuanto paga de intereses y cuanto realmente le terminan prestando. 13. Construir un programa que permita calcular el valor real de un electrodomstico del cual se debe identificar el nombre, el nmero de cuotas y el costo de cada cuota. 14. Dado el nmero de peldaos de una escalera, al ancho del peldao y la distancia entre dos peldao, imprimir el largo de dicha escalera. Si el ancho del peldao esta dado en milmetros, la distancia entre ellos esta dada en metros y se pide el largo de la escalera en centmetros. 15. Dados 8 dgitos binarios ingresados por el usuario, imprimir su equivalente decimal. 16. Dados 8 dgitos octales ingresados por el teclado, imprimir el equivalente decimal.

L.I. Dolores Villarreal

24

PROGRAMACION II
03. Usando If en Java-Netbeans Objetivo: Reconocer la toma de decisiones en el lenguaje seleccionado. Los operadores relacionales para los tipos primitivos < menor que > mayor que <= menor o igual que >= mayor o igual que != diferente de == Igual a Los operadores lgicos && and || or ! not Los valores lgicos boolean true false Las funciones para comparar textos Para verificar si es igual texto.equals( textoComparacin ) para verificar si es mayor, menor incluso igual texto.compareTo( textoComparacin) Las decisiones. Las sentencias de decisin se denominan SI DE LO CONTRARIO. Su finalidad es la de hacer una pregunta lgica o relacional y con base en dicha pregunta hacer un bloque de cdigo u otro. Se dice que un si esta anidado cuando se encuentra dentro de otro bloque si o por de lo contrario. Si de una sola lnea .

Esta decisin solo aplica para una lnea que se encuentra exactamente despus del if, tambin aplica para else, cuando sea de una sola lnea no necesita las llaves. Si de un bloque

L.I. Dolores Villarreal

25

PROGRAMACION II
La finalidad de este es evaluar la expresin y en caso que sea verdadera ejecutar todas las instrucciones que se encuentran encerradas por { }. Recordemos a a esa parte que est delimitada por las llaves se les denomina bloque. Si con de lo contrario

La finalidad es evaluar la expresin si es verdadera ingresa al bloque que est debajo del if desde { abre hasta }cierra. En caso de ser la expresin falsa, salta el bloque principal y entra al bloque else que esta delimitado por { }, { abre el bloque }cierra el bloque. Esta es excluyendo es decir o entra al bloque de verdad o lo hace al de falsedad pero no a ambos. A esto se le denomina exclusin mutua.

Si de lo contrario Si... else. Esta decisin es especial en la medida que muestra un anidamiento implcito. La finalidad es hacer la pregunta inicial si esta es falsa, por de lo contrario se realiza otra pregunta, esto se repite indefinidamente y solo hasta el final se agrega de lo contrario. Cuando se ingresa a un bloque ya no se ingresa a ningn otro de manera que siguen siendo excluyentes entre SI Las decisiones anidadas.
L.I. Dolores Villarreal

26

PROGRAMACION II
Significan que dentro de cualquiera de los bloques de los if,else e if else, se pueden colocar otros if, else e if else y a su vez dentro de estos otros y esto sin un lmite dado. Una clave es respetar la indentacin: Claves necesarias para las decisiones 1. Siempre la expresin del if debe estar encerrada entre parntesis ( expresin) y dentro de sta se pueden colocar otros if, else, if else... 2. Es mejor siempre delimitar los bloques con { } de forma que no se preste para confusiones. 3. Siempre respetar la sangra, tabulacin o indentacin. 4. Es mejor anidar preguntas, que hacer expresiones muy complejas de entender. 5. El mayor o igual cuando se habla de enteros, puede ser reemplazado por > valor -1 y < valor+1 6. Cuando se comparan textos == no funciona y debe ser utilizada la palabra equals as: forma 1 String s="hola"; if (s.equals("prueba")==true){ //bloque de verdad } forma 2 String variable=""; if ("prueba".equals(variable)){ //bloque de verdad } forma 3 String var1="",var2=""; if ( var1.equals(var2)){ //bloque de verdad } forma 4 String var1="",var2=""; if ( var1.equals(var2+"expresin")){ //bloque de verdad } 7. Cuando se define una variable dentro de un bloque, sta solo "vive" para el bloque por tanto fuera de este sirve, para recordar el tema del mbito ver clases anteriores La instruccin casos Es usada para determinar de entre un grupo de elementos cual de ellos es igual a uno dado. Su desventaja radica en que solo funciona para enteros int o char y en los casos solo pueden haber valores constantes, aclaro que este solo es un comportamiento de java otros lenguajes no la manejan o lo hacen de manera distinta.

L.I. Dolores Villarreal

27

PROGRAMACION II

La palabra break, determina el fin del caso y los dos puntos despus del literal determinan el inicio. En el grfico lo que aparece con corchetes significa que puede estar pero no es obligatorio. default es el caso por defecto si despus de evaluar todos los anteriores no encuentra coincidencias entonces por defecto ingresa a ste. Dentro del grupo de sentencias se puede ubicar cualquiera de las vistas o por ver es decir if, else, for, while switch..... Respetar la tabulacin hace la diferencia entre entender o complicar el problema. Ejercicios para practicar el if: 1. Construir un programa que lea cinco nmero y los imprima ordenados de mayor a menor. 2. Leer 8 bits, desde el menor peso hasta el mayor peso, el programa debe controlar que todos los bits sean vlidos es decir 1 0 y luego imprimir su valor en decimal y en octal. 3. Ingresar una fecha inicial primero ao, luego mes y por ltimo da. Determinar si la fecha ingresada es correcta. Hay meses de 28,29,30 y 31 das. Incluidos los bisiestos.

L.I. Dolores Villarreal

28

PROGRAMACION II
04. Mejorando las competencias con toma de decisiones. Objetivo: Mejorar las competencias con el uso de las la toma de decisiones en el lenguaje seleccionado.

La toma de decisiones: Recordemos los elementos para la toma de decisiones en el lenguaje seleccionado.

Imagen en la siguiente pgina, Hacer el ejercicicio siguiente posteriormente: EJERCICIOS PRACTICOS Construir un programa que calcule el indice de masa corporal y con base en los datos ingresados por un usuario, el sistema le responda con la informacin correspondiente.

L.I. Dolores Villarreal

29

PROGRAMACION II

L.I. Dolores Villarreal

30

PROGRAMACION II
05. Los ciclos for en java Objetivo: Reconocer la aplicacin de los ciclos en el lenguaje seleccionado. Los ciclos, bucles, lazos o iteradores La forma de repetir un conjunto de instruccin un determinado nmero de veces o basados en que se cumpla una condicin son los llamados ciclos. PARA - FOR Usado normalmente para generar conteos fijos cuya finalidad es la de moverse de forma ascendentes o descendente aumentando o decrementado en un valor constante o variable a la denominada variable de control . La principal venta del ciclo redunda en el hecho que de forma automtica gracias a la <actual> se puede incrementar o decrementar la variable de control. Ejemplo de un ciclo ascendente for for(int i=0;i<200;i+=4){ System.out.println(i); } Ejemplo de un ciclo descendente for for(int i=200;i>-200;i-=8){ System.out.println(i); } Detalles: - La instruccin for se incrementa de forma automtica segn lo que se desee esto incluye los valores enteros y decimales. - La variable de control del for debe ser iniciada en un valor, este pude ser ingresado mediante una variable, expresin o literal - El ciclo se detiene cuando se cumple la condicin lgica, este punto es muy importante dado que la condicin lgica no tiene que estar asociada a la variable de control pero si es lo deseable. - El ciclo para puede ser reemplazado por el mientras que y no al contrario.

L.I. Dolores Villarreal

31

PROGRAMACION II
Ejercicios. 1. Construir una GUI que tenga un cuadro formado con campos de texto, de forma que existan 8 campos de texto. La idea es que el usuario copie textos diferentes en cada campo y mediante un botn, el sistema le pregunta al usuario el sentido de giro y nmero de vueltas que desea, de forma que se va a apreciar el movimiento de los textos en el sentido deseado por todos los 8 campos de texto. Es decir lo que esta en el campo1 pasa al 2 lo del 2 al 3 y esto hasta hacer el nmero de vueltas deseadas. 2. Construir un programa que permita simular el funcionamiento de un reloj de arena. De forma que al oprimir un botn se pueda percibir el efecto visual. 3. Dados 2,3 o 4 nmeros ingresados por el usuario, el sistema en un rea de texto debe mostrar las combinaciones que generaran. Tambin debe mostrar cuntas combinaciones encontr. Ejemplo: si fueran dos nmeros 9 y 7 las combinaciones seran 77,79,97,99 se encontraron 4 combinaciones. 4. Construir un programa que permita hacer un conteo regresivo de segundos de forma que: le solicite al usuario cuntos segundos desea contar, desde ese momento inicia el conteo regresivo hasta llegar a cero momento el cual saca un mensaje diciendo tiempo terminado. 5. Construir un programa que genere m trminos de la serie fibonacci uno cada n segundos.

L.I. Dolores Villarreal

32

PROGRAMACION II
06. Los ciclo while en java.

Objetivo: Reconocer la aplicacin de los ciclos en el lenguaje seleccionado.

Los ciclos, bucles, lazos o iteradores La forma de repetir un conjunto de instruccin un determinado nmero de veces o basados en que se cumpla una condicin son los llamados ciclos. Mientras - while Se diferencia del para en que este es ms universal en el sentido que solo se preocupa por evaluar una expresin y mientras dicha expresin sea verdadera se encarga de repetir el bloque delimitado en el mientras. La expresin pude ser un valor lgico, una funcin que retorne un valor lgico, una expresin relacional o una expresin lgica.

La expresin debe estar entre un gran parntesis, esto es similar a lo que se hizo en su momento con el if. Si se llega a colocar el punto y coma al final del while no muestra error, pero no funciona como un ciclo dado que no tiene en cuenta al bloque y lo ejecuta como parte de la secuencia del programa y no como parte del ciclo. Esto ya lo experimentamos con el ciclo for. Forma general de un ciclo mientras que se repite ascendentemente. Double p=10.0; while(p<20){ System.out.println(p); p+=0.5; } Forma general de un ciclo mientras descendente

L.I. Dolores Villarreal

33

PROGRAMACION II
Double n=500.0; while(n>90){ System.out.println(n); n=n-0.02; } Forma general de un ciclo mientras que el usuario lo desee. int contador=0; String seguir="s"; while(seguir.equals("s")||seguir.equals("S")){ System.out.println("Veces que se ha repetido "+contador++); //operaciones que se desean repetir seguir=JOptionPane.showInputDialog("Desea continuar oprima s"); } Forma grfica sugerida para convertir un for a un while.

L.I. Dolores Villarreal

34

PROGRAMACION II

Concepto adicional de Java. Java es un lenguaje orientado a objetos, el cual permite realizar operaciones especiales sobre las cadenas de textos denominadas String. Para ejecutar una operacin sobre los textos se realiza el siguiente procedimiento: texto.funcion(parametros) texto: puede ser una variable, una expresin o cualquier cosa que este representada por el String funcion: es el nombre de la operacin que se desea realizar sobre el texto parametros: esto depende de la funcin pueden ser cero uno o n. Estas son las funciones ms comunes para los textos. substring(int carcaterInicial, int caracaterFinal) retorna un pedazo del texto. Ejemplo: String t="Hola amigos"; System.out.println(t.substring(1, 4)); //retorna ola trim() retorna un texto sin espacios en blanco a delante y atrs de la cadena dada. Ejemplo: String texto=" Vamos muy bien "; System.out.println(texto.substring(1, 4)); texto=texto.trim(); System.out.println(texto); toLowerCase() retorna el texto en minscula. Ejemplo: String dato="Este es mi dato";
L.I. Dolores Villarreal

35

PROGRAMACION II
dato=dato.toLowerCase(); System.out.println(dato); toUpperCase() retorna el texto en maysculas Ejemplo: String info="Este es mi dato"; info=info.toUpperCase(); System.out.println(info); Mediante la observacin identifique otras funciones de los textos ... explore replaceAll, replaceFirst, split ... Para generar un nmero entero randmico entre [cero y el limite). Random rnd = new Random(); int valor = rnd.nextInt(20); //20 es el lmite dado. System.out.println(""+valor);

Ejercicios. 1. Construir un programa que lea un nmero. El sistema colocar en rojo el fondo del campo de texto en el cual se ley el nmero s este es un nmero que lstima, lo colocar en verde si es un nmero palndromo y en amarillo si no es ninguno de los dos anteriores. Al iniciar el proceso de verificacin, el campo se colocar en blanco. 2. Construir un sistema que dado un texto ingresado en un rea de texto sea capaz de encriptarlo en otra rea de texto. Encriptar significa: ocultar el verdadero mensaje, intercambiando elementos que despus se pueden recuperar. 3. Construir un programa que simule el lanzamiento de un dado. Como aun no sabemos hacer el movimiento en la GUI, aplicaremos lo siguiente. 6 Campos de texto, en los cuales el usuario no puede escribir. cada campo con un nmero entre 1 y 6 cada campo representa una cara del dado y por tanto hay que asignarle un color diferente. La idea es que al oprimir un botn denominado lanzar el sistema rote alumbrando de color amarillo un elemento y en el cual se detenga es el nmero seleccionado. 4. Modificar el ejercicio anterior para que se puedan utilizar dos dados a la vez. Si cae pares el usuario gana el doble de lo apostado de lo contrario pierde. Llevar el conteo de cuantas veces gana la casa y cuantas veces gana el cliente. Crear un botn para borrar todos los datos.

L.I. Dolores Villarreal

36

PROGRAMACION II
07. GUI aplicaciones de escritorio en Java-NetBeans Objetivo: Identificar las propiedades de que ofrece la GUI del lenguaje seleccionado con el uso de controles especiales. La finalidad de usar un archivo de configuraciones es poder cambiar de forma fcil sin necesidad de utilizar el cdigo fuente algunos elementos de los programas, entre elementos como idioma, textos a mostrar, mensajes de respuesta, colores, nombres en los men entre otros ms. Para comprobar este elemento en Java con Netbenas sigamos estos pasos: 1. Construir un proyecto de Java Desktop Application. 2. Visualizar los elementos de configuracin que ofrece el sistema

3. Se puede seleccionar cualquiera de ellos, con fines prcticos se explicar algunos elementos de configuracin y se dejarn otros para que sean explorados por los alumnos.

L.I. Dolores Villarreal

37

PROGRAMACION II

L.I. Dolores Villarreal

38

PROGRAMACION II

Despus de realizar cualquier cambio, se debe guardar y compilar para que al momento de ejecutar se vean adecuadamente las modificaciones realizadas. Conociendo otros elementos de la GUI. En clases anteriores se han identificado claramente las cajas de texto, las reas de texto, las etiquetas y los botones. Seguiremos agregando otros elementos que permitan realizar otros tipos de programas. Campo para ingresar informacin secreta. Comenzaremos por el campo password, usado para ingresar contraseas en e los sistemas.

L.I. Dolores Villarreal

39

PROGRAMACION II

Crearemos una interface en la cual colocaremos un campo tipo password y lo llamaremos clave, tambin debemos agregar un botn al cual llamaremos ver.

Coloquemos este cdigo en el evento mouse clicked del botn ver JOptionPane.showMessageDialog(mainPanel,String.valueOf(clave.getPassword()));
L.I. Dolores Villarreal

40

PROGRAMACION II
Explicacin. String.valueOf() convierte elementos de diferentes tipos a textos. clave.getPassword() retorna un vector de caracteres con el texto que se ingers en el campo. Es por ello que se necesita la funcin para convertirlo a texto. clave.setText(); permite cambiar el contenido actual del objeto, dentro de los parntesis se debe colocar un texto, bien sea en literal, en expresin o en varaible. Nota: clave es el nombre que se le ha dado en el ejemplo al campo de tipo JPasswordFiel que en el palete aparece como Password Field Campo para controlar el ingreso de nmeros. Estos campos son ms intuitivos para los usuarios quienes los pueden incrementar o decrementar mediante el uso de la fechas del teclado o los elementos de incremento o decremento que se incluyen con l.

Para probar, se debe crear una interfaz grfica en la cual se coloque el campo de tipo Spinner y un botn. Al campo lo llamaremos numero y al botn le colocaremos sumar.

L.I. Dolores Villarreal

41

PROGRAMACION II

Este cdigo se debe agregar en el evento mouse clicked del botn int valor=(Integer)numero.getValue(); //getValue() permite obtener el valor pero se necesita convertir a entero por eso (Integer) valor=valor+5; //se le suma cinco al valor que se ha ledo del objeto JOptionPane.showMessageDialog(mainPanel, valor); //se imprime el valor de la variable numero.setValue(valor); //con esta funcin se puede cambiar el valor que hay en el campo Spinner. Nota: numero fue el nombre que le pusimos al campo Spinner. Por tanto, para otro elemento de este tipo habr que utilizar el nombre que le asignemos. Campo para seleccionar de una lista de elementos La idea es poder desplegar una lista con los elementos disponibles y saber cual se encuentra seleccionado Para ellos utilizaremos el campo de tipo ComboBox

L.I. Dolores Villarreal

42

PROGRAMACION II

Para verificar el funcionamiento de esta lista, debemos crear una interfaz, en la cual colocaremos el combo box, al cual llamaremos lista y un botn al cual llamaremos seleccionado.

Para agregar elementos a la lista, se deben seleccionar las propiedades del combo box y separar mediante comas cada elemento a ser usado.

L.I. Dolores Villarreal

43

PROGRAMACION II

Probemos el siguiente cdigo en el evento mouse clicked del boton seleccionado JOptionPane.showMessageDialog(mainPanel,"Texto seleccioado"+String.valueOf(lista.getSelectedItem())); JOptionPane.showMessageDialog(mainPanel,"Nmero seleccionado"+lista.getSelectedIndex()); String.valueOf(lista.getSelectedItem()) esta instruccin nos permite recuperar el texto que se encuentra actualmente seleccionado lista.getSelectedIndex() esta instruccin retorna un nmero entero con el ndice del elemento que se encuentra seleccionado empieza en cero y termina en n-1 siendo n el nmero de elementos que tiene la lista. Continuando con este elemento combo box, agreguemos dos elementos ms a la ventana un campo de texto que llamaremos nuevo y un botn que llamaremos agregar.

L.I. Dolores Villarreal

44

PROGRAMACION II

programaremos el evento mouse clicked del botn agregar. lista.addItem(nuevo.getText()); lista.addItem() dentro de parntesis se coloca el elemento que se desea agregar a la lista. Este elemento se agrega siempre al final. nota: lista es el nombre que le hemos dado al combo box Hay un objeto similar al combo box y es el List

L.I. Dolores Villarreal

45

PROGRAMACION II

L.I. Dolores Villarreal

46

PROGRAMACION II

Hacer las misma pruebas que se realizaron con el combo box, en este elemento, para obtener el texto seleccionado se utiliza el siguiente cdigo JOptionPane.showMessageDialog(mainPanel,"Texto seleccioado"+String.valueOf(lista1.getSelectedValue())); JOptionPane.showMessageDialog(mainPanel,"Nmero seleccionado"+lista1.getSelectedIndex());

L.I. Dolores Villarreal

47

PROGRAMACION II
Explicacin El estudiante debe averiguar cmo se agregan ms elementos de forma dinmica a la lista String.valueOf(lista1.getSelectedValue()) es la instruccin para recuperar el texto que se encuentra seleccionado lista1.getSelectedIndex() esta instruccin recupera el ndice del texto que se ha seleccionado, empieza en 0 y va hasta n-1, siendo n el nmero de elementos de la lista. nota: lista1 es el nombre que se le ha dado al objeto de tipo Lis Las barras de progreso Son elementos que permiten mostrar el avance en una tarea que se esta desempeando, esto no es mgico ni tan automtico como uno se imagina. comencemos por reconocer el elemento en la paleta

Crear la siguiente GUI, llamar a la barra progreso y al botn paso

L.I. Dolores Villarreal

48

PROGRAMACION II

Programemos el evento mouse clicked del botn con el siguiente cdigo progreso.setValue(progreso.getValue()+1);
L.I. Dolores Villarreal

49

PROGRAMACION II
Explicacin progreso.setValue() dentro del parntesis se debe colocar el valor entero que corresponde al estado actual del proceso cuando este valor sea mayor o igual al mximo programado para el objeto en la propiedad max progreso.getValue() retorna un entero numrico con el dato del estado actual del proceso. En forma general se pueden utilizar las siguientes funciones: objeto.setVisible( ) sirve para hacer visible o invisible un objeto. Dentro del parntesis se debe colocar un valor,expresin o variable de orden lgico {true o false} objeto.isVisible() retorna true si el objeto es visible y false si no. objeto.setLocation(posicinx, posiciny) mueve un objeto a unas coordenadas dadas, posicinx y posiciny deben ser enteras objeto.getX() retorna la posicin en x del elemento actual en un entero. objeto.getY() retorna la posicin en y del elemento actual en un entero. objeto.getWidth() retorna el ancho del objeto esta cifra es entera objeto.getHeight() retorna el alto del objeto esta cifra es entera objeto.setEnabled() sirve para habilitar o des-habilitar un control, dentro de los parentesis se debe colocar un valor, expresin o variable de tipo lgico con los valores {true, false} objeto.isEnabled() retorna un valor lgico true si el control se encuentra habilitado y false en caso contrario. Math.random() retorna un nmero aleatorio double entre 0 y 1 Math.round() dentro del parntesis se debe colocar un valor doble o float y la funcin retorna un long que redondea el nmero dado. Ejercicios planteados. 1. Construir un programa que llene una lista con todas las combinaciones que se pueden hacer con las vocales. Debe haber un botn iniciar en el cual comienza el proceso de llenado de las combinaciones y mediante una barra de progreso ir mostrando el avance. Si el sistema es muy rpido en mostrar el resultado es decir no se puede ver bien el progreso en la barra, modificar el algoritmo para agregar no solo la combinacin de las vocales sino vocales+los digitos 0...5. 2. Construir un programa que solicite al usuario nombre y contrasea. Si el usuario falla la contrasea tres veces o ms, bloquear todos los controles de la ventana para que no puedan ser editados. 3. Crear una barra de progreso, la cual el usuario mediante cuatro botones puede mover por la pantalla a su antojo, eso sin salirse de la ventana. De este modo tenemos un botn que permite mover a la derecha, otro que permite mover a la izquierda, otro que permite mover arriba y otro que permite mover abajo. Adicionalmente colocaremos dos botones y un campo spinner de forma que el usuario pueda seleccionar el valor mximo y el mnimo de la barra de progreso. Por ltimo colocaremos dos botones uno que al oprimirlo avanza un paso en la barra y otro que retrocede un paso en la barra. 4. Se desea la simulacin de la ventana de seguridad que tiene para el ingreso de personas el sistema de Bancolombia. En este sistema, los botones para ingresar la clave cambian de posicin siempre que se ha ingresado un nmero y no se permite el uso del teclado en el campo de contrasea. 5. Construir la simulacin de juego del Triqui. Las reglas que tendremos son : - Cada usuario selecciona un carcter diferente de una lista, ambos no pueden usar el mismo. - El sistema aleatoriamente decide quien inicia. - Despus de colocar un carcter, el que sigue debe ser el del otro oponente. - El sistema no validar quien gana o pierde, para ello abra un botn de terminar cuando este botn se oprima todos los controles se bloquearan y si se vuelve a oprimir dicho botn todos los botones se desbloquearn.
L.I. Dolores Villarreal

50

PROGRAMACION II
-Colocaremos un botn de reiniciar el cual le preguntar antes de hacer el proceso si esta seguro en caso afirmativo, limpia todo los controles y todo se coloca como en un comienzo para iniciar una partida. - En una barra de progreso se mostrar el avance del juego en cada jugada realizada.

L.I. Dolores Villarreal

51

PROGRAMACION II
08. Imgenes en la GUI

Objetivo: Identificar las propiedades de que ofrece la GUI del lenguaje seleccionado con el uso de controles especiales.

Conociendo ms la GUI de JAVA con Netbeans Agregar una imagen a las aplicaciones. Lo primero es ubicar la imagen que se desea subir, el formato sugerido es png, aunque en algunos casos otros formatos pueden funcionar.

Despus de copiar la imagen que se desea subir al sistema, se debe pegar en el espacio de trabajo del sistema.
L.I. Dolores Villarreal

52

PROGRAMACION II

Ya la imagen queda en el sistema lista para su uso.

L.I. Dolores Villarreal

53

PROGRAMACION II

Para anexar la imagen en la venta, debemos agregar una label

L.I. Dolores Villarreal

54

PROGRAMACION II

Se debe ampliar la label e ingresar a sus propiedades

L.I. Dolores Villarreal

55

PROGRAMACION II

En la propiedad icon, se selecciona la imagen que se desea mostrar

L.I. Dolores Villarreal

56

PROGRAMACION II

Al terminar el proceso la imagen queda en el modelo

L.I. Dolores Villarreal

57

PROGRAMACION II

Para cambiar mediante el cdigo una imagen hay que: 1. pegar la imagen en los recursos del sistema, recordar que el formato sugerido es el png. 2. Este es el cdigo que permite el cambio imagen.setIcon(new ImageIcon(getClass().getResource("resources/genetica1.png")));

imagen es el nombre que le dimos a la label new ImageIcon(getClass().getResource("resources/genetica1.png")) permite traer el recurso de la imagen solo hay que cambiar la parte que se ha resaltado con el nombre de la nueva imagen.

Abriendo una nueva ventana en el sistema. Lo primero es crear la nueva ventana en el sistema as:

L.I. Dolores Villarreal

58

PROGRAMACION II

L.I. Dolores Villarreal

59

PROGRAMACION II

Ya se agreg en el listado de elementos del sistema

L.I. Dolores Villarreal

60

PROGRAMACION II

Esta ventana es independiente de la principal Este paso es muy importante modificar esta propiedad por DISPOSE, de lo contrario cada vez que cerremos la ventana nueva tambin se cerrar la ventana principal.

L.I. Dolores Villarreal

61

PROGRAMACION II

Para realizar las pruebas en la ventana principal del proyecto agregaremos un botn con el nombre abrir y el texto Abrir

L.I. Dolores Villarreal

62

PROGRAMACION II

Podemos colocar cualquier cdigo en la ventana nueva que se ha creado de forma que la diferenciemos de la primera.

L.I. Dolores Villarreal

63

PROGRAMACION II

En el botn abrir de la venta principal colocaremos el siguiente cdigo VentanNueva nueva = new VentanNueva(); nueva.setVisible(true); Ejercicios para realizar: 1. El estudiante debe consultar cmo hacer para que la nueva ventana salga centrada en la ventana que la invoca. 2. Cmo hacer para que no se abran muchas ventanas sino que abra una sola, esto al momento de oprimir el botn de llamado a la ventana. 3. Construir un programa que simule el movimiento de un dado, mediante el cambio de la respectiva imagen usando un random. La idea es que un usuario pueda jugar, apostar, perder y ganar. 4. Construir un juego de memoria. Consiste en tomar un grupo de imgenes y colocarles un nmero, luego el sistema las muestra en un orden aleatorio y el usuario despus debe colocar el orden en que estas fueron mostradas, ganado 10 puntos por cada acierto y restando 5 puntos por cada fallo. (Se busca creatividad y colocar el propio sello a este ejemplo). 5. Recordando viejos tiempos. Quin no dibujo una secuencia en un libro? y al mover las hojas ver movimiento. Construir algo similar que genere una secuencia que de pie a pensar en movimiento. La creatividad es la clave de este ejercicio.

L.I. Dolores Villarreal

64

PROGRAMACION II
9. Los subprogramas en Java

Objetivo: Continuar con el reconocimiento de los programas divididos por subprogramas. Los subprogramas Mediante el uso de los subprogramas, es posible disear sistemas modulares en los cuales ya no existe un solo algoritmo que se encarga de todo sino, que tenemos diferentes algoritmos especializados por temas y que en conjunto forman el gran programa. Nuestro propio organismo esta dividido en subprogramas en los cuales cada parte tiene un fin especifico e interactan para mantener todo el sistema en pleno funcionamiento. Tambin se conocen con el nombre de subrutinas, mdulos, operaciones o mtodos. Son programas que tiene un fin especfico dentro de un programa mayor y por tanto pueden ser llamados en cualquier instante o parte de este. Debemos ver a los subprogramas como una estrategia para dividir un problema mayor en partes ms pequeas, de forma que al interactuar entre ellos el sistema se comporte tal y como se dise. Cada subprograma es en realidad un algoritmo ms pequeo que hace parte del programa principal. en estos subprogramas podemos definir variables, realizar asignaciones, realizar lectura de datos, imprimir expresiones, variables y literales, usar ciclos, vectores decisiones, incluso invocar a otros subprogramas. Modelo grfico de un programa que esta construido con subprograma.

L.I. Dolores Villarreal

65

PROGRAMACION II

A Pesar de usar todos los subprogramas que se deseen siempre habr de existir uno denominado principal, el cual es el encargado de organizar el uso de los elementos y subprogramas disponibles. Un programa siempre inicia en su parte principal y es desde all de donde se articulan los elementos a ser usados. Como funciona un programa que esta estructurado por subprogramas? El programa inicia en su parte principal, es desde all donde se ejecuta linea a linea, cuando el programa desea utilizar un subprograma, realiza un llamado, a dicho llamado tambin se le conoce con el nombre de invocacin. En este llamado,es vital conocer el nombre del subprograma que se desea invocar y los elementos que se deben enviar para que ste funcione adecuadamente, el programa ejecuta cada instruccin del subprograma que fue llamado, y cuando termina, regresa retornando el resultado y permitiendo que el programa siga la ejecucin en la parte donde haba sido llamado. Mirando el grfico: El programa inicia ejecuta dos bloques y cuando llega al tercero salta hasta el subprograma, en el cual ejecuta dos bloques termina y regresa terminando el bloque en el que estaba ejecutando uno ms y terminando el programa. Al momento de invocar un subprograma, los datos que tenemos hasta el momento se guardan en memoria de forma que cuando regrese del subprograma contine con los valores almacenados. Esto vara dependiendo del mbito de los valores, recordemos que los globales pueden ser modificados y usados por cualquier parte del programa y esto incluye a los subprogramas, por tanto es posible que los datos globales sean modificados.

L.I. Dolores Villarreal

66

PROGRAMACION II
Hagamos una analoga. Pensemos en un televisor, e identificamos que subprogramas lo conforman: Partimos del hecho que el televisor esta en perfecto estado, que tiene fluido elctrico y que tiene suministro de seal de canales de tv. El sistema inicia cuando utilizamos el botn de encendido, mostrando el ltimo canal visto, con el volumen y configuracin seleccionada. El usuario puede cambiar el volumen, el canal, el brillo.... Se puede programa el sistema para que se apague o para que encienda entre otros. Subprogramas controla el volumen controlar el brillo aumentar o disminuir canal cambiar a un canal especfico ver el ltimo canal visitado silenciar el volumen programar despertador programar para apagado cambiar el modo TV/vdeo En este caso, el programa principal esta dado por el botn de encendido y termina con el botn de apagado. Es el usuario, quien puede realizar cualquiera de las operaciones antes mencionadas usando cualquiera de los subprogramas disponibles. Existen dos grandes tipos de subprogramas. 1. Las funciones son subprogramas que retornan un resultado. 2. Los procedimientos son subprogramas que no retornan resultado.

En forma general un subprograma puede adoptar esta forma 1. tipo Nombre() 2. tipo Nombre(tipo parametros1, tipo parametro2, tipo parametro3,... ,tipo parametron) Qu es el tipo de un subprograma? Este es el que determina que dato(s) retorna al llamado de un subprograma. int retorna entero double retorna decimal String retorna texto char retorna caracter Cualquier tipo del lenguaje bien sea primitivo o extendido puede ser retornado. Cuando se retorna cualquiera de los tipos primitivos o extendidos automticamente este es un subprograma tipo funcin. La palabra void significa que el tipo del subprograma es procedimiento. Qu es el nombre del subprograma? Es un identificador que puede ser construido usando letras y nmeros, siempre debe comenzar con una letra y no debe contener caracteres especiales como tildes, comas, espacios, operadores aritmticos o lgico... Su nombre debe comenzar en minscula y si es compuesto cada palabra de este, debe iniciar con mayscula siguiendo con minscula sostenida. Dos subprogramas pueden llamarse igual, siempre que se diferencien en otros aspectos como el nmero de parmetros, el tipo de los parmetros y el orden de los parmetros, a esto se le conoce como la frma de los subprogramas. Con el nombre que se le de a un subprograma, es con el cual ste ser invocado y referenciado por otros. Un nombre de un subprograma por lo general es en forma de verbo y debe permitir entender mediante su nombre cual tarea tiene asignada o realiza.

L.I. Dolores Villarreal

67

PROGRAMACION II
Qu son los parmetros? Son variables locales que define el propio subprograma como necesarias para su procesamiento, corresponden a datos de entrada, los cuales deben ser enviados al momento de invocar o llamar el subprograma. Al ser variables, tienen un tipo y un nombre, se separan por comas unas de otras, de forma que cada una cumpla con tener un tipo y un nombre. Los tipos son los conocidos por el lenguaje bien sean primitivos o extendidos los nombres siguen las reglas dadas para las variables. Dos parmetros de un mismo subprograma no pueden llamarse igual.

Hablando de subprogramas en JAVA. Comencemos por decir que el public static void main(String[] args).... es un subprograma. La estructura general de los subprogramas es la siguiente tipoDeRetorno nombreSubprograma(parmetros) { //se colocan todas las instrucciones que se definen para el subprograma //se pueden usar las variables globales //se pueden definir variables locales y variables de bloque //cualquier instruccin de las ya conocidas puede ser usada //dentro de un subprograma se puede invocar cualquier subprograma }

tipoDeRetorno: Los tipos de retorno son los mismos que usamos para las variables int, long, char, byte, String, double, int[], String[], double[]... a estos tipos se agrega void que determinaque es un procedimiento y por tanto no retorna nada. parmetros: Cuando un subprograma no necesita parmetros simplemente se coloca nombreSubprograma ( ) Cuando un subprograma tiene parmetros, estos pueden ser uno, dos, tres o muchos, cada uno de los cuales tiene tipo y nombre, el nombre de un parmetro no pude repetirse en un mismo subprograma. Forma general del los parmetros. ( tipo nombreParmetro, tipo2 nombreParametro2, tipo3 nombreParmetro3 ... ) El tipo es el mismo que las variables que hemos usado en java: int, long, float, double, String, int[],
L.I. Dolores Villarreal

68

PROGRAMACION II
double[], String[] ... Tanto parmetros como tipo de retorno pueden ser vector, lo importante es no definir ningn tamao especfico simplemente tipo[ ] que significa que estamos hablando de un vector.

Ejemplo de un subprograma sin retorno y sin parmetros public void subprograma1(){ System.out.println("procedimiento sin parmetros"); }

Ejemplo de un subprograma sin retorno y con tres parmetros de diferentes tipos public void subprograma2(int entero,String texto,double decim){

System.out.println("el valor del parmetro 1"+entero); System.out.println("el valor del parmetro 2 "+texto); System.out.println("el valor del parmetro 3"+decim); System.out.println("recuerde que los 3 parmetros se comportan como variables locales"); }

Ejemplo de un subprograma con retorno y sin parmetros public double subprograma3() { System.out.println("procedimiento sin parmetros que retorna un valor double"); return 15.9; }

Ejemplo de un subprograma con retorno y con tres parmetros de diferentes tipos public String subprograma4(String texto,int entero,double decim)
L.I. Dolores Villarreal

69

PROGRAMACION II

System.out.println("el valor del parmetro 1"+texto); System.out.println("el valor del parmetro 2 "+entero); System.out.println("el valor del parmetro 3"+decim); System.out.println("recuerde que los 3 parmetros se comportan como variables locales"); return "esta es una prueba"+texto+" "+ String.valueOf(entero)+" "+String.valueOf(decim); }

Ubicacin fsica de los subprogramas en un programa JAVA

Los mtodos se colocan en el espacio de la clase fuera de cualquier otro mtodo existente.

L.I. Dolores Villarreal

70

PROGRAMACION II

Este proceso es el proceso de definicin de los subprogramas. La siguiente fase es utilizar los subprogramas construidos, a dicho proceso se le conoce como invocacin, llamado o utilizacin. Invocando un subprograma. Para los subprogramas tipo funcin sin parmetros existe una forma general que es la
L.I. Dolores Villarreal

71

PROGRAMACION II
siguiente: variableDelMismoTipoDeRetornoDeLaFuncion = nombreFuncion(); Como ya sabemos los subprogramas tipo funcin retornan un valor cuando termina su ejecucin despus de un llamado es por este motivo que una buena prctica sea definir una variable del tipo de retorno esperado y a esta asignarle la invocacin que hemos hecho. Para los subprogramas tipo funcin con parmetros existe una forma general que es la siguiente: variableDelMismoTipoDeRetornoDeLaFuncion = nombreFuncion(valor1,valor2,valorn); valor es la informacin que ser enviada desde el llamado hacia el interior del subprograma valor puede ser un literal del tipo esperado, una variable del tipo esperado, una expresin del tipo esperado o una funcin del tipo esperado. Notemos que cuando se define el subprograma se coloca el tipo y el nombre del parametro que necesita, y cuando lo invocamos solo enviamos un valor no se vuelve a colocar el tipo del parmetro. Para los subprogramas tipo procedimiento se omite simplemente la asignacin, lo dems continua igual. Un mtodo puede ser llamado desde cualquier parte del algoritmo, desde el mtodo principal o desde cualquier otro subprograma, incluso un subprograma puede llamarse a si mismo a esto se le conoce como recursividad y es un tema ms vanazado. Trabajando con sub-programas. En forma general en java, los subprogramas son conocidos como mtodos, independiente que sean funciones o procedimientos. La programacin estructurada toma un giro muy importante en el momento en que es capaz de crear sub-algoritmos especializados dentro de los programas y de esta forma dividir el problema en partes atmicas ms fciles de controlar. Para trabajar con los subprogramas: 1. Identificar la parte principal del programa donde el programa siempre inicia. 2. Hay que definir el subprograma identificando: el tipo de retorno, el nombre y los parmetros que se necesitan. 3. Implementar el subprograma es decir el subalgoritmo del cual disponemos. 4. Aprender a hacer correctamente el llamado o uso del subprograma.

L.I. Dolores Villarreal

72

PROGRAMACION II

Ejercicios. 1. Construir un subprograma que coloque aleatoriamente un color de fondo a un campo de texto enviado como parmetro, este subprograma no debe tener retorno. Despus de probar el subprograma, crear un grupo grande de campos de texto en la GUI y mediante un solo botn cambiar los colores de fondo de todos. 2. Retomar el ejercicio de los nmeros de 7 segmentos. En este caso, la idea es manejar 4 display. Para ello, se construir un subprograma el cual reciba como parmetro la label donde se mostrarn las imagenes, el sistema aleatoriamente generar los nmeros desde cero hasta 9 en las cuatro labels al momento de oprimir el botn jugar. 3. Crear un subprograma que reciba una label y un nmero entero entre 0 y 9. El sistema mostrar en la label el nmero dado. Utilizar este subprograma para mostrar un conteo regresivo desde 9999 hasta 0000, tambin utilizar un subprograma que genere el retardo y refresque la vista. 4. Construir un subprograma que dadas dos labels intercambie la imagen que contienen. Utilizar el subprograma para hacer una animacin entre labels con imgenes de flechas de colores que se mueven hacia la izquierda o hacia la derecha un botn para cada movimiento. Crear un tercer botn para que de forma infinita haga el movimiento en la ltima direccin ingresada.

L.I. Dolores Villarreal

73

PROGRAMACION II

10. Graphics y subprogramas.

Objetivo: Aplicar los conceptos vistos en la asignatura desde el orden prctico y su fundamento terico. Dibujando sobre la interfaz grfica de Java. Una herramienta clave a la hora de usar un lenguaje de programacin es la capacidad que este tiene para permitir generar grficos de elementos deseados. Java permite crear grficas en 2D y 3D siendo esta ltima una herramienta de mayor complejidad. 1. Construir una aplicacin de escritorio en java

L.I. Dolores Villarreal

74

PROGRAMACION II

Una buena forma de graficar es usar un lienzo. Canvas del paquete AWT

L.I. Dolores Villarreal

75

PROGRAMACION II

L.I. Dolores Villarreal

76

PROGRAMACION II

Trabajaremos usando el men de opciones, el cual es una forma ms elegante de trabajar con la interfaz grfica.

L.I. Dolores Villarreal

77

PROGRAMACION II

Cambiar el texto del men que se agreg.

L.I. Dolores Villarreal

78

PROGRAMACION II

Para activar que deseamos hacer al momento de seleccionar el men, utilizaremos el concepto de action. Un action es un evento de escucha que se genera automticamente en el sistema.

L.I. Dolores Villarreal

79

PROGRAMACION II

Debemos crear una nueva action.

L.I. Dolores Villarreal

80

PROGRAMACION II

Se debe colocar el nombre del mtodo que deseamos sea invocado al momento de seleccionar esta opcin de men. El nombre debe seguir las reglas dadas para los mtodos.

L.I. Dolores Villarreal

81

PROGRAMACION II

Despus de dar OK, se crea el mtodo deseado y sobre este se realiza el cdigo deseado.

Agregar otro tem al men, el cual se debe llamar crear Cuadrado y crear una accin denominada crearCuadrado

L.I. Dolores Villarreal

82

PROGRAMACION II

Ejecutar este ejemplo, notar que la imagen pude quedar imperfecta, en clase se explica el porque de este fenmeno.

L.I. Dolores Villarreal

83

PROGRAMACION II

L.I. Dolores Villarreal

84

PROGRAMACION II

Ejercicios. 1. Construir un subprograma, el cual dados el graphics, la base, la altura, el color y la posicin x,y dibuje un triangulo. Utilizar el subprograma de forma que al presin el men triangular genere n tringulos de tamao, posicin y color aleatorios. 2. Construir un subprograma, el cual dados el graphics, el apotema y la posicin x,y dibuje un hexagono. Utilizar el subprograma para dibujar una colmena de m filas por n columnas. 3. Construir un programa que dibuje n resistencias en paralelo. Cada resistencia con un valor en ohmios ingresado por el usuario y que se vea en el grfico. 4. Dado un radio inicial y un centro en x,y dibujar n crculos en el mismo centro solo que aumentando el radio de cada nueva circunferencia en 2 unidades con respecto a la anterior y cada circulo con color aleatorio.

L.I. Dolores Villarreal

85

PROGRAMACION II
11 Los vectores estticos y dinmicos.

Objetivo: Reconocer la aplicacin de los vectores en el lenguaje seleccionado utilizando vectores dinmicos del tipo orientado a objetos. Crear modelos grficos mediante el uso de la GUI. Los vectores Son modificadores de variables que determinan para una misma clase de tipo ms de un espacio en memoria al mismo tiempo. En java los vectores Los vectores en java son de dos tipos los vectores tradicionales y la clase Vector. Trabajaremos los tradicionales para conocer elementos al respecto. 1. Vector global static tipo[ ] nombre = new tipo[tamao]; 2. Vector local o de bloque tipo[] nombre = new tipo[tamao]; tipo: se puede usar cualquiera de los primitivos y de lo extendidos. nombre: siguiendo las reglas que se manejan para la definicin de variables. tamao: valor literal entera, expresin entera o variable entera. Si se desea cambiar el tamao de un vector se hace de la siguiente manera: nombre = new tipo[nuevo_tamao] si coloca nuevamente el tipo al lado izquierdo muestra un error pues considera que se esta definiendo nuevamente, y lo que deseamos hacer es cambiar la capacidad. Trabajando con vectores

En java los vectores son de un tipo de dato, sea primitivo o extendido. Los vectores en java tiene un tamao fijo, que si se cambia pierde todo lo almacenado. Definir un vector global static tipo[] nombreVector = new tipo[tamao]; Ejemplo static int[] vectorEnteros = new int[100]; Definir un vector local tipo[] nombreVector = new tipo[tamao]; Ejemplo double[] vectorDouble=new double[200]; Para recorrer un vector elemento por elemento es necesario hacer un ciclo desde cero hasta el tamao del vector, para conocer el tamao de un vector se usa la funcin length
L.I. Dolores Villarreal

86

PROGRAMACION II
nombreVector.length for(int indide=0;indice<vectorEnteros.length;indice++){ System.out.println(vectorEnteros[indice]); } Para asignar un elemento a una posicin nombrevector[posicion]=valor; Para recuperar el contenido de una posicin prueba=nombrevector[posicion]; suma= datos*nombrevector[posicion]; System.out.println(nombrevector[posicion]);

La principal desventaja de este tipo de vectores es que su tamao debe ser definido previamente antes de ser usado, con lo cual se puede incurrir en un gasto innecesario de memoria o quedarse corto al momento de ingresar un nuevo elemento a la coleccin dada. Java soluciona los inconvenientes de los vectores tradicionales con el uso de vectores dinmicos. Definir un vector Global. static ArrayList<Tipo> miVector = new ArrayList<Tipo>(); Tipo Integer, Long, Double, String, tienen que ser tipos extendidos, no se aceptan los tipos primitivos. Para poder utilizar un vector dinmico es necesario importar asi: import java.util.*; //Este es un vector global de tipo texto static ArrayList<String> vectTexto = new ArrayList<String>(); //Este es un vector global de tipo entero static ArrayList<Integer> vectEnteros = new ArrayList<Integer>(); //Este es un vector de valores decimales static ArrayList<Double> vecDecimales = new ArrayList<Double>(); Para Agregar un elemento al vector: Esta es la forma general nombreDelVector.add( elemento );

Ejemplos usando los vectores antes definidos.

L.I. Dolores Villarreal

87

PROGRAMACION II
vectTexto.add("Hola"); vectTexto.add("No hay problema"); vectEnteros.add(10); vectEnteros.add(30); vecDecimales.add(34.9); vecDecimales.add(56.0);

Para conocer el tamao de un vector: Esta es la forma general nombreDelVector.size(); retorna un entero con el numero de elementos que tiene el vector almacenados. Ejemplos usando los vectores antes definidos. vectTexto.size(); vectEnteros.size(); vecDecimales.size();

Para imprimir todo el contenido de un vector: Las formas mas bsicas de hacerlo son: JOptionPane.showMessageDialog(null, nombreDelVector); System.out.println(nombreDelVector); Ejemplo usando los vectores antes definidos. JOptionPane.showMessageDialog(null, vectTexto); JOptionPane.showMessageDialog(null, vectEnteros); JOptionPane.showMessageDialog(null, vecDecimales); System.out.println(vectTexto); System.out.println(vectEnteros);

L.I. Dolores Villarreal

88

PROGRAMACION II
System.out.println(vecDecimales);

Acceder a una posicin del vector: nombreDelVector.get(posicion); Ejemplos usando los vectores antes definidos. int a = vectEnteros.get(0); //almacena en a lo mismo que tiene el vector en la posicin cero. double p = vecDecimales.get(0)+ vecDecimales.get(1); //almacena en p la suma de los valores de las posiciones cero y uno del vector System.out.println( vectTexto.get(0)); //imprime la posicin cero del vector de textos dados Recorriendo las posiciones una a una del vector: for(int index=0;index<miVector.size();index++) { System.out.println(nombreDelVector.get(index)); } Ejemplo usando los vectores antes definidos. for(int index=0;index<vectEnteros.size();index++) { System.out.println(vectEnteros.get(index)); }

Operaciones adicionales que ofrecen los vectores dinmicos.

L.I. Dolores Villarreal

89

PROGRAMACION II
Reemplazar el contenido de un posicin. nombreDelVector.set(posicion, nuevoValor); Ejemplo usando los vectores antes definidos vectEnteros.set(0,789);// se modifica la posicin cero del vector con el nuevo valor 789 reemplazando al anterior 10 Limpiar un vetor eliminando todo sus elementos contenidos nombreDelVector.clear(); Ejemplo usando los vectores antes definidos vectEnteros.clear()//quita todos los elementos almacenados en el vector de forma que queda con cero elementos. Retirar un elemento del vector nombreDelVector.remove(posicion); Ejemplo usando los vectores antes definidos vecDecimales.remove(0);//Elimina del vector la posicin cero, por tanto cambiando el tamao del vector y redistribuyendo las posiciones Saber la posicin en la cual se encuentra un elemento buscado. nombreDelVector.indexOf( elementoBuscado); Ejemplo usando los vectores antes definidos int pos = vecDecimales.indexOf(56.); //Retorna 1 pues es la posicin en la cual se encuentra el valor buscado. en caso de no encontrarlo retorna -1 Saber si un elemento esta ya almacenado en el vector nombreDelVector.contains( elementoBuscado ); Ejemplo usando los vectores antes definidos boolean resultado = vectTexto.contains( "prueba");// Retorna False dado que no existe el elemento "prueba" en el vector. Sumarle a un vector el contenido de otro. Para los cual ambos vectores deben ser del mismo tipo. nombreVector.addAll( nombreDelOtroVector); Ejercicios.
L.I. Dolores Villarreal

90

PROGRAMACION II

1. En la clase Graphics utilizada para realizar dibujos, existe un mtodo que dibuja polgonos. Dicho mtodo, necesita el uso de vectores. Construir un programa que dibuje con las medidas que el usuario le ingrese lo siguiente: tringulo rectngulo, pentgono, hexgono, cubo y una figura en la cual el usuario por el teclado ingrese el color de relleno y los puntos que lo conforman. 2. Crear una agenda de contactos en donde se almacenen nombres, apellidos y telfono de forma que se pueda buscar un contacto por su nombre o apellido, que permita ver el listado y que deje agregar, modificar y eliminar contactos. Incluso borrar toda la lista. 3. Construir un programa que almacene en un vector datos que el usuario ingresa. Mostrar los datos ordenados de mayor a menor. Hay una clase que ayuda en este proceso de forma automtica es la Collection.

12. Aplicando el concepto de matrices en Java


L.I. Dolores Villarreal

91

PROGRAMACION II

Objetivo: Reconocer el uso de las matrices partiendo del conocimiento previo de los vectores. Trabajando con matrices. Los vectores, las matrices, los cubos ... son estructuras que permiten almacenar bajo una misma variable muchos valores simultaneamente. Los vectores tiene un solo ndice de forma que el almacenamiento es lineal . Trabajando con Matrices

Las matrices se conocen como arreglos bidimensionales es decir que se encuentran almacenados en dos dimensiones, las dimensiones se conocen como filas y columnas, en este caso cada elemento est determinado por dos ndices matriz[fila,columna] Para declarar un matriz global tipo[][] nombreMatriz = new tipo[numerofilas][numerocolumnas]; Ejemplo int[][] mat = new int[10][20]; int numfilas = mat.length; int numcolumnas = mat[0].length; System.out.println(numfilas + " " + numcolumnas); Para recorrer los elementos de una matriz Como es un elemento bidimensional, es neceario aplicar dos ciclos anidados para tales efectos as: for(int fila=0;fila<numfilas;fila++){ for(int columna=0;columna<numcolumnas;columna++){ System.out.println(mat[fila][columna]); } }
L.I. Dolores Villarreal

92

PROGRAMACION II
La matriz ofrece los mismos servicios que un vector, solo que el almacenamiento y recuperacin de elementos necesita dos indices, las filas y las columnas. Las matrices spn muy utilizadas en ingeniera para dscribir matematicamente procesos. Existen varias asignaturas dedicadas al tema de matrices por tanto se prestan para aplicar de forma clara los elementos que la conforman.

Ejercicios. 1. Construir un matriz de 4 x 4 en la cual se mapen 16 campos de texto colocados en la GUI. La idea es : a) Colocar cada casilla de color aleatorio de forma infinita. b) Lograr mover un color amarillo desde la esquina superior izquierda en forma de caracol hasta alcanzar el centro, de all devolverse en otro color. c) Mover el color amarillo en la primera fila de derecha a izquierda, mover el color rojo de izquierda a derecha en la segunda fila, mover, mover el color verde en las filas y columnas restantes en forma de ola. 2. Construir el juego del concntrese utilizando imgenes matrices y random. La lgica aplicada en este proceso es la clave del curso. 3. Construir un programa que sea capaz de resolver un sudoku. La idea es darle las posiciones iniciales con los valores y el sistema sea capaz de completarlo correctamente.

13. Rutinas de tiempo

L.I. Dolores Villarreal

93

PROGRAMACION II
Objetivo: Aplicar el concepto de temporizador en el lenguaje seleccionado. Trabajando con temporizadores Qu es un temporizador? Es una herramienta para programar acciones dado un intervalo de tiempo. Cuando el intervalo se cumple, la accin que se program se ejecuta y esto sigue sucediendo hasta que se detenga el temporizador. 1. Construyamos la siguiente interfaz grfica.

2. El elemento clave del temporizado es Timer y el cdigo que se ejecuta al transcurrir el tiempo programado es public void actionPerformed(){ ...cdigo} Agreguemos el siguiente cdigo global. Debe ser entendido como un subprograma especial.

3. Programando los botones iniciar y terminar.

L.I. Dolores Villarreal

94

PROGRAMACION II

Ejercicios: 1. Construir un programa que logre cambiar el color del mainPanel cada n segundos. Usar colores aleatorios. 2. Construir un programa que genere una figura geomtrica diferente (tamao, color y forma aleatoria ) cada n segundos. 3. Construir un reloj digital que se pueda iniciar en una hora y minuto y que se pueda detener tambin. 4. Construir un programa que sea capaz de contar cuntos segundos han transcurrido desde el momento que se dio inicio en un botn hasta el momento en que se dio fin en otro. 5. Llenar la interfaz con cuadros de diferentes colores desde el centro y con movimiento de caracol hasta llenar la pantalla. Ingresar un nuevo cuadro cada segundo.

L.I. Dolores Villarreal

95

PROGRAMACION II
14. Trabajando con archivos planos Objetivo: Trabajar el concepto de archivo para la persistencia de datos en el sistema. Trabajando con archivos. Operaciones sobre los archivos. Son las acciones bsicas que se pueden realizar sobre los ficheros, esto se hace gracias al sistema operativo. Crear un archivo. Modificar un archivo. Borrar un archivo. Leer un archivo. Estructura externa de un archivo: Externamente el archivo tiene una ruta de acceso denominada path, un nombre y una extensin. El tipo de archivo esta asociado a la extensin del mismo y esto define su formato, es decir su estructura interna. Ejemplos de las extensiones y sus significados: MP3, WMA, JPEG, BMP, ZIP, DOCX, JAVA Estructura interna de un archivo. Este se refiere al contenido del archivo, todo archivo informtico es realmente una sucesin de bytes, que al ser interpretados representan algo en particular. La mayora de archivos son incomprensibles para el ser humano, dado que son un conjunto de caracteres que parecen no significar nada, pero el sistema realiza su interpretacin de forma que al ser usados sean entendidos. Los archivos ms lgicos de entender a la luz de los seres humanos son los archivos de texto que almacenan las palabras deseadas. En windows para ver la extensin de los archivos se debe activar esta opcin as:

L.I. Dolores Villarreal

96

PROGRAMACION II

Se debe quitar el check a la opcin que dice ocultar las extensiones de archivo...

L.I. Dolores Villarreal

97

PROGRAMACION II

Trabajando archivos en java. Construyamos un proyecto desktop application que se llame Archivos.

L.I. Dolores Villarreal

98

PROGRAMACION II

Nombre del primer textField path Nombre del segundo textField informacion Nombre del primer textArea datos Antes de continuar debemos agregar estos elementos en los import del sistema. import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JFrame; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.util.Locale; Programando el botn ruta.

L.I. Dolores Villarreal

99

PROGRAMACION II

Explicacin: Se define una variable global denominada f de tipo File y se inicializa con null. En el evento clicked del botn ruta, se construye una variable local de tipo JFileChooser que es la clase que permite desplegar una pantalla para acceder a los archivos. Programando el botn grabar

Explicacin: try: palabra reservada para generar un bloque seguro. Esto es un tema de orientacin a objetos denominado excepciones. Primera lnea hace que el archivo pueda ser reescrito o modificado. Segunda lnea crea una variable que es capaz de manipular el archivo que se esta asociando y en caso que no exista lo construye. Tercera lnea captura el texto que se desea grabar, y se agrega "\r\n" que es un enter. Cuarta lnea graba el texto ledo dentro del archivo al final del mismo. Quinta lnea cierra el archivo despus de grabar en este lo deseado. catch: palabra reservada que hace parte del bloque seguro, en esta parte solo se ingresa en caso de haber un error en las lneas anteriores.

L.I. Dolores Villarreal

100

PROGRAMACION II
Programando el botn recuperar.

Explicacin: En la primera lnea se define una variable que representa la forma de lectura del archivo f. En la segunda lnea se define la variable que representa la manipulacin de la variable de lectura antes definida. En la tercera lnea se define la variable que permite almacenar y acceder a los datos que sean ledos del archivo. En la cuarta lnea se limpia el contenido del rea de texto definida. en la sexta lnea se ingresa aun ciclo que permite recorrer todo el archivo desde el inicio hasta el final recuperando cada lnea y colocndole en el rea de texto. Para probar el sistema, cree en el escritorio un archivo denominado prueba.txt, mediante la aplicacin grabe elementos en este archivo y recupere la informacin del mismo. Ejercicios. 1. Construir un programa que almacene en un archivo los nmeros primos, cada registro debe mostrar el nmero primo y la cantidad de nmero primos antes de l. Una cualidad clave de este proceso es que el usuario puede reiniciar el proceso y continuar con el siguiente primo de la lista. 2. Crear un programa que genere n registros en un archivo, los registros contienen temperaturas de un sensor, estas temperaturas sern aleatorias en un rango [ t , -t ] 3. Utilice el archivo generado en el punto anterior, para graficar cada medio segundo un registro del archivo hasta terminar. la grfica es el registro versus la temperatura. 4. Crear un archivo en el cual se generan registros con: nombres, apellidos, telfono, edad, nota definitiva. Esto hacerlo para n registros y de forma aleatoria (luego abrir dicho archivo en excel)

L.I. Dolores Villarreal

101

PROGRAMACION II
15.Movimiento 2D en la GUI de Java.

Objetivo: Identificar las propiedades de movimiento que ofrece la GUI del lenguaje seleccionado, de forma que se pueda aplicar a la ingeniera en procesos de simulacin y realidad ampliada.

GUI enfocada a movimiento Uno de los elementos ms llamativos de los lenguajes de programacin, tienen que ver con el concepto de crear juegos para el PC. Contrariamente a lo que popularmente se puede pensar un juego esta formado en gran medida por acciones matemticas y geometra desde la ms simple hasta la tridimensional. Cmo pude ayudar el concepto de juego o movimiento en un lenguaje de programacin a un profesional de la ingeniera?. La generacin de simulaciones, la creacin de emulaciones y el diseo virtual de elementos y procesos son reas especficas en las cuales se hace necesario crear programas con alta interactividad y multimedia Trabajaremos en java de la mano de elementos bsicos que esta ofrece. Para lograr el movimiento de un elemento de la interfaz grfica se realiza lo siguiente: nombreElemento.setLocation(x,y) x, y son valores enteros que corresponden a la posicin en la cual se desea desplazar el elemento. nombreElemento.getX() retorna la posicin actual en x del elemento. nombreElemento.getY() retorna la posicin en y del elemento.

1. Crear un proyecto de java desktop application

L.I. Dolores Villarreal

102

PROGRAMACION II

L.I. Dolores Villarreal

103

PROGRAMACION II

2 Agregamos una imagen que represente el elemento a mover. Lo colocamos en la ventana usando lo aprendido con las labels as, dicha label se llamar bala.

L.I. Dolores Villarreal

104

PROGRAMACION II

3. Agregaremos los siguientes elementos a la GUI

L.I. Dolores Villarreal

105

PROGRAMACION II

4. Codificamos las acciones que deseamos ejecutar Nombres para los spinners son: angulo, magnitud y retardo. Nombres para los botones son: mover, moverPasoPaso e inicial. El siguiente es el cdigo que analizaremos en clase //Evento del botn mover private void moverMouseClicked(java.awt.event.MouseEvent evt) { int ang = (Integer) angulo.getValue(); int mag = (Integer) magnitud.getValue(); int y = (int) (mag * Math.sin(Math.toRadians(ang))); int x = (int) (mag * Math.cos(Math.toRadians(ang))); int xi=bala.getX(); int yi=bala.getY(); bala.setLocation(xi+x, yi-y); } //Subprograma creado para generar un retardo private void retardo(){ int limite = (Integer) retardo.getValue();
L.I. Dolores Villarreal

106

PROGRAMACION II
for(long i=0;i<limite;i++); } //Tiene la misma filosofa del mover, solo que se logra ver en animacin private void moverPasoPasoMouseClicked(java.awt.event.MouseEvent evt) { int ang = (Integer) angulo.getValue(); int mag = (Integer) magnitud.getValue(); int xi=bala.getX(); int yi=bala.getY(); for (int m = 1; m <= mag; m++) { int y = (int) (m * Math.sin(Math.toRadians(ang))); int x = (int) (m * Math.cos(Math.toRadians(ang))); bala.setLocation(xi+x, yi-y); retardo(); bala.paintImmediately(mainPanel.getVisibleRect()); } } //Botn que coloca la bala en el centro de la ventana private void inicialMouseClicked(java.awt.event.MouseEvent evt) { bala.setLocation(mainPanel.getWidth()/2,mainPanel.getHeight()/2); } El concepto de colisin: En la teora de juegos, existe el concepto de colisin, es cuando un elemento toca a otro de forma que al detectar tal hecho hay que realizar alguna accin. Esto no es algo como en el mundo real donde los elementos por si mismos muestran que se han chocado, en este mundo virtual hay que mirarlo con las coordenadas de los elementos. Construiremos un subprograma que retorne true si hay colisin entre dos elementos enviados o false si no hay tal. Agregar una nueva etiqueta la cual llamaremos blanco y representar el elemento con el cual evaluaremos la colisin realizada.

L.I. Dolores Villarreal

107

PROGRAMACION II

//Subprograma que retorna si detecta una colisin entre dos elementos enviados como parmetros public boolean hayColision(Component a, Component b) { int ax1 = a.getX()+2; int ay1 = a.getY()+2; int ax2 = ax1 + a.getWidth()-4; int ay2 = ay1 + a.getHeight()-4; int bx1 = b.getX()+2; int by1 = b.getY()+2; int bx2 = bx1 + b.getWidth()-4; int by2 = by1 + b.getHeight()-4; boolean colx = (ax1 >= bx1 && ax1<= bx2) || (ax2 >= bx1 && ax2<= bx2) || (bx1 >= ax1 && bx1<= ax2) || (bx2 >= ax1 && bx2<= ax2); boolean coly = (ay1 >= by1 && ay1<= by2) || (ay2 >= by1 && ay2<= by2) || (by1 >= ay1 && by1<= ay2) || (by2 >= ay1 && by2<= ay2); return colx && coly; } //Subprograma que utiliza el concepto de colisin private void moverPasoPasoMouseClicked(java.awt.event.MouseEvent evt) { int ang = (Integer) angulo.getValue(); int mag = (Integer) magnitud.getValue(); int xi = bala.getX(); int yi = bala.getY();
L.I. Dolores Villarreal

108

PROGRAMACION II
boolean pego = hayColision(bala, blanco); for (int m = 1; m <= mag; m++) { if (!pego) { int y = (int) (m * Math.sin(Math.toRadians(ang))); int x = (int) (m * Math.cos(Math.toRadians(ang))); bala.setLocation(xi + x, yi - y); if (hayColision(bala, blanco)) { pego=true; JOptionPane.showMessageDialog(mainPanel, "Le peg"); } retardo(); bala.paintImmediately(mainPanel.getVisibleRect()); } } }

Ejercicios 1. Agregar los botones arriba, abajo, izquierda y derecha que permitan mover de lugar al blanco. 2. Agregar un botn, que permita hacer un disparo parablico. 3. Construir un juego similar al tiro al blanco utilizando varios blancos como tipo disco o patos.

L.I. Dolores Villarreal

109

You might also like