viernes, 25 de octubre de 2013

Convertidor de grados Java




import javax.swing.*;


public class Conversor extends javax.swing.JFrame {
    private Object objJTextField;

 
    public Conversor() {
        initComponents()
               
                ;
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        etGradosC = new javax.swing.JLabel();
        etGradosF = new javax.swing.JLabel();
        ctGradosC = new javax.swing.JTextField();
        ctGradosF = new javax.swing.JTextField();
        btAceptar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Conversion De Temperaturas");

        etGradosC.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
        etGradosC.setText("Grados Centigrados");

        etGradosF.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
        etGradosF.setText("Grados Fahrenheit");

        ctGradosC.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        ctGradosC.setText("0.00");
        ctGradosC.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                ctGradosCKeyTyped(evt);
            }
        });

        ctGradosF.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        ctGradosF.setText("32.00");
        ctGradosF.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                ctGradosFKeyTyped(evt);
            }
        });

        btAceptar.setMnemonic('A');
        btAceptar.setText("Aceptar");
        btAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAceptarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(22, 22, 22)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(btAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(etGradosC)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(ctGradosC, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(etGradosF)
                            .addGap(18, 18, 18)
                            .addComponent(ctGradosF, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(24, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(72, 72, 72)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(etGradosC)
                    .addComponent(ctGradosC, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(60, 60, 60)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(etGradosF, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(ctGradosF))
                .addGap(28, 28, 28)
                .addComponent(btAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(29, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAceptarActionPerformed
       
        try
        {
          double grados;
           
         
          if(objJTextField==ctGradosC)
          {
           grados=Double.parseDouble(ctGradosC.getText())*9.0/5.0+32.0;
           String texto=String.format("%.2f",grados);   //redondear a decimales
           ctGradosF.setText(texto);
          }
         
          if(objJTextField==ctGradosF)
          {
              grados=(Double.parseDouble(ctGradosF.getText())-32.0)*5.0/9.0;
              String texto=String.format("%.2f",grados);
              ctGradosC.setText(texto);
          }
        }
       
        catch(NumberFormatException e)
        {
            ctGradosC.setText(".00");
                   
           ctGradosF.setText("32.00");
         
           
        }
       
       
       
    }//GEN-LAST:event_btAceptarActionPerformed

    private void ctGradosCKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_ctGradosCKeyTyped
        // TODO add your handling code here:
        objJTextField=evt.getSource();
       
    }//GEN-LAST:event_ctGradosCKeyTyped

    private void ctGradosFKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_ctGradosFKeyTyped
        // TODO add your handling code here:
        objJTextField=evt.getSource();
       
    }//GEN-LAST:event_ctGradosFKeyTyped

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Conversor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Conversor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Conversor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Conversor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Conversor().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAceptar;
    private javax.swing.JTextField ctGradosC;
    private javax.swing.JTextField ctGradosF;
    private javax.swing.JLabel etGradosC;
    private javax.swing.JLabel etGradosF;
    // End of variables declaration//GEN-END:variables
}

Calculadora en JAVA





import javax.swing.*;
import java.awt.event.*;
import java.util.HashSet;

/*
 *
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author JOSUE
 */

public class Calculadora extends javax.swing.JFrame {

    private Entrada ultimaEntrada;
    private boolean puntoDecimal;
    private char operador;
    private byte numOperandos;
    private double operando1,operando2;
   
    private enum Entrada{NINGUNA,DIGITO,OPERADOR,CE};
    /**
     * Creates new form Calculadora
     */
    public Calculadora()
    {
   
        initComponents();
        ultimaEntrada=  Entrada.NINGUNA;
        puntoDecimal=false;
        numOperandos=0;
        operando1=0;
        operando2=0;
       
    }
   
   
   
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jbtDigito18 = new javax.swing.JButton();
        jtfPantalla = new javax.swing.JTextField();
        jbtDigito8 = new javax.swing.JButton();
        jbtDigito7 = new javax.swing.JButton();
        jbtDigito9 = new javax.swing.JButton();
        jbtDigito4 = new javax.swing.JButton();
        jbtDigito5 = new javax.swing.JButton();
        jbtDigito6 = new javax.swing.JButton();
        jbtDigito2 = new javax.swing.JButton();
        jbtDigito3 = new javax.swing.JButton();
        jbtDigito1 = new javax.swing.JButton();
        jbtDigito0 = new javax.swing.JButton();
        jbtDigitoPunto = new javax.swing.JButton();
        jbtDividir = new javax.swing.JButton();
        jbtInicial = new javax.swing.JButton();
        jbtMenos = new javax.swing.JButton();
        jbtMas = new javax.swing.JButton();
        jbtBorrarEntrada = new javax.swing.JButton();
        jbtIgual = new javax.swing.JButton();
        jbtPor = new javax.swing.JButton();
        jbtTantoPorCiento = new javax.swing.JButton();

        jbtDigito18.setText("9");

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Calculadora");
        setBackground(new java.awt.Color(204, 255, 255));
        setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

        jtfPantalla.setEditable(false);
        jtfPantalla.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
        jtfPantalla.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jtfPantalla.setText("0.");

        jbtDigito8.setText("8");
        jbtDigito8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito7.setText("7");
        jbtDigito7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito9.setText("9");
        jbtDigito9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito4.setText("4");
        jbtDigito4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito5.setText("5");
        jbtDigito5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito6.setText("6");
        jbtDigito6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito2.setText("2");
        jbtDigito2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito3.setText("3");
        jbtDigito3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito1.setText("1");
        jbtDigito1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigito0.setText("0");
        jbtDigito0.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoActionPerformed(evt);
            }
        });

        jbtDigitoPunto.setText(".");
        jbtDigitoPunto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtDigitoPuntoActionPerformed(evt);
            }
        });

        jbtDividir.setText("/");
        jbtDividir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtOperacionActionPerformed(evt);
            }
        });

        jbtInicial.setText("C");
        jbtInicial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtInicialActionPerformed(evt);
            }
        });

        jbtMenos.setText("-");
        jbtMenos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtOperacionActionPerformed(evt);
            }
        });

        jbtMas.setText("+");
        jbtMas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtOperacionActionPerformed(evt);
            }
        });

        jbtBorrarEntrada.setText("CE");
        jbtBorrarEntrada.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtBorrarEntrada(evt);
            }
        });

        jbtIgual.setText("=");
        jbtIgual.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtOperacionActionPerformed(evt);
            }
        });

        jbtPor.setText("X");
        jbtPor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtOperacionActionPerformed(evt);
            }
        });

        jbtTantoPorCiento.setText("%");
        jbtTantoPorCiento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtTantoPorCientoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addComponent(jbtDigito0, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jbtDigitoPunto, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jbtDigito7, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jbtDigito8, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jbtDigito4, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jbtDigito5, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jbtDigito1, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jbtDigito2, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jbtDigito6, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(jbtDigito9, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(jbtDigito3, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))))
                        .addGap(54, 54, 54)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jbtDividir, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jbtMenos, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                                .addGroup(layout.createSequentialGroup()
                                    .addComponent(jbtPor, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(jbtMas, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(layout.createSequentialGroup()
                                    .addGap(0, 0, Short.MAX_VALUE)
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                                        .addComponent(jbtTantoPorCiento, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGroup(layout.createSequentialGroup()
                                            .addComponent(jbtInicial, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jbtBorrarEntrada, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                            .addComponent(jbtIgual, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(19, 19, 19)
                        .addComponent(jtfPantalla, javax.swing.GroupLayout.PREFERRED_SIZE, 348, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(22, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(33, 33, 33)
                .addComponent(jtfPantalla, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jbtDigito7, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jbtDigito8, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jbtDigito9, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jbtBorrarEntrada, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jbtInicial, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jbtDigito6, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jbtDigito5, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jbtDigito4, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jbtMenos, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jbtDividir, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jbtDigito3, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jbtDigito2, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jbtDigito1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jbtDigito0, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jbtDigitoPunto, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jbtMas, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jbtPor, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jbtTantoPorCiento, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jbtIgual, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jbtDigitoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtDigitoActionPerformed
        // TODO add your handling code here:
       
       
     
       
       
         JButton objJBT=(JButton)evt.getSource();
         String textoBoton=objJBT.getText();
       
         if(ultimaEntrada !=Entrada.DIGITO)
         {
             if(textoBoton.compareTo("0")==0)return;
             jtfPantalla.setText("");
             ultimaEntrada=Entrada.DIGITO;
         }
       
  jtfPantalla.setText(jtfPantalla.getText() + textoBoton);
 
       
    }//GEN-LAST:event_jbtDigitoActionPerformed

    private void jbtDigitoPuntoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtDigitoPuntoActionPerformed
        // TODO add your handling code here:
        if(ultimaEntrada !=Entrada.DIGITO)
        {
            jtfPantalla.setText("0.");
            ultimaEntrada=Entrada.DIGITO;
        }
       
        else if(puntoDecimal==false)
       
            jtfPantalla.setText(jtfPantalla.getText()+ ".");
        puntoDecimal=true;
     
    }//GEN-LAST:event_jbtDigitoPuntoActionPerformed

    private void jbtOperacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtOperacionActionPerformed
        // TODO add your handling code here:
       
        JButton objJBT=(JButton)evt.getSource();
        String textoBoton=objJBT.getText();
       
        if((numOperandos == 0) && (textoBoton.compareTo("-")==0))
         ultimaEntrada = Entrada.DIGITO;
       
          if (ultimaEntrada == Entrada.DIGITO)
      numOperandos++;
     
         
               
       
        if(numOperandos==1)
            operando1=Double.parseDouble(jtfPantalla.getText());
        else if(numOperandos==2)
        {
            operando2=Double.parseDouble(jtfPantalla.getText());
           
            switch (operador)
            {
                case '+':
                    operando1 +=operando2;
                    break;
                   
                   
                case '-':
                    operando1 -=operando2;
                    break;
                   
                   
                case 'X':
                   
                    operando1 *= operando2;
                    break;
                   
                   
                case '/':
                    operando1/=operando2;
                    break;
                   
                   
                   
                case '=':
                    operando1=operando2;
                    break;  
            }
           
            jtfPantalla.setText(Double.toString(operando1));
            numOperandos=1;
           
        }
       
        operador=textoBoton.charAt(0);
        ultimaEntrada=Entrada.OPERADOR;
   
    }//GEN-LAST:event_jbtOperacionActionPerformed

    private void jbtTantoPorCientoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtTantoPorCientoActionPerformed
        // TODO add your handling code here:
       
        double resultado;
       
        if(ultimaEntrada==Entrada.DIGITO)
        {
            resultado=operando1*Double.parseDouble(jtfPantalla.getText())/100;
            jtfPantalla.setText(Double.toString(resultado));
           
            jbtIgual.doClick();
           jbtTantoPorCiento.requestFocus();
        }
       
       
    }//GEN-LAST:event_jbtTantoPorCientoActionPerformed

    private void jbtInicialActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtInicialActionPerformed
        // TODO add your handling code here:
       
        jtfPantalla.setText("0.");
        ultimaEntrada=Entrada.NINGUNA;
        puntoDecimal=false;
        operador=0;
        numOperandos=0;
        operando1=0;
        operando2=0;
    }//GEN-LAST:event_jbtInicialActionPerformed

    private void jbtBorrarEntrada(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtBorrarEntrada
        // TODO add your handling code here:
        jtfPantalla.setText("0.");
        ultimaEntrada=Entrada.CE;
        puntoDecimal=false;
       
    }//GEN-LAST:event_jbtBorrarEntrada

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Calculadora.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Calculadora.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Calculadora.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Calculadora.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Calculadora().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jbtBorrarEntrada;
    private javax.swing.JButton jbtDigito0;
    private javax.swing.JButton jbtDigito1;
    private javax.swing.JButton jbtDigito18;
    private javax.swing.JButton jbtDigito2;
    private javax.swing.JButton jbtDigito3;
    private javax.swing.JButton jbtDigito4;
    private javax.swing.JButton jbtDigito5;
    private javax.swing.JButton jbtDigito6;
    private javax.swing.JButton jbtDigito7;
    private javax.swing.JButton jbtDigito8;
    private javax.swing.JButton jbtDigito9;
    private javax.swing.JButton jbtDigitoPunto;
    private javax.swing.JButton jbtDividir;
    private javax.swing.JButton jbtIgual;
    private javax.swing.JButton jbtInicial;
    private javax.swing.JButton jbtMas;
    private javax.swing.JButton jbtMenos;
    private javax.swing.JButton jbtPor;
    private javax.swing.JButton jbtTantoPorCiento;
    private javax.swing.JTextField jtfPantalla;
    // End of variables declaration//GEN-END:variables
}

viernes, 18 de octubre de 2013

Aprender a programar

La programación de computadoras es una actividad fascinante, el poder hacer una aplicación a la medida y de acuerdo a nuestras necesidades es una actividad interesante y llena de recompensas.

Mucha gente llega a pensar que solamente con aprender la sintaxis de un lenguaje de programación es suficiente para poder hacer programas, pero se equivocan. Aun más importante que la sintaxis del lenguaje es la técnica de resolución del problema y el análisis adecuado.

El tener buenos hábitos de análisis y programación desde el inicio es fundamental para convertirnos en buenos programadores.

Utilizar una interfaz de nivel de llamada de SQL

Un programa puede acceder a una base de datos
SQL utilizando SQL incrustado y los módulos cliente SQL. En SQL incrustado, las instrucciones
SQL se insertan directamente en el lenguaje de programación host. Para los módulos cliente
de SQL, el programa host convoca los módulos que contienen instrucciones SQL ejecutables. Las
instrucciones están separadas del lenguaje host. SQL proporciona aún otro método para acceder a
los datos SQL desde dentro del lenguaje de programación (la interfaz de nivel de llamada), o CLI,
por sus siglas en inglés (call-level interface).


Una CLI es una interfaz de programación de aplicaciones (API, por sus siglas en inglés) que
soporta un conjunto de rutinas predefinidas que permiten que un lenguaje de programación se comunique
con una base de datos SQL. El lenguaje de programación convoca las rutinas, que luego se
conectan a la base de datos. Las rutinas acceden a los datos y a la información de estatus de la base de
datos, según se requiera, y arrojan esa información al programa. La figura 17-3 proporciona la idea
general de cómo una CLI permite que un programa se comunique con una base de datos SQL.
El programa invoca rutinas CLI a través del uso de funciones. Cuando se convoca una función,
el programa debe especificar valores para los argumentos de la función. Estos valores definen
qué acciones y cuáles datos serán accedidos. La función pasa los valores a la rutina designada, que
actúa como una interfaz entre el programa y la base de datos SQL. La CLI, en efecto, oculta los
detalles de acceder a la base de datos desde el programa, haciendo posible para el programa el acceso
a las bases de datos en diferentes sistemas de administración.


Una de las implementaciones mejor conocidas del modelo CLI es la interfaz de programación
Open Database Connectivity de Microsoft (ODBC), a pesar de que otros fabricantes han sacado al
mercado productos del tipo CLI que soportan tipos similares de acceso a la base de datos. Además,
nuevas generaciones de API de acceso de datos están ganando popularidad, por ejemplo, OLE-DB

de Microsoft, que es más eficiente que ODBC y soporta acceso tanto a las fuentes de datos SQL
como a otros tipos de fuentes de datos. Para los programadores de Java existe una API similar llamada
JDBC. También encontrará que tales productos, como ActiveX Data Object (ADO), proporcionan
una interfaz orientada a objetos entre los lenguajes de conjunto de instrucciones o lenguajes
orientados a objetos y la API OLE-DB. Muchas herramientas de desarrollo también han hecho
que acceder a una fuente de datos SQL sea más fácil que nunca. Por ejemplo, Visual Studio .NET
permite construir aplicaciones de manejo de datos en lenguajes como Visual Basic, C++ y C#. Al
utilizar las herramientas integradas ADO.NET se pueden crear aplicaciones que puedan acceder a
una variedad de fuentes de datos, por ejemplo SQL Server y Oracle.

¿A qué se refiere el término modelo de datos?

Con modelo de datos me refiero al diseño, presentado a menudo usando diagramas, que representan
la estructura de la base de datos. El modelo identifica las relaciones, atributos, claves,
dominios y relaciones dentro de la base de datos. Algunos diseñadores de bases de datos crean
un modelo lógico y un modelo físico. El modelo lógico se basa más en la teoría relacional y
aplica los principios de normalización apropiados a los datos.




El modelo físico, por otro lado,
se refiere a la aplicación real, ya que los datos se almacenan en un RDBMS. Basado en el diseño
lógico, el diseño físico trae la estructura de datos al mundo real de la implementación.

¿Que son las bases de datos relacionales¨?

El lenguaje estructurado de consultas (SQL, Structured Query Language) apoya la creación y mantenimiento
de la base de datos relacional y la gestión de los datos dentro de la base de datos. Sin
embargo, antes de entrar en discusión acerca de las bases de datos relacionales, quiero explicar el
significado del término base de datos. El término ha sido utilizado para referirse a cualquier cosa,
desde una colección de nombres y direcciones hasta un complejo sistema de recuperación y almacenamiento
de datos que se basa en interfaces de usuarios y una red de computadoras y servidores.

Hay tantas definiciones para la palabra base de datos como libros sobre éstas. Por otra parte, los
distintos proveedores de DBMS han desarrollado diferentes arquitecturas, por lo que no todas las
bases de datos están diseñadas de la misma manera. A pesar de la falta de una definición absoluta,
la mayoría de las fuentes coinciden en que una base de datos, por lo menos, es una colección de
datos organizada en un formato estructurado que es definido como metadatos que describe esa
estructura. Puede pensar en los metadatos como información sobre los datos almacenados, que define
cómo se almacenan éstos en una base de datos.


A lo largo de los años se ha implementado una serie de modelos de base de datos para almacenar
y administrar la información. Varios de los modelos más comunes incluyen los siguientes:
Jerárquico Este modelo tiene una estructura primario y secundario que es similar a un árbol
invertido, que es lo que constituye la jerarquía. Los datos están organizados en nodos, el equivalente
lógico de tablas en una base de datos relacional. Un nodo principal puede tener muchos
nodos secundarios, pero un nodo secundario sólo puede tener un nodo principal. Aunque
el modelo ha sido muy utilizado, a menudo se considera inadecuado para muchas aplicaciones
debido a su estructura inflexible y la falta de apoyo de relaciones complejas. Aun algunas
implementaciones como IMS de IBM han introducido características que trabajan en torno a
estas limitaciones.



Red:
 Este modelo aborda algunas de las limitaciones del modelo jerárquico. Los datos están
organizados en tipos de registro, el equivalente lógico de tablas en una base de datos relacional.
Al igual que el modelo jerárquico, el modelo de red usa la estructura de un árbol invertido,
pero los tipos de registro se organizan en una estructura que relaciona pares de tipos de registro
en propietarios y miembros. Cualquier tipo de registro puede participar en cualquier conjunto
con otros tipos de registro en la base de datos, que apoya a las consultas y relaciones más
complejas de lo que es posible en el modelo jerárquico. Hasta el modelo de red tiene sus limitaciones,
y la más seria es la complejidad. Al acceder a la base de datos, el usuario debe estar
familiarizado con la estructura y mantener un seguimiento cuidadoso de dónde está y cómo
llegó ahí. También es difícil cambiar la estructura sin afectar las aplicaciones que interactúan
con la base de datos.


Relacional :
Este modelo aborda algunas de las limitaciones de los modelos jerárquicos y de
red. En una base de datos de modelo jerárquico o de red, la aplicación se basa en una implementación
determinada de esa base de datos, que luego es codificada en la aplicación. Si agrega
un nuevo atributo (elemento de datos) a la base de datos, debe modificar la aplicación, aun
cuando no se use ese atributo. Sin embargo, una base de datos relacional es independiente de
la aplicación; puede hacer modificaciones no destructivas a la estructura sin afectar la aplicación.
Además, la estructura de la base de datos relacional se basa en la relación, o tabla, junto
con la habilidad de definir relaciones complejas entre ellas. Se puede acceder directamente
a cada relación sin la lentitud de las limitaciones de los modelos jerárquicos o propietario/
miembro que requiere de una navegación a través de una estructura compleja de datos. En la
siguiente sección, “El modelo relacional”, se verá con mayor detalle este modelo.
Aunque aún se usan en muchas organizaciones, las bases de datos de modelo jerárquico y de
red ahora se consideran como soluciones heredadas. El modelo relacional es el más ampliamente
aplicado en los sistemas de negocios modernos, y es el modelo relacional el que proporciona la
base para SQL.

Historia de Visual Basic Microsoft

Reseña del lenguaje:

En 1964, John Kemeny y Thomas Kurtz se propusieron crear una variante del
lenguaje de programación denominado BASIC (Beginners All-Purpose Symbolic
Instruction Code, Código de instrucciones simbólicas para principiantes orientado
a todo propósito). Si bien ya había en el mercado varias versiones de BASIC, la
generada en Dartmouth College por Kemeny y Kurtz fue la que más se popularizó.
BASIC llegó para reducir de una manera notable los tiempos de aprendizaje y
de escritura de un programa para computadoras. Así, gracias a la visión de futuro
de sus propulsores, muchos estudiantes pudieron desarrollar aplicaciones en tiempo
récord, algo muy valioso para esa época.
Al momento de diseñar el lenguaje, sus creadores tomaron como filosofía ocho principios
que debían destacar a BASIC por sobre los demás:

1. Ser fácil de usar.
2. Ser un lenguaje de propósito general.
3. Permitir la incorporación de características avanzadas por expertos, priorizando
su facilidad para principiantes.
4. Gozar de interactividad.
5. Ofrecer claros mensajes de error.
6. Brindar rápida respuesta en programas pequeños.
7. No requerir que los usuarios tengan conocimientos sobre hardware.
8. Alejar al usuario de la complejidad del sistema operativo.






Hacia 1975, la empresa fundada por Bill Gates y Paul Allen lanzó su propia versión
de BASIC, inspirada en una de las alternativas del lenguaje, creada por Alan Cooper,
denominada Altair BASIC. El mercado siguió inundándose con más versiones
opcionales, y para fines de la década del 70, apareció la primera adaptada a la plataforma
Apple II. En 1979, Microsoft negoció vender su licencia de BASIC a varias
empresas que comercializaban microcomputadoras, incluyendo a IBM, creadora en
ese entonces de la computadora personal. BASIC se incorporó en los chips ROM
de las IBM PC, con lo cual se puso una versión innovadora en equipos que no
contaban con disco rígido, pero que sí disponían ya de una unidad de disquete.



Años más tarde, Microsoft siguió distribuyendo una versión reducida de BASIC
junto a su popular sistema operativo MS DOS, la cual permitía a los programadores
diseñar aplicaciones que sólo podían ejecutarse a través del entorno de desarrollo
utilizando una serie de instrucciones BATCH, para que el programa se
ejecutara casi sin intervención de los usuarios poco expertos. En la entrada era
donde DOS pasaba a un segundo plano. Luego la firma lanzó al mercado Visual
Basic 1.0, un entorno de desarrollo que facilitaba la creación de aplicaciones con
menús, ventanas y botones, pero que aún corría bajo DOS. Recién en la versión
2.0, desarrollada para Windows 3.0/3.1, Microsoft dejó de lado el entorno gráfico
construido mediante caracteres ASCII, para dar inicio a una era distinta: la era
RAD de desarrollo de aplicaciones para Windows.


Desde Visual Basic 3.0, Microsoft fortaleció el desarrollo de aplicaciones RAD
orientado a bases de datos y dio un gran soporte al lenguaje para conectarse a
cualquier base entre las más populares del mercado (Dbase, Paradox, Fox Pro),


al utilizar las librerías de enlace dinámico a través de ODBC (Open Data Base
Connectivity). Para las bases de datos que no eran tan difundidas en ese momento,
solo restaba que la empresa que las soportaba creara una librería DLL para que
Visual Basic pudiera conectarse e interactuar con ellas y, así, leer, mostrar y
escribir información en sus archivos.
La versión 4.0 llegó al mercado casi al mismo tiempo que Windows 95, con lo cual
se lanzó una edición doble, para 16 y 32 bits, que podía instalarse en Windows 3.1x
o Windows 95, con la diferencia de que todos los proyectos creados en 16 bits
podían ser portados a 32 bits, pero no a la inversa.
Visual Basic 5.0 contó con una versión lite denominada CCE (Control Creation
Edition), en la que no solo era posible crear librerías DLL y archivos ejecutables,
sino que también se habilitaba a los programadores a generar controles personalizados,
combinando dos o más controles ActiveX existentes. También se facilitaba la
incorporación de nuevos eventos y propiedades a los controles predefinidos que se
incluían con el entorno de desarrollo.


En 1998 Microsoft introdujo Visual Basic 6.0. En la era donde Internet se devoraba
cualquier mercado, esta versión tuvo que aportar flexibilidad para dar paso al
desarrollo de aplicaciones web y no solo de escritorio. Con Visual Basic 6 se podían
crear controles personalizados, programas ejecutables bajo la plataforma Windows,
librerías DLL y aplicaciones web, incluyendo soporte para el lenguaje ASP (Active
Server Pages), que permitía generar páginas web dinámicas que se compilaban al
momento de ser solicitadas en el servidor.
El nuevo milenio trajo consigo un giro total de sus lenguajes de programación, que
se orientaron al framework .NET. Los ActiveX pasaron a segundo plano, y con esto,
también varios problemas de seguridad que sufría Microsoft Windows.


Información extraída de :Mi libro red-user que compre Xd