9
IDAT - CHICLAYO Estructura de Datos ESTRUCTURAS CONDICIONALES EJEMPLO DE APLICACIÓN: Diseñe el siguiente formulario utilizando los controles correspondientes. SOLUCION: Primera Organización Tecnológica de Nivel Superior SUPERW@GN3R Indicaciones: Se solicita el ingreso del nombre del producto, precio y cantidad. Muestre el producto, importe de compra, descuento e importe final. Importe Inicial BOTON Mostrar private void btnMostrarActionPerformed(java.awt.event.ActionEve nt evt) { //Declarar variables según el tipo de dato a almacenar String prod=this.txtProd.getText(); double prec=Double.parseDouble(this.txtPrec.get Text()); int cant=Integer.parseInt(this.txtCant.getTe xt()); //Calcular el importe inicial de la venta double imp_ini=prec * cant; //Se calcula descuento según importe de compra double d=0; if (imp_ini>0 && imp_ini<=50) { d=0.05 * imp_ini; } else { if (imp_ini>50 && imp_ini<=100) { d=0.10 * imp_ini; } else { d=0.20 * imp_ini; BOTON Nuevo private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) { //Asigna una cadena vacía a cada control indicado this.txtProd.setText(""); this.txtPrec.setText(""); this.txtCant.setText(""); this.lblProd.setText(""); this.lblImpInic.setText(""); this.lblDscto.setText(""); this.lblImpFinal.setText(""); //Ubica el cursor en la primera caja de texto this.txtProd.requestFocus(); } BOTON Cerrar private void btnCerrarActionPerformed (java.awt.event.ActionEvent evt) EJERCICIO PROPUESTO Ingr ese el nombre del empleado, sueldo básico y la cantidad de años que labora en la empresa. Se calcula su bonificación en base al tiempo de servicio: menos de 5 años 5%, entre 5 y

Tutorial Estructura de Datos_SUPERW@GN3R

Embed Size (px)

Citation preview

Page 1: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

ESTRUCTURAS CONDICIONALESEJEMPLO DE APLICACIÓN: Diseñe el siguiente formulario utilizando los controles correspondientes.

SOLUCION:

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R

Indicaciones:Se solicita el ingreso del nombre del producto, precio y cantidad.Muestre el producto, importe de compra, descuento e importe final.Importe Inicial Descuento<0 – 50] 5%<50 – 100] 10%<100 – 200] 20%

BOTON Mostrarprivate void btnMostrarActionPerformed(java.awt.event.ActionEvent evt) {

//Declarar variables según el tipo de dato a almacenar String prod=this.txtProd.getText(); double prec=Double.parseDouble(this.txtPrec.getText()); int cant=Integer.parseInt(this.txtCant.getText()); //Calcular el importe inicial de la venta double imp_ini=prec * cant; //Se calcula descuento según importe de compra double d=0; if (imp_ini>0 && imp_ini<=50) { d=0.05 * imp_ini; } else { if (imp_ini>50 && imp_ini<=100) { d=0.10 * imp_ini; } else { d=0.20 * imp_ini; } } //Calcular el importe final a pagar double IF=imp_ini - d; //Mostrar resultados obtenidos this.lblProd.setText(prod); this.lblImpInic.setText(imp_ini+""); this.lblDscto.setText(d+""); this.lblImpFinal.setText(IF+""); }

BOTON Nuevoprivate void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {

//Asigna una cadena vacía a cada control indicado this.txtProd.setText(""); this.txtPrec.setText(""); this.txtCant.setText(""); this.lblProd.setText(""); this.lblImpInic.setText(""); this.lblDscto.setText(""); this.lblImpFinal.setText(""); //Ubica el cursor en la primera caja de texto this.txtProd.requestFocus(); }

BOTON Cerrarprivate void btnCerrarActionPerformed (java.awt.event.ActionEvent evt)

{ System.exit(0); }

EJERCICIO PROPUESTO

Ingrese el nombre del empleado, sueldo básico y la cantidad de años que labora en la empresa. Se calcula su bonificación en base al tiempo de servicio: menos de 5 años 5%, entre 5 y 10 años 8%, más de 10 años el 10%. Estos porcentajes se calculan en base al sueldo básico.

Page 2: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

ESTRUCTURAS CONDICIONALES: CONTROLES JRADIOBUTTON – JCHECKBOXJRADIOBUTTON (Botón de Opción): Este control se utiliza cuando se debe escoger una sola opción de varias posibles. Evento Principal: ActionPerformed, se ejecuta cuando se selecciona un determinado radio.Método Principal: isSelected, devuelve true si esta seleccionado, caso contrario devuelve false.Nota: Para poder seleccionar sólo uno de los radios, tienen que estar agrupados, entonces debemos utilizar el control ButtonGroup (Grupo de Botones). JCHECKBOX (Casilla de Activación): Este control permite activar varias alternativas de las propuestas.Evento Principal: ActionPerformed, se ejecuta cuando se activa una determinada casilla.Método Principal: isSelected, devuelve true si esta activado, caso contrario devuelve false.EJEMPLO DE APLICACIÓN.

SOLUCION:

EJEMPLO DE APLICACIÓN (EVENTO ActionPerformed)

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R

BOTON Calcularprivate void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { //Declarar variables según el tipo de dato a almacenar String Pro=this.txtProd.getText(); double Pre=Double.parseDouble(this.txtPrecio.getText()); int Can=Integer.parseInt(this.txtCantidad.getText()); //Calcular el importe inicial de la venta double ImpIni=Pre*Can; //Calcular Descuento Segun Procedencia double DctoProc; if (this.rbnNacinal.isSelected()) { DctoProc=ImpIni*0.10; } else { DctoProc=ImpIni*0.05; } //Calcular Descuento Adicional double DctoAdic; if (this.ckbDctoAdic.isSelected()) { DctoAdic=ImpIni*0.05; } else { DctoAdic=0.00; } //Calculamos el Total a Pagar double TP=ImpIni-DctoProc-DctoAdic; //Mostramos resulatados Obtenidos this.lblProd.setText(Pro); this.lblImportInic.setText(ImpIni+""); this.lbldsctoxProc.setText(DctoProc+""); this.lbldsctoAdic.setText(DctoAdic+""); this.lblTotalPag.setText(TP+""); }

BOTON Nuevo //Asigna una cadena vacía a cada control indicado this.txtProd.setText(""); this.txtPrecio.setText(""); this.txtCantidad.setText(""); this.lblProd.setText(""); this.lblImportInic.setText(""); this.lbldsctoxProc.setText(""); this.lbldsctoAdic.setText(""); this.lblTotalPag.setText(""); //Ubica el cursor en la primera caja de texto this.txtProd.requestFocus(); //Muestra seleccionado del Primer Jradiobutton this.rbnNacinal.setSelected(true); //Desactivamos el jCheckbox this.ckbDctoAdic.setSelected(false); }

BOTON Cerrarprivate void BtnCerrarActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0);}

Page 3: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

SOLUCION :

ESTRUCTURAS REPETITIVASEste tipo de estructuras consisten en ejecutar un bloque de código un determinado número de veces, a cada una de éstas repeticiones se le denomina “bucle” o “ciclo”.

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R

EJERCICIO PROPUESTO

JRADIOBUTTON mañanaprivate void rbtMañanaActionPerformed(java.awt.event.ActionEvent evt) { String A=this.txtAlumno.getText(); this.lblCostMatric.setText("160"); this.lblAlumno.setText(A); }

JRADIOBUTTON Tardeprivate void rbttardeActionPerformed(java.awt.event.ActionEventevt) { String A=this.txtAlumno.getText(); this.lblCostMatric.setText("140"); this.lblAlumno.setText(A); }

JRADIOBUTTON Nocheprivate void rbttardeActionPerformed(java.awt.event.ActionEventevt) { String A=this.txtAlumno.getText(); this.lblCostMatric.setText("120"); this.lblAlumno.setText(A); }

El evento actionperformed, se ejecuta cuando se selecciona un determinado botón de opción. En esta aplicación se ingresa el nombre del alumno y al seleccionar el turno de estudios se muestra el alumno registrado junto al pago por matricula según turno seleccionado.

Page 4: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

CONTADOR: Tiene la función de “contar” un determinado suceso en cada “ciclo” de la estructura. Generalmente, la variable contador es de tipo entero, su valor inicial es 0 y su valor se incrementa en 1 por cada “bucle” que se ejecuta.ACUMULADOR: Tiene la función de “sumar” una determinada variable en cada ciclo de la estructura. Generalmente, tiene valor inicial 0 y el tipo de dato depende de la variable a acumular.ESTRUCTURA FOR: Sintaxisfor(int variable=valor inicial; valor final; incremento/decremento){

//instrucción(es)}ESTRUCTURA WHILE: Sintaxis: ESTRUCTURA DO-WHILE: SitaxisWhile(condición){ do{

//instrucción(es) //instrucción(es)} }while(condición);

EJEMPLO DE APLICACIÓN:

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R

Utilizando Estructura FORprivate void btnEvaluarActionPerformed(java.awt.event.ActionEvent evt) { // Captura el número ingresado int num=Integer.parseInt(this.txtNumero.getText()); int cd=0;//contador de divisores //Estructura repetiva for for (int i = 1; i <= num; i++) { if(num%i==0) cd=cd+1; } //verifica si solo tiene 2 divisores if (cd==2) { this.lblResultado.setText("EL "+num+" ES UN NUMERO PRIMO"); } else { this.lblResultado.setText("EL "+num+" NO ES UN NUMERO PRIMO"); } }

Número Primo, se le denomina a aquel número entero que sólo tiene 2 divisores: la unidad y el mismo número.

Utilizando Estructura WHILEprivate void btnEvaluarActionPerformed(java.awt.event.ActionEvent evt) { // Captura el número ingresado int num=Integer.parseInt(this.txtNumero.getText()); int cd=0,i=1; //Estructura repetiva while while(i<=num) { if(num%i==0){ cd=cd+1;} i++;//incrementa el contador en 1 } //verifica si solo tiene 2 divisores if (cd==2) { this.lblResultado.setText("EL "+num+" ES UN NUMERO PRIMO"); } else { this.lblResultado.setText("EL "+num+" NO ES UN NUMERO PRIMO"); } }

Utilizando Estructura DO-WHILEprivate void btnEvaluarActionPerformed(java.awt.event.ActionEvent evt) { // Captura el número ingresado int num=Integer.parseInt(this.txtNumero.getText()); int cd=0,i=1; //Estructura repetiva do while do { if(num%i==0){ cd=cd+1;} i++;//incrementa el contador en 1 }while(i<=num); //verifica si solo tiene 2 divisores if (cd==2) { this.lblResultado.setText("EL "+num+" ES UN NUMERO PRIMO"); } else { this.lblResultado.setText("EL "+num+" NO ES UN NUMERO PRIMO"); } }

Page 5: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

CONTROL JLISTSe utiliza para mostrar un listado de datos, permitiendo seleccionar uno o más de los mismos para realizar algún tipo de operación.Clase DefaultListModel: Esta clase se debe importar para crear una instancia (objeto) de la misma y luego asociarlo al control jlist del formulario.Importación de la clase: import javax.swing.DefaultListModel;Creación de una Instancia: DefaultListModel obj=new DefaultListModel();Nota: La importación de la clase se realiza después del nombre del paquete. El objeto (obj) puede tener cualquier nombre. Se debe crear una instancia por cada control jList utilizado en el formulario.Principales Métodos de una Instancia (objeto):Contains: Verifica si un elemento se encuentra registrado en una determinada instanciaaddElement: Adiciona un elemento a una instancia. remove: Elimina un elemento de una instancia.getElementAt: Captura el elemento de una instancia correspondiente al índice seleccionado en una lista.getSize: Captura la cantidad de elementos que contiene una instancia.Principales Eventos y Métodos del control jList:Evento ValueChanged: Este evento se ejecuta cuando se selecciona un determinado elemento de una lista.Método getSelectedIndex: Captura el índice correspondiente al elemento seleccionado en una lista.Método setModel: Asigna una instancia (objeto) a un control jList.

APLICACIÓN EJEMPLO:

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R

Botón Cerrarprivate void brnCerrarActionPerformed(java.awt.event.ActionEvent evt) { int rpta=JOptionPane.showConfirmDialog(this,"Estas Seguro?","Salir",JOptionPane.YES_NO_OPTION); if(rpta==0) System.exit(0); }

Boton Registrarprivate void btnRegistrarActionPerformed(java.awt.event.ActionEvent evt) { //Captura nombre del curso digitadoString curso=this.txtCurso.getText(); //Verifica campo de texto vacio if (curso.equals("")) { JOptionPane.showMessageDialog(this,"IngreseCurso","Atención!!!",JOptionPane.INFORMATION_MESSAGE); this.txtCurso.requestFocus(); } else { if (this.objCursos.contains(curso)) { JOptionPane.showMessageDialog(this,curso.toUpperCase()+" ya se encuentra registrado","Atención!!!",JOptionPane.INFORMATION_MESSAGE); this.txtCurso.setText(""); this.txtCurso.requestFocus(); } else { //Agrega dato al objeto creado this.objCursos.addElement(curso); //Asigna el objeto al control jlist this.lstCursos.setModel(objCursos); //Captura el tamaño del objeto(cantidad de elementos) int cant=this.objCursos.getSize(); //Muestra cantidad en la etiqueta this.lblTotal.setText(cant+""); //Limpia y ubica el cursor en la caja de texto this.txtCurso.setText(""); this.txtCurso.requestFocus(); } } }

Siga las instrucciones del docente para importar las librerías y clases correspondientes, así como para crear la instancia a utilizar en este formulario.

El control jList tiene asignado por defecto Items del 1 al 5, hay que eliminar éstos ítems antes de codificar. Ubique la propiedad model y suprima el listado de ítems.

Page 6: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

APLICACIÓN PROPUESTA I APLICACIÓN PROPUESTA II

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R

Botón Eliminarprivate void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) { //Captura tamaño del modelo int cant=this.objCursos.getSize(); //Captura índice del elemento seleccionado int i=this.lstCursos.getSelectedIndex(); //Verifica si la lista esta vacia if (cant==0) {JOptionPane.showMessageDialog(this,"No Existen Elementos","Atención!!!",JOptionPane.INFORMATION_MESSAGE);this.txtCurso.requestFocus(); } else { if (i<0) {//verifica si no seleccionó elemento JOptionPane.showMessageDialog(this,"Seleccione Elemento","Atención!!!",JOptionPane.INFORMATION_MESSAGE); this.txtCurso.requestFocus(); } else { //Elimina elemento correspondiente al índice this.objCursos.remove(i); //Captura y asigna cantidad de elementos this.lblTotal.setText(this.objCursos.getSize()+""); } } }

Page 7: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

ARREGLOS UNIDIMENSIONALES – METODOS DE ORDENAMIENTOUn arreglo es una estructura que tiene la característica de almacenar un conjunto de datos del mismo tipo.A los datos almacenados en un arreglo se puede acceder haciendo uso del índice o posición (valor entero que inicia en 0 y termina en una unidad menor al tamaño del arreglo).El tamaño de un arreglo indica la cantidad de elementos que contiene el arreglo. Utilice el método length.Declaración de un Arreglo:TipoDato NombreArreglo[]=new TipoDato[Tamaño]APLICACIÓN EJEMPLO 1

Objetos utilizados:DefaultListModel objLista1=new DefaultListModel();DefaultListModel objLista2=new DefaultListModel();

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R

Este método consiste en acomodar el arreglo moviendo el mayor hasta la última posición comenzando desde la posición cero del arreglo hasta haber acomodado el número más grande en la última posición, una vez acomodado el más grande, prosigue a encontrar y acomodar el siguiente más grande comparando de nuevo los números desde el inicio del arreglo, y así sigue hasta ordenar todo los elementos del arreglo.

private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) { double num=Double.parseDouble(this.txtNum.getText()); this.objLista1.addElement(num); this.lstLista1.setModel(objLista1); this.txtNum.setText(""); this.txtNum.requestFocus(); }

ORDEN ASCENDENTEprivate void rbtAscActionPerformed(java.awt.event.ActionEvent evt) { this.objLista2.clear();//Limpia el control lstLista2 int cant=this.objLista1.getSize(); //Declaramos arreglo de "cant" elementos double A[]=new double[cant]; //Agrega al arreglo cada elemento del objeto objLista1 for (int i = 0; i < A.length; i++) { A[i]=Double.parseDouble(this.objLista1.getElementAt(i).toString());} //Declara variable auxiliar double aux; //Utilizamos método de ordenamiento Burbuja for (int i = 0; i < A.length; i++) { for (int j = i+1; j < A.length; j++) { if(A[i]>A[j]){ aux=A[i]; A[i]=A[j]; A[j]=aux; } } } //Agrega los elementos ordenados al objeto objLista2 for (int i = 0; i < A.length; i++) { this.objLista2.addElement(A[i]); } this.lstLista2.setModel(objLista2); }

ORDEN DESCENDENTEprivate void rbtDescActionPerformed(java.awt.event.ActionEvent evt) { this.objLista2.clear();//Limpia el control lstLista2 int cant=this.objLista1.getSize(); //Declaramos arreglo de "cant" elementos double A[]=new double[cant]; //Agrega al arreglo cada elemento del objeto objLista1

for (int i = 0; i < A.length; i++) { A[i]=Double.parseDouble(this.objLista1.getElementAt(i).toString());} //Declara variable auxiliar double aux; //Utilizamos método de ordenamiento Burbuja for (int i = 0; i < A.length; i++) { for (int j = i+1; j < A.length; j++) { if(A[i]>A[j]){ aux=A[i]; A[i]=A[j]; A[j]=aux; } } }//Agrega los elementos ordenados al objeto objLista2 for (int i = 0; i < A.length; i++) { this.objLista2.addElement(A[i]); } this.lstLista2.setModel(objLista2); }

Page 8: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

APLICACIÓN EJEMPLO 2

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R

Objetos utilizados:DefaultListModel objnom=new DefaultListModel();DefaultListModel objaux=new DefaultListModel();BOTON AGREGAR:private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String nombre=this.jTextField1.getText(); if (nombre.equals("")) { JOptionPane.showMessageDialog(this,"Digite Nombre","Atencion",JOptionPane.INFORMATION_MESSAGE); this.jTextField1.requestFocus(); } else { if (this.objnom.contains(nombre)) {JOptionPane.showMessageDialog(this,"Nombre se encuentra registrado","Atencion", JOptionPane.INFORMATION_MESSAGE); this.jTextField1.setText("");this.jTextField1.requestFocus(); } else { this.objnom.addElement(nombre); this.jList1.setModel(objnom); this.jLabel3.setText(this.objnom.getSize()+""); this.jTextField1.setText(""); this.jTextField1.requestFocus();} } }

Ordenar por: Nombre, PromedioConsidere validaciones en los diferentes controles del formulario.

BOTON QUITARprivate void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { int i=this.jList1.getSelectedIndex(); int cant=this.objnom.getSize(); if (cant==0) { JOptionPane.showMessageDialog(this,"Registro en Blanco","Atencion",JOptionPane.INFORMATION_MESSAGE); this.jTextField1.requestFocus(); } else { if (i<0) { JOptionPane.showMessageDialog(this,"Seleccione Nombre","Atencion",JOptionPane.INFORMATION_MESSAGE); } else { this.objnom.remove(i); this.jLabel3.setText(this.objnom.getSize()+""); } } }

BOTON ORDENARprivate void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { this.objaux.clear(); //agregar a un arreglo los elementos de una lisa int cant=this.objnom.getSize(); String nombres[]=new String [cant]; for (int i=0;i<cant;i++){ nombres[i]=this.objnom.getElementAt(i).toString(); }if(this.jRadioButton1.isSelected()){//orden ascendentefor(int i=0;i<cant;i++){ for(int j=i+1;j<cant;j++){ if(nombres[i].compareTo(nombres[j])>0){//compara dos cadenas String name=nombres[i]; nombres[i]=nombres[j]; nombres[j]=name; } }}else{ //orden descendentefor(int i=0;i<cant;i++){ for(int j=i+1;j<cant;j++){ if(nombres[i].compareTo(nombres[j])<0){//compara dos cadenas String name=nombres[i]; nombres[i]=nombres[j]; nombres[j]=name; } } } }//agrega a objaux el contenido del arreglofor(int i=0;i<cant;i++){ this.objaux.addElement(nombres[i]);}//asignamos el objaux a la listathis.jList2.setModel(objaux);this.jLabel5.setText(this.objaux.getSize()+""); }

Page 9: Tutorial Estructura de Datos_SUPERW@GN3R

IDAT - CHICLAYO Estructura de Datos

SALU2

TARINGA

T!UN PEQUEÑO APORTE DE:

SUPERW@GN3R

Primera Organización Tecnológica de Nivel Superior Estudiante: SUPERW@GN3R