Tutorial Estructura de Datos

download Tutorial Estructura de Datos

of 8

Transcript of Tutorial Estructura de Datos

  • 8/3/2019 Tutorial Estructura de Datos

    1/8

    EDGAR M. JAMANCA ANTONIO ING. QUIMICA Estructura de Datos

    ESTRUCTURAS CONDICIONALES

    EJEMPLO DE APLICACIN: Disee el siguiente formulario utilizando los controles

    correspondientes.

    SOLUCION:

    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

  • 8/3/2019 Tutorial Estructura de Datos

    2/8

    EDGAR M. JAMANCA ANTONIO ING. QUIMICA Estructura de Datos

    ESTRUCTURAS CONDICIONALES: CONTROLES JRADIOBUTTON JCHECKBOX

    JRADIOBUTTON (Botn de Opcin): Este control se utiliza cuando se debe escoger una sola

    opcin de varias posibles.

    Evento Principal: ActionPerformed, se ejecuta cuando se selecciona un determinado radio.

    Mtodo Principal: isSelected, devuelve true si esta seleccionado, caso contrario devuelvefalse.

    Nota: Para poder seleccionar slo uno de los radios, tienen que estar agrupados, entoncesdebemos utilizar el control ButtonGroup (Grupo de Botones).

    JCHECKBOX (Casilla de Activacin): Este control permite activar varias alternativas de las

    propuestas.

    Evento Principal: ActionPerformed, se ejecuta cuando se activa una determinada casilla.

    Mtodo Principal: isSelected, devuelve true si esta activado, caso contrario devuelvefalse.

    EJEMPLO DE APLICACIN.

    SOLUCION:

    EJEMPLO DE APLICACIN (EVENTO ActionPerformed)

    BOTON Calcularprivate void

    btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {

    //Declarar variables segn el tipo de dato a almacenarString 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 vaca 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 Cerrar

    private void

    BtnCerrarActionPerformed(java.awt.event.ActionEvent evt) {

    System.exit(0);

    }

  • 8/3/2019 Tutorial Estructura de Datos

    3/8

    EDGAR M. JAMANCA ANTONIO ING. QUIMICA Estructura de Datos

    SOLUCION :

    ESTRUCTURAS REPETITIVAS

    Este tipo de estructuras consisten en ejecutar un bloque de cdigo un determinado nmero de veces, a cada una destas repeticiones se le denomina bucle o ciclo.

    EJERCICIO PROPUESTO

    JRADIOBUTTON maana

    private void rbtMaanaActionPerformed

    (java.awt.event.ActionEvent evt) {

    String A=this.txtAlumno.getText();

    this.lblCostMatric.setText("160");this.lblAlumno.setText(A);

    }

    JRADIOBUTTON Tarde

    private void rbttardeActionPerformed

    (java.awt.event.ActionEventevt)

    {

    String A=this.txtAlumno.getText();

    this.lblCostMatric.setText("140");

    this.lblAlumno.setText(A);}

    JRADIOBUTTON Noche

    private 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 botn de opcin. En esta

    aplicacin se ingresa el nombre del alumno y al

    seleccionar el turno de estudios se muestra el

    alumno registrado junto al pago por matricula segn

    turno seleccionado.

  • 8/3/2019 Tutorial Estructura de Datos

    4/8

    EDGAR M. JAMANCA ANTONIO ING. QUIMICA Estructura de Datos

    CONTADOR:Tiene la funcin 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 funcin 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: Sintaxis

    for(int variable=valor inicial; valor final; incremento/decremento){//instruccin(es)

    }

    ESTRUCTURA WHILE: Sintaxis: ESTRUCTURA DO-WHILE: Sitaxis

    While(condicin){ do{

    //instruccin(es) //instruccin(es)

    } }while(condicin);

    EJEMPLO DE APLICACIN: Utilizando Estructura FORprivate void btnEvaluarActionPerformed(java.awt.event.ActionEvent evt) {

    // Captura el nmero ingresado

    int num=Integer.parseInt(this.txtNumero.getText());

    int cd=0;//contador de divisores//Estructura repetiva for

    for (int i = 1; i

  • 8/3/2019 Tutorial Estructura de Datos

    5/8

    EDGAR M. JAMANCA ANTONIO ING. QUIMICA Estructura de Datos

    CONTROL JLISTSe utiliza para mostrar un listado de datos, permitiendo seleccionar uno o ms de los mismos para realizar algn tipo

    de operacin.

    Clase DefaultListModel: Esta clase se debe importar para crear una instancia (objeto) de la misma y luego asociarlo

    al control jlist del formulario.

    Importacin de la clase: import javax.swing.DefaultListModel;

    Creacin de una Instancia: DefaultListModel obj=new DefaultListModel();Nota: La importacin de la clase se realiza despus 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 Mtodos de una Instancia (objeto):

    Contains: Verifica si un elemento se encuentra registrado en una determinada instancia

    addElement: 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 Mtodos del control jList:

    Evento ValueChanged: Este evento se ejecuta cuando se selecciona un determinado elemento de una lista.

    Mtodo getSelectedIndex: Captura el ndice correspondiente al elemento seleccionado en una lista.

    Mtodo setModel: Asigna una instancia (objeto) a un control jList.

    APLICACIN EJEMPLO:

    Botn 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 digitado

    String curso=this.txtCurso.getText();//Verifica campo de texto vacio

    if (curso.equals("")) {

    JOptionPane.showMessageDialog(this,"IngreseCurso",

    "Atencin!!!",JOptionPane.INFORMATION_MESSAGE);

    this.txtCurso.requestFocus();

    } else {

    if (this.objCursos.contains(curso)) {

    JOptionPane.showMessageDialog(this,curso.toUpperCase()+" ya se encuentra

    registrado","Atencin!!!",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 tamao 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

    libreras 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.

  • 8/3/2019 Tutorial Estructura de Datos

    6/8

    EDGAR M. JAMANCA ANTONIO ING. QUIMICA Estructura de Datos

    APLICACIN PROPUESTA I APLICACIN PROPUESTA II

    Botn Eliminarprivate void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {

    //Captura tamao del modelo

    int cant=this.objCursos.getSize();

    //Captura ndice del elemento seleccionado

    int i=this.lstCursos.getSelectedIndex();

    //Verifica si la lista esta vaciaif (cant==0) {

    JOptionPane.showMessageDialog(this,"No Existen Elementos","Atencin!!!",JOptionPane.INFORMATION_MESSAGE);

    this.txtCurso.requestFocus();

    } else {

    if (i

  • 8/3/2019 Tutorial Estructura de Datos

    7/8

    EDGAR M. JAMANCA ANTONIO ING. QUIMICA Estructura de Datos

    ARREGLOS UNIDIMENSIONALES METODOS DE ORDENAMIENTO

    Un arreglo es una estructura que tiene la caracterstica de almacenar un conjunto de datos del mismo tipo.

    A los datos almacenados en un arreglo se puede acceder haciendo uso del ndice o posicin (valor entero que

    inicia en 0 y termina en una unidad menor al tamao del arreglo).

    El tamao de un arreglo indica la cantidad de elementos que contiene el arreglo. Utilice el mtodo length.

    Declaracin de un Arreglo:

    TipoDato NombreArreglo[]=new TipoDato[Tamao]APLICACIN EJEMPLO 1

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

    Este mtodo consiste en acomodar el arreglo

    moviendo el mayor hasta la ltima posicin

    comenzando desde la posicin cero del

    arreglo hasta haber acomodado el nmero

    ms grande en la ltima posicin, una vez

    acomodado el ms grande, prosigue a

    encontrar y acomodar el siguiente ms

    grande comparando de nuevo los nmeros

    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 ASCENDENTE

    private 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 mtodo 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 DESCENDENTE

    private void

    rbtDescActionPerformed(java.awt.event.ActionEven

    t evt) {

    this.objLista2.clear();//Limpia el control lstLista2int 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.getElement

    At(i).toString());}

    //Declara variable auxiliar

    double aux;

    //Utilizamos mtodo 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); }

  • 8/3/2019 Tutorial Estructura de Datos

    8/8

    EDGAR M. JAMANCA ANTONIO ING. QUIMICA Estructura de Datos

    APLICACIN EJEMPLO 2Objetos 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();} } }

    BOTON QUITAR

    private 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